diff --git a/NPSimulation/Detectors/PISTA/PISTA.cc b/NPSimulation/Detectors/PISTA/PISTA.cc
index 53a7faef644620ec696fd50e29f88cb5c92520de..f7ebec47fb36d9d4b1be5a229764f7222313a1d4 100644
--- a/NPSimulation/Detectors/PISTA/PISTA.cc
+++ b/NPSimulation/Detectors/PISTA/PISTA.cc
@@ -64,26 +64,26 @@ namespace PISTA_NS{
   const double E_ResoEnergy  = 0.018*MeV ;
 
   // Trapezoid dimension PISTA1
-  const double TrapezoidBaseLarge = 72.3*mm;
-  const double TrapezoidBaseSmall = 41.0*mm;
-  const double TrapezoidHeight = 57.7*mm;
-  const double TrapezoidLength = 1*cm;
-  const double FirstStageThickness = 300*um;
-  const double SecondStageThickness = 1.5*mm;
-  const double DistanceBetweenSi = 4*mm;
-  const double FirstStageNbrOfStrips = 91;
-  const double SecondStageNbrOfStrips = 57;
+  double TrapezoidBaseLarge = 72.3*mm;
+  double TrapezoidBaseSmall = 41.0*mm;
+  double TrapezoidHeight = 57.7*mm;
+  double TrapezoidLength = 1*cm;
+  double FirstStageThickness = 300*um;
+  double SecondStageThickness = 1.5*mm;
+  double DistanceBetweenSi = 4*mm;
+  double FirstStageNbrOfStrips = 91;
+  double SecondStageNbrOfStrips = 57;
 
   // Trapezoid dimension PISTA2
-  //const double TrapezoidBaseLarge = 53*mm;
-  //const double TrapezoidBaseSmall = 34.0*mm;
-  //const double TrapezoidHeight = 27*mm;
-  //const double TrapezoidLength = 1*cm;
-  //const double FirstStageThickness = 0.3*mm;
-  //const double SecondStageThickness = 1.5*mm;
-  //const double DistanceBetweenSi = 3*mm;
-  //const double FirstStageNbrOfStrips = 49;
-  //const double SecondStageNbrOfStrips = 45;
+  //double TrapezoidBaseLarge = 53*mm;
+  //double TrapezoidBaseSmall = 34.0*mm;
+  //double TrapezoidHeight = 27*mm;
+  //double TrapezoidLength = 1*cm;
+  //double FirstStageThickness = 0.3*mm;
+  //double SecondStageThickness = 1.5*mm;
+  //double DistanceBetweenSi = 3*mm;
+  //double FirstStageNbrOfStrips = 49;
+  //double SecondStageNbrOfStrips = 45;
 }
 using namespace PISTA_NS;
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -95,6 +95,7 @@ PISTA::PISTA(){
   m_FirstStageScorer = 0;
   m_SecondStageScorer = 0;
   m_TrapezoidDetector = 0;
+  m_version = 1;
 }
 
 PISTA::~PISTA(){
@@ -111,6 +112,29 @@ void PISTA::AddDetector(G4ThreeVector A, G4ThreeVector B, G4ThreeVector C, G4Thr
   m_R.push_back(0);
   m_Theta.push_back(0);
   m_Phi.push_back(0);
+
+  if(m_version==1){
+    TrapezoidBaseLarge = 72.3*mm;
+    TrapezoidBaseSmall = 41.0*mm;
+    TrapezoidHeight = 57.7*mm;
+    TrapezoidLength = 1*cm;
+    FirstStageThickness = 300*um;
+    SecondStageThickness = 1.5*mm;
+    DistanceBetweenSi = 4*mm;
+    FirstStageNbrOfStrips = 91;
+    SecondStageNbrOfStrips = 57;
+  }
+  else if(m_version==2){
+    TrapezoidBaseLarge = 53*mm;
+    TrapezoidBaseSmall = 34.0*mm;
+    TrapezoidHeight = 27*mm;
+    TrapezoidLength = 1*cm;
+    FirstStageThickness = 0.3*mm;
+    SecondStageThickness = 1.5*mm;
+    DistanceBetweenSi = 3*mm;
+    FirstStageNbrOfStrips = 49;
+    SecondStageNbrOfStrips = 45;
+  }
 }
 
 
@@ -225,6 +249,7 @@ void PISTA::ReadConfiguration(NPL::InputParser parser){
       if(NPOptionManager::getInstance()->GetVerboseLevel())
         cout << endl << "////  PISTA " << i+1 <<  endl;
 
+      m_version = blocks[i]->GetInt("VERSION");
       G4ThreeVector A = NPS::ConvertVector(blocks[i]->GetTVector3("POS_A","mm"));
       G4ThreeVector B = NPS::ConvertVector(blocks[i]->GetTVector3("POS_B","mm"));
       G4ThreeVector C = NPS::ConvertVector(blocks[i]->GetTVector3("POS_C","mm"));
@@ -277,7 +302,7 @@ void PISTA::ConstructDetector(G4LogicalVolume* world){
       w = w.unit();
 
       center = (m_A[i] + m_B[i] + m_C[i] + m_D[i])/4;
-    
+
       Rot = new G4RotationMatrix(u,v,w);
       Det_pos = w * TrapezoidLength * 0.5 + center; 
     }
@@ -343,9 +368,9 @@ void PISTA::ReadSensitive(const G4Event* ){
       m_Event->SetPISTA_DE_StripTime(Time);
     }
   }
-  
+
   unsigned int sizeDEBack = FirstStageScorer->GetLengthMult();
-   for(unsigned int i = 0 ; i < sizeDEBack ; i++){
+  for(unsigned int i = 0 ; i < sizeDEBack ; i++){
     double EnergyBack = RandGauss::shoot(FirstStageScorer->GetEnergyLength(i), DE_ResoEnergy);   
     if(EnergyBack>EnergyThreshold){
       double Time = RandGauss::shoot(FirstStageScorer->GetTimeLength(i), ResoTime);
@@ -356,18 +381,18 @@ void PISTA::ReadSensitive(const G4Event* ){
 
     }
   }
-  
+
   /*for(unsigned int i = 0 ; i < sizeDEFront ; i++){
     double EnergyFront = RandGauss::shoot(FirstStageScorer->GetEnergyWidth(i), DE_ResoEnergy);   
     double EnergyBack  = RandGauss::shoot(FirstStageScorer->GetEnergyLength(i), DE_ResoEnergy);   
     if(EnergyFront>EnergyThreshold){
-      double Time = RandGauss::shoot(FirstStageScorer->GetTimeLength(i), ResoTime);
-      int DetNbr  = FirstStageScorer->GetDetectorWidth(i);
-      int StripFront = 92-FirstStageScorer->GetStripWidth(i);
-      m_Event->SetPISTA_DE(DetNbr, StripFront, EnergyFront, EnergyBack, Time, Time);
-      m_Event->SetPISTA_DE_BackDetector(DetNbr);
+    double Time = RandGauss::shoot(FirstStageScorer->GetTimeLength(i), ResoTime);
+    int DetNbr  = FirstStageScorer->GetDetectorWidth(i);
+    int StripFront = 92-FirstStageScorer->GetStripWidth(i);
+    m_Event->SetPISTA_DE(DetNbr, StripFront, EnergyFront, EnergyBack, Time, Time);
+    m_Event->SetPISTA_DE_BackDetector(DetNbr);
     }
-  }*/
+    }*/
   FirstStageScorer->clear();
 
   ///////////
@@ -387,7 +412,7 @@ void PISTA::ReadSensitive(const G4Event* ){
       m_Event->SetPISTA_E_StripTime(Time);
     }
   }
-  
+
   unsigned int sizeEBack = SecondStageScorer->GetWidthMult();
   for(unsigned int i = 0 ; i < sizeEBack ; i++){
     double EnergyBack = RandGauss::shoot(SecondStageScorer->GetEnergyWidth(i), E_ResoEnergy);   
@@ -399,20 +424,20 @@ void PISTA::ReadSensitive(const G4Event* ){
       m_Event->SetPISTA_E_BackTime(Time);
     }
   }
-  
+
 
 
   /*for(unsigned int i = 0 ; i < sizeEFront ; i++){
     double EnergyFront = RandGauss::shoot(SecondStageScorer->GetEnergyLength(i), E_ResoEnergy);   
     double EnergyBack  = RandGauss::shoot(SecondStageScorer->GetEnergyWidth(i), E_ResoEnergy);   
     if(EnergyFront>EnergyThreshold){
-      double Time = RandGauss::shoot(SecondStageScorer->GetTimeLength(i), ResoTime);
-      int DetNbr  = SecondStageScorer->GetDetectorLength(i);
-      int StripFront = SecondStageScorer->GetStripLength(i);
-      m_Event->SetPISTA_E(DetNbr, StripFront, EnergyFront, EnergyBack, Time, Time);
-      m_Event->SetPISTA_E_BackDetector(DetNbr);
+    double Time = RandGauss::shoot(SecondStageScorer->GetTimeLength(i), ResoTime);
+    int DetNbr  = SecondStageScorer->GetDetectorLength(i);
+    int StripFront = SecondStageScorer->GetStripLength(i);
+    m_Event->SetPISTA_E(DetNbr, StripFront, EnergyFront, EnergyBack, Time, Time);
+    m_Event->SetPISTA_E_BackDetector(DetNbr);
     }
-  }*/
+    }*/
   SecondStageScorer->clear();
 
 
diff --git a/NPSimulation/Detectors/PISTA/PISTA.hh b/NPSimulation/Detectors/PISTA/PISTA.hh
index 90548dec841c28b11394d4fafd6fbadcf2ac61a9..4ac6371879228364ade3a01f41da02a296fb327c 100644
--- a/NPSimulation/Detectors/PISTA/PISTA.hh
+++ b/NPSimulation/Detectors/PISTA/PISTA.hh
@@ -98,6 +98,7 @@ class PISTA : public NPS::VDetector{
     ////////////////////////////////////////////////////
   private: // Geometry
     // Detector Coordinate 
+    int m_version;
     vector<bool> m_DefinitionType;
     vector<G4ThreeVector>  m_A; 
     vector<G4ThreeVector>  m_B;