diff --git a/NPLib/MUST2/TMust2Physics.cxx b/NPLib/MUST2/TMust2Physics.cxx
index 850956d0b3a1c23023a54aea4ed436f0d265d4f1..cc80bbdf4905c27e2d028b6e6d6c14fb3a635f22 100644
--- a/NPLib/MUST2/TMust2Physics.cxx
+++ b/NPLib/MUST2/TMust2Physics.cxx
@@ -23,35 +23,37 @@
 #include "TMust2Physics.h"
 #include <iostream>
 #include <cmath>
+///////////////////////////////////////////////////////////////////////////
+namespace {
+	// Threshold
+	const double Si_X_E_Threshold = 0	;	const double Si_X_T_Threshold = 0 ;
+	const double Si_Y_E_Threshold = 0	;	const double Si_Y_T_Threshold = 0	;
+	const double SiLi_E_Threshold = 0	;	const double SiLi_T_Threshold = 0	;
+	const double CsI_E_Threshold	= 0 ;	const double CsI_T_Threshold	= 0	;
+}
+///////////////////////////////////////////////////////////////////////////
 
-ClassImp(TMust2Physics)
 
+ClassImp(TMust2Physics)
+///////////////////////////////////////////////////////////////////////////
 TMust2Physics::TMust2Physics() 
 	{ EventMultiplicity = 0 ;}
-
+	
+///////////////////////////////////////////////////////////////////////////
 TMust2Physics::~TMust2Physics() {Clear();}
 
+///////////////////////////////////////////////////////////////////////////
 void TMust2Physics::BuildSimplePhysicalEvent(TMust2Data* Data)
 	{
 		BuildPhysicalEvent(Data);
 	}
+	
+///////////////////////////////////////////////////////////////////////////
 void TMust2Physics::BuildPhysicalEvent(TMust2Data* Data)
 	{ 
 		//	Check
 		bool Check_Si = false ;bool Check_SiLi = false ; bool Check_CsI = false ;
-		
-		// Threshold
-		double Si_X_E_Threshold = 0		;	double Si_X_T_Threshold = 0 	;
-		double Si_Y_E_Threshold = 0		;	double Si_Y_T_Threshold = 0		;
-		double SiLi_E_Threshold = 0		;	double SiLi_T_Threshold = 0		;
-		double CsI_E_Threshold	= 0 	;	double CsI_T_Threshold	= 0		;
-		
-		// To avoid warnings
-		Si_X_E_Threshold *= 1;		Si_X_T_Threshold *= 1;
-		Si_Y_E_Threshold *= 1;		Si_Y_T_Threshold *= 1;
-		SiLi_E_Threshold *= 1;		SiLi_T_Threshold *= 1;
-		CsI_E_Threshold  *= 1;		CsI_T_Threshold  *= 1;
-		
+	
 		//	Multiplicity 1
 		if( Data->GetMMStripXEMult()==1 && Data->GetMMStripYEMult()==1 && Data->GetMMStripXTMult()==1 && Data->GetMMStripXTMult()==1 )
 			{
@@ -181,11 +183,11 @@ void TMust2Physics::BuildPhysicalEvent(TMust2Data* Data)
 												TY = Data->GetMMStripXTTime(i) 					;
 												
 												if (EX>EY)	Si_E.push_back(EX)	;
-												else	  	Si_E.push_back(EY)	;
+												else	  		Si_E.push_back(EY)	;
 												
 												
 												if (TX>TY)	Si_T.push_back(TY)	;
-												else	  	Si_T.push_back(TX)	; 
+												else	  		Si_T.push_back(TX)	; 
 												Check_Si = true ;
 											}
 									}
@@ -279,11 +281,6 @@ void TMust2Physics::BuildPhysicalEvent(TMust2Data* Data)
 								TX2 = Data->GetMMStripXTTime(1) 	;	 TY2 =  Data->GetMMStripYTTime(1) ;
 							}
 							
-												
-					
-					
-					
-					
 					
 					return;
 					}
@@ -291,7 +288,7 @@ void TMust2Physics::BuildPhysicalEvent(TMust2Data* Data)
 			
 	}
 
-/////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
 int TMust2Physics :: CheckEvent(TMust2Data* Data)
 	{
 		// Check the size of the different elements
@@ -303,20 +300,17 @@ int TMust2Physics :: CheckEvent(TMust2Data* Data)
 	
 					return 2 ; // Pseudo Event, potentially interstrip
 		
-		else return -1 ; // Rejected Event
-		
-		
-		return -1 		 ; // Rejected Event 
+		else 	return -1 ; // Rejected Event
+
 	}
 
