diff --git a/Inputs/EventGenerator/neutron.source b/Inputs/EventGenerator/neutron.source
index 9d673567edd2b32697e20d1b43ce36315b8afa2f..b69093c2f297b72eb9915026764133e72a5c8109 100755
--- a/Inputs/EventGenerator/neutron.source
+++ b/Inputs/EventGenerator/neutron.source
@@ -14,7 +14,7 @@ Isotropic
 % EnergyDistributionHist= hPFNS_jeff3.3.root PFNS_jeff_0
  %EnergyDistribution= 0.38*sqrt(x)*exp(-x/0.847212)
  HalfOpenAngleMin= 0
- HalfOpenAngleMax= 180
+ HalfOpenAngleMax= 30
  x0= 0 
  y0= 0 
  z0= 0 mm 
diff --git a/NPLib/Core/NPDetectorFactory.cxx b/NPLib/Core/NPDetectorFactory.cxx
index 221fd2acc4ae4c0f9d9902e50fb1f3149f7330f0..ff92dec213b079d16cf88b1aebf3dc6f19fab8e0 100644
--- a/NPLib/Core/NPDetectorFactory.cxx
+++ b/NPLib/Core/NPDetectorFactory.cxx
@@ -112,13 +112,12 @@ NPL::VTreeReader* NPL::DetectorFactory::ConstructReader(std::string Token) {
     return m_ConstructReader[Token]();
   }
   else if (m_TokenLib.find(Token) != m_TokenLib.end()) {
-    std::cout << "In Token" << std::endl;
+    std::cout << "In Token : " << Token << std::endl;
     // Add absolute path to library name
     std::string path = getenv("NPTOOL");
-    std::cout << "path : " << path << std::endl;
     std::string libName = path + "/NPLib/lib/" + m_TokenLib[Token];
     dlopen(libName.c_str(), RTLD_NOW | RTLD_GLOBAL);
-    std::cout << "testtest " << libName.c_str() << std::endl;
+    std::cout << " Associated library : " << libName.c_str() << std::endl;
     char* LibError = dlerror();
     if (m_ConstructReader.find(Token) != m_ConstructReader.end())
       return m_ConstructReader[Token]();
diff --git a/NPLib/Core/NPOptionManager.h b/NPLib/Core/NPOptionManager.h
index c830508425153d14ca67538ba67ac72f529ec6bc..da7886e2305c951e160e7b06f7f0d68696360194 100644
--- a/NPLib/Core/NPOptionManager.h
+++ b/NPLib/Core/NPOptionManager.h
@@ -141,6 +141,7 @@ class NPOptionManager{
 
    public: // user definition
       bool HasDefinition(std::string def) {return(fDefinition.find(def)!=fDefinition.end());}
+      int GetNumberDefinition(){return fDefinition.size();}
 
    private:
       // default values
diff --git a/NPLib/Detectors/Minos/TMinosPhysics.cxx b/NPLib/Detectors/Minos/TMinosPhysics.cxx
index 04ccd7800a1aceb1e21662b9586040bf2f712bbd..630bdbb67c6f00941d7f0ad5e0a419f228f2842b 100644
--- a/NPLib/Detectors/Minos/TMinosPhysics.cxx
+++ b/NPLib/Detectors/Minos/TMinosPhysics.cxx
@@ -68,7 +68,7 @@ void TMinosPhysics::BuildPhysicalEvent() {
     Tracks_P0.push_back(clusters[i].GetP0());
     Tracks_Dir.push_back(clusters[i].GetDir());
   }
-
+ 
   if (sizeC == 2) {
     static TVector3 Vertex, delta;
     Delta_Vertex = MinimumDistanceTwoLines(Tracks_P0[0], Tracks_P0[0] + Tracks_Dir[0], Tracks_P0[1],
@@ -90,9 +90,11 @@ void TMinosPhysics::PreTreat() {
   static string cal_v, cal_o;
 
   sizePad = m_EventData->GetPadMult();
+ 
   if (sizePad > 20) {
     for (unsigned int i = 0; i < sizePad; i++) {
       vector<unsigned short>* Charge = m_EventData->GetChargePtr(i);
+      
       if (Charge->size() > 40) {
         vector<unsigned short>* Time = m_EventData->GetTimePtr(i);
         m_utility.Calibrate(Time, Charge, i, T, Q);
@@ -209,11 +211,11 @@ void TMinosPhysics::Clear() {
   Tracks_Dir.clear();
 
   // Vertex information
-  X_Vertex = -1000;
-  Y_Vertex = -1000;
-  Z_Vertex = -1000;
-  Theta_12 = -1000;
-  Delta_Vertex = -1000;
+  X_Vertex = -10000;
+  Y_Vertex = -10000;
+  Z_Vertex = -10000;
+  Theta_12 = -10000;
+  Delta_Vertex = -10000;
 }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -235,6 +237,7 @@ void TMinosPhysics::ReadConfiguration(NPL::InputParser parser) {
       m_utility.SetParameters(m_TimeBin, m_ShapingTime, m_Baseline, m_Sampling);
       m_Position = blocks[i]->GetTVector3("Position", "mm");
       m_ZRotation = blocks[i]->GetDouble("ZRotation", "deg");
+      m_TargetLength = blocks[i]->GetDouble("TargetLength","mm");
       string xmlpath = blocks[i]->GetString("XML");
       NPL::XmlParser xml;
       xml.LoadFile(xmlpath);
diff --git a/NPLib/Detectors/Minos/TMinosPhysics.h b/NPLib/Detectors/Minos/TMinosPhysics.h
index f9ce20ac5fb8f8261674c2cb3f9d6f89a8b55741..6c230a6723541ad8513b7815ba222c1cc0855189 100644
--- a/NPLib/Detectors/Minos/TMinosPhysics.h
+++ b/NPLib/Detectors/Minos/TMinosPhysics.h
@@ -84,7 +84,7 @@ class TMinosPhysics : public TObject, public NPL::VDetector {
     unsigned int m_Sampling;//!
     TVector3 m_Position;//!
     double   m_ZRotation;//!
-
+    double m_TargetLength;//!
 
     NPL::MinosUtility m_utility;//! // an utility to fit the pad signal
     NPL::LinearRansac3D m_ransac;//! // a linear ransac to build the 3D tracks
@@ -157,6 +157,8 @@ class TMinosPhysics : public TObject, public NPL::VDetector {
     vector<double> GetPad_Y()  {return Y_Pad;} //!
     vector<double> GetPad_Z()  {return Z_Pad;} //!
     vector<double> GetPad_T()  {return T_Pad;} //!
+
+    TVector3 GetVertex() {return TVector3(X_Vertex, Y_Vertex, Z_Vertex);}//!
     double GetVertexX()  {return X_Vertex;} //!
     double GetVertexY()  {return Y_Vertex;} //!
     double GetVertexZ()  {return Z_Vertex;} //!
@@ -164,11 +166,15 @@ class TMinosPhysics : public TObject, public NPL::VDetector {
     double GetDeltaVertex()  {return Delta_Vertex;} //!
     double GetTheta12()  {return Theta_12;} //!
   
-    int GetNbrOfTracks(){return Tracks_P0.size();}
+    int GetNbrOfTracks(){return Tracks_P0.size();}//!
       
     TVector3 GetTracksP0(unsigned int i){return Tracks_P0[i];}//!
     TVector3 GetTracksDir(unsigned int i){return Tracks_Dir[i];}//!
     double Angle(unsigned int i, unsigned j){return Tracks_Dir[i].Angle(Tracks_Dir[j]);};
+
+    TVector3 GetMinosPosition() {return m_Position;}//!
+    double GetTargetLength() {return m_TargetLength;}//!
+  
   // Static constructor to be passed to the Detector Factory
   public:
     static NPL::VDetector* Construct();
diff --git a/NPLib/Detectors/Nebula/TNebulaData.h b/NPLib/Detectors/Nebula/TNebulaData.h
index 54eaea6e3fd846bca0b4665c72960171d294e31d..70dd23e5dd50c72bca97611e4a17697e15a4c317 100644
--- a/NPLib/Detectors/Nebula/TNebulaData.h
+++ b/NPLib/Detectors/Nebula/TNebulaData.h
@@ -51,7 +51,6 @@ class TNebulaData : public TObject {
     // Time
     vector<UShort_t>   fNebula_Td_ID;
     vector<Double_t>   fNebula_Td_Time;
- 
 
   //////////////////////////////////////////////////////////////
   // Constructor and destructor
diff --git a/NPLib/Detectors/Nebula/TNebulaPhysics.cxx b/NPLib/Detectors/Nebula/TNebulaPhysics.cxx
index 6a9202c7a4136d8c325bf277e154d9e73e9e9deb..88999657a592b147b8fcda25b84398b127d1f71a 100644
--- a/NPLib/Detectors/Nebula/TNebulaPhysics.cxx
+++ b/NPLib/Detectors/Nebula/TNebulaPhysics.cxx
@@ -36,21 +36,27 @@ using namespace std;
 #include "NPDetectorFactory.h"
 #include "NPOptionManager.h"
 #include "NPSystemOfUnits.h"
+
 //   ROOT
 #include "TChain.h"
 
-ClassImp(TNebulaPhysics)
+//To get light speed
+#include "NPPhysicalConstants.h"
 
+ClassImp(TNebulaPhysics)
 
   ///////////////////////////////////////////////////////////////////////////
 TNebulaPhysics::TNebulaPhysics()
   : m_EventData(new TNebulaData),
   m_EventPhysics(this),
   m_Spectra(0),
-  m_Q_RAW_Threshold(0), // adc channels
-  m_Q_Threshold(7),     // normal bars in MeV
+  m_Q_RAW_Threshold(1), // adc channels
+  m_Q_Threshold(6),     // normal bars in MeV
   m_V_Threshold(1),     // veto bars in MeV
-  m_NumberOfBars(0) {
+  m_NumberOfBars(0)
+{
+  m_Material_Index = 1.58;  
+  m_Signal_Effective_Velocity = (299792458/m_Material_Index)*NPUNITS::m/NPUNITS::s;
   }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -63,9 +69,11 @@ void TNebulaPhysics::ReadXML(NPL::XmlParser xml){
     unsigned int id = b[i]->AsInt("ID");
 
     // position
-    PositionX[id] = b[i]->AsDouble("PosX"); 
-    PositionY[id] = b[i]->AsDouble("PosY"); 
+    PositionX[id] = b[i]->AsDouble("PosX");
+    PositionY[id] = b[i]->AsDouble("PosY");
     PositionZ[id] = b[i]->AsDouble("PosZ"); 
+    SubLayer[id]  = b[i]->AsInt("SubLayer");
+    
     std::string tree_name = RootInput::getInstance()->GetChain()->GetName();
     if(tree_name!="SimulatedTree"){
       // linear cal
@@ -88,7 +96,9 @@ void TNebulaPhysics::ReadXML(NPL::XmlParser xml){
       // DT position cal
       DTa[id] = b[i]->AsDouble("DTCal");//!
       DTb[id] = b[i]->AsDouble("DTOff");//!
+      
     }
+    
     else{
       // linear cal
       aQu[id] =1; 
@@ -101,18 +111,19 @@ void TNebulaPhysics::ReadXML(NPL::XmlParser xml){
       bTd[id] =0; 
 
       // T average offset
-      avgT0[id]= 0;
+      //avgT0[id]= 0;
+      avgT0[id]= -4.743;
 
       // slew correction T= tcal +slwT/sqrt(Qcal)
       slwTu[id] = 0;
       slwTd[id] = 0;
 
       // DT position cal
-      DTa[id] = 1;//!
+      // DTa[id] = 1;//!
       DTb[id] = 0;//!
-
-
+      DTa[id] = 0.5*m_Signal_Effective_Velocity;//!
       }
+      
 
   } 
   cout << " -> " << m_NumberOfBars << " bars found" << endl;;
@@ -129,17 +140,25 @@ void TNebulaPhysics::BuildSimplePhysicalEvent() {
 void TNebulaPhysics::BuildPhysicalEvent() {
   // apply thresholds and calibration
 
+
   // instantiate CalibrationManager
   static CalibrationManager* Cal = CalibrationManager::getInstance();
   static double rawQup,calQup,rawQdown,calQdown,rawTup,calTup,rawTdown,calTdown,calQ,calT,Y;
   static unsigned int ID;
+
+  
+  static double neutron_mass = 939.57; //  MeV/c^2
+  static double c_light = 299792458;    //m.s-1
+  
   // All vector size 
   static unsigned int QUsize, QDsize, TUsize, TDsize ; 
   QUsize = m_EventData->GetChargeUpMult();
   QDsize = m_EventData->GetChargeDownMult();
   TUsize = m_EventData->GetTimeUpMult();
   TDsize = m_EventData->GetTimeDownMult();
+ 
   static double threshold;
+
   // loop on Qup
   for (unsigned int qup = 0; qup < QUsize ; qup++) {
     rawQup = m_EventData->GetChargeUp(qup);
@@ -208,14 +227,16 @@ void TNebulaPhysics::BuildPhysicalEvent() {
           DetectorNumber.push_back(ID);
           Charge.push_back(calQ);
           TOF.push_back(calT);
-          PosY.push_back(Y+PositionY[ID]);
+          PosY.push_back(Y+PositionY[ID]);	
           PosX.push_back(PositionX[ID]);
-          PosZ.push_back(PositionZ[ID]);
+          PosZ.push_back(PositionZ[ID] + m_offset[0][2]); // [0]-> only one Nebula detector    [2]-> z position
 
-          if(ID<121)
-            IsVeto.push_back(0);
-          else
+	  if(SubLayer[ID]!=0){
+            IsVeto.push_back(0);          
+          }
+          else{
             IsVeto.push_back(1);
+          }
 
         }
       }
diff --git a/NPLib/Detectors/Nebula/TNebulaPhysics.h b/NPLib/Detectors/Nebula/TNebulaPhysics.h
index 5e1499b8ee42b0a6d6e6bfcecedf0aa364efbd6d..ea13da12312862c44b196db1ee716ef720ed66b5 100644
--- a/NPLib/Detectors/Nebula/TNebulaPhysics.h
+++ b/NPLib/Detectors/Nebula/TNebulaPhysics.h
@@ -74,7 +74,22 @@ class TNebulaPhysics : public TObject, public NPL::VDetector {
   public:
     TVector3 GetPos(const unsigned int& i) const{
       return TVector3(PosX[i],PosY[i],PosZ[i]);
-    }
+    };
+
+    double GetCharge(const unsigned int& i) const{
+      return Charge[i];
+    };
+    int GetChargeMult() const{
+      return Charge.size();
+    };
+  
+    double GetDetectorNumber(const unsigned int& i) const{
+      return DetectorNumber[i];
+    };
+  
+    int GetDetectorNumberMult() const{
+      return DetectorNumber.size();
+    };
 
     // Return true if one veto fired
     bool HasVeto(){
@@ -193,6 +208,10 @@ class TNebulaPhysics : public TObject, public NPL::VDetector {
     double m_Q_Threshold;     //!
     double m_V_Threshold;     //!
 
+    //effective velocity of signal inside bar
+    double m_Material_Index; //!
+    double m_Signal_Effective_Velocity; //!
+
   public: 
     void SetQThreshold(double t) {m_Q_Threshold=t;};
     void SetVThreshold(double t) {m_V_Threshold=t;};
@@ -200,6 +219,9 @@ class TNebulaPhysics : public TObject, public NPL::VDetector {
   private:
     int m_NumberOfBars;  //!
 
+  private:
+    std::map<unsigned int , unsigned int> SubLayer;//!
+
   private: // offset and inversion 
     std::map<unsigned int, TVector3> m_offset;//!
     std::map<unsigned int, bool> m_invertX;//!
diff --git a/NPLib/Detectors/NeuLAND/CMakeLists.txt b/NPLib/Detectors/NeuLAND/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1898430d9bfeae35030990dd5aa1e6066743ac99
--- /dev/null
+++ b/NPLib/Detectors/NeuLAND/CMakeLists.txt
@@ -0,0 +1,6 @@
+add_custom_command(OUTPUT TNeuLANDPhysicsDict.cxx COMMAND ${CMAKE_BINARY_DIR}/scripts/build_dict.sh TNeuLANDPhysics.h TNeuLANDPhysicsDict.cxx TNeuLANDPhysics.rootmap libNPNeuLAND.dylib DEPENDS TNeuLANDPhysics.h)
+add_custom_command(OUTPUT TNeuLANDDataDict.cxx COMMAND ${CMAKE_BINARY_DIR}/scripts/build_dict.sh TNeuLANDData.h TNeuLANDDataDict.cxx TNeuLANDData.rootmap libNPNeuLAND.dylib DEPENDS TNeuLANDData.h)
+add_library(NPNeuLAND SHARED TNeuLANDSpectra.cxx TNeuLANDData.cxx TNeuLANDPhysics.cxx TNeuLANDDataDict.cxx TNeuLANDPhysicsDict.cxx )
+target_link_libraries(NPNeuLAND ${ROOT_LIBRARIES} NPCore) 
+install(FILES TNeuLANDData.h TNeuLANDPhysics.h TNeuLANDSpectra.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
+
diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDData.cxx b/NPLib/Detectors/NeuLAND/TNeuLANDData.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..5dbaec95834bef96f8e575f7ee2bb4f06c6f91f7
--- /dev/null
+++ b/NPLib/Detectors/NeuLAND/TNeuLANDData.cxx
@@ -0,0 +1,92 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2019   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien Matta  contact address: matta@lpccaen.in2p3.fr    *
+ *                                                                           *
+ * Creation Date  : December 2019                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold NeuLAND Raw data                                          *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *   
+ *                                                                           *
+ *****************************************************************************/
+
+#include "TNeuLANDData.h"
+
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <string>
+using namespace std; 
+
+ClassImp(TNeuLANDData)
+
+
+//////////////////////////////////////////////////////////////////////
+TNeuLANDData::TNeuLANDData() {
+}
+
+
+
+//////////////////////////////////////////////////////////////////////
+TNeuLANDData::~TNeuLANDData() {
+}
+
+
+
+//////////////////////////////////////////////////////////////////////
+void TNeuLANDData::Clear() {
+    // UP // 
+    // Charge 
+    fNeuLAND_Qu_ID.clear();
+    fNeuLAND_Qu_Charge.clear();
+    
+    // Time
+    fNeuLAND_Tu_ID.clear();
+    fNeuLAND_Tu_Time.clear();
+    
+    // DOWN // 
+    // Charge 
+    fNeuLAND_Qd_ID.clear();
+    fNeuLAND_Qd_Charge.clear();
+    
+    // Time
+    fNeuLAND_Td_ID.clear();
+    fNeuLAND_Td_Time.clear();
+}
+
+
+
+//////////////////////////////////////////////////////////////////////
+void TNeuLANDData::Dump() const {
+   // This method is very useful for debuging and worth the dev.
+  cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event [TNeuLANDData::Dump()] XXXXXXXXXXXXXXXXX" << endl;
+  /*
+  // Energy
+  size_t mysize = fNeuLAND_E_DetectorNbr.size();
+  cout << "NeuLAND_E_Mult: " << mysize << endl;
+ 
+  for (size_t i = 0 ; i < mysize ; i++){
+    cout << "DetNbr: " << fNeuLAND_E_DetectorNbr[i]
+         << " Energy: " << fNeuLAND_Energy[i];
+  }
+  
+  // Time
+  mysize = fNeuLAND_T_DetectorNbr.size();
+  cout << "NeuLAND_T_Mult: " << mysize << endl;
+ 
+  for (size_t i = 0 ; i < mysize ; i++){
+    cout << "DetNbr: " << fNeuLAND_T_DetectorNbr[i]
+         << " Time: " << fNeuLAND_Time[i];
+  }
+  */
+}
diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDData.h b/NPLib/Detectors/NeuLAND/TNeuLANDData.h
new file mode 100644
index 0000000000000000000000000000000000000000..4f6f274c11244a584644af1a6e1ff40ada9981be
--- /dev/null
+++ b/NPLib/Detectors/NeuLAND/TNeuLANDData.h
@@ -0,0 +1,147 @@
+#ifndef __NeuLANDDATA__
+#define __NeuLANDDATA__
+/*****************************************************************************
+ * Copyright (C) 2009-2019   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien Matta  contact address: matta@lpccaen.in2p3.fr    *
+ *                                                                           *
+ * Creation Date  : December 2019                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold NeuLAND Raw data                                          *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *   
+ *                                                                           *
+ *****************************************************************************/
+
+// STL
+#include <vector>
+using namespace std;
+
+// ROOT
+#include "TObject.h"
+
+class TNeuLANDData : public TObject {
+  //////////////////////////////////////////////////////////////
+  // data members are hold into vectors in order 
+  // to allow multiplicity treatment
+  private: 
+    // UP // 
+    // Charge 
+    vector<UShort_t>   fNeuLAND_Qu_ID;
+    vector<Double_t>   fNeuLAND_Qu_Charge;
+    
+    // Time
+    vector<UShort_t>   fNeuLAND_Tu_ID;
+    vector<Double_t>   fNeuLAND_Tu_Time;
+    
+    // DOWN // 
+    // Charge 
+    vector<UShort_t>   fNeuLAND_Qd_ID;
+    vector<Double_t>   fNeuLAND_Qd_Charge;
+    
+    // Time
+    vector<UShort_t>   fNeuLAND_Td_ID;
+    vector<Double_t>   fNeuLAND_Td_Time;
+ 
+
+  //////////////////////////////////////////////////////////////
+  // Constructor and destructor
+  public: 
+    TNeuLANDData();
+    ~TNeuLANDData();
+    
+
+  //////////////////////////////////////////////////////////////
+  // Inherited from TObject and overriden to avoid warnings
+  public:
+    void Clear();
+    void Clear(const Option_t*) {};
+    void Dump() const;
+
+
+  //////////////////////////////////////////////////////////////
+  // Getters and Setters
+  // Prefer inline declaration to avoid unnecessary called of 
+  // frequently used methods
+  // add //! to avoid ROOT creating dictionnary for the methods
+  public:
+    //////////////////////    SETTERS    ////////////////////////
+    // UP // 
+    // Charge
+    inline void SetChargeUp(const Double_t& ID, const Double_t& Charge){
+    fNeuLAND_Qu_ID.push_back(ID);
+    fNeuLAND_Qu_Charge.push_back(Charge);
+    };//!
+
+    // Time
+    inline void SetTimeUp(const Double_t& ID, const Double_t& Time){
+    fNeuLAND_Tu_ID.push_back(ID);
+    fNeuLAND_Tu_Time.push_back(Time);
+    };//!
+
+    // DOWN // 
+    // Charge
+    inline void SetChargeDown(const Double_t& ID, const Double_t& Charge){
+    fNeuLAND_Qd_ID.push_back(ID);
+    fNeuLAND_Qd_Charge.push_back(Charge);
+    };//!
+
+    // Time
+    inline void SetTimeDown(const Double_t& ID, const Double_t& Time){
+    fNeuLAND_Td_ID.push_back(ID);
+    fNeuLAND_Td_Time.push_back(Time);
+    };//!
+
+    //////////////////////    GETTERS    ////////////////////////
+    // MULT //
+    // Charge 
+    inline unsigned int GetChargeUpMult() const
+      {return fNeuLAND_Qu_ID.size();};
+    // Time
+    inline unsigned int GetTimeUpMult() const
+      {return fNeuLAND_Tu_ID.size();};
+    // Charge
+    inline unsigned int GetChargeDownMult() const
+      {return fNeuLAND_Qd_ID.size();};
+    // Time
+    inline unsigned int GetTimeDownMult() const
+      {return fNeuLAND_Td_ID.size();};
+
+    // Value // 
+    // Charge 
+    inline UShort_t GetChargeUpID(unsigned int& i) const
+      {return fNeuLAND_Qu_ID[i];};
+    inline double GetChargeUp(unsigned int& i) const
+      {return fNeuLAND_Qu_Charge[i];};
+    // Time 
+    inline UShort_t GetTimeUpID(unsigned int& i) const
+      {return fNeuLAND_Tu_ID[i];};
+    inline double GetTimeUp(unsigned int& i) const
+      {return fNeuLAND_Tu_Time[i];};
+    // Charge 
+    inline UShort_t GetChargeDownID(unsigned int& i) const
+      {return fNeuLAND_Qd_ID[i];};
+    inline double GetChargeDown(unsigned int& i) const
+      {return fNeuLAND_Qd_Charge[i];};
+    // Time 
+    inline UShort_t GetTimeDownID(unsigned int& i) const
+      {return fNeuLAND_Td_ID[i];};
+    inline double GetTimeDown(unsigned int& i) const
+      {return fNeuLAND_Td_Time[i];};
+
+
+  //////////////////////////////////////////////////////////////
+  // Required for ROOT dictionnary
+  ClassDef(TNeuLANDData,1)  // NeuLANDData structure
+};
+
+#endif
diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.cxx b/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..baf075286cb986c0a15fc729c99cc0e6ac606919
--- /dev/null
+++ b/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.cxx
@@ -0,0 +1,415 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2019   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Audrey ANNE  contact address: anne@lpccaen.in2p3.fr      *
+ *                                                                           *
+ * Creation Date  : November 2023                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold NeuLAND Treated data                                     *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *   
+ *                                                                           *
+ *****************************************************************************/
+
+#include "TNeuLANDPhysics.h"
+
+//   STL
+#include <sstream>
+#include <iostream>
+#include <cmath>
+#include <stdlib.h>
+#include <limits>
+using namespace std;
+
+//   NPL
+#include "RootInput.h"
+#include "RootOutput.h"
+#include "NPDetectorFactory.h"
+#include "NPOptionManager.h"
+#include "NPSystemOfUnits.h"
+//   ROOT
+#include "TChain.h"
+
+ClassImp(TNeuLANDPhysics)
+
+
+  ///////////////////////////////////////////////////////////////////////////
+TNeuLANDPhysics::TNeuLANDPhysics()
+  : m_EventData(new TNeuLANDData),
+  m_EventPhysics(this),
+  m_Spectra(0),
+  m_Q_RAW_Threshold(0), // adc channels
+  m_Q_Threshold(7),     // normal bars in MeV
+  m_V_Threshold(1),     // veto bars in MeV
+  m_NumberOfBars(0)
+  {
+  m_Material_Index = 1.58;
+  m_Signal_Effective_Velocity = (3.0e8/m_Material_Index)*NPUNITS::m/NPUNITS::s;  
+  }
+
+///////////////////////////////////////////////////////////////////////////
+/// A usefull method to bundle all operation to add a detector
+void TNeuLANDPhysics::ReadXML(NPL::XmlParser xml){ 
+  std::vector<NPL::XML::block*> b = xml.GetAllBlocksWithName("NEULAND");  
+
+  for(unsigned int i = 0 ; i < b.size() ; i++){
+    m_NumberOfBars++;
+    unsigned int id = b[i]->AsInt("ID");
+
+    // position
+    PositionX[id] = b[i]->AsDouble("xpos");
+    PositionY[id] = b[i]->AsDouble("ypos"); 
+    PositionZ[id] = b[i]->AsDouble("zpos");
+
+    // bar direction
+    DirectionBar[id] = b[i]->AsString("direction");
+    
+    std::string tree_name = RootInput::getInstance()->GetChain()->GetName();
+
+    if(tree_name!="SimulatedTree"){
+      // linear cal
+      aQu[id] = b[i]->AsDouble("QUCal");
+      bQu[id] = b[i]->AsDouble("QUPed");
+      aQd[id] = b[i]->AsDouble("QDCal");
+      bQd[id] = b[i]->AsDouble("QDPed");
+      aTu[id] = b[i]->AsDouble("TUCal");
+      bTu[id] = b[i]->AsDouble("TUOff");
+      aTd[id] = b[i]->AsDouble("TDCal");
+      bTd[id] = b[i]->AsDouble("TDOff");
+
+      // T average offset
+      avgT0[id] = b[i]->AsDouble("TAveOff");
+
+      // slew correction T= tcal +slwT/sqrt(Qcal)
+      slwTu[id] = b[i]->AsDouble("TUSlw");
+      slwTd[id] = b[i]->AsDouble("TDSlw");
+
+      // DT position cal
+      DTa[id] = b[i]->AsDouble("DTCal");//!
+      DTb[id] = b[i]->AsDouble("DTOff");//!
+    }
+    else{
+      // linear cal
+      aQu[id] =1;
+      bQu[id] =0; 
+      aQd[id] =1;
+      bQd[id] =0; 
+      aTu[id] =1; 
+      bTu[id] =0; 
+      aTd[id] =1; 
+      bTd[id] =0; 
+
+      // T average offset
+      //avgT0[id]= 0.0;
+      avgT0[id]= -6.5833;
+
+      // slew correction T= tcal +slwT/sqrt(Qcal)
+      slwTu[id] = 0;
+      slwTd[id] = 0;
+
+      // DT position cal
+      // DTa[id] = 1;//!
+      DTb[id] = 0;//!
+
+      DTa[id] = 0.5*m_Signal_Effective_Velocity;//!
+      //DTa[id] = 94.87;//!
+
+
+      }
+
+  } 
+  cout << " -> " << m_NumberOfBars << " bars found" << endl;
+} 
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::BuildSimplePhysicalEvent() {
+  BuildPhysicalEvent();
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::BuildPhysicalEvent() {
+  // apply thresholds and calibration
+
+  // instantiate CalibrationManager
+  static CalibrationManager* Cal = CalibrationManager::getInstance();
+  static double rawQup,calQup,rawQdown,calQdown,rawTup,calTup,rawTdown,calTdown,calQ,calT,X,Y;
+  static unsigned int ID;
+
+  static double neutron_mass = 939.57; //  MeV/c^2
+  static double c_light = 299792458;    //m.s-1
+
+  // All vector size 
+  static unsigned int QUsize, QDsize, TUsize, TDsize ; 
+  QUsize = m_EventData->GetChargeUpMult();
+  QDsize = m_EventData->GetChargeDownMult();
+  TUsize = m_EventData->GetTimeUpMult();
+  TDsize = m_EventData->GetTimeDownMult();
+  static double threshold;
+  // loop on Qup
+  for (unsigned int qup = 0; qup < QUsize ; qup++) {
+    rawQup = m_EventData->GetChargeUp(qup);
+    rawTup=-1;
+    rawQdown=-1;
+    rawTdown=-1;
+    if (rawQup > m_Q_RAW_Threshold) {
+      ID = m_EventData->GetChargeUpID(qup);
+      if(ID<401)
+        threshold=m_Q_Threshold;
+      else
+        threshold=m_V_Threshold;
+
+      // look for associated Charge down
+      for(unsigned int qdown = 0 ; qdown < QDsize ; qdown++){
+        if(m_EventData->GetChargeDownID(qdown)==ID){
+          rawQdown=m_EventData->GetChargeDown(qdown); 
+          if(rawQdown > m_Q_RAW_Threshold)
+	    {
+	      // Look for the associate time 
+	      for(unsigned int tdown = 0 ; tdown < TDsize; tdown++)
+		{
+		  if(m_EventData->GetTimeDownID(qdown)==ID)
+		    {
+		      rawTdown=m_EventData->GetTimeDown(qdown);
+		      break;
+		    }
+		}// TDown
+	    }//if raw threshold down
+          break;
+        } //if match ID 
+
+      }// Qdwown 
+
+      if(rawTdown>0){ // Tdown is found, means Qdown as well
+        // look for Tup  
+        for(unsigned int tup = 0 ; tup < TUsize ; tup++){
+          if(m_EventData->GetTimeUpID(tup)==ID){
+            rawTup = m_EventData->GetTimeUp(tup);
+            break;
+          }
+        }
+      }
+      // Got everything, do the math
+      if(rawTup>0){
+        // cal Q Up and Down
+        calQup=aQu[ID]*(rawQup-bQu[ID]);
+        calQdown=aQd[ID]*(rawQdown-bQd[ID]);
+
+        // average value of Up and Down
+        calQ=sqrt(calQup*calQdown); 
+
+        // cal T  Up
+        calTup=aTu[ID]*rawTup+bTu[ID];
+        // slew correction
+        calTup -= slwTu[ID]/sqrt(rawQup-bQu[ID]);
+
+        // cal T Down
+        calTdown=aTd[ID]*rawTdown+bTd[ID];
+        // slew correction
+        calTdown -= slwTd[ID]/sqrt(rawQdown-bQd[ID]);
+    
+        if(calQ>threshold){
+          calT= (calTdown+calTup)*0.5+avgT0[ID]+Cal->GetPedestal("NEULAND_T_ID"+NPL::itoa(ID));
+
+	  if(DirectionBar[ID]=='H')
+	    {
+	      X = (calTdown-calTup)*DTa[ID]+DTb[ID]+Cal->GetPedestal("NEULAND_X_ID"+NPL::itoa(ID));
+	      Y = 0.0;
+	    }
+	      
+	  if(DirectionBar[ID]=='V')
+	    {
+	      X = 0.0;
+	      Y=(calTdown-calTup)*DTa[ID]+DTb[ID]+Cal->GetPedestal("NEULAND_Y_ID"+NPL::itoa(ID));     
+	    }
+	   
+          DetectorNumber.push_back(ID);
+          Charge.push_back(calQ);
+          TOF.push_back(calT);
+          PosY.push_back(Y+PositionY[ID]);
+          PosX.push_back(X+PositionX[ID]);
+          PosZ.push_back(PositionZ[ID] + m_offset[0][2]); // [0]-> only one Nebula detector    [2]-> z position
+
+          if(ID<401)
+	    {
+            IsVeto.push_back(0);
+	    }
+          else
+            IsVeto.push_back(1);
+
+	  X = 0.0;
+	  Y = 0.0;
+
+        }
+      }
+
+    }// if raw threshold up
+  } // Qup
+}
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::PreTreat() {
+
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::ReadAnalysisConfig() {
+}
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::Clear() {
+  DetectorNumber.clear();
+  Charge.clear();
+  TOF.clear();
+  PosY.clear();
+  PosX.clear();
+  PosZ.clear();
+  IsVeto.clear();
+}
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::ReadConfiguration(NPL::InputParser parser) {
+  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("NEULAND");
+  if(NPOptionManager::getInstance()->GetVerboseLevel())
+    cout << "//// " << blocks.size() << " detector(s) found " << endl; 
+
+  vector<string> token= {"XML","Offset","InvertX","InvertY"};
+
+  for(unsigned int i = 0 ; i < blocks.size() ; i++){
+    if(blocks[i]->HasTokenList(token)){
+      cout << endl << "////  NeuLAND (" << i+1 << ")" << endl;
+      unsigned int det = std::atoi(blocks[i]->GetMainValue().c_str());
+      string xmlpath = blocks[i]->GetString("XML");
+      NPL::XmlParser xml;
+      xml.LoadFile(xmlpath);
+      ReadXML(xml);
+      TVector3 offset = blocks[i]->GetTVector3("Offset","mm"); 
+      bool invertX = blocks[i]->GetInt("InvertX"); 
+      bool invertY = blocks[i]->GetInt("InvertY"); 
+      m_offset[det] = offset;
+      m_invertX[det] = invertX;
+      m_invertY[det] = invertY;
+    }
+  }
+}
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::InitSpectra() {
+  m_Spectra = new TNeuLANDSpectra(m_NumberOfBars);
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::FillSpectra() {
+  m_Spectra -> FillRawSpectra(m_EventData);
+  m_Spectra -> FillPhysicsSpectra(m_EventPhysics);
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::CheckSpectra() {
+  m_Spectra->CheckSpectra();
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::ClearSpectra() {
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+map< string , TH1*> TNeuLANDPhysics::GetSpectra() {
+  if(m_Spectra)
+    return m_Spectra->GetMapHisto();
+  else{
+    map< string , TH1*> empty;
+    return empty;
+  }
+}
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::WriteSpectra() {
+  m_Spectra->WriteSpectra();
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::AddParameterToCalibrationManager() {
+  CalibrationManager* Cal = CalibrationManager::getInstance();
+
+  vector<double> standardO={0};
+  for (int i = 0; i < m_NumberOfBars; ++i) {
+    Cal->AddParameter("NEULAND_T_ID"+ NPL::itoa(i+1),standardO);
+    Cal->AddParameter("NEULAND_X_ID"+ NPL::itoa(i+1),standardO);
+    Cal->AddParameter("NEULAND_Y_ID"+ NPL::itoa(i+1),standardO);
+  }
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::InitializeRootInputRaw() {
+  TChain* inputChain = RootInput::getInstance()->GetChain();
+  inputChain->SetBranchStatus("NeuLAND",  true );
+  inputChain->SetBranchAddress("NeuLAND", &m_EventData );
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::InitializeRootInputPhysics() {
+  TChain* inputChain = RootInput::getInstance()->GetChain();
+  inputChain->SetBranchAddress("NeuLAND", &m_EventPhysics);
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////
+void TNeuLANDPhysics::InitializeRootOutput() {
+  TTree* outputTree = RootOutput::getInstance()->GetTree("NeuLAND");
+  outputTree->Branch("NeuLAND", "TNeuLANDPhysics", &m_EventPhysics);
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+//            Construct Method to be pass to the DetectorFactory              //
+////////////////////////////////////////////////////////////////////////////////
+NPL::VDetector* TNeuLANDPhysics::Construct() {
+  return (NPL::VDetector*) new TNeuLANDPhysics();
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+//            Registering the construct method to the factory                 //
+////////////////////////////////////////////////////////////////////////////////
+extern "C"{
+  class proxy_NeuLAND{
+    public:
+      proxy_NeuLAND(){
+        NPL::DetectorFactory::getInstance()->AddToken("NEULAND","NeuLAND");
+        NPL::DetectorFactory::getInstance()->AddDetector("NEULAND",TNeuLANDPhysics::Construct);
+      }
+  };
+
+  proxy_NeuLAND p_NeuLAND;
+}
+
diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.h b/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.h
new file mode 100644
index 0000000000000000000000000000000000000000..eded36d184f9e36e57d7cb2985c7239f87d9a07e
--- /dev/null
+++ b/NPLib/Detectors/NeuLAND/TNeuLANDPhysics.h
@@ -0,0 +1,257 @@
+#ifndef TNeuLANDPHYSICS_H
+#define TNeuLANDPHYSICS_H
+/*****************************************************************************
+ * Copyright (C) 2009-2019   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Audrey ANNE  contact address: anne@lpccaen.in2p3.fr      *
+ *                                                                           *
+ * Creation Date  : November 2023                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold NeuLAND Treated data                                     *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *   
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ headers 
+#include <vector>
+#include <map>
+#include <string>
+using namespace std;
+
+// ROOT headers
+#include "TObject.h"
+#include "TH1.h"
+#include "TVector3.h"
+// NPTool headers
+#include "TNeuLANDData.h"
+#include "TNeuLANDSpectra.h"
+#include "NPCalibrationManager.h"
+#include "NPVDetector.h"
+#include "NPInputParser.h"
+#include "NPXmlParser.h"
+// forward declaration
+class TNeuLANDSpectra;
+
+
+
+class TNeuLANDPhysics : public TObject, public NPL::VDetector {
+  //////////////////////////////////////////////////////////////
+  // constructor and destructor
+  public:
+    TNeuLANDPhysics();
+    ~TNeuLANDPhysics() {};
+
+
+    //////////////////////////////////////////////////////////////
+    // Inherited from TObject and overriden to avoid warnings
+  public: 
+    void Clear();   
+    void Clear(const Option_t*) {};
+
+
+    //////////////////////////////////////////////////////////////
+    // data obtained after BuildPhysicalEvent() and stored in
+    // output ROOT file
+  public:
+    vector<int>      DetectorNumber;
+    vector<double>   Charge;
+    vector<double>   TOF;
+    vector<double>   PosY;
+    vector<double>   PosX;
+    vector<double>   PosZ;
+    vector<bool>     IsVeto;
+
+  public:
+    TVector3 GetPos(const unsigned int& i) const{
+      return TVector3(PosX[i],PosY[i],PosZ[i]);
+    }
+
+    // Return true if one veto fired
+    bool HasVeto(){
+      unsigned int size = IsVeto.size();
+      for(unsigned int i = 0 ; i < size ; i++){
+        if(IsVeto[i])
+          return true;
+      }
+      return false;
+    };
+
+    /////////// Get index of fastest neutron
+    int GetFirstHit(){
+      unsigned int size = TOF.size();
+      unsigned int index=0;
+
+      if(!size)
+        return -1;
+
+      double tof = TOF[0];
+      for(unsigned int i = 1 ; i < size ; i++){
+        if(tof<TOF[i]){
+          tof=TOF[i];
+          index=i;
+        }
+      }
+      return index;
+    };
+
+  public:
+    /// A usefull method to bundle all operation to add a detector
+    void ReadXML(NPL::XmlParser); 
+
+    //////////////////////////////////////////////////////////////
+    // methods inherited from the VDetector ABC class
+  public:
+    // read stream from ConfigFile to pick-up detector parameters
+    void ReadConfiguration(NPL::InputParser);
+
+    // add parameters to the CalibrationManger
+    void AddParameterToCalibrationManager();
+
+    // method called event by event, aiming at extracting the 
+    // physical information from detector
+    void BuildPhysicalEvent();
+
+    // same as BuildPhysicalEvent() method but with a simpler
+    // treatment
+    void BuildSimplePhysicalEvent();
+
+    // same as above but for online analysis
+    void BuildOnlinePhysicalEvent()  {BuildPhysicalEvent();};
+
+    // activate raw data object and branches from input TChain
+    // in this method mother branches (Detector) AND daughter leaves 
+    // (fDetector_parameter) have to be activated
+    void InitializeRootInputRaw();
+
+    // activate physics data object and branches from input TChain
+    // in this method mother branches (Detector) AND daughter leaves 
+    // (fDetector_parameter) have to be activated
+    void InitializeRootInputPhysics();
+
+    // create branches of output ROOT file
+    void InitializeRootOutput();
+
+    // clear the raw and physical data objects event by event
+    void ClearEventPhysics() {Clear();}      
+    void ClearEventData()    {m_EventData->Clear();}   
+
+    // methods related to the TNeuLANDSpectra class
+    // instantiate the TNeuLANDSpectra class and 
+    // declare list of histograms
+    void InitSpectra();
+
+    // fill the spectra
+    void FillSpectra();
+
+    // used for Online mainly, sanity check for histograms and 
+    // change their color if issues are found, for example
+    void CheckSpectra();
+
+    // used for Online only, clear all the spectra
+    void ClearSpectra();
+
+    // write spectra to ROOT output file
+    void WriteSpectra();
+
+
+    //////////////////////////////////////////////////////////////
+    // specific methods to NeuLAND array
+  public:
+    // remove bad channels, calibrate the data and apply thresholds
+    void PreTreat();
+
+    // read the user configuration file. If no file is found, load standard one
+    void ReadAnalysisConfig();
+
+    // give and external TNeuLANDData object to TNeuLANDPhysics. 
+    // needed for online analysis for example
+    void SetRawDataPointer(TNeuLANDData* rawDataPointer) {m_EventData = rawDataPointer;}
+
+    // objects are not written in the TTree
+  private:
+    TNeuLANDData*         m_EventData;        //!
+    TNeuLANDPhysics*      m_EventPhysics;     //!
+
+    // getters for raw and pre-treated data object
+  public:
+    TNeuLANDData* GetRawData()        const {return m_EventData;}
+
+    // parameters used in the analysis
+  private:
+    // thresholds
+    double m_Q_RAW_Threshold; //!
+    double m_Q_Threshold;     //!
+    double m_V_Threshold;     //!
+
+    //effective velocity of signal inside bar
+    double m_Material_Index; //!
+    double m_Signal_Effective_Velocity; //!
+
+  public: 
+    void SetQThreshold(double t) {m_Q_Threshold=t;};
+    void SetVThreshold(double t) {m_V_Threshold=t;};
+    // number of detectors
+  private:
+    int m_NumberOfBars;  //!
+
+  private: // offset and inversion 
+    std::map<unsigned int, TVector3> m_offset;//!
+    std::map<unsigned int, bool> m_invertX;//!
+    std::map<unsigned int, bool> m_invertY;//!
+
+  private: // xml calibration
+    // position
+    std::map<unsigned int , double > PositionX;//!
+    std::map<unsigned int , double > PositionY;//!
+    std::map<unsigned int , double > PositionZ;//!
+
+    //Horizontal or Vertical
+    std::map<unsigned int, string> DirectionBar;//!
+  
+    // linear cal
+    std::map<unsigned int , double > aQu;//!
+    std::map<unsigned int , double > bQu;//!
+    std::map<unsigned int , double > aQd;//!
+    std::map<unsigned int , double > bQd;//!
+    std::map<unsigned int , double > aTu;//!
+    std::map<unsigned int , double > bTu;//!
+    std::map<unsigned int , double > aTd;//!
+    std::map<unsigned int , double > bTd;//!
+
+    // T average offset
+    std::map<unsigned int , double > avgT0;//!
+
+    // slew correction T= tcal +slwT/sqrt(Qcal)
+    std::map<unsigned int , double > slwTu;//!
+    std::map<unsigned int , double > slwTd;//!
+
+    // DT position cal
+    std::map<unsigned int , double > DTa;//!
+    std::map<unsigned int , double > DTb;//!
+
+
+    // spectra class
+  private:
+    TNeuLANDSpectra* m_Spectra; // !
+
+    // spectra getter
+  public:
+    map<string, TH1*>   GetSpectra(); 
+  
+    // Static constructor to be passed to the Detector Factory
+  public:
+    static NPL::VDetector* Construct();
+
+    ClassDef(TNeuLANDPhysics,1)  // NeuLANDPhysics structure
+};
+#endif
diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.cxx b/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..2e3591a140990eeed2aad3fb01459c09b09e8b93
--- /dev/null
+++ b/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.cxx
@@ -0,0 +1,174 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2019   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien Matta  contact address: matta@lpccaen.in2p3.fr    *
+ *                                                                           *
+ * Creation Date  : December 2019                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold NeuLAND Spectra                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *   
+ *                                                                           *
+ *****************************************************************************/
+
+// class header 
+#include "TNeuLANDSpectra.h"
+
+// STL
+#include <iostream>  
+#include <string>
+using namespace std;
+
+// NPTool header
+#include "NPOptionManager.h"
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TNeuLANDSpectra::TNeuLANDSpectra() 
+   : fNumberOfDetectors(0) {
+  SetName("NeuLAND");
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TNeuLANDSpectra::TNeuLANDSpectra(unsigned int NumberOfDetectors) {
+  if(NPOptionManager::getInstance()->GetVerboseLevel()>0)
+    cout << "************************************************" << endl
+      << "TNeuLANDSpectra : Initalizing control spectra for " 
+      << NumberOfDetectors << " Detectors" << endl
+      << "************************************************" << endl ;
+  SetName("NeuLAND");
+  fNumberOfDetectors = NumberOfDetectors;
+
+  InitRawSpectra();
+  InitPreTreatedSpectra();
+  InitPhysicsSpectra();
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TNeuLANDSpectra::~TNeuLANDSpectra() {
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TNeuLANDSpectra::InitRawSpectra() {
+  static string name;
+  for (unsigned int i = 0; i < fNumberOfDetectors; i++) { // loop on number of detectors
+    // Energy 
+    name = "NeuLAND"+NPL::itoa(i+1)+"_ENERGY_RAW";
+    AddHisto1D(name, name, 4096, 0, 16384, "NeuLAND/RAW");
+    // Time 
+    name = "NeuLAND"+NPL::itoa(i+1)+"_TIME_RAW";
+    AddHisto1D(name, name, 4096, 0, 16384, "NeuLAND/RAW");
+  } // end loop on number of detectors
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TNeuLANDSpectra::InitPreTreatedSpectra() {
+  static string name;
+  for (unsigned int i = 0; i < fNumberOfDetectors; i++) { // loop on number of detectors
+    // Energy 
+    name = "NeuLAND"+NPL::itoa(i+1)+"_ENERGY_CAL";
+    AddHisto1D(name, name, 500, 0, 25, "NeuLAND/CAL");
+    // Time
+    name = "NeuLAND"+NPL::itoa(i+1)+"_TIME_CAL";
+    AddHisto1D(name, name, 500, 0, 25, "NeuLAND/CAL");
+
+  
+  }  // end loop on number of detectors
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TNeuLANDSpectra::InitPhysicsSpectra() {
+  static string name;
+  // Kinematic Plot 
+  name = "NeuLAND_ENERGY_TIME";
+  AddHisto2D(name, name, 500, 0, 500, 500, 0, 50, "NeuLAND/PHY");
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TNeuLANDSpectra::FillRawSpectra(TNeuLANDData* RawData) {
+/*  static string name;
+  static string family;
+
+  // Energy 
+  unsigned int sizeE = RawData->GetMultEnergy();
+  for (unsigned int i = 0; i < sizeE; i++) {
+    name = "NeuLAND"+NPL::itoa(RawData->GetE_DetectorNbr(i))+"_ENERGY_RAW";
+    family = "NeuLAND/RAW";
+
+    FillSpectra(family,name,RawData->Get_Energy(i));
+  }
+
+  // Time
+  unsigned int sizeT = RawData->GetMultTime();
+  for (unsigned int i = 0; i < sizeT; i++) {
+    name = "NeuLAND"+NPL::itoa(RawData->GetT_DetectorNbr(i))+"_TIME_RAW";
+    family = "NeuLAND/RAW";
+
+    FillSpectra(family,name,RawData->Get_Time(i));
+  }*/
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TNeuLANDSpectra::FillPreTreatedSpectra(TNeuLANDData* PreTreatedData) {
+/*  static string name;
+  static string family;
+  
+  // Energy 
+  unsigned int sizeE = PreTreatedData->GetMultEnergy();
+  for (unsigned int i = 0; i < sizeE; i++) {
+    name = "NeuLAND"+NPL::itoa(PreTreatedData->GetE_DetectorNbr(i))+"_ENERGY_CAL";
+    family = "NeuLAND/CAL";
+
+    FillSpectra(family,name,PreTreatedData->Get_Energy(i));
+  }
+
+  // Time
+  unsigned int sizeT = PreTreatedData->GetMultTime();
+  for (unsigned int i = 0; i < sizeT; i++) {
+    name = "NeuLAND"+NPL::itoa(PreTreatedData->GetT_DetectorNbr(i))+"_TIME_CAL";
+    family = "NeuLAND/CAL";
+
+    FillSpectra(family,name,PreTreatedData->Get_Time(i));
+  }*/
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TNeuLANDSpectra::FillPhysicsSpectra(TNeuLANDPhysics* Physics) {
+/*  static string name;
+  static string family;
+  family= "NeuLAND/PHY";
+
+  // Energy vs time
+  unsigned int sizeE = Physics->Energy.size();
+  for(unsigned int i = 0 ; i < sizeE ; i++){
+    name = "NeuLAND_ENERGY_TIME";
+    FillSpectra(family,name,Physics->Energy[i],Physics->Time[i]);
+  }*/
+}
+
diff --git a/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.h b/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.h
new file mode 100644
index 0000000000000000000000000000000000000000..343a01404aca10249cb13a637b38497cb8dd8b5f
--- /dev/null
+++ b/NPLib/Detectors/NeuLAND/TNeuLANDSpectra.h
@@ -0,0 +1,62 @@
+#ifndef TNeuLANDSPECTRA_H
+#define TNeuLANDSPECTRA_H
+/*****************************************************************************
+ * Copyright (C) 2009-2019   this file is part of the NPTool Project       *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien Matta  contact address: matta@lpccaen.in2p3.fr                        *
+ *                                                                           *
+ * Creation Date  : December 2019                                           *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold NeuLAND Spectra                                     *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *   
+ *                                                                           *
+ *****************************************************************************/
+
+// NPLib headers
+#include "NPVSpectra.h"
+#include "TNeuLANDData.h"
+#include "TNeuLANDPhysics.h"
+
+// Forward Declaration
+class TNeuLANDPhysics;
+
+
+class TNeuLANDSpectra : public VSpectra {
+  //////////////////////////////////////////////////////////////
+  // constructor and destructor
+  public:
+    TNeuLANDSpectra();
+    TNeuLANDSpectra(unsigned int NumberOfDetectors);
+    ~TNeuLANDSpectra();
+
+  //////////////////////////////////////////////////////////////
+  // Initialization methods
+  private:
+    void InitRawSpectra();
+    void InitPreTreatedSpectra();
+    void InitPhysicsSpectra();
+
+  //////////////////////////////////////////////////////////////
+  // Filling methods
+  public:
+    void FillRawSpectra(TNeuLANDData*);
+    void FillPreTreatedSpectra(TNeuLANDData*);
+    void FillPhysicsSpectra(TNeuLANDPhysics*);
+
+  //////////////////////////////////////////////////////////////
+  // Detector parameters 
+  private:
+    unsigned int fNumberOfDetectors;
+};
+
+#endif
diff --git a/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx b/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx
index 7c7e102f40c228e25c4702da54a8270f17c88076..25f7305456ada541067b790755949448856c70dd 100644
--- a/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx
+++ b/NPLib/Detectors/Samurai/SamuraiFieldMap.cxx
@@ -51,8 +51,7 @@ double SamuraiFieldMap::Delta(const double* parameter){
   //pos =Propagate(parameter[0],m_FitPosFDC0,m_FitDirFDC0,false); 
   pos =Propagate(parameter[0],m_FitPosFDC0,m_FitDirFDC0,true); 
   // Move the fdc2 pos from lab frame to fdc2 frame 
-  pos.back().RotateY(-m_fdc2angle+m_angle); 
-
+  pos.back().RotateY(-m_fdc2angle+m_angle);
   //double d = (pos.back().X()-m_FitPosFDC2.X())*(pos.back().X()-m_FitPosFDC2.X());
   // return d;
   diff = pos.back()-m_FitPosFDC2;
@@ -141,6 +140,7 @@ std::vector< TVector3 > SamuraiFieldMap::Propagate(double Brho, TVector3 pos, TV
   dir=dir.Unit();
   static double r;
   r = sqrt(pos.X()*pos.X()+pos.Z()*pos.Z());
+  
   // number of step taken
   static unsigned int count;
   count = 0;
@@ -159,7 +159,6 @@ std::vector< TVector3 > SamuraiFieldMap::Propagate(double Brho, TVector3 pos, TV
     }
   }
   else {// failure
-    //cout << "Fail" << endl;
     return track;
   }
 
@@ -180,7 +179,8 @@ std::vector< TVector3 > SamuraiFieldMap::Propagate(double Brho, TVector3 pos, TV
     func(N, pos+xk1*(m_StepTime/2.), imp+pk1*(m_StepTime/2.) , xk2, pk2);
     func(N, pos+xk2*(m_StepTime/2.), imp+pk2*(m_StepTime/2.) , xk3, pk3);
     func(N, pos+xk3*m_StepTime     , imp+pk3*m_StepTime      , xk4, pk4);
-    pos +=(xk1+2*xk2+2*xk3+xk4)*(m_StepTime/6.); 
+    pos +=(xk1+2*xk2+2*xk3+xk4)*(m_StepTime/6.);
+
     imp +=(pk1+2*pk2+2*pk3+pk4)*(m_StepTime/6.);
     if(store){
       pos.RotateY(-m_angle);
diff --git a/NPLib/Detectors/Samurai/TSamuraiBDCData.cxx b/NPLib/Detectors/Samurai/TSamuraiBDCData.cxx
index 862fdde7635fbf08bdda51f0670f0ca0d8cb1ac4..7e338083cf817192e58acc4899923114a409b4a2 100644
--- a/NPLib/Detectors/Samurai/TSamuraiBDCData.cxx
+++ b/NPLib/Detectors/Samurai/TSamuraiBDCData.cxx
@@ -20,6 +20,7 @@ void TSamuraiBDCData::Clear(){
   fBDC_WireNbr.clear();
   fBDC_Time.clear();
   fBDC_Edge.clear();
+
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/NPLib/Detectors/Samurai/TSamuraiBDCData.h b/NPLib/Detectors/Samurai/TSamuraiBDCData.h
index 50e87d81d3b3fdaeea34c9263216b09a58577a61..36eef2ea3ed3b241397636dd6fe927235488a556 100644
--- a/NPLib/Detectors/Samurai/TSamuraiBDCData.h
+++ b/NPLib/Detectors/Samurai/TSamuraiBDCData.h
@@ -31,7 +31,7 @@ class TSamuraiBDCData: public TObject{
     int const GetWireNbr(const unsigned int& i){return fBDC_WireNbr[i];};
     double const GetTime(const unsigned int& i){return fBDC_Time[i];};
     int const GetEdge(const unsigned int& i){return fBDC_Edge[i];};
-
+  
     ClassDef(TSamuraiBDCData,1); 
 };
 
diff --git a/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.cxx b/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.cxx
index 93871fe64c681818377404fa69dc3207e13c8781..6420a38843e1529849dcf1700b015ce9424cd4ac 100644
--- a/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.cxx
+++ b/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.cxx
@@ -63,9 +63,32 @@ TVector3 TSamuraiBDCPhysics::GetPos(unsigned int det){
     }
   }
   return res;
+}
 
+///////////////////////////////////////////////////////////////////////////
+int TSamuraiBDCPhysics::GetPileUpDet(unsigned int det){
+  int res = -10000;
+  unsigned int size = PosX.size();
+  for(unsigned int i = 0 ; i < size ; i++){
+    if(Detector[i]==det){
+      res = PileUp[i];
+    }
+  }
+  return res;
+}
 
+///////////////////////////////////////////////////////////////////////////
+TVector3 TSamuraiBDCPhysics::GetDir(unsigned int det){
+  TVector3 res(-10000,-10000,-10000); 
+  unsigned int size = PosX.size();
+  for(unsigned int i = 0 ; i < size ; i++){
+    if(Detector[i]==det){
+      res = Dir[i];
+    }
+  }
+  return res;
 }
+
 ///////////////////////////////////////////////////////////////////////////
 void TSamuraiBDCPhysics::BuildSimplePhysicalEvent(){
   BuildPhysicalEvent();
@@ -73,6 +96,11 @@ void TSamuraiBDCPhysics::BuildSimplePhysicalEvent(){
 
 ///////////////////////////////////////////////////////////////////////////
 void TSamuraiBDCPhysics::BuildPhysicalEvent(){
+  m_simulation = 0;
+  std::string tree_name = RootInput::getInstance()->GetChain()->GetName();
+  if(tree_name=="SimulatedTree"){m_simulation =1;}
+  else m_simulation = 0;
+  
   PreTreat();
 
   static unsigned int det,layer,wire,size;
@@ -103,7 +131,7 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){
     devY.push_back(0);
     Dir.push_back(TVector3());
     PileUp.push_back(0);
-
+    Mult[det]=0;
 
     X.clear();Z.clear();R.clear();
     // Build the necessary X,Z,R vector
@@ -114,15 +142,18 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){
         X[Wire_Angle[idx]].push_back(Wire_X[idx]); 
         Z[Wire_Angle[idx]].push_back(Wire_Z[idx]); 
         R[Wire_Angle[idx]].push_back(dl);
-      }
-    }
+	Wire_PosX[det].push_back(Wire_X[idx]);
+	Wire_PosZ[det].push_back(Wire_Z[idx]);
+	Wire_PosAngle[det].push_back(Wire_Angle[idx]);
+	Wire_PosR[det].push_back(dl);
+	 }
+    } // end of for loop to build detectors
     // Reconstruct the vector for each of the plane of each of the detector
     VX0.clear();VX100.clear(),D.clear();
 
-
     uid=0;
     for(auto it = X.begin();it!=X.end();++it){
-#if __cplusplus > 199711L && NPMULTITHREADING 
+#if __cplusplus > 199711L && NPMULTITHREADING
       m_reconstruction.AddPlan(uid++,X[it->first],Z[it->first],R[it->first]); 
 #else
       D[it->first]=m_reconstruction.BuildTrack2D(X[it->first],Z[it->first],R[it->first],X0,X100,a,b); 
@@ -138,7 +169,8 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){
     // Loop over the results
     for(auto it = X.begin();it!=X.end();++it){
 #if __cplusplus > 199711L && NPMULTITHREADING
-      D[it->first]=m_reconstruction.GetResults(uid++,X0,X100,a,b); 
+      D[it->first]=m_reconstruction.GetResults(uid++,X0,X100,a,b);
+      Track_D[det].push_back(D[it->first]);
 #endif
       // for Debug, write a file of 
       //  { std::ofstream f("distance.txt", std::ios::app);
@@ -146,10 +178,15 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){
       //  f.close();
       //  }
 
-      // very large "a" means track perpendicular to the chamber, what happen when there is pile up
-      if(abs(a)>5000)
-        PileUp[count]++;
-//cout << a << " " << b << endl;
+     
+      if(abs(a)>5000){
+        PileUp[count]++;	
+      }
+
+      Track_a[det].push_back(a);
+      Track_b[det].push_back(b);
+      Mult[det]+=X[it->first].size();
+      
       // Position at z=0
       TVector3 P(X0,0,0);
       P.RotateZ(it->first);
@@ -190,8 +227,19 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){
           }
         }
       }
+   
       // Build the Reference position by averaging all possible pair 
       size = C.size();
+
+      // for(unsigned int i = 0 ; i < size ; i++)// to get rid of inf value
+      // 	{
+      // 	  if(!std::isnormal(C[i].X()) || !std::isnormal(C[i].Y()))
+      // 	    {
+      // 	      size = 0;
+      // 	      continue;
+      // 	    }
+      // 	}
+	    
       if(size){
         norm=0;PosX100=0;PosY100=0;
         for(unsigned int i = 0 ; i < size ; i++){
@@ -224,17 +272,20 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){
         // the Z axis
         PhiY[count]=(PosY100-PosY[count])/100.;
         Dir[count]=TVector3(PosX100-PosX[count],PosY100-PosY[count],100).Unit();
-        if(m_invertX[det])
-          PosX[count]*=-1;
-        if(m_invertY[det])
-          PosY[count]*=-1;
-        
+	if(!m_simulation)
+	  {
+	    if(m_invertX[det])
+	      PosX[count]*=-1;
+	    if(m_invertY[det])
+	      PosY[count]*=-1;
+	  }
+
         PosX[count]+=m_offset[det].X();
         PosY[count]+=m_offset[det].Y();
         PosZ[count]=m_offset[det].Z();
-      }
-    }
 
+      }
+    } // end loop over X map values
     if(PosX[count]==0&&PosY[count]==0){
       PosX.erase(PosX.begin()+count);
       PosY.erase(PosY.begin()+count);
@@ -247,11 +298,14 @@ void TSamuraiBDCPhysics::BuildPhysicalEvent(){
     count++;
 
   }// detector loop
+
   return;
 }
 ///////////////////////////////////////////////////////////////////////////
 void TSamuraiBDCPhysics::PreTreat(){
+  
   ClearPreTreatedData();
+  
   static CalibrationManager* Cal = CalibrationManager::getInstance();
   static string channel;
 
@@ -283,15 +337,34 @@ void TSamuraiBDCPhysics::PreTreat(){
       }
       // a valid wire must have an edge
       if(etime && time && etime-time>ToTThreshold_L && etime-time<ToTThreshold_H){
-        channel="SamuraiBDC"+NPL::itoa(det)+"/L" + NPL::itoa(layer);
+        Layer.push_back(layer);       
+        Wire.push_back(wire);
+        Time.push_back(time);
+        ToT.push_back(etime-time);
+
+	channel="SamuraiBDC"+NPL::itoa(det)+"/L" + NPL::itoa(layer);
         SamuraiDCIndex idx(det,layer,wire);
-        if(!m_invertD[det])
-          m_DCHit[det].push_back(DCHit(det,layer,wire,time,etime-time,Cal->ApplySigmoid(channel,etime)));
-        else
-          m_DCHit[det].push_back(DCHit(det,layer,wire,time,etime-time,2.5-Cal->ApplySigmoid(channel,etime)));
-      }
+
+	if(m_simulation)
+	  {
+	    m_DCHit[det].push_back(DCHit(det,layer,wire,time,etime-time,m_EventData->GetTime(i)));
+	    DriftLength.push_back(m_EventData->GetTime(i));
+	  }
+	else
+	  {
+	    if(!m_invertD[det]){
+	      m_DCHit[det].push_back(DCHit(det,layer,wire,time,etime-time,Cal->ApplySigmoid(channel,etime)));
+	      DriftLength.push_back(Cal->ApplySigmoid(channel,etime));
+	    }
+	    else{
+	      m_DCHit[det].push_back(DCHit(det,layer,wire,time,etime-time,2.5-Cal->ApplySigmoid(channel,etime)));
+	      DriftLength.push_back(2.5-Cal->ApplySigmoid(channel,etime));
+	    }
+	  }
+	
+      }//if etime && time etc
     }
-  }
+  }// loop on multiplicity
   return;
 }
 ///////////////////////////////////////////////////////////////////////////
@@ -308,6 +381,21 @@ void TSamuraiBDCPhysics::Clear(){
   Dir.clear();
   PileUp.clear();
   Detector.clear();
+
+  DriftLength.clear();
+  Layer.clear();
+  Wire.clear();
+  Time.clear();
+  ToT.clear();
+
+  Track_a.clear();
+  Track_b.clear();
+  Track_D.clear();
+  Wire_PosX.clear();
+  Wire_PosZ.clear();
+  Wire_PosAngle.clear();
+  Wire_PosR.clear();
+  Mult.clear();
 }
 ///////////////////////////////////////////////////////////////////////////
 
diff --git a/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.h b/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.h
index 9fae5422e4c3c4b3692f92a3dd499524c6764095..1dda5c1437ae21d0b4e2dd4347c4d16c2d002e3e 100644
--- a/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.h
+++ b/NPLib/Detectors/Samurai/TSamuraiBDCPhysics.h
@@ -81,10 +81,26 @@ class TSamuraiBDCPhysics : public TObject, public NPL::VDetector{
     void Clear(const Option_t*) {};
 
   public:
+    //   Provide Physical Multiplicity
+    std::vector<double> DriftLength;
+    std::vector<int> Layer;
+    std::vector<int> Wire;
+    std::vector<double> Time;
+    std::vector<double> ToT;
+  
     //  map of [bdc number]=vector of hit
     std::map<unsigned int, std::vector<DCHit>> m_DCHit;//!
 
-
+    // Varibles from track reconstruction
+    std::map<unsigned int, int > Mult;
+    std::map<unsigned int, std::vector<double>> Track_a;
+    std::map<unsigned int, std::vector<double>> Track_b;
+    std::map<unsigned int, std::vector<double>> Track_D;
+    std::map<unsigned int, std::vector<double>> Wire_PosX;
+    std::map<unsigned int, std::vector<double>> Wire_PosZ;
+    std::map<unsigned int, std::vector<double>> Wire_PosR;
+    std::map<unsigned int, std::vector<double>> Wire_PosAngle;
+  
     // Computed variable
     std::vector<double> PosX;
     std::vector<double> PosY;
@@ -103,6 +119,7 @@ class TSamuraiBDCPhysics : public TObject, public NPL::VDetector{
     std::map<unsigned int, bool> m_invertY;//!
     std::map<unsigned int, bool> m_invertD;//!
 
+    bool m_simulation;//!
 
   public:
     // Projected position at given Z plan
@@ -190,13 +207,19 @@ class TSamuraiBDCPhysics : public TObject, public NPL::VDetector{
     TSamuraiBDCData* GetPreTreatedData() const {return m_PreTreatedData;}
 
     TVector3 GetPos(unsigned int det);
+    TVector3 GetOffset(unsigned int det) {return m_offset[det];} ;
+    TVector3 GetDir(unsigned int det);
     double GetPosX(unsigned int i)  {return PosX[i];}
     double GetPosY(unsigned int i)  {return PosY[i];}
+    double GetPosZ(unsigned int i) {return PosZ[i];}
     double GetThetaX(unsigned int i){return ThetaX[i];}
     double GetPhiY(unsigned int i)  {return PhiY[i];}
     double GetDevX(unsigned int i)  {return devX[i];}
     double GetDevY(unsigned int i)  {return devY[i];}
     int    GetPileUp(unsigned int i){return PileUp[i];}
+    int    GetPileUpDet(unsigned int det);
+    int    GetMult(){return PosX.size();};
+    int GetMultDet(unsigned int det) {return Mult[det];}
 
   private:   //   Root Input and Output tree classes
     TSamuraiBDCData*         m_EventData;//!
diff --git a/NPLib/Detectors/Samurai/TSamuraiFDC0Data.cxx b/NPLib/Detectors/Samurai/TSamuraiFDC0Data.cxx
index 5b88ee852e6517eb60b31657dddbb45cf38a5d88..6c62a1c43ed6b7a89df0fde016ad055e725e3257 100644
--- a/NPLib/Detectors/Samurai/TSamuraiFDC0Data.cxx
+++ b/NPLib/Detectors/Samurai/TSamuraiFDC0Data.cxx
@@ -1,7 +1,8 @@
 #include "TSamuraiFDC0Data.h"
+#include "RootInput.h"
 #include <iostream>
 
-TSamuraiFDC0Data::TSamuraiFDC0Data(){};
+TSamuraiFDC0Data::TSamuraiFDC0Data(){}
 TSamuraiFDC0Data::~TSamuraiFDC0Data(){};
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.cxx b/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.cxx
index aab3338139373b2a085e53eab58b888b238e8f3e..0fd7d09dd9755bd1c836fdcdcad6706da9f50a6a 100644
--- a/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.cxx
+++ b/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.cxx
@@ -9,7 +9,7 @@
  * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
  *                                                                           *
  * Creation Date  : October 2020                                             *
- * Last update    :                                                          *
+ * Last update    :                                                          * // 
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  *  This class hold SamuraiFDC0 treated data                                 *
@@ -49,10 +49,11 @@ ClassImp(TSamuraiFDC0Physics)
 //    ToTThreshold_H = 180;
     ToTThreshold_L = 0;
     ToTThreshold_H = 10000;
- 
     DriftLowThreshold=0.1 ;
     DriftUpThreshold=2.4;
     PowerThreshold=15;
+    Layer_Plan1[0]=0;Layer_Plan1[1]=1;Layer_Plan1[2]=4;Layer_Plan1[3]=5;
+    Layer_Plan2[0]=2;Layer_Plan1[1]=3;Layer_Plan1[2]=6;Layer_Plan1[3]=7;
   }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -62,16 +63,31 @@ void TSamuraiFDC0Physics::BuildSimplePhysicalEvent(){
 
 ///////////////////////////////////////////////////////////////////////////
 void TSamuraiFDC0Physics::BuildPhysicalEvent(){
+
+  m_simulation = 0;
+  std::string tree_name = RootInput::getInstance()->GetChain()->GetName();
+  if(tree_name=="SimulatedTree"){m_simulation =1;}
+  else m_simulation = 0;
+
   PreTreat();
+ 
 //  RemoveNoise();
 
   // Map[plane angle, vector of spatial information]
   static map<double, vector<double> > X ; 
   static map<double, vector<double> > Z ; 
-  static map<double, vector<double> > R ; 
+  static map<double, vector<double> > R ;
+  static map<int, vector<int> > WireInLayers;
+  
+  static map<int, int > WireInP1;
+  static map<int, int > WireInP2;
+
+  WireInLayers.clear(); WireInP1.clear(); WireInP2.clear();
+  
   static int det,layer,wire;
   X.clear();Z.clear();R.clear();
   unsigned int size = Detector.size();
+  
   for(unsigned int i = 0 ; i < size ; i++){
     if(DriftLength[i] > DriftLowThreshold && DriftLength[i] < DriftUpThreshold){
       det = Detector[i];
@@ -80,9 +96,35 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){
       SamuraiDCIndex idx(det,layer,wire);
       X[Wire_Angle[idx]].push_back(Wire_X[idx]); 
       Z[Wire_Angle[idx]].push_back(Wire_Z[idx]); 
-      R[Wire_Angle[idx]].push_back(DriftLength[i]); 
+      R[Wire_Angle[idx]].push_back(DriftLength[i]);
+      WireInLayers[layer].push_back(1);
+      
+      Wire_PosX.push_back(Wire_X[idx]);
+      Wire_PosZ.push_back(Wire_Z[idx]);
+      Wire_PosAngle.push_back(Wire_Angle[idx]);
+      Wire_PosR.push_back(DriftLength[i]);
+      }
+  }
+
+  int MultP1 =0;
+  int MultP2 =0; 
+  int n = sizeof( Layer_Plan1) / sizeof(Layer_Plan1[0]);
+
+  for(auto it = WireInLayers.begin();it!=WireInLayers.end();++it){
+    bool exists = std::find(Layer_Plan1,Layer_Plan1 + n, it->first) != Layer_Plan1 + n;
+
+    if(exists) {
+      WireInP1[it->first]= (it->second).size();
+      if((it->second).size()>1) MultP1++;
+    }
+    else {
+      WireInP2[it->first]= (it->second).size();
+      if((it->second).size()>1) MultP2++;
     }
   }
+
+  if( MultP1>=2) MultInPlan++;
+  if( MultP2>=2) MultInPlan++;
   
   // Reconstruct the vector for each of the plane of each of the detector
   static double X0,X100,a,b; // store the BuildTrack2D results
@@ -108,6 +150,7 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){
   for(auto it = X.begin();it!=X.end();++it){
 #if __cplusplus > 199711L && NPMULTITHREADING 
   D[it->first]=m_reconstruction.GetResults(uid++,X0,X100,a,b); 
+  Track_D.push_back(D[it->first]);
 #endif
 /*
    // for Debug, write a file of 
@@ -116,10 +159,14 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){
    f.close();
    }
   */ 
-    // very large a means track perpendicular to the chamber, what happen when there is pile up
-    if(abs(a)>5000)
+ 
+  if(abs(a)>5000){
       PileUp++;
+  }
 
+  Track_a.push_back(a);
+  Track_b.push_back(b);
+  
     Mult+=X[it->first].size();
     // Position at z=0
     TVector3 P(X0,0,0);
@@ -165,19 +212,30 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){
       }
     }
   }
-  
+ 
   // Build the Reference position by averaging all possible pair 
   size = C.size();
+
+  // for(unsigned int i = 0 ; i < size ; i++)// to get rid of inf value
+  //   {
+  //     if(!std::isnormal(C[i].X()) || !std::isnormal(C[i].Y()))
+  // 	{
+  // 	  size = 0;
+  // 	  continue;
+  // 	}
+  //   }
+  
   static double PosX100,PosY100,norm;
   if(size){
     PosX=0;
     PosY=0;
+    PosZ=0;
     PosX100=0;
     PosY100=0;
     norm=0;
     for(unsigned int i = 0 ; i < size ; i++){
       PosX+= C[i].X()*W[i]; 
-      PosY+= C[i].Y()*W[i]; 
+      PosY+= C[i].Y()*W[i];
       PosX100+= C100[i].X()*W[i]; 
       PosY100+= C100[i].Y()*W[i]; 
       norm+=W[i];
@@ -185,9 +243,10 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){
 
     MultMean=size;
     // Mean position at Z=0
+    
     PosX=PosX/norm; 
     PosY=PosY/norm; 
-
+    
     // Mean position at Z=100
     PosX100=PosX100/norm; 
     PosY100=PosY100/norm; 
@@ -200,16 +259,20 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){
     }
     devX=sqrt(devX/((size-1)*norm));
     devY=sqrt(devY/((size-1)*norm));
-   
-    if(m_invertX){
-      PosX*=-1;
-      PosX100*=-1;
-    }
-
-    if(m_invertY){
-      PosY*=-1;
-      PosY100*=-1;
-    }
+    
+    if(!m_simulation)
+      {
+	if(m_invertX){
+	  PosX*=-1;
+	  PosX100*=-1;
+	}
+	
+	if(m_invertY){
+	  PosY*=-1;
+	  PosY100*=-1;
+	}
+      }
+    
     // Compute ThetaX, angle between the Direction vector projection in XZ with
     // the Z axis
     ThetaX=atan((PosX100-PosX)/100.);
@@ -219,15 +282,22 @@ void TSamuraiFDC0Physics::BuildPhysicalEvent(){
     PhiY=atan((PosY100-PosY)/100.);
     //PhiY=(PosY100-PosY)/100.;
     Dir=TVector3(PosX100-PosX,PosY100-PosY,100).Unit();
+   
     PosX+=m_offset.X();
     PosY+=m_offset.Y();
+    PosZ+=m_offset.Z();
 
+    OffsetX = m_offset.X();
+    OffsetY = m_offset.Y();
+    OffsetZ = m_offset.Z();
+    
   }
 
   return;
 }
 ///////////////////////////////////////////////////////////////////////////
 void TSamuraiFDC0Physics::PreTreat(){
+  
   static CalibrationManager* Cal = CalibrationManager::getInstance();
   static string channel;
   // one map per detector
@@ -269,14 +339,21 @@ void TSamuraiFDC0Physics::PreTreat(){
         Time.push_back(time);
         ToT.push_back(etime-time);
         channel="SamuraiFDC0/L" + NPL::itoa(layer);
-        if(!m_invertD)
-          DriftLength.push_back(Cal->ApplySigmoid(channel,etime));
-        else
-          DriftLength.push_back(2.5-Cal->ApplySigmoid(channel,etime));
-      }
-    }
 
-  }
+	if(m_simulation)
+	  {
+	    DriftLength.push_back(m_EventData->GetTime(i));
+	  }
+	else
+	  {
+	    if(!m_invertD)
+	      DriftLength.push_back(Cal->ApplySigmoid(channel,etime));
+	    else
+	      DriftLength.push_back(2.5-Cal->ApplySigmoid(channel,etime));
+	  }
+      }//if etime && time etc
+    }
+  }//loop on multiplicity
   return;
 }
 ///////////////////////////////////////////////////////////////////////////
@@ -319,12 +396,29 @@ void TSamuraiFDC0Physics::RemoveNoise(){
   }
   return;
 }
+////////////////////////////////////////////////////////////////////////////////
+TVector3 TSamuraiFDC0Physics::ProjectedPosition(double Z){
+  TVector3 pos(-10000,-10000,-10000);
+  if(PosX!=-10000){
+  pos = TVector3(PosX,PosY,0)+(Z/Dir.Z())*Dir;
+  }
+  return pos;
+}
+////////////////////////////////////////////////////////////////////////////////
+double TSamuraiFDC0Physics::ProjectedPositionX(double Z){
+  return ProjectedPosition(Z).X();
+}
+////////////////////////////////////////////////////////////////////////////////
+double TSamuraiFDC0Physics::ProjectedPositionY(double Z){
+  return ProjectedPosition(Z).Y();
+}
+
 ///////////////////////////////////////////////////////////////////////////
 void TSamuraiFDC0Physics::Clear(){
   MultMean=0;
   PileUp=0;
   Mult=0;
-  PosX=PosY=-10000;
+  PosX=PosY=PosZ=-10000;
   ThetaX=PhiY=-10000;
   devX=devY=-10000;
   DriftLength.clear();
@@ -336,6 +430,19 @@ void TSamuraiFDC0Physics::Clear(){
   ParticleDirection.clear();
   MiddlePosition.clear();
   Matched.clear();
+
+  OffsetX = -10000;
+  OffsetY = -10000;
+  OffsetZ = -10000;
+  Track_a.clear();
+  Track_b.clear();
+  Track_D.clear();
+  Wire_PosX.clear();
+  Wire_PosZ.clear();
+  Wire_PosR.clear();
+  Wire_PosAngle.clear();
+
+  MultInPlan = 0;
 }
 ///////////////////////////////////////////////////////////////////////////
 
diff --git a/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.h b/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.h
index a013d8bbb92555f1a25b7e7175d7d25e1bef51d1..c0c1c1fb3b5f216250695cf849aad447983d62fb 100644
--- a/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.h
+++ b/NPLib/Detectors/Samurai/TSamuraiFDC0Physics.h
@@ -66,12 +66,25 @@ class TSamuraiFDC0Physics : public TObject, public NPL::VDetector{
     std::vector<double> Time;
     std::vector<double> ToT;
     std::vector<bool>   Matched;
+
+    // Variables from track reconstruction
+    std::vector<double> Track_a;
+    std::vector<double> Track_b;
+    std::vector <double> Track_D;
+    std::vector<double> Wire_PosX;
+    std::vector<double> Wire_PosZ;
+    std::vector<double> Wire_PosR;
+    std::vector<double> Wire_PosAngle;
+
+    int MultInPlan;
+  
     // Computed variable
     std::vector<TVector3> ParticleDirection;
     std::vector<TVector3> MiddlePosition;
 
     double PosX;
     double PosY;
+    double PosZ;
     double ThetaX;
     double PhiY;
     double devX,devY;
@@ -80,13 +93,17 @@ class TSamuraiFDC0Physics : public TObject, public NPL::VDetector{
     int MultMean;
     int PileUp;
 
+   double OffsetX;
+   double OffsetY;
+   double OffsetZ;
+
   private: // offset and inversion 
     TVector3 m_offset;//!
     bool m_invertX;//!
     bool m_invertY;//!
     bool m_invertD;//!
-
-
+    bool m_simulation;//!
+  
   private: // Charateristic of the DC 
     void AddDC(std::string name, NPL::XmlParser&);//! take the XML file and fill in Wire_X and Layer_Angle
     std::map<SamuraiDCIndex,double> Wire_X;//! X position of the wires
@@ -99,7 +116,11 @@ class TSamuraiFDC0Physics : public TObject, public NPL::VDetector{
     // since the calibration is a sigmoid there quite a few event at the edge 
     double DriftLowThreshold;//! Minimum Drift length to keep the hit 
     double DriftUpThreshold;//! Maximum Drift length to keep the hit
-    double PowerThreshold;//! Maximum P2 minimisation value to keep the track   
+    double PowerThreshold;//! Maximum P2 minimisation value to keep the track
+
+    int Layer_Plan1[4];
+    int Layer_Plan2[4];
+  
     void RemoveNoise();
     // Construct the 2D track and ref position at Z=0 and Z=100 based on X,Z and Radius provided
 
@@ -165,14 +186,19 @@ class TSamuraiFDC0Physics : public TObject, public NPL::VDetector{
     // Retrieve raw and pre-treated data
     TSamuraiFDC0Data* GetRawData()        const {return m_EventData;}
  
-    TVector3 GetPos(){return TVector3(PosX,PosY,m_offset.Z());}
+    TVector3 GetPos(){return TVector3(PosX,PosY,PosZ);}
+    TVector3 GetOffset(){return m_offset;}
+    bool GetInvertX(){return m_invertX;};
+    bool GetInvertY(){return m_invertY;};
     double GetPosX(){return PosX;}
     double GetPosY(){return PosY;}
+    double GetPosZ(){return PosZ;}
     double GetThetaX(){return ThetaX;}
     double GetPhiY(){return PhiY;}
     double GetDevX(){return devX;}
     double GetDevY(){return devY;}
     int GetPileUp(){return PileUp;}
+    int GetMult(){return Mult;}
 
   private:   //   Root Input and Output tree classes
     TSamuraiFDC0Data*         m_EventData;//!
@@ -181,8 +207,9 @@ class TSamuraiFDC0Physics : public TObject, public NPL::VDetector{
 
    public:
     // Projected position at given Z plan
-    TVector3 ProjectedPosition(double Z){return TVector3(0,0,0);/*FIXME*/};
-
+    TVector3 ProjectedPosition(double Z);
+    double   ProjectedPositionX(double Z);
+    double   ProjectedPositionY(double Z);
 
   private: // Spectra Class
    // TSamuraiFDC0Spectra* m_Spectra; // !
diff --git a/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.cxx b/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.cxx
index 9cd4e25e963ed4c71419e714cfe6f08f7dc58583..060c17a10093e350ab5d2f20595a74f99145ccda 100644
--- a/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.cxx
+++ b/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.cxx
@@ -62,6 +62,12 @@ void TSamuraiFDC2Physics::BuildSimplePhysicalEvent(){
 
 ///////////////////////////////////////////////////////////////////////////
 void TSamuraiFDC2Physics::BuildPhysicalEvent(){
+  
+  m_simulation = 0;
+  std::string tree_name = RootInput::getInstance()->GetChain()->GetName();
+  if(tree_name=="SimulatedTree"){m_simulation =1;}
+  else m_simulation = 0;
+
   PreTreat();
 //  RemoveNoise();
 
@@ -81,7 +87,12 @@ void TSamuraiFDC2Physics::BuildPhysicalEvent(){
       SamuraiDCIndex idx(det,layer,wire);
       X[Wire_Angle[idx]].push_back(Wire_X[idx]); 
       Z[Wire_Angle[idx]].push_back(Wire_Z[idx]); 
-      R[Wire_Angle[idx]].push_back(DriftLength[i]); 
+      R[Wire_Angle[idx]].push_back(DriftLength[i]);
+      
+      Wire_PosX.push_back(Wire_X[idx]);
+      Wire_PosZ.push_back(Wire_Z[idx]);
+      Wire_PosAngle.push_back(Wire_Angle[idx]);
+      Wire_PosR.push_back(DriftLength[i]);
     }
   }
 
@@ -110,8 +121,8 @@ void TSamuraiFDC2Physics::BuildPhysicalEvent(){
   
   for(auto it = X.begin();it!=X.end();++it){
 #if __cplusplus > 199711L && NPMULTITHREADING
- 
-  D[it->first]=m_reconstruction.GetResults(uid++,X0,X100,a,b); 
+  D[it->first]=m_reconstruction.GetResults(uid++,X0,X100,a,b);
+  Track_D.push_back(D[it->first]);
 #endif
 
 /*   // for Debug, write a file of 
@@ -120,10 +131,13 @@ void TSamuraiFDC2Physics::BuildPhysicalEvent(){
    f.close();
    }
 */    
-   // very large a means track perpendicular to the chamber, what happen when there is pile up
+   
    if(abs(a)>5000)
       PileUp++;
 
+   Track_a.push_back(a);
+   Track_b.push_back(b);
+
     Mult+=X[it->first].size();
     // Position at z=0
     TVector3 P(X0,0,0);
@@ -205,17 +219,21 @@ void TSamuraiFDC2Physics::BuildPhysicalEvent(){
 
     devX=sqrt(devX/((size-1)*norm));
     devY=sqrt(devY/((size-1)*norm));
-   
-    if(m_invertX){
-      PosX*=-1;
-      PosX100*=-1;
-    }
-
-    if(m_invertY){
-      PosY*=-1;
-      PosY100*=-1;
-    }
-
+    
+    if(!m_simulation)
+      {
+	if(m_invertX){
+	  PosX*=-1;
+	  PosX100*=-1;
+	}
+      }//end if simulation
+
+    if(m_invertY)
+      {
+	PosY*=-1;
+	PosY100*=-1;
+      }
+	
     // Compute ThetaX, angle between the Direction vector projection in XZ with
     // the Z axis
     //ThetaX=atan((PosX100-PosX)/100.);
@@ -225,13 +243,13 @@ void TSamuraiFDC2Physics::BuildPhysicalEvent(){
     //PhiY=atan((PosY100-PosY)/100.);
     PhiY=(PosY100-PosY)/100.;
     Dir=TVector3(PosX100-PosX,PosY100-PosY,100).Unit();
+
     PosX+=m_offset.X();
     PosY+=m_offset.Y();
+    PosZ = m_offset.Z();
+    
   }
-/*  if(PosX==-10000)
-    cout << " bad " <<  Detector.size()<< " " << size << endl;
-  else
-    cout << " okay" <<  Detector.size()<< " " << size << endl;*/
+
   return;
 }
 ///////////////////////////////////////////////////////////////////////////
@@ -269,21 +287,28 @@ void TSamuraiFDC2Physics::PreTreat(){
       if(etime && time && etime-time>ToTThreshold_L && etime-time<ToTThreshold_H){
         if(!(wire==93 && layer ==7)){// remove noisy wire
          Detector.push_back(det);
-          Layer.push_back(layer);       
-          Wire.push_back(wire);
-          Time.push_back(time);
-          ToT.push_back(etime-time);
-          channel="SamuraiFDC2/L" + NPL::itoa(layer);
-          // rescalling is needed because calib are bad.
-          // to be fixed
-          if(!m_invertD)
-            DriftLength.push_back(Cal->ApplySigmoid(channel,etime));
-          else
-            DriftLength.push_back(10-Cal->ApplySigmoid(channel,etime));
-        }
-      }
+	 Layer.push_back(layer);       
+	 Wire.push_back(wire);
+	 Time.push_back(time);
+	 ToT.push_back(etime-time);
+	 channel="SamuraiFDC2/L" + NPL::itoa(layer);
+	 // rescalling is needed because calib are bad.
+	 // to be fixed
+	 if(m_simulation)
+	   {
+	     DriftLength.push_back(m_EventData->GetTime(i));
+	   }
+	 else
+	   {
+	     if(!m_invertD)
+	       DriftLength.push_back(Cal->ApplySigmoid(channel,etime));
+	     else
+	       DriftLength.push_back(10-Cal->ApplySigmoid(channel,etime));
+	   }
+        }// "filter" for noisy wires
+      }//if etime && time etc
     }
-  }
+  }//loop on multiplicity
   return;
 }
 ///////////////////////////////////////////////////////////////////////////
@@ -349,7 +374,7 @@ void TSamuraiFDC2Physics::Clear(){
   MultMean=0;
   PileUp=0;
   Mult=0;
-  PosX=PosY=-10000;
+  PosX=PosY=PosZ=-10000;
   ThetaX=PhiY=-10000;
   devX=devY=-10000;
   DriftLength.clear();
@@ -361,6 +386,14 @@ void TSamuraiFDC2Physics::Clear(){
   ParticleDirection.clear();
   MiddlePosition.clear();
   Matched.clear();
+
+  Track_a.clear();
+  Track_b.clear();
+  Track_D.clear();
+  Wire_PosX.clear();
+  Wire_PosZ.clear();
+  Wire_PosR.clear();
+  Wire_PosAngle.clear();
 }
 ///////////////////////////////////////////////////////////////////////////
 
@@ -399,7 +432,8 @@ void TSamuraiFDC2Physics::ReadConfiguration(NPL::InputParser parser){
 
     GetOffset().Print();
     PosX=1;
-    cout << m_invertY << endl;
+    //cout << m_invertY << endl;
+
 }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -421,9 +455,9 @@ void TSamuraiFDC2Physics::AddDC(string name, NPL::XmlParser& xml){
       else if(sDir=="Y")
         T=90*deg;
       else if(sDir=="U")
-        T=-30*deg;
-      else if(sDir=="V")
         T=+30*deg;
+      else if(sDir=="V")
+        T=-30*deg;
       else{
         cout << "ERROR: Unknown layer orientation for Samurai FDC2"<< endl;
         exit(1);
diff --git a/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.h b/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.h
index 3e370bccd2757b5534ceb71200ef8344a60e2f20..e5ad76c7f034e0f849db173b2fcc5f1df086e16f 100644
--- a/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.h
+++ b/NPLib/Detectors/Samurai/TSamuraiFDC2Physics.h
@@ -46,8 +46,6 @@
 // Forward declaration
 //class TSamuraiFDC2Spectra;
 
-
-
 class TSamuraiFDC2Physics : public TObject, public NPL::VDetector{
   public:
     TSamuraiFDC2Physics();
@@ -66,12 +64,23 @@ class TSamuraiFDC2Physics : public TObject, public NPL::VDetector{
     std::vector<double> Time;
     std::vector<double> ToT;
     std::vector<bool>   Matched;
+
+    // Variables from track reconstruction
+    std::vector<double> Track_a;
+    std::vector<double> Track_b;
+    std::vector <double> Track_D;
+    std::vector<double> Wire_PosX;
+    std::vector<double> Wire_PosZ;
+    std::vector<double> Wire_PosR;
+    std::vector<double> Wire_PosAngle;
+  
     // Computed variable
     std::vector<TVector3> ParticleDirection;
     std::vector<TVector3> MiddlePosition;
 
     double PosX;
     double PosY;
+    double PosZ;
     double ThetaX;
     double PhiY;
     double devX,devY;
@@ -79,12 +88,13 @@ class TSamuraiFDC2Physics : public TObject, public NPL::VDetector{
     int Mult;
     int MultMean;
     int PileUp;
-  
+
   private: // offset and inversion 
     TVector3 m_offset;//!
     bool m_invertX;//!
     bool m_invertY;//!
     bool m_invertD;//!
+    bool m_simulation;//!
 
   public:
     // Projected position at given Z plan
@@ -180,10 +190,13 @@ class TSamuraiFDC2Physics : public TObject, public NPL::VDetector{
     bool GetInvertY(){return m_invertY;};
     double GetPosX(){return PosX;}
     double GetPosY(){return PosY;}
+    double GetPosZ(){return PosZ;}
     double GetThetaX(){return ThetaX;}
     double GetDevX(){return devX;}
     double GetDevY(){return devY;}
     int GetPileUp(){return PileUp;}
+    TVector3 GetDir(){return Dir;}
+    int GetMult(){return Mult;}
 
   private:   //   Root Input and Output tree classes
     TSamuraiFDC2Data*         m_EventData;//!
diff --git a/NPLib/Detectors/Samurai/TSamuraiHodoscopePhysics.h b/NPLib/Detectors/Samurai/TSamuraiHodoscopePhysics.h
index bacf5ceaff354383ef7500b2414577ec71a3eac7..d7f50d7bcf8c11b6c432d05bbb24403cf708f34d 100644
--- a/NPLib/Detectors/Samurai/TSamuraiHodoscopePhysics.h
+++ b/NPLib/Detectors/Samurai/TSamuraiHodoscopePhysics.h
@@ -161,6 +161,7 @@ class TSamuraiHodoscopePhysics : public TObject, public NPL::VDetector {
     vector <double> GetCharge() {return Charge;}
     vector <double> GetTime() {return Time;}
     vector<int> GetID() {return ID;}
+    int GetMult() {return Charge.size();};
 
     // give and external TSamuraiHodoscopeData object to TSamuraiHodoscopePhysics. 
     // needed for online analysis for example
diff --git a/NPLib/Neutron/NPCrossTalk.cxx b/NPLib/Neutron/NPCrossTalk.cxx
old mode 100644
new mode 100755
index f6911a3f833c2bc41d13a29e8601777aa6689916..ac1518447ea65216a40c3fd7b45ac7ad5f055abd
--- a/NPLib/Neutron/NPCrossTalk.cxx
+++ b/NPLib/Neutron/NPCrossTalk.cxx
@@ -39,7 +39,7 @@ CrossTalk::~CrossTalk(){
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void CrossTalk::AddHitVector(const vector<double>& X, const vector<double>& Y, const vector<double>& Z, const vector<double>& Q, const vector<double>& dX, const vector<double>& dY, const vector<double>& dZ, const vector<double> &T){
+void CrossTalk::AddHitVector(const vector<double>& X, const vector<double>& Y, const vector<double>& Z, const vector<double>& Q, const vector<double>& dX, const vector<double>& dY, const vector<double>& dZ, const vector<double> &T, const vector<int> &ID){
 
 
   HitX = &X;
@@ -52,13 +52,13 @@ void CrossTalk::AddHitVector(const vector<double>& X, const vector<double>& Y, c
 
   HitT = &T;
   HitQ = &Q;
+  HitID = &ID;
   sizeHit = X.size();
 }
 
-
 #if __cplusplus > 201103L 
 bool cmp(pair<int,double> & a, pair<int,double>&b){
-  return a.second < b.second;
+    return a.second < b.second;
 }
 #else
 bool cmp(pair<int,double>a, pair<int,double>b){
@@ -73,7 +73,7 @@ vector<int> CrossTalk::ComputeCrossTalk(const double& Causality, const double& D
   static double x2,y2,z2,dx2,dy2,dz2,t2;
   static double Dist, HyperSphere, Beta1;
 
-  //Attribute a new index based on the time arrive from the first to the last hit
+  //Attribute a new index based on the time of arrival from the first to the last hit
   //Using vector of pairs (ID,Time)
   static vector<pair<int, double>> pair_SortedID;
   pair_SortedID.clear();
@@ -133,30 +133,7 @@ vector<int> CrossTalk::ComputeCrossTalk(const double& Causality, const double& D
 
   static unsigned int count, count2;
   count=1,count2=9;  m_HeadClust.clear(), m_QtotClust.clear();
-  Clusters_3D->Clear();
-  /* Clusters_3D->SetTitle("Hit Clusters in NEBULA & NeuLAND"); */
-  /* Clusters_3D->SetFillColor(29); */
-  /* Clusters_3D->SetMarkerSize(10); */
-  /* Clusters_3D->SetMarkerStyle(20); */
-  /* Clusters_3D->SetLineWidth(2); */
-
-  Clusters_3D->SetPoint(1,10000,-2500,0);
-  Clusters_3D->SetPoint(2,10000,-2500,2000);
-  Clusters_3D->SetPoint(3,10000,2500,0);
-  Clusters_3D->SetPoint(4,10000,2500,2000);
-  Clusters_3D->SetPoint(5,12500,-2500,0);
-  Clusters_3D->SetPoint(6,12500,-2500,2000);
-  Clusters_3D->SetPoint(7,12500,2500,0);
-  Clusters_3D->SetPoint(8,12500,2500,2000);
-  Clusters_3D->SetPointError(1,0,0,0);
-  Clusters_3D->SetPointError(2,0,0,0);
-  Clusters_3D->SetPointError(3,0,0,0);
-  Clusters_3D->SetPointError(4,0,0,0);
-  Clusters_3D->SetPointError(5,0,0,0);
-  Clusters_3D->SetPointError(6,0,0,0);
-  Clusters_3D->SetPointError(7,0,0,0);
-  Clusters_3D->SetPointError(8,0,0,0);
-
+  
   for(auto itr = mapOfClust.begin(); itr != mapOfClust.end(); itr++){
     mapOfHead[count] = itr->second[0];
     m_HeadClust.push_back(itr->second[0]);
@@ -166,9 +143,6 @@ vector<int> CrossTalk::ComputeCrossTalk(const double& Causality, const double& D
     Qtot = 0;
     for(int j =0; j < itr->second.size();j++){
       Qtot += (*HitQ)[itr->second[j]];
-      /* XY_Clusters->Set(count2, (*HitX)[itr->second[j]], (*HitY)[itr->second[j]]); */
-      /* XZ_Clusters->Set(count2, (*HitX)[itr->second[j]], (*HitZ)[itr->second[j]]); */
-      /* YZ_Clusters->Set(count2, (*HitZ)[itr->second[j]], (*HitY)[itr->second[j]]); */
       /* cout << (*HitX)[itr->second[j]] << " " <<  (*HitdX)[itr->second[j]] << " " << (*HitdY)[itr->second[j]]<< ""<< (*HitdZ)[itr->second[j]]<<  endl; */
       Clusters_3D->SetPoint(count2, (*HitZ)[itr->second[j]], (*HitX)[itr->second[j]], (*HitY)[itr->second[j]]);
       Clusters_3D->SetPointError(count2, (*HitdZ)[itr->second[j]], (*HitdX)[itr->second[j]], (*HitdY)[itr->second[j]]);
@@ -178,12 +152,7 @@ vector<int> CrossTalk::ComputeCrossTalk(const double& Causality, const double& D
     mapOfQtot[count] = Qtot;
     count++;   
   } 
-
-  /*   Clusters_3D->Draw("err"); */
-  /*   Clusters_2D.push_back(XY_Clusters); */
-  /*   Clusters_2D.push_back(XZ_Clusters); */
-  /*   Clusters_2D.push_back(YZ_Clusters); */
-
+  
   double v_n, Dmax, Qclust1, beta1, beta12;
   static vector<double> CrossTalk;
   CrossTalk.clear();
@@ -199,48 +168,199 @@ vector<int> CrossTalk::ComputeCrossTalk(const double& Causality, const double& D
       Dist = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1));
       Dmax = (t2-t1)*v_n;
       beta12 = Dist/(t2-t1)/C_light;
-     /* if(beta1/beta12 > Causality){ */
-      if( ( (*HitdX)[mapOfHead[i]] == 120. && Qclust1 < 96.9*beta1/beta12 - 70.5 )||(  (*HitdX)[mapOfHead[i]] == 50. && Qclust1 < 150*beta1/beta12 - 130 ) ){
+      if(beta1/beta12 > Causality){
+        /* if( ( (*HitdX)[mapOfHead[i]] == 120. && Qclust1 < 96.9*beta1/beta12 - 70.5 )||(  (*HitdX)[mapOfHead[i]] == 50. && Qclust1 < 150*beta1/beta12 - 130 ) ){ */
         CrossTalk.push_back(j);
       }
+      }
     }
+
+    //elimate potential CrossTalk in mapOfHead
+    static unsigned int sizeCT;
+    sizeCT = CrossTalk.size();
+    for(unsigned int i = 0; i < sizeCT; i++  ){
+      mapOfHead.erase(CrossTalk[i]);
+      mapOfQtot.erase(CrossTalk[i]);
+    }
+
+    //return vector of real neutrons IDs 
+    m_Neutrons.clear();
+    m_QtotNeut.clear();
+    for(auto itr = mapOfHead.begin(); itr != mapOfHead.end(); itr++){
+      m_Neutrons.push_back(itr->second);
+    }
+    for(auto itr = mapOfQtot.begin(); itr != mapOfQtot.end(); itr++){
+      m_QtotNeut.push_back(itr->second);
+    }
+    return m_Neutrons;
   }
 
-  //elimate potential CrossTalk in mapOfHead
-  static unsigned int sizeCT;
-  sizeCT = CrossTalk.size();
-  for(unsigned int i = 0; i < sizeCT; i++  ){
-    mapOfHead.erase(CrossTalk[i]);
-    mapOfQtot.erase(CrossTalk[i]);
+  /////////////////////////////////////////////////////
+  ////////// KONDO CT /////////////////////////////////
+  /////////////////////////////////////////////////////
+  vector<int> CrossTalk::ComputeCrossTalk_Kondo(const double& Causality, const double& DistMin, const int& Option, TCutG* TCut1, TCutG* TCut2){
+
+    const double C_light = 299.792458;
+    static double x1,y1,z1,dx1,dy1,dz1,t1,q1,id1;
+    static double x2,y2,z2,dx2,dy2,dz2,t2,q2,id2;
+    static double Dt, Dist, HyperSphere, Beta1;
+
+    //Attribute a new index based on the time arrive from the first to the last hit
+    //Using vector of pairs (ID,Time)
+    static vector<pair<int, double>> pair_SortedID;
+    pair_SortedID.clear();
+    for(int i = 0; i < sizeHit; i++){
+      pair_SortedID.emplace_back(i, (*HitT)[i]);
+    }
+    //Sort pair vector (ID,Time) in Time
+    sort(pair_SortedID.begin(), pair_SortedID.end(), cmp);
+
+    m_SortedID.clear();
+    //Put new ID sorted in a vector
+    for(int i = 0; i < sizeHit; i++){
+      m_SortedID.push_back(pair_SortedID[i].first);
+    }
+
+    // A different Cluster number (starting at 1) is assigned to each hit
+    static vector<int> ID_ClustHit;
+    ID_ClustHit.clear();
+    for(int i =0 ; i < sizeHit; i++){
+      ID_ClustHit.push_back(i+1);
+    }
+
+    //Test each Dist(n-n) to find clusters
+    //When 2 neutrons are part of a the same cluster, change their ID_ClustHit for the lowest
+    //Create a map to hold the Hit_ID for each cluster 
+    mapOfClust.clear();
+
+    ///////////////////////////////////////
+    /// HyperSphere cleaning (same wall)
+    //////////////////////////////////////
+
+    for(int j = 0; j < sizeHit-1; j++){
+      if(ID_ClustHit[j]==-1) continue;
+      x1 = (*HitX)[m_SortedID[j]], y1 = (*HitY)[m_SortedID[j]], z1 = (*HitZ)[m_SortedID[j]];  
+      dx1 = (*HitdX)[m_SortedID[j]], dy1 = (*HitdY)[m_SortedID[j]];
+      dz1 = (*HitdZ)[m_SortedID[j]];
+      t1 = (*HitT)[m_SortedID[j]];
+      id1=(*HitID)[m_SortedID[j]];
+      Beta1 = sqrt(x1*x1 + y1*y1 + z1*z1)/t1/C_light;
+      for(int jj = j+1; jj < sizeHit ; jj++){
+        if(ID_ClustHit[jj]==-1) continue;
+        x2 = (*HitX)[m_SortedID[jj]], y2 = (*HitY)[m_SortedID[jj]], z2 = (*HitZ)[m_SortedID[jj]], t2 = (*HitT)[m_SortedID[jj]], dx2 = (*HitdX)[m_SortedID[jj]];   
+        Dist = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1));
+        Dt = t2-t1;
+        id2=(*HitID)[m_SortedID[jj]];
+        double b12 = Dist/Dt/C_light;
+        if(id1 <= 400 && id2 <= 400){
+          //Neuland same wall
+          double HypeSph1 = sqrt(((Dt-0.2591)/1.165)*((Dt-0.2591)/1.165) + ((Dist-70.8)/105)*((Dist-70.8)/105));
+          if(HypeSph1 < 1){
+            ID_ClustHit[jj]=-1;
+          }
+        }
+        else if( ((id1>400 && id1<=460)&&(id2>400&&id2<=460)) || (id1>460&&id2>460)  ){ 
+          // Nebula same wall
+          double HypeSph2 = sqrt(((Dt-0.6528)/1.608)*((Dt-0.6528)/1.608) + ((Dist-158.8)/151.5)*((Dist-158.8)/151.5));
+          if(HypeSph2 < 1){
+            ID_ClustHit[jj]=-1;
+          }
+        }
+      }
+    }
+    
+    /////////////////////////////////////////
+    ///// Cleaning Gammas
+    ///////////////////////////////////////////
+
+    for(int j = 0; j < sizeHit-1; j++){
+      if(ID_ClustHit[j]==-1) continue;
+      x1 = (*HitX)[m_SortedID[j]], y1 = (*HitY)[m_SortedID[j]], z1 = (*HitZ)[m_SortedID[j]];  
+      dx1 = (*HitdX)[m_SortedID[j]], dy1 = (*HitdY)[m_SortedID[j]];
+      dz1 = (*HitdZ)[m_SortedID[j]];
+      t1 = (*HitT)[m_SortedID[j]];
+      id1= (*HitID)[m_SortedID[j]];
+      Beta1 = sqrt(x1*x1 + y1*y1 + z1*z1)/t1/C_light;
+      for(int jj = j+1; jj < sizeHit ; jj++){
+        if(ID_ClustHit[jj]==-1) continue;
+        x2 = (*HitX)[m_SortedID[jj]], y2 = (*HitY)[m_SortedID[jj]], z2 = (*HitZ)[m_SortedID[jj]], t2 = (*HitT)[m_SortedID[jj]], dx2 = (*HitdX)[m_SortedID[jj]];   
+        Dist = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1));
+        Dt = t2-t1;
+        id2=(*HitID)[m_SortedID[jj]];
+        double b12 = Dist/Dt/C_light;
+        double q2 = (*HitQ)[m_SortedID[jj]];
+        if(id1 <= 400 && id2 <= 400){
+          //Neuland same wall
+          if( ( abs(1/b12 -1) < 3*0.24 && q2 < 15 ) ||  1/b12 > 1 ){
+            ID_ClustHit[jj] = -1;
+          }
+        }
+        else if( ((id1>400 && id1<=460)&&(id2>400&&id2<=460)) || (id1>460&&id2>460)  ){ 
+          // Nebula same wall
+          if(( abs((1/b12)-1) < 3*0.49 && q2<15 ) || 1/b12 > 1 ){
+            ID_ClustHit[jj]=-1;
+          }
+        }
+        else{
+          // Different Wall a
+          if(Beta1/b12 > 1 || (abs(1/b12 - 1) < 3*0.17 && q2 < 15))
+            ID_ClustHit[jj]=-1;
+        }
+        }
+      }
+
+    for(unsigned int i = 0; i < sizeHit; i++){
+      if(ID_ClustHit[i]!=-1)
+        mapOfClust[ID_ClustHit[i]].push_back(m_SortedID[i]);
+    }
+
+    //Put first hit in time of each cluster in a new map mapOfHead and remake 
+    //the numbering of clusters (1,2,3...)
+    static map< unsigned int, unsigned int > mapOfHead;
+    static map< unsigned int, double > mapOfQtot;
+    /* static map< unsigned int, unsigned int > mapOfClust; */
+    static unsigned int NbrOfClust;
+    mapOfHead.clear(), mapOfQtot.clear();
+    NbrOfClust = mapOfClust.size();
+
+    static unsigned int count, count2;
+    count=1; m_HeadClust.clear();
+    for(auto itr = mapOfClust.begin(); itr != mapOfClust.end(); itr++){
+      mapOfHead[count] = itr->second[0];
+      mapOfQtot[count] = 0;
+      m_HeadClust.push_back(itr->second[0]);
+      count++;   
+    } 
+    //return vector of real neutrons IDs 
+    m_Neutrons.clear();
+    m_QtotNeut.clear();
+    m_QtotClust.clear();
+    for(auto itr = mapOfHead.begin(); itr != mapOfHead.end(); itr++){
+      m_Neutrons.push_back(itr->second);
+      m_HeadClust.push_back(itr->second);
+    }
+    for(auto itr = mapOfQtot.begin(); itr != mapOfQtot.end(); itr++){
+      m_QtotNeut.push_back(itr->second);
+      m_QtotClust.push_back(itr->second);
+    }
+    return m_Neutrons;
   }
 
-  //return vector of real neutrons IDs 
-  m_Neutrons.clear();
-  m_QtotNeut.clear();
-  for(auto itr = mapOfHead.begin(); itr != mapOfHead.end(); itr++){
-    m_Neutrons.push_back(itr->second);
+  vector<int> CrossTalk::GetSortedHits(){
+    return m_SortedID;
   }
-  for(auto itr = mapOfQtot.begin(); itr != mapOfQtot.end(); itr++){
-    m_QtotNeut.push_back(itr->second);
+  vector<TGraph> CrossTalk::GetClusters(){
+    return Clusters_2D;
+  }
+  TGraph2DErrors *CrossTalk::Get3DClusters(){
+    return Clusters_3D;
+  }
+  vector<int> CrossTalk::GetHeadClust(){
+    return m_HeadClust;
+  }
+  vector<double> CrossTalk::GetQtotClust(){
+    return m_QtotClust;
+  }
+  vector<double> CrossTalk::GetQtotNeut(){
+    return m_QtotNeut;
   }
-  return m_Neutrons;
-}
-
-vector<int> CrossTalk::GetSortedHits(){
-  return m_SortedID;
-}
-vector<TGraph> CrossTalk::GetClusters(){
-  return Clusters_2D;
-}
-TGraph2DErrors *CrossTalk::Get3DClusters(){
-  return Clusters_3D;
-}
-vector<int> CrossTalk::GetHeadClust(){
-  return m_HeadClust;
-}
-vector<double> CrossTalk::GetQtotClust(){
-  return m_QtotClust;
-}
-vector<double> CrossTalk::GetQtotNeut(){
-  return m_QtotNeut;
-}
diff --git a/NPLib/Neutron/NPCrossTalk.h b/NPLib/Neutron/NPCrossTalk.h
old mode 100644
new mode 100755
index d79164694b7841463c348becd5c7cd7ad7fca2af..60b9253ed9671bb3b95e0bdfebe1f0e6c6acadd2
--- a/NPLib/Neutron/NPCrossTalk.h
+++ b/NPLib/Neutron/NPCrossTalk.h
@@ -37,9 +37,10 @@ namespace NPL{
 
     public:
 
-      void AddHitVector(const std::vector<double>& X, const std::vector<double>& Y,const std::vector<double>& Z, const std::vector<double>& Q, const std::vector<double>& dX, const std::vector<double>& dY, const std::vector<double>& dZ, const std::vector<double>& T);
+      void AddHitVector(const std::vector<double>& X, const std::vector<double>& Y,const std::vector<double>& Z, const std::vector<double>& Q, const std::vector<double>& dX, const std::vector<double>& dY, const std::vector<double>& dZ, const std::vector<double>& T, const std::vector<int>& ID);
 
       std::vector<int> ComputeCrossTalk(const double& Causality, const double& DistMin, const int& Option, TCutG*TCut1, TCutG* TCut2 );
+      std::vector<int> ComputeCrossTalk_Kondo(const double& Causality, const double& DistMin, const int& Option, TCutG*TCut1, TCutG* TCut2 );
       std::vector<int> GetSortedHits();
       std::vector<TGraph> GetClusters();
       TGraph2DErrors *Get3DClusters();
@@ -57,6 +58,7 @@ namespace NPL{
       const std::vector<double>* HitdZ;
       const std::vector<double>* HitT;
       const std::vector<double>* HitQ;
+      const std::vector<int>* HitID;
       
       std::vector<int> m_SortedID;
       std::map<unsigned int, std::vector<unsigned int>> mapOfClust;
diff --git a/NPLib/Physics/CMakeLists.txt b/NPLib/Physics/CMakeLists.txt
index ea903e3e326d08baed8dbc56d61dafe0e6ff42b4..d7063c226604c5e3a52035dd0bff7ac7ba179bbb 100644
--- a/NPLib/Physics/CMakeLists.txt
+++ b/NPLib/Physics/CMakeLists.txt
@@ -28,7 +28,8 @@ add_custom_command(OUTPUT TFissionConditionsDict.cxx COMMAND ${CMAKE_BINARY_DIR}
 
 add_custom_command(OUTPUT NPTimeStampDict.cxx COMMAND ${CMAKE_BINARY_DIR}/scripts/build_dict.sh NPTimeStamp.h NPTimeStampDict.cxx NPTimeStamp.rootmap libNPPhysics.so NPTimeStampLinkDef.h DEPENDS NPTimeStamp.h NPTimeStampLinkDef.h) 
 
-add_library(NPPhysics SHARED GEF.cxx NPInelasticBreakup.cxx NPInelasticBreakupDict.cxx NPFissionDecay.cxx NPDecay.cxx NPBeam.cxx NPEnergyLoss.cxx NPFunction.cxx NPParticle.cxx NPReaction.cxx NPTimeStamp.cxx NPPhaseSpace.cxx NPQFS.cxx NPParticleDict.cxx NPReactionDict.cxx NPTimeStampDict.cxx NPPhaseSpaceDict.cxx NPQFSDict.cxx NPEnergyLossDict.cxx )
+add_library(NPPhysics SHARED GEF.cxx NPInelasticBreakup.cxx NPInelasticBreakupDict.cxx NPFissionDecay.cxx NPDecay.cxx NPBeam.cxx NPEnergyLoss.cxx NPFunction.cxx NPParticle.cxx NPReaction.cxx NPTimeStamp.cxx NPPhaseSpace.cxx NPQFS.cxx NPParticleDict.cxx NPReactionDict.cxx NPTimeStampDict.cxx NPPhaseSpaceDict.cxx NPQFSDict.cxx NPEnergyLossDict.cxx NPBreitWigner.cxx)
+
 target_link_libraries(NPPhysics ${ROOT_LIBRARIES} Physics NPCore) 
 
 add_library(NPInitialConditions  SHARED  TInitialConditions.cxx TInitialConditionsDict.cxx )
@@ -44,7 +45,9 @@ add_library(NPReactionConditions SHARED TReactionConditions.cxx TReactionConditi
 target_link_libraries(NPReactionConditions ${ROOT_LIBRARIES} ) 
 
 add_library(NPFissionConditions SHARED TFissionConditions.cxx TFissionConditionsDict.cxx)
-target_link_libraries(NPFissionConditions ${ROOT_LIBRARIES} ) 
+target_link_libraries(NPFissionConditions ${ROOT_LIBRARIES} )
+
+install(FILES GEF.h NPInelasticBreakup.h NPFissionDecay.h NPDecay.h NPBeam.h NPEnergyLoss.h NPFunction.h NPParticle.h NPNucleus.h NPReaction.h NPPhaseSpace.h NPQFS.h NPTimeStamp.h TInitialConditions.h TTrackInfo.h TInteractionCoordinates.h TReactionConditions.h TFissionConditions.h NPBreitWigner.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
 
+install(FILES GEF.h NPInelasticBreakup.h NPFissionDecay.h NPDecay.h NPBeam.h NPEnergyLoss.h NPFunction.h NPParticle.h NPNucleus.h NPReaction.h NPPhaseSpace.h NPQFS.h NPTimeStamp.h TInitialConditions.h TTrackInfo.h TInteractionCoordinates.h TReactionConditions.h TFissionConditions.h NPBreitWigner.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
 
-install(FILES GEF.h NPInelasticBreakup.h NPFissionDecay.h NPDecay.h NPBeam.h NPEnergyLoss.h NPFunction.h NPParticle.h NPNucleus.h NPReaction.h NPPhaseSpace.h NPQFS.h NPTimeStamp.h TInitialConditions.h TTrackInfo.h TInteractionCoordinates.h TReactionConditions.h TFissionConditions.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
diff --git a/NPLib/Physics/NPBeam.cxx b/NPLib/Physics/NPBeam.cxx
index ff5f5d840cc2b1b1870fd63bf717d5ccf57ca3e2..0de5b6fbd3dc2e57bd7b95b98ebb963eb883089b 100644
--- a/NPLib/Physics/NPBeam.cxx
+++ b/NPLib/Physics/NPBeam.cxx
@@ -244,7 +244,6 @@ void Beam::GenerateRandomEvent(double& E, double& X, double& Y, double& Z, doubl
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void Beam::Print() const {
 
-
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/NPLib/Physics/NPBreitWigner.cxx b/NPLib/Physics/NPBreitWigner.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..53d280cfa72e57cb8dd45eaddd0483c08090c927
--- /dev/null
+++ b/NPLib/Physics/NPBreitWigner.cxx
@@ -0,0 +1,269 @@
+#if __cplusplus > 201703L
+/*****************************************************************************
+ * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ *                                                                           *
+ * Original Author :  Audrey ANNE contact address: anne@lpccaen.in2p3.fr     *
+ *                                                                           *
+ * Creation Date   : February 2024                                           *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *                                                                           *
+ *                                                                           *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+// STL
+#include <iostream>
+#include <fstream>
+#include <cstdlib>
+#include <sstream>
+#include <cmath>
+#include <vector>
+
+// NPL header
+#include "NPBreitWigner.h"
+#include "NPFunction.h"
+#include "NPOptionManager.h"
+
+// ROOT Header
+#include "TDirectory.h"
+#include "TCanvas.h"
+
+// Use CLHEP System of unit and Physical Constant
+#include "NPGlobalSystemOfUnits.h"
+#include "NPPhysicalConstants.h"
+
+#ifdef NP_SYSTEM_OF_UNITS_H
+using namespace NPUNITS;
+#endif
+
+#include "TAxis.h"
+
+using namespace NPL;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
+BreitWigner::BreitWigner():hc(hbarc/fermi), uma(amu_c2){
+  
+  fR0 = 1.4; // Value in Breit Wigner models
+  fNeutron = Particle("n");
+
+  fShiftZero = 0;
+  fWidthCst = 0;
+
+  // Breit Wigner parameters
+  fX0 = 1.0;
+  fW0 = 1.0;
+  fell = 0;
+  fA = 1;
+  fn = 1;
+  fparam0 = 1.0;
+  
+  // Calculated values
+  fmu = 1.0;
+  fR = 1.0;
+  frho_0 = 1.0;
+  fP0 = 1.0;
+  fSF0 = 1.0;
+  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+BreitWigner::~BreitWigner(){
+}
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void BreitWigner::ReadConfigurationFile(string Path){
+  NPL::InputParser parser(Path);
+  ReadConfigurationFile(parser);
+}
+
+void BreitWigner::ReadConfigurationFile(NPL::InputParser parser){
+  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("BreitWigner");
+  if(blocks.size()>0 && NPOptionManager::getInstance()->GetVerboseLevel())
+    cout << endl << "\033[1;35m//// Breit Wigner energy distribution " << endl; 
+
+  vector<string> token   = {"Energy0","Width0", "l", "Heavy","Light", "NeutronNumber","MultiplicateurAmplitude", "ShiftZero", "WidthCst"};
+  for(unsigned int i = 0 ; i < blocks.size() ; i++){
+    if(blocks[i]->HasTokenList(token)){
+ 
+      fX0 = blocks[i]->GetDouble("Energy0","MeV");
+      fW0 = blocks[i]->GetDouble("Width0","MeV");
+      if(fW0<=0) fW0 = 1e-4 ;
+      fell = blocks[i]->GetInt("l");
+      fHeavy = Particle(blocks[i]->GetString("Heavy"));
+      fLight =  Particle(blocks[i]->GetString("Light"));
+      fn = blocks[i]->GetInt("NeutronNumber");
+      fparam0 =  blocks[i]->GetDouble("MultiplicateurAmplitude","MeV");
+      fShiftZero =  blocks[i]->GetInt("ShiftZero");
+      fWidthCst =  blocks[i]->GetInt("WidthCst");
+
+    }
+
+    else{
+      cout << "ERROR: check your input file formatting in Breit Wigner block(s) " << endl; 
+      exit(1);
+    }
+
+    fA = fLight.GetA();
+    fmu = (uma*fA*fn)/(fA+fn);
+    fR = fR0*(TMath::Power(fA,(1.0/3.0)) + TMath::Power(fn,(1.0/3.0)));
+    frho_0 = Calculate_Rho_Var(fX0);
+    fP0 = Penetration_Factor(frho_0);
+    fSF0 = Shift_Factor(frho_0);
+
+    fQ = fLight.Mass() + fn*fNeutron.Mass() - fHeavy.Mass();
+    cout << "Q de reaction = " << fQ << endl;
+
+    
+  }//end reading token in input file
+}//end ReadConfigurationFile 
+
+
+double BreitWigner::Eval(const double & x_) const {
+  
+  if(x_<0) return 0.;
+  
+  double rho_x, W, dX;
+  rho_x = Calculate_Rho_Var(x_);
+  W = Width(rho_x);
+  dX = Shift(rho_x);
+
+  return fparam0*(W*fW0/4.0)/(TMath::Power(fX0+dX-x_,2.0) + TMath::Power(W/2.0, 2.0));
+}
+
+double BreitWigner::Eval_For_TF1(const double * x_, const double * /* params_ */) const
+{
+    return this->Eval(*x_);  
+}
+
+
+TF1 * BreitWigner::Make_TF1() const
+{
+  return new TF1("BW_TF1", this,&BreitWigner::Eval_For_TF1, 0.0, 10.0, 0);
+}
+
+TH1D * BreitWigner::Make_TH1() const
+{
+  TF1 *func =  new TF1("BW_TF1", this, &BreitWigner::Eval_For_TF1, 0.0, 10.0, 0);
+  TH1D *Hist = dynamic_cast<TH1D*>(func->GetHistogram());
+  
+  TAxis *AxisX = Hist->GetXaxis();
+  AxisX->Set( AxisX->GetNbins(), fQ + (AxisX->GetXmin()), fQ + (AxisX->GetXmax()) );
+  
+  return Hist;
+}
+
+double BreitWigner::Calculate_Rho_Var( double E) const {
+  return sqrt(2.0*fmu*E)*fR/hc;
+}
+
+
+double BreitWigner::Width(double rho_x) const {
+  return fW0*Width_Ratio(rho_x);
+}
+
+double BreitWigner::Shift(double rho_x) const {
+  return fW0*Shift_Ratio(rho_x);
+}
+
+
+double BreitWigner::Width_Ratio(double rho_x) const {
+  
+  if(fell>=0 and !fWidthCst){
+    double fP = Penetration_Factor(rho_x);
+    return fP/fP0;
+  }
+  else return 1.0;
+}
+
+double BreitWigner::Shift_Ratio(double rho_x) const {
+  if(fell>=0 and !fShiftZero){
+    return (fSF0 - Shift_Factor(rho_x))/(2.0*fP0);
+  }
+  else return 0.0;
+}
+
+double BreitWigner::Shift_Factor(double rho) const {
+  if(rho==0) rho = 1e-36; //to avoid singularities
+  
+  double J = std::cyl_bessel_j(fell+0.5, rho);
+  double Jm = std::cyl_bessel_j(fell-0.5, rho);
+  double Y  = std::cyl_neumann(fell+0.5, rho);
+  double Ym = std::cyl_neumann(fell-0.5, rho);
+  
+  double sum2 = J*J + Y*Y ;
+   
+  return -(sum2*fell-(J*Jm+Y*Ym)*rho)/sum2;  
+}
+
+
+double BreitWigner::Penetration_Factor(double rho) const {
+  if(rho==0) rho = 1e-36; // to avoid singularities
+  
+  Double_t J = std::cyl_bessel_j(fell+0.5,rho);
+  Double_t Y = std::cyl_neumann(fell+0.5,rho);
+
+  return  (2./TMath::Pi())/(TMath::Power(J,2)+TMath::Power(Y,2)); // in principle we must differiente rho / k but  R is the same  
+}
+
+
+
+void BreitWigner::Dump() const {
+  //print
+}
+
+
+
+//--------------- /!\ For test only /!\----------------- //
+/*
+TF1 * BreitWigner::Make_TF1(const char * name_) const
+{
+  return new TF1(name_, this, &BreitWigner::Eval_For_TF1, 0.0, 10.0, 0);
+}
+*/
+
+
+void BreitWigner::Save_TF1() const {
+
+  TF1 *BWFunc =  new TF1("BWFunc", this, &BreitWigner::Eval_For_TF1, 0.0, 10.0, 0);
+  
+  TFile myfile("../../Projects/S034_audrey/output/BreitWigner/testBW.root","RECREATE");
+ 
+  BWFunc->Write();
+  myfile.Close();
+  delete BWFunc;
+}
+
+
+
+void BreitWigner::Save_Histo() const {
+
+  TF1 *fonc =  new TF1("fonc", this, &BreitWigner::Eval_For_TF1, 0.0, 10.0, 0);
+  
+  TFile myfile("../../Projects/S034_audrey/output/BreitWigner/testHist.root","RECREATE");
+  
+  TH1 *hist = fonc->GetHistogram();
+
+  TAxis *a = hist->GetXaxis();
+  a->Set( a->GetNbins(), fQ + (a->GetXmin()), fQ + (a->GetXmax()) );
+  
+  hist->Write();
+  myfile.Close();
+  delete fonc;
+}
+
+#endif
diff --git a/NPLib/Physics/NPBreitWigner.h b/NPLib/Physics/NPBreitWigner.h
new file mode 100644
index 0000000000000000000000000000000000000000..83437be8463aa54d921c8afb9c85b2337d39f3ed
--- /dev/null
+++ b/NPLib/Physics/NPBreitWigner.h
@@ -0,0 +1,125 @@
+#ifndef NPBreitWigner_h
+#define NPBreitWigner_h
+#if __cplusplus > 201703L
+/*****************************************************************************
+ * Copyright (C) 2009-2016    this file is part of the NPTool Project        *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ *                                                                           *
+ * Original Author : Audrey ANNE  contact address: anne@lpccaen.in2p3.fr     *
+ *                                                                           *
+ * Creation Date   : February 2024                                           *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *                                                                           *
+ *                                                                           *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+// C++ header
+#include <string>
+
+// ROOT header
+#include "TH1.h"
+#include "TF1.h"
+#include "TMath.h"
+#include <cmath>
+#include "TRandom.h"
+
+// NPL header
+#include "NPInputParser.h"
+#include "NPParticle.h"
+
+class TF1;
+
+using namespace std;
+
+namespace NPL{
+  
+  class BreitWigner{
+    
+  public:  // Constructors and Destructors
+    BreitWigner();
+    ~BreitWigner();
+ 
+
+  public: //Read Method
+    void ReadConfigurationFile(string Path);
+    void ReadConfigurationFile(NPL::InputParser);
+  
+
+  private:
+    //Physical Constants
+    const double hc;
+    const double uma;
+    
+    bool fShiftZero; // = 0 -> Shift ; = 1 -> no Shift 
+    bool fWidthCst; // = 0 -> constant Width ; = 1 -> Width 
+
+    double fR0;
+
+    double fX0;
+    double fW0;
+    int fell; // l
+    int fA;  // Fragment's A number
+    int fn;  // Neutrons number
+    double fparam0;
+
+    Particle fHeavy; // Heavy in BreitWigner (example : He8 -> He4 + 4n, Heavy is He8).
+    Particle fLight;  // Light in BreitWigner (example : He8 -> He4 + 4n, Light is He4).
+    Particle fNeutron;
+
+    //Calculated values
+    double frho_0;
+    double fP0;
+    double fSF0;
+    double fmu; //
+    double fR;
+
+    double fQ;
+
+ 
+  public:
+
+    void SetA(int A){fA = A;}
+    int GetA()const{return fA;}
+
+    void SetL(int l){fell = l;}
+    int GetL()const{return fell;}
+
+    double Calculate_Rho_Var(double E) const;
+    double Width(double rho_X) const;
+    double Shift(double rho_X) const;
+    double Width_Ratio(double rho_X) const;
+    double Shift_Ratio(double rho_x) const;
+    double Shift_Factor(double rho) const;
+    double Penetration_Factor(double rho) const;
+
+    
+    double Eval(const double & x_) const;
+    double Eval_For_TF1(const double * x_, const double * /* params_ */) const;
+
+    
+    TF1 * Make_TF1() const;
+    TH1D * Make_TH1() const;
+
+    //TF1 * Make_TF1(const char * name_) const;
+    
+    //only for test -> TF1 and TH1 put in .root file
+    void Save_Histo() const ;
+    void Save_TF1() const ;
+    
+    void Dump() const;
+  }; 
+}
+
+#endif //c++17
+#endif //ndef
diff --git a/NPLib/Physics/NPQFS.cxx b/NPLib/Physics/NPQFS.cxx
index 17710ab3d2cdf51d5d2e96e7c5ed66809324a08a..06295d4f90c677f4e15683a89f9b53dea6e69f36 100644
--- a/NPLib/Physics/NPQFS.cxx
+++ b/NPLib/Physics/NPQFS.cxx
@@ -58,13 +58,14 @@ using namespace NPUNITS;
 
 // ROOT
 #include"TF1.h"
+#include "TMath.h"
 
 ClassImp(QFS)
 
 ////////////////////////////////////////////////////////////////////////////////
 
 QFS::QFS(){
-
+  
     //------------- Default Constructor -------------
     fVerboseLevel         = NPOptionManager::getInstance()->GetVerboseLevel();
     fBeamEnergy           = 0;
@@ -92,12 +93,14 @@ QFS::QFS(){
     fPerpMomentumHist = NULL;
     fParMomentumHist = NULL;
     fDeexcitation = false;
+
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 
 QFS::~QFS(){
 
+
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -121,7 +124,7 @@ void QFS::ReadConfigurationFile(string Path){
 ////////////////////////////////////////////////////////////////////////////////
 
 void QFS::ReadConfigurationFile(NPL::InputParser parser){
-
+  
   cout << " In QFS ReadConfiguration " << endl;
   vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("QFSReaction");
   if(blocks.size()>0 && NPOptionManager::getInstance()->GetVerboseLevel())
diff --git a/NPLib/Physics/NPQFS.h b/NPLib/Physics/NPQFS.h
index 5637d14714c4d1af87b228a9d25093b750d96ebe..089b4b4e3fc551450b8e851815c3136597598e1d 100644
--- a/NPLib/Physics/NPQFS.h
+++ b/NPLib/Physics/NPQFS.h
@@ -45,6 +45,8 @@
 #include "NPParticle.h"
 #include "NPBeam.h"
 #include "NPInputParser.h"
+
+
 using namespace NPL;
 
 // ROOT header
@@ -62,10 +64,11 @@ namespace NPL{
   class QFS{
 
     public:  // Constructors and Destructors
-      QFS();
+    QFS();
       ~QFS();
 
     private:
+    
     int fVerboseLevel;
     Beam     fParticleA;                 // Beam (A)
     Particle  fParticleT;                 // Target (T)
diff --git a/NPLib/Physics/NPReaction.cxx b/NPLib/Physics/NPReaction.cxx
index 70f0206a18977458ea78d3ab9b19720b27a215f4..f2e70c3ce38ca13e1965958aa1b15449a1f9c26e 100644
--- a/NPLib/Physics/NPReaction.cxx
+++ b/NPLib/Physics/NPReaction.cxx
@@ -245,12 +245,6 @@ double Reaction::ShootRandomThetaCM() {
 
   return theta;
 }
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Reaction::ShootRandomExcitationEnergy() {
-  if (fExcitationEnergyHist) {
-    SetExcitation4(fExcitationEnergyHist->GetRandom());
-  }
-}
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void Reaction::KineRelativistic(double& ThetaLab3, double& KineticEnergyLab3, double& ThetaLab4,
@@ -473,6 +467,7 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser) {
   double CSHalfOpenAngleMin = 0 * deg;
   double CSHalfOpenAngleMax = 180 * deg;
   for (unsigned int i = 0; i < blocks.size(); i++) {
+    
     if (blocks[i]->HasTokenList(token1)) {
       int v = NPOptionManager::getInstance()->GetVerboseLevel();
       NPOptionManager::getInstance()->SetVerboseLevel(0);
@@ -483,7 +478,8 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser) {
       fParticle2 = GetParticle(blocks[i]->GetString("Target"), parser);
       fParticle3 = GetParticle(blocks[i]->GetString("Light"), parser);
       fParticle4 = GetParticle(blocks[i]->GetString("Heavy"), parser);
-    }
+    }// if token1
+    
     else if (blocks[i]->HasTokenList(token2)) {
       fParticle1.SetVerboseLevel(0);
       fParticle1.ReadConfigurationFile(parser);
@@ -492,7 +488,8 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser) {
       fParticle2 = GetParticle(blocks[i]->GetString("Target"), parser);
       fParticle3 = GetParticle(blocks[i]->GetString("Particle3"), parser);
       fParticle4 = GetParticle(blocks[i]->GetString("Particle4"), parser);
-    }
+    }//if token2
+    
     else {
       cout << "ERROR: check your input file formatting \033[0m" << endl;
       exit(1);
@@ -585,12 +582,38 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser) {
       // simulation
       fUseExInGeant4 = blocks[i]->GetInt("UseExInGeant4");
     }
+    
+  }//end for loop TwoBodyReaction
+  
+  
+  vector<NPL::InputBlock*> blocksBW = parser.GetAllBlocksWithToken("BreitWigner");
+  if (blocksBW.size() > 0 && NPOptionManager::getInstance()->GetVerboseLevel()) {
+    
+   #if __cplusplus > 201703L 
+    fBreitWigner.ReadConfigurationFile(parser);
+    fExcitationEnergyHist = fBreitWigner.Make_TH1();
+    fExcitation4 = 0;
+    #else
+    cout << "You need at least C++17 to use the BreitWigner distribution" << endl;
+    #endif
   }
+  
+  
   SetCSAngle(CSHalfOpenAngleMin / deg, CSHalfOpenAngleMax / deg);
   initializePrecomputeVariable();
   cout << "\033[0m";
+  
+}//end ReadConfigurationFile
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void Reaction::ShootRandomExcitationEnergy() {
+  if (fExcitationEnergyHist) {
+    SetExcitation4(fExcitationEnergyHist->GetRandom());
+  }
 }
 
+
 ////////////////////////////////////////////////////////////////////////////////////////////
 void Reaction::initializePrecomputeVariable() {
 
diff --git a/NPLib/Physics/NPReaction.h b/NPLib/Physics/NPReaction.h
index fa43b2c6a3046a13d08c9d3554deaa5953965ce3..f216fd81abbf8d0bb549e8bff93cd7b58bbf61cd 100644
--- a/NPLib/Physics/NPReaction.h
+++ b/NPLib/Physics/NPReaction.h
@@ -36,6 +36,10 @@
 #include "NPInputParser.h"
 #include "NPParticle.h"
 
+#if __cplusplus > 201703L
+#include "NPBreitWigner.h"
+#endif
+
 using namespace NPL;
 
 // ROOT header
@@ -99,7 +103,13 @@ namespace NPL {
     double fExcitation4;                       // Excitation energy in MeV
     TH1D* fCrossSectionHist;                   // Differential cross section in CM frame
     TH2F* fDoubleDifferentialCrossSectionHist; // Diff. CS CM frame vs Beam E
+
     TH1D* fExcitationEnergyHist;               // Distribution of Excitation energy
+
+    #if __cplusplus > 201703L
+    BreitWigner fBreitWigner;                  // Breit Wigner energy distribution
+    #endif
+
    public:
     // Getters and Setters
     void SetBeamEnergy(const double& eBeam) {
diff --git a/NPLib/Physics/TReactionConditions.cxx b/NPLib/Physics/TReactionConditions.cxx
index f4882241d3a74dc507eeebbe8ba27d3594ff1905..c47c51d3c0de1651de0444cc7b1b7edae9a71a24 100644
--- a/NPLib/Physics/TReactionConditions.cxx
+++ b/NPLib/Physics/TReactionConditions.cxx
@@ -87,7 +87,7 @@ void TReactionConditions::Dump() const{
     << fRC_Internal_Momentum.X() << " ; "
     << fRC_Internal_Momentum.Y() << " ; "
     << fRC_Internal_Momentum.Z() << ")" << endl;
- 
+    
     TVector3 *emitted= new TVector3(); 
     // emmitted particle
     unsigned int size = fRC_Particle_Name.size();
diff --git a/NPLib/Physics/TReactionConditions.h b/NPLib/Physics/TReactionConditions.h
index ade0078b866ab31e50e5d22d1626030c07a4bba8..9b0ead8c724347ce7355fa901516daf206da99b7 100644
--- a/NPLib/Physics/TReactionConditions.h
+++ b/NPLib/Physics/TReactionConditions.h
@@ -58,6 +58,7 @@ private:
     double fRC_Vertex_Position_X;
     double fRC_Vertex_Position_Y;
     double fRC_Vertex_Position_Z;
+
     //Center of mass angle for the reaction
     double fRC_ThetaCM;
 
@@ -100,7 +101,7 @@ public:
     void SetExcitationEnergy4  (const double& Ex) {fRC_ExcitationEnergy4=Ex;};//!
     void SetThetaCM            (const double & ThetaCM)               {fRC_ThetaCM = ThetaCM;}//!
     void SetInternalMomentum   (const TVector3& IntMom)               {fRC_Internal_Momentum = IntMom;}//!
-    
+  
     // emmitted particles
     void SetParticleName       (const string & Particle_Name)         {fRC_Particle_Name.push_back(Particle_Name);}//!
     void SetTheta              (const double & Angle)                 {fRC_Theta.push_back(Angle);}//!
@@ -135,7 +136,7 @@ public:
     double GetExcitation4         () const {return fRC_ExcitationEnergy4     ;}//!       
     double GetThetaCM             () const {return fRC_ThetaCM;}//!
     TVector3 GetInternalMomentum  () const {return fRC_Internal_Momentum;}//!
-    
+  
     // emmitted particles
     int GetParticleMultiplicity()                const {return fRC_Kinetic_Energy.size();}//!
     string GetParticleName        (const int &i) const {return fRC_Particle_Name[i];}//!
diff --git a/NPLib/TrackReconstruction/NPDCReconstructionMT.cxx b/NPLib/TrackReconstruction/NPDCReconstructionMT.cxx
index cca5634728e8015af0a8f9b6ecc6d1cf98310e10..7786a657541c14434c10ddd20dc6022e964186f9 100644
--- a/NPLib/TrackReconstruction/NPDCReconstructionMT.cxx
+++ b/NPLib/TrackReconstruction/NPDCReconstructionMT.cxx
@@ -30,6 +30,8 @@
 using namespace std;
 using namespace NPL;
 
+
+
 ////////////////////////////////////////////////////////////////////////////////
 DCReconstructionMT::DCReconstructionMT(unsigned int number_thread) {
   ROOT::EnableThreadSafety();
@@ -70,10 +72,15 @@ void DCReconstructionMT::AddPlan(unsigned int ID, const vector<double>& X, const
     }
   }
 
-  fitX[free_thread] = &X;
-  fitZ[free_thread] = &Z;
+  // fitX[free_thread] = &X;
+  // fitZ[free_thread] = &Z;
+  
+  fitX[free_thread] = &Z;
+  fitZ[free_thread] = &X;
+  
   fitR[free_thread] = &R;
   m_uid[free_thread] = ID;
+
   // assume all X,Z,R of same size
   sizeX[free_thread] = X.size();
   m_Ready[free_thread] = true;
@@ -142,6 +149,7 @@ double DCReconstructionMT::SumD(const double* parameter) {
   double P = 0;
   double a = parameter[0];
   double b = parameter[1];
+ 
   double ab = a * b;
   double a2 = a * a;
   unsigned int id = parameter[2];
@@ -158,6 +166,7 @@ double DCReconstructionMT::SumD(const double* parameter) {
     x = (a * d - ab + c) / (1 + a2);
     z = a * x + b;
     p = (x - c) * (x - c) + (z - d) * (z - d) - r * r;
+ 
     // numerical trick to have a smooth derivative instead of using abs
     P += sqrt(p * p + 0.1);
   }
@@ -214,6 +223,7 @@ void DCReconstructionMT::StartThread(unsigned int id) {
   double ai, bi;
   unsigned int uid;
   const double* xs;
+  
   // create the functor
   // each threads needs its own or the minisation is not thread safe
   ROOT::Math::Functor* func = new ROOT::Math::Functor(this, &NPL::DCReconstructionMT::SumD, 3);
@@ -233,9 +243,10 @@ void DCReconstructionMT::StartThread(unsigned int id) {
       // Define the starting point of the fit: a straight line passing through the
       // the first and last wire
       // z = ax+b -> x=(z-b)/a
-      ai = ((*fitZ[id])[sizeX[id] - 1] - (*fitZ[id])[0]) /
-           ((*fitX[id])[sizeX[id] - 1] - (*fitX[id])[0] + (*fitR[id])[sizeX[id] - 1] - (*fitR[id])[0]);
-      bi = (*fitZ[id])[0] - ai * ((*fitX[id])[0] + (*fitR[id])[0]);
+      // if(id == 0) cout << endl;
+       ai = ((*fitZ[id])[sizeX[id] - 1] - (*fitZ[id])[0]) /
+      ((*fitX[id])[sizeX[id] - 1] - (*fitX[id])[0] + (*fitR[id])[sizeX[id] - 1] - (*fitR[id])[0]);
+       bi = (*fitZ[id])[0] - ai * ((*fitX[id])[0] + (*fitR[id])[0]);
 
       if (std::isinf(ai)) { // then there is no two point in different layer
         m_a[uid] = -10000;
@@ -244,11 +255,12 @@ void DCReconstructionMT::StartThread(unsigned int id) {
         m_X100[uid] = -10000;
         m_minimum[uid] = 10000;
       }
-
+      
       else {
+ 
         mini->Clear();
         mini->SetVariable(0, "a", ai, 1);
-        mini->SetVariable(1, "b", bi, 1);
+	mini->SetVariable(1, "b", bi, 1);
         mini->SetFixedVariable(2, "id", id);
         // Perform minimisation
         mini->Minimize();
@@ -256,10 +268,15 @@ void DCReconstructionMT::StartThread(unsigned int id) {
         // access set of parameter that produce the minimum
         xs = mini->X();
         uid = m_uid[id];
-        m_a[uid] = xs[0];
-        m_b[uid] = xs[1];
+        // m_a[uid] = xs[0];
+        // m_b[uid] = xs[1];
+
+	m_a[uid] = 1.0/xs[0];
+	m_b[uid] = -(1.0/xs[0]) * xs[1];
         m_X0[uid] = -m_b[uid] / m_a[uid];
         m_X100[uid] = (100 - m_b[uid]) / m_a[uid];
+	m_a[uid] = xs[0];
+        m_b[uid] = xs[1];
         m_minimum[uid] = mini->MinValue();
       }
       // notify main thread job is done
diff --git a/NPLib/TrackReconstruction/NPDCReconstructionMT.h b/NPLib/TrackReconstruction/NPDCReconstructionMT.h
index 29af99a16a000f355c2a2a44c9bac339af3d6311..342a3ae8b029bfa63ca849ec533f0f05da948f0f 100644
--- a/NPLib/TrackReconstruction/NPDCReconstructionMT.h
+++ b/NPLib/TrackReconstruction/NPDCReconstructionMT.h
@@ -70,7 +70,7 @@ namespace NPL{
 
       // Function used by the minimizer in BuildTrack2D
       double SumD(const double* parameter );
-
+    
       // For debugging/optimisation
       // Scan Sumd versus parameter a or b (tovary =0 for a, 1 for b)
       // return a TGraph for display
diff --git a/NPSimulation/Core/MaterialManager.cc b/NPSimulation/Core/MaterialManager.cc
index 14f7be2d8c66e9a6af8bf053075d526da8c3f27e..4aaef449e499a4ad9d35fac89d7fa65ed8948d61 100644
--- a/NPSimulation/Core/MaterialManager.cc
+++ b/NPSimulation/Core/MaterialManager.cc
@@ -165,7 +165,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name, double density)
     else if (Name == "Mylar") {
       if (!density)
         density = 1.397 * g / cm3;
-      G4Material* material = new G4Material("NPS_" + Name, density, 3);
+      G4Material* material = new G4Material("NPS_" + Name, density, 3);    
       material->AddElement(GetElementFromLibrary("H"), 8);
       material->AddElement(GetElementFromLibrary("C"), 10);
       material->AddElement(GetElementFromLibrary("O"), 4);
@@ -1285,7 +1285,7 @@ G4Material* MaterialManager::GetGasFromLibrary(string Name, double Pressure, dou
   string newName = oss.str();
   map<string, G4Material*>::iterator it;
   it = m_Material.find(Name);
-
+ 
   double density = 0;
 
   G4double Vm = 0.08206 * Temperature * atmosphere / (Pressure * kelvin);
@@ -1378,6 +1378,18 @@ G4Material* MaterialManager::GetGasFromLibrary(string Name, double Pressure, dou
       return material;
     }
 
+    if (Name == "CH4_60_He_40") // Gas mix of CH4 60% and He 40% at 20C° and 1 atm
+      {
+	density = ((0.6 * (12.0107 + 4 * 1.00794) + (0.4 * 1.00794))/Vm ) *mg/cm3;
+	G4Material* material = new G4Material("NPS_" + newName, density, 2, kStateGas, Temperature, Pressure);
+	
+	material->AddMaterial(GetGasFromLibrary("CH4", Pressure, Temperature), 0.6);
+	material->AddMaterial(GetGasFromLibrary("He", Pressure, Temperature), 0.4);
+	m_Material[newName] = material;
+	return material;
+      }
+
+
     else {
       exit(1);
     }
diff --git a/NPSimulation/Detectors/Minos/Minos.cc b/NPSimulation/Detectors/Minos/Minos.cc
index ea4ac5d1c96bd5973945fde1e96236420a995aa3..fa7a020685483da841692bed2d64fad155628835 100644
--- a/NPSimulation/Detectors/Minos/Minos.cc
+++ b/NPSimulation/Detectors/Minos/Minos.cc
@@ -107,14 +107,15 @@ Minos::Minos() {
   m_ReactionRegion = NULL;
 
   // RGB Color + Transparency
-  m_VisTarget = new G4VisAttributes(G4Colour(0.6, 1., 1., .4));
-  m_VissimpleBox = new G4VisAttributes(G4Colour(0, 1, 0, .6));
-  m_VisTPC = new G4VisAttributes(G4Colour(1., 0.5, 0.6, 0.3));
-  m_VisRohacell = new G4VisAttributes(G4Colour(1., 1., 1., .8));
-  m_VisKapton = new G4VisAttributes(G4Colour(1., 1., 0.6, 0.4));
-  m_VisTargetCell = new G4VisAttributes(G4Colour(0, 0, 1, .4));
+
+  m_VisTarget = new G4VisAttributes(G4Colour(0.6, 1., 1., 1.0));
+  m_VissimpleBox = new G4VisAttributes(G4Colour(0, 1, 0, 0.6));
+  m_VisTPC = new G4VisAttributes(G4Colour(1., 0.5, 0.6, 0.6));
+  m_VisRohacell = new G4VisAttributes(G4Colour(1., 1., 1., 0.6));
+  m_VisKapton = new G4VisAttributes(G4Colour(1., 1., 0.6, 0.6));
+  m_VisTargetCell = new G4VisAttributes(G4Colour(0, 0, 1, 0.6));
   m_VisTargetCell->SetForceSolid(true);
-  m_VisOuterKapton = new G4VisAttributes(G4Colour(1., 1., 0.6, 0.8));
+  m_VisOuterKapton = new G4VisAttributes(G4Colour(1., 1., 0.6, 0.6));
 
   Raw_Signal = new TH1F("raw_Signal", "raw_Signal", 512, 0, 512);
   Elec_Signal = new TH1F("Elec_Signal", "Elec_Signal", 512, 0, 512);
@@ -374,9 +375,10 @@ void Minos::ConstructDetector(G4LogicalVolume* world) {
     double MinosX = Det_pos.x();
     double MinosY = Det_pos.y();
     double MinosZ = Det_pos.z() + m_TargetLength[i] / 2.;
-
+    
     new G4PVPlacement(0, // its name
-                      G4ThreeVector(0, 0, +ChamberLength / 2),
+		      G4ThreeVector(MinosX, MinosY, Det_pos.z() +ChamberLength / 2),
+                      //G4ThreeVector(0, 0, +ChamberLength / 2),
                       /* G4ThreeVector(wX,wY, wZ + ChamberLength - m_TargetLength[i]-WindowThickness*2. - 5*mm ),	// Z
                          positioning putting TPC beginn and Target beginning w/ difference of 5mm */
                       BuildTPC(), // its logical volume
diff --git a/NPSimulation/Detectors/Nebula/Nebula.cc b/NPSimulation/Detectors/Nebula/Nebula.cc
index 40911278cba849c28fba93bfe112baadb8ced87e..e60d15eb0e865b7bce1ccbca8b070d80d5a04932 100644
--- a/NPSimulation/Detectors/Nebula/Nebula.cc
+++ b/NPSimulation/Detectors/Nebula/Nebula.cc
@@ -90,11 +90,10 @@ Nebula::Nebula(){
   m_Module = 0;
   m_Veto = 0;
 
-
   // RGB Color + Transparency
   m_VisModule = new G4VisAttributes(G4Colour(0.263, 0.682, 0.639, 1));   
   //m_VisModule = new G4VisAttributes(G4Colour(0.145, 0.384, 0.596, 1));   
-  m_VisVeto   = new G4VisAttributes(G4Colour(0.4, 0.4, 0.4, 0.2));   
+  m_VisVeto   = new G4VisAttributes(G4Colour(0.4, 0.4, 0.4, 0.8));   
   m_VisPMT    = new G4VisAttributes(G4Colour(0.1, 0.1, 0.1, 1));   
   m_VisFrame  = new G4VisAttributes(G4Colour(0, 0.3, 1, 0.5));   
 
@@ -170,7 +169,7 @@ void Nebula::ReadConfiguration(NPL::InputParser parser){
     }
     else if(blocks[i]->HasTokenList(xml)){
       if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Nebula XML file" << i+1 <<  endl;
+        cout << endl << "////  Nebula XML file " << i+1 <<  endl;
       std::string xml_file = blocks[i]->GetString("XML"); 
       G4ThreeVector Offset = NPS::ConvertVector(blocks[i]->GetTVector3("Offset","mm"));
       bool InvertX = blocks[i]->GetInt("InvertX"); 
@@ -321,15 +320,15 @@ void Nebula::ReadSensitive(const G4Event* ){
     Light_tmp = PlasticScorer_Module->GetLight(i);
     Energy = RandGauss::shoot(Energy_tmp, Energy_tmp*Nebula_NS::ResoEnergy);
     Light = RandGauss::shoot(Light_tmp, Light_tmp*Nebula_NS::ResoLight);
-
+    
     if(Light>Nebula_NS::LightThreshold){
       int DetectorNbr = level[0];
-      double Position = RandGauss::shoot(PlasticScorer_Module->GetPosition(i),Nebula_NS::ResoPosition);
-
+      double Position = RandGauss::shoot(PlasticScorer_Module->GetPositionY(i),Nebula_NS::ResoPosition);
+      
       m_Event->SetChargeUp(DetectorNbr,Light*exp(-(Nebula_NS::ModuleHeight/2-Position)/Nebula_NS::Attenuation));
       m_Event->SetChargeDown(DetectorNbr,Light*exp(-(Nebula_NS::ModuleHeight/2+Position)/Nebula_NS::Attenuation));
-     
-      // Take TOF and Position and compute Tup and Tdown
+      
+      // Take Time and Y Position and compute Tup and Tdown
       double Time = RandGauss::shoot(PlasticScorer_Module->GetTime(i),Nebula_NS::ResoTime);
 
       Time_up = (Nebula_NS::ModuleHeight/2-Position)/(c_light/Nebula_NS::MaterialIndex) + Time;
@@ -341,24 +340,22 @@ void Nebula::ReadSensitive(const G4Event* ){
   }
   //cout << endl;
 
-
-
   ///////////////////////////////// VETO SCORER //////////////////////////////////
-  unsigned int VetoHits_size = PlasticScorer_Veto->GetMult(); 
+  unsigned int VetoHits_size = PlasticScorer_Veto->GetMult();
   for(unsigned int i = 0 ; i < VetoHits_size ; i++){
     vector<unsigned int> level = PlasticScorer_Veto->GetLevel(i); 
     Energy_tmp = PlasticScorer_Veto->GetEnergy(i);
     Light_tmp = PlasticScorer_Veto->GetLight(i);
     Energy = RandGauss::shoot(Energy_tmp, Energy_tmp*Nebula_NS::ResoEnergy);
     Light = RandGauss::shoot(Light_tmp, Light_tmp*Nebula_NS::ResoLight);
-
+ 
     if(Light>Nebula_NS::LightThreshold){
       double Time = RandGauss::shoot(PlasticScorer_Veto->GetTime(i),Nebula_NS::ResoTime);
       //cout << "Time is " << Time << endl;
-      double Position = RandGauss::shoot(PlasticScorer_Veto->GetPosition(i),Nebula_NS::ResoPosition);
+      double Position = RandGauss::shoot(PlasticScorer_Veto->GetPositionY(i),Nebula_NS::ResoPosition);
       //cout << "Position is " << Position << endl;
       int DetectorNbr = level[0] + m_TotalModule;
-      //cout << "Veto ID: " << DetectorNbr << endl;
+      // cout << "Veto ID: " << DetectorNbr << endl;
       
       m_Event->SetChargeUp(DetectorNbr,Light*exp(-(Nebula_NS::VetoHeight/2-Position)/Nebula_NS::Attenuation));
       m_Event->SetChargeDown(DetectorNbr,Light*exp(-(Nebula_NS::VetoHeight/2+Position)/Nebula_NS::Attenuation));
@@ -370,6 +367,7 @@ void Nebula::ReadSensitive(const G4Event* ){
       Time_down = (Nebula_NS::VetoHeight/2+Position)/(c_light/Nebula_NS::MaterialIndex) + Time;
       //cout << "Time_down is " << Time_down << endl;
       m_Event->SetTimeDown(DetectorNbr,Time_down);
+      
     }
   }
 
diff --git a/NPSimulation/Detectors/NeuLAND/CMakeLists.txt b/NPSimulation/Detectors/NeuLAND/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b0931a90d4c1a27f6cc0a0955c9b9e82dea608c8
--- /dev/null
+++ b/NPSimulation/Detectors/NeuLAND/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_library(NPSNeuLAND SHARED  NeuLAND.cc)
+target_link_libraries(NPSNeuLAND NPSCore ${ROOT_LIBRARIES} ${Geant4_LIBRARIES} ${NPLib_LIBRARIES} -lNPNeuLAND)
diff --git a/NPSimulation/Detectors/NeuLAND/NeuLAND.cc b/NPSimulation/Detectors/NeuLAND/NeuLAND.cc
new file mode 100644
index 0000000000000000000000000000000000000000..43aff6c7d0b8d7fbdd511bdc2665fbe45f1d6abd
--- /dev/null
+++ b/NPSimulation/Detectors/NeuLAND/NeuLAND.cc
@@ -0,0 +1,493 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2019   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien Matta  contact address: matta@lpccaen.in2p3.fr    *
+ *                                                                           *
+ * Creation Date  : December 2019                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class describe  NeuLAND simulation                                   *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ headers
+#include <sstream>
+#include <cmath>
+#include <limits>
+//G4 Geometry object
+#include "G4Tubs.hh"
+#include "G4Box.hh"
+
+//G4 sensitive
+#include "G4SDManager.hh"
+#include "G4MultiFunctionalDetector.hh"
+
+//G4 various object
+#include "G4Material.hh"
+#include "G4MaterialPropertiesTable.hh"
+#include "G4Transform3D.hh"
+#include "G4PVPlacement.hh"
+#include "G4VisAttributes.hh"
+#include "G4Colour.hh"
+
+// NPTool header
+#include "NeuLAND.hh"
+#include "PlasticBar.hh"
+#include "InteractionScorers.hh"
+#include "ProcessScorers.hh"
+#include "RootOutput.h"
+#include "MaterialManager.hh"
+#include "NPSDetectorFactory.hh"
+#include "NPOptionManager.h"
+#include "NPSHitsMap.hh"
+// CLHEP header
+#include "CLHEP/Random/RandGauss.h"
+
+using namespace std;
+using namespace CLHEP;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+namespace NeuLAND_NS{
+  // Energy and time Resolution
+  const double LightThreshold  = 0.1*MeV;
+  const double ResoTime        = 0.75/2.355*ns; //0.75
+  const double ResoEnergy      = 0.1/2.355*MeV; 
+  const double ResoLight       = 0.1/2.355*MeV; 
+  const double ResoPosition    = 1.0*um; //1.0
+  const double ModuleWidth     = 50*mm ;
+  const double ModuleLength    = 50*mm ;
+  const double ModuleHeight    = 2500*mm ;
+  const double InterModule     = 1*mm ;
+  const double VetoWidth       = 320*mm ;
+  const double VetoLength      = 10*mm ;
+  const double VetoHeight      = 1900*mm ;
+  const double InterVeto       = 1*mm ;
+  const int    VetoPerWall     = 12;
+  const int    VetoPerExpand   = 6;
+  const double WallToVeto      = 10*cm;
+  const double MaterialIndex   = 1.58;
+  const double Attenuation     = 6680*mm; 
+
+  const string Material = "BC400";
+}
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// NeuLAND Specific Method
+NeuLAND::NeuLAND(){
+  m_Event = new TNeuLANDData() ;
+  m_ModuleScorer = 0;
+  m_VetoScorer = 0;
+  m_Module = 0;
+  m_Veto = 0;
+
+
+  // RGB Color + Transparency
+  m_VisModule = new G4VisAttributes(G4Colour(0.263, 0.682, 0.639, 0.3));   
+  //m_VisModule = new G4VisAttributes(G4Colour(0.145, 0.384, 0.596, 1));   
+  m_VisVeto   = new G4VisAttributes(G4Colour(0.4, 0.4, 0.4, 0.8));   
+  m_VisPMT    = new G4VisAttributes(G4Colour(0.1, 0.1, 0.1, 1));   
+  m_VisFrame  = new G4VisAttributes(G4Colour(0, 0.3, 1, 0.5));   
+
+}
+
+NeuLAND::~NeuLAND(){
+}
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void NeuLAND::AddWall(G4ThreeVector Pos, int NbrModule, bool Veto, bool Frame){
+  // Convert the Pos value to R theta Phi as Spherical coordinate is easier in G4 
+  m_Pos.push_back(Pos);
+  m_NbrModule.push_back(NbrModule);
+  m_HasVeto.push_back(Veto);
+  m_HasFrame.push_back(Frame);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4LogicalVolume* NeuLAND::BuildModule(){
+  if(!m_Module){
+    G4Box* box = new G4Box("NeuLAND_Module",NeuLAND_NS::ModuleWidth*0.5,
+        NeuLAND_NS::ModuleHeight*0.5,NeuLAND_NS::ModuleLength*0.5);
+
+    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(NeuLAND_NS::Material);
+    m_Module = new G4LogicalVolume(box,DetectorMaterial,"logic_NeuLAND_Module",0,0,0);
+    m_Module->SetVisAttributes(m_VisModule);
+    m_Module->SetSensitiveDetector(m_ModuleScorer);
+  }
+  return m_Module;
+}
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4LogicalVolume* NeuLAND::BuildVeto(){
+  if(!m_Veto){
+    G4Box* box = new G4Box("NeuLAND_Veto",NeuLAND_NS::VetoWidth*0.5,
+        NeuLAND_NS::VetoHeight*0.5,NeuLAND_NS::VetoLength*0.5);
+
+    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(NeuLAND_NS::Material);
+    
+    m_Veto = new G4LogicalVolume(box,DetectorMaterial,"logic_NeuLAND_Veto",0,0,0);
+    m_Veto->SetVisAttributes(m_VisVeto);
+    m_Veto->SetSensitiveDetector(m_VetoScorer);
+  }
+  return m_Veto;
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Virtual Method of NPS::VDetector class
+
+// Read stream at Configfile to pick-up parameters of detector (Position,...)
+// Called in DetectorConstruction::ReadDetectorConfiguration Method
+void NeuLAND::ReadConfiguration(NPL::InputParser parser){
+  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("NEULAND");
+  if(NPOptionManager::getInstance()->GetVerboseLevel())
+    cout << "//// " << blocks.size() << " detectors found " << endl;
+
+  // define an entire wall
+  vector<string> wall = {"Pos","NumberOfModule","Veto","Frame"};
+
+  // use an experiment xml file to position bars individually
+  vector<string> xml= {"XML","Offset","InvertX","InvertY"};
+
+  for(unsigned int i = 0 ; i < blocks.size() ; i++){
+    if(blocks[i]->HasTokenList(wall)){
+      if(NPOptionManager::getInstance()->GetVerboseLevel())
+        cout << endl << "////  NeuLAND " << i+1 <<  endl;
+    
+      G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("Pos","mm"));
+      int NbrModule = blocks[i]->GetInt("NumberOfModule");
+      bool Veto = blocks[i]->GetInt("Veto");
+      bool Frame= blocks[i]->GetInt("Frame");
+      AddWall(Pos,NbrModule,Veto,Frame);
+    }
+    else if(blocks[i]->HasTokenList(xml)){
+      if(NPOptionManager::getInstance()->GetVerboseLevel())
+        cout << endl << "////  NeuLAND XML file " << i+1 <<  endl;
+      std::string xml_file = blocks[i]->GetString("XML"); 
+      G4ThreeVector Offset = NPS::ConvertVector(blocks[i]->GetTVector3("Offset","mm"));
+      bool InvertX = blocks[i]->GetInt("InvertX"); 
+      bool InvertY = blocks[i]->GetInt("InvertY"); 
+      ReadXML(xml_file,Offset,InvertX,InvertY);
+    }
+      else{
+      cout << "ERROR: check your input file formatting " << endl;
+      exit(1);
+    }
+  }
+  std::for_each(m_NbrModule.begin(), m_NbrModule.end(), [&] (int n) {
+     m_TotalModule += n;
+  });  
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void NeuLAND::ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY){ 
+  NPL::XmlParser xml;
+  xml.LoadFile(xml_file);
+  std::vector<NPL::XML::block*> b = xml.GetAllBlocksWithName("NEULAND");  
+  int NumberOfBars=0;
+  for(unsigned int i = 0 ; i < b.size() ; i++){
+    NumberOfBars++;
+    unsigned int id = b[i]->AsInt("ID");
+    
+    // position
+    auto PositionX = b[i]->AsDouble("xpos");
+    //cout << "//// " << PositionX << " position en x " << endl;
+    auto PositionY = b[i]->AsDouble("ypos");
+    //cout << "//// " << PositionY << " position en y " << endl;
+    auto PositionZ = b[i]->AsDouble("zpos");
+    //cout << "//// " << PositionZ << " position en z " << endl;
+    //cout <<"============================" << endl;
+    
+    // SubLayer 0 is used for Veto
+    auto SubLayer  = b[i]->AsInt("SubLayer");
+    // Name "NoUseX" is used to silence bars
+    auto nousestr  = b[i]->AsString("NAME");
+
+    auto DirectionBar = b[i]->AsString("direction");
+    //cout << "direction des barres -> " << DirectionBar << endl;
+    // cout << "id = " << id << endl;
+    
+    // Remove unused bar
+    if(nousestr.find("NoUse")==std::string::npos && PositionX!=PositionZ){
+      if(InvertX)
+        PositionX*=-1;
+      if(InvertY)
+        PositionY*=-1;
+      m_PositionBar[id]= G4ThreeVector(PositionX,PositionY,PositionZ)+offset;
+
+      // Direction bar
+      if(DirectionBar.find("V")==std::string::npos)
+	{m_IsHorizontal[id] = true;
+	  // cout << DirectionBar << endl; 
+	}
+      else m_IsHorizontal[id] = false;
+
+      // cout << " m_IsHorizontal[id] = " << m_IsHorizontal[id] << endl;
+      
+      if(SubLayer)
+        m_IsVetoBar[id]= false;
+      else
+        m_IsVetoBar[id]= true;
+    }
+    
+  } //end of for 
+  cout << " -> " << NumberOfBars << " bars found" << endl;
+
+  
+} //end of ReadXML
+
+// Construct detector and inialise sensitive part.
+// Called After DetectorConstruction::AddDetector Method
+void NeuLAND::ConstructDetector(G4LogicalVolume* world){
+  
+  // Start with XML case
+  G4RotationMatrix* Rot = new G4RotationMatrix();
+    
+  for(auto pos : m_PositionBar){
+
+    //cout << "m_IsHorizontal " <<  m_IsHorizontal[pos.first] << endl;
+    
+    if(m_IsHorizontal[pos.first])
+      {
+         Rot->rotateZ(90.*deg);
+      }
+
+    
+    
+    if(!m_IsVetoBar[pos.first]){
+      new G4PVPlacement(G4Transform3D(*Rot,pos.second),
+            BuildModule(),
+            "NeuLANDModule",world,false,pos.first);
+    }
+    else{
+      new G4PVPlacement(G4Transform3D(*Rot,pos.second),
+            BuildVeto(),
+	    "NeuLANDModule",world,false,pos.first); //"NeuLANDVeto"
+      }
+
+    Rot->set(0,0,0);
+    }
+
+
+  //Not XML
+  unsigned int nbrM = 1 ;
+  unsigned int nbrV = 1 ;
+  
+  for (unsigned short i = 0 ; i < m_Pos.size() ; i++) {
+    for (unsigned short m = 0 ; m < m_NbrModule[i] ; m++) {
+      double offset = (NeuLAND_NS::ModuleWidth+NeuLAND_NS::InterModule)*(-m_NbrModule[i]*0.5+m)+NeuLAND_NS::ModuleWidth*0.5;
+      G4ThreeVector Offset(offset,0,0);
+      new G4PVPlacement(G4Transform3D(*Rot,m_Pos[i]+Offset),
+          BuildModule(),
+          "NeuLANDModule",world,false,nbrM++);
+    }
+
+    if(m_HasVeto[i]){
+      if(m_NbrModule[i] > 15){
+        for (unsigned short m = 0 ; m < NeuLAND_NS::VetoPerWall ; m++) {
+          double offset = (NeuLAND_NS::VetoWidth+NeuLAND_NS::InterVeto)*(-NeuLAND_NS::VetoPerWall*0.5+m)+NeuLAND_NS::VetoWidth*0.5;
+          G4ThreeVector Offset(offset,0,-NeuLAND_NS::WallToVeto);
+          new G4PVPlacement(G4Transform3D(*Rot,m_Pos[i]+Offset),
+            BuildVeto(),
+            "NeuLANDVeto",world,false,nbrV++);
+        }
+      }
+      else{
+        for (unsigned short m = 0 ; m < NeuLAND_NS::VetoPerExpand ; m++) {
+          double offset = (NeuLAND_NS::VetoWidth+NeuLAND_NS::InterVeto)*(-NeuLAND_NS::VetoPerExpand*0.5+m)+NeuLAND_NS::VetoWidth*0.5;
+          G4ThreeVector Offset(offset,0,-NeuLAND_NS::WallToVeto);
+          new G4PVPlacement(G4Transform3D(*Rot,m_Pos[i]+Offset),
+            BuildVeto(),
+            "NeuLANDVeto",world,false,nbrV++);
+        }
+      }
+    }
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Add Detector branch to the EventTree.
+// Called After DetectorConstruction::AddDetector Method
+void NeuLAND::InitializeRootOutput(){
+  RootOutput *pAnalysis = RootOutput::getInstance();
+  TTree *pTree = pAnalysis->GetTree();
+  if(!pTree->FindBranch("NeuLAND")){
+    pTree->Branch("NeuLAND", "TNeuLANDData",&m_Event) ;
+  }
+  pTree->SetBranchAddress("NeuLAND", &m_Event) ;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Read sensitive part and fill the Root tree.
+// Called at in the EventAction::EndOfEventAvtion
+void NeuLAND::ReadSensitive(const G4Event* ){
+  m_Event->Clear();
+
+  ///////////
+  // PlasticBar scorer
+  PlasticBar::PS_PlasticBar* PlasticScorer_Module = (PlasticBar::PS_PlasticBar*) m_ModuleScorer->GetPrimitive(0);
+  PlasticBar::PS_PlasticBar* PlasticScorer_Veto = (PlasticBar::PS_PlasticBar*) m_VetoScorer->GetPrimitive(0);
+  // Should we put a ProcessScorer here to get the info if the particle is first neutron and give it to NeuLANDData ?
+  
+  double Time_up, Time_down;
+  double Energy_tmp, Light_tmp;
+
+  //////////// TRIAL TO GET THE OPTICAL INDEX FROM MATERIAL PROPERTIES /////////////
+  //Trying to get Optical Index from Material directly
+  //const G4Material* aMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(NeuLAND_NS::Material);
+  //G4MaterialPropertiesTable* aMaterialPropertiesTable = aMaterial->GetMaterialPropertiesTable();
+  //if(!aMaterialPropertiesTable->PropertyExists("RINDEX")){
+  //  MaterialIndex = !aMaterialPropertiesTable->GetConstProperty("RINDEX"); 
+  //}
+  //else{
+  //  MaterialIndex = 0; 
+  //}
+  //cout << MaterialManager::getInstance()->GetMaterialFromLibrary(NeuLAND_NS::Material)->GetMaterialPropertiesTable()->GetMaterialPropertyNames()[0] << endl;
+  //////////////////////////////////////////////////////////////////////////////////
+
+  ///////////////////////////////// MODULE SCORER //////////////////////////////////
+  unsigned int ModuleHits_size = PlasticScorer_Module->GetMult(); 
+  for(unsigned int i = 0 ; i < ModuleHits_size ; i++){
+    vector<unsigned int> level = PlasticScorer_Module->GetLevel(i); 
+    Energy_tmp = PlasticScorer_Module->GetEnergy(i);
+    Light_tmp = PlasticScorer_Module->GetLight(i);
+    Energy = RandGauss::shoot(Energy_tmp, Energy_tmp*NeuLAND_NS::ResoEnergy);
+    Light = RandGauss::shoot(Light_tmp, Light_tmp*NeuLAND_NS::ResoLight);
+
+    if(Light>NeuLAND_NS::LightThreshold){
+      int DetectorNbr = level[0];
+      double PositionY = RandGauss::shoot(PlasticScorer_Module->GetPositionY(i),NeuLAND_NS::ResoPosition);
+      double PositionX = RandGauss::shoot(PlasticScorer_Module->GetPositionX(i),NeuLAND_NS::ResoPosition);
+
+      
+      double Position;
+
+      if((1<=DetectorNbr and DetectorNbr <=50)  or (101<=DetectorNbr and DetectorNbr<=150) or (201<=DetectorNbr and DetectorNbr<=250) or (301<=DetectorNbr and DetectorNbr<=350) )
+	{
+	  Position = PositionX;
+	}
+
+      else
+	{
+	  Position = PositionY;
+	}
+
+      //cout << "--------------" << endl;
+      m_Event->SetChargeUp(DetectorNbr,Light*exp(-(NeuLAND_NS::ModuleHeight/2-Position)/NeuLAND_NS::Attenuation));
+      m_Event->SetChargeDown(DetectorNbr,Light*exp(-(NeuLAND_NS::ModuleHeight/2+Position)/NeuLAND_NS::Attenuation));
+     
+      // Take Time and Position and compute Tup and Tdown
+      double Time = RandGauss::shoot(PlasticScorer_Module->GetTime(i),NeuLAND_NS::ResoTime);
+
+      Time_up = (NeuLAND_NS::ModuleHeight/2-Position)/(c_light/NeuLAND_NS::MaterialIndex) + Time;
+      m_Event->SetTimeUp(DetectorNbr,Time_up);
+      
+      Time_down = (NeuLAND_NS::ModuleHeight/2+Position)/(c_light/NeuLAND_NS::MaterialIndex) + Time;
+      m_Event->SetTimeDown(DetectorNbr,Time_down);
+    }
+  }
+
+  ///////////////////////////////// VETO SCORER //////////////////////////////////
+  unsigned int VetoHits_size = PlasticScorer_Veto->GetMult(); 
+  for(unsigned int i = 0 ; i < VetoHits_size ; i++){
+    vector<unsigned int> level = PlasticScorer_Veto->GetLevel(i); 
+    Energy_tmp = PlasticScorer_Veto->GetEnergy(i);
+    Light_tmp = PlasticScorer_Veto->GetLight(i);
+    Energy = RandGauss::shoot(Energy_tmp, Energy_tmp*NeuLAND_NS::ResoEnergy);
+    Light = RandGauss::shoot(Light_tmp, Light_tmp*NeuLAND_NS::ResoLight);
+
+    if(Light>NeuLAND_NS::LightThreshold){
+      double Time = RandGauss::shoot(PlasticScorer_Veto->GetTime(i),NeuLAND_NS::ResoTime);
+      //cout << "Time is " << Time << endl;
+      double Position = RandGauss::shoot(PlasticScorer_Veto->GetPositionY(i),NeuLAND_NS::ResoPosition);
+      //cout << "Position is " << Position << endl;
+      int DetectorNbr = level[0] + m_TotalModule;
+      //cout << "Veto ID: " << DetectorNbr << endl;
+      
+      m_Event->SetChargeUp(DetectorNbr,Light*exp(-(NeuLAND_NS::VetoHeight/2-Position)/NeuLAND_NS::Attenuation));
+      m_Event->SetChargeDown(DetectorNbr,Light*exp(-(NeuLAND_NS::VetoHeight/2+Position)/NeuLAND_NS::Attenuation));
+      
+      Time_up = (NeuLAND_NS::VetoHeight/2-Position)/(c_light/NeuLAND_NS::MaterialIndex) + Time;
+      //cout << "Time_up is " << Time_up << endl;
+      m_Event->SetTimeUp(DetectorNbr,Time_up);
+      
+      Time_down = (NeuLAND_NS::VetoHeight/2+Position)/(c_light/NeuLAND_NS::MaterialIndex) + Time;
+      //cout << "Time_down is " << Time_down << endl;
+      m_Event->SetTimeDown(DetectorNbr,Time_down);
+    }
+  }
+
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+////////////////////////////////////////////////////////////////   
+void NeuLAND::InitializeScorers() { 
+  // This check is necessary in case the geometry is reloaded
+  bool already_exist = false; 
+  m_ModuleScorer = CheckScorer("NeuLANDModuleScorer",already_exist) ;
+  m_VetoScorer = CheckScorer("NeuLANDVetoScorer",already_exist) ;
+
+  if(already_exist) 
+    return ;
+
+  // Otherwise the scorer is initialise
+  // Module 
+  vector<int> level; level.push_back(0);
+  G4VPrimitiveScorer* ModulePlasticBar= new PlasticBar::PS_PlasticBar("ModulePlasticBar",level, 0);
+  G4VPrimitiveScorer* ModuleInteraction= new InteractionScorers::PS_Interactions("ModuleInteraction",ms_InterCoord, 0);
+  G4VPrimitiveScorer* ModuleProcess= new ProcessScorers::PS_Process("ModuleProcess", 0);
+  //and register it to the multifunctionnal detector
+  m_ModuleScorer->RegisterPrimitive(ModulePlasticBar);
+  m_ModuleScorer->RegisterPrimitive(ModuleInteraction);
+  m_ModuleScorer->RegisterPrimitive(ModuleProcess);
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_ModuleScorer) ;
+
+  // Veto 
+  G4VPrimitiveScorer* VetoPlasticBar= new PlasticBar::PS_PlasticBar("VetoPlasticBar",level, 0);
+  G4VPrimitiveScorer* VetoInteraction= new InteractionScorers::PS_Interactions("VetoInteraction",ms_InterCoord, 0);
+  G4VPrimitiveScorer* VetoProcess= new ProcessScorers::PS_Process("ModuleProcess", 0);
+  //and register it to the multifunctionnal detector
+  m_VetoScorer->RegisterPrimitive(VetoPlasticBar);
+  m_VetoScorer->RegisterPrimitive(VetoInteraction);
+  m_VetoScorer->RegisterPrimitive(VetoProcess);
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_VetoScorer) ;
+
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+////////////////////////////////////////////////////////////////////////////////
+//            Construct Method to be pass to the DetectorFactory              //
+////////////////////////////////////////////////////////////////////////////////
+NPS::VDetector* NeuLAND::Construct(){
+  return  (NPS::VDetector*) new NeuLAND();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+////////////////////////////////////////////////////////////////////////////////
+//            Registering the construct method to the factory                 //
+////////////////////////////////////////////////////////////////////////////////
+extern"C" {
+  class proxy_nps_NeuLAND{
+    public:
+      proxy_nps_NeuLAND(){
+        NPS::DetectorFactory::getInstance()->AddToken("NEULAND","NEULAND");
+        NPS::DetectorFactory::getInstance()->AddDetector("NEULAND",NeuLAND::Construct);
+      }
+  };
+
+  proxy_nps_NeuLAND p_nps_NeuLAND;
+}
diff --git a/NPSimulation/Detectors/NeuLAND/NeuLAND.hh b/NPSimulation/Detectors/NeuLAND/NeuLAND.hh
new file mode 100644
index 0000000000000000000000000000000000000000..5b7a20ce73bf0e6024b38e10de7f3cce2e6c9511
--- /dev/null
+++ b/NPSimulation/Detectors/NeuLAND/NeuLAND.hh
@@ -0,0 +1,124 @@
+#ifndef NeuLAND_h
+#define NeuLAND_h 1
+/*****************************************************************************
+ * Copyright (C) 2009-2019   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien Matta  contact address: matta@lpccaen.in2p3.fr    *
+ *                                                                           *
+ * Creation Date  : December 2019                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class describe  NeuLAND simulation                                   *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ header
+#include <string>
+#include <vector>
+#include <map>
+using namespace std;
+
+// G4 headers
+#include "G4ThreeVector.hh"
+#include "G4RotationMatrix.hh"
+#include "G4LogicalVolume.hh"
+#include "G4MultiFunctionalDetector.hh"
+
+// NPTool header
+#include "NPSVDetector.hh"
+#include "TNeuLANDData.h"
+#include "NPInputParser.h"
+#include "NPXmlParser.h"
+
+class NeuLAND : public NPS::VDetector{
+  ////////////////////////////////////////////////////
+  /////// Default Constructor and Destructor /////////
+  ////////////////////////////////////////////////////
+  public:
+    NeuLAND() ;
+    virtual ~NeuLAND() ;
+
+    ////////////////////////////////////////////////////
+    //////// Specific Function of this Class ///////////
+    ////////////////////////////////////////////////////
+  public:
+    // Cartesian
+    void AddWall(G4ThreeVector POS, int NbrModule,bool veto,bool frame);
+    void ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY); 
+
+    G4LogicalVolume* BuildModule();
+    G4LogicalVolume* BuildVeto();
+  
+  private:
+    std::map<unsigned int , G4ThreeVector> m_PositionBar;
+    std::map<unsigned int , bool> m_IsVetoBar;
+    std::map<unsigned int , bool> m_IsHorizontal;
+    G4LogicalVolume* m_Module;
+    G4LogicalVolume* m_Veto;
+    double Energy;
+    double Light;
+    
+    ////////////////////////////////////////////////////
+    //////  Inherite from NPS::VDetector class /////////
+    ////////////////////////////////////////////////////
+  public:
+    // Read stream at Configfile to pick-up parameters of detector (Position,...)
+    // Called in DetecorConstruction::ReadDetextorConfiguration Method
+    void ReadConfiguration(NPL::InputParser) ;
+
+    // Construct detector and inialise sensitive part.
+    // Called After DetecorConstruction::AddDetector Method
+    void ConstructDetector(G4LogicalVolume* world) ;
+
+    // Add Detector branch to the EventTree.
+    // Called After DetectorConstruction::AddDetector Method
+    void InitializeRootOutput() ;
+
+    // Read sensitive part and fill the Root tree.
+    // Called at in the EventAction::EndOfEventAvtion
+    void ReadSensitive(const G4Event* event) ;
+
+  public:   // Scorer
+    //   Initialize all Scorer used by the MUST2Array
+    void InitializeScorers() ;
+
+    //   Associated Scorer
+    G4MultiFunctionalDetector* m_ModuleScorer ;
+    G4MultiFunctionalDetector* m_VetoScorer ;
+    ////////////////////////////////////////////////////
+    ///////////Event class to store Data////////////////
+    ////////////////////////////////////////////////////
+  private:
+    TNeuLANDData* m_Event ;
+
+    ////////////////////////////////////////////////////
+    ///////////////Private intern Data//////////////////
+    ////////////////////////////////////////////////////
+  private: // Geometry
+    // Detector Coordinate 
+    vector<G4ThreeVector>  m_Pos; 
+    vector<int>  m_NbrModule;
+    int m_TotalModule = 0;
+    vector<bool> m_HasVeto; 
+    vector<bool> m_HasFrame; 
+    
+    // Visualisation Attribute
+    G4VisAttributes* m_VisModule;
+    G4VisAttributes* m_VisVeto;
+    G4VisAttributes* m_VisPMT;
+    G4VisAttributes* m_VisFrame;
+
+  // Needed for dynamic loading of the library
+  public:
+    static NPS::VDetector* Construct();
+};
+#endif
diff --git a/NPSimulation/Detectors/Samurai/CMakeLists.txt b/NPSimulation/Detectors/Samurai/CMakeLists.txt
index c77d1a47210d739baf592595c3fd6c6187abcf33..0723c223478e13cc1751493c1ffea4b11eb1d510 100644
--- a/NPSimulation/Detectors/Samurai/CMakeLists.txt
+++ b/NPSimulation/Detectors/Samurai/CMakeLists.txt
@@ -1,2 +1,2 @@
-add_library(NPSSamurai SHARED  Samurai.cc SamuraiFieldPropagation.cc SamuraiFDC2.cc SamuraiFDC1.cc)
+add_library(NPSSamurai SHARED  Samurai.cc SamuraiFieldPropagation.cc SamuraiFDC2.cc SamuraiFDC1.cc SamuraiFDC0.cc SamuraiBDC.cc)
 target_link_libraries(NPSSamurai NPSCore ${ROOT_LIBRARIES} ${Geant4_LIBRARIES} ${NPLib_LIBRARIES} -lNPSamurai)
diff --git a/NPSimulation/Detectors/Samurai/Samurai.cc b/NPSimulation/Detectors/Samurai/Samurai.cc
index 92da9b578022c6d2181756c6c7612959ce89451f..8353824cde6b10545018335e26a0c610c3497ce5 100644
--- a/NPSimulation/Detectors/Samurai/Samurai.cc
+++ b/NPSimulation/Detectors/Samurai/Samurai.cc
@@ -68,7 +68,7 @@ namespace Samurai_NS{
   //Main outer box
   const double Magnet_Width = 6700*mm; //(x)
   const double Magnet_Height = 4640*mm;//(y)
-  const double Magnet_Depth = 6000*mm;//(z)
+  const double Magnet_Depth = 4950*mm;//(z) //If depth is larger, it overlaps on FDC2
   const double Magnet_Depth_eps = 0.2*mm; //(delta-z)
   const string Magnet_Material = "G4_Galactic"; //G4_Galactic
 
@@ -113,11 +113,17 @@ namespace Samurai_NS{
 Samurai::Samurai(){
 
   //Visualization attributes
-  m_VisMagnet = new G4VisAttributes(G4Colour(0,0,1,0.5));
-  m_VisYokes = new G4VisAttributes(G4Colour(0,1,0,0.5));
-  m_VisRYokes = new G4VisAttributes(G4Colour(1,0,0,0.5));
-  m_VisPropvol = new G4VisAttributes(G4Colour(0,1,1,0.5));
 
+  m_VisMagnet = new G4VisAttributes(G4Colour(0,0,1,0.2));
+  m_VisYokes = new G4VisAttributes(G4Colour(0,1,0,0.2));
+  m_VisRYokes = new G4VisAttributes(G4Colour(1,0,0,0.2));
+  m_VisPropvol = new G4VisAttributes(G4Colour(0,1,1,0.2));
+
+  // m_VisMagnet = new G4VisAttributes(G4Colour(0,0,1,0.0));
+  // m_VisYokes = new G4VisAttributes(G4Colour(0,1,0,0.0));
+  // m_VisRYokes = new G4VisAttributes(G4Colour(1,0,0,0.0));
+  // m_VisPropvol = new G4VisAttributes(G4Colour(0,1,1,0.0));
+  
   //Logical volumes
   m_Magnet = NULL;
   m_Yoke = NULL;
@@ -213,6 +219,7 @@ G4LogicalVolume* Samurai::BuildMagnet(){
     m_Magnet->SetVisAttributes(m_VisMagnet);
     m_Magnet->SetSensitiveDetector(m_SamuraiScorer);
     cout << "ATTACHING SCORER\n";
+    
   }
   return m_Magnet;
 }
@@ -231,6 +238,7 @@ G4LogicalVolume* Samurai::BuildYoke(){
     //Logical Volume
     m_Yoke = new G4LogicalVolume(yoke, YokeMaterial, "logic_Samurai_yoke",0,0,0);
     m_Yoke->SetVisAttributes(m_VisYokes);
+  
   }
   return m_Yoke;
 }
@@ -405,7 +413,7 @@ void Samurai::SetPropagationRegion(){
   if(!m_PropagationRegion){
     m_PropagationRegion= new G4Region("NPSamuraiFieldPropagation");
     m_PropagationRegion -> AddRootLogicalVolume(BuildPropvol());
-    m_PropagationRegion->SetUserLimits(new G4UserLimits(m_StepSize));
+    m_PropagationRegion->SetUserLimits(new G4UserLimits(m_StepSize));    
   }
   
   G4FastSimulationManager* mng = m_PropagationRegion->GetFastSimulationManager();
diff --git a/NPSimulation/Detectors/Samurai/SamuraiBDC.cc b/NPSimulation/Detectors/Samurai/SamuraiBDC.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4288a4cc5332bc8412c77d78c1b00eb0d3a48fbf
--- /dev/null
+++ b/NPSimulation/Detectors/Samurai/SamuraiBDC.cc
@@ -0,0 +1,455 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2021   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Audrey ANNE  contact address: anne@lpccaen.in2p3.fr      *
+ *                                                                           *
+ * Creation Date  :                                                          *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class describe  Samurai BDCs simulation                             *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ headers
+#include <sstream>
+#include <cmath>
+
+//G4 Geometry object
+#include "G4Box.hh"
+#include "G4Tubs.hh"
+
+//G4 sensitive
+#include "G4SDManager.hh"
+#include "G4MultiFunctionalDetector.hh"
+
+//G4 various object
+#include "G4Material.hh"
+#include "G4Transform3D.hh"
+#include "G4PVPlacement.hh"
+#include "G4VisAttributes.hh"
+#include "G4Colour.hh"
+#include "G4RegionStore.hh"
+
+// NPTool header
+#include "SamuraiBDC.hh"
+#include "RootOutput.h"
+#include "MaterialManager.hh"
+#include "NPSDetectorFactory.hh"
+#include "NPOptionManager.h"
+#include "NPSHitsMap.hh"
+// CLHEP header
+#include "CLHEP/Random/RandGauss.h"
+
+#include "WireScorers.hh"
+
+#include "G4TwoVector.hh"
+#include "G4ExtrudedSolid.hh"
+
+using namespace std;
+using namespace CLHEP;
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+namespace SamuraiBDC_NS{
+  // Samurai magnet construction paramethers
+
+  //Main outer box
+  const double BDC_Width = 94*mm; //(x)
+  const double BDC_Height = 94*mm;//(y)
+  const double BDC_Depth = 90*mm;//(z)
+  const string BDC_Gas = "CH4_60_He_40";
+
+  const double BDC_Temperature = 298.15; // K
+  const double BDC_Pressure = 1.0; //atm
+
+  //Detector Number
+  const short int BDC_DetectorNumber = 1;
+
+  //Wires
+  const double Wire_Length = 80*mm;
+  const double Wire_Diameter = 4.8*mm;
+  const string Wire_Gas = "CH4_60_He_40";
+  const double Wire_Temperature = 298.15; // K 
+  const double Wire_Pressure = 1.0; //atm
+  const int Number_Of_Layer = 8; // from 0 to 7 in the xml file
+  const int Number_Of_Wire_By_Layer = 16; // from 0 to 15 in the xml file
+  const double Drift_Speed = 1.33e-4;//------> FIX ME!!! not important (yet)
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Samurai Specific Method
+SamuraiBDC::SamuraiBDC(){
+
+  //Visualization attributes
+  m_VisBDC = new G4VisAttributes(G4Colour(1,1,0,0.5));
+  //Logical volumes
+  m_BDC1 = NULL;
+  m_BDC2 = NULL;
+ 
+ //Wire
+  m_VisWire = new G4VisAttributes(G4Colour(1.0,0,0.0,1.0));
+  //Logical volumes
+  m_Wire = NULL;
+  //Scorer
+  m_WireScorerBDC = NULL;
+
+  //Data event
+  m_Event = new TSamuraiBDCData;
+
+  //Hexagon
+  m_Hexagon = NULL;
+  
+}
+
+SamuraiBDC::~SamuraiBDC(){
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void SamuraiBDC::AddDetector(G4ThreeVector Mag_Pos, G4ThreeVector Offset, unsigned int det){
+
+    m_position[det] = Mag_Pos + Offset;
+  
+  return;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4LogicalVolume* SamuraiBDC::BuildBDC1(){
+  if(!m_BDC1){
+    //Shape - G4Box
+    G4Box* box = new G4Box("BDC_Box",SamuraiBDC_NS::BDC_Width*0.5,
+			   SamuraiBDC_NS::BDC_Height*0.5,SamuraiBDC_NS::BDC_Depth*0.5);
+
+    //Material - Gas
+    G4Material* Gas = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiBDC_NS::BDC_Gas, SamuraiBDC_NS::BDC_Pressure,SamuraiBDC_NS::BDC_Temperature);
+
+    //Logical Volume
+    m_BDC1 = new G4LogicalVolume(box, Gas, "logic_SamuraiBDC_box",0,0,0);
+    m_BDC1->SetVisAttributes(m_VisBDC);
+  }
+  return m_BDC1;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4LogicalVolume* SamuraiBDC::BuildBDC2(){
+  if(!m_BDC2){
+    //Shape - G4Box
+    G4Box* box = new G4Box("BDC_Box",SamuraiBDC_NS::BDC_Width*0.5,
+			   SamuraiBDC_NS::BDC_Height*0.5,SamuraiBDC_NS::BDC_Depth*0.5);
+
+    //Material - Gas
+    G4Material* Gas = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiBDC_NS::BDC_Gas, SamuraiBDC_NS::BDC_Pressure,SamuraiBDC_NS::BDC_Temperature);
+
+    //Logical Volume
+    m_BDC2 = new G4LogicalVolume(box, Gas, "logic_SamuraiBDC_box",0,0,0);
+    m_BDC2->SetVisAttributes(m_VisBDC);
+  }
+  return m_BDC2;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4LogicalVolume* SamuraiBDC::BuildWire(){
+if(!m_Wire){
+  //Shape - G4Tubs
+  G4Tubs* solidWire = new G4Tubs("BDC_Wire", 0.0, SamuraiBDC_NS::Wire_Diameter*0.5,SamuraiBDC_NS::Wire_Length*0.5, 0., 360.);
+
+  //Material - Gas
+  G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiBDC_NS::Wire_Gas, SamuraiBDC_NS::Wire_Pressure,SamuraiBDC_NS::Wire_Temperature);
+  
+  //Logical Volume
+  m_Wire = new G4LogicalVolume(solidWire, GasWire, "logic_SamuraiWire_tub",0,0,0);
+  m_Wire->SetVisAttributes(m_VisWire);
+  m_Wire->SetSensitiveDetector(m_WireScorerBDC);
+  
+  }
+  return m_Wire;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4LogicalVolume* SamuraiBDC::BuildHexagon(){
+if(!m_Hexagon){
+  //Shape 
+ 
+  const G4int nsect = 6;
+  std::vector<G4TwoVector> polygon(nsect);
+  G4double ang = twopi/nsect;
+
+  G4double dz = SamuraiBDC_NS::Wire_Length*0.5;
+  G4double rmax = SamuraiBDC_NS::Wire_Diameter*0.5;
+  
+  for (G4int i = 0; i < nsect; ++i)
+    {
+      G4double phi = i*ang;
+      G4double cosphi = std::cos(phi);
+      G4double sinphi = std::sin(phi);
+      polygon[i].set(rmax*cosphi, rmax*sinphi);
+    }
+  
+  G4TwoVector offsetA(0,0), offsetB(0,0);
+  G4double scaleA = 1, scaleB = 1;
+  G4VSolid* solidHexagon = new G4ExtrudedSolid("Extruded", polygon, dz, offsetA, scaleA, offsetB, scaleB);
+  
+
+  
+  //Material - Gas
+  G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiBDC_NS::Wire_Gas, SamuraiBDC_NS::Wire_Pressure,SamuraiBDC_NS::Wire_Temperature);
+  
+  //Logical Volume
+  m_Hexagon = new G4LogicalVolume(solidHexagon, GasWire, "logic_SamuraiWire_tub",0,0,0);
+  m_Hexagon->SetVisAttributes(m_VisWire);
+  m_Hexagon->SetSensitiveDetector(m_WireScorerBDC);
+  
+  }
+  return m_Hexagon;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Virtual Method of NPS::VDetector class
+// Read stream at Configfile to pick-up parameters of detector (Position,...)
+// (Called in DetecorConstruction::ReadDetectorConfiguration Method)
+void SamuraiBDC::ReadConfiguration(NPL::InputParser parser){
+  
+  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("SAMURAIBDC");
+  if(NPOptionManager::getInstance()->GetVerboseLevel())
+    cout << "//// " << blocks.size() << " BDC detector(s) found " << endl;
+  
+  vector<string> xml = {"XML","Offset", "InvertX","InvertY","InvertD"};
+
+  G4ThreeVector Mag_Pos;
+  G4ThreeVector Offset;
+  
+  for(unsigned int i = 0 ; i < blocks.size() ; i++){
+    if(blocks[i]->HasTokenList(xml))
+      {
+	cout << endl << "////  Samurai BDC (" << i+1 << ")" << endl;
+	unsigned int det = std::atoi(blocks[i]->GetMainValue().c_str());//1 or 2
+	string xml_file = blocks[i]->GetString("XML");
+	Offset = NPS::ConvertVector(blocks[i]->GetTVector3("Offset", "mm"));
+	bool invert_x = blocks[i]->GetInt("InvertX"); 
+	bool invert_y = blocks[i]->GetInt("InvertY"); 
+	bool invert_d = blocks[i]->GetInt("InvertD"); 
+	m_offset[det] = Offset;
+	m_invertX[det] = invert_x;
+	m_invertY[det] = invert_y;
+	m_invertD[det] = invert_d;
+	ReadXML(xml_file,Offset,invert_y,invert_y,det);
+	AddDetector(Mag_Pos, Offset, det);
+      }
+
+    else{
+      cout << "ERROR: check your XML input file for BDC detector" << endl;
+      exit(1);
+    }//end exception  
+
+  }
+     
+}//end read configuration
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//////////////////// nouveau ///////////////////
+void SamuraiBDC::ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY,unsigned int det){ 
+  NPL::XmlParser xml;
+  xml.LoadFile(xml_file);
+
+  std::string name = "SAMURAIBDC"+NPL::itoa(det);
+  std::vector<NPL::XML::block*> b = xml.GetAllBlocksWithName(name);
+
+  int NumberOfWires=0;
+  for(unsigned int i = 0 ; i < b.size() ; i++){
+    NumberOfWires++;
+
+    // Wire ID in general
+    auto ID  = b[i]->AsInt("ID");
+
+    // Layer Number
+    auto LayerNbr = b[i]->AsInt("layer");
+    
+    // Wire direction
+    auto DirectionWire = b[i]->AsString("anodedir");
+    //Wire id in the layer
+    auto WireNbr  = b[i]->AsInt("wireid");
+
+    //Wire x or y position
+    auto PositionXY = b[i]->AsDouble("wirepos");
+    auto PositionZ = b[i]->AsDouble("wirez");
+
+    if(det==1)
+      {
+	// position wire and direction wire for BDC1
+	if(DirectionWire.find("Y")==std::string::npos){ // if not horizontal
+	  m_PositionWire1[ID] = G4ThreeVector(PositionXY,0.0,PositionZ);
+	  m_IsHorizontal1[ID] = false;
+	}
+	else {
+	  m_PositionWire1[ID] = G4ThreeVector(0.0,PositionXY,PositionZ);
+	  m_IsHorizontal1[ID] = true;
+	}
+	
+	m_LayerNbr1[ID] = LayerNbr;
+	m_WireNbr1[ID] = WireNbr;
+      }//end det==1
+
+    else if(det==2)
+      {
+	// position wire and direction wire for BDC2
+	if(DirectionWire.find("Y")==std::string::npos){ // if not horizontal
+	  m_PositionWire2[ID] = G4ThreeVector(PositionXY,0.0,PositionZ);
+	  m_IsHorizontal2[ID] = false;
+	}
+	else {
+	  m_PositionWire2[ID] = G4ThreeVector(0.0,PositionXY,PositionZ);
+	  m_IsHorizontal2[ID] = true;
+	}
+	
+	m_LayerNbr2[ID] = LayerNbr;
+	m_WireNbr2[ID] = WireNbr;
+
+      }//end det==2
+    
+  } //end of for loop
+  cout << " -> " << NumberOfWires << " wires found for BDC" <<det << endl;
+
+}//end of ReadXML
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Construct detector and inialise sensitive part.
+// (Called After DetectorConstruction::AddDetector Method)
+void SamuraiBDC::ConstructDetector(G4LogicalVolume* world){
+
+  G4RotationMatrix* Rot = new G4RotationMatrix();
+    
+  new G4PVPlacement(0, m_position[1],
+		    BuildBDC1(), "SAMURAIBDC1" , world, false, 1);
+
+  new G4PVPlacement(0, m_position[2],
+		    BuildBDC2(), "SAMURAIBDC2" , world, false, 2);
+  
+  for(auto pos1 : m_PositionWire1){    
+    if(m_IsHorizontal1[pos1.first])
+      {
+	Rot->rotateY(90.*deg);
+      }
+    else {
+      Rot->rotateX(90.*deg);
+      }
+
+    new G4PVPlacement(G4Transform3D(*Rot,pos1.second),
+            BuildWire(),
+		      "WireModule", m_BDC1,false,pos1.first);
+    Rot->set(0,0,0);
+  }// end for loop on wires BDC1
+
+  for(auto pos2 : m_PositionWire2){  
+    if(m_IsHorizontal2[pos2.first])
+      {
+	Rot->rotateY(90.*deg);
+      }
+    else Rot->rotateX(90.*deg);
+    	
+    new G4PVPlacement(G4Transform3D(*Rot,pos2.second),
+            BuildWire(),
+            "WireModule", m_BDC2 ,false,pos2.first);
+    Rot->set(0,0,0);
+  }// end for loop on wires BDC2
+  
+  return;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Add Detector branch to the EventTree.
+// Called After DetecorConstruction::AddDetector Method
+void SamuraiBDC::InitializeRootOutput(){
+  RootOutput *pAnalysis = RootOutput::getInstance();
+  TTree *pTree = pAnalysis->GetTree();
+  if(!pTree->FindBranch("SamuraiBDC")){
+    pTree->Branch("SamuraiBDC", "TSamuraiBDCData", &m_Event) ;
+  }
+  pTree->SetBranchAddress("SamuraiBDC", &m_Event);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+// Read sensitive part and fill the Root tree.
+// (Called at in the EventAction::EndOfEventAvtion)
+
+void SamuraiBDC::ReadSensitive(const G4Event* event){
+  
+  m_Event->Clear();
+  //Interaction Scorer
+  WireScorers::PS_Wire* WireScorerBDC= (WireScorers::PS_Wire*) m_WireScorerBDC->GetPrimitive(0);
+
+  unsigned int sizeWire =WireScorerBDC->GetMult();
+  for(unsigned int i = 0 ; i < sizeWire ; i++)
+    {
+      int layer = WireScorerBDC->GetLayerNumber(i);
+      int wireNbr = WireScorerBDC->GetWireNumber(i);
+      double time = WireScorerBDC->GetTime(i);
+      int edge = WireScorerBDC->GetEdge(i);
+      double DriftLength = WireScorerBDC->GetDriftLength(i);
+      int DetectorNumber = WireScorerBDC->GetDetectorNumber(i);    
+      m_Event->SetData(DetectorNumber, layer, wireNbr, DriftLength, edge);
+    }
+  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......  
+void SamuraiBDC::InitializeScorers() { 
+  // This check is necessary in case the geometry is reloaded
+  bool already_exist = false; 
+  m_WireScorerBDC = CheckScorer("WireScorerBDC",already_exist) ;
+ 
+  if(already_exist) 
+    return;
+
+  // Otherwise the scorer is initialised
+  vector<int> level; level.push_back(0);
+  
+  //Wire
+  G4VPrimitiveScorer* InteractionWireBDC= new WireScorers::PS_Wire("WS_BDC",level, SamuraiBDC_NS::Number_Of_Layer,SamuraiBDC_NS::Number_Of_Wire_By_Layer,SamuraiBDC_NS::Drift_Speed, m_WireAngle1) ;
+  m_WireScorerBDC->RegisterPrimitive(InteractionWireBDC);
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_WireScorerBDC) ;
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+////////////////////////////////////////////////////////////////////////////////
+//            Construct Method to be pass to the DetectorFactory              //
+////////////////////////////////////////////////////////////////////////////////
+
+NPS::VDetector* SamuraiBDC::Construct(){
+  return  (NPS::VDetector*) new SamuraiBDC();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+////////////////////////////////////////////////////////////////////////////////
+//            Registering the construct method to the factory                 //
+////////////////////////////////////////////////////////////////////////////////
+extern"C" {
+  class proxy_nps_samuraiBDC{
+    public:
+      proxy_nps_samuraiBDC(){
+        NPS::DetectorFactory::getInstance()->AddToken("SAMURAIBDC","SAMURAIBDC");
+        NPS::DetectorFactory::getInstance()->AddDetector("SAMURAIBDC",SamuraiBDC::Construct);
+      }
+  };
+  
+  proxy_nps_samuraiBDC p_nps_samuraiBDC;
+}
+
+
diff --git a/NPSimulation/Detectors/Samurai/SamuraiBDC.hh b/NPSimulation/Detectors/Samurai/SamuraiBDC.hh
new file mode 100644
index 0000000000000000000000000000000000000000..7cf02368f64e629edf49bbd8064ece4bb4e309da
--- /dev/null
+++ b/NPSimulation/Detectors/Samurai/SamuraiBDC.hh
@@ -0,0 +1,151 @@
+#ifndef Samurai_h
+#define Samurai_h 1
+/*****************************************************************************
+ * Copyright (C) 2009-2021   this file is part of the NPTool Project       *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Audrey ANNE  contact address: anne@lpccaen.in2p3.fr      *
+ *                                                                           *
+ * Creation Date  :                                                          *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class describe  Samurai BDCs simulation                             *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ header
+#include <string>
+#include <vector>
+#include <stdlib.h>
+using namespace std;
+
+// G4 headers
+#include "G4ThreeVector.hh"
+#include "G4RotationMatrix.hh"
+#include "G4LogicalVolume.hh"
+#include "G4MultiFunctionalDetector.hh"
+#include "G4VSolid.hh"
+
+// NPTool header
+#include "NPSVDetector.hh"
+#include "NPInputParser.h"
+#include "NPXmlParser.h"
+#include "NPCore.h"
+#include "TSamuraiBDCData.h"
+
+class SamuraiBDC : public NPS::VDetector{
+  ////////////////////////////////////////////////////
+  /////// Default Constructor and Destructor /////////
+  ////////////////////////////////////////////////////
+  public:
+    SamuraiBDC() ;
+    virtual ~SamuraiBDC() ;
+
+    ////////////////////////////////////////////////////
+    /////// Specific Function of this Class ///////////
+    ////////////////////////////////////////////////////
+  public:
+  
+    // Cartezian BDC
+    void AddDetector(G4ThreeVector Mag_Pos, G4ThreeVector Offset, unsigned int det);
+    void ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY, unsigned int det);
+
+    G4LogicalVolume* BuildBDC1();
+    G4LogicalVolume* BuildBDC2();
+    G4LogicalVolume* BuildWire();
+    G4LogicalVolume* BuildHexagon();
+
+  private:
+  
+    //Logical Volume
+
+    //BDC1
+    std::map<unsigned int , G4ThreeVector> m_PositionWire1;
+    std::map<unsigned int , int> m_LayerNbr1;
+    std::map<unsigned int , int> m_WireNbr1;
+    std::map<unsigned int , bool> m_IsHorizontal1;
+    std::map<unsigned int , double> m_WireAngle1; 
+
+    //BDC2
+    std::map<unsigned int , G4ThreeVector> m_PositionWire2;
+    std::map<unsigned int , int> m_LayerNbr2; 
+    std::map<unsigned int , int> m_WireNbr2; 
+    std::map<unsigned int , bool> m_IsHorizontal2;
+    std::map<unsigned int , double> m_WireAngle2;
+  
+    G4LogicalVolume* m_BDC1; 
+    G4LogicalVolume* m_BDC2; 
+    G4LogicalVolume* m_Wire;
+
+    G4LogicalVolume* m_Hexagon;
+  
+    ////////////////////////////////////////////////////
+    //////  Inherite from NPS::VDetector class /////////
+    ////////////////////////////////////////////////////
+  public:
+    // Read stream at Configfile to pick-up parameters of detector (Position,...)
+    // Called in DetecorConstruction::ReadDetectorConfiguration Method
+    void ReadConfiguration(NPL::InputParser) ;
+
+    // Construct detector and initialise sensitive part.
+    // (Called After DetecorConstruction::AddDetector Method)
+    void ConstructDetector(G4LogicalVolume* world) ;
+
+    // Add Detector branch to the EventTree.
+    // (Called After DetecorConstruction::AddDetector Method)
+    void InitializeRootOutput() ;
+
+    // Read sensitive part and fill the Root tree.
+    // (Called at in the EventAction::EndOfEventAction)
+    void ReadSensitive(const G4Event* event) ;
+
+  public:
+    // Scorer
+    // Initialize the scorer(s) used by the BDC detector
+    void InitializeScorers() ;
+
+    // Associated Scorer
+    G4MultiFunctionalDetector* m_WireScorerBDC ;
+  
+    ////////////////////////////////////////////////////
+    ///////////Event class to store Data////////////////
+    ////////////////////////////////////////////////////
+  private:
+    TSamuraiBDCData* m_Event;
+    ////////////////////////////////////////////////////
+
+    ////////////////////////////////////////////////////
+    ///////////////Private intern Data//////////////////
+    ////////////////////////////////////////////////////
+  private:
+    //Detector coordinates
+    std::map<unsigned int, G4ThreeVector> m_position;//!
+    std::map<unsigned int, G4ThreeVector> m_offset;//!
+    std::map<unsigned int, bool> m_invertX;//!
+    std::map<unsigned int, bool> m_invertY;//!
+    std::map<unsigned int, bool> m_invertD;//!
+
+    // Visualisation Attributes
+    G4VisAttributes* m_VisBDC;
+    G4VisAttributes* m_VisWire;
+
+  // Needed for dynamic loading of the library
+  public:
+    static NPS::VDetector* Construct();
+};
+#endif
+
+
+
+
+
+
+
diff --git a/NPSimulation/Detectors/Samurai/SamuraiFDC0.cc b/NPSimulation/Detectors/Samurai/SamuraiFDC0.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a2bb64c33f8be5b0a04ca9a5a93db79e8af2b5c2
--- /dev/null
+++ b/NPSimulation/Detectors/Samurai/SamuraiFDC0.cc
@@ -0,0 +1,390 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2021   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Audrey Anne  contact address: anne@lpccaen.in2p3.fr      *
+ *                                                                           *
+ * Creation Date  : january 2024                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class describe  SamuraiFDC0 simulation                              *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ headers
+#include <sstream>
+#include <cmath>
+//G4 Geometry object
+#include "G4Box.hh"
+#include "G4Tubs.hh"
+
+//G4 sensitive
+#include "G4SDManager.hh"
+#include "G4MultiFunctionalDetector.hh"
+
+//G4 various object
+#include "G4Material.hh"
+#include "G4Transform3D.hh"
+#include "G4PVPlacement.hh"
+#include "G4VisAttributes.hh"
+#include "G4Colour.hh"
+#include "G4RegionStore.hh"
+
+// NPTool header
+#include "SamuraiFDC0.hh"
+#include "InteractionScorers.hh"
+#include "RootOutput.h"
+#include "MaterialManager.hh"
+#include "NPSDetectorFactory.hh"
+#include "NPOptionManager.h"
+#include "NPSHitsMap.hh"
+// CLHEP header
+#include "CLHEP/Random/RandGauss.h"
+
+#include "WireScorers.hh"
+
+#include "G4TwoVector.hh"
+#include "G4ExtrudedSolid.hh"
+
+using namespace std;
+using namespace CLHEP;
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+namespace SamuraiFDC0_NS{
+
+  //Main outer box
+  // const double FDC0_Width = 160*mm; //(x)
+  // const double FDC0_Height = 160*mm;//(y)
+  // const double FDC0_Depth = 160*mm;//(z)
+
+  const double FDC0_Width = 170*mm; //(x)
+  const double FDC0_Height = 170*mm;//(y)
+  const double FDC0_Depth = 170*mm;//(z)
+
+  const string FDC0_Gas = "CH4_60_He_40";
+  const double FDC0_Temperature = 298.15; // K
+  const double FDC0_Pressure = 1.0; //atm
+
+  //Detector Number
+  const short int FDC0_DetectorNumber = 0;
+
+  //Wires
+  const double Wire_Length = 150*mm;
+  const double Wire_Diameter = 5*mm;
+  const string Wire_Gas = "CH4_60_He_40";
+  const double Wire_Temperature = 298.15; // K 
+  const double Wire_Pressure = 1.0; //atm 
+
+  const int Number_Of_Layer = 8; // from 0 to 7 in the xml file
+  const int Number_Of_Wire_By_Layer = 32; // from 0 to 31 in the xml file
+  const double Drift_Speed = 1.33e-4; //------> FIX ME!!! not important (yet)
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Samurai Specific Method
+SamuraiFDC0::SamuraiFDC0(){
+
+  //Visualization attributes
+
+  //Main box
+  m_VisFDC0 = new G4VisAttributes(G4Colour(0.0,1.0,0,0.1));
+  //Logical volumes
+  m_FDC0 = NULL;
+
+  //Wire
+  m_VisWire = new G4VisAttributes(G4Colour(1.0,0,0.0,1.0));
+  //Logical volumes
+  m_Wire = NULL;
+  //Scorer
+  m_WireScorerFDC0 = NULL;
+
+  //Data event
+  m_Event = new TSamuraiFDC0Data; 
+  
+  //Hexagon
+  m_Hexagon = NULL;
+}
+
+SamuraiFDC0::~SamuraiFDC0(){
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void SamuraiFDC0::AddDetector(G4ThreeVector Mag_Pos, G4ThreeVector Offset){
+
+  m_Pos = Mag_Pos + Offset;
+
+  return;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4LogicalVolume* SamuraiFDC0::BuildFDC0(){
+  if(!m_FDC0){
+    //Shape - G4Box
+    G4Box* box = new G4Box("FDC0_Box",SamuraiFDC0_NS::FDC0_Width*0.5,
+			   SamuraiFDC0_NS::FDC0_Height*0.5,SamuraiFDC0_NS::FDC0_Depth*0.5);
+
+    //Material - Gas
+    G4Material* Gas = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC0_NS::FDC0_Gas, SamuraiFDC0_NS::FDC0_Pressure,SamuraiFDC0_NS::FDC0_Temperature);
+
+    //Logical Volume
+    m_FDC0 = new G4LogicalVolume(box, Gas , "logic_SamuraiFDC0_box",0,0,0);
+    m_FDC0->SetVisAttributes(m_VisFDC0);
+  }
+  return m_FDC0;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4LogicalVolume* SamuraiFDC0::BuildWire(){
+if(!m_Wire){
+  //Shape - G4Tubs
+  G4Tubs* solidWire = new G4Tubs("FDC0_Wire", 0.0, SamuraiFDC0_NS::Wire_Diameter*0.5,SamuraiFDC0_NS::Wire_Length*0.5, 0., 360.);
+
+  //Material - Gas
+  G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC0_NS::Wire_Gas, SamuraiFDC0_NS::Wire_Pressure,SamuraiFDC0_NS::Wire_Temperature);
+  //Logical Volume
+  m_Wire = new G4LogicalVolume(solidWire, GasWire, "logic_SamuraiWire_tub",0,0,0);
+  m_Wire->SetVisAttributes(m_VisWire);
+  m_Wire->SetSensitiveDetector(m_WireScorerFDC0);
+  
+  }
+  return m_Wire;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4LogicalVolume* SamuraiFDC0::BuildHexagon(){
+if(!m_Hexagon){
+  //Shape 
+ 
+  const G4int nsect = 6;
+  std::vector<G4TwoVector> polygon(nsect);
+  G4double ang = twopi/nsect;
+
+  G4double dz = SamuraiFDC0_NS::Wire_Length*0.5;
+  G4double rmax = SamuraiFDC0_NS::Wire_Diameter*0.5;
+  
+  for (G4int i = 0; i < nsect; ++i)
+    {
+      G4double phi = i*ang;
+      G4double cosphi = std::cos(phi);
+      G4double sinphi = std::sin(phi);
+      polygon[i].set(rmax*cosphi, rmax*sinphi);
+    }
+  
+  G4TwoVector offsetA(0,0), offsetB(0,0);
+  G4double scaleA = 1, scaleB = 1;
+  G4VSolid* solidHexagon = new G4ExtrudedSolid("Extruded", polygon, dz, offsetA, scaleA, offsetB, scaleB);
+  
+
+  
+  //Material - Gas
+  G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC0_NS::Wire_Gas, SamuraiFDC0_NS::Wire_Pressure,SamuraiFDC0_NS::Wire_Temperature);
+  
+  //Logical Volume
+  m_Hexagon = new G4LogicalVolume(solidHexagon, GasWire, "logic_SamuraiWire_tub",0,0,0);
+  m_Hexagon->SetVisAttributes(m_VisWire);
+  m_Hexagon->SetSensitiveDetector(m_WireScorerFDC0);
+  
+  }
+  return m_Hexagon;
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Virtual Method of NPS::VDetector class
+// Read stream at Configfile to pick-up parameters of detector (Position,...)
+// (Called in DetecorConstruction::ReadDetectorConfiguration Method)
+void SamuraiFDC0::ReadConfiguration(NPL::InputParser parser){
+  
+  vector<NPL::InputBlock*> blocks2 = parser.GetAllBlocksWithToken("SAMURAIFDC0");
+
+  if(blocks2.size()==1){
+    if(NPOptionManager::getInstance()->GetVerboseLevel()) {
+      cout << "/////// Samurai FDC0 found ///////" << endl;
+    }
+
+    vector<string> xml = {"XML","Offset", "InvertX","InvertY","InvertD"};
+
+    G4ThreeVector Mag_Pos;
+    G4ThreeVector Offset;
+     
+    if(blocks2[0]->HasTokenList(xml)){
+      if(NPOptionManager::getInstance()->GetVerboseLevel())
+        cout << endl << "////  FDC0 XML file " <<  endl;
+      string xml_file = blocks2[0]->GetString("XML");
+      Offset = NPS::ConvertVector(blocks2[0]->GetTVector3("Offset", "mm"));
+      bool invert_x = blocks2[0]->GetInt("InvertX");
+      bool invert_y = blocks2[0]->GetInt("InvertY");
+      bool invert_z = blocks2[0]->GetInt("InvertD");
+      ReadXML(xml_file,Offset,invert_x,invert_y);
+    }
+    
+    AddDetector(Mag_Pos, Offset);
+
+  }
+  else{
+    cout << "ERROR for FDC0: check your input file " << endl;
+    exit(1);
+  }
+     
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//////////////////// nouveau ///////////////////
+void SamuraiFDC0::ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY){ 
+  NPL::XmlParser xml;
+  xml.LoadFile(xml_file);
+
+  std::vector<NPL::XML::block*> b = xml.GetAllBlocksWithName("SAMURAIFDC0");
+  int NumberOfWires=0;
+  for(unsigned int i = 0 ; i < b.size() ; i++){
+    NumberOfWires++;
+
+    // Wire ID in general
+    auto ID  = b[i]->AsInt("ID");
+
+    // Layer Number
+    auto LayerNbr = b[i]->AsInt("layer");
+    
+    // Wire direction
+    auto DirectionWire = b[i]->AsString("anodedir");
+    //Wire id in the layer
+    auto WireNbr  = b[i]->AsInt("wireid");
+
+    //Wire x or y position
+    auto PositionXY = b[i]->AsDouble("wirepos");
+    auto PositionZ = b[i]->AsDouble("wirez");
+
+    // position wire and direction wire
+    if(DirectionWire.find("Y")==std::string::npos){ // if not horizontal
+      m_PositionWire[ID] = G4ThreeVector(PositionXY,0.0,PositionZ);
+      m_IsHorizontal[ID] = false;
+    }
+    else { // if horizontal
+      m_PositionWire[ID] = G4ThreeVector(0.0,PositionXY,PositionZ);
+      m_IsHorizontal[ID] = true;
+    }
+
+    m_LayerNbr[ID] = LayerNbr;
+    m_WireNbr[ID] = WireNbr;
+        
+  } //end of for loop
+  cout << " -> " << NumberOfWires << " wires found for FDC0" << endl;
+
+}//end of ReadXML
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Construct detector and inialise sensitive part.
+// (Called After DetectorConstruction::AddDetector Method)
+void SamuraiFDC0::ConstructDetector(G4LogicalVolume* world){
+
+  G4RotationMatrix* Rot = new G4RotationMatrix();
+  
+  new G4PVPlacement(0, m_Pos,
+          BuildFDC0(), "SamuraiFDC0", world, false, 0);
+  
+  for(auto pos : m_PositionWire){ //loop on FDC0 wires
+    
+    if(m_IsHorizontal[pos.first]){
+	Rot->rotateY(90.*deg);
+
+	
+      }
+    else Rot->rotateX(90.*deg);
+	
+    new G4PVPlacement(G4Transform3D(*Rot,pos.second),BuildWire(),
+		      "WireModule",m_FDC0,false,pos.first);
+    Rot->set(0,0,0);
+  }// end for loop on wires
+  
+  return;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Add Detector branch to the EventTree.
+// Called After DetecorConstruction::AddDetector Method
+void SamuraiFDC0::InitializeRootOutput(){
+  RootOutput *pAnalysis = RootOutput::getInstance();
+  TTree *pTree = pAnalysis->GetTree();
+  
+  if(!pTree->FindBranch("SamuraiFDC0")){
+    pTree->Branch("SamuraiFDC0", "TSamuraiFDC0Data", &m_Event) ;
+  }
+  pTree->SetBranchAddress("SamuraiFDC0", &m_Event);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Read sensitive part and fill the Root tree.
+// (Called at in the EventAction::EndOfEventAvtion)
+void SamuraiFDC0::ReadSensitive(const G4Event* event){
+  
+  m_Event->Clear();
+
+  WireScorers::PS_Wire* WireScorerFDC0= (WireScorers::PS_Wire*) m_WireScorerFDC0->GetPrimitive(0);
+
+  unsigned int sizeWire =WireScorerFDC0->GetMult();
+  for(unsigned int i = 0 ; i < sizeWire ; i++)
+    {
+      int layer = WireScorerFDC0->GetLayerNumber(i);
+      int wireNbr = WireScorerFDC0->GetWireNumber(i);
+      double time = WireScorerFDC0->GetTime(i);
+      int edge = WireScorerFDC0->GetEdge(i);
+      double DriftLength = WireScorerFDC0->GetDriftLength(i);
+      
+      m_Event->SetData(SamuraiFDC0_NS::FDC0_DetectorNumber, layer,
+		       wireNbr, DriftLength, edge);// driftlength instead of time
+    }
+  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......  
+void SamuraiFDC0::InitializeScorers() { 
+  // This check is necessary in case the geometry is reloaded
+  bool already_exist = false; 
+  m_WireScorerFDC0 = CheckScorer("WireScorerFDC0",already_exist);
+  if(already_exist) 
+    return;
+
+  // Otherwise the scorer is initialised
+  vector<int> level; level.push_back(0);
+  //Wire
+  G4VPrimitiveScorer* InteractionWire= new WireScorers::PS_Wire("WS_FDC0",level, SamuraiFDC0_NS::Number_Of_Layer,SamuraiFDC0_NS::Number_Of_Wire_By_Layer,SamuraiFDC0_NS::Drift_Speed, m_WireAngle) ;
+  m_WireScorerFDC0->RegisterPrimitive(InteractionWire);
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_WireScorerFDC0) ;
+  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+////////////////////////////////////////////////////////////////////////////////
+//            Construct Method to be pass to the DetectorFactory              //
+////////////////////////////////////////////////////////////////////////////////
+NPS::VDetector* SamuraiFDC0::Construct(){
+  return  (NPS::VDetector*) new SamuraiFDC0();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+////////////////////////////////////////////////////////////////////////////////
+//            Registering the construct method to the factory                 //
+////////////////////////////////////////////////////////////////////////////////
+extern"C" {
+  class proxy_nps_samuraiFDC0{
+    public:
+      proxy_nps_samuraiFDC0(){
+        NPS::DetectorFactory::getInstance()->AddToken("SAMURAIFDC0","SAMURAIFDC0");
+        NPS::DetectorFactory::getInstance()->AddDetector("SAMURAIFDC0",SamuraiFDC0::Construct);
+      }
+  };
+  
+  proxy_nps_samuraiFDC0 p_nps_samuraiFDC0;
+}
+
+
diff --git a/NPSimulation/Detectors/Samurai/SamuraiFDC0.hh b/NPSimulation/Detectors/Samurai/SamuraiFDC0.hh
new file mode 100644
index 0000000000000000000000000000000000000000..249954b77bfaf0d6e211aab2dfac8a17a8a8ffd4
--- /dev/null
+++ b/NPSimulation/Detectors/Samurai/SamuraiFDC0.hh
@@ -0,0 +1,134 @@
+#ifndef Samurai_h
+#define Samurai_h 1
+/*****************************************************************************
+ * Copyright (C) 2009-2021   this file is part of the NPTool Project       *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Audrey Anne  contact address: anne@lpccaen.in2p3.fr      *
+ *                                                                           *
+ * Creation Date  : january 2024                                             *
+ * Last update    : june 2024                                                *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class describe  SamuraiFDC0 simulation                                  *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ header
+#include <string>
+#include <vector>
+using namespace std;
+
+// G4 headers
+#include "G4ThreeVector.hh"
+#include "G4RotationMatrix.hh"
+#include "G4LogicalVolume.hh"
+#include "G4MultiFunctionalDetector.hh"
+#include "G4VSolid.hh"
+
+// NPTool header
+#include "NPSVDetector.hh"
+#include "NPInputParser.h"
+#include "NPXmlParser.h"
+
+#include "TSamuraiFDC0Data.h"
+
+class SamuraiFDC0 : public NPS::VDetector{
+  ////////////////////////////////////////////////////
+  /////// Default Constructor and Destructor /////////
+  ////////////////////////////////////////////////////
+  public:
+    SamuraiFDC0() ;
+    virtual ~SamuraiFDC0() ;
+
+    ////////////////////////////////////////////////////
+    /////// Specific Function of this Class ///////////
+    ////////////////////////////////////////////////////
+  public:
+  
+    // Cartezian FDC0
+    void AddDetector(G4ThreeVector Mag_Pos, G4ThreeVector Offset);
+    void ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY);
+
+    G4LogicalVolume* BuildFDC0();
+    G4LogicalVolume* BuildWire();
+    G4LogicalVolume* BuildHexagon();
+  
+  private:
+  
+    //Logical Volume
+    std::map<unsigned int , G4ThreeVector> m_PositionWire; 
+    std::map<unsigned int , int> m_LayerNbr;
+    std::map<unsigned int , int> m_WireNbr;
+    std::map<unsigned int , double> m_WireAngle;
+    std::map<unsigned int , bool> m_IsHorizontal;
+  
+    G4LogicalVolume* m_FDC0;
+    G4LogicalVolume* m_Wire;
+    G4LogicalVolume* m_Hexagon;
+    
+    ////////////////////////////////////////////////////
+    //////  Inherite from NPS::VDetector class /////////
+    ////////////////////////////////////////////////////
+  public:
+    // Read stream at Configfile to pick-up parameters of detector (Position,...)
+    // Called in DetecorConstruction::ReadDetectorConfiguration Method
+    void ReadConfiguration(NPL::InputParser) ;
+
+    // Construct detector and initialise sensitive part.
+    // (Called After DetecorConstruction::AddDetector Method)
+    void ConstructDetector(G4LogicalVolume* world) ;
+
+    // Add Detector branch to the EventTree.
+    // (Called After DetecorConstruction::AddDetector Method)
+    void InitializeRootOutput() ;
+
+    // Read sensitive part and fill the Root tree.
+    // (Called at in the EventAction::EndOfEventAction)
+    void ReadSensitive(const G4Event* event) ;
+
+  public:
+    // Scorer
+    // Initialize the scorer(s) used by the FDC0 detector
+    void InitializeScorers() ;
+
+    //   Associated Scorer
+    G4MultiFunctionalDetector* m_WireScorerFDC0;
+  
+    ////////////////////////////////////////////////////
+    ///////////Event class to store Data////////////////
+    ////////////////////////////////////////////////////
+  private:
+   
+    TSamuraiFDC0Data* m_Event;
+
+    ////////////////////////////////////////////////////
+    ///////////////Private intern Data//////////////////
+    ////////////////////////////////////////////////////
+  private:
+    //Detector coordinates
+    G4ThreeVector m_Pos;
+
+    // Visualisation Attributes
+    G4VisAttributes* m_VisFDC0;
+    G4VisAttributes* m_VisWire;
+  
+  // Needed for dynamic loading of the library
+  public:
+    static NPS::VDetector* Construct();
+};
+#endif
+
+
+
+
+
+
+
diff --git a/NPSimulation/Detectors/Samurai/SamuraiFDC2.cc b/NPSimulation/Detectors/Samurai/SamuraiFDC2.cc
index e403e631735fbbcd135259176de575dc2a8fa28d..122a9eab125f9ef56d29f161c1bf5a1951ac54c0 100644
--- a/NPSimulation/Detectors/Samurai/SamuraiFDC2.cc
+++ b/NPSimulation/Detectors/Samurai/SamuraiFDC2.cc
@@ -6,13 +6,13 @@
  *****************************************************************************/
 
 /*****************************************************************************
- * Original Author: Omar Nasr  contact address: omar.h.nasr@outlook.com      *
+ * Original Author: Audrey ANNE  contact address: anne@lpccaen.in2p3.fr      *
  *                                                                           *
- * Creation Date  : septembre 2021                                           *
- * Last update    : septembre 2021                                           *
+ * Creation Date  :                                                          *
+ * Last update    : august 2024                                              *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class describe  Samurai simulation                                  *
+ *  This class describe  SamuraiFDC2 simulation                              *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
@@ -37,9 +37,12 @@
 #include "G4Colour.hh"
 #include "G4RegionStore.hh"
 
+#include "G4Tubs.hh"
+#include "G4SubtractionSolid.hh"
+#include "G4IntersectionSolid.hh"
+
 // NPTool header
 #include "SamuraiFDC2.hh"
-//#include "CalorimeterScorers.hh"
 #include "InteractionScorers.hh"
 #include "RootOutput.h"
 #include "MaterialManager.hh"
@@ -49,6 +52,8 @@
 // CLHEP header
 #include "CLHEP/Random/RandGauss.h"
 
+#include "WireScorers.hh"
+
 using namespace std;
 using namespace CLHEP;
 
@@ -58,14 +63,29 @@ namespace SamuraiFDC2_NS{
   // Samurai magnet construction paramethers
 
   //Main outer box
-  const double FDC2_Width = 2616*mm; //(x)
-  const double FDC2_Height = 1156*mm;//(y)
-  const double FDC2_Depth = 876*mm;//(z)
-  const string FDC2_Material = "G4_Galactic"; 
+  const double FDC2_Width = 2296*mm; //(x)
+  const double FDC2_Height = 836*mm;//(y)
+  const double FDC2_Depth = 650*mm;//(z)
+  const string FDC2_Material_Void = "G4_Galactic";
+
+  const string FDC2_Gas = "CH4_60_He_40";
+  const double FDC2_Temperature = 298.15; // K
+  const double FDC2_Pressure = 1.0; //atm
 
   //Detector Number
   const short int FDC2_DetectorNumber = 2;
 
+  //Wires
+  const double Wire_length = 3000*mm;
+  const double Wire_diameter = 19.99*mm;
+  const string Wire_Gas = "CH4_60_He_40";
+  const double Wire_Temperature = 298.15; // K 
+  const double Wire_Pressure = 1.0; //atm
+
+  const int Number_Of_Layer = 14; // from 0 to 13 in the xml file
+  const int Number_Of_Wire_By_Layer = 112; // from 0 to 111 in the xml file
+  const double Drift_Speed = 1.33e-4; //------> FIX ME!!! not important (yet)
+
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -74,14 +94,20 @@ namespace SamuraiFDC2_NS{
 SamuraiFDC2::SamuraiFDC2(){
 
   //Visualization attributes
-  m_VisFDC2 = new G4VisAttributes(G4Colour(1,0,1,0.5));
+  m_VisFDC2 = new G4VisAttributes(G4Colour(1,0,1,0.3));
   //Logical volumes
   m_FDC2 = NULL;
+
+  //Wire
+  m_VisWire = new G4VisAttributes(G4Colour(1.0,0,0.0,0.7));
+  //Logical volumes
+  m_Wire = NULL;
   //Scorer
-  m_FDC2Scorer = NULL;
-  //Ideal Data event
-  m_Event = new TSamuraiIdealData;
+  m_WireScorerFDC2 = NULL;
 
+  //Data event
+  m_Event = new TSamuraiFDC2Data;
+  
 }
 
 SamuraiFDC2::~SamuraiFDC2(){
@@ -94,7 +120,7 @@ void SamuraiFDC2::AddDetector(G4ThreeVector Mag_Pos, double Mag_Angle, G4ThreeVe
 
   Offset.rotateY(-(m_Angle));
   m_Pos = Mag_Pos + Offset;
-
+  
   return;
 }
 
@@ -105,19 +131,41 @@ G4LogicalVolume* SamuraiFDC2::BuildFDC2(){
     //Shape - G4Box
     G4Box* box = new G4Box("FDC2_Box",SamuraiFDC2_NS::FDC2_Width*0.5,
 			   SamuraiFDC2_NS::FDC2_Height*0.5,SamuraiFDC2_NS::FDC2_Depth*0.5);
-  
-    //Material - vacuum
-    G4Material* VacuumMaterial = MaterialManager::getInstance()
-      ->GetMaterialFromLibrary(SamuraiFDC2_NS::FDC2_Material);
+    
+    //Material
+    G4Material* Gas = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC2_NS::FDC2_Gas,SamuraiFDC2_NS::FDC2_Pressure, SamuraiFDC2_NS::FDC2_Temperature);
 
     //Logical Volume
-    m_FDC2 = new G4LogicalVolume(box, VacuumMaterial, "logic_SamuraiFDC2_box",0,0,0);
+    m_FDC2 = new G4LogicalVolume(box, Gas, "logic_SamuraiFDC2_box",0,0,0);
     m_FDC2->SetVisAttributes(m_VisFDC2);
-    m_FDC2->SetSensitiveDetector(m_FDC2Scorer);
   }
   return m_FDC2;
 }
 
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4LogicalVolume* SamuraiFDC2::BuildWire(){
+if(!m_Wire){
+
+  //Shape - G4Tubs
+  G4Tubs* solidWire = new G4Tubs("FDC2_Wire", 0.0, SamuraiFDC2_NS::Wire_diameter*0.5,SamuraiFDC2_NS::Wire_length*0.5, 0., 360.);
+
+  
+  //material
+  G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC2_NS::Wire_Gas, SamuraiFDC2_NS::Wire_Pressure,SamuraiFDC2_NS::Wire_Temperature);
+  
+  
+  //Logical Volume
+  m_Wire = new G4LogicalVolume(solidWire, GasWire, "logic_SamuraiWire_tub",0,0,0);
+  m_Wire->SetVisAttributes(m_VisWire);
+  m_Wire->SetSensitiveDetector(m_WireScorerFDC2);
+  
+  }
+  return m_Wire;
+}
+
+
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
 // Virtual Method of NPS::VDetector class
@@ -129,21 +177,25 @@ void SamuraiFDC2::ReadConfiguration(NPL::InputParser parser){
   vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Samurai");
   vector<NPL::InputBlock*> blocks2 = parser.GetAllBlocksWithToken("SAMURAIFDC2");
 
+  G4ThreeVector Mag_Pos;
+  double Mag_Angle;
+  G4ThreeVector Offset;
+  double Off_Angle;
+  
   if(blocks.size()==1 && blocks2.size()==1){
     if(NPOptionManager::getInstance()->GetVerboseLevel()) {
-      cout << "/////// Samurai FDC2 found ///////" << endl;
+      cout << "/////// Samurai FDC2 found with Samurai Magnet ///////" << endl;
     }
     vector<string> cart = {"POS","ANGLE"};
     vector<string> sphe = {"R","Theta","Phi","ANGLE"};
-
-    G4ThreeVector Mag_Pos;
-    double Mag_Angle;
-
+    vector<string> xml = {"XML","Offset", "InvertX","InvertY","InvertD"};
+    
     if(blocks[0]->HasTokenList(cart)){
       Mag_Pos = NPS::ConvertVector(blocks[0]->GetTVector3("POS", "cm"));
       Mag_Angle = blocks[0]->GetDouble("ANGLE","deg");
     }
-    else if(blocks[0]->HasTokenList(sphe)){
+    
+    if(blocks[0]->HasTokenList(sphe)){
       double R = blocks[0]->GetDouble("R","mm");
       double Theta = blocks[0]->GetDouble("Theta","deg");
       double Phi = blocks[0]->GetDouble("Phi","deg");
@@ -152,38 +204,177 @@ void SamuraiFDC2::ReadConfiguration(NPL::InputParser parser){
       Mag_Pos.setPhi(Phi);
       Mag_Angle = blocks[0]->GetDouble("ANGLE","deg");
     }
-    
-    G4ThreeVector Offset = NPS::ConvertVector(blocks2[0]->GetTVector3("Offset", "mm"));
-    double Off_Angle = blocks2[0]->GetDouble("OffAngle","deg");
 
-    //string xml = blocks2[0]->GetString("XML");
-    //bool invert_x = blocks2[0]->GetBool("InvertX");
-    //bool invert_y = blocks2[0]->GetBool("InvertY");
-    //bool invert_z = blocks2[0]->GetBool("InvertD");
-  
+    if(blocks2[0]->HasTokenList(xml)){
+      if(NPOptionManager::getInstance()->GetVerboseLevel())
+        cout << endl << "////  FDC2 XML file " <<  endl;
+      string xml_file = blocks2[0]->GetString("XML");
+      Offset = NPS::ConvertVector(blocks2[0]->GetTVector3("Offset", "mm"));
+      Off_Angle = blocks2[0]->GetDouble("OffAngle","deg");
+      bool invert_x = blocks2[0]->GetInt("InvertX");
+      bool invert_y = blocks2[0]->GetInt("InvertY");
+      bool invert_z = blocks2[0]->GetInt("InvertD");
+      ReadXML(xml_file,Offset,invert_x,invert_y);
+    }    
+
     AddDetector(Mag_Pos, Mag_Angle, Offset, Off_Angle);
 
-  }
+  }// SamuraiFDC2 and SamuraiMagnet
+
+  else if(blocks.size()==0 && blocks2.size()==1)
+    {
+      if(NPOptionManager::getInstance()->GetVerboseLevel())
+	{
+	  cout << "/////// Samurai FDC2 ///////" << endl;
+	}
+
+      vector<string> xml = {"XML","Offset", "InvertX","InvertY","InvertD"};
+      if(blocks2[0]->HasTokenList(xml)){//--------------> nouveau
+	if(NPOptionManager::getInstance()->GetVerboseLevel())
+	  cout << endl << "////  FDC2 XML file " <<  endl;//--------------> nouveau
+	string xml_file = blocks2[0]->GetString("XML");//--------------> nouveau
+	Offset = NPS::ConvertVector(blocks2[0]->GetTVector3("Offset", "mm"));//-----------> nouveau
+	Off_Angle = blocks2[0]->GetDouble("OffAngle","deg");//-----------> nouveau
+	bool invert_x = blocks2[0]->GetInt("InvertX");//--------------> nouveau
+	bool invert_y = blocks2[0]->GetInt("InvertY");//--------------> nouveau
+	bool invert_z = blocks2[0]->GetInt("InvertD");//--------------> nouveau
+	ReadXML(xml_file,Offset,invert_x,invert_y);//--------------> nouveau
+      }    
+
+       m_Pos = Mag_Pos + Offset;
+
+    }//SamuraiFDC2
+
+  
   else{
     cout << "ERROR: there should be only one Samurai magnet, check your input file" << endl;
     exit(1);
   }
     
-  
 }
 
 
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void SamuraiFDC2::ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY){ 
+  NPL::XmlParser xml;
+  xml.LoadFile(xml_file);
+
+  std::vector<NPL::XML::block*> b = xml.GetAllBlocksWithName("SAMURAIFDC2");
+  int NumberOfWires=0;
+  for(unsigned int i = 0 ; i < b.size() ; i++){
+    NumberOfWires++;
+
+    // Wire ID in general
+    auto WireId  = b[i]->AsInt("ID");
+
+    // Layer Number
+    auto LayerNbr = b[i]->AsInt("layer");
+    
+    // Wire direction
+    auto DirectionWire = b[i]->AsString("anodedir");
+    //Wire id in the layer
+    auto WireNbr  = b[i]->AsInt("wireid");
+
+    //Wire x or y position
+    auto PositionX = b[i]->AsDouble("wirepos");
+    auto PositionZ = b[i]->AsDouble("wirez");
+
+    // position wire and direction wire
+    // X , U or V
+    m_PositionWire[WireId] = G4ThreeVector(PositionX,0.0,PositionZ);
+    m_IsHorizontal[WireId] = false;
+    
+    m_WireAngle[WireId] = 0.0*deg;
+    
+    if(DirectionWire.find("X")!=std::string::npos){ //X
+      m_WireAngle[WireId] = 0.0*deg;
+    }
+    
+    else if(DirectionWire.find("U")!=std::string::npos){ //U
+      m_WireAngle[WireId] = -30.0*deg;
+    }
+    
+    else if (DirectionWire.find("V")!=std::string::npos){ //V
+      m_WireAngle[WireId] = 30.0*deg;
+    }
+    
+    m_LayerNbr[WireId] = LayerNbr;
+    m_WireNbr[WireId] = WireNbr;
+    
+  } //end of for loop
+  cout << " -> " << NumberOfWires << " wires found" << endl;
+
+}//end of ReadXML
+
+
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
 // Construct detector and inialise sensitive part.
 // (Called After DetectorConstruction::AddDetector Method)
 void SamuraiFDC2::ConstructDetector(G4LogicalVolume* world){
 
+  // Box
   G4RotationMatrix* Rot = new G4RotationMatrix();
-  Rot->rotateY(m_Angle);
+  Rot->rotateY(m_Angle);//rotation in volume's reference frame
   new G4PVPlacement(Rot, m_Pos,
           BuildFDC2(), "SamuraiFDC2", world, false, 0);
 
+  // Wires
+  G4RotationMatrix* RotWire = new G4RotationMatrix();// wire's rotation at the end
+  RotWire->set(0,0,0);
+
+  G4RotationMatrix* BoxRot = new G4RotationMatrix();
+  BoxRot->set(0,0,0);
+
+  
+  //material
+  G4Material* GasWire = MaterialManager::getInstance()->GetGasFromLibrary(SamuraiFDC2_NS::Wire_Gas, SamuraiFDC2_NS::Wire_Pressure,SamuraiFDC2_NS::Wire_Temperature);
+
+  
+  for(auto pos : m_PositionWire){ //loop on wires
+    
+      RotWire->rotateX(-90.*deg);    
+      RotWire->rotateZ(m_WireAngle[pos.first]);
+
+      G4ThreeVector position = pos.second;
+      double X = position[0];
+      double Y = position[1];
+      double Z = position[2];
+
+      double newX, newY;
+      newX = X*cos(-m_WireAngle[pos.first])+Y*sin(-m_WireAngle[pos.first]);
+      newY = -X*sin(-m_WireAngle[pos.first]) + Y*cos(-m_WireAngle[pos.first]);
+
+      m_PositionWire[pos.first] = G4ThreeVector(newX, newY, Z);
+      G4ThreeVector positionWire(newX, newY, Z);
+
+      
+      //////////////////////////////////////////////////////
+      G4Box* box = new G4Box("FDC2_Box",SamuraiFDC2_NS::FDC2_Width*0.5,
+			     SamuraiFDC2_NS::FDC2_Depth*0.5,SamuraiFDC2_NS::FDC2_Height*0.5);
+      G4Tubs* solidWire = new G4Tubs("FDC2_Wire", 0.0, SamuraiFDC2_NS::Wire_diameter*0.5,SamuraiFDC2_NS::Wire_length*0.5, 0., 360.);
+
+      BoxRot->rotateY(m_WireAngle[pos.first]);
+      
+      G4ThreeVector BoxPosition(-X,0, 0);
+      G4Transform3D TransformBox(*BoxRot, BoxPosition);
+      
+      G4VSolid* Intersection = new G4IntersectionSolid("FDC2_Wire", solidWire, box, TransformBox);
+      m_Wire = new G4LogicalVolume(Intersection, GasWire, "logic_SamuraiWire_tub",0,0,0);
+      m_Wire->SetVisAttributes(m_VisWire);
+      m_Wire->SetSensitiveDetector(m_WireScorerFDC2);
+
+      // intersection
+      new G4PVPlacement(G4Transform3D(*RotWire, positionWire),
+			m_Wire,
+			"WireModule",m_FDC2,false,pos.first);
+
+      RotWire->set(0,0,0);
+      BoxRot->set(0,0,0);
+   
+  }// end for loop on wires
+  
   return;
 }
 
@@ -194,10 +385,10 @@ void SamuraiFDC2::ConstructDetector(G4LogicalVolume* world){
 void SamuraiFDC2::InitializeRootOutput(){
   RootOutput *pAnalysis = RootOutput::getInstance();
   TTree *pTree = pAnalysis->GetTree();
-  if(!pTree->FindBranch("IdealDataFDC2")){
-    pTree->Branch("IdealDataFDC2", "TSamuraiIdealData", &m_Event) ;
+  if(!pTree->FindBranch("SamuraiFDC2")){
+    pTree->Branch("SamuraiFDC2", "TSamuraiFDC2Data", &m_Event) ;
   }
-  pTree->SetBranchAddress("IdealDataFDC2", &m_Event);
+  pTree->SetBranchAddress("SamuraiFDC2", &m_Event);
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -208,25 +399,21 @@ void SamuraiFDC2::InitializeRootOutput(){
 void SamuraiFDC2::ReadSensitive(const G4Event* event){
   
   m_Event->Clear();
-  //Interaction Scorer
-  InteractionScorers::PS_Interactions* Scorer= (InteractionScorers::PS_Interactions*) m_FDC2Scorer->GetPrimitive(0);
-
-  unsigned int size = Scorer->GetMult(); 
-  for(unsigned int i = 0 ; i < size ; i++){
-    //vector<unsigned int> level = Scorer->GetLevel(i); 
-    //double Energy = RandGauss::shoot(Scorer->GetEnergy(i),SamuraiFDC2_NS::ResoEnergy);
-    //double Energy = Scorer->GetEnergy(i);
-
-    double energy = Scorer->GetEnergy(i);
-    double brho = Scorer->GetBrho(i);
-    double posx = Scorer->GetPositionX(i);
-    double posy = Scorer->GetPositionY(i);
-    double posz = Scorer->GetPositionZ(i);
-    double mom_mag = brho*Scorer->GetCharge(i);
-    double theta = Scorer->GetTheta(i);
-    double phi = Scorer->GetPhi(i);
-    m_Event->SetData(SamuraiFDC2_NS::FDC2_DetectorNumber, energy, posx, posy, posz, mom_mag, theta, phi, brho);
-  }
+
+  WireScorers::PS_Wire* WireScorerFDC2= (WireScorers::PS_Wire*) m_WireScorerFDC2->GetPrimitive(0);
+
+  unsigned int sizeWire =WireScorerFDC2->GetMult();
+  for(unsigned int i = 0 ; i < sizeWire ; i++)
+    {
+      int layer = WireScorerFDC2->GetLayerNumber(i);
+      int wireNbr = WireScorerFDC2->GetWireNumber(i);
+      double time = WireScorerFDC2->GetTime(i);
+      int edge = WireScorerFDC2->GetEdge(i);
+      double DriftLength = WireScorerFDC2->GetDriftLength(i);    
+      
+      m_Event->SetData(SamuraiFDC2_NS::FDC2_DetectorNumber, layer,
+		       wireNbr, DriftLength, edge);
+    }
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......  
@@ -234,17 +421,17 @@ void SamuraiFDC2::ReadSensitive(const G4Event* event){
 void SamuraiFDC2::InitializeScorers() { 
   // This check is necessary in case the geometry is reloaded
   bool already_exist = false; 
-  m_FDC2Scorer = CheckScorer("FDC2Scorer",already_exist) ;
+  m_WireScorerFDC2 = CheckScorer("WireScorerFDC2",already_exist);
 
   if(already_exist) 
     return ;
 
   // Otherwise the scorer is initialised
   vector<int> level; level.push_back(0);
-  //Interaction 
-  G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ; 
-  m_FDC2Scorer->RegisterPrimitive(Interaction);
-  G4SDManager::GetSDMpointer()->AddNewDetector(m_FDC2Scorer) ;
+  //Wire
+  G4VPrimitiveScorer* InteractionWire= new WireScorers::PS_Wire("WS_FDC2",level, SamuraiFDC2_NS::Number_Of_Layer,SamuraiFDC2_NS::Number_Of_Wire_By_Layer,SamuraiFDC2_NS::Drift_Speed, m_WireAngle) ;
+  m_WireScorerFDC2->RegisterPrimitive(InteractionWire);
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_WireScorerFDC2) ;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/NPSimulation/Detectors/Samurai/SamuraiFDC2.hh b/NPSimulation/Detectors/Samurai/SamuraiFDC2.hh
index 1dc277fc1347124b30879263f3a70a0e16cee23f..c8cbf458b2c2eba81d81a876f4aa551fad54e6d9 100644
--- a/NPSimulation/Detectors/Samurai/SamuraiFDC2.hh
+++ b/NPSimulation/Detectors/Samurai/SamuraiFDC2.hh
@@ -8,13 +8,13 @@
  *****************************************************************************/
 
 /*****************************************************************************
- * Original Author: Omar Nasr  contact address: omar.h.nasr@outlook.com      *
+* Original Author: Audrey ANNE  contact address: anne@lpccaen.in2p3.fr      *
  *                                                                           *
- * Creation Date  : septembre 2021                                           *
- * Last update    : septembre 2021                                           *
+ * Creation Date  :                                                          *
+ * Last update    : august 2024                                              *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class describe  Samurai simulation                                  *
+ *  This class describe  SamuraiFDC2 simulation                              *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
@@ -37,9 +37,10 @@ using namespace std;
 // NPTool header
 #include "NPSVDetector.hh"
 #include "NPInputParser.h"
+#include "NPXmlParser.h"
+
+#include "TSamuraiFDC2Data.h" 
 
-//#include "SamuraiFieldPropagation.hh"
-#include "TSamuraiIdealData.h"
 
 
 class SamuraiFDC2 : public NPS::VDetector{
@@ -57,16 +58,22 @@ class SamuraiFDC2 : public NPS::VDetector{
   
     // Cartezian FDC2
     void AddDetector(G4ThreeVector Mag_Pos, double Mag_Angle, G4ThreeVector Offset, double Off_Angle);
+    void ReadXML(std::string xml_file,G4ThreeVector offset, bool InvertX,bool InvertY);
 
     G4LogicalVolume* BuildFDC2();
+    G4LogicalVolume* BuildWire();
+  
   private:
   
     //Logical Volume
-    G4LogicalVolume* m_FDC2;
-
-    // Visualisation Attributes
-    G4VisAttributes* m_VisFDC2;
+    std::map<unsigned int , G4ThreeVector> m_PositionWire; 
+    std::map<unsigned int , int> m_LayerNbr; 
+    std::map<unsigned int , int> m_WireNbr;
+    std::map<unsigned int , double> m_WireAngle; 
+    std::map<unsigned int , bool> m_IsHorizontal; 
 
+    G4LogicalVolume* m_FDC2;
+    G4LogicalVolume* m_Wire; 
     
     ////////////////////////////////////////////////////
     //////  Inherite from NPS::VDetector class /////////
@@ -95,15 +102,16 @@ class SamuraiFDC2 : public NPS::VDetector{
 
 
     //   Associated Scorer
-    G4MultiFunctionalDetector* m_FDC2Scorer ;
+    G4MultiFunctionalDetector* m_WireScorerFDC2 ;
+  
     ////////////////////////////////////////////////////
     ///////////Event class to store Data////////////////
     ////////////////////////////////////////////////////
   private:
-    //TSamuraiFDC2Data* m_Event;
+    TSamuraiFDC2Data* m_Event;
     //////////////////////////////////////////////////////////////////
 
-    TSamuraiIdealData* m_Event;
+    //TSamuraiIdealData* m_Event;
 
     ////////////////////////////////////////////////////
     ///////////////Private intern Data//////////////////
@@ -113,7 +121,11 @@ class SamuraiFDC2 : public NPS::VDetector{
     G4ThreeVector m_Pos;
     // Angle of Rotation
     double m_Angle;
+
   
+    // Visualisation Attributes
+    G4VisAttributes* m_VisFDC2;
+    G4VisAttributes* m_VisWire;
 
   // Needed for dynamic loading of the library
   public:
diff --git a/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.cc b/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.cc
index 6571c9964ad050c1bd9581f853b43f20b0abd8ef..37e6b193dcab840bda74aabae85f9697128c6edc 100644
--- a/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.cc
+++ b/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.cc
@@ -38,6 +38,7 @@
 #include "G4UserLimits.hh"
 #include "G4SystemOfUnits.hh"
 #include "G4PhysicalConstants.hh"
+#include "G4RunManager.hh"
 //nptool libraries
 #include "NPFunction.h"
 #include "NPInputParser.h"
@@ -136,11 +137,18 @@ void NPS::SamuraiFieldPropagation::ReadConfiguration() {
 ////////////////////////////////////////////////////////////////////////////////
 G4bool NPS::SamuraiFieldPropagation::IsApplicable(const G4ParticleDefinition& particleType) {
   if (particleType.GetPDGCharge() == 0) return false;
+  
+  else if (particleType.GetParticleName() == "e-" or particleType.GetParticleName() == "e+" )
+    {
+      return false;
+    }
+  
   return true;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 G4bool NPS::SamuraiFieldPropagation::ModelTrigger(const G4FastTrack& fastTrack) {
+  
   return true;
 }
 
@@ -286,7 +294,7 @@ void NPS::SamuraiFieldPropagation::RungeKuttaPropagation (const G4FastTrack& fas
   double speed = PrimaryTrack->GetVelocity();
   double charge = PrimaryTrack->GetParticleDefinition()->GetPDGCharge() / coulomb;
   double ConF_p = 1 / (joule * c_light / (m/s)) ; // MeV/c to kg*m/s (SI units)
-
+  
   //Initially inside is false -> calculate trajectory
   if (!inside){
     count = 2;//skip first two positions as they are the same as the current position
@@ -298,14 +306,14 @@ void NPS::SamuraiFieldPropagation::RungeKuttaPropagation (const G4FastTrack& fas
 
     trajectory.clear();
     trajectory = m_Map->Propagate(Brho, pos, dir);
-
+    
     inside = true;
   }
 
   G4ThreeVector newPosition (trajectory[count].x(), trajectory[count].y(), trajectory[count].z());
   //benchmark
   //G4ThreeVector newDir = (newPosition - localPosition).unit();
-  //G4ThreeVector newMomentum = newDir * localMomentum.mag(); 
+  //G4ThreeVector newMomentum = newDir * localMomentum.mag();
 
   //Check if newPosition is not inside
   if (solid->Inside(newPosition) != kInside){
@@ -320,13 +328,18 @@ void NPS::SamuraiFieldPropagation::RungeKuttaPropagation (const G4FastTrack& fas
     //if(single_particle) PrintData(m_StepSize, newPosition, newMomentum, outRKsp);
     //else PrintData(m_StepSize, newPosition, newMomentum, outRK);
     //counter++;
+    
   }
-
+  
   //benchmark
   G4ThreeVector newDir = (newPosition - localPosition).unit();
   G4ThreeVector newMomentum = newDir * localMomentum.mag(); 
-
-
+  
+  if(abs(newPosition[0]-localPosition[0])>10.0 or abs(newPosition[1]-localPosition[1])>10.0 or abs(newPosition[2]-localPosition[2])>10.0)
+    {
+      G4RunManager::GetRunManager()->AbortEvent();     
+    }
+  
   double time  = PrimaryTrack->GetGlobalTime()+(newPosition - localPosition).mag()/speed;
 
   fastStep.ProposePrimaryTrackFinalPosition( newPosition );
diff --git a/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.hh b/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.hh
index 8cfc6c13a0c8bf7b50a1ab4e2860cf43f51e0d52..d959ffd17083d1f147cb72666ab6b4b92f247da2 100644
--- a/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.hh
+++ b/NPSimulation/Detectors/Samurai/SamuraiFieldPropagation.hh
@@ -82,8 +82,7 @@ namespace NPS{
     //  out << setprecision(17) << pos.x() << "\t" << pos.y() << "\t" << pos.z() << "\t";
     //  out << setprecision(17) << mom.x() << "\t" << mom.y() << "\t" << mom.z() << "\t";
     //  out << setprecision(17) << mom.getR() << "\t" << mom.getPhi() << "\t" << mom.getTheta() << endl;
-    //}
-
+    //}    
 
     bool m_Initialized; //field map initialized
     double m_StepSize;  //propagation step size
diff --git a/NPSimulation/EventGenerator/EventGeneratorBeam.cc b/NPSimulation/EventGenerator/EventGeneratorBeam.cc
index 7421c05d6ac44d51635fe56d6bf6224c334a4abf..c8c0387d30ac258bdfbe00298329d4fcafe79b8d 100644
--- a/NPSimulation/EventGenerator/EventGeneratorBeam.cc
+++ b/NPSimulation/EventGenerator/EventGeneratorBeam.cc
@@ -99,7 +99,7 @@ void EventGeneratorBeam::GenerateEvent(G4Event* anEvent){
   m_Beam->GenerateRandomEvent(InitialBeamEnergy, x0, y0, z0, Beam_thetaX, Beam_phiY);
   double Xdir = tan(Beam_thetaX); //tan(thetax)= px/pz
   double Ydir = tan(Beam_phiY); //tan(phiy)= py/pz
-  double Zdir = 1; // fix pz=1 arbitrarily
+  double Zdir = 1.0; // fix pz=1 arbitrarily
   G4ThreeVector BeamDir(Xdir,Ydir,Zdir);
   BeamDir = BeamDir.unit();
   G4ThreeVector BeamPos(x0,y0,z0);
diff --git a/NPSimulation/Process/BeamReaction.cc b/NPSimulation/Process/BeamReaction.cc
index 7ccd9a9f117e4965d29452d5c13b0f74404309a9..43b6d68407079c08420b1938e7c2b4b5165cc010 100644
--- a/NPSimulation/Process/BeamReaction.cc
+++ b/NPSimulation/Process/BeamReaction.cc
@@ -242,7 +242,7 @@ G4bool NPS::BeamReaction::ModelTrigger(const G4FastTrack& fastTrack) {
 ////////////////////////////////////////////////////////////////////////////////
 void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastStep) {
 
-  // std::cout << "DOIT" << std::endl;
+  //std::cout << "DO IT" << std::endl;
   m_shoot = false;
   m_length = abs(m_length);
   // Get the track info
@@ -309,8 +309,9 @@ void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastStep)
     // Use to clean up the IonTable in case of the Ex changing at every event
     G4ParticleDefinition* HeavyName;
 
-    if (m_Reaction.GetUseExInGeant4())
+    if (m_Reaction.GetUseExInGeant4()){
       HeavyName = IonTable->GetIon(HeavyZ, HeavyA, m_Reaction.GetExcitation4() * MeV);
+    }
     else
       HeavyName = IonTable->GetIon(HeavyZ, HeavyA);
 
diff --git a/NPSimulation/Process/CMakeLists.txt b/NPSimulation/Process/CMakeLists.txt
index ae5e920aef0871e32bb2dd5e0bbb6553c3c33ad1..040566ef9469818336f847bf0e57352352326508 100644
--- a/NPSimulation/Process/CMakeLists.txt
+++ b/NPSimulation/Process/CMakeLists.txt
@@ -1,6 +1,8 @@
 if(Geant4_VERSION_MAJOR GREATER 10)
   message("Compiling without IonIonElastic")
+
   add_library(NPSProcess OBJECT ThreeBody.cc FissionDecay.cc Decay.cc BeamReaction.cc FastDriftElectron.cc PhysicsList.cc G4DriftElectron.cc G4IonizationWithDE.cc G4DriftElectronPhysics.cc G4DEAbsorption.cc G4DEAmplification.cc G4DETransport.cc menate_R.cc NeutronHPphysics.cc NeutronHPMessenger.cc)
+
     add_definitions(-DGEANT4_11)
     add_definitions(-DUSE_NEUTRONHP)
 else()
diff --git a/NPSimulation/Scorers/CMakeLists.txt b/NPSimulation/Scorers/CMakeLists.txt
index e53c4bb72b44ad28598f3bc7a5fbf647f2c2d4ba..be3835155e1f39b926aa552e3a34d32002b6cded 100644
--- a/NPSimulation/Scorers/CMakeLists.txt
+++ b/NPSimulation/Scorers/CMakeLists.txt
@@ -1,2 +1,2 @@
-add_library(NPSScorers SHARED CylinderTPCScorers.cc DriftChamberScorers.cc NPSHitsMap.hh CalorimeterScorers.cc InteractionScorers.cc DSSDScorers.cc SiliconScorers.cc PhotoDiodeScorers.cc ObsoleteGeneralScorers.cc DriftElectronScorers.cc TPCScorers.cc MDMScorer.cc NeutronDetectorScorers.cc ProcessScorers.cc PlasticBar.cc GeScorers.cc GaseousDetectorScorers.cc)
+add_library(NPSScorers SHARED CylinderTPCScorers.cc DriftChamberScorers.cc NPSHitsMap.hh CalorimeterScorers.cc InteractionScorers.cc DSSDScorers.cc SiliconScorers.cc PhotoDiodeScorers.cc ObsoleteGeneralScorers.cc DriftElectronScorers.cc TPCScorers.cc MDMScorer.cc NeutronDetectorScorers.cc ProcessScorers.cc PlasticBar.cc GeScorers.cc GaseousDetectorScorers.cc WireScorers.cc)
 target_link_libraries(NPSScorers ${ROOT_LIBRARIES} ${Geant4_LIBRARIES} ${NPLib_LIBRARIES} -lNPInitialConditions -lNPInteractionCoordinates)
diff --git a/NPSimulation/Scorers/InteractionScorers.cc b/NPSimulation/Scorers/InteractionScorers.cc
index 6eddde1bb66ac72ea75bb23d2b68d1717606148a..30dedbb04bd92bbb1b368efaa7bc82dbe496be08 100644
--- a/NPSimulation/Scorers/InteractionScorers.cc
+++ b/NPSimulation/Scorers/InteractionScorers.cc
@@ -53,19 +53,25 @@ G4bool PS_Interactions::ProcessHits(G4Step* aStep, G4TouchableHistory*){
   t_Mass = aStep->GetTrack()->GetDynamicParticle()->GetMass();
   t_Charge = aStep->GetTrack()->GetDynamicParticle()->GetCharge();
   double KineticEnergy = aStep->GetTrack()->GetDynamicParticle()->GetKineticEnergy();
+  if (t_Charge > 0) {
   t_Brho = sqrt(KineticEnergy * KineticEnergy + 2 * KineticEnergy * t_Mass)
     / (c_light * t_Charge);
+  }
+  
+  else {
+    t_Brho = NAN;
+  }
 
   // add it to check the theta of momentum
   // MOMENT  = aStep->GetPreStepPoint()->GetMomentumDirection();
 
   vector<InteractionData>::iterator it;
   it = m_DataVector.find(t_Index); 
-  if(it!=m_DataVector.end())
+  if(it!=m_DataVector.end()){
     it->Add(t_Energy);
+  }
   else
   { m_DataVector.Set(t_Index,t_Energy,t_Time,t_Position.x(),t_Position.y(),t_Position.z(), /*MOMENT*/ t_Position.theta(),t_Position.phi(), t_ParticleName, t_A, t_Z, t_Mass, t_Charge, t_Brho);
-
   }
 
   return TRUE;
diff --git a/NPSimulation/Scorers/PlasticBar.cc b/NPSimulation/Scorers/PlasticBar.cc
index 1ea8e9ad5aff2a936240a92efb354976e35cbb6a..f545d937900d51852c0fc67fe2fb73fab565f480 100644
--- a/NPSimulation/Scorers/PlasticBar.cc
+++ b/NPSimulation/Scorers/PlasticBar.cc
@@ -97,7 +97,8 @@ PS_PlasticBar::PS_PlasticBar(G4String name, vector<G4int> NestingLevel, G4int de
   m_NestingLevel = NestingLevel;
   auto tree = RootOutput::getInstance()->GetTree();
   tree->Branch("PlasticBar_Time", &t_Time);
-  tree->Branch("PlasticBar_Position", &t_Position);
+  tree->Branch("PlasticBar_PositionX", &t_PositionX);
+  tree->Branch("PlasticBar_PositionY", &t_PositionY);
   tree->Branch("PlasticBar_TotalEnergy_by_Z", &t_TotalEnergy_by_Z);
   tree->Branch("PlasticBar_TotalLight_by_Z", &t_TotalLight_by_Z);
   t_TotalEnergy_by_Z = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
@@ -127,7 +128,8 @@ G4bool PS_PlasticBar::ProcessHits(G4Step* aStep, G4TouchableHistory*) {
     if (particlename != "neutron" && Z < 7) {
       t_Energy = aStep->GetTotalEnergyDeposit();
       t_Time = aStep->GetPostStepPoint()->GetGlobalTime();
-      t_Position = aStep->GetPostStepPoint()->GetPosition()[1];
+      t_PositionX = aStep->GetPostStepPoint()->GetPosition()[0];
+      t_PositionY = aStep->GetPostStepPoint()->GetPosition()[1];
       t_Level.clear();
 
       for (unsigned int i = 0; i < mysize; i++) {
@@ -140,7 +142,8 @@ G4bool PS_PlasticBar::ProcessHits(G4Step* aStep, G4TouchableHistory*) {
         it = m_Data.find(PlasticBarData::CalculateIndex(t_Level));
 
         if (it == m_Data.end()) {
-          m_Data.Set(0.0, 0.0, t_Position, t_Time, t_Level);
+          m_Data.Set(0.0, 0.0, t_PositionY, t_Time, t_Level, t_PositionX);
+	  
           AddEntry();                                                // Adds null entry to t_Energy_by_ChargeNumber
           auto lastEnergyEntry = t_Energy_by_ChargeNumber.end() - 1; // iterator
           (*lastEnergyEntry)[Z] += t_Energy;
@@ -163,7 +166,7 @@ G4bool PS_PlasticBar::ProcessHits(G4Step* aStep, G4TouchableHistory*) {
     // now, if the next interaction is a Transportation, and there is an energy deposition, it means that we are
     // observing the last step. To avoid having all the positions on the exit of the bar, lets consider the
     // PreStepPosition instead.
-  }
+  } //end "if process transportation"
   return TRUE;
 }
 
diff --git a/NPSimulation/Scorers/PlasticBar.hh b/NPSimulation/Scorers/PlasticBar.hh
index 691743be1066079af7f324eb75351d3c24e1ac71..d931fd3f5330b8de17bfe6824c0fb4b5d21fb63d 100644
--- a/NPSimulation/Scorers/PlasticBar.hh
+++ b/NPSimulation/Scorers/PlasticBar.hh
@@ -36,14 +36,16 @@ namespace PlasticBar {
 
   // Hold One hit info
   class PlasticBarData {
-   public:
-    PlasticBarData(const double& Energy, const double& Light, const double& Position, const double& Time,
-                   const std::vector<unsigned int>& Nesting) {
+   public:  
+    PlasticBarData(const double& Energy, const double& Light, const double& PositionY, const double& Time,
+                   const std::vector<unsigned int>& Nesting, const double& PositionX)
+    {
       m_Index = CalculateIndex(Nesting);
       m_Level = Nesting;
       m_Energy = Energy;
       m_Light = Light;
-      m_Position = Position;
+      m_PositionX = PositionX;
+      m_PositionY = PositionY;
       m_Time = Time;
     };
     ~PlasticBarData(){};
@@ -53,7 +55,8 @@ namespace PlasticBar {
     std::vector<unsigned int> m_Level;
     double m_Energy;
     double m_Light;
-    double m_Position;
+    double m_PositionX;
+    double m_PositionY;
     double m_Time;
 
    public:
@@ -64,7 +67,8 @@ namespace PlasticBar {
     inline std::vector<unsigned int> GetLevel() const { return m_Level; };
     inline double GetEnergy() const { return m_Energy; };
     inline double GetLight() const { return m_Light; };
-    inline double GetPosition() const { return m_Position; };
+    inline double GetPositionX() const {return m_PositionX; };
+    inline double GetPositionY() const { return m_PositionY; };
     inline double GetTime() const { return m_Time; };
 
    public:
@@ -89,10 +93,11 @@ namespace PlasticBar {
     inline unsigned int size() { return m_Data.size(); };
     PlasticBarData* operator[](const unsigned int& i) { return &m_Data[i]; };
 
-    inline void Set(const double& Energy, const double& Light, const double& Position, const double& Time,
-                    const std::vector<unsigned int>& Nesting) {
-      m_Data.push_back(PlasticBarData(Energy, Light, Position, Time, Nesting));
+    inline void Set(const double& Energy, const double& Light, const double& PositionY, const double& Time,
+                    const std::vector<unsigned int>& Nesting, const double& PositionX) {
+      m_Data.push_back(PlasticBarData(Energy, Light, PositionY, Time, Nesting, PositionX));
     };
+
   };
 
   //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -137,7 +142,8 @@ namespace PlasticBar {
    private:
     double t_Energy;
     double t_Light;
-    double t_Position;
+    double t_PositionX;
+    double t_PositionY;
     double t_Time;
     std::vector<unsigned int> t_Level;
 
@@ -158,9 +164,11 @@ namespace PlasticBar {
     inline unsigned int GetMult() { return m_Data.size(); };
     inline double GetEnergy(const unsigned int& i) { return m_Data[i]->GetEnergy(); };
     inline double GetLight(const unsigned int& i) { return m_Data[i]->GetLight(); };
-    inline double GetPosition(const unsigned int& i) { return m_Data[i]->GetPosition(); };
+    inline double GetPositionX(const unsigned int& i) { return m_Data[i]->GetPositionX(); };
+    inline double GetPositionY(const unsigned int& i) { return m_Data[i]->GetPositionY(); };
     inline double GetTime(const unsigned int& i) { return m_Data[i]->GetTime(); };
     inline std::vector<unsigned int> GetLevel(const unsigned int& i) { return m_Data[i]->GetLevel(); };
+
   };
 } // namespace PlasticBar
 
diff --git a/NPSimulation/Scorers/WireScorers.cc b/NPSimulation/Scorers/WireScorers.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bd0cf5a3d82836b93d717c15cf298840b748b7d5
--- /dev/null
+++ b/NPSimulation/Scorers/WireScorers.cc
@@ -0,0 +1,183 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Audrey ANNE  contact address: anne@lpccaen.in2p3.fr      *
+ *                                                                           *
+ * Creation Date  : July 2024                                                *
+ * Last update    : January 2025                                             *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ * Scorer for wires in gas detector                                          *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include "WireScorers.hh"
+#include "G4SteppingManager.hh"
+#include "G4UnitsTable.hh"
+#include "RootOutput.h"
+#include "TMath.h"
+
+#include "TVector3.h"
+using namespace WireScorers;
+using namespace std;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+unsigned int WireData::CalculateIndex(const vector<unsigned int>& level) {
+
+  unsigned int size = level.size();
+  unsigned int result = 0;
+  unsigned int multiplier = 1;
+  for (unsigned int i = 0; i < size; i++) {
+    result += level[i] * multiplier;
+    multiplier *= 1000;
+  }
+  return result;
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+vector<WireData>::iterator WireDataVector::find(const unsigned int& index) {
+  for (vector<WireData>::iterator it = m_Data.begin(); it != m_Data.end(); it++) {
+    if ((*it).GetIndex() == index)
+      return it;
+  }
+  return m_Data.end();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+PS_Wire::PS_Wire(G4String name, vector<G4int> NestingLevel, G4int TotalNumberLayer, G4int NumberWireByLayer, G4double DriftSpeed,std::map<unsigned int , double> map_WireAngle, G4int depth) : G4VPrimitiveScorer(name, depth) {
+  m_NestingLevel = NestingLevel;
+  m_TotalNumberLayer = TotalNumberLayer;
+  m_NumberWireByLayer = NumberWireByLayer;
+  m_DriftSpeed = DriftSpeed;
+  m_WireAngle = map_WireAngle;
+  
+  auto tree = RootOutput::getInstance()->GetTree();
+  // tree->Branch("Layer_Number", &t_LayerNumber);
+  // tree->Branch("Wire_Number", &t_WireNumber); 
+  // tree->Branch("Wire_Time", &t_Time);
+  // tree->Branch("Edge", &t_Edge);
+
+  G4String PosInWireX = name + "_PosInWireX";
+  G4String PosInWireY = name + "_PosInWireY";
+  G4String PosInWireZ = name + "_PosInWireZ";
+
+  tree->Branch(PosInWireX, &t_PosInWireX);
+  tree->Branch(PosInWireY, &t_PosInWireY);
+  tree->Branch(PosInWireZ, &t_PosInWireZ);
+  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+PS_Wire::~PS_Wire() {}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4bool PS_Wire::ProcessHits(G4Step* aStep, G4TouchableHistory*) {
+
+  // Contain information as many copy number as nested volume
+  unsigned int mysize = m_NestingLevel.size();
+   
+  G4String particlename = aStep->GetTrack()->GetParticleDefinition()->GetParticleName();
+ 
+  //Solid information
+  static G4VSolid* solid;
+  solid = aStep->GetTrack()->GetTouchable()->GetSolid();
+  
+  G4ThreeVector WirePosition =  aStep->GetTrack()->GetTouchable()->GetTranslation(); //wire's center position
+  //cout << solid->GetName() << "  WirePos X = " << WirePosition[0] << "  WirePos Y = " << WirePosition[1] << "  WirePos Z = " << WirePosition[2] << endl;
+  const G4RotationMatrix* WireRotation = aStep->GetTrack()->GetTouchable()->GetRotation();
+
+  // we only keep information about charged particles
+  if (particlename != "neutron") {
+    
+    //Detector number and Wire copy number
+    t_DetectorNumber = aStep->GetTrack()->GetTouchable()->GetCopyNumber(1); //Wires are contained in a box
+    int CopyNbr;
+    CopyNbr  =  aStep->GetTrack()->GetTouchable()->GetCopyNumber(0);
+    t_WireNumber = (CopyNbr-1)%m_NumberWireByLayer; //-1 because copynbr is the ID contained in the xml file and ID begins at 1.
+    t_LayerNumber = (floor((CopyNbr-1)/m_NumberWireByLayer));
+ 
+    //cout <<  "solid name = " << solid->GetName() <<  "  particle name = " << particlename << " Copy number = " << CopyNbr << " layer number = " << t_LayerNumber << " wire number =  " << t_WireNumber << endl;
+
+    t_Level.clear();
+
+    G4ThreeVector PrePosWire =  aStep->GetPreStepPoint()->GetPosition(); //lab position when particle enters the cylinder 
+    G4ThreeVector PostPosWire =  aStep->GetPostStepPoint()->GetPosition(); //lab position when particle exists the cylinder
+   
+    G4ThreeVector InOutDir = PostPosWire - PrePosWire; //particle's direction vector 
+    G4ThreeVector PointC = PrePosWire + 0.5*InOutDir; //closest point to the cylinder center on the particle's path
+
+    //cout << "  presposwire =  " << PrePosWire << "  postposwire =  " << PostPosWire << "  PointC =  "<< PointC << endl;
+    
+    t_PosInWireX.push_back(PointC[0]); //leading egde
+    t_PosInWireX.push_back(-10000); // trailing edge
+    
+    t_PosInWireY.push_back(PointC[1]);
+    t_PosInWireY.push_back(-10000);
+    
+    t_PosInWireZ.push_back(PointC[2]);
+    t_PosInWireZ.push_back(-10000);
+
+    G4ThreeVector DirectionWireZ; // wire direction vector z' in the lab  x,y,z vectors basis 
+    DirectionWireZ = WireRotation->rowZ();
+
+    G4ThreeVector PointA = WirePosition; // first point on the symmetry axis of the cylinder
+    G4ThreeVector PointB = WirePosition + DirectionWireZ;  // second point on the symmetry axis of the cylinder
+
+    //cout << " CenterPointWire =  " << PointA << "  CenterPointWire + shift =  " << PointB << endl;
+    
+    G4ThreeVector AB = PointB - PointA;
+    G4ThreeVector AC = PointC - PointA;
+
+    G4ThreeVector CrossABAC = AB.cross(AC);
+    G4double MagCrossABAC = CrossABAC.mag();
+    G4double MagAB = AB.mag();
+  
+    G4double CD = MagCrossABAC/MagAB; // DriftLength
+    t_DrifLength = CD;
+
+    
+    t_Time = (t_DrifLength/m) / (m_DriftSpeed*299792458);///!!!NEEDS TO BE FIXED BEFORE USE!!!///
+    
+    for (unsigned int i = 0; i < mysize; i++) {
+      t_Level.push_back(aStep->GetPostStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i]));
+    }
+    
+    m_Data.Set(t_Time*1e9 , t_Level, t_LayerNumber, t_WireNumber,1, t_DrifLength, t_DetectorNumber); // leading egde
+    m_Data.Set((t_Time+(t_Time/10))*1e9 , t_Level, t_LayerNumber, t_WireNumber,0, t_DrifLength+(t_DrifLength*100), t_DetectorNumber);// trailing edge
+
+  }
+ 
+  return TRUE;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Wire::Initialize(G4HCofThisEvent*) { clear();}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Wire::EndOfEvent(G4HCofThisEvent*) {}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Wire::clear() {
+  m_Data.clear();
+  t_Level.clear();
+
+  t_PosInWireX.clear();
+  t_PosInWireY.clear();
+  t_PosInWireZ.clear();
+}  
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Wire::DrawAll() {}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Wire::PrintAll() {}
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/NPSimulation/Scorers/WireScorers.hh b/NPSimulation/Scorers/WireScorers.hh
new file mode 100644
index 0000000000000000000000000000000000000000..63cf4aba3a804a177e347e5bce103089038f4146
--- /dev/null
+++ b/NPSimulation/Scorers/WireScorers.hh
@@ -0,0 +1,170 @@
+#ifndef WireScorer_h
+#define WireScorer_h 1
+/*****************************************************************************
+ * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Audrey ANNE contact address: anne@lpccaen.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : July 2024                                                *
+ * Last update    : January 2025                                             *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include "G4VPrimitiveScorer.hh"
+#include "NPSHitsMap.hh"
+// #include "NPSecondaries.hh"
+
+#include <array>
+#include <map>
+using namespace CLHEP;
+
+namespace WireScorers {
+
+ 
+  /////////////////////////////////////////////////////////////////////
+  //////////////////////// class WireData ////////////////////////
+  /////////////////////////////////////////////////////////////////////
+  // Hold One hit info
+  class WireData {
+   public:  
+    WireData(const double& Time, const std::vector<unsigned int>& Nesting, const unsigned int& LayerNumber, const unsigned int& WireNumber, const unsigned int& Edge, const double& DriftLength, const int& DetectorNumber)
+    {
+      m_Index = CalculateIndex(Nesting);
+      m_Level = Nesting;
+      m_Time = Time;
+      m_LayerNumber = LayerNumber;
+      m_WireNumber = WireNumber;
+      m_Edge = Edge;
+      m_DriftLength = DriftLength;
+      m_DetectorNumber = DetectorNumber;
+    };
+    ~WireData(){};
+
+   private:
+    unsigned int m_Index;
+    std::vector<unsigned int> m_Level;
+    double m_PositionX;
+    double m_Time;
+    unsigned int m_LayerNumber;
+    unsigned int m_WireNumber;
+    unsigned int m_Edge;
+    double m_DriftLength;
+    int m_DetectorNumber;
+    
+   public:
+    static unsigned int CalculateIndex(const std::vector<unsigned int>& Nesting);
+
+   public:
+    inline unsigned int GetIndex() const { return m_Index; };
+    inline std::vector<unsigned int> GetLevel() const { return m_Level; };
+    inline double GetTime() const { return m_Time; };
+    inline unsigned int GetLayerNumber() const { return m_LayerNumber; };
+    inline unsigned int GetWireNumber() const { return m_WireNumber; };
+    inline unsigned int GetEdge() const { return m_Edge; };
+    inline double GetDriftLength() const { return m_DriftLength; };
+    inline unsigned int GetDetectorNumber() const {return m_DetectorNumber; };
+    
+  };
+  
+  /////////////////////////////////////////////////////////////////////
+  //////////////////////// class WireDataVector////////////////////////
+  /////////////////////////////////////////////////////////////////////
+  
+  // Manage a vector of Wire hit
+  class WireDataVector {
+   public:
+    WireDataVector(){};
+    ~WireDataVector(){};
+
+   private:
+    std::vector<WireData> m_Data;
+
+   public:
+    std::vector<WireData>::iterator find(const unsigned int& index);
+    inline void clear() { m_Data.clear(); };
+    inline std::vector<WireData>::iterator end() { return m_Data.end(); };
+    inline std::vector<WireData>::iterator begin() { return m_Data.begin(); };
+    inline unsigned int size() { return m_Data.size(); };
+    WireData* operator[](const unsigned int& i) { return &m_Data[i]; };
+
+    inline void Set(const double& Time,const std::vector<unsigned int>& Nesting,  const unsigned int& LayerNumber, const unsigned int& WireNumber, const unsigned int& Edge, const double& DriftLength, const unsigned int& DetectorNumber) {
+      m_Data.push_back(WireData(Time, Nesting, LayerNumber, WireNumber, Edge, DriftLength, DetectorNumber));
+    };
+
+  };
+  
+  //////////////////////////////////////////////////////
+  //////////////// class PS_Wire ///////////////////////
+  //////////////////////////////////////////////////////
+  
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+  class PS_Wire : public G4VPrimitiveScorer {
+
+   public: // with description
+    PS_Wire(G4String name, std::vector<G4int> NestingLevel, G4int TotalNumberLayer, G4int NumberWireByLayer, G4double DriftSpeed, std::map<unsigned int , double> map_WireAngle,  G4int depth = 0 );
+    ~PS_Wire();
+
+   protected: // with description
+    G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+   public:
+    void Initialize(G4HCofThisEvent*);
+    void EndOfEvent(G4HCofThisEvent*);
+    void clear();
+    void DrawAll();
+    void PrintAll();
+
+   private:
+    // How much level of volume nesting should be considered
+    // Give the list of the nesting level at which the copy number should be return.
+    // 0 is the lowest level possible (the actual volume copy number in which the interaction happen)
+    std::vector<G4int> m_NestingLevel;
+    G4int m_TotalNumberLayer;
+    G4int m_NumberWireByLayer;
+    G4double m_DriftSpeed;
+    std::map<unsigned int , double> m_WireAngle;
+
+   private:
+    WireDataVector m_Data;
+
+   private:
+    double t_Time;
+    std::vector<unsigned int> t_Level;
+    unsigned int t_LayerNumber;
+    unsigned int t_WireNumber;
+    unsigned int t_Edge;
+    double t_DrifLength;
+    unsigned int t_DetectorNumber;
+
+    std::vector<double> t_PosInWireX;
+    std::vector<double> t_PosInWireY;
+    std::vector<double> t_PosInWireZ;
+    
+   public:
+    inline unsigned int GetMult() { return m_Data.size(); };
+    inline double GetTime(const unsigned int& i) { return m_Data[i]->GetTime(); };
+    inline std::vector<unsigned int> GetLevel(const unsigned int& i) { return m_Data[i]->GetLevel(); };
+
+    inline unsigned int GetLayerNumber (const unsigned int& i) {return m_Data[i]->GetLayerNumber(); };
+    inline unsigned int GetWireNumber(const unsigned int& i) { return m_Data[i]->GetWireNumber(); };
+    inline unsigned int GetEdge(const unsigned int& i) { return m_Data[i]->GetEdge(); };
+
+    inline double GetDriftLength(const unsigned int& i ) {return m_Data[i]->GetDriftLength();};
+
+    inline double GetDetectorNumber(const unsigned int& i) {return m_Data[i]->GetDetectorNumber();};
+  };
+
+  
+} // namespace Wire
+
+#endif
diff --git a/NPSimulation/ressources/macro/vis.mac.in b/NPSimulation/ressources/macro/vis.mac.in
index 37862e2d495fd8df5eafd398434b5a766e42f802..1063d15b76a34b2e998b34586a2e6fa5b5dd3f4c 100644
--- a/NPSimulation/ressources/macro/vis.mac.in
+++ b/NPSimulation/ressources/macro/vis.mac.in
@@ -52,10 +52,6 @@
 /vis/modeling/trajectories/DrawByParentID/Decay4/setLineColourRGBA 1 1 1 1
 
 
-
-
-/vis/modeling/trajectories/select DrawByParentID
-
 # To superimpose all of the events from a given run:
 /vis/scene/endOfEventAction accumulate 10
 
diff --git a/Projects/Dali/DaliMinos.detector b/Projects/Dali/DaliMinos.detector
index e25d6ed3a4b9892537f35e6f96737eb39554a619..50e417dc647bc7bcae4c0ab8e08193723e9d285e 100755
--- a/Projects/Dali/DaliMinos.detector
+++ b/Projects/Dali/DaliMinos.detector
@@ -1,9 +1,15 @@
 Minos
- POS= 0 0 0 mm
+ Position= 0 0 0 mm
  TargetLength= 152.76 mm
  TargetMaterial= LH2
  CellMaterial= Mylar 
  TPCOnly= 0 
+ TargetZOffset= 0 mm
+ TimeBin= 30 ns
+ ShapingTime= 333.9 ns
+ Baseline= 250
+ Sampling= 10
+ ZOffset= 0 mm
  XML= /Users/matta/mrdc/xml/s034/MINOS.xml
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Dali
diff --git a/Projects/Minos/Analysis.cxx b/Projects/Minos/Analysis.cxx
index 07ed88ffdd8fe29f0fcca731124ff34d6791b026..c64f59517dfbed72308a9933a29e749989c64ea2 100644
--- a/Projects/Minos/Analysis.cxx
+++ b/Projects/Minos/Analysis.cxx
@@ -33,7 +33,7 @@ Analysis::~Analysis(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::Init(){
-   Minos= (TMinosPhysicsPhysics*) m_DetectorManager->GetDetector("Minos");
+   Minos= (TMinosPhysics*) m_DetectorManager->GetDetector("Minos");
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/Projects/Minos/Minos.detector b/Projects/Minos/Minos.detector
index f0e602accb370bb5acc31a3936b92618b000533f..4ba27ea8539ba4361e9e9d8ac5c62fc0fcb880e0 100644
--- a/Projects/Minos/Minos.detector
+++ b/Projects/Minos/Minos.detector
@@ -18,7 +18,7 @@ Minos
  ShapingTime= 333.9 ns
  BaseLine= 250
  Sampling= 10
- ZOffset= 0 mm
+ ZOffset= -4000 mm
  TargetZOffset= 0 mm
  ZRotation= 0 mm
  XML= ../S034/db/MINOS.xml
diff --git a/Projects/Nebula/Analysis.cxx b/Projects/Nebula/Analysis.cxx
index a6aafa1a0d0df13734fae153f55dc7d9c4c36ab6..05dec2bf9be54b2fbe9e1202c8deaf2f94292f10 100644
--- a/Projects/Nebula/Analysis.cxx
+++ b/Projects/Nebula/Analysis.cxx
@@ -24,6 +24,12 @@ using namespace std;
 #include"Analysis.h"
 #include"NPAnalysisFactory.h"
 #include"NPDetectorManager.h"
+#include "NPOptionManager.h"
+
+
+
+
+
 ////////////////////////////////////////////////////////////////////////////////
 Analysis::Analysis(){
 }
@@ -33,22 +39,65 @@ Analysis::~Analysis(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::Init(){
+  bool simulation = false;
+  if(NPOptionManager::getInstance()->HasDefinition("simulation"))
+    {
+      cout << "Considering input data as simulation" << endl; 
+      simulation=true;
+    }
+  
    Nebula= (TNebulaPhysics*) m_DetectorManager->GetDetector("NEBULA");
+
+   n  =NPL::Particle("neutron");
+   mn = n.Mass();
+
+  InitOutputBranch();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::TreatEvent(){
+  Clear();
+
+   if(Nebula->Charge.size()>0 && !Nebula->HasVeto()){
+        // Index of first neutron hit
+        unsigned int first = Nebula->GetFirstHit();
+        TVector3 Pfirst = (Nebula->GetPos(first));
+        double L = Pfirst.Mag();
+        Tn_n = Nebula->TOF[first];
+        Beta_n = (L/Tn_n)/NPUNITS::c_light;
+	Gamma_n = 1.0/(sqrt(1.0-(Beta_n*Beta_n)));
+	Etot_n = Gamma_n * mn;
+	Ec_n = (Gamma_n -1.0)*mn;	
+      }
+
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::End(){
+
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::Clear(){
+  Beta_n= -1000;
+  Tn_n=-1000;
+  Gamma_n =-1000;
+  Etot_n = -1000;
+  Ec_n= -1000;
 }
 
 
+
+void Analysis::InitOutputBranch() {
+  RootOutput::getInstance()->GetTree()->Branch("Beta_n",&Beta_n);
+  RootOutput::getInstance()->GetTree()->Branch("Ec_n",&Ec_n);
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 //            Construct Method to be pass to the DetectorFactory              //
 ////////////////////////////////////////////////////////////////////////////////
 NPL::VAnalysis* Analysis::Construct(){
+  
   return (NPL::VAnalysis*) new Analysis();
 }
 
diff --git a/Projects/Nebula/Analysis.h b/Projects/Nebula/Analysis.h
index c9c09f4aa1eded4ad0b6d42fb4c228fea141edf6..db0f104932e57f61ccadc589176a4e0dbd4b349a 100644
--- a/Projects/Nebula/Analysis.h
+++ b/Projects/Nebula/Analysis.h
@@ -23,6 +23,12 @@
 
 #include"NPVAnalysis.h"
 #include"TNebulaPhysics.h"
+#include"NPEnergyLoss.h"
+#include "NPParticle.h"
+
+#include "TH1F.h"
+#include "TFile.h"
+
 class Analysis: public NPL::VAnalysis{
   public:
     Analysis();
@@ -33,10 +39,25 @@ class Analysis: public NPL::VAnalysis{
     void TreatEvent();
     void End();
 
-   static NPL::VAnalysis* Construct();
+    void InitOutputBranch();
+    static NPL::VAnalysis* Construct();
 
   private:
    TNebulaPhysics* Nebula;
 
+   private: // output variable
+    double Tn_n;
+    double Beta_n;
+    double Gamma_n;
+    double Etot_n;
+    double Ec_n;
+
+   private: // Energy loss table
+   NPL::Particle n;
+   double mn  ;
+
+  public:
+    void  Clear();
+
 };
 #endif
diff --git a/Projects/Nebula/Nebula.detector b/Projects/Nebula/Nebula.detector
index e81c5eb01b167184c302071078bf3317a05f6e12..eec64a761d5842cfd7472c690150b51d5aac3784 100644
--- a/Projects/Nebula/Nebula.detector
+++ b/Projects/Nebula/Nebula.detector
@@ -1,10 +1,11 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Target
- THICKNESS= 0.49 cm
- RADIUS=	28 mm
- MATERIAL= Vacuum 
+%Target
+ THICKNESS= 0.01 cm
+ %RADIUS=	28 mm
+ RADIUS=	200 mm
+ MATERIAL= Vacuum
  ANGLE= 0 deg
- X= 3.5 cm
+ X= 0 cm
  Y= 0 mm
  Z= 0 mm
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -16,34 +17,73 @@ NEBULA
   InvertX= 0
   InvertY= 0
 
-% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %Samurai
-% POS= 0 0 0 mm
-% ANGLE= 30 deg
+ POS= 0 0 3900 mm
+ ANGLE= 30 deg
 % %
-% METHOD= 1				
+ METHOD= 0				
 % % 0=RungeKutta, 1=EliaOmar
-% FIELDMAP=3T.table.bin 
+ FIELDMAP= 3T.table.bin 
 % %fieldmap/3T.table.bin 		
 % % fieldmap path
-% STEPS_PER_METER= 1000
+ STEPS_PER_METER= 1000
+
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %SAMURAIFDC1
-% %XML= db/SAMURAIFDC0_20200109.xml
-% %Offset= -0.00666226 0.102191 -3370.01 mm
+  XML= db/SAMURAIFDC0_20200109.xml
+  Offset= -0.00666226 0.102191 -3370.01 mm
 % Offset= -0.00666226 0.102191 -4370.01 mm
-% %InvertX= 1 
-% %InvertY= 0
-% %InvertD= 1
-%
+  InvertX= 1 
+  InvertY= 0
+  InvertD= 1
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%SAMURAIFDC2
-% %XML= db/SAMURAIFDC2.xml
-% Offset= 1000 200 5000 mm
-% OffAngle= 59.930 deg
-% %-252.416 -0.228477 4122.57 mm
-% %InvertX= 0 
-% %InvertY= 1
-% %InvertD= 1
+%SAMURAIFDC1
+% Offset= -0.00666226 0.102191 -4370.01 mm
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%SAMURAIFDC2
+ % XML= db/SAMURAIFDC2.xml
+ % Offset= 1000 200 5000 mm
+  Offset= -252.416 -0.228477 7000.57 mm
+  OffAngle= 59.930 deg
+  InvertX= 0 
+  InvertY= 1
+  InvertD= 1
 
+%SAMURAIFDC0
+ % XML= db/SAMURAIFDC0_20200109.xml
+  %POS= 0 0 1000 mm 
+  %Offset= -0.00666226 0.102191 -4000.01 mm
+  Offset= -0.00666226 0.102191 -4370.01 mm
+  %Offset= -252.416 -0.228477 5000.57 mm
+  %OffAngle= 59.930 deg
+  InvertX= 1 
+  InvertY= 0
+  InvertD= 1
+  
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%NEULAND
+  XML= db/NEULAND.xml
+  Offset= 0 0 0 mm
+  InvertX= 0
+  InvertY= 0  
+  
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Minos
+ %Position= 0.345399 1.02061 -4656.63 mm
+ Position= 0 0 0 mm
+ ZRotation= 40.6 deg
+ TargetLength= 151.72 mm
+ TargetZOffset= 0 mm 
+ ZOffset= 0 mm 
+ TargetMaterial= LH2 
+ CellMaterial= Mylar 
+ TPCOnly= 0 
+ TimeBin= 30 ns
+ ShapingTime= 333.9 ns
+ Baseline= 250
+ Sampling= 10
+ XML= db/MINOS.xml  
diff --git a/Projects/Nebula/db/NEBULA.xml b/Projects/Nebula/db/NEBULA.xml
index b7c0c667787e36cd3baed28bec73904c464e74a3..84329e270c8b9dbbafe6fddf8f75e2acff0a55c5 100755
--- a/Projects/Nebula/db/NEBULA.xml
+++ b/Projects/Nebula/db/NEBULA.xml
@@ -4264,7 +4264,7 @@
 <SubLayer>0</SubLayer>
 <PosX>-1522</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0676695</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4328,7 +4328,7 @@
 <SubLayer>0</SubLayer>
 <PosX>-902</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0682021</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4392,7 +4392,7 @@
 <SubLayer>0</SubLayer>
 <PosX>-282</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0679071</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4456,7 +4456,7 @@
 <SubLayer>0</SubLayer>
 <PosX>338</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0676573</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4520,7 +4520,7 @@
 <SubLayer>0</SubLayer>
 <PosX>958</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0686263</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4584,7 +4584,7 @@
 <SubLayer>0</SubLayer>
 <PosX>1578</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0673654</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4608,6 +4608,7 @@
 <qd_ch>27</qd_ch>
 <Ignore>0</Ignore>
 </NEBULA>
+<!--
 <NEBULA>
 <ID>145</ID>
 <NAME>NoUse1</NAME>
@@ -5632,4 +5633,5 @@
 <qd_ch>-1</qd_ch>
 <Ignore>0</Ignore>
 </NEBULA>
+-->
 </dataroot>
diff --git a/Projects/Nebula/db/NEBULA2BARS.xml b/Projects/Nebula/db/NEBULA2BARS.xml
index dc6de7026a56590c99f8143c2fdb5b953bc94dad..47b7469db265c4071b3d434b941601fceca6eef5 100755
--- a/Projects/Nebula/db/NEBULA2BARS.xml
+++ b/Projects/Nebula/db/NEBULA2BARS.xml
@@ -64,4 +64,36 @@
 <qd_ch>0</qd_ch>
 <Ignore>0</Ignore>
 </NEBULA>
+<NEBULA>
+<ID>3</ID>
+<NAME>103</NAME>
+<FPl>13</FPl>
+<Layer>1</Layer>
+<SubLayer>1</SubLayer>
+<PosX>0</PosX>
+<PosY>0</PosY>
+<PosZ>1242</PosZ>
+<TUCal>1</TUCal>
+<TUOff>0</TUOff>
+<TUSlw>0</TUSlw>
+<QUCal>0.0278832</QUCal>
+<QUPed>176.884</QUPed>
+<TDCal>1</TDCal>
+<TDOff>0</TDOff>
+<TDSlw>0</TDSlw>
+<QDCal>0.0278832</QDCal>
+<QDPed>211.422</QDPed>
+<DTCal>94.87</DTCal>
+<DTOff>0</DTOff>
+<TAveOff>-4.743</TAveOff>
+<tu_geo>11</tu_geo>
+<tu_ch>0</tu_ch>
+<qu_geo>21</qu_geo>
+<qu_ch>0</qu_ch>
+<td_geo>12</td_geo>
+<td_ch>0</td_ch>
+<qd_geo>22</qd_geo>
+<qd_ch>0</qd_ch>
+<Ignore>0</Ignore>
+</NEBULA>
 </dataroot>
diff --git a/Projects/Nebula/macro/GetTBrowser.C b/Projects/Nebula/macro/GetTBrowser.C
index 70d5948c8268d3caad5c7addd425265011454c47..0b2737ca297be597d5a788bf45f88752bcd0df15 100644
--- a/Projects/Nebula/macro/GetTBrowser.C
+++ b/Projects/Nebula/macro/GetTBrowser.C
@@ -1,9 +1,14 @@
+
+
 void GetTBrowser(){
   
   TH1F *h1 = new TH1F("h1","Somme des Temps",100,-4,4);
 
   TFile* f = TFile::Open("root/simulation/SimulatedTree.root");
+  
   TTree *t = (TTree*)f->Get("SimulatedTree");
+
+ 
   TBranch *b = (TBranch*)t->GetBranch("Nebula");
   TLeaf *tu = b->GetLeaf("fNebula_Tu_Time");
   //Float_t td;
@@ -16,4 +21,8 @@ void GetTBrowser(){
     //sum += td;
     h1->Fill(sum);
   }
+
+
+  h1->Draw();
+  
 }
diff --git a/Projects/Nebula/macro/draw/PositionZ.C b/Projects/Nebula/macro/draw/PositionZ.C
index c2624a21a9571e3031f9d126bd5d6457b2922034..b400d6b079a8a7d9a6b417668f6dc79a5df15ae3 100644
--- a/Projects/Nebula/macro/draw/PositionZ.C
+++ b/Projects/Nebula/macro/draw/PositionZ.C
@@ -1,20 +1,26 @@
-#include "/local/lemair/nptool/NPLib/Detectors/Nebula/TNebulaPhysics.h"
+//#include "/local/lemair/nptool/NPLib/Detectors/Nebula/TNebulaPhysics.h"
 #include <iostream>     // std::cout
 #include <algorithm>    // std::find
 #include <vector>   
-
+#include "TFile.h"
+#include "TCanvas.h"
+#include "TH1F.h"
+#include "TTree.h"
+#include "TBranch.h"
 
 void PositionZ(){
   TFile* f = TFile::Open("root/simulation/SimulatedTree.root");
+ 
+ 
   TTree* t = (TTree*)f->Get("SimulatedTree");
   TCanvas *c1 = new TCanvas("c1","Position Z",1080,720);
 
   vector<double>* PosZ;
   int vec_size;
   TBranch* branch;
-  
-  TH1F *h = new TH1F("h","Position Z",2400,10800,12200);
-  t->SetBranchAddress("Pos_Z", &PosZ, &branch);
+   
+  TH1F *h = new TH1F("h","Position Z",2400,10800,16000);
+  t->SetBranchAddress("Nebula.PosZ", &PosZ, &branch);
   
   int nentries = t->GetEntries();
   for(int i=0 ; i<nentries ; i++){
@@ -25,5 +31,6 @@ void PositionZ(){
   }
   
   h->Draw("SAME");
+  
 }
  
diff --git a/Projects/Nebula/reaction/7Li_p_n_7Be.reaction b/Projects/Nebula/reaction/7Li_p_n_7Be.reaction
index 43d6df9b32322d62dea72c02a0e99a28769b28b4..e802dac62b0330fc2c7f0843287fa2b665b1732d 100644
--- a/Projects/Nebula/reaction/7Li_p_n_7Be.reaction
+++ b/Projects/Nebula/reaction/7Li_p_n_7Be.reaction
@@ -3,14 +3,15 @@ Beam
  Particle= p
  Energy= 196 MeV
  SigmaEnergy= 0 MeV
- SigmaThetaX= 1 deg
- SigmaPhiY= 1 deg
- SigmaX= 5 mm
- SigmaY= 5 mm
+ SigmaThetaX= 0 deg
+ SigmaPhiY= 0 deg
+ SigmaX= 0 mm
+ SigmaY= 0 mm
  MeanThetaX= 0 deg
  MeanPhiY= 0 deg
  MeanX= 0 mm
  MeanY= 0 mm
+ ZEmission= -100 mm
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 TwoBodyReaction
@@ -21,6 +22,8 @@ TwoBodyReaction
  ExcitationEnergyLight= 0.0 MeV
  ExcitationEnergyHeavy= 0.43 MeV
  CrossSectionPath= flat.txt CSR
- ShootLight= 0
- ShootHeavy= 0
+ ShootLight= 1
+ ShootHeavy= 1
+ %HalfOpenAngleMin= -5 deg
+ %HalfOpenAngleMax= 5 deg
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Projects/Nebula/reaction/SimpleNeutrons.reaction b/Projects/Nebula/reaction/SimpleNeutrons.reaction
index 604767b04eb4de424d5c33aa12d44a8700385ef9..dd60ba285cbf5e3767778e8a213f15f5d6c55c8e 100755
--- a/Projects/Nebula/reaction/SimpleNeutrons.reaction
+++ b/Projects/Nebula/reaction/SimpleNeutrons.reaction
@@ -3,8 +3,8 @@ Beam
  Particle= n 
  Energy= 150 MeV
  SigmaEnergy= 0 MeV
- SigmaThetaX= 1.5 deg
- SigmaPhiY= 1.5 deg
+ SigmaThetaX= 5 deg
+ SigmaPhiY= 5 deg
  SigmaX= 0 cm
  SigmaY= 0 cm
  MeanThetaX= 0 deg
diff --git a/Projects/S034/Analysis.cxx b/Projects/S034/Analysis.cxx
index b3ab208c767f7860dacd0e2dc3d70e1fab1e8722..095774b6c4cf05527ad63cd6d5c9a04b647109c5 100644
--- a/Projects/S034/Analysis.cxx
+++ b/Projects/S034/Analysis.cxx
@@ -9,7 +9,7 @@
  * Original Author: A. Matta contact address: matta@lpccaen.in2p3.fr         *
  *                                                                           *
  * Creation Date  : May 2021                                                 *
- * Last update    :                                                          *
+ * Last update    : October 2024                                             *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  *  This class describe  S034 analysis project                               *
@@ -30,8 +30,16 @@ using namespace std;
 #include"RootOutput.h"
 #include"NPParticle.h"
 
+#include"NPOptionManager.h"
+
+#include "TROOT.h"
+
+//thetaX angle dans le plan XZ
+//PhiY angle dans le plan YZ
+
 ////////////////////////////////////////////////////////////////////////////////
-Analysis::Analysis(){
+Analysis::Analysis()
+{
 }
 ////////////////////////////////////////////////////////////////////////////////
 Analysis::~Analysis(){
@@ -40,203 +48,629 @@ Analysis::~Analysis(){
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::Init(){
 
-  Plastic= (TBigRIPSPlasticPhysics*) m_DetectorManager->GetDetector("BigRIPSPlastic");
-  Minos= (TMinosPhysics*) m_DetectorManager->GetDetector("Minos");
-  Nebula = (TNebulaPhysics*) m_DetectorManager->GetDetector("NEBULA");
-  BDC = (TSamuraiBDCPhysics*) m_DetectorManager->GetDetector("SAMURAIBDC");
-  FDC0 = (TSamuraiFDC0Physics*) m_DetectorManager->GetDetector("SAMURAIFDC0");
-  FDC2 = (TSamuraiFDC2Physics*) m_DetectorManager->GetDetector("SAMURAIFDC2");
-  Hodo = (TSamuraiHodoscopePhysics*) m_DetectorManager->GetDetector("SAMURAIHOD");
-
-  Nebula->SetQThreshold(0);
-  Nebula->SetVThreshold(0);
-
-  FragmentTarget = NPL::EnergyLoss("He6_LH2.G4table","G4Table",1000 );
-  m_field.LoadMap(30*deg,"field_map/180702-2,40T-3000.table.bin",10);
-  m_field.SetFDC2Angle((59.930-90.0)*deg);
-  m_field.SetFDC2R(FDC2->GetOffset().Z());
-  InitOutputBranch();
-  InitInputBranch();
-  // for fdc/bdc alignement
-  //file.open("Calibration/Pos/bdc.txt");
-  He4=NPL::Particle("4He");
-  He6=NPL::Particle("6He");
+  EventInCut = false;
+  CompleteAnalysis = false;
+
+  //--------------------> Boolean initialisation <-----------------//
+  std::string tree_name = RootInput::getInstance()->GetChain()->GetName();
+  if(tree_name=="SimulatedTree"){
+    IsSimulation =true;
+    cout << "--------------->>> Analysing SIMULATED data <<<---------------" << endl;
+  }
+  else{
+    IsSimulation =false;
+    cout << "--------------->>> Analysing EXPERIMENT data <<<---------------" << endl;
+  }
+
+
+  
+  //Create 2 files (1st with FDC0, FDC2 and Minos hit positions and 2nd with BDC1, BDC2 and Minos hit positions for FDC/BDC alignment)
+  if(NPOptionManager::getInstance()->HasDefinition("alignment_file")){
+    CreateAlignmentFile = true;
+    cout << "--------------->>> Producing a data file for aligmnent <<<---------------" << endl;
+  }
+  else CreateAlignmentFile = false;
+
+
+  
+  if(!NPOptionManager::getInstance()->HasDefinition("detector_resolution")){
+     cout << "--------------->>> Analysing for all detectors <<<-------------" << endl;
+     CompleteAnalysis = true;
+ 
+     //Detectors only for experimental data
+     if(!IsSimulation)
+       {
+	 Plastic = (TBigRIPSPlasticPhysics*) m_DetectorManager->GetDetector("BigRIPSPlastic");
+	 Hodo = (TSamuraiHodoscopePhysics*) m_DetectorManager->GetDetector("SAMURAIHOD");
+       }
+
+     //Other detectors for both analysis and simulation
+     Minos= (TMinosPhysics*) m_DetectorManager->GetDetector("Minos");
+     BDC = (TSamuraiBDCPhysics*) m_DetectorManager->GetDetector("SAMURAIBDC");
+     FDC0 = (TSamuraiFDC0Physics*) m_DetectorManager->GetDetector("SAMURAIFDC0");
+     FDC2 = (TSamuraiFDC2Physics*) m_DetectorManager->GetDetector("SAMURAIFDC2");
+     //Nebula = (TNebulaPhysics*) m_DetectorManager->GetDetector("NEBULA");
+     
+     // Nebula->SetQThreshold(0); //????
+     // Nebula->SetVThreshold(0); //????
+     
+     ////////// Field loading //////////
+     // m_field.LoadMap(30*deg,"field_map/180702-2,40T-3000.table.bin",10);
+     // m_field.SetFDC2Angle((59.930-90.0)*deg);
+     // m_field.SetFDC2R(FDC2->GetOffset().Z());
+
+     TargetLength = Minos->GetTargetLength(); //mm
+     MinosPosition = Minos->GetMinosPosition(); //mm lab reference frame (Minos entrance)
+     Minos_InZ = MinosPosition.Z();
+     Minos_OutZ = MinosPosition.Z() + TargetLength;
+  }
+
+  //Detectors only in simulation
+  if(IsSimulation)
+    {
+      //NeuLAND = (TNeuLANDPhysics*) m_DetectorManager->GetDetector("NeuLAND");
+      Initial_Conditions=new TInitialConditions();
+    }
+
+  // if(!IsSimulation)
+  //   {
+  //     Minos= (TMinosPhysics*) m_DetectorManager->GetDetector("Minos");
+  //   }
+
+  
+
+  //setup information
+  LengthF7F13 = 36576.5; //mm
+  
+  ////////// He4 Energy loss in target //////////
+  // FragmentTarget = NPL::EnergyLoss("He4_LH2.G4table","G4Table",1000 );
+  
+  // He4=NPL::Particle("4He");
   He8=NPL::Particle("8He");
-  He8.SetBeta(0.5152);
-  n  =NPL::Particle("neutron");
-  mhe6 = He6.Mass();
-  mn   = n.Mass();
-  sumM= mhe6+mn;
+  //He8.SetBeta(0.5152); // expected value
+  He8.SetBeta(0.5152); // expected value
+  mHe8 = He8.Mass();
+  // n  = NPL::Particle("neutron");
+  // mhe4 = He4.Mass();
+  // mn   = n.Mass();
+  // sumM= mhe4+mn;
+
+  // Text file for alignment
+  
+  countLimitAlignment = 10000;
+  if(CreateAlignmentFile){
+    countAlignment = 0;
+    fileBDC.open("Calibration/Pos/bdc.txt");
+    fileFDC.open("Calibration/Pos/fdc.txt");
+  }
+  
+  
+  InitInputBranch();
+  InitOutputBranch();
+  LoadCuts();
+  
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::LoadCuts(){
+  
+  std::unique_ptr<TFile> myFile( TFile::Open("cut/Cut_Beam.root") );
+  cut_Beam = myFile->Get<TCutG>("Cut_Beam");
+
+  myFile.reset();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::TreatEvent(){
-  Clear();
+ if(!CompleteAnalysis) return;
   
-  static TLorentzVector LVHe6;
-  static TLorentzVector LVn;
-  Trigger=Trigger&0x00ff;
-
-
-  // BigRIPS plastic
-  double TF5=-1;
-  double TF13=-1;
-  double TF7=-1;
-  double TOF_F5F13=-1;
-  double TOF_F7F13=-1;
-  unsigned int sizeP = Plastic->FP.size();
-  for(unsigned int i = 0 ; i < sizeP ; i++){
-    if(Plastic->FP[i]==5){
-      TF5=Plastic->TSlew[i];
-    }
-    else if(Plastic->FP[i]==13&&Plastic->ID[i]==4){// two plastic at F13 taking only one
-      TF13=Plastic->TSlew[i];
-    }
-    else if(Plastic->FP[i]==7){
-      TF7=Plastic->TSlew[i];
-    }
-  }
+ Clear();
+ //cout << CreateAlignmentFile << endl;
+ Trigger=log(Trigger&0x00ff)/log(2.0);
+ // static TLorentzVector LVHe4;
+ // static TLorentzVector LVn;
+ // static TLorentzvector LVBeam;
 
-  if(TF7>0 && TF13>0){
-    // offset is adjusted to give the expected beta
-    TOF_F7F13=TF13-TF7+6.71626e+02;
-    static double LengthF7F13 = 117915-66409;
-    Beta_b=(LengthF7F13/TOF_F7F13)/NPUNITS::c_light;
-    // to find offset:
-    //Beta_b=TOF_F7F13-LengthF7F13/He8.GetVelocity();
-  }
-  // Samurai-Minos
-  if( Beta_b>0.5140  && Beta_b < 0.5165 // Correct Beta
-      && Hodo->Charge.size()==1 && Hodo->Charge[0]>28 && Hodo->Charge[0]<42 && Hodo->Time[0]>58 && Hodo->Time[0]<68 // 6He in Hodo->cope
-      && FDC2->PosX>-1500 && FDC2->PosX<1000 
-      && FDC2->PosY>-500 && FDC2->PosY<500 
-      && FDC0->PosX>-80 && FDC0->PosX<80 
-      && FDC0->PosY>-80 && FDC0->PosY<80 // both FDC ok
-      && Minos->Tracks_P0.size()==1     ) {  // p,pn only
-    // Compute ThetaX and PhiY using Minos vertex and FDC0 X
-    // Check if both BDC are reconstructed
-    TVector3 BDC1=BDC->GetPos(1);
-    TVector3 BDC2=BDC->GetPos(2);
-    if( BDC1.Z()!=-10000 && BDC2.Z()!=-10000){
-      TVector3 Vertex,delta;
-      TVector3 P1 = Minos->Tracks_P0[0]+Minos->Tracks_Dir[0];
-
-      // Vertex in Samurai Reference frame 
-      MinimumDistanceTwoLines(BDC1,BDC2, 
-          Minos->Tracks_P0[0], P1,
-          Vertex, delta) ;
+ ////// BigRIPS plastic //////
+ double TF3= -1;
+ double TF5=-1;
+ double TF7=-1;
+ double TF13_P1=-1;
+ double TF13_P2 = -1;
+ 
+ unsigned int sizeP = Plastic->FP.size();
+ if(!IsSimulation){
+     for(unsigned int i = 0 ; i < sizeP ; i++){
      
-      TVector3 FDC0_Dir= FDC0->GetPos()-Vertex;
-      FDC0_Dir=FDC0_Dir.Unit();
-      TVector3 BDCDir=BDC2-BDC1;
-      BDCDir=BDCDir.Unit();
-      BDCDir*=(Vertex.Z()-BDC2.Z())/BDCDir.Z();
-      BDCX=(BDC2+BDCDir).X();
-      BDCY=(BDC2+BDCDir).Y();
-
-      // XYZ relative to Minos entrance
-      X=Vertex.X();
-      Y=Vertex.Y();
-      Z=Vertex.Z()+4650;
-
-      // Fragment analysis 
-      if(FDC0_Dir.Z()>0.6 && Z>0 && Z<150 && sqrt(X*X+Y*Y)<15){
-        double FDC0_ThetaX = atan((FDC0->PosX-Vertex.X())/(1254.39-Z));
-        double FDC0_PhiY   = atan((FDC0->PosY-Vertex.Y())/(1254.39-Z));
-        Brho=m_field.FindBrho(FDC0->GetPos(),FDC0_Dir,FDC2->GetPos(),TVector3(0,0,1));
-        He6.SetBrho(Brho);
-        double Energy = He6.GetEnergy();
-        if(Energy){
-          Energy=FragmentTarget.EvaluateInitialEnergy(Energy,150-Z,FDC0_Dir.Angle(TVector3(0,0,1)));
-          He6.SetKineticEnergy(Energy);
-          Beta_f=He6.GetBeta();
-          LVHe6.SetVectM(TVector3(0,0,0),mhe6);
-          LVHe6.Boost(Beta_f*FDC0_Dir.Unit());
-        }
+       if(Plastic->FP[i]==3) TF3=Plastic->TSlew[i];
+       else if(Plastic->FP[i]==5) TF5=Plastic->TSlew[i];
+       else if(Plastic->FP[i]==7) TF7=Plastic->TSlew[i];   
+       else if(Plastic->FP[i]==13 && Plastic->ID[i]==4){// two plastic at F13 taking the 1st one
+	 TF13_P1= Plastic->TSlew[i];
+	 Charge_F13_P1 = sqrt(Plastic->QL[i]*Plastic->QR[i]);       
+       }  
+       else if(Plastic->FP[i]==13 && Plastic->ID[i]==5){// two plastic at F13 taking the 2nd one
+	 TF13_P2= Plastic->TSlew[i];
+	 Charge_F13_P2 = sqrt(Plastic->QL[i]*Plastic->QR[i]);       
+       }
+       
+       if((Plastic->FP[i]==3||Plastic->FP[i]==5||Plastic->FP[i]==7||Plastic->FP[i]==13) && Plastic->multiHit[i]>0) MultiHit_PlasticBeam = true;  
+       //if((Plastic->FP[i]==3||Plastic->FP[i]==5||Plastic->FP[i]==7||Plastic->FP[i]==13||Plastic->FP[i]==63) && Plastic->multiHit[i]>0) MultiHit_PlasticBeam = true;
+     } // end for loop on sizeP
+     
+   Charge_F13_P1P2 = sqrt(sqrt((Charge_F13_P1*Charge_F13_P1)*(Charge_F13_P2*Charge_F13_P2)));
+      
+   // plastic 1 and 2
+   if(TF7>0 && TF13_P1>0 && TF13_P2>0){
+     static double Offset_TOF_F7F13_P1P2 = 102.6; //xml file samuraiplastic.s034.2.xml
+     //Offset_TOF_F7F13_P1P2 = 0.0;
+     
+     double TF13_P1P2 = (TF13_P1 + TF13_P2)/2.0;
+     // to find offset:
+     Beam_Offset_TOF = -(TF13_P1P2-TF7)-LengthF7F13/He8.GetVelocity();
+     //cout<< He8.GetBeta()<< endl;
+     //cout << He8.GetEnergy() << endl;
+     
+     TOF_F7F13_P1P2= -(TF13_P1P2-TF7) - Offset_TOF_F7F13_P1P2;
+     Beta_F7F13_P1P2=(LengthF7F13/TOF_F7F13_P1P2)/NPUNITS::c_light;
+     Beam_Beta = Beta_F7F13_P1P2;
+     He8.SetBeta(Beam_Beta);
+   }// end plastic 1 and 2
+   
+ } // end if simulation == false
+
+ if(IsSimulation) {
+   He8.SetKineticEnergy(Initial_Conditions->GetIncidentInitialKineticEnergy());
+   Beam_Beta = He8.GetBeta();
+ }
+
+ Beam_Gamma = 1/sqrt(1-(Beam_Beta*Beam_Beta));
+ Beam_P = Beam_Beta * Beam_Gamma * mHe8;
+ 
+ // event selection
+ if((!IsSimulation && TMath::IsInside(TOF_F7F13_P1P2,Charge_F13_P1P2,cut_Beam->GetN(),cut_Beam->GetX(),cut_Beam->GetY())) || IsSimulation) EventInCut = true;
+
+ //BDC
+ MultBDC = BDC->GetMult();
+ BDC1_PileUp = BDC->GetPileUpDet(1);
+ BDC2_PileUp = BDC->GetPileUpDet(2);
+ 
+ //Minos
+ Minos_TrackNbr = Minos->GetNbrOfTracks();
+
+ //FDC0
+ FDC0_PileUp = FDC0->GetPileUp();
+
+ //Hodoscope
+ if(IsSimulation) HodoMult = 1;
+ else HodoMult = Hodo->GetMult();
+
+
+
+
+
+
+
+ // if (MultBDC>=2)
+ // cout << Beam_Beta << "  " << MultBDC << "   " << BDC1_PileUp << "   " << BDC2_PileUp << "   " << Minos_TrackNbr << "     " << FDC0_PileUp << "     " << HodoMult << endl;
+
+ //Samurai-Minos
+ if(EventInCut && Beam_Beta > 0.512 && Beam_Beta < 0.518 && MultBDC==2/*  && BDC1_PileUp==0 && BDC2_PileUp==0*/ /*&& (Minos_TrackNbr==1 || Minos_TrackNbr==2) &&*/ /*FDC0_PileUp==0 &&*/ /*(HodoMult==1 || HodoMult== 2)*/){ // selection for simulation and experimental data
+
+   // Beam and BDC
+   BDC1_Pos = BDC->GetPos(1);
+   BDC1_X = BDC1_Pos[0];
+   BDC1_Y = BDC1_Pos[1];
+   BDC1_Z = BDC1_Pos[2];
+
+   BDC2_Pos = BDC->GetPos(2);
+   BDC2_X = BDC2_Pos[0];
+   BDC2_Y = BDC2_Pos[1];
+   BDC2_Z = BDC2_Pos[2];
+
+   BDCs_Dir = (BDC2_Pos - BDC1_Pos).Unit();
+ 
+   Beam_Px = BDCs_Dir.X()*Beam_P;
+   Beam_Py = BDCs_Dir.Y()*Beam_P;
+   Beam_Pz = BDCs_Dir.Z()*Beam_P;
+
+   Beam_KE_Tot = He8.GetEnergy();
+   Beam_KE = (He8.GetEnergy())/(He8.GetA()); // Kinetic Energy by nucleon
+
+   Beam_Theta = BDCs_Dir.Angle(TVector3(0.0,0.0,1.0))*180.0/TMath::Pi();
+
+   Beam_ThetaX = atan2(BDC2_X-BDC1_X,BDC2_Z-BDC1_Z);
+   Beam_ThetaY = atan2(BDC2_Y-BDC1_Y,BDC2_Z-BDC1_Z);
+   
+   // if(IsSimulation) return;
+   
+   //Minos
+   if(Minos_TrackNbr==1){
+     Minos_Track1P0 = Minos->GetTracksP0(0);
+     Minos_Track1Dir = Minos->GetTracksDir(0);
+     Minos_DistMin = MinimumDistanceTwoLines(Minos_Track1P0, Minos_Track1P0 + Minos_Track1Dir, BDC1_Pos, BDC1_Pos + BDCs_Dir, Minos_Vertex, Minos_Delta);
+   }
+
+   else if(Minos_TrackNbr==2){
+     Minos_Vertex = Minos->GetVertex();
+     Minos_DistMin = Minos->GetDeltaVertex();
+     Minos_TwoProtonAngle = Minos->GetTheta12();
+   }
+   
+   Minos_Vertex_X = Minos_Vertex.X();
+   Minos_Vertex_Y = Minos_Vertex.Y();
+   Minos_Vertex_Z = Minos_Vertex.Z();
+   //   cout << Minos_Vertex_X << "   " << Minos_Vertex_Y << "   " << Minos_Vertex_Z << endl;
+   Minos_RVertex = sqrt( Minos_Vertex_X* Minos_Vertex_X + Minos_Vertex_Y*Minos_Vertex_Y);
+
+   Minos_Vertex_InDet = Minos_Vertex - MinosPosition;
+   Minos_Vertex_XInDet = Minos_Vertex_InDet.X();
+   Minos_Vertex_YInDet = Minos_Vertex_InDet.Y();
+   Minos_Vertex_ZInDet = Minos_Vertex_InDet.Z();
+
+   BDC_XVertex = BDCs_Dir.X() * ((Minos_Vertex_Z - BDC1_Z)/BDCs_Dir.Z()) + BDC1_X;
+   BDC_YVertex = BDCs_Dir.Y() * ((Minos_Vertex_Z - BDC1_Z)/BDCs_Dir.Z()) + BDC1_Y;
+ 
+   //FDC0
+   FDC0_Pos = FDC0->GetPos();
+   FDC0_X = FDC0_Pos.X();
+   FDC0_Y = FDC0_Pos.Y();
+   FDC0_Z = FDC0_Pos.Z();
+
+   Fragment_TrackDir = (FDC0_Pos - Minos_Vertex).Unit();
+
+   Minos_Out = Minos_Vertex + ((Minos_OutZ - Minos_Vertex_Z)/Fragment_TrackDir.Z())*Fragment_TrackDir;
+   Minos_OutX = Minos_Out.X();
+   Minos_OutY = Minos_Out.Y();
+   Minos_ROut = sqrt(Minos_OutX*Minos_OutX + Minos_OutY*Minos_OutY);
+   
+   Minos_PathFragment = Minos_Vertex - Minos_Out;
+   Minos_DistFragment = Minos_PathFragment.Mag();
+
+   Minos_In = BDC1_Pos + ((Minos_InZ - BDC1_Z)/BDCs_Dir.Z())*BDCs_Dir;
+   Minos_InX = Minos_In.X();
+   Minos_InY = Minos_In.Y();
+   Minos_RIn = sqrt(Minos_InX*Minos_InX + Minos_InY*Minos_InY);
+   
+   //FDC2
+   FDC2_Pos = FDC2->GetPos();
+   FDC2_X = FDC2_Pos.X();
+   FDC2_Y = FDC2_Pos.Y();
+   FDC2_Z = FDC2_Pos.Z();
+   
+   
+   //Hodoscope
+   // position extrapolée de la fdc2 vers l'hodoscope
+   
+
+   
+   // creation of files fdc.txt and bdc.txt with BDCs, Minos and FDCs hit positions
+   // cout << CreateAlignmentFile << endl;
+   
+   if(CreateAlignmentFile) FillAlignmentFiles();
+   }
+
+ 
+ // TVector3 Beam_Boost;
+
+  // // Samurai-Minos
+  // if( Beam_Beta>0.5140  && Beam_Beta < 0.5165 // Correct Beta
+  //     && Hodo->Charge.size()==1 && Hodo->Charge[0]>28 && Hodo->Charge[0]<42 && Hodo->Time[0]>58 && Hodo->Time[0]<68 // 6He in Hodo->cope ----------->>>>>>>> à changer pour He4
+  //     && FDC2->PosX>-1500 && FDC2->PosX<1000 
+  //     && FDC2->PosY>-500 && FDC2->PosY<500 
+  //     && FDC0->PosX>-80 && FDC0->PosX<80 
+  //     && FDC0->PosY>-80 && FDC0->PosY<80 // both FDC ok
+  //     && Minos->Tracks_P0.size()==1     ) {  // p,pn only // and p,p' ?
+  //   // Compute ThetaX and PhiY using Minos vertex and FDC0 X
+  //   // Check if both BDC are reconstructed
+  //   TVector3 BDC1=BDC->GetPos(1);
+  //   TVector3 BDC2=BDC->GetPos(2);
+  //   if( BDC1.Z()!=-10000 && BDC2.Z()!=-10000){
+  //     TVector3 Vertex,delta;
+  //     TVector3 P1 = Minos->Tracks_P0[0]+Minos->Tracks_Dir[0];
+
+  //     // Vertex in Samurai Reference frame 
+  //     MinimumDistanceTwoLines(BDC1,BDC2, 
+  //         Minos->Tracks_P0[0], P1,
+  //         Vertex, delta) ;
+     
+      // TVector3 FDC0_Dir= FDC0->GetPos()-Vertex;
+      // FDC0_Dir=FDC0_Dir.Unit();
+      // TVector3 BDCDir=BDC2-BDC1;
+      // BDCDir=BDCDir.Unit();
+      // BDCDir*=(Vertex.Z()-BDC2.Z())/BDCDir.Z();
+      // BDCX=(BDC2+BDCDir).X();
+      // BDCY=(BDC2+BDCDir).Y();
+
+      // // XYZ relative to Minos entrance
+      // X=Vertex.X();
+      // Y=Vertex.Y();
+      // Z=Vertex.Z()+4650;
+
+      // // Fragment analysis 
+      // if(FDC0_Dir.Z()>0.6 && Z>0 && Z<150 && sqrt(X*X+Y*Y)<15){
+      //   double FDC0_ThetaX = atan((FDC0->PosX-Vertex.X())/(1254.39-Z));
+      //   double FDC0_PhiY   = atan((FDC0->PosY-Vertex.Y())/(1254.39-Z));
+      //   Brho=m_field.FindBrho(FDC0->GetPos(),FDC0_Dir,FDC2->GetPos(),TVector3(0,0,1));
+      //   He6.SetBrho(Brho);
+      //   double Energy = He6.GetEnergy();
+      //   if(Energy){
+      //     Energy=FragmentTarget.EvaluateInitialEnergy(Energy,150-Z,FDC0_Dir.Angle(TVector3(0,0,1)));
+      //     He6.SetKineticEnergy(Energy);
+      //     Beta_f=He6.GetBeta();
+      //     LVHe4.SetVectM(TVector3(0,0,0),mhe6);
+      //     LVHe4.Boost(Beta_f*FDC0_Dir.Unit());
+      //   }
         
-      }
+      // }
       
-      // Neutron analysis
-      if(Nebula->Charge.size()>0 && !Nebula->HasVeto()){
-        // Index of first neutron hit
-        unsigned int first = Nebula->GetFirstHit();
-        TVector3 Pfirst = (Nebula->GetPos(first)-Vertex);
-        double L = Pfirst.Mag();
-        double TSBT= (Vertex.Z()+7377.56)/(Beta_b*c_light);
-        TOF_n = Nebula->TOF[first]-TSBT-TF13;
-        Beta_n = (L/TOF_n)/NPUNITS::c_light;
-        LVn.SetVectM(TVector3(0,0,0),mn);
-        LVn.Boost(Beta_n*Pfirst.Unit());
-      }
+      // // Neutron analysis
+      // if(Nebula->Charge.size()>0 && !Nebula->HasVeto()){
+      //   // Index of first neutron hit
+      //   unsigned int first = Nebula->GetFirstHit();
+      //   TVector3 Pfirst = (Nebula->GetPos(first)-Vertex);
+      //   double L = Pfirst.Mag();
+      //   double TSBT= (Vertex.Z()+7377.56)/(Beam_Beta*c_light);
+      //   TOF_n = Nebula->TOF[first]-TSBT-TF13;
+      //   Beta_n = (L/TOF_n)/NPUNITS::c_light;
+      //   LVn.SetVectM(TVector3(0,0,0),mn);
+      //   LVn.Boost(Beta_n*Pfirst.Unit());
+      // }
       
-      // a full event
-      if(Beta_n&&Beta_f){
-        He6.SetEnergyImpulsion(LVHe6);
-        n.SetEnergyImpulsion(LVn);
-        Erel = (LVHe6+LVn).Mag()-sumM;
-      }
-      // Calib//////////////////////////////////////////////////////////////////
- /*     static int count=0;
-      if(Minos->Delta_Vertex < 5 && FDC2->PosX-252.55>0&&FDC0->GetPos().X()>-10000 && FDC0->Dir.Z()>0.9 && Minos->Z_Vertex>0&& sqrt(Minos->X_Vertex*Minos->X_Vertex+Minos->Y_Vertex*Minos->Y_Vertex)<15){
-        file << FDC0->GetPos().X()   <<" " << FDC0->GetPos().Y() << " " << FDC0->GetPos().Z() <<" " ;
-        file << Minos->X_Vertex      <<" " << Minos->Y_Vertex    << " " << Minos->Z_Vertex    << " " ;
-        file << FDC2->GetPos().X()   <<" " << FDC2->GetPos().Y() << " " << FDC2->GetPos().Z() <<" " << FDC2->Dir.X() <<" " << FDC2->Dir.Y() << " " << FDC2->Dir.Z()<< endl;
-        count ++;
-      }
-      if(count>1000)
-        exit(1);
-        */
-    /*  static int count=0;
-      if(Minos->Delta_Vertex < 5 && sqrt(Minos->X_Vertex*Minos->X_Vertex+Minos->Y_Vertex*Minos->Y_Vertex)<15 && Minos->Z_Vertex>-4650){
-        file << BDC1.X()  <<" " << BDC1.Y()<< " " << BDC1.Z() <<" " ;
-        file << BDC2.X()  <<" " << BDC2.Y()<< " " << BDC2.Z() <<" " ;
-        file << Minos->X_Vertex      <<" " << Minos->Y_Vertex    << " " << Minos->Z_Vertex    << endl ;
-        count ++;
-      }
-      if(count>10000)
-        exit(1);
-      */  
+      // // a full event
+      // if(Beta_n&&Beta_f){
+      //   He6.SetEnergyImpulsion(LVHe4);
+      //   n.SetEnergyImpulsion(LVn);
+      //   Erel = (LVHe4+LVn).Mag()-sumM;
+      // }
 
-    }
-  }
+  //   }
+  // }
+
+ 
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::End(){
+
+  fileBDC.close();
+  fileFDC.close();
+  //free(Plastic);
+  //free(BDC);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::Clear(){
-  Brho=-1000;
-  BDCX=-1000;
-  BDCY=-1000;
-  Beta_f=-1000;
-  Beta_n=-1000;
-  Beta_b=-1000;
-  X=Y=Z=-1000;
-  TOF_n=-1000;
-  Erel=-1000;
+  He8.SetBeta(0.5152);
+
+
+  MultiHit_PlasticBeam = false;
+  EventInCut = false;
+
+  //Beam
+  Beam_Beta= -10000;
+  Beam_Gamma =-10000;
+  Beam_P = -10000;
+  Beam_KE = -10000;
+  Beam_KE_Tot=-10000;
+  // Beam_Boost.Clear();
+  Beam_Px =-10000;
+  Beam_Py =-10000;
+  Beam_Pz = -10000;
+  Beam_Theta = -10000;
+  
+  //plastic 1
+  TOF_F7F13_P1 = -10000;
+  Charge_F13_P1 = -10000;
+  Beta_F7F13_P1 = -10000;
+    
+  //plastic 2
+  TOF_F7F13_P2 = -10000;
+  Charge_F13_P2 = -10000;
+  Beta_F7F13_P2 = -10000;
+
+  //plastic 1 and 2
+  TOF_F7F13_P1P2 = -1000;
+  Charge_F13_P1P2 = -1000;
+  Beta_F7F13_P1P2 = -1000;
+  Beam_Offset_TOF = -10000;
+
+  //BDC1 and BDC2
+  BDC1_X= BDC1_Y= BDC1_Z = -10000;
+  BDC2_X= BDC2_Y = BDC2_Z = -10000;
+  BDC1_Pos.Clear();
+  BDC2_Pos.Clear();
+  BDC1_PileUp = -10000;
+  BDC2_PileUp = -10000;
+
+  Beam_ThetaX = Beam_ThetaY = -10000;
+  BDC_XVertex = BDC_YVertex = -10000;
+  
+  //Minos
+  Minos_Vertex.Clear();
+  Minos_Vertex_X = -10000;
+  Minos_Vertex_Y =-10000;
+  Minos_Vertex_Z = -10000;
+  Minos_TrackNbr = -10000;
+  Minos_DistMin=-10000;// minimum distance between the 2 lines used in trajectory reconstruction
+  Minos_RVertex=-10000;
+  Minos_PathFragment.Clear();
+  Minos_DistFragment = -10000;
+  Minos_In.Clear();
+  Minos_InX = Minos_InY =-10000;
+  Minos_RIn = -10000;
+  Minos_Out.Clear();
+  Minos_OutX = Minos_OutY =-10000;
+  Minos_ROut = -10000;
+  Minos_Delta.Clear();
+  Minos_TwoProtonAngle = -10000;
+  Minos_Track1P0.Clear();
+  Minos_Track1Dir.Clear();
+  Minos_Vertex_InDet.Clear();
+  Minos_Vertex_XInDet = -10000;
+  Minos_Vertex_YInDet = -10000;
+  Minos_Vertex_ZInDet = -10000;
+
+  //FDC0
+  FDC0_Pos.Clear();
+  FDC0_X = FDC0_Y = FDC0_Z =-10000;
+  FDC0_PileUp = -10000;
+  
+  
+  //FDC2
+  FDC2_Pos.Clear();
+  FDC2_X = FDC2_Y = FDC2_Z =-10000;
+  FDC2_PileUp = -10000;
+
+  //Hodoscope
+  HodoMult = -10000;
+
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::InitOutputBranch() {
-  RootOutput::getInstance()->GetTree()->Branch("Brho",&Brho,"Brho/D");
-  RootOutput::getInstance()->GetTree()->Branch("BDCX",&BDCX,"BDCX/D");
-  RootOutput::getInstance()->GetTree()->Branch("BDCY",&BDCY,"BDCY/D");
-  RootOutput::getInstance()->GetTree()->Branch("X",&X,"X/D");
-  RootOutput::getInstance()->GetTree()->Branch("Y",&Y,"Y/D");
-  RootOutput::getInstance()->GetTree()->Branch("Z",&Z,"Z/D");
-  RootOutput::getInstance()->GetTree()->Branch("Erel",&Erel,"Erel/D");
-  RootOutput::getInstance()->GetTree()->Branch("Beta_f",&Beta_f,"Beta_f/D");
-  RootOutput::getInstance()->GetTree()->Branch("Beta_n",&Beta_n,"Beta_n/D");
-  RootOutput::getInstance()->GetTree()->Branch("Beta_b",&Beta_b,"Beta_b/D");
-  RootOutput::getInstance()->GetTree()->Branch("TOF_n",&TOF_n,"TOF_n/D");
+  
+  //Beam
+  RootOutput::getInstance()->GetTree()->Branch("Beam_Beta",&Beam_Beta,"Beam_Beta/D");
+  RootOutput::getInstance()->GetTree()->Branch("MultiHit_PlasticBeam",&MultiHit_PlasticBeam,"MultiHit_PlasticBeam/D");
+  RootOutput::getInstance()->GetTree()->Branch("Beam_Gamma",&Beam_Gamma,"Beam_Gamma/D");
+  RootOutput::getInstance()->GetTree()->Branch("Beam_P",&Beam_P,"Beam_P/D");
+  
+  // plastic 1
+  // RootOutput::getInstance()->GetTree()->Branch("TOF_F7F13_P1",&TOF_F7F13_P1,"TOF_F7F13_P1/D");
+  // RootOutput::getInstance()->GetTree()->Branch("Charge_F13_P1",&Charge_F13_P1,"Charge_F13_P1/D");
+  // RootOutput::getInstance()->GetTree()->Branch("Beta_F7F13_P1",&Beta_F7F13_P1,"Beta_F7F13_P1/D");
+  // plastic 2
+  // RootOutput::getInstance()->GetTree()->Branch("TOF_F7F13_P2",&TOF_F7F13_P2,"TOF_F7F13_P2/D");
+  // RootOutput::getInstance()->GetTree()->Branch("Charge_F13_P2",&Charge_F13_P2,"Charge_F13_P2/D");
+  // RootOutput::getInstance()->GetTree()->Branch("Beta_F7F13_P2",&Beta_F7F13_P2,"Beta_F7F13_P2/D");
+
+  //plastic 1 and 2
+  RootOutput::getInstance()->GetTree()->Branch("Beam_Offset_TOF",&Beam_Offset_TOF,"Beam_Offset_TOF/D");
+  RootOutput::getInstance()->GetTree()->Branch("TOF_F7F13_P1P2",&TOF_F7F13_P1P2,"TOF_F7F13_P1P2/D");
+  RootOutput::getInstance()->GetTree()->Branch("Charge_F13_P1P2",&Charge_F13_P1P2,"Charge_F13_P1P2/D");
+  //RootOutput::getInstance()->GetTree()->Branch("Beta_F7F13_P1P2",&Beta_F7F13_P1P2,"Beta_F7F13_P1P2/D");
+
+  //Beam
+  RootOutput::getInstance()->GetTree()->Branch("Beam_Px",&Beam_Px,"Beam_Px/D");
+  RootOutput::getInstance()->GetTree()->Branch("Beam_Py",&Beam_Py,"Beam_Py/D");
+  RootOutput::getInstance()->GetTree()->Branch("Beam_Pz",&Beam_Pz,"Beam_Pz/D");
+
+  RootOutput::getInstance()->GetTree()->Branch("Beam_KE_Tot",&Beam_KE_Tot,"Beam_KE_Tot/D");
+  RootOutput::getInstance()->GetTree()->Branch("Beam_KE",&Beam_KE,"Beam_KE/D"); // KE/u
+
+  RootOutput::getInstance()->GetTree()->Branch("Beam_Theta",&Beam_Theta,"Beam_Theta/D");
+
+  //BDC1 et BDC2
+  RootOutput::getInstance()->GetTree()->Branch("BDC1_X",&BDC1_X,"BDC1_X/D");
+  RootOutput::getInstance()->GetTree()->Branch("BDC1_Y",&BDC1_Y,"BDC1_Y/D");
+  RootOutput::getInstance()->GetTree()->Branch("BDC1_Z",&BDC1_Z,"BDC1_Z/D");
+  
+  RootOutput::getInstance()->GetTree()->Branch("BDC2_X",&BDC2_X,"BDC2_X/D");
+  RootOutput::getInstance()->GetTree()->Branch("BDC2_Y",&BDC2_Y,"BDC2_Y/D");
+  RootOutput::getInstance()->GetTree()->Branch("BDC2_Z",&BDC2_Z,"BDC2_Z/D");
+
+  RootOutput::getInstance()->GetTree()->Branch("BDC1_PileUp",&BDC1_PileUp,"BDC1_PileUp/I");
+  RootOutput::getInstance()->GetTree()->Branch("BDC2_PileUp",&BDC2_PileUp,"BDC2_PileUp/I");
+
+  RootOutput::getInstance()->GetTree()->Branch("Beam_ThetaX",&Beam_ThetaX,"Beam_ThetaX/D");
+  RootOutput::getInstance()->GetTree()->Branch("Beam_ThetaY",&Beam_ThetaY,"Beam_ThetaY/D");
+  
+  RootOutput::getInstance()->GetTree()->Branch("BDC_XVertex",&BDC_XVertex,"BDC_XVertex/D");
+  RootOutput::getInstance()->GetTree()->Branch("BDC_YVertex",&BDC_YVertex,"BDC_YVertex/D");
+  
+  //Minos
+  RootOutput::getInstance()->GetTree()->Branch("Minos_TrackNbr",&Minos_TrackNbr,"Minos_TrackNbr/I");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_X",&Minos_Vertex_X,"Minos_Vertex_X/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_Y",&Minos_Vertex_Y,"Minos_Vertex_Y/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_Z",&Minos_Vertex_Z,"Minos_Vertex_Z/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_DistMin",&Minos_DistMin,"Minos_DistMin/D");    RootOutput::getInstance()->GetTree()->Branch("Minos_PathFragment",&Minos_PathFragment);
+  RootOutput::getInstance()->GetTree()->Branch("Minos_DistFragment",&Minos_DistFragment,"Minos_DistFragment/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_InX",&Minos_InX,"Minos_InX/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_InY",&Minos_InY,"Minos_InY/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_InZ",&Minos_InZ,"Minos_InZ/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_RIn",&Minos_RIn,"Minos_RIn/D");
+  
+  RootOutput::getInstance()->GetTree()->Branch("Minos_RVertex",&Minos_RVertex,"Minos_RVertex/D");
+
+  RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_XInDet",&Minos_Vertex_XInDet,"Minos_Vertex_XInDet/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_YInDet",&Minos_Vertex_YInDet,"Minos_Vertex_YInDet/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_Vertex_ZInDet",&Minos_Vertex_ZInDet,"Minos_Vertex_ZInDet/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_TwoProtonAngle",&Minos_TwoProtonAngle,"Minos_TwoProtonAngle/D");
+
+  RootOutput::getInstance()->GetTree()->Branch("Minos_OutX",&Minos_OutX,"Minos_OutX/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_OutY",&Minos_OutY,"Minos_OutY/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_OutZ",&Minos_OutZ,"Minos_OutZ/D");
+  RootOutput::getInstance()->GetTree()->Branch("Minos_ROut",&Minos_ROut,"Minos_ROut/D");
+
+  //FDC0
+  RootOutput::getInstance()->GetTree()->Branch("FDC0_X",&FDC0_X,"FDC0_X/D");
+  RootOutput::getInstance()->GetTree()->Branch("FDC0_Y",&FDC0_Y,"FDC0_Y/D");
+  RootOutput::getInstance()->GetTree()->Branch("FDC0_Z",&FDC0_Z,"FDC0_Z/D");
+  RootOutput::getInstance()->GetTree()->Branch("FDC0_PileUp",&FDC0_PileUp,"FDC0_PileUp/I");
+
+  //FDC2
+  RootOutput::getInstance()->GetTree()->Branch("FDC2_X",&FDC2_X,"FDC2_X/D");
+  RootOutput::getInstance()->GetTree()->Branch("FDC2_Y",&FDC2_Y,"FDC2_Y/D");
+  RootOutput::getInstance()->GetTree()->Branch("FDC2_Z",&FDC2_Z,"FDC2_Z/D");
+  RootOutput::getInstance()->GetTree()->Branch("FDC2_PileUp",&FDC2_PileUp,"FDC2_PileUp/I");
+
+  //Hodoscope
+  RootOutput::getInstance()->GetTree()->Branch("HodoMult",&HodoMult,"HodoMult/I");
+
+  //Trigger
   RootOutput::getInstance()->GetTree()->Branch("Trigger",&Trigger,"Trigger/I");
-} 
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::InitInputBranch(){
-  RootInput::getInstance()->GetChain()->SetBranchAddress("Trigger",&Trigger);
+  if(IsSimulation){
+    RootInput::getInstance()->GetChain()->SetBranchAddress("InitialConditions",&Initial_Conditions);
+    }
+  if(!IsSimulation){
+    RootInput::getInstance()->GetChain()->SetBranchAddress("Trigger",&Trigger);
+  }
 }
+
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::FillAlignmentFiles(){
+   cout << "////////////////WARNING: CONDITION ON MINOS Z_VERTEX TO CHECK//////////////////" << endl;
+  
+  fileFDC << FDC0->GetPos().X()   <<" " << FDC0->GetPos().Y() << " " << FDC0->GetPos().Z() <<" " ;
+        fileFDC << Minos->X_Vertex      <<" " << Minos->Y_Vertex    << " " << Minos->Z_Vertex    << " " ;
+        fileFDC << FDC2->GetPos().X()   <<" " << FDC2->GetPos().Y() << " " << FDC2->GetPos().Z() <<" " << FDC2->Dir.X() <<" " << FDC2->Dir.Y() << " " << FDC2->Dir.Z()<< endl;
+
+	TVector3 BDC1=BDC->GetPos(1);
+	TVector3 BDC2=BDC->GetPos(2);
+        fileBDC << BDC1.X()  <<" " << BDC1.Y()<< " " << BDC1.Z() <<" " ;
+        fileBDC << BDC2.X()  <<" " << BDC2.Y()<< " " << BDC2.Z() <<" " ;
+        fileBDC << Minos->X_Vertex      <<" " << Minos->Y_Vertex    << " " << Minos->Z_Vertex    << endl ;
+	countAlignment++;
+  
+  /*
+      if(Minos->Delta_Vertex < 5 && FDC2->PosX-252.55>0 && FDC0->GetPos().X()>-10000 && FDC0->Dir.Z()>0.9 && Minos->Z_Vertex<-900 && sqrt(Minos->X_Vertex*Minos->X_Vertex+Minos->Y_Vertex*Minos->Y_Vertex)<15){
+        fileFDC << FDC0->GetPos().X()   <<" " << FDC0->GetPos().Y() << " " << FDC0->GetPos().Z() <<" " ;
+        fileFDC << Minos->X_Vertex      <<" " << Minos->Y_Vertex    << " " << Minos->Z_Vertex    << " " ;
+        fileFDC << FDC2->GetPos().X()   <<" " << FDC2->GetPos().Y() << " " << FDC2->GetPos().Z() <<" " << FDC2->Dir.X() <<" " << FDC2->Dir.Y() << " " << FDC2->Dir.Z()<< endl;
+
+	TVector3 BDC1=BDC->GetPos(1);
+	TVector3 BDC2=BDC->GetPos(2);
+        fileBDC << BDC1.X()  <<" " << BDC1.Y()<< " " << BDC1.Z() <<" " ;
+        fileBDC << BDC2.X()  <<" " << BDC2.Y()<< " " << BDC2.Z() <<" " ;
+        fileBDC << Minos->X_Vertex      <<" " << Minos->Y_Vertex    << " " << Minos->Z_Vertex    << endl ;
+	countAlignment++;
+        
+      }
+	*/
+      
+ 
+	if(countAlignment>=countLimitAlignment) {
+	  CreateAlignmentFile = false;
+	  cout << "fin de creation fichier alignement" << endl;
+	}
+      
+}
+
   ////////////////////////////////////////////////////////////////////////////////
   //            Construct Method to be pass to the AnalysisFactory              //
   ////////////////////////////////////////////////////////////////////////////////
diff --git a/Projects/S034/Analysis.h b/Projects/S034/Analysis.h
index bb609b7e9ee6224fa8a0b13d45a86b5416a3aaa3..fb842e28a9800194af872973556912a3cd83b078 100644
--- a/Projects/S034/Analysis.h
+++ b/Projects/S034/Analysis.h
@@ -25,6 +25,7 @@
 #include"NPEnergyLoss.h"
 #include"TMinosPhysics.h"
 #include"TNebulaPhysics.h"
+#include"TNeuLANDPhysics.h"
 #include"TSamuraiBDCPhysics.h"
 #include"TSamuraiFDC0Physics.h"
 #include"TSamuraiFDC2Physics.h"
@@ -32,49 +33,172 @@
 #include"TBigRIPSPlasticPhysics.h"
 #include"SamuraiFieldMap.h"
 #include<fstream>
+
+#include"TInitialConditions.h"
+
+//Root
+#include "TCutG.h"
+#include "TFile.h"
+
 class Analysis: public NPL::VAnalysis{
-  public:
-    Analysis();
-    ~Analysis();
+  
+public:
+  Analysis();
+  ~Analysis();
 
-  public: 
-    void Init();
-    void TreatEvent();
-    void End();
+public: 
+  void Init();
+  void TreatEvent();
+  void End();
 
-    static NPL::VAnalysis* Construct();
+  static NPL::VAnalysis* Construct();
+  
+private: // boolean 
+  bool IsSimulation;
+  bool CreateAlignmentFile;
+  bool CompleteAnalysis;
+  bool EventInCut;
 
-  private:
+private: //cut files
+  TCutG *cut_Beam ;
+  
+private: //detector used in the analysis
     TBigRIPSPlasticPhysics* Plastic;
     TMinosPhysics* Minos;
     TNebulaPhysics* Nebula;
+    TNeuLANDPhysics* NeuLAND;
     TSamuraiBDCPhysics* BDC;
     TSamuraiFDC0Physics* FDC0;
     TSamuraiFDC2Physics* FDC2;
     TSamuraiHodoscopePhysics* Hodo;
-
+    
     SamuraiFieldMap m_field ;
-//    ofstream file;
-  private: // output variable
-    double Brho,BDCX,BDCY,X,Y,Z,Erel;
-    double TOF_n;
-    double Beta_f;
-    double Beta_n;
-    double Beta_b;
-    int    Trigger;
-  private: // Energy loss table
-   NPL::EnergyLoss FragmentTarget ;
-   NPL::Particle He4,He6,He8,n;
-   double mhe6;
-   double mn  ;
-   double sumM;
-
-
-
-  public:
-    void  Clear();
-    void  InitOutputBranch();
-    void  InitInputBranch();
+
+    TInitialConditions* Initial_Conditions;
+  
+private: //setup information
+  //setup
+  double LengthF7F13;
+  double TargetLength;
+  double FDC2Angle;
+  TVector3 MinosPosition;
+
+private: // Energy loss table + particles information
+  NPL::EnergyLoss FragmentTarget;
+  NPL::Particle He4,He6,He8,n;
+  double mHe8;
+  double mHe4;
+  double mhe6;
+  double mn  ;
+  double sumM;
+  
+  
+private: // output files and variables
+
+  ///Files///
+  ofstream fileBDC;
+  ofstream fileFDC;
+  int countAlignment;
+  int countLimitAlignment;
+ 
+
+  ///Variables///
+  
+  //// Beam ////
+
+  double MultiHit_PlasticBeam;
+  
+  double Beam_Gamma;
+  double Beam_P;
+  TVector3 Beam_Boost;
+  
+
+  //plastic 1
+  double Beta_F7F13_P1;
+  double Charge_F13_P1;
+  double TOF_F7F13_P1;
+
+
+  //plastic 2
+  double Beta_F7F13_P2;
+  double Charge_F13_P2;
+  double TOF_F7F13_P2;
+  
+  // both plastic together
+  double Beta_F7F13_P1P2;
+  double Charge_F13_P1P2;
+  double TOF_F7F13_P1P2;
+
+  //Beam
+  double Beam_Px, Beam_Py, Beam_Pz;
+  double Beam_KE_Tot;
+  double Beam_KE;
+  double Beam_Beta;
+  double Beam_Theta;
+  double Beam_Offset_TOF;
+  
+  //BDC1 and BDC2
+  double BDC1_X,BDC1_Y, BDC1_Z;
+  double BDC2_X,BDC2_Y, BDC2_Z;
+  TVector3 BDC1_Pos, BDC2_Pos;
+  TVector3 BDCs_Dir;
+  int MultBDC;
+  int BDC1_PileUp, BDC2_PileUp;
+
+  double Beam_ThetaX, Beam_ThetaY;
+  double BDC_XVertex, BDC_YVertex;
+
+  //Minos
+  TVector3 Minos_Vertex;
+  double Minos_Vertex_X, Minos_Vertex_Y, Minos_Vertex_Z;
+  int Minos_TrackNbr;
+  double Minos_DistMin;// minimum distance between the 2 lines used in trajectory reconstruction
+  double Minos_RVertex;
+  TVector3 Minos_PathFragment;
+  double Minos_DistFragment;
+  TVector3 Minos_In;
+  double Minos_InX, Minos_InY, Minos_InZ;
+  double Minos_RIn;
+  TVector3 Minos_Out;
+  double Minos_OutX, Minos_OutY, Minos_OutZ; // to calculate fragment's path in target 
+  double Minos_ROut;
+  double Minos_TwoProtonAngle;
+  TVector3 Minos_Delta, Minos_Track1P0, Minos_Track1Dir;
+  TVector3 Minos_Vertex_InDet;
+  double Minos_Vertex_XInDet;
+  double Minos_Vertex_YInDet;
+  double Minos_Vertex_ZInDet;
+
+
+  //FDC0
+  TVector3 FDC0_Pos;
+  double FDC0_X, FDC0_Y,FDC0_Z;
+  int FDC0_PileUp;
+
+  //Fragment
+  TVector3 Fragment_TrackDir;
+
+  //FDC2
+  TVector3 FDC2_Pos;
+  double FDC2_X, FDC2_Y,FDC2_Z;
+  int FDC2_PileUp;
+
+
+  //Hodoscope
+  // int 
+  int HodoMult;
+
+  //Trigger
+  int Trigger;
+  
+public:
+  void  Clear();
+  void  InitOutputBranch();
+  void  InitInputBranch();
+
+  void FillAlignmentFiles();
+  void LoadCuts();
+
 };
 
 #endif
diff --git a/Projects/S034/Calibration/BDC/CalibBDC.cxx b/Projects/S034/Calibration/BDC/CalibBDC.cxx
index fcd922caad74ead7bb7456b0e208234febc7b371..2fdf41985ac5337a5871c7f7072ae7c3d9dd9d85 100755
--- a/Projects/S034/Calibration/BDC/CalibBDC.cxx
+++ b/Projects/S034/Calibration/BDC/CalibBDC.cxx
@@ -61,7 +61,7 @@ void CalibBDC(){
   
 /*   BDC=2; */
 /*   NLayer = 14; */
-/*   c->SetBranchStatus("SamuraiBDC2",true); */
+/*   c->SetBranchStatus("SamuraiBDC",true); */
 /*   ofstream fout2(Form("CalibFiles/BDC2_Calib_%d.txt", run12)); */  
 /*   inter = 10;// inter wire distance */
 /*   low=1200; */
diff --git a/Projects/S034/Calibration/BDC/CalibBDC1.cxx b/Projects/S034/Calibration/BDC/CalibBDC1.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..5cc19a9fbb4d400987034dc77296185457eb4d44
--- /dev/null
+++ b/Projects/S034/Calibration/BDC/CalibBDC1.cxx
@@ -0,0 +1,59 @@
+void CalibBDC(){
+  
+  for(int runNbr =824; runNbr <= 824 ; runNbr++){
+  
+  TChain* c = new TChain("RawTree");
+  c->Add(Form("../../root/mrdc/run%d/run%d_SAMURAIBDC.root",runNbr,runNbr));
+  c->SetBranchStatus("*",false);
+
+  // BDC1
+  int BDC=1;
+  int NLayer = 8;
+  c->SetBranchStatus("SamuraiBDC",true);
+  ofstream fout(Form("BDC%d_Calib_%d.txt",BDC, runNbr));  
+  double inter = 2.5;// inter wire distance / 2
+  double low=1600;
+  double high=1900;
+
+  cout <<"Calibrating BDC" << BDC <<  " run number : " << runNbr << endl;
+  
+  string cond;
+
+  TF1* f = new TF1("sigmoid","[0]/(exp([1]*([2]-x))+1)");
+ //TF1* f = new TF1("sigmoid","0*(x<[0])+(x-[0])*[1]*(x>[0]&&x<[2])+[3]*(x>[2])");
+
+ TH1D* h = new TH1D("h","h",1500,0,3000);
+ for(unsigned int i = 0 ; i < NLayer; i++){
+  cond = Form("fBDC_LayerNbr==%d&&fBDC_Edge==0&&fBDC_Time>%f&&fBDC_Time<%f&&fBDC_Time@.size()>10&&fBDC_Time@.size()<100 &&fBDC_DetectorNbr==%d ",i,low,high,BDC);
+  c->Draw("fBDC_Time>>h",cond.c_str());
+  TH1D* g = new TH1D(*h);
+  unsigned int size = h->GetNbinsX();
+  for(unsigned int i = 0 ; i < size ; i++){
+    g->SetBinContent(i,h->Integral(0,i)); 
+  }
+
+  //new TCanvas();
+  //g->Draw();
+  cout << g->GetMaximum() << endl;
+  f->SetParameter(0,g->GetMaximum());
+  f->SetParameter(1,0.1);
+  f->SetParameter(2,1700);
+  f->SetParLimits(1,0,1);
+  f->SetParLimits(2,1600,1900);
+
+  g->Fit(f);
+  // Renormalize the distribution to the maximum driftlength 
+  f->SetParameter(0,inter);
+  double p0 = f->GetParameter(0);
+  double p1 = f->GetParameter(1);
+  double p2 = f->GetParameter(2);
+  //new TCanvas();
+  //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); 
+  fout << Form("BDC%d_L%d ",BDC,i) << p0 << " " << p1 << " " << p2 << endl;
+//  gPad->Update();
+//  gPad->WaitPrimitive();
+   } 
+   fout.close();
+  
+  }
+}
diff --git a/Projects/S034/Calibration/BDC/CalibBDC2.cxx b/Projects/S034/Calibration/BDC/CalibBDC2.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..149d7ca33d13441b09b436a80c858bd2fccd4e10
--- /dev/null
+++ b/Projects/S034/Calibration/BDC/CalibBDC2.cxx
@@ -0,0 +1,59 @@
+void CalibBDC(){
+  
+  for(int runNbr =824; runNbr <= 824 ; runNbr++){
+  
+  TChain* c = new TChain("RawTree");
+  c->Add(Form("../../root/mrdc/run%d/run%d_SAMURAIBDC.root",runNbr,runNbr));
+  c->SetBranchStatus("*",false);
+
+  // BDC2
+  int BDC=2;
+  int NLayer = 8;
+  c->SetBranchStatus("SamuraiBDC",true);
+  ofstream fout(Form("BDC%d_Calib_%d.txt",BDC, runNbr));  
+  double inter = 2.5;// inter wire distance / 2
+  double low=1600;
+  double high=1900;
+
+  cout <<"Calibrating BDC" << BDC <<  " run number : " << runNbr << endl;
+  
+  string cond;
+
+  TF1* f = new TF1("sigmoid","[0]/(exp([1]*([2]-x))+1)");
+ //TF1* f = new TF1("sigmoid","0*(x<[0])+(x-[0])*[1]*(x>[0]&&x<[2])+[3]*(x>[2])");
+
+ TH1D* h = new TH1D("h","h",1500,0,3000);
+ for(unsigned int i = 0 ; i < NLayer; i++){
+  cond = Form("fBDC_LayerNbr==%d&&fBDC_Edge==0&&fBDC_Time>%f&&fBDC_Time<%f&&fBDC_Time@.size()>10&&fBDC_Time@.size()<100 &&fBDC_DetectorNbr==%d ",i,low,high,BDC);
+  c->Draw("fBDC_Time>>h",cond.c_str());
+  TH1D* g = new TH1D(*h);
+  unsigned int size = h->GetNbinsX();
+  for(unsigned int i = 0 ; i < size ; i++){
+    g->SetBinContent(i,h->Integral(0,i)); 
+  }
+
+  //new TCanvas();
+  //g->Draw();
+  cout << g->GetMaximum() << endl;
+  f->SetParameter(0,g->GetMaximum());
+  f->SetParameter(1,0.1);
+  f->SetParameter(2,1700);
+  f->SetParLimits(1,0,1);
+  f->SetParLimits(2,1600,1900);
+
+  g->Fit(f);
+  // Renormalize the distribution to the maximum driftlength 
+  f->SetParameter(0,inter);
+  double p0 = f->GetParameter(0);
+  double p1 = f->GetParameter(1);
+  double p2 = f->GetParameter(2);
+  //new TCanvas();
+  //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); 
+  fout << Form("BDC%d_L%d ",BDC,i) << p0 << " " << p1 << " " << p2 << endl;
+//  gPad->Update();
+//  gPad->WaitPrimitive();
+   } 
+   fout.close();
+  
+  }
+}
diff --git a/Projects/S034/Calibration/FDC/CalibFDC0.cxx b/Projects/S034/Calibration/FDC/CalibFDC0.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..197448a62d394790c5e9d8621eef2d8bf75bb7cc
--- /dev/null
+++ b/Projects/S034/Calibration/FDC/CalibFDC0.cxx
@@ -0,0 +1,54 @@
+void CalibFDC0(){
+  
+  for(int run8 =656; run8 <= 656; run8++){
+  
+  // FDC  //////////
+  int FDC = 0;
+  int NLayer = 8;
+  double inter = 2.5;// inter wire distance/2 -> maximum driftlength
+  double low=1720;
+  double high=1820;
+  
+  TChain* c = new TChain("RawTree");
+  c->Add(Form("../root/mrdc/run%d/run%d_SAMURAIFDC%i.root",run8,run8,FDC));
+  c->SetBranchStatus("*",false);
+  c->SetBranchStatus("SamuraiFDC0",true);
+
+  //ofstream fout(Form("FDC%i_Calib_%d.txt",FDC,run8));  
+  
+  cout <<"Calibrating FDC" << FDC <<  " run number : " << run8 << endl;
+  
+  string cond;
+
+  TF1* f = new TF1("sigmoid","[0]/(exp([1]*([2]-x))+1)");
+ //TF1* f = new TF1("sigmoid","0*(x<[0])+(x-[0])*[1]*(x>[0]&&x<[2])+[3]*(x>[2])");
+
+ TH1D* h = new TH1D("h","h",1500,0,3000);
+ for(unsigned int i = 0 ; i < NLayer-6; i++){
+  cond = Form("fFDC%d_LayerNbr==%d&&fFDC%d_Edge==0&&fFDC%d_Time>%f&&fFDC%d_Time<%f&&fFDC%d_Time@.size()>10&&fFDC%d_Time@.size()<100",FDC,i,FDC,FDC,low,FDC,high,FDC,FDC);
+  c->Draw(Form("fFDC%d_Time>>h",FDC),cond.c_str());
+  TH1D* g = new TH1D(*h);
+  unsigned int size = h->GetNbinsX();
+  for(unsigned int i = 0 ; i < size ; i++){
+    g->SetBinContent(i,h->Integral(0,i)); 
+  }
+  new TCanvas();
+  g->Draw();
+  cout << g->GetMaximum() << endl;
+  f->SetParameter(0,g->GetMaximum());
+  f->SetParameter(1,8e-3);
+  f->SetParameter(2,1500);
+  
+  g->Fit(f);
+  // Renormalize the distribution to 10 mm
+  f->SetParameter(0,inter);
+  double p0 = f->GetParameter(0);
+  double p1 = f->GetParameter(1);
+  double p2 = f->GetParameter(2);
+  //new TCanvas();
+  //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); 
+  //fout << Form("FDC%d_L%d ",FDC,i) << p0 << " " << p1 << " " << p2 << endl;
+   } 
+ //fout.close();
+  }
+}
diff --git a/Projects/S034/Calibration/FDC/CalibFDC2.cxx b/Projects/S034/Calibration/FDC/CalibFDC2.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..7e4b21aeedabec077f1ecb3a62cdd6d2555b107f
--- /dev/null
+++ b/Projects/S034/Calibration/FDC/CalibFDC2.cxx
@@ -0,0 +1,59 @@
+void CalibFDC2(){
+  
+  for(int run8 = 630; run8 <= 630 ; run8++){
+  
+ 
+  /////////////////
+  // FDC2
+  int FDC=2;
+  int NLayer = 14;
+  double inter = 10;// inter wire distance/2 -> maximum driftlength
+  double low=1200;
+  double high=1700;
+  //////////////// 
+  auto c = new TChain("RawTree");
+  c->Add(Form("../root/mrdc/run%d/run%d_SAMURAIFDC%i.root",run8,run8,FDC));
+  c->SetBranchStatus("*",false);
+  c->SetBranchStatus("SamuraiFDC2",true);
+   
+
+  //ofstream fout(Form("FDC%i_Calib_%d.txt",FDC,run8));  
+  
+
+  cout <<"Calibrating FDC" << FDC <<  " run number : " << run8 << endl;
+  
+  string cond;
+
+  TF1* f = new TF1("sigmoid","[0]/(exp([1]*([2]-x))+1)");
+ //TF1* f = new TF1("sigmoid","0*(x<[0])+(x-[0])*[1]*(x>[0]&&x<[2])+[3]*(x>[2])");
+
+ TH1D* h = new TH1D("h","h",1500,0,3000);
+ for(unsigned int i = 0 ; i < NLayer; i++){
+  cond = Form("fFDC%d_LayerNbr==%d&&fFDC%d_Edge==0&&fFDC%d_Time>%f&&fFDC%d_Time<%f&&fFDC%d_Time@.size()>10&&fFDC%d_Time@.size()<100",FDC,i,FDC,FDC,low,FDC,high,FDC,FDC);
+  c->Draw(Form("fFDC%d_Time>>h",FDC),cond.c_str());
+  TH1D* g = new TH1D(*h);
+  unsigned int size = h->GetNbinsX();
+  for(unsigned int i = 0 ; i < size ; i++){
+    g->SetBinContent(i,h->Integral(0,i)); 
+  }
+  //new TCanvas();
+  //g->Draw();
+  cout << g->GetMaximum() << endl;
+  f->SetParameter(0,g->GetMaximum());
+  f->SetParameter(1,8e-3);
+  f->SetParameter(2,1500);
+  
+  g->Fit(f);
+  // Renormalize the distribution to 10 mm
+  f->SetParameter(0,inter);
+  double p0 = f->GetParameter(0);
+  double p1 = f->GetParameter(1);
+  double p2 = f->GetParameter(2);
+  //new TCanvas();
+  //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); 
+  fout << Form("FDC%d_L%d ",FDC,i) << p0 << " " << p1 << " " << p2 << endl;
+   } 
+   fout.close();
+  
+  }
+}
diff --git a/Projects/S034/Calibration/Pos/BDC.cxx b/Projects/S034/Calibration/Pos/BDC.cxx
index bebc79d18e64ce1973b658c2d2f742624f7577c7..4efea05556d99b79e9a07093b60251283c6d9cdd 100644
--- a/Projects/S034/Calibration/Pos/BDC.cxx
+++ b/Projects/S034/Calibration/Pos/BDC.cxx
@@ -45,6 +45,16 @@ void LoadFile(){
   }
   else {
     cout <<  "Success opening file" << endl;
+
+    /* 
+    int lineCount = 0;  // Initializing a variable to count lines
+std::string line; 
+    while (std::getline(file, line)) {  // Loop through each line in the file
+      lineCount++;  // Incrementing line count for each line read
+    }
+    cout << lineCount << endl;
+    exit(1);
+    */
   }
 
   double xm,ym,zm;
@@ -59,7 +69,9 @@ void LoadFile(){
     pos2.push_back(p2);
     posM.push_back(pM);
   }
+  cout << " Val " << pos1.size() << " Value Loaded" << endl;
   file.close();
+  //exit(1);
 }
 ////////////////////////////////////////////////////////////////////////////////
 void BDC(){
@@ -88,11 +100,13 @@ void BDC(){
   min->Minimize(); 
 
   const double* x = min->X();
-  cout << "X1 =" << x[0]<<endl;
+  cout <<"\033[0;31mX1 = " << x[0]<<endl;
+  // cout << "X1 =" << x[0]<<endl;
   cout << "Y1 =" << x[1]<<endl;
   cout << "Z1 =" << x[2]<<endl;
   cout << "X2 =" << x[3]<<endl;
   cout << "Y2 =" << x[4]<<endl;
   cout << "Z2 =" << x[5]<<endl;
   cout << "Minimum: " << devR(x) << endl;
+  cout << "\033[0m\n";
 }
diff --git a/Projects/S034/Calibration/Pos/FDC.cxx b/Projects/S034/Calibration/Pos/FDC.cxx
index 0bf889b1c58fb8242ddf302a35683f3aa2170bc4..aa4764b368f34a458ad29cc667601b5810eb08d0 100644
--- a/Projects/S034/Calibration/Pos/FDC.cxx
+++ b/Projects/S034/Calibration/Pos/FDC.cxx
@@ -17,7 +17,7 @@ double devB(const double* parameter){
   oM.Print();
   o0.Print();
   o2.Print();
-  field.SetFDC2R(parameter[6]);
+  field.SetFDC2R(parameter[9]);
   static auto h = new TH1D("h","h", 1000,0,10);
   h->Reset();
   for(unsigned int i = 0 ; i < size ; i++){
@@ -28,10 +28,11 @@ double devB(const double* parameter){
     p2=*(pos2[i])+o2;
     d0=(p0-pM).Unit();
 //    p2.Print();
-    if(d0.Z()>0.9)
-      h->Fill(field.FindBrho(p0,d0,p2,*dir2[i])); 
+    h->Fill(field.FindBrho(p0,d0,p2,*dir2[i]));
   } 
-  cout << h->GetStdDev() << " " << parameter[0] << endl;
+  //cout << h->GetStdDev() << " " << parameter[0] << endl;
+  //h->Draw();
+  //gPad->Update();
   return h->GetStdDev();
 }
 ////////////////////////////////////////////////////////////////////////////////
@@ -44,6 +45,14 @@ void LoadFile(){
   }
   else {
     cout <<  "Success opening file" << endl;
+    /*
+    int lineCount = 0;  // Initializing a variable to count lines
+std::string line; 
+    while (std::getline(file, line)) {  // Loop through each line in the file
+      lineCount++;  // Incrementing line count for each line read
+    }
+    cout << lineCount << endl;
+    */
   }
 
   double xm,ym,zm;
@@ -83,7 +92,7 @@ void FDC(){
   double parameter[10]={40.6,0,0,-4657.39, 0, 0,-3372.07,-252.55,0,4123.47};
   devB(parameter);
 
- // min->SetLimitedVariable(0,"AM",parameter[0],1,-90,90);
+  //min->SetLimitedVariable(0,"AM",parameter[0],1,-90,90);
   min->SetFixedVariable(0,"AM",parameter[0]);
   min->SetLimitedVariable(1,"XM",parameter[1],1,-10,10);
   min->SetLimitedVariable(2,"YM",parameter[2],1,-10,10);
@@ -106,15 +115,17 @@ void FDC(){
  */
   min->Minimize(); 
   const double* x = min->X();
-  cout << "AM =" << x[0]<<endl;
-  cout << "XM =" << x[1]<<endl;
-  cout << "YM =" << x[2]<<endl;
-  cout << "ZM =" << x[3]<<endl;
-  cout << "X0 =" << x[4]<<endl;
-  cout << "Y0 =" << x[5]<<endl;
-  cout << "Z0 =" << x[6]<<endl;
-  cout << "X2 =" << x[7]<<endl;
-  cout << "Y2 =" << x[8]<<endl;
-  cout << "Z2 =" << x[9]<<endl;
+  system("Color DE");
+  cout <<"\033[0;31mAM = " << x[0]<<endl;
+  cout << "XM = " << x[1]<<endl;
+  cout << "YM = " << x[2]<<endl;
+  cout << "ZM = " << x[3]<<endl;
+  cout << "X0 = " << x[4]<<endl;
+  cout << "Y0 = " << x[5]<<endl;
+  cout << "Z0 = " << x[6]<<endl;
+  cout << "X2 = " << x[7]<<endl;
+  cout << "Y2 = " << x[8]<<endl;
+  cout << "Z2 = " << x[9]<<endl;
   cout << "Minimum: " << devB(x) << endl;
+  cout << "\033[0m\n";
 }
diff --git a/Projects/S034/PhysicsListOption.txt b/Projects/S034/PhysicsListOption.txt
index 5a8ee25ad212625d67b030883117e7229e89d61f..a58e9877fdc190dd81adf4fe822f09e029220f71 100644
--- a/Projects/S034/PhysicsListOption.txt
+++ b/Projects/S034/PhysicsListOption.txt
@@ -9,5 +9,5 @@ OpticalPhysics 0
 HadronPhysicsINCLXX 0
 HadronPhysicsQGSP_BIC_HP 0
 Decay 0
-DriftElectronPhysics 1
+DriftElectronPhysics 0
 
diff --git a/Projects/S034/db/NEBULA.xml b/Projects/S034/db/NEBULA.xml
index 1a5e451d08ed9d6f24a4227c442bba4d7c55af75..84329e270c8b9dbbafe6fddf8f75e2acff0a55c5 100755
--- a/Projects/S034/db/NEBULA.xml
+++ b/Projects/S034/db/NEBULA.xml
@@ -1,36 +1,36 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <dataroot>
 <NEBULA>
-  <ID>1</ID>
-  <NAME>101</NAME>
-  <FPl>13</FPl>
-  <Layer>1</Layer>
-  <SubLayer>1</SubLayer>
-  <PosX>-1901.8</PosX>
-  <PosY>0</PosY>
-  <PosZ>14431.3</PosZ>
-  <TUCal>0.0656086</TUCal>
-  <TUOff>0</TUOff>
-  <TUSlw>39.763</TUSlw>
-  <QUCal>0.0278832</QUCal>
-  <QUPed>176.884</QUPed>
-  <TDCal>0.0671919</TDCal>
-  <TDOff>0</TDOff>
-  <TDSlw>40.7</TDSlw>
-  <QDCal>0.0278832</QDCal>
-  <QDPed>211.422</QDPed>
-  <DTCal>76.257</DTCal>
-  <DTOff>-51.3483</DTOff>
-  <TAveOff>-25.70746</TAveOff>
-  <tu_geo>11</tu_geo>
-  <tu_ch>0</tu_ch>
-  <qu_geo>21</qu_geo>
-  <qu_ch>0</qu_ch>
-  <td_geo>12</td_geo>
-  <td_ch>0</td_ch>
-  <qd_geo>22</qd_geo>
-  <qd_ch>0</qd_ch>
-  <Ignore>0</Ignore>
+<ID>1</ID>
+<NAME>101</NAME>
+<FPl>13</FPl>
+<Layer>1</Layer>
+<SubLayer>1</SubLayer>
+<PosX>-1901.8</PosX>
+<PosY>0</PosY>
+<PosZ>14431.3</PosZ>
+<TUCal>0.0656086</TUCal>
+<TUOff>0</TUOff>
+<TUSlw>39.763</TUSlw>
+<QUCal>0.0278832</QUCal>
+<QUPed>176.884</QUPed>
+<TDCal>0.0671919</TDCal>
+<TDOff>0</TDOff>
+<TDSlw>40.7</TDSlw>
+<QDCal>0.0278832</QDCal>
+<QDPed>211.422</QDPed>
+<DTCal>76.257</DTCal>
+<DTOff>-51.3483</DTOff>
+<TAveOff>-25.70746</TAveOff>
+<tu_geo>11</tu_geo>
+<tu_ch>0</tu_ch>
+<qu_geo>21</qu_geo>
+<qu_ch>0</qu_ch>
+<td_geo>12</td_geo>
+<td_ch>0</td_ch>
+<qd_geo>22</qd_geo>
+<qd_ch>0</qd_ch>
+<Ignore>0</Ignore>
 </NEBULA>
 <NEBULA>
 <ID>2</ID>
@@ -4264,7 +4264,7 @@
 <SubLayer>0</SubLayer>
 <PosX>-1522</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0676695</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4328,7 +4328,7 @@
 <SubLayer>0</SubLayer>
 <PosX>-902</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0682021</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4392,7 +4392,7 @@
 <SubLayer>0</SubLayer>
 <PosX>-282</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0679071</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4456,7 +4456,7 @@
 <SubLayer>0</SubLayer>
 <PosX>338</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0676573</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4520,7 +4520,7 @@
 <SubLayer>0</SubLayer>
 <PosX>958</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0686263</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4584,7 +4584,7 @@
 <SubLayer>0</SubLayer>
 <PosX>1578</PosX>
 <PosY>0</PosY>
-<PosZ>15004.8</PosZ>
+<PosZ>15024.8</PosZ>
 <TUCal>0.0673654</TUCal>
 <TUOff>0</TUOff>
 <TUSlw>40</TUSlw>
@@ -4608,6 +4608,7 @@
 <qd_ch>27</qd_ch>
 <Ignore>0</Ignore>
 </NEBULA>
+<!--
 <NEBULA>
 <ID>145</ID>
 <NAME>NoUse1</NAME>
@@ -5632,4 +5633,5 @@
 <qd_ch>-1</qd_ch>
 <Ignore>0</Ignore>
 </NEBULA>
+-->
 </dataroot>
diff --git a/Projects/S034/db/NEULAND.xml b/Projects/S034/db/NEULAND.xml
index f8a71a54023e0d7e71cba6b65298fb9797d6a0dc..a552f30defa241f33f40faeda51161ee9189b563 100755
--- a/Projects/S034/db/NEULAND.xml
+++ b/Projects/S034/db/NEULAND.xml
@@ -1,47 +1,51 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <dataroot>
 <NEULAND>
-  <ID>1</ID>
-  <NAME>NeuLANDPla0H-0</NAME>
-  <FPL>13</FPL>
-  <direction>H</direction>
-  <layer>0</layer>
-  <bar>0</bar>
-  <qcal0>1</qcal0>
-  <qped0>46</qped0>
-  <tdc0ns0>1178</tdc0ns0>
-  <tdc25ns0>3284</tdc25ns0>
-  <tdc0ns0_t17>1141</tdc0ns0_t17>
-  <tdc25ns0_t17>3281</tdc25ns0_t17>
-  <qcal1>1</qcal1>
-  <qped1>36</qped1>
-  <tdc0ns1>1203</tdc0ns1>
-  <tdc25ns1>3278</tdc25ns1>
-  <tdc0ns1_t17>1154</tdc0ns1_t17>
-  <tdc25ns1_t17>3276</tdc25ns1_t17>
-  <tdiff_offset>45.5521</tdiff_offset>
-  <sync_offset>-13.9147</sync_offset>
-  <vscint>8.37529</vscint>
-  <ediff_offset>1.01314</ediff_offset>
-  <esync_offset>0.0628646</esync_offset>
-  <att>358.252</att>
-  <crate0>1</crate0>
-  <module0>9</module0>
-  <channel0>11</channel0>
-  <sam0>6</sam0>
-  <gtb0>0</gtb0>
-  <crate1>4</crate1>
-  <module1>2</module1>
-  <channel1>1</channel1>
-  <sam1>5</sam1>
-  <gtb1>1</gtb1>
-  <zpos>11165</zpos>
+<ID>1</ID>
+<NAME>NeuLANDPla0H-0</NAME>
+<FPL>13</FPL>
+<direction>H</direction>
+<SubLayer>1</SubLayer>
+<layer>0</layer>
+<bar>0</bar>
+<qcal0>1</qcal0>
+<qped0>46</qped0>
+<tdc0ns0>1178</tdc0ns0>
+<tdc25ns0>3284</tdc25ns0>
+<tdc0ns0_t17>1141</tdc0ns0_t17>
+<tdc25ns0_t17>3281</tdc25ns0_t17>
+<qcal1>1</qcal1>
+<qped1>36</qped1>
+<tdc0ns1>1203</tdc0ns1>
+<tdc25ns1>3278</tdc25ns1>
+<tdc0ns1_t17>1154</tdc0ns1_t17>
+<tdc25ns1_t17>3276</tdc25ns1_t17>
+<tdiff_offset>45.5521</tdiff_offset>
+<sync_offset>-13.9147</sync_offset>
+<vscint>8.37529</vscint>
+<ediff_offset>1.01314</ediff_offset>
+<esync_offset>0.0628646</esync_offset>
+<att>358.252</att>
+<crate0>1</crate0>
+<module0>9</module0>
+<channel0>11</channel0>
+<sam0>6</sam0>
+<gtb0>0</gtb0>
+<crate1>4</crate1>
+<module1>2</module1>
+<channel1>1</channel1>
+<sam1>5</sam1>
+<gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1225</ypos>
+<zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
 <ID>2</ID>
 <NAME>NeuLANDPla0H-1</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>1</bar>
 <qcal0>1</qcal0>
@@ -72,6 +76,8 @@
 <channel1>0</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1175</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -79,6 +85,7 @@
 <NAME>NeuLANDPla0H-2</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>2</bar>
 <qcal0>1</qcal0>
@@ -109,6 +116,8 @@
 <channel1>15</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1125</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -116,6 +125,7 @@
 <NAME>NeuLANDPla0H-3</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>3</bar>
 <qcal0>1</qcal0>
@@ -146,6 +156,8 @@
 <channel1>14</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1075</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -153,6 +165,7 @@
 <NAME>NeuLANDPla0H-4</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>4</bar>
 <qcal0>1</qcal0>
@@ -183,6 +196,8 @@
 <channel1>13</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1025</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -190,6 +205,7 @@
 <NAME>NeuLANDPla0H-5</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>5</bar>
 <qcal0>1</qcal0>
@@ -220,6 +236,8 @@
 <channel1>12</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-975</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -227,6 +245,7 @@
 <NAME>NeuLANDPla0H-6</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>6</bar>
 <qcal0>1</qcal0>
@@ -257,6 +276,8 @@
 <channel1>11</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-925</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -264,6 +285,7 @@
 <NAME>NeuLANDPla0H-7</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>7</bar>
 <qcal0>1</qcal0>
@@ -294,6 +316,8 @@
 <channel1>10</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-875</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -301,6 +325,7 @@
 <NAME>NeuLANDPla0H-8</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>8</bar>
 <qcal0>1</qcal0>
@@ -331,6 +356,8 @@
 <channel1>9</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-825</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -338,6 +365,7 @@
 <NAME>NeuLANDPla0H-9</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>9</bar>
 <qcal0>1</qcal0>
@@ -368,6 +396,8 @@
 <channel1>8</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-775</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -375,6 +405,7 @@
 <NAME>NeuLANDPla0H-10</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>10</bar>
 <qcal0>1</qcal0>
@@ -405,6 +436,8 @@
 <channel1>7</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-725</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -412,6 +445,7 @@
 <NAME>NeuLANDPla0H-11</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>11</bar>
 <qcal0>1</qcal0>
@@ -442,6 +476,8 @@
 <channel1>6</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-675</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -449,6 +485,7 @@
 <NAME>NeuLANDPla0H-12</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>12</bar>
 <qcal0>1</qcal0>
@@ -479,6 +516,8 @@
 <channel1>5</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-625</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -486,6 +525,7 @@
 <NAME>NeuLANDPla0H-13</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>13</bar>
 <qcal0>1</qcal0>
@@ -516,6 +556,8 @@
 <channel1>4</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-575</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -523,6 +565,7 @@
 <NAME>NeuLANDPla0H-14</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>14</bar>
 <qcal0>1</qcal0>
@@ -553,6 +596,8 @@
 <channel1>3</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-525</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -560,6 +605,7 @@
 <NAME>NeuLANDPla0H-15</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>15</bar>
 <qcal0>1</qcal0>
@@ -590,6 +636,8 @@
 <channel1>2</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-475</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -597,6 +645,7 @@
 <NAME>NeuLANDPla0H-16</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>16</bar>
 <qcal0>1</qcal0>
@@ -627,6 +676,8 @@
 <channel1>1</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-425</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -634,6 +685,7 @@
 <NAME>NeuLANDPla0H-17</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>17</bar>
 <qcal0>1</qcal0>
@@ -664,6 +716,8 @@
 <channel1>0</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-375</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -671,6 +725,7 @@
 <NAME>NeuLANDPla0H-18</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>18</bar>
 <qcal0>1</qcal0>
@@ -701,6 +756,8 @@
 <channel1>15</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-325</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -708,6 +765,7 @@
 <NAME>NeuLANDPla0H-19</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>19</bar>
 <qcal0>1</qcal0>
@@ -738,6 +796,8 @@
 <channel1>14</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-275</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -745,6 +805,7 @@
 <NAME>NeuLANDPla0H-20</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>20</bar>
 <qcal0>1</qcal0>
@@ -775,6 +836,8 @@
 <channel1>13</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-225</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -782,6 +845,7 @@
 <NAME>NeuLANDPla0H-21</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>21</bar>
 <qcal0>1</qcal0>
@@ -812,6 +876,8 @@
 <channel1>12</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-175</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -819,6 +885,7 @@
 <NAME>NeuLANDPla0H-22</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>22</bar>
 <qcal0>1</qcal0>
@@ -849,6 +916,8 @@
 <channel1>11</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-125</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -856,6 +925,7 @@
 <NAME>NeuLANDPla0H-23</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>23</bar>
 <qcal0>1</qcal0>
@@ -886,6 +956,8 @@
 <channel1>10</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-75</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -893,6 +965,7 @@
 <NAME>NeuLANDPla0H-24</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>24</bar>
 <qcal0>1</qcal0>
@@ -923,6 +996,8 @@
 <channel1>9</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-25</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -930,6 +1005,7 @@
 <NAME>NeuLANDPla0H-25</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>25</bar>
 <qcal0>1</qcal0>
@@ -960,6 +1036,8 @@
 <channel1>8</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>25</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -967,6 +1045,7 @@
 <NAME>NeuLANDPla0H-26</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>26</bar>
 <qcal0>1</qcal0>
@@ -997,6 +1076,8 @@
 <channel1>7</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>75</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1004,6 +1085,7 @@
 <NAME>NeuLANDPla0H-27</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>27</bar>
 <qcal0>1</qcal0>
@@ -1034,6 +1116,8 @@
 <channel1>6</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>125</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1041,6 +1125,7 @@
 <NAME>NeuLANDPla0H-28</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>28</bar>
 <qcal0>1</qcal0>
@@ -1071,6 +1156,8 @@
 <channel1>5</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>175</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1078,6 +1165,7 @@
 <NAME>NeuLANDPla0H-29</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>29</bar>
 <qcal0>1</qcal0>
@@ -1108,6 +1196,8 @@
 <channel1>4</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>225</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1115,6 +1205,7 @@
 <NAME>NeuLANDPla0H-30</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>30</bar>
 <qcal0>1</qcal0>
@@ -1145,6 +1236,8 @@
 <channel1>3</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>275</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1152,6 +1245,7 @@
 <NAME>NeuLANDPla0H-31</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>31</bar>
 <qcal0>1</qcal0>
@@ -1182,6 +1276,8 @@
 <channel1>2</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>325</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1189,6 +1285,7 @@
 <NAME>NeuLANDPla0H-32</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>32</bar>
 <qcal0>1</qcal0>
@@ -1219,6 +1316,8 @@
 <channel1>1</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>375</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1226,6 +1325,7 @@
 <NAME>NeuLANDPla0H-33</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>33</bar>
 <qcal0>1</qcal0>
@@ -1256,6 +1356,8 @@
 <channel1>0</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>425</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1263,6 +1365,7 @@
 <NAME>NeuLANDPla0H-34</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>34</bar>
 <qcal0>1</qcal0>
@@ -1293,6 +1396,8 @@
 <channel1>15</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>475</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1300,6 +1405,7 @@
 <NAME>NeuLANDPla0H-35</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>35</bar>
 <qcal0>1</qcal0>
@@ -1330,6 +1436,8 @@
 <channel1>14</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>525</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1337,6 +1445,7 @@
 <NAME>NeuLANDPla0H-36</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>36</bar>
 <qcal0>1</qcal0>
@@ -1367,6 +1476,8 @@
 <channel1>13</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>575</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1374,6 +1485,7 @@
 <NAME>NeuLANDPla0H-37</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>37</bar>
 <qcal0>1</qcal0>
@@ -1404,6 +1516,8 @@
 <channel1>12</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>625</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1411,6 +1525,7 @@
 <NAME>NeuLANDPla0H-38</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>38</bar>
 <qcal0>1</qcal0>
@@ -1441,6 +1556,8 @@
 <channel1>11</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>675</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1448,6 +1565,7 @@
 <NAME>NeuLANDPla0H-39</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>39</bar>
 <qcal0>1</qcal0>
@@ -1478,6 +1596,8 @@
 <channel1>10</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>725</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1485,6 +1605,7 @@
 <NAME>NeuLANDPla0H-40</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>40</bar>
 <qcal0>1</qcal0>
@@ -1515,6 +1636,8 @@
 <channel1>9</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>775</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1522,6 +1645,7 @@
 <NAME>NeuLANDPla0H-41</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>41</bar>
 <qcal0>1</qcal0>
@@ -1552,6 +1676,8 @@
 <channel1>8</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>825</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1559,6 +1685,7 @@
 <NAME>NeuLANDPla0H-42</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>42</bar>
 <qcal0>1</qcal0>
@@ -1589,6 +1716,8 @@
 <channel1>7</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>875</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1596,6 +1725,7 @@
 <NAME>NeuLANDPla0H-43</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>43</bar>
 <qcal0>1</qcal0>
@@ -1626,6 +1756,8 @@
 <channel1>6</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>925</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1633,6 +1765,7 @@
 <NAME>NeuLANDPla0H-44</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>44</bar>
 <qcal0>1</qcal0>
@@ -1663,6 +1796,8 @@
 <channel1>5</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>975</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1670,6 +1805,7 @@
 <NAME>NeuLANDPla0H-45</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>45</bar>
 <qcal0>1</qcal0>
@@ -1700,6 +1836,8 @@
 <channel1>4</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>1025</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1707,6 +1845,7 @@
 <NAME>NeuLANDPla0H-46</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>46</bar>
 <qcal0>1</qcal0>
@@ -1737,6 +1876,8 @@
 <channel1>3</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>1075</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1744,6 +1885,7 @@
 <NAME>NeuLANDPla0H-47</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>47</bar>
 <qcal0>1</qcal0>
@@ -1774,6 +1916,8 @@
 <channel1>2</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>1125</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1781,6 +1925,7 @@
 <NAME>NeuLANDPla0H-48</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>48</bar>
 <qcal0>1</qcal0>
@@ -1811,6 +1956,8 @@
 <channel1>1</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>1175</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1818,6 +1965,7 @@
 <NAME>NeuLANDPla0H-49</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>0</layer>
 <bar>49</bar>
 <qcal0>1</qcal0>
@@ -1848,6 +1996,8 @@
 <channel1>0</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>1225</ypos>
 <zpos>11165</zpos>
 </NEULAND>
 <NEULAND>
@@ -1855,6 +2005,7 @@
 <NAME>NeuLANDPla1V-0</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>0</bar>
 <qcal0>1</qcal0>
@@ -1885,6 +2036,8 @@
 <channel1>9</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-1225</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -1892,6 +2045,7 @@
 <NAME>NeuLANDPla1V-1</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>1</bar>
 <qcal0>1</qcal0>
@@ -1922,6 +2076,8 @@
 <channel1>8</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-1175</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -1929,6 +2085,7 @@
 <NAME>NeuLANDPla1V-2</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>2</bar>
 <qcal0>1</qcal0>
@@ -1959,6 +2116,8 @@
 <channel1>7</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-1125</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -1966,6 +2125,7 @@
 <NAME>NeuLANDPla1V-3</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>3</bar>
 <qcal0>1</qcal0>
@@ -1996,6 +2156,8 @@
 <channel1>6</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-1075</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2003,6 +2165,7 @@
 <NAME>NeuLANDPla1V-4</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>4</bar>
 <qcal0>1</qcal0>
@@ -2033,6 +2196,8 @@
 <channel1>5</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-1025</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2040,6 +2205,7 @@
 <NAME>NeuLANDPla1V-5</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>5</bar>
 <qcal0>1</qcal0>
@@ -2070,6 +2236,8 @@
 <channel1>4</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-975</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2077,6 +2245,7 @@
 <NAME>NeuLANDPla1V-6</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>6</bar>
 <qcal0>1</qcal0>
@@ -2107,6 +2276,8 @@
 <channel1>3</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-925</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2114,6 +2285,7 @@
 <NAME>NeuLANDPla1V-7</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>7</bar>
 <qcal0>1</qcal0>
@@ -2144,6 +2316,8 @@
 <channel1>2</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-875</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2151,6 +2325,7 @@
 <NAME>NeuLANDPla1V-8</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>8</bar>
 <qcal0>1</qcal0>
@@ -2181,6 +2356,8 @@
 <channel1>1</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-825</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2188,6 +2365,7 @@
 <NAME>NeuLANDPla1V-9</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>9</bar>
 <qcal0>1</qcal0>
@@ -2218,6 +2396,8 @@
 <channel1>0</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-775</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2225,6 +2405,7 @@
 <NAME>NeuLANDPla1V-10</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>10</bar>
 <qcal0>1</qcal0>
@@ -2255,6 +2436,8 @@
 <channel1>15</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-725</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2262,6 +2445,7 @@
 <NAME>NeuLANDPla1V-11</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>11</bar>
 <qcal0>1</qcal0>
@@ -2292,6 +2476,8 @@
 <channel1>14</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-675</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2299,6 +2485,7 @@
 <NAME>NeuLANDPla1V-12</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>12</bar>
 <qcal0>1</qcal0>
@@ -2329,6 +2516,8 @@
 <channel1>13</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-625</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2336,6 +2525,7 @@
 <NAME>NeuLANDPla1V-13</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>13</bar>
 <qcal0>1</qcal0>
@@ -2366,6 +2556,8 @@
 <channel1>12</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-575</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2373,6 +2565,7 @@
 <NAME>NeuLANDPla1V-14</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>14</bar>
 <qcal0>1</qcal0>
@@ -2403,6 +2596,8 @@
 <channel1>11</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-525</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2410,6 +2605,7 @@
 <NAME>NeuLANDPla1V-15</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>15</bar>
 <qcal0>1</qcal0>
@@ -2440,6 +2636,8 @@
 <channel1>10</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-475</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2447,6 +2645,7 @@
 <NAME>NeuLANDPla1V-16</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>16</bar>
 <qcal0>1</qcal0>
@@ -2477,6 +2676,8 @@
 <channel1>9</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-425</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2484,6 +2685,7 @@
 <NAME>NeuLANDPla1V-17</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>17</bar>
 <qcal0>1</qcal0>
@@ -2514,6 +2716,8 @@
 <channel1>8</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-375</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2521,6 +2725,7 @@
 <NAME>NeuLANDPla1V-18</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>18</bar>
 <qcal0>1</qcal0>
@@ -2551,6 +2756,8 @@
 <channel1>7</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-325</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2558,6 +2765,7 @@
 <NAME>NeuLANDPla1V-19</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>19</bar>
 <qcal0>1</qcal0>
@@ -2588,6 +2796,8 @@
 <channel1>6</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-275</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2595,6 +2805,7 @@
 <NAME>NeuLANDPla1V-20</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>20</bar>
 <qcal0>1</qcal0>
@@ -2625,6 +2836,8 @@
 <channel1>5</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-225</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2632,6 +2845,7 @@
 <NAME>NeuLANDPla1V-21</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>21</bar>
 <qcal0>1</qcal0>
@@ -2662,6 +2876,8 @@
 <channel1>4</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-175</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2669,6 +2885,7 @@
 <NAME>NeuLANDPla1V-22</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>22</bar>
 <qcal0>1</qcal0>
@@ -2699,6 +2916,8 @@
 <channel1>3</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-125</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2706,6 +2925,7 @@
 <NAME>NeuLANDPla1V-23</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>23</bar>
 <qcal0>1</qcal0>
@@ -2736,6 +2956,8 @@
 <channel1>2</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-75</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2743,6 +2965,7 @@
 <NAME>NeuLANDPla1V-24</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>24</bar>
 <qcal0>1</qcal0>
@@ -2773,6 +2996,8 @@
 <channel1>1</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-25</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2780,6 +3005,7 @@
 <NAME>NeuLANDPla1V-25</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>25</bar>
 <qcal0>1</qcal0>
@@ -2810,6 +3036,8 @@
 <channel1>0</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>25</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2817,6 +3045,7 @@
 <NAME>NeuLANDPla1V-26</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>26</bar>
 <qcal0>1</qcal0>
@@ -2847,6 +3076,8 @@
 <channel1>15</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>75</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2854,6 +3085,7 @@
 <NAME>NeuLANDPla1V-27</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>27</bar>
 <qcal0>1</qcal0>
@@ -2884,6 +3116,8 @@
 <channel1>14</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>125</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2891,6 +3125,7 @@
 <NAME>NeuLANDPla1V-28</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>28</bar>
 <qcal0>1</qcal0>
@@ -2921,6 +3156,8 @@
 <channel1>13</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>175</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2928,6 +3165,7 @@
 <NAME>NeuLANDPla1V-29</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>29</bar>
 <qcal0>1</qcal0>
@@ -2958,6 +3196,8 @@
 <channel1>12</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>225</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -2965,6 +3205,7 @@
 <NAME>NeuLANDPla1V-30</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>30</bar>
 <qcal0>1</qcal0>
@@ -2995,6 +3236,8 @@
 <channel1>15</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>275</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3002,6 +3245,7 @@
 <NAME>NeuLANDPla1V-31</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>31</bar>
 <qcal0>1</qcal0>
@@ -3032,6 +3276,8 @@
 <channel1>14</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>325</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3039,6 +3285,7 @@
 <NAME>NeuLANDPla1V-32</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>32</bar>
 <qcal0>1</qcal0>
@@ -3069,6 +3316,8 @@
 <channel1>13</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>375</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3076,6 +3325,7 @@
 <NAME>NeuLANDPla1V-33</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>33</bar>
 <qcal0>1</qcal0>
@@ -3106,6 +3356,8 @@
 <channel1>12</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>425</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3113,6 +3365,7 @@
 <NAME>NeuLANDPla1V-34</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>34</bar>
 <qcal0>1</qcal0>
@@ -3143,6 +3396,8 @@
 <channel1>11</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>475</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3150,6 +3405,7 @@
 <NAME>NeuLANDPla1V-35</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>35</bar>
 <qcal0>1</qcal0>
@@ -3180,6 +3436,8 @@
 <channel1>10</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>525</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3187,6 +3445,7 @@
 <NAME>NeuLANDPla1V-36</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>36</bar>
 <qcal0>1</qcal0>
@@ -3217,6 +3476,8 @@
 <channel1>9</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>575</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3224,6 +3485,7 @@
 <NAME>NeuLANDPla1V-37</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>37</bar>
 <qcal0>1</qcal0>
@@ -3254,6 +3516,8 @@
 <channel1>8</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>625</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3261,6 +3525,7 @@
 <NAME>NeuLANDPla1V-38</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>38</bar>
 <qcal0>1</qcal0>
@@ -3291,6 +3556,8 @@
 <channel1>7</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>675</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3298,6 +3565,7 @@
 <NAME>NeuLANDPla1V-39</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>39</bar>
 <qcal0>1</qcal0>
@@ -3328,6 +3596,8 @@
 <channel1>6</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>725</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3335,6 +3605,7 @@
 <NAME>NeuLANDPla1V-40</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>40</bar>
 <qcal0>1</qcal0>
@@ -3365,6 +3636,8 @@
 <channel1>5</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>775</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3372,6 +3645,7 @@
 <NAME>NeuLANDPla1V-41</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>41</bar>
 <qcal0>1</qcal0>
@@ -3402,6 +3676,8 @@
 <channel1>4</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>825</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3409,6 +3685,7 @@
 <NAME>NeuLANDPla1V-42</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>42</bar>
 <qcal0>1</qcal0>
@@ -3439,6 +3716,8 @@
 <channel1>3</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>875</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3446,6 +3725,7 @@
 <NAME>NeuLANDPla1V-43</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>43</bar>
 <qcal0>1</qcal0>
@@ -3476,6 +3756,8 @@
 <channel1>2</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>925</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3483,6 +3765,7 @@
 <NAME>NeuLANDPla1V-44</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>44</bar>
 <qcal0>1</qcal0>
@@ -3513,6 +3796,8 @@
 <channel1>1</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>975</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3520,6 +3805,7 @@
 <NAME>NeuLANDPla1V-45</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>45</bar>
 <qcal0>1</qcal0>
@@ -3550,6 +3836,8 @@
 <channel1>0</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>1025</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3557,6 +3845,7 @@
 <NAME>NeuLANDPla1V-46</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>46</bar>
 <qcal0>1</qcal0>
@@ -3587,6 +3876,8 @@
 <channel1>15</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>1075</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3594,6 +3885,7 @@
 <NAME>NeuLANDPla1V-47</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>47</bar>
 <qcal0>1</qcal0>
@@ -3624,6 +3916,8 @@
 <channel1>14</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>1125</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3631,6 +3925,7 @@
 <NAME>NeuLANDPla1V-48</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>48</bar>
 <qcal0>1</qcal0>
@@ -3661,6 +3956,8 @@
 <channel1>13</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>1175</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3668,6 +3965,7 @@
 <NAME>NeuLANDPla1V-49</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>49</bar>
 <qcal0>1</qcal0>
@@ -3698,6 +3996,8 @@
 <channel1>12</channel1>
 <sam1>5</sam1>
 <gtb1>1</gtb1>
+<xpos>1225</xpos>
+<ypos>0</ypos>
 <zpos>11215</zpos>
 </NEULAND>
 <NEULAND>
@@ -3705,6 +4005,7 @@
 <NAME>NeuLANDPla2H-0</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>0</bar>
 <qcal0>1</qcal0>
@@ -3735,6 +4036,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1225</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -3742,6 +4045,7 @@
 <NAME>NeuLANDPla2H-1</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>1</bar>
 <qcal0>1</qcal0>
@@ -3772,6 +4076,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1175</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -3779,6 +4085,7 @@
 <NAME>NeuLANDPla2H-2</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>2</bar>
 <qcal0>1</qcal0>
@@ -3809,6 +4116,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1125</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -3816,6 +4125,7 @@
 <NAME>NeuLANDPla2H-3</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>3</bar>
 <qcal0>1</qcal0>
@@ -3846,6 +4156,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1075</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -3853,6 +4165,7 @@
 <NAME>NeuLANDPla2H-4</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>4</bar>
 <qcal0>1</qcal0>
@@ -3883,6 +4196,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1025</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -3890,6 +4205,7 @@
 <NAME>NeuLANDPla2H-5</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>5</bar>
 <qcal0>1</qcal0>
@@ -3920,6 +4236,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-975</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -3927,6 +4245,7 @@
 <NAME>NeuLANDPla2H-6</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>6</bar>
 <qcal0>1</qcal0>
@@ -3957,6 +4276,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-925</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -3964,6 +4285,7 @@
 <NAME>NeuLANDPla2H-7</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>7</bar>
 <qcal0>1</qcal0>
@@ -3994,6 +4316,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-875</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4001,6 +4325,7 @@
 <NAME>NeuLANDPla2H-8</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>8</bar>
 <qcal0>1</qcal0>
@@ -4031,6 +4356,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-825</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4038,6 +4365,7 @@
 <NAME>NeuLANDPla2H-9</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>9</bar>
 <qcal0>1</qcal0>
@@ -4068,6 +4396,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-775</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4075,6 +4405,7 @@
 <NAME>NeuLANDPla2H-10</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>10</bar>
 <qcal0>1</qcal0>
@@ -4105,6 +4436,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-725</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4112,6 +4445,7 @@
 <NAME>NeuLANDPla2H-11</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>11</bar>
 <qcal0>1</qcal0>
@@ -4142,6 +4476,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-675</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4149,6 +4485,7 @@
 <NAME>NeuLANDPla2H-12</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>12</bar>
 <qcal0>1</qcal0>
@@ -4179,6 +4516,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-625</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4186,6 +4525,7 @@
 <NAME>NeuLANDPla2H-13</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>13</bar>
 <qcal0>1</qcal0>
@@ -4216,6 +4556,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-575</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4223,6 +4565,7 @@
 <NAME>NeuLANDPla2H-14</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>14</bar>
 <qcal0>1</qcal0>
@@ -4253,6 +4596,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-525</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4260,6 +4605,7 @@
 <NAME>NeuLANDPla2H-15</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>15</bar>
 <qcal0>1</qcal0>
@@ -4290,6 +4636,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-475</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4297,6 +4645,7 @@
 <NAME>NeuLANDPla2H-16</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>16</bar>
 <qcal0>1</qcal0>
@@ -4327,6 +4676,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-425</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4334,6 +4685,7 @@
 <NAME>NeuLANDPla2H-17</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>17</bar>
 <qcal0>1</qcal0>
@@ -4364,6 +4716,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-375</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4371,6 +4725,7 @@
 <NAME>NeuLANDPla2H-18</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>18</bar>
 <qcal0>1</qcal0>
@@ -4401,6 +4756,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-325</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4408,6 +4765,7 @@
 <NAME>NeuLANDPla2H-19</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>19</bar>
 <qcal0>1</qcal0>
@@ -4438,6 +4796,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-275</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4445,6 +4805,7 @@
 <NAME>NeuLANDPla2H-20</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>20</bar>
 <qcal0>1</qcal0>
@@ -4475,6 +4836,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-225</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4482,6 +4845,7 @@
 <NAME>NeuLANDPla2H-21</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>21</bar>
 <qcal0>1</qcal0>
@@ -4512,6 +4876,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-175</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4519,6 +4885,7 @@
 <NAME>NeuLANDPla2H-22</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>22</bar>
 <qcal0>1</qcal0>
@@ -4549,6 +4916,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-125</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4556,6 +4925,7 @@
 <NAME>NeuLANDPla2H-23</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>23</bar>
 <qcal0>1</qcal0>
@@ -4586,6 +4956,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-75</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4593,6 +4965,7 @@
 <NAME>NeuLANDPla2H-24</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>24</bar>
 <qcal0>1</qcal0>
@@ -4623,6 +4996,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-25</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4630,6 +5005,7 @@
 <NAME>NeuLANDPla2H-25</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>25</bar>
 <qcal0>1</qcal0>
@@ -4660,6 +5036,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>25</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4667,6 +5045,7 @@
 <NAME>NeuLANDPla2H-26</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>26</bar>
 <qcal0>1</qcal0>
@@ -4697,6 +5076,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>75</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4704,6 +5085,7 @@
 <NAME>NeuLANDPla2H-27</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>27</bar>
 <qcal0>1</qcal0>
@@ -4734,6 +5116,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>125</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4741,6 +5125,7 @@
 <NAME>NeuLANDPla2H-28</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>28</bar>
 <qcal0>1</qcal0>
@@ -4771,6 +5156,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>175</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4778,6 +5165,7 @@
 <NAME>NeuLANDPla2H-29</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>29</bar>
 <qcal0>1</qcal0>
@@ -4808,6 +5196,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>225</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4815,6 +5205,7 @@
 <NAME>NeuLANDPla2H-30</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>30</bar>
 <qcal0>1</qcal0>
@@ -4845,6 +5236,8 @@
 <channel1>10</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>275</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4852,6 +5245,7 @@
 <NAME>NeuLANDPla2H-31</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>31</bar>
 <qcal0>1</qcal0>
@@ -4882,6 +5276,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>325</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4889,6 +5285,7 @@
 <NAME>NeuLANDPla2H-32</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>32</bar>
 <qcal0>1</qcal0>
@@ -4919,6 +5316,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>375</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4926,6 +5325,7 @@
 <NAME>NeuLANDPla2H-33</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>33</bar>
 <qcal0>1</qcal0>
@@ -4956,6 +5356,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>425</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -4963,6 +5365,7 @@
 <NAME>NeuLANDPla2H-34</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>34</bar>
 <qcal0>1</qcal0>
@@ -4993,6 +5396,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>475</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5000,6 +5405,7 @@
 <NAME>NeuLANDPla2H-35</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>35</bar>
 <qcal0>1</qcal0>
@@ -5030,6 +5436,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>525</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5037,6 +5445,7 @@
 <NAME>NeuLANDPla2H-36</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>36</bar>
 <qcal0>1</qcal0>
@@ -5067,6 +5476,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>575</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5074,6 +5485,7 @@
 <NAME>NeuLANDPla2H-37</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>37</bar>
 <qcal0>1</qcal0>
@@ -5104,6 +5516,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>625</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5111,6 +5525,7 @@
 <NAME>NeuLANDPla2H-38</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>38</bar>
 <qcal0>1</qcal0>
@@ -5141,6 +5556,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>675</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5148,6 +5565,7 @@
 <NAME>NeuLANDPla2H-39</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>39</bar>
 <qcal0>1</qcal0>
@@ -5178,6 +5596,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>725</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5185,6 +5605,7 @@
 <NAME>NeuLANDPla2H-40</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>40</bar>
 <qcal0>1</qcal0>
@@ -5215,6 +5636,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>775</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5222,6 +5645,7 @@
 <NAME>NeuLANDPla2H-41</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>41</bar>
 <qcal0>1</qcal0>
@@ -5252,6 +5676,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>825</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5259,6 +5685,7 @@
 <NAME>NeuLANDPla2H-42</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>42</bar>
 <qcal0>1</qcal0>
@@ -5289,6 +5716,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>875</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5296,6 +5725,7 @@
 <NAME>NeuLANDPla2H-43</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>43</bar>
 <qcal0>1</qcal0>
@@ -5326,6 +5756,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>925</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5333,6 +5765,7 @@
 <NAME>NeuLANDPla2H-44</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>44</bar>
 <qcal0>1</qcal0>
@@ -5363,6 +5796,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>975</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5370,6 +5805,7 @@
 <NAME>NeuLANDPla2H-45</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>45</bar>
 <qcal0>1</qcal0>
@@ -5400,6 +5836,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>1025</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5407,6 +5845,7 @@
 <NAME>NeuLANDPla2H-46</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>46</bar>
 <qcal0>1</qcal0>
@@ -5437,6 +5876,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>1075</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5444,6 +5885,7 @@
 <NAME>NeuLANDPla2H-47</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>47</bar>
 <qcal0>1</qcal0>
@@ -5474,6 +5916,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>1125</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5481,6 +5925,7 @@
 <NAME>NeuLANDPla2H-48</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>48</bar>
 <qcal0>1</qcal0>
@@ -5511,6 +5956,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>1175</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5518,6 +5965,7 @@
 <NAME>NeuLANDPla2H-49</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>2</layer>
 <bar>49</bar>
 <qcal0>1</qcal0>
@@ -5548,6 +5996,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>1225</ypos>
 <zpos>11265</zpos>
 </NEULAND>
 <NEULAND>
@@ -5555,6 +6005,7 @@
 <NAME>NeuLANDPla3V-0</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>0</bar>
 <qcal0>1</qcal0>
@@ -5585,6 +6036,8 @@
 <channel1>9</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-1225</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5592,6 +6045,7 @@
 <NAME>NeuLANDPla3V-1</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>1</bar>
 <qcal0>1</qcal0>
@@ -5622,6 +6076,8 @@
 <channel1>8</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-1175</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5629,6 +6085,7 @@
 <NAME>NeuLANDPla3V-2</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>2</bar>
 <qcal0>1</qcal0>
@@ -5659,6 +6116,8 @@
 <channel1>7</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-1125</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5666,6 +6125,7 @@
 <NAME>NeuLANDPla3V-3</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>3</bar>
 <qcal0>1</qcal0>
@@ -5696,6 +6156,8 @@
 <channel1>6</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-1075</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5703,6 +6165,7 @@
 <NAME>NeuLANDPla3V-4</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>4</bar>
 <qcal0>1</qcal0>
@@ -5733,6 +6196,8 @@
 <channel1>5</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-1025</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5740,6 +6205,7 @@
 <NAME>NeuLANDPla3V-5</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>5</bar>
 <qcal0>1</qcal0>
@@ -5770,6 +6236,8 @@
 <channel1>4</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-975</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5777,6 +6245,7 @@
 <NAME>NeuLANDPla3V-6</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>6</bar>
 <qcal0>1</qcal0>
@@ -5807,6 +6276,8 @@
 <channel1>3</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-925</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5814,6 +6285,7 @@
 <NAME>NeuLANDPla3V-7</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>7</bar>
 <qcal0>1</qcal0>
@@ -5844,6 +6316,8 @@
 <channel1>2</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-875</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5851,6 +6325,7 @@
 <NAME>NeuLANDPla3V-8</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>8</bar>
 <qcal0>1</qcal0>
@@ -5881,6 +6356,8 @@
 <channel1>1</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-825</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5888,6 +6365,7 @@
 <NAME>NeuLANDPla3V-9</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>9</bar>
 <qcal0>1</qcal0>
@@ -5918,6 +6396,8 @@
 <channel1>0</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-775</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5925,6 +6405,7 @@
 <NAME>NeuLANDPla3V-10</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>10</bar>
 <qcal0>1</qcal0>
@@ -5955,6 +6436,8 @@
 <channel1>15</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-725</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5962,6 +6445,7 @@
 <NAME>NeuLANDPla3V-11</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>11</bar>
 <qcal0>1</qcal0>
@@ -5992,6 +6476,8 @@
 <channel1>14</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-675</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -5999,6 +6485,7 @@
 <NAME>NeuLANDPla3V-12</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>12</bar>
 <qcal0>1</qcal0>
@@ -6029,6 +6516,8 @@
 <channel1>13</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-625</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6036,6 +6525,7 @@
 <NAME>NeuLANDPla3V-13</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>13</bar>
 <qcal0>1</qcal0>
@@ -6066,6 +6556,8 @@
 <channel1>12</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-575</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6073,6 +6565,7 @@
 <NAME>NeuLANDPla3V-14</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>14</bar>
 <qcal0>1</qcal0>
@@ -6103,6 +6596,8 @@
 <channel1>11</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-525</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6110,6 +6605,7 @@
 <NAME>NeuLANDPla3V-15</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>15</bar>
 <qcal0>1</qcal0>
@@ -6140,6 +6636,8 @@
 <channel1>10</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-475</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6147,6 +6645,7 @@
 <NAME>NeuLANDPla3V-16</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>16</bar>
 <qcal0>1</qcal0>
@@ -6177,6 +6676,8 @@
 <channel1>9</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-425</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6184,6 +6685,7 @@
 <NAME>NeuLANDPla3V-17</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>17</bar>
 <qcal0>1</qcal0>
@@ -6214,6 +6716,8 @@
 <channel1>8</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-375</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6221,6 +6725,7 @@
 <NAME>NeuLANDPla3V-18</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>18</bar>
 <qcal0>1</qcal0>
@@ -6251,6 +6756,8 @@
 <channel1>7</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-325</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6258,6 +6765,7 @@
 <NAME>NeuLANDPla3V-19</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>19</bar>
 <qcal0>1</qcal0>
@@ -6288,6 +6796,8 @@
 <channel1>6</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-275</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6295,6 +6805,7 @@
 <NAME>NeuLANDPla3V-20</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>20</bar>
 <qcal0>1</qcal0>
@@ -6325,6 +6836,8 @@
 <channel1>5</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-225</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6332,6 +6845,7 @@
 <NAME>NeuLANDPla3V-21</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>21</bar>
 <qcal0>1</qcal0>
@@ -6362,6 +6876,8 @@
 <channel1>4</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-175</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6369,6 +6885,7 @@
 <NAME>NeuLANDPla3V-22</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>22</bar>
 <qcal0>1</qcal0>
@@ -6399,6 +6916,8 @@
 <channel1>3</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-125</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6406,6 +6925,7 @@
 <NAME>NeuLANDPla3V-23</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>23</bar>
 <qcal0>1</qcal0>
@@ -6436,6 +6956,8 @@
 <channel1>2</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-75</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6443,6 +6965,7 @@
 <NAME>NeuLANDPla3V-24</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>24</bar>
 <qcal0>1</qcal0>
@@ -6473,6 +6996,8 @@
 <channel1>1</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>-25</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6480,6 +7005,7 @@
 <NAME>NeuLANDPla3V-25</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>25</bar>
 <qcal0>1</qcal0>
@@ -6510,6 +7036,8 @@
 <channel1>0</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>25</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6517,6 +7045,7 @@
 <NAME>NeuLANDPla3V-26</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>26</bar>
 <qcal0>1</qcal0>
@@ -6547,6 +7076,8 @@
 <channel1>15</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>75</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6554,6 +7085,7 @@
 <NAME>NeuLANDPla3V-27</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>27</bar>
 <qcal0>1</qcal0>
@@ -6584,6 +7116,8 @@
 <channel1>14</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>125</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6591,6 +7125,7 @@
 <NAME>NeuLANDPla3V-28</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>28</bar>
 <qcal0>1</qcal0>
@@ -6621,6 +7156,8 @@
 <channel1>13</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>175</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6628,6 +7165,7 @@
 <NAME>NeuLANDPla3V-29</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>29</bar>
 <qcal0>1</qcal0>
@@ -6658,6 +7196,8 @@
 <channel1>12</channel1>
 <sam1>6</sam1>
 <gtb1>1</gtb1>
+<xpos>225</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6665,6 +7205,7 @@
 <NAME>NeuLANDPla3V-30</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>30</bar>
 <qcal0>1</qcal0>
@@ -6695,6 +7236,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>275</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6702,6 +7245,7 @@
 <NAME>NeuLANDPla3V-31</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>31</bar>
 <qcal0>1</qcal0>
@@ -6732,6 +7276,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>325</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6739,6 +7285,7 @@
 <NAME>NeuLANDPla3V-32</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>32</bar>
 <qcal0>1</qcal0>
@@ -6769,6 +7316,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>375</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6776,6 +7325,7 @@
 <NAME>NeuLANDPla3V-33</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>33</bar>
 <qcal0>1</qcal0>
@@ -6806,6 +7356,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>425</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6813,6 +7365,7 @@
 <NAME>NeuLANDPla3V-34</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>34</bar>
 <qcal0>1</qcal0>
@@ -6843,6 +7396,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>475</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6850,6 +7405,7 @@
 <NAME>NeuLANDPla3V-35</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>35</bar>
 <qcal0>1</qcal0>
@@ -6880,6 +7436,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>525</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6887,6 +7445,7 @@
 <NAME>NeuLANDPla3V-36</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>36</bar>
 <qcal0>1</qcal0>
@@ -6917,6 +7476,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>575</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6924,6 +7485,7 @@
 <NAME>NeuLANDPla3V-37</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>37</bar>
 <qcal0>1</qcal0>
@@ -6954,6 +7516,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>625</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6961,6 +7525,7 @@
 <NAME>NeuLANDPla3V-38</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>38</bar>
 <qcal0>1</qcal0>
@@ -6991,6 +7556,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>675</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -6998,6 +7565,7 @@
 <NAME>NeuLANDPla3V-39</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>39</bar>
 <qcal0>1</qcal0>
@@ -7028,6 +7596,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>725</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7035,6 +7605,7 @@
 <NAME>NeuLANDPla3V-40</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>40</bar>
 <qcal0>1</qcal0>
@@ -7065,6 +7636,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>775</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7072,6 +7645,7 @@
 <NAME>NeuLANDPla3V-41</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>41</bar>
 <qcal0>1</qcal0>
@@ -7102,6 +7676,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>825</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7109,6 +7685,7 @@
 <NAME>NeuLANDPla3V-42</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>42</bar>
 <qcal0>1</qcal0>
@@ -7139,6 +7716,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>875</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7146,6 +7725,7 @@
 <NAME>NeuLANDPla3V-43</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>43</bar>
 <qcal0>1</qcal0>
@@ -7176,6 +7756,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>925</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7183,6 +7765,7 @@
 <NAME>NeuLANDPla3V-44</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>44</bar>
 <qcal0>1</qcal0>
@@ -7213,6 +7796,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>975</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7220,6 +7805,7 @@
 <NAME>NeuLANDPla3V-45</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>45</bar>
 <qcal0>1</qcal0>
@@ -7250,6 +7836,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>1025</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7257,6 +7845,7 @@
 <NAME>NeuLANDPla3V-46</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>46</bar>
 <qcal0>1</qcal0>
@@ -7287,6 +7876,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>1075</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7294,6 +7885,7 @@
 <NAME>NeuLANDPla3V-47</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>47</bar>
 <qcal0>1</qcal0>
@@ -7324,6 +7916,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>1125</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7331,6 +7925,7 @@
 <NAME>NeuLANDPla3V-48</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>48</bar>
 <qcal0>1</qcal0>
@@ -7361,6 +7956,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>1175</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7368,6 +7965,7 @@
 <NAME>NeuLANDPla3V-49</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>3</layer>
 <bar>49</bar>
 <qcal0>1</qcal0>
@@ -7398,6 +7996,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>1225</xpos>
+<ypos>0</ypos>
 <zpos>11315</zpos>
 </NEULAND>
 <NEULAND>
@@ -7405,6 +8005,7 @@
 <NAME>NeuLANDPla4H-0</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>0</bar>
 <qcal0>1</qcal0>
@@ -7435,6 +8036,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1225</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7442,6 +8045,7 @@
 <NAME>NeuLANDPla4H-1</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>1</bar>
 <qcal0>1</qcal0>
@@ -7472,6 +8076,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1175</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7479,6 +8085,7 @@
 <NAME>NeuLANDPla4H-2</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>2</bar>
 <qcal0>1</qcal0>
@@ -7509,6 +8116,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1125</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7516,6 +8125,7 @@
 <NAME>NeuLANDPla4H-3</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>3</bar>
 <qcal0>1</qcal0>
@@ -7546,6 +8156,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1075</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7553,6 +8165,7 @@
 <NAME>NeuLANDPla4H-4</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>4</bar>
 <qcal0>1</qcal0>
@@ -7583,6 +8196,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-1025</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7590,6 +8205,7 @@
 <NAME>NeuLANDPla4H-5</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>5</bar>
 <qcal0>1</qcal0>
@@ -7620,6 +8236,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-975</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7627,6 +8245,7 @@
 <NAME>NeuLANDPla4H-6</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>6</bar>
 <qcal0>1</qcal0>
@@ -7657,6 +8276,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-925</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7664,6 +8285,7 @@
 <NAME>NeuLANDPla4H-7</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>7</bar>
 <qcal0>1</qcal0>
@@ -7694,6 +8316,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-875</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7701,6 +8325,7 @@
 <NAME>NeuLANDPla4H-8</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>8</bar>
 <qcal0>1</qcal0>
@@ -7731,6 +8356,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-825</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7738,6 +8365,7 @@
 <NAME>NeuLANDPla4H-9</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>9</bar>
 <qcal0>1</qcal0>
@@ -7768,6 +8396,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-775</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7775,6 +8405,7 @@
 <NAME>NeuLANDPla4H-10</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>10</bar>
 <qcal0>1</qcal0>
@@ -7805,6 +8436,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-725</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7812,6 +8445,7 @@
 <NAME>NeuLANDPla4H-11</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>11</bar>
 <qcal0>1</qcal0>
@@ -7842,6 +8476,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-675</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7849,6 +8485,7 @@
 <NAME>NeuLANDPla4H-12</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>12</bar>
 <qcal0>1</qcal0>
@@ -7879,6 +8516,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-625</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7886,6 +8525,7 @@
 <NAME>NeuLANDPla4H-13</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>13</bar>
 <qcal0>1</qcal0>
@@ -7916,6 +8556,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-575</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7923,6 +8565,7 @@
 <NAME>NeuLANDPla4H-14</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>14</bar>
 <qcal0>1</qcal0>
@@ -7953,6 +8596,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-525</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7960,6 +8605,7 @@
 <NAME>NeuLANDPla4H-15</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>15</bar>
 <qcal0>1</qcal0>
@@ -7990,6 +8636,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-475</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -7997,6 +8645,7 @@
 <NAME>NeuLANDPla4H-16</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>16</bar>
 <qcal0>1</qcal0>
@@ -8027,6 +8676,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-425</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8034,6 +8685,7 @@
 <NAME>NeuLANDPla4H-17</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>17</bar>
 <qcal0>1</qcal0>
@@ -8064,6 +8716,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-375</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8071,6 +8725,7 @@
 <NAME>NeuLANDPla4H-18</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>18</bar>
 <qcal0>1</qcal0>
@@ -8101,6 +8756,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-325</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8108,6 +8765,7 @@
 <NAME>NeuLANDPla4H-19</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>19</bar>
 <qcal0>1</qcal0>
@@ -8138,6 +8796,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-275</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8145,6 +8805,7 @@
 <NAME>NeuLANDPla4H-20</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>20</bar>
 <qcal0>1</qcal0>
@@ -8175,6 +8836,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-225</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8182,6 +8845,7 @@
 <NAME>NeuLANDPla4H-21</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>21</bar>
 <qcal0>1</qcal0>
@@ -8212,6 +8876,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-175</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8219,6 +8885,7 @@
 <NAME>NeuLANDPla4H-22</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>22</bar>
 <qcal0>1</qcal0>
@@ -8249,6 +8916,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-125</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8256,6 +8925,7 @@
 <NAME>NeuLANDPla4H-23</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>23</bar>
 <qcal0>1</qcal0>
@@ -8286,6 +8956,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-75</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8293,6 +8965,7 @@
 <NAME>NeuLANDPla4H-24</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>24</bar>
 <qcal0>1</qcal0>
@@ -8323,6 +8996,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>-25</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8330,6 +9005,7 @@
 <NAME>NeuLANDPla4H-25</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>25</bar>
 <qcal0>1</qcal0>
@@ -8360,6 +9036,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>1</gtb1>
+<xpos>0</xpos>
+<ypos>25</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8367,6 +9045,7 @@
 <NAME>NeuLANDPla4H-26</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>26</bar>
 <qcal0>1</qcal0>
@@ -8397,6 +9076,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>75</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8404,6 +9085,7 @@
 <NAME>NeuLANDPla4H-27</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>27</bar>
 <qcal0>1</qcal0>
@@ -8434,6 +9116,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>125</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8441,6 +9125,7 @@
 <NAME>NeuLANDPla4H-28</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>28</bar>
 <qcal0>1</qcal0>
@@ -8471,6 +9156,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>175</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8478,6 +9165,7 @@
 <NAME>NeuLANDPla4H-29</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>29</bar>
 <qcal0>1</qcal0>
@@ -8508,6 +9196,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>225</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8515,6 +9205,7 @@
 <NAME>NeuLANDPla4H-30</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>30</bar>
 <qcal0>1</qcal0>
@@ -8545,6 +9236,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>275</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8552,6 +9245,7 @@
 <NAME>NeuLANDPla4H-31</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>31</bar>
 <qcal0>1</qcal0>
@@ -8582,6 +9276,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>325</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8589,6 +9285,7 @@
 <NAME>NeuLANDPla4H-32</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>32</bar>
 <qcal0>1</qcal0>
@@ -8619,6 +9316,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>375</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8626,6 +9325,7 @@
 <NAME>NeuLANDPla4H-33</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>33</bar>
 <qcal0>1</qcal0>
@@ -8656,6 +9356,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>425</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8663,6 +9365,7 @@
 <NAME>NeuLANDPla4H-34</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>34</bar>
 <qcal0>1</qcal0>
@@ -8693,6 +9396,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>475</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8700,6 +9405,7 @@
 <NAME>NeuLANDPla4H-35</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>35</bar>
 <qcal0>1</qcal0>
@@ -8730,6 +9436,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>525</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8737,6 +9445,7 @@
 <NAME>NeuLANDPla4H-36</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>36</bar>
 <qcal0>1</qcal0>
@@ -8767,6 +9476,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>575</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8774,6 +9485,7 @@
 <NAME>NeuLANDPla4H-37</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>37</bar>
 <qcal0>1</qcal0>
@@ -8804,6 +9516,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>625</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8811,6 +9525,7 @@
 <NAME>NeuLANDPla4H-38</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>38</bar>
 <qcal0>1</qcal0>
@@ -8841,6 +9556,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>675</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8848,6 +9565,7 @@
 <NAME>NeuLANDPla4H-39</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>39</bar>
 <qcal0>1</qcal0>
@@ -8878,6 +9596,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>725</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8885,6 +9605,7 @@
 <NAME>NeuLANDPla4H-40</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>40</bar>
 <qcal0>1</qcal0>
@@ -8915,6 +9636,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>775</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8922,6 +9645,7 @@
 <NAME>NeuLANDPla4H-41</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>41</bar>
 <qcal0>1</qcal0>
@@ -8952,6 +9676,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>825</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8959,6 +9685,7 @@
 <NAME>NeuLANDPla4H-42</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>42</bar>
 <qcal0>1</qcal0>
@@ -8989,6 +9716,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>875</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -8996,6 +9725,7 @@
 <NAME>NeuLANDPla4H-43</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>43</bar>
 <qcal0>1</qcal0>
@@ -9026,6 +9756,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>925</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -9033,6 +9765,7 @@
 <NAME>NeuLANDPla4H-44</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>44</bar>
 <qcal0>1</qcal0>
@@ -9063,6 +9796,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>975</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -9070,6 +9805,7 @@
 <NAME>NeuLANDPla4H-45</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>45</bar>
 <qcal0>1</qcal0>
@@ -9100,6 +9836,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>1025</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -9107,6 +9845,7 @@
 <NAME>NeuLANDPla4H-46</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>46</bar>
 <qcal0>1</qcal0>
@@ -9137,6 +9876,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>1075</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -9144,6 +9885,7 @@
 <NAME>NeuLANDPla4H-47</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>47</bar>
 <qcal0>1</qcal0>
@@ -9174,6 +9916,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>1125</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -9181,6 +9925,7 @@
 <NAME>NeuLANDPla4H-48</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>48</bar>
 <qcal0>1</qcal0>
@@ -9211,6 +9956,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>1175</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -9218,6 +9965,7 @@
 <NAME>NeuLANDPla4H-49</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>4</layer>
 <bar>49</bar>
 <qcal0>1</qcal0>
@@ -9248,6 +9996,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>1225</ypos>
 <zpos>11365</zpos>
 </NEULAND>
 <NEULAND>
@@ -9255,6 +10005,7 @@
 <NAME>NeuLANDPla5V-0</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>0</bar>
 <qcal0>1</qcal0>
@@ -9285,6 +10036,8 @@
 <channel1>9</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-1225</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9292,6 +10045,7 @@
 <NAME>NeuLANDPla5V-1</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>1</bar>
 <qcal0>1</qcal0>
@@ -9322,6 +10076,8 @@
 <channel1>8</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-1175</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9329,6 +10085,7 @@
 <NAME>NeuLANDPla5V-2</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>2</bar>
 <qcal0>1</qcal0>
@@ -9359,6 +10116,8 @@
 <channel1>7</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-1125</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9366,6 +10125,7 @@
 <NAME>NeuLANDPla5V-3</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>3</bar>
 <qcal0>1</qcal0>
@@ -9396,6 +10156,8 @@
 <channel1>6</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-1075</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9403,6 +10165,7 @@
 <NAME>NeuLANDPla5V-4</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>4</bar>
 <qcal0>1</qcal0>
@@ -9433,6 +10196,8 @@
 <channel1>5</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-1025</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9440,6 +10205,7 @@
 <NAME>NeuLANDPla5V-5</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>5</bar>
 <qcal0>1</qcal0>
@@ -9470,6 +10236,8 @@
 <channel1>4</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-975</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9477,6 +10245,7 @@
 <NAME>NeuLANDPla5V-6</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>6</bar>
 <qcal0>1</qcal0>
@@ -9507,6 +10276,8 @@
 <channel1>3</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-925</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9514,6 +10285,7 @@
 <NAME>NeuLANDPla5V-7</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>7</bar>
 <qcal0>1</qcal0>
@@ -9544,6 +10316,8 @@
 <channel1>2</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-875</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9551,6 +10325,7 @@
 <NAME>NeuLANDPla5V-8</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>8</bar>
 <qcal0>1</qcal0>
@@ -9581,6 +10356,8 @@
 <channel1>1</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-825</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9588,6 +10365,7 @@
 <NAME>NeuLANDPla5V-9</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>9</bar>
 <qcal0>1</qcal0>
@@ -9618,6 +10396,8 @@
 <channel1>0</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-775</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9625,6 +10405,7 @@
 <NAME>NeuLANDPla5V-10</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>10</bar>
 <qcal0>1</qcal0>
@@ -9655,6 +10436,8 @@
 <channel1>15</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-725</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9662,6 +10445,7 @@
 <NAME>NeuLANDPla5V-11</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>11</bar>
 <qcal0>1</qcal0>
@@ -9692,6 +10476,8 @@
 <channel1>14</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-675</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9699,6 +10485,7 @@
 <NAME>NeuLANDPla5V-12</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>12</bar>
 <qcal0>1</qcal0>
@@ -9729,6 +10516,8 @@
 <channel1>13</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-625</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9736,6 +10525,7 @@
 <NAME>NeuLANDPla5V-13</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>13</bar>
 <qcal0>1</qcal0>
@@ -9766,6 +10556,8 @@
 <channel1>12</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-575</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9773,6 +10565,7 @@
 <NAME>NeuLANDPla5V-14</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>14</bar>
 <qcal0>1</qcal0>
@@ -9803,6 +10596,8 @@
 <channel1>11</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-525</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9810,6 +10605,7 @@
 <NAME>NeuLANDPla5V-15</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>15</bar>
 <qcal0>1</qcal0>
@@ -9840,6 +10636,8 @@
 <channel1>10</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-475</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9847,6 +10645,7 @@
 <NAME>NeuLANDPla5V-16</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>16</bar>
 <qcal0>1</qcal0>
@@ -9877,6 +10676,8 @@
 <channel1>9</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-425</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9884,6 +10685,7 @@
 <NAME>NeuLANDPla5V-17</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>17</bar>
 <qcal0>1</qcal0>
@@ -9914,6 +10716,8 @@
 <channel1>8</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-375</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9921,6 +10725,7 @@
 <NAME>NeuLANDPla5V-18</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>18</bar>
 <qcal0>1</qcal0>
@@ -9951,6 +10756,8 @@
 <channel1>7</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-325</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9958,6 +10765,7 @@
 <NAME>NeuLANDPla5V-19</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>19</bar>
 <qcal0>1</qcal0>
@@ -9988,6 +10796,8 @@
 <channel1>6</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-275</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -9995,6 +10805,7 @@
 <NAME>NeuLANDPla5V-20</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>20</bar>
 <qcal0>1</qcal0>
@@ -10025,6 +10836,8 @@
 <channel1>5</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-225</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10032,6 +10845,7 @@
 <NAME>NeuLANDPla5V-21</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>21</bar>
 <qcal0>1</qcal0>
@@ -10062,6 +10876,8 @@
 <channel1>4</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-175</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10069,6 +10885,7 @@
 <NAME>NeuLANDPla5V-22</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>22</bar>
 <qcal0>1</qcal0>
@@ -10099,6 +10916,8 @@
 <channel1>3</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-125</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10106,6 +10925,7 @@
 <NAME>NeuLANDPla5V-23</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>23</bar>
 <qcal0>1</qcal0>
@@ -10136,6 +10956,8 @@
 <channel1>2</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-75</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10143,6 +10965,7 @@
 <NAME>NeuLANDPla5V-24</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>24</bar>
 <qcal0>1</qcal0>
@@ -10173,6 +10996,8 @@
 <channel1>1</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>-25</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10180,6 +11005,7 @@
 <NAME>NeuLANDPla5V-25</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>25</bar>
 <qcal0>1</qcal0>
@@ -10210,6 +11036,8 @@
 <channel1>0</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>25</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10217,6 +11045,7 @@
 <NAME>NeuLANDPla5V-26</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>26</bar>
 <qcal0>1</qcal0>
@@ -10247,6 +11076,8 @@
 <channel1>15</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>75</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10254,6 +11085,7 @@
 <NAME>NeuLANDPla5V-27</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>27</bar>
 <qcal0>1</qcal0>
@@ -10284,6 +11116,8 @@
 <channel1>14</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>125</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10291,6 +11125,7 @@
 <NAME>NeuLANDPla5V-28</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>28</bar>
 <qcal0>1</qcal0>
@@ -10321,6 +11156,8 @@
 <channel1>13</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>175</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10328,6 +11165,7 @@
 <NAME>NeuLANDPla5V-29</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>29</bar>
 <qcal0>1</qcal0>
@@ -10358,6 +11196,8 @@
 <channel1>12</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>225</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10365,6 +11205,7 @@
 <NAME>NeuLANDPla5V-30</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>30</bar>
 <qcal0>1</qcal0>
@@ -10395,6 +11236,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>275</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10402,6 +11245,7 @@
 <NAME>NeuLANDPla5V-31</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>31</bar>
 <qcal0>1</qcal0>
@@ -10432,6 +11276,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>325</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10439,6 +11285,7 @@
 <NAME>NeuLANDPla5V-32</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>32</bar>
 <qcal0>1</qcal0>
@@ -10469,6 +11316,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>375</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10476,6 +11325,7 @@
 <NAME>NeuLANDPla5V-33</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>33</bar>
 <qcal0>1</qcal0>
@@ -10506,6 +11356,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>425</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10513,6 +11365,7 @@
 <NAME>NeuLANDPla5V-34</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>34</bar>
 <qcal0>1</qcal0>
@@ -10543,6 +11396,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>475</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10550,6 +11405,7 @@
 <NAME>NeuLANDPla5V-35</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>35</bar>
 <qcal0>1</qcal0>
@@ -10580,6 +11436,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>525</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10587,6 +11445,7 @@
 <NAME>NeuLANDPla5V-36</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>36</bar>
 <qcal0>1</qcal0>
@@ -10617,6 +11476,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>575</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10624,6 +11485,7 @@
 <NAME>NeuLANDPla5V-37</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>37</bar>
 <qcal0>1</qcal0>
@@ -10654,6 +11516,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>625</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10661,6 +11525,7 @@
 <NAME>NeuLANDPla5V-38</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>38</bar>
 <qcal0>1</qcal0>
@@ -10691,6 +11556,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>675</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10698,6 +11565,7 @@
 <NAME>NeuLANDPla5V-39</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>39</bar>
 <qcal0>1</qcal0>
@@ -10728,6 +11596,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>725</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10735,6 +11605,7 @@
 <NAME>NeuLANDPla5V-40</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>40</bar>
 <qcal0>1</qcal0>
@@ -10765,6 +11636,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>775</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10772,6 +11645,7 @@
 <NAME>NeuLANDPla5V-41</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>41</bar>
 <qcal0>1</qcal0>
@@ -10802,6 +11676,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>825</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10809,6 +11685,7 @@
 <NAME>NeuLANDPla5V-42</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>42</bar>
 <qcal0>1</qcal0>
@@ -10839,6 +11716,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>875</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10846,6 +11725,7 @@
 <NAME>NeuLANDPla5V-43</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>43</bar>
 <qcal0>1</qcal0>
@@ -10876,6 +11756,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>925</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10883,6 +11765,7 @@
 <NAME>NeuLANDPla5V-44</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>44</bar>
 <qcal0>1</qcal0>
@@ -10913,6 +11796,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>975</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10920,6 +11805,7 @@
 <NAME>NeuLANDPla5V-45</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>45</bar>
 <qcal0>1</qcal0>
@@ -10950,6 +11836,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>1025</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10957,6 +11845,7 @@
 <NAME>NeuLANDPla5V-46</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>46</bar>
 <qcal0>1</qcal0>
@@ -10987,6 +11876,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>1075</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -10994,6 +11885,7 @@
 <NAME>NeuLANDPla5V-47</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>47</bar>
 <qcal0>1</qcal0>
@@ -11024,6 +11916,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>1125</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -11031,6 +11925,7 @@
 <NAME>NeuLANDPla5V-48</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>48</bar>
 <qcal0>1</qcal0>
@@ -11061,6 +11956,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>1175</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -11068,6 +11965,7 @@
 <NAME>NeuLANDPla5V-49</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>5</layer>
 <bar>49</bar>
 <qcal0>1</qcal0>
@@ -11098,6 +11996,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>1225</xpos>
+<ypos>0</ypos>
 <zpos>11415</zpos>
 </NEULAND>
 <NEULAND>
@@ -11105,6 +12005,7 @@
 <NAME>NeuLANDPla6H-0</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>0</bar>
 <qcal0>1</qcal0>
@@ -11135,6 +12036,8 @@
 <channel1>10</channel1>
 <sam1>6</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-1225</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11142,6 +12045,7 @@
 <NAME>NeuLANDPla6H-1</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>1</bar>
 <qcal0>1</qcal0>
@@ -11172,6 +12076,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-1175</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11179,6 +12085,7 @@
 <NAME>NeuLANDPla6H-2</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>2</bar>
 <qcal0>1</qcal0>
@@ -11209,6 +12116,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-1125</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11216,6 +12125,7 @@
 <NAME>NeuLANDPla6H-3</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>3</bar>
 <qcal0>1</qcal0>
@@ -11246,6 +12156,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-1075</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11253,6 +12165,7 @@
 <NAME>NeuLANDPla6H-4</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>4</bar>
 <qcal0>1</qcal0>
@@ -11283,6 +12196,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-1025</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11290,6 +12205,7 @@
 <NAME>NeuLANDPla6H-5</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>5</bar>
 <qcal0>1</qcal0>
@@ -11320,6 +12236,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-975</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11327,6 +12245,7 @@
 <NAME>NeuLANDPla6H-6</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>6</bar>
 <qcal0>1</qcal0>
@@ -11357,6 +12276,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-925</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11364,6 +12285,7 @@
 <NAME>NeuLANDPla6H-7</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>7</bar>
 <qcal0>1</qcal0>
@@ -11394,6 +12316,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-875</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11401,6 +12325,7 @@
 <NAME>NeuLANDPla6H-8</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>8</bar>
 <qcal0>1</qcal0>
@@ -11431,6 +12356,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-825</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11438,6 +12365,7 @@
 <NAME>NeuLANDPla6H-9</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>9</bar>
 <qcal0>1</qcal0>
@@ -11468,6 +12396,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-775</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11475,6 +12405,7 @@
 <NAME>NeuLANDPla6H-10</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>10</bar>
 <qcal0>1</qcal0>
@@ -11505,6 +12436,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-725</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11512,6 +12445,7 @@
 <NAME>NeuLANDPla6H-11</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>11</bar>
 <qcal0>1</qcal0>
@@ -11542,6 +12476,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-675</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11549,6 +12485,7 @@
 <NAME>NeuLANDPla6H-12</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>12</bar>
 <qcal0>1</qcal0>
@@ -11579,6 +12516,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-625</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11586,6 +12525,7 @@
 <NAME>NeuLANDPla6H-13</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>13</bar>
 <qcal0>1</qcal0>
@@ -11616,6 +12556,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-575</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11623,6 +12565,7 @@
 <NAME>NeuLANDPla6H-14</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>14</bar>
 <qcal0>1</qcal0>
@@ -11653,6 +12596,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-525</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11660,6 +12605,7 @@
 <NAME>NeuLANDPla6H-15</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>15</bar>
 <qcal0>1</qcal0>
@@ -11690,6 +12636,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-475</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11697,6 +12645,7 @@
 <NAME>NeuLANDPla6H-16</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>16</bar>
 <qcal0>1</qcal0>
@@ -11727,6 +12676,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-425</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11734,6 +12685,7 @@
 <NAME>NeuLANDPla6H-17</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>17</bar>
 <qcal0>1</qcal0>
@@ -11764,6 +12716,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-375</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11771,6 +12725,7 @@
 <NAME>NeuLANDPla6H-18</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>18</bar>
 <qcal0>1</qcal0>
@@ -11801,6 +12756,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-325</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11808,6 +12765,7 @@
 <NAME>NeuLANDPla6H-19</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>19</bar>
 <qcal0>1</qcal0>
@@ -11838,6 +12796,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-275</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11845,6 +12805,7 @@
 <NAME>NeuLANDPla6H-20</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>20</bar>
 <qcal0>1</qcal0>
@@ -11875,6 +12836,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-225</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11882,6 +12845,7 @@
 <NAME>NeuLANDPla6H-21</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>21</bar>
 <qcal0>1</qcal0>
@@ -11912,6 +12876,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-175</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11919,6 +12885,7 @@
 <NAME>NeuLANDPla6H-22</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>22</bar>
 <qcal0>1</qcal0>
@@ -11949,6 +12916,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-125</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11956,6 +12925,7 @@
 <NAME>NeuLANDPla6H-23</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>23</bar>
 <qcal0>1</qcal0>
@@ -11986,6 +12956,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-75</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -11993,6 +12965,7 @@
 <NAME>NeuLANDPla6H-24</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>24</bar>
 <qcal0>1</qcal0>
@@ -12023,6 +12996,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>-25</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12030,6 +13005,7 @@
 <NAME>NeuLANDPla6H-25</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>25</bar>
 <qcal0>1</qcal0>
@@ -12060,6 +13036,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>25</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12067,6 +13045,7 @@
 <NAME>NeuLANDPla6H-26</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>26</bar>
 <qcal0>1</qcal0>
@@ -12097,6 +13076,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>75</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12104,6 +13085,7 @@
 <NAME>NeuLANDPla6H-27</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>27</bar>
 <qcal0>1</qcal0>
@@ -12134,6 +13116,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>125</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12141,6 +13125,7 @@
 <NAME>NeuLANDPla6H-28</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>28</bar>
 <qcal0>1</qcal0>
@@ -12171,6 +13156,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>175</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12178,6 +13165,7 @@
 <NAME>NeuLANDPla6H-29</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>29</bar>
 <qcal0>1</qcal0>
@@ -12208,6 +13196,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>225</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12215,6 +13205,7 @@
 <NAME>NeuLANDPla6H-30</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>30</bar>
 <qcal0>1</qcal0>
@@ -12245,6 +13236,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>275</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12252,6 +13245,7 @@
 <NAME>NeuLANDPla6H-31</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>31</bar>
 <qcal0>1</qcal0>
@@ -12282,6 +13276,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>325</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12289,6 +13285,7 @@
 <NAME>NeuLANDPla6H-32</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>32</bar>
 <qcal0>1</qcal0>
@@ -12319,6 +13316,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>375</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12326,6 +13325,7 @@
 <NAME>NeuLANDPla6H-33</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>33</bar>
 <qcal0>1</qcal0>
@@ -12356,6 +13356,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>425</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12363,6 +13365,7 @@
 <NAME>NeuLANDPla6H-34</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>34</bar>
 <qcal0>1</qcal0>
@@ -12393,6 +13396,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>475</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12400,6 +13405,7 @@
 <NAME>NeuLANDPla6H-35</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>35</bar>
 <qcal0>1</qcal0>
@@ -12430,6 +13436,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>525</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12437,6 +13445,7 @@
 <NAME>NeuLANDPla6H-36</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>36</bar>
 <qcal0>1</qcal0>
@@ -12467,6 +13476,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>575</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12474,6 +13485,7 @@
 <NAME>NeuLANDPla6H-37</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>37</bar>
 <qcal0>1</qcal0>
@@ -12504,6 +13516,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>625</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12511,6 +13525,7 @@
 <NAME>NeuLANDPla6H-38</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>38</bar>
 <qcal0>1</qcal0>
@@ -12541,6 +13556,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>675</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12548,6 +13565,7 @@
 <NAME>NeuLANDPla6H-39</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>39</bar>
 <qcal0>1</qcal0>
@@ -12578,6 +13596,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>725</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12585,6 +13605,7 @@
 <NAME>NeuLANDPla6H-40</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>40</bar>
 <qcal0>1</qcal0>
@@ -12615,6 +13636,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>775</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12622,6 +13645,7 @@
 <NAME>NeuLANDPla6H-41</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>41</bar>
 <qcal0>1</qcal0>
@@ -12652,6 +13676,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>825</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12659,6 +13685,7 @@
 <NAME>NeuLANDPla6H-42</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>42</bar>
 <qcal0>1</qcal0>
@@ -12689,6 +13716,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>875</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12696,6 +13725,7 @@
 <NAME>NeuLANDPla6H-43</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>43</bar>
 <qcal0>1</qcal0>
@@ -12726,6 +13756,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>925</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12733,6 +13765,7 @@
 <NAME>NeuLANDPla6H-44</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>44</bar>
 <qcal0>1</qcal0>
@@ -12763,6 +13796,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>975</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12770,6 +13805,7 @@
 <NAME>NeuLANDPla6H-45</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>45</bar>
 <qcal0>1</qcal0>
@@ -12800,6 +13836,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>1025</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12807,6 +13845,7 @@
 <NAME>NeuLANDPla6H-46</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>46</bar>
 <qcal0>1</qcal0>
@@ -12837,6 +13876,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>1075</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12844,6 +13885,7 @@
 <NAME>NeuLANDPla6H-47</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>47</bar>
 <qcal0>1</qcal0>
@@ -12874,6 +13916,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>1125</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12881,6 +13925,7 @@
 <NAME>NeuLANDPla6H-48</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>48</bar>
 <qcal0>1</qcal0>
@@ -12911,6 +13956,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>1175</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12918,6 +13965,7 @@
 <NAME>NeuLANDPla6H-49</NAME>
 <FPL>13</FPL>
 <direction>H</direction>
+<SubLayer>1</SubLayer>
 <layer>6</layer>
 <bar>49</bar>
 <qcal0>1</qcal0>
@@ -12948,6 +13996,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>0</xpos>
+<ypos>1225</ypos>
 <zpos>11465</zpos>
 </NEULAND>
 <NEULAND>
@@ -12955,6 +14005,7 @@
 <NAME>NeuLANDPla7V-0</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>0</bar>
 <qcal0>1</qcal0>
@@ -12985,6 +14036,8 @@
 <channel1>9</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-1225</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -12992,6 +14045,7 @@
 <NAME>NeuLANDPla7V-1</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>1</bar>
 <qcal0>1</qcal0>
@@ -13022,6 +14076,8 @@
 <channel1>8</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-1175</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13029,6 +14085,7 @@
 <NAME>NeuLANDPla7V-2</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>2</bar>
 <qcal0>1</qcal0>
@@ -13059,6 +14116,8 @@
 <channel1>7</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-1125</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13066,6 +14125,7 @@
 <NAME>NeuLANDPla7V-3</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>3</bar>
 <qcal0>1</qcal0>
@@ -13096,6 +14156,8 @@
 <channel1>6</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-1075</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13103,6 +14165,7 @@
 <NAME>NeuLANDPla7V-4</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>4</bar>
 <qcal0>1</qcal0>
@@ -13133,6 +14196,8 @@
 <channel1>5</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-1025</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13140,6 +14205,7 @@
 <NAME>NeuLANDPla7V-5</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>5</bar>
 <qcal0>1</qcal0>
@@ -13170,6 +14236,8 @@
 <channel1>4</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-975</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13177,6 +14245,7 @@
 <NAME>NeuLANDPla7V-6</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>6</bar>
 <qcal0>1</qcal0>
@@ -13207,6 +14276,8 @@
 <channel1>3</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-925</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13214,6 +14285,7 @@
 <NAME>NeuLANDPla7V-7</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>7</bar>
 <qcal0>1</qcal0>
@@ -13244,6 +14316,8 @@
 <channel1>2</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-875</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13251,6 +14325,7 @@
 <NAME>NeuLANDPla7V-8</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>8</bar>
 <qcal0>1</qcal0>
@@ -13281,6 +14356,8 @@
 <channel1>1</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-825</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13288,6 +14365,7 @@
 <NAME>NeuLANDPla7V-9</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>9</bar>
 <qcal0>1</qcal0>
@@ -13318,6 +14396,8 @@
 <channel1>0</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-775</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13325,6 +14405,7 @@
 <NAME>NeuLANDPla7V-10</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>10</bar>
 <qcal0>1</qcal0>
@@ -13355,6 +14436,8 @@
 <channel1>15</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-725</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13362,6 +14445,7 @@
 <NAME>NeuLANDPla7V-11</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>11</bar>
 <qcal0>1</qcal0>
@@ -13392,6 +14476,8 @@
 <channel1>14</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-675</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13399,6 +14485,7 @@
 <NAME>NeuLANDPla7V-12</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>12</bar>
 <qcal0>1</qcal0>
@@ -13429,6 +14516,8 @@
 <channel1>13</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-625</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13436,6 +14525,7 @@
 <NAME>NeuLANDPla7V-13</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>13</bar>
 <qcal0>1</qcal0>
@@ -13466,6 +14556,8 @@
 <channel1>12</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-575</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13473,6 +14565,7 @@
 <NAME>NeuLANDPla7V-14</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>14</bar>
 <qcal0>1</qcal0>
@@ -13503,6 +14596,8 @@
 <channel1>11</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-525</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13510,6 +14605,7 @@
 <NAME>NeuLANDPla7V-15</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>15</bar>
 <qcal0>1</qcal0>
@@ -13540,6 +14636,8 @@
 <channel1>10</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-475</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13547,6 +14645,7 @@
 <NAME>NeuLANDPla7V-16</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>16</bar>
 <qcal0>1</qcal0>
@@ -13577,6 +14676,8 @@
 <channel1>9</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-425</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13584,6 +14685,7 @@
 <NAME>NeuLANDPla7V-17</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>17</bar>
 <qcal0>1</qcal0>
@@ -13614,6 +14716,8 @@
 <channel1>8</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-375</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13621,6 +14725,7 @@
 <NAME>NeuLANDPla7V-18</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>18</bar>
 <qcal0>1</qcal0>
@@ -13651,6 +14756,8 @@
 <channel1>7</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-325</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13658,6 +14765,7 @@
 <NAME>NeuLANDPla7V-19</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>19</bar>
 <qcal0>1</qcal0>
@@ -13688,6 +14796,8 @@
 <channel1>6</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-275</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13695,6 +14805,7 @@
 <NAME>NeuLANDPla7V-20</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>20</bar>
 <qcal0>1</qcal0>
@@ -13725,6 +14836,8 @@
 <channel1>5</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-225</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13732,6 +14845,7 @@
 <NAME>NeuLANDPla7V-21</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>21</bar>
 <qcal0>1</qcal0>
@@ -13762,6 +14876,8 @@
 <channel1>4</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-175</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13769,6 +14885,7 @@
 <NAME>NeuLANDPla7V-22</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>22</bar>
 <qcal0>1</qcal0>
@@ -13799,6 +14916,8 @@
 <channel1>3</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-125</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13806,6 +14925,7 @@
 <NAME>NeuLANDPla7V-23</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>23</bar>
 <qcal0>1</qcal0>
@@ -13836,6 +14956,8 @@
 <channel1>2</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-75</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13843,6 +14965,7 @@
 <NAME>NeuLANDPla7V-24</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>24</bar>
 <qcal0>1</qcal0>
@@ -13873,6 +14996,8 @@
 <channel1>1</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>-25</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13880,6 +15005,7 @@
 <NAME>NeuLANDPla7V-25</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>25</bar>
 <qcal0>1</qcal0>
@@ -13910,6 +15036,8 @@
 <channel1>0</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>25</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13917,6 +15045,7 @@
 <NAME>NeuLANDPla7V-26</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>26</bar>
 <qcal0>1</qcal0>
@@ -13947,6 +15076,8 @@
 <channel1>15</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>75</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13954,6 +15085,7 @@
 <NAME>NeuLANDPla7V-27</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>27</bar>
 <qcal0>1</qcal0>
@@ -13984,6 +15116,8 @@
 <channel1>14</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>125</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -13991,6 +15125,7 @@
 <NAME>NeuLANDPla7V-28</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>28</bar>
 <qcal0>1</qcal0>
@@ -14021,6 +15156,8 @@
 <channel1>13</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>175</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14028,6 +15165,7 @@
 <NAME>NeuLANDPla7V-29</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>29</bar>
 <qcal0>1</qcal0>
@@ -14058,6 +15196,8 @@
 <channel1>12</channel1>
 <sam1>5</sam1>
 <gtb1>0</gtb1>
+<xpos>225</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14065,6 +15205,7 @@
 <NAME>NeuLANDPla7V-30</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>30</bar>
 <qcal0>1</qcal0>
@@ -14095,6 +15236,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>275</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14102,6 +15245,7 @@
 <NAME>NeuLANDPla7V-31</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>31</bar>
 <qcal0>1</qcal0>
@@ -14132,6 +15276,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>325</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14139,6 +15285,7 @@
 <NAME>NeuLANDPla7V-32</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>32</bar>
 <qcal0>1</qcal0>
@@ -14169,6 +15316,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>375</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14176,6 +15325,7 @@
 <NAME>NeuLANDPla7V-33</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>33</bar>
 <qcal0>1</qcal0>
@@ -14206,6 +15356,8 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>425</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14213,6 +15365,7 @@
 <NAME>NeuLANDPla7V-34</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>34</bar>
 <qcal0>1</qcal0>
@@ -14243,6 +15396,8 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>475</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14250,6 +15405,7 @@
 <NAME>NeuLANDPla7V-35</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>35</bar>
 <qcal0>1</qcal0>
@@ -14280,6 +15436,8 @@
 <channel1>10</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>525</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14287,6 +15445,7 @@
 <NAME>NeuLANDPla7V-36</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>36</bar>
 <qcal0>1</qcal0>
@@ -14317,6 +15476,8 @@
 <channel1>9</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>575</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14324,6 +15485,7 @@
 <NAME>NeuLANDPla7V-37</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>37</bar>
 <qcal0>1</qcal0>
@@ -14354,6 +15516,8 @@
 <channel1>8</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>625</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14361,6 +15525,7 @@
 <NAME>NeuLANDPla7V-38</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>38</bar>
 <qcal0>1</qcal0>
@@ -14391,6 +15556,8 @@
 <channel1>7</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>675</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14398,6 +15565,7 @@
 <NAME>NeuLANDPla7V-39</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>39</bar>
 <qcal0>1</qcal0>
@@ -14428,6 +15596,8 @@
 <channel1>6</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>725</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14435,6 +15605,7 @@
 <NAME>NeuLANDPla7V-40</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>40</bar>
 <qcal0>1</qcal0>
@@ -14465,6 +15636,8 @@
 <channel1>5</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>775</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14472,6 +15645,7 @@
 <NAME>NeuLANDPla7V-41</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>41</bar>
 <qcal0>1</qcal0>
@@ -14502,6 +15676,8 @@
 <channel1>4</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>825</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14509,6 +15685,7 @@
 <NAME>NeuLANDPla7V-42</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>42</bar>
 <qcal0>1</qcal0>
@@ -14539,6 +15716,8 @@
 <channel1>3</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>875</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14546,6 +15725,7 @@
 <NAME>NeuLANDPla7V-43</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>43</bar>
 <qcal0>1</qcal0>
@@ -14576,6 +15756,8 @@
 <channel1>2</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>925</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14583,6 +15765,7 @@
 <NAME>NeuLANDPla7V-44</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>44</bar>
 <qcal0>1</qcal0>
@@ -14613,6 +15796,8 @@
 <channel1>1</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>975</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14620,6 +15805,7 @@
 <NAME>NeuLANDPla7V-45</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>45</bar>
 <qcal0>1</qcal0>
@@ -14650,6 +15836,8 @@
 <channel1>0</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>1025</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14657,6 +15845,7 @@
 <NAME>NeuLANDPla7V-46</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>46</bar>
 <qcal0>1</qcal0>
@@ -14687,6 +15876,8 @@
 <channel1>15</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>1075</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14694,6 +15885,7 @@
 <NAME>NeuLANDPla7V-47</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>47</bar>
 <qcal0>1</qcal0>
@@ -14724,6 +15916,8 @@
 <channel1>14</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>1125</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14731,6 +15925,7 @@
 <NAME>NeuLANDPla7V-48</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>48</bar>
 <qcal0>1</qcal0>
@@ -14761,6 +15956,8 @@
 <channel1>13</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>1175</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
 <NEULAND>
@@ -14768,6 +15965,7 @@
 <NAME>NeuLANDPla7V-49</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>7</layer>
 <bar>49</bar>
 <qcal0>1</qcal0>
@@ -14798,13 +15996,17 @@
 <channel1>12</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>1225</xpos>
+<ypos>0</ypos>
 <zpos>11515</zpos>
 </NEULAND>
+<!-- 
 <NEULAND>
 <ID>401</ID>
 <NAME>MasterStart</NAME>
 <FPL>13</FPL>
 <direction>V</direction>
+<SubLayer>1</SubLayer>
 <layer>1</layer>
 <bar>1</bar>
 <qcal0>1</qcal0>
@@ -14835,6 +16037,272 @@
 <channel1>11</channel1>
 <sam1>7</sam1>
 <gtb1>0</gtb1>
+<xpos>-1175</xpos>
+<ypos>0</ypos>
 <zpos>0</zpos>
+</NEULAND>-->
+<NEULAND>
+<ID>401</ID>
+<NAME>NEULANDVETO1</NAME>
+<FPl>13</FPl>
+<direction>V</direction>
+<Layer>1</Layer>
+<SubLayer>0</SubLayer>
+<xpos>-1120</xpos>
+<ypos>0</ypos>
+<zpos>10830</zpos>
+<TUCal>0.0764449</TUCal>
+<TUOff>0</TUOff>
+<TUSlw>0</TUSlw>
+<QUCal>0.0084</QUCal>
+<QUPed>270.381</QUPed>
+<TDCal>0.0772675</TDCal>
+<TDOff>0</TDOff>
+<TDSlw>0</TDSlw>
+<QDCal>0.0077</QDCal>
+<QDPed>327.727</QDPed>
+<DTCal>5.27777</DTCal>
+<DTOff>0</DTOff>
+<TAveOff>0</TAveOff>
+<tu_geo>31</tu_geo>
+<tu_ch>0</tu_ch>
+<td_geo>31</td_geo>
+<td_ch>8</td_ch>
+<qu_geo>31</qu_geo>
+<qu_ch>0</qu_ch>
+<qd_geo>31</qd_geo>
+<qd_ch>8</qd_ch>
+<Ignore>0</Ignore>
+</NEULAND>
+<NEULAND>
+<ID>402</ID>
+<NAME>NEULANDVETO2</NAME>
+<FPl>13</FPl>
+<direction>V</direction>
+<Layer>1</Layer>
+<SubLayer>0</SubLayer>
+<xpos>-800</xpos>
+<ypos>0</ypos>
+<zpos>10830</zpos>
+<TUCal>0.0781229</TUCal>
+<TUOff>0</TUOff>
+<TUSlw>0</TUSlw>
+<QUCal>0.0071</QUCal>
+<QUPed>188.705</QUPed>
+<TDCal>0.0773227</TDCal>
+<TDOff>0</TDOff>
+<TDSlw>0</TDSlw>
+<QDCal>0.0093</QDCal>
+<QDPed>329.087</QDPed>
+<DTCal>5.42857</DTCal>
+<DTOff>0</DTOff>
+<TAveOff>0</TAveOff>
+<tu_geo>31</tu_geo>
+<tu_ch>1</tu_ch>
+<td_geo>31</td_geo>
+<td_ch>9</td_ch>
+<qu_geo>31</qu_geo>
+<qu_ch>1</qu_ch>
+<qd_geo>31</qd_geo>
+<qd_ch>9</qd_ch>
+<Ignore>0</Ignore>
+</NEULAND>
+<NEULAND>
+<ID>403</ID>
+<NAME>NEULANDVETO3</NAME>
+<FPl>13</FPl>
+<direction>V</direction>
+<Layer>1</Layer>
+<SubLayer>0</SubLayer>
+<xpos>-480</xpos>
+<ypos>0</ypos>
+<zpos>10830</zpos>
+<TUCal>0.0768897</TUCal>
+<TUOff>0</TUOff>
+<TUSlw>0</TUSlw>
+<QUCal>0.0064</QUCal>
+<QUPed>194.707</QUPed>
+<TDCal>0.076907</TDCal>
+<TDOff>0</TDOff>
+<TDSlw>0</TDSlw>
+<QDCal>0.0084</QDCal>
+<QDPed>274.876</QDPed>
+<DTCal>5.27777</DTCal>
+<DTOff>0</DTOff>
+<TAveOff>0</TAveOff>
+<tu_geo>31</tu_geo>
+<tu_ch>2</tu_ch>
+<td_geo>31</td_geo>
+<td_ch>10</td_ch>
+<qu_geo>31</qu_geo>
+<qu_ch>2</qu_ch>
+<qd_geo>31</qd_geo>
+<qd_ch>10</qd_ch>
+<Ignore>0</Ignore>
+</NEULAND>
+<NEULAND>
+<ID>404</ID>
+<NAME>NEULANDVETO4</NAME>
+<FPl>13</FPl>
+<direction>V</direction>
+<Layer>1</Layer>
+<SubLayer>0</SubLayer>
+<xpos>-160</xpos>
+<ypos>0</ypos>
+<zpos>10830</zpos>
+<TUCal>0.0763626</TUCal>
+<TUOff>0</TUOff>
+<TUSlw>0</TUSlw>
+<QUCal>0.0092</QUCal>
+<QUPed>231.671</QUPed>
+<TDCal>0.077865</TDCal>
+<TDOff>0</TDOff>
+<TDSlw>0</TDSlw>
+<QDCal>0.0087</QDCal>
+<QDPed>361.245</QDPed>
+<DTCal>5.13514</DTCal>
+<DTOff>0</DTOff>
+<TAveOff>0</TAveOff>
+<tu_geo>31</tu_geo>
+<tu_ch>3</tu_ch>
+<td_geo>31</td_geo>
+<td_ch>11</td_ch>
+<qu_geo>31</qu_geo>
+<qu_ch>3</qu_ch>
+<qd_geo>31</qd_geo>
+<qd_ch>11</qd_ch>
+<Ignore>0</Ignore>
+</NEULAND>
+<NEULAND>
+<ID>405</ID>
+<NAME>NEULANDVETO5</NAME>
+<FPl>13</FPl>
+<direction>V</direction>
+<Layer>1</Layer>
+<SubLayer>0</SubLayer>
+<xpos>160</xpos>
+<ypos>0</ypos>
+<zpos>10830</zpos>
+<TUCal>0.0771958</TUCal>
+<TUOff>0</TUOff>
+<TUSlw>0</TUSlw>
+<QUCal>0.0072</QUCal>
+<QUPed>288.36</QUPed>
+<TDCal>0.0764381</TDCal>
+<TDOff>0</TDOff>
+<TDSlw>0</TDSlw>
+<QDCal>0.0104</QDCal>
+<QDPed>319.26</QDPed>
+<DTCal>5.27777</DTCal>
+<DTOff>0</DTOff>
+<TAveOff>0</TAveOff>
+<tu_geo>31</tu_geo>
+<tu_ch>4</tu_ch>
+<td_geo>31</td_geo>
+<td_ch>12</td_ch>
+<qu_geo>31</qu_geo>
+<qu_ch>4</qu_ch>
+<qd_geo>31</qd_geo>
+<qd_ch>12</qd_ch>
+<Ignore>0</Ignore>
+</NEULAND>
+<NEULAND>
+<ID>406</ID>
+<NAME>NEULANDVETO6</NAME>
+<FPl>13</FPl>
+<direction>V</direction>
+<Layer>1</Layer>
+<SubLayer>0</SubLayer>
+<xpos>480</xpos>
+<ypos>0</ypos>
+<zpos>10830</zpos>
+<TUCal>0.0768041</TUCal>
+<TUOff>0</TUOff>
+<TUSlw>0</TUSlw>
+<QUCal>0.0063</QUCal>
+<QUPed>275.527</QUPed>
+<TDCal>0.0767091</TDCal>
+<TDOff>0</TDOff>
+<TDSlw>0</TDSlw>
+<QDCal>0.0101</QDCal>
+<QDPed>386.405</QDPed>
+<DTCal>5.42857</DTCal>
+<DTOff>0</DTOff>
+<TAveOff>0</TAveOff>
+<tu_geo>31</tu_geo>
+<tu_ch>5</tu_ch>
+<td_geo>31</td_geo>
+<td_ch>13</td_ch>
+<qu_geo>31</qu_geo>
+<qu_ch>5</qu_ch>
+<qd_geo>31</qd_geo>
+<qd_ch>13</qd_ch>
+<Ignore>0</Ignore>
+</NEULAND>
+<NEULAND>
+<ID>407</ID>
+<NAME>NEULANDVETO7</NAME>
+<FPl>13</FPl>
+<direction>V</direction>
+<Layer>1</Layer>
+<SubLayer>0</SubLayer>
+<xpos>800</xpos>
+<ypos>0</ypos>
+<zpos>10830</zpos>
+<TUCal>0.0771441</TUCal>
+<TUOff>0</TUOff>
+<TUSlw>0</TUSlw>
+<QUCal>0.0095</QUCal>
+<QUPed>367.965</QUPed>
+<TDCal>0.0777481</TDCal>
+<TDOff>0</TDOff>
+<TDSlw>0</TDSlw>
+<QDCal>0.0083</QDCal>
+<QDPed>253.031</QDPed>
+<DTCal>5</DTCal>
+<DTOff>0</DTOff>
+<TAveOff>0</TAveOff>
+<tu_geo>31</tu_geo>
+<tu_ch>6</tu_ch>
+<td_geo>31</td_geo>
+<td_ch>14</td_ch>
+<qu_geo>31</qu_geo>
+<qu_ch>6</qu_ch>
+<qd_geo>31</qd_geo>
+<qd_ch>14</qd_ch>
+<Ignore>0</Ignore>
+</NEULAND>
+<NEULAND>
+<ID>408</ID>
+<NAME>NEULANDVETO8</NAME>
+<FPl>13</FPl>
+<direction>V</direction>
+<Layer>1</Layer>
+<SubLayer>0</SubLayer>
+<xpos>1120</xpos>
+<ypos>0</ypos>
+<zpos>10830</zpos>
+<TUCal>0.0772522</TUCal>
+<TUOff>0</TUOff>
+<TUSlw>0</TUSlw>
+<QUCal>0.0101</QUCal>
+<QUPed>346.16</QUPed>
+<TDCal>0.0786016</TDCal>
+<TDOff>0</TDOff>
+<TDSlw>0</TDSlw>
+<QDCal>0.0096</QDCal>
+<QDPed>188.551</QDPed>
+<DTCal>5.13514</DTCal>
+<DTOff>0</DTOff>
+<TAveOff>0</TAveOff>
+<tu_geo>31</tu_geo>
+<tu_ch>7</tu_ch>
+<td_geo>31</td_geo>
+<td_ch>15</td_ch>
+<qu_geo>31</qu_geo>
+<qu_ch>7</qu_ch>
+<qd_geo>31</qd_geo>
+<qd_ch>15</qd_ch>
+<Ignore>0</Ignore>
 </NEULAND>
 </dataroot>
diff --git a/Projects/S034/s034.detector b/Projects/S034/detector/s034.detector
similarity index 56%
rename from Projects/S034/s034.detector
rename to Projects/S034/detector/s034.detector
index 32f48fb1764ff6af96f69d69ecddcab1b233a7e9..665e428383cdad309dd5033af9034281bbfee1b4 100644
--- a/Projects/S034/s034.detector
+++ b/Projects/S034/detector/s034.detector
@@ -1,9 +1,20 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Target
+ THICKNESS= 0.1 cm
+ %RADIUS=	28 mm
+ RADIUS=	200 mm
+ MATERIAL= 7Li
+ ANGLE= 0 deg
+ X= 0 cm
+ Y= 0 mm
+ Z= -4500 mm
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 BigRIPSPlastic
   XML= db/SAMURAIPlastic.s034.2.xml
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-BigRIPSIC
+%BigRIPSIC
   XML= db/BigRIPSIC.xml
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -24,7 +35,7 @@ SAMURAIBDC 2
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Minos
- Position= 0.345399 1.02061 -4650 mm
+ Position= 0.345399 1.02061 -4650.0 mm
  ZRotation= 40.6 deg
  TargetLength= 151.72 mm
  TargetZOffset= 0 mm 
@@ -39,29 +50,54 @@ Minos
  XML= db/MINOS.xml
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Samurai
+% POS= 0 0 3900 mm
+ POS= 0 0 0 mm
+ ANGLE= 30 deg
+% %
+ METHOD= 0				
+% % 0=RungeKutta, 1=EliaOmar
+ %FIELDMAP= field_map/3T.table.bin 
+ FIELDMAP= field_map/180702-2,40T-3000.table.bin		
+% % fieldmap path
+ STEPS_PER_METER= 1000
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
+ 
 SAMURAIFDC0
- XML= db/SAMURAIFDC0_20200109.xml
- Offset= -0.00666226 0.102191 -3370.01 mm
- InvertX= 1 
- InvertY= 0
- InvertD= 1
+  XML= db/SAMURAIFDC0_20200109.xml
+  %POS= 0 0 0 cm 
+  %Offset= -0.00666226 0.102191 -3370.01 mm
+  Offset= -0.00666226 0.102191 -3370.01 mm
+  InvertX= 1 
+  InvertY= 0
+  InvertD= 1
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 SAMURAIFDC2
  XML= db/SAMURAIFDC2.xml
  Offset= -252.416 -0.228477 4122.57 mm
+ OffAngle= 59.930 deg
  InvertX= 0 
  InvertY= 1
  InvertD= 1
+ 
+
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 SAMURAIHOD
   XML= db/SAMURAIHOD_s034_all40mV_s037_20170702.xml
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-NEBULA
+%NEBULA
   XML= db/NEBULA.xml
-  Offset= 0 0 0 mm
+  Offset= 0 0 -4647.3 mm
   InvertX= 0
   InvertY= 0
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%NEULAND
+  XML= db/NEULAND.xml
+  Offset= 0 0 -4133.64 mm
+  InvertX= 0
+  InvertY= 0
diff --git a/Projects/S034/macro/Beam/BeamPlot.cxx b/Projects/S034/macro/Beam/BeamPlot.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..52142a305716688adcf019aa3eda450e2f853f82
--- /dev/null
+++ b/Projects/S034/macro/Beam/BeamPlot.cxx
@@ -0,0 +1,54 @@
+#include<iostream>
+
+#include <string>
+#include "TString.h"
+#include "TFile.h"
+#include "TCanvas.h"
+
+#include "TF1.h"
+#include "TH1.h"
+#include "TH2.h"
+#include "TTree.h"
+#include "TCanvas.h"
+
+using namespace std;
+
+
+void BeamPlot(){
+
+  TFile *f = new TFile("./root/analysis/run725.root");
+  TTree *tree = (TTree*)f->Get("PhysicsTree");
+  //cout << "nbr entries = " << tree->GetEntries() << endl;
+
+  TFile foutXThetaX("./beam/hBeamXThetaX.root","recreate");
+  auto hBeamXThetaX = new TH2F("hBeamXThetaX","hBeamXThetaX",80,-40,40,80,-0.05,0.05);
+  tree->Draw("Beam_ThetaX:BDC1_X>>hBeamXThetaX","Beam_ThetaX>-9000 && BDC1_X>-9000 && BDC1_X<1000 && Trigger==0");
+  hBeamXThetaX->Write();
+  auto hBeamThetaX = new TH1D("hBeamThetaX","hBeamThetaX",300,-0.05,0.05);
+  tree->Draw("Beam_ThetaX>>hBeamThetaX","Beam_ThetaX>-9000 && Trigger==0");
+  hBeamThetaX->Write();
+  auto hBeamX = new TH1D("hBeamX","hBeamX",300,-40,40);
+  tree->Draw("BDC1_X>>hBeamX","BDC1_X>-9000 && BDC1_X<1000 && Trigger==0");
+  hBeamX->Write();
+  foutXThetaX.Close();
+
+  TFile foutYThetaY("./beam/hBeamYThetaY.root","recreate");
+  auto hBeamYThetaY = new TH2F("hBeamYThetaY","hBeamYThetaY",80,-40,40,80,-0.05,0.05);
+  tree->Draw("Beam_ThetaY:BDC1_Y>>hBeamYThetaY","Beam_ThetaY>-9000 && BDC1_Y>-9000 && BDC1_Y<1000 && Trigger==0");
+  hBeamYThetaY->Write();
+  auto hBeamThetaY = new TH1D("hBeamThetaY","hBeamThetaY",300,-0.05,0.05);
+  tree->Draw("Beam_ThetaY>>hBeamThetaY","Beam_ThetaY>-9000 && Trigger==0");
+  hBeamThetaY->Write();
+  auto hBeamY = new TH1D("hBeamY","hBeamY",300,-40,40);
+  tree->Draw("BDC1_Y>>hBeamY","BDC1_Y>-9000 && BDC1_Y<1000 && Trigger==0");
+  hBeamY->Write();
+  foutYThetaY.Close();
+  
+  TFile foutKE("./beam/hBeamEnergy.root","recreate");
+  auto hBeamEnergy = new TH1D("hBeamEnergy","hBeamEnergy",100,1235,1260);
+  tree->Draw("Beam_KE_Tot>>hBeamEnergy","Beam_KE_Tot>-9000 && Trigger==0");
+  hBeamEnergy->Write();
+  foutKE.Close();
+
+ 
+}
diff --git a/Projects/S034/macro/CalibFDC.cxx b/Projects/S034/macro/CalibFDC.cxx
deleted file mode 100755
index 3c9cda37430ca701c7e358643f19b0b2012d6603..0000000000000000000000000000000000000000
--- a/Projects/S034/macro/CalibFDC.cxx
+++ /dev/null
@@ -1,103 +0,0 @@
-void CalibFDC(){
-  
-  for(int run12 =696; run12 <= 700 ; run12++){
-  
-  TChain* c = new TChain("RawTree");
-  c->Add(Form("~/nptool/rawData/rawData_FDC/%d.root",run12));
-  c->SetBranchStatus("*",false);
-
-  // FDC
-  /* int FDC = 0; */
-  /* int NLayer = 8; */
-  /* c->SetBranchStatus("SamuraiFDC0",true); */
-  /* ofstream fout(Form("CalibFiles/FDC0_Calib_%d.txt",run12)); */  
-  /* double inter = 2.5;// inter wire distance */
-  /* double low=1720; */
-  /* double high=1820; */
-
-  // FDC2
-  int FDC=2;
-  int NLayer = 14;
-  c->SetBranchStatus("SamuraiFDC2",true);
-  ofstream fout(Form("CalibFiles/FDC2_Calib_%d.txt", run12));  
-  double inter = 10;// inter wire distance
-  double low=1200;
-  double high=1700;
-
-  cout <<"Calibrating FDC" << FDC <<  " run number : " << run12 << endl;
-  
-  string cond;
-
-  TF1* f = new TF1("sigmoid","[0]/(exp([1]*([2]-x))+1)");
- //TF1* f = new TF1("sigmoid","0*(x<[0])+(x-[0])*[1]*(x>[0]&&x<[2])+[3]*(x>[2])");
-
- TH1D* h = new TH1D("h","h",1500,0,3000);
- for(unsigned int i = 0 ; i < NLayer; i++){
-  cond = Form("fFDC%d_LayerNbr==%d&&fFDC%d_Edge==0&&fFDC%d_Time>%f&&fFDC%d_Time<%f&&fFDC%d_Time@.size()>10&&fFDC%d_Time@.size()<100",FDC,i,FDC,FDC,low,FDC,high,FDC,FDC);
-  c->Draw(Form("fFDC%d_Time>>h",FDC),cond.c_str());
-  TH1D* g = new TH1D(*h);
-  unsigned int size = h->GetNbinsX();
-  for(unsigned int i = 0 ; i < size ; i++){
-    g->SetBinContent(i,h->Integral(0,i)); 
-  }
-  //new TCanvas();
-  //g->Draw();
-  cout << g->GetMaximum() << endl;
-  f->SetParameter(0,g->GetMaximum());
-  f->SetParameter(1,8e-3);
-  f->SetParameter(2,1500);
-  
-  g->Fit(f);
-  // Renormalize the distribution to 10 mm
-  f->SetParameter(0,inter);
-  double p0 = f->GetParameter(0);
-  double p1 = f->GetParameter(1);
-  double p2 = f->GetParameter(2);
-  //new TCanvas();
-  //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); 
-  fout << Form("FDC%d_L%d ",FDC,i) << p0 << " " << p1 << " " << p2 << endl;
-   } 
-   fout.close();
-
-/*   ////////////////////////////////////////// */ 
-/*   // FDC2 */
-/*   ////////////////////////////////////////// */
-  
-/*   FDC=2; */
-/*   NLayer = 14; */
-/*   c->SetBranchStatus("SamuraiFDC2",true); */
-/*   ofstream fout2(Form("CalibFiles/FDC2_Calib_%d.txt", run12)); */  
-/*   inter = 10;// inter wire distance */
-/*   low=1200; */
-/*   high=1700; */
-/*   h->Clear(); */
-  
-/*   for(unsigned int i = 0 ; i < NLayer; i++){ */
-/*     cond = Form("fFDC%d_LayerNbr==%d&&fFDC%d_Edge==0&&fFDC%d_Time>%f&&fFDC%d_Time<%f&&fFDC%d_Time@.size()>10&&fFDC%d_Time@.size()<100",FDC,i,FDC,FDC,low,FDC,high,FDC,FDC); */
-/*     c->Draw(Form("fFDC%d_Time>>h",FDC),cond.c_str()); */
-/*     TH1D* g = new TH1D(*h); */
-/*     unsigned int size = h->GetNbinsX(); */
-/*     for(unsigned int i = 0 ; i < size ; i++){ */
-/*       g->SetBinContent(i,h->Integral(0,i)); */ 
-/*     } */
-/*     //new TCanvas(); */
-/*     //g->Draw(); */
-/*     cout << g->GetMaximum() << endl; */
-/*     f->SetParameter(0,g->GetMaximum()); */
-/*     f->SetParameter(1,8e-3); */
-/*     f->SetParameter(2,1500); */
-
-/*     g->Fit(f); */
-/*     // Renormalize the distribution to 10 mm */
-/*     f->SetParameter(0,inter); */
-/*     double p0 = f->GetParameter(0); */
-/*     double p1 = f->GetParameter(1); */
-/*     double p2 = f->GetParameter(2); */
-/*     //new TCanvas(); */
-/*     //c->Draw(Form("%f/(exp(%f*(%f-(Time+ToT)))+1)>>hh(200,0,2.5)",p0,p1,p2),cond.c_str()); */ 
-/*     fout2 << Form("FDC%d_L%d ",FDC,i) << p0 << " " << p1 << " " << p2 << endl; */
-/*   } */ 
-/*   fout2.close(); */
-  
-  }
-}
diff --git a/Projects/S034/macro/DriftChamber/DrawDCReconstructionBDCs.cxx b/Projects/S034/macro/DriftChamber/DrawDCReconstructionBDCs.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..14365c13be297e6cd46cf800a85556a894272a0a
--- /dev/null
+++ b/Projects/S034/macro/DriftChamber/DrawDCReconstructionBDCs.cxx
@@ -0,0 +1,271 @@
+#include<iostream>
+#include <string>
+#include "TString.h"
+#include "TEllipse.h"
+using namespace std;
+
+void DrawDCReconstructionBDCs(){
+
+  auto anafile = new TFile("./root/analysis/run725.root");
+  auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree");
+
+  auto SamuraiBDC = new TSamuraiBDCPhysics();
+  anatree->SetBranchAddress("SamuraiBDC", &SamuraiBDC);
+
+  //// BDC1 ////
+  vector<double> Wire_X_P1_BDC1, Wire_X_P2_BDC1;
+  vector<double> Wire_Z_P1_BDC1, Wire_Z_P2_BDC1 ;
+  vector<double> Wire_DriftLength_P1_BDC1, Wire_DriftLength_P2_BDC1;
+  double Track_a_P1_BDC1, Track_a_P2_BDC1;
+  double Track_b_P1_BDC1, Track_b_P2_BDC1;
+  double Track_D_P1_BDC1, Track_D_P2_BDC1;
+  double UpperXLimit_P1_BDC1,UpperXLimit_P2_BDC1, LowerXLimit_P1_BDC1, LowerXLimit_P2_BDC1;
+
+  
+  //// BDC2 ////
+  vector<double> Wire_X_P1_BDC2, Wire_X_P2_BDC2;
+  vector<double> Wire_Z_P1_BDC2, Wire_Z_P2_BDC2 ;
+  vector<double> Wire_DriftLength_P1_BDC2, Wire_DriftLength_P2_BDC2;
+  double Track_a_P1_BDC2, Track_a_P2_BDC2;
+  double Track_b_P1_BDC2, Track_b_P2_BDC2;
+  double Track_D_P1_BDC2, Track_D_P2_BDC2;
+  double UpperXLimit_P1_BDC2,UpperXLimit_P2_BDC2, LowerXLimit_P1_BDC2, LowerXLimit_P2_BDC2;
+
+
+  TCanvas *c1 = new TCanvas();
+  c1->Divide(2,2);
+
+  //// BDC1 ////
+  TGraph *g1 = new TGraph();
+  g1->GetXaxis()->SetTitle("X");
+  g1->GetYaxis()->SetTitle("Z");
+
+  TGraph *g2 = new TGraph();
+  g2->GetXaxis()->SetTitle("X");
+  g2->GetYaxis()->SetTitle("Z");
+
+
+  //// BDC2 ////
+  TGraph *g3 = new TGraph();
+  g3->GetXaxis()->SetTitle("X");
+  g3->GetYaxis()->SetTitle("Z");
+
+  TGraph *g4 = new TGraph();
+  g4->GetXaxis()->SetTitle("X");
+  g4->GetYaxis()->SetTitle("Z");
+
+  unsigned int n = 145;
+  for( unsigned int i = n; i < (n +1); i++)
+    {
+      anatree->GetEntry(i);
+
+      //// BDC1 ////
+      unsigned int VectorEntriesBDC1 = SamuraiBDC->GetMultDet(1);
+      if(VectorEntriesBDC1==0) return;    
+      for (unsigned int j = 0; j < VectorEntriesBDC1 ; j++)
+	{
+	  if(SamuraiBDC->Wire_PosAngle[1][j]==0)
+	    {
+	      g1->SetPoint(g1->GetN(), SamuraiBDC->Wire_PosX[1][j],SamuraiBDC->Wire_PosZ[1][j]);
+	      
+	      Wire_X_P1_BDC1.push_back(SamuraiBDC->Wire_PosX[1][j]);
+	      Wire_Z_P1_BDC1.push_back(SamuraiBDC->Wire_PosZ[1][j]);
+	      Wire_DriftLength_P1_BDC1.push_back(SamuraiBDC->Wire_PosR[1][j]);
+	      Track_a_P1_BDC1 = 1/SamuraiBDC->Track_a[1][0];
+	      Track_b_P1_BDC1 = -Track_a_P1_BDC1*SamuraiBDC->Track_b[1][0];
+	      Track_D_P1_BDC1 = SamuraiBDC->Track_D[1][0];
+	    }
+	  
+	   if(SamuraiBDC->Wire_PosAngle[1][j]!=0)
+	    {
+	      g2->SetPoint(g2->GetN(), SamuraiBDC->Wire_PosX[1][j],SamuraiBDC->Wire_PosZ[1][j]);
+	     
+	      Wire_X_P2_BDC1.push_back(SamuraiBDC->Wire_PosX[1][j]);
+	      Wire_Z_P2_BDC1.push_back(SamuraiBDC->Wire_PosZ[1][j]);
+	      Wire_DriftLength_P2_BDC1.push_back(SamuraiBDC->Wire_PosR[1][j]);
+	      Track_a_P2_BDC1 = 1/SamuraiBDC->Track_a[1][1];
+	      Track_b_P2_BDC1 = -Track_a_P2_BDC1*SamuraiBDC->Track_b[1][1];
+	      Track_D_P2_BDC1 = SamuraiBDC->Track_D[1][1];
+	    }
+	  
+	}
+
+      //// BDC2 ////
+      unsigned int VectorEntriesBDC2 = SamuraiBDC->GetMultDet(2);
+      if(VectorEntriesBDC2==0) return;    
+      for (unsigned int j = 0; j < VectorEntriesBDC2 ; j++)
+	{
+	  if(SamuraiBDC->Wire_PosAngle[2][j]==0)
+	    {
+	      g3->SetPoint(g3->GetN(), SamuraiBDC->Wire_PosX[2][j],SamuraiBDC->Wire_PosZ[2][j]);
+	      
+	      Wire_X_P1_BDC2.push_back(SamuraiBDC->Wire_PosX[2][j]);
+	      Wire_Z_P1_BDC2.push_back(SamuraiBDC->Wire_PosZ[2][j]);
+	      Wire_DriftLength_P1_BDC2.push_back(SamuraiBDC->Wire_PosR[2][j]);
+	      Track_a_P1_BDC2 = 1/SamuraiBDC->Track_a[2][0];
+	      Track_b_P1_BDC2 = -Track_a_P1_BDC2*SamuraiBDC->Track_b[2][0];
+	      Track_D_P1_BDC2 = SamuraiBDC->Track_D[2][0];
+	    }
+	  
+	   if(SamuraiBDC->Wire_PosAngle[2][j]!=0)
+	    {
+	      g4->SetPoint(g4->GetN(), SamuraiBDC->Wire_PosX[2][j],SamuraiBDC->Wire_PosZ[2][j]);
+	     
+	      Wire_X_P2_BDC2.push_back(SamuraiBDC->Wire_PosX[2][j]);
+	      Wire_Z_P2_BDC2.push_back(SamuraiBDC->Wire_PosZ[2][j]);
+	      Wire_DriftLength_P2_BDC2.push_back(SamuraiBDC->Wire_PosR[2][j]);
+	      Track_a_P2_BDC2 = 1/SamuraiBDC->Track_a[2][1];
+	      Track_b_P2_BDC2 = -Track_a_P2_BDC2*SamuraiBDC->Track_b[2][1];
+	      Track_D_P2_BDC2 = SamuraiBDC->Track_D[2][1];
+	    }
+	  
+	}
+
+       //// BDC1 ////
+
+      UpperXLimit_P1_BDC1 = Wire_X_P1_BDC1[0] + 50;
+      LowerXLimit_P1_BDC1 = Wire_X_P1_BDC1[0] - 50;
+
+      cout << "Track_a_P1_BDC1 = " << Track_a_P1_BDC1 << endl;
+      cout << "Track_b_P1_BDC1 = " << Track_b_P1_BDC1 << endl;
+      cout << "Track_D_P1_BDC1 = " << Track_D_P1_BDC1 << endl;
+      cout << endl;
+
+      UpperXLimit_P2_BDC1 = Wire_X_P2_BDC1[0] + 50;
+      LowerXLimit_P2_BDC1 = Wire_X_P2_BDC1[0] - 50;
+
+      cout << "Track_a_P2_BDC1 = " << Track_a_P2_BDC1 << endl;
+      cout << "Track_b_P2_BDC1 = " << Track_b_P2_BDC1 << endl;
+      cout << "Track_D_P2_BDC1 = " << Track_D_P2_BDC1 << endl;
+      cout << endl;
+      
+      //// BDC2 ////
+
+      UpperXLimit_P1_BDC2 = Wire_X_P1_BDC2[0] + 50;
+      LowerXLimit_P1_BDC2 = Wire_X_P1_BDC2[0] - 50;
+
+      cout << "Track_a_P1_BDC2 = " << Track_a_P1_BDC2 << endl;
+      cout << "Track_b_P1_BDC2 = " << Track_b_P1_BDC2 << endl;
+      cout << "Track_D_P1_BDC2 = " << Track_D_P1_BDC2 << endl;
+      cout << endl;
+
+      UpperXLimit_P2_BDC2 = Wire_X_P2_BDC2[0] + 50;
+      LowerXLimit_P2_BDC2 = Wire_X_P2_BDC2[0] - 50;
+
+      cout << "Track_a_P2_BDC2 = " << Track_a_P2_BDC2 << endl;
+      cout << "Track_b_P2_BDC2 = " << Track_b_P2_BDC2 << endl;
+      cout << "Track_D_P2_BDC2 = " << Track_D_P2_BDC2 << endl;
+
+
+      /////////// Draw /////////////
+
+      //// BDC1 ////
+      ///// Plan 1 /////
+      c1->cd(1);
+      g1->Draw("AP");
+      cout << "Number of Wires with information in plan 1 = " << Wire_X_P1_BDC1.size() << endl;
+      for(unsigned int j=0; j< Wire_X_P1_BDC1.size(); j++){
+	  TEllipse *circle1 = new TEllipse(Wire_X_P1_BDC1[j],Wire_Z_P1_BDC1[j],Wire_DriftLength_P1_BDC1[j],Wire_DriftLength_P1_BDC1[j]);
+	  circle1->Draw();
+	}
+
+      TH1 *t1 = g1->GetHistogram();
+      t1->GetXaxis()->SetLimits(LowerXLimit_P1_BDC1, UpperXLimit_P1_BDC1);
+      t1->GetYaxis()->SetRangeUser(-40,40);
+      
+      auto f1 = new TF1("f1","[0]*x+[1]",-200,200);
+      f1->SetParameters(Track_a_P1_BDC1,Track_b_P1_BDC1);
+      
+      double YLine1_P1_BDC1 = f1->Eval(LowerXLimit_P1_BDC1);
+      double YLine2_P1_BDC1 = f1->Eval(UpperXLimit_P1_BDC1);
+      
+      TLine *l1=new TLine(LowerXLimit_P1_BDC1,YLine1_P1_BDC1,UpperXLimit_P1_BDC1,YLine2_P1_BDC1);
+      l1->SetLineColor(kBlue);
+      l1->SetLineWidth(2);
+      l1->Draw("SAME");
+
+      ///// Plan 2 /////
+      c1->cd(2);
+      g2->Draw("AP");
+      cout << "Number of Wires with information in plan 2 = " << Wire_X_P2_BDC1.size() << endl;
+      for(unsigned int j=0; j< Wire_X_P2_BDC1.size(); j++){
+	  TEllipse *circle2 = new TEllipse(Wire_X_P2_BDC1[j],Wire_Z_P2_BDC1[j],Wire_DriftLength_P2_BDC1[j],Wire_DriftLength_P2_BDC1[j]);
+	  circle2->Draw();
+	}
+
+      TH1 *t2 = g2->GetHistogram();
+      t2->GetXaxis()->SetLimits(LowerXLimit_P2_BDC1, UpperXLimit_P2_BDC1);
+      t2->GetYaxis()->SetRangeUser(-40,40);
+      
+      auto f2 = new TF1("f2","[0]*x+[1]",-200,200);
+      f2->SetParameters(Track_a_P2_BDC1,Track_b_P2_BDC1);
+      
+      double YLine1_P2_BDC1 = f2->Eval(LowerXLimit_P2_BDC1);
+      double YLine2_P2_BDC1 = f2->Eval(UpperXLimit_P2_BDC1);
+      
+      TLine *l2=new TLine(LowerXLimit_P2_BDC1,YLine1_P2_BDC1,UpperXLimit_P2_BDC1,YLine2_P2_BDC1);
+      l2->SetLineColor(kBlue);
+      l2->SetLineWidth(2);
+      l2->Draw("SAME");
+      
+
+//// BDC2 ////
+      ///// Plan 1 /////
+      c1->cd(3);
+      g3->Draw("AP");
+      cout << "Number of Wires with information in plan 1 = " << Wire_X_P1_BDC2.size() << endl;
+      for(unsigned int j=0; j< Wire_X_P1_BDC2.size(); j++){
+	  TEllipse *circle3 = new TEllipse(Wire_X_P1_BDC2[j],Wire_Z_P1_BDC2[j],Wire_DriftLength_P1_BDC2[j],Wire_DriftLength_P1_BDC2[j]);
+	  circle3->Draw();
+	}
+
+      TH1 *t3 = g3->GetHistogram();
+      t3->GetXaxis()->SetLimits(LowerXLimit_P1_BDC2, UpperXLimit_P1_BDC2);
+      t3->GetYaxis()->SetRangeUser(-40,40);
+      
+      auto f3 = new TF1("f3","[0]*x+[1]",-200,200);
+      f3->SetParameters(Track_a_P1_BDC2,Track_b_P1_BDC2);
+      
+      double YLine1_P1_BDC2 = f3->Eval(LowerXLimit_P1_BDC2);
+      double YLine2_P1_BDC2 = f3->Eval(UpperXLimit_P1_BDC2);
+      
+      TLine *l3=new TLine(LowerXLimit_P1_BDC2,YLine1_P1_BDC2,UpperXLimit_P1_BDC2,YLine2_P1_BDC2);
+      l3->SetLineColor(kBlue);
+      l3->SetLineWidth(2);
+      l3->Draw("SAME");
+
+      ///// Plan 2 /////
+      c1->cd(4);
+      g4->Draw("AP");
+      cout << "Number of Wires with information in plan 2 = " << Wire_X_P2_BDC2.size() << endl;
+      for(unsigned int j=0; j< Wire_X_P2_BDC2.size(); j++){
+	  TEllipse *circle4 = new TEllipse(Wire_X_P2_BDC2[j],Wire_Z_P2_BDC2[j],Wire_DriftLength_P2_BDC2[j],Wire_DriftLength_P2_BDC2[j]);
+	  circle4->Draw();
+	}
+
+      TH1 *t4 = g4->GetHistogram();
+      t4->GetXaxis()->SetLimits(LowerXLimit_P2_BDC2, UpperXLimit_P2_BDC2);
+      t4->GetYaxis()->SetRangeUser(-40,40);
+      
+      auto f4 = new TF1("f4","[0]*x+[1]",-200,200);
+      f4->SetParameters(Track_a_P2_BDC2,Track_b_P2_BDC2);
+      
+      double YLine1_P2_BDC2 = f4->Eval(LowerXLimit_P2_BDC2);
+      double YLine2_P2_BDC2 = f4->Eval(UpperXLimit_P2_BDC2);
+      
+      TLine *l4=new TLine(LowerXLimit_P2_BDC2,YLine1_P2_BDC2,UpperXLimit_P2_BDC2,YLine2_P2_BDC2);
+      l4->SetLineColor(kBlue);
+      l4->SetLineWidth(2);
+      l4->Draw("SAME");
+
+
+
+
+      
+    }// end of for loop
+ 
+  
+}
+
+
+
diff --git a/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC0.cxx b/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC0.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..8819ad5ee2a19d59d207c64a6e57374fbb45645d
--- /dev/null
+++ b/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC0.cxx
@@ -0,0 +1,145 @@
+#include<iostream>
+#include <string>
+#include "TString.h"
+#include "TEllipse.h"
+using namespace std;
+
+void DrawDCReconstructionFDC0(){
+
+  auto anafile = new TFile("./root/analysis/run725.root");
+  auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree");
+
+  auto SamuraiFDC0 = new TSamuraiFDC0Physics();
+  anatree->SetBranchAddress("SamuraiFDC0", &SamuraiFDC0);
+
+  vector<double> Wire_X_P1, Wire_X_P2;
+  vector<double> Wire_Z_P1, Wire_Z_P2 ;
+  vector<double> Wire_DriftLength_P1, Wire_DriftLength_P2;
+  double Track_a_P1, Track_a_P2;
+  double Track_b_P1, Track_b_P2;
+  double Track_D_P1, Track_D_P2;
+
+  double UpperXLimit_P1,UpperXLimit_P2, LowerXLimit_P1, LowerXLimit_P2 ;
+
+  TCanvas *c1 = new TCanvas();
+  c1->Divide(2,1);
+  
+  TGraph *g1 = new TGraph();
+  g1->GetXaxis()->SetTitle("X");
+  g1->GetYaxis()->SetTitle("Z");
+
+  TGraph *g2 = new TGraph();
+  g2->GetXaxis()->SetTitle("X");
+  g2->GetYaxis()->SetTitle("Z");
+
+  unsigned int n = 16;
+  for( unsigned int i = n; i < (n +1); i++)
+    {
+      anatree->GetEntry(i);
+      unsigned int VectorEntries = SamuraiFDC0->GetMult();
+
+      if(VectorEntries==0) return;
+      
+      for (unsigned int j = 0; j < VectorEntries ; j++)
+	{
+	  if(SamuraiFDC0->Wire_PosAngle[j]==0)
+	    {
+	      g1->SetPoint(g1->GetN(), SamuraiFDC0->Wire_PosX[j],SamuraiFDC0->Wire_PosZ[j]);
+	      
+	      Wire_X_P1.push_back(SamuraiFDC0->Wire_PosX[j]);
+	      Wire_Z_P1.push_back(SamuraiFDC0->Wire_PosZ[j]);
+	      Wire_DriftLength_P1.push_back(SamuraiFDC0->Wire_PosR[j]);
+	      Track_a_P1 = 1/SamuraiFDC0->Track_a[0];
+	      Track_b_P1 = -Track_a_P1*SamuraiFDC0->Track_b[0];
+	      Track_D_P1 = SamuraiFDC0->Track_D[0];
+	    }
+
+	   if(SamuraiFDC0->Wire_PosAngle[j]!=0)
+	    {
+	      g2->SetPoint(g2->GetN(), SamuraiFDC0->Wire_PosX[j],SamuraiFDC0->Wire_PosZ[j]);
+	     
+	      Wire_X_P2.push_back(SamuraiFDC0->Wire_PosX[j]);
+	      Wire_Z_P2.push_back(SamuraiFDC0->Wire_PosZ[j]);
+	      Wire_DriftLength_P2.push_back(SamuraiFDC0->Wire_PosR[j]);
+	      Track_a_P2 = 1/SamuraiFDC0->Track_a[1];
+	      Track_b_P2 = -Track_a_P2*SamuraiFDC0->Track_b[1];
+	      Track_D_P2 = SamuraiFDC0->Track_D[1];
+	    }
+	  
+	}
+
+      UpperXLimit_P1 = Wire_X_P1[0] + 50;
+      LowerXLimit_P1 = Wire_X_P1[0] - 50;
+
+      cout << "Track_a_P1 = " << Track_a_P1 << endl;
+      cout << "Track_b_P1 = " << Track_b_P1 << endl;
+      cout << "Track_D_P1 = " << Track_D_P1 << endl;
+      cout << endl;
+
+      UpperXLimit_P2 = Wire_X_P2[0] + 50;
+      LowerXLimit_P2 = Wire_X_P2[0] - 50;
+
+      cout << "Track_a_P2 = " << Track_a_P2 << endl;
+      cout << "Track_b_P2 = " << Track_b_P2 << endl;
+      cout << "Track_D_P2 = " << Track_D_P2 << endl;
+
+      /////////// Draw /////////////
+
+      ///// Plan 1 /////
+      c1->cd(1);
+      g1->Draw("AP");
+      cout << "Number of Wires with information in plan 1 = " << Wire_X_P1.size() << endl;
+      for(unsigned int j=0; j< Wire_X_P1.size(); j++){
+	  TEllipse *circle1 = new TEllipse(Wire_X_P1[j],Wire_Z_P1[j],Wire_DriftLength_P1[j],Wire_DriftLength_P1[j]);
+	  circle1->Draw();
+	  //cout << " circle drawn = " << j << endl;
+	}
+
+      TH1 *t1 = g1->GetHistogram();
+      t1->GetXaxis()->SetLimits(LowerXLimit_P1, UpperXLimit_P1);
+      t1->GetYaxis()->SetRangeUser(-40,40);
+      
+      auto f1 = new TF1("f1","[0]*x+[1]",-200,200);
+      f1->SetParameters(Track_a_P1,Track_b_P1);
+      
+      double YLine1_P1 = f1->Eval(LowerXLimit_P1);
+      double YLine2_P1 = f1->Eval(UpperXLimit_P1);
+      
+      TLine *l1=new TLine(LowerXLimit_P1,YLine1_P1,UpperXLimit_P1,YLine2_P1);
+      l1->SetLineColor(kBlue);
+      l1->SetLineWidth(2);
+      l1->Draw("SAME");
+
+      ///// Plan 2 /////
+      c1->cd(2);
+      g2->Draw("AP");
+      cout << "Number of Wires with information in plan 2 = " << Wire_X_P2.size() << endl;
+      for(unsigned int j=0; j< Wire_X_P2.size(); j++){
+	  TEllipse *circle2 = new TEllipse(Wire_X_P2[j],Wire_Z_P2[j],Wire_DriftLength_P2[j],Wire_DriftLength_P2[j]);
+	  circle2->Draw();
+	  //cout << " circle drawn = " << j << endl;
+	}
+
+      TH1 *t2 = g2->GetHistogram();
+      t2->GetXaxis()->SetLimits(LowerXLimit_P2, UpperXLimit_P2);
+      t2->GetYaxis()->SetRangeUser(-40,40);
+      
+      auto f2 = new TF1("f2","[0]*x+[1]",-200,200);
+      f2->SetParameters(Track_a_P2,Track_b_P2);
+      
+      double YLine1_P2 = f2->Eval(LowerXLimit_P2);
+      double YLine2_P2 = f2->Eval(UpperXLimit_P2);
+      
+      TLine *l2=new TLine(LowerXLimit_P2,YLine1_P2,UpperXLimit_P2,YLine2_P2);
+      l2->SetLineColor(kBlue);
+      l2->SetLineWidth(2);
+      l2->Draw("SAME");
+      
+
+    }// end of for loop
+ 
+  
+}
+
+
+
diff --git a/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC2.cxx b/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC2.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..dfda4982bb86066d8405f9f7a0abb777e3b35aeb
--- /dev/null
+++ b/Projects/S034/macro/DriftChamber/DrawDCReconstructionFDC2.cxx
@@ -0,0 +1,192 @@
+#include<iostream>
+#include <string>
+#include "TString.h"
+#include "TEllipse.h"
+using namespace std;
+
+void DrawDCReconstructionFDC2(){
+
+  auto anafile = new TFile("./root/analysis/run725.root");
+  auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree");
+
+  auto SamuraiFDC2 = new TSamuraiFDC2Physics();
+  anatree->SetBranchAddress("SamuraiFDC2", &SamuraiFDC2);
+
+  vector<double> Wire_X_P1, Wire_X_P2, Wire_X_P3;
+  vector<double> Wire_Z_P1, Wire_Z_P2, Wire_Z_P3 ;
+  vector<double> Wire_DriftLength_P1, Wire_DriftLength_P2,Wire_DriftLength_P3 ;
+  double Track_a_P1, Track_a_P2, Track_a_P3;
+  double Track_b_P1, Track_b_P2, Track_b_P3;
+  double Track_D_P1, Track_D_P2, Track_D_P3;
+
+  double UpperXLimit_P1,UpperXLimit_P2,UpperXLimit_P3; 
+  double LowerXLimit_P1, LowerXLimit_P2, LowerXLimit_P3 ;
+
+  TCanvas *c1 = new TCanvas();
+  c1->Divide(3,1);
+  
+  TGraph *g1 = new TGraph();
+  g1->GetXaxis()->SetTitle("X");
+  g1->GetYaxis()->SetTitle("Z");
+
+  TGraph *g2 = new TGraph();
+  g2->GetXaxis()->SetTitle("X");
+  g2->GetYaxis()->SetTitle("Z");
+
+  TGraph *g3 = new TGraph();
+  g3->GetXaxis()->SetTitle("X");
+  g3->GetYaxis()->SetTitle("Z");
+
+  unsigned int n = 824;
+  for( unsigned int i = n; i < (n +1); i++)
+    {
+      cout << i << endl;
+      anatree->GetEntry(i);
+      unsigned int VectorEntries = SamuraiFDC2->GetMult();
+      if(VectorEntries==0) return;
+      
+      for (unsigned int j = 0; j < VectorEntries ; j++)
+	{
+	  if(SamuraiFDC2->Wire_PosAngle[j]<0)
+	    {
+	      g1->SetPoint(g1->GetN(), SamuraiFDC2->Wire_PosX[j],SamuraiFDC2->Wire_PosZ[j]);
+	      
+	      Wire_X_P1.push_back(SamuraiFDC2->Wire_PosX[j]);
+	      Wire_Z_P1.push_back(SamuraiFDC2->Wire_PosZ[j]);
+	      Wire_DriftLength_P1.push_back(SamuraiFDC2->Wire_PosR[j]);
+	      Track_a_P1 = 1/SamuraiFDC2->Track_a[0];
+	      Track_b_P1 = -Track_a_P1*SamuraiFDC2->Track_b[0];
+	      Track_D_P1 = SamuraiFDC2->Track_D[0];
+	    }
+
+	   if(SamuraiFDC2->Wire_PosAngle[j]==0)
+	    {
+	      g2->SetPoint(g2->GetN(), SamuraiFDC2->Wire_PosX[j],SamuraiFDC2->Wire_PosZ[j]);
+	     
+	      Wire_X_P2.push_back(SamuraiFDC2->Wire_PosX[j]);
+	      Wire_Z_P2.push_back(SamuraiFDC2->Wire_PosZ[j]);
+	      Wire_DriftLength_P2.push_back(SamuraiFDC2->Wire_PosR[j]);
+	      Track_a_P2 = 1/SamuraiFDC2->Track_a[1];
+	      Track_b_P2 = -Track_a_P2*SamuraiFDC2->Track_b[1];
+	      Track_D_P2 = SamuraiFDC2->Track_D[1];
+	    }
+	  
+	   if(SamuraiFDC2->Wire_PosAngle[j]>0)
+	    {
+	      g3->SetPoint(g3->GetN(), SamuraiFDC2->Wire_PosX[j],SamuraiFDC2->Wire_PosZ[j]);
+	     
+	      Wire_X_P3.push_back(SamuraiFDC2->Wire_PosX[j]);
+	      Wire_Z_P3.push_back(SamuraiFDC2->Wire_PosZ[j]);
+	      Wire_DriftLength_P3.push_back(SamuraiFDC2->Wire_PosR[j]);
+	      Track_a_P3 = 1/SamuraiFDC2->Track_a[2];
+	      Track_b_P3 = -Track_a_P3*SamuraiFDC2->Track_b[2];
+	      Track_D_P3 = SamuraiFDC2->Track_D[2];
+	    }
+	}
+
+      UpperXLimit_P1 = Wire_X_P1[0] + 200;
+      LowerXLimit_P1 = Wire_X_P1[0] - 200;
+
+      cout << "Track_a_P1 = " << Track_a_P1 << endl;
+      cout << "Track_b_P1 = " << Track_b_P1 << endl;
+      cout << "Track_D_P1 = " << Track_D_P1 << endl;
+      cout << endl;
+
+      UpperXLimit_P2 = Wire_X_P2[0] + 200;
+      LowerXLimit_P2 = Wire_X_P2[0] - 200;
+
+      cout << "Track_a_P2 = " << Track_a_P2 << endl;
+      cout << "Track_b_P2 = " << Track_b_P2 << endl;
+      cout << "Track_D_P2 = " << Track_D_P2 << endl;
+      cout << endl;
+      
+      UpperXLimit_P3 = Wire_X_P3[0] + 200;
+      LowerXLimit_P3 = Wire_X_P3[0] - 200;
+
+      cout << "Track_a_P3 = " << Track_a_P3 << endl;
+      cout << "Track_b_P3 = " << Track_b_P3 << endl;
+      cout << "Track_D_P3 = " << Track_D_P3 << endl;
+      
+      /////////// Draw /////////////
+
+      ///// Plan 1 /////
+      c1->cd(1);
+      g1->Draw("AP");
+      cout << "Number of Wires with information in plan 1 = " << Wire_X_P1.size() << endl;
+      for(unsigned int j=0; j< Wire_X_P1.size(); j++){
+	  TEllipse *circle1 = new TEllipse(Wire_X_P1[j],Wire_Z_P1[j],Wire_DriftLength_P1[j],Wire_DriftLength_P1[j]);
+	  circle1->Draw();
+	}
+
+      TH1 *t1 = g1->GetHistogram();
+      t1->GetXaxis()->SetLimits(LowerXLimit_P1, UpperXLimit_P1);
+      t1->GetYaxis()->SetRangeUser(-400,400);
+      
+      auto f1 = new TF1("f1","[0]*x+[1]",-200,200);
+      f1->SetParameters(Track_a_P1,Track_b_P1);
+      
+      double YLine1_P1 = f1->Eval(LowerXLimit_P1);
+      double YLine2_P1 = f1->Eval(UpperXLimit_P1);
+      
+      TLine *l1=new TLine(LowerXLimit_P1,YLine1_P1,UpperXLimit_P1,YLine2_P1);
+      l1->SetLineColor(kBlue);
+      l1->SetLineWidth(2);
+      l1->Draw("SAME");
+
+      ///// Plan 2 /////
+      c1->cd(2);
+      g2->Draw("AP");
+      cout << "Number of Wires with information in plan 2 = " << Wire_X_P2.size() << endl;
+      for(unsigned int j=0; j< Wire_X_P2.size(); j++){
+	  TEllipse *circle2 = new TEllipse(Wire_X_P2[j],Wire_Z_P2[j],Wire_DriftLength_P2[j],Wire_DriftLength_P2[j]);
+	  circle2->Draw();
+	  //cout << " circle drawn = " << j << endl;
+	}
+
+      TH1 *t2 = g2->GetHistogram();
+      t2->GetXaxis()->SetLimits(LowerXLimit_P2, UpperXLimit_P2);
+      t2->GetYaxis()->SetRangeUser(-400,400);
+      
+      auto f2 = new TF1("f2","[0]*x+[1]",-200,200);
+      f2->SetParameters(Track_a_P2,Track_b_P2);
+      
+      double YLine1_P2 = f2->Eval(LowerXLimit_P2);
+      double YLine2_P2 = f2->Eval(UpperXLimit_P2);
+      
+      TLine *l2=new TLine(LowerXLimit_P2,YLine1_P2,UpperXLimit_P2,YLine2_P2);
+      l2->SetLineColor(kBlue);
+      l2->SetLineWidth(2);
+      l2->Draw("SAME");
+
+       ///// Plan 3 /////
+      c1->cd(3);
+      g3->Draw("AP");
+      cout << "Number of Wires with information in plan 3 = " << Wire_X_P3.size() << endl;
+      for(unsigned int j=0; j< Wire_X_P3.size(); j++){
+	  TEllipse *circle3 = new TEllipse(Wire_X_P3[j],Wire_Z_P3[j],Wire_DriftLength_P3[j],Wire_DriftLength_P3[j]);
+	  circle3->Draw();
+	}
+
+      TH1 *t3 = g3->GetHistogram();
+      t3->GetXaxis()->SetLimits(LowerXLimit_P3, UpperXLimit_P3);
+      t3->GetYaxis()->SetRangeUser(-400,400);
+      
+      auto f3 = new TF1("f3","[0]*x+[1]",-200,200);
+      f3->SetParameters(Track_a_P3,Track_b_P3);
+      
+      double YLine1_P3 = f3->Eval(LowerXLimit_P3);
+      double YLine2_P3 = f3->Eval(UpperXLimit_P3);
+      
+      TLine *l3=new TLine(LowerXLimit_P3,YLine1_P3,UpperXLimit_P3,YLine2_P3);
+      l3->SetLineColor(kBlue);
+      l3->SetLineWidth(2);
+      l3->Draw("SAME");
+      
+
+    }// end of for loop
+ 
+  
+}
+
+
+
diff --git a/Projects/S034/macro/DriftChamber/ResolutionBDC.cxx b/Projects/S034/macro/DriftChamber/ResolutionBDC.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..bf0395002e1f8c09c18160c1c2ab7a96e9cad758
--- /dev/null
+++ b/Projects/S034/macro/DriftChamber/ResolutionBDC.cxx
@@ -0,0 +1,297 @@
+using namespace std;
+
+//#include "TSamuraiBDCPhysics.h"
+
+void ResolutionBDC(){
+
+  auto simufile = new TFile("root/simulation/SimulationResolutionBDCV2.root");
+  auto simutree = (TTree*) simufile->FindObjectAny("SimulatedTree");
+  
+  auto anafile = new TFile("root/analysis/AnalysisResolutionBDCV2.root");
+  auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree");
+
+  simutree->AddFriend(anatree);
+
+  TH1 *hResolutionX_BDC1 = new TH1D("hResolutionX_BDC1", "hResolutionX_BDC1",100, -0.2,0.2);
+  TH1 *hResolutionY_BDC1 = new TH1D("hResolutionY_BDC1", "hResolutionY_BDC1",100, -0.2,0.2);
+  
+  TH1 *hResolutionX_BDC2 = new TH1D("hResolutionX_BDC2", "hResolutionX_BDC2",100, -0.2,0.2);
+  TH1 *hResolutionY_BDC2 = new TH1D("hResolutionY_BDC2", "hResolutionY_BDC2",100, -0.2,0.2);
+
+  double X_Beam, Y_Beam, Z_Beam;
+  X_Beam = 0.0;
+  Y_Beam = 0.0;
+  Z_Beam = -7000; //mm
+  
+  vector<double> *PosInWireX = new vector <double>();
+  vector<double> *PosInWireY = new vector <double>();
+  vector<double> *PosInWireZ = new vector <double>();
+  
+  simutree->SetBranchAddress("PosInWireX",&PosInWireX);
+  simutree->SetBranchAddress("PosInWireY",&PosInWireY);
+  simutree->SetBranchAddress("PosInWireZ",&PosInWireZ);
+
+  auto SamuraiBDC = new TSamuraiBDCData();
+  simutree->SetBranchAddress("SamuraiBDC", &SamuraiBDC);
+
+  auto PhysicsBDC = new TSamuraiBDCPhysics();
+  anatree->SetBranchAddress("SamuraiBDC", &PhysicsBDC);
+  
+  //Position calculated in PhysicsSamuraiBDC.cxx
+  double PosX_calc_BDC1,PosY_calc_BDC1,PosZ_calc_BDC1;
+  double PosX_calc_BDC2,PosY_calc_BDC2,PosZ_calc_BDC2;
+
+  TVector3 Pos_calc_BDC1;
+  TVector3 Pos_calc_BDC2;
+  
+  // Two points on the particle track( to calculate the expected value)
+  double PointA_X_BDC1, PointA_Y_BDC1, PointA_Z_BDC1;
+  double PointB_X_BDC1, PointB_Y_BDC1, PointB_Z_BDC1;
+  
+  double PointA_X_BDC2, PointA_Y_BDC2, PointA_Z_BDC2;
+  double PointB_X_BDC2, PointB_Y_BDC2, PointB_Z_BDC2;
+
+  // True position in simulation
+  double PosX_simu_BDC1, PosY_simu_BDC1, PosZ_simu_BDC1;
+  double PosX_simu_BDC2, PosY_simu_BDC2, PosZ_simu_BDC2;
+
+  double Diff_X_BDC1, Diff_Y_BDC1, Radius_BDC1;
+  double Diff_X_BDC2, Diff_Y_BDC2, Radius_BDC2;
+
+  double Theta_XZ_BDC1, Theta_YZ_BDC1;
+  double Theta_XZ_BDC2, Theta_YZ_BDC2;
+  
+  int PileUp_BDC1;
+  int PileUp_BDC2;
+  
+  ///////// Ouput ////////////
+
+  auto *outFile = new TFile("./root/resolution/ResolutionBDC.root","RECREATE");
+  TTree *outTree = new TTree("OutTree", "OutTree");
+
+  outTree->Branch("PosX_calc_BDC1",&PosX_calc_BDC1);
+  outTree->Branch("PosY_calc_BDC1",&PosY_calc_BDC1);
+  outTree->Branch("PosZ_calc_BDC1",&PosZ_calc_BDC1);
+
+  outTree->Branch("PosX_calc_BDC2",&PosX_calc_BDC2);
+  outTree->Branch("PosY_calc_BDC2",&PosY_calc_BDC2);
+  outTree->Branch("PosZ_calc_BDC2",&PosZ_calc_BDC2);
+
+  outTree->Branch("PosX_simu_BDC1",&PosX_simu_BDC1);
+  outTree->Branch("PosY_simu_BDC1",&PosY_simu_BDC1);
+  outTree->Branch("PosZ_simu_BDC1",&PosZ_simu_BDC1);
+
+  outTree->Branch("PosX_simu_BDC2",&PosX_simu_BDC2);
+  outTree->Branch("PosY_simu_BDC2",&PosY_simu_BDC2);
+  outTree->Branch("PosZ_simu_BDC2",&PosZ_simu_BDC2);
+  
+  outTree->Branch("Diff_X_BDC1",&Diff_X_BDC1);
+  outTree->Branch("Diff_Y_BDC1",&Diff_Y_BDC1);
+
+  outTree->Branch("Diff_X_BDC2",&Diff_X_BDC2);
+  outTree->Branch("Diff_Y_BDC2",&Diff_Y_BDC2);
+  
+  outTree->Branch("Radius_BDC1",&Radius_BDC1);
+  outTree->Branch("Radius_BDC2",&Radius_BDC2);
+  
+  outTree->Branch("Theta_XZ_BDC1", &Theta_XZ_BDC1);
+  outTree->Branch("Theta_YZ_BDC1", &Theta_YZ_BDC1);
+
+  outTree->Branch("Theta_XZ_BDC2", &Theta_XZ_BDC2);
+  outTree->Branch("Theta_YZ_BDC2", &Theta_YZ_BDC2);
+  
+  outTree->Branch("PileUp_BDC1", &PileUp_BDC1);
+  outTree->Branch("PileUp_BDC2", &PileUp_BDC2);
+
+  //////// Resolution calculation //////
+  unsigned int TreeEntries = simutree->GetEntries();
+
+  for(unsigned int i = 0; i < TreeEntries; i++)
+    {
+      Diff_X_BDC1 = -10000;
+      Diff_Y_BDC1 = -10000;
+
+      Diff_X_BDC2 = -10000;
+      Diff_Y_BDC2 = -10000;
+
+      PosX_calc_BDC1 = PosY_calc_BDC1 = PosZ_calc_BDC1 = -10000;
+      PosX_calc_BDC2 = PosY_calc_BDC2 = PosZ_calc_BDC2 = -10000;
+
+      PosX_simu_BDC1 = PosY_simu_BDC1 = PosZ_simu_BDC1 = -10000;
+      PosX_simu_BDC2 = PosY_simu_BDC2 = PosZ_simu_BDC2 = -10000;
+      
+      PointA_X_BDC1 = PointA_Y_BDC1 = PointA_Z_BDC1 = PointB_X_BDC1 = PointB_Y_BDC1 = PointB_Z_BDC1 = -10000;
+      PointA_X_BDC2 = PointA_Y_BDC2 = PointA_Z_BDC2 = PointB_X_BDC2 = PointB_Y_BDC2 = PointB_Z_BDC2 = -10000;
+
+      PileUp_BDC1 = PileUp_BDC2 = -10000;
+
+      
+      simutree->GetEntry(i);
+
+      unsigned int VectorEntries = SamuraiBDC->Mult();
+
+      Pos_calc_BDC1 = PhysicsBDC->GetPos(1);
+      
+      PosX_calc_BDC1 = Pos_calc_BDC1[0];
+      PosY_calc_BDC1 = Pos_calc_BDC1[1];
+      PosZ_calc_BDC1 = Pos_calc_BDC1[2];
+
+      Pos_calc_BDC2 = PhysicsBDC->GetPos(2);
+
+      PosX_calc_BDC2 = Pos_calc_BDC2[0];
+      PosY_calc_BDC2 = Pos_calc_BDC2[1];
+      PosZ_calc_BDC2 = Pos_calc_BDC2[2];
+
+      PileUp_BDC1 = PhysicsBDC->GetPileUp(0);
+      PileUp_BDC2 = PhysicsBDC->GetPileUp(1);
+      
+      for ( unsigned int j = 0; j < VectorEntries ; j++)
+	{
+	  if(SamuraiBDC->GetEdge(j)==1 && SamuraiBDC->GetDetectorNbr(j)==1 && (PointB_Z_BDC1 < PosZ_calc_BDC1))
+	    {
+	      PointA_X_BDC1 = PointB_X_BDC1;
+	      PointA_Y_BDC1 = PointB_Y_BDC1;
+	      PointA_Z_BDC1 = PointB_Z_BDC1;
+
+	      PointB_X_BDC1 = PosInWireX->at(j);
+	      PointB_Y_BDC1 = PosInWireY->at(j);
+	      PointB_Z_BDC1 = PosInWireZ->at(j);
+
+	      // cout << PosInWireX->at(j) << endl;
+	      // cout << PosInWireY->at(j) << endl;
+	      // cout << PosInWireZ->at(j) << endl;
+	      // cout << endl;
+	    }
+
+	  if(SamuraiBDC->GetEdge(j)==1 && SamuraiBDC->GetDetectorNbr(j)==2 && (PointB_Z_BDC2 < PosZ_calc_BDC2))
+	    {
+	      PointA_X_BDC2 = PointB_X_BDC2;
+	      PointA_Y_BDC2 = PointB_Y_BDC2;
+	      PointA_Z_BDC2 = PointB_Z_BDC2;
+
+	      PointB_X_BDC2 = PosInWireX->at(j);
+	      PointB_Y_BDC2 = PosInWireY->at(j);
+	      PointB_Z_BDC2 = PosInWireZ->at(j);
+
+	      // cout << PosInWireX->at(j) << endl;
+	      // cout << PosInWireY->at(j) << endl;
+	      // cout << PosInWireZ->at(j) << endl;
+	      // cout << endl;
+	    }
+	  
+
+	  
+	  else if(SamuraiBDC->GetEdge(j)==0)
+	    continue;
+
+	  // else
+	  //   {
+	  //     cout << SamuraiBDC->GetDetectorNbr(j) << endl;
+	  //     cout << SamuraiBDC->GetEdge(j) << endl;
+	  //     cout << "ERROR: edge value must be equal to 1 or 0, check the simulated tree" << endl;
+	  //     exit(1);
+	  //   }
+
+	  if(PointB_Z_BDC1 > PosZ_calc_BDC1 && PointB_Z_BDC2 > PosZ_calc_BDC2) {
+	  break;
+	  }
+	  
+   
+	}//end loop for j
+
+      //cout << endl;
+
+      TVector3 PointA_BDC1 (PointA_X_BDC1, PointA_Y_BDC1, PointA_Z_BDC1);
+      TVector3 PointB_BDC1 (PointB_X_BDC1, PointB_Y_BDC1, PointB_Z_BDC1);
+      
+      TVector3 Direct_BDC1;
+      Direct_BDC1 = PointB_BDC1 - PointA_BDC1;
+      
+      TVector3 Pos_simu_BDC1 = PointA_BDC1 + ((PosZ_calc_BDC1 - PointA_BDC1[2]) / Direct_BDC1[2])*Direct_BDC1; 
+      
+      PosX_simu_BDC1 = Pos_simu_BDC1[0];
+      PosY_simu_BDC1 = Pos_simu_BDC1[1];
+      PosZ_simu_BDC1 = Pos_simu_BDC1[2];
+
+      Diff_X_BDC1 = PosX_calc_BDC1 - PosX_simu_BDC1;
+      Diff_Y_BDC1 = PosY_calc_BDC1 - PosY_simu_BDC1;
+
+      Radius_BDC1 = sqrt(PosX_simu_BDC1*PosX_simu_BDC1 + PosY_simu_BDC1*PosY_simu_BDC1);
+
+      Theta_XZ_BDC1 = atan2(PosX_simu_BDC1 - X_Beam,PosZ_simu_BDC1 - Z_Beam)*180.0/TMath::Pi();
+      Theta_YZ_BDC1 = atan2( PosY_simu_BDC1 - Y_Beam,PosZ_simu_BDC1 - Z_Beam)*180.0/TMath::Pi();
+
+      
+      //cout << PosZ_simu_BDC1 << "   " << PosZ_calc_BDC1 << endl;
+      
+      
+      //cout << "calc X = " << PosX_simu_BDC1 << " simu = " << PosX_calc_BDC1 << endl;
+      // cout << "calc Y = " << PosY_simu_BDC1 << " simu = " << PosY_calc_BDC1 << endl;
+      if(PosZ_simu_BDC1 != -10000){
+      hResolutionX_BDC1->Fill(Diff_X_BDC1);
+      hResolutionY_BDC1->Fill(Diff_Y_BDC1);
+      }
+
+
+      
+
+      
+      TVector3 PointA_BDC2 (PointA_X_BDC2, PointA_Y_BDC2, PointA_Z_BDC2);
+      TVector3 PointB_BDC2 (PointB_X_BDC2, PointB_Y_BDC2, PointB_Z_BDC2);
+      
+      TVector3 Direct_BDC2;
+      Direct_BDC2 = PointB_BDC2 - PointA_BDC2;
+      
+      TVector3 Pos_simu_BDC2 = PointA_BDC2 + ((PosZ_calc_BDC2 - PointA_BDC2[2]) / Direct_BDC2[2])*Direct_BDC2; 
+      
+      PosX_simu_BDC2 = Pos_simu_BDC2[0];
+      PosY_simu_BDC2 = Pos_simu_BDC2[1];
+      PosZ_simu_BDC2 = Pos_simu_BDC2[2];
+
+      Diff_X_BDC2 = PosX_calc_BDC2 - PosX_simu_BDC2;
+      Diff_Y_BDC2 = PosY_calc_BDC2 - PosY_simu_BDC2;
+
+      Radius_BDC2 = sqrt(PosX_simu_BDC2*PosX_simu_BDC2 + PosY_simu_BDC2*PosY_simu_BDC2);
+
+      Theta_XZ_BDC2 = atan2(PosZ_simu_BDC2 - Z_Beam, PosX_simu_BDC2 - X_Beam)*180.0/TMath::Pi();
+      Theta_YZ_BDC2 = atan2(PosZ_simu_BDC2 - Z_Beam, PosY_simu_BDC2 - Y_Beam)*180.0/TMath::Pi();
+
+      if(PosZ_simu_BDC2 != -10000){
+      hResolutionX_BDC2->Fill(PosX_calc_BDC2-PosX_simu_BDC2);
+      hResolutionY_BDC2->Fill(PosY_calc_BDC2-PosY_simu_BDC2);
+      }
+
+
+      if(PosZ_simu_BDC2 == -10000 || PosX_simu_BDC2 == -10000 ||  PosY_simu_BDC2 == -10000) cout << " BDC2 -10000" << endl;
+
+      if(PosZ_simu_BDC1 == -10000 || PosX_simu_BDC1 == -10000 ||  PosY_simu_BDC1 == -10000) cout << " BDC1 -10000" << endl;
+
+      
+      outTree->Fill();
+    }//end loop i
+
+  outTree->AutoSave();
+  
+  cout << hResolutionX_BDC1->GetRMS() << endl;
+  cout << hResolutionY_BDC1->GetRMS() << endl;
+
+  cout << hResolutionX_BDC2->GetRMS() << endl;
+  cout << hResolutionY_BDC2->GetRMS() << endl;
+  
+  TCanvas *c1 = new TCanvas();
+  c1->Divide(2,2);
+  c1->cd(1);
+  hResolutionX_BDC1->Draw();
+
+  c1->cd(2);
+  hResolutionY_BDC1->Draw();
+
+  c1->cd(3);
+  hResolutionX_BDC2->Draw();
+
+  c1->cd(4);
+  hResolutionY_BDC2->Draw();
+  
+  
+
+}
diff --git a/Projects/S034/macro/DriftChamber/ResolutionFDC0.cxx b/Projects/S034/macro/DriftChamber/ResolutionFDC0.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..112ba05d9d9eb9ca24e6674185d4d32e7cf6b7a9
--- /dev/null
+++ b/Projects/S034/macro/DriftChamber/ResolutionFDC0.cxx
@@ -0,0 +1,186 @@
+using namespace std;
+
+
+void ResolutionFDC0(){
+
+  ///////////// Input /////////////
+  // Get data from simulation and experimental data trees
+  auto simufile = new TFile("root/simulation/SimulationResolutionFDC0V2.root");
+  //auto simufile = new TFile("root/simulation/SimuWhtDriftMinos.root");
+  auto simutree = (TTree*) simufile->FindObjectAny("SimulatedTree");
+  
+  auto anafile = new TFile("root/analysis/AnalysisResolutionFDC0V2.root");
+  //auto anafile = new TFile("root/analysis/SimuWhtDriftMinos.root");
+  auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree");
+
+  simutree->AddFriend(anatree);
+
+  TH1 *hResolutionX = new TH1D("hResolutionX", "hResolutionX",200, -0.05,0.05);
+  TH1 *hResolutionY = new TH1D("hResolutionY", "hResolutionY",200, -0.05,0.05);
+
+  double X_Beam, Y_Beam, Z_Beam;
+  X_Beam = 0.0;
+  Y_Beam = 0.0;
+  Z_Beam = -7000; //mm
+  
+  vector<double> *PosInWireX = new vector <double>();
+  vector<double> *PosInWireY = new vector <double>();
+  vector<double> *PosInWireZ = new vector <double>();
+  
+  simutree->SetBranchAddress("PosInWireX",&PosInWireX); //Position for each wire 
+  simutree->SetBranchAddress("PosInWireY",&PosInWireY);
+  simutree->SetBranchAddress("PosInWireZ",&PosInWireZ);
+
+  auto SamuraiFDC0 = new TSamuraiFDC0Data();
+  simutree->SetBranchAddress("SamuraiFDC0", &SamuraiFDC0);
+
+  auto PhysicsFDC0 = new TSamuraiFDC0Physics();
+  anatree->SetBranchAddress("SamuraiFDC0", &PhysicsFDC0);
+
+  double PosX_calc, PosY_calc, PosZ;//Position calculated in PhysicsSamuraiFDC0.cxx
+
+  // Two points on the particle track( to calculate the expected value)
+  double PointA_X, PointA_Y, PointA_Z;
+  double PointB_X, PointB_Y, PointB_Z;
+
+  // True position in simulation
+  double PosX_simu, PosY_simu, PosZ_simu;
+
+  double Diff_X, Diff_Y, Radius;
+
+  double Theta_XZ, Theta_YZ;
+
+  int PileUp, Mult;
+  ///////// Ouput ////////////
+
+  auto *outFile = new TFile("./root/resolution/ResolutionFDC0.root","RECREATE");
+  TTree *outTree = new TTree("OutTree", "OutTree");
+
+  outTree->Branch("PosX_calc",&PosX_calc);
+  outTree->Branch("PosY_calc",&PosY_calc);
+  outTree->Branch("PosZ_calc",&PosZ);
+
+  outTree->Branch("PosX_simu",&PosX_simu);
+  outTree->Branch("PosY_simu",&PosY_simu);
+  outTree->Branch("PosZ_simu",&PosZ_simu);
+
+  outTree->Branch("Diff_X",&Diff_X);
+  outTree->Branch("Diff_Y",&Diff_Y);
+
+  outTree->Branch("Radius",&Radius);
+
+  outTree->Branch("Theta_XZ", &Theta_XZ);
+  outTree->Branch("Theta_YZ", &Theta_YZ);
+
+  outTree->Branch("PileUp", &PileUp);
+  outTree->Branch("Mult", &Mult);
+  
+  //////// Resolution calculation //////
+		  
+  
+  unsigned int TreeEntries = anatree->GetEntries();
+
+  for( unsigned int i = 0; i < TreeEntries; i++)
+    {
+      Diff_X = -10000;
+      Diff_Y = -10000;
+      
+      PosX_simu = PosY_simu = PosZ_simu = -10000;
+      PosX_calc = PosY_calc = PosZ = -10000;
+      
+      PointA_X = PointA_Y = PointA_Z = PointB_X = PointB_Y = PointB_Z = -10000;
+
+      PileUp = Mult = -10000;
+
+      simutree->GetEntry(i);
+      
+      unsigned int VectorEntries = SamuraiFDC0->Mult(); 
+      PosX_calc = PhysicsFDC0->GetPosX(); // position obtained from reconstruction
+      //cout << PosX_calc << endl;
+      PosY_calc = PhysicsFDC0->GetPosY();
+      PosZ = PhysicsFDC0->GetPosZ();
+     
+      PileUp = PhysicsFDC0->GetPileUp();
+      Mult = PhysicsFDC0->GetMult();
+      for ( unsigned int j = 0; j < VectorEntries ; j++)
+	{
+	  if(SamuraiFDC0->GetEdge(j)==1)
+	    {
+	      PointA_X = PointB_X;
+	      PointA_Y = PointB_Y;
+	      PointA_Z = PointB_Z;
+
+	      PointB_X = PosInWireX->at(j);
+	      PointB_Y = PosInWireY->at(j);
+	      PointB_Z = PosInWireZ->at(j);	      
+	    }
+
+	  else if( SamuraiFDC0->GetEdge(j)==0)
+	    continue;
+
+	  else
+	    {
+	      cout << "ERROR: edge value must be equal to 1 or 0, check the simulated tree" << endl;
+	      exit(1);
+	    }
+
+	  if(PointB_Z > PosZ) {
+	    break;
+	  }
+	  
+   
+	}//end loop for j
+
+      //cout << endl;
+
+      TVector3 PointA (PointA_X, PointA_Y, PointA_Z);
+      TVector3 PointB (PointB_X, PointB_Y, PointB_Z);
+      
+      TVector3 Direct;
+      Direct = PointB - PointA;
+      
+      TVector3 Pos_simu = PointA + ((PosZ - PointA[2]) / Direct[2])*Direct; 
+      
+      PosX_simu = Pos_simu[0];
+      PosY_simu = Pos_simu[1];
+      PosZ_simu = Pos_simu[2];
+
+      Diff_X = PosX_calc - PosX_simu;
+      Diff_Y = PosY_calc - PosY_simu;
+
+      cout << PosX_simu << "    " << PosX_calc << "   " << PosY_simu << "    " <<  PosY_calc << endl;
+      cout << endl;
+
+      Radius = sqrt(PosX_simu*PosX_simu + PosY_simu*PosY_simu);
+
+      Theta_XZ = atan2(PosZ_simu - Z_Beam, PosX_simu - X_Beam)*180.0/TMath::Pi();
+      Theta_YZ = atan2(PosZ_simu - Z_Beam, PosY_simu - Y_Beam)*180.0/TMath::Pi();
+
+      if(PosX_simu!= -10000 && PosY_simu!= -10000 && PosZ_simu != -10000 && PosX_calc!= -10000 && PosY_calc!= -10000 && PosZ!= -10000){
+      hResolutionX->Fill(Diff_X);
+      hResolutionY->Fill(Diff_Y);
+      }
+
+      outTree->Fill();
+	
+    }//end loop i
+
+  outTree->AutoSave();
+  
+  cout << hResolutionX->GetRMS() << endl;
+  cout << hResolutionY->GetRMS() << endl;
+
+  // double rootMeanSquare1 = std::sqrt( hResolutionX->GetMean()*hResolutionX->GetMean() + hResolutionX->GetRMS()*hResolutionX->GetRMS() );
+ 
+  
+  TCanvas *c1 = new TCanvas();
+  c1->Divide(1,2);
+  c1->cd(1);
+  hResolutionX->Draw();
+
+  c1->cd(2);
+  hResolutionY->Draw();
+  
+  
+
+}
diff --git a/Projects/S034/macro/DriftChamber/ResolutionFDC2.cxx b/Projects/S034/macro/DriftChamber/ResolutionFDC2.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..68ba7aa18466804b848612dcc0e5666da82f4feb
--- /dev/null
+++ b/Projects/S034/macro/DriftChamber/ResolutionFDC2.cxx
@@ -0,0 +1,183 @@
+using namespace std;
+
+
+void ResolutionFDC2(){
+
+  ///////////// Input /////////////
+  // Get data from simulation and experimental data trees
+  auto simufile = new TFile("root/simulation/SimulationResolutionFDC2V2.root");
+  auto simutree = (TTree*) simufile->FindObjectAny("SimulatedTree");
+  
+  auto anafile = new TFile("root/analysis/AnalysisResolutionFDC2V2.root");
+  auto anatree = (TTree*) anafile->FindObjectAny("PhysicsTree");
+
+  simutree->AddFriend(anatree);
+
+  TH1 *hResolutionX = new TH1D("hResolutionX", "hResolutionX",200, -0.05,0.05);
+  TH1 *hResolutionY = new TH1D("hResolutionY", "hResolutionY",200, -0.05,0.05);
+
+  double X_Beam, Y_Beam, Z_Beam;
+  X_Beam = 0.0;
+  Y_Beam = 0.0;
+  Z_Beam = -7000; //mm
+  
+  vector<double> *PosInWireX = new vector <double>();
+  vector<double> *PosInWireY = new vector <double>();
+  vector<double> *PosInWireZ = new vector <double>();
+  
+  simutree->SetBranchAddress("PosInWireX",&PosInWireX); //Position for each wire 
+  simutree->SetBranchAddress("PosInWireY",&PosInWireY);
+  simutree->SetBranchAddress("PosInWireZ",&PosInWireZ);
+
+  auto SamuraiFDC2 = new TSamuraiFDC2Data();
+  simutree->SetBranchAddress("SamuraiFDC2", &SamuraiFDC2);
+
+  auto PhysicsFDC2 = new TSamuraiFDC2Physics();
+  anatree->SetBranchAddress("SamuraiFDC2", &PhysicsFDC2);
+
+  double PosX_calc, PosY_calc, PosZ;//Position calculated in PhysicsSamuraiFDC2.cxx
+
+  // Two points on the particle track( to calculate the expected value)
+  double PointA_X, PointA_Y, PointA_Z;
+  double PointB_X, PointB_Y, PointB_Z;
+
+  // True position in simulation
+  double PosX_simu, PosY_simu, PosZ_simu;
+
+  double Diff_X, Diff_Y, Radius;
+
+  double Theta_XZ, Theta_YZ;
+
+  int PileUp;
+  ///////// Ouput ////////////
+
+  auto *outFile = new TFile("./root/resolution/ResolutionFDC2.root","RECREATE");
+  TTree *outTree = new TTree("OutTree", "OutTree");
+
+  outTree->Branch("PosX_calc",&PosX_calc);
+  outTree->Branch("PosY_calc",&PosY_calc);
+  outTree->Branch("PosZ_calc",&PosZ);
+
+  outTree->Branch("PosX_simu",&PosX_simu);
+  outTree->Branch("PosY_simu",&PosY_simu);
+  outTree->Branch("PosZ_simu",&PosZ_simu);
+
+  outTree->Branch("Diff_X",&Diff_X);
+  outTree->Branch("Diff_Y",&Diff_Y);
+
+  outTree->Branch("Radius",&Radius);
+
+  outTree->Branch("Theta_XZ", &Theta_XZ);
+  outTree->Branch("Theta_YZ", &Theta_YZ);
+
+  outTree->Branch("PileUp", &PileUp);
+  
+  //////// Resolution calculation //////
+		  
+  
+  unsigned int TreeEntries = simutree->GetEntries();
+
+  for( unsigned int i = 0; i < TreeEntries; i++)
+    {
+      //Clear();
+      Diff_X = -10000;
+      Diff_Y = -10000;
+      
+      PosX_simu = PosY_simu = PosZ_simu = -10000;
+      PosX_calc = PosY_calc = PosZ = -10000;
+      
+      PointA_X = PointA_Y = PointA_Z = PointB_X = PointB_Y = PointB_Z = -10000;
+
+      PileUp = -10000;
+
+      simutree->GetEntry(i);
+      
+      unsigned int VectorEntries = SamuraiFDC2->Mult(); 
+      PosX_calc = PhysicsFDC2->GetPosX(); // position obtained from reconstruction
+      //cout << PosX_calc << endl;
+      PosY_calc = PhysicsFDC2->GetPosY();
+      PosZ = PhysicsFDC2->GetPosZ();
+
+      PileUp = PhysicsFDC2->GetPileUp();
+     
+      
+      for ( unsigned int j = 0; j < VectorEntries ; j++)
+	{
+	  if(SamuraiFDC2->GetEdge(j)==1)
+	    {
+	      PointA_X = PointB_X;
+	      PointA_Y = PointB_Y;
+	      PointA_Z = PointB_Z;
+
+	      PointB_X = PosInWireX->at(j);
+	      PointB_Y = PosInWireY->at(j);
+	      PointB_Z = PosInWireZ->at(j);	      
+	    }
+
+	  else if( SamuraiFDC2->GetEdge(j)==0)
+	    continue;
+
+	  else
+	    {
+	      cout << "ERROR: edge value must be equal to 1 or 0, check the simulated tree" << endl;
+	      exit(1);
+	    }
+
+	  if(PointB_Z > PosZ) {
+	    break;
+	  }
+	  
+   
+	}//end loop for j
+
+      //cout << endl;
+
+      TVector3 PointA (PointA_X, PointA_Y, PointA_Z);
+      TVector3 PointB (PointB_X, PointB_Y, PointB_Z);
+      
+      TVector3 Direct;
+      Direct = PointB - PointA;
+      
+      TVector3 Pos_simu = PointA + ((PosZ - PointA[2]) / Direct[2])*Direct; 
+      
+      PosX_simu = Pos_simu[0];
+      PosY_simu = Pos_simu[1];
+      PosZ_simu = Pos_simu[2];
+
+      Diff_X = PosX_calc - PosX_simu;
+      Diff_Y = PosY_calc - PosY_simu;
+
+      Radius = sqrt(PosX_simu*PosX_simu + PosY_simu*PosY_simu);
+
+      Theta_XZ = atan2(PosZ_simu - Z_Beam, PosX_simu - X_Beam)*180.0/TMath::Pi();
+     
+      Theta_YZ = atan2(PosZ_simu - Z_Beam, PosY_simu - Y_Beam)*180.0/3.14159;
+
+      if(PosX_simu!= -10000 && PosY_simu!= -10000 && PosZ_simu != -10000 && PosX_calc!= -10000 && PosY_calc!= -10000 && PosZ!= -10000){
+      hResolutionX->Fill(Diff_X);
+      hResolutionY->Fill(Diff_Y);
+      }
+
+      outTree->Fill();
+	
+    }//end loop i
+
+  outTree->AutoSave();
+  
+  cout << hResolutionX->GetRMS() << endl;
+  cout << hResolutionY->GetRMS() << endl;
+
+  // double rootMeanSquare1 = std::sqrt( hResolutionX->GetMean()*hResolutionX->GetMean() + hResolutionX->GetRMS()*hResolutionX->GetRMS() );
+ 
+  
+  TCanvas *c1 = new TCanvas();
+  c1->Divide(1,2);
+  c1->cd(1);
+  hResolutionX->Draw();
+
+  c1->cd(2);
+  hResolutionY->Draw();
+  
+  
+
+}
diff --git a/Projects/S034/macro/testB2.cxx b/Projects/S034/macro/testB2.cxx
index 869abd3461c5d895ae4cfe2d48aa6929dadbb89f..ca9b10532ff4f624554365a175d43ace894b8f7a 100644
--- a/Projects/S034/macro/testB2.cxx
+++ b/Projects/S034/macro/testB2.cxx
@@ -11,36 +11,22 @@ void testB2(){
   //auto h=new TH1D("dB","dB",1000,-2e-1,2e-1); 
  //  new TCanvas();
   auto h=new TH1D("dB","dB",1000,-0.1,0.1); 
-  auto hX=new TH2D("dBX","dBX",500,-100,100,500,-0.01,0.01); 
-  auto hY=new TH2D("dBY","dBY",500,-100,100,500,-0.01,0.01); 
   double r = gRandom->Uniform(-1,1);
-
   for(unsigned int i = 0 ; i < 100 ; i++){
-    double X = gRandom->Uniform(-100,100);
-    double Y = gRandom->Uniform(-100,100);
-    TVector3 p(X,Y,-3500); 
-    //TVector3 d(gRandom->Uniform(-0.05,0.05),gRandom->Uniform(-0.05,0.05),1); 
+    TVector3 p(gRandom->Uniform(-5,5),gRandom->Uniform(-5,5),-3500); 
+    TVector3 d(gRandom->Uniform(-0.05,0.05),gRandom->Uniform(-0.05,0.05),1); 
  //
   //TVector3 p(0,0,-3500); 
-  TVector3 d(0,0,1); 
+  //TVector3 d(0,0,1); 
   double b = gRandom->Uniform(3,7);
   std::vector< TVector3 > track = field.Propagate(b,p,d,false);
   // rotate from lab angle to FDC2 frame
   track.back().RotateY(-fdc2angle+angle);
   double br=field.FindBrho(p,d,track.back(),d);
-  //double pc = 100*(br-b)/b;
-
-  double pc = br-b;
-//  cout <<"  " <<  100*(br-b)/b  << " " << br << " " << b << endl;
+  double pc = 100*(br-b)/b;
+  cout <<"  " <<  100*(br-b)/b  << " " << br << " " << b << endl;
   h->Fill(pc);
-  hX->Fill(X,pc);
-  hY->Fill(Y,pc);
   }
   
   h->Draw();
-  new TCanvas();
-  hX->Draw("colz");
-  new TCanvas();
-  hY->Draw("colz");
-
 } 
diff --git a/Projects/S034/minos_dali.detector b/Projects/S034/minos_dali.detector
deleted file mode 100644
index facf9c4bf9b2214d7b5d8f632d1581143b53ee3d..0000000000000000000000000000000000000000
--- a/Projects/S034/minos_dali.detector
+++ /dev/null
@@ -1,95 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Minos
- Position= 0 0 0  mm
- ZRotation= 40.6 deg
- TargetZOffset= 0 mm
- ZOffset= -4650
- TargetLength= 151.72 mm
- TargetMaterial= LH2 
- CellMaterial= Mylar 
- TPCOnly= 0 
- TimeBin= 30 ns
- ShapingTime= 333.9 ns
- BaseLine= 250
- Sampling= 10
- XML= db/MINOS.xml
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm 
- Alpha = 240 deg
- Zeta = 298.28 mm 
- Ring = 1
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm 
- Alpha = 180 deg 
- Zeta = 298.28 mm
- Ring = 1
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R= 212.4 mm 
- Alpha = 120 deg 
- Zeta = 298.28 mm 
- Ring = 1
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm 
- Alpha = 60 deg 
- Zeta = 298.28 mm
- Ring = 1
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm
- Alpha = 0 deg 
- Zeta = 298.28 mm
- Ring = 1
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm 
- Alpha = -60 deg 
- Zeta = 298.28 mm
- Ring = 1
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm
- Alpha = 240 deg 
- Zeta = 469.28 mm 
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm 
- Alpha = 180 deg 
- Zeta = 469.28 mm
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm 
- Alpha = 120 deg 
- Zeta = 469.28 mm
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm 
- Alpha = 60 deg 
- Zeta = 469.28 mm 
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm 
- Alpha = 0 deg 
- Zeta = 469.28 mm 
- Material = NaI(Tl)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Dali
- R = 212.4 mm 
- Alpha = -60 deg 
- Zeta = 469.28 mm 
- Material = NaI(Tl)
-%
diff --git a/Projects/S034/project.config b/Projects/S034/project.config
index e8be9bccc2eb124582440ec482794507de529ba5..850d419b82e08e6ff55ad10fa47063b6b9afd468 100644
--- a/Projects/S034/project.config
+++ b/Projects/S034/project.config
@@ -1,4 +1,4 @@
-Project FDC2
+Project S034
  AnalysisOutput= ./root/analysis
  SimulationOutput= ./root/simulation
  EnergyLoss= ./energy_loss
diff --git a/Projects/S034/reaction/He8.beam b/Projects/S034/reaction/He8.beam
new file mode 100755
index 0000000000000000000000000000000000000000..5ff8a12c3233f59d695a0617eaf235b3df21ee09
--- /dev/null
+++ b/Projects/S034/reaction/He8.beam
@@ -0,0 +1,20 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Beam
+  Particle= 8He
+  %Energy= 600 MeV
+  %Energy= 1248 MeV
+  %SigmaEnergy= 2.986 MeV
+  %SigmaThetaX= 0.4791 deg
+  %SigmaPhiY= 0.5433 deg
+  %SigmaX= 15.43 mm
+  %SigmaY= 18.17 mm
+  %MeanThetaX= -0.04855 deg
+  %MeanPhiY= 0.009168 deg
+  %MeanX= 1.361 mm
+  %MeanY= 1.288 mm
+  EnergyProfilePath= /local/anne/nptool/Projects/S034_audrey/beam/hBeamEnergy.root hBeamEnergy
+  XThetaXProfilePath= ./beam/hBeamXThetaX.root hBeamXThetaX
+  YPhiYProfilePath= ./beam/hBeamYThetaY.root hBeamYThetaY
+  ZProfile = -6876.34 mm
+  ZEmission= -7000 mm
+
diff --git a/Projects/S034/reaction/He8_pp.reaction b/Projects/S034/reaction/He8_pp.reaction
new file mode 100755
index 0000000000000000000000000000000000000000..ceaa236a2c1db45f203bb00756a93d8290e8d8b1
--- /dev/null
+++ b/Projects/S034/reaction/He8_pp.reaction
@@ -0,0 +1,61 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Beam
+  Particle= 8He
+  %Energy= 1248 MeV
+  %SigmaEnergy= 0.1 MeV
+  %SigmaThetaX= 0.1 deg
+  %SigmaPhiY= 0.1 deg
+  %SigmaX= 0 mm
+  %SigmaY= 0 mm
+  %MeanThetaX= 0.0 deg
+  %MeanPhiY= 0.0 deg
+  %MeanX= 0 mm
+  %MeanY= 0 mm
+  EnergyProfilePath= ./beam/hBeamEnergy.root hBeamEnergy
+  XThetaXProfilePath= ./beam/hBeamXThetaX.root hBeamXThetaX
+  YPhiYProfilePath= ./beam/hBeamYThetaY.root hBeamYThetaY
+  ZEmission= -7000 mm
+  
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% This is useful to redefine the reference mass of resonnance
+%% without this block the g.s. of the system is taken as the 
+%% first resonant state in nutab
+%DefineParticle 8He
+ SubPart= 4He n n n n
+ BindingEnergy= 0 MeV
+  
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+TwoBodyReaction
+ Beam= 8He
+ Target= 1H
+ Light= 1H
+ Heavy= 8He
+ ExcitationEnergyLight= 0.0 MeV
+ ExcitationEnergyHeavy= 3.43 MeV
+ CrossSectionPath= reaction/flat.txt CSR
+ ShootLight= 1
+ ShootHeavy= 1
+ %UseExInGeant4= 1
+ 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Decay 8He
+ Daughter= 4He n n n n
+ ExcitationEnergy= 0 0 0 0 0 MeV
+ Threshold= 0 MeV
+ BranchingRatio= 1
+ LifeTime= 0 ns
+ Shoot= 1 1 1 1 1     
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
+%BreitWigner     
+ Energy0= 3.0 MeV             
+ Width0= 2.0 MeV
+ l= 1
+ Heavy= 8He
+ Light= 4He
+ NeutronNumber= 4
+ MultiplicateurAmplitude= 1.0 MeV
+ ShiftZero= 0 
+ WidthCst= 0                   
+                   
+                  
diff --git a/Projects/S034/reaction/pp.reaction b/Projects/S034/reaction/pp.reaction
index a2285aa84411bdc62bdfab71589d431b79a83482..297d7d0f6ff99ea0d40b5b1a2bf06c906017624a 100644
--- a/Projects/S034/reaction/pp.reaction
+++ b/Projects/S034/reaction/pp.reaction
@@ -18,6 +18,7 @@ Beam
  %EnergyProfilePath=
  %XThetaXProfilePath=
  %YPhiYProfilePath=
+ ZEmission= -5000 mm
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 TwoBodyReaction
  Beam= 1H
diff --git a/Projects/S034/root/analysis/.gitignore b/Projects/S034/root/analysis/.gitignore
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/Projects/S034/root/mrdc/.gitignore b/Projects/S034/root/mrdc/.gitignore
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/Projects/S034/root/simulation/.gitignore b/Projects/S034/root/simulation/.gitignore
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/Projects/Samurai/Samurai.detector b/Projects/Samurai/Samurai.detector
index 53e981171413777e66ca006fa8570d48c60a3baf..36be1abae5c616b00c812c2001202909b2b72d99 100644
--- a/Projects/Samurai/Samurai.detector
+++ b/Projects/Samurai/Samurai.detector
@@ -14,27 +14,27 @@ Samurai
  %
  METHOD= 1				
  % 0=RungeKutta, 1=EliaOmar
- FIELDMAP=3T.table.bin 
+ FIELDMAP= 3T.table.bin 
  %fieldmap/3T.table.bin 		
  % fieldmap path
  STEPS_PER_METER= 1000
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 SAMURAIFDC1
- %XML= db/SAMURAIFDC0_20200109.xml
+ XML= db/SAMURAIFDC0_20200109.xml
  %Offset= -0.00666226 0.102191 -3370.01 mm
  Offset= -0.00666226 0.102191 -4370.01 mm
- %InvertX= 1 
- %InvertY= 0
- %InvertD= 1
+ InvertX= 1 
+ InvertY= 0
+ InvertD= 1
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-SAMURAIFDC2
- %XML= db/SAMURAIFDC2.xml
- Offset= 1000 200 5000 mm
+%SAMURAIFDC2
+% XML= db/SAMURAIFDC2.xml
+% Offset= 1000 200 5000 mm
  OffAngle= 59.930 deg
- %-252.416 -0.228477 4122.57 mm
- %InvertX= 0 
- %InvertY= 1
- %InvertD= 1
+ Offset= -252.416 -0.228477 5000.57 mm
+ InvertX= 0 
+ InvertY= 1
+ InvertD= 1
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%