diff --git a/Inputs/EventGenerator/11Li.beam b/Inputs/EventGenerator/11Li.beam
index cd92cf20ee125da3baa228a1304b6f3f139cea6a..61a540b386fec099b7d953d4c41d687d115f6d1c 100644
--- a/Inputs/EventGenerator/11Li.beam
+++ b/Inputs/EventGenerator/11Li.beam
@@ -2,17 +2,17 @@
 %%%%%%%%% Reaction file for 11Li(d,3He)10He reaction %%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Beam
-  Particle= 10He
-  Energy= 553
+ Particle= 11Li
+ Energy= 553
  SigmaEnergy= 20
  SigmaThetaX= 0.6138
  SigmaPhiY= 0.3812
  SigmaX= 6.216
  SigmaY= 6.109
-  MeanThetaX= 0
-  MeanPhiY= 0
-  MeanX= 1.773
-  MeanY= -0.1375
-  %EnergyProfilePath=
-  %XThetaXProfilePath=
-  %YPhiYProfilePath=
+ MeanThetaX= 0
+ MeanPhiY= 0
+ MeanX= 1.773
+ MeanY= -0.1375
+ %EnergyProfilePath=
+ %XThetaXProfilePath=
+ %YPhiYProfilePath=
diff --git a/NPLib/Detectors/Minos/TMinosData.cxx b/NPLib/Detectors/Minos/TMinosData.cxx
index 03e795c65fc322626579936b71ef439cf5f7ab2d..d59dc0eaf7e9463ad8dbbb0f7979033d55642229 100644
--- a/NPLib/Detectors/Minos/TMinosData.cxx
+++ b/NPLib/Detectors/Minos/TMinosData.cxx
@@ -123,6 +123,16 @@ Z.clear();
 trackID.clear();
 parentID.clear();
 
+ //For take fitpar values
+MINOSx_0.clear();
+MINOSy_0.clear();
+MINOSz_0.clear();
+ MINOS_D_min.clear();
+ MINOS_Radius.clear();
+ MINOS_NumberTracks.clear();
+ theta0.clear();
+ phi0.clear();
+energy0.clear();
 
 
 
diff --git a/NPLib/Detectors/Minos/TMinosData.h b/NPLib/Detectors/Minos/TMinosData.h
index 01ba60dbd6feaa16db905c24c375fed468bfac54..b6773407bb8ce00bd757b8d5d97c7c5fc83ec0b4 100644
--- a/NPLib/Detectors/Minos/TMinosData.h
+++ b/NPLib/Detectors/Minos/TMinosData.h
@@ -68,7 +68,7 @@ vector<double> x0, y0, z0, theta0, phi0, energy0;
 vector<bool> detection;
 int event;
 */
-
+ vector<Double_t> MINOSx_0, MINOSy_0, MINOSz_0, MINOS_D_min, MINOS_Radius, MINOS_NumberTracks, theta0, phi0, energy0; //For take fitpar values
 
   //////////////////////////////////////////////////////////////
   // Constructor and destructor
@@ -111,6 +111,33 @@ int event;
     };//!
     //
 
+
+
+    //Setters for position vertex and obsv in experiment analysis
+
+    // Position
+    inline void SetVertexPos(const Double_t& x,const Double_t& y,const Double_t& z)	{
+      MINOSx_0.push_back(x);
+      MINOSy_0.push_back(y);
+      MINOSz_0.push_back(z);     
+    };//!
+
+// Min Distance
+    inline void SetD_min(const Double_t& dmin)     {
+      MINOS_D_min.push_back(dmin);
+    };//!
+
+
+
+
+
+
+
+
+
+
+    
+
     //////////////////////    GETTERS    ////////////////////////
     // Energy
     inline UShort_t GetMultEnergy() const
@@ -129,6 +156,20 @@ int event;
       {return fMinos_Time[i];}//!
 
 
+    // Position
+    inline Double_t GetVertexPos() const
+    {return MINOSz_0[0] ; }//!
+    inline Double_t GetVertexPosX() const
+    {return MINOSx_0[0] ; }//!
+    inline Double_t GetVertexPosY() const
+    {return MINOSy_0[0] ; }//!
+    inline Double_t GetVertexPosZ() const
+    {return MINOSz_0[0] ; }//!
+
+    // Min Distance
+    inline Double_t GetD_min() const
+    {return MINOS_D_min[0] ; }//!
+
   //////////////////////////////////////////////////////////////
   // Required for ROOT dictionnary
   ClassDef(TMinosData,1)  // MinosData structure
diff --git a/NPSimulation/Core/Chamber.cc b/NPSimulation/Core/Chamber.cc
index e5c39608f6a621394d243e39a4252b214e561485..8f1d79f1334b2e742c113fa44db7d492edbc8c30 100644
--- a/NPSimulation/Core/Chamber.cc
+++ b/NPSimulation/Core/Chamber.cc
@@ -2300,7 +2300,7 @@ void Chamber::InitializeRootOutput()
 {}
 
 // Read sensitive part and fill the Root tree.
-// Called at in the EventAction::EndOfEventAvtion
+// Called at in the EventAction::EndOfEventAction
 void Chamber::ReadSensitive(const G4Event*)
 {}
       
diff --git a/NPSimulation/Core/Target.cc b/NPSimulation/Core/Target.cc
index 1664079998d0a2680d6b13402e4f14398735febf..c11bb2fb2523aa1fabcf89eee6af23301541d49b 100644
--- a/NPSimulation/Core/Target.cc
+++ b/NPSimulation/Core/Target.cc
@@ -457,7 +457,7 @@ void Target::InitializeRootOutput()
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
-// Called at in the EventAction::EndOfEventAvtion
+// Called at in the EventAction::EndOfEventAction
 void Target::ReadSensitive(const G4Event*)
 {}
 
diff --git a/NPSimulation/Core/Target.hh b/NPSimulation/Core/Target.hh
index 8dee4b73c73ad951ab8e9932404287d6b8212d13..7f0b6e1e3a40b74aec6faa50a7d287e3615b9415 100644
--- a/NPSimulation/Core/Target.hh
+++ b/NPSimulation/Core/Target.hh
@@ -66,7 +66,7 @@ public:
   void InitializeRootOutput();
   
   //   Read sensitive part and fill the Root tree.
-  //   Called at in the EventAction::EndOfEventAvtion
+  //   Called at in the EventAction::EndOfEventAction
   void ReadSensitive(const G4Event* event);
   
 public:
diff --git a/NPSimulation/Detectors/Dali/Dali.cc b/NPSimulation/Detectors/Dali/Dali.cc
index 9edf97cc0a90f3bc12ac2c3831394eb3460cf458..f034fc081b4751e9ae19d852db59a3c7095070ec 100644
--- a/NPSimulation/Detectors/Dali/Dali.cc
+++ b/NPSimulation/Detectors/Dali/Dali.cc
@@ -1,18 +1,19 @@
 /*****************************************************************************
- * Copyright (C) 2009-2018   this file is part of the NPTool Project       *
+ * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
+ * Original Author: E. Tronchin                                              *
+ * contact address: elidiano.tronchin@studenti.unipd.it                      *
  *                                                                           *
  * Creation Date  : septembre 2018                                           *
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class describe  Dali simulation                             *
+ *  This class describe  Dali simulation                                     *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
@@ -23,9 +24,21 @@
 #include <sstream>
 #include <cmath>
 #include <limits>
+using namespace std;
+
 //G4 Geometry object
 #include "G4Tubs.hh"
 #include "G4Box.hh"
+#include "G4ExtrudedSolid.hh"
+#include "G4VSolid.hh"
+// #ifndef G4UEXTRUDEDSOLID_hh
+// #define G4UEXTRUDEDSOLID_hh
+// #include "G4USolid.hh"
+//  #if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
+
+//#include "G4UExtrudedSolid.hh"
+#include "G4TwoVector.hh"
+#include "G4TessellatedSolid.hh"
 
 //G4 sensitive
 #include "G4SDManager.hh"
@@ -52,13 +65,9 @@
 // CLHEP header
 #include "CLHEP/Random/RandGauss.h"
 
-using namespace std;
 using namespace CLHEP;
 
 
-
-
-
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 namespace Dali_NS{
   // Energy and time Resolution
@@ -69,6 +78,7 @@ namespace Dali_NS{
   const double Width = 49.76*mm ;
   const double Hight = 84.81*mm ;
   const double Thickness = 164.82*mm ;
+  const double LengthPMT = 152.62*mm ;
   const string Material = "NaI";   
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -86,8 +96,8 @@ Dali::Dali(){
   Logic_ArrayDali_1 =0;
   
   // RGB Color + Transparency
-  m_VisSquare = new G4VisAttributes(G4Colour(0, 1, 0, 0.5));   
-  m_VisCylinder = new G4VisAttributes(G4Colour(0, 0, 1, 0.5));   
+  m_VisSquare = new G4VisAttributes(G4Colour(0, 1, 1, 0.3));   
+  m_VisCylinder = new G4VisAttributes(G4Colour(0, 0, 1, 0.3));   
 
 }
 
@@ -166,23 +176,62 @@ G4LogicalVolume* Dali::BuildSquareDetector(){
 
 
 
-
-
-    
     G4Box* box_3can = new G4Box("Dali_3BoxCan", Dali_NS::Hight*0.5,
-                                Dali_NS::Width*0.5*3, Dali_NS::Thickness*0.5);
+                                Dali_NS::Width*0.5*3, Dali_NS::Thickness*0.5 + Dali_NS::LengthPMT/2.+11.5/2.*mm /*last part is PMTVolume*/ );
     G4Material* Aria = MaterialManager::getInstance()->GetMaterialFromLibrary("Air");
     Logic_ArrayDali_1 = new G4LogicalVolume(box_3can,Aria,"logic_ArrayDali",0,0,0);
- 
+
+    Logic_ArrayDali_1->SetVisAttributes(G4VisAttributes(G4Colour(1,1,1, 0.01)));
 
     
     G4Box* box_can = new G4Box("Dali_BoxCan", Dali_NS::Hight*0.5,
                                Dali_NS::Width*0.5, Dali_NS::Thickness*0.5);
+
+    G4Box* box_canandPMT = new G4Box("Dali_BoxCan", Dali_NS::Hight*0.5,
+                               Dali_NS::Width*0.5, Dali_NS::Thickness*0.5 + Dali_NS::LengthPMT/2.+11.5/2.*mm /*last part is PMTVolume*/ );
+ 
+    std::vector<G4TwoVector> polygon;
+    polygon.push_back(G4TwoVector(Dali_NS::Hight*0.5, Dali_NS::Width*0.5*3.  )  ) ;
+    polygon.push_back(G4TwoVector(Dali_NS::Hight*0.5, -Dali_NS::Width*0.5*3.  )  ) ;
+    polygon.push_back(G4TwoVector(-Dali_NS::Hight*0.5, -Dali_NS::Width*0.5*3.  )  ) ;
+    polygon.push_back(G4TwoVector(-Dali_NS::Hight*0.5, Dali_NS::Width*0.5*3.  )  ) ;
+
+    // std::vector<ZSection> zsection;
+    // zsection.push_back(ZSection (Dali_NS::Thickness*0.5, {0,0}, 1. ) );
+    // zsection.push_back(ZSection (-Dali_NS::Thickness*0.5-19.5*2.*mm , {0,0}, 1. ) );
+
+    
+    G4Box* Extrudedbox_can  = new G4Box("Dali_BoxCan", Dali_NS::Hight*0.5,Dali_NS::Width*0.5, Dali_NS::LengthPMT/2.+11.5/2.*mm);
+
+    AriaExtrude = new G4LogicalVolume(Extrudedbox_can,Aria, "logic_Ariaextrude",0,0,0);
+
     G4Material* DetectorCanMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
     m_SquareDetector_Can = new G4LogicalVolume(box_can,DetectorCanMaterial,"logic_Dali_Can",0,0,0);
-    G4VisAttributes* Can_Attributes = new G4VisAttributes(G4Colour(0.5,0.5,0.5));
+    m_Square2Detector_Can = new G4LogicalVolume(box_canandPMT, Aria,"logic_Dali_CanandPMT",0,0,0);
+
+
+    //THE PMT
+    G4Tubs* AlPMT = new G4Tubs("AlPMT",16.5*mm, 19.5*mm,Dali_NS::LengthPMT/2.,0*deg,360*deg);
+    G4Tubs* MuPMT = new G4Tubs("MuPMT",16.5*mm,20.*mm,Dali_NS::LengthPMT/2.,0*deg,360*deg);
+    G4Box* TopPlatePMT = new G4Box("TopPlatePMT",  Dali_NS::Hight*0.5-1*mm,
+                                  Dali_NS::Width*0.5-1*mm, 11.5/2.*mm );
+    G4Tubs* GlassPMT = new G4Tubs("GlassPMT", 0. , 16.5*mm , 11.5/2.*mm ,0*deg,360*deg);
+
+    lAlPMT = new G4LogicalVolume(AlPMT, DetectorCanMaterial ,"lAlPMT",0,0,0);
+    lMuPMT = new G4LogicalVolume(MuPMT, DetectorCanMaterial ,"lMuPMT",0,0,0);
+    lTopPlatePMT = new G4LogicalVolume(TopPlatePMT, DetectorCanMaterial ,"lTopPlatePMT",0,0,0);
+    lGlassPMT = new G4LogicalVolume(GlassPMT , MaterialManager::getInstance()->GetMaterialFromLibrary("Borosillicate_Glass") ,"lGlassPMT",0,0,0);
+
+
+    G4VisAttributes* Can_Attributes = new G4VisAttributes(G4Colour(0.5,0.5,0.5, .3));
     m_SquareDetector_Can->SetVisAttributes(Can_Attributes);
-    
+    m_Square2Detector_Can->SetVisAttributes(G4VisAttributes(G4Colour(1,1,1,0.1)));
+                                                
+        //Extrudedbox_can->SetVisAttributes(Can_Attributes);
+        lAlPMT->SetVisAttributes(Can_Attributes);
+        lMuPMT->SetVisAttributes(Can_Attributes);
+        lTopPlatePMT->SetVisAttributes(Can_Attributes);
+          
     G4Box* box_MgO = new G4Box("Dali_BoxMgO", Dali_NS::Hight*0.5-1*mm,
                                Dali_NS::Width*0.5-1*mm, Dali_NS::Thickness*0.5-1*mm);
  