-/////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
 bool TMust2Physics :: ResolvePseudoEvent(TMust2Data* Data)
 	{
-	
 		return false;
 	}
 
-/////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
 vector < TVector2 > TMust2Physics :: Match_X_Y(TMust2Data* Data)
 	{
 		vector < TVector2 > ArrayOfGoodCouple ;
@@ -339,104 +333,104 @@ vector < TVector2 > TMust2Physics :: Match_X_Y(TMust2Data* Data)
 	}
 	
 	
-/////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
 bool TMust2Physics :: Match_Si_SiLi(int X, int Y , int PadNbr)
 	{
 							if( 	 PadNbr == 1 
-									&& X<1 && X>1
-									&& Y<1 && Y>1 ) 
+									&& X<128 && X>96
+									&& Y<128 && Y>96 ) 
 
 						return true ;
 
 
 				else	if( 	 PadNbr == 2 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<128 && X>96 
+									&& Y<96 && Y>64 ) 
 
 						return true ;
 
 
 				else	if( 	 PadNbr == 3 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<96 && X>64 
+									&& Y<128 && Y>96 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 4 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<96 && X>64
+									&& Y<96 && Y>64 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 5 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1) 
+									&& X<64 && X>32 
+									&& Y<96 && Y>64) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 6 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<64 && X>32 
+									&& Y<128 && Y>96 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 7 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<32 && X>1 
+									&& Y<96 && Y>64 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 8 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<32 && X>1 
+									&& Y<128 && Y>96 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 9 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<128 && X>96 
+									&& Y<32 && Y>1 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 10 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<128 && X>96 
+									&& Y<64 && Y>32 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 11 
-									&& X<1 && X>1
-									&& Y<1 && Y>1 ) 
+									&& X<96 && X>64
+									&& Y<32 && Y>1 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 12 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<96 && X>64 
+									&& Y<64 && Y>32) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 13 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<64 && X>32 
+									&& Y<64 && Y>32 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 14 
-									&& X<1 && X>1 
-									&& Y<1 && Y>1 ) 
+									&& X<64 && X>32 
+									&& Y<32 && Y>1 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 15 
-									&& X<1 && X>1
-									&& Y<1 && Y>1 ) 
+									&& X<32 && X>1
+									&& Y<64 && Y>32 ) 
 
 						return true ;
 
 				else	if( 	 PadNbr == 16 
-									&& X<1 && X>1
-									&& Y<1 && Y>1 ) 
+									&& X<32 && X>1
+									&& Y<32 && Y>1 ) 
 
 						return true ;		
 
@@ -445,7 +439,7 @@ bool TMust2Physics :: Match_Si_SiLi(int X, int Y , int PadNbr)
 	}
 
 
