diff --git a/Inputs/EventGenerator/sofia.reaction b/Inputs/EventGenerator/sofia.reaction
index 88336f892654a72b7a0c28382f21528cf40d9bc7..58a92aeae479129b1f4785e32d4ca92d29e10ad2 100644
--- a/Inputs/EventGenerator/sofia.reaction
+++ b/Inputs/EventGenerator/sofia.reaction
@@ -3,31 +3,31 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%Beam energy given in MeV ; Excitation in MeV ; emmitance in rad
 Beam
- Particle= 238U
+ Particle= 189Pb
  Energy= 166000
  SigmaEnergy= 2
- SigmaX= 1 cm
- SigmaY= 1 cm
+ SigmaX= 11 mm
+ SigmaY= 5 mm
  SigmaThetaX= 0 
  SigmaPhiY= 0
  MeanThetaX= 0
- MeanPhiY= 0
- MeanX= 0
- MeanY= 0
+ MeanPhiY= 0.17 deg
+ MeanX= 11 mm
+ MeanY= -1.4 mm
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 TwoBodyReaction
- Beam= 238U
+ Beam= 189Pb
  Target= 208Pb
- Light= 208Pb
- Heavy= 238U
- ExcitationEnergyLight= 0.0
- ExcitationEnergyHeavy= 15.0
+ Light= 189Pb
+ Heavy= 208Pb
+ ExcitationEnergyLight= 15.0
+ ExcitationEnergyHeavy= 0.0
  CrossSectionPath= sofia.txt CS
  ShootLight= 1
  ShootHeavy= 1
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 FissionDecay 
- CompoundNucleus= 238U
+ CompoundNucleus= 189Pb
  FissionModel= GEF
  VamosChargeStates= 0
  Shoot_FF= 1