@@ -194,6 +243,60 @@ G4LogicalVolume* Dali::BuildSquareDetector(){
     m_SquareDetector_Crystal = new G4LogicalVolume(box_crystal,NaI_Tl,"logic_Dali_Box",0,0,0);
  
     G4ThreeVector positionnull = G4ThreeVector(0,0,0);
+
+
+     // PMT Volume -
+    new G4PVPlacement(0, positionnull,
+                      lAlPMT ,
+                      "AlPMT",
+                      lMuPMT,
+                      false,
+                      0);
+    new G4PVPlacement(0, G4ThreeVector(0,0, -11.5/2.*mm ),
+                      lMuPMT ,
+                      "MuPMT",
+                      AriaExtrude,
+                      false,
+                      0);
+    
+    
+    new G4PVPlacement(0, positionnull,
+                      lGlassPMT,
+                      "GlassPMT",
+                      lTopPlatePMT,
+                      false,
+                      0);
+    new G4PVPlacement(0,  G4ThreeVector(0,0, Dali_NS::LengthPMT/2. ),
+                      lTopPlatePMT,
+                      "TopPlatePMT",
+                      AriaExtrude,
+                      false,
+                      0);
+
+
+
+    new G4PVPlacement(0,  G4ThreeVector(0,0, -Dali_NS::Thickness*0.5 ),
+                      AriaExtrude,
+                      "PMTVolume",
+                      m_Square2Detector_Can,
+                      false,
+                      0);
+
+
+
+
+    new G4PVPlacement(0,  G4ThreeVector(0,0, Dali_NS::LengthPMT/2.+11.5/2.*mm ),
+                      m_SquareDetector_Can,
+                      "DetectorVolume",
+                      m_Square2Detector_Can,
+                      false,
+                      0);
+
+
+
+
+    
+                                                
     
     // MgO Volume -
     new G4PVPlacement(0, positionnull,
@@ -202,14 +305,15 @@ G4LogicalVolume* Dali::BuildSquareDetector(){
                                              m_SquareDetector_Can,
                                              false,
                                              0); 
-    G4VisAttributes* MgO_Attributes = new G4VisAttributes(G4Colour(0.0,1.0,0.5));
+    G4VisAttributes* MgO_Attributes = new G4VisAttributes(G4Colour(1,1,1, .3));
     m_SquareDetector_CanMgO->SetVisAttributes(MgO_Attributes);
+        AriaExtrude->SetVisAttributes(MgO_Attributes);
 
     
     // NaI Volume -
     new G4PVPlacement(0, positionnull,
                                                  m_SquareDetector_Crystal,
-                                                 "Crystal NaI",
+                                                 "CrystalNaI",
                                                  m_SquareDetector_CanMgO,
                                                  false,
                                                  0); 
@@ -217,8 +321,18 @@ G4LogicalVolume* Dali::BuildSquareDetector(){
     m_SquareDetector_Crystal->SetVisAttributes(m_VisSquare);
     m_SquareDetector_Crystal->SetSensitiveDetector(m_DaliScorer);
 
-    new G4PVReplica("ArrayDali_1",
-                                                        m_SquareDetector_Can,
+
+    new G4PVPlacement(0, positionnull,
+                                                 m_SquareDetector_Crystal,
+                                                 "CrystalNaI",
+                                                 m_SquareDetector_CanMgO,
+                                                 false,
+                                                 0); 
+
+
+                                                
+    new G4PVReplica("DaliArrayElement",
+                                                        m_Square2Detector_Can,
                                                         Logic_ArrayDali_1 ,
                                                         kYAxis,
                                                         3,
@@ -227,8 +341,6 @@ G4LogicalVolume* Dali::BuildSquareDetector(){
 
 
        
-
-       
   }
   
   return Logic_ArrayDali_1;
@@ -312,6 +424,8 @@ void Dali::ConstructDetector(G4LogicalVolume* world){
     G4double wX = m_R[i] * cos(m_Alpha[i] ) ; 
     G4double wY = m_R[i] * sin(m_Alpha[i] ) ;
     G4double wZ = m_Zeta[i];
+    if(m_Zeta[i]<0) wZ = wZ - Dali_NS::LengthPMT/2.+11.5/2.*mm;
+    else wZ = wZ + Dali_NS::LengthPMT/2.+11.5/2.*mm;
     G4ThreeVector Det_pos = G4ThreeVector(wX, wY, wZ) ;
 
 
@@ -321,8 +435,8 @@ void Dali::ConstructDetector(G4LogicalVolume* world){
 
 
 
-    
-    if(m_Zeta[i]>0){
+    Rot->rotateX(180*deg);
+    if(m_Zeta[i]<0){
       Rot->rotateY(180*deg); Rot->rotateZ(m_Alpha[i]); 
     } else{Rot->rotateZ(m_Alpha[i]);}
 
@@ -337,6 +451,8 @@ void Dali::ConstructDetector(G4LogicalVolume* world){
       new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
                         BuildSquareDetector(),
           "Dali",world,false,i+1);
+
+     
     }
   }
 }
@@ -379,8 +495,6 @@ void Dali::ReadSensitive(const G4Event* ){
       int DetectorNbr = (ArrayNbr-1)*3+DetectinsArrayNbr;
       m_Event->SetEnergy(DetectorNbr,Energy);
       m_Event->SetTime(DetectorNbr,Time);
-    
-    
     }
   }
 }
@@ -390,17 +504,17 @@ void Dali::ReadSensitive(const G4Event* ){
 void Dali::InitializeScorers() { 
   // This check is necessary in case the geometry is reloaded
   bool already_exist = false;
-  vector<G4int> NestingLevel;
-  NestingLevel.push_back(2);
+  vector<int> NestingLevel;
   NestingLevel.push_back(3);
+  NestingLevel.push_back(4);
   
   m_DaliScorer = CheckScorer("DaliScorer",already_exist) ;
 
-  //if(already_exist) 
-  // return ;
+  if(already_exist) //Necessary?
+    return ;  //Necessary?
 
   // Otherwise the scorer is initialised
-  vector<int> level; level.push_back(0);
+//  vector<int> level; level.push_back(0);
   G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter", NestingLevel) ;
   G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ;
   //and register it to the multifunctionnal detector
diff --git a/NPSimulation/Detectors/Dali/Dali.cc.~14~ b/NPSimulation/Detectors/Dali/Dali.cc.~14~
deleted file mode 100644
index cedb27ac763944c87dda97b14fc53dc120f35c57..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/Dali.cc.~14~
+++ /dev/null
@@ -1,417 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
- *                                                                           *
- * Creation Date  : septembre 2018                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class describe  Dali 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 "G4Transform3D.hh"
-#include "G4PVPlacement.hh"
-//#include "G4VPhysicalVolume.hh"
-#include "G4PVReplica.hh"
-#include "G4VisAttributes.hh"
-#include "G4Colour.hh"
-
-// NPTool header
-#include "Dali.hh"
-#include "CalorimeterScorers.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"
-
-using namespace std;
-using namespace CLHEP;
-
-
-
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-namespace Dali_NS{
-  // Energy and time Resolution
-  const double EnergyThreshold = 0*MeV;
-  const double ResoTime = 4.5*ns ;
-  const double ResoEnergy = 0.001*MeV ;
-  const double Radius = 50*mm ; 
-  const double Width = 49.76*mm ;
-  const double Hight = 84.81*mm ;
-  const double Thickness = 164.82*mm ;
-  const string Material = "NaI";    //Change to drug it with Tl
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Dali Specific Method
-Dali::Dali(){
-  m_Event = new TDaliData() ;
-  m_DaliScorer = 0;
-  m_SquareDetector = 0;
-  m_SquareDetector_Can = 0;
-  m_SquareDetector_CanMgO =0;
-  m_CylindricalDetector = 0;
-  m_SquareDetector_Crystal = 0;
-  Logic_ArrayDali_1 =0;
-  
-  // RGB Color + Transparency
-  m_VisSquare = new G4VisAttributes(G4Colour(0, 1, 0, 0.5));   
-  m_VisCylinder = new G4VisAttributes(G4Colour(0, 0, 1, 0.5));   
-
-}
-
-Dali::~Dali(){
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Dali::AddDetector(G4ThreeVector POS, string  Shape){
-  // Convert the POS value to R theta Phi as Cylindrical coordinate is easier in G4 
-  m_R.push_back(POS.perp());
-  m_Alpha.push_back(POS.phi());
-  m_Zeta.push_back(POS.y());
-  m_Shape.push_back(Shape);
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Dali::AddDetector(double  R, double  Theta, double  Phi, string  Shape){
-
-  double m_r, m_alpha, m_zeta;
-  
-  m_r = R*cos(Phi);
-  m_alpha = Theta;
-  m_zeta = R*sin(Phi);
-       
-  m_R.push_back(m_r);
-  m_Alpha.push_back(m_alpha);
-  m_Zeta.push_back(m_zeta);
-  m_Shape.push_back(Shape);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void Dali::AddDetector2(double  R, double  Alpha, double  Zeta, string  Shape){
-  m_R.push_back(R);
-  m_Alpha.push_back(Alpha);
-  m_Zeta.push_back(Zeta);
-  m_Shape.push_back(Shape);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-
-
-G4LogicalVolume* Dali::BuildSquareDetector(){
-  if(!m_SquareDetector){
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-
-    G4Element* H       = new G4Element("Hydrogen","H" , 1., 1.01*g/mole);
-    
-    G4Isotope* Mg24 = new G4Isotope ("Mg24", 12, 24, 23.985041*g/mole);
-    G4Isotope* Mg25 = new G4Isotope ("Mg25", 12, 25, 24.985836*g/mole);
-    G4Isotope* Mg26 = new G4Isotope ("Mg26", 12, 26, 25.982592*g/mole);
-    G4Element* Mg= new G4Element("elMagnesium","Mg",3);
-    Mg->AddIsotope(Mg24, 78.99*perCent);
-    Mg->AddIsotope(Mg25, 10*perCent);
-    Mg->AddIsotope(Mg26, 11.01*perCent);
-
-    G4Isotope* O16 = new G4Isotope ("O16", 8, 16, 15.99*g/mole);
-    G4Isotope* O17 = new G4Isotope ("O17", 8, 17, 17.00*g/mole);
-    G4Isotope* O18 = new G4Isotope ("O18", 8, 18, 18.00*g/mole);
-    G4Element* O= new G4Element("elOxygen","O",3);
-    O->AddIsotope(O16, 99.76*perCent);
-    O->AddIsotope(O17, 0.04*perCent);
-    O->AddIsotope(O18, 0.20*perCent);
-
-    G4Material* MgO = new G4Material("MgO",3.6*g/cm3,2);
-    MgO->AddElement(Mg,1);
-    MgO->AddElement(O, 1);
-    
-    G4Element *elTl = new G4Element("Thallium","Tl",81.,204.383*g/mole );
-    G4Material* NaI_Tl = new G4Material("NaI_Tl",3.6667*g/cm3, 2);
-    NaI_Tl->AddMaterial(MaterialManager::getInstance()->GetMaterialFromLibrary("NaI"),99.6*perCent);
-    NaI_Tl->AddElement(elTl,0.4*perCent);
-
-
-
-
-
-    
-    G4Box* box_3can = new G4Box("Dali_3BoxCan", Dali_NS::Hight*0.5,
-                                Dali_NS::Width*0.5*3, Dali_NS::Thickness*0.5);
-    G4Material* Aria = MaterialManager::getInstance()->GetMaterialFromLibrary("Air");
-    Logic_ArrayDali_1 = new G4LogicalVolume(box_3can,Aria,"logic_ArrayDali",0,0,0);
- 
-
-    
-    G4Box* box_can = new G4Box("Dali_BoxCan", Dali_NS::Hight*0.5,
-                               Dali_NS::Width*0.5, Dali_NS::Thickness*0.5);
-    G4Material* DetectorCanMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
-    m_SquareDetector_Can = new G4LogicalVolume(box_can,Aria,"logic_Dali_Can",0,0,0);
-    G4VisAttributes* Can_Attributes = new G4VisAttributes(G4Colour(0.5,0.5,0.5));
-    m_SquareDetector_Can->SetVisAttributes(Can_Attributes);
-    
-    G4Box* box_MgO = new G4Box("Dali_BoxMgO", Dali_NS::Hight*0.5-1*mm,
-                               Dali_NS::Width*0.5-1*mm, Dali_NS::Thickness*0.5-1*mm);
- 
-    m_SquareDetector_CanMgO = new G4LogicalVolume(box_MgO,Aria,"logic_Dali_CanMg0",0,0,0);
-
-    G4Box* box_crystal = new G4Box("Dali_BoxNaI", Dali_NS::Hight*0.5-2.4*mm,
-                           Dali_NS::Width*0.5-2.4*mm, Dali_NS::Thickness*0.5-2.4*mm);
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Dali_NS::Material);
-    m_SquareDetector_Crystal = new G4LogicalVolume(box_crystal,NaI_Tl,"logic_Dali_Box",0,0,0);
- 
-    G4ThreeVector positionnull = G4ThreeVector(0,0,0);
-    
-    // MgO Volume -
-    G4PVPlacement* physi_MgO = new G4PVPlacement(0, positionnull,
-                                             m_SquareDetector_CanMgO,
-                                             "MgO",
-                                             m_SquareDetector_Can,
-                                             false,
-                                             0); 
-    G4VisAttributes* MgO_Attributes = new G4VisAttributes(G4Colour(0.0,1.0,0.5));
-    m_SquareDetector_CanMgO->SetVisAttributes(MgO_Attributes);
-
-    
-    // NaI Volume -
-    G4PVPlacement* physi_NaI = new G4PVPlacement(0, positionnull,
-                                                 m_SquareDetector_Crystal,
-                                                 "Crystal NaI",
-                                                 m_SquareDetector_CanMgO,
-                                                 false,
-                                                 0); 
-    m_SquareDetector_Crystal->SetVisAttributes(m_VisSquare);
-    m_SquareDetector_Crystal->SetSensitiveDetector(m_DaliScorer);
-
-       G4VPhysicalVolume* ArrayDali_1 = new G4PVReplica("ArrayDali_1",
-                                                        m_SquareDetector_Can,
-                                                        Logic_ArrayDali_1 ,
-                                                        kYAxis,
-                                                        3,
-                                                        Dali_NS::Width,    //?????????
-                                                        0);
-    
-  }
-  
-  return Logic_ArrayDali_1;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4LogicalVolume* Dali::BuildCylindricalDetector(){
-  if(!m_CylindricalDetector){
-    G4Tubs* tub = new G4Tubs("Dali_Cyl",0,Dali_NS::Radius, Dali_NS::Thickness*0.5,0,360*deg);
-
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Dali_NS::Material);
-    m_CylindricalDetector = new G4LogicalVolume(tub,DetectorMaterial,"logic_Dali_tub",0,0,0);
-    m_CylindricalDetector->SetVisAttributes(m_VisSquare);
-    m_CylindricalDetector->SetSensitiveDetector(m_DaliScorer);
-
-  }
-  return m_CylindricalDetector;
-}
-
-//....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 DetecorConstruction::ReadDetextorConfiguration Method
-void Dali::ReadConfiguration(NPL::InputParser parser){
-  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Dali");
-  if(NPOptionManager::getInstance()->GetVerboseLevel())
-    cout << "//// " << blocks.size() << " detectors found " << endl; 
-
-  vector<string> cart = {"POS","Shape"};
-  vector<string> sphe = {"R","Theta","Phi","Shape"};
-  vector<string> cyli = {"R","Alpha","Zeta","Shape"};
-
-  for(unsigned int i = 0 ; i < blocks.size() ; i++){
-    if(blocks[i]->HasTokenList(cart)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-    
-      G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("POS","mm"));
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector(Pos,Shape);
-    }
-    else if(blocks[i]->HasTokenList(sphe)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-      double R = blocks[i]->GetDouble("R","mm");
-      double Theta = blocks[i]->GetDouble("Theta","deg");
-      double Phi = blocks[i]->GetDouble("Phi","deg");
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector(R,Theta,Phi,Shape);
-    }
-    else if(blocks[i]->HasTokenList(cyli)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-      double R = blocks[i]->GetDouble("R","mm");
-      double Alpha = blocks[i]->GetDouble("Alpha","deg");
-      double Zeta = blocks[i]->GetDouble("Zeta","mm");
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector2(R,Alpha,Zeta,Shape);
-    }
-    else{
-      cout << "ERROR: check your input file formatting " << endl;
-      exit(1);
-    }
-  }
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-// Construct detector and inialise sensitive part.
-// Called After DetecorConstruction::AddDetector Method
-void Dali::ConstructDetector(G4LogicalVolume* world){    
-  
-  for (unsigned short i = 0 ; i < m_R.size() ; i++) {
-
-    G4double wX = m_R[i] * cos(m_Alpha[i] ) ; 
-    G4double wY = m_R[i] * sin(m_Alpha[i] ) ;
-    G4double wZ = m_Zeta[i];
-    G4ThreeVector Det_pos = G4ThreeVector(wX, wY, wZ) ;
-    
-    G4RotationMatrix* Rot = new G4RotationMatrix();
-
-    if(m_Zeta[i]>0){
-      Rot->rotateX(180*deg); Rot->rotateZ(m_Alpha[i]); 
-    } else{Rot->rotateZ(m_Alpha[i]);}
-
-   
-    if(m_Shape[i] == "Cylindrical"){
-      new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-          BuildCylindricalDetector(),
-          "Dali",world,false,i+1);
-    }
-
-    else if(m_Shape[i] == "Square"){
-      new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-                        BuildSquareDetector(),
-          "Dali",world,false,i+1);
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Add Detector branch to the EventTree.
-// Called After DetecorConstruction::AddDetector Method
-void Dali::InitializeRootOutput(){
-  RootOutput *pAnalysis = RootOutput::getInstance();
-  TTree *pTree = pAnalysis->GetTree();
-  if(!pTree->FindBranch("Dali")){
-    pTree->Branch("Dali", "TDaliData", &m_Event) ;
-  }
-  pTree->SetBranchAddress("Dali", &m_Event) ;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Read sensitive part and fill the Root tree.
-// Called at in the EventAction::EndOfEventAvtion
-void Dali::ReadSensitive(const G4Event* ){
-  m_Event->Clear();
-
-  ///////////
-  // Calorimeter scorer
-  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_DaliScorer->GetPrimitive(0);
-
-  unsigned int size = Scorer->GetMult();
-  // cout << "size " << size << endl;
-  for(unsigned int i = 0 ; i < size ; i++){
-    vector<unsigned int> level = Scorer->GetLevel(i); 
-    double Energy = RandGauss::shoot(Scorer->GetEnergy(i),Dali_NS::ResoEnergy);
-    // cout << Energy << endl;
-    if(Energy>Dali_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Scorer->GetTime(i),Dali_NS::ResoTime);
-      int DetectorNbr = level[0];
-      int InsideDetectNbr = level[1];
-      m_Event->SetEnergy(DetectorNbr,Energy);
-      m_Event->SetTime(DetectorNbr,Time); 
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////   
-void Dali::InitializeScorers() { 
-  // This check is necessary in case the geometry is reloaded
-  bool already_exist = false;
-  vector<G4int> NestingLevel;
-  NestingLevel.push_back(0);
-  NestingLevel.push_back(1);
-  
-  m_DaliScorer = CheckScorer("DaliScorer",already_exist) ;
-
-  if(already_exist) 
-    return ;
-
-  // Otherwise the scorer is initialised
-   vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",NestingLevel) ;
-  G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ;
-  //and register it to the multifunctionnal detector
-  m_DaliScorer->RegisterPrimitive(Calorimeter);
-  m_DaliScorer->RegisterPrimitive(Interaction);
-  G4SDManager::GetSDMpointer()->AddNewDetector(m_DaliScorer) ;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////////////////////
-//            Construct Method to be pass to the DetectorFactory              //
-////////////////////////////////////////////////////////////////////////////////
-NPS::VDetector* Dali::Construct(){
-  return  (NPS::VDetector*) new Dali();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////////////////////
-//            Registering the construct method to the factory                 //
-////////////////////////////////////////////////////////////////////////////////
-extern"C" {
-  class proxy_nps_Dali{
-    public:
-      proxy_nps_Dali(){
-        NPS::DetectorFactory::getInstance()->AddToken("Dali","Dali");
-        NPS::DetectorFactory::getInstance()->AddDetector("Dali",Dali::Construct);
-      }
-  };
-
-  proxy_nps_Dali p_nps_Dali;
-}
diff --git a/NPSimulation/Detectors/Dali/Dali.cc.~15~ b/NPSimulation/Detectors/Dali/Dali.cc.~15~
deleted file mode 100644
index 360a3f6598772c96e27e343ada11d4186820ede1..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/Dali.cc.~15~
+++ /dev/null
@@ -1,420 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
- *                                                                           *
- * Creation Date  : septembre 2018                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class describe  Dali 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 "G4Transform3D.hh"
-#include "G4PVPlacement.hh"
-//#include "G4VPhysicalVolume.hh"
-#include "G4PVReplica.hh"
-#include "G4VisAttributes.hh"
-#include "G4Colour.hh"
-
-// NPTool header
-#include "Dali.hh"
-#include "CalorimeterScorers.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"
-
-using namespace std;
-using namespace CLHEP;
-
-
-
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-namespace Dali_NS{
-  // Energy and time Resolution
-  const double EnergyThreshold = 0*MeV;
-  const double ResoTime = 4.5*ns ;
-  const double ResoEnergy = 0.001*MeV ;
-  const double Radius = 50*mm ; 
-  const double Width = 49.76*mm ;
-  const double Hight = 84.81*mm ;
-  const double Thickness = 164.82*mm ;
-  const string Material = "NaI";    //Change to drug it with Tl
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Dali Specific Method
-Dali::Dali(){
-  m_Event = new TDaliData() ;
-  m_DaliScorer = 0;
-  m_SquareDetector = 0;
-  m_SquareDetector_Can = 0;
-  m_SquareDetector_CanMgO =0;
-  m_CylindricalDetector = 0;
-  m_SquareDetector_Crystal = 0;
-  Logic_ArrayDali_1 =0;
-  
-  // RGB Color + Transparency
-  m_VisSquare = new G4VisAttributes(G4Colour(0, 1, 0, 0.5));   
-  m_VisCylinder = new G4VisAttributes(G4Colour(0, 0, 1, 0.5));   
-
-}
-
-Dali::~Dali(){
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Dali::AddDetector(G4ThreeVector POS, string  Shape){
-  // Convert the POS value to R theta Phi as Cylindrical coordinate is easier in G4 
-  m_R.push_back(POS.perp());
-  m_Alpha.push_back(POS.phi());
-  m_Zeta.push_back(POS.y());
-  m_Shape.push_back(Shape);
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Dali::AddDetector(double  R, double  Theta, double  Phi, string  Shape){
-
-  double m_r, m_alpha, m_zeta;
-  
-  m_r = R*cos(Phi);
-  m_alpha = Theta;
-  m_zeta = R*sin(Phi);
-       
-  m_R.push_back(m_r);
-  m_Alpha.push_back(m_alpha);
-  m_Zeta.push_back(m_zeta);
-  m_Shape.push_back(Shape);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void Dali::AddDetector2(double  R, double  Alpha, double  Zeta, string  Shape){
-  m_R.push_back(R);
-  m_Alpha.push_back(Alpha);
-  m_Zeta.push_back(Zeta);
-  m_Shape.push_back(Shape);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-
-
-G4LogicalVolume* Dali::BuildSquareDetector(){
-  if(!m_SquareDetector){
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-
-    G4Element* H       = new G4Element("Hydrogen","H" , 1., 1.01*g/mole);
-    
-    G4Isotope* Mg24 = new G4Isotope ("Mg24", 12, 24, 23.985041*g/mole);
-    G4Isotope* Mg25 = new G4Isotope ("Mg25", 12, 25, 24.985836*g/mole);
-    G4Isotope* Mg26 = new G4Isotope ("Mg26", 12, 26, 25.982592*g/mole);
-    G4Element* Mg= new G4Element("elMagnesium","Mg",3);
-    Mg->AddIsotope(Mg24, 78.99*perCent);
-    Mg->AddIsotope(Mg25, 10*perCent);
-    Mg->AddIsotope(Mg26, 11.01*perCent);
-
-    G4Isotope* O16 = new G4Isotope ("O16", 8, 16, 15.99*g/mole);
-    G4Isotope* O17 = new G4Isotope ("O17", 8, 17, 17.00*g/mole);
-    G4Isotope* O18 = new G4Isotope ("O18", 8, 18, 18.00*g/mole);
-    G4Element* O= new G4Element("elOxygen","O",3);
-    O->AddIsotope(O16, 99.76*perCent);
-    O->AddIsotope(O17, 0.04*perCent);
-    O->AddIsotope(O18, 0.20*perCent);
-
-    G4Material* MgO = new G4Material("MgO",3.6*g/cm3,2);
-    MgO->AddElement(Mg,1);
-    MgO->AddElement(O, 1);
-    
-    G4Element *elTl = new G4Element("Thallium","Tl",81.,204.383*g/mole );
-    G4Material* NaI_Tl = new G4Material("NaI_Tl",3.6667*g/cm3, 2);
-    NaI_Tl->AddMaterial(MaterialManager::getInstance()->GetMaterialFromLibrary("NaI"),99.6*perCent);
-    NaI_Tl->AddElement(elTl,0.4*perCent);
-
-
-
-
-
-    
-    G4Box* box_3can = new G4Box("Dali_3BoxCan", Dali_NS::Hight*0.5,
-                                Dali_NS::Width*0.5*3, Dali_NS::Thickness*0.5);
-    G4Material* Aria = MaterialManager::getInstance()->GetMaterialFromLibrary("Air");
-    Logic_ArrayDali_1 = new G4LogicalVolume(box_3can,Aria,"logic_ArrayDali",0,0,0);
- 
-
-    
-    G4Box* box_can = new G4Box("Dali_BoxCan", Dali_NS::Hight*0.5,
-                               Dali_NS::Width*0.5, Dali_NS::Thickness*0.5);
-    G4Material* DetectorCanMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
-    m_SquareDetector_Can = new G4LogicalVolume(box_can,Aria,"logic_Dali_Can",0,0,0);
-    G4VisAttributes* Can_Attributes = new G4VisAttributes(G4Colour(0.5,0.5,0.5));
-    m_SquareDetector_Can->SetVisAttributes(Can_Attributes);
-    
-    G4Box* box_MgO = new G4Box("Dali_BoxMgO", Dali_NS::Hight*0.5-1*mm,
-                               Dali_NS::Width*0.5-1*mm, Dali_NS::Thickness*0.5-1*mm);
- 
-    m_SquareDetector_CanMgO = new G4LogicalVolume(box_MgO,Aria,"logic_Dali_CanMg0",0,0,0);
-
-    G4Box* box_crystal = new G4Box("Dali_BoxNaI", Dali_NS::Hight*0.5-2.4*mm,
-                           Dali_NS::Width*0.5-2.4*mm, Dali_NS::Thickness*0.5-2.4*mm);
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Dali_NS::Material);
-    m_SquareDetector_Crystal = new G4LogicalVolume(box_crystal,NaI_Tl,"logic_Dali_Box",0,0,0);
- 
-    G4ThreeVector positionnull = G4ThreeVector(0,0,0);
-    
-    // MgO Volume -
-    G4PVPlacement* physi_MgO = new G4PVPlacement(0, positionnull,
-                                             m_SquareDetector_CanMgO,
-                                             "MgO",
-                                             m_SquareDetector_Can,
-                                             false,
-                                             0); 
-    G4VisAttributes* MgO_Attributes = new G4VisAttributes(G4Colour(0.0,1.0,0.5));
-    m_SquareDetector_CanMgO->SetVisAttributes(MgO_Attributes);
-
-    
-    // NaI Volume -
-    G4PVPlacement* physi_NaI = new G4PVPlacement(0, positionnull,
-                                                 m_SquareDetector_Crystal,
-                                                 "Crystal NaI",
-                                                 m_SquareDetector_CanMgO,
-                                                 false,
-                                                 0); //this is the num detect level[0]??
-
-    m_SquareDetector_Crystal->SetVisAttributes(m_VisSquare);
-    m_SquareDetector_Crystal->SetSensitiveDetector(m_DaliScorer);
-
-       G4VPhysicalVolume* ArrayDali_1 = new G4PVReplica("ArrayDali_1",
-                                                        m_SquareDetector_Can,
-                                                        Logic_ArrayDali_1 ,
-                                                        kYAxis,
-                                                        3,
-                                                        Dali_NS::Width,    //?????????
-                                                        0);
-    
-  }
-  
-  return Logic_ArrayDali_1;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4LogicalVolume* Dali::BuildCylindricalDetector(){
-  if(!m_CylindricalDetector){
-    G4Tubs* tub = new G4Tubs("Dali_Cyl",0,Dali_NS::Radius, Dali_NS::Thickness*0.5,0,360*deg);
-
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Dali_NS::Material);
-    m_CylindricalDetector = new G4LogicalVolume(tub,DetectorMaterial,"logic_Dali_tub",0,0,0);
-    m_CylindricalDetector->SetVisAttributes(m_VisSquare);
-    m_CylindricalDetector->SetSensitiveDetector(m_DaliScorer);
-
-  }
-  return m_CylindricalDetector;
-}
-
-//....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 DetecorConstruction::ReadDetextorConfiguration Method
-void Dali::ReadConfiguration(NPL::InputParser parser){
-  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Dali");
-  if(NPOptionManager::getInstance()->GetVerboseLevel())
-    cout << "//// " << blocks.size() << " detectors found " << endl; 
-
-  vector<string> cart = {"POS","Shape"};
-  vector<string> sphe = {"R","Theta","Phi","Shape"};
-  vector<string> cyli = {"R","Alpha","Zeta","Shape"};
-
-  for(unsigned int i = 0 ; i < blocks.size() ; i++){
-    if(blocks[i]->HasTokenList(cart)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-    
-      G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("POS","mm"));
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector(Pos,Shape);
-    }
-    else if(blocks[i]->HasTokenList(sphe)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-      double R = blocks[i]->GetDouble("R","mm");
-      double Theta = blocks[i]->GetDouble("Theta","deg");
-      double Phi = blocks[i]->GetDouble("Phi","deg");
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector(R,Theta,Phi,Shape);
-    }
-    else if(blocks[i]->HasTokenList(cyli)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-      double R = blocks[i]->GetDouble("R","mm");
-      double Alpha = blocks[i]->GetDouble("Alpha","deg");
-      double Zeta = blocks[i]->GetDouble("Zeta","mm");
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector2(R,Alpha,Zeta,Shape);
-    }
-    else{
-      cout << "ERROR: check your input file formatting " << endl;
-      exit(1);
-    }
-  }
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-// Construct detector and inialise sensitive part.
-// Called After DetecorConstruction::AddDetector Method
-void Dali::ConstructDetector(G4LogicalVolume* world){    
-  
-  for (unsigned short i = 0 ; i < m_R.size() ; i++) {
-
-    G4double wX = m_R[i] * cos(m_Alpha[i] ) ; 
-    G4double wY = m_R[i] * sin(m_Alpha[i] ) ;
-    G4double wZ = m_Zeta[i];
-    G4ThreeVector Det_pos = G4ThreeVector(wX, wY, wZ) ;
-    
-    G4RotationMatrix* Rot = new G4RotationMatrix();
-
-    if(m_Zeta[i]>0){
-      Rot->rotateY(180*deg); Rot->rotateZ(m_Alpha[i]); 
-    } else{Rot->rotateZ(m_Alpha[i]);}
-
-   
-    if(m_Shape[i] == "Cylindrical"){
-      new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-          BuildCylindricalDetector(),
-          "Dali",world,false,i+1);
-    }
-
-    else if(m_Shape[i] == "Square"){
-      new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-                        BuildSquareDetector(),
-          "Dali",world,false,i+1);
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Add Detector branch to the EventTree.
-// Called After DetecorConstruction::AddDetector Method
-void Dali::InitializeRootOutput(){
-  RootOutput *pAnalysis = RootOutput::getInstance();
-  TTree *pTree = pAnalysis->GetTree();
-  if(!pTree->FindBranch("Dali")){
-    pTree->Branch("Dali", "TDaliData", &m_Event) ;
-  }
-  pTree->SetBranchAddress("Dali", &m_Event) ;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Read sensitive part and fill the Root tree.
-// Called at in the EventAction::EndOfEventAvtion
-void Dali::ReadSensitive(const G4Event* ){
-  m_Event->Clear();
-  ///////////
-  // Calorimeter scorer
-  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_DaliScorer->GetPrimitive(0);
-
-
-  
-  unsigned int size = Scorer->GetMult();
-  // cout << "size " << size << endl;
-  for(unsigned int i = 0 ; i < size ; i++){
-    vector<unsigned int> level = Scorer->GetLevel(i); 
-    double Energy = RandGauss::shoot(Scorer->GetEnergy(i),Dali_NS::ResoEnergy);
-    // cout << Energy << endl;
-    if(Energy>Dali_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Scorer->GetTime(i),Dali_NS::ResoTime);
-      int ArrayNbr = level[1];
-      int DetectinsArrayNbr = level[0]+1;
-      int DetectorNbr = (ArrayNbr-1)*3+DetectinsArrayNbr;
-      m_Event->SetEnergy(DetectorNbr,Energy);
-      m_Event->SetTime(DetectorNbr,Time); 
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////   
-void Dali::InitializeScorers() { 
-  // This check is necessary in case the geometry is reloaded
-  bool already_exist = false;
-  vector<G4int> NestingLevel;
-  NestingLevel.push_back(2);
-  NestingLevel.push_back(3);
-  
-  m_DaliScorer = CheckScorer("DaliScorer",already_exist) ;
-
-  if(already_exist) 
-    return ;
-
-  // Otherwise the scorer is initialised
-  //vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter", NestingLevel) ;
-  G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ;
-  //and register it to the multifunctionnal detector
-  m_DaliScorer->RegisterPrimitive(Calorimeter);
-  m_DaliScorer->RegisterPrimitive(Interaction);
-  G4SDManager::GetSDMpointer()->AddNewDetector(m_DaliScorer) ;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////////////////////
-//            Construct Method to be pass to the DetectorFactory              //
-////////////////////////////////////////////////////////////////////////////////
-NPS::VDetector* Dali::Construct(){
-  return  (NPS::VDetector*) new Dali();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////////////////////
-//            Registering the construct method to the factory                 //
-////////////////////////////////////////////////////////////////////////////////
-extern"C" {
-  class proxy_nps_Dali{
-    public:
-      proxy_nps_Dali(){
-        NPS::DetectorFactory::getInstance()->AddToken("Dali","Dali");
-        NPS::DetectorFactory::getInstance()->AddDetector("Dali",Dali::Construct);
-      }
-  };
-
-  proxy_nps_Dali p_nps_Dali;
-}
diff --git a/NPSimulation/Detectors/Dali/Dali.cc.~16~ b/NPSimulation/Detectors/Dali/Dali.cc.~16~
deleted file mode 100644
index 9631a93e6092365d2d9e196583e8d322055bb832..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/Dali.cc.~16~
+++ /dev/null
@@ -1,432 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
- *                                                                           *
- * Creation Date  : septembre 2018                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class describe  Dali 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 "G4Transform3D.hh"
-#include "G4PVPlacement.hh"
-//#include "G4VPhysicalVolume.hh"
-#include "G4PVReplica.hh"
-#include "G4VisAttributes.hh"
-#include "G4Colour.hh"
-
-// NPTool header
-#include "Dali.hh"
-#include "CalorimeterScorers.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"
-
-using namespace std;
-using namespace CLHEP;
-
-
-
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-namespace Dali_NS{
-  // Energy and time Resolution
-  const double EnergyThreshold = 0*MeV;
-  const double ResoTime = 4.5*ns ;
-  const double ResoEnergy = 0.001*MeV ;
-  const double Radius = 50*mm ; 
-  const double Width = 49.76*mm ;
-  const double Hight = 84.81*mm ;
-  const double Thickness = 164.82*mm ;
-  const string Material = "NaI";    //Change to drug it with Tl
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Dali Specific Method
-Dali::Dali(){
-  m_Event = new TDaliData() ;
-  m_DaliScorer = 0;
-  m_SquareDetector = 0;
-  m_SquareDetector_Can = 0;
-  m_SquareDetector_CanMgO =0;
-  m_CylindricalDetector = 0;
-  m_SquareDetector_Crystal = 0;
-  Logic_ArrayDali_1 =0;
-  
-  // RGB Color + Transparency
-  m_VisSquare = new G4VisAttributes(G4Colour(0, 1, 0, 0.5));   
-  m_VisCylinder = new G4VisAttributes(G4Colour(0, 0, 1, 0.5));   
-
-}
-
-Dali::~Dali(){
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Dali::AddDetector(G4ThreeVector POS, string  Shape){
-  // Convert the POS value to R theta Phi as Cylindrical coordinate is easier in G4 
-  m_R.push_back(POS.perp());
-  m_Alpha.push_back(POS.phi());
-  m_Zeta.push_back(POS.y());
-  m_Shape.push_back(Shape);
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Dali::AddDetector(double  R, double  Theta, double  Phi, string  Shape){
-
-  double m_r, m_alpha, m_zeta;
-  
-  m_r = R*cos(Phi);
-  m_alpha = Theta;
-  m_zeta = R*sin(Phi);
-       
-  m_R.push_back(m_r);
-  m_Alpha.push_back(m_alpha);
-  m_Zeta.push_back(m_zeta);
-  m_Shape.push_back(Shape);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void Dali::AddDetector2(double  R, double  Alpha, double  Zeta, string  Shape){
-  m_R.push_back(R);
-  m_Alpha.push_back(Alpha);
-  m_Zeta.push_back(Zeta);
-  m_Shape.push_back(Shape);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-
-
-G4LogicalVolume* Dali::BuildSquareDetector(){
-  if(!m_SquareDetector){
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-
-    G4Element* H       = new G4Element("Hydrogen","H" , 1., 1.01*g/mole);
-    
-    G4Isotope* Mg24 = new G4Isotope ("Mg24", 12, 24, 23.985041*g/mole);
-    G4Isotope* Mg25 = new G4Isotope ("Mg25", 12, 25, 24.985836*g/mole);
-    G4Isotope* Mg26 = new G4Isotope ("Mg26", 12, 26, 25.982592*g/mole);
-    G4Element* Mg= new G4Element("elMagnesium","Mg",3);
-    Mg->AddIsotope(Mg24, 78.99*perCent);
-    Mg->AddIsotope(Mg25, 10*perCent);
-    Mg->AddIsotope(Mg26, 11.01*perCent);
-
-    G4Isotope* O16 = new G4Isotope ("O16", 8, 16, 15.99*g/mole);
-    G4Isotope* O17 = new G4Isotope ("O17", 8, 17, 17.00*g/mole);
-    G4Isotope* O18 = new G4Isotope ("O18", 8, 18, 18.00*g/mole);
-    G4Element* O= new G4Element("elOxygen","O",3);
-    O->AddIsotope(O16, 99.76*perCent);
-    O->AddIsotope(O17, 0.04*perCent);
-    O->AddIsotope(O18, 0.20*perCent);
-
-    G4Material* MgO = new G4Material("MgO",3.6*g/cm3,2);
-    MgO->AddElement(Mg,1);
-    MgO->AddElement(O, 1);
-    
-    G4Element *elTl = new G4Element("Thallium","Tl",81.,204.383*g/mole );
-    G4Material* NaI_Tl = new G4Material("NaI_Tl",3.6667*g/cm3, 2);
-    NaI_Tl->AddMaterial(MaterialManager::getInstance()->GetMaterialFromLibrary("NaI"),99.6*perCent);
-    NaI_Tl->AddElement(elTl,0.4*perCent);
-
-
-
-
-
-    
-    G4Box* box_3can = new G4Box("Dali_3BoxCan", Dali_NS::Hight*0.5,
-                                Dali_NS::Width*0.5*3, Dali_NS::Thickness*0.5);
-    G4Material* Aria = MaterialManager::getInstance()->GetMaterialFromLibrary("Air");
-    Logic_ArrayDali_1 = new G4LogicalVolume(box_3can,Aria,"logic_ArrayDali",0,0,0);
- 
-
-    
-    G4Box* box_can = new G4Box("Dali_BoxCan", Dali_NS::Hight*0.5,
-                               Dali_NS::Width*0.5, Dali_NS::Thickness*0.5);
-    G4Material* DetectorCanMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
-    m_SquareDetector_Can = new G4LogicalVolume(box_can,DetectorCanMaterial,"logic_Dali_Can",0,0,0);
-    G4VisAttributes* Can_Attributes = new G4VisAttributes(G4Colour(0.5,0.5,0.5));
-    m_SquareDetector_Can->SetVisAttributes(Can_Attributes);
-    
-    G4Box* box_MgO = new G4Box("Dali_BoxMgO", Dali_NS::Hight*0.5-1*mm,
-                               Dali_NS::Width*0.5-1*mm, Dali_NS::Thickness*0.5-1*mm);
- 
-    m_SquareDetector_CanMgO = new G4LogicalVolume(box_MgO,MgO,"logic_Dali_CanMg0",0,0,0);
-
-    G4Box* box_crystal = new G4Box("Dali_BoxNaI", Dali_NS::Hight*0.5-2.4*mm,
-                           Dali_NS::Width*0.5-2.4*mm, Dali_NS::Thickness*0.5-2.4*mm);
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Dali_NS::Material);
-    m_SquareDetector_Crystal = new G4LogicalVolume(box_crystal,NaI_Tl,"logic_Dali_Box",0,0,0);
- 
-    G4ThreeVector positionnull = G4ThreeVector(0,0,0);
-    
-    // MgO Volume -
-    G4PVPlacement* physi_MgO = new G4PVPlacement(0, positionnull,
-                                             m_SquareDetector_CanMgO,
-                                             "MgO",
-                                             m_SquareDetector_Can,
-                                             false,
-                                             0); 
-    G4VisAttributes* MgO_Attributes = new G4VisAttributes(G4Colour(0.0,1.0,0.5));
-    m_SquareDetector_CanMgO->SetVisAttributes(MgO_Attributes);
-
-    
-    // NaI Volume -
-    G4PVPlacement* physi_NaI = new G4PVPlacement(0, positionnull,
-                                                 m_SquareDetector_Crystal,
-                                                 "Crystal NaI",
-                                                 m_SquareDetector_CanMgO,
-                                                 false,
-                                                 0); 
-
-    m_SquareDetector_Crystal->SetVisAttributes(m_VisSquare);
-    m_SquareDetector_Crystal->SetSensitiveDetector(m_DaliScorer);
-
-       G4VPhysicalVolume* ArrayDali_1 = new G4PVReplica("ArrayDali_1",
-                                                        m_SquareDetector_Can,
-                                                        Logic_ArrayDali_1 ,
-                                                        kYAxis,
-                                                        3,
-                                                        Dali_NS::Width,    //?????????
-                                                        0);
-
-
-       
-
-       
-  }
-  
-  return Logic_ArrayDali_1;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4LogicalVolume* Dali::BuildCylindricalDetector(){
-  if(!m_CylindricalDetector){
-    G4Tubs* tub = new G4Tubs("Dali_Cyl",0,Dali_NS::Radius, Dali_NS::Thickness*0.5,0,360*deg);
-
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Dali_NS::Material);
-    m_CylindricalDetector = new G4LogicalVolume(tub,DetectorMaterial,"logic_Dali_tub",0,0,0);
-    m_CylindricalDetector->SetVisAttributes(m_VisSquare);
-    m_CylindricalDetector->SetSensitiveDetector(m_DaliScorer);
-
-  }
-  return m_CylindricalDetector;
-}
-
-//....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 DetecorConstruction::ReadDetextorConfiguration Method
-void Dali::ReadConfiguration(NPL::InputParser parser){
-  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Dali");
-  if(NPOptionManager::getInstance()->GetVerboseLevel())
-    cout << "//// " << blocks.size() << " detectors found " << endl; 
-
-  vector<string> cart = {"POS","Shape"};
-  vector<string> sphe = {"R","Theta","Phi","Shape"};
-  vector<string> cyli = {"R","Alpha","Zeta","Shape"};
-
-  for(unsigned int i = 0 ; i < blocks.size() ; i++){
-    if(blocks[i]->HasTokenList(cart)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-    
-      G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("POS","mm"));
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector(Pos,Shape);
-    }
-    else if(blocks[i]->HasTokenList(sphe)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-      double R = blocks[i]->GetDouble("R","mm");
-      double Theta = blocks[i]->GetDouble("Theta","deg");
-      double Phi = blocks[i]->GetDouble("Phi","deg");
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector(R,Theta,Phi,Shape);
-    }
-    else if(blocks[i]->HasTokenList(cyli)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-      double R = blocks[i]->GetDouble("R","mm");
-      double Alpha = blocks[i]->GetDouble("Alpha","deg");
-      double Zeta = blocks[i]->GetDouble("Zeta","mm");
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector2(R,Alpha,Zeta,Shape);
-    }
-    else{
-      cout << "ERROR: check your input file formatting " << endl;
-      exit(1);
-    }
-  }
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-// Construct detector and inialise sensitive part.
-// Called After DetecorConstruction::AddDetector Method
-void Dali::ConstructDetector(G4LogicalVolume* world){    
-
-
-  
-  for (unsigned short i = 0 ; i < m_R.size() ; i++) {
-
-    G4double wX = m_R[i] * cos(m_Alpha[i] ) ; 
-    G4double wY = m_R[i] * sin(m_Alpha[i] ) ;
-    G4double wZ = m_Zeta[i];
-    G4ThreeVector Det_pos = G4ThreeVector(wX, wY, wZ) ;
-
-
-    
-    G4RotationMatrix* Rot = new G4RotationMatrix();
-
-
-
-
-    
-    if(m_Zeta[i]>0){
-      Rot->rotateY(180*deg); Rot->rotateZ(m_Alpha[i]); 
-    } else{Rot->rotateZ(m_Alpha[i]);}
-
-   
-    if(m_Shape[i] == "Cylindrical"){
-      new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-          BuildCylindricalDetector(),
-          "Dali",world,false,i+1);
-    }
-
-    else if(m_Shape[i] == "Square"){
-      new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-                        BuildSquareDetector(),
-          "Dali",world,false,i+1);
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Add Detector branch to the EventTree.
-// Called After DetecorConstruction::AddDetector Method
-void Dali::InitializeRootOutput(){
-  RootOutput *pAnalysis = RootOutput::getInstance();
-  TTree *pTree = pAnalysis->GetTree();
-  if(!pTree->FindBranch("Dali")){
-    pTree->Branch("Dali", "TDaliData", &m_Event) ;
-  }
-  pTree->SetBranchAddress("Dali", &m_Event) ;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Read sensitive part and fill the Root tree.
-// Called at in the EventAction::EndOfEventAvtion
-void Dali::ReadSensitive(const G4Event* ){
-  m_Event->Clear();
-  ///////////
-  // Calorimeter scorer
-  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_DaliScorer->GetPrimitive(0);
-
-
-  
-  unsigned int size = Scorer->GetMult();
-  // cout << "size " << size << endl;
-  for(unsigned int i = 0 ; i < size ; i++){
-    vector<unsigned int> level = Scorer->GetLevel(i); 
-    double Energy = RandGauss::shoot(Scorer->GetEnergy(i),Dali_NS::ResoEnergy);
-    // cout << Energy << endl;
-    if(Energy>Dali_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Scorer->GetTime(i),Dali_NS::ResoTime);
-      int ArrayNbr = level[1];
-      int DetectinsArrayNbr = level[0]+1;
-      int DetectorNbr = (ArrayNbr-1)*3+DetectinsArrayNbr;
-      m_Event->SetEnergy(DetectorNbr,Energy);
-      m_Event->SetTime(DetectorNbr,Time); 
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////   
-void Dali::InitializeScorers() { 
-  // This check is necessary in case the geometry is reloaded
-  bool already_exist = false;
-  vector<G4int> NestingLevel;
-  NestingLevel.push_back(2);
-  NestingLevel.push_back(3);
-  
-  m_DaliScorer = CheckScorer("DaliScorer",already_exist) ;
-
-  if(already_exist) 
-    return ;
-
-  // Otherwise the scorer is initialised
-  //vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter", NestingLevel) ;
-  G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ;
-  //and register it to the multifunctionnal detector
-  m_DaliScorer->RegisterPrimitive(Calorimeter);
-  m_DaliScorer->RegisterPrimitive(Interaction);
-  G4SDManager::GetSDMpointer()->AddNewDetector(m_DaliScorer) ;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////////////////////
-//            Construct Method to be pass to the DetectorFactory              //
-////////////////////////////////////////////////////////////////////////////////
-NPS::VDetector* Dali::Construct(){
-  return  (NPS::VDetector*) new Dali();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////////////////////
-//            Registering the construct method to the factory                 //
-////////////////////////////////////////////////////////////////////////////////
-extern"C" {
-  class proxy_nps_Dali{
-    public:
-      proxy_nps_Dali(){
-        NPS::DetectorFactory::getInstance()->AddToken("Dali","Dali");
-        NPS::DetectorFactory::getInstance()->AddDetector("Dali",Dali::Construct);
-      }
-  };
-
-  proxy_nps_Dali p_nps_Dali;
-}
diff --git a/NPSimulation/Detectors/Dali/Dali.cc.~1~ b/NPSimulation/Detectors/Dali/Dali.cc.~1~
deleted file mode 100644
index f81da00736576d00f5df26274f3785123725ae43..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/Dali.cc.~1~
+++ /dev/null
@@ -1,292 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
- *                                                                           *
- * Creation Date  : septembre 2018                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class describe  Dali 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 "G4Transform3D.hh"
-#include "G4PVPlacement.hh"
-#include "G4VisAttributes.hh"
-#include "G4Colour.hh"
-
-// NPTool header
-#include "Dali.hh"
-#include "CalorimeterScorers.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"
-
-using namespace std;
-using namespace CLHEP;
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-namespace Dali_NS{
-  // Energy and time Resolution
-  const double EnergyThreshold = 0.1*MeV;
-  const double ResoTime = 4.5*ns ;
-  const double ResoEnergy = 1.0*MeV ;
-  const double Radius = 50*mm ; 
-  const double Width = 100*mm ;
-  const double Thickness = 300*mm ;
-  const string Material = "NaI";
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Dali Specific Method
-Dali::Dali(){
-  m_Event = new TDaliData() ;
-  m_DaliScorer = 0;
-  m_SquareDetector = 0;
-  m_CylindricalDetector = 0;
-
-
-  // RGB Color + Transparency
-  m_VisSquare = new G4VisAttributes(G4Colour(0, 1, 0, 0.5));   
-  m_VisCylinder = new G4VisAttributes(G4Colour(0, 0, 1, 0.5));   
-
-}
-
-Dali::~Dali(){
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Dali::AddDetector(G4ThreeVector POS, string  Shape){
-  // Convert the POS value to R theta Phi as Spherical coordinate is easier in G4 
-  m_R.push_back(POS.mag());
-  m_Theta.push_back(POS.theta());
-  m_Phi.push_back(POS.phi());
-  m_Shape.push_back(Shape);
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Dali::AddDetector(double  R, double  Theta, double  Phi, string  Shape){
-  m_R.push_back(R);
-  m_Theta.push_back(Theta);
-  m_Phi.push_back(Phi);
-  m_Shape.push_back(Shape);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4LogicalVolume* Dali::BuildSquareDetector(){
-  if(!m_SquareDetector){
-    G4Box* box = new G4Box("Dali_Box",Dali_NS::Width*0.5,
-        Dali_NS::Width*0.5,Dali_NS::Thickness*0.5);
-
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Dali_NS::Material);
-    m_SquareDetector = new G4LogicalVolume(box,DetectorMaterial,"logic_Dali_Box",0,0,0);
-    m_SquareDetector->SetVisAttributes(m_VisSquare);
-    m_SquareDetector->SetSensitiveDetector(m_DaliScorer);
-  }
-  return m_SquareDetector;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4LogicalVolume* Dali::BuildCylindricalDetector(){
-  if(!m_CylindricalDetector){
-    G4Tubs* tub = new G4Tubs("Dali_Cyl",0,Dali_NS::Radius,Dali_NS::Thickness*0.5,0,360*deg);
-
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Dali_NS::Material);
-    m_CylindricalDetector = new G4LogicalVolume(tub,DetectorMaterial,"logic_Dali_tub",0,0,0);
-    m_CylindricalDetector->SetVisAttributes(m_VisSquare);
-    m_CylindricalDetector->SetSensitiveDetector(m_DaliScorer);
-
-  }
-  return m_CylindricalDetector;
-}
-
-//....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 DetecorConstruction::ReadDetextorConfiguration Method
-void Dali::ReadConfiguration(NPL::InputParser parser){
-  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Dali");
-  if(NPOptionManager::getInstance()->GetVerboseLevel())
-    cout << "//// " << blocks.size() << " detectors found " << endl; 
-
-  vector<string> cart = {"POS","Shape"};
-  vector<string> sphe = {"R","Theta","Phi","Shape"};
-
-  for(unsigned int i = 0 ; i < blocks.size() ; i++){
-    if(blocks[i]->HasTokenList(cart)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-    
-      G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("POS","mm"));
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector(Pos,Shape);
-    }
-    else if(blocks[i]->HasTokenList(sphe)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-      double R = blocks[i]->GetDouble("R","mm");
-      double Theta = blocks[i]->GetDouble("Theta","deg");
-      double Phi = blocks[i]->GetDouble("Phi","deg");
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector(R,Theta,Phi,Shape);
-    }
-    else{
-      cout << "ERROR: check your input file formatting " << endl;
-      exit(1);
-    }
-  }
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-// Construct detector and inialise sensitive part.
-// Called After DetecorConstruction::AddDetector Method
-void Dali::ConstructDetector(G4LogicalVolume* world){
-  for (unsigned short i = 0 ; i < m_R.size() ; i++) {
-
-    G4double wX = m_R[i] * sin(m_Theta[i] ) * cos(m_Phi[i] ) ;
-    G4double wY = m_R[i] * sin(m_Theta[i] ) * sin(m_Phi[i] ) ;
-    G4double wZ = m_R[i] * cos(m_Theta[i] ) ;
-    G4ThreeVector Det_pos = G4ThreeVector(wX, wY, wZ) ;
-    // So the face of the detector is at R instead of the middle
-    Det_pos+=Det_pos.unit()*Dali_NS::Thickness*0.5;
-    // Building Detector reference frame
-    G4double ii = cos(m_Theta[i]) * cos(m_Phi[i]);
-    G4double jj = cos(m_Theta[i]) * sin(m_Phi[i]);
-    G4double kk = -sin(m_Theta[i]);
-    G4ThreeVector Y(ii,jj,kk);
-    G4ThreeVector w = Det_pos.unit();
-    G4ThreeVector u = w.cross(Y);
-    G4ThreeVector v = w.cross(u);
-    v = v.unit();
-    u = u.unit();
-
-    G4RotationMatrix* Rot = new G4RotationMatrix(u,v,w);
-
-    if(m_Shape[i] == "Cylindrical"){
-      new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-          BuildCylindricalDetector(),
-          "Dali",world,false,i+1);
-    }
-
-    else if(m_Shape[i] == "Square"){
-      new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-          BuildSquareDetector(),
-          "Dali",world,false,i+1);
-    }
-  }
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Add Detector branch to the EventTree.
-// Called After DetecorConstruction::AddDetector Method
-void Dali::InitializeRootOutput(){
-  RootOutput *pAnalysis = RootOutput::getInstance();
-  TTree *pTree = pAnalysis->GetTree();
-  if(!pTree->FindBranch("Dali")){
-    pTree->Branch("Dali", "TDaliData", &m_Event) ;
-  }
-  pTree->SetBranchAddress("Dali", &m_Event) ;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Read sensitive part and fill the Root tree.
-// Called at in the EventAction::EndOfEventAvtion
-void Dali::ReadSensitive(const G4Event* ){
-  m_Event->Clear();
-
-  ///////////
-  // Calorimeter scorer
-  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_DaliScorer->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),Dali_NS::ResoEnergy);
-    if(Energy>Dali_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Scorer->GetTime(i),Dali_NS::ResoTime);
-      int DetectorNbr = level[0];
-      m_Event->SetEnergy(DetectorNbr,Energy);
-      m_Event->SetTime(DetectorNbr,Time); 
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////   
-void Dali::InitializeScorers() { 
-  // This check is necessary in case the geometry is reloaded
-  bool already_exist = false; 
-  m_DaliScorer = CheckScorer("DaliScorer",already_exist) ;
-
-  if(already_exist) 
-    return ;
-
-  // Otherwise the scorer is initialised
-  vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level, 0) ;
-  G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ;
-  //and register it to the multifunctionnal detector
-  m_DaliScorer->RegisterPrimitive(Calorimeter);
-  m_DaliScorer->RegisterPrimitive(Interaction);
-  G4SDManager::GetSDMpointer()->AddNewDetector(m_DaliScorer) ;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////////////////////
-//            Construct Method to be pass to the DetectorFactory              //
-////////////////////////////////////////////////////////////////////////////////
-NPS::VDetector* Dali::Construct(){
-  return  (NPS::VDetector*) new Dali();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////////////////////
-//            Registering the construct method to the factory                 //
-////////////////////////////////////////////////////////////////////////////////
-extern"C" {
-  class proxy_nps_Dali{
-    public:
-      proxy_nps_Dali(){
-        NPS::DetectorFactory::getInstance()->AddToken("Dali","Dali");
-        NPS::DetectorFactory::getInstance()->AddDetector("Dali",Dali::Construct);
-      }
-  };
-
-  proxy_nps_Dali p_nps_Dali;
-}
diff --git a/NPSimulation/Detectors/Dali/Dali.cc.~2~ b/NPSimulation/Detectors/Dali/Dali.cc.~2~
deleted file mode 100644
index 5923ec94df6825c9cdb5ede5b892988bb5034191..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/Dali.cc.~2~
+++ /dev/null
@@ -1,294 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
- *                                                                           *
- * Creation Date  : septembre 2018                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class describe  Dali 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 "G4Transform3D.hh"
-#include "G4PVPlacement.hh"
-#include "G4VisAttributes.hh"
-#include "G4Colour.hh"
-
-// NPTool header
-#include "Dali.hh"
-#include "CalorimeterScorers.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"
-
-using namespace std;
-using namespace CLHEP;
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-namespace Dali_NS{
-  // Energy and time Resolution
-  const double EnergyThreshold = 0.1*MeV;
-  const double ResoTime = 4.5*ns ;
-  const double ResoEnergy = 1.0*MeV ;
-  const double Radius = 50*mm ; 
-  const double Width = 44.96*mm ;
-  const double Hight = 160.02*mm ;
-  const double Thickness = 80.01*mm ;
-  const string Material = "NaI(Tl)";
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Dali Specific Method
-Dali::Dali(){
-  m_Event = new TDaliData() ;
-  m_DaliScorer = 0;
-  m_SquareDetector = 0;
-  m_CylindricalDetector = 0;
-
-
-  // RGB Color + Transparency
-  m_VisSquare = new G4VisAttributes(G4Colour(0, 1, 0, 0.5));   
-  m_VisCylinder = new G4VisAttributes(G4Colour(0, 0, 1, 0.5));   
-
-}
-
-Dali::~Dali(){
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Dali::AddDetector(G4ThreeVector POS, string  Shape){
-  // Convert the POS value to R theta Phi as Spherical coordinate is easier in G4 
-  m_R.push_back(POS.mag());
-  m_Theta.push_back(POS.theta());
-  m_Phi.push_back(POS.phi());
-  m_Shape.push_back(Shape);
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Dali::AddDetector(double  R, double  Theta, double  Phi, string  Shape){
-  m_R.push_back(R);
-  m_Theta.push_back(Theta);
-  m_Phi.push_back(Phi);
-  m_Shape.push_back(Shape);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4LogicalVolume* Dali::BuildSquareDetector(){
-  if(!m_SquareDetector){
-    G4Box* box = new G4Box("Dali_Box", Dali_NS::Width*0.5,
-                                                             Dali_NS::Hight*0.5, Dali_NS::Thickness*0.5);
-
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Dali_NS::Material);
-    m_SquareDetector = new G4LogicalVolume(box,DetectorMaterial,"logic_Dali_Box",0,0,0);
-    m_SquareDetector_Can = new G4LogicalVolume(box,DetectorMaterial,"logic_Dali_Can",0,0,0);
-    m_SquareDetector->SetVisAttributes(m_VisSquare);
-    m_SquareDetector->SetSensitiveDetector(m_DaliScorer);
-  }
-  return m_SquareDetector;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4LogicalVolume* Dali::BuildCylindricalDetector(){
-  if(!m_CylindricalDetector){
-    G4Tubs* tub = new G4Tubs("Dali_Cyl",0,Dali_NS::Radius, Dali_NS::Thickness*0.5,0,360*deg);
-
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Dali_NS::Material);
-    m_CylindricalDetector = new G4LogicalVolume(tub,DetectorMaterial,"logic_Dali_tub",0,0,0);
-    m_CylindricalDetector->SetVisAttributes(m_VisSquare);
-    m_CylindricalDetector->SetSensitiveDetector(m_DaliScorer);
-
-  }
-  return m_CylindricalDetector;
-}
-
-//....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 DetecorConstruction::ReadDetextorConfiguration Method
-void Dali::ReadConfiguration(NPL::InputParser parser){
-  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Dali");
-  if(NPOptionManager::getInstance()->GetVerboseLevel())
-    cout << "//// " << blocks.size() << " detectors found " << endl; 
-
-  vector<string> cart = {"POS","Shape"};
-  vector<string> sphe = {"R","Theta","Phi","Shape"};
-
-  for(unsigned int i = 0 ; i < blocks.size() ; i++){
-    if(blocks[i]->HasTokenList(cart)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-    
-      G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("POS","mm"));
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector(Pos,Shape);
-    }
-    else if(blocks[i]->HasTokenList(sphe)){
-      if(NPOptionManager::getInstance()->GetVerboseLevel())
-        cout << endl << "////  Dali " << i+1 <<  endl;
-      double R = blocks[i]->GetDouble("R","mm");
-      double Theta = blocks[i]->GetDouble("Theta","deg");
-      double Phi = blocks[i]->GetDouble("Phi","deg");
-      string Shape = blocks[i]->GetString("Shape");
-      AddDetector(R,Theta,Phi,Shape);
-    }
-    else{
-      cout << "ERROR: check your input file formatting " << endl;
-      exit(1);
-    }
-  }
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-// Construct detector and inialise sensitive part.
-// Called After DetecorConstruction::AddDetector Method
-void Dali::ConstructDetector(G4LogicalVolume* world){
-  for (unsigned short i = 0 ; i < m_R.size() ; i++) {
-
-    G4double wX = m_R[i] * sin(m_Theta[i] ) * cos(m_Phi[i] ) ;
-    G4double wY = m_R[i] * sin(m_Theta[i] ) * sin(m_Phi[i] ) ;
-    G4double wZ = m_R[i] * cos(m_Theta[i] ) ;
-    G4ThreeVector Det_pos = G4ThreeVector(wX, wY, wZ) ;
-    // So the face of the detector is at R instead of the middle
-    Det_pos+=Det_pos.unit()*Dali_NS::Thickness*0.5;
-    // Building Detector reference frame
-    G4double ii = cos(m_Theta[i]) * cos(m_Phi[i]);
-    G4double jj = cos(m_Theta[i]) * sin(m_Phi[i]);
-    G4double kk = -sin(m_Theta[i]);
-    G4ThreeVector Y(ii,jj,kk);
-    G4ThreeVector w = Det_pos.unit();
-    G4ThreeVector u = w.cross(Y);
-    G4ThreeVector v = w.cross(u);
-    v = v.unit();
-    u = u.unit();
-
-    G4RotationMatrix* Rot = new G4RotationMatrix(u,v,w);
-
-    if(m_Shape[i] == "Cylindrical"){
-      new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-          BuildCylindricalDetector(),
-          "Dali",world,false,i+1);
-    }
-
-    else if(m_Shape[i] == "Square"){
-      new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-          BuildSquareDetector(),
-          "Dali",world,false,i+1);
-    }
-  }
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Add Detector branch to the EventTree.
-// Called After DetecorConstruction::AddDetector Method
-void Dali::InitializeRootOutput(){
-  RootOutput *pAnalysis = RootOutput::getInstance();
-  TTree *pTree = pAnalysis->GetTree();
-  if(!pTree->FindBranch("Dali")){
-    pTree->Branch("Dali", "TDaliData", &m_Event) ;
-  }
-  pTree->SetBranchAddress("Dali", &m_Event) ;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Read sensitive part and fill the Root tree.
-// Called at in the EventAction::EndOfEventAvtion
-void Dali::ReadSensitive(const G4Event* ){
-  m_Event->Clear();
-
-  ///////////
-  // Calorimeter scorer
-  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_DaliScorer->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),Dali_NS::ResoEnergy);
-    if(Energy>Dali_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Scorer->GetTime(i),Dali_NS::ResoTime);
-      int DetectorNbr = level[0];
-      m_Event->SetEnergy(DetectorNbr,Energy);
-      m_Event->SetTime(DetectorNbr,Time); 
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////   
-void Dali::InitializeScorers() { 
-  // This check is necessary in case the geometry is reloaded
-  bool already_exist = false; 
-  m_DaliScorer = CheckScorer("DaliScorer",already_exist) ;
-
-  if(already_exist) 
-    return ;
-
-  // Otherwise the scorer is initialised
-  vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level, 0) ;
-  G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ;
-  //and register it to the multifunctionnal detector
-  m_DaliScorer->RegisterPrimitive(Calorimeter);
-  m_DaliScorer->RegisterPrimitive(Interaction);
-  G4SDManager::GetSDMpointer()->AddNewDetector(m_DaliScorer) ;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////////////////////
-//            Construct Method to be pass to the DetectorFactory              //
-////////////////////////////////////////////////////////////////////////////////
-NPS::VDetector* Dali::Construct(){
-  return  (NPS::VDetector*) new Dali();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-////////////////////////////////////////////////////////////////////////////////
-//            Registering the construct method to the factory                 //
-////////////////////////////////////////////////////////////////////////////////
-extern"C" {
-  class proxy_nps_Dali{
-    public:
-      proxy_nps_Dali(){
-        NPS::DetectorFactory::getInstance()->AddToken("Dali","Dali");
-        NPS::DetectorFactory::getInstance()->AddDetector("Dali",Dali::Construct);
-      }
-  };
-
-  proxy_nps_Dali p_nps_Dali;
-}
diff --git a/NPSimulation/Detectors/Dali/Dali.hh b/NPSimulation/Detectors/Dali/Dali.hh
index 601a021de82e2e32760ac010b6e9a2370b928c79..2da7f65861611b9157b8b92a4a9ecf012c10de54 100644
--- a/NPSimulation/Detectors/Dali/Dali.hh
+++ b/NPSimulation/Detectors/Dali/Dali.hh
@@ -63,9 +63,15 @@ class Dali : public NPS::VDetector{
   private:
     G4LogicalVolume* m_SquareDetector;
     G4LogicalVolume* m_SquareDetector_Can;
+    G4LogicalVolume* m_Square2Detector_Can;
     G4LogicalVolume* m_CylindricalDetector;
     G4LogicalVolume*  m_SquareDetector_CanMgO;
     G4LogicalVolume*  m_SquareDetector_Crystal;
+    G4LogicalVolume* lAlPMT;
+    G4LogicalVolume* lMuPMT;
+    G4LogicalVolume* lTopPlatePMT;
+    G4LogicalVolume* lGlassPMT;
+    G4LogicalVolume* AriaExtrude;
     G4LogicalVolume* Logic_ArrayDali_1;
 
     ////////////////////////////////////////////////////
diff --git a/NPSimulation/Detectors/Dali/Dali.hh.~1~ b/NPSimulation/Detectors/Dali/Dali.hh.~1~
deleted file mode 100644
index 2a0df874836328a57c77b2c38903d99fc026a850..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/Dali.hh.~1~
+++ /dev/null
@@ -1,117 +0,0 @@
-#ifndef Dali_h
-#define Dali_h 1
-/*****************************************************************************
- * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
- *                                                                           *
- * Creation Date  : septembre 2018                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class describe  Dali 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"
-
-// NPTool header
-#include "NPSVDetector.hh"
-#include "TDaliData.h"
-#include "NPInputParser.h"
-
-class Dali : public NPS::VDetector{
-  ////////////////////////////////////////////////////
-  /////// Default Constructor and Destructor /////////
-  ////////////////////////////////////////////////////
-  public:
-    Dali() ;
-    virtual ~Dali() ;
-
-    ////////////////////////////////////////////////////
-    /////// Specific Function of this Class ///////////
-    ////////////////////////////////////////////////////
-  public:
-    // Cartesian
-    void AddDetector(G4ThreeVector POS, string Shape);
-    // Spherical
-    void AddDetector(double R,double Theta,double Phi,string Shape);  
-
-
-    G4LogicalVolume* BuildSquareDetector();
-    G4LogicalVolume* BuildCylindricalDetector();
-  
-  private:
-    G4LogicalVolume* m_SquareDetector;
-    G4LogicalVolume* m_CylindricalDetector;
-    
-    ////////////////////////////////////////////////////
-    //////  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 DetecorConstruction::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_DaliScorer ;
-    ////////////////////////////////////////////////////
-    ///////////Event class to store Data////////////////
-    ////////////////////////////////////////////////////
-  private:
-    TDaliData* m_Event ;
-
-    ////////////////////////////////////////////////////
-    ///////////////Private intern Data//////////////////
-    ////////////////////////////////////////////////////
-  private: // Geometry
-    // Detector Coordinate 
-    vector<double>  m_R; 
-    vector<double>  m_Theta;
-    vector<double>  m_Phi; 
-    
-    //   Shape type
-    vector<string> m_Shape ;
-   
-    // Visualisation Attribute
-    G4VisAttributes* m_VisSquare;
-    G4VisAttributes* m_VisCylinder;
-
-  // Needed for dynamic loading of the library
-  public:
-    static NPS::VDetector* Construct();
-};
-#endif
diff --git a/NPSimulation/Detectors/Dali/Dali.hh.~2~ b/NPSimulation/Detectors/Dali/Dali.hh.~2~
deleted file mode 100644
index ddbb44ac30f6946bda987e15c099cce89f2a1c20..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/Dali.hh.~2~
+++ /dev/null
@@ -1,119 +0,0 @@
-#ifndef Dali_h
-#define Dali_h 1
-/*****************************************************************************
- * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
- *                                                                           *
- * Creation Date  : septembre 2018                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class describe  Dali 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"
-
-// NPTool header
-#include "NPSVDetector.hh"
-#include "TDaliData.h"
-#include "NPInputParser.h"
-
-class Dali : public NPS::VDetector{
-  ////////////////////////////////////////////////////
-  /////// Default Constructor and Destructor /////////
-  ////////////////////////////////////////////////////
-  public:
-    Dali() ;
-    virtual ~Dali() ;
-
-    ////////////////////////////////////////////////////
-    /////// Specific Function of this Class ///////////
-    ////////////////////////////////////////////////////
-  public:
-    // Cartesian
-    void AddDetector(G4ThreeVector POS, string Shape);
-    // Spherical
-    void AddDetector(double R,double Theta,double Phi,string Shape);  
-
-
-    G4LogicalVolume* BuildSquareDetector();
-    G4LogicalVolume* BuildCylindricalDetector();
-  
-  private:
-    G4LogicalVolume* m_SquareDetector;
-  G4LogicalVolume* m_SquareDetector_Can;
-    G4LogicalVolume* m_CylindricalDetector;
-  G4LogicalVolume*  m_SquareDetector_CanMgO;
-  
-    ////////////////////////////////////////////////////
-    //////  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 DetecorConstruction::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_DaliScorer ;
-    ////////////////////////////////////////////////////
-    ///////////Event class to store Data////////////////
-    ////////////////////////////////////////////////////
-  private:
-    TDaliData* m_Event ;
-
-    ////////////////////////////////////////////////////
-    ///////////////Private intern Data//////////////////
-    ////////////////////////////////////////////////////
-  private: // Geometry
-    // Detector Coordinate 
-    vector<double>  m_R; 
-    vector<double>  m_Theta;
-    vector<double>  m_Phi; 
-    
-    //   Shape type
-    vector<string> m_Shape ;
-   
-    // Visualisation Attribute
-    G4VisAttributes* m_VisSquare;
-    G4VisAttributes* m_VisCylinder;
-
-  // Needed for dynamic loading of the library
-  public:
-    static NPS::VDetector* Construct();
-};
-#endif
diff --git a/NPSimulation/Detectors/Dali/Dali.hh.~3~ b/NPSimulation/Detectors/Dali/Dali.hh.~3~
deleted file mode 100644
index 3e37e84519fd2c0c15e6a47409b7b7f97fdb166b..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/Dali.hh.~3~
+++ /dev/null
@@ -1,121 +0,0 @@
-#ifndef Dali_h
-#define Dali_h 1
-/*****************************************************************************
- * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
- *                                                                           *
- * Creation Date  : septembre 2018                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class describe  Dali 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"
-
-// NPTool header
-#include "NPSVDetector.hh"
-#include "TDaliData.h"
-#include "NPInputParser.h"
-
-class Dali : public NPS::VDetector{
-  ////////////////////////////////////////////////////
-  /////// Default Constructor and Destructor /////////
-  ////////////////////////////////////////////////////
-  public:
-    Dali() ;
-    virtual ~Dali() ;
-
-    ////////////////////////////////////////////////////
-    /////// Specific Function of this Class ///////////
-    ////////////////////////////////////////////////////
-  public:
-    // Cartesian
-    void AddDetector(G4ThreeVector POS, string Shape);
-    // Spherical
-    void AddDetector(double R,double Theta,double Phi,string Shape);  
-
-
-    G4LogicalVolume* BuildSquareDetector();
-    G4LogicalVolume* BuildCylindricalDetector();
-  
-  private:
-    G4LogicalVolume* m_SquareDetector;
-    G4LogicalVolume* m_SquareDetector_Can;
-    G4LogicalVolume* m_CylindricalDetector;
-    G4LogicalVolume*  m_SquareDetector_CanMgO;
-    G4LogicalVolume*  m_SquareDetector_Crystal;
-    G4LogicalVolume* Logic_ArrayDali_1;
-
-    ////////////////////////////////////////////////////
-    //////  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 DetecorConstruction::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_DaliScorer ;
-    ////////////////////////////////////////////////////
-    ///////////Event class to store Data////////////////
-    ////////////////////////////////////////////////////
-  private:
-    TDaliData* m_Event ;
-
-    ////////////////////////////////////////////////////
-    ///////////////Private intern Data//////////////////
-    ////////////////////////////////////////////////////
-  private: // Geometry
-    // Detector Coordinate 
-    vector<double>  m_R; 
-    vector<double>  m_Theta;
-    vector<double>  m_Phi; 
-    
-    //   Shape type
-    vector<string> m_Shape ;
-   
-    // Visualisation Attribute
-    G4VisAttributes* m_VisSquare;
-    G4VisAttributes* m_VisCylinder;
-
-  // Needed for dynamic loading of the library
-  public:
-    static NPS::VDetector* Construct();
-};
-#endif
diff --git a/NPSimulation/Detectors/Dali/Dali.hh.~4~ b/NPSimulation/Detectors/Dali/Dali.hh.~4~
deleted file mode 100644
index 3bb254f29d76ccc7639fc1c716998c230b0f6cd2..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/Dali.hh.~4~
+++ /dev/null
@@ -1,122 +0,0 @@
-#ifndef Dali_h
-#define Dali_h 1
-/*****************************************************************************
- * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
- *                                                                           *
- * Creation Date  : septembre 2018                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class describe  Dali 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"
-
-// NPTool header
-#include "NPSVDetector.hh"
-#include "TDaliData.h"
-#include "NPInputParser.h"
-
-class Dali : public NPS::VDetector{
-  ////////////////////////////////////////////////////
-  /////// Default Constructor and Destructor /////////
-  ////////////////////////////////////////////////////
-  public:
-    Dali() ;
-    virtual ~Dali() ;
-
-    ////////////////////////////////////////////////////
-    /////// Specific Function of this Class ///////////
-    ////////////////////////////////////////////////////
-  public:
-    // Cartesian
-    void AddDetector(G4ThreeVector POS, string Shape);
-    // Spherical
-    void AddDetector(double R,double Theta,double Phi,string Shape);  
-    //Cylindrical
-    void AddDetector(double R,double Alpha,double Zeta,string Shape);  
-
-    G4LogicalVolume* BuildSquareDetector();
-    G4LogicalVolume* BuildCylindricalDetector();
-  
-  private:
-    G4LogicalVolume* m_SquareDetector;
-    G4LogicalVolume* m_SquareDetector_Can;
-    G4LogicalVolume* m_CylindricalDetector;
-    G4LogicalVolume*  m_SquareDetector_CanMgO;
-    G4LogicalVolume*  m_SquareDetector_Crystal;
-    G4LogicalVolume* Logic_ArrayDali_1;
-
-    ////////////////////////////////////////////////////
-    //////  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 DetecorConstruction::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_DaliScorer ;
-    ////////////////////////////////////////////////////
-    ///////////Event class to store Data////////////////
-    ////////////////////////////////////////////////////
-  private:
-    TDaliData* m_Event ;
-
-    ////////////////////////////////////////////////////
-    ///////////////Private intern Data//////////////////
-    ////////////////////////////////////////////////////
-  private: // Geometry
-    // Detector Coordinate 
-    vector<double>  m_R; 
-    vector<double>  m_Zeta;
-    vector<double>  m_Alpha; 
-    
-    //   Shape type
-    vector<string> m_Shape ;
-   
-    // Visualisation Attribute
-    G4VisAttributes* m_VisSquare;
-    G4VisAttributes* m_VisCylinder;
-
-  // Needed for dynamic loading of the library
-  public:
-    static NPS::VDetector* Construct();
-};
-#endif
diff --git a/NPSimulation/Detectors/Dali/Dali.hh.~5~ b/NPSimulation/Detectors/Dali/Dali.hh.~5~
deleted file mode 100644
index e33d910378e3b3b0ef8d92ad5a87a69404d29142..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/Dali.hh.~5~
+++ /dev/null
@@ -1,123 +0,0 @@
-#ifndef Dali_h
-#define Dali_h 1
-/*****************************************************************************
- * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: elidiano.tronchin@studenti.unipd.it                        *
- *                                                                           *
- * Creation Date  : septembre 2018                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class describe  Dali simulation                             *
- *                                                                           *
- *---------------------------------------------------------------------------*
- * Comment:                                                                  *
- *                                                                           *
- *****************************************************************************/
-
-// C++ header
-#include <string>
-#include <vector>
-#include <cmath>
-using namespace std;
-
-// G4 headers
-#include "G4ThreeVector.hh"
-#include "G4RotationMatrix.hh"
-#include "G4LogicalVolume.hh"
-#include "G4MultiFunctionalDetector.hh"
-
-// NPTool header
-#include "NPSVDetector.hh"
-#include "TDaliData.h"
-#include "NPInputParser.h"
-
-class Dali : public NPS::VDetector{
-  ////////////////////////////////////////////////////
-  /////// Default Constructor and Destructor /////////
-  ////////////////////////////////////////////////////
-  public:
-    Dali() ;
-    virtual ~Dali() ;
-
-    ////////////////////////////////////////////////////
-    /////// Specific Function of this Class ///////////
-    ////////////////////////////////////////////////////
-  public:
-    // Cartesian
-    void AddDetector(G4ThreeVector POS, string Shape);
-    // Spherical
-    void AddDetector(double R,double Theta,double Phi,string Shape);  
-    //Cylindrical
-    void AddDetector2(double R,double Alpha,double Zeta,string Shape);  
-
-    G4LogicalVolume* BuildSquareDetector();
-    G4LogicalVolume* BuildCylindricalDetector();
-  
-  private:
-    G4LogicalVolume* m_SquareDetector;
-    G4LogicalVolume* m_SquareDetector_Can;
-    G4LogicalVolume* m_CylindricalDetector;
-    G4LogicalVolume*  m_SquareDetector_CanMgO;
-    G4LogicalVolume*  m_SquareDetector_Crystal;
-    G4LogicalVolume* Logic_ArrayDali_1;
-
-    ////////////////////////////////////////////////////
-    //////  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 DetecorConstruction::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_DaliScorer ;
-    ////////////////////////////////////////////////////
-    ///////////Event class to store Data////////////////
-    ////////////////////////////////////////////////////
-  private:
-    TDaliData* m_Event ;
-
-    ////////////////////////////////////////////////////
-    ///////////////Private intern Data//////////////////
-    ////////////////////////////////////////////////////
-  private: // Geometry
-    // Detector Coordinate 
-    vector<double>  m_Zeta;
-    vector<double>  m_R; 
-    vector<double>  m_Alpha; 
-    
-    //   Shape type
-    vector<string> m_Shape ;
-   
-    // Visualisation Attribute
-    G4VisAttributes* m_VisSquare;
-    G4VisAttributes* m_VisCylinder;
-
-  // Needed for dynamic loading of the library
-  public:
-    static NPS::VDetector* Construct();
-};
-#endif
diff --git a/NPSimulation/Detectors/Dali/nomeoke.C b/NPSimulation/Detectors/Dali/nomeoke.C
deleted file mode 100644
index 472031271a0da973e246a78598b2b09feaac2fcb..0000000000000000000000000000000000000000
--- a/NPSimulation/Detectors/Dali/nomeoke.C
+++ /dev/null
@@ -1,4 +0,0 @@
-void nomeoke()
-{
-   TEveManager::Create();
-}
diff --git a/NPSimulation/Detectors/Minos/Minos.cc b/NPSimulation/Detectors/Minos/Minos.cc
index b6e47eb399edd72c63440126052c5a2c4ba1234f..bd1407a50cba2f0ef11e609b949ff018adaa53f5 100644
--- a/NPSimulation/Detectors/Minos/Minos.cc
+++ b/NPSimulation/Detectors/Minos/Minos.cc
@@ -1,18 +1,18 @@
 /*****************************************************************************
- * Copyright (C) 2009-2018   this file is part of the NPTool Project       *
+ * Copyright (C) 2009-2018   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: Elidiano Tronchin  contact address: tronchin@lpccaen.in2p3.fr                        *
+ * Original Author: E. Tronchin  contact address: tronchin@lpccaen.in2p3.fr  *
  *                                                                           *
- * Creation Date  : October 2018                                           *
+ * Creation Date  : October 2018                                             *
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class describe  Minos simulation                             *
+ *  This class describe  Minos simulation                                    *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
@@ -42,6 +42,8 @@
 #include "Minos.hh"
 #include "CalorimeterScorers.hh"
 #include "InteractionScorers.hh"
+#include "TPCScorers.hh"
+
 #include "RootOutput.h"
 #include "MaterialManager.hh"
 #include "NPSDetectorFactory.hh"
@@ -72,14 +74,33 @@ namespace Minos_NS{
 // Minos Specific Method
 Minos::Minos(){
   m_Event = new TMinosData() ;
-  m_MinosScorer = 0;
+  m_MinosTargetScorer = 0;
+  m_MinosTPCScorer = 0;
   m_SquareDetector = 0;
   m_CylindricalDetector = 0;
-
+  m_ReactionRegion=NULL;
 
   // RGB Color + Transparency
   m_VisSquare = new G4VisAttributes(G4Colour(0, 1, 0, 0.5));   
   m_VisCylinder = new G4VisAttributes(G4Colour(0, 0, 1, 0.5));   
+  solidTarget=0;   
+  logicTarget=0;   
+  solidChamber=0;  
+  logicChamber=0;  
+  solidTPC=0; 
+  logicTPC=0; 
+  solidWindow0=0; 
+  logicWindow0=0; 
+  solidWindow1=0; 
+  logicWindow1=0; 
+  solidWindow2=0; 
+  logicWindow2=0; 
+  solidInnerRohacell=0;   
+  logicInnerRohacell=0;   
+  solidOuterRohacell=0;   
+  logicOuterRohacell=0;   
+  solidKapton=0;   
+  logicKapton=0;   
 
 }
 
@@ -104,18 +125,18 @@ void Minos::AddDetector(double  R, double  Theta, double  Phi, string  Shape){
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4LogicalVolume* Minos::BuildSquareDetector(){
-  if(!m_SquareDetector){
-    G4Box* box = new G4Box("Minos_Box",Minos_NS::Width*0.5,
-        Minos_NS::Width*0.5,Minos_NS::Thickness*0.5);
-
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Minos_NS::Material);
-    m_SquareDetector = new G4LogicalVolume(box,DetectorMaterial,"logic_Minos_Box",0,0,0);
-    m_SquareDetector->SetVisAttributes(m_VisSquare);
-    m_SquareDetector->SetSensitiveDetector(m_MinosScorer);
-  }
-  return m_SquareDetector;
-}
+// G4LogicalVolume* Minos::BuildSquareDetector(){
+//   if(!m_SquareDetector){
+//     G4Box* box = new G4Box("Minos_Box",Minos_NS::Width*0.5,
+//         Minos_NS::Width*0.5,Minos_NS::Thickness*0.5);
+
+//     G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Minos_NS::Material);
+//     m_SquareDetector = new G4LogicalVolume(box,DetectorMaterial,"logic_Minos_Box",0,0,0);
+//     m_SquareDetector->SetVisAttributes(m_VisSquare);
+//     m_SquareDetector->SetSensitiveDetector(m_MinosTargetScorer);
+//   }
+//   return m_SquareDetector;
+// }
 
 
 
@@ -124,18 +145,18 @@ G4LogicalVolume* Minos::BuildSquareDetector(){
 void Minos::DefineMaterials()
 { 
   //This function illustrates the possible ways to define materials
-  
+
   G4String symbol;             //a=mass of a mole;
   G4double a, z, density;      //z=mean number of protons;  
-  
+
   G4int ncomponents, natoms;
   G4double fractionmass;
-  
+
   //
   // define Elements
   //
 
-  
+
   G4Element* H  = new G4Element("Hydrogen",symbol="H" , z= 1., a= 1.01*g/mole);
   G4Element* C  = new G4Element("Carbon"  ,symbol="C" , z= 6., a= 12.01*g/mole);
   G4Element* F  = new G4Element("Fluorin"  ,symbol="F" , z= 9., a= 19.0*g/mole);
@@ -144,16 +165,16 @@ void Minos::DefineMaterials()
   G4Element* Ar = new G4Element("Argon", symbol="Ar", z=18, a=39.948*g/mole);
   G4Element* Fe = new G4Element("Fer",symbol="Fe" , z= 26., a= 55.9*g/mole);
   G4Element* Cr = new G4Element("Chrome",symbol="Cr" , z= 24., a= 52.*g/mole);
-  
-  
+
+
   new G4Material("Aluminium", z=13., a=26.98*g/mole, density=2.700*g/cm3);
   new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3);
   new G4Material("Lead"     , z=82., a= 207.19*g/mole, density= 11.35*g/cm3);
   new G4Material("Silicium", z=14., a=28.09*g/mole, density=2.330*g/cm3);
   new G4Material("Titanium", z=22., a=47.87*g/mole, density=4.510*g/cm3);
-  
 
-  
+
+
   G4Material* iso = new G4Material("isobutane", density=0.002506*g/cm3, ncomponents=2);
   iso->AddElement(C, natoms=4);
   iso->AddElement(H, natoms=10);
@@ -170,35 +191,35 @@ void Minos::DefineMaterials()
   mix->AddElement(Ar, fractionmass=82.*perCent);
   // overwrite computed meanExcitationEnergy with ICRU recommended value 
   mix->GetIonisation()->SetMeanExcitationEnergy(25.0*eV);
-  
+
   G4Material* Ar_CF4_95_5 = 
     new G4Material("Ar_CF4_95_5", density= 0.0017611*g/cm3, ncomponents=2);
   Ar_CF4_95_5->AddMaterial(CF4, fractionmass=5.*perCent);
   Ar_CF4_95_5->AddElement(Ar, fractionmass=95.*perCent);
   Ar_CF4_95_5->GetIonisation()->SetMeanExcitationEnergy(30.0*eV);
-  
+
   G4Material* Ar_CF4_90_10 = 
     new G4Material("Ar_CF4_90_10", density= 0.0018610*g/cm3, ncomponents=2);
   Ar_CF4_90_10->AddMaterial(CF4, fractionmass=10.*perCent);
   Ar_CF4_90_10->AddElement(Ar, fractionmass=90.*perCent);
   Ar_CF4_90_10->GetIonisation()->SetMeanExcitationEnergy(25.0*eV);
-  
+
   G4Material* Ar_iso_97_3 = 
     new G4Material("Ar_iso_97_3", density= 0.0016838*g/cm3, ncomponents=2);
   Ar_iso_97_3->AddMaterial(iso, fractionmass=3.*perCent);
   Ar_iso_97_3->AddElement(Ar, fractionmass=97.*perCent);
   Ar_iso_97_3->GetIonisation()->SetMeanExcitationEnergy(25.0*eV);
-  
+
   G4Material* Ar_iso_95_5 = 
     new G4Material("Ar_iso_95_5", density= 0.0016990*g/cm3, ncomponents=2);
   Ar_iso_95_5->AddMaterial(iso, fractionmass=5.*perCent);
   Ar_iso_95_5->AddElement(Ar, fractionmass=95.*perCent);
   Ar_iso_95_5->GetIonisation()->SetMeanExcitationEnergy(25.0*eV);
-  
+
   G4Material* LH2 = 
     new G4Material("LH2", density= 0.0715*g/cm3, ncomponents=1);
   LH2->AddElement(H, natoms=2);
-  
+
   G4Material* Myl = 
     new G4Material("Mylar", density= 1.397*g/cm3, ncomponents=3);
   Myl->AddElement(C, natoms=10);
@@ -210,45 +231,45 @@ void Minos::DefineMaterials()
   Epo->AddElement(C, natoms=18);
   Epo->AddElement(H, natoms= 20);
   Epo->AddElement(O, natoms= 3);
-  
+
   G4Material* Air = 
     new G4Material("Air"  , density= 1.290*mg/cm3, ncomponents=3);
   Air->AddElement(N, fractionmass=0.781);
   Air->AddElement(O, fractionmass=0.21);
   Air->AddElement(Ar, fractionmass=0.009);
-  
-  
+
+
   G4Material* Vacuum =
     new G4Material("Galactic", z=1., a=1.01*g/mole,density= universe_mean_density,
-                   kStateGas, 2.73*kelvin, 3.e-18*pascal);
-  
+        kStateGas, 2.73*kelvin, 3.e-18*pascal);
+
   G4Material* beam = 
     new G4Material("Beam", density= 1.e-5*g/cm3, ncomponents=1,
-                   kStateGas, STP_Temperature, 2.e-2*bar);
+        kStateGas, STP_Temperature, 2.e-2*bar);
   beam->AddMaterial(Air, fractionmass=1.);
-  
+
   G4Material* Inox = 
     new G4Material("Inox", density= 8.02*g/cm3, ncomponents=3);
   Inox->AddElement(C, fractionmass=0.001);
   Inox->AddElement(Fe, fractionmass=0.829);
   Inox->AddElement(Cr, fractionmass=0.17);
-  
+
   G4Material* Kapton = 
     new G4Material("Kapton", density= 1.42*g/cm3, ncomponents=4);
   Kapton->AddElement(C, fractionmass=0.691133);
   Kapton->AddElement(H, fractionmass=0.026362);
   Kapton->AddElement(O, fractionmass=0.209235);
   Kapton->AddElement(N, fractionmass=0.073270);
-  
+
   G4Material* Rohacell = 
     new G4Material("Rohacell", density= 0.075*g/cm3, ncomponents=4);
   Rohacell->AddElement(C, fractionmass=0.6014);
   Rohacell->AddElement(H, fractionmass=0.0805);
   Rohacell->AddElement(O, fractionmass=0.3154);
   Rohacell->AddElement(N, fractionmass=0.00276);
-  
+
   //G4cout << *(G4Material::GetMaterialTable()) << G4endl;
-  
+
   //default materials of the World
   defaultMaterial  = Vacuum;
 }
@@ -303,20 +324,15 @@ void Minos::SetKaptonMaterial(G4String materialChoice)
 G4LogicalVolume* Minos::BuildCylindricalDetector(){
   if(!m_CylindricalDetector){
     /*
-    G4Tubs* tub = new G4Tubs("Minos_Cyl",0,Minos_NS::Radius,Minos_NS::Thickness*0.5,0,360*deg);
+       G4Tubs* tub = new G4Tubs("Minos_Cyl",0,Minos_NS::Radius,Minos_NS::Thickness*0.5,0,360*deg);
 
-    G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Minos_NS::Material);
-    m_CylindricalDetector = new G4LogicalVolume(tub,DetectorMaterial,"logic_Minos_tub",0,0,0);
-    m_CylindricalDetector->SetVisAttributes(m_VisSquare);
-    m_CylindricalDetector->SetSensitiveDetector(m_MinosScorer);
-    */
-
-  
+       G4Material* DetectorMaterial = MaterialManager::getInstance()->GetMaterialFromLibrary(Minos_NS::Material);
+       m_CylindricalDetector = new G4LogicalVolume(tub,DetectorMaterial,"logic_Minos_tub",0,0,0);
+       m_CylindricalDetector->SetVisAttributes(m_VisSquare);
+       m_CylindricalDetector->SetSensitiveDetector(m_MinosScorer);
+       */
 
 
-
-
-    
   }
   return m_CylindricalDetector;
 }
@@ -327,69 +343,71 @@ G4LogicalVolume* Minos::BuildCylindricalDetector(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
 // Below are vis attributes that permits someone to test / play 
-  // with the interactive expansion / contraction geometry system of the
-  // vis/OpenInventor driver :
+// with the interactive expansion / contraction geometry system of the
+// vis/OpenInventor driver :
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Minos::BuildTarget(){
   if(!logicTarget){
-//                               
-  // Target
-  //  
-  solidTarget=0; logicTarget=0; physiTarget=0;
-  solidChamber=0; logicChamber=0; physiChamber=0;
-  solidTPC=0; logicTPC=0; physiTPC=0;
-  
-     solidTarget = new G4Tubs("Target",		//its name
-    		       0.,TargetRadius,TargetLength,0,360.);//size
-    			     
-      logicTarget = new G4LogicalVolume(solidTarget,	//its solid
-      				       TargetMaterial,	//its material
-      				       "Target");	//its name    
-  
+    //                               
+    // Target
+    //  
+    solidTarget=0; logicTarget=0; /*physiTarget=0;*/
+    solidChamber=0; logicChamber=0; /*physiChamber=0;*/
+    solidTPC=0; logicTPC=0; /*physiTPC=0;*/
+
+    solidTarget = new G4Tubs("Target",		//its name
+        0.,TargetRadius,TargetLength,0,360.);//size
 
-   {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0.6,1.,1.));
-  atb->SetForceSolid(true);
-  logicTarget->SetVisAttributes(atb);}
-	
+    logicTarget = new G4LogicalVolume(solidTarget,	//its solid
+        TargetMaterial,	//its material
+        "Target");	//its name    
 
-   }
+
+    {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0.6,1.,1., .4));
+      atb->SetForceSolid(true);
+      logicTarget->SetVisAttributes(atb);}
+    logicTarget->SetSensitiveDetector(m_MinosTargetScorer);
+
+
+  }
   return logicTarget;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Minos::BuildChamber(){
   if(!logicChamber){
-//                                 
-  // Chamber
-  //
-      solidChamber = new G4Tubs("Chamber",			//its name
-                       ChamberInnerRadius,ChamberInnerRadius+ChamberThickness,ChamberLength,0,360.); //size
-                       
-      logicChamber = new G4LogicalVolume(solidChamber,	//its solid
-                                       ChamberMaterial,	//its material
-                                       "Chamber");	//its name                               
-  
-{G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(0,1,0));
-  simpleBoxVisAtt->SetVisibility(true);
-  logicChamber->SetVisAttributes(simpleBoxVisAtt);}
+    //                                 
+    // Chamber
+    //
+    solidChamber = new G4Tubs("Chamber",			//its name
+        ChamberInnerRadius,ChamberInnerRadius+ChamberThickness,ChamberLength,0,360.); //size
+
+    logicChamber = new G4LogicalVolume(solidChamber,	//its solid
+        ChamberMaterial,	//its material
+        "Chamber");	//its name                               
 
-   }
+    {G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(0,1,0,.4));
+      simpleBoxVisAtt->SetVisibility(true);
+      logicChamber->SetVisAttributes(simpleBoxVisAtt);}
+
+  }
   return logicChamber;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Minos::BuildInnerRohacell(){
   if(!logicInnerRohacell){
     //                                 
-  // Inner Rohacell
-  //
-      solidInnerRohacell = new G4Tubs("InnerRohacell",			//its name
-                       ChamberInnerRadius + ChamberThickness,ChamberInnerRadius + ChamberThickness+InnerRohacellThickness,ChamberLength,0,360.); //size
-                       
-      logicInnerRohacell = new G4LogicalVolume(solidInnerRohacell,	//its solid
-                                       InnerRohacellMaterial,	//its material
-                                       "InnerRohacell");	//its name
-  
- 
+    // Inner Rohacell
+    //
+    solidInnerRohacell = new G4Tubs("InnerRohacell",			//its name
+        ChamberInnerRadius /*+ ChamberThickness*/,ChamberInnerRadius + ChamberThickness+InnerRohacellThickness,ChamberLength,0,360.); //size
+
+    logicInnerRohacell = new G4LogicalVolume(solidInnerRohacell,	//its solid
+        InnerRohacellMaterial,	//its material
+        "InnerRohacell");	//its name
+
+    G4VisAttributes* atb= new G4VisAttributes(G4Colour(1.,1.,1., .4));
+      logicInnerRohacell->SetVisAttributes(atb);
 
 
   }
@@ -398,15 +416,20 @@ G4LogicalVolume* Minos::BuildInnerRohacell(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Minos::BuildOuterRohacell(){
   if(!logicOuterRohacell){
-//                                 
-  // Outer Rohacell
-  //
-      solidOuterRohacell = new G4Tubs("OuterRohacell",			//its name
-                       ChamberInnerRadius + ChamberThickness + InnerRohacellThickness + KaptonThickness,ChamberInnerRadius + ChamberThickness + InnerRohacellThickness + KaptonThickness+OuterRohacellThickness,ChamberLength,0,360.); //size
-                       
-      logicOuterRohacell = new G4LogicalVolume(solidOuterRohacell,	//its solid
-                                       OuterRohacellMaterial,	//its material
-                                       "OuterRohacell");	//its name
+    //                                 
+    // Outer Rohacell
+    //
+    solidOuterRohacell = new G4Tubs("OuterRohacell",			//its name
+        ChamberInnerRadius /*+ ChamberThickness + InnerRohacellThickness + KaptonThickness*/,ChamberInnerRadius + ChamberThickness + InnerRohacellThickness + KaptonThickness+OuterRohacellThickness,ChamberLength,0,360.); //size
+
+    logicOuterRohacell = new G4LogicalVolume(solidOuterRohacell,	//its solid
+        OuterRohacellMaterial,	//its material
+        "OuterRohacell");	//its name
+
+    G4VisAttributes* atb= new G4VisAttributes(G4Colour(1.,1.,1., .4));
+      logicOuterRohacell->SetVisAttributes(atb);
+
+    
   }
   return logicOuterRohacell;
 }
@@ -414,93 +437,100 @@ G4LogicalVolume* Minos::BuildOuterRohacell(){
 G4LogicalVolume* Minos::BuildKapton(){
   if(!logicKapton){
     //                                 
-  // Kapton
-  //
-      solidKapton = new G4Tubs("Kapton",			//its name
-                       ChamberInnerRadius + ChamberThickness+InnerRohacellThickness,ChamberInnerRadius + ChamberThickness+InnerRohacellThickness+KaptonThickness,ChamberLength,0,360.); //size
-                       
-      logicKapton = new G4LogicalVolume(solidKapton,	//its solid
-                                       KaptonMaterial,	//its material
-                                       "Kapton");	//its name
+    // Kapton
+    //
+    solidKapton = new G4Tubs("Kapton",			//its name
+        ChamberInnerRadius+ ChamberThickness +InnerRohacellThickness ,ChamberInnerRadius + ChamberThickness+InnerRohacellThickness+KaptonThickness,ChamberLength,0,360.); //size
+
+    logicKapton = new G4LogicalVolume(solidKapton,	//its solid
+        KaptonMaterial,	//its material
+        "Kapton");	//its name
+
+
+    G4VisAttributes* atb= new G4VisAttributes(G4Colour(1.,1.,1., .4));
+      logicKapton->SetVisAttributes(atb);
   }
+
+  
   return logicKapton;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Minos::BuildTPC(){
   if(!logicTPC){
- //                               
-  // TPC
-  
-      solidTPC = new G4Tubs("TPC",		//its name
-                          ChamberInnerRadius + ChamberThickness + InnerRohacellThickness + KaptonThickness + OuterRohacellThickness,TPCRadiusExt,ChamberLength,0,360.); 
-                          
-      logicTPC = new G4LogicalVolume(solidTPC,    //its solid
-      			                  TPCMaterial, //its material
-      			                  "TPC"); //name
+    //                               
+    // TPC
+
+    solidTPC = new G4Tubs("TPC",		//its name
+        ChamberInnerRadius /*+ ChamberThickness + InnerRohacellThickness + KaptonThickness + OuterRohacellThickness*/,TPCRadiusExt,ChamberLength,0,360.); 
+
+    logicTPC = new G4LogicalVolume(solidTPC,    //its solid
+        TPCMaterial, //its material
+        "TPC"); //name
+
 
- 
-  {G4VisAttributes* atb= new G4VisAttributes(G4Colour(1.,1.,0.6));
-  logicTPC->SetVisAttributes(atb);}
+    {G4VisAttributes* atb= new G4VisAttributes(G4Colour(1.,1.,0.6));
+      logicTPC->SetVisAttributes(atb);}
+    logicTPC->SetSensitiveDetector(m_MinosTPCScorer);
 
 
-   }
+  }
   return logicTPC;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
- //                               
-  // windows
-  //
+//                               
+// windows
+//
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Minos::BuildWindow0(){
   if(!logicWindow0){
-solidWindow0 = new G4Tubs("WindowTube",		//its name
-                          TargetRadius,TargetRadius+WindowThickness*2.,TargetLength,0,360.);
-                          
-      logicWindow0 = new G4LogicalVolume(solidWindow0,    //its solid
-      			                  WindowMaterial, //its material
-      			                  "WindowTube"); //name
-  
-   {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1));
-  atb->SetForceSolid(true);
-  logicWindow0->SetVisAttributes(atb);}
+    solidWindow0 = new G4Tubs("WindowTube",		//its name
+        0./*TargetRadius*/,TargetRadius+WindowThickness*2.,TargetLength+WindowThickness*2.,0,360.);
 
+    logicWindow0 = new G4LogicalVolume(solidWindow0,    //its solid
+        WindowMaterial, //its material
+        "WindowTube"); //name
 
+    {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1, .4));
+      atb->SetForceSolid(true);
+      logicWindow0->SetVisAttributes(atb);}
 
-   }
+
+
+  }
   return logicWindow0;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Minos::BuildWindow1(){
   if(!logicWindow1){
-   solidWindow1 = new G4Tubs("WindowEntrance",		//its name
-                          0.,TargetRadius+2.*WindowThickness,WindowThickness,0,360.); 
-                          
-      logicWindow1 = new G4LogicalVolume(solidWindow1,    //its solid
-      			                  WindowMaterial, //its material
-      			                  "WindowEntrance"); //name
-   
-  {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1));
-  atb->SetForceSolid(true);
-  logicWindow1->SetVisAttributes(atb);} 
-
-
-   }
+    solidWindow1 = new G4Tubs("WindowEntrance",		//its name
+        0.,TargetRadius+2.*WindowThickness,WindowThickness,0,360.); 
+
+    logicWindow1 = new G4LogicalVolume(solidWindow1,    //its solid
+        WindowMaterial, //its material
+        "WindowEntrance"); //name
+
+    {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1, .4));
+      atb->SetForceSolid(true);
+      logicWindow1->SetVisAttributes(atb);} 
+
+
+  }
   return logicWindow1;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Minos::BuildWindow2(){
   if(!logicWindow2){
-solidWindow2 = new G4Tubs("WindowOutcoming",		//its name
-                          0.,TargetRadius+2.*WindowThickness,WindowThickness,0,360.); 
-                          
-      logicWindow2 = new G4LogicalVolume(solidWindow2,    //its solid
-      			                  WindowMaterial, //its material
-      			                  "WindowOutcoming"); //name
-  
-   {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1));
-  atb->SetForceSolid(true);
-  logicWindow2->SetVisAttributes(atb);} 
-  
+    solidWindow2 = new G4Tubs("WindowOutcoming",		//its name
+        0.,TargetRadius+2.*WindowThickness,WindowThickness,0,360.); 
+
+    logicWindow2 = new G4LogicalVolume(solidWindow2,    //its solid
+        WindowMaterial, //its material
+        "WindowOutcoming"); //name
+
+    {G4VisAttributes* atb= new G4VisAttributes(G4Colour(0,0,1, .4));
+      atb->SetForceSolid(true);
+      logicWindow2->SetVisAttributes(atb);} 
+
   }
   return logicWindow2;
 }
@@ -522,7 +552,7 @@ void Minos::ReadConfiguration(NPL::InputParser parser){
     if(blocks[i]->HasTokenList(cart)){
       if(NPOptionManager::getInstance()->GetVerboseLevel())
         cout << endl << "////  Minos " << i+1 <<  endl;
-    
+
       G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("POS","mm"));
       string Shape = blocks[i]->GetString("Shape");
       AddDetector(Pos,Shape);
@@ -550,13 +580,12 @@ void Minos::ReadConfiguration(NPL::InputParser parser){
 // Called After DetecorConstruction::AddDetector Method
 void Minos::ConstructDetector(G4LogicalVolume* world){
   for (unsigned short i = 0 ; i < m_R.size() ; i++) {
+    TargetRadius = 28.*mm; TargetLength = 152.76/2.*mm;
+    ChamberInnerRadius = 37.*mm; ChamberThickness = 1.*mm; 
+    ChamberLength = 300./2.*mm;
+    InnerRohacellThickness = 1.*mm; KaptonThickness = 0.125*mm; OuterRohacellThickness = 2.*mm;
+    TPCRadiusExt = 100.*mm; WindowThickness = 0.150/2.*mm;
 
-  TargetRadius = 28.*mm; TargetLength = 150./2.*mm;
-  ChamberInnerRadius = 37.*mm; ChamberThickness = 1.*mm; 
-  ChamberLength = 300./2.*mm;
-  InnerRohacellThickness = 1.*mm; KaptonThickness = 0.125*mm; OuterRohacellThickness = 2.*mm;
-  TPCRadiusExt = 100.*mm; WindowThickness = 0.150/2.*mm;
-    
     DefineMaterials();
 
     SetTargetMaterial("LH2");  
@@ -566,13 +595,13 @@ void Minos::ConstructDetector(G4LogicalVolume* world){
     SetKaptonMaterial("Kapton");  
     SetInnerRohacellMaterial("Rohacell");
     SetOuterRohacellMaterial("Rohacell");
-     
+
     G4double wX = m_R[i] * sin(m_Theta[i] ) * cos(m_Phi[i] ) ;
     G4double wY = m_R[i] * sin(m_Theta[i] ) * sin(m_Phi[i] ) ;
     G4double wZ = m_R[i] * cos(m_Theta[i] ) ;
     G4ThreeVector Det_pos = G4ThreeVector(wX, wY, wZ) ;
     // So the face of the detector is at R instead of the middle
-              Det_pos+=Det_pos.unit()*Minos_NS::Thickness*0.5;       
+    Det_pos+=Det_pos.unit()*Minos_NS::Thickness*0.5;       
     // Building Detector reference frame
     G4double ii = cos(m_Theta[i]) * cos(m_Phi[i]);
     G4double jj = cos(m_Theta[i]) * sin(m_Phi[i]);
@@ -586,85 +615,128 @@ void Minos::ConstructDetector(G4LogicalVolume* world){
 
     G4RotationMatrix* Rot = new G4RotationMatrix(u,v,w);
 
-    if(m_Shape[i] == "Cylindrical"){
-      // new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
-      //  BuildCylindricalDetector(),
-      //  "Minos",world,false,i+1);
+    // if(m_Shape[i] == "Cylindrical"){
+    //   // new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
+    //   //  BuildCylindricalDetector(),
+    //   //  "Minos",world,false,i+1);
+    // }
+    // else if(m_Shape[i] == "Square"){
+
+
+    // }
+
+    new G4PVPlacement(0,//its name
+        G4ThreeVector(wX,wY, wZ + ChamberLength - TargetLength-WindowThickness*2. - 10*mm ),	// Z positioning putting TPC and Target at just difference of 10mm
+        BuildTPC(),	//its logical volume
+        "TPC",	//its name
+        world,	//its mother  volume
+        false,		//no boolean operation
+        0);		//copy number
+
+    new G4PVPlacement(0,		//its name
+        G4ThreeVector(0,0,0/*ChamberLength*/),	//at (0,0,0)
+        BuildOuterRohacell(),	//its logical volume
+        "Rohacell"/*"OuterRohacell"*/,	//its name
+        logicTPC/*world*/,	//its mother  volume
+        false,		//no boolean operation
+        0);		//copy number
+
+    new G4PVPlacement(0,//its name
+        G4ThreeVector(0,0,0/*ChamberLength*/),	//at (0,0,0)
+        BuildChamber(),	//its logical volume
+        "Chamber",	//its name
+        logicOuterRohacell,	//its mother  volume
+        false,		//no boolean operation
+        0);		//copy number
+
+    /*new G4PVPlacement(0,		//its name
+      G4ThreeVector(0,0,ChamberLength),	//at (0,0,0)
+      BuildInnerRohacell(),	//its logical volume
+      "InnerRohacell",	//its name
+      world,	//its mother  volume
+      false,		//no boolean operation
+      0);*/   
+
+
+    new G4PVPlacement(0,		//its name
+        G4ThreeVector(0,0,0/*ChamberLength*/),	//at (0,0,0)
+        BuildKapton(),	//its logical volume
+        "Kapton",	//its name
+        logicOuterRohacell,	//its mother  volume
+        false,		//no boolean operation
+        0);		//copy number
+
+
+    new G4PVPlacement(0,		//its name
+        G4ThreeVector(wX,wY, wZ ),	//at (0,0,0)
+        BuildWindow0(),	//its logical volume
+        "WindowTube",	//its name
+        world,	//its mother  volume
+        false,		//no boolean operation
+        0);
+
+    /*new G4PVPlacement(0,		//its name
+      G4ThreeVector(0,0, -1.*(TargetLength+WindowThickness)),	//at (0,0,0)
+      BuildWindow1(),	//its logical volume
+      "WindowEntrance",	//its name
+      logicWindow0,	//its mother  volume
+      false,		//no boolean operation
+      0);  new G4PVPlacement(0,		//its name
+      G4ThreeVector(0,0, (TargetLength+WindowThickness)),	//at (0,0,0)
+      BuildWindow2(),	//its logical volume
+      "WindowOutcoming",	//its name
+      logicWindow0,	//its mother  volume
+      false,		//no boolean operation
+      0);		//copy number
+      */                    
+
+    new G4PVPlacement(0,//no rotation
+        G4ThreeVector(0,0,0/*TargetLength*/),	//at (0,0,0)
+        BuildTarget(),	//its logical volume
+        "Target",	//its name
+        logicWindow0,	//its mother  volume
+        false,		//no boolean operation
+        0);		//copy number
+
+
+    // G4ProductionCuts* ecut = new G4ProductionCuts();
+    //G4ProductionCuts* pcut = new G4ProductionCuts();
+    if(!m_ReactionRegion){
+
+
+      //    ecut->SetProductionCut(1000,"e-");
+      //  pcut->SetProductionCut(1,"p");
+
+      m_ReactionRegion= new G4Region("NPSimulationProcess");
+      m_ReactionRegion -> AddRootLogicalVolume(logicTarget);
+
+      // logicTPC -> SetRegion(m_ReactionRegion);
+      //m_ReactionRegion->SetProductionCuts(ecut);
+      //m_ReactionRegion->SetProductionCuts(ecut);     
+      // m_ReactionRegion -> AddRootLogicalVolume(logicTPC);
+
+      m_ReactionRegion->SetUserLimits(new G4UserLimits(1.2*mm)); //???
     }
-    else if(m_Shape[i] == "Square"){
-          
 
+    G4FastSimulationManager* mng = m_ReactionRegion->GetFastSimulationManager();
+    unsigned int size = m_ReactionModel.size();
+    for(unsigned int o = 0 ; o < size ; o++){
+      mng->RemoveFastSimulationModel(m_ReactionModel[o]);
     }
+    m_ReactionModel.clear();
+    G4VFastSimulationModel* fsm;
+    fsm = new NPS::BeamReaction("BeamReaction",m_ReactionRegion);
+    ((NPS::BeamReaction*) fsm)->SetStepSize(1.2*mm);
+    m_ReactionModel.push_back(fsm);
+    fsm = new NPS::Decay("Decay",m_ReactionRegion);
+    m_ReactionModel.push_back(fsm);
+
+    // G4Region* Region_cut = new G4Region("RegionCut");
+    // logicTPC->SetRegion(Region_cut);
+    // Region_cut->SetProductionCuts(ecut);
+    // Region_cut->SetProductionCuts(pcut);
+    // Region_cut->AddRootLogicalVolume(logicTPC);                          
 
-    
-    physiTarget = new G4PVPlacement(0,			//no rotation
-                                     G4ThreeVector(0,0,TargetLength),	//at (0,0,0)
-                                    BuildTarget(),	//its logical volume
-                                     "Target",	//its name
-                                     world,	//its mother  volume
-                                     false,		//no boolean operation
-                                     0);		//copy number
- 
-     physiChamber = new G4PVPlacement(0,		//its name
-                                    G4ThreeVector(0,0,ChamberLength),	//at (0,0,0)
-                                       BuildChamber(),	//its logical volume
-                                     "Chamber",	//its name
-                                     world,	//its mother  volume
-                                     false,		//no boolean operation
-                                     0);		//copy number
-
-      physiInnerRohacell = new G4PVPlacement(0,		//its name
-                                             G4ThreeVector(0,0,ChamberLength),	//at (0,0,0)
-                                             BuildInnerRohacell(),	//its logical volume
-                                             "InnerRohacell",	//its name
-                                             world,	//its mother  volume
-                                             false,		//no boolean operation
-                                             0); physiOuterRohacell = new G4PVPlacement(0,		//its name
-                                                                                        G4ThreeVector(0,0,ChamberLength),	//at (0,0,0)
-                                                                                        BuildOuterRohacell(),	//its logical volume
-                                                                                        "OuterRohacell",	//its name
-                                                                                        world,	//its mother  volume
-                                                                                        false,		//no boolean operation
-                                                                                        0);		//copy number
-      
-      physiKapton = new G4PVPlacement(0,		//its name
-                                      G4ThreeVector(0,0,ChamberLength),	//at (0,0,0)
-                                      BuildKapton(),	//its logical volume
-                                      "Kapton",	//its name
-                                      world,	//its mother  volume
-                                      false,		//no boolean operation
-                                      0);		//copy number
-      
-      physiTPC = new G4PVPlacement(0,		//its name
-                                   G4ThreeVector(0,0,ChamberLength),	//at (0,0,0)
-                                   BuildTPC(),	//its logical volume
-                                   "TPC",	//its name
-                                   world,	//its mother  volume
-                                   false,		//no boolean operation
-                                   0);		//copy number
-      
-      physiWindow0 = new G4PVPlacement(0,		//its name
-                                       G4ThreeVector(0,0,TargetLength),	//at (0,0,0)
-                                       BuildWindow0(),	//its logical volume
-                                       "WindowTube",	//its name
-                                       world,	//its mother  volume
-                                       false,		//no boolean operation
-                                       0);  physiWindow1 = new G4PVPlacement(0,		//its name
-                                                                             G4ThreeVector(0,0,-1.*WindowThickness),	//at (0,0,0)
-                                                                             BuildWindow1(),	//its logical volume
-                                                                             "WindowEntrance",	//its name
-                                                                             world,	//its mother  volume
-                                                                             false,		//no boolean operation
-                                                                             0);  physiWindow2 = new G4PVPlacement(0,		//its name
-                                                                                                                   G4ThreeVector(0,0,2.*TargetLength+WindowThickness),	//at (0,0,0)
-                                                                                                                   BuildWindow2(),	//its logical volume
-                                                                                                                   "WindowOutcoming",	//its name
-                                                                                                                   world,	//its mother  volume
-                                                                                                                   false,		//no boolean operation
-                                                                                                                   0);		//copy number
-      G4Region* aRegion = new G4Region("TPCLog");
-      logicTPC -> SetRegion(aRegion);
-      aRegion -> AddRootLogicalVolume(logicTPC);
   }
   //                                        
   // Visualization attributes
@@ -686,13 +758,14 @@ void Minos::InitializeRootOutput(){
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
-// Called at in the EventAction::EndOfEventAvtion
+// Called at in the EventAction::EndOfEventAction
 void Minos::ReadSensitive(const G4Event* ){
   m_Event->Clear();
 
   ///////////
   // Calorimeter scorer
-  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_MinosScorer->GetPrimitive(0);
+  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_MinosTargetScorer->GetPrimitive(0);
+
 
   unsigned int size = Scorer->GetMult(); 
   for(unsigned int i = 0 ; i < size ; i++){
@@ -711,20 +784,36 @@ void Minos::ReadSensitive(const G4Event* ){
 ////////////////////////////////////////////////////////////////   
 void Minos::InitializeScorers() { 
   // This check is necessary in case the geometry is reloaded
-  bool already_exist = false; 
-  m_MinosScorer = CheckScorer("MinosScorer",already_exist) ;
+  bool already_exist = false;
+  bool already_exist2 = false;
 
-  if(already_exist) 
-    return ;
+  
+  m_MinosTargetScorer = CheckScorer("MinosTargetScorer",already_exist) ;
+  m_MinosTPCScorer = CheckScorer("MinosTPCScorer",already_exist2) ;
+
+  if(already_exist && already_exist2 ) 
+   return ;
 
   // Otherwise the scorer is initialised
   vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level, 0) ;
-  G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ;
+  G4VPrimitiveScorer* CalorimeterMinosTargetScorer= new CalorimeterScorers::PS_Calorimeter("CalorimeterMinosTargetScore",level, 0) ;
+  G4VPrimitiveScorer* InteractionMinosTargetScorer= new InteractionScorers::PS_Interactions("InteractionMinosTargetScore",ms_InterCoord, 0) ;
+
   //and register it to the multifunctionnal detector
-  m_MinosScorer->RegisterPrimitive(Calorimeter);
-  m_MinosScorer->RegisterPrimitive(Interaction);
-  G4SDManager::GetSDMpointer()->AddNewDetector(m_MinosScorer) ;
+  m_MinosTargetScorer->RegisterPrimitive(CalorimeterMinosTargetScorer);
+  m_MinosTargetScorer->RegisterPrimitive(InteractionMinosTargetScorer);
+
+  G4VPrimitiveScorer* TPCScorer= new TPCScorers::PS_TPCCathode("MinosTPC", 0);
+  //G4VPrimitiveScorer* TPCCalScorer= new CalorimeterScorers::PS_Calorimeter("TPCCalScorer",level, 0);
+  G4VPrimitiveScorer* TPCInterScorer= new InteractionScorers::PS_Interactions("TPCInterScorer",ms_InterCoord, 0);
+
+  m_MinosTPCScorer->RegisterPrimitive(TPCScorer);
+  // m_MinosTPCScorer->RegisterPrimitive(TPCCalScorer);
+  m_MinosTPCScorer->RegisterPrimitive(TPCInterScorer);
+
+  
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_MinosTPCScorer) ;
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_MinosTargetScorer) ;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/NPSimulation/Detectors/Minos/Minos.hh b/NPSimulation/Detectors/Minos/Minos.hh
index e77ee2f8e6bbea51028a1840afa306582795a302..2454cf05a6342da8d4e8b961c96011fad42ceaa6 100644
--- a/NPSimulation/Detectors/Minos/Minos.hh
+++ b/NPSimulation/Detectors/Minos/Minos.hh
@@ -31,11 +31,16 @@ using namespace std;
 #include "G4RotationMatrix.hh"
 #include "G4LogicalVolume.hh"
 #include "G4MultiFunctionalDetector.hh"
+#include "G4VFastSimulationModel.hh"
+#include "G4UserLimits.hh"
+#include "G4FastSimulationManager.hh"
 
 // NPTool header
 #include "NPSVDetector.hh"
 #include "TMinosData.h"
 #include "NPInputParser.h"
+#include "Decay.hh"
+#include "BeamReaction.hh"
 
 class Minos : public NPS::VDetector{
   ////////////////////////////////////////////////////
@@ -86,7 +91,8 @@ class Minos : public NPS::VDetector{
      G4Material* GetTargetMaterial()    {return TargetMaterial;};
      
      G4double    GetTargetRadius()      {return TargetRadius;};
-     
+
+  /*
      const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;};           
      const G4VPhysicalVolume* GetTarget()     {return physiTarget;};
      const G4VPhysicalVolume* GetChamber()    {return physiChamber;};
@@ -97,7 +103,8 @@ class Minos : public NPS::VDetector{
      const G4VPhysicalVolume* GetInnerRohacell()        {return physiInnerRohacell;};
      const G4VPhysicalVolume* GetOuterRohacell()        {return physiOuterRohacell;};
      const G4VPhysicalVolume* GetKapton()        {return physiKapton;};
-     
+  */
+  
   private:
      G4Material*        TargetMaterial;
      G4double           TargetRadius;
@@ -131,45 +138,45 @@ class Minos : public NPS::VDetector{
     G4LogicalVolume* m_SquareDetector;
     G4LogicalVolume* m_CylindricalDetector;
 
-     G4Box*             solidWorld;    //pointer to the solid World 
-     G4LogicalVolume*   logicWorld;    //pointer to the logical World
-     G4VPhysicalVolume* physiWorld;    //pointer to the physical World
+  // G4Box*             solidWorld;    //pointer to the solid World 
+  // G4LogicalVolume*   logicWorld;    //pointer to the logical World
+  // G4VPhysicalVolume* physiWorld;    //pointer to the physical World
 
      G4Tubs*             solidTarget;   
      G4LogicalVolume*   logicTarget;   
-     G4VPhysicalVolume* physiTarget;   
+  // G4VPhysicalVolume* physiTarget;   
      
      G4Tubs*             solidChamber;  
      G4LogicalVolume*   logicChamber;  
-     G4VPhysicalVolume* physiChamber;  
+  // G4VPhysicalVolume* physiChamber;  
          
      G4Tubs*             solidTPC; 
      G4LogicalVolume*   logicTPC; 
-     G4VPhysicalVolume* physiTPC; 
+  // G4VPhysicalVolume* physiTPC; 
      
      G4Tubs*             solidWindow0; 
      G4LogicalVolume*   logicWindow0; 
-     G4VPhysicalVolume* physiWindow0; 
+  // G4VPhysicalVolume* physiWindow0; 
      
      G4Tubs*             solidWindow1; 
      G4LogicalVolume*   logicWindow1; 
-     G4VPhysicalVolume* physiWindow1; 
+  // G4VPhysicalVolume* physiWindow1; 
 
      G4Tubs*             solidWindow2; 
      G4LogicalVolume*   logicWindow2; 
-     G4VPhysicalVolume* physiWindow2; 
+  // G4VPhysicalVolume* physiWindow2; 
     
      G4Tubs*             solidInnerRohacell;   
      G4LogicalVolume*   logicInnerRohacell;   
-     G4VPhysicalVolume* physiInnerRohacell;   
+  // G4VPhysicalVolume* physiInnerRohacell;   
      
      G4Tubs*             solidOuterRohacell;   
      G4LogicalVolume*   logicOuterRohacell;   
-     G4VPhysicalVolume* physiOuterRohacell;   
+  // G4VPhysicalVolume* physiOuterRohacell;   
      
      G4Tubs*             solidKapton;   
      G4LogicalVolume*   logicKapton;   
-     G4VPhysicalVolume* physiKapton;   
+  // G4VPhysicalVolume* physiKapton;   
      
       
   
@@ -199,7 +206,9 @@ class Minos : public NPS::VDetector{
     void InitializeScorers() ;
 
     //   Associated Scorer
-    G4MultiFunctionalDetector* m_MinosScorer ;
+    G4MultiFunctionalDetector* m_MinosTargetScorer ;
+    G4MultiFunctionalDetector* m_MinosTPCScorer ;
+  
     ////////////////////////////////////////////////////
     ///////////Event class to store Data////////////////
     ////////////////////////////////////////////////////
@@ -222,6 +231,13 @@ class Minos : public NPS::VDetector{
     G4VisAttributes* m_VisSquare;
     G4VisAttributes* m_VisCylinder;
 
+
+  private:
+    // Region were reaction can occure:
+    G4Region* m_ReactionRegion;
+    vector<G4VFastSimulationModel*> m_ReactionModel;
+
+
   // Needed for dynamic loading of the library
   public:
     static NPS::VDetector* Construct();
diff --git a/NPSimulation/EventGenerator/EventGeneratorMultipleParticle.cc b/NPSimulation/EventGenerator/EventGeneratorMultipleParticle.cc
index a4d56722a91d56f54bf050fde75d7de519c3457a..e2e561c2ccada3ef88bbcdf868e8edaa51b6cb11 100644
--- a/NPSimulation/EventGenerator/EventGeneratorMultipleParticle.cc
+++ b/NPSimulation/EventGenerator/EventGeneratorMultipleParticle.cc
@@ -51,7 +51,7 @@ EventGeneratorMultipleParticle::EventGeneratorMultipleParticle(){
     m_SigmaX        = 0;
     m_SigmaY        = 0;
     m_Events        = 0;
-    m_File          = StandardPath;
+    m_File          = "";
     m_particleName.clear();
     m_ParticleStack = ParticleStack::getInstance();
     m_Event.clear();
diff --git a/NPSimulation/Process/Decay.cc b/NPSimulation/Process/Decay.cc
index bfd7ee212ffc083712e4f466a68c5292ae593e67..0cf06236cf02389534e9ffe637a56b2746058357 100644
--- a/NPSimulation/Process/Decay.cc
+++ b/NPSimulation/Process/Decay.cc
@@ -85,8 +85,9 @@ G4bool Decay::IsApplicable( const G4ParticleDefinition& particleType) {
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-G4bool Decay::ModelTrigger(const G4FastTrack& ) {
+G4bool Decay::ModelTrigger(const G4FastTrack& fastTrack) {
   //FIXME: Solve the issue of long lived decay
+  m_PreviousEnergy=fastTrack.GetPrimaryTrack()->GetKineticEnergy();
   // Check that a decay is possible:
   return m_Decay.AnyAboveThreshold(NPL::ChangeNameFromG4Standard(m_CurrentName),m_ExcitationEnergy);
 }
diff --git a/NPSimulation/Process/G4DETransport.cc b/NPSimulation/Process/G4DETransport.cc
index 1f501a7bc8e1e420c4ecf3b716c3d21e3e53f318..66f3e83aed555b88229bc387349834a49220dd6d 100644
--- a/NPSimulation/Process/G4DETransport.cc
+++ b/NPSimulation/Process/G4DETransport.cc
@@ -106,7 +106,6 @@ G4DETransport::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep)
     G4ThreeVector x0 = pPreStepPoint->GetPosition();
     G4ThreeVector p0 = aStep.GetDeltaPosition().unit();
     G4double      t0 = pPreStepPoint->GetGlobalTime();
-    
     G4double Energy = pPreStepPoint->GetKineticEnergy();
     
     // The time scale is imposed by the distance travelled
@@ -152,10 +151,14 @@ G4DETransport::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep)
     
     G4double sigmaTrans  = sqrt(2*step_length*aMaterialPropertiesTable->GetConstProperty("DE_TRANSVERSALSPREAD")/v_drift);
     G4double sigmaLong   = sqrt(2*step_length*aMaterialPropertiesTable->GetConstProperty("DE_LONGITUDINALSPREAD")/v_drift);
-    
-    G4double d_long  = G4RandGauss::shoot(0,sigmaLong);
+   
     G4double d_trans = G4RandGauss::shoot(0,sigmaTrans);
-    G4double d_drift = step_length+d_long;
+    G4double d_long=0;
+    G4double d_drift=-1;
+    while(d_drift<0){
+      d_long  = G4RandGauss::shoot(0,sigmaLong);
+      d_drift = step_length+d_long;
+    }
     
     G4ThreeVector trans(G4RandGauss::shoot(0,d_trans),0,0);
     trans.rotateY(twopi*G4UniformRand());
diff --git a/NPSimulation/Scorers/CalorimeterScorers.cc b/NPSimulation/Scorers/CalorimeterScorers.cc
index 4c77e6e24a75af5be2c1320420e79e8a43d4555d..f4afd2856b58d5039327472980e5238855571453 100644
--- a/NPSimulation/Scorers/CalorimeterScorers.cc
+++ b/NPSimulation/Scorers/CalorimeterScorers.cc
@@ -58,13 +58,13 @@ PS_Calorimeter::~PS_Calorimeter(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4bool PS_Calorimeter::ProcessHits(G4Step* aStep, G4TouchableHistory*){
   // Contain Energy, Time + as many copy number as nested volume
-  static unsigned int mysize = m_NestingLevel.size();
+  unsigned int mysize = m_NestingLevel.size();
   t_Energy = aStep->GetTotalEnergyDeposit();
   t_Time = aStep->GetPreStepPoint()->GetGlobalTime();
   t_Level.clear();
   for(unsigned int i = 0 ; i < mysize ; i++){
-    t_Level.push_back(aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i]));
-  }
+   t_Level.push_back(aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i]));
+}
   // Check if the particle has interact before, if yes, add up the energies.
   vector<CalorimeterData>::iterator it;
   it = m_Data.find(CalorimeterData::CalculateIndex(t_Level)); 
diff --git a/Projects/Dali/Dali.detector b/Projects/Dali/Dali.detector
new file mode 100644
index 0000000000000000000000000000000000000000..faab7e259bd3400da50a7e6c33143b4879f9da45
--- /dev/null
+++ b/Projects/Dali/Dali.detector
@@ -0,0 +1,97 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Target
+ THICKNESS= 20 mm
+ RADIUS=	20 mm
+ MATERIAL= CD2
+ ANGLE= 0 deg
+ X= 0 mm
+ Y= 0 mm
+ Z= 220 mm
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 240 deg
+ Zeta = -90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 180 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 120 deg 
+ Zeta = -90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 60 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm
+ Alpha = 0 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = -60 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm
+ Alpha = 240 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 180 deg 
+ Zeta = 90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 120 deg 
+ Zeta = 90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 60 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 0 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = -60 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Projects/Dali/DaliMinos.detector b/Projects/Dali/DaliMinos.detector
new file mode 100644
index 0000000000000000000000000000000000000000..2e7a5323209344aa9282d2d17640f8f5c6a77110
--- /dev/null
+++ b/Projects/Dali/DaliMinos.detector
@@ -0,0 +1,94 @@
+Minos
+  R= 35 mm
+  THETA= 90 deg
+  POS = 0 0 -307.07 mm
+  PHI= 63 deg
+  Shape= Cylindrical
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 240 deg
+ Zeta = -90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 180 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 120 deg 
+ Zeta = -90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 60 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm
+ Alpha = 0 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = -60 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm
+ Alpha = 240 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 180 deg 
+ Zeta = 90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 120 deg 
+ Zeta = 90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 60 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 0 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = -60 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Projects/Dali/DaliWithHTarget.detector b/Projects/Dali/DaliWithHTarget.detector
new file mode 100644
index 0000000000000000000000000000000000000000..f8cc1470513e4eeaa981ba61b2cbed344df0f9d5
--- /dev/null
+++ b/Projects/Dali/DaliWithHTarget.detector
@@ -0,0 +1,97 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Target
+ THICKNESS= 150 mm
+ RADIUS=	19.5 mm
+ MATERIAL= H2
+ ANGLE= 0 deg
+ X= 0 mm
+ Y= 0 mm
+ Z= -90.03 mm
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 240 deg
+ Zeta = -90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 180 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 120 deg 
+ Zeta = -90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 60 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm
+ Alpha = 0 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = -60 deg 
+ Zeta = -90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm
+ Alpha = 240 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 180 deg 
+ Zeta = 90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 120 deg 
+ Zeta = 90.03 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 60 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 0 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = -60 deg 
+ Zeta = 90.03 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Projects/Dali/OneRingDali.detector b/Projects/Dali/OneRingDali.detector
new file mode 100644
index 0000000000000000000000000000000000000000..89fa58598ac0bff3c189a4c0262a32e896570e1f
--- /dev/null
+++ b/Projects/Dali/OneRingDali.detector
@@ -0,0 +1,52 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Target
+ THICKNESS= 20 mm
+ RADIUS=	20 mm
+ MATERIAL= CD2
+ ANGLE= 0 deg
+ X= 0 mm
+ Y= 0 mm
+ Z= 220 mm
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 240 deg
+ Zeta = 0 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 180 deg 
+ Zeta = 0 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 120 deg 
+ Zeta = 0 mm 
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = 60 deg 
+ Zeta = 0 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm
+ Alpha = 0 deg 
+ Zeta = 0 mm
+ Shape = Square
+ Material = NaI(Tl)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Dali
+ R = 212.4 mm 
+ Alpha = -60 deg 
+ Zeta = 0 mm
+ Shape = Square
+ Material = NaI(Tl)
+
diff --git a/Projects/Dali/carbon.reaction b/Projects/Dali/carbon.reaction
index eade1aafcae76a25f3a3af467b8304746fd78605..c67344707f24a36a1e628d93f49084c4c84a4701 100644
--- a/Projects/Dali/carbon.reaction
+++ b/Projects/Dali/carbon.reaction
@@ -2,19 +2,19 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Beam
  Particle= 1H 
- ExcitationEnergy= 0
- Energy= 170
- SigmaEnergy= 0.448
- SigmaThetaX= 0.01 
- SigmaPhiY= 0.01
- SigmaX= 0.01 
+ ExcitationEnergy= 0 MeV
+ Energy= 170 MeV 
+ SigmaEnergy= 0.448 MeV
+ SigmaThetaX= 0.01 deg
+ SigmaPhiY= 0.01 deg
+ SigmaX= 0.01 mm
  %0.5
- SigmaY= 0.01 
+ SigmaY= 0.01 mm
  %0.5
- MeanThetaX= 0
- MeanPhiY= 0
- MeanX= 0
- MeanY= 0
+ MeanThetaX= 0 deg
+ MeanPhiY= 0 deg
+ MeanX= 0 mm
+ MeanY= 0 mm
  %EnergyProfilePath=
  %XThetaXProfilePath=
  %YPhiYProfilePath=
@@ -24,8 +24,8 @@ TwoBodyReaction
  Target= 12C
  Light= 12C
  Heavy= 1H
- ExcitationEnergyLight= 0.0
- ExcitationEnergyHeavy= 0.0
+ ExcitationEnergyLight= 0.0 MeV 
+ ExcitationEnergyHeavy= 0.0 MeV 
  CrossSectionPath= flat.txt CSR
  ShootLight= 1
  ShootHeavy= 1
diff --git a/Projects/Minos/Minos.detector b/Projects/Minos/Minos.detector
index 0fee81996115e2f83ef1ee05d5bf267f04bb0abc..03f4402a113411b88d434ba36e226d1c5e24a6bb 100644
--- a/Projects/Minos/Minos.detector
+++ b/Projects/Minos/Minos.detector
@@ -16,7 +16,7 @@
 Minos
   R= 35 mm
   THETA= 90 deg
-  POS = 100 100 100 cm
+  POS = 0 0 -50 cm
   PHI= 63 deg
   Shape= Cylindrical
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%