-/////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
 bool TMust2Physics :: Match_Si_CsI(int X, int Y , int CristalNbr)
 	{
 							if( 	 CristalNbr == 1 
@@ -550,7 +544,7 @@ bool TMust2Physics :: Match_Si_CsI(int X, int Y , int CristalNbr)
 						return false;
 	}
 
-/////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////
 void TMust2Physics::Clear()
 	{
 		EventMultiplicity= 0		;
diff --git a/NPSimulation/src/MUST2Array.cc b/NPSimulation/src/MUST2Array.cc
index 701f0275b6c0c128ad7555f2df8a35284bf86c14..c740319c95b60a4b1044c4be95d26cce1a940ba1 100644
--- a/NPSimulation/src/MUST2Array.cc
+++ b/NPSimulation/src/MUST2Array.cc
@@ -184,37 +184,6 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
 
    logicVacBox->SetVisAttributes(G4VisAttributes::Invisible);
 
-// Add a degrader plate between Si and CsI:
-
-   /*
-   G4Box*                   Degrader = new G4Box("Degrader" , 50*mm , 50*mm , 0.1*mm );
-   G4LogicalVolume*     logicDegrader = new G4LogicalVolume( Degrader , Harvar, "logicDegrader",0,0,0)         ;
-     PVPBuffer = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicDegrader,"Degrader",logicVacBox,false,0) ;
-
-
-      //Place two marker to identify the u and v axis on silicon face:
-      //marker are placed a bit before the silicon itself so they don't perturbate simulation
-      //Uncomment to help debugging or if you want to understand the way the code work.
-      //I should recommand to Comment it during simulation to avoid perturbation of simulation
-      //Remember G4 is limitationg step on geometry constraints.
-
-      G4ThreeVector positionMarkerU = CT*0.98 + MMu*SiliconFace/4;
-      G4Box*          solidMarkerU = new G4Box( "solidMarkerU" , SiliconFace/4 , 1*mm , 1*mm )              ;
-      G4LogicalVolume* logicMarkerU = new G4LogicalVolume( solidMarkerU , Vacuum , "logicMarkerU",0,0,0)       ;
-        PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerU),logicMarkerU,"MarkerU",world,false,0) ;
-
-      G4VisAttributes* MarkerUVisAtt= new G4VisAttributes(G4Colour(0.,0.,0.5));//blue
-      logicMarkerU->SetVisAttributes(MarkerUVisAtt);
-
-
-      G4ThreeVector positionMarkerV = CT*0.98 + MMv*SiliconFace/4;
-      G4Box*          solidMarkerV = new G4Box( "solidMarkerU" , 1*mm , SiliconFace/4 , 1*mm )              ;
-      G4LogicalVolume* logicMarkerV = new G4LogicalVolume( solidMarkerV , Vacuum , "logicMarkerV",0,0,0)       ;
-        PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerV),logicMarkerV,"MarkerV",world,false,0) ;
-
-      G4VisAttributes* MarkerVVisAtt= new G4VisAttributes(G4Colour(0.,0.5,0.5));//green
-      logicMarkerV->SetVisAttributes(MarkerVVisAtt); */
-
 ////////////////////////////////////////////////////////////////
 /////////////////Si Strip Construction//////////////////////////
 ////////////////////////////////////////////////////////////////
@@ -256,36 +225,31 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
 
       G4RotationMatrix* rotSiLi = Rotation(0., 0., 0.);
 
-      G4ThreeVector positionSiLi = G4ThreeVector(-0.25 * SiliconFace - 0.5 * SiLiSpace, 0, 0);
-      G4ThreeVector positionSiLi2 = G4ThreeVector(0.25 * SiliconFace + 0.5 * SiLiSpace, 0, 0);
-
-      G4Box* solidSiLi = new G4Box("SiLi", 0.5*SiLiFaceX, 0.5*SiLiFaceY, 0.5*SiLiThickness);
-
+     // G4Box* solidSiLi = new G4Box("SiLi", 0.5*SiLiFaceX, 0.5*SiLiFaceY, 0.5*SiLiThickness);
+     
+			G4Box* solidSiLi = new G4Box("SiLi", 0.5*SiliconFace+0.5*SiLiSpace, 0.5*SiliconFace, 0.5*SiLiThickness);
+			
       G4LogicalVolume* logicSiLi = new G4LogicalVolume(solidSiLi, m_MaterialAluminium, Name + "_SiLi" , 0, 0, 0);
 
-      // First Si(Li) 2 time 4 detectore
-      PVPBuffer =  new G4PVPlacement(G4Transform3D(*rotSiLi, positionSiLi)  ,
-            logicSiLi                        ,
-            Name + "_SiLi"                ,
-            logicVacBox                      ,
-            false                         ,
-            0);
-
-      // Second Si(Li) 2 time 4 detectore
-      PVPBuffer =  new G4PVPlacement(G4Transform3D(*rotSiLi, positionSiLi2) ,
-            logicSiLi                        ,
-            Name + "_SiLi"                ,
-            logicVacBox                      ,
-            false                         ,
-            1);
+			PVPBuffer =  new G4PVPlacement( G4Transform3D(*rotSiLi, G4ThreeVector(0,0,0) ) 	,
+													            logicSiLi               												,
+													            Name + "_SiLi"           												,
+													            logicVacBox              												,
+													            false                    												,
+													            0												 												);
 
       // SiLi are placed inside of the VacBox...
       // Left/Right define when looking to detector from Si to CsI
-      G4double SiLi_HighY_Upper = 19.86 * mm;
-      G4double SiLi_HighY_Center = 25.39 * mm ;
-      G4double SiLi_WidthX_Left  = 22.85 * mm;
-      G4double SiLi_WidthX_Right = 24.9 * mm  ;
-      G4double SiLi_ShiftX    = 0.775 * mm ;
+      G4double SiLi_HighY_Upper 	= 19.86 * mm	;
+      G4double SiLi_HighY_Center 	= 25.39 * mm 	;
+      G4double SiLi_WidthX_Left  	= 22.85 * mm	;
+      G4double SiLi_WidthX_Right 	= 24.9	* mm  ;
+      G4double SiLi_ShiftX    		= 0.775 * mm 	;
+
+
+			//	SiLi are organized by two group of 8 Up(9 to 15) and Down(1 to 8).
+			G4ThreeVector ShiftSiLiUp 	 = G4ThreeVector(-0.25 * SiliconFace - 0.5 * SiLiSpace, 0, 0)	;
+      G4ThreeVector ShiftSiLiDown  = G4ThreeVector(0.25  * SiliconFace + 0.5 * SiLiSpace, 0, 0)	;
 
       // SiLi : left side of SiLi detector
       G4Box* solidSiLi_LT  = new G4Box("SiLi_LT"  , 0.5*SiLi_WidthX_Left  , 0.5*SiLi_HighY_Upper   , 0.5*SiLiThickness);
@@ -299,58 +263,139 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
 
       G4LogicalVolume* logicSiLi_LT    = new G4LogicalVolume(solidSiLi_LT   , m_MaterialSilicon , "SiLi_LT"  , 0 , 0 , 0);
       G4LogicalVolume* logicSiLi_RT    = new G4LogicalVolume(solidSiLi_RT   , m_MaterialSilicon , "SiLi_RT"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_LC1   = new G4LogicalVolume(solidSiLi_LC1 , m_MaterialSilicon , "SiLi_LC1"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_RC1   = new G4LogicalVolume(solidSiLi_RC1 , m_MaterialSilicon , "SiLi_RC1"  , 0 , 0 , 0);
+      G4LogicalVolume* logicSiLi_LC1   = new G4LogicalVolume(solidSiLi_LC1 	, m_MaterialSilicon , "SiLi_LC1" , 0 , 0 , 0);
+      G4LogicalVolume* logicSiLi_RC1   = new G4LogicalVolume(solidSiLi_RC1 	, m_MaterialSilicon , "SiLi_RC1" , 0 , 0 , 0);
       G4LogicalVolume* logicSiLi_LB    = new G4LogicalVolume(solidSiLi_LB   , m_MaterialSilicon , "SiLi_LB"  , 0 , 0 , 0);
       G4LogicalVolume* logicSiLi_RB    = new G4LogicalVolume(solidSiLi_RB   , m_MaterialSilicon , "SiLi_RB"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_LC2   = new G4LogicalVolume(solidSiLi_LC2 , m_MaterialSilicon , "SiLi_LC2"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_RC2   = new G4LogicalVolume(solidSiLi_RC2 , m_MaterialSilicon , "SiLi_RC2"  , 0 , 0 , 0);
+      G4LogicalVolume* logicSiLi_LC2   = new G4LogicalVolume(solidSiLi_LC2 	, m_MaterialSilicon , "SiLi_LC2" , 0 , 0 , 0);
+      G4LogicalVolume* logicSiLi_RC2   = new G4LogicalVolume(solidSiLi_RC2 	, m_MaterialSilicon , "SiLi_RC2" , 0 , 0 , 0);
 
       G4double interSiLi = 0.5 * mm;
 
       // Top
-      G4ThreeVector positionSiLi_LT = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
+      G4ThreeVector positionSiLi_LT_up = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
+            0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi   ,
+            0);
+
+			positionSiLi_LT_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_RT_up = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+            0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi   ,
+            0);
+
+			positionSiLi_RT_up += ShiftSiLiUp ;
+			
+      G4ThreeVector positionSiLi_LC1_up = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
+            0.5 * SiLi_HighY_Center + 0.5 * interSiLi                 ,
+            0);
+
+			positionSiLi_LC1_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_RC1_up = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+            0.5 * SiLi_HighY_Center + 0.5 * interSiLi                 ,
+            0);
+
+			positionSiLi_RC1_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_LB_up = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
+            -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi  ,
+            0);
+
+			positionSiLi_LB_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_RB_up = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+            -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi  ,
+            0);
+
+			positionSiLi_RB_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_LC2_up = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
+            -0.5 * SiLi_HighY_Center - 0.5 * interSiLi                ,
+            0);
+
+			positionSiLi_LC2_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_RC2_up = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                    ,
+            -0.5 * SiLi_HighY_Center - 0.5 * interSiLi                ,
+            0);
+  
+			positionSiLi_RC2_up += ShiftSiLiUp ;
+          
+            
+       // Down
+      G4ThreeVector positionSiLi_LT_down = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
             0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi   ,
             0);
 