diff --git a/NPLib/Detectors/Sofia/TSofFissionFragment.cxx b/NPLib/Detectors/Sofia/TSofFissionFragment.cxx
index 84620fb2963f753778fb101ea6cb2a16dc25c7e7..53be42bac83cd1d2b1727beddc71a5ac6b8f5c96 100644
--- a/NPLib/Detectors/Sofia/TSofFissionFragment.cxx
+++ b/NPLib/Detectors/Sofia/TSofFissionFragment.cxx
@@ -55,8 +55,12 @@ void TSofFissionFragment::Clear() {
   fFF_ThetaIn.clear();
   fFF_TofPosX.clear();
   fFF_TofPosY.clear();
-  fFF_MwpcPosX.clear();
-  fFF_MwpcPosY.clear();
+  fFF_PosX1.clear();
+  fFF_PosX2.clear();
+  fFF_PosX3.clear();
+  fFF_PosY1.clear();
+  fFF_PosY2.clear();
+  fFF_PosY3.clear();
 
   fFF_Zsum = -1;
   fFF_IntZsum = -1;
diff --git a/NPLib/Detectors/Sofia/TSofFissionFragment.h b/NPLib/Detectors/Sofia/TSofFissionFragment.h
index c277c833d18d890291da04afa8fad4a049dc42bb..c265a6ccaf4da076973a8a0fb059595cdb9ced02 100644
--- a/NPLib/Detectors/Sofia/TSofFissionFragment.h
+++ b/NPLib/Detectors/Sofia/TSofFissionFragment.h
@@ -46,8 +46,12 @@ class TSofFissionFragment : public TObject {
     vector<double> fFF_ThetaIn;
     vector<double> fFF_TofPosX;
     vector<double> fFF_TofPosY;
-    vector<double> fFF_MwpcPosX;
-    vector<double> fFF_MwpcPosY;
+    vector<double> fFF_PosX1;
+    vector<double> fFF_PosX2;
+    vector<double> fFF_PosX3;
+    vector<double> fFF_PosY1;
+    vector<double> fFF_PosY2;
+    vector<double> fFF_PosY3;
     double fFF_Zsum;
     int fFF_IntZsum;
 
@@ -87,12 +91,20 @@ class TSofFissionFragment : public TObject {
     inline void SetThetaIn(double val){fFF_ThetaIn.push_back(val);};//!
     inline void SetTofPosX(double val){fFF_TofPosX.push_back(val);};//!
     inline void SetTofPosY(double val){fFF_TofPosY.push_back(val);};//!
-    inline void SetMwpcPosX(double val){fFF_MwpcPosX.push_back(val);};//!
-    inline void SetMwpcPosY(double val){fFF_MwpcPosY.push_back(val);};//!
+    inline void SetPosX1(double val){fFF_PosX1.push_back(val);};//!
+    inline void SetPosX2(double val){fFF_PosX2.push_back(val);};//!
+    inline void SetPosX3(double val){fFF_PosX3.push_back(val);};//!
+    inline void SetPosY1(double val){fFF_PosY1.push_back(val);};//!
+    inline void SetPosY2(double val){fFF_PosY2.push_back(val);};//!
+    inline void SetPosY3(double val){fFF_PosY3.push_back(val);};//!
 
 
     //////////////////////    GETTERS    ////////////////////////
     int GetMult() {return fFF_Z.size();}//!
+    int GetMultTofPos() {return fFF_TofPosY.size();}//!
+    int GetMultMwpc1() {return fFF_PosY1.size();}//!
+    int GetMultMwpc2() {return fFF_PosY2.size();}//!
+    int GetMultMwpc3() {return fFF_PosY3.size();}//!
     inline double GetZsum() const {return fFF_Zsum;}//! 
     inline int GetIntZsum() const {return fFF_IntZsum;}//! 
     inline double GetZ(int i) const {return fFF_Z[i];}//! 
@@ -107,8 +119,12 @@ class TSofFissionFragment : public TObject {
     inline double GetThetaIn(int i) const {return fFF_ThetaIn[i];}//! 
     inline double GetTofPosX(int i) const {return fFF_TofPosX[i];}//! 
     inline double GetTofPosY(int i) const {return fFF_TofPosY[i];}//! 
-    inline double GetMwpcPosX(int i) const {return fFF_MwpcPosX[i];}//! 
-    inline double GetMwpcPosY(int i) const {return fFF_MwpcPosY[i];}//! 
+    inline double GetPosX1(int i) const {return fFF_PosX1[i];}//! 
+    inline double GetPosX2(int i) const {return fFF_PosX2[i];}//! 
+    inline double GetPosX3(int i) const {return fFF_PosX3[i];}//! 
+    inline double GetPosY1(int i) const {return fFF_PosY1[i];}//! 
+    inline double GetPosY2(int i) const {return fFF_PosY2[i];}//! 
+    inline double GetPosY3(int i) const {return fFF_PosY3[i];}//! 
 
 
   //////////////////////////////////////////////////////////////
diff --git a/NPLib/Physics/NPFissionDecay.cxx b/NPLib/Physics/NPFissionDecay.cxx
index e476e2292f2ae4a252b3fa5003363c3106d77221..5b7cb1f7a1b58985191d8973e0d38796251409d7 100644
--- a/NPLib/Physics/NPFissionDecay.cxx
+++ b/NPLib/Physics/NPFissionDecay.cxx
@@ -92,8 +92,8 @@ bool NPL::FissionDecay::GenerateEvent(string CompoundName, double MEx,double MEK
 
   TVector3 Momentum(MPx,MPy,MPz);
   Momentum.Unit();
-  double Theta = Momentum.Theta();
-  double Phi = Momentum.Phi();
+  double ThetaCN = Momentum.Theta();
+  double PhiCN = Momentum.Phi();
   double Lfis = 0;
 
   m_Compound = NPL::Particle(CompoundName);
@@ -102,7 +102,7 @@ bool NPL::FissionDecay::GenerateEvent(string CompoundName, double MEx,double MEK
   if(m_FissionModelName=="GEF"){
     if(m_FissionModel->IsValid(m_Compound.GetZ(), m_Compound.GetA())){
       worked=true;
-      m_FissionModel->InitCompound(MEx,MEK,Lfis,Theta,Phi);
+      m_FissionModel->InitCompound(MEx,MEK,Lfis,ThetaCN,PhiCN);
       m_FissionModel->Treat();
 
       int Ah = m_FissionModel->GetAffh();
@@ -146,14 +146,17 @@ bool NPL::FissionDecay::GenerateEvent(string CompoundName, double MEx,double MEK
       double Phil   = m_FissionModel->GetPhffl();
       double Phih   = m_FissionModel->GetPhffh();
 
+      TVector3 uxy = TVector3(cos(TMath::Pi()/2-PhiCN), -sin(TMath::Pi()/2-PhiCN), 0);
       TVector3 Momentuml = Pl * TVector3(sin(Thetal)*cos(Phil),
           sin(Thetal)*sin(Phil),
           cos(Thetal));
+      //Momentuml.Rotate(-ThetaCN, uxy);
 
       TVector3 Momentumh = Ph * TVector3(sin(Thetah)*cos(Phih),
           sin(Thetah)*sin(Phih),
           cos(Thetah));
-
+      //Momentumh.Rotate(-ThetaCN, uxy);
+      
       DPx.push_back(Momentuml.X());
       DPx.push_back(Momentumh.X());
       DPy.push_back(Momentuml.Y());
diff --git a/NPSimulation/Core/MaterialManager.cc b/NPSimulation/Core/MaterialManager.cc
index 554581bf1772db7f0d1868bd8497ca0f4324eac9..8ae1b918cf0e62b8ef8e83c25206635079bffff2 100644
--- a/NPSimulation/Core/MaterialManager.cc
+++ b/NPSimulation/Core/MaterialManager.cc
@@ -985,6 +985,48 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,
       return material;
     }
 
+    else if (Name == "Al1050") {
+      if (!density)
+        density = 2.71 * g / cm3;
+      G4Material* material = new G4Material("NPS_" + Name, density, 2);
+      material->AddElement(GetElementFromLibrary("Al"), 99.5/100.);
+      // To get to 100%
+      material->AddElement(GetElementFromLibrary("Fe"), 0.5/100.);
+      // Not 100% from wiki...
+      // material->AddElement(GetElementFromLibrary("Cu"), 0.05/100.);
+      // material->AddElement(GetElementFromLibrary("Fe"), 0.4/100.);
+      // material->AddElement(GetElementFromLibrary("Mg"), 0.05/100.);
+      // material->AddElement(GetElementFromLibrary("Mn"), 0.05/100.);
+      // material->AddElement(GetElementFromLibrary("Si"), 0.25/100.);
+      // material->AddElement(GetElementFromLibrary("Ti"), 0.03/100.);
+      // material->AddElement(GetElementFromLibrary("V"), 0.05/100.);
+      // material->AddElement(GetElementFromLibrary("Zn"), 0.05/100.);
+      m_Material[Name] = material;
+      return material;
+    }
+
+    else if (Name == "Al5754") {
+      if (!density)
+        density = 2.67 * g / cm3;
+      G4Material* material = new G4Material("NPS_" + Name, density, 2);
+      //Realistic
+      material->AddElement(GetElementFromLibrary("Al"), 97/100.);
+      material->AddElement(GetElementFromLibrary("Mg"), 3/100.);
+      // Not 100% from Wiki...
+      // material->AddElement(GetElementFromLibrary("Al"), 97.4/100.);
+      // material->AddElement(GetElementFromLibrary("Cr"), 0.3/100.);
+      // material->AddElement(GetElementFromLibrary("Cu"), 0.1/100.);
+      // material->AddElement(GetElementFromLibrary("Fe"), 0.4/100.);
+      // material->AddElement(GetElementFromLibrary("Mg"), 3.6/100.);
+      // material->AddElement(GetElementFromLibrary("Mn"), 0.5/100.);
+      // material->AddElement(GetElementFromLibrary("Si"), 0.4/100.);
+      // material->AddElement(GetElementFromLibrary("Ti"), 0.15/100.);
+      // material->AddElement(GetElementFromLibrary("Zn"), 0.2/100.);
+      m_Material[Name] = material;
+      return material;
+    }
+
+
     else if (Name == "NE213") {
       if (!density)
         density = 0.874 * g / cm3;
@@ -1194,7 +1236,6 @@ G4Material* MaterialManager::GetGasFromLibrary(string Name, double Pressure,
       return material;
     }
 
-
     else {
       exit(1);
     }
diff --git a/NPSimulation/Core/SteppingAction.cc b/NPSimulation/Core/SteppingAction.cc
index eb2e65e8b5a5da67e25ffd4aeeab17434919334c..2069571a8c818c8b9c22889e9a09327f81f38ca8 100644
--- a/NPSimulation/Core/SteppingAction.cc
+++ b/NPSimulation/Core/SteppingAction.cc
@@ -6,7 +6,8 @@
  *****************************************************************************/
 
 /*****************************************************************************
- * Original Author: ValerianAlcindor  contact address: valcindor@@ikp.tu-darmstadt.de
+ * Original Author: ValerianAlcindor  contact address:
+ *valcindor@@ikp.tu-darmstadt.de
  *                                                                           *
  * Creation Date  : September 2021                                             *
  * Last update    :                                                          *
diff --git a/NPSimulation/Detectors/Sofia/CMakeLists.txt b/NPSimulation/Detectors/Sofia/CMakeLists.txt
index 1cb926c219ae1cb8e2c2e8303776773bdab54e4d..f4c4de3d336c3033aa36cb7cdffd4d68e1b16c77 100644
--- a/NPSimulation/Detectors/Sofia/CMakeLists.txt
+++ b/NPSimulation/Detectors/Sofia/CMakeLists.txt
@@ -1,2 +1,4 @@
+if(Geant4_gdml_FOUND)  
 add_library(NPSSofTofW SHARED  SofTofW.cc)
 target_link_libraries(NPSSofTofW NPSCore ${ROOT_LIBRARIES} ${Geant4_LIBRARIES} ${NPLib_LIBRARIES} -lNPSofia)
+endif()
diff --git a/NPSimulation/Detectors/Sofia/SofTofW.cc b/NPSimulation/Detectors/Sofia/SofTofW.cc
index b9b1df7e50e4944bc5f74e1b41f580ff912a23aa..f4643859d8c48a6ffca53aa21f9dd9a1f3e963cf 100644
--- a/NPSimulation/Detectors/Sofia/SofTofW.cc
+++ b/NPSimulation/Detectors/Sofia/SofTofW.cc
@@ -26,6 +26,7 @@
 //G4 Geometry object
 #include "G4Tubs.hh"
 #include "G4Box.hh"
+#include "G4SubtractionSolid.hh"
 
 //G4 sensitive
 #include "G4SDManager.hh"
@@ -92,9 +93,14 @@ SofTofW::SofTofW(){
   m_TofScorer = 0;
   m_PlasticTof = 0;
   m_GLAD= 0;
+  m_VacuumPipe= 0;
   m_TofWall = 0;
 
   m_Build_GLAD= 0;
+  m_Build_VacuumPipe= 0;
+  m_VacuumPipeX= 0;
+  m_VacuumPipeY= 0;
+  m_VacuumPipeZ= 0;
   m_GLAD_MagField = 0;
   m_GLAD_DistanceFromTarget = 0;
 
@@ -247,18 +253,48 @@ new G4PVPlacement(0,Tv,
 return m_TwinMusic;
 }*/
 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4AssemblyVolume* SofTofW::BuildVacuumPipe(){
+  if(!m_VacuumPipe){
+    m_VacuumPipe = new G4AssemblyVolume;
+
+    G4Tubs* tube = new G4Tubs("tube",8.*cm,15*cm,155./2*cm,0,360*deg);
+    
+    G4Box* box_int = new G4Box("box_int",22./2*cm,22./2*cm,14.1/2*cm);
+    G4Box* box_ext = new G4Box("box_ext",150./2*cm,150./2*cm,14./2*cm);
+
+    G4VSolid* box_subtract = new G4SubtractionSolid("box_subtract",box_ext,box_int,0,G4ThreeVector(0,0,0));
+
+    G4Material* tube_mat = MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
+
+    //G4LogicalVolume* tube_vol = new G4LogicalVolume(tube,tube_mat,"logic_tube",0,0,0);
+    G4LogicalVolume* tube_vol = new G4LogicalVolume(box_subtract,tube_mat,"logic_tube",0,0,0);
+
+    G4VisAttributes* VisTube = new G4VisAttributes(G4Colour(0., 0.7, 0.7));   
+    tube_vol->SetVisAttributes(VisTube);
+
+    G4ThreeVector Pos = G4ThreeVector(0,0,0);
+    G4RotationMatrix* Rot = new G4RotationMatrix();
+    m_VacuumPipe->AddPlacedVolume(tube_vol,Pos,Rot);
+  }
+  
+  return m_VacuumPipe;
+}
+
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4AssemblyVolume* SofTofW::BuildGLAD()
 {
   if(!m_GLAD){
     m_GLAD = new G4AssemblyVolume;
     string basepath = getenv("NPTOOL");
-    string path = basepath + "/NPSimulation/Detectors/Sofia/gdml/glad.gdml";
-    m_gdmlparser.Read(path);
+    //string path = basepath + "/NPSimulation/Detectors/Sofia/gdml/glad.gdml";
+    //m_gdmlparser.Read(path);
 
     //G4LogicalVolume* vol1 = m_gdmlparser.GetVolume("GEcrans");
     //G4LogicalVolume* vol2 = m_gdmlparser.GetVolume("G2202001_Demi_Ecran_thermique_interne");
-    G4LogicalVolume* vol3 = m_gdmlparser.GetVolume("G2402001_Enceinte_interne");
+    
+    //G4LogicalVolume* vol3 = m_gdmlparser.GetVolume("G2402001_Enceinte_interne");
+    
     //G4LogicalVolume* vol4 = m_gdmlparser.GetVolume("GEnceinte_externe");
     //G4LogicalVolume* vol5 = m_gdmlparser.GetVolume("G2403002_Fonf_cote_sortie");
     //G4LogicalVolume* vol6 = m_gdmlparser.GetVolume("G2403001_Fond_cote_entree");
@@ -291,11 +327,11 @@ G4AssemblyVolume* SofTofW::BuildGLAD()
     //m_GLAD->AddPlacedVolume(vol2,Pos2,Rot2);
    
     // *** vol3 *** //
-    G4ThreeVector Pos3 = G4ThreeVector(0,0,0);
+    /*G4ThreeVector Pos3 = G4ThreeVector(0,0,0);
     G4RotationMatrix* Rot3 = new G4RotationMatrix();
     Rot3->rotateX(90*deg);
     Rot3->rotateY(90*deg);
-    m_GLAD->AddPlacedVolume(vol3,Pos3,Rot3);
+    m_GLAD->AddPlacedVolume(vol3,Pos3,Rot3);*/
    
     // *** vol4 *** //
     //G4ThreeVector Pos4 = G4ThreeVector(0*cm,0,0*cm);
@@ -371,8 +407,8 @@ void SofTofW::ReadConfiguration(NPL::InputParser parser){
   if(NPOptionManager::getInstance()->GetVerboseLevel())
     cout << "//// " << blocks.size() << " detectors found " << endl; 
 
-  vector<string> cart = {"POS","Build_GLAD"};
-  vector<string> sphe = {"R","Theta","Phi","Build_GLAD"};
+  vector<string> cart = {"POS","Build_GLAD","Build_VacuumPipe"};
+  vector<string> sphe = {"R","Theta","Phi","Build_GLAD","Build_VacuumPipe"};
 
   for(unsigned int i = 0 ; i < blocks.size() ; i++){
     if(blocks[i]->HasTokenList(cart)){
@@ -381,6 +417,7 @@ void SofTofW::ReadConfiguration(NPL::InputParser parser){
 
       G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("POS","mm"));
       m_Build_GLAD = blocks[i]->GetInt("Build_GLAD");
+      m_Build_VacuumPipe = blocks[i]->GetInt("Build_VacuumPipe");
       AddDetector(Pos);
     }
     else if(blocks[i]->HasTokenList(sphe)){
@@ -390,8 +427,12 @@ void SofTofW::ReadConfiguration(NPL::InputParser parser){
       double Theta = blocks[i]->GetDouble("Theta","deg");
       double Phi = blocks[i]->GetDouble("Phi","deg");
       m_Build_GLAD = blocks[i]->GetInt("Build_GLAD");
+      m_Build_VacuumPipe = blocks[i]->GetInt("Build_VacuumPipe");
       m_GLAD_MagField = blocks[i]->GetDouble("GLAD_MagField","T");
       m_GLAD_DistanceFromTarget = blocks[i]->GetDouble("GLAD_DistanceFromTarget", "m");
+      m_VacuumPipeX = blocks[i]->GetDouble("VacuumPipeX","m");
+      m_VacuumPipeY = blocks[i]->GetDouble("VacuumPipeY","m");
+      m_VacuumPipeZ = blocks[i]->GetDouble("VacuumPipeZ","m");
 
       AddDetector(R,Theta,Phi);
     }
@@ -443,6 +484,10 @@ void SofTofW::ConstructDetector(G4LogicalVolume* world){
       world, false, 0);
      */
   }
+  if(m_Build_VacuumPipe==1){
+    G4ThreeVector Tube_Pos = G4ThreeVector(m_VacuumPipeX,m_VacuumPipeY,m_VacuumPipeZ);
+    BuildVacuumPipe()->MakeImprint(world,Tube_Pos,0);
+  }
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Add Detector branch to the EventTree.
diff --git a/NPSimulation/Detectors/Sofia/SofTofW.hh b/NPSimulation/Detectors/Sofia/SofTofW.hh
index 066bc9139f28cee64c04e5dcf93dab604d5663b0..5df400ed4fa81735fa1d305f1a32738e26b35ee4 100644
--- a/NPSimulation/Detectors/Sofia/SofTofW.hh
+++ b/NPSimulation/Detectors/Sofia/SofTofW.hh
@@ -59,6 +59,7 @@ class SofTofW : public NPS::VDetector{
 
     G4AssemblyVolume* BuildTOFDetector();
     G4AssemblyVolume* BuildGLAD();
+    G4AssemblyVolume* BuildVacuumPipe();
   
   private:
     G4GDMLParser m_gdmlparser;
@@ -66,6 +67,7 @@ class SofTofW : public NPS::VDetector{
     //G4LogicalVolume* m_GLAD;
     G4AssemblyVolume* m_GLAD;
     G4AssemblyVolume* m_TofWall;
+    G4AssemblyVolume* m_VacuumPipe;
     
     ////////////////////////////////////////////////////
     //////  Inherite from NPS::VDetector class /////////
@@ -110,9 +112,13 @@ class SofTofW : public NPS::VDetector{
     
     // GLAD //
     int m_Build_GLAD;
+    int m_Build_VacuumPipe;
     double m_GLAD_MagField;
     double m_GLAD_DistanceFromTarget;
-  
+    double m_VacuumPipeX;
+    double m_VacuumPipeY;
+    double m_VacuumPipeZ;
+
     // Visualisation Attribute
     G4VisAttributes* m_VisSquare;
     G4VisAttributes* m_VisGLAD;
diff --git a/NPSimulation/Detectors/Strasse/Strasse.cc b/NPSimulation/Detectors/Strasse/Strasse.cc
index b4d7a1c6df5d09dbb4547b957c8b4c5fdb11655f..f751000d70c946625fe33eab4722233f35495ed3 100644
--- a/NPSimulation/Detectors/Strasse/Strasse.cc
+++ b/NPSimulation/Detectors/Strasse/Strasse.cc
@@ -633,7 +633,9 @@ G4LogicalVolume* Strasse::BuildOuterDetector(){
 G4LogicalVolume* Strasse::BuildChamber(){
   if(!m_Chamber){
     // Needed Element
-    G4Material* Material = MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
+    // G4Material* Material = MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
+    G4Material* Material = MaterialManager::getInstance()->GetMaterialFromLibrary("Al5754");
+    // G4Material* Material = MaterialManager::getInstance()->GetMaterialFromLibrary("Al1050");
     G4RotationMatrix* Rot = new G4RotationMatrix();
 
     // Main Cylinder
@@ -694,7 +696,6 @@ G4LogicalVolume* Strasse::BuildChamber(){
 
     m_Chamber = new G4LogicalVolume(Chamber3,Material,"logic_Strasse_Chamber",0,0,0);
 
-
     m_Chamber->SetVisAttributes(ChamberVisAtt);
   }
 
@@ -1023,7 +1024,7 @@ void Strasse::ConstructDetector(G4LogicalVolume* world){
   }
 
   // Chamber 
-  /*
+  
   for (unsigned short i = 0 ; i < m_Chamber_Z.size() ; i++) {
     G4ThreeVector Det_pos = G4ThreeVector(0,0,-m_Chamber_Z[i]) ;
     G4RotationMatrix* Rot =  new G4RotationMatrix();
@@ -1032,7 +1033,7 @@ void Strasse::ConstructDetector(G4LogicalVolume* world){
         BuildChamber(),
         "Strasse",world,false,i+1);
   }
-  */
+  
 
 
     //G4ThreeVector Det_pos = G4ThreeVector(0,0,+11.5) ;
diff --git a/NPSimulation/Process/FissionDecay.cc b/NPSimulation/Process/FissionDecay.cc
index 933717d02cb9a6cca28d41adcf2a8fbf91a19363..7839e27c68348b91b58ab86d4352df66246cbd1c 100644
--- a/NPSimulation/Process/FissionDecay.cc
+++ b/NPSimulation/Process/FissionDecay.cc
@@ -174,7 +174,6 @@ void FissionDecay::DoIt(const G4FastTrack& fastTrack,G4FastStep& fastStep){
 
   G4ParticleDefinition* FissionFragmentDef; 
   unsigned int size = FissionFragment.size();
-
   if(size == 0)
     return;
 
@@ -205,8 +204,8 @@ void FissionDecay::DoIt(const G4FastTrack& fastTrack,G4FastStep& fastStep){
     m_FissionConditions->SetFragmentTheta(Momentum.theta()/deg);
     m_FissionConditions->SetFragmentPhi(Momentum.phi()/deg);
     m_FissionConditions->SetFragmentMomentumX(DPx[i]);
-    m_FissionConditions->SetFragmentMomentumX(DPy[i]);
-    m_FissionConditions->SetFragmentMomentumX(DPz[i]);
+    m_FissionConditions->SetFragmentMomentumY(DPy[i]);
+    m_FissionConditions->SetFragmentMomentumZ(DPz[i]);
 
     // neutral particle
     if(FFZ==0){
diff --git a/Projects/Sofia/sofia.detector b/Projects/Sofia/sofia.detector
index 099a9820b9fb765cf6cda9591e7faa3f269936e1..da3542989588bb5b1d36d1184d039e93df8f4e6b 100644
--- a/Projects/Sofia/sofia.detector
+++ b/Projects/Sofia/sofia.detector
@@ -1,7 +1,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Target
  THICKNESS= 2 mm
- RADIUS=	40 mm
+ RADIUS= 50 mm
  MATERIAL= Pb
  ANGLE= 0 deg
  X= 0 mm
@@ -13,9 +13,13 @@ SofTofW
  THETA= -9 deg
  PHI= 0 deg
  Build_GLAD= 1
- GLAD_DistanceFromTarget= 3.3 m
+ GLAD_DistanceFromTarget= 3. m
  GLAD_MagField= 1.8 T 
- %Build_Twin_Music= 0
+ Build_VacuumPipe= 1
+ VacuumPipeX= 0 cm
+ VacuumPipeY= 0 cm
+ VacuumPipeZ= 2.5 m
+%Build_Twin_Music= 0
  %Twin_Music_DistanceFromTarget= 1.5 m
  %Twin_Music_Gas= P10_1atm
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Projects/s455/Analysis.cxx b/Projects/s455/Analysis.cxx
index 71875203cfefaf6e6f575d144398c19bf76ea003..07fd371ecde3f332e45b8c2b0390babc1798f944 100644
--- a/Projects/s455/Analysis.cxx
+++ b/Projects/s455/Analysis.cxx
@@ -133,23 +133,59 @@ void Analysis::FissionFragmentAnalysis(){
       PosX.push_back(SofTofW->CalPosX[i]);
       PosY.push_back(SofTofW->CalPosY[i]);
 
-      //SofFF->SetTofPosX(SofTofW->CalPosX[i]);
-      //SofFF->SetTofPosY(SofTofW->CalPosY[i]);
+      SofFF->SetTofPosX(SofTofW->CalPosX[i]);
+      SofFF->SetTofPosY(SofTofW->CalPosY[i]);
     }
   }
 
-  vector<double> Xmwpc4;
-  vector<double> Ymwpc4;
+  vector<double> X1;
+  vector<double> X2;
+  vector<double> X3;
+  vector<double> Y1;
+  vector<double> Y2;
+  vector<double> Y3;
   for(unsigned int i=0; i<SofMwpc->DetectorNbr.size(); i++){
+    if(SofMwpc->DetectorNbr[i]==2){
+      SofFF->SetPosX1(SofMwpc->PositionX1[i]);
+      SofFF->SetPosY1(SofMwpc->PositionY[i]);
+    }
+    if(SofMwpc->DetectorNbr[i]==3){
+      SofFF->SetPosX2(SofMwpc->PositionX1[i]);
+      SofFF->SetPosY2(SofMwpc->PositionY[i]);
+    }
     if(SofMwpc->DetectorNbr[i]==4){
-      Xmwpc4.push_back(SofMwpc->PositionX1[i]);
-      Ymwpc4.push_back(SofMwpc->PositionY[i]);
+      X3.push_back(SofMwpc->PositionX1[i]);
+      Y3.push_back(SofMwpc->PositionY[i]);
+
+      SofFF->SetPosX3(SofMwpc->PositionX1[i]);
+      SofFF->SetPosY3(SofMwpc->PositionY[i]);
+    }
+  }
 
-      //SofFF->SetMwpcPosX(SofMwpc->PositionX1[i]);
-      //SofFF->SetMwpcPosY(SofMwpc->PositionY[i]);
+  vector<double> good_posx;
+  vector<double> good_posy;
+  for(unsigned int i=0; i<PosX.size(); i++){
+    double tofx = PosX[i];
+    double tofy = PosY[i];
+    for(unsigned int k=0; k<X3.size(); k++){
+      double posx = X3[k];
+      if(abs(posx-tofx) < 100){
+        good_posx.push_back(posx);
+        good_posy.push_back(tofy);   
+      }
     }
   }
 
+
+  /*if(good_posx.size()==2 && good_posy.size()==2){
+    SofFF->SetTofPosX(good_posx[0]);
+    SofFF->SetTofPosX(good_posx[1]);
+
+    SofFF->SetTofPosY(good_posy[0]);
+    SofFF->SetTofPosY(good_posy[1]);
+    }*/
+
+
   int mult1 = SofTwim->mult1;
   int mult2 = SofTwim->mult2;
   int mult3 = SofTwim->mult3;
@@ -340,39 +376,7 @@ void Analysis::FissionFragmentAnalysis(){
       A1 = AoQ1 * iZ1;
       A2 = AoQ2 * iZ2;
 
-      vector<double> good_posx;
-      vector<double> good_posy;
-      for(unsigned int i=0; i<PosX.size(); i++){
-        double tofx = PosX[i];
-        double tofy = PosY[i];
-        for(unsigned int k=0; k<Xmwpc4.size(); k++){
-          double posx = Xmwpc4[k];
-          if(abs(posx-tofx) < 100){
-            good_posx.push_back(posx);
-            //SofFF->SetMwpcPosX(posx);
-            //SofFF->SetTofPosX(tofx);
-          }
-        }
-        for(unsigned int p=0; p<Ymwpc4.size(); p++){
-          double posy = Ymwpc4[p];
-          if(abs(posy-tofy) < 20){
-            //good_posy.push_back(posy);
-            good_posy.push_back(tofy);
-            //SofFF->SetMwpcPosY(posy);
-            //SofFF->SetTofPosY(tofy);
-          }
-        }
-      }
-
-      if(good_posx.size()==2 && good_posy.size()==2){
-        SofFF->SetTofPosX(good_posx[0]);
-        SofFF->SetTofPosX(good_posx[1]);
- 
-        SofFF->SetTofPosY(good_posy[0]);
-        SofFF->SetTofPosY(good_posy[1]);
-      }
-
-      //*** Filling the Fission Fragment Tree ***//
+      // *** Filling the Fission Fragment Tree *** //
       SofFF->SetTOF(TOF_left);
       SofFF->SetTOF(TOF_right);
       SofFF->SetBeta(Beta_Z1);
@@ -520,7 +524,7 @@ void Analysis::InitParameter(){
   fDCC   = -10000;
   fK_LS2 = -30e-8;
 
-  fRunID = 6;
+  fRunID = 12;
 
   // Beam parameter //
   fZBeta_p0 = 1;
diff --git a/Projects/s455/calibration/SofSci/SofSci_physics.cal b/Projects/s455/calibration/SofSci/SofSci_physics.cal
index e8cb13bb55b597dc930e2bf5171bf7e21754cea2..8778ee911a3131c0216c0cc52ad439b9029ffaff 100644
--- a/Projects/s455/calibration/SofSci/SofSci_physics.cal
+++ b/Projects/s455/calibration/SofSci/SofSci_physics.cal
@@ -1,4 +1,4 @@
-SofSci_TOF2INV_V -8.04267 0.00737389
+SofSci_TOF2INV_V -8.0515 0.00737389
 SofSci_LENGTH_S2 135.614
-SofSci_DET1_POSPAR 90.0 54.6
+SofSci_DET1_POSPAR 45.0 80.0
 SofSci_DET2_POSPAR 943.287 86.652
diff --git a/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal b/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal
index 8a3e3df454ce31ee8ad1bf110603e457707558ff..37d3efaaa6803eb42745b0b186822b5f6513519a 100644
--- a/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal
+++ b/Projects/s455/calibration/SofTrim/SofTrim_SectionAlign.cal
@@ -1,3 +1,3 @@
-SofTrim_SEC1_ALIGN 310.216 1.00792
+SofTrim_SEC1_ALIGN -457.863 1.03809
 SofTrim_SEC2_ALIGN 0 1
-SofTrim_SEC3_ALIGN -1382.53 1.13744
+SofTrim_SEC3_ALIGN -2599.29 1.18757