-      G4ThreeVector positionSiLi_RT = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+			positionSiLi_LT_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_RT_down = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
             0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi   ,
             0);
 
-      G4ThreeVector positionSiLi_LC1 = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
+			positionSiLi_RT_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_LC1_down = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
             0.5 * SiLi_HighY_Center + 0.5 * interSiLi                 ,
             0);
 
-      G4ThreeVector positionSiLi_RC1 = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+			positionSiLi_LC1_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_RC1_down = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
             0.5 * SiLi_HighY_Center + 0.5 * interSiLi                 ,
             0);
 
-      // Bottom
-      G4ThreeVector positionSiLi_LB = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
+			positionSiLi_RC1_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_LB_down = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
             -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi  ,
             0);
 
-      G4ThreeVector positionSiLi_RB = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+			positionSiLi_LB_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_RB_down = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
             -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi  ,
             0);
 
-      G4ThreeVector positionSiLi_LC2 = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
+			positionSiLi_RB_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_LC2_down = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
             -0.5 * SiLi_HighY_Center - 0.5 * interSiLi                ,
             0);
 
-      G4ThreeVector positionSiLi_RC2 = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                    ,
+			positionSiLi_LC2_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_RC2_down = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                    ,
             -0.5 * SiLi_HighY_Center - 0.5 * interSiLi                ,
             0);
+            
+			positionSiLi_RC2_down += ShiftSiLiDown ;
+            
+			
+			// up
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LT_up  , logicSiLi_LT  , Name + "_SiLi_Pad9"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RT_up  , logicSiLi_RT  , Name + "_SiLi_Pad16"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC1_up , logicSiLi_LC1 , Name + "_SiLi_Pad11" 	, logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC1_up , logicSiLi_RC1 , Name + "_SiLi_Pad14" 	, logicSiLi , false , 0)  ;
+
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LB_up  , logicSiLi_LB  , Name + "_SiLi_Pad10"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RB_up  , logicSiLi_RB  , Name + "_SiLi_Pad15"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC2_up , logicSiLi_LC2 , Name + "_SiLi_Pad12" 	, logicSiLi , false , 0) 	;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC2_up , logicSiLi_RC2 , Name + "_SiLi_Pad13" 	, logicSiLi , false , 0)	;
+
+			
+			// down
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LT_down  , logicSiLi_LT  , Name + "_SiLi_Pad2"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RT_down  , logicSiLi_RT  , Name + "_SiLi_Pad7"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC1_down , logicSiLi_LC1 , Name + "_SiLi_Pad4" 	, logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC1_down , logicSiLi_RC1 , Name + "_SiLi_Pad5" 	, logicSiLi , false , 0)  ;
+
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LB_down  , logicSiLi_LB  , Name + "_SiLi_Pad1"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RB_down  , logicSiLi_RB  , Name + "_SiLi_Pad8"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC2_down , logicSiLi_LC2 , Name + "_SiLi_Pad3" 	, logicSiLi , false , 0) 	;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC2_down , logicSiLi_RC2 , Name + "_SiLi_Pad6" 	, logicSiLi , false , 0)	;
 
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LT  , logicSiLi_LT  , Name + "_SiLi_Pad1"  , logicSiLi , false , 0)  ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RT  , logicSiLi_RT  , Name + "_SiLi_Pad2"  , logicSiLi , false , 0)  ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC1 , logicSiLi_LC1 , Name + "_SiLi_Pad3" , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC1 , logicSiLi_RC1 , Name + "_SiLi_Pad4" , logicSiLi , false , 0)   ;
 
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LB  , logicSiLi_LB  , Name + "_SiLi_Pad5"  , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RB  , logicSiLi_RB  , Name + "_SiLi_Pad6"  , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC2 , logicSiLi_LC2 , Name + "_SiLi_Pad7" , logicSiLi , false , 0) ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC2 , logicSiLi_RC2 , Name + "_SiLi_Pad8" , logicSiLi , false , 0) ;
 
       logicSiLi->SetVisAttributes(G4VisAttributes(G4Colour(1, 1., 1.)));