diff --git a/Inputs/DetectorConfiguration/e628.detector b/Inputs/DetectorConfiguration/e628.detector
index dc070a5ddf1aab1420710c09942820bfb0efeb9a..aae591beed318b328c41d0dc47275026167b6d51 100644
--- a/Inputs/DetectorConfiguration/e628.detector
+++ b/Inputs/DetectorConfiguration/e628.detector
@@ -2,16 +2,16 @@
 CATSArray
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 CATSDetector
-   X1_Y1=          -34.36  -34.96  -962.5
-   X28_Y1=         36.76   -34.96  -962.5
-   X1_Y28=         -34.36  36.16   -962.5
-   X28_Y28=        36.76   36.16   -962.5
+   X1_Y1=          -34.36  -34.96  -1193
+   X28_Y1=         36.76   -34.96  -1193
+   X1_Y28=         -34.36  36.16   -1193
+   X28_Y28=        36.76   36.16   -1193
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2
 CATSDetector
-   X1_Y1=          34.26   -35.46  -562.5
-   X28_Y1=         -36.86  -35.46  -562.5
-   X1_Y28=         34.26   35.66   -562.5
-   X28_Y28=        -36.86  35.66   -562.5
+   X1_Y1=          34.26   -35.46  -684
+   X28_Y1=         -36.86  -35.46  -684
+   X1_Y28=         34.26   35.66   -684
+   X28_Y28=        -36.86  35.66   -684
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%         
diff --git a/Inputs/EventGenerator/10He.reaction b/Inputs/EventGenerator/10He.reaction
index 32a211b93585c567e758cf9e411131d9d839df76..4e92aed97465ef317d592bb1a0f0cdc7f5b6b400 100644
--- a/Inputs/EventGenerator/10He.reaction
+++ b/Inputs/EventGenerator/10He.reaction
@@ -36,8 +36,8 @@ TwoBodyReaction
 	Light= 3He
 	Heavy= 10He
 	ExcitationEnergyLight= 0.0
-	ExcitationEnergyHeavy= 3.0
-  CrossSectionPath= flat.txt	CS10He
+	ExcitationEnergyHeavy= 1.3
+  CrossSectionPath= 11Li(d,3He)10He.txt	CS10He
 	ShootLight= 1
 	ShootHeavy= 1
   
diff --git a/NPAnalysis/MakePhysicalTree/Analysis.cxx b/NPAnalysis/MakePhysicalTree/Analysis.cxx
index 47b3da4f69845162c5351752e4708d883811f796..12ee9b6fbf18f349f4fbd1855f5d80f2a0ff705f 100644
--- a/NPAnalysis/MakePhysicalTree/Analysis.cxx
+++ b/NPAnalysis/MakePhysicalTree/Analysis.cxx
@@ -33,7 +33,6 @@ int main(int argc, char** argv)
 
    // Get the formed Chained Tree and Treat it
    TChain* Chain = RootInput:: getInstance() -> GetChain();
-   TExogamPhysics *Exo 	 = (TExogamPhysics*)  myDetector -> GetDetector("EXOGAM")	;
 
    // Get number of events to treat
    cout << endl << "///////// Starting Analysis ///////// "<< endl;
@@ -66,19 +65,6 @@ int main(int argc, char** argv)
       Put your code here
 
       ************************************************/
-      for(int i=0; i<4; i++) EGammaDC[i]=0;
-      for(int i=0; i<Exo->TotalEnergy_lab.size(); i++)
-	{
-		float mytheta=Exo->GetSegmentAnglePhi(Exo->CloverNumber[i], Exo->CristalNumber[i], Exo->SegmentNumber[i]);
-		float myphi=Exo->GetSegmentAngleTheta(Exo->CloverNumber[i], Exo->CristalNumber[i], Exo->SegmentNumber[i]);	
-		//myv(Exo->TotalEnergy_lab[i]*sin(mytheta)*sin(myphi),Exo->TotalEnergy_lab[i]*sin(mytheta)*cos(myphi) , Exo->TotalEnergy_lab[i]*cos(mytheta),(Exo->TotalEnergy_lab)[i]); 
-		//cout<<Exo->TotalEnergy_lab[i]<<endl;
-		EGammaDC[i]=Exo->TotalEnergy_lab[i]*(1-beta*cos(mytheta*TMath::DegToRad()))/sqrt(1-beta*beta);
-		//TVector3 boost= imp4.BoostVector(); 
-		//myv.Boost(-boost);
-		//DopplerCorrectedEnergy.push_back(myv.T());
-		//h_DopplerCorrectedEnergy->Fill(myv.T());
-	}
       RootOutput::getInstance()->GetTree()->Fill();
    }
 
diff --git a/NPAnalysis/MakePhysicalTree/RunToTreat.txt b/NPAnalysis/MakePhysicalTree/RunToTreat.txt
index 7d6ccc63fa563562506ec3a1b53d3b257d6ef83b..b620b3931e9eaa0be6a5d2f58d3dee0ff3e4c525 100644
--- a/NPAnalysis/MakePhysicalTree/RunToTreat.txt
+++ b/NPAnalysis/MakePhysicalTree/RunToTreat.txt
@@ -1,4 +1,13 @@
 TTreeName 
 	AutoTree
 RootFileName 
-	/data/e628X/e628/acquisition/run_root/run_1070.root
+%	/data/e628X/e628/acquisition/run_root/run_1352.1.root
+%	/data/e628X/e628/acquisition/run_root/run_1353.0.root
+	/data/e628X/e628/acquisition/run_root/run_1354.0.root
+%	/data/e628X/e628/acquisition/run_root/run_1354.1.root
+%	/data/e628X/e628/acquisition/run_root/run_1355.0.root
+%	/data/e628X/e628/acquisition/run_root/run_1356.0.root
+%	/data/e628X/e628/acquisition/run_root/run_1357.0.root
+%	/data/e628X/e628/acquisition/run_root/run_1357.1.root
+%	/data/e628X/e628/acquisition/run_root/run_1358.0.root
+%	/data/e628X/e628/acquisition/run_root/run_1358.1.root
diff --git a/NPAnalysis/e628/Calibration.txt b/NPAnalysis/e628/Calibration.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2e0fa0b096758e253bf01c39b2aebaeb6cf0075e
--- /dev/null
+++ b/NPAnalysis/e628/Calibration.txt
@@ -0,0 +1,40 @@
+CalibrationFilePath
+/home/e628/nptool/NPAnalysis/Exogam/calibration_Exogam_Seg_27_02_2014.cal
+/home/e628/nptool/NPAnalysis/Exogam/calibration_Exogam_ECC_05_03_2014.cal
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/CATS1_X.txt
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/CATS1_Y.txt
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/CATS2_X.txt
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/CATS2_Y.txt
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/Cal_Str_X_E_MM1.cal
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/Cal_Str_X_E_MM2.cal
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/Cal_Str_X_E_MM3.cal
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/Cal_Str_X_E_MM4.cal
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/Cal_Str_Y_E_MM1.cal
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/Cal_Str_Y_E_MM2.cal
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/Cal_Str_Y_E_MM3.cal
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/Cal_Str_Y_E_MM4.cal
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/BarrelCalib.txt
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/BarrelMatchsticks.txt
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/BarrelBallistic.txt
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/Charissa.txt
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/HyballCalib.txt
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/HyballMatchstick.txt
+/home/e628/ganacq_manip/e628/GRU/GRUscripts/calib/Calibration_CsI_MUST2.txt
+
+
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Energy/Calibration/calib_run1007/Test_X_T1_E/Cal_Str_X_E_MM1.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Energy/Calibration/calib_run1007/Test_X_T2_E/Cal_Str_X_E_MM2.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Energy/Calibration/calib_run1007/Test_X_T3_E/Cal_Str_X_E_MM3.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Energy/Calibration/calib_run1007/Test_X_T4_E/Cal_Str_X_E_MM4.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Energy/Calibration/calib_run1007/Test_Y_T1_E/Cal_Str_Y_E_MM1.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Energy/Calibration/calib_run1007/Test_Y_T2_E/Cal_Str_Y_E_MM2.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Energy/Calibration/calib_run1007/Test_Y_T3_E/Cal_Str_Y_E_MM3.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Energy/Calibration/calib_run1007/Test_Y_T4_E/Cal_Str_Y_E_MM4.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Time/Coeff/Cal_Str_X_T_MM1.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Time/Coeff/Cal_Str_X_T_MM2.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Time/Coeff/Cal_Str_X_T_MM3.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Time/Coeff/Cal_Str_X_T_MM4.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Time/Coeff/Cal_Str_Y_T_MM1.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Time/Coeff/Cal_Str_Y_T_MM2.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Time/Coeff/Cal_Str_Y_T_MM3.cal
+%/home/e628/nptool/NPAnalysis/must2/macro/Calibration/Time/Coeff/Cal_Str_Y_T_MM4.cal
diff --git a/NPAnalysis/e628/Makefile b/NPAnalysis/e628/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..bdfccb1e4ff94a2d3dfe6398de9f70c90b206d31
--- /dev/null
+++ b/NPAnalysis/e628/Makefile
@@ -0,0 +1,30 @@
+# include same architecture file than for NPLib
+# so that consistency is ensured
+include $(NPTOOL)/NPLib/Makefile.arch
+
+# additional libraries
+LIBRARY  = `$(NPTOOL)/NPLib/liblist`
+
+PROGRAMS	= Analysis
+
+all:	$(PROGRAMS)
+
+Analysis:	Analysis.o
+	$(LD) $(LDFLAGS) $^ $(LIBS) $(LIBRARY) $(OutPutOpt) $@
+	@echo "$@ done"
+	
+
+# rule for creating .o from .cxx
+.SUFFIXES: .$(SrcSuf)
+.$(SrcSuf).$(ObjSuf):
+	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
+
+# some cleaning
+clean:
+	rm -rf *.o
+
+distclean:
+	make clean; rm $(PROGRAMS)
+
+# dependences
+Analysis.o:	Analysis.cxx	Analysis.h
diff --git a/NPAnalysis/e628/RunToTreat.txt b/NPAnalysis/e628/RunToTreat.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b7b97b5c094a9f14c085e17dbf2c69efda2d9753
--- /dev/null
+++ b/NPAnalysis/e628/RunToTreat.txt
@@ -0,0 +1,10 @@
+TTreeName 
+	AutoTree
+RootFileName 
+	/data/e628X/e628/acquisition/run_root/run_1377.0.root
+	/data/e628X/e628/acquisition/run_root/run_1377.1.root
+%	/data/e628X/e628/acquisition/run_root/run_1336.2.root
+	
+	
+
+
diff --git a/NPAnalysis/e628/RunToTreat_anna.txt b/NPAnalysis/e628/RunToTreat_anna.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c49be2afc09a4928587c8ebe66225367e9f37d3f
--- /dev/null
+++ b/NPAnalysis/e628/RunToTreat_anna.txt
@@ -0,0 +1,4 @@
+TTreeName 
+	AutoTree
+RootFileName 
+%	/data/e628X/e628/acquisition/run_root/run_1255.root
diff --git a/NPAnalysis/e628/RunToTreat_ben.txt b/NPAnalysis/e628/RunToTreat_ben.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7629856a47bf9ebfa2fc32e9ef6130d476f5b476
--- /dev/null
+++ b/NPAnalysis/e628/RunToTreat_ben.txt
@@ -0,0 +1,4 @@
+TTreeName 
+	AutoTree
+RootFileName 
+%	/data/e628X/e628/acquisition/run_root/run_1005.root
diff --git a/NPAnalysis/e628/configs/ConfigMust2.dat b/NPAnalysis/e628/configs/ConfigMust2.dat
new file mode 100644
index 0000000000000000000000000000000000000000..52b223f917c5129f6a46b2349cc96cfcd8df4b5b
--- /dev/null
+++ b/NPAnalysis/e628/configs/ConfigMust2.dat
@@ -0,0 +1,5 @@
+ConfigMust2
+	MAX_STRIP_MULTIPLICITY	1
+	
+	
+	
diff --git a/NPAnalysis/e628/configs/ConfigMust2.dat~ b/NPAnalysis/e628/configs/ConfigMust2.dat~
new file mode 100644
index 0000000000000000000000000000000000000000..3d0c81d7d0bd94c1233226f34e694552f95a488c
--- /dev/null
+++ b/NPAnalysis/e628/configs/ConfigMust2.dat~
@@ -0,0 +1,8 @@
+ConfigMust2
+	MAX_STRIP_MULTIPLICITY	1
+	SI_X_E_RAW_THRESHOLD   0
+	SILI_E_RAW_THRESHOLD   0
+	SILI_E_THRESHOLD       0
+	DISABLE_CHANNEL MM4STRX3
+	DISABLE_ALL MM1
+	
diff --git a/NPAnalysis/e628/configs/angles_exogam_clover0_01_03_2014.txt b/NPAnalysis/e628/configs/angles_exogam_clover0_01_03_2014.txt
new file mode 100755
index 0000000000000000000000000000000000000000..ad7ec746ce382d11a9ff91263a32261bf4040e7d
--- /dev/null
+++ b/NPAnalysis/e628/configs/angles_exogam_clover0_01_03_2014.txt
@@ -0,0 +1,16 @@
+exogam_seg_00A0_theta 	117.844969  exogam_seg_00A0_phi -76.886864
+exogam_seg_00A1_theta 	99.581160   exogam_seg_00A1_phi -76.886864
+exogam_seg_00A2_theta 	101.033306  exogam_seg_00A2_phi -56.243774
+exogam_seg_00A3_theta 	121.390958  exogam_seg_00A3_phi -56.243774
+exogam_seg_00B0_theta 	62.155036   exogam_seg_00B0_phi -76.886864
+exogam_seg_00B1_theta 	58.609034   exogam_seg_00B1_phi -56.243774
+exogam_seg_00B2_theta 	78.966693   exogam_seg_00B2_phi -56.243774
+exogam_seg_00B3_theta 	80.418845   exogam_seg_00B3_phi -76.886864
+exogam_seg_00C0_theta 	62.155036   exogam_seg_00C0_phi -13.113146
+exogam_seg_00C1_theta 	80.418845   exogam_seg_00C1_phi -13.113146
+exogam_seg_00C2_theta 	78.966693   exogam_seg_00C2_phi -33.756226
+exogam_seg_00C3_theta 	58.609034   exogam_seg_00C3_phi -33.756226
+exogam_seg_00D0_theta 	117.844969  exogam_seg_00D0_phi -13.113146
+exogam_seg_00D1_theta 	121.390958  exogam_seg_00D1_phi -33.756226
+exogam_seg_00D2_theta 	101.033306  exogam_seg_00D2_phi -33.756226
+exogam_seg_00D3_theta 	99.581160   exogam_seg_00D3_phi -13.113146
diff --git a/NPAnalysis/e628/configs/angles_exogam_clover1_01_03_2014.txt b/NPAnalysis/e628/configs/angles_exogam_clover1_01_03_2014.txt
new file mode 100755
index 0000000000000000000000000000000000000000..bc822991a99efe59a39fa93dfa37f01aee8da52f
--- /dev/null
+++ b/NPAnalysis/e628/configs/angles_exogam_clover1_01_03_2014.txt
@@ -0,0 +1,16 @@
+exogam_seg_01A0_theta 	62.155036   exogam_seg_01A0_phi 256.886871
+exogam_seg_01A1_theta 	80.418845   exogam_seg_01A1_phi 256.886871
+exogam_seg_01A2_theta 	78.966693   exogam_seg_01A2_phi 236.243774
+exogam_seg_01A3_theta 	58.609034   exogam_seg_01A3_phi 236.243774
+exogam_seg_01B0_theta 	117.844969  exogam_seg_01B0_phi 256.886871
+exogam_seg_01B1_theta 	121.390958  exogam_seg_01B1_phi 236.243774
+exogam_seg_01B2_theta 	101.033306  exogam_seg_01B2_phi 236.243774
+exogam_seg_01B3_theta 	99.581160   exogam_seg_01B3_phi 256.886871
+exogam_seg_01C0_theta 	117.844969  exogam_seg_01C0_phi 193.113144
+exogam_seg_01C1_theta 	99.581160   exogam_seg_01C1_phi 193.113144
+exogam_seg_01C2_theta 	101.033306  exogam_seg_01C2_phi 213.756226
+exogam_seg_01C3_theta 	121.390958  exogam_seg_01C3_phi 213.756226
+exogam_seg_01D0_theta 	62.155036   exogam_seg_01D0_phi 193.113144
+exogam_seg_01D1_theta 	58.609034   exogam_seg_01D1_phi 213.756226
+exogam_seg_01D2_theta 	78.966693   exogam_seg_01D2_phi 213.756226
+exogam_seg_01D3_theta 	80.418845   exogam_seg_01D3_phi 193.113144
diff --git a/NPAnalysis/e628/configs/angles_exogam_clover2_01_03_2014.txt b/NPAnalysis/e628/configs/angles_exogam_clover2_01_03_2014.txt
new file mode 100755
index 0000000000000000000000000000000000000000..36b3bf632853403c42e35173a5dbfb04c43bb88c
--- /dev/null
+++ b/NPAnalysis/e628/configs/angles_exogam_clover2_01_03_2014.txt
@@ -0,0 +1,17 @@
+exogam_seg_02A0_theta	 117.844969  exogam_seg_02A0_phi  13.113141
+exogam_seg_02A1_theta	 99.581160   exogam_seg_02A1_phi  13.113141
+exogam_seg_02A2_theta	 101.033306  exogam_seg_02A2_phi  33.756229
+exogam_seg_02A3_theta	 121.390958  exogam_seg_02A3_phi  33.756229
+exogam_seg_02B0_theta	 62.155036   exogam_seg_02B0_phi  13.113141
+exogam_seg_02B1_theta	 58.609034   exogam_seg_02B1_phi  33.756229
+exogam_seg_02B2_theta	 78.966693   exogam_seg_02B2_phi  33.756229
+exogam_seg_02B3_theta	 80.418845   exogam_seg_02B3_phi  13.113141
+exogam_seg_02C0_theta	 62.155036   exogam_seg_02C0_phi  76.886856
+exogam_seg_02C1_theta	 80.418845   exogam_seg_02C1_phi  76.886856
+exogam_seg_02C2_theta	 78.966693   exogam_seg_02C2_phi  56.243771
+exogam_seg_02C3_theta	 58.609034   exogam_seg_02C3_phi  56.243771
+exogam_seg_02D0_theta	 117.844969  exogam_seg_02D0_phi  76.886856
+exogam_seg_02D1_theta	 121.390958  exogam_seg_02D1_phi  56.243771
+exogam_seg_02D2_theta	 101.033306  exogam_seg_02D2_phi  56.243771
+exogam_seg_02D3_theta	 99.581160   exogam_seg_02D3_phi  76.886856
+
diff --git a/NPAnalysis/e628/configs/angles_exogam_clover3_01_03_2014.txt b/NPAnalysis/e628/configs/angles_exogam_clover3_01_03_2014.txt
new file mode 100755
index 0000000000000000000000000000000000000000..1d0dd1d7e27dc5d40a24da16cbe5076bb99c3707
--- /dev/null
+++ b/NPAnalysis/e628/configs/angles_exogam_clover3_01_03_2014.txt
@@ -0,0 +1,17 @@
+exogam_seg_03A0_theta	 62.155036   exogam_seg_03A0_phi  166.886856
+exogam_seg_03A1_theta	 80.418845   exogam_seg_03A1_phi  166.886856
+exogam_seg_03A2_theta	 78.966693   exogam_seg_03A2_phi  146.243774
+exogam_seg_03A3_theta	 58.609034   exogam_seg_03A3_phi  146.243774
+exogam_seg_03B0_theta	 117.844969  exogam_seg_03B0_phi  166.886856
+exogam_seg_03B1_theta	 121.390958  exogam_seg_03B1_phi  146.243774
+exogam_seg_03B2_theta	 101.033306  exogam_seg_03B2_phi  146.243774
+exogam_seg_03B3_theta	 99.581160   exogam_seg_03B3_phi  166.886856
+exogam_seg_03C0_theta	 117.844969  exogam_seg_03C0_phi  103.113144
+exogam_seg_03C1_theta	 99.581160   exogam_seg_03C1_phi  103.113144
+exogam_seg_03C2_theta	 101.033306  exogam_seg_03C2_phi  123.756226
+exogam_seg_03C3_theta	 121.390958  exogam_seg_03C3_phi  123.756226
+exogam_seg_03D0_theta	 62.155036   exogam_seg_03D0_phi  103.113144
+exogam_seg_03D1_theta	 58.609034   exogam_seg_03D1_phi  123.756226
+exogam_seg_03D2_theta	 78.966693   exogam_seg_03D2_phi  123.756226
+exogam_seg_03D3_theta	 80.418845   exogam_seg_03D3_phi  103.113144
+
diff --git a/NPAnalysis/e628/configs/beta.txt b/NPAnalysis/e628/configs/beta.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2de4f59097343317909308e82ecc6f54fa3a20d0
--- /dev/null
+++ b/NPAnalysis/e628/configs/beta.txt
@@ -0,0 +1 @@
+0.18384
diff --git a/NPAnalysis/e628/configs/beta.txt.~1~ b/NPAnalysis/e628/configs/beta.txt.~1~
new file mode 100644
index 0000000000000000000000000000000000000000..f3b84867e0ee9f5514e434e6bbf76e08fd5a660a
--- /dev/null
+++ b/NPAnalysis/e628/configs/beta.txt.~1~
@@ -0,0 +1 @@
+0.18441
diff --git a/NPAnalysis/e628/configs/beta.txt.~2~ b/NPAnalysis/e628/configs/beta.txt.~2~
new file mode 100644
index 0000000000000000000000000000000000000000..ba66466c2a0d0a1080ad71d8e1a67a97f336c384
--- /dev/null
+++ b/NPAnalysis/e628/configs/beta.txt.~2~
@@ -0,0 +1 @@
+0.0
diff --git a/NPAnalysis/e628/e628.detector b/NPAnalysis/e628/e628.detector
new file mode 100644
index 0000000000000000000000000000000000000000..7a947800bb2937b8f10d5f6535535d8bf2f0ee78
--- /dev/null
+++ b/NPAnalysis/e628/e628.detector
@@ -0,0 +1,115 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CATSArray
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CATSDetector
+   X1_Y1=         38.86    -34.36  -1193
+   X28_Y1=        -32.26   -34.36  -1193
+   X1_Y28=        38.86    37.36   -1193
+   X28_Y28=       -32.26   37.36   -1193
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2
+CATSDetector
+   X1_Y1=         -35.56  -35.36  -684
+   X28_Y1=        35.56  -35.36  -684
+   X1_Y28=        -35.56   35.76  -684
+   X28_Y28=       35.56   35.76  -684
+%%%%%%%%%%%%%%%%%%%%%%%%%%%         
+MUST2Array        
+%%%%%%% Telescope 1 %%%%%%%         
+M2Telescope          
+X1_Y1=      10.85 105.03   146.16
+X1_Y128= 22.8  9.84  175.95
+X128_Y1= 104.09   105.03   108.76
+X128_Y128=  116.04   9.84  138.55
+SI=   1     
+SILI= 0     
+CSI=  1     
+VIS=  all      
+         
+%%%%%%% Telescope 2 %%%%%%% 
+M2Telescope          
+X1_Y1=      -116.04  9.84  138.55
+X1_Y128= -22.8 9.84  175.95
+X128_Y1= -104.09  105.03   108.76
+X128_Y128=  -10.85   105.03   146.16
+SI=   1     
+SILI= 0     
+CSI=  1     
+VIS=  all      
+         
+%%%%%%% Telescope 3 %%%%%%%         
+M2Telescope          
+X1_Y1=      -10.85   -105.03  146.16
+X1_Y128= -22.8 -9.84 175.95
+X128_Y1= -104.09  -105.03  108.76
+X128_Y128=  -116.04  -9.84 138.55
+SI=   1     
+SILI= 0     
+CSI=  1     
+VIS=  all      
+         
+%%%%%%% Telescope 4 %%%%%%%         
+M2Telescope          
+X1_Y1=      116.04   -9.84 138.55
+X1_Y128= 22.8  -9.84 175.95
+X128_Y1= 104.09   -105.03  108.76
+X128_Y128=  10.85 -105.03  146.16
+SI=   1     
+SILI= 0     
+CSI=  1     
+VIS=  all      
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+EXOGAMArray
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1
+EXOGAMClover
+	ANGLES_FILE=	angles_exogam_clover0_01_03_2014.txt
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2
+EXOGAMClover
+	ANGLES_FILE=	angles_exogam_clover1_01_03_2014.txt
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3
+EXOGAMClover
+	ANGLES_FILE=	angles_exogam_clover2_01_03_2014.txt
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4
+EXOGAMClover
+	ANGLES_FILE=	angles_exogam_clover3_01_03_2014.txt
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%         
+TiaraHyball
+TiaraHyballWedge
+   Z= -154.3
+   R= 0
+   Phi= 0
+TiaraHyballWedge
+   Z= -154.3
+   R= 0
+   Phi= 60
+TiaraHyballWedge
+   Z= -154.3
+   R= 0
+   Phi= 120
+TiaraHyballWedge
+   Z= -154.3
+   R= 0
+   Phi= 180
+TiaraHyballWedge
+   Z= -154.3
+   R= 0
+   Phi= 240
+TiaraHyballWedge
+   Z= -154.3
+   R= 0
+   Phi= 300
+%%%%%%%%%%%%%%%%%%%%%%%%%%%         
+TiaraBarrel
+   X= 0
+   Y= 0
+   Z= 0
+   OuterBarrel= 1
+   InnerBarrel= 1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%      
+CharissaArray
+CharissaTelescope          
+X1_Y1=      10   -10 350
+X1_Y16= -10  -10 350
+X16_Y1= -10   10  350
+X16_Y16=  10 10  350
diff --git a/NPAnalysis/e628/e628.detector.original b/NPAnalysis/e628/e628.detector.original
new file mode 100644
index 0000000000000000000000000000000000000000..282d71bb636321c487f239f35d065d4299d050d8
--- /dev/null
+++ b/NPAnalysis/e628/e628.detector.original
@@ -0,0 +1,88 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%         
+MUST2Array        
+%%%%%%% Telescope 1 %%%%%%%         
+M2Telescope          
+X1_Y1=      10.85 105.03   146.16
+X1_Y128= 22.8  9.84  175.95
+X128_Y1= 104.09   105.03   108.76
+X128_Y128=  116.04   9.84  138.55
+SI=   1     
+SILI= 0     
+CSI=  1     
+VIS=  all      
+         
+%%%%%%% Telescope 2 %%%%%%%         
+M2Telescope          
+X1_Y1=      -116.04  9.84  138.55
+X1_Y128= -22.8 9.84  175.95
+X128_Y1= -104.09  105.03   108.76
+X128_Y128=  -10.85   105.03   146.16
+SI=   1     
+SILI= 0     
+CSI=  1     
+VIS=  all      
+         
+%%%%%%% Telescope 3 %%%%%%%         
+M2Telescope          
+X1_Y1=      -10.85   -105.03  146.16
+X1_Y128= -22.8 -9.84 175.95
+X128_Y1= -104.09  -105.03  108.76
+X128_Y128=  -116.04  -9.84 138.55
+SI=   1     
+SILI= 0     
+CSI=  1     
+VIS=  all      
+         
+%%%%%%% Telescope 4 %%%%%%%         
+M2Telescope          
+X1_Y1=      116.04   -9.84 138.55
+X1_Y128= 22.8  -9.84 175.95
+X128_Y1= 104.09   -105.03  108.76
+X128_Y128=  10.85 -105.03  146.16
+SI=   1     
+SILI= 0     
+CSI=  1     
+VIS=  all      
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+EXOGAMArray
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1
+EXOGAMClover
+	ANGLES_FILE=	angles_exogam_clover0.txt.anna
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2
+EXOGAMClover
+	ANGLES_FILE=	angles_exogam_clover1.txt.anna
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%3
+EXOGAMClover
+	ANGLES_FILE=	angles_exogam_clover2.txt.anna
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4
+EXOGAMClover
+	ANGLES_FILE=	angles_exogam_clover3.txt.anna
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%0
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%         
+%TiaraHyball
+%TiaraHyballWedge
+%   Z= -147
+%   R= 0
+%   PHI= 0
+%TiaraHyballWedge
+%   Z= -147
+%   R= 0
+%   PHI= 60
+%TiaraHyballWedge
+%   Z= -147
+%   R= 0
+%   PHI= 120
+%TiaraHyballWedge
+%   Z= -147
+%   R= 0
+%   PHI= 180
+%TiaraHyballWedge
+%   Z= -147
+%   R= 0
+%   PHI= 240
+%TiaraHyballWedge
+%   Z= -147
+%   R= 0
+ %  PHI= 300
diff --git a/NPAnalysis/e628/out b/NPAnalysis/e628/out
new file mode 100644
index 0000000000000000000000000000000000000000..9ca07b38f580d33a67b0aac842f8205d6fcd4401
--- /dev/null
+++ b/NPAnalysis/e628/out
@@ -0,0 +1,27492 @@
+
+/////////// ROOT Input files ///////////
+Initializing input TChain
+Adding file /data/e628X/e628/acquisition/run_root/run_1005.root to TChain
+ROOTInput:  1104370 entries loaded in the input chain 
+Problem opening file defaultReaction.reaction
+
+/////////// Calibration Information ///////////
+Getting list of Calibration File
+Calibration Path file :defaultCalibration.txt not found 
+
+/////////// Detector geometry ///////////
+Configuration file e628.detector loading 
+//////// MUST2 Array ////////
+
+///
+Telescope found: 
+X1 Y1 corner position : (10.85;105.03;146.16)
+X1 Y128 corner position : (22.8;9.84;175.95)
+X128 Y1 corner position : (104.09;105.03;108.76)
+X128 Y128 corner position : (116.04;9.84;138.55)
+///
+Telescope found: 
+X1 Y1 corner position : (-116.04;9.84;138.55)
+X1 Y128 corner position : (-22.8;9.84;175.95)
+X128 Y1 corner position : (-104.09;105.03;108.76)
+X128 Y128 corner position : (-10.85;105.03;146.16)
+///
+Telescope found: 
+X1 Y1 corner position : (-10.85;-105.03;146.16)
+X1 Y128 corner position : (-22.8;-9.84;175.95)
+X128 Y1 corner position : (-104.09;-105.03;108.76)
+X128 Y128 corner position : (-116.04;-9.84;138.55)
+///
+Telescope found: 
+X1 Y1 corner position : (116.04;-9.84;138.55)
+X1 Y128 corner position : (22.8;-9.84;175.95)
+X128 Y1 corner position : (104.09;-105.03;108.76)
+X128 Y128 corner position : (10.85;-105.03;146.16)
+ Loading user parameters for Analysis from ConfigMust2.dat 
+MAXIMUN STRIP MULTIPLICITY 1
+
+/////////////////////////////
+
+//////// Exogam ////////
+
+///
+EXOGAM Detector found: 
+File angle used : angles_exogam_clover0.txt
+posz42_exp_stat_demiring/angles_exogam_clover0.txt
+Clover 0: Theta=88.46 Phi=-160.381
+Clover 0: Theta=71.82 Phi=-160.381
+Clover 0: Theta=71 Phi=-143.652
+Clover 0: Theta=85.44 Phi=-143.652
+Clover 0: Theta=44.91 Phi=-160.381
+Clover 0: Theta=49.29 Phi=-143.652
+Clover 0: Theta=53.72 Phi=-143.652
+Clover 0: Theta=61.76 Phi=-160.381
+Clover 0: Theta=44.91 Phi=-109.619
+Clover 0: Theta=61.76 Phi=-109.619
+Clover 0: Theta=53.72 Phi=-126.348
+Clover 0: Theta=49.29 Phi=-126.348
+Clover 0: Theta=88.46 Phi=-109.619
+Clover 0: Theta=85.44 Phi=-126.348
+Clover 0: Theta=71 Phi=-126.348
+Clover 0: Theta=71.82 Phi=-109.619
+///
+EXOGAM Detector found: 
+File angle used : angles_exogam_clover1.txt
+posz42_exp_stat_demiring/angles_exogam_clover1.txt
+Clover 1: Theta=88.46 Phi=-160.381
+Clover 1: Theta=71.82 Phi=-160.381
+Clover 1: Theta=71 Phi=-143.652
+Clover 1: Theta=85.44 Phi=-143.652
+Clover 1: Theta=44.91 Phi=-160.381
+Clover 1: Theta=49.29 Phi=-143.652
+Clover 1: Theta=53.72 Phi=-143.652
+Clover 1: Theta=61.76 Phi=-160.381
+Clover 1: Theta=44.91 Phi=-109.619
+Clover 1: Theta=61.76 Phi=-109.619
+Clover 1: Theta=53.72 Phi=-126.348
+Clover 1: Theta=49.29 Phi=-126.348
+Clover 1: Theta=88.46 Phi=-109.619
+Clover 1: Theta=85.44 Phi=-126.348
+Clover 1: Theta=71 Phi=-126.348
+Clover 1: Theta=71.82 Phi=-109.619
+///
+EXOGAM Detector found: 
+File angle used : angles_exogam_clover2.txt
+posz42_exp_stat_demiring/angles_exogam_clover2.txt
+Clover 2: Theta=44.91 Phi=-199.619
+Clover 2: Theta=61.76 Phi=-199.619
+Clover 2: Theta=53.72 Phi=-216.348
+Clover 2: Theta=49.29 Phi=-216.348
+Clover 2: Theta=88.41 Phi=-199.619
+Clover 2: Theta=85.44 Phi=-216.348
+Clover 2: Theta=71 Phi=-216.348
+Clover 2: Theta=71.82 Phi=-199.619
+Clover 2: Theta=88.41 Phi=-250.381
+Clover 2: Theta=71.82 Phi=-250.381
+Clover 2: Theta=71 Phi=-233.652
+Clover 2: Theta=85.44 Phi=-233.652
+Clover 2: Theta=44.91 Phi=-250.381
+Clover 2: Theta=49.29 Phi=-233.652
+Clover 2: Theta=53.72 Phi=-233.652
+Clover 2: Theta=61.76 Phi=-250.381
+///
+EXOGAM Detector found: 
+File angle used : angles_exogam_clover3.txt
+posz42_exp_stat_demiring/angles_exogam_clover3.txt
+Clover 3: Theta=44.91 Phi=-199.619
+Clover 3: Theta=61.76 Phi=-199.619
+Clover 3: Theta=53.72 Phi=-216.348
+Clover 3: Theta=49.29 Phi=-216.348
+Clover 3: Theta=88.41 Phi=-199.619
+Clover 3: Theta=85.44 Phi=-216.348
+Clover 3: Theta=71 Phi=-216.348
+Clover 3: Theta=71.82 Phi=-199.619
+Clover 3: Theta=88.41 Phi=-250.381
+Clover 3: Theta=71.82 Phi=-250.381
+Clover 3: Theta=71 Phi=-233.652
+Clover 3: Theta=85.44 Phi=-233.652
+Clover 3: Theta=44.91 Phi=-250.381
+Clover 3: Theta=49.29 Phi=-233.652
+Clover 3: Theta=53.72 Phi=-233.652
+Clover 3: Theta=61.76 Phi=-250.381
+
+///////// Starting Analysis ///////// 
+ Number of Event to be treated : 1104370
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+                                                                                                
 Progression:0.90549 % 	 | 	 Remaining time : ~0scalib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+                                                                                                
 Progression:1.811 % 	 | 	 Remaining time : ~54.218scalib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+                                                                                                
 Progression:2.7165 % 	 | 	 Remaining time : ~35.812scalib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+                                                                                                
 Progression:3.622 % 	 | 	 Remaining time : ~53.218scalib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+                                                                                                
 Progression:4.5275 % 	 | 	 Remaining time : ~42.175scalib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib high
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib high
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
+calib low
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt
new file mode 100755
index 0000000000000000000000000000000000000000..8dc82ed3286319ebfe77a22e488e7f77f077fcea
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt
@@ -0,0 +1,16 @@
+exogam_seg_00A0_theta 	105.681400  exogam_seg_00A0_phi -61.304195
+exogam_seg_00A1_theta 	95.126223  exogam_seg_00A1_phi -61.304195
+exogam_seg_00A2_theta 	95.316752  exogam_seg_00A2_phi -50.339787
+exogam_seg_00A3_theta 	106.237179  exogam_seg_00A3_phi -50.339787
+exogam_seg_00B0_theta 	74.318605  exogam_seg_00B0_phi -61.304195
+exogam_seg_00B1_theta 	73.762819  exogam_seg_00B1_phi -50.339787
+exogam_seg_00B2_theta 	84.683247  exogam_seg_00B2_phi -50.339787
+exogam_seg_00B3_theta 	84.873782  exogam_seg_00B3_phi -61.304195
+exogam_seg_00C0_theta 	74.318605  exogam_seg_00C0_phi -28.695807
+exogam_seg_00C1_theta 	84.873782  exogam_seg_00C1_phi -28.695807
+exogam_seg_00C2_theta 	84.683247  exogam_seg_00C2_phi -39.660213
+exogam_seg_00C3_theta 	73.762819  exogam_seg_00C3_phi -39.660213
+exogam_seg_00D0_theta 	105.681400  exogam_seg_00D0_phi -28.695807
+exogam_seg_00D1_theta 	106.237179  exogam_seg_00D1_phi -39.660213
+exogam_seg_00D2_theta 	95.316752  exogam_seg_00D2_phi -39.660213
+exogam_seg_00D3_theta 	95.126223  exogam_seg_00D3_phi -28.695807
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt.anna b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt.anna
new file mode 100644
index 0000000000000000000000000000000000000000..515692bcb40bd2d046483e3737fcbfd70652b3ba
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt.anna
@@ -0,0 +1,16 @@
+exogam_seg_01A0_theta  116.791221  exogam_seg_01A0_phi  -75.327637
+exogam_seg_01A1_theta  99.165891   exogam_seg_01A1_phi -75.327637 
+exogam_seg_01A2_theta  100.412086  exogam_seg_01A2_phi  -55.588406
+exogam_seg_01A3_theta  119.900583  exogam_seg_01A3_phi  -55.588406
+exogam_seg_01B0_theta  63.208784  exogam_seg_01B0_phi -75.327637 
+exogam_seg_01B1_theta  60.099422  exogam_seg_01B1_phi -55.588406 
+exogam_seg_01B2_theta  79.587912  exogam_seg_01B2_phi -55.588406 
+exogam_seg_01B3_theta  80.834107  exogam_seg_01B3_phi -75.327637 
+exogam_seg_01C0_theta   63.208784  exogam_seg_01C0_phi -14.672362 
+exogam_seg_01C1_theta   80.834107  exogam_seg_01C1_phi -14.672362 
+exogam_seg_01C2_theta   79.587912  exogam_seg_01C2_phi -34.411594 
+exogam_seg_01C3_theta   60.099422  exogam_seg_01C3_phi -34.411594
+exogam_seg_01D0_theta 	116.791221  exogam_seg_01D0_phi  -14.672362
+exogam_seg_01D1_theta 	119.900583  exogam_seg_01D1_phi  -34.411594
+exogam_seg_01D2_theta 	100.412086  exogam_seg_01D2_phi  -34.411594
+exogam_seg_01D3_theta 	99.165891   exogam_seg_01D3_phi -14.672362 
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt.original b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt.original
new file mode 100755
index 0000000000000000000000000000000000000000..730d9ca336dc3f7906f0ac8ebfbb6fa2d12f9c9e
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt.original
@@ -0,0 +1,16 @@
+exogam_seg_01A0_theta 	63.208784  exogam_seg_01A0_phi -14.672362
+exogam_seg_01A1_theta 	60.099422  exogam_seg_01A1_phi -14.672362
+exogam_seg_01A2_theta 	79.587912  exogam_seg_01A2_phi -34.411594
+exogam_seg_01A3_theta 	80.834107  exogam_seg_01A3_phi -34.411594
+exogam_seg_01B0_theta 	63.208784  exogam_seg_01B0_phi -14.672362
+exogam_seg_01B1_theta 	80.834107  exogam_seg_01B1_phi -14.672362
+exogam_seg_01B2_theta 	79.587912  exogam_seg_01B2_phi -34.411594
+exogam_seg_01B3_theta 	60.099422  exogam_seg_01B3_phi -34.411594
+exogam_seg_01C0_theta 	116.791221  exogam_seg_01C0_phi  -14.672362 
+exogam_seg_01C1_theta 	119.900583  exogam_seg_01C1_phi  -34.411594 
+exogam_seg_01C2_theta 	100.412086  exogam_seg_01C2_phi  -34.411594 
+exogam_seg_01C3_theta 	99.165891   exogam_seg_01C3_phi -14.672362 
+exogam_seg_01D0_theta 	107.123389  exogam_seg_01D0_phi  -17.943989
+exogam_seg_01D1_theta 	95.622573   exogam_seg_01D1_phi -17.943989 
+exogam_seg_01D2_theta 	95.876902   exogam_seg_01D2_phi -5.908062 
+exogam_seg_01D3_theta 	107.854745  exogam_seg_01D3_phi  -5.908062 
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt.~1~ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt.~1~
new file mode 100755
index 0000000000000000000000000000000000000000..7f92f55dcf6bb961509b2787b123e69fcecab5ef
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover0.txt.~1~
@@ -0,0 +1,16 @@
+exogam_seg_01A0_theta 	88.46  exogam_seg_01A0_phi -160.381
+exogam_seg_01A1_theta 	71.82  exogam_seg_01A1_phi -160.381
+exogam_seg_01A2_theta 	71.00  exogam_seg_01A2_phi -143.652
+exogam_seg_01A3_theta 	85.44  exogam_seg_01A3_phi -143.652
+exogam_seg_01B0_theta 	44.91  exogam_seg_01B0_phi -160.381
+exogam_seg_01B1_theta 	49.29  exogam_seg_01B1_phi -143.652
+exogam_seg_01B2_theta 	53.72  exogam_seg_01B2_phi -143.652
+exogam_seg_01B3_theta 	61.76  exogam_seg_01B3_phi -160.381
+exogam_seg_01C0_theta 	44.91  exogam_seg_01C0_phi -109.619
+exogam_seg_01C1_theta 	61.76  exogam_seg_01C1_phi -109.619
+exogam_seg_01C2_theta 	53.72  exogam_seg_01C2_phi -126.348
+exogam_seg_01C3_theta 	49.29  exogam_seg_01C3_phi -126.348
+exogam_seg_01D0_theta 	88.46  exogam_seg_01D0_phi -109.619
+exogam_seg_01D1_theta 	85.44  exogam_seg_01D1_phi -126.348
+exogam_seg_01D2_theta 	71.00  exogam_seg_01D2_phi -126.348
+exogam_seg_01D3_theta 	71.82  exogam_seg_01D3_phi -109.619
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt
new file mode 100755
index 0000000000000000000000000000000000000000..e35000e01b8a0cf121ddd57181f89821af94d2fb
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt
@@ -0,0 +1,16 @@
+exogam_seg_01A0_theta 	74.318605  exogam_seg_01A0_phi 241.304199
+exogam_seg_01A1_theta 	84.873782  exogam_seg_01A1_phi 241.304199
+exogam_seg_01A2_theta 	84.683247  exogam_seg_01A2_phi 230.339783
+exogam_seg_01A3_theta 	73.762819  exogam_seg_01A3_phi 230.339783
+exogam_seg_01B0_theta 	105.681400  exogam_seg_01B0_phi 241.304199
+exogam_seg_01B1_theta 	106.237179  exogam_seg_01B1_phi 230.339783
+exogam_seg_01B2_theta 	95.316752  exogam_seg_01B2_phi 230.339783
+exogam_seg_01B3_theta 	95.126223  exogam_seg_01B3_phi 241.304199
+exogam_seg_01C0_theta 	105.681400  exogam_seg_01C0_phi 208.695801
+exogam_seg_01C1_theta 	95.126223  exogam_seg_01C1_phi 208.695801
+exogam_seg_01C2_theta 	95.316752  exogam_seg_01C2_phi 219.660217
+exogam_seg_01C3_theta 	106.237179  exogam_seg_01C3_phi 219.660217
+exogam_seg_01D0_theta 	74.318605  exogam_seg_01D0_phi 208.695801
+exogam_seg_01D1_theta 	73.762819  exogam_seg_01D1_phi 219.660217
+exogam_seg_01D2_theta 	84.683247  exogam_seg_01D2_phi 219.660217
+exogam_seg_01D3_theta 	84.873782  exogam_seg_01D3_phi 208.695801
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.anna b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.anna
new file mode 100644
index 0000000000000000000000000000000000000000..71d5dce58fc11c2444724de70a4a4e6ac4ae41f2
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.anna
@@ -0,0 +1,16 @@
+exogam_seg_01A0_theta 	63.208784  exogam_seg_01A0_phi 255.327637
+exogam_seg_01A1_theta 	80.834107  exogam_seg_01A1_phi 255.327637
+exogam_seg_01A2_theta 	79.587912  exogam_seg_01A2_phi 235.588409
+exogam_seg_01A3_theta 	60.099422  exogam_seg_01A3_phi 235.588409
+exogam_seg_01B0_theta 	116.791221  exogam_seg_01B0_phi  255.327637
+exogam_seg_01B1_theta 	119.900583  exogam_seg_01B1_phi  235.588409
+exogam_seg_01B2_theta 	100.412086  exogam_seg_01B2_phi  235.588409
+exogam_seg_01B3_theta 	116.791221   exogam_seg_01B3_phi 255.327637 
+exogam_seg_01C0_theta 	99.165891   exogam_seg_01C0_phi 194.672363
+exogam_seg_01C1_theta 	100.412086  exogam_seg_01C1_phi 194.672363 
+exogam_seg_01C2_theta 	119.900583  exogam_seg_01C2_phi 214.411591
+exogam_seg_01C3_theta 	80.834107  exogam_seg_01C3_phi  214.411591
+exogam_seg_01D0_theta  63.208784  exogam_seg_01D0_phi 194.672363
+exogam_seg_01D1_theta  60.099422  exogam_seg_01D1_phi 214.411591
+exogam_seg_01D2_theta  79.587912  exogam_seg_01D2_phi 214.411591
+exogam_seg_01D3_theta  80.834107  exogam_seg_01D3_phi 194.672363
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.anna.~1~ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.anna.~1~
new file mode 100644
index 0000000000000000000000000000000000000000..98514fe7941625ec99b09c2fbe928bfd72e67c87
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.anna.~1~
@@ -0,0 +1,16 @@
+exogam_seg_01A0_theta 	63.208784  exogam_seg_01A0_phi 255.327637
+exogam_seg_01A1_theta 	80.834107  exogam_seg_01A1_phi 255.327637
+exogam_seg_01A2_theta 	79.587912  exogam_seg_01A2_phi 235.588409
+exogam_seg_01A3_theta 	60.099422  exogam_seg_01A3_phi 235.588409
+exogam_seg_01B0_theta 	116.791221  exogam_seg_01B0_phi  255.327637
+exogam_seg_01B1_theta 	119.900583  exogam_seg_01B1_phi  235.588409
+exogam_seg_01B2_theta 	100.412086  exogam_seg_01B2_phi  235.588409
+exogam_seg_01B3_theta 	116.791221   exogam_seg_01B3_phi 255.327637 
+exogam_seg_01C0_theta 	99.165891   exogam_seg_01C0_phi 194.672363
+exogam_seg_01C1_theta 	100.412086  exogam_seg_01C1_phi194.672363 
+exogam_seg_01C2_theta 	119.900583  exogam_seg_01C2_phi 214.411591
+exogam_seg_01C3_theta 	80.834107  exogam_seg_01C3_phi  214.411591
+exogam_seg_01D0_theta  63.208784  exogam_seg_01D0_phi 194.672363
+exogam_seg_01D1_theta  60.099422  exogam_seg_01D1_phi 214.411591
+exogam_seg_01D2_theta  79.587912  exogam_seg_01D2_phi 214.411591
+exogam_seg_01D3_theta  80.834107  exogam_seg_01D3_phi 194.672363
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.original b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.original
new file mode 100755
index 0000000000000000000000000000000000000000..ff9afce4aabe0e77faf050d32d9e0b454769e84c
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.original
@@ -0,0 +1,16 @@
+exogam_seg_01A0_theta 	116.791221  exogam_seg_01A0_phi  255.327637
+exogam_seg_01A1_theta 	119.900583  exogam_seg_01A1_phi  235.588409
+exogam_seg_01A2_theta 	100.412086  exogam_seg_01A2_phi  235.588409
+exogam_seg_01A3_theta 	99.165891   exogam_seg_01A3_phi 255.327637 
+exogam_seg_01B0_theta 	116.791221  exogam_seg_01B0_phi  194.672363
+exogam_seg_01B1_theta 	99.165891   exogam_seg_01B1_phi 194.672363 
+exogam_seg_01B2_theta 	100.412086  exogam_seg_01B2_phi  214.411591
+exogam_seg_01B3_theta 	119.900583  exogam_seg_01B3_phi  214.411591
+exogam_seg_01C0_theta 	63.208784  exogam_seg_01C0_phi 194.672363
+exogam_seg_01C1_theta 	60.099422  exogam_seg_01C1_phi 214.411591
+exogam_seg_01C2_theta 	79.587912  exogam_seg_01C2_phi 214.411591
+exogam_seg_01C3_theta 	80.834107  exogam_seg_01C3_phi 194.672363
+exogam_seg_01D0_theta 	72.876609  exogam_seg_01D0_phi 252.056000
+exogam_seg_01D1_theta 	72.145253  exogam_seg_01D1_phi 264.091919
+exogam_seg_01D2_theta 	84.123103  exogam_seg_01D2_phi 264.091919
+exogam_seg_01D3_theta 	84.377432  exogam_seg_01D3_phi 252.056000
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.~1~ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.~1~
new file mode 100755
index 0000000000000000000000000000000000000000..7f92f55dcf6bb961509b2787b123e69fcecab5ef
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover1.txt.~1~
@@ -0,0 +1,16 @@
+exogam_seg_01A0_theta 	88.46  exogam_seg_01A0_phi -160.381
+exogam_seg_01A1_theta 	71.82  exogam_seg_01A1_phi -160.381
+exogam_seg_01A2_theta 	71.00  exogam_seg_01A2_phi -143.652
+exogam_seg_01A3_theta 	85.44  exogam_seg_01A3_phi -143.652
+exogam_seg_01B0_theta 	44.91  exogam_seg_01B0_phi -160.381
+exogam_seg_01B1_theta 	49.29  exogam_seg_01B1_phi -143.652
+exogam_seg_01B2_theta 	53.72  exogam_seg_01B2_phi -143.652
+exogam_seg_01B3_theta 	61.76  exogam_seg_01B3_phi -160.381
+exogam_seg_01C0_theta 	44.91  exogam_seg_01C0_phi -109.619
+exogam_seg_01C1_theta 	61.76  exogam_seg_01C1_phi -109.619
+exogam_seg_01C2_theta 	53.72  exogam_seg_01C2_phi -126.348
+exogam_seg_01C3_theta 	49.29  exogam_seg_01C3_phi -126.348
+exogam_seg_01D0_theta 	88.46  exogam_seg_01D0_phi -109.619
+exogam_seg_01D1_theta 	85.44  exogam_seg_01D1_phi -126.348
+exogam_seg_01D2_theta 	71.00  exogam_seg_01D2_phi -126.348
+exogam_seg_01D3_theta 	71.82  exogam_seg_01D3_phi -109.619
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt
new file mode 100755
index 0000000000000000000000000000000000000000..92caf57c60e5a54cf71b5647a8e9fa9999378103
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt
@@ -0,0 +1,17 @@
+exogam_seg_02A0_theta	 105.681400  exogam_seg_02A0_phi  28.695801
+exogam_seg_02A1_theta	 95.126223  exogam_seg_02A1_phi  28.695801
+exogam_seg_02A2_theta	 95.316752  exogam_seg_02A2_phi  39.660210
+exogam_seg_02A3_theta	 106.237179  exogam_seg_02A3_phi  39.660210
+exogam_seg_02B0_theta	 74.318605  exogam_seg_02B0_phi  28.695801
+exogam_seg_02B1_theta	 73.762819  exogam_seg_02B1_phi  39.660210
+exogam_seg_02B2_theta	 84.683247  exogam_seg_02B2_phi  39.660210
+exogam_seg_02B3_theta	 84.873782  exogam_seg_02B3_phi  28.695801
+exogam_seg_02C0_theta	 74.318605  exogam_seg_02C0_phi  61.304199
+exogam_seg_02C1_theta	 84.873782  exogam_seg_02C1_phi  61.304199
+exogam_seg_02C2_theta	 84.683247  exogam_seg_02C2_phi  50.339794
+exogam_seg_02C3_theta	 73.762819  exogam_seg_02C3_phi  50.339794
+exogam_seg_02D0_theta	 105.681400  exogam_seg_02D0_phi  61.304199
+exogam_seg_02D1_theta	 106.237179  exogam_seg_02D1_phi  50.339794
+exogam_seg_02D2_theta	 95.316752  exogam_seg_02D2_phi  50.339794
+exogam_seg_02D3_theta	 95.126223  exogam_seg_02D3_phi  61.304199
+
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.anna b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.anna
new file mode 100644
index 0000000000000000000000000000000000000000..916f24a0bc577625c593893f1dc75d6cc519e93b
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.anna
@@ -0,0 +1,17 @@
+exogam_seg_03A0_theta  116.791221  exogam_seg_03A0_phi  14.672364
+exogam_seg_03A1_theta  99.165891   exogam_seg_03A1_phi 14.672364 
+exogam_seg_03A2_theta  100.412086  exogam_seg_03A2_phi  34.411594
+exogam_seg_03A3_theta  119.900583  exogam_seg_03A3_phi  34.411594
+exogam_seg_03B0_theta	63.208784 exogam_seg_03B0_phi 14.672364
+exogam_seg_03B1_theta	60.099422 exogam_seg_03B1_phi 34.411594
+exogam_seg_03B2_theta	79.587912 exogam_seg_03B2_phi 34.411594
+exogam_seg_03B3_theta	80.834107 exogam_seg_03B3_phi 14.672364
+exogam_seg_03C0_theta	63.208784  exogam_seg_03C0_phi 75.327637
+exogam_seg_03C1_theta	80.834107  exogam_seg_03C1_phi 75.327637
+exogam_seg_03C2_theta	79.587912  exogam_seg_03C2_phi 55.588406
+exogam_seg_03C3_theta	60.099422  exogam_seg_03C3_phi 55.588406
+exogam_seg_03D0_theta  116.791221  exogam_seg_03D0_phi  75.327637
+exogam_seg_03D1_theta  119.900583  exogam_seg_03D1_phi  55.588406
+exogam_seg_03D2_theta  100.412086  exogam_seg_03D2_phi  55.588406
+exogam_seg_03D3_theta  99.165891   exogam_seg_03D3_phi 75.327637 
+
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.original b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.original
new file mode 100755
index 0000000000000000000000000000000000000000..e0b1214438263fa11a4fe6125e5fecf15ff2eed4
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.original
@@ -0,0 +1,17 @@
+exogam_seg_03A0_theta	 44.91  exogam_seg_03A0_phi  -199.619
+exogam_seg_03A1_theta	 61.76  exogam_seg_03A1_phi  -199.619
+exogam_seg_03A2_theta	 53.72  exogam_seg_03A2_phi  -216.348
+exogam_seg_03A3_theta	 49.29  exogam_seg_03A3_phi  -216.348
+exogam_seg_03B0_theta	 88.41  exogam_seg_03B0_phi  -199.619
+exogam_seg_03B1_theta	 85.44  exogam_seg_03B1_phi  -216.348
+exogam_seg_03B2_theta	 71.00  exogam_seg_03B2_phi  -216.348
+exogam_seg_03B3_theta	 71.82  exogam_seg_03B3_phi  -199.619
+exogam_seg_03C0_theta	 88.41  exogam_seg_03C0_phi  -250.381
+exogam_seg_03C1_theta	 71.82  exogam_seg_03C1_phi  -250.381
+exogam_seg_03C2_theta	 71.00  exogam_seg_03C2_phi  -233.652
+exogam_seg_03C3_theta	 85.44  exogam_seg_03C3_phi  -233.652
+exogam_seg_03D0_theta	 44.91  exogam_seg_03D0_phi  -250.381
+exogam_seg_03D1_theta	 49.29  exogam_seg_03D1_phi  -233.652
+exogam_seg_03D2_theta	 53.72  exogam_seg_03D2_phi  -233.652
+exogam_seg_03D3_theta	 61.76  exogam_seg_03D3_phi  -250.381
+
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.~1~ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.~1~
new file mode 100755
index 0000000000000000000000000000000000000000..e0b1214438263fa11a4fe6125e5fecf15ff2eed4
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.~1~
@@ -0,0 +1,17 @@
+exogam_seg_03A0_theta	 44.91  exogam_seg_03A0_phi  -199.619
+exogam_seg_03A1_theta	 61.76  exogam_seg_03A1_phi  -199.619
+exogam_seg_03A2_theta	 53.72  exogam_seg_03A2_phi  -216.348
+exogam_seg_03A3_theta	 49.29  exogam_seg_03A3_phi  -216.348
+exogam_seg_03B0_theta	 88.41  exogam_seg_03B0_phi  -199.619
+exogam_seg_03B1_theta	 85.44  exogam_seg_03B1_phi  -216.348
+exogam_seg_03B2_theta	 71.00  exogam_seg_03B2_phi  -216.348
+exogam_seg_03B3_theta	 71.82  exogam_seg_03B3_phi  -199.619
+exogam_seg_03C0_theta	 88.41  exogam_seg_03C0_phi  -250.381
+exogam_seg_03C1_theta	 71.82  exogam_seg_03C1_phi  -250.381
+exogam_seg_03C2_theta	 71.00  exogam_seg_03C2_phi  -233.652
+exogam_seg_03C3_theta	 85.44  exogam_seg_03C3_phi  -233.652
+exogam_seg_03D0_theta	 44.91  exogam_seg_03D0_phi  -250.381
+exogam_seg_03D1_theta	 49.29  exogam_seg_03D1_phi  -233.652
+exogam_seg_03D2_theta	 53.72  exogam_seg_03D2_phi  -233.652
+exogam_seg_03D3_theta	 61.76  exogam_seg_03D3_phi  -250.381
+
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.~2~ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.~2~
new file mode 100755
index 0000000000000000000000000000000000000000..976c969d703bcb59e33cd98cedb6f50865593af6
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover2.txt.~2~
@@ -0,0 +1,17 @@
+exogam_seg_02A0_theta	 105.681400 28.695801  exogam_seg_02A0_phi  28.695801
+exogam_seg_02A1_theta	 95.126223 28.695801  exogam_seg_02A1_phi  28.695801
+exogam_seg_02A2_theta	 95.316752 39.660210  exogam_seg_02A2_phi  39.660210
+exogam_seg_02A3_theta	 106.237179 39.660210  exogam_seg_02A3_phi  39.660210
+exogam_seg_02B0_theta	 74.318605 28.695801  exogam_seg_02B0_phi  28.695801
+exogam_seg_02B1_theta	 73.762819 39.660210  exogam_seg_02B1_phi  39.660210
+exogam_seg_02B2_theta	 84.683247 39.660210  exogam_seg_02B2_phi  39.660210
+exogam_seg_02B3_theta	 84.873782 28.695801  exogam_seg_02B3_phi  28.695801
+exogam_seg_02C0_theta	 74.318605 61.304199  exogam_seg_02C0_phi  61.304199
+exogam_seg_02C1_theta	 84.873782 61.304199  exogam_seg_02C1_phi  61.304199
+exogam_seg_02C2_theta	 84.683247 50.339794  exogam_seg_02C2_phi  50.339794
+exogam_seg_02C3_theta	 73.762819 50.339794  exogam_seg_02C3_phi  50.339794
+exogam_seg_02D0_theta	 105.681400 61.304199  exogam_seg_02D0_phi  61.304199
+exogam_seg_02D1_theta	 106.237179 50.339794  exogam_seg_02D1_phi  50.339794
+exogam_seg_02D2_theta	 95.316752 50.339794  exogam_seg_02D2_phi  50.339794
+exogam_seg_02D3_theta	 95.126223 61.304199  exogam_seg_02D3_phi  61.304199
+
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt
new file mode 100755
index 0000000000000000000000000000000000000000..bde13d09c035c26ada15942912fecd75f7a67f56
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt
@@ -0,0 +1,17 @@
+exogam_seg_03A0_theta	 74.318605  exogam_seg_03A0_phi  151.304199
+exogam_seg_03A1_theta	 84.873782  exogam_seg_03A1_phi  151.304199
+exogam_seg_03A2_theta	 84.683247  exogam_seg_03A2_phi  140.339798
+exogam_seg_03A3_theta	 73.762819  exogam_seg_03A3_phi  140.339798
+exogam_seg_03B0_theta	 105.681400  exogam_seg_03B0_phi  151.304199
+exogam_seg_03B1_theta	 106.237179  exogam_seg_03B1_phi  140.339798
+exogam_seg_03B2_theta	 95.316752  exogam_seg_03B2_phi  140.339798
+exogam_seg_03B3_theta	 95.126223  exogam_seg_03B3_phi  151.304199
+exogam_seg_03C0_theta	 105.681400  exogam_seg_03C0_phi  118.695801
+exogam_seg_03C1_theta	 95.126223  exogam_seg_03C1_phi  118.695801
+exogam_seg_03C2_theta	 95.316752  exogam_seg_03C2_phi  129.660202
+exogam_seg_03C3_theta	 106.237179  exogam_seg_03C3_phi  129.660202
+exogam_seg_03D0_theta	 74.318605  exogam_seg_03D0_phi  118.695801
+exogam_seg_03D1_theta	 73.762819  exogam_seg_03D1_phi  129.660202
+exogam_seg_03D2_theta	 84.683247  exogam_seg_03D2_phi  129.660202
+exogam_seg_03D3_theta	 84.873782  exogam_seg_03D3_phi  118.695801
+
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt.anna b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt.anna
new file mode 100644
index 0000000000000000000000000000000000000000..46046159f66792085f82e980b9b698c44ee676ca
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt.anna
@@ -0,0 +1,17 @@
+exogam_seg_03A0_theta	 63.208784  exogam_seg_03A0_phi  165.327637
+exogam_seg_03A1_theta	 80.834107  exogam_seg_03A1_phi  165.327637
+exogam_seg_03A2_theta	 79.587912  exogam_seg_03A2_phi  145.588409
+exogam_seg_03A3_theta	 60.099422  exogam_seg_03A3_phi  145.588409
+exogam_seg_03B0_theta	116.791221 exogam_seg_03B0_phi   165.327637
+exogam_seg_03B1_theta	119.900583 exogam_seg_03B1_phi   145.588409
+exogam_seg_03B2_theta	100.412086 exogam_seg_03B2_phi   145.588409
+exogam_seg_03B3_theta	99.165891  exogam_seg_03B3_phi  165.327637 
+exogam_seg_03C0_theta	116.791221  exogam_seg_03C0_phi   104.672363
+exogam_seg_03C1_theta	99.165891   exogam_seg_03C1_phi  104.672363 
+exogam_seg_03C2_theta	100.412086  exogam_seg_03C2_phi   124.411591
+exogam_seg_03C3_theta	119.900583  exogam_seg_03C3_phi   124.411591
+exogam_seg_03D0_theta	63.208784  exogam_seg_03D0_phi  104.672363
+exogam_seg_03D1_theta	60.099422  exogam_seg_03D1_phi  124.411591
+exogam_seg_03D2_theta	79.587912  exogam_seg_03D2_phi  124.411591
+exogam_seg_03D3_theta	80.834107  exogam_seg_03D3_phi  104.672363
+
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt.original b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt.original
new file mode 100755
index 0000000000000000000000000000000000000000..dc7e8b5bad7369d9cee3336f7d523822d6b11a0f
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt.original
@@ -0,0 +1,17 @@
+exogam_seg_03A0_theta	 63.208784  exogam_seg_03A0_phi  165.327637
+exogam_seg_03A1_theta	 80.834107  exogam_seg_03A1_phi  165.327637
+exogam_seg_03A2_theta	 79.587912  exogam_seg_03A2_phi  145.588409
+exogam_seg_03A3_theta	 60.099422  exogam_seg_03A3_phi  145.588409
+exogam_seg_03B0_theta	116.791221 exogam_seg_03B0_phi   165.327637
+exogam_seg_03B1_theta	119.900583 exogam_seg_03B1_phi   145.588409
+exogam_seg_03B2_theta	100.412086 exogam_seg_03B2_phi   145.588409
+exogam_seg_03B3_theta	99.165891  exogam_seg_03B3_phi  165.327637 
+exogam_seg_03C0_theta	116.791221  exogam_seg_03C0_phi   104.672363
+exogam_seg_03C1_theta	99.165891   exogam_seg_03C1_phi  104.672363 
+exogam_seg_03C2_theta	100.412086  exogam_seg_03C2_phi   124.411591
+exogam_seg_03C3_theta	119.900583  exogam_seg_03C3_phi   124.411591
+exogam_seg_03D0_theta	63.208784  exogam_seg_03D0_phi  63.208784
+exogam_seg_03D1_theta	60.099422  exogam_seg_03D1_phi  60.099422
+exogam_seg_03D2_theta	79.587912  exogam_seg_03D2_phi  79.587912
+exogam_seg_03D3_theta	80.834107  exogam_seg_03D3_phi  80.834107
+
diff --git a/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt.~1~ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt.~1~
new file mode 100755
index 0000000000000000000000000000000000000000..e0b1214438263fa11a4fe6125e5fecf15ff2eed4
--- /dev/null
+++ b/NPAnalysis/e628/posz42_exp_stat_demiring/angles_exogam_clover3.txt.~1~
@@ -0,0 +1,17 @@
+exogam_seg_03A0_theta	 44.91  exogam_seg_03A0_phi  -199.619
+exogam_seg_03A1_theta	 61.76  exogam_seg_03A1_phi  -199.619
+exogam_seg_03A2_theta	 53.72  exogam_seg_03A2_phi  -216.348
+exogam_seg_03A3_theta	 49.29  exogam_seg_03A3_phi  -216.348
+exogam_seg_03B0_theta	 88.41  exogam_seg_03B0_phi  -199.619
+exogam_seg_03B1_theta	 85.44  exogam_seg_03B1_phi  -216.348
+exogam_seg_03B2_theta	 71.00  exogam_seg_03B2_phi  -216.348
+exogam_seg_03B3_theta	 71.82  exogam_seg_03B3_phi  -199.619
+exogam_seg_03C0_theta	 88.41  exogam_seg_03C0_phi  -250.381
+exogam_seg_03C1_theta	 71.82  exogam_seg_03C1_phi  -250.381
+exogam_seg_03C2_theta	 71.00  exogam_seg_03C2_phi  -233.652
+exogam_seg_03C3_theta	 85.44  exogam_seg_03C3_phi  -233.652
+exogam_seg_03D0_theta	 44.91  exogam_seg_03D0_phi  -250.381
+exogam_seg_03D1_theta	 49.29  exogam_seg_03D1_phi  -233.652
+exogam_seg_03D2_theta	 53.72  exogam_seg_03D2_phi  -233.652
+exogam_seg_03D3_theta	 61.76  exogam_seg_03D3_phi  -250.381
+
diff --git a/NPAnalysis/e628/test.txt b/NPAnalysis/e628/test.txt
new file mode 100644
index 0000000000000000000000000000000000000000..879e174854d513aad28a825597cc4dc0537a4d1e
--- /dev/null
+++ b/NPAnalysis/e628/test.txt
@@ -0,0 +1,7 @@
+a
+c
+v
+b
+t
+d
+
diff --git a/NPAnalysis/e628/testRead.C b/NPAnalysis/e628/testRead.C
new file mode 100644
index 0000000000000000000000000000000000000000..15a31b2b38fd5bf326f2700825f5125ca2bcccbc
--- /dev/null
+++ b/NPAnalysis/e628/testRead.C
@@ -0,0 +1,18 @@
+
+{
+ ifstream in("/home/e628/nptool/NPAnalysis/test.txt");
+
+ string data ;
+
+  while (!in.eof()){
+   in >> data ;
+    cout << data << endl ;
+
+  }
+
+
+
+
+
+
+}
diff --git a/NPAnalysis/must2/configs/ConfigMust2.dat b/NPAnalysis/must2/configs/ConfigMust2.dat
index 3d0c81d7d0bd94c1233226f34e694552f95a488c..1a473ca5bc60208fd520e0548953de1e88f5e275 100644
--- a/NPAnalysis/must2/configs/ConfigMust2.dat
+++ b/NPAnalysis/must2/configs/ConfigMust2.dat
@@ -1,8 +1,3 @@
 ConfigMust2
 	MAX_STRIP_MULTIPLICITY	1
-	SI_X_E_RAW_THRESHOLD   0
-	SILI_E_RAW_THRESHOLD   0
-	SILI_E_THRESHOLD       0
-	DISABLE_CHANNEL MM4STRX3
-	DISABLE_ALL MM1
 	
diff --git a/NPLib/CATS/TCATSData.h b/NPLib/CATS/TCATSData.h
index d407560b45be7552cb30ff150895e418406b6fc0..39414f07dca9d53cb3dbd30aa9a31531e263f559 100644
--- a/NPLib/CATS/TCATSData.h
+++ b/NPLib/CATS/TCATSData.h
@@ -48,17 +48,17 @@ class TCATSData : public TObject {
    virtual ~TCATSData();
 
    void	Clear();
-   void  Clear(const Option_t*) {};
+   void Clear(const Option_t*) {};
    void	Dump() const;
 
    /////////////////////           SETTERS           ////////////////////////
    // X
    void SetCATSDetX(UShort_t DetX)	      {fCATS_DetX.push_back(DetX);}
-   void SetCATSStripX(UShort_t StripX)	   {fCATS_StripX.push_back(StripX);}
+   void SetCATSStripX(UShort_t StripX)	  {fCATS_StripX.push_back(StripX);}
    void SetCATSChargeX(UShort_t ChargeX)  {fCATS_ChargeX.push_back(ChargeX);}
    // Y
    void SetCATSDetY(UShort_t DetY)	      {fCATS_DetY.push_back(DetY);}
-   void SetCATSStripY(UShort_t StripY)	   {fCATS_StripY.push_back(StripY);}
+   void SetCATSStripY(UShort_t StripY)	  {fCATS_StripY.push_back(StripY);}
    void SetCATSChargeY(UShort_t ChargeY)  {fCATS_ChargeY.push_back(ChargeY);}
 
    //Q fil
diff --git a/NPLib/CATS/TCATSPhysics.cxx b/NPLib/CATS/TCATSPhysics.cxx
index c42b0e231193516cb9914a8bf9d47670f7f2a5f9..e0d36ef18b1a15fcd1ed78aba36f8ab0d07a6ec0 100644
--- a/NPLib/CATS/TCATSPhysics.cxx
+++ b/NPLib/CATS/TCATSPhysics.cxx
@@ -21,7 +21,7 @@
  *****************************************************************************/
 
 #include "TCATSPhysics.h"
-using namespace LOCAL_CATS;
+using namespace CATS_LOCAL;
 
 //	STL
 #include <cmath>
@@ -29,37 +29,38 @@ using namespace LOCAL_CATS;
 #include <sstream>
 #include <fstream>
 #include <iostream>
-#include <stdlib.h>
+#include <set>
+#include <cstdlib>
+using namespace std;
 //	NPL
 #include "RootInput.h"
 #include "RootOutput.h"
 //	ROOT
 #include "TChain.h"
-#include "TRandom.h"
-
+#include "TF1.h"
+#include "TGraph.h"
 ClassImp(TCATSPhysics)
 
   ///////////////////////////////////////////////////////////////////////////
-TCATSPhysics::TCATSPhysics()
-{
-  m_EventData 				= new TCATSData	;
-  m_PreTreatedData          = new TCATSData ;
-  m_EventPhysics 			= this			;
-  m_NumberOfCATS            = 0             ;
-}
+  TCATSPhysics::TCATSPhysics(){
+    m_EventData 				= new TCATSData	;
+    m_PreTreatedData    = new TCATSData ;
+    m_EventPhysics 			= this			    ;
+    m_NumberOfCATS      = 0             ;
+    m_Spectra           = NULL          ;
+  }
 
 ///////////////////////////////////////////////////////////////////////////
-TCATSPhysics::~TCATSPhysics()
-{
+TCATSPhysics::~TCATSPhysics(){
 }
 
 ///////////////////////////////////////////////////////////////////////////
-void TCATSPhysics::PreTreat()
-{
+void TCATSPhysics::PreTreat(){
   ClearPreTreatedData();   
   gRandom->SetSeed(0);
   // X
-  for(int i = 0 ; i < m_EventData->GetCATSMultX() ; i++){
+  unsigned int sizeX = m_EventData->GetCATSMultX();
+  for(unsigned int i = 0 ; i < sizeX ; i++){
     // Valid Channel X
     if(IsValidChannel("X", m_EventData->GetCATSDetX(i), m_EventData->GetCATSStripX(i)) ){
       if( fCATS_Threshold_X(m_EventData , i) ){
@@ -72,15 +73,14 @@ void TCATSPhysics::PreTreat()
         else {
           m_PreTreatedData->SetCATSStripX( m_EventData->GetCATSStripX(i) );
         }
-
         m_PreTreatedData->SetCATSDetX( m_EventData->GetCATSDetX(i) );
-
       }
     }
   }
 
   // Y
-  for(int i = 0 ; i < m_EventData->GetCATSMultY() ; i++){
+  unsigned int sizeY = m_EventData->GetCATSMultY();
+  for(unsigned int i = 0 ; i < sizeY ; i++){
     // Valid Channel Y
     if(IsValidChannel("Y", m_EventData->GetCATSDetY(i), m_EventData->GetCATSStripY(i))){
       if( fCATS_Threshold_Y(m_EventData , i) ){
@@ -93,9 +93,7 @@ void TCATSPhysics::PreTreat()
         else {
           m_PreTreatedData->SetCATSStripY( m_EventData->GetCATSStripY(i) );
         }
-
         m_PreTreatedData->SetCATSDetY( m_EventData->GetCATSDetY(i) );
-
       }
     }
   }
@@ -103,159 +101,159 @@ void TCATSPhysics::PreTreat()
 }
 
 /////////////////////////////////////////////////////////////////////////////
-void TCATSPhysics::BuildSimplePhysicalEvent()				
-{
+void TCATSPhysics::BuildSimplePhysicalEvent(){
   BuildPhysicalEvent();
 }
 
 //////////////////////////////////////////////////////////////////////////////		
-void TCATSPhysics::BuildPhysicalEvent()					
-{
+void TCATSPhysics::BuildPhysicalEvent(){
   PreTreat();
-  double Pi = 3.14159265;
-
-  //	How many CATS?
-  int NumberOfCATSHit = 0 ;
-  int DetectorID = -1;
-  double SumChargeX[2];
-  double SumChargeY[2];
-
+  // Look how many CATS were fired
+  // use a set to identify which detector has been hit
+  set<int> DetectorHitX; // X only
+  set<int> DetectorHit; // X and Y
 
+  unsigned int sizeX = m_PreTreatedData->GetCATSMultX() ;
   for( unsigned short i = 0 ; i < m_PreTreatedData->GetCATSMultX() ; i++ ){ 
-    if( m_PreTreatedData->GetCATSDetX(i) != DetectorID)  {
-      NumberOfCATSHit++;
-      DetectorID = m_PreTreatedData->GetCATSDetX(i);
-    }
-    if(NumberOfCATSHit == m_NumberOfCATS) break;	
+    // Insert detector number in the set, if the key already exist, do nothing
+    DetectorHitX.insert(m_PreTreatedData->GetCATSDetX(i));
   }
 
+  // Correspond to CATS with both X and Y
+  unsigned int sizeY = m_PreTreatedData->GetCATSMultY() ;
+  for( unsigned short i = 0 ; i < m_PreTreatedData->GetCATSMultY() ; i++ ){ 
+    // Insert detector number in the set, if the key already exist, do nothing
+    // Only if the detector was hit on X as well
+    if(DetectorHitX.find(m_PreTreatedData->GetCATSDetY(i))!=DetectorHitX.end())
+      DetectorHit.insert(m_PreTreatedData->GetCATSDetY(i));
+  }
+  // The number of CATS hit, i.e. the number of CATS that we are going to analyse
+  unsigned int NumberOfCATSHit = DetectorHit.size();
 
-  // INITIALISATION OF VECTORS : DIM = NUMBER OF CATS
-  for(int k = 0 ; k < NumberOfCATSHit ; k++ ){
-    // X
-    StripMaxX.push_back(-1); 
-    ReconstructionMethodX.push_back(NO);
-    SumChargeX[k] = 0;
+  vector<double> ChargeArray;
+  ChargeArray.resize(28,0);
 
+  // INITIALISATION OF VECTORS : DIM = NumberOfCATSHit
+  for(set<int>::iterator it=DetectorHit.begin(); it!=DetectorHit.end(); ++it){
+    // Assign order for the detector number
+    DetMaxX.push_back(*it);
+    DetMaxY.push_back(*it);
+    // X
+    StripMaxX.push_back(1); 
+    ChargeMaxX.push_back(1);
+    QsumX.push_back(0);
     // Y
-    StripMaxY.push_back(-1); 
-    ReconstructionMethodY.push_back(NO);
-    SumChargeY[k] = 0;
-  }
+    StripMaxY.push_back(1); 
+    ChargeMaxY.push_back(1);
+    QsumY.push_back(0);
 
-  for(int p = 0 ; p < m_NumberOfCATS ; p++){
-    for(int z=0; z<28; z++) {
-      Buffer_X_Q[z][p] = -1;
-      Buffer_Y_Q[z][p] = -1;
-    }
+    Buffer_X_Q.push_back(ChargeArray);
+    Buffer_Y_Q.push_back(ChargeArray);  
   }
 
-  for(unsigned int i = 0 ; i < m_PreTreatedData->GetCATSMultX() ; i++ ){
+  // Fill up the Charge And Max field for X
+  for(unsigned int i = 0 ; i < sizeX ; i++ ){
     int StrX					         = m_PreTreatedData->GetCATSStripX(i);
     int NX						         = m_PreTreatedData->GetCATSDetX(i);
-    double CATS_X_Q				     = m_PreTreatedData->GetCATSChargeX(i) ;            
-    Buffer_X_Q[StrX-1][NX-1]	 = CATS_X_Q;
-    SumChargeX[NX-1]			    += CATS_X_Q;	
+    double CATS_X_Q				     = m_PreTreatedData->GetCATSChargeX(i) ;
     ChargeX.push_back(CATS_X_Q);
     StripX.push_back(StrX);
     DetNumberX.push_back(NX);
-    HitX++;
-    if(HitX==1) 
-      StripMaxX[NX-1] = StrX; 
-    else if(ChargeX[HitX-1] > Buffer_X_Q[StripMaxX[NX-1] -1][NX-1] ) 
-      StripMaxX[NX-1] = StrX ;  
+    for(unsigned int j = 0 ; j < NumberOfCATSHit ; j++){
+      if(NX == DetMaxX[j] ){
+        Buffer_X_Q[j][StrX-1]= CATS_X_Q;
+        QsumX[j]+= CATS_X_Q;	
+        if(CATS_X_Q > Buffer_X_Q[j][StripMaxX[j] -1]){ 
+          StripMaxX[j] = StrX ; 
+          ChargeMaxX[j]= CATS_X_Q; 
+        }
+      }
+    }
   }
 
-  for(unsigned int j = 0 ; j < m_PreTreatedData->GetCATSMultY() ; j++ ){
-    int StrY					        = m_PreTreatedData->GetCATSStripY(j);
-    int NY						        = m_PreTreatedData->GetCATSDetY(j);
-    double CATS_Y_Q				    = m_PreTreatedData->GetCATSChargeY(j) ;
-    Buffer_Y_Q[StrY-1][NY-1]	= CATS_Y_Q;
-    SumChargeY[NY-1]			   += CATS_Y_Q;
+  // Fill up the Charge And Max field for Y
+  for(unsigned int i = 0 ; i < sizeY ; i++ ){
+    int StrY					         = m_PreTreatedData->GetCATSStripY(i);
+    int NY						         = m_PreTreatedData->GetCATSDetY(i);
+    double CATS_Y_Q				     = m_PreTreatedData->GetCATSChargeY(i) ;
     ChargeY.push_back(CATS_Y_Q);
     StripY.push_back(StrY);
     DetNumberY.push_back(NY);
-    HitY++;
-    if(HitY==1) 
-      StripMaxY[NY-1] = StrY; 
-    else if(ChargeY[HitY-1] > Buffer_Y_Q[StripMaxY[NY-1] -1][NY-1] ) 
-      StripMaxY[NY-1] = StrY ;  
+
+    for(unsigned int j = 0 ; j < NumberOfCATSHit ; j++){
+      if(NY == DetMaxY[j] ){
+        Buffer_Y_Q[j][StrY-1]= CATS_Y_Q;
+        QsumY[j]+= CATS_Y_Q;	
+        if(CATS_Y_Q > Buffer_Y_Q[j][StripMaxY[j] -1]){ 
+          StripMaxY[j] = StrY ; 
+          ChargeMaxY[j]= CATS_Y_Q; 
+        }
+      }
+    }
   }
 
-  double CalculatedStripX = 0, CalculatedStripY = 0;
-  double posX = 0 , posY = 0;
+//  double CalculatedStripX = 0, CalculatedStripY = 0;
+//  double posX = 0 , posY = 0;
 
-  for(ff = 0 ; ff < NumberOfCATSHit ; ff++ ){       
-    CalculatedStripX = AnalyseX(ff);         
-    CalculatedStripY = AnalyseY(ff); 
+  for(unsigned int i  = 0 ; i < NumberOfCATSHit ; i++ ){       
+    // Return the position in strip unit
+    double PosX =  ReconstructionFunctionX[DetMaxX[i]-1](Buffer_X_Q[i],StripMaxX[i]);
+    double PosY =  ReconstructionFunctionY[DetMaxY[i]-1](Buffer_Y_Q[i],StripMaxY[i]);
+    StripNumberX.push_back(PosX);
+    StripNumberY.push_back(PosY);   
 
-    posX = CalculatePositionX(CalculatedStripX, NOcor);   
-    posY = CalculatePositionY(CalculatedStripY, NOcor);  
+    // Convert in mm by doing a linear interpolation
 
-    DetNumberX_Position.push_back(ff+1);
-    DetNumberY_Position.push_back(ff+1);
-    DetNumberZ_Position.push_back(ff+1);
+    // sx and sy are the X and Y strip number between which the PosX and PosY are
+    int sx0 = (int) PosX;
+    int sx1 = sx0+1; 
+    int sy0 = (int) PosY;
+    int sy1 = sy0+1; 
 
-    PositionX.push_back(posX) ;                  
-    PositionY.push_back(posY) ;                  
-    PositionZ.push_back(StripPositionZ[ff]) ;
+    if(PosX>-1000 && PosY>-1000 && sx0 > -1 && sx1 < 28 && sy0 > -1  && sy1 < 28){
+      // px and py are the x and y coordinate of strip sx and sy 
+      double px0 = StripPositionX[DetMaxX[i]-1][sx0][sy0];
+      double px1 = StripPositionX[DetMaxX[i]-1][sx1][sy1];
 
-    QsumX.push_back(SumChargeX[ff]);
-    QsumY.push_back(SumChargeY[ff]);
-  }
+      double py0 = StripPositionY[DetMaxY[i]-1][sx0][sy0];
+      double py1 = StripPositionY[DetMaxY[i]-1][sx1][sy1];
 
-  if(NumberOfCATSHit > 1){
-    if(PositionX[0] != -1000 && PositionY[0] != -1000 && PositionX[1] != -1000 && PositionY[1] != -1000) 
-    {
-      double PositionOnTargetX_1;
-      double PositionOnTargetY_1;
-      double l = sqrt((PositionZ[0]-PositionZ[1])*(PositionZ[0]-PositionZ[1]));
-      double L = - PositionZ[1];
-      double t = (l+L) / l;
-
-      PositionOnTargetX_1 = PositionX[0] + (PositionX[1] - PositionX[0]) * t ;
-      PositionOnTargetY_1 = PositionY[0] + (PositionY[1] - PositionY[0]) * t ;
-
-      if(m_TargetAngle != 0)
-      {
-        double a = (PositionZ[1]-PositionZ[0])/(PositionX[1]-PositionX[0]);
-        double b = PositionZ[0] - a*PositionX[0];
-        PositionOnTargetX = b/(tan(m_TargetAngle*Pi/180.) - a);
-
-        double t_new = (l + L + PositionOnTargetX*tan(m_TargetAngle*Pi/180.)) / l;
-        PositionOnTargetY = PositionY[0] + (PositionY[1] - PositionY[0]) * t_new ;
-      }
+      PositionX.push_back(px0+(px1-px0)*(PosX-sx0));  
+      PositionY.push_back(py0+(py1-py0)*(PosY-sy0));  
+      PositionZ.push_back(StripPositionZ[DetMaxX[i]-1]);
+    }
 
+  }
 
-      else{
-        PositionOnTargetX = PositionOnTargetX_1;
-        PositionOnTargetY = PositionOnTargetY_1;
-      }
-      GetPositionOnTarget();
-      GetBeamDirection();
+  // At least two CATS need to gave back position in order to reconstruct on Target 
+  if(PositionX.size()>1){
+    if(DetMaxX[0]<DetMaxX[1]){
+      double t = -PositionZ[1]/(PositionZ[1]-PositionZ[0]);
+      PositionOnTargetX= PositionX[1] + (PositionX[1]-PositionX[0])*t;
+      PositionOnTargetY= PositionY[1] + (PositionY[1]-PositionY[0])*t; 
+      BeamDirection = GetBeamDirection();
     }
 
     else{
-      BeamDirection = TVector3 (1,0,0);
-      PositionOnTargetX = -1000	;
-      PositionOnTargetY = -1000	;
+      double t = -PositionZ[0]/(PositionZ[0]-PositionZ[1]);
+      PositionOnTargetX= PositionX[0] + (PositionX[0]-PositionX[1])*t;
+      PositionOnTargetY= PositionY[0] + (PositionY[0]-PositionY[1])*t; 
+      BeamDirection = GetBeamDirection();
     }
   }
 
-  else if(NumberOfCATSHit == 1){		
+  // Does not meet the conditions for target position and beam direction 
+  else{
     BeamDirection = TVector3 (1,0,0);
     PositionOnTargetX = -1000	;
     PositionOnTargetY = -1000	;
   }
-
   return;
-
 }
 
 ///////////////////////////////////////////////////////////////////////////
 //	Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
-void TCATSPhysics::ReadConfiguration(string Path) 				
-{
+void TCATSPhysics::ReadConfiguration(string Path){
   ifstream ConfigFile;
   ConfigFile.open(Path.c_str());
   string LineBuffer          		;
@@ -393,17 +391,12 @@ void TCATSPhysics::ReadConfiguration(string Path)
   }
   InitializeStandardParameter();
   ReadAnalysisConfig();
-  m_method_CATS1X = StringToEnum(m_reconstruction_CATS1X);
-  m_method_CATS1Y = StringToEnum(m_reconstruction_CATS1Y);
-  m_method_CATS2X = StringToEnum(m_reconstruction_CATS2X);
-  m_method_CATS2Y = StringToEnum(m_reconstruction_CATS2Y);
 }
 
 /////////////////////////////////////////////////////////////////////
 //	Activated associated Branches and link it to the private member DetectorData address
 //	In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
-void TCATSPhysics::InitializeRootInputRaw() 
-{
+void TCATSPhysics::InitializeRootInputRaw() {
   TChain* inputChain = RootInput::getInstance()->GetChain()	;
   inputChain->SetBranchStatus( "CATS" , true )			;
   inputChain->SetBranchStatus( "fCATS_*" , true )		;
@@ -413,11 +406,9 @@ void TCATSPhysics::InitializeRootInputRaw()
 /////////////////////////////////////////////////////////////////////
 //   Activated associated Branches and link it to the private member DetectorPhysics address
 //   In this method mother Branches (Detector) AND daughter leaf (parameter) have to be activated
-void TCATSPhysics::InitializeRootInputPhysics() 
-{
+void TCATSPhysics::InitializeRootInputPhysics() {
   TChain* inputChain = RootInput::getInstance()->GetChain();
   inputChain->SetBranchStatus( "CATS" , true );
-  inputChain->SetBranchStatus( "ff" , true );
   inputChain->SetBranchStatus( "DetNumberX" , true );
   inputChain->SetBranchStatus( "StripX" , true );
   inputChain->SetBranchStatus( "ChargeX" , true );
@@ -426,12 +417,13 @@ void TCATSPhysics::InitializeRootInputPhysics()
   inputChain->SetBranchStatus( "StripY" , true );
   inputChain->SetBranchStatus( "ChargeY" , true );
   inputChain->SetBranchStatus( "StripMaxY" , true );
-  inputChain->SetBranchStatus( "DetNumberX_Position" , true );
-  inputChain->SetBranchStatus( "DetNumberY_Position" , true );
-  inputChain->SetBranchStatus( "DetNumberZ_Position" , true );
+  inputChain->SetBranchStatus( "DetMaxX" , true );
+  inputChain->SetBranchStatus( "DetMaxY" , true );
   inputChain->SetBranchStatus( "PositionX" , true );
   inputChain->SetBranchStatus( "PositionY" , true );
   inputChain->SetBranchStatus( "PositionZ" , true );
+  inputChain->SetBranchStatus( "StripNumberX" , true );
+  inputChain->SetBranchStatus( "StripNumberY" , true );
   inputChain->SetBranchStatus( "PositionOnTargetX" , true );
   inputChain->SetBranchStatus( "PositionOnTargetY" , true );
   inputChain->SetBranchStatus( "QsumX" , true );
@@ -442,15 +434,13 @@ void TCATSPhysics::InitializeRootInputPhysics()
 
 /////////////////////////////////////////////////////////////////////
 //	Create associated branches and associated private member DetectorPhysics address
-void TCATSPhysics::InitializeRootOutput() 		 		
-{
+void TCATSPhysics::InitializeRootOutput(){
   TTree* outputTree = RootOutput::getInstance()->GetTree()		;
   outputTree->Branch( "CATS" , "TCATSPhysics" , &m_EventPhysics )	;
 }
 
 /////////////////////////////////////////////////////////////////////
-void TCATSPhysics::AddCATS(TVector3 C_X1_Y1, TVector3 C_X28_Y1, TVector3 C_X1_Y28, TVector3 C_X28_Y28)
-{
+void TCATSPhysics::AddCATS(TVector3 C_X1_Y1, TVector3 C_X28_Y1, TVector3 C_X1_Y28, TVector3 C_X28_Y28){
   m_NumberOfCATS++			;
 
   // remove warning
@@ -485,13 +475,11 @@ void TCATSPhysics::AddCATS(TVector3 C_X1_Y1, TVector3 C_X28_Y1, TVector3 C_X1_Y2
   //	Moving StripCenter to 1.1 corner (strip center!) :
   Strip_1_1 = C_X1_Y1 + (U+V) * (StripPitch/2) 	;
 
-  for( int i = 0 ; i < 28 ; i++ )
-  {
+  for( int i = 0 ; i < 28 ; i++ ){
     lineX.clear()	;
     lineY.clear()	;
 
-    for( int j = 0 ; j < 28 ; j++ )
-    {
+    for( int j = 0 ; j < 28 ; j++ ){
       StripCenter  = Strip_1_1 + StripPitch*( i*U + j*V  )	;
       lineX.push_back( StripCenter.x() )	;
       lineY.push_back( StripCenter.y() )	;	
@@ -510,36 +498,33 @@ void TCATSPhysics::AddCATS(TVector3 C_X1_Y1, TVector3 C_X28_Y1, TVector3 C_X1_Y2
 }
 
 ///////////////////////////////////////////////////////////////
-void TCATSPhysics::Clear()
-{  
+void TCATSPhysics::Clear(){  
   DetNumberX.clear(); 
   StripX.clear();
   ChargeX.clear();  
   StripMaxX.clear();
+  ChargeMaxX.clear();
+  DetMaxX.clear();
   DetNumberY.clear(); 
   StripY.clear();
   ChargeY.clear(); 
   StripMaxY.clear();
-  DetNumberX_Position.clear();
-  DetNumberY_Position.clear();
-  DetNumberZ_Position.clear();
+  ChargeMaxY.clear();
+  DetMaxY.clear();
   PositionX.clear();
   PositionY.clear();
   PositionZ.clear();
+  StripNumberX.clear();
+  StripNumberY.clear();
   QsumX.clear();
   QsumY.clear();
-  ReconstructionMethodX.clear();
-  ReconstructionMethodY.clear();
 
-  ff = 0;
-  HitX = 0;
-  HitY = 0;  
+  Buffer_X_Q.clear();
+  Buffer_Y_Q.clear();
 }
 
-
 ////////////////////////////////////////////////////////////////////////////
-bool TCATSPhysics :: IsValidChannel(const string DetectorType, const int Detector , const int channel) 
-{
+bool TCATSPhysics :: IsValidChannel(const string DetectorType, const int Detector , const int channel) {
   if(DetectorType == "X")
     return *(m_XChannelStatus[Detector-1].begin()+channel-1);
 
@@ -551,8 +536,7 @@ bool TCATSPhysics :: IsValidChannel(const string DetectorType, const int Detecto
 
 
 ///////////////////////////////////////////////////////////////////////////////////
-void TCATSPhysics::InitializeStandardParameter()
-{
+void TCATSPhysics::InitializeStandardParameter(){
   //   Enable all channel and no inversion
   vector< bool > ChannelStatus;
   vector< int > InversionStatus;
@@ -563,13 +547,11 @@ void TCATSPhysics::InitializeStandardParameter()
 
   ChannelStatus.resize(28,true);
   InversionStatus.resize(28);
-  for(unsigned int j = 0 ; j < InversionStatus.size() ; j++)
-  {
+  for(unsigned int j = 0 ; j < InversionStatus.size() ; j++){
     InversionStatus[j] = j+1;
   }
 
-  for(int i = 0 ; i < m_NumberOfCATS ; ++i)      
-  {
+  for(int i = 0 ; i < m_NumberOfCATS ; ++i)      {
     m_XChannelStatus[i] = ChannelStatus;
     m_YChannelStatus[i] = ChannelStatus;
     m_CATSXInversion[i] = InversionStatus;
@@ -580,8 +562,7 @@ void TCATSPhysics::InitializeStandardParameter()
 }   
 
 ///////////////////////////////////////////////////////////////////////////
-void TCATSPhysics::ReadAnalysisConfig()
-{
+void TCATSPhysics::ReadAnalysisConfig(){
   bool ReadingStatus = false;
 
   // path to file
@@ -670,94 +651,23 @@ void TCATSPhysics::ReadAnalysisConfig()
 
       else if (whatToDo == "RECONSTRUCTION_METHOD") {
         AnalysisConfigFile >> DataBuffer;
-        cout << whatToDo << "  " << DataBuffer;
-        if (DataBuffer.compare(0,6,"CATS1X") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_reconstruction_CATS1X = DataBuffer;
-        }
+        cout << whatToDo << "  " << DataBuffer ;
+        // DataBuffer is of form CATSNX 
+        // Look for the CATS Number removing the first 4 letters and the trailling letter
+        string Duplicate = DataBuffer.substr(4); // Duplicate is of form NX
+        Duplicate.resize(Duplicate.size()-1); // Duplicate is of form
+        unsigned int CATSNumber =  atoi(Duplicate.c_str());
 
-        else if (DataBuffer.compare(0,6,"CATS1Y") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_reconstruction_CATS1Y = DataBuffer;
-        }
-
-        else if (DataBuffer.compare(0,6,"CATS2X") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_reconstruction_CATS2X = DataBuffer;
-        }
+        // Look for the X or Y part of the Detector, Basically the last character
+        string XorY(string(1,DataBuffer[DataBuffer.size()-1])) ; 
 
-        else if (DataBuffer.compare(0,6,"CATS2Y") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_reconstruction_CATS2Y = DataBuffer;
-        }
+        // Get the Reconstruction Methods Name
+        AnalysisConfigFile >> DataBuffer;       
+        cout << " " << DataBuffer << endl ;
+        // Set the Reconstruction Methods using above information 
+        SetReconstructionMethod(CATSNumber,XorY,DataBuffer);
       }
 
-      else if (whatToDo == "CORRECTION_METHOD") {
-        AnalysisConfigFile >> DataBuffer;
-        cout << whatToDo << "  " << DataBuffer;
-        if (DataBuffer.compare(0,6,"CATS1X") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_correction_CATS1X = DataBuffer;
-        }
-
-        else if (DataBuffer.compare(0,6,"CATS1Y") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_correction_CATS1Y = DataBuffer;
-        }
-
-        else if (DataBuffer.compare(0,6,"CATS2X") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_correction_CATS2X = DataBuffer;
-        }
-
-        else if (DataBuffer.compare(0,6,"CATS2Y") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_correction_CATS2Y = DataBuffer;
-        }
-      }
-      /*else if (whatToDo == "CORRECTION_METHOD") {
-        AnalysisConfigFile >> DataBuffer;
-        cout << whatToDo << "  " << DataBuffer << endl;
-        m_correction = DataBuffer;
-        }*/
-
-      else if (whatToDo == "CORRECTION_COEF") {
-        AnalysisConfigFile >> DataBuffer;
-        cout << whatToDo << "  " << DataBuffer;
-        if (DataBuffer.compare(0,6,"CATS1X") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_CorrectionCoef_CATS1X = atof(DataBuffer.c_str());
-        }
-
-        else if (DataBuffer.compare(0,6,"CATS1Y") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_CorrectionCoef_CATS1Y = atof(DataBuffer.c_str());
-        }
-
-        else if (DataBuffer.compare(0,6,"CATS2X") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_CorrectionCoef_CATS2X = atof(DataBuffer.c_str());
-        }
-
-        else if (DataBuffer.compare(0,6,"CATS2Y") == 0) {
-          AnalysisConfigFile >> DataBuffer;
-          cout << " " << DataBuffer << endl;
-          m_CorrectionCoef_CATS2Y = atof(DataBuffer.c_str());
-        }
-      }
-
-
       else {ReadingStatus = false;}
 
     }
@@ -783,20 +693,22 @@ void TCATSPhysics::ClearSpectra(){
   // To be done
 }
 ///////////////////////////////////////////////////////////////////////////
-map< vector<TString> , TH1*> TCATSPhysics::GetSpectra() {
-  return m_Spectra->GetMapHisto();
+map< vector<string> , TH1*> TCATSPhysics::GetSpectra() {
+  if(m_Spectra)
+    return m_Spectra->GetMapHisto();
+
+  else{
+    map< vector<string> , TH1*> empty; 
+    return empty;
+  }
 }
 
 /////////////////////////////////////////////////////////////////////
 //	Add Parameter to the CalibrationManger
-void TCATSPhysics::AddParameterToCalibrationManager()	
-{
+void TCATSPhysics::AddParameterToCalibrationManager()	{
   CalibrationManager* Cal = CalibrationManager::getInstance();
-  for(int i = 0 ; i < m_NumberOfCATS ; i++)
-  {
-
-    for( int j = 0 ; j < 28 ; j++)
-    {
+  for(int i = 0 ; i < m_NumberOfCATS ; i++){
+    for( int j = 0 ; j < 28 ; j++){
       Cal->AddParameter("CATS", "D"+itoa(i+1)+"_X"+itoa(j+1)+"_Q","CATS_D"+itoa(i+1)+"_X"+itoa(j+1)+"_Q")	;
       Cal->AddParameter("CATS", "D"+itoa(i+1)+"_Y"+itoa(j+1)+"_Q","CATS_D"+itoa(i+1)+"_Y"+itoa(j+1)+"_Q")	;
       Cal->AddParameter("CATS", "D"+itoa(i+1)+"_X"+itoa(j+1),"CATS_D"+itoa(i+1)+"_X"+itoa(j+1))	;
@@ -808,256 +720,112 @@ void TCATSPhysics::AddParameterToCalibrationManager()
 }	
 
 ////////////////////////////////////////////////////////////////
-double TCATSPhysics::AnalyseX(int ff)
-{
-  double CalculatedStripX=0;  
-
-  ReconstructionMethodX[ff] = ChooseReconstruction(ff,"X");
-
-  if(ReconstructionMethodX[ff] == SECHS)CalculatedStripX = HyperbolicSequentMethodX();
-  if(ReconstructionMethodX[ff] == GAUSS)CalculatedStripX = GaussianMethodX();
-  if(ReconstructionMethodX[ff] == BAR3) CalculatedStripX = Barycentric3MethodX(); 
-  if(ReconstructionMethodX[ff] == BAR4) CalculatedStripX = Barycentric4MethodX(); 
-  if(ReconstructionMethodX[ff] == BAR5) CalculatedStripX = Barycentric5MethodX(); 
-
-  return(CalculatedStripX);
-}
-
-////////////////////////////////////////////////////////////////
-double TCATSPhysics::AnalyseY(int ff)
-{
-  double CalculatedStripY=0;
-
-  ReconstructionMethodY[ff] = ChooseReconstruction(ff,"Y");
-
-  if(ReconstructionMethodY[ff] == SECHS)CalculatedStripY = HyperbolicSequentMethodY();
-  if(ReconstructionMethodY[ff] == GAUSS)CalculatedStripY = GaussianMethodY();
-  if(ReconstructionMethodY[ff] == BAR3) CalculatedStripY = Barycentric3MethodY(); 
-  if(ReconstructionMethodY[ff] == BAR4) CalculatedStripY = Barycentric4MethodY(); 
-  if(ReconstructionMethodY[ff] == BAR5) CalculatedStripY = Barycentric5MethodY(); 
-
+void TCATSPhysics::SetReconstructionMethod(unsigned int CATSNumber, string XorY, string MethodName){
+  if(XorY=="X"){
+    if(ReconstructionFunctionX.size() < CATSNumber)
+      ReconstructionFunctionX.resize(CATSNumber);
 
-  return(CalculatedStripY);
-}
-
-////////////////////////////////////////////////////////////////////////
-reconstruction TCATSPhysics::ChooseReconstruction(int ff, TString type)
-{
-  reconstruction method = NO;
-  if(ff==0){
-    if(type=="X"){method = m_method_CATS1X;}
-    else if(type=="Y"){method = m_method_CATS1Y;}
+    if(MethodName=="ASECH") ReconstructionFunctionX[CATSNumber-1] = &(AnalyticHyperbolicSecant);
+    else if(MethodName=="FSECH") ReconstructionFunctionX[CATSNumber-1] = &(FittedHyperbolicSecant);
+    else if(MethodName=="AGAUSS") ReconstructionFunctionX[CATSNumber-1] = &(AnalyticGaussian);
+    else if(MethodName=="CENTROIDE")  ReconstructionFunctionX[CATSNumber-1] = &(Centroide); 
   }
 
-  if(ff==1){
-    if(type=="X"){method = m_method_CATS2X;}
-    else if(type=="Y"){method = m_method_CATS2Y;}
-  }
+  if(XorY=="Y"){
+    if(ReconstructionFunctionY.size() < CATSNumber)
+      ReconstructionFunctionY.resize(CATSNumber);
 
-  return(method);
-} 
+    if(MethodName=="ASECH") ReconstructionFunctionY[CATSNumber-1] = &(AnalyticHyperbolicSecant);
+    else if(MethodName=="FSECH") ReconstructionFunctionY[CATSNumber-1] = &(FittedHyperbolicSecant);
+    else if(MethodName=="AGAUSS") ReconstructionFunctionY[CATSNumber-1] = &(AnalyticGaussian);
+    else if(MethodName=="CENTROIDE")  ReconstructionFunctionY[CATSNumber-1] = &(Centroide); 
+  }
 
-/////////////////////////////////////////////////////////////////////////
-reconstruction TCATSPhysics::StringToEnum(string type)
-{
-  reconstruction method = NO;
-  if(type=="GAUSS"){method = GAUSS;}
-  if(type=="SECHS"){method = SECHS;}
-  if(type=="BAR3"){method = BAR3;}
-  if(type=="BAR4"){method = BAR4;}
-  if(type=="BAR5"){method = BAR5;}
-
-  return(method);
 }
 
-//////////////////////////////////////////////////////////////////////
-double  TCATSPhysics::CalculatePositionX(double CalculatedStripX, correction method)
-{
-  double positionX=-1000;
-  int IStripX = 0;
-
-  if(ReconstructionMethodX[ff] == GAUSS){positionX = CalculatedStripX;}   // already in mm -> see gaussian method
-
-  else{
-    IStripX = (int) CalculatedStripX ;   
-
-    // Decimal Part
-    double DStripX = CalculatedStripX-IStripX ;
-
-    if( DStripX > 0.5) {IStripX++; DStripX = DStripX-1 ;}     else {DStripX = DStripX;} 
-
-    // Calculate Geometrical Position 
-    if(IStripX > 0 &&  IStripX < 29){
-      if(ff==0){    //CATS1
-        // Warning : DStrip sign has to be determined carefully depending on the X direction
-
-        positionX = (DStripX)*2.54 + StripPositionX[ff][IStripX-1][0] ;  //init avec le moins
-
-        if(method == NOcor) positionX = positionX;
-        else if(method == cor){
-          if(ReconstructionMethodX[ff] == BAR3) positionX = CorrectedPositionX3(positionX, 0.60);
-          if(ReconstructionMethodX[ff] == BAR4) positionX = CorrectedPositionX4(positionX, 0.77);
-        }
-      }
-
-      else if(ff==1){    //CATS2
-        // Warning : DStrip sign has to be determined carefully depending on the X direction
-
-        positionX = -(DStripX)*2.54 + StripPositionX[ff][IStripX-1][0] ;   
-
-        if(method == NOcor) positionX = positionX;
-        else if(method == cor){
-          if(ReconstructionMethodX[ff] == BAR3) positionX = CorrectedPositionX3(positionX, 0.30);            
-          if(ReconstructionMethodX[ff] == BAR4) positionX = CorrectedPositionX4(positionX, 0.67);
-        }
-      }
-      else  cout << "only 2CATS!! ff = " << ff << endl;
-    }	
-
-    else {positionX = -1000;} 
-  }
-
+///////////////////////////////////////////////////////////////
+TVector3 TCATSPhysics::GetBeamDirection(){
+  TVector3 Direction;
+  if(PositionX.size() <2)return Direction;
 
-  if(ff==0 && CalculatedStripX != -1000){
-    if(m_correction_CATS1X == "Correction3Points"){
-      positionX = Corrected3PointsX(positionX,m_CorrectionCoef_CATS1X);
-    }
-    if(m_correction_CATS1X == "Correction4Points"){
-      positionX = Corrected4PointsX(positionX,m_CorrectionCoef_CATS1X);
-    }
+  if(DetMaxX[0]<DetMaxX[1]){
+    Direction = TVector3 (PositionX[1]-PositionX[0] ,
+        PositionY[1]-PositionY[0] ,
+        PositionZ[1]-PositionZ[0] );
+    Direction.Unit();
   }
 
-  if(ff==1 && CalculatedStripX != -1000){
-    if(m_correction_CATS2X == "Correction3Points"){
-      positionX = Corrected3PointsX(positionX,m_CorrectionCoef_CATS2X);
-    }
-    if(m_correction_CATS2X == "Correction4Points"){
-      positionX = Corrected4PointsX(positionX,m_CorrectionCoef_CATS2X);
-    }
+  else{
+    Direction = TVector3 (PositionX[0]-PositionX[1] ,
+        PositionY[0]-PositionY[1] ,
+        PositionZ[0]-PositionZ[1] );
+    Direction.Unit();
   }
 
-
-  return positionX;
+  return(Direction) ;	
 }
 
-/////////////////////////////////////////////////////////////////////////
-double  TCATSPhysics::CalculatePositionY(double CalculatedStripY, correction method)
-{
-  double positionY = -1000;
-
-  if(ReconstructionMethodY[ff] == GAUSS){positionY = CalculatedStripY;}  // already in mm -> see gaussian method
-
-  else{     
-    //  Integer part
-    int IStripY = (int) CalculatedStripY ; 
+///////////////////////////////////////////////////////////////
+TVector3 TCATSPhysics::GetPositionOnTarget(){
+  double Pi = 3.14159265;
+  TVector3 Position = TVector3 (GetPositionOnTargetX() 	,
+      GetPositionOnTargetY() 	,
+      GetPositionOnTargetX()*tan(m_TargetAngle*Pi/180)); 
+  return(Position) ;	
+}
 
-    // Decimal Part
-    double DStripY = CalculatedStripY-IStripY ;
+////////////////////////////////////////////////////////////////////////
+namespace CATS_LOCAL{
+  ////////////////////////////////////////////////////////////////////
+  double AnalyticGaussian(vector<double>& Buffer_Q,int& StripMax){
+    double gauss = -1000;  
+    double Q[3];
+    double StripPos[3];
+    for(int j = 0; j<3 ; j++){
+      Q[j] = 0;
+      StripPos[j] = 0;
+    }
 
-    if(DStripY > 0.5) {IStripY++; DStripY = DStripY-1;}
-    else {DStripY = DStripY; } 
+    if(StripMax> 3 && StripMax< 26){
+      // central value taken using the Strip with Max charge
+      Q[0] = Buffer_Q[StripMax-1] ;
 
-    // Calculate Geometrical Position 
-    if(IStripY > 0  && IStripY < 29 ){
-      positionY = (DStripY)*2.54 + StripPositionY[ff][0][IStripY-1] ;  // conversion en mm initiale
-      if(ff ==0){
-        if(method == NOcor) positionY = positionY;
-        else if(method == cor) {
-          if(ReconstructionMethodY[ff] == BAR3) positionY = CorrectedPositionY3(positionY, 0.6);
-          if(ReconstructionMethodY[ff] == BAR4) positionY = CorrectedPositionY4(positionY, 0.75);
-        }
+      // Look at the next strip on the left
+      if(Buffer_Q[StripMax-2]!=-1){
+        Q[1] = Buffer_Q[StripMax-2];
+        StripPos[1] = StripMax-2;
       }
 
-      else if(ff ==1){
-        if(method == NOcor) positionY = positionY;
-        else if(method == cor){
-          if(ReconstructionMethodY[ff] == BAR3) positionY = CorrectedPositionY3(positionY, 0.45);
-          if(ReconstructionMethodY[ff] == BAR4) positionY = CorrectedPositionY4(positionY, 0.7);
-        }
+      // Look at the next next strip on the left
+      else if(Buffer_Q[StripMax-3]!=-1){
+        Q[1] = Buffer_Q[StripMax-3];
+        StripPos[1] = StripMax-3;
       }
 
-      else cout << "only 2CATS!! ff = " << ff << endl;
-    }
-
-    else  {positionY = -1000;} 
-  }
-
-
-  if(ff==0 && CalculatedStripY != -1000){
-    if(m_correction_CATS1Y == "Correction3Points"){
-      positionY = Corrected3PointsY(positionY,m_CorrectionCoef_CATS1Y);
-    }
-    if(m_correction_CATS1Y == "Correction4Points"){
-      positionY = Corrected4PointsY(positionY,m_CorrectionCoef_CATS1Y);
-    }
-  }
-
-  if(ff==1 && CalculatedStripY != -1000){
-    if(m_correction_CATS2Y == "Correction3Points"){
-      positionY = Corrected3PointsY(positionY,m_CorrectionCoef_CATS2Y);
-    }
-    if(m_correction_CATS2Y == "Correction4Points"){
-      positionY = Corrected4PointsY(positionY,m_CorrectionCoef_CATS2Y);
-    }
-  }
-
-  return positionY;
-
-}
-
-////////////////////////////////////////////////////////////////////
-double TCATSPhysics:: GaussianMethodX()
-{
-  int StripMax = StripMaxX[ff];
-  double gauss = -1000;
-  double Q[3];
-  double StripPos[3];
-
-  for(int j = 0; j<3 ; j++)
-  {
-    Q[j] = 0;
-    StripPos[j] = 0;
-  }
-
-
-  if(StripMaxX[ff]> 3 && StripMaxX[ff]< 26)
-  {
-    Q[0] = Buffer_X_Q[StripMax-1][ff] ;
-    StripPos[0] = StripPositionX[ff][StripMax-1][0];
-
-    if(Buffer_X_Q[StripMax-2][ff]!=-1){
-      Q[1] = Buffer_X_Q[StripMax-2][ff];
-      StripPos[1] = StripPositionX[ff][StripMax-2][0];
-    }
+      // Look at the next next next strip on the left
+      else if(Buffer_Q[StripMax-4]!=-1){
+        Q[1] = Buffer_Q[StripMax-4];
+        StripPos[1] = StripMax-4;
+      }
 
-    else {
-      if(Buffer_X_Q[StripMax-3][ff]!=-1){
-        Q[1] = Buffer_X_Q[StripMax-3][ff];
-        StripPos[1] = StripPositionX[ff][StripMax-3][0];
+      // Look at the next strip on the right
+      if(Buffer_Q[StripMax]!=-1){
+        Q[2] = Buffer_Q[StripMax];
+        StripPos[2] = StripMax;
       }
-      else {
-        if(Buffer_X_Q[StripMax-4][ff]!=-1){
-          Q[1] = Buffer_X_Q[StripMax-4][ff];
-          StripPos[1] = StripPositionX[ff][StripMax-4][0];
-        }
-      }	
-    }
 
-    if(Buffer_X_Q[StripMax][ff]!=-1){
-      Q[2] = Buffer_X_Q[StripMax][ff];
-      StripPos[2] = StripPositionX[ff][StripMax][0];
-    }
-    else {
-      if(Buffer_X_Q[StripMax+1][ff]!=-1){
-        Q[2] = Buffer_X_Q[StripMax+1][ff];
-        StripPos[2] = StripPositionX[ff][StripMax+1][0];
+      // Look at the next next strip on the right
+      else if(Buffer_Q[StripMax+1]!=-1){
+        Q[2] = Buffer_Q[StripMax+1];
+        StripPos[2] = StripMax+1;
       }
-      else {
-        if(Buffer_X_Q[StripMax+2][ff]!=-1){
-          Q[2] = Buffer_X_Q[StripMax+2][ff];
-          StripPos[2] = StripPositionX[ff][StripMax+2][0];
-        }
+
+      // Look at the next next next strip on the right 
+      else if(Buffer_Q[StripMax+2]!=-1){
+        Q[2] = Buffer_Q[StripMax+2];
+        StripPos[2] = StripMax+2;
       }
+
     }
 
     double Q0_Q1 = log(Q[0]/Q[1]);
@@ -1065,568 +833,115 @@ double TCATSPhysics:: GaussianMethodX()
 
     double num   = Q0_Q1 * (StripPos[2]*StripPos[2] - StripPos[0]*StripPos[0]) - Q0_Q2 * (StripPos[1]*StripPos[1] - StripPos[0]*StripPos[0])  ;
     double denom = Q0_Q1 * (StripPos[2] - StripPos[0]) - Q0_Q2 * (StripPos[1] - StripPos[0]) ;
-    if(denom != 0){
-      gauss = 0.5*num / denom;
-    }
-    else{gauss = -1000;}
-
-  }
-
-  else {
-    gauss = -1000;
-  }
-
-  return gauss;
-
-}
-
-/////////////////////////////////////////////////////////////////////////
-double TCATSPhysics::Corrected3PointsX(double Position, double c) 
-{
-  double Corrected_Position = 0;
-  int StripMax_ = StripMaxX[ff] -1;
-  double xmax = StripPositionX[ff][StripMax_][0] ;
-
-  Corrected_Position = (Position - xmax) / c + xmax;
-
-  return Corrected_Position;
-}
-
-/////////////////////////////////////////////////////////////////////////
-double TCATSPhysics::Corrected4PointsX(double Position, double d) 
-{
-  double Corrected_Position = 0;
-  double xmax = 0;
-  int StripMax_ = StripMaxX[ff] -1;
-
-  if(Buffer_X_Q[StripMax_+1][ff] > Buffer_X_Q[StripMax_-1][ff]) {
-    if(ff==0)     xmax = StripPositionX[ff][StripMax_][0] - 1.27;
-    else  xmax = StripPositionX[ff][StripMax_][0] + 1.27;
-  }
-
-  else{
-    if(ff==0)     xmax = StripPositionX[ff][StripMax_-1][0] - 1.27;
-    else  xmax = StripPositionX[ff][StripMax_-1][0]  + 1.27;
-  }
-
-  Corrected_Position = (Position - xmax) / d + xmax;
-
-  return Corrected_Position;
-}
-
-////////////////////////////////////////////////////////////////////////////
-double TCATSPhysics:: GaussianMethodY()
-{
-  double Q[3];
-  double StripPos[3];
-  double Q0_Q1, Q0_Q2;
-  double num, denom;
-
-  for(int j = 0; j<3 ; j++)
-  {
-    Q[j] = 0;
-    StripPos[j] = 0;
-  }
-
-  int StripMax = StripMaxY[ff];
-
-  double gauss = -1000;
 
-  if(StripMaxY[ff] > 2 && StripMaxY[ff]<27)
-  {
-    Q[0] = Buffer_Y_Q[StripMax-1][ff] ;
-    StripPos[0] = StripPositionY[ff][0][StripMax-1];
-
-    if(Buffer_Y_Q[StripMax-2][ff]!=-1){
-      Q[1] = Buffer_Y_Q[StripMax-2][ff];
-      StripPos[1] = StripPositionY[ff][0][StripMax-2];
-    }
-
-    else {
-      if(Buffer_Y_Q[StripMax-3][ff]!=-1){
-        Q[1] = Buffer_Y_Q[StripMax-3][ff];
-        StripPos[1] = StripPositionY[ff][0][StripMax-3] ;
-      }
-      else {
-        if(Buffer_Y_Q[StripMax-4][ff]!=-1){
-          Q[1] = Buffer_Y_Q[StripMax-4][ff];
-          StripPos[1] = StripPositionY[ff][0][StripMax-4] ;
-        }
-      }
-    }
-
-    if(Buffer_Y_Q[StripMax][ff]!=-1){
-      Q[2] = Buffer_Y_Q[StripMax][ff];
-      StripPos[2] = StripPositionY[ff][0][StripMax];
-    }
-
-    else {
-      if(Buffer_Y_Q[StripMax+1][ff]!=-1){
-        Q[2] = Buffer_Y_Q[StripMax+1][ff];
-        StripPos[2] = StripPositionY[ff][0][StripMax+1] ;
-      }
-
-      else {
-        if(Buffer_Y_Q[StripMax+2][ff]!=-1){
-          Q[2] = Buffer_Y_Q[StripMax+2][ff];
-          StripPos[2] = StripPositionY[ff][0][StripMax+2] ;
-        }
-      }
-    }	
-
-
-
-    Q0_Q1 = log(Q[0]/Q[1]);
-    Q0_Q2 = log(Q[0]/Q[2]);
-
-    num   = Q0_Q1 * (StripPos[2]*StripPos[2] - StripPos[0]*StripPos[0]) - Q0_Q2 * (StripPos[1]*StripPos[1] - StripPos[0]*StripPos[0])  ;
-    denom = Q0_Q1 * (StripPos[2] - StripPos[0]) - Q0_Q2 * (StripPos[1] - StripPos[0]) ;
     if(denom != 0){
       gauss = 0.5*num / denom;
     }
 
-  }
-
-  else {
-    gauss = -1000;
-  }
-
-  return gauss;
-
-}
-
-/////////////////////////////////////////////////////////////////////////
-double TCATSPhysics::Corrected3PointsY(double Position, double c) 
-{
-  double Corrected_Position = 0;
-  int StripMax_ = StripMaxY[ff] -1;
-  double ymax = StripPositionY[ff][0][StripMax_] ;
-
-  Corrected_Position = (Position - ymax) / c + ymax;
-
-  return Corrected_Position;
-}
-
-/////////////////////////////////////////////////////////////////////////
-double TCATSPhysics::Corrected4PointsY(double Position, double d) 
-{
-  double Corrected_Position = 0;
-  double ymax = 0;
-  int StripMax_ = StripMaxY[ff] -1;
-
-  if(Buffer_Y_Q[StripMax_+1][ff] > Buffer_Y_Q[StripMax_-1][ff]) {
-    ymax = StripPositionY[ff][0][StripMax_] + 1.27 ;
-  }
-
-  else{
-    ymax = StripPositionY[ff][0][StripMax_-1] + 1.27;
-  }
-
-  Corrected_Position = (Position - ymax) / d + ymax;
-
-  return Corrected_Position;
-}
-
-///////////////////////////////////////////////////////////////
-double TCATSPhysics:: Barycentric5MethodX() 
-{
-  double Barycenter = 0 ;
-
-  if(StripMaxX[ff] > 2 && StripMaxX[ff] < 27)
-  {
-    int StripMax_ = StripMaxX[ff] -1 ; 
-    double NumberOfPoint = 0 ;
-    double ChargeTotal =0;
-
-
-    for(int i = -2 ; i < 3 ; i++)
-    {
-      if(Buffer_X_Q[StripMax_+i][ff]!=-1)	          
-      { 
-        Barycenter += (StripMaxX[ff]+i)*Buffer_X_Q[StripMax_+i][ff] ;
-        NumberOfPoint++;
-        ChargeTotal+=Buffer_X_Q[StripMax_+i][ff];
-      }
+    else{
+      gauss = -1000;
     }
 
-    if(ChargeTotal>0) Barycenter = Barycenter / ChargeTotal ;
-    else {Barycenter = -1000 ; } 
+    return gauss;
 
   }
-  else
-  {
-    Barycenter = -1000 ;
-  }
 
-  return Barycenter ;
-}
+  ///////////////////////////////////////////////////////////////
+  double Centroide(vector<double>& Buffer_Q, int& StripMax){
+    double Centroide = 0 ;
+    double ChargeTotal = 0;
 
-///////////////////////////////////////////////////////////////
-double TCATSPhysics:: Barycentric5MethodY() 
-{
-  double Barycenter = 0 ;
-
-  if(StripMaxY[ff] > 2 && StripMaxY[ff] < 27)
-  {
-    int StripMax_ = StripMaxY[ff] -1 ; 
-    double NumberOfPoint = 0 ;
-    double ChargeTotal =0;
-
-
-    for(int i = -2 ; i < 3 ; i++)
-    {
-      if(Buffer_Y_Q[StripMax_+i][ff]!=-1)	          
-      { 
-        Barycenter += (StripMaxY[ff]+i)*Buffer_Y_Q[StripMax_+i][ff] ;
-        NumberOfPoint++;
-        ChargeTotal+=Buffer_Y_Q[StripMax_+i][ff];
+    unsigned int sizeQ = Buffer_Q.size(); 
+    for(unsigned int i = 0 ; i < sizeQ ; i++){
+      if(Buffer_Q[i]>0){ 
+        Centroide += (i)*Buffer_Q[i-1] ;
+        ChargeTotal+=Buffer_Q[i-1];
       }
     }
 
-    if(ChargeTotal>0) Barycenter = Barycenter / ChargeTotal ;
-    else {Barycenter = -1000 ; } // cout << "Yo" << endl ;}
-
-}
-else
-{
-  Barycenter = -1000 ;
-}
-
-return Barycenter ;
-}
-
-///////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////////////
-double TCATSPhysics:: Barycentric3MethodX() 
-{
-  double Barycenter = 0 ;
+    if(ChargeTotal>0) Centroide = Centroide / ChargeTotal ;
 
-  if(StripMaxX[ff] > 2 && StripMaxX[ff] < 27)
-  {
-    int StripMax_ = StripMaxX[ff] -1; 
-    double NumberOfPoint = 0 ;
-    double ChargeTotal =0;
-
-    for(int i = -1 ; i < 2 ; i++)
-    {
-      if(Buffer_X_Q[StripMax_+i][ff]!=-1)	// Charge initialized to -1
-      { 
-        Barycenter += (StripMaxX[ff]+i)*Buffer_X_Q[StripMax_+i][ff] ;
-        NumberOfPoint++;
-        ChargeTotal+=Buffer_X_Q[StripMax_+i][ff];
-      }
-    }
-
-    if(ChargeTotal>0) Barycenter = Barycenter / ChargeTotal ;
-    else {Barycenter = -1000 ;}  // cout << "Yo" << endl ;}
-}
-
-
-else
-{
-  Barycenter = -1000 ;
-}
-
-return Barycenter ;
-}
-
-///////////////////////////////////////////////////////////////
-double TCATSPhysics:: Barycentric3MethodY() 
-{
-  double Barycenter = 0 ;
-
-  if(StripMaxY[ff] > 2 && StripMaxY[ff] < 27)
-  {
-    int StripMax_ = StripMaxY[ff] -1 ; // Use because numerotation of array start at 0 ;
-    double NumberOfPoint = 0 ;
-    double ChargeTotal =0;
-
-    for(int i = -1 ; i < 2 ; i++)
-    {
-      if(Buffer_Y_Q[StripMax_+i][ff]!=-1)	// Charge initialized to -1
-      { 
-        Barycenter += (StripMaxY[ff]+i)*Buffer_Y_Q[StripMax_+i][ff] ;
-        NumberOfPoint++;
-        ChargeTotal+=Buffer_Y_Q[StripMax_+i][ff];
-      }
-    }
+    else {
+      Centroide = -1000 ; 
+    } 
 
-    if(ChargeTotal>0) Barycenter = Barycenter / ChargeTotal ;
-    else {Barycenter = -1000 ;}  // cout << "Yo" << endl ;}
-}
+    return Centroide ;
+  }
 
-else
-{
-  Barycenter = -1000 ;
-  //        cout << "Strip max " << StripMax << endl;
-}
+  /////////////////////////////////////////////////////////////////////
+  double AnalyticHyperbolicSecant(vector<double>& Buffer_Q, int& StripMax){
+    double sech = -1000 ;
 
-return Barycenter ;
-}
+    if(StripMax > 2 && StripMax<27){	
+      if(Buffer_Q[StripMax-1+1]==0||Buffer_Q[StripMax-1-1]==0)
+        return sech;
 
-///////////////////////////////////////////////////////////////
-double TCATSPhysics:: Barycentric4MethodX()
-{
-  double Barycenter = 0 ;
+      double vs1 = sqrt( Buffer_Q[StripMax-1]/Buffer_Q[StripMax-1+1] );
+      double vs2 = sqrt( Buffer_Q[StripMax-1]/Buffer_Q[StripMax-1-1] );
+      double vs3 = 0.5*( vs1 + vs2 );
+      double vs4 = log( vs3 + sqrt(vs3*vs3-1.0) );
+      double vs5 = (vs1 - vs2)/(2.0*sinh(vs4));	
 
-  if(StripMaxX[ff] > 2 && StripMaxX[ff] < 27)     {
+      if(vs5<0) 
+        vs5=-vs5 ;
 
-    int StripMax_ = StripMaxX[ff] -1 ; // Use because numerotation of array start at 0 ;
-    double NumberOfPoint = 0 ;
-    double ChargeTotal =0;
+      double vs6 = 0.5*log( (1.0+vs5)/(1.0-vs5) ) ;
 
-    if(Buffer_X_Q[StripMax_+1][ff] > Buffer_X_Q[StripMax_-1][ff]) {
+      if ( Buffer_Q[StripMax-1+1]>Buffer_Q[StripMax-1-1] ) 
+        sech = StripMax + vs6/vs4 ;
 
-      //	cout << "Barycentre droit" << endl;
-      for(int i = -1 ; i < 3 ; i++)  
-      {
-        if(Buffer_X_Q[StripMax_+i][ff]!=-1)   {                            // Charge initialized to -1
-          Barycenter += (StripMaxX[ff]+i)*Buffer_X_Q[StripMax_+i][ff] ;
-          NumberOfPoint++;
-          ChargeTotal+=Buffer_X_Q[StripMax_+i][ff];
-        }
-      }
-    }
 
-    else {
-      //	cout << "Barycentre gauche" << endl;	
-      for(int i = -2 ; i < 2 ; i++)
-      {
-        if(Buffer_X_Q[StripMax_+i][ff]!=-1)	{                                 // Charge initialized to -1
-          Barycenter += (StripMaxX[ff]+i)*Buffer_X_Q[StripMax_+i][ff] ;
-          NumberOfPoint++;
-          ChargeTotal+=Buffer_X_Q[StripMax_+i][ff];
-        }
-      }
-    }
+      else 
+        sech = StripMax - vs6/vs4 ;
 
-    if(ChargeTotal>0) {
-      Barycenter = Barycenter / ChargeTotal ;
     }
 
+    return sech ;
   }
 
-  else
-  {
-    Barycenter = -1000 ;
-    //        cout << "Strip max " << StripMax << endl;
-  }
+  /////////////////////////////////////////////////////////////////////
+  double FittedHyperbolicSecant(vector<double>& Buffer_Q, int& StripMax){
+    // Warning: should not delete static variable
+    static TF1* f = new TF1("sechs","[0]/(cosh(TMath::Pi()*(x-[1])/[2])*cosh(TMath::Pi()*(x-[1])/[2]))",1,28);
 
-  return Barycenter ;
-}
+    // Help the fit by computing the position of the maximum by analytic method
+    double StartingPoint = AnalyticHyperbolicSecant(Buffer_Q,StripMax);
+    // if analytic method fails then the starting point in strip max
+    if(StartingPoint==-1000) StartingPoint = StripMax; 
 
-///////////////////////////////////////////////////////////////
-double TCATSPhysics:: Barycentric4MethodY() 
-{
-  double Barycenter = 0 ;
-
-  if(StripMaxY[ff] > 2 && StripMaxY[ff] < 27)     {
-
-    int StripMax_ = StripMaxY[ff] -1 ; // Use because numerotation of array start at 0 ;
-    double NumberOfPoint = 0 ;
-    double ChargeTotal =0;
-
-    if(Buffer_Y_Q[StripMax_+1][ff] > Buffer_Y_Q[StripMax_-1][ff]) {
+    // Maximum is close to charge max, Mean value is close to Analytic one, typical width is 3.8 strip
+    f->SetParameters(Buffer_Q[StripMax-1],StartingPoint,3.8);
 
-      //	cout << "Barycentre droit" << endl;
-      for(int i = -1 ; i < 3 ; i++)  
-      {
-        if(Buffer_Y_Q[StripMax_+i][ff]!=-1)   {                            // Charge initialized to -1
-          Barycenter += (StripMaxY[ff]+i)*Buffer_Y_Q[StripMax_+i][ff] ;
-          NumberOfPoint++;
-          ChargeTotal+=Buffer_Y_Q[StripMax_+i][ff];
-        }
-      }
-    }
+    static vector<double> y ;
+    static vector<double> q ; 
+    y.clear(); q.clear();
+    double final_size = 0 ;
+    unsigned int sizeQ = Buffer_Q.size(); 
 
-    else {
-      //	cout << "Barycentre gauche" << endl;	
-      for(int i = -2 ; i < 2 ; i++)
-      {
-        if(Buffer_Y_Q[StripMax_+i][ff]!=-1)	{                                 // Charge initialized to -1
-          Barycenter += (StripMaxY[ff]+i)*Buffer_Y_Q[StripMax_+i][ff] ;
-          NumberOfPoint++;
-          ChargeTotal+=Buffer_Y_Q[StripMax_+i][ff];
-        }
+    for(unsigned int i = 0 ; i < sizeQ ; i++){
+      if(Buffer_Q[i] > Buffer_Q[StripMax-1]*0.2){
+        q.push_back(Buffer_Q[i]);
+        y.push_back(i+1);
+        final_size++;
       }
     }
 
-    if(ChargeTotal>0) {
-      Barycenter = Barycenter / ChargeTotal ;
+    // requiered at least 3 point to perfom a fit
+    if(final_size<3){
+      return -1000 ;
     }
 
+    TGraph* g = new TGraph(q.size(),&y[0],&q[0]);
+    g->Fit(f,"QN0");
+    delete g;
+    return f->GetParameter(1)  ;
   }
 
-  else
-  {
-    Barycenter = -1000 ;
-    //        cout << "Strip max " << StripMax << endl;
-  }
-
-  return Barycenter ;
-}
-
-/////////////////////////////////////////////////////////////////////
-double TCATSPhysics:: HyperbolicSequentMethodX()
-{
-  double sechs = -1000 ;
-
-  if(StripMaxX[ff] > 2 && StripMaxX[ff]<27)
-  {		
-    double vs1 = sqrt( Buffer_X_Q[StripMaxX[ff]-1][ff]/Buffer_X_Q[StripMaxX[ff]-1+1][ff] ) 	;
-    double vs2 = sqrt( Buffer_X_Q[StripMaxX[ff]-1][ff]/Buffer_X_Q[StripMaxX[ff]-1-1][ff] ) 	;
-    double vs3 = 0.5*( vs1 + vs2 ) 					;
-    double vs4 = log( vs3 + sqrt(vs3*vs3-1.0) ) 			;
-    double vs5 = (vs1 - vs2)/(2.0*sinh(vs4)) 				;	
-
-    if(vs5<0) vs5=-vs5 ;
-
-    double vs6 = 0.5*log( (1.0+vs5)/(1.0-vs5) ) ;
-
-    if ( Buffer_X_Q[StripMaxX[ff]-1+1][ff]>Buffer_X_Q[StripMaxX[ff]-1-1][ff] )
-    { sechs = StripMaxX[ff] + vs6/vs4 ;}
-
-    else
-    { sechs = StripMaxX[ff] - vs6/vs4 ;}	
-
-  }
-
-  else { 
-    sechs = -1000; 
-  }
-
-  return sechs ;
-}
-
-//////////////////////////////////////////////////////////////////
-double TCATSPhysics:: HyperbolicSequentMethodY()
-{
-  double sechs = -1000 ;
-
-  if(StripMaxY[ff] > 2 && StripMaxY[ff]<27)
-  {
-    double vs1 = sqrt( Buffer_Y_Q[StripMaxY[ff]-1][ff]/Buffer_Y_Q[StripMaxY[ff]-1+1][ff] ) 	;
-    double vs2 = sqrt( Buffer_Y_Q[StripMaxY[ff]-1][ff]/Buffer_Y_Q[StripMaxY[ff]-1-1][ff] ) 	;
-    double vs3 = 0.5*( vs1 + vs2 ) 					;
-    double vs4 = log( vs3 + sqrt(vs3*vs3-1.0) ) 			;
-    double vs5 = (vs1 - vs2)/(2.0*sinh(vs4)) 				;	
-
-    if(vs5<0) vs5=-vs5 ;
-
-    double vs6 = 0.5*log( (1.0+vs5)/(1.0-vs5) ) ;
-
-    if ( Buffer_Y_Q[StripMaxY[ff]-1+1][ff]>Buffer_Y_Q[StripMaxY[ff]-1-1][ff] )
-    { sechs = StripMaxY[ff] + vs6/vs4 ;}
-
-    else
-    { sechs = StripMaxY[ff] - vs6/vs4 ;}	
-
-  }
-
-  else { 
-    sechs = -1000; 
-  }
-
-  return sechs ;
-}
-
-
-
-///////////////////////////////////////////////////////////////
-double TCATSPhysics::CorrectedPositionX3(double Position, double a) 
-{
-  double Corrected_Position = 0;
-  int StripMax_ = StripMaxX[ff] -1;
-  double xmax = StripPositionX[ff][StripMax_][0] ;
-
-  Corrected_Position = (Position - xmax) / a + xmax;
-
-  return Corrected_Position;
-}
-
-///////////////////////////////////////////////////////////////
-double TCATSPhysics::CorrectedPositionY3(double Position, double a) 
-{
-  double Corrected_Position = 0;
-  int StripMax_ = StripMaxY[ff] -1;
-  double xmax = StripPositionY[ff][0][StripMax_];
-
-  Corrected_Position = (Position - xmax) / a + xmax;
-
-  return Corrected_Position;
-}
-
-///////////////////////////////////////////////////////////////
-double TCATSPhysics::CorrectedPositionX4(double Position, double b) 
-{
-  double Corrected_Position = 0;
-  double xmax = 0;
-  int StripMax_ = StripMaxX[ff] -1;
-
-  if(Buffer_X_Q[StripMax_+1][ff] > Buffer_X_Q[StripMax_-1][ff]) {
-    if(ff ==0)     xmax = StripPositionX[ff][StripMax_][0] - 1.27;
-    else  xmax = StripPositionX[ff][StripMax_][0] + 1.27;
-  }
-
-  else{
-    if(ff ==0)     xmax = StripPositionX[ff][StripMax_-1][0] - 1.27;
-    else  xmax = StripPositionX[ff][StripMax_-1][0]  + 1.27;
-  }
-
-  Corrected_Position = (Position - xmax) / b + xmax;
-
-  return Corrected_Position;
-}
-
-///////////////////////////////////////////////////////////////
-double TCATSPhysics::CorrectedPositionY4(double Position, double b) 
-{
-  double Corrected_Position = 0;
-  double xmax = 0;
-  int StripMax_ = StripMaxY[ff] -1;
-
-  if(Buffer_Y_Q[StripMax_+1][ff] > Buffer_Y_Q[StripMax_-1][ff]) {
-    xmax = StripPositionY[ff][0][StripMax_] + 1.27 ;
-  }
-
-  else{
-    xmax = StripPositionY[ff][0][StripMax_-1] + 1.27;
-  }
 
-  Corrected_Position = (Position - xmax) / b + xmax;
 
-  return Corrected_Position;
-}
-
-
-///////////////////////////////////////////////////////////////
-TVector3 TCATSPhysics::GetBeamDirection()
-{
-  TVector3 Position = TVector3 (PositionX[1]-PositionX[0] ,
-      PositionY[1]-PositionY[0] ,
-      PositionZ[1]-PositionZ[0] );
-  Position.Unit();
-  return(Position) ;	
-}
-
-///////////////////////////////////////////////////////////////
-TVector3 TCATSPhysics::GetPositionOnTarget()
-{
-  double Pi = 3.14159265;
-  TVector3 Position = TVector3 (GetPositionOnTargetX() 	,
-      GetPositionOnTargetY() 	,
-      GetPositionOnTargetX()*tan(m_TargetAngle*Pi/180)); 
-  Position.Unit();
-  return(Position) ;	
-}
-
-////////////////////////////////////////////////////////////////////////
-namespace LOCAL_CATS
-{
+  ////////////////////////////////////////////////////////////////////////
   //	transform an integer to a string
-  string itoa(int value)
-  {
+  string itoa(int value){
     std::ostringstream o;
 
     if (!(o << value))
@@ -1634,50 +949,33 @@ namespace LOCAL_CATS
 
     return o.str();
   }
-
-  double fCATS_X_Q(const TCATSData* m_EventData , const int i)
-  {
+  ////////////////////////////////////////////////////////////////////////
+  double fCATS_X_Q(const TCATSData* m_EventData , const int i){
     return CalibrationManager::getInstance()->ApplyCalibration( "CATS/D" + itoa( m_EventData->GetCATSDetX(i) ) + "_X" + itoa( m_EventData->GetCATSStripX(i) ) + "_Q",   
         m_EventData->GetCATSChargeX(i) + gRandom->Rndm() - fCATS_Ped_X(m_EventData, i) );
   }
-
-  double fCATS_Y_Q(const TCATSData* m_EventData , const int i)
-  {
+  ////////////////////////////////////////////////////////////////////////
+  double fCATS_Y_Q(const TCATSData* m_EventData , const int i){
     return CalibrationManager::getInstance()->ApplyCalibration( "CATS/D" + itoa( m_EventData->GetCATSDetY(i) ) + "_Y" + itoa( m_EventData->GetCATSStripY(i) ) + "_Q",   
         m_EventData->GetCATSChargeY(i) + gRandom->Rndm() - fCATS_Ped_Y(m_EventData, i) );
   }
-
-  bool fCATS_Threshold_X(const TCATSData* m_EventData , const int i)
-  {
+  ////////////////////////////////////////////////////////////////////////
+  bool fCATS_Threshold_X(const TCATSData* m_EventData , const int i){
     return CalibrationManager::getInstance()->ApplyThreshold( "CATS/D" + itoa( m_EventData->GetCATSDetX(i) ) + "_X" + itoa( m_EventData->GetCATSStripX(i) ),
         m_EventData->GetCATSChargeX(i));
   }
-
-  bool fCATS_Threshold_Y(const TCATSData* m_EventData , const int i)
-  {
+  ////////////////////////////////////////////////////////////////////////
+  bool fCATS_Threshold_Y(const TCATSData* m_EventData , const int i){
     return CalibrationManager::getInstance()->ApplyThreshold( "CATS/D" + itoa( m_EventData->GetCATSDetY(i) ) + "_Y" + itoa( m_EventData->GetCATSStripY(i) ),
         m_EventData->GetCATSChargeY(i));
   }
-
-  double fCATS_Ped_X(const TCATSData* m_EventData, const int i)
-  {
+  ////////////////////////////////////////////////////////////////////////
+  double fCATS_Ped_X(const TCATSData* m_EventData, const int i){
     return CalibrationManager::getInstance()->GetPedestal( "CATS/D" + itoa( m_EventData->GetCATSDetX(i) ) + "_X" + itoa( m_EventData->GetCATSStripX(i) ) );
   }
-
-  double fCATS_Ped_Y(const TCATSData* m_EventData, const int i)
-  {
+  ////////////////////////////////////////////////////////////////////////
+  double fCATS_Ped_Y(const TCATSData* m_EventData, const int i){
     return CalibrationManager::getInstance()->GetPedestal( "CATS/D" + itoa( m_EventData->GetCATSDetY(i) ) + "_Y" + itoa( m_EventData->GetCATSStripY(i) ) );
   }
-
-
 }
 
-
-
-
-
-
-
-
-
-
diff --git a/NPLib/CATS/TCATSPhysics.h b/NPLib/CATS/TCATSPhysics.h
index a94109f9b17d01e83ce8a0ebe7e3fcf125e7a67d..ed6339dfec2e5aed9008ae7bea8dcc183b1c1e77 100644
--- a/NPLib/CATS/TCATSPhysics.h
+++ b/NPLib/CATS/TCATSPhysics.h
@@ -42,224 +42,172 @@
 
 // forward declaration
 class TCATSSpectra;
-
-
-
 using namespace std ;
-enum reconstruction{NO,SECHS,GAUSS,BAR3,BAR4,BAR5};
-enum correction{NOcor,cor};
 
 class TCATSPhysics : public TObject, public NPA::VDetector
 {
+
+  public:   //   Constructor and Destructor
+    TCATSPhysics();
+    ~TCATSPhysics();
+
+  private:   //   Root Input and Output tree classes
+
+    TCATSData*       m_EventData;//!
+    TCATSData*       m_PreTreatedData;//!
+    TCATSPhysics*    m_EventPhysics;//!
+
+  public :
+    //   Vector of dim = multiplicity of event on all detector
+    vector<int>      DetNumberX; 
+    vector<int>      StripX;
+    vector<double>   ChargeX; 
+
+    //   Vector of dim = number of CATS
+    vector<int>      StripMaxX;
+    vector<double>   ChargeMaxX;
+    vector<int>      DetMaxX;
+
+    //   Vector of dim = multiplicity of event on all detector
+    vector<int>      DetNumberY; 
+    vector<int>      StripY;
+    vector<double>   ChargeY;
+
+    //   Vector of dim = number of CATS  
+    vector<int>      StripMaxY;
+    vector<double>   ChargeMaxY;
+    vector<int>      DetMaxY;
+
+    //   Vector of dim = number of CATS
+    vector<double>   PositionX;
+    vector<double>   PositionY;
+    vector<double>   StripNumberX;
+    vector<double>   StripNumberY;
+    vector<double>   PositionZ;
+    vector<double>	 QsumX;
+    vector<double>	 QsumY;
+    double           PositionOnTargetX;
+    double           PositionOnTargetY;
+
+    TVector3         BeamDirection;//!
+
+    // Vector of Charge Array (one for each CATS fired)
+    vector< vector<double> > Buffer_X_Q;//!
+    vector< vector<double> > Buffer_Y_Q;//!
+
+  private :
+    vector< vector< vector<double> > >   StripPositionX;//!
+    vector< vector< vector<double> > >   StripPositionY;//!
+    vector<double>                       StripPositionZ;//!  
+    int m_NumberOfCATS;
+    double m_TargetAngle; //!
+    double m_TargetThickness; //!
+
+    // Those two vector contain a pointer to the reconstruction function that should be used for each detector 
+    // Method take as argument a vector<double> representing the Charge distribution and uint giving the Strip with Max Q
+    // It returns a double, corresponding to the position in Strip unit
+    // Methods are declared in the CATS namespace outside the class
+    // CINT can't handle such complex vector, so the ifndef part is there to hide it away 
+    #ifndef __CINT__
+    vector<double(*)(vector<double>&,int&)> ReconstructionFunctionX;//!
+    vector<double(*)(vector<double>&,int&)> ReconstructionFunctionY;//!
+    #endif /* __CINT __ */
   
- public:   //   Constructor and Destructor
-  TCATSPhysics();
-  ~TCATSPhysics();
-
- private:   //   Root Input and Output tree classes
-            
-         TCATSData*         m_EventData;//!
-         TCATSData*         m_PreTreatedData;//!
-         TCATSPhysics*      m_EventPhysics;//!
-
- public :
- // marker of the cats used
-  int ff ;
-
-  //   Vector of dim = multiplicity of event on all detector
-  vector<int>        DetNumberX; 
-  vector<int>        StripX;
-  vector<double>     ChargeX; 
-     
-  //   Vector of dim = number of CATS
-  vector<int>      StripMaxX;
-     
-     
-  //   Vector of dim = multiplicity of event on all detector
-  vector<int>        DetNumberY; 
-  vector<int>        StripY;
-  vector<double>     ChargeY;
-     
-  //   Vector of dim = number of CATS  
-  vector<int>       StripMaxY;
-     
-  //   Vector of dim = number of CATS
-  vector<int>       DetNumberX_Position;
-  vector<int>       DetNumberY_Position;
-  vector<int>       DetNumberZ_Position;
-  vector<double>    PositionX;
-  vector<double>    PositionY;
-  vector<double>    PositionZ;
-	vector<double>	QsumX;
-	vector<double>	QsumY;
-  double            PositionOnTargetX;
-  double            PositionOnTargetY;
-     
-  TVector3      BeamDirection      ;  //!
-
-  double Buffer_X_Q[NBSTRIPS][NBDETECTOR];//!
-  double Buffer_Y_Q[NBSTRIPS][NBDETECTOR];//!
-      
-  int HitX;    //!
-  int HitY;    //!
-
-  vector<reconstruction>   ReconstructionMethodX;
-  vector<reconstruction>   ReconstructionMethodY;
-
-	
-		 private :
-        vector< vector< vector<double> > >   StripPositionX;//!
-        vector< vector< vector<double> > >   StripPositionY;//!
-        vector<double>                       StripPositionZ;//!  
-        int m_NumberOfCATS;
-		double m_TargetAngle;
-		double m_TargetThickness;
-		double m_CorrectionCoef_CATS1X;//!
-		double m_CorrectionCoef_CATS1Y;//!
-		double m_CorrectionCoef_CATS2X;//!
-		double m_CorrectionCoef_CATS2Y;//!
-	
-		
-		string m_correction_CATS1X;//!
-		string m_correction_CATS1Y;//!
-		string m_correction_CATS2X;//!
-		string m_correction_CATS2Y;//!
-	
-		string m_reconstruction_CATS1X;//!
-		string m_reconstruction_CATS1Y;//!
-		string m_reconstruction_CATS2X;//!
-		string m_reconstruction_CATS2Y;//!
-		reconstruction m_method_CATS1X;//!
-		reconstruction m_method_CATS1Y;//!
-		reconstruction m_method_CATS2X;//!
-		reconstruction m_method_CATS2Y;//!
-
- private : 
-       //   Map of activated channel
-       map< int, vector<bool> > m_XChannelStatus;//!
-       map< int, vector<bool> > m_YChannelStatus;//! 
-       //   Map of inverted channel
-       map< int, vector<int> > m_CATSXInversion;//!
-       map< int, vector<int> > m_CATSYInversion;//! 
-   
- public:   // Output data of interest
-      //   for a CATS
-	void SetTargetAngle(double m_TargetAngle) {m_TargetAngle = m_TargetAngle;}
-	void SetTargetThickness(double m_TargetThickness) {m_TargetThickness = m_TargetThickness;}
-	
-
-      //   Remove bad channel, calibrate the data and apply threshold
-      void PreTreat();
-
-      //   Activated associated Branches and link it to the private member DetectorData address
-      //   In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
-      void InitializeRootInputRaw() ;
-
-      //   Activated associated Branches and link it to the private member DetectorPhysics address
-      //   In this method mother Branches (Detector) AND daughter leaf (parameter) have to be activated
-      void InitializeRootInputPhysics() ;
-   
-      //   Create associated branches and associated private member DetectorPhysics address
-      void InitializeRootOutput() ;
-    
-      //   Clear The PreTeated object
-      void ClearPreTreatedData()   {m_PreTreatedData->Clear();}
-      
-      void BuildPhysicalEvent();
-
-      void BuildSimplePhysicalEvent();
-  
-      // Method related to the TSpectra classes, aimed at providing a framework for online applications
-      // Instantiate the Spectra class and the histogramm throught it
-      void InitSpectra();
-      // Fill the spectra hold by the spectra class
-      void FillSpectra();
-      // Used for Online mainly, perform check on the histo and for example change their color if issues are found
-      void CheckSpectra();
-      // Used for Online only, clear all the spectra hold by the Spectra class
-      void ClearSpectra();
+  public:
+    // Set the reconstruction Method used for the CATS plane
+    void SetReconstructionMethod(unsigned int CATSNumber, string XorY, string MethodName);
 
+  private : 
+    //   Map of activated channel
+    map< int, vector<bool> > m_XChannelStatus;//!
+    map< int, vector<bool> > m_YChannelStatus;//! 
+    //   Map of inverted channel
+    map< int, vector<int> > m_CATSXInversion;//!
+    map< int, vector<int> > m_CATSYInversion;//! 
 
-      //   Those two method all to clear the Event Physics or Data
-      void ClearEventPhysics() {Clear();}      
-      void ClearEventData()    {m_EventData->Clear();}    
+  public:   // Output data of interest
+    //   for a CATS
+    void SetTargetAngle(double m_TargetAngle) {m_TargetAngle = m_TargetAngle;}
+    void SetTargetThickness(double m_TargetThickness) {m_TargetThickness = m_TargetThickness;}
 
-      void  Clear();
-      void  Clear(const Option_t*) {};  
-	
-	  // Give and external TCATSData object to TCATSPhysics, needed for online analysis
-	  void SetRawDataPointer(TCATSData* rawDataPointer) {m_EventData = rawDataPointer;}
 
-      //   Return false if the channel is disabled by user
-      bool IsValidChannel(const string DetectorType, const int Detector , const int channel);
+    //   Remove bad channel, calibrate the data and apply threshold
+    void PreTreat();
 
-      void InitializeStandardParameter();
+    //   Activated associated Branches and link it to the private member DetectorData address
+    //   In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
+    void InitializeRootInputRaw() ;
 
-      void AddParameterToCalibrationManager();
+    //   Activated associated Branches and link it to the private member DetectorPhysics address
+    //   In this method mother Branches (Detector) AND daughter leaf (parameter) have to be activated
+    void InitializeRootInputPhysics() ;
 
-      void ReadAnalysisConfig();
+    //   Create associated branches and associated private member DetectorPhysics address
+    void InitializeRootOutput() ;
 
-      void ReadConfiguration(string);
+    //   Clear The PreTeated object
+    void ClearPreTreatedData()   {m_PreTreatedData->Clear();}
 
-      void AddCATS(TVector3 C_X1_Y1, TVector3 C_X28_Y1, TVector3 C_X1_Y28, TVector3 C_X28_Y28);
+    void BuildPhysicalEvent();
 
-      double AnalyseX(int ff);
+    void BuildSimplePhysicalEvent();
 
-      double AnalyseY(int ff);
+    // Method related to the TSpectra classes, aimed at providing a framework for online applications
+    // Instantiate the Spectra class and the histogramm throught it
+    void InitSpectra();
+    // Fill the spectra hold by the spectra class
+    void FillSpectra();
+    // Used for Online mainly, perform check on the histo and for example change their color if issues are found
+    void CheckSpectra();
+    // Used for Online only, clear all the spectra hold by the Spectra class
+    void ClearSpectra();
 
-      double CalculatePositionX( double CalculatedStripX, correction method);
 
-      double CalculatePositionY( double CalculatedStripY, correction method);
+    //   Those two method all to clear the Event Physics or Data
+    void ClearEventPhysics() {Clear();}      
+    void ClearEventData()    {m_EventData->Clear();}    
 
-      reconstruction ChooseReconstruction(int ff, TString type);
-	
-	  reconstruction StringToEnum(string type);
+    void  Clear();
+    void  Clear(const Option_t*) {};  
 
-      double CorrectedPositionX3(double Position, double a) ;
-      double CorrectedPositionY3(double Position, double a) ;
-      double CorrectedPositionX4(double Position, double b); 
-      double CorrectedPositionY4(double Position, double b); 
-	double Corrected3PointsX(double Position, double c);
-	double Corrected3PointsY(double Position, double c);
-	double Corrected4PointsX(double Position, double d);
-	double Corrected4PointsY(double Position, double d);
+    // Give and external TCATSData object to TCATSPhysics, needed for online analysis
+    void SetRawDataPointer(TCATSData* rawDataPointer) {m_EventData = rawDataPointer;}
 
-	
-      // Methode de reconstruction X
-      double HyperbolicSequentMethodX();
-      double GaussianMethodX();
-      double Barycentric5MethodX(); 
-      double Barycentric4MethodX(); 
-      double Barycentric3MethodX(); 
+    //   Return false if the channel is disabled by user
+    bool IsValidChannel(const string DetectorType, const int Detector , const int channel);
+    void InitializeStandardParameter();
+    void AddParameterToCalibrationManager();
+    void ReadAnalysisConfig();
+    void ReadConfiguration(string);
+    void AddCATS(TVector3 C_X1_Y1, TVector3 C_X28_Y1, TVector3 C_X1_Y28, TVector3 C_X28_Y28);
 
-      // Methode de Reconstruction Y
-      double HyperbolicSequentMethodY();
-      double GaussianMethodY();     
-      double Barycentric5MethodY(); 
-      double Barycentric4MethodY(); 
-      double Barycentric3MethodY(); 
+  public:
+    TVector3 GetBeamDirection();
+    TVector3 GetPositionOnTarget();
 
-      TVector3 GetBeamDirection();
-      TVector3 GetPositionOnTarget();
-    
-      double GetPositionOnTargetX()  {return PositionOnTargetX;}  
-      double GetPositionOnTargetY()  {return PositionOnTargetY;}
+    double GetPositionOnTargetX()  {return PositionOnTargetX;}  
+    double GetPositionOnTargetY()  {return PositionOnTargetY;}
 
 
-     private: // Spectra Class   
-      TCATSSpectra*      m_Spectra;//! 
+  private: // Spectra Class   
+    TCATSSpectra*      m_Spectra;//! 
 
-    public: // Spectra Getter
-      map< vector<TString> , TH1*> GetSpectra();
+  public: // Spectra Getter
+    map< vector<string> , TH1*> GetSpectra();
 
+    ClassDef(TCATSPhysics,1)  // CATSPhysics structure
+};
 
 
-       ClassDef(TCATSPhysics,1)  // CATSPhysics structure
-};
+namespace CATS_LOCAL{
+  // The reconstruction methods need to be outside the class for practical purpose
+  // of dealing with the function pointer
+  double AnalyticHyperbolicSecant(vector<double>& ChargeArray,int& StripMax);
+  double FittedHyperbolicSecant(vector<double>& ChargeArray,int& StripMax);
+  double AnalyticGaussian(vector<double>& ChargeArray,int& StripMax);
+  double Centroide(vector<double>& ChargeArray,int& StripMax); 
 
 
-namespace LOCAL_CATS
-{
   //   tranform an integer to a string
   string itoa(int value);
 
diff --git a/NPLib/CATS/TCATSSpectra.cxx b/NPLib/CATS/TCATSSpectra.cxx
index 0aaad144e5c44985b9fb9b459ec66610d99a7799..b060356a32ef60463f7206b68e037924fcbf3bc0 100644
--- a/NPLib/CATS/TCATSSpectra.cxx
+++ b/NPLib/CATS/TCATSSpectra.cxx
@@ -21,6 +21,11 @@
  *                                                                           *
  *****************************************************************************/
 
+//STL
+#include <iostream>
+#include <cstdlib>
+#include <stdexcept>
+
 // NPL
 #include "TCATSSpectra.h"
 #include "NPOptionManager.h"
@@ -32,7 +37,7 @@ using namespace NPUNITS;
 
 
 // ROOT
-#include "TString.h"
+#include "string.h"
 #include "TDirectory.h"
 #include "TFile.h"
 
@@ -74,105 +79,107 @@ TCATSSpectra::~TCATSSpectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TCATSSpectra::InitRawSpectra(){
-  TString name;
+  string name;
 
   for (unsigned int i = 0; i < fNumberOfCats; ++i) {   // loop on number of cats
     // CATS_STRX_Q_RAW
-    name = Form("CATS%d_STRX_Q_RAW", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRX_Q_RAW";
     AddHisto2D(name, name, fStripsNumber, 1, fStripsNumber+1, 512, 0, 16384, "CATS/RAW/STRQ");
 
     // CATS_STRY_Q_RAW
-    name = Form("CATS%d_STRY_Q_RAW", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRY_Q_RAW";
     AddHisto2D(name, name, fStripsNumber, 1, fStripsNumber+1, 512, 0, 16384, "CATS/RAW/STRQ");
 
     // STRX_MULT
-    name = Form("CATS%d_STRX_MULT", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRX_MULT";
     AddHisto1D(name, name, fStripsNumber, 1, fStripsNumber+1, "CATS/RAW/MULT");
 
     // STRY_MULT
-    name = Form("CATS%d_STRY_MULT", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRY_MULT";
     AddHisto1D(name, name, fStripsNumber, 1, fStripsNumber+1, "CATS/RAW/MULT");
   } // end loop on number of cats
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void TCATSSpectra::InitPreTreatedSpectra(){
-  TString family = "CATS/CAL/STRQ" ;
-  TString name;
+  string family = "CATS/CAL/STRQ" ;
+  string name;
 
   for (unsigned int i = 0; i < fNumberOfCats; ++i) {   // loop on number of cats
     // CATS_STRX_Q_CAL
-    name = Form("CATS%d_STRX_Q_CAL", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRX_Q_CAL";
     AddHisto2D(name, name, fStripsNumber, 1, fStripsNumber+1, 512, 0, 16384, family);
 
     // CATS_STRY_Q_CAL
-    name = Form("CATS%d_STRY_Q_CAL", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRY_Q_CAL";
     AddHisto2D(name, name, fStripsNumber, 1, fStripsNumber+1, 512, 0, 16384, family);
-   // end loop on number of cats
+    // end loop on number of cats
 
     // STRX_MULT
-    name = Form("CATS%d_STRX_CAL_MULT", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRX_CAL_MULT";
     AddHisto1D(name, name, fStripsNumber, 1, fStripsNumber+1, "CATS/CAL/MULT");
 
     // STRY_MULT
-    name = Form("CATS%d_STRY_CAL_MULT", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRY_CAL_MULT";
     AddHisto1D(name, name, fStripsNumber, 1, fStripsNumber+1, "CATS/CAL/MULT");
   } // end loop on number of cats
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void TCATSSpectra::InitPhysicsSpectra(){
-  TString family = "CATS/PHY/QSUM" ;
-  TString name;
+  string family = "CATS/PHY/QSUM" ;
+  string name;
 
   for (unsigned int i = 0; i < fNumberOfCats; ++i) {   // loop on number of cats
-    name = Form("CATS%d_QSUM_STRMAX_X_CAL", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_QSUM_STRMAX_X_CAL";
     AddHisto2D(name, name, fStripsNumber, 1, fStripsNumber+1, 512, 0, 16384, family);
 
-    name = Form("CATS%d_QSUM_STRMAX_Y_CAL", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_QSUM_STRMAX_Y_CAL";
     AddHisto2D(name, name, fStripsNumber, 1, fStripsNumber+1, 512, 0, 16384, family);
   }
 
   family = "CATS/PHY/CTRL";
   for (unsigned int i = 0; i < fNumberOfCats; ++i) {   // loop on number of cats
-    name = Form("CATS%d_QMEAN_TIME", i+1);
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_QMEAN_TIME";
     AddHisto1D(name, name, fEventLoopSize,0,fEventLoopSize,family); 
     fEventLoopQSum.push_back(0);
   }
 
   family = "CATS/PHY/POS";
   for (unsigned int i = 0; i < fNumberOfCats; ++i) {   // loop on number of cats
-    name = Form("CATS%d_POS", i+1);
-    AddHisto2D(name, name,500,-50,50,500,-50,50,family); 
+    name = "CATS"+CATS_LOCAL::itoa(i+1)+"_POS";
+    AddHisto2D(name, name,120,-40,40,120,-40,40,family);
+    name = "CATS_STRIP_"+CATS_LOCAL::itoa(i+1)+"_POS";
+    AddHisto2D(name, name,120,1,28,120,1,28,family);
+
   } 
 
   name = "TARGET_POS";
-  AddHisto2D(name, name,500,-50,50,500,-50,50,family); 
-
+  AddHisto2D(name, name,320,-40,40,320,-40,40,family);
   name = "TRAJECTORY_XZ";
-  AddHisto2D(name, name,100,-50,50,100,-50,50,family); 
+  AddHisto2D(name, name,500,-700,500,200,-200,400,family); 
 
   name = "TRAJECTORY_YZ";
-  AddHisto2D(name, name,100,-50,50,100,-50,50,family); 
+  AddHisto2D(name, name,500,-700,500,200,-200,400,family); 
 
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void TCATSSpectra::FillRawSpectra(TCATSData* RawData){
-  TString name;
-  TString family;
+  string name;
+  string family;
 
   // CATS_STRX_Q_RAW
   for (unsigned int i = 0; i < RawData->GetCATSMultX(); ++i) {   // loop on vector
     family = "CATS/RAW/STRQ";
-    name   = Form("CATS%d_STRX_Q_RAW", RawData->GetCATSDetX(i));
+    name   = "CATS"+CATS_LOCAL::itoa(RawData->GetCATSDetX(i))+"_STRX_Q_RAW";
     GetHisto(family, name) -> Fill(RawData->GetCATSStripX(i), RawData->GetCATSChargeX(i)); 
   } // end loop on vector
 
   // CATS_STRY_Q_RAW
   for (unsigned int i = 0; i < RawData->GetCATSMultY(); ++i) {   // loop on vector
     family = "CATS/RAW/STRQ";
-    name   = Form("CATS%d_STRY_Q_RAW", RawData->GetCATSDetY(i));
+    name   = "CATS"+CATS_LOCAL::itoa(RawData->GetCATSDetY(i))+"_STRY_Q_RAW";
     GetHisto(family, name) -> Fill(RawData->GetCATSStripY(i), RawData->GetCATSChargeY(i)); 
   } // end loop on vector
 
@@ -182,7 +189,7 @@ void TCATSSpectra::FillRawSpectra(TCATSData* RawData){
   for (unsigned int i = 0; i < RawData->GetCATSMultX(); i++) myMULT[RawData->GetCATSDetX(i)-1] += 1;
 
   for (unsigned int i = 0; i < fNumberOfCats; i++) {
-    name   = Form("CATS%d_STRX_MULT", i+1);
+    name   = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRX_MULT";
     family = "CATS/RAW/MULT";
     GetHisto(family,name) -> Fill(myMULT[i]);
   }
@@ -192,7 +199,7 @@ void TCATSSpectra::FillRawSpectra(TCATSData* RawData){
   for (unsigned int i = 0; i < RawData->GetCATSMultY(); i++) myMULT[RawData->GetCATSDetY(i)-1] += 1;
 
   for (unsigned int i = 0; i < fNumberOfCats; i++) {
-    name   = Form("CATS%d_STRY_MULT", i+1);
+    name   = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRY_MULT";
     family = "CATS/RAW/MULT";
     GetHisto(family,name) -> Fill(myMULT[i]);
   }
@@ -200,20 +207,20 @@ void TCATSSpectra::FillRawSpectra(TCATSData* RawData){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TCATSSpectra::FillPreTreatedSpectra(TCATSData* PreTreatedData){
-  TString name;
-  TString family;
+  string name;
+  string family;
 
   // CATS_STRX_Q_CAL
   for (unsigned int i = 0; i < PreTreatedData->GetCATSMultX(); ++i) {   // loop on vector
     family = "CATS/CAL/STRQ";
-    name   = Form("CATS%d_STRX_Q_CAL", PreTreatedData->GetCATSDetX(i));
+    name   = "CATS"+CATS_LOCAL::itoa(PreTreatedData->GetCATSDetX(i))+"_STRX_Q_CAL";
     GetHisto(family,name) -> Fill(PreTreatedData->GetCATSStripX(i), PreTreatedData->GetCATSChargeX(i)); 
   } // end loop on vector
 
   // CATS_STRY_Q_CAL
   for (unsigned int i = 0; i < PreTreatedData->GetCATSMultY(); ++i) {   // loop on vector
     family = "CATS/CAL/STRQ";
-    name   = Form("CATS%d_STRY_Q_CAL", PreTreatedData->GetCATSDetY(i));
+    name   = "CATS"+CATS_LOCAL::itoa(PreTreatedData->GetCATSDetY(i))+"_STRY_Q_CAL";
     GetHisto(family,name) -> Fill(PreTreatedData->GetCATSStripY(i), PreTreatedData->GetCATSChargeY(i)); 
   } // end loop on vector
 
@@ -223,7 +230,7 @@ void TCATSSpectra::FillPreTreatedSpectra(TCATSData* PreTreatedData){
   for (unsigned int i = 0; i < PreTreatedData->GetCATSMultX(); i++) myMULT[PreTreatedData->GetCATSDetX(i)-1] += 1;
 
   for (unsigned int i = 0; i < fNumberOfCats; i++) {
-    name   = Form("CATS%d_STRX_CAL_MULT", i+1);
+    name   = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRX_CAL_MULT";
     family = "CATS/CAL/MULT";
     GetHisto(family,name) -> Fill(myMULT[i]);
   }
@@ -233,7 +240,7 @@ void TCATSSpectra::FillPreTreatedSpectra(TCATSData* PreTreatedData){
   for (unsigned int i = 0; i < PreTreatedData->GetCATSMultY(); i++) myMULT[PreTreatedData->GetCATSDetY(i)-1] += 1;
 
   for (unsigned int i = 0; i < fNumberOfCats; i++) {
-    name   = Form("CATS%d_STRY_CAL_MULT", i+1);
+    name   = "CATS"+CATS_LOCAL::itoa(i+1)+"_STRY_CAL_MULT";
     family = "CATS/CAL/MULT";
     GetHisto(family,name) -> Fill(myMULT[i]);
   }
@@ -242,31 +249,29 @@ void TCATSSpectra::FillPreTreatedSpectra(TCATSData* PreTreatedData){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TCATSSpectra::FillPhysicsSpectra(TCATSPhysics* Physics){
-  TString name,family;
+  string name,family;
   // CATS_STRX_Q_CAL
   for (unsigned int i = 0; i < Physics->DetNumberX.size() ; ++i) {   // loop on vector
     family="CATS/PHY/QSUM";
-    name   = Form("CATS%d_QSUM_STRMAX_X_CAL", Physics->DetNumberX[i]);
+    name   = "CATS"+CATS_LOCAL::itoa(Physics->DetNumberX[i])+"_QSUM_STRMAX_X_CAL";
     GetHisto(family,name) -> Fill(Physics->StripMaxX[i],Physics->QsumX[i]); 
-    name   = Form("CATS%d_QSUM_STRMAX_Y_CAL", Physics->DetNumberX[i]);
+    name   = "CATS"+CATS_LOCAL::itoa(Physics->DetNumberX[i])+"_QSUM_STRMAX_Y_CAL";
     GetHisto(family,name) -> Fill(Physics->StripMaxY[i],Physics->QsumY[i]); 
-    
   }
   // An histo of size fEventLoopSize is reset every fEventLoopSize to monitor the
   // Keep Track of how many event elapsed
-  
   if(Physics->StripMaxX.size()==fNumberOfCats){
     fEventLoopIndex++;
     family = "CATS/PHY/CTRL";
 
     for (unsigned int i = 0; i < Physics->StripMaxX.size(); ++i) {
       fEventLoopQSum[i]+=Physics->QsumX[i]/1000000.;
-      name = Form("CATS%d_QMEAN_TIME",i+1);
+      name = "CATS"+CATS_LOCAL::itoa(i+1)+"_QMEAN_TIME";
 
-      GetHisto(family,name) ->SetBinContent(fEventLoopIndex/fEventLoopStep,fEventLoopQSum[i]/fEventLoopStep);
+      GetHisto(family,name) ->SetBinContent(fEventLoopIndex/fEventLoopIndex,fEventLoopQSum[i]/fEventLoopIndex);
     }
   }
- 
+
   // Reset the mean every bin 
   if(fEventLoopIndex%fEventLoopStep>fEventLoopStep)
     for (unsigned int i = 0; i < fNumberOfCats; ++i)  
@@ -274,39 +279,60 @@ void TCATSSpectra::FillPhysicsSpectra(TCATSPhysics* Physics){
 
   // Restart histo
   if(fEventLoopIndex > fEventLoopSize)
-      fEventLoopIndex = 0 ;
+    fEventLoopIndex = 0 ;
 
- if(Physics->StripMaxX.size()==fNumberOfCats){
-    for (unsigned int i = 0; i < Physics->StripMaxX.size(); ++i) {
-      family = "CATS/PHY/POS";
-      name = Form("CATS%d_POS", i+1);
-      GetHisto(family,name) -> Fill(Physics->PositionX[i],Physics->PositionY[i]);
-    }
+  for (unsigned int i = 0; i < Physics->PositionX.size(); ++i) {
+    family = "CATS/PHY/POS";
+    name = "CATS"+CATS_LOCAL::itoa(Physics->DetMaxX[i])+"_POS";
+    GetHisto(family,name) -> Fill(Physics->PositionX[i],Physics->PositionY[i]);
 
-    if(Physics->PositionOnTargetX > -1000 && Physics->PositionOnTargetY > -1000){
-      name = "TARGET_POS";
-      GetHisto(family,name)->Fill(Physics->PositionOnTargetX,Physics->PositionOnTargetY);
-    }
+    name = "CATS_STRIP_"+CATS_LOCAL::itoa(Physics->DetMaxX[i])+"_POS";
+    GetHisto(family,name) -> Fill(Physics->StripNumberX[i],Physics->StripNumberY[i]);
   }
 
-/*name = "TARGET_POS";
-  AddHisto2D(name, name,100,-50,50,100,-50,50,family); 
+  if(Physics->PositionOnTargetX > -1000 && Physics->PositionOnTargetY > -1000){
+    name = "TARGET_POS";
+    GetHisto(family,name)->Fill(Physics->PositionOnTargetX,Physics->PositionOnTargetY);
 
-  name = "TRAJECTORY_XZ";
-  AddHisto2D(name, name,100,-50,50,100,-50,50,family); 
 
-  name = "TRAJECTORY_YZ";
-  AddHisto2D(name, name,100,-50,50,100,-50,50,family); 
-*/
+    name = "TRAJECTORY_XZ";
+    TH2F* histo1  = (TH2F*) GetHisto(family,name);
+
+    name = "TRAJECTORY_YZ";
+    TH2F* histo2  = (TH2F*) GetHisto(family,name);
 
+
+    for(int i = 0 ; i < histo1->GetNbinsX() ; i++){ 
+      double z = histo1->GetXaxis()->GetBinCenter(i);
+      double PositionOnTargetX;
+      double PositionOnTargetY;
+      double PositionZ0 = Physics->PositionZ[0];
+      double PositionZ1 = Physics->PositionZ[1];
+      if(Physics->DetMaxX[0]<Physics->DetMaxX[2]){
+        double t = -(PositionZ1-z)/(PositionZ1-PositionZ0);
+        PositionOnTargetX= Physics->PositionX[1] + (Physics->PositionX[1]-Physics->PositionX[0])*t;
+        PositionOnTargetY= Physics->PositionY[1] + (Physics->PositionY[1]-Physics->PositionY[0])*t; 
+      }
+
+      else{
+        double t = -(PositionZ0-z)/(PositionZ0-PositionZ1);
+        PositionOnTargetX= Physics->PositionX[0] + (Physics->PositionX[0]-Physics->PositionX[1])*t;
+        PositionOnTargetY= Physics->PositionY[0] + (Physics->PositionY[0]-Physics->PositionY[1])*t; 
+      }
+
+      histo1->Fill(z,PositionOnTargetX);
+      histo2->Fill(z,PositionOnTargetY);
+    }
+  }
 }
 
+
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TCATSSpectra::AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family){
+TH1* TCATSSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
   // create histo
-  TH1 *hist = new TH1D(name, title, nbinsx, xlow, xup);
+  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
 
-  vector<TString> index;
+  vector<string> index;
   index.push_back(family);
   index.push_back(name);
 
@@ -317,11 +343,11 @@ TH1* TCATSSpectra::AddHisto1D(TString name, TString title, Int_t nbinsx, Double_
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TCATSSpectra::AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, TString family){
+TH1* TCATSSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
   // create histo
-  TH1 *hist = new TH2D(name, title, nbinsx, xlow, xup, nbinsy, ylow, yup);
+  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
 
-  vector<TString> index;
+  vector<string> index;
   index.push_back(family);
   index.push_back(name);
 
@@ -332,23 +358,34 @@ TH1* TCATSSpectra::AddHisto2D(TString name, TString title, Int_t nbinsx, Double_
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TCATSSpectra::GetHisto(TString family, TString name){
-  vector<TString> index;
+TH1* TCATSSpectra::GetHisto(string& family, string& name){
+  vector<string> index;
+  index.reserve(2);
   index.push_back(family);
   index.push_back(name);
+  TH1* histo ; 
+
+  try{
+    histo = fMapHisto.at(index); 
+  }
+
+  catch(const std::out_of_range& oor){
+    cout << "ERROR : the folowing Histo has been requested by TCATSSpectra and does not exist: family:" << family << " name: "  << name << endl ;
+    exit(1);
+  }
 
-  return fMapHisto.at(index);
+  return histo;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void TCATSSpectra::WriteHisto(TString filename){
+void TCATSSpectra::WriteHisto(string filename){
   TFile* f = NULL; 
 
   if (filename != "VOID") {
-    f = new TFile(filename,"RECREATE");
+    f = new TFile(filename.c_str(),"RECREATE");
   }
 
-  map< vector<TString>, TH1* >::iterator it;
+  map< vector<string>, TH1* >::iterator it;
   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
     it->second->Write();
   }
diff --git a/NPLib/CATS/TCATSSpectra.h b/NPLib/CATS/TCATSSpectra.h
index dc8cbc9f32e891dc7af44449faeb4769be92f59e..975848f1b6c7db04a72e764a1e4cbbd4bf45ebab 100644
--- a/NPLib/CATS/TCATSSpectra.h
+++ b/NPLib/CATS/TCATSSpectra.h
@@ -27,7 +27,6 @@
 #include "TObject.h"
 #include <TH1.h>
 #include <TH2.h>
-#include <TString.h>
 
 // NPLib headers
 #include "TCATSData.h"
@@ -51,9 +50,9 @@ class TCATSSpectra {
 
   private:
     // Instantiate and register histo to maps
-    TH1* AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family);
-    TH1* AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, 
-                                                 Int_t nbinsy, Double_t ylow, Double_t yup, TString family);
+    TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
+    TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
+                                                 Int_t nbinsy, Double_t ylow, Double_t yup, string family);
 
     // Initialization methods
     void InitRawSpectra();
@@ -68,9 +67,9 @@ class TCATSSpectra {
 
   public:
     // get map histo which will be used for GSpectra in GUser
-    map< vector<TString>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(TString family, TString name);    
-    void WriteHisto(TString filename = "VOID");      
+    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
+    TH1* GetHisto(string& family, string& name);    
+    void WriteHisto(string filename = "VOID");      
 
   private: // Information on MUST2
     unsigned int fNumberOfCats;
@@ -82,7 +81,7 @@ class TCATSSpectra {
 
   private:
 // map holding histo pointers and their family names
-map< vector<TString>, TH1* > fMapHisto;
+map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/Charissa/TCharissaPhysics.cxx b/NPLib/Charissa/TCharissaPhysics.cxx
index f31af52d57971f4dd0283aaa3f5d29d9fc2f26c3..12b2d23d7a79ceebe6cc81252436129209b01517 100755
--- a/NPLib/Charissa/TCharissaPhysics.cxx
+++ b/NPLib/Charissa/TCharissaPhysics.cxx
@@ -39,32 +39,32 @@ using namespace CHARISSA_LOCAL;
 ///////////////////////////////////////////////////////////////////////////
 
 ClassImp(TCharissaPhysics)
-///////////////////////////////////////////////////////////////////////////
-TCharissaPhysics::TCharissaPhysics(){
-	EventMultiplicity   = 0 ;
-	m_EventData         = new TCharissaData ;
-	m_PreTreatedData    = new TCharissaData ;
-	m_EventPhysics      = this ;
-	m_Spectra           = NULL;
-	m_NumberOfTelescope = 0 ;
-	m_MaximumStripMultiplicityAllowed = 10;
-	m_StripEnergyMatchingSigma = 0.020    ;
-	m_StripEnergyMatchingNumberOfSigma = 3;
-	// Raw Threshold
-	m_Si_X_E_RAW_Threshold = 0 ;
-	m_Si_Y_E_RAW_Threshold = 0 ;
-	m_CsI_E_RAW_Threshold  = 0 ;
-	// Calibrated Threshold
-	m_Si_X_E_Threshold = 0 ;
-	m_Si_Y_E_Threshold = 0 ;
-	m_CsI_E_Threshold  = 0;
-	m_NumberOfStrip = 16;
-
-	m_Take_E_Y=false;
-	m_Take_T_Y=true;
-  
+  ///////////////////////////////////////////////////////////////////////////
+  TCharissaPhysics::TCharissaPhysics(){
+    EventMultiplicity   = 0 ;
+    m_EventData         = new TCharissaData ;
+    m_PreTreatedData    = new TCharissaData ;
+    m_EventPhysics      = this ;
+    m_Spectra           = NULL;
+    m_NumberOfTelescope = 0 ;
+    m_MaximumStripMultiplicityAllowed = 100;
+    m_StripEnergyMatchingSigma = 0.1    ;
+    m_StripEnergyMatchingNumberOfSigma = 300;
+    // Raw Threshold
+    m_Si_X_E_RAW_Threshold = 1500 ;
+    m_Si_Y_E_RAW_Threshold = 1500 ;
+    m_CsI_E_RAW_Threshold  = 0 ;
+    // Calibrated Threshold
+    m_Si_X_E_Threshold = 0 ;
+    m_Si_Y_E_Threshold = 0 ;
+    m_CsI_E_Threshold  = 0;
+    m_NumberOfStrip = 16;
+
+    m_Take_E_Y=false;
+    m_Take_T_Y=true;
+
   }
-  
+
 
 
 ///////////////////////////////////////////////////////////////////////////
@@ -79,172 +79,255 @@ void TCharissaPhysics::BuildSimplePhysicalEvent(){
 ///////////////////////////////////////////////////////////////////////////
 
 void TCharissaPhysics::BuildPhysicalEvent(){
+  
   PreTreat();
-  bool check_CSI  = false ;
   
-	m_Layer1_StripXEMult = m_PreTreatedData->GetCharissaLayer1StripXEMult();
-	m_Layer1_StripYEMult = m_PreTreatedData->GetCharissaLayer1StripYEMult();
-	m_Layer1_StripXTMult = m_PreTreatedData->GetCharissaLayer1StripXTMult();
-	m_Layer1_StripYTMult = m_PreTreatedData->GetCharissaLayer1StripYTMult();
-	m_Layer2_StripXEMult = m_PreTreatedData->GetCharissaLayer2StripXEMult();
-	m_Layer2_StripYEMult = m_PreTreatedData->GetCharissaLayer2StripYEMult();
-	m_Layer2_StripXTMult = m_PreTreatedData->GetCharissaLayer2StripXTMult();
-	m_Layer2_StripYTMult = m_PreTreatedData->GetCharissaLayer2StripYTMult();
-	m_CsIEMult = m_PreTreatedData->GetCharissaCsIEMult();
-	m_CsITMult = m_PreTreatedData->GetCharissaCsITMult();
- 
-	// Layer 1
-  if( Layer1_CheckEvent() == 1 ){
-	  vector< TVector2 > Layer1_couple = Layer1_Match_X_Y() ;
-	  EventMultiplicity = Layer1_couple.size();
-    
-	  for(unsigned int i = 0 ; i < Layer1_couple.size() ; ++i){
-		  check_CSI = false ;
-      
-		  int Layer1_N = m_PreTreatedData->GetCharissaLayer1StripXEDetectorNbr(Layer1_couple[i].X()) ;
-      
-		  int Layer1_X = m_PreTreatedData->GetCharissaLayer1StripXEStripNbr(Layer1_couple[i].X()) ;
-		  int Layer1_Y = m_PreTreatedData->GetCharissaLayer1StripYEStripNbr(Layer1_couple[i].Y()) ;
-      
-		  double Layer1_Si_X_E = m_PreTreatedData->GetCharissaLayer1StripXEEnergy( Layer1_couple[i].X() ) ;
-		  double Layer1_Si_Y_E = m_PreTreatedData->GetCharissaLayer1StripYEEnergy( Layer1_couple[i].Y() ) ;
+  // Layer 1
+  vector< TVector2 > Layer1_couple = Layer1_Match_X_Y() ;
+  vector< TVector2 > Layer2_couple = Layer2_Match_X_Y() ;
+  
+  // Check out the different mult needed later on
+  m_Layer1_StripXEMult = m_PreTreatedData->GetCharissaLayer1StripXEMult();
+  m_Layer1_StripYEMult = m_PreTreatedData->GetCharissaLayer1StripYEMult();
+  m_Layer1_StripXTMult = m_PreTreatedData->GetCharissaLayer1StripXTMult();
+  m_Layer1_StripYTMult = m_PreTreatedData->GetCharissaLayer1StripYTMult();
+  m_Layer2_StripXEMult = m_PreTreatedData->GetCharissaLayer2StripXEMult();
+  m_Layer2_StripYEMult = m_PreTreatedData->GetCharissaLayer2StripYEMult();
+  m_Layer2_StripXTMult = m_PreTreatedData->GetCharissaLayer2StripXTMult();
+  m_Layer2_StripYTMult = m_PreTreatedData->GetCharissaLayer2StripYTMult();
+  m_CsIEMult = m_PreTreatedData->GetCharissaCsIEMult();
+  m_CsITMult = m_PreTreatedData->GetCharissaCsITMult();
+
+  // Case were Layer 1 has been fired
+  if(Layer1_couple.size()>0){
+
+    for(unsigned int i = 0 ; i < Layer1_couple.size() ; ++i){
+      int Layer1_N = m_PreTreatedData->GetCharissaLayer1StripXEDetectorNbr(Layer1_couple[i].X()) ;
+      int Layer1_X = m_PreTreatedData->GetCharissaLayer1StripXEStripNbr(Layer1_couple[i].X()) ;
+      int Layer1_Y = m_PreTreatedData->GetCharissaLayer1StripYEStripNbr(Layer1_couple[i].Y()) ;
       
-		  //  Search for associate Time
-		  double Layer1_Si_X_T = -1000 ;
+      double Layer1_Si_X_E = m_PreTreatedData->GetCharissaLayer1StripXEEnergy( Layer1_couple[i].X() ) ;
+      double Layer1_Si_Y_E = m_PreTreatedData->GetCharissaLayer1StripYEEnergy( Layer1_couple[i].Y() ) ;
+
+      //  Search for associate Time
+      double Layer1_Si_X_T = -1000 ;
+
+      for(unsigned int t = 0 ; t < m_Layer1_StripXTMult ; ++t ){
+        if(  m_PreTreatedData->GetCharissaLayer1StripXTStripNbr( Layer1_couple[i].X() ) == m_PreTreatedData->GetCharissaLayer1StripXTStripNbr(t)
+            ||m_PreTreatedData->GetCharissaLayer1StripXTDetectorNbr( Layer1_couple[i].X() ) == m_PreTreatedData->GetCharissaLayer1StripXTDetectorNbr(t))
+          Layer1_Si_X_T = m_PreTreatedData->GetCharissaLayer1StripXTTime(t);
+      }
+
+      double Layer1_Si_Y_T = -1000 ;
+
+      for(unsigned int t = 0 ; t < m_Layer1_StripYTMult ; ++t ){
+        if(  m_PreTreatedData->GetCharissaLayer1StripYTStripNbr( Layer1_couple[i].Y() ) == m_PreTreatedData->GetCharissaLayer1StripYTStripNbr(t)
+            ||m_PreTreatedData->GetCharissaLayer1StripYTDetectorNbr( Layer1_couple[i].Y() ) == m_PreTreatedData->GetCharissaLayer1StripYTDetectorNbr(t))
+          Layer1_Si_Y_T = m_PreTreatedData->GetCharissaLayer1StripYTTime(t);
+      }
+
+      Layer1_Si_X.push_back(Layer1_X) ; Layer1_Si_Y.push_back(Layer1_Y) ; TelescopeNumber.push_back(Layer1_N) ;
+
+      if(m_Take_E_Y) Layer1_Si_E.push_back(Layer1_Si_Y_E);
+      else           Layer1_Si_E.push_back(Layer1_Si_X_E);
+
+      if(m_Take_T_Y) Layer1_Si_T.push_back(Layer1_Si_Y_T);
+      else           Layer1_Si_T.push_back(Layer1_Si_X_T);
+
+      // Store the other value for checking purpose
+      Layer1_Si_EX.push_back(Layer1_Si_X_E);            
+      Layer1_Si_TX.push_back(Layer1_Si_X_T);            
+      Layer1_Si_EY.push_back(Layer1_Si_Y_E);            
+      Layer1_Si_TY.push_back(Layer1_Si_Y_T); 
+
+      // Look for associate layer 2 
+      double tLayer2_X = -1000;
+      double tLayer2_Y= -1000;
+      double tLayer2_Si_X_E= -1000;
+      double tLayer2_Si_Y_E= -1000;
+      double tLayer2_Si_X_T= -1000;
+      double tLayer2_Si_Y_T= -1000;
+//      double tLayer2_Si_E= -1000;
+//      double tLayer2_Si_T = -1000;
       
-		  for(unsigned int t = 0 ; t < m_Layer1_StripXTMult ; ++t )
-          {
-			  if(  m_PreTreatedData->GetCharissaLayer1StripXTStripNbr( Layer1_couple[i].X() ) == m_PreTreatedData->GetCharissaLayer1StripXTStripNbr(t)
-				 ||m_PreTreatedData->GetCharissaLayer1StripXTDetectorNbr( Layer1_couple[i].X() ) == m_PreTreatedData->GetCharissaLayer1StripXTDetectorNbr(t))
-				  Layer1_Si_X_T = m_PreTreatedData->GetCharissaLayer1StripXTTime(t);
+      for(unsigned int ll = 0 ; ll < Layer2_couple.size() ; ++ll){	
+        int Layer2_N = m_PreTreatedData->GetCharissaLayer2StripXEDetectorNbr(Layer2_couple[ll].X()) ;
+        // Same detector
+        // This requierement should maybe stronger (same strip number?)
+        if(Layer2_N==Layer1_N){
+          tLayer2_X = m_PreTreatedData->GetCharissaLayer2StripXEStripNbr(Layer2_couple[ll].X()) ;
+          tLayer2_Y = m_PreTreatedData->GetCharissaLayer2StripYEStripNbr(Layer2_couple[ll].Y()) ;
+
+          tLayer2_Si_X_E = m_PreTreatedData->GetCharissaLayer2StripXEEnergy( Layer2_couple[ll].X() ) ;
+          tLayer2_Si_Y_E = m_PreTreatedData->GetCharissaLayer2StripYEEnergy( Layer2_couple[ll].Y() ) ;
+
+          //  Search for associate Time
+          tLayer2_Si_X_T = -1000 ;
+
+          for(unsigned int t = 0 ; t < m_Layer2_StripXTMult ; ++t ){
+            if(  m_PreTreatedData->GetCharissaLayer2StripXTStripNbr( Layer2_couple[ll].X() ) == m_PreTreatedData->GetCharissaLayer2StripXTStripNbr(t)
+                ||m_PreTreatedData->GetCharissaLayer2StripXTDetectorNbr( Layer2_couple[ll].X() ) == m_PreTreatedData->GetCharissaLayer2StripXTDetectorNbr(t))
+              tLayer2_Si_X_T = m_PreTreatedData->GetCharissaLayer2StripXTTime(t);
           }
-      
-		  double Layer1_Si_Y_T = -1000 ;
-      
-		  for(unsigned int t = 0 ; t < m_Layer1_StripYTMult ; ++t )
-          {
-			  if(  m_PreTreatedData->GetCharissaLayer1StripYTStripNbr( Layer1_couple[i].Y() ) == m_PreTreatedData->GetCharissaLayer1StripYTStripNbr(t)
-				 ||m_PreTreatedData->GetCharissaLayer1StripYTDetectorNbr( Layer1_couple[i].Y() ) == m_PreTreatedData->GetCharissaLayer1StripYTDetectorNbr(t))
-				  Layer1_Si_Y_T = m_PreTreatedData->GetCharissaLayer1StripYTTime(t);
+
+          tLayer2_Si_Y_T = -1000 ;
+
+          for(unsigned int t = 0 ; t < m_Layer2_StripYTMult ; ++t ){
+            if(  m_PreTreatedData->GetCharissaLayer2StripYTStripNbr( Layer2_couple[ll].Y() ) == m_PreTreatedData->GetCharissaLayer2StripYTStripNbr(t)
+                ||m_PreTreatedData->GetCharissaLayer2StripYTDetectorNbr( Layer2_couple[ll].Y() ) == m_PreTreatedData->GetCharissaLayer2StripYTDetectorNbr(t))
+              tLayer2_Si_Y_T = m_PreTreatedData->GetCharissaLayer2StripYTTime(t);
           }
+        }
+      }
+
+      Layer2_Si_EX.push_back(tLayer2_Si_X_E);            
+      Layer2_Si_TX.push_back(tLayer2_Si_X_T);            
+      Layer2_Si_EY.push_back(tLayer2_Si_Y_E);            
+      Layer2_Si_TY.push_back(tLayer2_Si_Y_T); 
+      Layer2_Si_X.push_back(tLayer2_X) ; 
+      Layer2_Si_Y.push_back(tLayer2_Y) ; 
       
-		  Layer1_Si_X.push_back(Layer1_X) ; Layer1_Si_Y.push_back(Layer1_Y) ; Layer1_TelescopeNumber.push_back(Layer1_N) ;
-      
-		  if(m_Take_E_Y) Layer1_Si_E.push_back(Layer1_Si_Y_E);
-		  else           Layer1_Si_E.push_back(Layer1_Si_X_E);
+      if(m_Take_E_Y) Layer2_Si_E.push_back(tLayer2_Si_Y_E);
+      else           Layer2_Si_E.push_back(tLayer2_Si_X_E);
+
+      if(m_Take_T_Y) Layer2_Si_T.push_back(tLayer2_Si_Y_T);
+      else           Layer2_Si_T.push_back(tLayer2_Si_X_T);
+
+      double CsIE = -1000;
+      int CsIN = -1000;
       
-		  if(m_Take_T_Y) Layer1_Si_T.push_back(Layer1_Si_Y_T);
-		  else           Layer1_Si_T.push_back(Layer1_Si_X_T);
+      // Look for an associate CsI E
+      for(unsigned int t = 0 ; t < m_CsIEMult ; ++t ){
+        if(m_PreTreatedData->GetCharissaLayer1StripXEDetectorNbr( Layer1_couple[i].X() ) == m_PreTreatedData->GetCharissaCsIEDetectorNbr(t)){
+          CsIE = m_PreTreatedData->GetCharissaCsIEEnergy(t);
+          CsIN = m_PreTreatedData->GetCharissaCsIECristalNbr(t);
+        }
+      }
+      double CsIT = -1000;
+      // Look for an associate CsI T
+      for(unsigned int t = 0 ; t < m_CsITMult ; ++t ){
+          if(m_PreTreatedData->GetCharissaLayer1StripXEDetectorNbr( Layer1_couple[i].X() ) == m_PreTreatedData->GetCharissaCsITDetectorNbr(t))
+            CsIT = m_PreTreatedData->GetCharissaCsITTime(t);
+      }
       
-		  // Store the other value for checking purpose
-		  Layer1_Si_EX.push_back(Layer1_Si_X_E);            
-		  Layer1_Si_TX.push_back(Layer1_Si_X_T);            
-		  Layer1_Si_EY.push_back(Layer1_Si_Y_E);            
-		  Layer1_Si_TY.push_back(Layer1_Si_Y_T);  
-	  }
+      if(CsIE>-1000){
+        CsI_E.push_back(CsIE);
+        CsI_N.push_back(CsIN);
+        CsI_T.push_back(CsIT); 
+      }
+      else{
+        CsI_E.push_back(-1000);
+        CsI_N.push_back(-1000);
+        CsI_T.push_back(-1000); 
+      }
+    }
+
   }
 
-		
-	// Layer 2
-	if( Layer2_CheckEvent() == 1 ){
-		vector< TVector2 > Layer2_couple = Layer2_Match_X_Y() ;
-		EventMultiplicity = Layer2_couple.size();
-		
-		for(unsigned int i = 0 ; i < Layer2_couple.size() ; ++i){
-				
-			check_CSI = false ;
-				
-			int Layer2_N = m_PreTreatedData->GetCharissaLayer2StripXEDetectorNbr(Layer2_couple[i].X()) ;
-			int Layer2_X = m_PreTreatedData->GetCharissaLayer2StripXEStripNbr(Layer2_couple[i].X()) ;
-			int Layer2_Y = m_PreTreatedData->GetCharissaLayer2StripYEStripNbr(Layer2_couple[i].Y()) ;
-			
-			double Layer2_Si_X_E = m_PreTreatedData->GetCharissaLayer1StripXEEnergy( Layer2_couple[i].X() ) ;
-			double Layer2_Si_Y_E = m_PreTreatedData->GetCharissaLayer1StripYEEnergy( Layer2_couple[i].Y() ) ;
-				
-				//  Search for associate Time
-			double Layer2_Si_X_T = -1000 ;
-				
-			for(unsigned int t = 0 ; t < m_Layer2_StripXTMult ; ++t )
-			{
-				if(  m_PreTreatedData->GetCharissaLayer2StripXTStripNbr( Layer2_couple[i].X() ) == m_PreTreatedData->GetCharissaLayer2StripXTStripNbr(t)
-					||m_PreTreatedData->GetCharissaLayer2StripXTDetectorNbr( Layer2_couple[i].X() ) == m_PreTreatedData->GetCharissaLayer2StripXTDetectorNbr(t))
-					Layer2_Si_X_T = m_PreTreatedData->GetCharissaLayer2StripXTTime(t);
-			}
-				
-			double Layer2_Si_Y_T = -1000 ;
-				
-			for(unsigned int t = 0 ; t < m_Layer2_StripYTMult ; ++t )
-			{
-				if(  m_PreTreatedData->GetCharissaLayer2StripYTStripNbr( Layer2_couple[i].Y() ) == m_PreTreatedData->GetCharissaLayer2StripYTStripNbr(t)
-					||m_PreTreatedData->GetCharissaLayer2StripYTDetectorNbr( Layer2_couple[i].Y() ) == m_PreTreatedData->GetCharissaLayer2StripYTDetectorNbr(t))
-					Layer2_Si_Y_T = m_PreTreatedData->GetCharissaLayer2StripYTTime(t);
-			}
-				
-			Layer2_Si_X.push_back(Layer2_X) ; Layer2_Si_Y.push_back(Layer2_Y) ; Layer2_TelescopeNumber.push_back(Layer2_N) ;
-				
-			if(m_Take_E_Y) Layer2_Si_E.push_back(Layer2_Si_Y_E);
-			else           Layer2_Si_E.push_back(Layer2_Si_X_E);
-				
-			if(m_Take_T_Y) Layer2_Si_T.push_back(Layer2_Si_Y_T);
-			else           Layer2_Si_T.push_back(Layer2_Si_X_T);
-				
-				// Store the other value for checking purpose
-			Layer2_Si_EX.push_back(Layer2_Si_X_E);            
-			Layer2_Si_TX.push_back(Layer2_Si_X_T);            
-			Layer2_Si_EY.push_back(Layer2_Si_Y_E);            
-			Layer2_Si_TY.push_back(Layer2_Si_Y_T); 
-		
-			for(unsigned int j = 0 ; j < m_CsIEMult ; ++j){
-				if(m_PreTreatedData->GetCharissaCsIEDetectorNbr(j)==Layer2_N){
-					if(Match_Si_CsI( Layer2_X, Layer2_Y , m_PreTreatedData->GetCharissaCsIECristalNbr(j) ) ){
-						CsI_N.push_back( m_PreTreatedData->GetCharissaCsIECristalNbr(j) ) ;
-						CsI_E.push_back( m_PreTreatedData->GetCharissaCsIEEnergy(j) ) ;
-		
-						//   Look for associate Time
-						for(unsigned int k =0 ; k  < m_CsITMult ; ++k){
-							// Same Cristal; Same Detector
-							if(   m_PreTreatedData->GetCharissaCsIECristalNbr(j)==m_PreTreatedData->GetCharissaCsITCristalNbr(k)
-							   && m_PreTreatedData->GetCharissaCsIEDetectorNbr(j)==m_PreTreatedData->GetCharissaCsITDetectorNbr(k) )
-								CsI_T.push_back( m_PreTreatedData->GetCharissaCsITTime(j) ) ; break ;
-						}
-						check_CSI = true ;
-					}
-				}
-			}
+  // Case were Layer 1 has not been fired (then layer2 take main role)
+  else if(Layer2_couple.size()>0){
+    for(unsigned int i = 0 ; i < Layer2_couple.size() ; ++i){
+      int Layer2_N = m_PreTreatedData->GetCharissaLayer2StripXEDetectorNbr(Layer2_couple[i].X()) ;
+      int Layer2_X = m_PreTreatedData->GetCharissaLayer2StripXEStripNbr(Layer2_couple[i].X()) ;
+      int Layer2_Y = m_PreTreatedData->GetCharissaLayer2StripYEStripNbr(Layer2_couple[i].Y()) ;
+
+      double Layer2_Si_X_E = m_PreTreatedData->GetCharissaLayer2StripXEEnergy( Layer2_couple[i].X() ) ;
+      double Layer2_Si_Y_E = m_PreTreatedData->GetCharissaLayer2StripYEEnergy( Layer2_couple[i].Y() ) ;
+
+      //  Search for associate Time
+      double Layer2_Si_X_T = -1000 ;
+
+      for(unsigned int t = 0 ; t < m_Layer2_StripXTMult ; ++t ){
+        if(  m_PreTreatedData->GetCharissaLayer2StripXTStripNbr( Layer2_couple[i].X() ) == m_PreTreatedData->GetCharissaLayer2StripXTStripNbr(t)
+            ||m_PreTreatedData->GetCharissaLayer2StripXTDetectorNbr( Layer2_couple[i].X() ) == m_PreTreatedData->GetCharissaLayer2StripXTDetectorNbr(t))
+          Layer2_Si_X_T = m_PreTreatedData->GetCharissaLayer2StripXTTime(t);
+      }
+
+      double Layer2_Si_Y_T = -1000 ;
+
+      for(unsigned int t = 0 ; t < m_Layer2_StripYTMult ; ++t ){
+        if(  m_PreTreatedData->GetCharissaLayer2StripYTStripNbr( Layer2_couple[i].Y() ) == m_PreTreatedData->GetCharissaLayer2StripYTStripNbr(t)
+            ||m_PreTreatedData->GetCharissaLayer2StripYTDetectorNbr( Layer2_couple[i].Y() ) == m_PreTreatedData->GetCharissaLayer2StripYTDetectorNbr(t))
+          Layer2_Si_Y_T = m_PreTreatedData->GetCharissaLayer2StripYTTime(t);
+      }
+
+      Layer2_Si_X.push_back(Layer2_X) ; Layer2_Si_Y.push_back(Layer2_Y) ; TelescopeNumber.push_back(Layer2_N) ;
+
+      if(m_Take_E_Y) Layer2_Si_E.push_back(Layer2_Si_Y_E);
+      else           Layer2_Si_E.push_back(Layer2_Si_X_E);
+
+      if(m_Take_T_Y) Layer2_Si_T.push_back(Layer2_Si_Y_T);
+      else           Layer2_Si_T.push_back(Layer2_Si_X_T);
+
+      // Store the other value for checking purpose
+      Layer2_Si_EX.push_back(Layer2_Si_X_E);            
+      Layer2_Si_TX.push_back(Layer2_Si_X_T);            
+      Layer2_Si_EY.push_back(Layer2_Si_Y_E);            
+      Layer2_Si_TY.push_back(Layer2_Si_Y_T); 
+
+      double CsIE = -1000;
+      int CsIN = -1000;
+      // Look for an associate CsI E
+      for(unsigned int t = 0 ; t < m_CsIEMult ; ++t ){
+        if(m_PreTreatedData->GetCharissaLayer2StripXEDetectorNbr( Layer2_couple[i].X() ) == m_PreTreatedData->GetCharissaCsIEDetectorNbr(t)){
+          CsIE = m_PreTreatedData->GetCharissaCsIEEnergy(t);
+          CsIN = m_PreTreatedData->GetCharissaCsIECristalNbr(t);
+        }
+      }
+
+
+      double CsIT = -1000;
+      // Look for an associate CsI T
+      for(unsigned int t = 0 ; t < m_CsITMult ; ++t ){
+          if(m_PreTreatedData->GetCharissaLayer2StripXEDetectorNbr( Layer2_couple[i].X() ) == m_PreTreatedData->GetCharissaCsITDetectorNbr(t))
+            CsIT = m_PreTreatedData->GetCharissaCsITTime(t);
+      }
       
-			if(!check_CSI){
-				CsI_N.push_back(0)       ;
-				CsI_E.push_back(-1000)   ;
-				CsI_T.push_back(-1000)   ;
-			}
-		}
-	}
 
-	 
+      if(CsIE>-1000){
+        CsI_E.push_back(CsIE);
+        CsI_N.push_back(CsIN);
+        CsI_T.push_back(CsIT); 
+      }
+      else{
+        CsI_E.push_back(-1000);
+        CsI_N.push_back(-1000);
+        CsI_T.push_back(-1000); 
+      }
 
+      Layer1_Si_EX.push_back(-1000);            
+      Layer1_Si_TX.push_back(-1000);            
+      Layer1_Si_EY.push_back(-1000);            
+      Layer1_Si_TY.push_back(-1000); 
+      Layer1_Si_X.push_back(-1000) ; 
+      Layer1_Si_Y.push_back(-1000) ; 
+      Layer1_Si_E.push_back(-1000);
+      Layer1_Si_T.push_back(-1000);
+    }
 
- 
+  }
+EventMultiplicity = Layer1_Si_E.size();
   return;
-  
+
 }
 
 ///////////////////////////////////////////////////////////////////////////
 void TCharissaPhysics::PreTreat(){
-	
-	ClearPreTreatedData();
-	m_Layer1_StripXEMult = m_EventData->GetCharissaLayer1StripXEMult();
-	m_Layer1_StripYEMult = m_EventData->GetCharissaLayer1StripYEMult();
-	m_Layer1_StripXTMult = m_EventData->GetCharissaLayer1StripXTMult();
-	m_Layer1_StripYTMult = m_EventData->GetCharissaLayer1StripYTMult();
-
-	m_Layer2_StripXEMult = m_EventData->GetCharissaLayer2StripXEMult();
-	m_Layer2_StripYEMult = m_EventData->GetCharissaLayer2StripYEMult();
-	m_Layer2_StripXTMult = m_EventData->GetCharissaLayer2StripXTMult();
-	m_Layer2_StripYTMult = m_EventData->GetCharissaLayer2StripYTMult();
-	
-	m_CsIEMult = m_EventData->GetCharissaCsIEMult();
-	m_CsITMult = m_EventData->GetCharissaCsITMult();
-  
+
+  ClearPreTreatedData();
+  m_Layer1_StripXEMult = m_EventData->GetCharissaLayer1StripXEMult();
+  m_Layer1_StripYEMult = m_EventData->GetCharissaLayer1StripYEMult();
+  m_Layer1_StripXTMult = m_EventData->GetCharissaLayer1StripXTMult();
+  m_Layer1_StripYTMult = m_EventData->GetCharissaLayer1StripYTMult();
+
+  m_Layer2_StripXEMult = m_EventData->GetCharissaLayer2StripXEMult();
+  m_Layer2_StripYEMult = m_EventData->GetCharissaLayer2StripYEMult();
+  m_Layer2_StripXTMult = m_EventData->GetCharissaLayer2StripXTMult();
+  m_Layer2_StripYTMult = m_EventData->GetCharissaLayer2StripYTMult();
+
+  m_CsIEMult = m_EventData->GetCharissaCsIEMult();
+  m_CsITMult = m_EventData->GetCharissaCsITMult();
+
   //   X Layer1
   //   E
   for(unsigned int i = 0 ; i < m_Layer1_StripXEMult ; ++i){
@@ -257,7 +340,7 @@ void TCharissaPhysics::PreTreat(){
       }
     }
   }
-  
+
   //   T
   for(unsigned int i = 0 ; i < m_Layer1_StripXTMult ; ++i){
     if(IsValidChannel("X", m_EventData->GetCharissaLayer1StripXTDetectorNbr(i), m_EventData->GetCharissaLayer1StripXTStripNbr(i))){
@@ -266,7 +349,7 @@ void TCharissaPhysics::PreTreat(){
       m_PreTreatedData->SetCharissaLayer1StripXTTime( fDE_X_T(m_EventData , i) );
     }
   }
-  
+
   //   Y  Layer1
   //   E
   for(unsigned int i = 0 ; i < m_Layer1_StripYEMult ; ++i){
@@ -280,62 +363,62 @@ void TCharissaPhysics::PreTreat(){
     }
   }
 
-	//   T
-	for(unsigned int i = 0 ; i < m_Layer1_StripYTMult ; ++i){
-		if(IsValidChannel("Y", m_EventData->GetCharissaLayer1StripYTDetectorNbr(i), m_EventData->GetCharissaLayer1StripYTStripNbr(i))){
-			m_PreTreatedData->SetCharissaLayer1StripYTDetectorNbr( m_EventData->GetCharissaLayer1StripYTDetectorNbr(i) );
-			m_PreTreatedData->SetCharissaLayer1StripYTStripNbr( m_EventData->GetCharissaLayer1StripYTStripNbr(i) );
-			m_PreTreatedData->SetCharissaLayer1StripYTTime( fDE_Y_T(m_EventData , i) );
-		}
-	}
-	
-
-	//   X Layer2
-	//   E
-	for(unsigned int i = 0 ; i < m_Layer2_StripXEMult ; ++i){
+  //   T
+  for(unsigned int i = 0 ; i < m_Layer1_StripYTMult ; ++i){
+    if(IsValidChannel("Y", m_EventData->GetCharissaLayer1StripYTDetectorNbr(i), m_EventData->GetCharissaLayer1StripYTStripNbr(i))){
+      m_PreTreatedData->SetCharissaLayer1StripYTDetectorNbr( m_EventData->GetCharissaLayer1StripYTDetectorNbr(i) );
+      m_PreTreatedData->SetCharissaLayer1StripYTStripNbr( m_EventData->GetCharissaLayer1StripYTStripNbr(i) );
+      m_PreTreatedData->SetCharissaLayer1StripYTTime( fDE_Y_T(m_EventData , i) );
+    }
+  }
+
+
+  //   X Layer2
+  //   E
+  for(unsigned int i = 0 ; i < m_Layer2_StripXEMult ; ++i){
     if( m_EventData->GetCharissaLayer2StripXEEnergy(i)>m_Si_X_E_RAW_Threshold){
-			double Layer2_EX = fE_X_E(m_EventData , i);
+      double Layer2_EX = fE_X_E(m_EventData , i);
       if( Layer2_EX > m_Si_X_E_Threshold ){
-        
-				m_PreTreatedData->SetCharissaLayer2StripXEDetectorNbr( m_EventData->GetCharissaLayer2StripXEDetectorNbr(i) );
-				m_PreTreatedData->SetCharissaLayer2StripXEStripNbr( m_EventData->GetCharissaLayer2StripXEStripNbr(i) );
-				m_PreTreatedData->SetCharissaLayer2StripXEEnergy( Layer2_EX );
-			}
-		}
-	}
-	
-
-	//   T
-	for(unsigned int i = 0 ; i < m_Layer2_StripXTMult ; ++i){
-		if(IsValidChannel("X", m_EventData->GetCharissaLayer2StripXTDetectorNbr(i), m_EventData->GetCharissaLayer2StripXTStripNbr(i))){
-			m_PreTreatedData->SetCharissaLayer2StripXTDetectorNbr( m_EventData->GetCharissaLayer2StripXTDetectorNbr(i) );
-			m_PreTreatedData->SetCharissaLayer2StripXTStripNbr( m_EventData->GetCharissaLayer2StripXTStripNbr(i) );
-			m_PreTreatedData->SetCharissaLayer2StripXTTime( fE_X_T(m_EventData , i) );
-		}
-	}
-	
-	//   Y  Layer2
-	//   E
-	for(unsigned int i = 0 ; i < m_Layer2_StripYEMult ; ++i){
-		if( m_EventData->GetCharissaLayer2StripYEEnergy(i)>m_Si_Y_E_RAW_Threshold){
-			double Layer2_EY = fE_Y_E(m_EventData , i);
-			if( Layer2_EY >m_Si_Y_E_Threshold ){
-				m_PreTreatedData->SetCharissaLayer2StripYEDetectorNbr( m_EventData->GetCharissaLayer2StripYEDetectorNbr(i) );
-				m_PreTreatedData->SetCharissaLayer2StripYEStripNbr( m_EventData->GetCharissaLayer2StripYEStripNbr(i) );
-				m_PreTreatedData->SetCharissaLayer2StripYEEnergy( Layer2_EY );
-			}
-		}
-	}
-	
+
+        m_PreTreatedData->SetCharissaLayer2StripXEDetectorNbr( m_EventData->GetCharissaLayer2StripXEDetectorNbr(i) );
+        m_PreTreatedData->SetCharissaLayer2StripXEStripNbr( m_EventData->GetCharissaLayer2StripXEStripNbr(i) );
+        m_PreTreatedData->SetCharissaLayer2StripXEEnergy( Layer2_EX );
+      }
+    }
+  }
+
+
   //   T
-	for(unsigned int i = 0 ; i < m_Layer2_StripYTMult ; ++i){
-		if( IsValidChannel("Y", m_EventData->GetCharissaLayer2StripYTDetectorNbr(i), m_EventData->GetCharissaLayer1StripYTStripNbr(i))){
-				m_PreTreatedData->SetCharissaLayer2StripYTDetectorNbr( m_EventData->GetCharissaLayer2StripYTDetectorNbr(i) );
-				m_PreTreatedData->SetCharissaLayer2StripYTStripNbr( m_EventData->GetCharissaLayer2StripYTStripNbr(i) );
-				m_PreTreatedData->SetCharissaLayer2StripYTTime( fE_Y_T(m_EventData,i) );
-		}
-	}
-	
+  for(unsigned int i = 0 ; i < m_Layer2_StripXTMult ; ++i){
+    if(IsValidChannel("X", m_EventData->GetCharissaLayer2StripXTDetectorNbr(i), m_EventData->GetCharissaLayer2StripXTStripNbr(i))){
+      m_PreTreatedData->SetCharissaLayer2StripXTDetectorNbr( m_EventData->GetCharissaLayer2StripXTDetectorNbr(i) );
+      m_PreTreatedData->SetCharissaLayer2StripXTStripNbr( m_EventData->GetCharissaLayer2StripXTStripNbr(i) );
+      m_PreTreatedData->SetCharissaLayer2StripXTTime( fE_X_T(m_EventData , i) );
+    }
+  }
+
+  //   Y  Layer2
+  //   E
+  for(unsigned int i = 0 ; i < m_Layer2_StripYEMult ; ++i){
+    if( m_EventData->GetCharissaLayer2StripYEEnergy(i)>m_Si_Y_E_RAW_Threshold){
+      double Layer2_EY = fE_Y_E(m_EventData , i);
+      if( Layer2_EY >m_Si_Y_E_Threshold ){
+        m_PreTreatedData->SetCharissaLayer2StripYEDetectorNbr( m_EventData->GetCharissaLayer2StripYEDetectorNbr(i) );
+        m_PreTreatedData->SetCharissaLayer2StripYEStripNbr( m_EventData->GetCharissaLayer2StripYEStripNbr(i) );
+        m_PreTreatedData->SetCharissaLayer2StripYEEnergy( Layer2_EY );
+      }
+    }
+  }
+
+  //   T
+  for(unsigned int i = 0 ; i < m_Layer2_StripYTMult ; ++i){
+    if( IsValidChannel("Y", m_EventData->GetCharissaLayer2StripYTDetectorNbr(i), m_EventData->GetCharissaLayer1StripYTStripNbr(i))){
+      m_PreTreatedData->SetCharissaLayer2StripYTDetectorNbr( m_EventData->GetCharissaLayer2StripYTDetectorNbr(i) );
+      m_PreTreatedData->SetCharissaLayer2StripYTStripNbr( m_EventData->GetCharissaLayer2StripYTStripNbr(i) );
+      m_PreTreatedData->SetCharissaLayer2StripYTTime( fE_Y_T(m_EventData,i) );
+    }
+  }
+
   //   CsI
   //   E
   for(unsigned int i = 0 ; i < m_CsIEMult ; ++i){
@@ -348,7 +431,7 @@ void TCharissaPhysics::PreTreat(){
       }
     }
   }
-  
+
   //   T
   for(unsigned int i = 0 ; i < m_CsITMult ; ++i){
     if(IsValidChannel("CsI", m_EventData->GetCharissaCsITDetectorNbr(i), m_EventData->GetCharissaCsITCristalNbr(i))){
@@ -357,37 +440,20 @@ void TCharissaPhysics::PreTreat(){
       m_PreTreatedData->SetCharissaCsITTime( fCsI_T(m_EventData , i) );
     }
   }
-  
+
   return;
 }
 
 
 ///////////////////////////////////////////////////////////////////////////
 int TCharissaPhysics :: Layer1_CheckEvent(){
-  // Check the size of the different elements
-  if(         m_PreTreatedData->GetCharissaLayer1StripXEMult() == m_PreTreatedData->GetCharissaLayer1StripYEMult() /*&& m_PreTreatedData->GetCharissaLayer1StripYEMult() == m_PreTreatedData->GetCharissaLayer1StripXTMult() &&  m_PreTreatedData->GetCharissaLayer1StripXTMult() == m_PreTreatedData->GetCharissaLayer1StripYTMult()*/  )
-    return 1 ; // Regular Event
-  
-  else if(         m_PreTreatedData->GetCharissaLayer1StripXEMult() == m_PreTreatedData->GetCharissaLayer1StripYEMult()+1 || m_PreTreatedData->GetCharissaLayer1StripXEMult() == m_PreTreatedData->GetCharissaLayer1StripYEMult()-1  )
-    return 2 ; // Pseudo Event, potentially interstrip
-  
-  else
-    return -1 ; // Rejected Event
-  
+  return 1;
 }
 
 ///////////////////////////////////////////////////////////////////////////
 int TCharissaPhysics :: Layer2_CheckEvent(){
-	// Check the size of the different elements
-	if(         m_PreTreatedData->GetCharissaLayer2StripXEMult() == m_PreTreatedData->GetCharissaLayer2StripYEMult() /*&& m_PreTreatedData->GetCharissaLayer1StripYEMult() == m_PreTreatedData->GetCharissaLayer1StripXTMult() &&  m_PreTreatedData->GetCharissaLayer1StripXTMult() == m_PreTreatedData->GetCharissaLayer1StripYTMult()*/  )
-		return 1 ; // Regular Event
-	
-	else if(         m_PreTreatedData->GetCharissaLayer2StripXEMult() == m_PreTreatedData->GetCharissaLayer2StripYEMult()+1 || m_PreTreatedData->GetCharissaLayer2StripXEMult() == m_PreTreatedData->GetCharissaLayer2StripYEMult()-1  )
-		return 2 ; // Pseudo Event, potentially interstrip
-	
-	else
-		return -1 ; // Rejected Event
-	
+  return 1 ; 
+
 }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -399,88 +465,56 @@ bool TCharissaPhysics :: ResolvePseudoEvent(){
 vector < TVector2 > TCharissaPhysics :: Layer1_Match_X_Y(){
   vector < TVector2 > ArrayOfGoodCouple ;
   m_Layer1_StripXEMult = m_PreTreatedData->GetCharissaLayer1StripXEMult();
-  m_Layer1_StripYEMult = m_PreTreatedData->GetCharissaLayer1StripXEMult();
-  
+  m_Layer1_StripYEMult = m_PreTreatedData->GetCharissaLayer1StripYEMult();
+
   // Prevent code from treating very high multiplicity Event
   // Those event are not physical anyway and that improve speed.
   if( m_Layer1_StripXEMult > m_MaximumStripMultiplicityAllowed || m_Layer1_StripYEMult > m_MaximumStripMultiplicityAllowed )
     return ArrayOfGoodCouple;
-  
+
   for(unsigned int i = 0 ; i < m_Layer1_StripXEMult ; ++i){
-    for(unsigned int j = 0 ; j < m_Layer1_StripYEMult ; j++){
+    for(unsigned int j = 0 ; j < m_Layer1_StripYEMult ; ++j){
       //   if same detector check energy
       if ( m_PreTreatedData->GetCharissaLayer1StripXEDetectorNbr(i) == m_PreTreatedData->GetCharissaLayer1StripYEDetectorNbr(j) ){
         //   Look if energy match
-        if( abs( (m_PreTreatedData->GetCharissaLayer1StripXEEnergy(i)-m_PreTreatedData->GetCharissaLayer1StripYEEnergy(j))/2. ) < m_StripEnergyMatchingNumberOfSigma*m_StripEnergyMatchingSigma ){
-          // Special Option, if the event is between two CsI cristal, it is rejected.
-          if(m_Ignore_not_matching_CsI){
-            bool check_validity=false;
-            for (unsigned int hh = 0 ; hh<m_NumberOfStrip ; ++hh ){
-              if( Match_Si_CsI(m_PreTreatedData->GetCharissaLayer1StripXEStripNbr(i), m_PreTreatedData->GetCharissaLayer1StripYEStripNbr(j) , hh+1) )
-                check_validity=true;
-              }
-            
-            if(check_validity)
-              ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;
-          }
-          
-          
-          
-          // Regular case, keep the event
-          else ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;
-        }
+        if( abs( (m_PreTreatedData->GetCharissaLayer1StripXEEnergy(i)-m_PreTreatedData->GetCharissaLayer1StripYEEnergy(j))/2. ) < m_StripEnergyMatchingNumberOfSigma*m_StripEnergyMatchingSigma )
+          ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;
       }
     }
   }
-  
-  //   Prevent to treat event with ambiguous matchin beetween X and Y
+
+  //   Prevent to treat event with ambiguous matching beetween X and Y
   if( ArrayOfGoodCouple.size() > m_Layer1_StripXEMult ) ArrayOfGoodCouple.clear() ;
-  
+
   return ArrayOfGoodCouple;
 }
 
 ///////////////////////////////////////////////////////////////////////////
 vector < TVector2 > TCharissaPhysics :: Layer2_Match_X_Y(){
-	vector < TVector2 > ArrayOfGoodCouple ;
-	m_Layer2_StripXEMult = m_PreTreatedData->GetCharissaLayer2StripXEMult();
-	m_Layer2_StripYEMult = m_PreTreatedData->GetCharissaLayer2StripXEMult();
-	
-	// Prevent code from treating very high multiplicity Event
-	// Those event are not physical anyway and that improve speed.
-	if( m_Layer2_StripXEMult > m_MaximumStripMultiplicityAllowed || m_Layer2_StripYEMult > m_MaximumStripMultiplicityAllowed )
-		return ArrayOfGoodCouple;
-	
-	for(unsigned int i = 0 ; i < m_Layer2_StripXEMult ; ++i){
-		for(unsigned int j = 0 ; j < m_Layer2_StripYEMult ; j++){
-			//   if same detector check energy
-			if ( m_PreTreatedData->GetCharissaLayer2StripXEDetectorNbr(i) == m_PreTreatedData->GetCharissaLayer2StripYEDetectorNbr(j) ){
-				//   Look if energy match
-				if( abs( (m_PreTreatedData->GetCharissaLayer2StripXEEnergy(i)-m_PreTreatedData->GetCharissaLayer2StripYEEnergy(j))/2. ) < m_StripEnergyMatchingNumberOfSigma*m_StripEnergyMatchingSigma ){
-					// Special Option, if the event is between two CsI cristal, it is rejected.
-					if(m_Ignore_not_matching_CsI){
-						bool check_validity=false;
-						for (unsigned int hh = 0 ; hh<m_NumberOfStrip ; ++hh ){
-							if( Match_Si_CsI(m_PreTreatedData->GetCharissaLayer2StripXEStripNbr(i), m_PreTreatedData->GetCharissaLayer2StripYEStripNbr(j) , hh+1) )
-								check_validity=true;
-						}
-						
-						if(check_validity)
-							ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;
-					}
-					
-					
-					
-					// Regular case, keep the event
-					else ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;
-				}
-			}
-		}
-	}
-	
-	//   Prevent to treat event with ambiguous matchin beetween X and Y
-	if( ArrayOfGoodCouple.size() > m_Layer2_StripXEMult ) ArrayOfGoodCouple.clear() ;
-	
-	return ArrayOfGoodCouple;
+  vector < TVector2 > ArrayOfGoodCouple ;
+  m_Layer2_StripXEMult = m_PreTreatedData->GetCharissaLayer2StripXEMult();
+  m_Layer2_StripYEMult = m_PreTreatedData->GetCharissaLayer2StripYEMult();
+
+  // Prevent code from treating very high multiplicity Event
+  // Those event are not physical anyway and that improve speed.
+  if( m_Layer2_StripXEMult > m_MaximumStripMultiplicityAllowed || m_Layer2_StripYEMult > m_MaximumStripMultiplicityAllowed )
+    return ArrayOfGoodCouple;
+
+  for(unsigned int i = 0 ; i < m_Layer2_StripXEMult ; ++i){
+    for(unsigned int j = 0 ; j < m_Layer2_StripYEMult ; ++j){
+      //   if same detector check energy
+      if ( m_PreTreatedData->GetCharissaLayer2StripXEDetectorNbr(i) == m_PreTreatedData->GetCharissaLayer2StripYEDetectorNbr(j) ){
+        //   Look if energy match
+        if( abs( (m_PreTreatedData->GetCharissaLayer2StripXEEnergy(i)-m_PreTreatedData->GetCharissaLayer2StripYEEnergy(j))/2. ) < m_StripEnergyMatchingNumberOfSigma*m_StripEnergyMatchingSigma )
+          ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;
+      }
+    }
+  }
+
+  //   Prevent to treat event with ambiguous matching beetween X and Y
+  if( ArrayOfGoodCouple.size() > m_Layer2_StripXEMult ) ArrayOfGoodCouple.clear() ;
+
+  return ArrayOfGoodCouple;
 }
 
 
@@ -489,35 +523,35 @@ vector < TVector2 > TCharissaPhysics :: Layer2_Match_X_Y(){
 
 ////////////////////////////////////////////////////////////////////////////
 bool TCharissaPhysics :: IsValidChannel(const string DetectorType, const int telescope , const int channel){
- if(DetectorType == "CsI")
-   return *(m_CsIChannelStatus[telescope-1].begin()+channel-1);
-  
+  if(DetectorType == "CsI")
+    return *(m_CsIChannelStatus[telescope-1].begin()+channel-1);
+
   else if(DetectorType == "X")
     return *(m_XChannelStatus[telescope-1].begin()+channel-1);
-  
+
   else if(DetectorType == "Y")
     return *(m_YChannelStatus[telescope-1].begin()+channel-1);
-  
+
   else return false;
 }
 
 ///////////////////////////////////////////////////////////////////////////
 void TCharissaPhysics::ReadAnalysisConfig(){
   bool ReadingStatus = false;
-  
+
   // path to file
   string FileName = "./configs/ConfigCharissa.dat";
-  
+
   // open analysis config file
   ifstream AnalysisConfigFile;
   AnalysisConfigFile.open(FileName.c_str());
-  
+
   if (!AnalysisConfigFile.is_open()) {
     cout << " No ConfigCharissa.dat found: Default parameters loaded for Analysis " << FileName << endl;
     return;
   }
   cout << " Loading user parameters for Analysis from ConfigCharissa.dat " << endl;
-  
+
   // Save it in a TAsciiFile
   TAsciiFile* asciiConfig = RootOutput::getInstance()->GetAsciiFileAnalysisConfig();
   asciiConfig->AppendLine("%%% ConfigCharissaCHARISSA.dat %%%");
@@ -528,39 +562,39 @@ void TCharissaPhysics::ReadAnalysisConfig(){
   while (!AnalysisConfigFile.eof()) {
     // Pick-up next line
     getline(AnalysisConfigFile, LineBuffer);
-    
+
     // search for "header"
     if (LineBuffer.compare(0, 11, "ConfigCharissa") == 0) ReadingStatus = true;
-    
+
     // loop on tokens and data
     while (ReadingStatus ) {
-      
+
       whatToDo="";
       AnalysisConfigFile >> whatToDo;
-      
+
       // Search for comment symbol (%)
       if (whatToDo.compare(0, 1, "%") == 0) {
         AnalysisConfigFile.ignore(numeric_limits<streamsize>::max(), '\n' );
       }
-      
+
       else if (whatToDo=="MAX_STRIP_MULTIPLICITY") {
         AnalysisConfigFile >> DataBuffer;
         m_MaximumStripMultiplicityAllowed = atoi(DataBuffer.c_str() );
         cout << "MAXIMUN STRIP MULTIPLICITY " << m_MaximumStripMultiplicityAllowed << endl;
       }
-      
+
       else if (whatToDo=="STRIP_ENERGY_MATCHING_SIGMA") {
         AnalysisConfigFile >> DataBuffer;
         m_StripEnergyMatchingSigma = atof(DataBuffer.c_str() );
         cout << "STRIP ENERGY MATCHING SIGMA " << m_StripEnergyMatchingSigma <<endl;
       }
-      
+
       else if (whatToDo=="STRIP_ENERGY_MATCHING_NUMBER_OF_SIGMA") {
         AnalysisConfigFile >> DataBuffer;
         m_StripEnergyMatchingNumberOfSigma = atoi(DataBuffer.c_str() );
         cout << "STRIP ENERGY MATCHING NUMBER OF SIGMA " << m_StripEnergyMatchingNumberOfSigma << endl;
       }
-      
+
       else if (whatToDo== "DISABLE_ALL") {
         AnalysisConfigFile >> DataBuffer;
         cout << whatToDo << "  " << DataBuffer << endl;
@@ -572,7 +606,7 @@ void TCharissaPhysics::ReadAnalysisConfig(){
         ChannelStatus.resize(m_NumberOfStrip,false);
         m_CsIChannelStatus[telescope-1]  = ChannelStatus;
       }
-      
+
       else if (whatToDo == "DISABLE_CHANNEL") {
         AnalysisConfigFile >> DataBuffer;
         cout << whatToDo << "  " << DataBuffer << endl;
@@ -582,239 +616,130 @@ void TCharissaPhysics::ReadAnalysisConfig(){
           channel = atoi(DataBuffer.substr(7).c_str());
           *(m_XChannelStatus[telescope-1].begin()+channel-1) = false;
         }
-        
+
         else if (DataBuffer.compare(3,4,"STRY") == 0) {
           channel = atoi(DataBuffer.substr(7).c_str());
           *(m_YChannelStatus[telescope-1].begin()+channel-1) = false;
         }
-        
-        
+
+
         else if (DataBuffer.compare(3,3,"CSI") == 0) {
           channel = atoi(DataBuffer.substr(6).c_str());
           *(m_CsIChannelStatus[telescope-1].begin()+channel-1) = false;
         }
-        
+
         else cout << "Warning: detector type for CharissaCHARISSA unknown!" << endl;
-        
+
       }
-      
+
       else if (whatToDo=="TAKE_E_Y") {
         m_Take_E_Y = true;
         cout << whatToDo << endl;
       }
-      
+
       else if (whatToDo=="TAKE_T_Y") {
         m_Take_T_Y = true;
         cout << whatToDo << endl;
       }
-      
+
       else if (whatToDo=="TAKE_E_X") {
         m_Take_E_Y = false;
         cout << whatToDo << endl;
       }
-      
+
       else if (whatToDo=="TAKE_T_X") {
         m_Take_T_Y = false;
         cout << whatToDo << endl;
       }
-      
+
       else if (whatToDo== "IGNORE_NOT_MATCHING_CSI") {
         m_Ignore_not_matching_CsI = true;
         cout << whatToDo << endl;
       }
-      
+
       else if (whatToDo=="CSI_SIZE") {
         AnalysisConfigFile >> DataBuffer;
         m_CsI_Size = atoi(DataBuffer.c_str());
         cout << whatToDo << " " << m_CsI_Size << endl;
       }
-      
-      
+
+
       else if (whatToDo=="SI_X_E_RAW_THRESHOLD") {
         AnalysisConfigFile >> DataBuffer;
         m_Si_X_E_RAW_Threshold = atoi(DataBuffer.c_str());
         cout << whatToDo << " " << m_Si_X_E_RAW_Threshold << endl;
       }
-      
+
       else if (whatToDo=="SI_Y_E_RAW_THRESHOLD") {
         AnalysisConfigFile >> DataBuffer;
         m_Si_Y_E_RAW_Threshold = atoi(DataBuffer.c_str());
         cout << whatToDo << " " << m_Si_Y_E_RAW_Threshold << endl;
       }
-      
-		
+
+
       else if (whatToDo== "CSI_E_RAW_THRESHOLD") {
         AnalysisConfigFile >> DataBuffer;
         m_CsI_E_Threshold = atoi(DataBuffer.c_str());
         cout << whatToDo << " " << m_CsI_E_Threshold << endl;
       }
-      
+
       else if (whatToDo=="SI_X_E_THRESHOLD") {
         AnalysisConfigFile >> DataBuffer;
         m_Si_X_E_Threshold = atoi(DataBuffer.c_str());
         cout << whatToDo << " " << m_Si_X_E_Threshold << endl;
       }
-      
+
       else if (whatToDo== "SI_Y_E_THRESHOLD") {
         AnalysisConfigFile >> DataBuffer;
         m_Si_Y_E_Threshold = atoi(DataBuffer.c_str());
         cout << whatToDo << " " << m_Si_Y_E_Threshold << endl;
       }
-      
-      
+
+
       else if (whatToDo=="CSI_E_THRESHOLD") {
         AnalysisConfigFile >> DataBuffer;
         m_CsI_E_Threshold = atoi(DataBuffer.c_str());
         cout << whatToDo << " " << m_CsI_E_Threshold << endl;
       }
-      
+
       else {
         ReadingStatus = false;
       }
-      
+
     }
   }
 }
 
-
-
-
-///////////////////////////////////////////////////////////////////////////
-bool TCharissaPhysics :: Match_Si_CsI(int X, int Y , int CristalNbr){
-  
-  if( abs(m_CsI_MatchingX[CristalNbr-1] - X) < m_CsI_Size/2.&&
-     abs(m_CsI_MatchingY[CristalNbr-1] - Y) < m_CsI_Size/2.)
-    
-    return true ;
-  
-  else return false;
-  
-}
-
 ///////////////////////////////////////////////////////////////////////////
 void TCharissaPhysics::Clear(){
-	EventMultiplicity= 0 ;
-  
-	Layer1_TelescopeNumber.clear();
-	EventType.clear();
-	TotalEnergy.clear();
-  
-	// Si X
-	Layer1_Si_E.clear();
-	Layer1_Si_T.clear();
-	Layer1_Si_X.clear();
-	Layer1_Si_Y.clear();
-	Layer2_Si_E.clear();
-	Layer2_Si_T.clear();
-	Layer2_Si_X.clear();
-	Layer2_Si_Y.clear();
-	
-	
-	// CsI
-	CsI_E.clear();
-	CsI_T.clear();
-	CsI_N.clear();
-  
-	Layer1_Si_EX.clear();
-	Layer1_Si_TX.clear();
-	Layer1_Si_EY.clear();
-	Layer1_Si_TY.clear();
-	Layer1_TelescopeNumber_X.clear();
-	Layer1_TelescopeNumber_Y.clear();
-	Layer2_Si_EX.clear();
-	Layer2_Si_TX.clear();
-	Layer2_Si_EY.clear();
-	Layer2_Si_TY.clear();
-	Layer2_TelescopeNumber_X.clear();
-	Layer2_TelescopeNumber_Y.clear();
-}
-///////////////////////////////////////////////////////////////////////////
+  EventMultiplicity= 0 ;
+  TelescopeNumber.clear();
+  // Si X
+  Layer1_Si_E.clear();
+  Layer1_Si_T.clear();
+  Layer1_Si_X.clear();
+  Layer1_Si_Y.clear();
+  Layer2_Si_E.clear();
+  Layer2_Si_T.clear();
+  Layer2_Si_X.clear();
+  Layer2_Si_Y.clear();
 
-void TCharissaPhysics::ReadCalibrationRun(){
-  m_Layer1_StripXEMult = m_EventData->GetCharissaLayer1StripXEMult();
-  m_Layer1_StripYEMult = m_EventData->GetCharissaLayer1StripYEMult();
-  m_Layer1_StripXTMult = m_EventData->GetCharissaLayer1StripXTMult();
-  m_Layer1_StripYTMult = m_EventData->GetCharissaLayer1StripYTMult();
-	m_Layer2_StripXEMult = m_EventData->GetCharissaLayer2StripXEMult();
-	m_Layer2_StripYEMult = m_EventData->GetCharissaLayer2StripYEMult();
-	m_Layer2_StripXTMult = m_EventData->GetCharissaLayer2StripXTMult();
-	m_Layer2_StripYTMult = m_EventData->GetCharissaLayer2StripYTMult();
-  m_CsIEMult = m_EventData->GetCharissaCsIEMult();
-  m_CsITMult = m_EventData->GetCharissaCsITMult();
-  
-  //   X Layer 1
-  //   E
-  for(unsigned int i = 0 ; i < m_Layer1_StripXEMult;++i){
-    Layer1_TelescopeNumber_X.push_back(m_EventData->GetCharissaLayer1StripXEDetectorNbr(i));
-    Layer1_Si_EX.push_back( fDE_X_E( m_EventData , i) );
-    Layer1_Si_X.push_back(m_EventData->GetCharissaLayer1StripXEStripNbr(i));
-  }
-  //   T
-  for(unsigned int i = 0 ; i < m_Layer1_StripXTMult;++i){
-    Layer1_TelescopeNumber_X.push_back(m_EventData->GetCharissaLayer1StripXTDetectorNbr(i));
-    Layer1_Si_TX.push_back( fDE_X_T( m_EventData , i) );
-    Layer1_Si_X.push_back(m_EventData->GetCharissaLayer1StripXTStripNbr(i));
-  }
-  
-  //   Y Layer 1
-  //   E
-  for(unsigned int i = 0 ; i < m_Layer1_StripYEMult;++i){
-    Layer1_TelescopeNumber_Y.push_back(m_EventData->GetCharissaLayer1StripYEDetectorNbr(i));
-    Layer1_Si_EY.push_back( fDE_Y_E( m_EventData , i) );
-    Layer1_Si_Y.push_back(m_EventData->GetCharissaLayer1StripYEStripNbr(i));
-  }
-  
-  //   T
-  for(unsigned int i = 0 ; i < m_Layer1_StripYTMult;++i){
-        Layer1_TelescopeNumber_Y.push_back(m_EventData->GetCharissaLayer1StripYTDetectorNbr(i));
-        Layer1_Si_TY.push_back( fDE_Y_T( m_EventData , i) );
-        Layer1_Si_Y.push_back(m_EventData->GetCharissaLayer1StripYTStripNbr(i));
-  }
- 
-	
-	//   X Layer 2
-	//   E
-	for(unsigned int i = 0 ; i < m_Layer2_StripXEMult;++i){
-		Layer2_TelescopeNumber_X.push_back(m_EventData->GetCharissaLayer2StripXEDetectorNbr(i));
-		Layer2_Si_EX.push_back( fE_X_E( m_EventData , i) );
-		Layer2_Si_X.push_back(m_EventData->GetCharissaLayer2StripXEStripNbr(i));
-	}
-	//   T
-	for(unsigned int i = 0 ; i < m_Layer2_StripXTMult;++i){
-		Layer2_TelescopeNumber_X.push_back(m_EventData->GetCharissaLayer2StripXTDetectorNbr(i));
-		Layer2_Si_TX.push_back( fE_X_T( m_EventData , i) );
-		Layer2_Si_X.push_back(m_EventData->GetCharissaLayer2StripXTStripNbr(i));
-	}
-	
-	//   Y Layer 2
-	//   E
-	for(unsigned int i = 0 ; i < m_Layer2_StripYEMult;++i){
-		Layer2_TelescopeNumber_Y.push_back(m_EventData->GetCharissaLayer2StripYEDetectorNbr(i));
-		Layer2_Si_EY.push_back( fE_Y_E( m_EventData , i) );
-		Layer2_Si_Y.push_back(m_EventData->GetCharissaLayer2StripYEStripNbr(i));
-	}
-	
-	//   T
-	for(unsigned int i = 0 ; i < m_Layer2_StripYTMult;++i){
-        Layer2_TelescopeNumber_Y.push_back(m_EventData->GetCharissaLayer2StripYTDetectorNbr(i));
-        Layer2_Si_TY.push_back( fE_Y_T( m_EventData , i) );
-        Layer2_Si_Y.push_back(m_EventData->GetCharissaLayer2StripYTStripNbr(i));
-	}
-	
-	
-  //CsI Energy
-  for(unsigned int j = 0 ; j < m_CsIEMult ; ++j){
-        CsI_N.push_back(m_EventData->GetCharissaCsIECristalNbr(j)) ;
-        CsI_E.push_back(fCsI_E(m_EventData , j)) ;
-  }
-  
-  //CsI Time
-  for(unsigned int j = 0 ; j < m_CsITMult ; ++j){
-        CsI_T.push_back(fCsI_T(m_EventData , j)) ;
-  }
-  
+  // CsI
+  CsI_E.clear();
+  CsI_T.clear();
+  CsI_N.clear();
+
+  Layer1_Si_EX.clear();
+  Layer1_Si_TX.clear();
+  Layer1_Si_EY.clear();
+  Layer1_Si_TY.clear();
+  Layer2_Si_EX.clear();
+  Layer2_Si_TX.clear();
+  Layer2_Si_EY.clear();
+  Layer2_Si_TY.clear();
 }
 
+
 ////   Innherited from VDetector Class   ////
 
 ///////////////////////////////////////////////////////////////////////////
@@ -823,65 +748,65 @@ void TCharissaPhysics::ReadConfiguration(string Path){
   ConfigFile.open(Path.c_str())    ;
   string LineBuffer                ;
   string DataBuffer                ;
-  
+
   // A:X1_Y1     --> X:1    Y:1
   // B:X m_NumberOfStrip_Y1   --> X: m_NumberOfStrip  Y:1
   // C:X1_Y m_NumberOfStrip   --> X:1    Y: m_NumberOfStrip
   // D:X m_NumberOfStrip_Y m_NumberOfStrip --> X: m_NumberOfStrip  Y: m_NumberOfStrip
-  
+
   double Ax , Bx , Cx , Dx , Ay , By , Cy , Dy , Az , Bz , Cz , Dz;
   TVector3 A , B , C , D;
   double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0;
-  
+
   bool check_A = false ;
   bool check_C = false ;
   bool check_B = false ;
   bool check_D = false ;
-  
+
   bool check_Theta = false ;
   bool check_Phi   = false ;
   bool check_R     = false ;
   bool check_beta  = false ;
-  
+
   bool ReadingStatus = false ;
-  
-  
+
+
   while (!ConfigFile.eof())
-      {
-    
+  {
+
     getline(ConfigFile, LineBuffer);
-    
+
     //   If line is a Start Up CharissaCHARISSA bloc, Reading toggle to true
     if (LineBuffer.compare(0, 17, "CharissaTelescope")==0)
-        {
+    {
       cout << "///" << endl                 ;
       cout << "Telescope found: " << endl   ;
       ReadingStatus = true                ;
-      
-        }
-    
+
+    }
+
     //   Else don't toggle to Reading Block Status
     else ReadingStatus = false ;
-    
+
     //   Reading Block
     while(ReadingStatus)
-        {
-      
+    {
+
       ConfigFile >> DataBuffer ;
       //   Comment Line
       if(DataBuffer.compare(0, 1, "%") == 0) {
         ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );
-        
+
       }
-      
+
       //   Finding another telescope (safety), toggle out
       else if (DataBuffer=="CharissaTelescope") {
         cout << "WARNING: Another Telescope is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
         ReadingStatus = false ;
       }
-      
+
       //   Position method
-      
+
       else if (DataBuffer=="X1_Y1=") {
         check_A = true;
         ConfigFile >> DataBuffer ;
@@ -890,13 +815,13 @@ void TCharissaPhysics::ReadConfiguration(string Path){
         Ay = atof(DataBuffer.c_str()) ;
         ConfigFile >> DataBuffer ;
         Az = atof(DataBuffer.c_str()) ;
-        
+
         A = TVector3(Ax, Ay, Az);
         cout << "X1 Y1 corner position : (" << A.X() << ";" << A.Y() << ";" << A.Z() << ")" << endl;
-        
+
       }
-      
-      
+
+
       else if (DataBuffer=="X16_Y1=") {
         check_B = true;
         ConfigFile >> DataBuffer ;
@@ -905,13 +830,13 @@ void TCharissaPhysics::ReadConfiguration(string Path){
         By = atof(DataBuffer.c_str()) ;
         ConfigFile >> DataBuffer ;
         Bz = atof(DataBuffer.c_str()) ;
-        
+
         B = TVector3(Bx, By, Bz);
         cout << "X16 Y1 corner position : (" << B.X() << ";" << B.Y() << ";" << B.Z() << ")" << endl;
-        
+
       }
-      
-      
+
+
       else if (DataBuffer=="X1_Y16=") {
         check_C = true;
         ConfigFile >> DataBuffer ;
@@ -920,12 +845,12 @@ void TCharissaPhysics::ReadConfiguration(string Path){
         Cy = atof(DataBuffer.c_str()) ;
         ConfigFile >> DataBuffer ;
         Cz = atof(DataBuffer.c_str()) ;
-        
+
         C = TVector3(Cx, Cy, Cz);
         cout << "X1 Y16 corner position : (" << C.X() << ";" << C.Y() << ";" << C.Z() << ")" << endl;
-        
+
       }
-      
+
       else if (DataBuffer=="X16_Y16=") {
         check_D = true;
         ConfigFile >> DataBuffer ;
@@ -934,41 +859,41 @@ void TCharissaPhysics::ReadConfiguration(string Path){
         Dy = atof(DataBuffer.c_str()) ;
         ConfigFile >> DataBuffer ;
         Dz = atof(DataBuffer.c_str()) ;
-        
+
         D = TVector3(Dx, Dy, Dz);
         cout << "X16 Y16 corner position : (" << D.X() << ";" << D.Y() << ";" << D.Z() << ")" << endl;
-        
+
       }
-      
+
       //   End Position Method
-      
+
       //   Angle method
       else if (DataBuffer=="THETA=") {
         check_Theta = true;
         ConfigFile >> DataBuffer ;
         Theta = atof(DataBuffer.c_str()) ;
         cout << "Theta:  " << Theta << endl;
-        
+
       }
-      
+
       //Angle method
       else if (DataBuffer=="PHI=") {
         check_Phi = true;
         ConfigFile >> DataBuffer ;
         Phi = atof(DataBuffer.c_str()) ;
         cout << "Phi:  " << Phi << endl;
-        
+
       }
-      
+
       //Angle method
       else if (DataBuffer=="R=") {
         check_R = true;
         ConfigFile >> DataBuffer ;
         R = atof(DataBuffer.c_str()) ;
         cout << "R:  " << R << endl;
-        
+
       }
-      
+
       //Angle method
       else if (DataBuffer=="BETA=") {
         check_beta = true;
@@ -979,64 +904,65 @@ void TCharissaPhysics::ReadConfiguration(string Path){
         ConfigFile >> DataBuffer ;
         beta_w = atof(DataBuffer.c_str()) ;
         cout << "Beta:  " << beta_u << " " << beta_v << " " << beta_w << endl  ;
-        
+
       }
-      
+
       /////////////////////////////////////////////////
       //   If All necessary information there, toggle out
       if ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R && check_beta)  )
-          {
-            ReadingStatus = false;
-        
-            ///Add The previously define telescope
-            //With position method
-            if ( check_A && check_B && check_C && check_D )
-                {
-              AddTelescope(  A,
-                           B,
-                           C,
-                           D) ;
-                }
-        
-            //with angle method
-            else if ( check_Theta && check_Phi && check_R && check_beta )
-                {
-              AddTelescope(  Theta,
-                           Phi,
-                           R,
-                           beta_u,
-                           beta_v,
-                           beta_w);
-                }
-        
-            check_A = false ;
-            check_B = false ;
-            check_C = false ;
-            check_D = false ;
-        
-            check_Theta = false ;
-            check_Phi  = false ;
-            check_R    = false ;
-            check_beta = false ;
-          }
+      {
+        ReadingStatus = false;
+
+        ///Add The previously define telescope
+        //With position method
+        if ( check_A && check_B && check_C && check_D )
+        {
+          AddTelescope(  A,
+              B,
+              C,
+              D) ;
         }
+
+        //with angle method
+        else if ( check_Theta && check_Phi && check_R && check_beta )
+        {
+          AddTelescope(  Theta,
+              Phi,
+              R,
+              beta_u,
+              beta_v,
+              beta_w);
+        }
+
+        check_A = false ;
+        check_B = false ;
+        check_C = false ;
+        check_D = false ;
+
+        check_Theta = false ;
+        check_Phi  = false ;
+        check_R    = false ;
+        check_beta = false ;
       }
-  
+    }
+  }
+
   InitializeStandardParameter();
   ReadAnalysisConfig();
-  
+
   cout << endl << "/////////////////////////////" << endl << endl;
-  
+
 }
 ///////////////////////////////////////////////////////////////////////////
 void TCharissaPhysics::InitSpectra(){  
-   m_Spectra = new TCharissaSpectra(m_NumberOfTelescope);
+  m_Spectra = new TCharissaSpectra(m_NumberOfTelescope);
 }
 
 ///////////////////////////////////////////////////////////////////////////
 void TCharissaPhysics::FillSpectra(){  
-	m_Spectra -> FillRawSpectra(m_EventData);
-	m_Spectra -> FillPreTreatedSpectra(m_PreTreatedData);
+  m_Spectra -> FillRawSpectra(m_EventData);
+  m_Spectra -> FillPreTreatedSpectra(m_PreTreatedData);
+  m_Spectra->FillPhysicsSpectra(m_EventPhysics);
 }
 ///////////////////////////////////////////////////////////////////////////
 void TCharissaPhysics::CheckSpectra(){  
@@ -1047,35 +973,40 @@ void TCharissaPhysics::ClearSpectra(){
   // To be done
 }
 ///////////////////////////////////////////////////////////////////////////
-map< vector<TString> , TH1*> TCharissaPhysics::GetSpectra() {
-return m_Spectra->GetMapHisto();
+map< vector<string> , TH1*> TCharissaPhysics::GetSpectra() {
+  if(m_Spectra)
+    return m_Spectra->GetMapHisto();
+  else{
+    map< vector<string> , TH1*> empty;
+    return empty;
+  }
 } 
 ///////////////////////////////////////////////////////////////////////////
 void TCharissaPhysics::AddParameterToCalibrationManager()
 {
   CalibrationManager* Cal = CalibrationManager::getInstance();
-  
-  for(int i = 0 ; i < m_NumberOfTelescope ; ++i){
-    
-    for( int j = 0 ; j <  m_NumberOfStrip ; ++j){
+
+  for(unsigned int i = 0 ; i < m_NumberOfTelescope ; ++i){
+
+    for(unsigned int j = 0 ; j <  m_NumberOfStrip ; ++j){
       Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_DE_X"+itoa(j+1)+"_E","CHARISSA_T"+itoa(i+1)+"_DE_X"+itoa(j+1)+"_E")   ;
       Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_DE_Y"+itoa(j+1)+"_E","CHARISSA_T"+itoa(i+1)+"_DE_Y"+itoa(j+1)+"_E")   ;
       Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_DE_X"+itoa(j+1)+"_T","CHARISSA_T"+itoa(i+1)+"_DE_X"+itoa(j+1)+"_T")   ;
       Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_DE_Y"+itoa(j+1)+"_T","CHARISSA_T"+itoa(i+1)+"_DE_Y"+itoa(j+1)+"_T")   ;
-      
+
       Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_E_X"+itoa(j+1)+"_E","CHARISSA_T"+itoa(i+1)+"_E_X"+itoa(j+1)+"_E")   ;
       Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_E_Y"+itoa(j+1)+"_E","CHARISSA_T"+itoa(i+1)+"_E_Y"+itoa(j+1)+"_E")   ;
       Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_E_X"+itoa(j+1)+"_T","CHARISSA_T"+itoa(i+1)+"_E_X"+itoa(j+1)+"_T")   ;
       Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_E_Y"+itoa(j+1)+"_T","CHARISSA_T"+itoa(i+1)+"_E_Y"+itoa(j+1)+"_T")   ;
-     }
-    
-      Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_CsI_E","CHARISSA_T"+itoa(i+1)+"_CsI_E")      ;
-      Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_CsI_T","CHARISSA_T"+itoa(i+1)+"_CsI_T")      ;
-    
+    }
+
+    Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_CsI_E","CHARISSA_T"+itoa(i+1)+"_CsI_E")      ;
+    Cal->AddParameter("CHARISSA", "T"+itoa(i+1)+"_CsI_T","CHARISSA_T"+itoa(i+1)+"_CsI_T")      ;
+
   }
-  
+
   return;
-  
+
 }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -1090,37 +1021,30 @@ void TCharissaPhysics::InitializeRootInputRaw()
 ///////////////////////////////////////////////////////////////////////////
 void TCharissaPhysics::InitializeRootInputPhysics()
 {
-	TChain* inputChain = RootInput::getInstance()->GetChain();
-	inputChain->SetBranchStatus( "CHARISSA" , true );
-	inputChain->SetBranchStatus( "EventMultiplicity" , true );
-	inputChain->SetBranchStatus( "EventType" , true );
-	inputChain->SetBranchStatus( "Layer1_TelescopeNumber" , true );
-	inputChain->SetBranchStatus( "Layer1_Si_E" , true );
-	inputChain->SetBranchStatus( "Layer1_Si_T" , true );
-	inputChain->SetBranchStatus( "Layer1_Si_X" , true );
-	inputChain->SetBranchStatus( "Layer1_Si_Y" , true );
-	inputChain->SetBranchStatus( "Layer1_Si_EX" , true );
-	inputChain->SetBranchStatus( "Layer1_Si_TX" , true );
-	inputChain->SetBranchStatus( "Layer1_Si_EY" , true );
-	inputChain->SetBranchStatus( "Layer1_Si_TY" , true );
-	inputChain->SetBranchStatus( "Layer1_TelescopeNumber_X" , true );
-	inputChain->SetBranchStatus( "Layer1_TelescopeNumber_Y" , true );
-	inputChain->SetBranchStatus( "Layer2_TelescopeNumber" , true );
-	inputChain->SetBranchStatus( "Layer2_Si_E" , true );
-	inputChain->SetBranchStatus( "Layer2_Si_T" , true );
-	inputChain->SetBranchStatus( "Layer2_Si_X" , true );
-	inputChain->SetBranchStatus( "Layer2_Si_Y" , true );
-	inputChain->SetBranchStatus( "Layer2_Si_EX" , true );
-	inputChain->SetBranchStatus( "Layer2_Si_TX" , true );
-	inputChain->SetBranchStatus( "Layer2_Si_EY" , true );
-	inputChain->SetBranchStatus( "Layer2_Si_TY" , true );
-	inputChain->SetBranchStatus( "Layer2_TelescopeNumber_X" , true );
-	inputChain->SetBranchStatus( "Layer2_TelescopeNumber_Y" , true );	
-	inputChain->SetBranchStatus( "CsI_E" , true );
-	inputChain->SetBranchStatus( "CsI_T" , true );
-	inputChain->SetBranchStatus( "CsI_N" , true );
-	inputChain->SetBranchStatus( "TotalEnergy" , true );
-	inputChain->SetBranchAddress( "CHARISSA" , &m_EventPhysics);
+  TChain* inputChain = RootInput::getInstance()->GetChain();
+  inputChain->SetBranchStatus( "CHARISSA" , true );
+  inputChain->SetBranchStatus( "EventMultiplicity" , true );
+  inputChain->SetBranchStatus( "TelescopeNumber" , true );
+  inputChain->SetBranchStatus( "Layer1_Si_E" , true );
+  inputChain->SetBranchStatus( "Layer1_Si_T" , true );
+  inputChain->SetBranchStatus( "Layer1_Si_X" , true );
+  inputChain->SetBranchStatus( "Layer1_Si_Y" , true );
+  inputChain->SetBranchStatus( "Layer1_Si_EX" , true );
+  inputChain->SetBranchStatus( "Layer1_Si_TX" , true );
+  inputChain->SetBranchStatus( "Layer1_Si_EY" , true );
+  inputChain->SetBranchStatus( "Layer1_Si_TY" , true );
+  inputChain->SetBranchStatus( "Layer2_Si_E" , true );
+  inputChain->SetBranchStatus( "Layer2_Si_T" , true );
+  inputChain->SetBranchStatus( "Layer2_Si_X" , true );
+  inputChain->SetBranchStatus( "Layer2_Si_Y" , true );
+  inputChain->SetBranchStatus( "Layer2_Si_EX" , true );
+  inputChain->SetBranchStatus( "Layer2_Si_TX" , true );
+  inputChain->SetBranchStatus( "Layer2_Si_EY" , true );
+  inputChain->SetBranchStatus( "Layer2_Si_TY" , true );
+  inputChain->SetBranchStatus( "CsI_E" , true );
+  inputChain->SetBranchStatus( "CsI_T" , true );
+  inputChain->SetBranchStatus( "CsI_N" , true );
+  inputChain->SetBranchAddress( "CHARISSA" , &m_EventPhysics);
 }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -1133,68 +1057,65 @@ void TCharissaPhysics::InitializeRootOutput()
 
 /////   Specific to CHARISSAArray   ////
 /////////////////////////////////////////////////////////////////////////////////////
-void TCharissaPhysics::AddTelescope(   TVector3 C_X1_Y1,
-                                 TVector3 C_X16_Y1,
-                                 TVector3 C_X1_Y16,
-                                 TVector3 C_X16_Y16)
-{
+void TCharissaPhysics::AddTelescope(TVector3 C_X1_Y1, TVector3 C_X16_Y1,
+                                    TVector3 C_X1_Y16,TVector3 C_X16_Y16){
   // To avoid warning
   C_X16_Y16 *= 1;
-  
+
   m_NumberOfTelescope++;
-  
+
   //   Vector U on Telescope Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis)
   TVector3 U = C_X16_Y1 - C_X1_Y1 ;
-  double Ushift = (U.Mag()-98)/2.;
+  double Ushift = (U.Mag()-50)/2.;
   U = U.Unit();
   //   Vector V on Telescope Face (parallele to X Strip)
   TVector3 V = C_X1_Y16 - C_X1_Y1 ;
-  double Vshift = (V.Mag() -98)/2. ;
+  double Vshift = (V.Mag() -50)/2. ;
   V = V.Unit() ;
-  
+
   //   Position Vector of Strip Center
   TVector3 StripCenter = TVector3(0,0,0);
   //   Position Vector of X=1 Y=1 Strip
   TVector3 Strip_1_1;
-  
+
   //   Geometry Parameter
-  double Face = 98; //mm
+  double Face = 50; //mm
   double NumberOfStrip =  m_NumberOfStrip;
   double StripPitch = Face/NumberOfStrip ; //mm
-                                           //   Buffer object to fill Position Array
+  //   Buffer object to fill Position Array
   vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ;
-  
+
   vector< vector< double > >   OneTelescopeStripPositionX   ;
   vector< vector< double > >   OneTelescopeStripPositionY   ;
   vector< vector< double > >   OneTelescopeStripPositionZ   ;
-  
+
   //   Moving StripCenter to 1.1 corner:
   Strip_1_1 = C_X1_Y1 + (U+V) * (StripPitch/2.)    ;
   Strip_1_1+= U*Ushift+V*Vshift ;
-  
-  for( int i = 0 ; i <  m_NumberOfStrip ; ++i )
-      {
+
+  for(unsigned int i = 0 ; i <  m_NumberOfStrip ; ++i )
+  {
     lineX.clear()   ;
     lineY.clear()   ;
     lineZ.clear()   ;
-    
-    for( int j = 0 ; j <  m_NumberOfStrip ; ++j )
-        {
+
+    for(unsigned int j = 0 ; j <  m_NumberOfStrip ; ++j )
+    {
       StripCenter  = Strip_1_1 + StripPitch*( i*U + j*V  );
       lineX.push_back( StripCenter.X() );
       lineY.push_back( StripCenter.Y() );
       lineZ.push_back( StripCenter.Z() );
-        }
-    
+    }
+
     OneTelescopeStripPositionX.push_back(lineX);
     OneTelescopeStripPositionY.push_back(lineY);
     OneTelescopeStripPositionZ.push_back(lineZ);
-    
-      }
+
+  }
   m_StripPositionX.push_back( OneTelescopeStripPositionX ) ;
   m_StripPositionY.push_back( OneTelescopeStripPositionY ) ;
   m_StripPositionZ.push_back( OneTelescopeStripPositionZ ) ;
-  
+
 }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1205,45 +1126,45 @@ void TCharissaPhysics::InitializeStandardParameter()
   m_XChannelStatus.clear()    ;
   m_YChannelStatus.clear()    ;
   m_CsIChannelStatus.clear()  ;
-  
+
   ChannelStatus.resize(m_NumberOfStrip,true);
-  for(int i = 0 ; i < m_NumberOfTelescope ; ++i)
-      {
+  for(unsigned int i = 0 ; i < m_NumberOfTelescope ; ++i)
+  {
     m_XChannelStatus[i] = ChannelStatus;
     m_YChannelStatus[i] = ChannelStatus;
-      }
-  
+  }
+
   ChannelStatus.resize(m_NumberOfStrip,true);
-  for(int i = 0 ; i < m_NumberOfTelescope ; ++i)
-      {
+  for(unsigned int i = 0 ; i < m_NumberOfTelescope ; ++i)
+  {
     m_CsIChannelStatus[i]  = ChannelStatus;
-      }
-  
-  
+  }
+
+
   m_MaximumStripMultiplicityAllowed = m_NumberOfTelescope   ;
-  
+
   return;
 }
 
 
 //////////////////////////////////////////////////////////////////////////////////////////////
 void TCharissaPhysics::AddTelescope(   double theta,
-                                 double phi,
-                                 double distance,
-                                 double beta_u,
-                                 double beta_v,
-                                 double beta_w)
+    double phi,
+    double distance,
+    double beta_u,
+    double beta_v,
+    double beta_w)
 {
-  
+
 
   m_NumberOfTelescope++;
-  
+
   double Pi = 3.141592654 ;
-  
+
   // convert from degree to radian:
   theta = theta * Pi/180. ;
   phi   = phi   * Pi/180. ;
-  
+
   //Vector U on Telescope Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis)
   TVector3 U ;
   //Vector V on Telescope Face (parallele to X Strip)
@@ -1252,72 +1173,72 @@ void TCharissaPhysics::AddTelescope(   double theta,
   TVector3 W ;
   //Vector position of Telescope Face center
   TVector3 C ;
-  
+
   C = TVector3 ( distance * sin(theta) * cos(phi) ,
-                distance * sin(theta) * sin(phi) ,
-                distance * cos(theta) );
-  
+      distance * sin(theta) * sin(phi) ,
+      distance * cos(theta) );
+
   TVector3 P = TVector3( cos(theta ) * cos(phi) ,
-                        cos(theta ) * sin(phi) ,
-                        -sin(theta) );
-  
+      cos(theta ) * sin(phi) ,
+      -sin(theta) );
+
   W = C.Unit() ;
   U = W .Cross ( P ) ;
   V = W .Cross ( U );
-  
+
   U = U.Unit();
   V = V.Unit();
-  
+
   U.Rotate( beta_u * Pi/180. , U ) ;
   V.Rotate( beta_u * Pi/180. , U ) ;
-  
+
   U.Rotate( beta_v * Pi/180. , V ) ;
   V.Rotate( beta_v * Pi/180. , V ) ;
-  
+
   U.Rotate( beta_w * Pi/180. , W ) ;
   V.Rotate( beta_w * Pi/180. , W ) ;
-  
+
   double Face = 98                     ; //mm
   double NumberOfStrip =  m_NumberOfStrip             ;
   double StripPitch = Face/NumberOfStrip   ; //mm
-  
+
   vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ;
-  
+
   vector< vector< double > >   OneTelescopeStripPositionX   ;
   vector< vector< double > >   OneTelescopeStripPositionY   ;
   vector< vector< double > >   OneTelescopeStripPositionZ   ;
-  
+
   double X , Y , Z  ;
-  
+
   //Moving C to the 1.1 corner:
   C.SetX( C.X() - ( Face/2 - StripPitch/2 ) * ( V.X() + U.X() ) )  ;
   C.SetY( C.Y() - ( Face/2 - StripPitch/2 ) * ( V.Y() + U.Y() ) )  ;
   C.SetZ( C.Z() - ( Face/2 - StripPitch/2 ) * ( V.Z() + U.Z() ) )  ;
-  
-  for( int i = 0 ; i <  m_NumberOfStrip ; ++i )
-      {
-    
+
+  for(unsigned int i = 0 ; i <  m_NumberOfStrip ; ++i )
+  {
+
     lineX.clear()   ;
     lineY.clear()   ;
     lineZ.clear()   ;
-    
-    for( int j = 0 ; j <  m_NumberOfStrip ; ++j )
-        {
+
+    for(unsigned int j = 0 ; j <  m_NumberOfStrip ; ++j )
+    {
       X = C.X() + StripPitch * ( U.X()*i + V.X()*j )   ;
       Y = C.Y() + StripPitch * ( U.Y()*i + V.Y()*j )   ;
       Z = C.Z() + StripPitch * ( U.Z()*i + V.Z()*j )   ;
-      
+
       lineX.push_back(X)   ;
       lineY.push_back(Y)   ;
       lineZ.push_back(Z)   ;
-      
-        }
-    
+
+    }
+
     OneTelescopeStripPositionX.push_back(lineX)   ;
     OneTelescopeStripPositionY.push_back(lineY)   ;
     OneTelescopeStripPositionZ.push_back(lineZ)   ;
-    
-      }
+
+  }
   m_StripPositionX.push_back( OneTelescopeStripPositionX ) ;
   m_StripPositionY.push_back( OneTelescopeStripPositionY ) ;
   m_StripPositionZ.push_back( OneTelescopeStripPositionZ ) ;
@@ -1325,36 +1246,45 @@ void TCharissaPhysics::AddTelescope(   double theta,
 
 
 //////////////////////////////////////////////////////////////////////////////////////////////
-TVector3 TCharissaPhysics::GetPositionOfInteraction(const int i) const
-{
-  TVector3 Position = TVector3 (   GetStripPositionX( Layer1_TelescopeNumber[i] , Layer1_Si_X[i] , Layer1_Si_Y[i] )    ,
-                                GetStripPositionY( Layer1_TelescopeNumber[i] , Layer1_Si_X[i] , Layer1_Si_Y[i] )      ,
-                                GetStripPositionZ( Layer1_TelescopeNumber[i] , Layer1_Si_X[i] , Layer1_Si_Y[i] )      ) ;
-  
+TVector3 TCharissaPhysics::GetPositionOfInteraction(const int i) const{
+  TVector3 Position ;
+
+  if(Layer1_Si_X[i] > -1000 &&  Layer1_Si_Y[i] >-1000)
+  Position = TVector3 (   GetStripPositionX( TelescopeNumber[i] , Layer1_Si_X[i] , Layer1_Si_Y[i] )    ,
+      GetStripPositionY( TelescopeNumber[i] , Layer1_Si_X[i] , Layer1_Si_Y[i] )      ,
+      GetStripPositionZ( TelescopeNumber[i] , Layer1_Si_X[i] , Layer1_Si_Y[i] )      ) ;
+
+  else if(Layer2_Si_X[i] > -1000 &&  Layer2_Si_Y[i] >-1000)
+  Position = TVector3 (   GetStripPositionX( TelescopeNumber[i] , Layer2_Si_X[i] , Layer2_Si_Y[i] )    ,
+      GetStripPositionY( TelescopeNumber[i] , Layer2_Si_X[i] , Layer2_Si_Y[i] )      ,
+      GetStripPositionZ( TelescopeNumber[i] , Layer2_Si_X[i] , Layer2_Si_Y[i] )      ) ;
+
+  else Position=TVector3(-1000,0,0);
+
   return(Position) ;
-  
+
 }
 
 TVector3 TCharissaPhysics::GetTelescopeNormal( const int i) const
 {
-  TVector3 U =    TVector3 ( GetStripPositionX( Layer1_TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) ,
-                            GetStripPositionY( Layer1_TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) ,
-                            GetStripPositionZ( Layer1_TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) )
-  
-  -TVector3 ( GetStripPositionX( Layer1_TelescopeNumber[i] , 1 , 1 ) ,
-             GetStripPositionY( Layer1_TelescopeNumber[i] , 1 , 1 ) ,
-             GetStripPositionZ( Layer1_TelescopeNumber[i] , 1 , 1 ) );
-  
-  TVector3 V =    TVector3 ( GetStripPositionX( Layer1_TelescopeNumber[i] ,  m_NumberOfStrip ,  m_NumberOfStrip ) ,
-                            GetStripPositionY( Layer1_TelescopeNumber[i] ,  m_NumberOfStrip ,  m_NumberOfStrip ) ,
-                            GetStripPositionZ( Layer1_TelescopeNumber[i] ,  m_NumberOfStrip ,  m_NumberOfStrip ) )
-  
-  -TVector3 ( GetStripPositionX( Layer1_TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) ,
-             GetStripPositionY( Layer1_TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) ,
-             GetStripPositionZ( Layer1_TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) );
-  
+  TVector3 U =    TVector3 ( GetStripPositionX( TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) ,
+      GetStripPositionY( TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) ,
+      GetStripPositionZ( TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) )
+
+    -TVector3 ( GetStripPositionX( TelescopeNumber[i] , 1 , 1 ) ,
+        GetStripPositionY( TelescopeNumber[i] , 1 , 1 ) ,
+        GetStripPositionZ( TelescopeNumber[i] , 1 , 1 ) );
+
+  TVector3 V =    TVector3 ( GetStripPositionX( TelescopeNumber[i] ,  m_NumberOfStrip ,  m_NumberOfStrip ) ,
+      GetStripPositionY( TelescopeNumber[i] ,  m_NumberOfStrip ,  m_NumberOfStrip ) ,
+      GetStripPositionZ( TelescopeNumber[i] ,  m_NumberOfStrip ,  m_NumberOfStrip ) )
+
+    -TVector3 ( GetStripPositionX( TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) ,
+        GetStripPositionY( TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) ,
+        GetStripPositionZ( TelescopeNumber[i] ,  m_NumberOfStrip , 1 ) );
+
   TVector3 Normal = U.Cross(V);
-  
+
   return(Normal.Unit()) ;
 }
 
@@ -1364,79 +1294,79 @@ namespace CHARISSA_LOCAL
   //   tranform an integer to a string
   string itoa(int value)
   {
-char buffer [33];
-sprintf(buffer,"%d",value);
-return buffer;
+    char buffer [33];
+    sprintf(buffer,"%d",value);
+    return buffer;
   }
-  
+
   //   E
   //   X
   double fDE_X_E(const TCharissaData* m_EventData , const int i)
   {
-return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer1StripXEDetectorNbr(i) ) + "_DE_X" + itoa( m_EventData->GetCharissaLayer1StripXEStripNbr(i) ) + "_E",
-                                                           m_EventData->GetCharissaLayer1StripXEEnergy(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer1StripXEDetectorNbr(i) ) + "_DE_X" + itoa( m_EventData->GetCharissaLayer1StripXEStripNbr(i) ) + "_E",
+        m_EventData->GetCharissaLayer1StripXEEnergy(i) );
   }
-  
+
   double fDE_X_T(const TCharissaData* m_EventData , const int i)
   {
-return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer1StripXTDetectorNbr(i) ) + "_DE_X" + itoa( m_EventData->GetCharissaLayer1StripXTStripNbr(i) ) +"_T",
-                                                           m_EventData->GetCharissaLayer1StripXTTime(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer1StripXTDetectorNbr(i) ) + "_DE_X" + itoa( m_EventData->GetCharissaLayer1StripXTStripNbr(i) ) +"_T",
+        m_EventData->GetCharissaLayer1StripXTTime(i) );
   }
-  
+
   //   Y
   double fDE_Y_E(const TCharissaData* m_EventData , const int i)
   {
-return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer1StripYEDetectorNbr(i) ) + "_DE_Y" + itoa( m_EventData->GetCharissaLayer1StripYEStripNbr(i) ) +"_E",
-                                                           m_EventData->GetCharissaLayer1StripYEEnergy(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer1StripYEDetectorNbr(i) ) + "_DE_Y" + itoa( m_EventData->GetCharissaLayer1StripYEStripNbr(i) ) +"_E",
+        m_EventData->GetCharissaLayer1StripYEEnergy(i) );
   }
-  
+
   double fDE_Y_T(const TCharissaData* m_EventData , const int i)
   {
-return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer1StripYTDetectorNbr(i) ) + "_DE_Y" + itoa( m_EventData->GetCharissaLayer1StripYTStripNbr(i) ) +"_T",
-                                                           m_EventData->GetCharissaLayer1StripYTTime(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer1StripYTDetectorNbr(i) ) + "_DE_Y" + itoa( m_EventData->GetCharissaLayer1StripYTStripNbr(i) ) +"_T",
+        m_EventData->GetCharissaLayer1StripYTTime(i) );
   }
-  
+
   //   E
   //   X
   double fE_X_E(const TCharissaData* m_EventData , const int i)
   {
-return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer2StripXEDetectorNbr(i) ) + "_E_X" + itoa( m_EventData->GetCharissaLayer2StripXEStripNbr(i) ) + "_E",
-                                                           m_EventData->GetCharissaLayer2StripXEEnergy(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer2StripXEDetectorNbr(i) ) + "_E_X" + itoa( m_EventData->GetCharissaLayer2StripXEStripNbr(i) ) + "_E",
+        m_EventData->GetCharissaLayer2StripXEEnergy(i) );
   }
-  
+
   double fE_X_T(const TCharissaData* m_EventData , const int i)
   {
-return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer2StripXTDetectorNbr(i) ) + "_E_X" + itoa( m_EventData->GetCharissaLayer2StripXTStripNbr(i) ) +"_T",
-                                                           m_EventData->GetCharissaLayer2StripXTTime(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer2StripXTDetectorNbr(i) ) + "_E_X" + itoa( m_EventData->GetCharissaLayer2StripXTStripNbr(i) ) +"_T",
+        m_EventData->GetCharissaLayer2StripXTTime(i) );
   }
-  
+
   //   Y
   double fE_Y_E(const TCharissaData* m_EventData , const int i)
   {
-return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer2StripYEDetectorNbr(i) ) + "_E_Y" + itoa( m_EventData->GetCharissaLayer2StripYEStripNbr(i) ) +"_E",
-                                                           m_EventData->GetCharissaLayer2StripYEEnergy(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer2StripYEDetectorNbr(i) ) + "_E_Y" + itoa( m_EventData->GetCharissaLayer2StripYEStripNbr(i) ) +"_E",
+        m_EventData->GetCharissaLayer2StripYEEnergy(i) );
   }
-  
+
   double fE_Y_T(const TCharissaData* m_EventData , const int i)
   {
-return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer2StripYTDetectorNbr(i) ) + "_E_Y" + itoa( m_EventData->GetCharissaLayer2StripYTStripNbr(i) ) +"_T",
-                                                           m_EventData->GetCharissaLayer2StripYTTime(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaLayer2StripYTDetectorNbr(i) ) + "_E_Y" + itoa( m_EventData->GetCharissaLayer2StripYTStripNbr(i) ) +"_T",
+        m_EventData->GetCharissaLayer2StripYTTime(i) );
   }
-  
+
 
   //   CsI
   double fCsI_E(const TCharissaData* m_EventData , const int i)
   {
-return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaCsIEDetectorNbr(i) ) + "_CsI" + itoa( m_EventData->GetCharissaCsIECristalNbr(i) ) +"_E",
-                                                           m_EventData->GetCharissaCsIEEnergy(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaCsIEDetectorNbr(i) ) + "_CsI" + itoa( m_EventData->GetCharissaCsIECristalNbr(i) ) +"_E",
+        m_EventData->GetCharissaCsIEEnergy(i) );
   }
-  
+
   double fCsI_T(const TCharissaData* m_EventData , const int i)
   {
-return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaCsITDetectorNbr(i) ) + "_CsI" + itoa( m_EventData->GetCharissaCsITCristalNbr(i) ) +"_T",
-                                                           m_EventData->GetCharissaCsITTime(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "CHARISSA/T" + itoa( m_EventData->GetCharissaCsITDetectorNbr(i) ) + "_CsI" + itoa( m_EventData->GetCharissaCsITCristalNbr(i) ) +"_T",
+        m_EventData->GetCharissaCsITTime(i) );
   }
-  
+
 }
 
-	
+
diff --git a/NPLib/Charissa/TCharissaPhysics.h b/NPLib/Charissa/TCharissaPhysics.h
index 9976ae684194d0de4c76cb407ab1343e53962f53..a402f0c24530732d65b142eb91fbc728fd164901 100755
--- a/NPLib/Charissa/TCharissaPhysics.h
+++ b/NPLib/Charissa/TCharissaPhysics.h
@@ -53,9 +53,8 @@ class TCharissaPhysics : public TObject, public NPA::VDetector{
   public:
     vector < TVector2 > Layer1_Match_X_Y();
 	vector < TVector2 > Layer2_Match_X_Y();
-    bool	Match_Si_CsI(int X, int Y , int CristalNbr);
 	bool	ResolvePseudoEvent();
-    int		Layer1_CheckEvent();
+  int		Layer1_CheckEvent();
 	int		Layer2_CheckEvent();
 
   public:
@@ -67,8 +66,7 @@ class TCharissaPhysics : public TObject, public NPA::VDetector{
     vector<int> EventType ;
 
     // Telescope
-    vector<int> Layer1_TelescopeNumber ;
-    vector<int> Layer2_TelescopeNumber ;
+    vector<int> TelescopeNumber ;
 
     //   Si
     vector<double> Layer1_Si_E ;
@@ -76,7 +74,7 @@ class TCharissaPhysics : public TObject, public NPA::VDetector{
     vector<int>    Layer1_Si_X ;
     vector<int>    Layer1_Si_Y ;
 	
-	vector<double> Layer2_Si_E ;
+	  vector<double> Layer2_Si_E ;
     vector<double> Layer2_Si_T ;
     vector<int>    Layer2_Si_X ;
     vector<int>    Layer2_Si_Y ;
@@ -89,24 +87,18 @@ class TCharissaPhysics : public TObject, public NPA::VDetector{
     vector<int>    Layer1_TelescopeNumber_X ;
     vector<int>    Layer1_TelescopeNumber_Y ;
 	
-	vector<double> Layer2_Si_EX ;
+	  vector<double> Layer2_Si_EX ;
     vector<double> Layer2_Si_TX ;
     vector<double> Layer2_Si_EY ;
     vector<double> Layer2_Si_TY ;
     vector<int>    Layer2_TelescopeNumber_X ;
     vector<int>    Layer2_TelescopeNumber_Y ;
-    //   Si(Li)
-
 
     //   CsI
     vector<double>  CsI_E ;
     vector<double>  CsI_T ;
     vector<int>     CsI_N ;
 
-    // Physical Value
-    vector<double>   TotalEnergy ;
-
-
   public:      //   Innherited from VDetector Class
 
     //   Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
@@ -185,9 +177,6 @@ class TCharissaPhysics : public TObject, public NPA::VDetector{
         double beta_v,
         double beta_w);
 
-    // Use for reading Calibration Run, very simple methods; only apply calibration, no condition
-    void ReadCalibrationRun();
-
     // Give and external TMustData object to TCharissaPhysics. Needed for online analysis for example.
     void SetRawDataPointer(TCharissaData* rawDataPointer) {m_EventData = rawDataPointer;}
     // Retrieve raw and pre-treated data
@@ -204,8 +193,6 @@ class TCharissaPhysics : public TObject, public NPA::VDetector{
     // To be called after a build Physical Event
     int GetEventMultiplicity() const { return EventMultiplicity; };
 
-    double GetEnergyDeposit(const int i) const{ return TotalEnergy[i] ;};
-
     TVector3 GetPositionOfInteraction(const int i) const;
     TVector3 GetTelescopeNormal(const int i) const;
 
@@ -281,7 +268,7 @@ class TCharissaPhysics : public TObject, public NPA::VDetector{
     TCharissaSpectra*      m_Spectra;//! 
 
   public: // Spectra Getter
-    map< vector<TString> , TH1*> GetSpectra(); 
+    map< vector<string> , TH1*> GetSpectra(); 
 
     ClassDef(TCharissaPhysics,1)  // CharissaPhysics structure
 };
diff --git a/NPLib/Charissa/TCharissaSpectra.cxx b/NPLib/Charissa/TCharissaSpectra.cxx
index 35b4fd64378ac52eb658cc95a03a8c6005928b89..ad81f3aafce9402cd671237f8e8381744f8f0aac 100644
--- a/NPLib/Charissa/TCharissaSpectra.cxx
+++ b/NPLib/Charissa/TCharissaSpectra.cxx
@@ -21,6 +21,11 @@
  *                                                                           *
  *****************************************************************************/
 
+// STL
+#include <iostream>
+#include <cstdlib>
+#include <stdexcept>
+
 // NPL
 #include "TCharissaSpectra.h"
 #include "NPOptionManager.h"
@@ -32,7 +37,7 @@ using namespace NPUNITS;
 
 
 // ROOT
-#include "TString.h"
+#include "string.h"
 #include "TDirectory.h"
 #include "TFile.h"
 
@@ -79,7 +84,10 @@ TCharissaSpectra::~TCharissaSpectra(){
 ////////////////////////////////////////////////////////////////////////////////
 void TCharissaSpectra::InitRawSpectra()
 {
-   TString name;
+   string name;
+   int NbrBin = 512;
+   int MinBin = 0;
+   int MaxBin = 16384;
 
    for (unsigned int i = 0; i < fNumberOfTelescope; i++) { // loop on number of detectors
       // DE_STRX_E_RAW
@@ -88,23 +96,23 @@ void TCharissaSpectra::InitRawSpectra()
 
       // DE_STRX_E_RAW
       name = Form("CHA%d_DE_STRX_E_RAW", i+1);
-      AddHisto2D(name, name, fStripX, 1, fStripX+1, 512, 0, 16384, "CHARISSA/RAW/STRXE");
+      AddHisto2D(name, name, fStripX, 1, fStripX+1, NbrBin, MinBin, MaxBin, "CHARISSA/RAW/STRXE");
 
       // DE_STRY_E_RAW
       name = Form("CHA%d_DE_STRY_E_RAW", i+1);
-      AddHisto2D(name, name, fStripY, 1, fStripY+1, 512, 0, 16384, "CHARISSA/RAW/STRYE");
+      AddHisto2D(name, name, fStripY, 1, fStripY+1, NbrBin, MinBin, MaxBin, "CHARISSA/RAW/STRYE");
 
       // E_STRX_E_RAW
       name = Form("CHA%d_E_STRX_E_RAW", i+1);
-      AddHisto2D(name, name, fStripX, 1, fStripX+1, 512, 0, 16384, "CHARISSA/RAW/STRXE");
+      AddHisto2D(name, name, fStripX, 1, fStripX+1, NbrBin, MinBin, MaxBin, "CHARISSA/RAW/STRXE");
 
       // E_STRY_E_RAW
       name = Form("CHA%d_E_STRY_E_RAW", i+1);
-      AddHisto2D(name, name, fStripY, 1, fStripY+1, 512, 0, 16384, "CHARISSA/RAW/STRYE");
+      AddHisto2D(name, name, fStripY, 1, fStripY+1, NbrBin, MinBin, MaxBin, "CHARISSA/RAW/STRYE");
 
       // CSI_E_RAW
       name = Form("CHA%d_CSI_E_RAW", i+1);
-      AddHisto2D(name, name, fCrystalCsI, 1, fCrystalCsI+1, 512, 0, 16384, "CHARISSA/RAW/CSIE");
+      AddHisto2D(name, name, fCrystalCsI, 1, fCrystalCsI+1, NbrBin, MinBin, MaxBin, "CHARISSA/RAW/CSIE");
 
       // DE_STRX_RAW_MULT
       name = Form("CHA%d_DE_STRX_RAW_MULT", i+1);
@@ -133,29 +141,32 @@ void TCharissaSpectra::InitRawSpectra()
 ////////////////////////////////////////////////////////////////////////////////
 void TCharissaSpectra::InitPreTreatedSpectra()
 {
-   TString name;
-
+   string name;
+   int NbrBin = 512;
+   int MinBin = 0;
+   int MaxBin = 1;
+ 
    for (unsigned int i = 0; i < fNumberOfTelescope; i++) { // loop on number of detectors
       // DE_STRX_E_CAL
       name = Form("CHA%d_DE_STRX_E_CAL", i+1);
-      AddHisto2D(name, name, fStripX, 1, fStripX+1, 1000, 0, 16000, "CHARISSA/CAL/STRXE");
+      AddHisto2D(name, name, fStripX, 1, fStripX+1, NbrBin, MinBin, MaxBin, "CHARISSA/CAL/STRXE");
 
       // DE_STRY_E_CAL
       name = Form("CHA%d_DE_STRY_E_CAL", i+1);
-      AddHisto2D(name, name, fStripY, 1, fStripY+1, 1000, 0, 16000, "CHARISSA/CAL/STRYE");
+      AddHisto2D(name, name, fStripY, 1, fStripY+1, NbrBin, MinBin, MaxBin, "CHARISSA/CAL/STRYE");
 
       // E_STRX_E_CAL
       name = Form("CHA%d_E_STRX_E_CAL", i+1);
-      AddHisto2D(name, name, fStripX, 1, fStripX+1, 1000, 0, 16000, "CHARISSA/CAL/STRXE");
+      AddHisto2D(name, name, fStripX, 1, fStripX+1, NbrBin, MinBin, MaxBin, "CHARISSA/CAL/STRXE");
 
       // E_STRY_E_CAL
       name = Form("CHA%d_E_STRY_E_CAL", i+1);
-      AddHisto2D(name, name, fStripY, 1, fStripY+1, 1000, 0, 16000, "CHARISSA/CAL/STRYE");
+      AddHisto2D(name, name, fStripY, 1, fStripY+1, NbrBin, MinBin, MaxBin, "CHARISSA/CAL/STRYE");
 
 
       // CSI_E_CAL
       name = Form("CHA%d_CSI_E_CAL", i+1);
-      AddHisto2D(name, name, fCrystalCsI, 1, fCrystalCsI+1, 500, 0, 50, "CHARISSA/CAL/CSIE");
+      AddHisto2D(name, name, fCrystalCsI, 1, fCrystalCsI+1, MaxBin, MinBin, MaxBin, "CHARISSA/CAL/CSIE");
 
       // STRX_DE_CAL_MULT
       name = Form("CHA%d_DE_STRX_CAL_MULT", i+1);
@@ -184,7 +195,7 @@ void TCharissaSpectra::InitPreTreatedSpectra()
 ////////////////////////////////////////////////////////////////////////////////
 void TCharissaSpectra::InitPhysicsSpectra()
 {
-   TString name;
+   string name;
 
    // DE X-Y Impact Matrix
    name = "CHA_DE_IMPACT_MATRIX";
@@ -196,59 +207,44 @@ void TCharissaSpectra::InitPhysicsSpectra()
 
    // DE kinematic line
    name = "CHA_DE_THETA";
-   AddHisto2D(name, name, 360, 0, 180, 500, 0, 50, "CHARISSA/PHY");
-
+   AddHisto2D(name, name, 360, 0, 180, 500, 0, 500, "CHARISSA/PHY");
 
+   int NbrBin = 1000;
+   int MinBin = 0;
+   int MaxBin = 1;
+   int MaxBinCsI = 20000; 
    // X-Y Energy Correlation
    for (unsigned int i = 0 ; i < fNumberOfTelescope ; i++) { // loop on number of detectors
       // DE
       name = Form("CHA%d_DE_XY_COR", i+1);
-      AddHisto2D(name, name, 500, 0, 50, 500, 0, 50, "CHARISSA/PHY"); 
+      AddHisto2D(name, name, NbrBin, MinBin, MaxBin, NbrBin, MinBin, MaxBin, "CHARISSA/PHY"); 
 
       // En
       name = Form("CHA%d_E_XY_COR", i+1);
-      AddHisto2D(name, name, 500, 0, 50, 500, 0, 50, "CHARISSA/PHY"); 
+      AddHisto2D(name, name, NbrBin, MinBin, MaxBin, NbrBin, MinBin, MaxBin, "CHARISSA/PHY"); 
    }
 
-  
-
    // ID plot detector by detector
-   for (unsigned int i = 0; i < fNumberOfTelescope; i++) { // loop on number of detectors
+   for (unsigned int i = MinBin; i < fNumberOfTelescope; i++) { // loop on number of detectors
       // E-TOF:
       name = "CHA_E_TOF";
-      //AddHisto2D(name, name,500,0,50,1000,200,1200,"CHARISSA/PHY"); 
-      AddHisto2D(name, name,500,0,20000,500,0,20000,"CHARISSA/PHY");
+      AddHisto2D(name, name,NbrBin,MinBin,MaxBin,NbrBin,MinBin,MaxBin,"CHARISSA/PHY");
 
       // DE-TOF:
       name = "CHA_DE_TOF";
-      AddHisto2D(name, name,500,0,20000,500,0,20000,"CHARISSA/PHY");
+      AddHisto2D(name, name,NbrBin,MinBin,MaxBin,NbrBin,MinBin,MaxBin,"CHARISSA/PHY");
 
       // E-CSIE:
       name = "CHA_E_CSIE";
-      AddHisto2D(name, name,500,0,20000,500,0,20000,"CHARISSA/PHY");
+      AddHisto2D(name, name,NbrBin,MinBin,MaxBinCsI,NbrBin,MinBin,MaxBin,"CHARISSA/PHY");
       
       // DE-CSIE:
       name = "CHA_DE_CSIE";
-      AddHisto2D(name, name,500,0,20000,500,0,20000,"CHARISSA/PHY");
+      AddHisto2D(name, name,NbrBin,MinBin,MaxBinCsI,NbrBin,MinBin,MaxBin,"CHARISSA/PHY");
 
       // DE-E:
       name = "CHA_DE_E";
-      AddHisto2D(name, name,500,0,20000,500,0,20000,"CHARISSA/PHY");    
-
-      //E_CORR
-      name = "CHA_EXY_COR";
-      AddHisto2D(name, name,500,0,20000,500,0,20000,"CHARISSA/PHY");   
-      //DE_CORR
-      name = "CHA_DEXY_COR";
-      AddHisto2D(name, name,500,0,20000,500,0,20000,"CHARISSA/PHY");  
-      
-      // DEY-DEX:
-      name = "CHA_DEY_DEX";
-      AddHisto2D(name, name,500,0,20000,500,0,20000,"CHARISSA/PHY"); 
-
-      // EY-EX:
-      name = "CHA_EY_EX";
-      AddHisto2D(name, name,500,0,20000,500,0,20000,"CHARISSA/PHY");
+      AddHisto2D(name, name,NbrBin,MinBin,MaxBin,NbrBin,MinBin,MaxBin,"CHARISSA/PHY");    
    }
 }
 
@@ -257,8 +253,8 @@ void TCharissaSpectra::InitPhysicsSpectra()
 ////////////////////////////////////////////////////////////////////////////////
 void TCharissaSpectra::FillRawSpectra(TCharissaData* RawData)
 {
-   TString name;
-   TString family;
+   string name;
+   string family;
   
  for (unsigned int i = 0; i < RawData->GetCharissaLayer1StripXEMult(); i++) {
    for (unsigned int j = 0; j < RawData->GetCharissaLayer1StripYEMult(); j++) {
@@ -269,7 +265,7 @@ void TCharissaSpectra::FillRawSpectra(TCharissaData* RawData)
       }
     }
   }
-   // DE_STRX_E 
+   // DE_STRX_E
    for (unsigned int i = 0; i < RawData->GetCharissaLayer1StripXEMult(); i++) {
       name   = Form("CHA%d_DE_STRX_E_RAW", RawData->GetCharissaLayer1StripXEDetectorNbr(i));
       family = "CHARISSA/RAW/STRXE";
@@ -367,8 +363,8 @@ void TCharissaSpectra::FillRawSpectra(TCharissaData* RawData)
 ////////////////////////////////////////////////////////////////////////////////
 void TCharissaSpectra::FillPreTreatedSpectra(TCharissaData* PreTreatedData)
 {
-   TString name;
-   TString family;
+   string name;
+   string family;
    // DE_STRX_E 
    for (unsigned int i = 0; i < PreTreatedData->GetCharissaLayer1StripXEMult(); i++) {
       name   = Form("CHA%d_DE_STRX_E_CAL", PreTreatedData->GetCharissaLayer1StripXEDetectorNbr(i));
@@ -467,86 +463,70 @@ void TCharissaSpectra::FillPreTreatedSpectra(TCharissaData* PreTreatedData)
 ////////////////////////////////////////////////////////////////////////////////
 void TCharissaSpectra::FillPhysicsSpectra(TCharissaPhysics* Physics)
 {
-	cout << "TCharissaSpactra::FillPhysicsSpectra has to be implemented !" << endl;
-	
-  TString name;
-  TString family= "CHARISSA/PHY";
-  // X-Y Impact Matrix
-
-
-  // LAYER 1 DE
-  for(unsigned int i = 0 ; i < Physics->Layer1_Si_E.size(); i++){
-    name = "CHA_IMPACT_MATRIX";
+  string name;
+  string family= "CHARISSA/PHY";
+  for(unsigned int i = 0 ; i < Physics->EventMultiplicity; i++){
     double x = Physics->GetPositionOfInteraction(i).x();
     double y = Physics->GetPositionOfInteraction(i).y();
-    GetHisto(family,name)-> Fill(x,y);
+    
+    if(Physics->Layer1_Si_E[i]>0){ 
+      name = "CHA_DE_IMPACT_MATRIX";
+      GetHisto(family,name)-> Fill(x,y);
+    }
+
+    if(Physics->Layer2_Si_E[i]>0){ 
+      name = "CHA_E_IMPACT_MATRIX";
+      GetHisto(family,name)-> Fill(x,y);
+    }
+
     name = "CHA_DE_THETA";
     double Theta = Physics->GetPositionOfInteraction(i).Angle(TVector3(0,0,1));
     Theta = Theta/deg;
-    GetHisto(family,name)-> Fill(Theta,Physics->Layer1_Si_E[i]); 
-    
+
+    double TotalE = 0 ;
+    if(Physics->Layer1_Si_E[i]>0) TotalE += Physics->Layer1_Si_E[i];
+    if(Physics->Layer2_Si_E[i]>0) TotalE += Physics->Layer2_Si_E[i];
+    if(Physics->CsI_E[i]>0) TotalE += Physics->CsI_E[i];
     
-    //E_CORR
-    name = "CHA_EXY_COR";
-    GetHisto(family,name)-> Fill(Physics->Layer2_Si_EX[i],Physics->Layer2_Si_EY[i]);
+    GetHisto(family,name)-> Fill(Theta,TotalE); 
     
-
-    //DE_CORR
-    name = "CHA_DEXY_COR";
-    GetHisto(family,name)-> Fill(Physics->Layer1_Si_EX[i],Physics->Layer1_Si_EY[i]); 
-	
-  
     // DE-TOF:
-    name = "CHA_DE_TOF";
-    GetHisto(family,name)->Fill(Physics->Layer1_Si_T[i],Physics->Layer1_Si_E[i]);
-    
-    //E-TOF
-    name = "CHA_E_TOF";
-    GetHisto(family,name)->Fill(Physics->Layer2_Si_T[i],Physics->Layer2_Si_E[i]);
-
+    if(Physics->Layer1_Si_E[i]>0 && Physics->Layer2_Si_E[i]< 0 ){
+      name = "CHA_DE_TOF";
+      GetHisto(family,name)->Fill(Physics->Layer1_Si_E[i],Physics->Layer1_Si_T[i]);
+    }
     // DE-E:
-    name = "CHA_DE_E";
-    GetHisto(family,name)->Fill(Physics->Layer2_Si_E[i],Physics->Layer1_Si_E[i]);
-    
-    
-    //DE_XY
-    name = "CHA_DEY_DEX";
-    GetHisto(family,name)-> Fill(Physics->Layer1_Si_EX[i],Physics->Layer1_Si_EY[i]);
-    
-
-    //E_XY
-    name = "CHA_EY_EX";
-    GetHisto(family,name)-> Fill(Physics->Layer2_Si_EX[i],Physics->Layer2_Si_EY[i]); 
-
- 
-    //double Etot;
-    if(Physics->CsI_E[i]>0){
-      name = "CHA_E_CSIE";
-      //Etot = Physics->Layer1_Si_E[i]+Physics->Layer2_Si_E[i]+Physics->CsI_E[i];
-      //Etot = Physics->CsI_E[i];
-      GetHisto(family,name)->Fill(Physics->CsI_E[i],Physics->Layer1_Si_E[i]);
-      name = "CHA_DE_CSIE"; 
-      GetHisto(family,name)->Fill(Physics->CsI_E[i],Physics->Layer2_Si_E[i]);
-
+    if(Physics->Layer1_Si_E[i]>0 && Physics->Layer2_Si_E[i]> 0 ){
+      name = "CHA_DE_E";
+      GetHisto(family,name)->Fill(Physics->Layer2_Si_E[i],Physics->Layer1_Si_E[i]);
     }
-    
   
+    name = "CHA_DE_CSIE";
+    GetHisto(family,name)->Fill(Physics->CsI_E[i],Physics->Layer1_Si_E[i]);
 
-  }
-
+    name = "CHA_E_CSIE";
+    GetHisto(family,name)->Fill(Physics->CsI_E[i],Physics->Layer2_Si_E[i]);
+    
+    // X-Y Corr
+    name = Form("CHA%d_DE_XY_COR", Physics->TelescopeNumber[i]);
+    GetHisto(family,name)->Fill(Physics->Layer1_Si_EX[i],Physics->Layer1_Si_EY[i]);
+    
+    // X-Y Corr
+    name = Form("CHA%d_E_XY_COR", Physics->TelescopeNumber[i]);
+    GetHisto(family,name)->Fill(Physics->Layer2_Si_EX[i],Physics->Layer2_Si_EY[i]);
 
-   
+  }
  
 }
 
 
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TCharissaSpectra::AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family){
+TH1* TCharissaSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
   // create histo
-  TH1 *hist = new TH1D(name, title, nbinsx, xlow, xup);
+  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
 
-  vector<TString> index ;
+  vector<string> index ;
   index.push_back(family);
   index.push_back(name);
 
@@ -559,11 +539,11 @@ TH1* TCharissaSpectra::AddHisto1D(TString name, TString title, Int_t nbinsx, Dou
 
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TCharissaSpectra::AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, TString family){
+TH1* TCharissaSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
   // create histo
-  TH1 *hist = new TH2D(name, title, nbinsx, xlow, xup, nbinsy, ylow, yup);
+  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
 
-  vector<TString> index ;
+  vector<string> index ;
   index.push_back(family);
   index.push_back(name);
 
@@ -576,26 +556,36 @@ TH1* TCharissaSpectra::AddHisto2D(TString name, TString title, Int_t nbinsx, Dou
 
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TCharissaSpectra::GetHisto(TString family, TString name){
-  vector<TString> index ;
+TH1* TCharissaSpectra::GetHisto(string& family, string& name){
+  vector<string> index;
   index.push_back(family);
   index.push_back(name);
-  // fill map
-  return fMapHisto.at(index);
+  TH1* histo ; 
+  
+  try{
+    histo = fMapHisto.at(index); 
+  }
+
+  catch(const std::out_of_range& oor){
+  cout << "ERROR : the folowing Histo has been requested by TCharissaSpectra and does not exist: family:" << family << " name: "  << name << endl ;
+  exit(1);
+  }
+
+  return histo;
 }
 
 
 
 ////////////////////////////////////////////////////////////////////////////////
-void TCharissaSpectra::WriteHisto(TString filename)
+void TCharissaSpectra::WriteHisto(string filename)
 {
    TFile *f = NULL; 
 
    if (filename != "VOID") {
-      f = new TFile(filename, "RECREATE");
+      f = new TFile(filename.c_str(), "RECREATE");
    }
 
-   map< vector<TString>, TH1* >::iterator it;
+   map< vector<string>, TH1* >::iterator it;
    for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
       it->second->Write();
    }
@@ -611,7 +601,7 @@ void TCharissaSpectra::WriteHisto(TString filename)
 ///////////////////////////////////////////////////////////////////////////////
 void TCharissaSpectra::CheckSpectra()
 {
-   map< vector<TString>, TH1* >::iterator it;
+   map< vector<string>, TH1* >::iterator it;
    Color_t ok_color      = kTeal+9;
    Color_t warning_color = kOrange+8;  warning_color *= 1;
    Color_t bad_color     = kRed;       bad_color     *= 1;
diff --git a/NPLib/Charissa/TCharissaSpectra.h b/NPLib/Charissa/TCharissaSpectra.h
index 56bbd447754c61a06072f42897a9d5c9a094c271..17e52d71f10eb3da08b08c51a9efa7360cc75a5b 100644
--- a/NPLib/Charissa/TCharissaSpectra.h
+++ b/NPLib/Charissa/TCharissaSpectra.h
@@ -30,7 +30,6 @@
 #include "TObject.h"
 #include <TH1.h>
 #include <TH2.h>
-#include <TString.h>
 
 // NPLib headers
 #include "TCharissaData.h"
@@ -49,9 +48,9 @@ class TCharissaSpectra {
 
   private:
     // Instantiate and register histo to maps
-    TH1* AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family);
-    TH1* AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, 
-                                                 Int_t nbinsy, Double_t ylow, Double_t yup, TString family);
+    TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
+    TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
+                                                 Int_t nbinsy, Double_t ylow, Double_t yup, string family);
 
     // Initialization methods
     void InitRawSpectra();
@@ -68,9 +67,9 @@ class TCharissaSpectra {
 
   public:
     // get map histo which will be used for GSpectra in GUser
-    map< vector<TString>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(TString family,TString name);    
-    void WriteHisto(TString filename="VOID");      
+    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
+    TH1* GetHisto(string& family,string& name);    
+    void WriteHisto(string filename="VOID");      
 
   private: // Information on CHARISSA
     unsigned int fNumberOfTelescope;
@@ -80,7 +79,7 @@ class TCharissaSpectra {
 
   private:
     // map holding histo pointers and their family names
-    map< vector<TString>, TH1* > fMapHisto;
+    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/Exogam/TExogamData.h b/NPLib/Exogam/TExogamData.h
index 79ca7251389d9bda6f6a829b1ed70d638f67b5f4..e35e13ee5bf9cf9aa23e5a71cb23051f9c14e710 100644
--- a/NPLib/Exogam/TExogamData.h
+++ b/NPLib/Exogam/TExogamData.h
@@ -88,26 +88,26 @@ class TExogamData : public TObject {
       // ECC / Energy
       // UShort_t	GetCloverMult()		{return fEXO_ECC_E_Clover.size();}       
       UShort_t	GetECCEMult()		{return fEXO_ECC_E_Clover.size();}             
-      UShort_t	GetECCEClover(Int_t i)	{return fEXO_ECC_E_Clover.at(i);}
-      UShort_t	GetECCECristal(Int_t i)	{return fEXO_ECC_E_Cristal.at(i);}
-      UShort_t	GetECCEEnergy(Int_t i)	{return fEXO_ECC_E_Energy.at(i);}
+      UShort_t	GetECCEClover(Int_t i)	{return fEXO_ECC_E_Clover[i];}
+      UShort_t	GetECCECristal(Int_t i)	{return fEXO_ECC_E_Cristal[i];}
+      UShort_t	GetECCEEnergy(Int_t i)	{return fEXO_ECC_E_Energy[i];}
       // ECC / Time
       UShort_t	GetECCTMult()		{return fEXO_ECC_T_Clover.size();}
-      UShort_t	GetECCTClover(Int_t i)	{return fEXO_ECC_T_Clover.at(i);}
-      UShort_t	GetECCTCristal(Int_t i)	{return fEXO_ECC_T_Cristal.at(i);}
-      UShort_t	GetECCTTime(Int_t i)	{return fEXO_ECC_T_Time.at(i);}
+      UShort_t	GetECCTClover(Int_t i)	{return fEXO_ECC_T_Clover[i];}
+      UShort_t	GetECCTCristal(Int_t i)	{return fEXO_ECC_T_Cristal[i];}
+      UShort_t	GetECCTTime(Int_t i)	{return fEXO_ECC_T_Time[i];}
       // GOCCE / Energy
       UShort_t	GetGOCCEEMult()			{return fEXO_GOCCE_E_Clover.size();}    // multiplicity of segments hit in one clover
-      UShort_t	GetGOCCEEClover(Int_t i)	{return fEXO_GOCCE_E_Clover.at(i);}
-      UShort_t	GetGOCCEECristal(Int_t i)	{return fEXO_GOCCE_E_Cristal.at(i);}
-      UShort_t	GetGOCCEESegment(Int_t i)	{return fEXO_GOCCE_E_Segment.at(i);}
-      UShort_t	GetGOCCEEEnergy(Int_t i)	{return fEXO_GOCCE_E_Energy.at(i);}
+      UShort_t	GetGOCCEEClover(Int_t i)	{return fEXO_GOCCE_E_Clover[i];}
+      UShort_t	GetGOCCEECristal(Int_t i)	{return fEXO_GOCCE_E_Cristal[i];}
+      UShort_t	GetGOCCEESegment(Int_t i)	{return fEXO_GOCCE_E_Segment[i];}
+      UShort_t	GetGOCCEEEnergy(Int_t i)	{return fEXO_GOCCE_E_Energy[i];}
       // GOCCE / Time
       UShort_t	GetGOCCETMult()			{return fEXO_GOCCE_T_Clover.size();}
-      UShort_t	GetGOCCETClover(Int_t i)	{return fEXO_GOCCE_T_Clover.at(i);}
-      UShort_t	GetGOCCETCristal(Int_t i)	{return fEXO_GOCCE_T_Cristal.at(i);}
-      UShort_t	GetGOCCETSegment(Int_t i)	{return fEXO_GOCCE_T_Segment.at(i);}
-      UShort_t	GetGOCCETTime(Int_t i)		{return fEXO_GOCCE_T_Time.at(i);}
+      UShort_t	GetGOCCETClover(Int_t i)	{return fEXO_GOCCE_T_Clover[i];}
+      UShort_t	GetGOCCETCristal(Int_t i)	{return fEXO_GOCCE_T_Cristal[i];}
+      UShort_t	GetGOCCETSegment(Int_t i)	{return fEXO_GOCCE_T_Segment[i];}
+      UShort_t	GetGOCCETTime(Int_t i)		{return fEXO_GOCCE_T_Time[i];}
       //GeFill
       UShort_t     GetGeFill()               {return fEXO_Fill;}
 
diff --git a/NPLib/Exogam/TExogamPhysics.cxx b/NPLib/Exogam/TExogamPhysics.cxx
index cb09dc2a75ebf0a28ae39bf9685ffd83798aebb6..2f7b30e9de71cc12da2864f0f690439f261173cd 100644
--- a/NPLib/Exogam/TExogamPhysics.cxx
+++ b/NPLib/Exogam/TExogamPhysics.cxx
@@ -556,11 +556,19 @@ void TExogamPhysics::ClearSpectra(){
   // To be done
 }
 ///////////////////////////////////////////////////////////////////////////
+<<<<<<< HEAD
 map< vector<TString> , TH1*> TExogamPhysics::GetSpectra() {
   if(m_Spectra)
     return m_Spectra->GetMapHisto();
   else{
     map< vector<TString> , TH1*> empty;
+=======
+map< vector<string> , TH1*> TExogamPhysics::GetSpectra() {
+  if(m_Spectra)
+    return m_Spectra->GetMapHisto();
+  else{
+    map< vector<string> , TH1*> empty;
+>>>>>>> a51372fab418d17126a214991f612e6da2c5c9be
     return empty;
   }
 } 
diff --git a/NPLib/Exogam/TExogamPhysics.h b/NPLib/Exogam/TExogamPhysics.h
index e41b8fcccad445880f4ae12f1788a60a50494917..3252c28b6f561782f429933fe55ae471fcb0d872 100644
--- a/NPLib/Exogam/TExogamPhysics.h
+++ b/NPLib/Exogam/TExogamPhysics.h
@@ -174,7 +174,7 @@ class TExogamPhysics : public TObject, public NPA::VDetector
     TExogamSpectra*      m_Spectra;//! 
 
   public: // Spectra Getter
-    map< vector<TString> , TH1*> GetSpectra(); 		
+    map< vector<string> , TH1*> GetSpectra(); 		
 
   ClassDef(TExogamPhysics,1)  // ExogamPhysics structure
     };
diff --git a/NPLib/Exogam/TExogamSpectra.cxx b/NPLib/Exogam/TExogamSpectra.cxx
index 87dcf577a4e18b17e9bdae41a3f473dc05cada85..954dde526046c9314bfdd36f0e437b52194667d2 100644
--- a/NPLib/Exogam/TExogamSpectra.cxx
+++ b/NPLib/Exogam/TExogamSpectra.cxx
@@ -21,6 +21,12 @@
  *                                                                           *
  *****************************************************************************/
 
+// STL
+#include <iostream>
+#include <cstdlib>
+#include <stdexcept>
+
+
 // NPL
 #include "TExogamSpectra.h"
 #include "NPOptionManager.h"
@@ -31,7 +37,7 @@ using namespace NPUNITS;
 #endif
 
 // ROOT
-#include "TString.h"
+#include "string.h"
 #include "TDirectory.h"
 #include "TFile.h"
 
@@ -75,7 +81,7 @@ TExogamSpectra::~TExogamSpectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TExogamSpectra::InitRawSpectra(){
-  TString name;
+  string name;
   for (unsigned int i = 0; i < fNumberOfClover; i++) { // loop on number of detectors
    for (unsigned int j = 0; j < fNumberOfCores; j++) { // loop on number of cores
 
@@ -96,7 +102,7 @@ void TExogamSpectra::InitRawSpectra(){
 ////////////////////////////////////////////////////////////////////////////////
 void TExogamSpectra::InitPreTreatedSpectra()
 {
-  TString name;
+  string name;
   for (unsigned int i = 0; i < fNumberOfClover; i++) { // loop on number of detectors
    for (unsigned int j = 0; j < fNumberOfCores; j++) { // loop on number of cores
     	name = Form("ExogamEnergyCal_Clover%d_ECC%d", i+1, j+1);
@@ -115,7 +121,7 @@ void TExogamSpectra::InitPreTreatedSpectra()
 
 ////////////////////////////////////////////////////////////////////////////////
 void TExogamSpectra::InitPhysicsSpectra(){
-  TString name;
+  string name;
   name = "ExogamEnergyAddBack";
   AddHisto1D(name, name, 5000, 0, 5000, "Exogam/DC");
 
@@ -125,25 +131,39 @@ void TExogamSpectra::InitPhysicsSpectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TExogamSpectra::FillRawSpectra(TExogamData* RawData){
+<<<<<<< HEAD
   TString name;
   TString family;
   // Energy and Time RAw 
+=======
+  string name;
+  string family;
+
+  // Energy 
+>>>>>>> a51372fab418d17126a214991f612e6da2c5c9be
   for (unsigned int i = 0; i < RawData->GetECCEMult(); i++) {
 
     name = Form("ExogamEnergyRaw_Clover%d_ECC%d", RawData->GetECCEClover(i)+1,RawData->GetECCECristal(i)+1);
     family = "Exogam/ERAW/ECC";
     GetHisto(family,name)
       -> Fill(RawData->GetECCEEnergy(i));
+<<<<<<< HEAD
    }
 
   for (unsigned int i = 0; i < RawData->GetGOCCEEMult(); i++) {
     name = Form("ExogamEnergyRaw_Clover%d_ECC%d_GOCCE%d", RawData->GetGOCCEEClover(i)+1,RawData->GetGOCCEECristal(i)+1,RawData->GetGOCCEESegment(i)+1);
     family = "Exogam/ERAW/GOCCE";
+=======
+   
+    name = Form("ExogamEnergyRaw_Clover%d_ECC%d_GOCCE%d", RawData->GetECCEClover(i)+1,RawData->GetECCECristal(i)+1,RawData->GetGOCCEESegment(i)+1);
+    family = "Exogam/RAW";
+>>>>>>> a51372fab418d17126a214991f612e6da2c5c9be
 
     GetHisto(family,name)
       -> Fill(RawData->GetGOCCEEEnergy(i));
     }
 
+<<<<<<< HEAD
   for (unsigned int i = 0; i < RawData->GetECCTMult(); i++) {
     name = Form("ExogamTimeRaw_Clover%d_ECC%d", RawData->GetECCTClover(i)+1,RawData->GetECCTCristal(i)+1);
     family = "Exogam/TRAW/ECC";
@@ -151,14 +171,29 @@ void TExogamSpectra::FillRawSpectra(TExogamData* RawData){
     GetHisto(family,name)
       -> Fill(RawData->GetECCTTime(i));
    }
+=======
+  // Time
+  for (unsigned int i = 0; i < RawData->GetECCTMult(); i++) {
+   name = Form("ExogamTimeRaw_Clover%d_ECC%d", RawData->GetECCTClover(i)+1,RawData->GetECCTCristal(i)+1);
+    family = "Exogam/RAW";
+>>>>>>> a51372fab418d17126a214991f612e6da2c5c9be
 
+    GetHisto(family,name)
+      -> Fill(RawData->GetECCTTime(i));
+  }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void TExogamSpectra::FillPreTreatedSpectra(TExogamData* PreTreatedData){
+<<<<<<< HEAD
   TString name ;
   TString family;
   // Energy and Time Cal
+=======
+  string name ;
+  string family;
+  // Energy 
+>>>>>>> a51372fab418d17126a214991f612e6da2c5c9be
   for (unsigned int i = 0; i < PreTreatedData->GetECCEMult(); i++) {
     name = Form("ExogamEnergyCal_Clover%d_ECC%d", PreTreatedData->GetECCEClover(i)+1,PreTreatedData->GetECCECristal(i)+1);
     family = "Exogam/ECal/ECC";
@@ -175,6 +210,7 @@ void TExogamSpectra::FillPreTreatedSpectra(TExogamData* PreTreatedData){
       -> Fill(PreTreatedData->GetGOCCEEEnergy(i));
     }
 
+<<<<<<< HEAD
   for (unsigned int i = 0; i < PreTreatedData->GetECCTMult(); i++) {
     name = Form("ExogamTimeCal_Clover%d_ECC%d", PreTreatedData->GetECCTClover(i)+1,PreTreatedData->GetECCTCristal(i)+1);
     family = "Exogam/TCal/ECC";
@@ -183,13 +219,31 @@ void TExogamSpectra::FillPreTreatedSpectra(TExogamData* PreTreatedData){
       -> Fill(PreTreatedData->GetECCTTime(i));
 
   }
+=======
+   
+    name = Form("ExogamEnergyCal_Clover%d_ECC%d_GOCCE%d", PreTreatedData->GetECCEClover(i)+1,PreTreatedData->GetECCECristal(i)+1,PreTreatedData->GetGOCCEESegment(i)+1);
+    family = "Exogam/Cal";
+
+    GetHisto(family,name)
+      -> Fill(PreTreatedData->GetGOCCEEEnergy(i));
+    }
+
+  // Time
+  for (unsigned int i = 0; i < PreTreatedData->GetECCTMult(); i++) {
+  name = Form("ExogamTimeCal_Clover%d_ECC%d", PreTreatedData->GetECCTClover(i)+1,PreTreatedData->GetECCTCristal(i)+1);
+    family = "Exogam/Cal";
+
+    GetHisto(family,name)
+      -> Fill(PreTreatedData->GetECCTTime(i));
+   }
+>>>>>>> a51372fab418d17126a214991f612e6da2c5c9be
 
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void TExogamSpectra::FillPhysicsSpectra(TExogamPhysics* Physics){
-  TString name;
-  TString family= "Exogam/PHY";
+  string name;
+  string family= "Exogam/PHY";
   // Doppler Correct and Add Back
   name = "ExogamEnergyAddBack";
   family = "Exogam/DC";
@@ -200,11 +254,11 @@ void TExogamSpectra::FillPhysicsSpectra(TExogamPhysics* Physics){
 
 }
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TExogamSpectra::AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family){
+TH1* TExogamSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
   // create histo
-  TH1 *hist = new TH1D(name, title, nbinsx, xlow, xup);
+  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
 
-  vector<TString> index ;
+  vector<string> index ;
   index.push_back(family);
   index.push_back(name);
 
@@ -215,11 +269,11 @@ TH1* TExogamSpectra::AddHisto1D(TString name, TString title, Int_t nbinsx, Doubl
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TExogamSpectra::AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, TString family){
+TH1* TExogamSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
   // create histo
-  TH1 *hist = new TH2D(name, title, nbinsx, xlow, xup, nbinsy, ylow, yup);
+  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
 
-  vector<TString> index ;
+  vector<string> index ;
   index.push_back(family);
   index.push_back(name);
 
@@ -230,24 +284,35 @@ TH1* TExogamSpectra::AddHisto2D(TString name, TString title, Int_t nbinsx, Doubl
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TExogamSpectra::GetHisto(TString family, TString name){
-  vector<TString> index ;
+TH1* TExogamSpectra::GetHisto(string family, string name){
+vector<string> index;
+  index.reserve(2);
   index.push_back(family);
   index.push_back(name);
+  TH1* histo ; 
 
-  // fill map
-  return fMapHisto.at(index);
+  try{
+    histo = fMapHisto.at(index); 
+  }
+
+  catch(const std::out_of_range& oor){
+    cout << "ERROR : the folowing Histo has been requested by TCATSSpectra and does not exist: family:" << family << " name: "  << name << endl ;
+    exit(1);
+  }
+
+  return histo;
 }
 
+
 ////////////////////////////////////////////////////////////////////////////////
-void TExogamSpectra::WriteHisto(TString filename){
+void TExogamSpectra::WriteHisto(string filename){
   TFile* f=NULL; 
 
   if(filename!="VOID"){
-    f = new TFile(filename,"RECREATE");
+    f = new TFile(filename.c_str(),"RECREATE");
   }
 
-  map< vector<TString>, TH1* >::iterator it;
+  map< vector<string>, TH1* >::iterator it;
 
   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it){
     it->second->Write();
@@ -261,7 +326,7 @@ void TExogamSpectra::WriteHisto(TString filename){
 }
 ///////////////////////////////////////////////////////////////////////////////
 void TExogamSpectra::CheckSpectra(){
-map< vector<TString>, TH1* >::iterator it;
+map< vector<string>, TH1* >::iterator it;
   Color_t ok_color = kTeal+9;
   Color_t warning_color = kOrange+8;   warning_color *= 1;
   Color_t bad_color = kRed;            bad_color *= 1;
diff --git a/NPLib/Exogam/TExogamSpectra.h b/NPLib/Exogam/TExogamSpectra.h
index df97e2c953d4bafdee7117e0c137164d6079c3fe..67fb7e37def9c785f32a4f95d6cdd980e4ac0edd 100644
--- a/NPLib/Exogam/TExogamSpectra.h
+++ b/NPLib/Exogam/TExogamSpectra.h
@@ -30,7 +30,6 @@
 #include "TObject.h"
 #include <TH1.h>
 #include <TH2.h>
-#include <TString.h>
 
 // NPLib headers
 #include "TExogamData.h"
@@ -49,9 +48,9 @@ class TExogamSpectra {
 
   private:
     // Instantiate and register histo to maps
-    TH1* AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family);
-    TH1* AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, 
-        Int_t nbinsy, Double_t ylow, Double_t yup,TString family);
+    TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
+    TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
+        Int_t nbinsy, Double_t ylow, Double_t yup,string family);
 
     // Initialization methods
     void InitRawSpectra();
@@ -68,9 +67,9 @@ class TExogamSpectra {
 
   public:
     // get map histo which will be used for GSpectra in GUser
-    map< vector<TString>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(TString family,TString name);    
-    void WriteHisto(TString filename="VOID");      
+    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
+    TH1* GetHisto(string family,string name);    
+    void WriteHisto(string filename="VOID");      
 
   private: // Information on Exogam
     unsigned int fNumberOfClover ;
@@ -85,7 +84,7 @@ class TExogamSpectra {
 
   private:
     // map holding histo pointers and their family names
-    map< vector<TString>, TH1* > fMapHisto;
+    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/IORoot/RootOutput.cxx b/NPLib/IORoot/RootOutput.cxx
index 476c1c008118ad6a0a599f4c00a8a7c7c04424ab..736de7f9a23556c0ecb7a38cb046bcb231c565fd 100644
--- a/NPLib/IORoot/RootOutput.cxx
+++ b/NPLib/IORoot/RootOutput.cxx
@@ -43,7 +43,7 @@ RootOutput* RootOutput::getInstance(TString fileNameBase, TString treeNameBase)
 
 
 void RootOutput::Destroy()
-{
+{ 
    if (instance != 0) {
       delete instance;
       instance = 0;
@@ -53,6 +53,8 @@ void RootOutput::Destroy()
 
 RootOutput::RootOutput(TString fileNameBase, TString treeNameBase)
 {
+   TDirectory* currentPath= gDirectory;
+
    // The file extension is added to the file name:
    TString GlobalPath = getenv("NPTOOL");
    
@@ -76,6 +78,7 @@ RootOutput::RootOutput(TString fileNameBase, TString treeNameBase)
   
   // Init TAsciiFile objects
   InitAsciiFiles();
+  gDirectory->cd(currentPath->GetPath()); 
 }
 
 
@@ -123,9 +126,11 @@ void RootOutput::InitAsciiFiles()
 
 
 RootOutput::~RootOutput()
-{
+{ 
     // The data is written to the file and the tree is closed:
     if (pRootFile && !NPOptionManager::getInstance()->GetPROOF()) {
+      TDirectory* currentPath= gDirectory;
+      gDirectory->cd(pRootFile->GetPath());
       cout << endl;
       cout << "Got histograms and Tree !" << endl;
       cout << "  - Number of entries in the Tree: " << pRootTree->GetEntries() << endl;
@@ -143,6 +148,7 @@ RootOutput::~RootOutput()
       // Analysis ConfigFile
       if (!pAnalysisConfigFile->IsEmpty()) pAnalysisConfigFile->Write();
       pRootFile->Flush();
+       gDirectory->cd(currentPath->GetPath());
       pRootFile->Close();
     }
   
diff --git a/NPLib/LaBr3/Makefile b/NPLib/LaBr3/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..c298bfb3388d496503177e36b01bb5528af7d0b9
--- /dev/null
+++ b/NPLib/LaBr3/Makefile
@@ -0,0 +1,40 @@
+include ../Makefile.arch
+
+#------------------------------------------------------------------------------
+SHARELIB      =  libLaBr3.so
+
+all:            $(SHARELIB)
+#------------------------------------------------------------------------------
+############### Detector ##############
+
+## LaBr3 ##
+libLaBr3.so: TLaBr3Data.o	TLaBr3DataDict.o TLaBr3Physics.o	TLaBr3PhysicsDict.o TLaBr3Spectra.o
+			$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TLaBr3DataDict.cxx:	TLaBr3Data.h
+			rootcint -f $@ -c $^
+
+TLaBr3PhysicsDict.cxx:	TLaBr3Physics.h
+			rootcint -f $@ -c $^
+
+# dependances
+TLaBr3Data.o:	TLaBr3Data.cxx	TLaBr3Data.h
+TLaBr3Physics.o:	TLaBr3Physics.cxx	TLaBr3Physics.h
+TLaBr3Spectra.o:	TLaBr3Spectra.cxx	TLaBr3Spectra.h
+#######################################
+
+############# Clean and More ##########
+clean:
+	@rm -f core *~ *.o *Dict*
+
+distclean:
+	  make clean; rm -f *.so
+
+.SUFFIXES: .$(SrcSuf)
+
+###
+
+.$(SrcSuf).$(ObjSuf):
+	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
+
+
diff --git a/NPLib/LaBr3/TLaBr3Data.cxx b/NPLib/LaBr3/TLaBr3Data.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..9cbb6aed91f94d5e0f76408a7f2976a2f83757f2
--- /dev/null
+++ b/NPLib/LaBr3/TLaBr3Data.cxx
@@ -0,0 +1,64 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2013   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ *                                                                           *
+ * Original Author :  Adrien MATTA    contact address: matta@ipno.in2p3.fr   *
+ *                                                                           *
+ * Creation Date   :                                                         *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include <iostream>
+#include "TLaBr3Data.h"
+
+
+ClassImp(TLaBr3Data)
+
+TLaBr3Data::TLaBr3Data()
+{
+}
+
+
+
+TLaBr3Data::~TLaBr3Data()
+{
+}
+
+
+
+void TLaBr3Data::Clear()
+{
+   // Energy
+   fLaBr3_E_Number.clear();
+   fLaBr3_E_Energy.clear();
+   // Time
+   fLaBr3_T_Number.clear();
+   fLaBr3_T_Time.clear();
+}
+
+
+
+void TLaBr3Data::Dump() const
+{
+   cout << "XXXXXXXXXXXXXXXXXXXXXXXX TLaBr3: New Event XXXXXXXXXXXXXXXXX" << endl;
+
+   // Energy
+   for (unsigned short i = 0 ; i< fLaBr3_E_Energy.size() ; i ++) {
+         cout << "LaBr3 Number " << fLaBr3_E_Number[i] << " Energy: " << fLaBr3_E_Energy[i]  << endl;
+   }
+   
+   // Time
+   for (unsigned short i = 0 ; i< fLaBr3_T_Time.size() ; i ++) {
+         cout << "LaBr3 Number " << fLaBr3_T_Number[i] << " Time: " << fLaBr3_T_Time[i]  << endl;
+   }
+}
diff --git a/NPLib/LaBr3/TLaBr3Data.h b/NPLib/LaBr3/TLaBr3Data.h
new file mode 100644
index 0000000000000000000000000000000000000000..13b5b06f53c34834b0526cd233dc01aa11321f1d
--- /dev/null
+++ b/NPLib/LaBr3/TLaBr3Data.h
@@ -0,0 +1,67 @@
+#ifndef __LABR3DATA__
+#define __LABR3DATA__
+/*****************************************************************************
+ * Copyright (C) 2009-2013    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:    contact address:                                      *
+ *                                                                           *
+ * Creation Date  :                                                          *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include <vector>
+
+#include "TObject.h"
+using namespace std ;
+
+
+class TLaBr3Data : public TObject {
+ private:
+   // Energy 
+   vector<short>   fLaBr3_E_Number;
+   vector<double>  fLaBr3_E_Energy;   
+   // Time
+   vector<short>   fLaBr3_T_Number;
+   vector<double>  fLaBr3_T_Time;
+   
+ public:
+   TLaBr3Data();
+   virtual ~TLaBr3Data();
+
+   void   Clear();
+   void   Clear(const Option_t*) {};
+   void   Dump() const;
+
+   /////////////////////           GETTERS           ////////////////////////
+   // Energy
+   unsigned int   GetEnergyMult()   {return fLaBr3_E_Number.size();}
+   int            GetENumber(int i) {return fLaBr3_E_Number[i];}
+   double         GetEEnergy(int i) {return fLaBr3_E_Energy[i];}
+   // Time 
+   unsigned int   GetTimeMult()     {return fLaBr3_T_Number.size();}
+   int            GetTNumber(int i) {return fLaBr3_T_Number[i];}
+   double         GetTTime(int i)   {return fLaBr3_T_Time[i];}
+
+   /////////////////////           SETTERS           ////////////////////////
+   // Energy
+   void     SetENumber(int N)    {fLaBr3_E_Number.push_back(N);}
+   void     SetEEnergy(double E) {fLaBr3_E_Energy.push_back(E);}
+   // time
+   void     SetTNumber(int N)    {fLaBr3_T_Number.push_back(N);}
+   void     SetTTime(double T)   {fLaBr3_T_Time.push_back(T);}
+
+   ClassDef(TLaBr3Data,1)  // LaBr3Data structure
+};
+
+#endif
diff --git a/NPLib/LaBr3/TLaBr3Physics.cxx b/NPLib/LaBr3/TLaBr3Physics.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..371eb12833d8fa46dd27e85800cde30597e94489
--- /dev/null
+++ b/NPLib/LaBr3/TLaBr3Physics.cxx
@@ -0,0 +1,338 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2013   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : november 2009                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold LaBr3  Physics                                         *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+//   NPL
+#include "TLaBr3Physics.h"
+#include "../include/RootOutput.h"
+#include "../include/RootInput.h"
+
+//   STL
+#include <iostream>
+#include <sstream>
+#include <fstream>
+#include <limits>
+#include <stdlib.h>
+using namespace std;
+
+//   ROOT
+#include "TChain.h"
+
+//   tranform an integer to a string
+string itoa(int value)
+{
+   char buffer [33];
+   sprintf(buffer,"%d",value);
+   return buffer;
+}
+
+ClassImp(TLaBr3Physics)
+///////////////////////////////////////////////////////////////////////////
+TLaBr3Physics::TLaBr3Physics()
+   {      
+      NumberOfDetector = 0 ;
+      EventData = new TLaBr3Data ;
+      PreTreatedData = new TLaBr3Data ;
+      EventPhysics = this ;
+      m_Spectra = NULL;
+      m_LaBr3_E_Threshold   = 0;   
+      m_LaBr3_RAW_Threshold   = 0;   
+   }
+   
+///////////////////////////////////////////////////////////////////////////
+TLaBr3Physics::~TLaBr3Physics()
+   {}
+   
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::Clear()
+   {
+
+      DetectorNumber.clear() ;
+      Energy.clear() ;
+      Time.clear() ;
+   }
+   
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::ReadConfiguration(string Path) 
+   {
+      ifstream ConfigFile           ;
+      ConfigFile.open(Path.c_str()) ;
+      string LineBuffer             ;
+      string DataBuffer             ;
+
+      bool check_Theta = false          ;
+      bool check_Phi  = false           ;
+      bool check_R     = false          ;
+      bool check_Radius = false         ;
+      bool check_Height = false         ;
+      bool check_X = false              ;
+      bool check_Y = false              ;
+      bool check_Z = false              ;      
+      bool ReadingStatus = false        ;
+
+    while (!ConfigFile.eof()) 
+       {
+         
+         getline(ConfigFile, LineBuffer);
+
+         //   If line is a Start Up LaBr3 bloc, Reading toggle to true      
+         if (LineBuffer.compare(0, 5, "LaBr3") == 0) 
+            {
+               cout << "///" << endl ;
+               cout << "LaBr3 found: " << endl ;        
+               ReadingStatus = true ;
+            }
+            
+         //   Else don't toggle to Reading Block Status
+         else ReadingStatus = false ;
+         
+         //   Reading Block
+         while(ReadingStatus)
+            {
+               // Pickup Next Word 
+               ConfigFile >> DataBuffer ;
+
+               //   Comment Line 
+               if (DataBuffer.compare(0, 1, "%") == 0) {   ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
+
+                  //   Finding another telescope (safety), toggle out
+               else if (DataBuffer.compare(0, 5, "LaBr3") == 0) {
+                  cout << "WARNING: Another Detector is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
+                  ReadingStatus = false ;
+               }
+                              
+                                    //Angle method
+               else if (DataBuffer=="THETA=") {
+                  check_Theta = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "Theta:  " << atof(DataBuffer.c_str()) << "deg" << endl;
+               }
+
+               else if (DataBuffer=="PHI=") {
+                  check_Phi = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "Phi:  " << atof( DataBuffer.c_str() ) << "deg" << endl;
+               }
+
+               else if (DataBuffer=="R=") {
+                  check_R = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "R:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+               //Position method
+               else if (DataBuffer=="X=") {
+                  check_X = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "X:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+
+               else if (DataBuffer=="Y=") {
+                  check_Y = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "Y:  " << atof( DataBuffer.c_str() ) << "mm"<< endl;
+               }
+
+               else if (DataBuffer=="Z=") {
+                  check_Z = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "Z:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+               
+                 
+               // Cylindrical shape
+               else if (DataBuffer== "Radius=") {
+                  check_Radius = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "LaBr3 Radius:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+ 
+               
+               else if (DataBuffer== "Height=") {
+                  check_Height = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "LaBr3 Height:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+                                                 
+               ///////////////////////////////////////////////////
+               //   If no Detector Token and no comment, toggle out
+               else 
+                  {ReadingStatus = false; cout << "Wrong Token Sequence: Getting out " << DataBuffer << endl ;}
+               
+                  /////////////////////////////////////////////////
+                  //   If All necessary information there, toggle out
+               
+               if ( check_Theta && check_Phi && check_R &&  check_Radius &&      check_Height &&    check_X && check_Y && check_Z ) 
+                  { 
+                     NumberOfDetector++;
+                     
+                     //   Reinitialisation of Check Boolean  
+                     check_Theta = false          ;
+                     check_Phi  = false           ;
+                     check_R     = false          ;
+                     check_Radius = false         ;
+                     check_Height = false         ;
+                     check_X = false              ;
+                     check_Y = false              ;
+                     check_Z = false              ;
+                     ReadingStatus = false        ;   
+                     cout << "///"<< endl         ;                
+                  }
+            }
+      }
+   }
+
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::AddParameterToCalibrationManager()
+   {
+      CalibrationManager* Cal = CalibrationManager::getInstance();
+      
+      for(int i = 0 ; i < NumberOfDetector ; i++)
+         {
+                  Cal->AddParameter("LaBr3", "Detector"+itoa(i+1)+"_E","LaBr3_Detector"+itoa(i+1)+"_E")   ;
+                  Cal->AddParameter("LaBr3", "Detector"+itoa(i+1)+"_T","LaBr3_Detector"+itoa(i+1)+"_T")   ;         
+         }
+   }
+   
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::InitializeRootInputRaw() 
+   {
+      TChain* inputChain = RootInput::getInstance()->GetChain()     ;
+      inputChain->SetBranchStatus ( "LaBr3"       , true )        ;
+      inputChain->SetBranchStatus ( "fLaBr3_*"    , true )        ;
+      inputChain->SetBranchAddress( "LaBr3"       , &EventData )  ;
+   }
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::InitializeRootInputPhysics()
+   {
+      TChain* inputChain = RootInput::getInstance()->GetChain();
+      inputChain->SetBranchStatus ( "LaBr3", true );
+      inputChain->SetBranchStatus ( "DetectorNumber", true );
+      inputChain->SetBranchStatus ( "Energy", true );
+      inputChain->SetBranchStatus ( "Time", true );
+      inputChain->SetBranchAddress( "LaBr3", &EventPhysics );
+   }
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::InitializeRootOutput()
+   {
+      TTree* outputTree = RootOutput::getInstance()->GetTree()            ;
+      outputTree->Branch( "LaBr3" , "TLaBr3Physics" , &EventPhysics ) ;
+   }
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::InitSpectra(){  
+   m_Spectra = new TLaBr3Spectra(NumberOfDetector);
+}
+
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::FillSpectra(){  
+   m_Spectra -> FillRawSpectra(EventData);
+   m_Spectra -> FillPreTreatedSpectra(PreTreatedData);
+   m_Spectra -> FillPhysicsSpectra(EventPhysics);
+}
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::CheckSpectra(){  
+  m_Spectra->CheckSpectra();  
+}
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::ClearSpectra(){  
+  // To be done
+}
+///////////////////////////////////////////////////////////////////////////
+map< vector<string> , TH1*> TLaBr3Physics::GetSpectra() {
+  if(m_Spectra)
+    return m_Spectra->GetMapHisto();
+  else{
+    map< vector<string> , TH1*> empty;
+    return empty;
+  }
+} 
+///////////////////////////////////////////////////////////////////////////
+
+void TLaBr3Physics::PreTreat(){  
+
+  //   X
+  //   E
+  ClearPreTreatedData();
+  double E,T;
+  for(unsigned int i = 0 ; i < EventData->GetEnergyMult() ; ++i)
+    {
+    	if( EventData->GetEEnergy(i)>m_LaBr3_RAW_Threshold )
+    	{
+		E=CalibrationManager::getInstance()->ApplyCalibration("LaBr3/Detector" + itoa( EventData->GetENumber(i) ) +"_E",EventData->GetEEnergy(i));
+    		if(E>m_LaBr3_E_Threshold)
+    		{
+        		PreTreatedData->SetENumber( EventData->GetENumber(i) );
+        		PreTreatedData->SetEEnergy( E );
+    		}
+    	}
+    }
+  for(unsigned int i = 0 ; i < EventData->GetTimeMult() ; ++i)
+    {
+	T=CalibrationManager::getInstance()->ApplyCalibration("LaBr3/Detector"+itoa(EventData->GetTNumber(i))+"_T",EventData->GetTTime(i) ) ;      
+	PreTreatedData->SetTNumber( EventData->GetTNumber(i) );
+        PreTreatedData->SetTTime( T );
+            
+    }  
+    
+}
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::BuildPhysicalEvent()
+   {
+      BuildSimplePhysicalEvent()   ;
+   }
+
+///////////////////////////////////////////////////////////////////////////
+void TLaBr3Physics::BuildSimplePhysicalEvent()
+   {
+      PreTreat();
+
+      double LaBr3_T=-1000;  
+      double LaBr3_E=-1000;  
+      int LaBr3_N=-1000;  
+      vector<double> LaBr3_E_vect,LaBr3_T_vect;
+      vector<int> LaBr3_N_vect;
+      for(unsigned int j = 0 ; j < EventData->GetEnergyMult() ; j++)  
+      {
+        LaBr3_E=PreTreatedData->GetEEnergy(j);  
+        LaBr3_N=PreTreatedData->GetENumber(j);  
+     	for(unsigned int i = 0 ; i < EventData->GetTimeMult() ; i++)  
+      	{
+      		if(PreTreatedData->GetENumber(j)==PreTreatedData->GetTNumber(i)) 
+      		{
+      			LaBr3_T=EventData->GetTTime(i);
+      		}
+      	}
+      	LaBr3_E_vect.push_back( LaBr3_E); 
+      	LaBr3_T_vect.push_back( LaBr3_T); 
+      	LaBr3_N_vect.push_back( LaBr3_N); 
+      }
+      for(unsigned int i = 0 ; i < LaBr3_E_vect.size() ; i++)
+         {
+            DetectorNumber.push_back( LaBr3_N_vect[i] )   ;
+            Energy.push_back( LaBr3_E_vect[i]  );
+            Time.push_back( LaBr3_T_vect[i]  );
+         }
+
+   }
+
+
diff --git a/NPLib/LaBr3/TLaBr3Physics.h b/NPLib/LaBr3/TLaBr3Physics.h
new file mode 100644
index 0000000000000000000000000000000000000000..740f68073c1720f552ed9b5c92e062233178af2d
--- /dev/null
+++ b/NPLib/LaBr3/TLaBr3Physics.h
@@ -0,0 +1,120 @@
+#ifndef __LaBr3Physics__
+#define __LaBr3Physics__
+/*****************************************************************************
+ * Copyright (C) 2009-2013    this file is part of the NPTool Project        *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : November 2009                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold theLaBr3 Detector  Physics                             *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+ 
+//   STL
+#include <vector>
+using namespace std ;
+
+class TLaBr3Spectra;
+//   ROOT
+#include "TObject.h"
+
+//   NPL
+#include "TLaBr3Data.h"
+#include "TLaBr3Spectra.h"
+#include "../include/VDetector.h"
+#include "../include/CalibrationManager.h"
+
+class TLaBr3Physics : public TObject, public NPA::VDetector
+{
+   public:   //   Constructor and Destructor
+      TLaBr3Physics();
+      ~TLaBr3Physics();
+
+   public:
+      void  Clear();
+      void  Clear(const Option_t*) {};
+   
+   public:   //   Calibrated Data
+      vector<UShort_t>   DetectorNumber ;
+      vector<Double_t>   Energy;
+      vector<Double_t>   Time;
+
+   public:   //   inherrited from VDetector
+      //   Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
+      void ReadConfiguration(string);
+      
+
+      //   Add Parameter to the CalibrationManger
+      void AddParameterToCalibrationManager();      
+
+      //   Activated associated Branches and link it to the private member DetectorData address
+      //   In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
+      void InitializeRootInputRaw() ;
+      
+      //   Activated associated Branches and link it to the private member DetectorPhysics address
+      //   In this method mother Branches (Detector) AND daughter leaf (parameter) have to be activated
+      void InitializeRootInputPhysics() ;
+
+      //   Create associated branches and associated private member DetectorPhysics address
+      void InitializeRootOutput();
+      
+      //   This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. 
+      void BuildPhysicalEvent();
+      
+      //   Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...).
+      //   This method aimed to be used for analysis performed during experiment, when speed is requiered.
+      //   NB: This method can eventually be the same as BuildPhysicalEvent.
+      void BuildSimplePhysicalEvent();
+
+      // Same as above but for online analysis
+      void BuildOnlinePhysicalEvent()  {BuildPhysicalEvent();};
+
+      // Give and external TLaBr3Data object to TLaBr3Physics. Needed for online analysis for example.
+      void SetRawDataPointer(TLaBr3Data* rawDataPointer) {EventData = rawDataPointer;}
+
+      //   Those two method all to clear the Event Physics or Data
+      void ClearEventPhysics() {Clear();}      
+      void ClearEventData()    {EventData->Clear();}      
+
+    // Method related to the TSpectra classes, aimed at providing a framework for online applications
+    // Instantiate the Spectra class and the histogramm throught it
+    void InitSpectra();
+    // Fill the spectra hold by the spectra class
+    void FillSpectra();
+    // Used for Online mainly, perform check on the histo and for example change their color if issues are found
+    void CheckSpectra();
+    // Used for Online only, clear all the spectra hold by the Spectra class
+    void ClearSpectra();
+    //   Clear The PreTeated object
+    void ClearPreTreatedData()   {PreTreatedData->Clear();}
+
+    //   Remove bad channel, calibrate the data and apply threshold
+    void PreTreat();
+    
+   private:   // Data not writted in the tree
+      int                NumberOfDetector ;//!
+      TLaBr3Data*         EventData ;//!
+      TLaBr3Data*         PreTreatedData ;//!
+      TLaBr3Physics*      EventPhysics ;//!
+      TLaBr3Spectra*	     m_Spectra;//!
+      double 		 m_LaBr3_E_Threshold;   
+      double 		 m_LaBr3_RAW_Threshold;   
+  public: // Spectra Getter
+    map< vector<string> , TH1*> GetSpectra(); 
+
+      ClassDef(TLaBr3Physics,1)  // LaBr3Physics structure
+};
+
+#endif
diff --git a/NPLib/LaBr3/TLaBr3Spectra.cxx b/NPLib/LaBr3/TLaBr3Spectra.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..c52e1ec91d593890bd62aac5995ec8629c09abfc
--- /dev/null
+++ b/NPLib/LaBr3/TLaBr3Spectra.cxx
@@ -0,0 +1,433 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2013   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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : dec 2013                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds all the online spectra needed for LaBr3              *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *    + first version (not complete yet)                                     *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+// STL
+#include <iostream>
+#include <cstdlib>
+#include <stdexcept>
+
+// NPL
+#include "TLaBr3Spectra.h"
+#include "NPOptionManager.h"
+#include "NPGlobalSystemOfUnits.h"
+#include "NPPhysicalConstants.h"
+#ifdef NP_SYSTEM_OF_UNITS_H
+using namespace NPUNITS;
+#endif
+
+
+// ROOT
+#include "string.h"
+#include "TDirectory.h"
+#include "TFile.h"
+
+
+////////////////////////////////////////////////////////////////////////////////
+TLaBr3Spectra::TLaBr3Spectra()
+{
+  fNumberDetector =  0;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TLaBr3Spectra::TLaBr3Spectra(unsigned int NumberOfDetectors)
+{
+  if(NPOptionManager::getInstance()->GetVerboseLevel()>0)
+    cout << "************************************************" << endl
+      << "TLaBr3Spectra : Initalising control spectra for " 
+      << NumberOfDetectors << " detectorss" << endl
+      << "************************************************" << endl ;
+
+  fNumberDetector = NumberOfDetectors;
+
+  InitRawSpectra();
+  InitPreTreatedSpectra();
+  InitPhysicsSpectra();
+}
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TLaBr3Spectra::~TLaBr3Spectra(){
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TLaBr3Spectra::InitRawSpectra()
+{
+   string name;
+   int NbrBin = 512;
+   int MinBin = 0;
+   int MaxBin = 16384;
+   for (unsigned int i = 0; i < fNumberDetector; i++) { // loop on number of detectors
+      // LABR3_E_RAW
+      name = Form("LABR3_%d_E_RAW", i+1);cout<<Form("LABR3_%d_E_RAW", i+1)<<endl;
+      AddHisto1D(name, name, NbrBin, MinBin, MaxBin, "LABR3/RAW/ENERGY");
+
+      // LABR3_T_RAW
+      name = Form("LABR3_%d_T_RAW", i+1);
+      AddHisto1D(name, name, NbrBin, MinBin, MaxBin, "LABR3/RAW/TIME");
+   } // end loop on number of detectors
+
+   // LABR3_E_RAW
+   name = "LABR3_E_RAW";
+   AddHisto2D(name, name, fNumberDetector, 1, fNumberDetector+1, NbrBin, MinBin, MaxBin, "LABR3/RAW/ENERGY");
+
+   // LABR3_T_RAW
+   name = "LABR3_T_RAW";
+   AddHisto2D(name, name, fNumberDetector, 1, fNumberDetector+1, NbrBin, MinBin, MaxBin, "LABR3/RAW/TIME");
+
+   // LABR3_HIT_E_RAW
+   name = "LABR3_HITPATTERN_E_RAW";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "LABR3/RAW/ENERGY");
+
+   // LABR3_HIT_T_RAW
+   name = "LABR3_HITPATTERN_T_RAW";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "LABR3/RAW/TIME");
+
+   // E_RAW_MULT
+   name = "LABR3_E_RAW_MULT";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "LABR3/RAW/MULT");
+
+   // T_RAW_MULT
+   name = "LABR3_T_RAW_MULT";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "LABR3/RAW/MULT");
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TLaBr3Spectra::InitPreTreatedSpectra()
+{
+   string name;
+   int NbrBin  = 512;
+   int MinBinE = 0;
+   int MaxBinE = 10;    // MeV
+   int MinBinT = 0;
+   int MaxBinT = 1;     // us 
+ 
+   for (unsigned int i = 0; i < fNumberDetector; i++) { // loop on number of detectors
+      // LABR3_E_CAL
+      name = Form("LABR3_%d_E_CAL", i+1);
+      AddHisto1D(name, name, NbrBin, MinBinE, MaxBinE, "LABR3/CAL/ENERGY");
+
+      // LABR3_T_CAL
+      name = Form("LABR3_%d_T_CAL", i+1);
+      AddHisto1D(name, name, NbrBin, MinBinT, MaxBinT, "LABR3/CAL/TIME");
+
+   } // end loop on number of detectors
+
+   // LABR3_E_CAL
+   name = "LABR3_ESUM_CAL";
+   AddHisto1D(name, name, NbrBin, MinBinE, MaxBinE, "LABR3/CAL/ENERGY");
+
+   // LABR3_E_CAL
+   name = "LABR3_E_CAL";
+   AddHisto2D(name, name, fNumberDetector, 1, fNumberDetector+1, NbrBin, MinBinE, MaxBinE, "LABR3/CAL/ENERGY");
+
+   // LABR3_T_CAL
+   name = "LABR3_T_CAL";
+   AddHisto2D(name, name, fNumberDetector, 1, fNumberDetector+1, NbrBin, MinBinT, MaxBinT, "LABR3/CAL/TIME");
+
+   // LABR3_HIT_E_CAL
+   name = "LABR3_HITPATTERN_E_CAL";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "LABR3/CAL/ENERGY");
+
+   // LABR3_HIT_T_CAL
+   name = "LABR3_HITPATTERN_T_CAL";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "LABR3/CAL/TIME");
+
+   // E_CAL_MULT
+   name = "LABR3_E_CAL_MULT";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "LABR3/CAL/MULT");
+
+   // T_CAL_MULT
+   name = "LABR3_T_CAL_MULT";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "LABR3/CAL/MULT");
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TLaBr3Spectra::InitPhysicsSpectra()
+{
+   string name;
+
+   int NbrBin  = 512;
+   int MinBinE = 0;
+   int MaxBinE = 10;
+   int MinBinT = 0;
+   int MaxBinT = 1;
+
+   // Energy-Time Correlation
+   for (unsigned int i = 0 ; i < fNumberDetector ; i++) { // loop on number of detectors
+      name = Form("LABR3_%d_E_TOF", i+1);
+      AddHisto2D(name, name, NbrBin, MinBinE, MaxBinE, NbrBin, MinBinT, MaxBinT, "LABR3/PHY"); 
+   }
+
+   // E-TOF:
+   name = "LABR3_E_TOF";
+   AddHisto2D(name, name, NbrBin, MinBinE, MaxBinE, NbrBin, MinBinT, MaxBinT, "LABR3/PHY");
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TLaBr3Spectra::FillRawSpectra(TLaBr3Data* RawData)
+{
+   string name;
+   string family;
+  
+   // E_RAW
+   for (unsigned int i = 0; i < RawData->GetEnergyMult(); i++) {
+      name   = Form("LABR3_%d_E_RAW", RawData->GetENumber(i));
+      family = "LABR3/RAW/ENERGY";
+      GetHisto(family,name) -> Fill(RawData->GetEEnergy(i));
+   }
+
+   // T_RAW
+   for (unsigned int i = 0; i < RawData->GetTimeMult(); i++) {
+      name   = Form("LABR3_%d_T_RAW", RawData->GetTNumber(i));
+      family = "LABR3/RAW/TIME";
+      GetHisto(family,name) -> Fill(RawData->GetTTime(i));
+   }
+
+   // LABR3_E_RAW
+   name = "LABR3_E_RAW";
+   family = "LABR3/RAW/ENERGY";
+   for (unsigned int i = 0; i < RawData->GetEnergyMult(); i++) {
+      GetHisto(family,name) -> Fill(RawData->GetENumber(i), RawData->GetEEnergy(i));
+   }
+
+   // LABR3_T_RAW
+   name = "LABR3_T_RAW";
+   family = "LABR3/RAW/TIME";
+   for (unsigned int i = 0; i < RawData->GetTimeMult(); i++) {
+      GetHisto(family,name) -> Fill(RawData->GetTNumber(i), RawData->GetTTime(i));
+   }
+
+   // LABR3_HIT_E_RAW
+   name = "LABR3_HITPATTERN_E_RAW";
+   family = "LABR3/RAW/ENERGY";
+   for (unsigned int i = 0; i < RawData->GetEnergyMult(); i++) {
+      GetHisto(family,name) -> Fill(RawData->GetENumber(i));
+   }
+
+   // LABR3_HIT_T_RAW
+   name = "LABR3_HITPATTERN_T_RAW";
+   family = "LABR3/RAW/TIME";
+   for (unsigned int i = 0; i < RawData->GetTimeMult(); i++) {
+      GetHisto(family,name) -> Fill(RawData->GetTNumber(i));
+   }
+
+   // E_RAW_MULT
+   name = "LABR3_E_RAW_MULT";
+   family = "LABR3/RAW/MULT";
+   GetHisto(family,name) -> Fill(RawData->GetEnergyMult());
+
+   // T_RAW_MULT
+   name = "LABR3_T_RAW_MULT";
+   family = "LABR3/RAW/MULT";
+   GetHisto(family,name) -> Fill(RawData->GetTimeMult());
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TLaBr3Spectra::FillPreTreatedSpectra(TLaBr3Data* PreTreatedData)
+{
+   string name;
+   string family;
+  
+   // E_CAL
+   for (unsigned int i = 0; i < PreTreatedData->GetEnergyMult(); i++) {
+      name   = Form("LABR3_%d_E_CAL", PreTreatedData->GetENumber(i));
+      family = "LABR3/CAL/ENERGY";
+      GetHisto(family,name) -> Fill(PreTreatedData->GetEEnergy(i));
+   }
+
+   // T_CAL
+   for (unsigned int i = 0; i < PreTreatedData->GetTimeMult(); i++) {
+      name   = Form("LABR3_%d_T_CAL", PreTreatedData->GetTNumber(i));
+      family = "LABR3/CAL/TIME";
+      GetHisto(family,name) -> Fill(PreTreatedData->GetTTime(i));
+   }
+
+   // LABR3_E_CAL
+   name = "LABR3_E_CAL";
+   family = "LABR3/CAL/ENERGY";
+   for (unsigned int i = 0; i < PreTreatedData->GetEnergyMult(); i++) {
+      GetHisto(family,name) -> Fill(PreTreatedData->GetENumber(i), PreTreatedData->GetEEnergy(i));
+   }
+
+   // LABR3_T_CAL
+   name = "LABR3_T_CAL";
+   family = "LABR3/CAL/TIME";
+   for (unsigned int i = 0; i < PreTreatedData->GetTimeMult(); i++) {
+      GetHisto(family,name) -> Fill(PreTreatedData->GetTNumber(i), PreTreatedData->GetTTime(i));
+   }
+
+   // LABR3_HIT_E_CAL
+   name = "LABR3_HITPATTERN_E_CAL";
+   family = "LABR3/CAL/ENERGY";
+   for (unsigned int i = 0; i < PreTreatedData->GetEnergyMult(); i++) {
+      GetHisto(family,name) -> Fill(PreTreatedData->GetENumber(i));
+   }
+
+   // LABR3_HIT_T_CAL
+   name = "LABR3_HITPATTERN_T_CAL";
+   family = "LABR3/CAL/TIME";
+   for (unsigned int i = 0; i < PreTreatedData->GetTimeMult(); i++) {
+      GetHisto(family,name) -> Fill(PreTreatedData->GetTNumber(i));
+   }
+
+   // E_CAL_MULT
+   name = "LABR3_E_CAL_MULT";
+   family = "LABR3/CAL/MULT";
+   GetHisto(family,name) -> Fill(PreTreatedData->GetEnergyMult());
+
+   // T_CAL_MULT
+   name = "LABR3_T_CAL_MULT";
+   family = "LABR3/CAL/MULT";
+   GetHisto(family,name) -> Fill(PreTreatedData->GetTimeMult());
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TLaBr3Spectra::FillPhysicsSpectra(TLaBr3Physics* Physics)
+{
+   string name;
+   string family = "LABR3/PHY";
+
+
+   // Energy-Time Correlation
+   for (unsigned int i = 0 ; i < Physics->DetectorNumber.size(); i++) { // loop on number of detectors
+      name = Form("LABR3_%d_E_TOF", i+1);
+      GetHisto(family,name) -> Fill(Physics->Time[i], Physics->Energy[i]);
+   }
+
+   // E-TOF:
+   name = "LABR3_E_TOF";
+   for (unsigned int i = 0 ; i < Physics->DetectorNumber.size(); i++) { // loop on number of detectors
+      GetHisto(family,name) -> Fill(Physics->Time[i], Physics->Energy[i]);
+   }
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* TLaBr3Spectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
+  // create histo
+  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
+
+  vector<string> index ;
+  index.push_back(family);
+  index.push_back(name);
+
+  // fill map
+  fMapHisto[index]=hist;
+
+  return hist;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* TLaBr3Spectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
+  // create histo
+  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
+
+  vector<string> index ;
+  index.push_back(family);
+  index.push_back(name);
+
+  // fill map
+  fMapHisto[index]=hist;
+
+  return hist;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* TLaBr3Spectra::GetHisto(string& family, string& name){
+  vector<string> index;
+  index.push_back(family);
+  index.push_back(name);
+  TH1* histo ; 
+  
+  try{
+    histo = fMapHisto.at(index); 
+  }
+
+  catch(const std::out_of_range& oor){
+  cout << "ERROR : the folowing Histo has been requested by TLaBr3Spectra and does not exist: family:" << family << " name: "  << name << endl ;
+  exit(1);
+  }
+
+  return histo;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TLaBr3Spectra::WriteHisto(string filename)
+{
+   TFile *f = NULL; 
+
+   if (filename != "VOID") {
+      f = new TFile(filename.c_str(), "RECREATE");
+   }
+
+   map< vector<string>, TH1* >::iterator it;
+   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
+      it->second->Write();
+   }
+
+   if (filename != "VOID") {
+      f->Close();
+      delete f;
+   }
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+void TLaBr3Spectra::CheckSpectra()
+{
+   map< vector<string>, TH1* >::iterator it;
+   Color_t ok_color      = kTeal+9;
+   Color_t warning_color = kOrange+8;  warning_color *= 1;
+   Color_t bad_color     = kRed;       bad_color     *= 1;
+
+   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it)
+   {
+      it->second->SetLineColor(ok_color);
+      it->second->SetFillStyle(1001);
+      it->second->SetFillColor(ok_color);
+   }
+}
diff --git a/NPLib/LaBr3/TLaBr3Spectra.h b/NPLib/LaBr3/TLaBr3Spectra.h
new file mode 100644
index 0000000000000000000000000000000000000000..2fd12cd33aadd52bd40d50e9c02d8b2e220037dd
--- /dev/null
+++ b/NPLib/LaBr3/TLaBr3Spectra.h
@@ -0,0 +1,82 @@
+#ifndef TLABR3SPECTRA_H
+#define TLABR3SPECTRA_H
+/*****************************************************************************
+ * Copyright (C) 2009-2013    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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : dec 2013                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds all the online spectra needed for LaBr3              *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *    + first version (not complete yet)                                     *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ STL headers
+#include <map>
+
+// ROOT headers
+#include "TObject.h"
+#include <TH1.h>
+#include <TH2.h>
+
+// NPLib headers
+#include "TLaBr3Data.h"
+#include "TLaBr3Physics.h"
+using namespace std;
+
+// ForwardDeclaration
+class TLaBr3Physics;
+
+class TLaBr3Spectra {
+  public:
+    // constructor and destructor
+    TLaBr3Spectra();
+    TLaBr3Spectra(unsigned int NumberOfTelescope);
+    ~TLaBr3Spectra();
+
+  private:
+    // Instantiate and register histo to maps
+    TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
+    TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
+                                                 Int_t nbinsy, Double_t ylow, Double_t yup, string family);
+
+    // Initialization methods
+    void InitRawSpectra();
+    void InitPreTreatedSpectra();
+    void InitPhysicsSpectra();
+
+  public:
+    // Filling methods
+    void FillRawSpectra(TLaBr3Data*);
+    void FillPreTreatedSpectra(TLaBr3Data*);
+    void FillPhysicsSpectra(TLaBr3Physics*);
+    // Check the Spectra
+    void CheckSpectra();
+
+  public:
+    // get map histo which will be used for GSpectra in GUser
+    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
+    TH1* GetHisto(string& family,string& name);    
+    void WriteHisto(string filename="VOID");      
+
+  private: // Information on CHARISSA
+    unsigned int fNumberDetector;
+
+  private:
+    // map holding histo pointers and their family names
+    map< vector<string>, TH1* > fMapHisto;
+};
+
+#endif
diff --git a/NPLib/MUST2/TMust2Physics.cxx b/NPLib/MUST2/TMust2Physics.cxx
index 754d2562802b79c978fe9ab3025d3e47f99846ef..9ff701a2bcc6c451eecadd8a7de84bf0a57b9064 100644
--- a/NPLib/MUST2/TMust2Physics.cxx
+++ b/NPLib/MUST2/TMust2Physics.cxx
@@ -1060,8 +1060,13 @@ void TMust2Physics::ClearSpectra(){
   // To be done
 }
 ///////////////////////////////////////////////////////////////////////////
-map< vector<TString> , TH1*> TMust2Physics::GetSpectra() {
-return m_Spectra->GetMapHisto();
+map< vector<string> , TH1*> TMust2Physics::GetSpectra() {
+  if(m_Spectra)
+    return m_Spectra->GetMapHisto();
+  else{
+    map< vector<string> , TH1*> empty;
+    return empty;
+  }
 } 
 ///////////////////////////////////////////////////////////////////////////
 void TMust2Physics::AddParameterToCalibrationManager()
diff --git a/NPLib/MUST2/TMust2Physics.h b/NPLib/MUST2/TMust2Physics.h
index 951e91d5778a564749cefc5266fcb0ec09be9fe0..c701379079bda28f2e8f7bb7f5b081dbf1f699c9 100644
--- a/NPLib/MUST2/TMust2Physics.h
+++ b/NPLib/MUST2/TMust2Physics.h
@@ -276,7 +276,7 @@ class TMust2Physics : public TObject, public NPA::VDetector{
     TMust2Spectra*      m_Spectra;//! 
 
   public: // Spectra Getter
-    map< vector<TString> , TH1*> GetSpectra(); 
+    map< vector<string> , TH1*> GetSpectra(); 
 
     ClassDef(TMust2Physics,1)  // Must2Physics structure
 };
diff --git a/NPLib/MUST2/TMust2Spectra.cxx b/NPLib/MUST2/TMust2Spectra.cxx
index 8000eb4e60731a12642b062ed773d21ef3152c84..e1c3ee32c81ded8dc7f5cf6e0bbd26d8c2ff3947 100644
--- a/NPLib/MUST2/TMust2Spectra.cxx
+++ b/NPLib/MUST2/TMust2Spectra.cxx
@@ -3,7 +3,7 @@
  *                                                                           *
  * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
  * For the list of contributors see $NPTOOL/Licence/Contributors             *
- *****************************************************************************/
+ ****************************************************************************/
 
 /*****************************************************************************
  * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
@@ -21,6 +21,10 @@
  *                                                                           *
  *****************************************************************************/
 
+// STL
+#include <stdexcept>
+#include <iostream>  
+#include <cstdlib>
 // NPL
 #include "TMust2Spectra.h"
 #include "NPOptionManager.h"
@@ -32,11 +36,10 @@ using namespace NPUNITS;
 
 
 // ROOT
-#include "TString.h"
+#include "string.h"
 #include "TDirectory.h"
 #include "TFile.h"
 
-
 ////////////////////////////////////////////////////////////////////////////////
 TMust2Spectra::TMust2Spectra(){
   fNumberOfTelescope = 0;
@@ -71,54 +74,54 @@ TMust2Spectra::~TMust2Spectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TMust2Spectra::InitRawSpectra(){
-  TString name;
+  string name;
   for (unsigned int i = 0; i < fNumberOfTelescope; i++) { // loop on number of detectors
     // STRX_E_RAW
-    name = Form("MM%d_STRX_E_RAW", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRX_E_RAW";
     AddHisto2D(name, name, fStripX, 1, fStripX+1, 512, 0, 8192, "MUST2/RAW/STRXE");
 
     // STRY_E_RAW
-    name = Form("MM%d_STRY_E_RAW", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRY_E_RAW";
     AddHisto2D(name, name, fStripY, 1, fStripY+1, 512, 0, 8192, "MUST2/RAW/STRYE");
 
     // STRX_T_RAW
-    name = Form("MM%d_STRX_T_RAW", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRX_T_RAW";
     AddHisto2D(name, name, fStripX, 1, fStripX+1, 512, 0, 8192, "MUST2/RAW/STRXT");
 
     // STRY_T_RAW
-    name = Form("MM%d_STRY_T_RAW", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRY_T_RAW";
     AddHisto2D(name, name, fStripY, 1, fStripY+1, 512, 0, 8192, "MUST2/RAW/STRYT");
 
     // SILI_E_RAW
-    name = Form("MM%d_SILI_E_RAW", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_SILI_E_RAW";
     AddHisto2D(name, name, fPadSili, 1, fPadSili+1, 512, 0, 8192, "MUST2/RAW/SILIE");
 
     // SILI_T_RAW
-    name = Form("MM%d_SILI_T_RAW", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_SILI_T_RAW";
     AddHisto2D(name, name, fPadSili, 1, fPadSili+1, 512, 0, 8192, "MUST2/RAW/SILIT");
 
     // CSI_E_RAW
-    name = Form("MM%d_CSI_E_RAW", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_CSI_E_RAW";
     AddHisto2D(name, name, fCrystalCsI, 1, fCrystalCsI+1, 512, 0, 16384, "MUST2/RAW/CSIE");
 
     // CSI_T_RAW
-    name = Form("MM%d_CSI_T_RAW", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_CSI_T_RAW";
     AddHisto2D(name, name, fCrystalCsI, 1, fCrystalCsI+1, 512, 0, 8192, "MUST2/RAW/CSIT");
 
     // STRX_RAW_MULT
-    name = Form("MM%d_STRX_RAW_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRX_RAW_MULT";
     AddHisto1D(name, name, fStripX, 1, fStripX+1, "MUST2/RAW/MULT");
 
     // STRY_RAW_MULT
-    name = Form("MM%d_STRY_RAW_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRY_RAW_MULT";
     AddHisto1D(name, name, fStripX, 1, fStripX+1, "MUST2/RAW/MULT");
 
     // SILI_RAW_MULT
-    name = Form("MM%d_SILI_RAW_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_SILI_RAW_MULT";
     AddHisto1D(name, name, fPadSili, 1, fPadSili+1, "MUST2/RAW/MULT");
 
     // CSI_RAW_MULT
-    name = Form("MM%d_CSI_RAW_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_CSI_RAW_MULT";
     AddHisto1D(name, name, fCrystalCsI, 1, fCrystalCsI+1, "MUST2/RAW/MULT");
   } // end loop on number of detectors
 }
@@ -126,59 +129,59 @@ void TMust2Spectra::InitRawSpectra(){
 ////////////////////////////////////////////////////////////////////////////////
 void TMust2Spectra::InitPreTreatedSpectra()
 {
-  TString name;
+  string name;
   for (unsigned int i = 0; i < fNumberOfTelescope; i++) { // loop on number of detectors
     // STRX_E_CAL
-    name = Form("MM%d_STRX_E_CAL", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRX_E_CAL";
     AddHisto2D(name, name, fStripX, 1, fStripX+1, 500, 0, 50, "MUST2/CAL/STRXE");
 
     // STRY_E_CAL
-    name = Form("MM%d_STRY_E_CAL", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRY_E_CAL";
     AddHisto2D(name, name, fStripY, 1, fStripY+1, 500, 0, 50, "MUST2/CAL/STRYE");
 
     // STRX_T_CAL
-    name = Form("MM%d_STRX_T_CAL", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRX_T_CAL";
     AddHisto2D(name, name, fStripX, 1, fStripX+1, 500, 0, 500, "MUST2/CAL/STRXT");
 
     // STRY_T_CAL
-    name = Form("MM%d_STRY_T_CAL", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRY_T_CAL";
     AddHisto2D(name, name, fStripY, 1, fStripY+1, 500, 0, 500, "MUST2/CAL/STRYT");
 
     // SILI_E_CAL
-    name = Form("MM%d_SILI_E_CAL", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_SILI_E_CAL";
     AddHisto2D(name, name, fPadSili, 1, fPadSili+1, 500, 0, 50, "MUST2/CAL/SILIE");
 
     // SILI_T_CAL
-    name = Form("MM%d_SILI_T_CAL", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_SILI_T_CAL";
     AddHisto2D(name, name, fPadSili, 1, fPadSili+1, 500, 0, 50, "MUST2/CAL/SILIT");
 
     // CSI_E_CAL
-    name = Form("MM%d_CSI_E_CAL", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_CSI_E_CAL";
     AddHisto2D(name, name, fCrystalCsI, 1, fCrystalCsI+1, 500, 0, 500, "MUST2/CAL/CSIE");
 
     // CSI_T_CAL
-    name = Form("MM%d_CSI_T_CAL", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_CSI_T_CAL";
     AddHisto2D(name, name, fCrystalCsI, 1, fCrystalCsI+1, 500, 0, 50, "MUST2/CAL/CSIT");
 
     // STRX_CAL_MULT
-    name = Form("MM%d_STRX_CAL_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRX_CAL_MULT";
     AddHisto1D(name, name, fStripX, 1, fStripX+1, "MUST2/CAL/MULT");
 
     // STRY_CAL_MULT
-    name = Form("MM%d_STRY_CAL_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRY_CAL_MULT";
     AddHisto1D(name, name, fStripX, 1, fStripX+1, "MUST2/CAL/MULT");
 
     // SILI_CAL_MULT
-    name = Form("MM%d_SILI_CAL_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_SILI_CAL_MULT";
     AddHisto1D(name, name, fPadSili, 1, fPadSili+1, "MUST2/CAL/MULT");
 
     // CSI_CAL_MULT
-    name = Form("MM%d_CSI_CAL_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_CSI_CAL_MULT";
     AddHisto1D(name, name, fCrystalCsI, 1, fCrystalCsI+1, "MUST2/CAL/MULT");
    
     // CSI_CAL_ID 
     for(unsigned int j = 0 ; j < fCrystalCsI ; j++){
-     name = Form("MM%d_CSI%d_CAL_ID", i+1,j+1);
+     name = "MM"+MUST2_LOCAL::itoa(i+1)+"_CSI"+MUST2_LOCAL::itoa(j+1)+"_CAL_ID";
      AddHisto2D(name, name,8192,0,16384,500,0,50, "MUST2/CAL/ID");
     }
   }  // end loop on number of detectors
@@ -186,7 +189,7 @@ void TMust2Spectra::InitPreTreatedSpectra()
 
 ////////////////////////////////////////////////////////////////////////////////
 void TMust2Spectra::InitPhysicsSpectra(){
-  TString name;
+  string name;
   // X-Y Impact Matrix
   name = "MM_IMPACT_MATRIX";
   AddHisto2D(name, name,500,-150,150,500,-150,150, "MUST2/PHY");
@@ -197,14 +200,14 @@ void TMust2Spectra::InitPhysicsSpectra(){
 
   // X-Y Energy Correlation
   for (unsigned int i = 0 ; i < fNumberOfTelescope ; i++) { // loop on number of detectors
-    name = Form("MM%d_XY_COR", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_XY_COR";
     AddHisto2D(name, name,500,0,50,500,0,50, "MUST2/PHY"); 
   }
 
   // ID Plot
   // E-TOF:
   name = "MM_E_TOF";
-  AddHisto2D(name, name,500,0,50,1000,200,1200,"MUST2/PHY");
+  AddHisto2D(name, name,500,0,50,500,200,1200,"MUST2/PHY");
 
   // SILIE-DE:
   name = "MM_SILIE_E";
@@ -222,19 +225,19 @@ void TMust2Spectra::InitPhysicsSpectra(){
   // ID plot detector by detector
   for (unsigned int i = 0; i < fNumberOfTelescope; i++) { // loop on number of detectors
     // E-TOF:
-    name = Form("MM%d_E_TOF",i+1);
-    AddHisto2D(name, name,500,0,50,1000,200,1200,"MUST2/PHY");
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_E_TOF";
+    AddHisto2D(name, name,500,0,50,500,200,1200,"MUST2/PHY");
 
     // SILIE-DE:
-    name = Form("MM%d_SILIE_E",i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_SILIE_E";
     AddHisto2D(name, name,500,0,200,500,0,50,"MUST2/PHY");
 
     // CSI-DE:
-    name = Form("MM%d_CSIE_E",i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_CSIE_E";
     AddHisto2D(name, name,500,0,500,500,0,50,"MUST2/PHY");
 
     // Etot-DE:
-    name = Form("MM%d_Etot_E",i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_Etot_E";
     AddHisto2D(name, name,500,0,500,500,0,50,"MUST2/PHY");
   }
 }
@@ -243,12 +246,12 @@ void TMust2Spectra::InitPhysicsSpectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
-  TString name;
-  TString family;
+  string name;
+  string family;
 
   // STRX_E 
   for (unsigned int i = 0; i < RawData->GetMMStripXEMult(); i++) {
-    name = Form("MM%d_STRX_E_RAW", RawData->GetMMStripXEDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(RawData->GetMMStripXEDetectorNbr(i))+"_STRX_E_RAW";
     family = "MUST2/RAW/STRXE";
 
     GetHisto(family,name)
@@ -258,7 +261,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
 
   // STRY_E
   for (unsigned int i = 0; i < RawData->GetMMStripYEMult(); i++) {
-    name = Form("MM%d_STRY_E_RAW", RawData->GetMMStripYEDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa( RawData->GetMMStripYEDetectorNbr(i) )+"_STRY_E_RAW";
     family = "MUST2/RAW/STRYE";
 
     GetHisto(family,name)
@@ -268,7 +271,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
 
   // STRX_T
   for (unsigned int i = 0; i < RawData->GetMMStripXTMult(); i++) {
-    name = Form("MM%d_STRX_T_RAW", RawData->GetMMStripXTDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(RawData->GetMMStripXTDetectorNbr(i))+"_STRX_T_RAW";
     family = "MUST2/RAW/STRXT";
 
     GetHisto(family,name)
@@ -277,7 +280,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
   }
   // STRY_T
   for (unsigned int i = 0; i < RawData->GetMMStripYTMult(); i++) {
-    name = Form("MM%d_STRY_T_RAW", RawData->GetMMStripYTDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(RawData->GetMMStripYTDetectorNbr(i))+"_STRY_T_RAW";
     family = "MUST2/RAW/STRYT";
 
     GetHisto(family,name)
@@ -287,7 +290,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
 
   // SILI_E
   for (unsigned int i = 0; i < RawData->GetMMSiLiEMult(); i++) {
-    name = Form("MM%d_SILI_E_RAW", RawData->GetMMSiLiEDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa( RawData->GetMMSiLiEDetectorNbr(i))+"_SILI_E_RAW";
     family = "MUST2/RAW/SILIE";
 
     GetHisto(family,name)
@@ -297,7 +300,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
 
   // SILI_T
   for (unsigned int i = 0; i < RawData->GetMMSiLiTMult(); i++) {
-    name = Form("MM%d_SILI_T_RAW", RawData->GetMMSiLiTDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(RawData->GetMMSiLiTDetectorNbr(i))+"_SILI_T_RAW";
     family = "MUST2/RAW/SILIT";
 
     GetHisto(family,name)
@@ -307,7 +310,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
 
   // CSI_E
   for (unsigned int i = 0; i < RawData->GetMMCsIEMult(); i++) {
-    name = Form("MM%d_CSI_E_RAW", RawData->GetMMCsIEDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(RawData->GetMMCsIEDetectorNbr(i))+"_CSI_E_RAW";
     family = "MUST2/RAW/CSIE";
 
     GetHisto(family,name)
@@ -317,7 +320,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
 
   // CSI_T
   for (unsigned int i = 0; i < RawData->GetMMCsITMult(); i++) {
-    name = Form("MM%d_CSI_T_RAW", RawData->GetMMCsITDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa( RawData->GetMMCsITDetectorNbr(i))+"_CSI_T_RAW";
     family = "MUST2/RAW/CSIT";
 
     GetHisto(family,name)
@@ -336,7 +339,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
 
   for( unsigned int i = 0; i < fNumberOfTelescope; i++){
 
-    name = Form("MM%d_STRX_RAW_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRX_RAW_MULT";
     family= "MUST2/RAW/MULT";
     GetHisto(family,name)
       -> Fill(myMULT[i]);
@@ -351,7 +354,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
   }
 
   for( unsigned int i = 0; i < fNumberOfTelescope; i++){
-    name = Form("MM%d_STRY_RAW_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRY_RAW_MULT";
     family= "MUST2/RAW/MULT";
     GetHisto(family,name)
       -> Fill(myMULT[i]);
@@ -366,7 +369,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
   }
 
   for( unsigned int i = 0; i < fNumberOfTelescope; i++){
-    name = Form("MM%d_SILI_RAW_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_SILI_RAW_MULT";
     family= "MUST2/RAW/MULT";
     GetHisto(family,name)
       -> Fill(myMULT[i]);
@@ -381,7 +384,7 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
   }
 
   for( unsigned int i = 0; i < fNumberOfTelescope; i++){
-    name = Form("MM%d_CSI_RAW_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_CSI_RAW_MULT";
     family= "MUST2/RAW/MULT";
     GetHisto(family,name)
       -> Fill(myMULT[i]);
@@ -391,11 +394,11 @@ void TMust2Spectra::FillRawSpectra(TMust2Data* RawData){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
-  TString name ;
-  TString family;
+  string name ;
+  string family;
   // STRX_E
   for (unsigned int i = 0; i < PreTreatedData->GetMMStripXEMult(); i++) {
-    name = Form("MM%d_STRX_E_CAL", PreTreatedData->GetMMStripXEDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(PreTreatedData->GetMMStripXEDetectorNbr(i))+"_STRX_E_CAL";
     family = "MUST2/CAL/STRXE";
 
     GetHisto(family,name)
@@ -404,7 +407,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
   }
   // STRY_E
   for (unsigned int i = 0; i < PreTreatedData->GetMMStripYEMult(); i++) {
-    name = Form("MM%d_STRY_E_CAL", PreTreatedData->GetMMStripYEDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa( PreTreatedData->GetMMStripYEDetectorNbr(i))+"_STRY_E_CAL";
     family = "MUST2/CAL/STRYE";
 
     GetHisto(family,name)
@@ -413,7 +416,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
   }
   // STRX_T
   for (unsigned int i = 0; i < PreTreatedData->GetMMStripXTMult(); i++) {
-    name = Form("MM%d_STRX_T_CAL", PreTreatedData->GetMMStripXTDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(PreTreatedData->GetMMStripXTDetectorNbr(i))+"_STRX_T_CAL";
     family = "MUST2/CAL/STRXT";
 
     GetHisto(family,name)
@@ -422,7 +425,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
   }
   // STRY_T
   for (unsigned int i = 0; i < PreTreatedData->GetMMStripYTMult(); i++) {
-    name = Form("MM%d_STRY_T_CAL", PreTreatedData->GetMMStripYTDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(PreTreatedData->GetMMStripYTDetectorNbr(i))+"_STRY_T_CAL";
     family = "MUST2/CAL/STRYT";
 
     GetHisto(family,name)
@@ -431,7 +434,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
   }
   // SILI_E
   for (unsigned int i = 0; i < PreTreatedData->GetMMSiLiEMult(); i++) {
-    name = Form("MM%d_SILI_E_CAL", PreTreatedData->GetMMSiLiEDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(PreTreatedData->GetMMSiLiEDetectorNbr(i) )+"_SILI_E_CAL";
     family = "MUST2/CAL/SILIE";
 
     GetHisto(family,name)
@@ -440,7 +443,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
   }
   // SILI_T
   for (unsigned int i = 0; i < PreTreatedData->GetMMSiLiTMult(); i++) {
-    name = Form("MM%d_SILI_T_CAL", PreTreatedData->GetMMSiLiTDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(PreTreatedData->GetMMSiLiTDetectorNbr(i))+"_SILI_T_CAL";
     family = "MUST2/CAL/SILIT";
 
     GetHisto(family,name)
@@ -449,7 +452,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
   }
   // CSI_E
   for (unsigned int i = 0; i < PreTreatedData->GetMMCsIEMult(); i++) {
-    name = Form("MM%d_CSI_E_CAL", PreTreatedData->GetMMCsIEDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(PreTreatedData->GetMMCsIEDetectorNbr(i))+"_CSI_E_CAL";
     family = "MUST2/CAL/CSIE";
 
     GetHisto(family,name)
@@ -459,7 +462,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
   
   // CSI_T
   for (unsigned int i = 0; i < PreTreatedData->GetMMCsITMult(); i++) {
-    name = Form("MM%d_CSI_T_CAL", PreTreatedData->GetMMCsITDetectorNbr(i) );
+    name = "MM"+MUST2_LOCAL::itoa(PreTreatedData->GetMMCsITDetectorNbr(i))+"_CSI_T_CAL";
     family = "MUST2/CAL/CSIT";
 
     GetHisto(family,name)
@@ -478,7 +481,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
 
   for( unsigned int i = 0; i < fNumberOfTelescope; i++){
 
-    name = Form("MM%d_STRX_CAL_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRX_CAL_MULT";
     family= "MUST2/CAL/MULT";
     GetHisto(family,name)
       -> Fill(myMULT[i]);
@@ -493,7 +496,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
   }
 
   for( unsigned int i = 0; i < fNumberOfTelescope; i++){
-    name = Form("MM%d_STRY_CAL_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_STRY_CAL_MULT";
     family= "MUST2/CAL/MULT";
     GetHisto(family,name)
       -> Fill(myMULT[i]);
@@ -508,7 +511,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
   }
 
   for( unsigned int i = 0; i < fNumberOfTelescope; i++){
-    name = Form("MM%d_SILI_CAL_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_SILI_CAL_MULT";
     family= "MUST2/CAL/MULT";
     GetHisto(family,name)
       -> Fill(myMULT[i]);
@@ -523,7 +526,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
   }
 
   for( unsigned int i = 0; i < fNumberOfTelescope; i++){
-    name = Form("MM%d_CSI_CAL_MULT", i+1);
+    name = "MM"+MUST2_LOCAL::itoa(i+1)+"_CSI_CAL_MULT";
     family= "MUST2/CAL/MULT";
     GetHisto(family,name)
       -> Fill(myMULT[i]);
@@ -535,8 +538,7 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
    for (unsigned int j = 0; j < PreTreatedData->GetMMCsIEMult(); j++) {
     
     if(PreTreatedData->GetMMStripXEDetectorNbr(i) == PreTreatedData->GetMMCsIEDetectorNbr(j)){ 
-      name = Form("MM%d_CSI%d_CAL_ID",
-      PreTreatedData->GetMMStripXEDetectorNbr(i),PreTreatedData->GetMMCsIECristalNbr(j));
+      name = "MM"+MUST2_LOCAL::itoa(PreTreatedData->GetMMStripXEDetectorNbr(i))+"_CSI"+MUST2_LOCAL::itoa(PreTreatedData->GetMMCsIECristalNbr(j))+"_CAL_ID";
     
       GetHisto(family,name)
         -> Fill(PreTreatedData->GetMMCsIEEnergy(j), 
@@ -550,8 +552,8 @@ void TMust2Spectra::FillPreTreatedSpectra(TMust2Data* PreTreatedData){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TMust2Spectra::FillPhysicsSpectra(TMust2Physics* Physics){
-  TString name;
-  TString family= "MUST2/PHY";
+  string name;
+  string family= "MUST2/PHY";
   // X-Y Impact Matrix
 
   for(unsigned int i = 0 ; i < Physics->Si_E.size(); i++){
@@ -566,7 +568,7 @@ void TMust2Spectra::FillPhysicsSpectra(TMust2Physics* Physics){
     GetHisto(family,name)-> Fill(Theta,Physics->Si_E[i]);
 
     // STRX_E_CAL
-    name = Form("MM%d_XY_COR", Physics->TelescopeNumber[i]);
+    name = "MM"+MUST2_LOCAL::itoa( Physics->TelescopeNumber[i])+"_XY_COR";
     GetHisto(family,name)-> Fill(Physics->Si_EX[i],Physics->Si_EY[i]);
 
 
@@ -576,7 +578,7 @@ void TMust2Spectra::FillPhysicsSpectra(TMust2Physics* Physics){
       name = "MM_E_TOF";
       GetHisto(family,name)->Fill(Physics->Si_E[i],Physics->Si_T[i]);
 
-      name = Form("MM%d_E_TOF", Physics->TelescopeNumber[i]);
+      name = "MM"+MUST2_LOCAL::itoa(Physics->TelescopeNumber[i])+"_E_TOF";
       GetHisto(family,name)->Fill(Physics->Si_E[i],Physics->Si_T[i]);
     }
 
@@ -586,7 +588,7 @@ void TMust2Spectra::FillPhysicsSpectra(TMust2Physics* Physics){
       Etot = Physics->SiLi_E[i];
       GetHisto(family,name)->Fill(Physics->SiLi_E[i],Physics->Si_E[i]);
 
-      name = Form("MM%d_SILIE_E", Physics->TelescopeNumber[i]);
+      name = "MM"+MUST2_LOCAL::itoa(Physics->TelescopeNumber[i])+"_SILIE_E";
       GetHisto(family,name)->Fill(Physics->SiLi_E[i],Physics->Si_E[i]);
     }
 
@@ -594,7 +596,7 @@ void TMust2Spectra::FillPhysicsSpectra(TMust2Physics* Physics){
       name = "MM_CSIE_E";
       Etot += Physics->CsI_E[i];
       GetHisto(family,name)->Fill(Physics->CsI_E[i],Physics->Si_E[i]);
-      name = Form("MM%d_CSIE_E", Physics->TelescopeNumber[i]);
+      name = "MM"+MUST2_LOCAL::itoa(Physics->TelescopeNumber[i])+"_CSIE_E";
       GetHisto(family,name)->Fill(Physics->CsI_E[i],Physics->Si_E[i]);
 
     }
@@ -602,7 +604,7 @@ void TMust2Spectra::FillPhysicsSpectra(TMust2Physics* Physics){
     if(Etot>0){
       name = "MM_Etot_E";
       GetHisto(family,name)->Fill(Etot,Physics->Si_E[i]);
-      name = Form("MM%d_Etot_E", Physics->TelescopeNumber[i]);
+      name = "MM"+MUST2_LOCAL::itoa(Physics->TelescopeNumber[i])+"_Etot_E";
       GetHisto(family,name)->Fill(Etot,Physics->Si_E[i]);
     }
 
@@ -610,11 +612,11 @@ void TMust2Spectra::FillPhysicsSpectra(TMust2Physics* Physics){
 
 }
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TMust2Spectra::AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family){
+TH1* TMust2Spectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
   // create histo
-  TH1 *hist = new TH1D(name, title, nbinsx, xlow, xup);
+  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
 
-  vector<TString> index ;
+  vector<string> index ;
   index.push_back(family);
   index.push_back(name);
 
@@ -625,11 +627,11 @@ TH1* TMust2Spectra::AddHisto1D(TString name, TString title, Int_t nbinsx, Double
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TMust2Spectra::AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, TString family){
+TH1* TMust2Spectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
   // create histo
-  TH1 *hist = new TH2D(name, title, nbinsx, xlow, xup, nbinsy, ylow, yup);
+  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
 
-  vector<TString> index ;
+  vector<string> index ;
   index.push_back(family);
   index.push_back(name);
 
@@ -640,24 +642,34 @@ TH1* TMust2Spectra::AddHisto2D(TString name, TString title, Int_t nbinsx, Double
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TMust2Spectra::GetHisto(TString family, TString name){
-  vector<TString> index ;
+TH1* TMust2Spectra::GetHisto(string& family, string& name){
+  vector<string> index;
+  index.reserve(2);
   index.push_back(family);
   index.push_back(name);
+  TH1* histo ; 
+  
+  try{
+    histo = fMapHisto.at(index); 
+  }
 
-  // fill map
-  return fMapHisto.at(index);
+  catch(const std::out_of_range& oor){
+  cout << "ERROR : the folowing Histo has been requested by TMust2Spectra and does not exist: family:" << family << " name: "  << name << endl ;
+  exit(1);
+  }
+
+  return histo;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void TMust2Spectra::WriteHisto(TString filename){
+void TMust2Spectra::WriteHisto(string filename){
   TFile* f=NULL; 
 
   if(filename!="VOID"){
-    f = new TFile(filename,"RECREATE");
+    f = new TFile(filename.c_str(),"RECREATE");
   }
 
-  map< vector<TString>, TH1* >::iterator it;
+  map< vector<string>, TH1* >::iterator it;
 
   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it){
     it->second->Write();
@@ -671,7 +683,7 @@ void TMust2Spectra::WriteHisto(TString filename){
 }
 ///////////////////////////////////////////////////////////////////////////////
 void TMust2Spectra::CheckSpectra(){
-  map< vector<TString>, TH1* >::iterator it;
+  map< vector<string>, TH1* >::iterator it;
   Color_t ok_color = kTeal+9;
   Color_t warning_color = kOrange+8;   warning_color *= 1;
   Color_t bad_color = kRed;            bad_color *= 1;
diff --git a/NPLib/MUST2/TMust2Spectra.h b/NPLib/MUST2/TMust2Spectra.h
index 308004ad288ceac0a5365c9bb305dd5e345eff8d..ec3d3e3d2c476fcd6920e16950b583ca3e00c694 100644
--- a/NPLib/MUST2/TMust2Spectra.h
+++ b/NPLib/MUST2/TMust2Spectra.h
@@ -30,7 +30,6 @@
 #include "TObject.h"
 #include <TH1.h>
 #include <TH2.h>
-#include <TString.h>
 
 // NPLib headers
 #include "TMust2Data.h"
@@ -49,9 +48,9 @@ class TMust2Spectra {
 
   private:
     // Instantiate and register histo to maps
-    TH1* AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family);
-    TH1* AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, 
-        Int_t nbinsy, Double_t ylow, Double_t yup,TString family);
+    TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
+    TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
+        Int_t nbinsy, Double_t ylow, Double_t yup,string family);
 
     // Initialization methods
     void InitRawSpectra();
@@ -68,9 +67,9 @@ class TMust2Spectra {
 
   public:
     // get map histo which will be used for GSpectra in GUser
-    map< vector<TString>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(TString family,TString name);    
-    void WriteHisto(TString filename="VOID");      
+    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
+    TH1* GetHisto(string& family,string& name);    
+    void WriteHisto(string filename="VOID");      
 
   private: // Information on MUST2
     unsigned int fNumberOfTelescope;
@@ -81,7 +80,7 @@ class TMust2Spectra {
 
   private:
     // map holding histo pointers and their family names
-    map< vector<TString>, TH1* > fMapHisto;
+    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/Makefile b/NPLib/Makefile
index 4a1f3f20b646507a4a16834dc0e6b0e84271bb39..4a530248935088509bbfa973ba9d6ace8fded96b 100644
--- a/NPLib/Makefile
+++ b/NPLib/Makefile
@@ -3,59 +3,53 @@ include $(NPTOOL)/NPLib/Makefile.arch
 
 #include /usr/local/root-5.32.01/etc/Makefile.arch
 #------------------------------------------------------------------------------
-SHARELIB	= SharedLib
+SHARELIB	= $(shell cat .core_libs)
+SHARELIB += $(shell cat .detector_libs)
 FILLINC		= FillIncludeDir
 FILLLIB		= FillLibraryDir
 LIBLIST		= liblistfile
 
-all:	$(SHARELIB) $(FILLLIB) $(LIBLIST)
+#Silence the process
+all: .SILENT
+.SILENT: $(SHARELIB) $(LIBLIST)
+
 #------------------------------------------------------------------------------
 ############### fillinclib ##############
 FillIncludeDir:
 		./scripts/fillincdir.sh
 
-FillLibraryDir:
-		./scripts/filllibdir.sh
-#ifeq ($(ARCH),macosx)
+FillLibraryDir: $(SHARELIB) $(FILLINC)
 ifeq ($(findstring macosx, $(ARCH)), macosx)
 		./scripts/filllibmacdir.sh
 endif
 
 ############### liblist ##############
-liblistfile:
+liblistfile:  $(FILLLIB) $(SHARELIB) $(FILLIB)
 		./scripts/buildliblist.sh
 
-############### sharedlib ##############
-SharedLib:
-		./scripts/makefile.sh
+########### actual target ##############
+# include makefile created by the configure script
+# where the wanted detector are defined
+include $(NPTOOL)/NPLib/Makefile.detector
 
 ############# Clean and More ##########
 clean:
-	$(NPTOOL)/NPLib/scripts/makefile.sh clean detector
-	
-cleancore:
-	$(NPTOOL)/NPLib/scripts/makefile.sh clean core
-	
+	rm -f ./*/*.o
+
 distclean:
-	@echo " + Deleting libraries in lib directory....."
+	@echo " + Deleting libraries in lib directory"
 	rm -f ./lib/*
-	@echo " + Deleting header files in include directory....."
+	@echo " + Deleting header files in include directory"
 	rm -f ./include/* 
-	@echo " + Deleting liblist file....."
+	@echo " + Deleting liblist file"
 	rm -f liblist
+	@echo " + Emptying Makefile.detector"
+	rm -f Makefile.detector
+	touch Makefile.detector
+	@echo " + Deleting NPToolLogon"
 	rm -f ./scripts/NPToolLogon_C*
-	./scripts/makefile.sh distclean detector
-	./scripts/makefile.sh distclean core
-
-# include makefile created by the configure script
-# where the wanted detector are defined
-include $(NPTOOL)/NPLib/Makefile.detector
-
-.SUFFIXES: .$(SrcSuf)
-
-###
-
-.$(SrcSuf).$(ObjSuf):
-	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
-
-
+	@echo " + Deleting intermediate compilation files"
+	rm -f ./*/*Dict*
+	rm -f ./*/*.o
+	@echo " + Deleting shared libraries files in detector directory"
+	rm -f ./*/*.so
diff --git a/NPLib/Physics/NPReaction.cxx b/NPLib/Physics/NPReaction.cxx
index b26c96698e2d88912b9e3198bdd8e245fe7f5d12..b25a373b60fbc8391396e10fbfad6f1d37ecb0eb 100644
--- a/NPLib/Physics/NPReaction.cxx
+++ b/NPLib/Physics/NPReaction.cxx
@@ -88,6 +88,8 @@ Reaction::Reaction(){
     ++offset;
   
   fCrossSectionHist = new TH1F(Form("EnergyHist_%i",offset),"Reaction_CS",1,0,180);
+  fExcitationEnergyHist = NULL;
+  
   fshoot3=true;
   fshoot4=true;
  
@@ -151,11 +153,11 @@ Reaction::Reaction(string reaction){
     ++offset;
   
   fCrossSectionHist = new TH1F(Form("EnergyHist_%i",offset),"Reaction_CS",1,0,180);
+  fCrossSectionHist = NULL;
+
   fshoot3=true;
   fshoot4=true;
   
-  
-  
   initializePrecomputeVariable();
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -176,6 +178,9 @@ Reaction::~Reaction(){
   
   if(fCrossSectionHist)
     delete fCrossSectionHist;
+
+  if(fExcitationEnergyHist)
+    delete fExcitationEnergyHist;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -208,6 +213,13 @@ double Reaction::ShootRandomThetaCM(){
   SetThetaCM( theta=fCrossSectionHist->GetRandom()*deg );
   return theta;
 }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void Reaction::ShootRandomExcitationEnergy(){
+  if(fExcitationEnergyHist){
+    SetExcitation4(fExcitationEnergyHist->GetRandom());
+  }
+}
+
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void Reaction::KineRelativistic(double &ThetaLab3, double &KineticEnergyLab3,
                                 double &ThetaLab4, double &KineticEnergyLab4){
@@ -308,6 +320,7 @@ void Reaction::ReadConfigurationFile(string Path){
   bool check_Heavy = false ;
   bool check_ExcitationEnergy3 = false ;
   bool check_ExcitationEnergy4 = false ;
+  bool check_ExcitationEnergyDistribution = false;
   bool check_CrossSectionPath = false ;
   bool check_shoot3 = false ;
   bool check_shoot4 = false;
@@ -385,7 +398,16 @@ void Reaction::ReadConfigurationFile(string Path){
         fExcitation4 = atof(DataBuffer.c_str()) * MeV;
         if(fVerboseLevel==1) cout << "Excitation Energy Nuclei 4: " << fExcitation4 / MeV << " MeV" << endl;
       }
-      
+     
+      else if (DataBuffer=="ExcitationEnergyDistribution="){
+        check_ExcitationEnergyDistribution = true;
+        string FileName,HistName;
+        ReactionFile >> FileName >> HistName;
+        if(fVerboseLevel==1) cout << "Reading Excitation Energy Distribution file: " << FileName << endl;
+        fExcitationEnergyHist = Read1DProfile(FileName, HistName );
+        fExcitation4 = 0 ;
+      }
+ 
       else if  (DataBuffer== "CrossSectionPath=") {
         check_CrossSectionPath = true ;
         string FileName,HistName;
@@ -442,7 +464,7 @@ void Reaction::ReadConfigurationFile(string Path){
       ///////////////////////////////////////////////////
       //   If all Token found toggle out
       if (check_Beam && check_Target && check_Light && check_Heavy && check_ExcitationEnergy3
-          && check_ExcitationEnergy4 && check_CrossSectionPath && check_shoot4 && check_shoot3)
+          && (check_ExcitationEnergy4 || check_ExcitationEnergyDistribution ) && check_CrossSectionPath && check_shoot4 && check_shoot3)
         ReadingStatus = false;
     }
   }
diff --git a/NPLib/Physics/NPReaction.h b/NPLib/Physics/NPReaction.h
index 72a2b9654bddc29f6d05a858370b349d33dd7e38..2c4130c5d4566b0bffb82dba8a8838416627bb1d 100644
--- a/NPLib/Physics/NPReaction.h
+++ b/NPLib/Physics/NPReaction.h
@@ -53,169 +53,172 @@ using namespace NPL;
 using namespace std;
 
 namespace NPL{
-  
+
   class Reaction{
-    
-  public:  // Constructors and Destructors
-   Reaction();
-    // This constructor aim to provide a fast way to instantiate a reaction without input file
-    // The string should be of the form "A(b,c)D@E" with E the ernegy of the beam in MeV
-   Reaction(string);
-   virtual ~Reaction();
-    
-  public:  // Various Method
-    void ReadConfigurationFile(string Path);
-    
-  private:
-    int fVerboseLevel;
-  
-  private: // use for Monte Carlo simulation
-    bool fshoot3;
-    bool fshoot4;
-    
-  private: // use to display the kinematical line
-	  TGraph* fKineLine3 ;
-	  TGraph* fKineLine4 ;
-	  TGraph* fTheta3VsTheta4;
-	  TGraph* fLineBrho3;
-	  TGraph* fAngleLine;
-  private:
-    Beam*    fNuclei1;                 // Beam
-    Nucleus* fNuclei2;                 // Target
-    Nucleus* fNuclei3;                 // Light ejectile
-    Nucleus* fNuclei4;                 // Heavy ejectile
-    double   fQValue;                  // Q-value in MeV
-    double   fBeamEnergy;              // Beam energy in MeV
-    double   fThetaCM;                 // Center-of-mass angle in radian
-    double   fExcitation3;             // Excitation energy in MeV
-    double   fExcitation4;             // Excitation energy in MeV
-    TH1F*    fCrossSectionHist;
-
-  public:
+
+    public:  // Constructors and Destructors
+      Reaction();
+      // This constructor aim to provide a fast way to instantiate a reaction without input file
+      // The string should be of the form "A(b,c)D@E" with E the ernegy of the beam in MeV
+      Reaction(string);
+      virtual ~Reaction();
+
+    public:  // Various Method
+      void ReadConfigurationFile(string Path);
+
+    private:
+      int fVerboseLevel;
+
+    private: // use for Monte Carlo simulation
+      bool fshoot3;
+      bool fshoot4;
+
+    private: // use to display the kinematical line
+      TGraph* fKineLine3 ;
+      TGraph* fKineLine4 ;
+      TGraph* fTheta3VsTheta4;
+      TGraph* fLineBrho3;
+      TGraph* fAngleLine;
+    private:
+      Beam*    fNuclei1;                 // Beam
+      Nucleus* fNuclei2;                 // Target
+      Nucleus* fNuclei3;                 // Light ejectile
+      Nucleus* fNuclei4;                 // Heavy ejectile
+      double   fQValue;                  // Q-value in MeV
+      double   fBeamEnergy;              // Beam energy in MeV
+      double   fThetaCM;                 // Center-of-mass angle in radian
+      double   fExcitation3;             // Excitation energy in MeV
+      double   fExcitation4;             // Excitation energy in MeV
+      TH1F*    fCrossSectionHist;        // Differential cross section in CM frame
+      TH1F*    fExcitationEnergyHist;    // Distribution of Excitation energy
+    public:
       // Getters and Setters
-    void     SetBeamEnergy(double eBeam)      {fBeamEnergy = eBeam;     initializePrecomputeVariable();}
-    void     SetThetaCM(double angle)         {fThetaCM = angle;        initializePrecomputeVariable();}
-    void     SetExcitation3(double exci)      {fExcitation3 = exci; initializePrecomputeVariable();}
-    void     SetExcitation4(double exci)      {fExcitation4 = exci; initializePrecomputeVariable();}
+      void     SetBeamEnergy(double eBeam)      {fBeamEnergy = eBeam;     initializePrecomputeVariable();}
+      void     SetThetaCM(double angle)         {fThetaCM = angle;        initializePrecomputeVariable();}
+      void     SetExcitation3(double exci)      {fExcitation3 = exci; initializePrecomputeVariable();}
+      void     SetExcitation4(double exci)      {fExcitation4 = exci; initializePrecomputeVariable();}
       // For retro compatibility
-    void     SetExcitationLight(double exci)  {fExcitation3 = exci; initializePrecomputeVariable();}
-    void     SetExcitationHeavy(double exci)  {fExcitation4 = exci; initializePrecomputeVariable();}
-    void     SetVerboseLevel(int verbose)     {fVerboseLevel = verbose;}
-    void     SetCrossSectionHist  (TH1F*  CrossSectionHist)     {delete fCrossSectionHist; fCrossSectionHist   = CrossSectionHist;}
-    
-    double   GetBeamEnergy() const            {return fBeamEnergy;}
-    double   GetThetaCM() const               {return fThetaCM;}
-    double   GetExcitation3() const           {return fExcitation3;}
-    double   GetExcitation4() const           {return fExcitation4;}
-    double   GetQValue() const                {return fQValue;}
-    Nucleus* GetNucleus1() const              {return fNuclei1;}
-    Nucleus* GetNucleus2() const              {return fNuclei2;}
-    Nucleus* GetNucleus3() const              {return fNuclei3;}
-    Nucleus* GetNucleus4() const              {return fNuclei4;}
-    TH1F*    GetCrossSectionHist() const      {return fCrossSectionHist;}
-    int      GetVerboseLevel()         const  {return fVerboseLevel;}
-    bool     GetShoot3()         const        {return fshoot3;}
-    bool     GetShoot4()         const        {return fshoot4;}
-
-
-  public:
+      void     SetExcitationLight(double exci)  {fExcitation3 = exci; initializePrecomputeVariable();}
+      void     SetExcitationHeavy(double exci)  {fExcitation4 = exci; initializePrecomputeVariable();}
+      void     SetVerboseLevel(int verbose)     {fVerboseLevel = verbose;}
+      void     SetCrossSectionHist  (TH1F*  CrossSectionHist)     {delete fCrossSectionHist; fCrossSectionHist   = CrossSectionHist;}
+
+      double   GetBeamEnergy() const            {return fBeamEnergy;}
+      double   GetThetaCM() const               {return fThetaCM;}
+      double   GetExcitation3() const           {return fExcitation3;}
+      double   GetExcitation4() const           {return fExcitation4;}
+      double   GetQValue() const                {return fQValue;}
+      Nucleus* GetNucleus1() const              {return fNuclei1;}
+      Nucleus* GetNucleus2() const              {return fNuclei2;}
+      Nucleus* GetNucleus3() const              {return fNuclei3;}
+      Nucleus* GetNucleus4() const              {return fNuclei4;}
+      TH1F*    GetCrossSectionHist() const      {return fCrossSectionHist;}
+      int      GetVerboseLevel()         const  {return fVerboseLevel;}
+      bool     GetShoot3()         const        {return fshoot3;}
+      bool     GetShoot4()         const        {return fshoot4;}
+
+
+    public:
       // Modify the CS histo to so cross section shoot is within ]HalfOpenAngleMin,HalfOpenAngleMax[
-    void SetCSAngle(double CSHalfOpenAngleMin,double CSHalfOpenAngleMax);
-    
-	private: // intern precompute variable
-    void initializePrecomputeVariable();
-    double m1;
-    double m2;
-    double m3;
-    double m4;
-    
+      void SetCSAngle(double CSHalfOpenAngleMin,double CSHalfOpenAngleMax);
+
+    private: // intern precompute variable
+      void initializePrecomputeVariable();
+      double m1;
+      double m2;
+      double m3;
+      double m4;
+
       // Lorents Vector
-    TLorentzVector fEnergyImpulsionLab_1;
-    TLorentzVector fEnergyImpulsionLab_2;
-    TLorentzVector fEnergyImpulsionLab_3;
-    TLorentzVector fEnergyImpulsionLab_4;
-    TLorentzVector fTotalEnergyImpulsionLab;
-    
-    TLorentzVector fEnergyImpulsionCM_1;
-    TLorentzVector fEnergyImpulsionCM_2;
-    TLorentzVector fEnergyImpulsionCM_3;
-    TLorentzVector fEnergyImpulsionCM_4;
-    TLorentzVector fTotalEnergyImpulsionCM;
-    
+      TLorentzVector fEnergyImpulsionLab_1;
+      TLorentzVector fEnergyImpulsionLab_2;
+      TLorentzVector fEnergyImpulsionLab_3;
+      TLorentzVector fEnergyImpulsionLab_4;
+      TLorentzVector fTotalEnergyImpulsionLab;
+
+      TLorentzVector fEnergyImpulsionCM_1;
+      TLorentzVector fEnergyImpulsionCM_2;
+      TLorentzVector fEnergyImpulsionCM_3;
+      TLorentzVector fEnergyImpulsionCM_4;
+      TLorentzVector fTotalEnergyImpulsionCM;
+
       // Impulsion Vector3
-    TVector3 fImpulsionLab_1;
-    TVector3 fImpulsionLab_2;
-    TVector3 fImpulsionLab_3;
-    TVector3 fImpulsionLab_4;
-    
-    TVector3 fImpulsionCM_1;
-    TVector3 fImpulsionCM_2;
-    TVector3 fImpulsionCM_3;
-    TVector3 fImpulsionCM_4;
-    
+      TVector3 fImpulsionLab_1;
+      TVector3 fImpulsionLab_2;
+      TVector3 fImpulsionLab_3;
+      TVector3 fImpulsionLab_4;
+
+      TVector3 fImpulsionCM_1;
+      TVector3 fImpulsionCM_2;
+      TVector3 fImpulsionCM_3;
+      TVector3 fImpulsionCM_4;
+
       // CM Energy composante & CM impulsion norme
-	  Double_t ECM_1;
-	  Double_t ECM_2;
-	  Double_t ECM_3;
-	  Double_t ECM_4;
-	  Double_t pCM_1;
-	  Double_t pCM_2;
-	  Double_t pCM_3;
-	  Double_t pCM_4;
-    
+      Double_t ECM_1;
+      Double_t ECM_2;
+      Double_t ECM_3;
+      Double_t ECM_4;
+      Double_t pCM_1;
+      Double_t pCM_2;
+      Double_t pCM_3;
+      Double_t pCM_4;
+
       // Mandelstam variable
-    Double_t s;
-    
+      Double_t s;
+
       // Center of Mass Kinematic
-    Double_t BetaCM;
-
-  public:
-    TLorentzVector GetEnergyImpulsionLab_1() const {return fEnergyImpulsionLab_1;}
-    TLorentzVector GetEnergyImpulsionLab_2() const {return fEnergyImpulsionLab_2;}
-    TLorentzVector GetEnergyImpulsionLab_3() const {return fEnergyImpulsionLab_3;}
-    TLorentzVector GetEnergyImpulsionLab_4() const {return fEnergyImpulsionLab_4;}
-    
-    
-  public: // Kinematics
-          // Check that the reaction is alowed
-    bool CheckKinematic();
-    
+      Double_t BetaCM;
+
+    public:
+      TLorentzVector GetEnergyImpulsionLab_1() const {return fEnergyImpulsionLab_1;}
+      TLorentzVector GetEnergyImpulsionLab_2() const {return fEnergyImpulsionLab_2;}
+      TLorentzVector GetEnergyImpulsionLab_3() const {return fEnergyImpulsionLab_3;}
+      TLorentzVector GetEnergyImpulsionLab_4() const {return fEnergyImpulsionLab_4;}
+
+
+    public: // Kinematics
+      // Check that the reaction is alowed
+      bool CheckKinematic();
+
       // Use fCrossSectionHist to shoot a Random ThetaCM and set fThetaCM to this value
-    double ShootRandomThetaCM();
-    
+      double ShootRandomThetaCM();
+
+      // Use fExcitationEnergyHist to shoot a Random Excitation energy and set fExcitation4 to this value
+      void ShootRandomExcitationEnergy();
+
       // Compute ThetaLab and EnergyLab for product of reaction
-    void KineRelativistic(double &ThetaLab3, double &KineticEnergyLab3,
-                          double &ThetaLab4, double &KineticEnergyLab4);
-    
+      void KineRelativistic(double &ThetaLab3, double &KineticEnergyLab3,
+          double &ThetaLab4, double &KineticEnergyLab4);
+
       // Return Excitation Energy
-    double ReconstructRelativistic(double EnergyLab, double ThetaLab);
-    
+      double ReconstructRelativistic(double EnergyLab, double ThetaLab);
+
       // Return ThetaCM
       // EnergyLab: energy measured in the laboratory frame
       // ExcitationEnergy: excitation energy previously calculated.
-    double EnergyLabToThetaCM(double EnergyLab, double ThetaLab);
-    
-    void SetNuclei3(double EnergyLab, double ThetaLab);
-    
-	  TGraph* GetKinematicLine3(double AngleStep_CM=1);
-	  TGraph* GetKinematicLine4(double AngleStep_CM=1);
-	  TGraph* GetBrhoLine3(double AngleStep_CM=1);
-	  TGraph* GetThetaLabVersusThetaCM(double AngleStep_CM=1);
-	  TGraph* GetTheta3VsTheta4(double AngleStep_CM=1);
-	  void PrintKinematic();
-	  double	GetP_CM_1()	{return pCM_1;}
-	  double	GetP_CM_2()	{return pCM_2;}
-	  double	GetP_CM_3()	{return pCM_3;}
-	  double	GetP_CM_4()	{return pCM_4;}
-	  double	GetE_CM_1()	{return ECM_1;}
-	  double	GetE_CM_2()	{return ECM_2;}
-	  double	GetE_CM_3()	{return ECM_3;}
-	  double	GetE_CM_4()	{return ECM_4;}
-    
+      double EnergyLabToThetaCM(double EnergyLab, double ThetaLab);
+
+      void SetNuclei3(double EnergyLab, double ThetaLab);
+
+      TGraph* GetKinematicLine3(double AngleStep_CM=1);
+      TGraph* GetKinematicLine4(double AngleStep_CM=1);
+      TGraph* GetBrhoLine3(double AngleStep_CM=1);
+      TGraph* GetThetaLabVersusThetaCM(double AngleStep_CM=1);
+      TGraph* GetTheta3VsTheta4(double AngleStep_CM=1);
+      void PrintKinematic();
+      double	GetP_CM_1()	{return pCM_1;}
+      double	GetP_CM_2()	{return pCM_2;}
+      double	GetP_CM_3()	{return pCM_3;}
+      double	GetP_CM_4()	{return pCM_4;}
+      double	GetE_CM_1()	{return ECM_1;}
+      double	GetE_CM_2()	{return ECM_2;}
+      double	GetE_CM_3()	{return ECM_3;}
+      double	GetE_CM_4()	{return ECM_4;}
+
       // Print private paremeter
-    void Print() const;
-    
-ClassDef(Reaction,0)
+      void Print() const;
+
+      ClassDef(Reaction,0)
 
   };
 }
diff --git a/NPLib/SiLi/Makefile b/NPLib/SiLi/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..755cabf2ca130604056dd11477c90a7b44e46871
--- /dev/null
+++ b/NPLib/SiLi/Makefile
@@ -0,0 +1,40 @@
+include ../Makefile.arch
+
+#------------------------------------------------------------------------------
+SHARELIB      =  libSiLi.so
+
+all:            $(SHARELIB)
+#------------------------------------------------------------------------------
+############### Detector ##############
+
+## SiLi ##
+libSiLi.so: TSiLiData.o	TSiLiDataDict.o TSiLiPhysics.o	TSiLiPhysicsDict.o TSiLiSpectra.o
+			$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TSiLiDataDict.cxx:	TSiLiData.h
+			rootcint -f $@ -c $^
+
+TSiLiPhysicsDict.cxx:	TSiLiPhysics.h
+			rootcint -f $@ -c $^
+
+# dependances
+TSiLiData.o:	TSiLiData.cxx	TSiLiData.h
+TSiLiPhysics.o:	TSiLiPhysics.cxx	TSiLiPhysics.h
+TSiLiSpectra.o:	TSiLiSpectra.cxx	TSiLiSpectra.h
+#######################################
+
+############# Clean and More ##########
+clean:
+	@rm -f core *~ *.o *Dict*
+
+distclean:
+	  make clean; rm -f *.so
+
+.SUFFIXES: .$(SrcSuf)
+
+###
+
+.$(SrcSuf).$(ObjSuf):
+	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
+
+
diff --git a/NPLib/SiLi/TSiLiData.cxx b/NPLib/SiLi/TSiLiData.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..e09ddc57c1d3035b72b7a11cec89f4916805e808
--- /dev/null
+++ b/NPLib/SiLi/TSiLiData.cxx
@@ -0,0 +1,64 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2013   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ *                                                                           *
+ * Original Author :  Adrien MATTA    contact address: matta@ipno.in2p3.fr   *
+ *                                                                           *
+ * Creation Date   :                                                         *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include <iostream>
+#include "TSiLiData.h"
+
+
+ClassImp(TSiLiData)
+
+TSiLiData::TSiLiData()
+{
+}
+
+
+
+TSiLiData::~TSiLiData()
+{
+}
+
+
+
+void TSiLiData::Clear()
+{
+   // Energy
+   fSiLi_E_Number.clear();
+   fSiLi_E_Energy.clear();
+   // Time
+   fSiLi_T_Number.clear();
+   fSiLi_T_Time.clear();
+}
+
+
+
+void TSiLiData::Dump() const
+{
+   cout << "XXXXXXXXXXXXXXXXXXXXXXXX TSiLi: New Event XXXXXXXXXXXXXXXXX" << endl;
+
+   // Energy
+   for (unsigned short i = 0 ; i< fSiLi_E_Energy.size() ; i ++) {
+         cout << "SiLi Number " << fSiLi_E_Number[i] << " Energy: " << fSiLi_E_Energy[i]  << endl;
+   }
+   
+   // Time
+   for (unsigned short i = 0 ; i< fSiLi_T_Time.size() ; i ++) {
+         cout << "SiLi Number " << fSiLi_T_Number[i] << " Time: " << fSiLi_T_Time[i]  << endl;
+   }
+}
diff --git a/NPLib/SiLi/TSiLiData.h b/NPLib/SiLi/TSiLiData.h
new file mode 100644
index 0000000000000000000000000000000000000000..f7f2eaff59b10b867dbec55b644158be9a53f8f8
--- /dev/null
+++ b/NPLib/SiLi/TSiLiData.h
@@ -0,0 +1,67 @@
+#ifndef __SILIDATA__
+#define __SILIDATA__
+/*****************************************************************************
+ * Copyright (C) 2009-2013    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:    contact address:                                      *
+ *                                                                           *
+ * Creation Date  :                                                          *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include <vector>
+
+#include "TObject.h"
+using namespace std ;
+
+
+class TSiLiData : public TObject {
+ private:
+   // Energy 
+   vector<short>   fSiLi_E_Number;
+   vector<double>  fSiLi_E_Energy;   
+   // Time
+   vector<short>   fSiLi_T_Number;
+   vector<double>  fSiLi_T_Time;
+   
+ public:
+   TSiLiData();
+   virtual ~TSiLiData();
+
+   void   Clear();
+   void   Clear(const Option_t*) {};
+   void   Dump() const;
+
+   /////////////////////           GETTERS           ////////////////////////
+   // Energy
+   unsigned int   GetEnergyMult()   {return fSiLi_E_Number.size();}
+   int            GetENumber(int i)  {return fSiLi_E_Number[i];}
+   double         GetEEnergy(int i) {return fSiLi_E_Energy[i];}
+   // Time 
+   unsigned int   GetTimeMult()     {return fSiLi_T_Number.size();}
+   int            GetTNumber(int i) {return fSiLi_T_Number[i];}
+   double         GetTTime(int i)   {return fSiLi_T_Time[i];}
+
+   /////////////////////           SETTERS           ////////////////////////
+   // Energy
+   void     SetENumber(int N)    {fSiLi_E_Number.push_back(N);}
+   void     SetEEnergy(double E) {fSiLi_E_Energy.push_back(E);}
+   // time
+   void     SetTNumber(int N)    {fSiLi_T_Number.push_back(N);}
+   void     SetTTime(double T)   {fSiLi_T_Time.push_back(T);}
+
+   ClassDef(TSiLiData,1)  // SiLiData structure
+};
+
+#endif
diff --git a/NPLib/SiLi/TSiLiPhysics.cxx b/NPLib/SiLi/TSiLiPhysics.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..13972ea2f981383c3f1e27fce38c0eb4d6252395
--- /dev/null
+++ b/NPLib/SiLi/TSiLiPhysics.cxx
@@ -0,0 +1,321 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2013   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : november 2009                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold SiLi  Physics                                         *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+//   NPL
+#include "TSiLiPhysics.h"
+#include "../include/RootOutput.h"
+#include "../include/RootInput.h"
+
+//   STL
+#include <iostream>
+#include <sstream>
+#include <fstream>
+#include <limits>
+#include <stdlib.h>
+using namespace std;
+
+//   ROOT
+#include "TChain.h"
+
+//   tranform an integer to a string
+string itoa(int value)
+{
+   char buffer [33];
+   sprintf(buffer,"%d",value);
+   return buffer;
+}
+
+ClassImp(TSiLiPhysics)
+///////////////////////////////////////////////////////////////////////////
+TSiLiPhysics::TSiLiPhysics()
+   {      
+      NumberOfDetector = 0 ;
+      EventData = new TSiLiData ;
+      PreTreatedData = new TSiLiData ;
+      EventPhysics = this ;
+      m_Spectra = NULL;
+      m_SiLi_E_Threshold   = 0;   
+      m_SiLi_RAW_Threshold   = 0;   
+   }
+   
+///////////////////////////////////////////////////////////////////////////
+TSiLiPhysics::~TSiLiPhysics()
+   {}
+   
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::Clear()
+   {
+
+      DetectorNumber.clear() ;
+      Energy.clear() ;
+      Time.clear() ;
+   }
+   
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::ReadConfiguration(string Path) 
+   {
+      ifstream ConfigFile           ;
+      ConfigFile.open(Path.c_str()) ;
+      string LineBuffer             ;
+      string DataBuffer             ;
+
+      bool check_Thickness = false      ;
+      bool check_Height = false         ;
+      bool check_Width = false          ;
+      bool check_X = false              ;
+      bool check_Y = false              ;
+      bool check_Z = false              ;      
+      bool ReadingStatus = false        ;
+
+    while (!ConfigFile.eof()) 
+       {
+         
+         getline(ConfigFile, LineBuffer);
+
+         //   If line is a Start Up SiLi bloc, Reading toggle to true      
+         if (LineBuffer.compare(0, 4, "SiLi") == 0) 
+            {
+               cout << "///" << endl ;
+               cout << "SiLi found: " << endl ;        
+               ReadingStatus = true ;
+            }
+            
+         //   Else don't toggle to Reading Block Status
+         else ReadingStatus = false ;
+         
+         //   Reading Block
+         while(ReadingStatus)
+            {
+               // Pickup Next Word 
+               ConfigFile >> DataBuffer ;
+
+               //   Comment Line 
+               if (DataBuffer.compare(0, 1, "%") == 0) {   ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
+
+                  //   Finding another telescope (safety), toggle out
+               else if (DataBuffer.compare(0, 4, "SiLi") == 0) {
+                  cout << "WARNING: Another Detector is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
+                  ReadingStatus = false ;
+               }
+
+               
+               //Position method
+               else if (DataBuffer=="X=") {
+                  check_X = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "X:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+
+               else if (DataBuffer=="Y=") {
+                  check_Y = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "Y:  " << atof( DataBuffer.c_str() ) << "mm"<< endl;
+               }
+
+               else if (DataBuffer=="Z=") {
+                  check_Z = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "Z:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+               
+               // Squared shape
+               else if (DataBuffer=="Width=") {
+                  check_Width = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "SiLi Width:  " <<atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+               else if (DataBuffer== "Height=") {
+                  check_Height = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "SiLi Height:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+               // Common
+               else if (DataBuffer=="Thickness=") {
+                  check_Thickness = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "SiLi Thickness:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+                                                
+               ///////////////////////////////////////////////////
+               //   If no Detector Token and no comment, toggle out
+               else 
+                  {ReadingStatus = false; cout << "Wrong Token Sequence: Getting out " << DataBuffer << endl ;}
+               
+                  /////////////////////////////////////////////////
+                  //   If All necessary information there, toggle out
+               
+               if ( check_Thickness &&    check_Height &&   check_Width &&  check_X && check_Y && check_Z ) 
+                  { 
+                     NumberOfDetector++;
+                     
+                     //   Reinitialisation of Check Boolean  
+                     check_Thickness = false      ;
+                     check_Height = false         ;
+                     check_Width = false          ;
+                     check_X = false              ;
+                     check_Y = false              ;
+                     check_Z = false              ;
+                     ReadingStatus = false        ;   
+                     cout << "///"<< endl         ;                
+                  }
+            }
+      }
+   }
+
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::AddParameterToCalibrationManager()
+   {
+      CalibrationManager* Cal = CalibrationManager::getInstance();
+      
+      for(int i = 0 ; i < NumberOfDetector ; i++)
+         {
+                  Cal->AddParameter("SiLi", "Detector"+itoa(i+1)+"_E","SiLi_Detector"+itoa(i+1)+"_E")   ;
+                  Cal->AddParameter("SiLi", "Detector"+itoa(i+1)+"_T","SiLi_Detector"+itoa(i+1)+"_T")   ;         
+         }
+   }
+   
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::InitializeRootInputRaw() 
+   {
+      TChain* inputChain = RootInput::getInstance()->GetChain()     ;
+      inputChain->SetBranchStatus ( "SiLi"       , true )        ;
+      inputChain->SetBranchStatus ( "fSiLi_*"    , true )        ;
+      inputChain->SetBranchAddress( "SiLi"       , &EventData )  ;
+   }
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::InitializeRootInputPhysics()
+   {
+      TChain* inputChain = RootInput::getInstance()->GetChain();
+      inputChain->SetBranchStatus ( "SiLi", true );
+      inputChain->SetBranchStatus ( "DetectorNumber", true );
+      inputChain->SetBranchStatus ( "Energy", true );
+      inputChain->SetBranchStatus ( "Time", true );
+      inputChain->SetBranchAddress( "SiLi", &EventPhysics );
+   }
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::InitializeRootOutput()
+   {
+      TTree* outputTree = RootOutput::getInstance()->GetTree()            ;
+      outputTree->Branch( "SiLi" , "TSiLiPhysics" , &EventPhysics ) ;
+   }
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::InitSpectra(){  
+   m_Spectra = new TSiLiSpectra(NumberOfDetector);
+}
+
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::FillSpectra(){  
+   m_Spectra -> FillRawSpectra(EventData);
+   m_Spectra -> FillPreTreatedSpectra(PreTreatedData);
+   m_Spectra -> FillPhysicsSpectra(EventPhysics);
+}
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::CheckSpectra(){  
+  m_Spectra->CheckSpectra();  
+}
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::ClearSpectra(){  
+  // To be done
+}
+///////////////////////////////////////////////////////////////////////////
+map< vector<string> , TH1*> TSiLiPhysics::GetSpectra() {
+  if(m_Spectra)
+    return m_Spectra->GetMapHisto();
+  else{
+    map< vector<string> , TH1*> empty;
+    return empty;
+  }
+} 
+///////////////////////////////////////////////////////////////////////////
+
+void TSiLiPhysics::PreTreat(){  
+
+  //   X
+  //   E
+  ClearPreTreatedData();
+  double E,T;
+  for(unsigned int i = 0 ; i < EventData->GetEnergyMult() ; ++i)
+    {
+    	if( EventData->GetEEnergy(i)>m_SiLi_RAW_Threshold )
+    	{
+		E=CalibrationManager::getInstance()->ApplyCalibration("SiLi/Detector" + itoa( EventData->GetENumber(i) ) +"_E",EventData->GetEEnergy(i));
+    		if(E>m_SiLi_E_Threshold)
+    		{
+        		PreTreatedData->SetENumber( EventData->GetENumber(i) );
+        		PreTreatedData->SetEEnergy( E );
+    		}
+    	}
+    }
+  for(unsigned int i = 0 ; i < EventData->GetTimeMult() ; ++i)
+    {
+	T=CalibrationManager::getInstance()->ApplyCalibration("SiLi/Detector"+itoa(EventData->GetTNumber(i))+"_T",EventData->GetTTime(i) ) ;      
+	PreTreatedData->SetTNumber( EventData->GetTNumber(i) );
+        PreTreatedData->SetTTime( T );
+            
+    }  
+    
+}
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::BuildPhysicalEvent()
+   {
+      BuildSimplePhysicalEvent()   ;
+   }
+
+///////////////////////////////////////////////////////////////////////////
+void TSiLiPhysics::BuildSimplePhysicalEvent()
+   {
+      PreTreat();
+
+      double SiLi_T=-1000;  
+      double SiLi_E=-1000;  
+      int SiLi_N=-1000;  
+      vector<double> SiLi_E_vect,SiLi_T_vect;
+      vector<int> SiLi_N_vect;
+      for(unsigned int j = 0 ; j < EventData->GetEnergyMult() ; j++)  
+      {
+        SiLi_E=PreTreatedData->GetEEnergy(j);  
+        SiLi_N=PreTreatedData->GetENumber(j);  
+     	for(unsigned int i = 0 ; i < EventData->GetTimeMult() ; i++)  
+      	{
+      		if(PreTreatedData->GetENumber(j)==PreTreatedData->GetTNumber(i)) 
+      		{
+      			SiLi_T=EventData->GetTTime(i);
+      		}
+      	}
+      	SiLi_E_vect.push_back( SiLi_E); 
+      	SiLi_T_vect.push_back( SiLi_T); 
+      	SiLi_N_vect.push_back( SiLi_N); 
+      }
+      for(unsigned int i = 0 ; i < SiLi_E_vect.size() ; i++)
+         {
+            DetectorNumber.push_back( SiLi_N_vect[i] )   ;
+            Energy.push_back( SiLi_E_vect[i]  );
+            Time.push_back( SiLi_T_vect[i]  );
+         }
+
+   }
+
+
diff --git a/NPLib/SiLi/TSiLiPhysics.h b/NPLib/SiLi/TSiLiPhysics.h
new file mode 100644
index 0000000000000000000000000000000000000000..d7ab296760f27a10cfe0c4559ed7eb421d5b64b7
--- /dev/null
+++ b/NPLib/SiLi/TSiLiPhysics.h
@@ -0,0 +1,120 @@
+#ifndef __SiLiPhysics__
+#define __SiLiPhysics__
+/*****************************************************************************
+ * Copyright (C) 2009-2013    this file is part of the NPTool Project        *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : November 2009                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold theSiLi Detector  Physics                             *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+ 
+//   STL
+#include <vector>
+using namespace std ;
+
+class TSiLiSpectra;
+//   ROOT
+#include "TObject.h"
+
+//   NPL
+#include "TSiLiData.h"
+#include "TSiLiSpectra.h"
+#include "../include/VDetector.h"
+#include "../include/CalibrationManager.h"
+
+class TSiLiPhysics : public TObject, public NPA::VDetector
+{
+   public:   //   Constructor and Destructor
+      TSiLiPhysics();
+      ~TSiLiPhysics();
+
+   public:
+      void  Clear();
+      void  Clear(const Option_t*) {};
+   
+   public:   //   Calibrated Data
+      vector<UShort_t>   DetectorNumber ;
+      vector<Double_t>   Energy;
+      vector<Double_t>   Time;
+
+   public:   //   inherrited from VDetector
+      //   Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
+      void ReadConfiguration(string);
+      
+
+      //   Add Parameter to the CalibrationManger
+      void AddParameterToCalibrationManager();      
+
+      //   Activated associated Branches and link it to the private member DetectorData address
+      //   In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
+      void InitializeRootInputRaw() ;
+      
+      //   Activated associated Branches and link it to the private member DetectorPhysics address
+      //   In this method mother Branches (Detector) AND daughter leaf (parameter) have to be activated
+      void InitializeRootInputPhysics() ;
+
+      //   Create associated branches and associated private member DetectorPhysics address
+      void InitializeRootOutput();
+      
+      //   This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. 
+      void BuildPhysicalEvent();
+      
+      //   Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...).
+      //   This method aimed to be used for analysis performed during experiment, when speed is requiered.
+      //   NB: This method can eventually be the same as BuildPhysicalEvent.
+      void BuildSimplePhysicalEvent();
+
+      // Same as above but for online analysis
+      void BuildOnlinePhysicalEvent()  {BuildPhysicalEvent();};
+
+      // Give and external TSiLiData object to TSiLiPhysics. Needed for online analysis for example.
+      void SetRawDataPointer(TSiLiData* rawDataPointer) {EventData = rawDataPointer;}
+
+      //   Those two method all to clear the Event Physics or Data
+      void ClearEventPhysics() {Clear();}      
+      void ClearEventData()    {EventData->Clear();}      
+
+    // Method related to the TSpectra classes, aimed at providing a framework for online applications
+    // Instantiate the Spectra class and the histogramm throught it
+    void InitSpectra();
+    // Fill the spectra hold by the spectra class
+    void FillSpectra();
+    // Used for Online mainly, perform check on the histo and for example change their color if issues are found
+    void CheckSpectra();
+    // Used for Online only, clear all the spectra hold by the Spectra class
+    void ClearSpectra();
+    //   Clear The PreTeated object
+    void ClearPreTreatedData()   {PreTreatedData->Clear();}
+
+    //   Remove bad channel, calibrate the data and apply threshold
+    void PreTreat();
+    
+   private:   // Data not writted in the tree
+      int                NumberOfDetector ;//!
+      TSiLiData*         EventData ;//!
+      TSiLiData*         PreTreatedData ;//!
+      TSiLiPhysics*      EventPhysics ;//!
+      TSiLiSpectra*	    m_Spectra;//!
+      double 		 m_SiLi_E_Threshold;   
+      double 		 m_SiLi_RAW_Threshold;   
+  public: // Spectra Getter
+    map< vector<string> , TH1*> GetSpectra(); 
+
+      ClassDef(TSiLiPhysics,1)  // SiLiPhysics structure
+};
+
+#endif
diff --git a/NPLib/SiLi/TSiLiSpectra.cxx b/NPLib/SiLi/TSiLiSpectra.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..d526bc569776b443918f0f5eaecc48b66431c571
--- /dev/null
+++ b/NPLib/SiLi/TSiLiSpectra.cxx
@@ -0,0 +1,434 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2013   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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : dec 2013                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds all the online spectra needed for SiLi              *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *    + first version (not complete yet)                                     *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+// STL
+#include <iostream>
+#include <cstdlib>
+#include <stdexcept>
+
+// NPL
+#include "TSiLiSpectra.h"
+#include "NPOptionManager.h"
+#include "NPGlobalSystemOfUnits.h"
+#include "NPPhysicalConstants.h"
+#ifdef NP_SYSTEM_OF_UNITS_H
+using namespace NPUNITS;
+#endif
+
+
+// ROOT
+#include "string.h"
+#include "TDirectory.h"
+#include "TFile.h"
+
+
+////////////////////////////////////////////////////////////////////////////////
+TSiLiSpectra::TSiLiSpectra()
+{
+  fNumberDetector =  0;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TSiLiSpectra::TSiLiSpectra(unsigned int NumberOfDetectors)
+{
+  if(NPOptionManager::getInstance()->GetVerboseLevel()>0)
+    cout << "************************************************" << endl
+      << "TSiLiSpectra : Initalising control spectra for " 
+      << NumberOfDetectors << " detectorss" << endl
+      << "************************************************" << endl ;
+
+  fNumberDetector = NumberOfDetectors;
+
+  InitRawSpectra();
+  InitPreTreatedSpectra();
+  InitPhysicsSpectra();
+}
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TSiLiSpectra::~TSiLiSpectra(){
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiLiSpectra::InitRawSpectra()
+{
+   string name;
+   int NbrBin = 512;
+   int MinBin = 0;
+   int MaxBin = 16384;
+
+   for (unsigned int i = 0; i < fNumberDetector; i++) { // loop on number of detectors
+      // SILI_E_RAW
+      name = Form("SILI_%d_E_RAW", i+1);
+      AddHisto1D(name, name, NbrBin, MinBin, MaxBin, "SILI/RAW/ENERGY");
+
+      // SILI_T_RAW
+      name = Form("SILI_%d_T_RAW", i+1);
+      AddHisto1D(name, name, NbrBin, MinBin, MaxBin, "SILI/RAW/TIME");
+   } // end loop on number of detectors
+
+   // SILI_E_RAW
+   name = "SILI_E_RAW";
+   AddHisto2D(name, name, fNumberDetector, 1, fNumberDetector+1, NbrBin, MinBin, MaxBin, "SILI/RAW/ENERGY");
+
+   // SILI_T_RAW
+   name = "SILI_T_RAW";
+   AddHisto2D(name, name, fNumberDetector, 1, fNumberDetector+1, NbrBin, MinBin, MaxBin, "SILI/RAW/TIME");
+
+   // SILI_HIT_E_RAW
+   name = "SILI_HITPATTERN_E_RAW";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "SILI/RAW/ENERGY");
+
+   // SILI_HIT_T_RAW
+   name = "SILI_HITPATTERN_T_RAW";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "SILI/RAW/TIME");
+
+   // E_RAW_MULT
+   name = "SILI_E_RAW_MULT";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "SILI/RAW/MULT");
+
+   // T_RAW_MULT
+   name = "SILI_T_RAW_MULT";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "SILI/RAW/MULT");
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiLiSpectra::InitPreTreatedSpectra()
+{
+   string name;
+   int NbrBin  = 512;
+   int MinBinE = 0;
+   int MaxBinE = 10;    // MeV
+   int MinBinT = 0;
+   int MaxBinT = 1;     // us 
+ 
+   for (unsigned int i = 0; i < fNumberDetector; i++) { // loop on number of detectors
+      // SILI_E_CAL
+      name = Form("SILI_%d_E_CAL", i+1);
+      AddHisto1D(name, name, NbrBin, MinBinE, MaxBinE, "SILI/CAL/ENERGY");
+
+      // SILI_T_CAL
+      name = Form("SILI_%d_T_CAL", i+1);
+      AddHisto1D(name, name, NbrBin, MinBinT, MaxBinT, "SILI/CAL/TIME");
+
+   } // end loop on number of detectors
+
+   // SILI_E_CAL
+   name = "SILI_ESUM_CAL";
+   AddHisto1D(name, name, NbrBin, MinBinE, MaxBinE, "SILI/CAL/ENERGY");
+
+   // SILI_E_CAL
+   name = "SILI_E_CAL";
+   AddHisto2D(name, name, fNumberDetector, 1, fNumberDetector+1, NbrBin, MinBinE, MaxBinE, "SILI/CAL/ENERGY");
+
+   // SILI_T_CAL
+   name = "SILI_T_CAL";
+   AddHisto2D(name, name, fNumberDetector, 1, fNumberDetector+1, NbrBin, MinBinT, MaxBinT, "SILI/CAL/TIME");
+
+   // SILI_HIT_E_CAL
+   name = "SILI_HITPATTERN_E_CAL";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "SILI/CAL/ENERGY");
+
+   // SILI_HIT_T_CAL
+   name = "SILI_HITPATTERN_T_CAL";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "SILI/CAL/TIME");
+
+   // E_CAL_MULT
+   name = "SILI_E_CAL_MULT";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "SILI/CAL/MULT");
+
+   // T_CAL_MULT
+   name = "SILI_T_CAL_MULT";
+   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "SILI/CAL/MULT");
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiLiSpectra::InitPhysicsSpectra()
+{
+   string name;
+
+   int NbrBin  = 512;
+   int MinBinE = 0;
+   int MaxBinE = 10;
+   int MinBinT = 0;
+   int MaxBinT = 1;
+
+   // Energy-Time Correlation
+   for (unsigned int i = 0 ; i < fNumberDetector ; i++) { // loop on number of detectors
+      name = Form("SILI_%d_E_TOF", i+1);
+      AddHisto2D(name, name, NbrBin, MinBinE, MaxBinE, NbrBin, MinBinT, MaxBinT, "SILI/PHY"); 
+   }
+
+   // E-TOF:
+   name = "SILI_E_TOF";
+   AddHisto2D(name, name, NbrBin, MinBinE, MaxBinE, NbrBin, MinBinT, MaxBinT, "SILI/PHY");
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiLiSpectra::FillRawSpectra(TSiLiData* RawData)
+{
+   string name;
+   string family;
+  
+   // E_RAW
+   for (unsigned int i = 0; i < RawData->GetEnergyMult(); i++) {
+      name   = Form("SILI_%d_E_RAW", RawData->GetENumber(i));
+      family = "SILI/RAW/ENERGY";
+      GetHisto(family,name) -> Fill(RawData->GetEEnergy(i));
+   }
+
+   // T_RAW
+   for (unsigned int i = 0; i < RawData->GetTimeMult(); i++) {
+      name   = Form("SILI_%d_T_RAW", RawData->GetTNumber(i));
+      family = "SILI/RAW/TIME";
+      GetHisto(family,name) -> Fill(RawData->GetTTime(i));
+   }
+
+   // SILI_E_RAW
+   name = "SILI_E_RAW";
+   family = "SILI/RAW/ENERGY";
+   for (unsigned int i = 0; i < RawData->GetEnergyMult(); i++) {
+      GetHisto(family,name) -> Fill(RawData->GetENumber(i), RawData->GetEEnergy(i));
+   }
+
+   // SILI_T_RAW
+   name = "SILI_T_RAW";
+   family = "SILI/RAW/TIME";
+   for (unsigned int i = 0; i < RawData->GetTimeMult(); i++) {
+      GetHisto(family,name) -> Fill(RawData->GetTNumber(i), RawData->GetTTime(i));
+   }
+
+   // SILI_HIT_E_RAW
+   name = "SILI_HITPATTERN_E_RAW";
+   family = "SILI/RAW/ENERGY";
+   for (unsigned int i = 0; i < RawData->GetEnergyMult(); i++) {
+      GetHisto(family,name) -> Fill(RawData->GetENumber(i));
+   }
+
+   // SILI_HIT_T_RAW
+   name = "SILI_HITPATTERN_T_RAW";
+   family = "SILI/RAW/TIME";
+   for (unsigned int i = 0; i < RawData->GetTimeMult(); i++) {
+      GetHisto(family,name) -> Fill(RawData->GetTNumber(i));
+   }
+
+   // E_RAW_MULT
+   name = "SILI_E_RAW_MULT";
+   family = "SILI/RAW/MULT";
+   GetHisto(family,name) -> Fill(RawData->GetEnergyMult());
+
+   // T_RAW_MULT
+   name = "SILI_T_RAW_MULT";
+   family = "SILI/RAW/MULT";
+   GetHisto(family,name) -> Fill(RawData->GetTimeMult());
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiLiSpectra::FillPreTreatedSpectra(TSiLiData* PreTreatedData)
+{
+   string name;
+   string family;
+  
+   // E_CAL
+   for (unsigned int i = 0; i < PreTreatedData->GetEnergyMult(); i++) {
+      name   = Form("SILI_%d_E_CAL", PreTreatedData->GetENumber(i));
+      family = "SILI/CAL/ENERGY";
+      GetHisto(family,name) -> Fill(PreTreatedData->GetEEnergy(i));
+   }
+
+   // T_CAL
+   for (unsigned int i = 0; i < PreTreatedData->GetTimeMult(); i++) {
+      name   = Form("SILI_%d_T_CAL", PreTreatedData->GetTNumber(i));
+      family = "SILI/CAL/TIME";
+      GetHisto(family,name) -> Fill(PreTreatedData->GetTTime(i));
+   }
+
+   // SILI_E_CAL
+   name = "SILI_E_CAL";
+   family = "SILI/CAL/ENERGY";
+   for (unsigned int i = 0; i < PreTreatedData->GetEnergyMult(); i++) {
+      GetHisto(family,name) -> Fill(PreTreatedData->GetENumber(i), PreTreatedData->GetEEnergy(i));
+   }
+
+   // SILI_T_CAL
+   name = "SILI_T_CAL";
+   family = "SILI/CAL/TIME";
+   for (unsigned int i = 0; i < PreTreatedData->GetTimeMult(); i++) {
+      GetHisto(family,name) -> Fill(PreTreatedData->GetTNumber(i), PreTreatedData->GetTTime(i));
+   }
+
+   // SILI_HIT_E_CAL
+   name = "SILI_HITPATTERN_E_CAL";
+   family = "SILI/CAL/ENERGY";
+   for (unsigned int i = 0; i < PreTreatedData->GetEnergyMult(); i++) {
+      GetHisto(family,name) -> Fill(PreTreatedData->GetENumber(i));
+   }
+
+   // SILI_HIT_T_CAL
+   name = "SILI_HITPATTERN_T_CAL";
+   family = "SILI/CAL/TIME";
+   for (unsigned int i = 0; i < PreTreatedData->GetTimeMult(); i++) {
+      GetHisto(family,name) -> Fill(PreTreatedData->GetTNumber(i));
+   }
+
+   // E_CAL_MULT
+   name = "SILI_E_CAL_MULT";
+   family = "SILI/CAL/MULT";
+   GetHisto(family,name) -> Fill(PreTreatedData->GetEnergyMult());
+
+   // T_CAL_MULT
+   name = "SILI_T_CAL_MULT";
+   family = "SILI/CAL/MULT";
+   GetHisto(family,name) -> Fill(PreTreatedData->GetTimeMult());
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiLiSpectra::FillPhysicsSpectra(TSiLiPhysics* Physics)
+{
+   string name;
+   string family = "SILI/PHY";
+
+
+   // Energy-Time Correlation
+   for (unsigned int i = 0 ; i < Physics->DetectorNumber.size(); i++) { // loop on number of detectors
+      name = Form("SILI_%d_E_TOF", i+1);
+      GetHisto(family,name) -> Fill(Physics->Time[i], Physics->Energy[i]);
+   }
+
+   // E-TOF:
+   name = "SILI_E_TOF";
+   for (unsigned int i = 0 ; i < Physics->DetectorNumber.size(); i++) { // loop on number of detectors
+      GetHisto(family,name) -> Fill(Physics->Time[i], Physics->Energy[i]);
+   }
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* TSiLiSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
+  // create histo
+  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
+
+  vector<string> index ;
+  index.push_back(family);
+  index.push_back(name);
+
+  // fill map
+  fMapHisto[index]=hist;
+
+  return hist;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* TSiLiSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
+  // create histo
+  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
+
+  vector<string> index ;
+  index.push_back(family);
+  index.push_back(name);
+
+  // fill map
+  fMapHisto[index]=hist;
+
+  return hist;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* TSiLiSpectra::GetHisto(string& family, string& name){
+  vector<string> index;
+  index.push_back(family);
+  index.push_back(name);
+  TH1* histo ; 
+  
+  try{
+    histo = fMapHisto.at(index); 
+  }
+
+  catch(const std::out_of_range& oor){
+  cout << "ERROR : the folowing Histo has been requested by TSiLiSpectra and does not exist: family:" << family << " name: "  << name << endl ;
+  exit(1);
+  }
+
+  return histo;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiLiSpectra::WriteHisto(string filename)
+{
+   TFile *f = NULL; 
+
+   if (filename != "VOID") {
+      f = new TFile(filename.c_str(), "RECREATE");
+   }
+
+   map< vector<string>, TH1* >::iterator it;
+   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
+      it->second->Write();
+   }
+
+   if (filename != "VOID") {
+      f->Close();
+      delete f;
+   }
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+void TSiLiSpectra::CheckSpectra()
+{
+   map< vector<string>, TH1* >::iterator it;
+   Color_t ok_color      = kTeal+9;
+   Color_t warning_color = kOrange+8;  warning_color *= 1;
+   Color_t bad_color     = kRed;       bad_color     *= 1;
+
+   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it)
+   {
+      it->second->SetLineColor(ok_color);
+      it->second->SetFillStyle(1001);
+      it->second->SetFillColor(ok_color);
+   }
+}
diff --git a/NPLib/SiLi/TSiLiSpectra.h b/NPLib/SiLi/TSiLiSpectra.h
new file mode 100644
index 0000000000000000000000000000000000000000..e8622f18f42b2acee72b05bef6b7d4be44eec6e2
--- /dev/null
+++ b/NPLib/SiLi/TSiLiSpectra.h
@@ -0,0 +1,82 @@
+#ifndef TSILI_H
+#define TSILI_H
+/*****************************************************************************
+ * Copyright (C) 2009-2013    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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : dec 2013                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds all the online spectra needed for SiLi              *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *    + first version (not complete yet)                                     *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ STL headers
+#include <map>
+
+// ROOT headers
+#include "TObject.h"
+#include <TH1.h>
+#include <TH2.h>
+
+// NPLib headers
+#include "TSiLiData.h"
+#include "TSiLiPhysics.h"
+using namespace std;
+
+// ForwardDeclaration
+class TSiLiPhysics;
+
+class TSiLiSpectra {
+  public:
+    // constructor and destructor
+    TSiLiSpectra();
+    TSiLiSpectra(unsigned int NumberOfTelescope);
+    ~TSiLiSpectra();
+
+  private:
+    // Instantiate and register histo to maps
+    TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
+    TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
+                                                 Int_t nbinsy, Double_t ylow, Double_t yup, string family);
+
+    // Initialization methods
+    void InitRawSpectra();
+    void InitPreTreatedSpectra();
+    void InitPhysicsSpectra();
+
+  public:
+    // Filling methods
+    void FillRawSpectra(TSiLiData*);
+    void FillPreTreatedSpectra(TSiLiData*);
+    void FillPhysicsSpectra(TSiLiPhysics*);
+    // Check the Spectra
+    void CheckSpectra();
+
+  public:
+    // get map histo which will be used for GSpectra in GUser
+    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
+    TH1* GetHisto(string& family,string& name);    
+    void WriteHisto(string filename="VOID");      
+
+  private: // Information on CHARISSA
+    unsigned int fNumberDetector;
+
+  private:
+    // map holding histo pointers and their family names
+    map< vector<string>, TH1* > fMapHisto;
+};
+
+#endif
diff --git a/NPLib/SiRes/Makefile b/NPLib/SiRes/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..a58805605a4f89d2d7a6d7e6ead66f7d2a1de929
--- /dev/null
+++ b/NPLib/SiRes/Makefile
@@ -0,0 +1,40 @@
+include ../Makefile.arch
+
+#------------------------------------------------------------------------------
+SHARELIB      =  libSiRes.so
+
+all:            $(SHARELIB)
+#------------------------------------------------------------------------------
+############### Detector ##############
+
+## SiRes ##
+libSiRes.so: TSiResData.o	TSiResDataDict.o TSiResPhysics.o	TSiResPhysicsDict.o TSiResSpectra.o
+			$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TSiResDataDict.cxx:	TSiResData.h
+			rootcint -f $@ -c $^
+
+TSiResPhysicsDict.cxx:	TSiResPhysics.h
+			rootcint -f $@ -c $^
+
+# dependances
+TSiResData.o:	TSiResData.cxx	TSiResData.h
+TSiResPhysics.o:	TSiResPhysics.cxx	TSiResPhysics.h
+TSiResSpectra.o:	TSiResSpectra.cxx	TSiResSpectra.h
+#######################################
+
+############# Clean and More ##########
+clean:
+	@rm -f core *~ *.o *Dict*
+
+distclean:
+	  make clean; rm -f *.so
+
+.SUFFIXES: .$(SrcSuf)
+
+###
+
+.$(SrcSuf).$(ObjSuf):
+	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
+
+
diff --git a/NPLib/SiRes/TSiResData.cxx b/NPLib/SiRes/TSiResData.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..84ab71c514c13eba0902ef1f9d5f7ad9d692d77b
--- /dev/null
+++ b/NPLib/SiRes/TSiResData.cxx
@@ -0,0 +1,66 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2013   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ *                                                                           *
+ * Original Author :  Adrien MATTA    contact address: matta@ipno.in2p3.fr   *
+ *                                                                           *
+ * Creation Date   :                                                         *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include <iostream>
+#include "TSiResData.h"
+
+
+ClassImp(TSiResData)
+
+TSiResData::TSiResData()
+{
+}
+
+
+
+TSiResData::~TSiResData()
+{
+}
+
+
+
+void TSiResData::Clear()
+{
+   // Energy
+   fSiRes_E_Number.clear();
+   fSiRes_E_Channel.clear();
+   fSiRes_E_Energy.clear();
+   // Time
+   fSiRes_T_Number.clear();
+   fSiRes_T_Time.clear();
+   fSiRes_E_EnergyBack.clear();
+}
+
+
+
+void TSiResData::Dump() const
+{
+   cout << "XXXXXXXXXXXXXXXXXXXXXXXX TSiRes: New Event XXXXXXXXXXXXXXXXX" << endl;
+
+   // Energy
+   for (unsigned short i = 0 ; i< fSiRes_E_Energy.size() ; i ++) {
+         cout << "SiRes Number " << fSiRes_E_Number[i] << " Energy: " << fSiRes_E_Energy[i]  << endl;
+   }
+   
+   // Time
+   for (unsigned short i = 0 ; i< fSiRes_T_Time.size() ; i ++) {
+         cout << "SiRes Number " << fSiRes_T_Number[i] << " Time: " << fSiRes_T_Time[i]  << endl;
+   }
+}
diff --git a/NPLib/SiRes/TSiResData.h b/NPLib/SiRes/TSiResData.h
new file mode 100644
index 0000000000000000000000000000000000000000..17006e0263815c2202bf9078e0bcccdd4c02358b
--- /dev/null
+++ b/NPLib/SiRes/TSiResData.h
@@ -0,0 +1,78 @@
+#ifndef __SIRESDATA__
+#define __SIRESDATA__
+/*****************************************************************************
+ * Copyright (C) 2009-2013    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:    contact address:                                      *
+ *                                                                           *
+ * Creation Date  :                                                          *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include <vector>
+#include <iostream>
+
+#include "TObject.h"
+using namespace std ;
+
+
+class TSiResData : public TObject {
+ private:
+   // Energy 
+   vector<int>     fSiRes_E_Number;
+   vector<int>     fSiRes_E_Channel;
+   vector<double>  fSiRes_E_Energy;   
+   // Time
+   vector<int>     fSiRes_T_Number;
+   vector<double>  fSiRes_T_Time;
+   vector<int>     fSiRes_E_EnergyBack_Number;
+   vector<double>  fSiRes_E_EnergyBack;
+   
+ public:
+   TSiResData();
+   virtual ~TSiResData();
+
+   void   Clear();
+   void   Clear(const Option_t*) {};
+   void   Dump() const;
+
+   /////////////////////           GETTERS           ////////////////////////
+   // Energy
+   unsigned int   GetEnergyMult()   {return fSiRes_E_Number.size();}
+   int            GetEChannelNumber(int i) {return fSiRes_E_Channel[i];}
+   int            GetEDetectorNumber(int i) {return fSiRes_E_Number[i];}
+   double         GetEEnergy(int i) {return fSiRes_E_Energy[i];}
+   // Time 
+   unsigned int   GetTimeMult()     {return fSiRes_T_Number.size();}
+   int            GetTDetectorNumber(int i) {return fSiRes_T_Number[i];}
+   double         GetTTime(int i)   {return fSiRes_T_Time[i];}
+   double         GetEEnergyBack(int i)   	{return fSiRes_E_EnergyBack[i];}
+   int            GetEEnergyBackDetectorNumber(int i)   {return fSiRes_E_EnergyBack_Number[i];}
+   double         GetEEnergyBackMult()   	{return fSiRes_E_EnergyBack.size();}
+
+   /////////////////////           SETTERS           ////////////////////////
+   // Energy
+   void     SetEDetectorNumber(int N)    	{fSiRes_E_Number.push_back(N);}
+   void     SetEChannelNumber(int channel)    	{fSiRes_E_Channel.push_back(channel);}
+   void     SetEEnergy(double E) 		{fSiRes_E_Energy.push_back(E);}
+   // time
+   void     SetTDetectorNumber(int N)    	{fSiRes_T_Number.push_back(N);}
+   void     SetTTime(double T)   		{fSiRes_T_Time.push_back(T);}
+   void     SetEEnergyBack(double E)   		{fSiRes_E_EnergyBack.push_back(E);}
+   void     SetEEnergyBackDetectorNumber(int N) {fSiRes_E_EnergyBack_Number.push_back(N);}
+
+   ClassDef(TSiResData,1)  // SiResData structure
+};
+
+#endif
diff --git a/NPLib/SiRes/TSiResPhysics.cxx b/NPLib/SiRes/TSiResPhysics.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..a07c71aea59326967f1276dd2af7c44fa676b67b
--- /dev/null
+++ b/NPLib/SiRes/TSiResPhysics.cxx
@@ -0,0 +1,348 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2013   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : november 2009                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold SiRes  Physics                                         *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+//   NPL
+#include "TSiResPhysics.h"
+#include "../include/RootOutput.h"
+#include "../include/RootInput.h"
+
+//   STL
+#include <iostream>
+#include <sstream>
+#include <fstream>
+#include <limits>
+#include <stdlib.h>
+using namespace std;
+
+//   ROOT
+#include "TChain.h"
+
+//   tranform an integer to a string
+string itoa(int value)
+{
+   char buffer [33];
+   sprintf(buffer,"%d",value);
+   return buffer;
+}
+
+ClassImp(TSiResPhysics)
+///////////////////////////////////////////////////////////////////////////
+TSiResPhysics::TSiResPhysics()
+   {      
+      NumberOfDetector = 0 ;
+      EventData = new TSiResData ;
+      PreTreatedData    = new TSiResData ;     
+      EventPhysics = this ;
+      m_SiRes_E_Threshold   = 0;   
+      m_SiRes_RAW_Threshold   = 0;     
+      m_SiRes_EBack_Threshold   = 0;   
+      m_SiRes_RAWBack_Threshold   = 0;     
+   }
+   
+///////////////////////////////////////////////////////////////////////////
+TSiResPhysics::~TSiResPhysics()
+   {}
+   
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::Clear()
+   {
+      DetectorNumber.clear() ;
+      ChannelNumber.clear() ;
+      Energy.clear() ;
+      Time.clear() ;
+      EnergyBack.clear() ;
+      x.clear() ;
+      y.clear() ;
+   }
+   
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::ReadConfiguration(string Path) 
+   {
+      ifstream ConfigFile           ;
+      ConfigFile.open(Path.c_str()) ;
+      string LineBuffer             ;
+      string DataBuffer             ;
+
+      bool check_Thickness = false      ;
+      bool check_Height = false         ;
+      bool check_Width = false          ;
+      bool check_X = false              ;
+      bool check_Y = false              ;
+      bool check_Z = false              ;      
+      bool ReadingStatus = false        ;
+
+    while (!ConfigFile.eof()) 
+       {
+         
+         getline(ConfigFile, LineBuffer);
+
+         //   If line is a Start Up SiRes bloc, Reading toggle to true      
+         if (LineBuffer.compare(0, 5, "SiRes") == 0) 
+            {
+               cout << "///" << endl ;
+               cout << "SiRes found: " << endl ;        
+               ReadingStatus = true ;
+            }
+            
+         //   Else don't toggle to Reading Block Status
+         else ReadingStatus = false ;
+         
+         //   Reading Block
+         while(ReadingStatus)
+            {
+               // Pickup Next Word 
+               ConfigFile >> DataBuffer ;
+
+               //   Comment Line 
+               if (DataBuffer.compare(0, 1, "%") == 0) {   ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
+
+                  //   Finding another telescope (safety), toggle out
+               else if (DataBuffer.compare(0, 5, "SiRes") == 0) {
+                  cout << "WARNING: Another Detector is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
+                  ReadingStatus = false ;
+               }
+                              
+               //Position method
+               else if (DataBuffer=="X=") {
+                  check_X = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "X:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+
+               else if (DataBuffer=="Y=") {
+                  check_Y = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "Y:  " << atof( DataBuffer.c_str() ) << "mm"<< endl;
+               }
+
+               else if (DataBuffer=="Z=") {
+                  check_Z = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "Z:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+               
+
+                 // Squared shape
+               else if (DataBuffer=="Width=") {
+                  check_Width = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "SiRes Width:  " <<atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+               else if (DataBuffer== "Height=") {
+                  check_Height = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "SiRes Height:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+               // Common
+               else if (DataBuffer=="Thickness=") {
+                  check_Thickness = true;
+                  ConfigFile >> DataBuffer ;
+                  cout << "SiRes Thickness:  " << atof( DataBuffer.c_str() ) << "mm" << endl;
+               }
+               
+                                                
+               ///////////////////////////////////////////////////
+               //   If no Detector Token and no comment, toggle out
+               else 
+                  {ReadingStatus = false; cout << "Wrong Token Sequence: Getting out " << DataBuffer << endl ;}
+               
+                  /////////////////////////////////////////////////
+                  //   If All necessary information there, toggle out
+               
+               if ( check_Thickness && check_Height &&   check_Width && check_X && check_Y && check_Z ) 
+                  { 
+                     NumberOfDetector++;
+                     
+                     //   Reinitialisation of Check Boolean  
+                     check_Thickness = false      ;
+                     check_Height = false         ;
+                     check_Width = false          ;
+                     check_X = false              ;
+                     check_Y = false              ;
+                     check_Z = false              ;
+                     ReadingStatus = false        ;   
+                     cout << "///"<< endl         ;                
+                  }
+            }
+      }
+   }
+
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::AddParameterToCalibrationManager()
+   {
+      CalibrationManager* Cal = CalibrationManager::getInstance();
+      
+      for(int i = 0 ; i < NumberOfDetector ; i++)
+         {
+            for( int j = 0 ; j < 4 ; j++)
+               {
+                  Cal->AddParameter("SiRes", "Detector"+itoa(i+1)+"_E","SiRes_Detector"+itoa(i+1)+"_E")   ;
+               }
+               Cal->AddParameter("SiRes", "Detector"+itoa(i+1)+"_EBack","SiRes_Detector"+itoa(i+1)+"_EBack")   ;   
+               Cal->AddParameter("SiRes", "Detector"+itoa(i+1)+"_T","SiRes_Detector"+itoa(i+1)+"_T")   ;   
+      
+         }
+   }
+   
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::InitializeRootInputRaw() 
+   {
+      TChain* inputChain = RootInput::getInstance()->GetChain()     ;
+      inputChain->SetBranchStatus ( "SiRes"       , true )        ;
+      inputChain->SetBranchStatus ( "fSiRes_*"    , true )        ;
+      inputChain->SetBranchAddress( "SiRes"       , &EventData )  ;
+   }
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::InitializeRootInputPhysics()
+   {
+      TChain* inputChain = RootInput::getInstance()->GetChain();
+      inputChain->SetBranchStatus ( "SiRes", true );
+      inputChain->SetBranchStatus ( "DetectorNumber", true );
+      inputChain->SetBranchStatus ( "ChannelNumber", true );
+      inputChain->SetBranchStatus ( "Energy", true );
+      inputChain->SetBranchStatus ( "EnergyBack", true );
+      inputChain->SetBranchStatus ( "Time", true );
+      inputChain->SetBranchAddress( "SiRes", &EventPhysics );
+   }
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::InitializeRootOutput()
+   {
+      TTree* outputTree = RootOutput::getInstance()->GetTree()            ;
+      outputTree->Branch( "SiRes" , "TSiResPhysics" , &EventPhysics ) ;
+   }
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::InitSpectra(){  
+   m_Spectra = new TSiResSpectra(NumberOfDetector);
+}
+
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::FillSpectra(){  
+   m_Spectra -> FillRawSpectra(EventData);
+   m_Spectra -> FillPreTreatedSpectra(PreTreatedData);
+   m_Spectra -> FillPhysicsSpectra(EventPhysics);
+}
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::CheckSpectra(){  
+  m_Spectra->CheckSpectra();  
+}
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::ClearSpectra(){  
+  // To be done
+}
+///////////////////////////////////////////////////////////////////////////
+map< vector<string> , TH1*> TSiResPhysics::GetSpectra() {
+  if(m_Spectra)
+    return m_Spectra->GetMapHisto();
+  else{
+    map< vector<string> , TH1*> empty;
+    return empty;
+  }
+} 
+///////////////////////////////////////////////////////////////////////////
+
+void TSiResPhysics::PreTreat(){  
+
+  //   X
+  //   E
+  ClearPreTreatedData();
+  double E,T;
+  E=-1000; T=-1000;
+  int N=-1000;
+  for(unsigned int i = 0 ; i < EventData->GetEnergyMult() ; i++)
+    {
+	if( EventData->GetEEnergy(i)>m_SiRes_RAW_Threshold )
+    	{
+		
+		E=CalibrationManager::getInstance()->ApplyCalibration("SiRes/Detector" + itoa( EventData->GetEDetectorNumber(i) ) +"_Channel"+itoa( EventData->GetEChannelNumber(i) )+"_E",EventData->GetEEnergy(i));
+    		//if(E>m_SiRes_E_Threshold)
+    		{
+        		N=EventData->GetEDetectorNumber(i);
+        		PreTreatedData->SetEDetectorNumber( N );
+        		PreTreatedData->SetEChannelNumber( EventData->GetEChannelNumber(i) );
+        		PreTreatedData->SetEEnergy( E );
+    		}
+    	}
+    }
+  for(unsigned int i = 0 ; i < EventData->GetEEnergyBackMult() ; i++)
+    {
+	if( EventData->GetEEnergyBack(i)>m_SiRes_RAWBack_Threshold && EventData->GetEEnergyBackDetectorNumber(i)==N )
+	{
+		E=CalibrationManager::getInstance()->ApplyCalibration("SiRes/Detector" + itoa( EventData->GetEEnergyBackDetectorNumber(i) ) +"_E",EventData->GetEEnergyBack(i));
+		if(E>m_SiRes_EBack_Threshold)
+		{    
+			PreTreatedData->SetEEnergyBackDetectorNumber( EventData->GetEEnergyBackDetectorNumber(i) );
+			PreTreatedData->SetEEnergyBack( E );
+			if(EventData->GetTimeMult()>0)
+			{
+				T=CalibrationManager::getInstance()->ApplyCalibration("SiRes/Detector"+itoa(EventData->GetTDetectorNumber(i))+"_T",EventData->GetTTime(i) ) ;      
+			}            
+			PreTreatedData->SetTTime( T );
+		}
+	}
+    } 
+}
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::BuildPhysicalEvent()
+   {
+      BuildSimplePhysicalEvent()   ;
+   }
+
+
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::BuildSimplePhysicalEvent()
+   {
+	PreTreat();
+      for(unsigned int i = 0 ; i < PreTreatedData->GetEnergyMult() ; i++)
+         {
+            DetectorNumber.push_back( PreTreatedData->GetEDetectorNumber(i) )   ;
+            ChannelNumber.push_back( PreTreatedData->GetEChannelNumber(i) )   ;
+            Energy.push_back( PreTreatedData->GetEEnergy(i) );
+          }
+       for(unsigned int i = 0 ; i < EventData->GetEEnergyBackMult() ; i++)
+         {
+            EnergyBack.push_back( PreTreatedData->GetEEnergyBack(i) );
+//to be corrected when we read time
+         //}
+       //for(unsigned int i = 0 ; i < EventData->GetTimeMult() ; i++)
+        //{
+            Time.push_back( PreTreatedData->GetTTime(i) );
+         }
+     if(PreTreatedData->GetEnergyMult()==4)Treat();
+
+   }
+///////////////////////////////////////////////////////////////////////////
+void TSiResPhysics::Treat()
+   {
+      double E1=-1000; double E2=-1000; double E3=-1000; double E4=-1000; 
+      for(unsigned int i = 0 ; i < EventData->GetEnergyMult() ; i++)
+         {
+         	if(ChannelNumber[i]==0)E1=Energy[i];//DH
+         	if(ChannelNumber[i]==1)E2=Energy[i];//DB
+         	if(ChannelNumber[i]==2)E3=Energy[i];//GB
+         	if(ChannelNumber[i]==3)E4=Energy[i];//GH
+         }
+      	x.push_back( 1+(E1+E2-E3-E4) / (E1+E2+E3+E4) ) ;
+      	y.push_back( 1+(E1+E4-E2-E3) / (E1+E2+E3+E4) ) ;
+   }
diff --git a/NPLib/SiRes/TSiResPhysics.h b/NPLib/SiRes/TSiResPhysics.h
new file mode 100644
index 0000000000000000000000000000000000000000..66833dfff06e67f7395b4ecbd339a644841f2805
--- /dev/null
+++ b/NPLib/SiRes/TSiResPhysics.h
@@ -0,0 +1,127 @@
+#ifndef __SiResPhysics__
+#define __SiResPhysics__
+/*****************************************************************************
+ * Copyright (C) 2009-2013    this file is part of the NPTool Project        *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : November 2009                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold theSiRes Detector  Physics                             *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+ 
+//   STL
+#include <vector>
+using namespace std ;
+
+class TSiResSpectra;
+//   ROOT
+#include "TObject.h"
+
+//   NPL
+#include "TSiResData.h"
+#include "TSiResSpectra.h"
+#include "../include/VDetector.h"
+#include "../include/CalibrationManager.h"
+
+class TSiResPhysics : public TObject, public NPA::VDetector
+{
+   public:   //   Constructor and Destructor
+      TSiResPhysics();
+      ~TSiResPhysics();
+
+   public:
+      void  Clear();
+      void  Clear(const Option_t*) {};
+   
+   public:   //   Calibrated Data
+      vector<UShort_t>   DetectorNumber ;
+      vector<Double_t>   Energy;
+      vector<UShort_t>   ChannelNumber;
+      vector<Double_t>   EnergyBack;
+      vector<Double_t>   Time;
+      vector<Double_t>   x;
+      vector<Double_t>   y;
+
+   public:   //   inherrited from VDetector
+      //   Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
+      void ReadConfiguration(string);
+      
+
+      //   Add Parameter to the CalibrationManger
+      void AddParameterToCalibrationManager();      
+
+      //   Activated associated Branches and link it to the private member DetectorData address
+      //   In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
+      void InitializeRootInputRaw() ;
+      
+      //   Activated associated Branches and link it to the private member DetectorPhysics address
+      //   In this method mother Branches (Detector) AND daughter leaf (parameter) have to be activated
+      void InitializeRootInputPhysics() ;
+
+      //   Create associated branches and associated private member DetectorPhysics address
+      void InitializeRootOutput();
+      
+      //   This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. 
+      void BuildPhysicalEvent();
+      
+      //   Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...).
+      //   This method aimed to be used for analysis performed during experiment, when speed is requiered.
+      //   NB: This method can eventually be the same as BuildPhysicalEvent.
+      void BuildSimplePhysicalEvent();
+
+      // Same as above but for online analysis
+      void BuildOnlinePhysicalEvent()  {BuildPhysicalEvent();};
+
+      // Give and external TSiResData object to TSiResPhysics. Needed for online analysis for example.
+      void SetRawDataPointer(TSiResData* rawDataPointer) {EventData = rawDataPointer;}
+
+      //   Those two method all to clear the Event Physics or Data
+      void ClearEventPhysics() {Clear();}      
+      void ClearEventData()    {EventData->Clear();}      
+
+    // Method related to the TSpectra classes, aimed at providing a framework for online applications
+    // Instantiate the Spectra class and the histogramm throught it
+    void InitSpectra();
+    // Fill the spectra hold by the spectra class
+    void FillSpectra();
+    // Used for Online mainly, perform check on the histo and for example change their color if issues are found
+    void CheckSpectra();
+    // Used for Online only, clear all the spectra hold by the Spectra class
+    void ClearSpectra();
+    //   Clear The PreTeated object
+    void ClearPreTreatedData()   {PreTreatedData->Clear();}
+
+    //   Remove bad channel, calibrate the data and apply threshold
+    void PreTreat();
+    void Treat();
+    
+   private:   // Data not writted in the tree
+      int                NumberOfDetector ;//!
+      TSiResData*         EventData ;//!
+      TSiResData*         PreTreatedData ;//!
+      TSiResPhysics*      EventPhysics ;//!
+      TSiResSpectra*	     m_Spectra;//!
+      double 		 m_SiRes_E_Threshold;   
+      double 		 m_SiRes_RAW_Threshold;   
+      double 		 m_SiRes_EBack_Threshold;   
+      double 		 m_SiRes_RAWBack_Threshold;   
+  public: // Spectra Getter
+    map< vector<string> , TH1*> GetSpectra(); 
+
+      ClassDef(TSiResPhysics,1)  // SiResPhysics structure
+};
+
+#endif
diff --git a/NPLib/SiRes/TSiResSpectra.cxx b/NPLib/SiRes/TSiResSpectra.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..f4f246016da1a2515f3eedbbbb8c06b183333ace
--- /dev/null
+++ b/NPLib/SiRes/TSiResSpectra.cxx
@@ -0,0 +1,372 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2013   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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : dec 2013                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds all the online spectra needed for SiRes              *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *    + first version (not complete yet)                                     *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+// STL
+#include <iostream>
+#include <cstdlib>
+#include <stdexcept>
+
+// NPL
+#include "TSiResSpectra.h"
+#include "NPOptionManager.h"
+#include "NPGlobalSystemOfUnits.h"
+#include "NPPhysicalConstants.h"
+#ifdef NP_SYSTEM_OF_UNITS_H
+using namespace NPUNITS;
+#endif
+
+
+// ROOT
+#include "string.h"
+#include "TDirectory.h"
+#include "TFile.h"
+
+
+////////////////////////////////////////////////////////////////////////////////
+TSiResSpectra::TSiResSpectra()
+{
+  fNumberDetector =  0;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TSiResSpectra::TSiResSpectra(unsigned int NumberOfDetectors)
+{
+  if(NPOptionManager::getInstance()->GetVerboseLevel()>0)
+    cout << "************************************************" << endl
+      << "TSiResSpectra : Initalising control spectra for " 
+      << NumberOfDetectors << " detectorss" << endl
+      << "************************************************" << endl ;
+
+  fNumberDetector = NumberOfDetectors;
+
+  InitRawSpectra();
+  InitPreTreatedSpectra();
+  InitPhysicsSpectra();
+}
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TSiResSpectra::~TSiResSpectra(){
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiResSpectra::InitRawSpectra()
+{
+   string name;
+   int NbrBin = 512;
+   int MinBin = 0;
+   int MaxBin = 16384;
+   for(unsigned int j=0; j<fNumberDetector; j++)
+   {
+	   for (unsigned int i = 0; i < 4; i++) { // loop on channels
+	      // SiRes_E_RAW
+	      name = Form("SiRes_%d_%d_E_RAW", j+1, i+1);
+	      AddHisto1D(name, name, NbrBin, MinBin, MaxBin, "SiRes/RAW/ENERGY");
+	   } // end loop on number of detectors
+
+	   //SiRes_E_RAW
+	   name = Form("SiRes_%d_E_RAW",j+1);
+	   AddHisto2D(name, name, fNumberDetector, 1, fNumberDetector+1, NbrBin, MinBin, MaxBin, "SiRes/RAW/ENERGY");
+
+	   // SiRes_E_RAW
+	   name = Form("SiRes_%d_EBack_RAW", j+1);
+	   AddHisto1D(name, name, NbrBin, MinBin, MaxBin, "SiRes/RAW/ENERGY");
+
+	   // SiRes_T_RAW
+	   name = Form("SiRes_%d_T_RAW",j+1);
+	   AddHisto1D(name, name, NbrBin, MinBin, MaxBin, "SiRes/RAW/TIME");
+
+	   // E_RAW_MULT
+	   name = Form("SiRes_%d_E_RAW_MULT", j+1);
+	   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "SiRes/RAW/MULT");
+
+   }
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiResSpectra::InitPreTreatedSpectra()
+{
+   string name;
+   int NbrBin  = 512;
+   int MinBin = 0;
+   int MaxBin = 10;    // MeV
+   int MinBinT = 0;
+   int MaxBinT = 1;     // us 
+  for(unsigned int j=0; j<fNumberDetector; j++)
+   {
+	   for (unsigned int i = 0; i < 4; i++) { // loop on channels
+	      // SiRes_E_RAW
+	      name = Form("SiRes_%d_%d_E_CAL", j+1, i+1);
+	      AddHisto1D(name, name, NbrBin, MinBin, MaxBin, "SiRes/CAL/ENERGY");
+	   } // end loop on number of detectors
+
+	   //SiRes_E_RAW
+	   name = Form("SiRes_%d_E_CAL",j+1);
+	   AddHisto2D(name, name, fNumberDetector, 1, fNumberDetector+1, NbrBin, MinBin, MaxBin, "SiRes/CAL/ENERGY");
+
+	   // SiRes_E_RAW
+	   name = Form("SiRes_%d_EBack_CAL", j+1);
+	   AddHisto1D(name, name, NbrBin, MinBin, MaxBin, "SiRes/CAL/ENERGY");
+
+	   // SiRes_T_RAW
+	   name = Form("SiRes_%d_T_CAL",j+1);
+	   AddHisto1D(name, name, NbrBin, MinBin, MaxBin, "SiRes/CAL/TIME");
+
+	   // E_RAW_MULT
+	   name = Form("SiRes_%d_E_CAL_MULT", j+1);
+	   AddHisto1D(name, name, fNumberDetector, 1, fNumberDetector+1, "SiRes/CAL/MULT");
+
+   }
+
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiResSpectra::InitPhysicsSpectra()
+{
+   string name;
+
+   int NbrBin  = 100;
+   int MinBin = 0;
+   int MaxBin = 10;
+   int MinBinT = 0;
+   int MaxBinT = 1;     // us 
+   for (unsigned int j = 0; j < fNumberDetector; j++) 
+   { 
+	   name = Form("SiRes_%d_XY", j+1);
+	   AddHisto2D(name, name, NbrBin, MinBin, MaxBin, NbrBin, MinBin, MaxBin, "SiRes/PHY");
+	   // EBack-TOF:
+	   name = Form("SiRes_%d_EBack_TOF", j+1);
+	   AddHisto2D(name, name, NbrBin, MinBin, MaxBin, NbrBin, MinBinT, MaxBinT, "SiRes/PHY");
+   }
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiResSpectra::FillRawSpectra(TSiResData* RawData)
+{
+   string name;
+   string family;
+   int NbrBin  = 100;
+   int MinBin = 0;
+   int MaxBin = 10;
+	for (unsigned int i = 0; i < RawData->GetEnergyMult(); i++) {
+	      name   = Form("SiRes_%d_%d_E_RAW", RawData->GetEDetectorNumber(i), RawData->GetEChannelNumber(i));
+	      family = "SiRes/RAW/ENERGY";
+	      GetHisto(family,name) -> Fill(RawData->GetEEnergy(i));
+
+	      name   = Form("SiRes_%d_E_RAW", RawData->GetEDetectorNumber(i));
+	      family = "SiRes/RAW/ENERGY";
+	      GetHisto(family,name) -> Fill(RawData->GetEChannelNumber(i),RawData->GetEEnergy(i));
+
+	   }
+// SiRes_E_RAW
+	for (unsigned int i = 0; i < RawData->GetEEnergyBackMult(); i++) {
+	   name = Form("SiRes_%d_EBack_RAW",RawData->GetEEnergyBackDetectorNumber(i));
+	   family = "SiRes/RAW/ENERGY";
+	      GetHisto(family,name) -> Fill(RawData->GetEEnergyBack(i));
+	   }
+
+	for (unsigned int i = 0; i < RawData->GetTimeMult(); i++) {
+	   name = Form("SiRes_%d_T_RAW",RawData->GetTDetectorNumber(i));
+	   family = "SiRes/RAW/TIME";
+	      GetHisto(family,name) -> Fill(RawData->GetTTime(i));
+	   }
+	
+	for (unsigned int i = 0; i < RawData->GetEnergyMult(); i++) {
+	      name   = Form("SiRes_%d_E_RAW_MULT", RawData->GetEDetectorNumber(i));
+	      family = "SiRes/RAW/MULT";
+	      GetHisto(family,name) -> Fill(RawData->GetEnergyMult());
+
+	   }
+
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiResSpectra::FillPreTreatedSpectra(TSiResData* PreTreatedData)
+{
+   string name;
+   string family;
+ 
+   int NbrBin  = 100;
+   int MinBin = 0;
+   int MaxBin = 10;
+	for (unsigned int i = 0; i < PreTreatedData->GetEnergyMult(); i++) {
+	      name   = Form("SiRes_%d_%d_E_CAL", PreTreatedData->GetEDetectorNumber(i), PreTreatedData->GetEChannelNumber(i));
+	      family = "SiRes/CAL/ENERGY";
+	      GetHisto(family,name) -> Fill(PreTreatedData->GetEEnergy(i));
+
+	      name   = Form("SiRes_%d_E_CAL", PreTreatedData->GetEDetectorNumber(i));
+	      family = "SiRes/CAL/ENERGY";
+	      GetHisto(family,name) -> Fill(PreTreatedData->GetEChannelNumber(i),PreTreatedData->GetEEnergy(i));
+
+	   }
+// SiRes_E_RAW
+	for (unsigned int i = 0; i < PreTreatedData->GetEEnergyBackMult(); i++) {
+	   name = Form("SiRes_%d_EBack_CAL",PreTreatedData->GetEEnergyBackDetectorNumber(i));
+	   family = "SiRes/CAL/ENERGY";
+	      GetHisto(family,name) -> Fill(PreTreatedData->GetEEnergyBack(i));
+	   }
+
+	for (unsigned int i = 0; i < PreTreatedData->GetTimeMult(); i++) {
+	   name = Form("SiRes_%d_T_CAL",PreTreatedData->GetTDetectorNumber(i));
+	   family = "SiRes/CAL/TIME";
+	      GetHisto(family,name) -> Fill(PreTreatedData->GetTTime(i));
+	   }
+	
+	for (unsigned int i = 0; i < PreTreatedData->GetEnergyMult(); i++) {
+	      name   = Form("SiRes_%d_E_CAL_MULT", PreTreatedData->GetEDetectorNumber(i));
+	      family = "SiRes/CAL/MULT";
+	      GetHisto(family,name) -> Fill(PreTreatedData->GetEnergyMult());
+
+	   }   // E_CAL
+
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiResSpectra::FillPhysicsSpectra(TSiResPhysics* Physics)
+{
+   string name;
+   string family = "SiRes/PHY";
+	
+	for (unsigned int i = 0; i < Physics->x.size(); i++) {
+	   name = Form("SiRes_%d_XY",Physics->DetectorNumber[i]);
+	      GetHisto(family,name) -> Fill(Physics->x[i],Physics->y[i]);
+	   }
+
+	for (unsigned int i = 0; i < Physics->EnergyBack.size(); i++) {
+	   name = Form("SiRes_%d_EBack_TOF",Physics->DetectorNumber[i]);
+	      GetHisto(family,name) -> Fill(Physics->EnergyBack[i],Physics->Time[i]);
+	   }
+	
+
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* TSiResSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
+  // create histo
+  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
+
+  vector<string> index ;
+  index.push_back(family);
+  index.push_back(name);
+
+  // fill map
+  fMapHisto[index]=hist;
+
+  return hist;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* TSiResSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
+  // create histo
+  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
+
+  vector<string> index ;
+  index.push_back(family);
+  index.push_back(name);
+
+  // fill map
+  fMapHisto[index]=hist;
+
+  return hist;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+TH1* TSiResSpectra::GetHisto(string& family, string& name){
+  vector<string> index;
+  index.push_back(family);
+  index.push_back(name);
+  TH1* histo ; 
+  
+  try{
+    histo = fMapHisto.at(index); 
+  }
+
+  catch(const std::out_of_range& oor){
+  cout << "ERROR : the folowing Histo has been requested by TSiResSpectra and does not exist: family:" << family << " name: "  << name << endl ;
+  exit(1);
+  }
+
+  return histo;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+void TSiResSpectra::WriteHisto(string filename)
+{
+   TFile *f = NULL; 
+
+   if (filename != "VOID") {
+      f = new TFile(filename.c_str(), "RECREATE");
+   }
+
+   map< vector<string>, TH1* >::iterator it;
+   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
+      it->second->Write();
+   }
+
+   if (filename != "VOID") {
+      f->Close();
+      delete f;
+   }
+}
+
+
+
+///////////////////////////////////////////////////////////////////////////////
+void TSiResSpectra::CheckSpectra()
+{
+   map< vector<string>, TH1* >::iterator it;
+   Color_t ok_color      = kTeal+9;
+   Color_t warning_color = kOrange+8;  warning_color *= 1;
+   Color_t bad_color     = kRed;       bad_color     *= 1;
+
+   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it)
+   {
+      it->second->SetLineColor(ok_color);
+      it->second->SetFillStyle(1001);
+      it->second->SetFillColor(ok_color);
+   }
+}
diff --git a/NPLib/SiRes/TSiResSpectra.h b/NPLib/SiRes/TSiResSpectra.h
new file mode 100644
index 0000000000000000000000000000000000000000..270d3038a080c404a1fa73fa140470be1dc50072
--- /dev/null
+++ b/NPLib/SiRes/TSiResSpectra.h
@@ -0,0 +1,82 @@
+#ifndef TSIRES_H
+#define TSIRES_H
+/*****************************************************************************
+ * Copyright (C) 2009-2013    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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : dec 2013                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds all the online spectra needed for SiRes              *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *    + first version (not complete yet)                                     *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ STL headers
+#include <map>
+
+// ROOT headers
+#include "TObject.h"
+#include <TH1.h>
+#include <TH2.h>
+
+// NPLib headers
+#include "TSiResData.h"
+#include "TSiResPhysics.h"
+using namespace std;
+
+// ForwardDeclaration
+class TSiResPhysics;
+
+class TSiResSpectra {
+  public:
+    // constructor and destructor
+    TSiResSpectra();
+    TSiResSpectra(unsigned int NumberOfTelescope);
+    ~TSiResSpectra();
+
+  private:
+    // Instantiate and register histo to maps
+    TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
+    TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
+                                                 Int_t nbinsy, Double_t ylow, Double_t yup, string family);
+
+    // Initialization methods
+    void InitRawSpectra();
+    void InitPreTreatedSpectra();
+    void InitPhysicsSpectra();
+
+  public:
+    // Filling methods
+    void FillRawSpectra(TSiResData*);
+    void FillPreTreatedSpectra(TSiResData*);
+    void FillPhysicsSpectra(TSiResPhysics*);
+    // Check the Spectra
+    void CheckSpectra();
+
+  public:
+    // get map histo which will be used for GSpectra in GUser
+    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
+    TH1* GetHisto(string& family,string& name);    
+    void WriteHisto(string filename="VOID");      
+
+  private: // Information on CHARISSA
+    unsigned int fNumberDetector;
+
+  private:
+    // map holding histo pointers and their family names
+    map< vector<string>, TH1* > fMapHisto;
+};
+
+#endif
diff --git a/NPLib/Tiara/TTiaraBarrelData.h b/NPLib/Tiara/TTiaraBarrelData.h
index f2e5e0b1bfe353d184dc34634bcf5da9716deaed..3b4f0663152f1cd27463fd34f298588c8c566a96 100644
--- a/NPLib/Tiara/TTiaraBarrelData.h
+++ b/NPLib/Tiara/TTiaraBarrelData.h
@@ -101,7 +101,7 @@ class TTiaraBarrelData : public TNamed {
     }
 
     // T
-    inline unsigned int GetFrontBackTMult(){
+    inline unsigned int GetBackTMult(){
       return fTiaraBarrel_BackT_DetectorNbr.size();
     }
 
diff --git a/NPLib/Tiara/TTiaraBarrelPhysics.cxx b/NPLib/Tiara/TTiaraBarrelPhysics.cxx
index 5a75575f09ccfdebd33601cb2adb26fa28c2a453..ab0b8125c956f2f66b27711a3744a48d01363625 100644
--- a/NPLib/Tiara/TTiaraBarrelPhysics.cxx
+++ b/NPLib/Tiara/TTiaraBarrelPhysics.cxx
@@ -19,7 +19,7 @@
  *                                                                           *
  *****************************************************************************/
 #include "TTiaraBarrelPhysics.h"
-
+using namespace TiaraBarrel_LOCAL;
 //   STL
 #include <sstream>
 #include <iostream>
@@ -50,13 +50,14 @@ ClassImp(TTiaraBarrelPhysics)
     m_PreTreatedData    = new TTiaraBarrelData ;
     m_EventPhysics      = this ;
     m_NumberOfDetector  = 0 ;
-
+    
     m_Take_E_Strip= true;
     m_Take_T_Back=true;
-    m_Strip_E_Threshold=0.4 ;
-    m_Back_E_Threshold =0;
-    m_OuterStrip_E_RAW_Threshold =0;
+    m_Strip_E_Threshold = 0.40 ;
+    m_Back_E_Threshold = 0.40 ;
+    m_Maximum_FrontBack_Difference = 0.4;
     m_OuterBack_E_Threshold =0;
+    m_Spectra = NULL ;
   }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -68,84 +69,80 @@ void TTiaraBarrelPhysics::BuildSimplePhysicalEvent(){
 void TTiaraBarrelPhysics::BuildPhysicalEvent(){
   PreTreat();
 
-
-
-}
-
-///////////////////////////////////////////////////////////////////////////
-void TTiaraBarrelPhysics::PreTreat(){
-  ClearPreTreatedData();
-  // Gain Calibration
-  // The cal function first call the MatchStick one
-  unsigned int sizeU = m_EventData-> GetFrontUpstreamEMult();
-  unsigned int sizeD = m_EventData-> GetFrontDownstreamEMult();
-
+  unsigned int sizeU = m_PreTreatedData->GetFrontUpstreamEMult();
+  unsigned int sizeD = m_PreTreatedData->GetFrontDownstreamEMult();
+  unsigned int sizeB = m_PreTreatedData->GetBackEMult(); 
+ for(unsigned int k = 0 ; k < sizeB ; k++){
   for(unsigned int i = 0 ; i < sizeU ; i++){  
-    double EU = Cal_Strip_Upstream_E(i) ;
-    m_PreTreatedData->SetFrontUpstreamE(m_EventData-> GetFrontUpstreamEDetectorNbr(i),
-                                       m_EventData-> GetFrontUpstreamEStripNbr(i),
-                                       EU);
-
+    if(m_PreTreatedData->GetFrontUpstreamEDetectorNbr(i) == m_PreTreatedData->GetBackEDetectorNbr(k))
     for(unsigned int j = 0 ; j < sizeD ; j++){  
-        double ED = Cal_Strip_Downstream_E(j) ;
-        m_PreTreatedData->SetFrontDownstreamE(m_EventData-> GetFrontDownstreamEDetectorNbr(i),
-                                           m_EventData-> GetFrontDownstreamEStripNbr(i),
-                                           ED);
-      if(EU>0 && ED>0 && EU+ED > m_Strip_E_Threshold){
-        if( m_EventData->GetFrontUpstreamEDetectorNbr(i) 
-        == m_EventData->GetFrontDownstreamEDetectorNbr(j)
-        && m_EventData->GetFrontUpstreamEStripNbr(i) 
-        == m_EventData->GetFrontDownstreamEStripNbr(j)){
+        // same detector, same strip
+        if( m_PreTreatedData->GetFrontUpstreamEDetectorNbr(i) 
+            == m_PreTreatedData->GetFrontDownstreamEDetectorNbr(j)
+            && m_PreTreatedData->GetFrontUpstreamEStripNbr(i) 
+            == m_PreTreatedData->GetFrontDownstreamEStripNbr(j)){
             
-       
-        double POS =
-              CalibrationManager::getInstance()->ApplyResistivePositionCalibration("TIARABARREL/B"+itoa(m_EventData->GetFrontUpstreamEDetectorNbr(i))+"_STRIP"+itoa(m_EventData->GetFrontUpstreamEStripNbr(i))+"_POS",(ED-EU)/(EU+ED));
-            Strip_Pos.push_back(POS); 
-            Strip_N.push_back(m_EventData->GetFrontUpstreamEStripNbr(i));
-            DetectorNumber.push_back(m_EventData->GetFrontUpstreamEDetectorNbr(i));
-        double E =(EU+ED) / CalibrationManager::getInstance()
-        ->ApplyCalibration("TIARABARREL/BALLISTIC_B" 
-        + itoa(m_EventData->GetFrontDownstreamEDetectorNbr(i)) 
-        + "_STRIP" 
-        + itoa(m_EventData->GetFrontDownstreamEStripNbr(i)),
-        POS);
-
-
-        DetectorNumber.push_back(m_EventData->GetFrontDownstreamEDetectorNbr(i));
-        Strip_N.push_back(m_EventData->GetFrontDownstreamEStripNbr(i)); 
-        Strip_Pos.push_back(POS);
-        Strip_E.push_back(E);
+            double EU = m_PreTreatedData->GetFrontUpstreamEEnergy(i) ;
+            double ED = m_PreTreatedData->GetFrontDownstreamEEnergy(j); 
+      
+            // Front back Energy match
+   //         if(abs(m_PreTreatedData->GetBackEEnergy(k)-(EU+ED)) < m_Maximum_FrontBack_Difference){
+            // I have no calibration of the back so replace by nothing ;)
+            if(true){ 
+             double POS =
+                CalibrationManager::getInstance()
+                  ->ApplyResistivePositionCalibration("TIARABARREL/B"
+                    +itoa(m_PreTreatedData->GetFrontUpstreamEDetectorNbr(i))
+                    +"_STRIP"+itoa(m_PreTreatedData->GetFrontUpstreamEStripNbr(i))
+                    +"_POS",(ED-EU)/(EU+ED));
+                
+                Strip_Pos.push_back(POS); 
+                Strip_N.push_back(m_PreTreatedData->GetFrontUpstreamEStripNbr(i));
+                DetectorNumber.push_back(m_PreTreatedData->GetFrontUpstreamEDetectorNbr(i));
+                double E = (EU+ED) / CalibrationManager::getInstance()
+                  ->ApplyCalibration("TIARABARREL/BALLISTIC_B" 
+                  + itoa(m_PreTreatedData->GetFrontDownstreamEDetectorNbr(i)) 
+                  + "_STRIP" 
+                  + itoa(m_PreTreatedData->GetFrontDownstreamEStripNbr(i)),
+                  POS);
+                  Strip_E.push_back(E);
+          }
         }
       }
     }
   }
-  
-  // Ballistic Deficit correction
 }
 
 ///////////////////////////////////////////////////////////////////////////
-vector < TVector2 > TTiaraBarrelPhysics :: Match_Upstream_Downstream(){
-  vector < TVector2 > ArrayOfGoodCouple ;
-  /*
-  // Prevent code from treating very high multiplicity Event
-  // Those event are not physical anyway and that improve speed.
-  if( m_PreTreatedData->GetRingEMult() > m_MaximumStripMultiplicityAllowed || m_PreTreatedData->GetSectorEMult() > m_MaximumStripMultiplicityAllowed )
-  return ArrayOfGoodCouple;
-
-  for(unsigned int i = 0 ; i < m_PreTreatedData->GetRingEMult(); i++) {
-  for(unsigned int j = 0 ; j < m_PreTreatedData->GetSectorEMult(); j++){
-  //   if same detector check energy
-  if ( m_PreTreatedData->GetRingEDetectorNbr(i) == m_PreTreatedData->GetSectorEDetectorNbr(j) ){
-  //   Look if energy match
-  if( abs( (m_PreTreatedData->GetRingEEnergy(i)-m_PreTreatedData->GetSectorEEnergy(j))/2. ) < m_StripEnergyMatchingNumberOfSigma*m_StripEnergyMatchingSigma )
-  ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;
-  }
+void TTiaraBarrelPhysics::PreTreat(){
+  ClearPreTreatedData();
+  // Gain Calibration
+  // The cal function first call the MatchStick one
+  unsigned int sizeU = m_EventData->GetFrontUpstreamEMult();
+  unsigned int sizeD = m_EventData->GetFrontDownstreamEMult();
+  unsigned int sizeB = m_EventData->GetBackEMult();
+  
+  for(unsigned int i = 0 ; i < sizeU ; i++){  
+    double EU = Cal_Strip_Upstream_E(i) ;
+    if(EU > m_Strip_E_Threshold)
+      m_PreTreatedData->SetFrontUpstreamE(m_EventData->GetFrontUpstreamEDetectorNbr(i),
+          m_EventData->GetFrontUpstreamEStripNbr(i),
+          EU);
   }
+
+  for(unsigned int j = 0 ; j < sizeD ; j++){  
+    double ED = Cal_Strip_Downstream_E(j) ;
+    if(ED>m_Strip_E_Threshold)
+      m_PreTreatedData->SetFrontDownstreamE(m_EventData->GetFrontDownstreamEDetectorNbr(j),
+          m_EventData->GetFrontDownstreamEStripNbr(j),
+          ED);
   }
-  */
-  //   Prevent to treat event with ambiguous matchin beetween X and Y
-  // if( ArrayOfGoodCouple.size() > m_PreTreatedData->GetRingEMult() ) ArrayOfGoodCouple.clear() ;
-  return ArrayOfGoodCouple;
+
+  for(unsigned int k = 0 ; k < sizeB ; k++){
+    double EB = Cal_Back_E(k) ;
+     if(EB > m_Back_E_Threshold)
+      m_PreTreatedData->SetBackE(m_EventData->GetBackEDetectorNbr(k),EB);
+  }    
 }
 
 ////////////////////////////////////////////////////////////////////////////
@@ -438,8 +435,14 @@ void TTiaraBarrelPhysics::ClearSpectra(){
   // To be done
 }
 ///////////////////////////////////////////////////////////////////////////
-map< vector<TString>,TH1* > TTiaraBarrelPhysics::GetSpectra() {
-  return m_Spectra->GetMapHisto();
+map< vector<string>,TH1* > TTiaraBarrelPhysics::GetSpectra() {
+  if(m_Spectra)
+    return m_Spectra->GetMapHisto();
+  else{
+     map< vector<string>,TH1* > empty;
+     return empty;
+  }
+
 } 
 ///////////////////////////////////////////////////////////////////////////
 void TTiaraBarrelPhysics::AddParameterToCalibrationManager(){
@@ -455,7 +458,11 @@ void TTiaraBarrelPhysics::AddParameterToCalibrationManager(){
 
       Cal->AddParameter("TIARABARREL","BALLISTIC_B"+itoa(i+1)+"_STRIP"+itoa(j+1),"TIARABARREL_BALLISTIC_B"+itoa(i+1)+"_STRIP"+itoa(j+1))   ;
       Cal->AddParameter("TIARABARREL","B"+itoa(i+1)+"_STRIP"+itoa(j+1)+"_POS","TIARABARREL_B"+itoa(i+1)+"_STRIP"+itoa(j+1)+"_POS")   ;
+    
     }
+  
+  Cal->AddParameter("TIARABARREL","TIARABARREL/B" + itoa( i+1 ) + "_BACK_E","TIARABARREL_B" + itoa( i+1 ) + "_BACK_E");
+
   }
   return;
 
@@ -472,8 +479,9 @@ void TTiaraBarrelPhysics::InitializeRootInputRaw(){
 ///////////////////////////////////////////////////////////////////////////////
 void TTiaraBarrelPhysics::InitializeRootInputPhysics(){
   TChain* inputChain = RootInput::getInstance()->GetChain();
+  inputChain->SetBranchStatus("TiaraBarrel" , true );
   inputChain->SetBranchStatus("EventMultiplicity",true);
-  inputChain->SetBranchStatus("DetectorNumber ",true);
+  inputChain->SetBranchStatus("DetectorNumber",true);
   inputChain->SetBranchStatus("Strip_E",true);
   inputChain->SetBranchStatus("Strip_T",true);
   inputChain->SetBranchStatus("Strip_N",true);
@@ -489,6 +497,8 @@ void TTiaraBarrelPhysics::InitializeRootInputPhysics(){
   inputChain->SetBranchStatus("Outer_Strip_N",true);
   inputChain->SetBranchStatus("Outer_Back_E",true);
   inputChain->SetBranchStatus("Outer_Back_T",true);
+  inputChain->SetBranchAddress("TiaraBarrel" , &m_EventPhysics );
+
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -552,17 +562,16 @@ TVector3 TTiaraBarrelPhysics::GetDetectorNormal( const int i) const{
 }
 ///////////////////////////////////////////////////////////////////////////////
 TVector3 TTiaraBarrelPhysics::GetPositionOfInteraction(const int i) const{
- // All in mm 
+  // All in mm 
   double INNERBARREL_PCB_Width  = 27.76;
   double INNERBARREL_ActiveWafer_Length = 94.80; 
   double INNERBARREL_ActiveWafer_Width = 24.0;
 
   double StripPitch = INNERBARREL_ActiveWafer_Width/4. ;
-
   double X = Strip_N[i]*StripPitch-0.5*INNERBARREL_ActiveWafer_Width;
   double Y = INNERBARREL_PCB_Width*(0.5+sin(45*deg))  ; 
   double Z = (Strip_Pos[i]-0.5)*INNERBARREL_ActiveWafer_Length ;
-  TVector3 POS(X,Y,Z);
+  TVector3 POS(X,Y,-Z);
   POS.RotateZ((DetectorNumber[i]-1)*45*deg);
   return( POS ) ;
 
@@ -591,10 +600,12 @@ void TTiaraBarrelPhysics::InitializeStandardParameter(){
 
 ///////////////////////////////////////////////////////////////////////////////
 //   transform an integer to a string
-string TTiaraBarrelPhysics::itoa(unsigned int value){
-  char buffer [33];
-  sprintf(buffer,"%d",value);
-  return buffer;
+namespace TiaraBarrel_LOCAL{
+  string itoa(unsigned int value){
+    char buffer [33];
+    sprintf(buffer,"%d",value);
+    return buffer;
+  }
 }
 ///////////////////////////////////////////////////////////////////////////////
 double TTiaraBarrelPhysics::Cal_Strip_Upstream_E(const int i){
@@ -616,3 +627,8 @@ double TTiaraBarrelPhysics::Match_Strip_Downstream_E(const int i){
   return CalibrationManager::getInstance()->ApplyCalibration("TIARABARREL/MATCHSTICK_B" + itoa( m_EventData->GetFrontDownstreamEDetectorNbr(i) ) + "_DOWNSTREAM" + itoa( m_EventData->GetFrontDownstreamEStripNbr(i) ) + "_E",
       m_EventData->GetFrontDownstreamEEnergy(i) );
 }
+///////////////////////////////////////////////////////////////////////////////
+double TTiaraBarrelPhysics::Cal_Back_E(const int i){
+  return CalibrationManager::getInstance()->ApplyCalibration("TIARABARREL/B" + itoa( m_EventData->GetBackEDetectorNbr(i) ) + "_BACK_E", m_EventData->GetBackEEnergy(i));
+}
+
diff --git a/NPLib/Tiara/TTiaraBarrelPhysics.h b/NPLib/Tiara/TTiaraBarrelPhysics.h
index c5ea79d6c61984f39129b35ec57c68bdde8f2b3a..1928903203d889f3507af97c0549c3d2753c24f7 100644
--- a/NPLib/Tiara/TTiaraBarrelPhysics.h
+++ b/NPLib/Tiara/TTiaraBarrelPhysics.h
@@ -50,9 +50,6 @@ class TTiaraBarrelPhysics : public TObject, public NPA::VDetector{
     void Clear();   
     void Clear(const Option_t*) {};
 
-  public: 
-    vector < TVector2 > Match_Upstream_Downstream() ;
-
   public:
     //   Provide Physical Multiplicity
     Int_t EventMultiplicity;
@@ -167,12 +164,10 @@ class TTiaraBarrelPhysics : public TObject, public NPA::VDetector{
     bool m_Take_T_Back;//!
 
     //  Threshold
-    double m_Strip_E_RAW_Threshold ;//!
     double m_Strip_E_Threshold ;//!
     double m_Back_E_Threshold ;//!
-    double m_OuterStrip_E_RAW_Threshold ;//!
     double m_OuterBack_E_Threshold ;//!
-
+    double m_Maximum_FrontBack_Difference ;//!
   private:   //   Root Input and Output tree classes
     TTiaraBarrelData*         m_EventData;//!
     TTiaraBarrelData*         m_PreTreatedData;//!
@@ -195,19 +190,20 @@ class TTiaraBarrelPhysics : public TObject, public NPA::VDetector{
     TTiaraBarrelSpectra*      m_Spectra;//!
 
   public:
-    map< vector<TString>,TH1* > GetSpectra(); 
+    map< vector<string>,TH1* > GetSpectra(); 
 
   private: // Usefull method
-  //   tranform an integer to a string
-  string itoa(unsigned int value);
-  // Calibrate data
+   // Calibrate data
   double Cal_Strip_Upstream_E(const int i);
   double Cal_Strip_Downstream_E(const int i);
+  double Cal_Back_E(const int i);
   double Match_Strip_Upstream_E(const int i);
   double Match_Strip_Downstream_E(const int i);
 
   ClassDef(TTiaraBarrelPhysics,1)  // SharcPhysics structure
 
 };
-
+namespace TiaraBarrel_LOCAL{
+ string itoa(unsigned int value);
+}
 #endif
diff --git a/NPLib/Tiara/TTiaraBarrelSpectra.cxx b/NPLib/Tiara/TTiaraBarrelSpectra.cxx
index 11ad691e0ddb2a33fdd308487ae1ec6e33b91fcd..330857283914835fdf156ac18fd39988645c751e 100644
--- a/NPLib/Tiara/TTiaraBarrelSpectra.cxx
+++ b/NPLib/Tiara/TTiaraBarrelSpectra.cxx
@@ -21,6 +21,11 @@
  *                                                                           *
  *****************************************************************************/
 
+// STL
+#include <iostream>
+#include <cstdlib>
+#include <stdexcept>
+
 // NPL
 #include "TTiaraBarrelSpectra.h"
 #include "NPOptionManager.h"
@@ -32,7 +37,7 @@ using namespace NPUNITS;
 
 
 // ROOT
-#include "TString.h"
+#include "string.h"
 #include "TDirectory.h"
 #include "TFile.h"
 
@@ -67,8 +72,8 @@ TTiaraBarrelSpectra::~TTiaraBarrelSpectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraBarrelSpectra::InitRawSpectra(){
-  TString name;
-  TString BaseFamily = "TIARA/BARREL/RAW/";
+  string name;
+  string BaseFamily = "TIARA/BARREL/RAW/";
 
   //// HIT ////
   // Inner Barrel
@@ -108,23 +113,25 @@ void TTiaraBarrelSpectra::InitRawSpectra(){
   // Inner Barrel
   for(unsigned int i  = 0 ; i < fNumberOfDetector ; i++){
     for(unsigned int j = 0 ; j < fInnerBarrelStrip;j++){
-      name = Form("IB%d_VS%d_RAW",i+1,j+1);
-      AddHisto2D(name, name,1024,0,16384,1024,0,16384,BaseFamily+"VS");
+      name = "IB"+TiaraBarrel_LOCAL::itoa(i+1)+"_VS"+TiaraBarrel_LOCAL::itoa(j+1)+"_RAW";
+      AddHisto2D(name, name,1024,0,0,1024,0,0,BaseFamily+"VS");
     }
   }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraBarrelSpectra::InitPreTreatedSpectra(){
-  TString BaseFamily = "TIARA/BARREL/CAL/";
-  TString name ;
+  string BaseFamily = "TIARA/BARREL/CAL/";
+  string name ;
   //// VS ////
   // Inner Barrel
   for(unsigned int i  = 0 ; i < fNumberOfDetector ; i++){
     for(unsigned int j = 0 ; j < fInnerBarrelStrip;j++){
-      name = Form("IB%d_VS%d_CAL",i+1,j+1);
-      AddHisto2D(name,name,2048,-1,30,2048,-1,30,BaseFamily+"VS");
+      name = "IB"+TiaraBarrel_LOCAL::itoa(i+1)+"_VS"+TiaraBarrel_LOCAL::itoa(j+1)+"_CAL";
+      AddHisto2D(name,name,2048,0,0,2048,0,0,BaseFamily+"VS");
     }
+    name = "IB"+TiaraBarrel_LOCAL::itoa(i+1)+"_VS_BACK_CAL"; 
+    AddHisto2D(name,name,2048,0,0,2048,0,0,BaseFamily+"VS");
   }
 }
 
@@ -136,7 +143,7 @@ string name ;
   // Inner Barrel
   for(unsigned int i  = 0 ; i < fNumberOfDetector ; i++){
     for(unsigned int j = 0 ; j < fInnerBarrelStrip;j++){
-      name = Form("IB%d_EPOS%d_CAL",i+1,j+1);
+      name = "IB"+TiaraBarrel_LOCAL::itoa(i+1)+"_EPOS"+TiaraBarrel_LOCAL::itoa(j+1)+"_CAL";
       AddHisto2D(name, name,1000,-0.5,1.5,1000,0,30,BaseFamily);
     }
   }
@@ -144,7 +151,7 @@ string name ;
   // Inner Barrel
   for(unsigned int i  = 0 ; i < fNumberOfDetector ; i++){
     for(unsigned int j = 0 ; j < fInnerBarrelStrip;j++){
-      name = Form("IB%d_ETHETA%d_CAL",i+1,j+1);
+      name = "IB"+TiaraBarrel_LOCAL::itoa(i+1)+"_ETHETA"+TiaraBarrel_LOCAL::itoa(j+1)+"_CAL";
       AddHisto2D(name, name,360,0,180,1000,0,30,BaseFamily);
     }
   }
@@ -157,9 +164,9 @@ string name ;
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraBarrelSpectra::FillRawSpectra(TTiaraBarrelData* RawData){
-  TString name;
-  TString family;
-  TString BaseFamily = "TIARA/BARREL/RAW/";
+  string name;
+  string family;
+  string BaseFamily = "TIARA/BARREL/RAW/";
 
   // INNER_BARREL_US_HIT_RAW
   for (unsigned int i = 0; i < RawData->GetFrontUpstreamEMult(); i++) {
@@ -232,7 +239,7 @@ void TTiaraBarrelSpectra::FillRawSpectra(TTiaraBarrelData* RawData){
       int DoStreamDetNbr = RawData->GetFrontDownstreamEDetectorNbr(j);
       int DoStreamStrNbr = RawData->GetFrontDownstreamEStripNbr(j);
      if(UpStreamDetNbr==DoStreamDetNbr && UpStreamStrNbr==DoStreamStrNbr){
-       name = Form("IB%d_VS%d_RAW",UpStreamDetNbr,UpStreamStrNbr); 
+       name = "IB"+TiaraBarrel_LOCAL::itoa(UpStreamDetNbr)+"_VS"+TiaraBarrel_LOCAL::itoa(UpStreamStrNbr)+"_RAW"; 
        GetHisto(family,name)
         ->Fill(RawData->GetFrontUpstreamEEnergy(i),RawData->GetFrontDownstreamEEnergy(j));
       } 
@@ -242,21 +249,36 @@ void TTiaraBarrelSpectra::FillRawSpectra(TTiaraBarrelData* RawData){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraBarrelSpectra::FillPreTreatedSpectra(TTiaraBarrelData* PreTreatedData){
-TString BaseFamily = "TIARA/BARREL/CAL/";
+string BaseFamily = "TIARA/BARREL/CAL/";
 // INNER_BARREL_VS_CAL                 
-  TString family = BaseFamily+"VS";
-  TString name ;
-  for (unsigned int i = 0; i < PreTreatedData->GetFrontUpstreamEMult(); i++) {
+  string family = BaseFamily+"VS";
+  string name ;
+
+  unsigned int sizeU = PreTreatedData->GetFrontUpstreamEMult();
+  unsigned int sizeD = PreTreatedData->GetFrontDownstreamEMult();
+  unsigned int sizeB = PreTreatedData->GetBackEMult(); 
+  
+  for (unsigned int i = 0; i < sizeU ; i++) {
     int UpStreamDetNbr = PreTreatedData->GetFrontUpstreamEDetectorNbr(i);
     int UpStreamStrNbr = PreTreatedData->GetFrontUpstreamEStripNbr(i);
     
-    for (unsigned int j = 0; j < PreTreatedData->GetFrontDownstreamEMult(); j++) {
+    for (unsigned int j = 0; j < sizeD ; j++) {
       int DoStreamDetNbr = PreTreatedData->GetFrontDownstreamEDetectorNbr(j);
       int DoStreamStrNbr = PreTreatedData->GetFrontDownstreamEStripNbr(j);
      if(UpStreamDetNbr==DoStreamDetNbr && UpStreamStrNbr==DoStreamStrNbr){
-       name = Form("IB%d_VS%d_CAL",UpStreamDetNbr,UpStreamStrNbr); 
+      name = "IB"+TiaraBarrel_LOCAL::itoa(UpStreamDetNbr)+"_VS"+TiaraBarrel_LOCAL::itoa(UpStreamStrNbr)+"_CAL"; 
        GetHisto(family,name)
-        ->Fill(PreTreatedData->GetFrontUpstreamEEnergy(i),PreTreatedData->GetFrontDownstreamEEnergy(j));
+         ->Fill(PreTreatedData->GetFrontUpstreamEEnergy(i),PreTreatedData->GetFrontDownstreamEEnergy(j));
+     
+        for (unsigned int k = 0; k < sizeB; k++) {
+          if(UpStreamDetNbr == PreTreatedData->GetBackEDetectorNbr(k)){     
+            name = "IB"+TiaraBarrel_LOCAL::itoa(UpStreamDetNbr)+"_VS_BACK_CAL"; 
+            GetHisto(family,name)
+              ->Fill(PreTreatedData->GetFrontUpstreamEEnergy(i)
+                      +PreTreatedData->GetFrontDownstreamEEnergy(j),
+                      PreTreatedData->GetBackEEnergy(k));
+          }
+        }
       } 
     }
   }
@@ -264,34 +286,34 @@ TString BaseFamily = "TIARA/BARREL/CAL/";
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraBarrelSpectra::FillPhysicsSpectra(TTiaraBarrelPhysics* Physics){
-string family = "TIARA/BARREL/PHY";
-string name ;
+  string family = "TIARA/BARREL/PHY";
+  string name ;
   //// E POS ////
   // Inner Barrel
-  unsigned int size = Physics->Strip_E.size();
+  //unsigned int size = Physics->Strip_E.size();
   for(unsigned int i  = 0 ; i < Physics->Strip_E.size() ; i++){
-      name = Form("IB%d_EPOS%d_CAL",Physics->DetectorNumber[i],Physics->Strip_N[i]);
-      GetHisto(family,name)
-        ->Fill(Physics->Strip_Pos[i],Physics->Strip_E[i]);
-    
-       name = Form("IB%d_ETHETA%d_CAL",Physics->DetectorNumber[i],Physics->Strip_N[i]);
-       double Theta = Physics->GetPositionOfInteraction(i).Angle(TVector3(0,0,1));
+    name ="IB"+TiaraBarrel_LOCAL::itoa(Physics->DetectorNumber[i])+"_EPOS"+TiaraBarrel_LOCAL::itoa(Physics->Strip_N[i])+"_CAL";
+    GetHisto(family,name)
+      ->Fill(Physics->Strip_Pos[i],Physics->Strip_E[i]);
 
-       GetHisto(family,name)
-        ->Fill(Theta*rad/deg,Physics->Strip_E[i]);
-    
-      name = "IB_ETHETA_CAL";
-      GetHisto(family,name)
-        ->Fill(Theta*rad/deg,Physics->Strip_E[i]);
-    }
+    name = "IB"+TiaraBarrel_LOCAL::itoa(Physics->DetectorNumber[i])+"_ETHETA"+TiaraBarrel_LOCAL::itoa(Physics->Strip_N[i])+"_CAL";
+    double Theta = Physics->GetPositionOfInteraction(i).Angle(TVector3(0,0,1));
+
+    GetHisto(family,name)
+      ->Fill(Theta*rad/deg,Physics->Strip_E[i]);
+
+    name = "IB_ETHETA_CAL";
+    GetHisto(family,name)
+      ->Fill(Theta*rad/deg,Physics->Strip_E[i]);
+  }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraBarrelSpectra::AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family){
+TH1* TTiaraBarrelSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
   // create histo
-  TH1 *hist = new TH1D(name, title, nbinsx, xlow, xup);
+  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
 
-  vector<TString> index ;
+  vector<string> index ;
   index.push_back(family);
   index.push_back(name);
 
@@ -302,11 +324,11 @@ TH1* TTiaraBarrelSpectra::AddHisto1D(TString name, TString title, Int_t nbinsx,
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraBarrelSpectra::AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, TString family){
+TH1* TTiaraBarrelSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
   // create histo
-  TH1 *hist = new TH2D(name, title, nbinsx, xlow, xup, nbinsy, ylow, yup);
+  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
 
-  vector<TString> index ;
+  vector<string> index ;
   index.push_back(family);
   index.push_back(name);
 
@@ -317,23 +339,34 @@ TH1* TTiaraBarrelSpectra::AddHisto2D(TString name, TString title, Int_t nbinsx,
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraBarrelSpectra::GetHisto(TString family, TString name){
-  vector<TString> index ;
+TH1* TTiaraBarrelSpectra::GetHisto(string& family, string& name){
+  vector<string> index;
+  index.reserve(2);
   index.push_back(family);
   index.push_back(name);
-  // fill map
-  return fMapHisto.at(index);
+  TH1* histo ; 
+
+  try{
+    histo = fMapHisto.at(index); 
+  }
+
+  catch(const std::out_of_range& oor){
+    cout << "ERROR : the folowing Histo has been requested by TTiaraBarrelSpectra and does not exist: family:" << family << " name: "  << name << endl ;
+    exit(1);
+  }
+
+  return histo;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-void TTiaraBarrelSpectra::WriteHisto(TString filename){
+void TTiaraBarrelSpectra::WriteHisto(string filename){
   TFile* f=NULL; 
 
   if(filename!="VOID"){
-    f = new TFile(filename,"RECREATE");
+    f = new TFile(filename.c_str(),"RECREATE");
   }
 
-  map< vector<TString>, TH1* >::iterator it;
+  map< vector<string>, TH1* >::iterator it;
 
   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it){
     it->second->Write();
@@ -347,7 +380,7 @@ void TTiaraBarrelSpectra::WriteHisto(TString filename){
 }
 ///////////////////////////////////////////////////////////////////////////////
 void TTiaraBarrelSpectra::CheckSpectra(){
-  map< vector<TString>, TH1* >::iterator it;
+  map< vector<string>, TH1* >::iterator it;
   Color_t ok_color = kTeal+9;
   Color_t warning_color = kOrange+8;   warning_color *= 1;
   Color_t bad_color = kRed;            bad_color *= 1;
diff --git a/NPLib/Tiara/TTiaraBarrelSpectra.h b/NPLib/Tiara/TTiaraBarrelSpectra.h
index 8b15478f38f2317f230ded3aa22f0958c71eaa3e..d41fc889e138a19a9d5347aff2c699a33ff85bc8 100644
--- a/NPLib/Tiara/TTiaraBarrelSpectra.h
+++ b/NPLib/Tiara/TTiaraBarrelSpectra.h
@@ -30,7 +30,6 @@
 #include "TObject.h"
 #include <TH1.h>
 #include <TH2.h>
-#include <TString.h>
 
 // NPLib headers
 #include "TTiaraBarrelData.h"
@@ -49,9 +48,9 @@ class TTiaraBarrelSpectra {
 
   private:
     // Instantiate and register histo to maps
-    TH1* AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family);
-    TH1* AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, 
-        Int_t nbinsy, Double_t ylow, Double_t yup,TString family);
+    TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
+    TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
+        Int_t nbinsy, Double_t ylow, Double_t yup,string family);
 
     // Initialization methods
     void InitRawSpectra();
@@ -68,9 +67,9 @@ class TTiaraBarrelSpectra {
 
   public:
     // get map histo which will be used for GSpectra in GUser
-    map< vector<TString>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(TString family,TString name);    
-    void WriteHisto(TString filename="VOID");      
+    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
+    TH1* GetHisto(string& family,string& name);    
+    void WriteHisto(string filename="VOID");      
 
   private: // Information on TIARA/BARREL
     unsigned int fNumberOfDetector;
@@ -79,7 +78,7 @@ class TTiaraBarrelSpectra {
 
   private:
     // map holding histo pointers and their family names
-    map< vector<TString>, TH1* > fMapHisto;
+    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/Tiara/TTiaraHyballPhysics.cxx b/NPLib/Tiara/TTiaraHyballPhysics.cxx
index 51b67a680c43ffe9539a4947728eb9802c0f0337..3faf224b084803b064e59a21c67a97db49fbd986 100644
--- a/NPLib/Tiara/TTiaraHyballPhysics.cxx
+++ b/NPLib/Tiara/TTiaraHyballPhysics.cxx
@@ -52,19 +52,20 @@ ClassImp(TTiaraHyballPhysics)
     m_PreTreatedData    = new TTiaraHyballData ;
     m_EventPhysics      = this ;
     m_NumberOfDetector = 0 ;
-    m_MaximumStripMultiplicityAllowed = 10;
-    m_StripEnergyMatchingSigma = 0.060    ;
-    m_StripEnergyMatchingNumberOfSigma = 3;
+    m_MaximumStripMultiplicityAllowed = 100;
+    m_StripEnergyMatchingSigma = 1.00    ;
+    m_StripEnergyMatchingNumberOfSigma = 30;
 
     // Threshold
     m_StripRing_E_RAW_Threshold = 0 ;
-    m_StripRing_E_Threshold = 0.4 ;
+    m_StripRing_E_Threshold = 0.0 ;
 
     m_StripSector_E_RAW_Threshold = 0 ;
-    m_StripSector_E_Threshold = 0.4 ;
+    m_StripSector_E_Threshold = 0.0 ;
 
     m_Take_E_Ring=false;
     m_Take_T_Sector=true;
+    m_Spectra = NULL;
   }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -80,8 +81,8 @@ void TTiaraHyballPhysics::BuildPhysicalEvent(){
     vector< TVector2 > couple = Match_Ring_Sector() ;
     EventMultiplicity = couple.size();
 
-    unsigned int size = couple.size();
-    for(unsigned int i = 0 ; i < size ; ++i){
+    unsigned int MatchSize = couple.size();
+    for(unsigned int i = 0 ; i < MatchSize ; ++i){
 
       int N = m_PreTreatedData->GetRingEDetectorNbr(couple[i].X()) ;
       int Ring = m_PreTreatedData->GetRingEStripNbr(couple[i].X()) ;
@@ -133,7 +134,6 @@ void TTiaraHyballPhysics::BuildPhysicalEvent(){
 ///////////////////////////////////////////////////////////////////////////
 void TTiaraHyballPhysics::PreTreat(){
   ClearPreTreatedData();
-
   //   Ring E
   unsigned int sizeRingE = m_EventData->GetRingEMult();
   for(unsigned int i = 0 ; i < sizeRingE ; ++i){
@@ -181,6 +181,7 @@ void TTiaraHyballPhysics::PreTreat(){
       m_PreTreatedData->SetSectorTTime( Sector_T );
     }
   }
+
   return;
 }
 
@@ -188,10 +189,10 @@ void TTiaraHyballPhysics::PreTreat(){
 ///////////////////////////////////////////////////////////////////////////
 int TTiaraHyballPhysics :: CheckEvent(){
   // Check the size of the different elements
-  if(m_PreTreatedData->GetSectorEMult() == m_PreTreatedData->GetRingEMult() )
+//  if(m_PreTreatedData->GetSectorEMult() == m_PreTreatedData->GetRingEMult() )
     return 1 ; // Regular Event
 
-  else
+ // else
     return -1 ; // Rejected Event
 
 }
@@ -204,20 +205,25 @@ vector < TVector2 > TTiaraHyballPhysics :: Match_Ring_Sector(){
   // Those event are not physical anyway and that improve speed.
   if( m_PreTreatedData->GetRingEMult() > m_MaximumStripMultiplicityAllowed || m_PreTreatedData->GetSectorEMult() > m_MaximumStripMultiplicityAllowed )
     return ArrayOfGoodCouple;
+ 
+  unsigned int sizeR = m_PreTreatedData->GetRingEMult();
+  unsigned int sizeS = m_PreTreatedData->GetSectorEMult();
 
-  for(unsigned int i = 0 ; i < m_PreTreatedData->GetRingEMult(); i++) {
-    for(unsigned int j = 0 ; j < m_PreTreatedData->GetSectorEMult(); j++){
+  for(unsigned int i = 0 ; i < sizeR ; i++) {
+    for(unsigned int j = 0 ; j < sizeS ; j++){
       //   if same detector check energy
       if ( m_PreTreatedData->GetRingEDetectorNbr(i) == m_PreTreatedData->GetSectorEDetectorNbr(j) ){
-        //   Look if energy match
-        if( abs( (m_PreTreatedData->GetRingEEnergy(i)-m_PreTreatedData->GetSectorEEnergy(j))/2. ) < m_StripEnergyMatchingNumberOfSigma*m_StripEnergyMatchingSigma )
-          ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;
+      //   Look if energy match
+        if( abs( (m_PreTreatedData->GetRingEEnergy(i)-m_PreTreatedData->GetSectorEEnergy(j))/2. ) 
+            < m_StripEnergyMatchingNumberOfSigma*m_StripEnergyMatchingSigma ) {
+                    ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;
+        }
       }
     }
   }
-
   //   Prevent to treat event with ambiguous matchin beetween X and Y
   if( ArrayOfGoodCouple.size() > m_PreTreatedData->GetRingEMult() ) ArrayOfGoodCouple.clear() ;
+
   return ArrayOfGoodCouple;
 }
 
@@ -517,8 +523,14 @@ void TTiaraHyballPhysics::ClearSpectra(){
   // To be done
 }
 ///////////////////////////////////////////////////////////////////////////
-map< vector<TString>,TH1* > TTiaraHyballPhysics::GetSpectra() {
-return m_Spectra->GetMapHisto();
+map< vector<string>,TH1* > TTiaraHyballPhysics::GetSpectra() {
+  if(m_Spectra)
+    return m_Spectra->GetMapHisto();
+  else{
+    map< vector<string>,TH1* > empty;
+    return empty ;
+  }
+    
 } 
 ///////////////////////////////////////////////////////////////////////////
 void TTiaraHyballPhysics::AddParameterToCalibrationManager(){
@@ -676,7 +688,7 @@ namespace TiaraHyball_LOCAL{
   //   Ring
   double fStrip_Ring_E(const TTiaraHyballData* m_EventData , const int i){
     return CalibrationManager::getInstance()->ApplyCalibration(   "TIARAHYBALL/D" + itoa( m_EventData->GetRingEDetectorNbr(i) ) + "_STRIP_RING" + itoa( m_EventData->GetRingEStripNbr(i) ) + "_E",
-        m_EventData->GetRingEEnergy(i) );
+        fStrip_Ring_Matchstick(m_EventData,i) );
   }
   double fStrip_Ring_Matchstick(const TTiaraHyballData* m_EventData , const int i){
     return CalibrationManager::getInstance()->ApplyCalibration(   "TIARAHYBALL/D" + itoa( m_EventData->GetRingEDetectorNbr(i) ) + "_STRIP_RING" + itoa( m_EventData->GetRingEStripNbr(i) ) + "_MATCHSTICK",
@@ -690,12 +702,12 @@ namespace TiaraHyball_LOCAL{
 
   //   Sector
   double fStrip_Sector_E(const TTiaraHyballData* m_EventData , const int i){
-    return CalibrationManager::getInstance()->ApplyCalibration(   "TIARAHYBALL/D" + itoa( m_EventData->GetSectorTDetectorNbr(i) ) + "_STRIP_SECTOR" + itoa( m_EventData->GetSectorTStripNbr(i) ) +"_E",
-        m_EventData->GetSectorEEnergy(i) );
+    return CalibrationManager::getInstance()->ApplyCalibration(   "TIARAHYBALL/D" + itoa( m_EventData->GetSectorEDetectorNbr(i) ) + "_STRIP_SECTOR" + itoa( m_EventData->GetSectorEStripNbr(i) ) +"_E",
+        fStrip_Sector_Matchstick(m_EventData,i) );
   }
 
   double fStrip_Sector_Matchstick(const TTiaraHyballData* m_EventData , const int i){
-    return CalibrationManager::getInstance()->ApplyCalibration(   "TIARAHYBALL/D" + itoa( m_EventData->GetSectorTDetectorNbr(i) ) + "_STRIP_SECTOR" + itoa( m_EventData->GetSectorTStripNbr(i) ) +"_MATCHSTICK",
+    return CalibrationManager::getInstance()->ApplyCalibration(   "TIARAHYBALL/D" + itoa( m_EventData->GetSectorEDetectorNbr(i) ) + "_STRIP_SECTOR" + itoa( m_EventData->GetSectorEStripNbr(i) ) +"_MATCHSTICK",
         m_EventData->GetSectorEEnergy(i) );
   }
 
diff --git a/NPLib/Tiara/TTiaraHyballPhysics.h b/NPLib/Tiara/TTiaraHyballPhysics.h
index 0a6022fb5c5f6105445212f0b54bada56ff813e3..384b53a9529eb09bd3d7893be7960d5119631f6c 100644
--- a/NPLib/Tiara/TTiaraHyballPhysics.h
+++ b/NPLib/Tiara/TTiaraHyballPhysics.h
@@ -175,7 +175,7 @@ class TTiaraHyballPhysics : public TObject, public NPA::VDetector{
     double m_StripRing_E_Threshold ;//!
     double m_StripSector_E_RAW_Threshold ;//!
     double m_StripSector_E_Threshold ;//!
-
+    double m_Maximum_FrontBack_Difference;//!
   private:   //   Root Input and Output tree classes
     TTiaraHyballData*         m_EventData;//!
     TTiaraHyballData*         m_PreTreatedData;//!
@@ -195,7 +195,7 @@ class TTiaraHyballPhysics : public TObject, public NPA::VDetector{
     TTiaraHyballSpectra*      m_Spectra;//!
 
   public:
-    map< vector<TString>,TH1* > GetSpectra(); 
+    map< vector<string>,TH1* > GetSpectra(); 
 
     ClassDef(TTiaraHyballPhysics,1)  // SharcPhysics structure
 };
@@ -211,7 +211,7 @@ namespace TiaraHyball_LOCAL{
 
   //   Sector   
   double fStrip_Sector_E(const TTiaraHyballData* Data, const int i);
-  double fStrip_Sector_MatchStick(const TTiaraHyballData* Data, const int i);
+  double fStrip_Sector_Matchstick(const TTiaraHyballData* Data, const int i);
   double fStrip_Sector_T(const TTiaraHyballData* Data, const int i);
 }
 
diff --git a/NPLib/Tiara/TTiaraHyballSpectra.cxx b/NPLib/Tiara/TTiaraHyballSpectra.cxx
index 69b0c3b0b1420842966d0edefe1c2cfcee6a7bb3..6ec5a7853c59b576da9d37b79b3b2d30ba3cd1a6 100644
--- a/NPLib/Tiara/TTiaraHyballSpectra.cxx
+++ b/NPLib/Tiara/TTiaraHyballSpectra.cxx
@@ -21,6 +21,11 @@
  *                                                                           *
  *****************************************************************************/
 
+// STL
+#include <iostream>
+#include <cstdlib>
+#include <stdexcept>
+
 // NPL
 #include "TTiaraHyballSpectra.h"
 #include "NPOptionManager.h"
@@ -31,7 +36,6 @@ using namespace NPUNITS;
 #endif
 
 // ROOT
-#include "TString.h"
 #include "TDirectory.h"
 #include "TFile.h"
 
@@ -60,7 +64,7 @@ TTiaraHyballSpectra::~TTiaraHyballSpectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraHyballSpectra::InitRawSpectra(){
-  TString name;
+  string name;
 
   // HIT_RING_RAW
   name = "HYB_HIT_RING_RAW";
@@ -81,11 +85,11 @@ void TTiaraHyballSpectra::InitRawSpectra(){
   // MULT
   for (unsigned int i = 0; i < fWedgesNumber; ++i) {   // loop on number of wedges
     // RING_RAW_MULT
-    name = Form("HYB_W%d_RING_E_RAW_MULT", i+1);
+    name = "HYB_W"+TiaraHyball_LOCAL::itoa(i+1)+"_RING_E_RAW_MULT";
     AddHisto1D(name, name, fRingsNumber, 1, fRingsNumber+1, "TIARA/HYBALL/RAW/MULT");
 
     // SECTOR_RAW_MULT
-    name = Form("HYB_W%d_SECT_E_RAW_MULT", i+1);
+    name = "HYB_W"+TiaraHyball_LOCAL::itoa(i+1)+"_SECT_E_RAW_MULT";
     AddHisto1D(name, name, fSectorsNumber, 1, fSectorsNumber+1, "TIARA/HYBALL/RAW/MULT");
   } // end loop on number of wedges
 }
@@ -94,7 +98,7 @@ void TTiaraHyballSpectra::InitRawSpectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraHyballSpectra::InitPreTreatedSpectra(){
-  TString name;
+  string name;
 
   // HIT_RING_CAL
   name = "HYB_HIT_RING_CAL";
@@ -115,11 +119,11 @@ void TTiaraHyballSpectra::InitPreTreatedSpectra(){
   // MULT
   for (unsigned int i = 0; i < fWedgesNumber; ++i) {   // loop on number of wedges
     // RING_CAL_MULT
-    name = Form("HYB_W%d_RING_E_CAL_MULT", i+1);
+    name = "HYB_W"+TiaraHyball_LOCAL::itoa(i+1)+"_RING_E_CAL_MULT";
     AddHisto1D(name, name, fRingsNumber, 1, fRingsNumber+1, "TIARA/HYBALL/CAL/MULT");
 
     // SECTOR_CAL_MULT
-    name = Form("HYB_W%d_SECT_E_CAL_MULT", i+1);
+    name = "HYB_W"+TiaraHyball_LOCAL::itoa(i+1)+"_SECT_E_CAL_MULT";
     AddHisto1D(name, name, fSectorsNumber, 1, fSectorsNumber+1, "TIARA/HYBALL/CAL/MULT");
   } // end loop on number of wedges
 }
@@ -128,7 +132,7 @@ void TTiaraHyballSpectra::InitPreTreatedSpectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraHyballSpectra::InitPhysicsSpectra(){
-  TString name;
+  string name;
   // X-Y Impact Matrix
   name = "HYB_IMPACT_MATRIX";
   AddHisto2D(name, name, 500, -150, 150, 500, -150, 150, "TIARA/HYBALL/PHY");
@@ -146,8 +150,8 @@ void TTiaraHyballSpectra::InitPhysicsSpectra(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraHyballSpectra::FillRawSpectra(TTiaraHyballData* RawData){
-  TString name;
-  TString family;
+  string name;
+  string family;
 
   // HIT_RING_RAW
   family = "TIARA/HYBALL/RAW/HIT";
@@ -179,7 +183,7 @@ void TTiaraHyballSpectra::FillRawSpectra(TTiaraHyballData* RawData){
   for (unsigned int i = 0; i < RawData->GetSectorEMult(); i++) {
     unsigned short channel = (RawData->GetSectorEDetectorNbr(i)-1) * fSectorsNumber + RawData->GetSectorEStripNbr(i);
     GetHisto(family, name) -> Fill(channel, RawData->GetSectorEEnergy(i));
-  }
+}
 
   // RING_RAW_MULT
   int myMULT[fWedgesNumber];
@@ -187,7 +191,7 @@ void TTiaraHyballSpectra::FillRawSpectra(TTiaraHyballData* RawData){
   for (unsigned int i = 0; i < RawData->GetRingEMult(); i++) myMULT[(RawData->GetRingEDetectorNbr(i)-1)] += 1;
 
   for (unsigned int i = 0; i < fWedgesNumber; i++) {
-    name   = Form("HYB_W%d_RING_E_RAW_MULT", i+1);
+    name   = "HYB_W"+TiaraHyball_LOCAL::itoa(i+1)+"_RING_E_RAW_MULT";
     family = "TIARA/HYBALL/RAW/MULT";
     GetHisto(family,name) -> Fill(myMULT[i]);
   }
@@ -197,7 +201,7 @@ void TTiaraHyballSpectra::FillRawSpectra(TTiaraHyballData* RawData){
   for (unsigned int i = 0; i < RawData->GetSectorEMult(); i++) myMULT[(RawData->GetSectorEDetectorNbr(i)-1)] += 1;
 
   for (unsigned int i = 0; i < fWedgesNumber; i++) {
-    name   = Form("HYB_W%d_SECT_E_RAW_MULT", i+1);
+    name   = "HYB_W"+TiaraHyball_LOCAL::itoa(i+1)+"_SECT_E_RAW_MULT";
     family = "TIARA/HYBALL/RAW/MULT";
     GetHisto(family,name) -> Fill(myMULT[i]);
   }
@@ -207,8 +211,8 @@ void TTiaraHyballSpectra::FillRawSpectra(TTiaraHyballData* RawData){
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraHyballSpectra::FillPreTreatedSpectra(TTiaraHyballData* PreTreatedData){
-  TString name;
-  TString family;
+  string name;
+  string family;
 
   // HIT_RING_CAL
   family = "TIARA/HYBALL/CAL/HIT";
@@ -248,7 +252,7 @@ void TTiaraHyballSpectra::FillPreTreatedSpectra(TTiaraHyballData* PreTreatedData
   for (unsigned int i = 0; i < PreTreatedData->GetRingEMult(); i++) myMULT[(PreTreatedData->GetRingEDetectorNbr(i)-1)] += 1;
 
   for (unsigned int i = 0; i < fWedgesNumber; i++) {
-    name   = Form("HYB_W%d_RING_E_CAL_MULT", i+1);
+    name   = "HYB_W"+TiaraHyball_LOCAL::itoa(i+1)+"_RING_E_CAL_MULT";
     family = "TIARA/HYBALL/CAL/MULT";
     GetHisto(family,name) -> Fill(myMULT[i]);
   }
@@ -258,7 +262,7 @@ void TTiaraHyballSpectra::FillPreTreatedSpectra(TTiaraHyballData* PreTreatedData
   for (unsigned int i = 0; i < PreTreatedData->GetSectorEMult(); i++) myMULT[(PreTreatedData->GetSectorEDetectorNbr(i)-1)] += 1;
 
   for (unsigned int i = 0; i < fWedgesNumber; i++) {
-    name   = Form("HYB_W%d_SECT_E_CAL_MULT", i+1);
+    name   = "HYB_W"+TiaraHyball_LOCAL::itoa(i+1)+"_SECT_E_CAL_MULT";
     family = "TIARA/HYBALL/CAL/MULT";
     GetHisto(family,name) -> Fill(myMULT[i]);
   }
@@ -268,35 +272,36 @@ void TTiaraHyballSpectra::FillPreTreatedSpectra(TTiaraHyballData* PreTreatedData
 
 ////////////////////////////////////////////////////////////////////////////////
 void TTiaraHyballSpectra::FillPhysicsSpectra(TTiaraHyballPhysics* Physics){
-  /*   TString name;
-       TString family= "TIARA/HYBALL/PHY";
+  string name;
+  string family= "TIARA/HYBALL/PHY";
   // X-Y Impact Matrix
 
-  for(unsigned int i = 0 ; i < Physics->Si_E.size(); i++){
-  name = "MM_IMPACT_MATRIX";
+  for(unsigned int i = 0 ; i < Physics->Strip_E.size(); i++){
+  name = "HYB_IMPACT_MATRIX";
   double x = Physics->GetPositionOfInteraction(i).x();
   double y = Physics->GetPositionOfInteraction(i).y();
   GetHisto(family,name)-> Fill(x,y);
 
-  name = "MM_THETA_E";
+  name = "HYB_THETA_E";
   double Theta = Physics->GetPositionOfInteraction(i).Angle(TVector3(0,0,1));
   Theta = Theta/deg;
-  GetHisto(family,name)-> Fill(Theta,Physics->Si_E[i]);
+  GetHisto(family,name)-> Fill(Theta,Physics->Strip_E[i]);
 
   // STRX_E_CAL
-  name = Form("MM%d_XY_COR", Physics->TelescopeNumber[i]);
-  GetHisto(family,name)-> Fill(Physics->Si_EX[i],Physics->Si_EY[i]);
-  }*/
+  name = "HYB_XY_COR";
+  GetHisto(family,name)-> Fill(Physics->StripRing_E[i],Physics->StripSector_E[i]);
+  }
+
 }
 
 
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraHyballSpectra::AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family){
+TH1* TTiaraHyballSpectra::AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family){
   // create histo
-  TH1 *hist = new TH1D(name, title, nbinsx, xlow, xup);
+  TH1 *hist = new TH1D(name.c_str(), title.c_str(), nbinsx, xlow, xup);
 
-  vector<TString> index;
+  vector<string> index;
   index.push_back(family);
   index.push_back(name);
 
@@ -309,11 +314,11 @@ TH1* TTiaraHyballSpectra::AddHisto1D(TString name, TString title, Int_t nbinsx,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraHyballSpectra::AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, TString family){
+TH1* TTiaraHyballSpectra::AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, string family){
   // create histo
-  TH1 *hist = new TH2D(name, title, nbinsx, xlow, xup, nbinsy, ylow, yup);
+  TH1 *hist = new TH2D(name.c_str(), title.c_str(), nbinsx, xlow, xup, nbinsy, ylow, yup);
 
-  vector<TString> index;
+  vector<string> index;
   index.push_back(family);
   index.push_back(name);
 
@@ -326,24 +331,33 @@ TH1* TTiaraHyballSpectra::AddHisto2D(TString name, TString title, Int_t nbinsx,
 
 
 ////////////////////////////////////////////////////////////////////////////////
-TH1* TTiaraHyballSpectra::GetHisto(TString family, TString name){
-  vector<TString> index;
+TH1* TTiaraHyballSpectra::GetHisto(string& family, string& name){
+  vector<string> index;
+  index.reserve(2);
   index.push_back(family);
   index.push_back(name);
-  return fMapHisto.at(index);
-}
-
+  TH1* histo ; 
+  
+  try{
+    histo = fMapHisto.at(index); 
+  }
 
+  catch(const std::out_of_range& oor){
+  cout << "ERROR : the folowing Histo has been requested by THyballSpectra and does not exist: family:" << family << " name: "  << name << endl ;
+  exit(1);
+  }
 
+  return histo;
+}
 ////////////////////////////////////////////////////////////////////////////////
-void TTiaraHyballSpectra::WriteHisto(TString filename){
+void TTiaraHyballSpectra::WriteHisto(string filename){
   TFile* f = NULL; 
 
   if (filename != "VOID") {
-    f = new TFile(filename,"RECREATE");
+    f = new TFile(filename.c_str(),"RECREATE");
   }
 
-  map< vector<TString>, TH1* >::iterator it;
+  map< vector<string>, TH1* >::iterator it;
   for (it=fMapHisto.begin(); it!=fMapHisto.end(); ++it) {
     it->second->Write();
   }
diff --git a/NPLib/Tiara/TTiaraHyballSpectra.h b/NPLib/Tiara/TTiaraHyballSpectra.h
index 7d0e67b31be9c06ab247ebaef40dfed9571a5941..10caa75b4734a39bb314df0ed17bac98b76e2f04 100644
--- a/NPLib/Tiara/TTiaraHyballSpectra.h
+++ b/NPLib/Tiara/TTiaraHyballSpectra.h
@@ -27,7 +27,6 @@
 #include "TObject.h"
 #include <TH1.h>
 #include <TH2.h>
-#include <TString.h>
 
 // NPLib headers
 #include "TTiaraHyballData.h"
@@ -50,9 +49,9 @@ class TTiaraHyballSpectra {
 
   private:
     // Instantiate and register histo to maps
-    TH1* AddHisto1D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, TString family);
-    TH1* AddHisto2D(TString name, TString title, Int_t nbinsx, Double_t xlow, Double_t xup, 
-                                                 Int_t nbinsy, Double_t ylow, Double_t yup, TString family);
+    TH1* AddHisto1D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, string family);
+    TH1* AddHisto2D(string name, string title, Int_t nbinsx, Double_t xlow, Double_t xup, 
+                                                 Int_t nbinsy, Double_t ylow, Double_t yup, string family);
 
     // Initialization methods
     void InitRawSpectra();
@@ -67,9 +66,9 @@ class TTiaraHyballSpectra {
 
   public:
     // get map histo which will be used for GSpectra in GUser
-    map< vector<TString>, TH1* > GetMapHisto() const {return fMapHisto;}
-    TH1* GetHisto(TString family, TString name);    
-    void WriteHisto(TString filename = "VOID");      
+    map< vector<string>, TH1* > GetMapHisto() const {return fMapHisto;}
+    TH1* GetHisto(string& family, string& name);    
+    void WriteHisto(string filename = "VOID");      
 
   private: // Information on MUST2
     unsigned int fRingsNumber;
@@ -78,7 +77,7 @@ class TTiaraHyballSpectra {
 
   private:
     // map holding histo pointers and their family names
-    map< vector<TString>, TH1* > fMapHisto;
+    map< vector<string>, TH1* > fMapHisto;
 };
 
 #endif
diff --git a/NPLib/Tools/CalibrationManager.cxx b/NPLib/Tools/CalibrationManager.cxx
index a03478b2a61c9ae7b8be73053c8fb64a4997fd1e..bf05eda83e90c1e5181ff5b23fa207be19a79a79 100644
--- a/NPLib/Tools/CalibrationManager.cxx
+++ b/NPLib/Tools/CalibrationManager.cxx
@@ -33,59 +33,59 @@
 CalibrationManager* CalibrationManager::instance = 0;
 
 CalibrationManager* CalibrationManager::getInstance(string configFileName)
-   {
-      // A new instance of CalibrationManager is created if it does not exist:
-      if (instance == 0) {
-         instance = new CalibrationManager(configFileName);
-      }
+{
+  // A new instance of CalibrationManager is created if it does not exist:
+  if (instance == 0) {
+    instance = new CalibrationManager(configFileName);
+  }
+
+  // The instance of CalibrationManager is returned:
+  return instance;
+}
 
-      // The instance of CalibrationManager is returned:
-      return instance;
-   }
-   
 //////////////////////////////////////////////////////////////////
 CalibrationManager::CalibrationManager(string configFileName)
 {
-   // Read configuration file Buffer
-   string lineBuffer, dataBuffer;
-
-   // Open file
-   ifstream inputConfigFile;
-   inputConfigFile.open(configFileName.c_str());
-
-   cout << endl;
-   cout << "/////////// Calibration Information ///////////" << endl;
-   cout << "Getting list of Calibration File" << endl;
-
-   if (!inputConfigFile) {
-      cout << "Calibration Path file :" << configFileName << " not found " << endl; 
-      return;
-   }
-
-   else { 
-      cout << "Reading list of file from :" << configFileName << endl; 
-      while (!inputConfigFile.eof()) {
-         getline(inputConfigFile, lineBuffer);
-
-         // search for token giving the list of Root files to treat
-         if ( lineBuffer.compare(0, 19, "CalibrationFilePath") == 0 ) {
-            while (!inputConfigFile.eof()) {
-               inputConfigFile >> dataBuffer;
-
-               // ignore comment Line 
-               if (dataBuffer.compare(0, 1, "%") == 0) {
-                  inputConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
-               }
-
-               else if (!inputConfigFile.eof()) {
-                  AddFile(dataBuffer);
-                  cout << "Adding file " << dataBuffer << " to Calibration" << endl;
-               }
-            }
-         }
+  // Read configuration file Buffer
+  string lineBuffer, dataBuffer;
+
+  // Open file
+  ifstream inputConfigFile;
+  inputConfigFile.open(configFileName.c_str());
+
+  cout << endl;
+  cout << "/////////// Calibration Information ///////////" << endl;
+  cout << "Getting list of Calibration File" << endl;
+
+  if (!inputConfigFile) {
+    cout << "Calibration Path file :" << configFileName << " not found " << endl; 
+    return;
+  }
+
+  else { 
+    cout << "Reading list of file from :" << configFileName << endl; 
+    while (!inputConfigFile.eof()) {
+      getline(inputConfigFile, lineBuffer);
+
+      // search for token giving the list of Root files to treat
+      if ( lineBuffer.compare(0, 19, "CalibrationFilePath") == 0 ) {
+        while (!inputConfigFile.eof()) {
+          inputConfigFile >> dataBuffer;
+
+          // ignore comment Line 
+          if (dataBuffer.compare(0, 1, "%") == 0) {
+            inputConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
+          }
+
+          else if (!inputConfigFile.eof()) {
+            AddFile(dataBuffer);
+            cout << "Adding file " << dataBuffer << " to Calibration" << endl;
+          }
+        }
       }
-   }
-   cout << "/////////////////////////////////" << endl;
+    }
+  }
+  cout << "/////////////////////////////////" << endl;
 }
 
 //////////////////////////////////////////////////////////////////
@@ -95,245 +95,266 @@ CalibrationManager::~CalibrationManager()
 //////////////////////////////////////////////////////////////////
 bool CalibrationManager::AddParameter(string DetectorName , string ParameterName , string Token )
 {
-   string ParameterPath = DetectorName + "/" + ParameterName ;
-   fToken[Token] = ParameterPath ;
-   return true;
+  string ParameterPath = DetectorName + "/" + ParameterName ;
+  fToken[Token] = ParameterPath ;
+  return true;
 }
 
 /////////////////////////////////////////////////////////////////
 void CalibrationManager::ClearCalibration()
 {
-   fCalibrationCoeff.clear();
+  fCalibrationCoeff.clear();
 }
 
 /////////////////////////////////////////////////////////////////
 vector<double> CalibrationManager::GetCorrection(const string& ParameterPath)
 {
-   vector<double> Coeff ;
-   map< string , vector<double> >::iterator it ;
-   it = fCalibrationCoeff.find(ParameterPath)  ;
+  vector<double> Coeff ;
+  map< string , vector<double> >::iterator it ;
+  it = fCalibrationCoeff.find(ParameterPath)  ;
 
-   if(it == fCalibrationCoeff.end() )
-   {
-      /* cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
-         cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
-         cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;*/
+  if(it == fCalibrationCoeff.end() )
+  {
+    /* cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
+       cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
+       cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;*/
 
-      return Coeff ;
-   }
+    return Coeff ;
+  }
 
-   Coeff = it->second  ;
+  Coeff = it->second  ;
 
-   return(Coeff);
+  return(Coeff);
 }
 
 
 //////////////////////////////////////////////////////////////////
 void CalibrationManager::LoadParameterFromFile()
 {
-   ifstream CalibFile    ;
-   string    DataBuffer   ;
-   string   LineBuffer ;
-
-   // Get pointer to the TAsciifile CalibrationFile in RootOuput
-   TAsciiFile* AcsiiCalibration = RootOutput::getInstance()->GetAsciiFileCalibration();
-
-
-   for(unsigned int i = 0 ; i < fFileList.size() ; i++)
-         {
-            CalibFile.open( fFileList[i].c_str() );
-            map<string,string>::iterator it ;
-            
-            if(!CalibFile)
-               {
-                  cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
-                  cout << " WARNING: FILE " << fFileList[i] << " IS MISSING "                                                        << endl ;
-                  cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
-               }
-               
-            else 
-            {
-              // Append the Calibration File to the RootOuput for Back-up
-            string comment = "%%% From File " + fFileList[i] + "%%%";
-            AcsiiCalibration->AppendLine(comment.c_str());
-            AcsiiCalibration->Append(fFileList[i].c_str());
-            
-            
-              while( !CalibFile.eof() )
-                 {
-                    // Read the file Line by line
-                    getline(CalibFile, LineBuffer);
-                  
-                    // Create a istringstream to manipulate the line easely
-                   istringstream theLine (LineBuffer,istringstream::in);
-                    theLine >> DataBuffer ;
-                  
-                    // Comment support, comment symbole is %
-                    if(DataBuffer.compare(0, 1, "%") == 0) {
-                        CalibFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
-                        
-                    //   Search word in the token list
-                    it=fToken.find(DataBuffer);
-                                      //   if the word is find, values are read
-                    if( it!=fToken.end() )
-                      { 
-                          vector<double> Coeff ;
-                          while( !theLine.eof() ){
-                                theLine >> DataBuffer ; Coeff.push_back( atof(DataBuffer.c_str()) ) ;
-                          }
-                         
-                          //   Check this parameter is not already define
-                          if( fCalibrationCoeff.find(it->second) != fCalibrationCoeff.end() ) 
-                             cout << "WARNING: Parameter " << it->second << " Already found. It will be rewritted " << endl;
-                              
-                          //   Add the list of Coeff to the Coeff map using Parameter Path as index
-                          fCalibrationCoeff[ it->second ] = Coeff ;
-                       }
-                        
-                 }
-            
-            }
-            
-            
-            CalibFile.close() ;
-         }
-   }
+  ifstream CalibFile    ;
+  string    DataBuffer   ;
+  string   LineBuffer ;
+
+  // Get pointer to the TAsciifile CalibrationFile in RootOuput
+  TAsciiFile* AcsiiCalibration = RootOutput::getInstance()->GetAsciiFileCalibration();
+
+
+  for(unsigned int i = 0 ; i < fFileList.size() ; i++)
+  {
+    CalibFile.open( fFileList[i].c_str() );
+    map<string,string>::iterator it ;
+
+    if(!CalibFile)
+    {
+      cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
+      cout << " WARNING: FILE " << fFileList[i] << " IS MISSING "                                                        << endl ;
+      cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
+    }
+
+    else 
+    {
+      // Append the Calibration File to the RootOuput for Back-up
+      string comment = "%%% From File " + fFileList[i] + "%%%";
+      AcsiiCalibration->AppendLine(comment.c_str());
+      AcsiiCalibration->Append(fFileList[i].c_str());
+
+
+      while( !CalibFile.eof() )
+      {
+        // Read the file Line by line
+        getline(CalibFile, LineBuffer);
+
+        // Create a istringstream to manipulate the line easely
+        istringstream theLine (LineBuffer,istringstream::in);
+        theLine >> DataBuffer ;
+
+        // Comment support, comment symbole is %
+        if(DataBuffer.compare(0, 1, "%") == 0) {
+          CalibFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
+
+        //   Search word in the token list
+        it=fToken.find(DataBuffer);
+        //   if the word is find, values are read
+        if( it!=fToken.end() )
+        { 
+          vector<double> Coeff ;
+          while( theLine >> DataBuffer ){
+            Coeff.push_back( atof(DataBuffer.c_str()) ) ;
+          }
+
+          //   Check this parameter is not already define
+          if( fCalibrationCoeff.find(it->second) != fCalibrationCoeff.end() ) 
+            cout << "WARNING: Parameter " << it->second << " Already found. It will be rewritted " << endl;
+
+          //   Add the list of Coeff to the Coeff map using Parameter Path as index
+          fCalibrationCoeff[ it->second ] = Coeff ;
+        }
+
+      }
+
+    }
+
+
+    CalibFile.close() ;
+  }
+}
 
 //////////////////////////////////////////////////////////////////
-double CalibrationManager::ApplyCalibration(const string& ParameterPath , const double& RawValue)
-   {
-      map< string , vector<double> >::iterator it ;
-      
-      //   Find the good parameter in the Map
-      // Using Find method of stl is the fastest way
-      it = fCalibrationCoeff.find(ParameterPath)  ;
-      
-      // If the find methods return the end iterator it's mean the parameter was not found
-      if(it == fCalibrationCoeff.end() )
-         {
-       /*     cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
-            cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
-            cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl;
-exit(1); */
-            
-            return RawValue ;
-         }
-      
-      // Else we take the second part of the element (first is index, ie: parameter path)
-      // Second is the vector of Coeff
-      vector<double> Coeff = it->second  ;
-      
-      // The vector size give the degree of calibration
-      // We just apply the coeff and returned the calibrated value
-      
-      double CalibratedValue = 0 ;
-      for(unsigned int i = 0 ; i < Coeff.size() ; i++)
-         {
-            CalibratedValue += Coeff[i]*pow(RawValue, (double)i);
-         }
-         
-      return CalibratedValue ;
-      
-   }
+double CalibrationManager::ApplyCalibration(const string& ParameterPath , const double& RawValue){
+  map< string , vector<double> >::iterator it ;
+
+  //   Find the good parameter in the Map
+  // Using Find method of stl is the fastest way
+  it = fCalibrationCoeff.find(ParameterPath)  ;
+
+  // If the find methods return the end iterator it's mean the parameter was not found
+  if(it == fCalibrationCoeff.end() ){
+    return RawValue ;
+  }
 
+  // Else we take the second part of the element (first is index, ie: parameter path)
+  // Second is the vector of Coeff
+  vector<double> Coeff = it->second  ;
+
+  // The vector size give the degree of calibration
+  // We just apply the coeff and returned the calibrated value
+
+  double CalibratedValue = 0 ;
+  for(unsigned int i = 0 ; i < Coeff.size() ; i++){
+    CalibratedValue += Coeff[i]*pow(RawValue, (double)i);
+  }
+
+  return CalibratedValue ;
+
+}
+//////////////////////////////////////////////////////////////////
+double CalibrationManager::ApplyCalibrationDebug(const string& ParameterPath , const double& RawValue){
+  map< string , vector<double> >::iterator it ;
+
+  //   Find the good parameter in the Map
+  // Using Find method of stl is the fastest way
+  it = fCalibrationCoeff.find(ParameterPath)  ;
+
+  // If the find methods return the end iterator it's mean the parameter was not found
+  if(it == fCalibrationCoeff.end() ){
+           cout << " PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
+    return RawValue ;
+  }
+
+  // Else we take the second part of the element (first is index, ie: parameter path)
+  // Second is the vector of Coeff
+  cout << it->first << " :  raw = " << RawValue << " coeff = "  ;
+  vector<double> Coeff = it->second  ;
+
+  // The vector size give the degree of calibration
+  // We just apply the coeff and returned the calibrated value
+
+  double CalibratedValue = 0 ;
+  for(unsigned int i = 0 ; i < Coeff.size() ; i++){
+    cout << Coeff[i] << " " ;
+    CalibratedValue += Coeff[i]*pow(RawValue, (double)i);
+  }
+cout << "results = " << CalibratedValue << endl ;
+  return CalibratedValue ;
+}
 //////////////////////////////////////////////////////////////////
 double CalibrationManager::ApplyResistivePositionCalibration(const string& ParameterPath , const double& DeltaRawValue){
-      map< string , vector<double> >::iterator it ;
-      
-      //   Find the good parameter in the Map
-      // Using Find method of stl is the fastest way
-      it = fCalibrationCoeff.find(ParameterPath)  ;
-      
-      // If the find methods return the end iterator it's mean the parameter was not found
-      if(it == fCalibrationCoeff.end() )
-         {
-       /*     cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
-            cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
-            cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl;
-exit(1); */
-            
-            return DeltaRawValue ;
-         }
-      
-      // Else we take the second part of the element (first is index, ie: parameter path)
-      // Second is the vector of Coeff
-      vector<double> Coeff = it->second  ;
-      
-      // Check that the number of coeff is ok
-      if(Coeff.size()!=2) return DeltaRawValue ; 
-      
-      double CalibratedValue = (DeltaRawValue-Coeff[0])/(Coeff[1]-Coeff[0]) ;
-      return CalibratedValue ;
-      
-   }
+  map< string , vector<double> >::iterator it ;
+
+  //   Find the good parameter in the Map
+  // Using Find method of stl is the fastest way
+  it = fCalibrationCoeff.find(ParameterPath)  ;
+
+  // If the find methods return the end iterator it's mean the parameter was not found
+  if(it == fCalibrationCoeff.end() )
+  {
+    /*     cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
+           cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
+           cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl;
+           exit(1); */
+
+    return DeltaRawValue ;
+  }
+
+  // Else we take the second part of the element (first is index, ie: parameter path)
+  // Second is the vector of Coeff
+  vector<double> Coeff = it->second  ;
+
+  // Check that the number of coeff is ok
+  if(Coeff.size()!=2) return DeltaRawValue ; 
+
+  double CalibratedValue = (DeltaRawValue-Coeff[0])/(Coeff[1]-Coeff[0]) ;
+  return CalibratedValue ;
+
+}
 
 
 //////////////////////////////////////////////////////////////////
 bool CalibrationManager::ApplyThreshold(const string& ParameterPath, const double& RawValue)
 {
-   map< string , vector<double> >::iterator it ;
+  map< string , vector<double> >::iterator it ;
 
-   //   Find the good parameter in the Map
-   // Using Find method of stl is the fastest way
-   it = fCalibrationCoeff.find(ParameterPath)  ;
+  //   Find the good parameter in the Map
+  // Using Find method of stl is the fastest way
+  it = fCalibrationCoeff.find(ParameterPath)  ;
 
-   // If the find methods return the end iterator it's mean the parameter was not found
-   if(it == fCalibrationCoeff.end() )
-   {
-      // cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
-      // cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
-      // cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;           
-      return false;
-   }
+  // If the find methods return the end iterator it's mean the parameter was not found
+  if(it == fCalibrationCoeff.end() )
+  {
+    // cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
+    // cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
+    // cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;           
+    return false;
+  }
 
-   // Else we take the second part of the element (first is index, ie: parameter path)
-   // Second is the vector of Coeff
-   vector<double> Coeff = it->second  ;
+  // Else we take the second part of the element (first is index, ie: parameter path)
+  // Second is the vector of Coeff
+  vector<double> Coeff = it->second  ;
 
-   // The vector size give the degree of calibration
-   // We just apply the coeff and returned the calibrated value
+  // The vector size give the degree of calibration
+  // We just apply the coeff and returned the calibrated value
 
-   double ThresholdValue = 0 ;
+  double ThresholdValue = 0 ;
 
-   if(Coeff.size()==2){ThresholdValue = Coeff[0] + 3*Coeff[1];}
+  if(Coeff.size()==2){ThresholdValue = Coeff[0] + 3*Coeff[1];}
 
-   if(RawValue > ThresholdValue)
-   {
-      return true;
-   }
-   else return false;
+  if(RawValue > ThresholdValue)
+  {
+    return true;
+  }
+  else return false;
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
 double CalibrationManager::GetPedestal(const string& ParameterPath)
 {
-   map< string , vector<double> >::iterator it ;
+  map< string , vector<double> >::iterator it ;
 
-   //   Find the good parameter in the Map
-   // Using Find method of stl is the fastest way
-   it = fCalibrationCoeff.find(ParameterPath)  ;
+  //   Find the good parameter in the Map
+  // Using Find method of stl is the fastest way
+  it = fCalibrationCoeff.find(ParameterPath)  ;
 
-   // If the find methods return the end iterator it's mean the parameter was not found
-   if(it == fCalibrationCoeff.end() )
-   {
-      cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
-      cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
-      cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
-   }
+  // If the find methods return the end iterator it's mean the parameter was not found
+  if(it == fCalibrationCoeff.end() )
+  {
+    cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
+    cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
+    cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
+  }
 
-   // Else we take the second part of the element (first is index, ie: parameter path)
-   // Second is the vector of Coeff
-   vector<double> Coeff = it->second  ;
+  // Else we take the second part of the element (first is index, ie: parameter path)
+  // Second is the vector of Coeff
+  vector<double> Coeff = it->second  ;
 
-   // The vector size give the degree of calibration
-   // We just apply the coeff and returned the calibrated value
+  // The vector size give the degree of calibration
+  // We just apply the coeff and returned the calibrated value
 
-   double PedestalValue = 0 ;
+  double PedestalValue = 0 ;
 
-   if(Coeff.size()==2){PedestalValue = Coeff[0];}
+  if(Coeff.size()==2){PedestalValue = Coeff[0];}
 
 
-   return PedestalValue;
+  return PedestalValue;
 }
 
 
diff --git a/NPLib/Tools/CalibrationManager.h b/NPLib/Tools/CalibrationManager.h
index df2c0a6052da7b68523db215e10a9fcaf8576587..5166ee82a4f19bd95e64c10fff118ea08e305bcd 100644
--- a/NPLib/Tools/CalibrationManager.h
+++ b/NPLib/Tools/CalibrationManager.h
@@ -59,6 +59,8 @@ class CalibrationManager
          // call like : myCalibrationManager->ApplyCalibration( "MUST2/Telescope5_Si_X38_E" , RawEnergy )
          // return the Calibrated value
          double ApplyCalibration(const string& ParameterPath , const double& RawValue);
+         // Same but with debug information outputs
+         double ApplyCalibrationDebug(const string& ParameterPath , const double& RawValue);
          double ApplyResistivePositionCalibration(const string& ParameterPath , const double& RawValue);
          bool ApplyThreshold(const string& ParameterPath, const double& RawValue);
          double GetPedestal(const string& ParameterPath);
diff --git a/NPLib/VDetector/DetectorManager.cxx b/NPLib/VDetector/DetectorManager.cxx
index 3bf62a3afb02dd0f4cb47cf23623f96821c9fd27..a6364d63542dc743f8112b4282950c4263a9bc4e 100644
--- a/NPLib/VDetector/DetectorManager.cxx
+++ b/NPLib/VDetector/DetectorManager.cxx
@@ -50,6 +50,9 @@
 #include "TSpegPhysics.h"
 #include "TExlPhysics.h"
 #include "TTacPhysics.h"
+#include "TSiLiPhysics.h"
+#include "TSiResPhysics.h"
+#include "TLaBr3Physics.h"
 #include "TChio_digPhysics.h"
 #include "TChio_anPhysics.h"
 #include "NPOptionManager.h"
@@ -84,9 +87,12 @@ void DetectorManager::ReadConfigurationFile(string Path)   {
    Bool_t ChateauCristal      = false;
    Bool_t Exogam              = false;
    Bool_t ScintillatorPlastic = false;
+   Bool_t SiLi		      = false;
+   Bool_t SiRes		      = false;
+   Bool_t LaBr3		      = false;
    Bool_t IonisationChamber   = false;
    Bool_t Trifoil             = false;
-	Bool_t Charissa = false;
+   Bool_t Charissa 	      = false;
    Bool_t GeneralTarget       = false;
    Bool_t GPDTracker          = false;
    Bool_t HYD2Tracker         = false;
@@ -401,7 +407,61 @@ void DetectorManager::ReadConfigurationFile(string Path)   {
       AddDetector("Plastic", myDetector);
 #endif
     }
+    ////////////////////////////////////////////
+    ///////////// Search for LaBr3 ///////////
+    ////////////////////////////////////////////
+    else if (LineBuffer.compare(0, 5, "LaBr3") == 0 && LaBr3 == false) {
+#ifdef INC_LABR3
+      LaBr3 = true;
+      cout << "//////// Plastic ////////" << endl << endl;
 
+      // Instantiate the new array as a VDetector Object
+      VDetector* myDetector = new TLaBr3Physics();
+      // Read Position of Telescope
+      ConfigFile.close();
+      myDetector->ReadConfiguration(Path);
+      ConfigFile.open(Path.c_str());
+
+      // Add array to the VDetector Vector
+      AddDetector("LaBr3", myDetector);
+#endif
+    }    ////////////////////////////////////////////
+    ///////////// Search for SiLi ///////////
+    ////////////////////////////////////////////
+    else if (LineBuffer.compare(0, 4, "SiLi") == 0 && SiLi == false) {
+#ifdef INC_SILI
+      SiLi = true;
+      cout << "//////// Plastic ////////" << endl << endl;
+
+      // Instantiate the new array as a VDetector Object
+      VDetector* myDetector = new TSiLiPhysics();
+      // Read Position of Telescope
+      ConfigFile.close();
+      myDetector->ReadConfiguration(Path);
+      ConfigFile.open(Path.c_str());
+
+      // Add array to the VDetector Vector
+      AddDetector("SiLi", myDetector);
+#endif
+    }    ////////////////////////////////////////////
+    ///////////// Search for SiRes ///////////
+    ////////////////////////////////////////////
+    else if (LineBuffer.compare(0, 5, "SiRes") == 0 && SiRes == false) {
+#ifdef INC_SIRES
+      SiRes = true;
+      cout << "//////// Plastic ////////" << endl << endl;
+
+      // Instantiate the new array as a VDetector Object
+      VDetector* myDetector = new TSiResPhysics();
+      // Read Position of Telescope
+      ConfigFile.close();
+      myDetector->ReadConfiguration(Path);
+      ConfigFile.open(Path.c_str());
+
+      // Add array to the VDetector Vector
+      AddDetector("SiRes", myDetector);
+#endif
+    }
     ///////////////////////////////////////////////////////
     ///////////// Search for Ionisation Chamber ///////////
     ///////////////////////////////////////////////////////
@@ -780,9 +840,9 @@ void DetectorManager::InitSpectra(){
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////////   
-vector< map< vector<TString>, TH1* > > DetectorManager::GetSpectra()
+vector< map< vector<string>, TH1* > > DetectorManager::GetSpectra()
 {
-   vector< map< vector<TString>, TH1* > > myVector;
+   vector< map< vector<string>, TH1* > > myVector;
 
    map<string,VDetector*>::iterator it;
    // loop on detectors
@@ -792,3 +852,15 @@ vector< map< vector<TString>, TH1* > > DetectorManager::GetSpectra()
 
    return myVector;
 }
+
+/////////////////////////////////////////////////////////////////////////////////////////////////   
+vector<string> DetectorManager::GetDetectorList(){
+  map<string,VDetector*>::iterator it;
+  vector<string> DetectorList;
+  for (it = m_Detector.begin(); it != m_Detector.end(); ++it) { 
+    DetectorList.push_back(it->first);
+  }
+
+  return DetectorList;
+}
+
diff --git a/NPLib/VDetector/DetectorManager.h b/NPLib/VDetector/DetectorManager.h
index 137bc7539710284710ad7fca60ad02b21ae922ef..aceafc83a22791d8becd5d23eadce03d014fc9d0 100644
--- a/NPLib/VDetector/DetectorManager.h
+++ b/NPLib/VDetector/DetectorManager.h
@@ -25,7 +25,6 @@
 
 // ROOT
 #include "TH1.h"
-#include "TString.h"
 
 //   STL
 #include <string>
@@ -53,8 +52,8 @@ namespace NPA{
       void        ClearEventPhysics();
       void        ClearEventData();
       void        InitSpectra();
-      vector< map< vector<TString>, TH1* > > GetSpectra();  
-
+      vector< map< vector<string>, TH1* > > GetSpectra();  
+      vector<string>                        GetDetectorList();
     private:   
       // The map containning all detectors
       // Using a Map one can access to any detector using its name
diff --git a/NPLib/VDetector/VDetector.h b/NPLib/VDetector/VDetector.h
index 6d36b74b11e354f5b1401c5e4f86d5b9bde31681..b0861a70395f5af938c0e63aef588b8fe9c9459c 100644
--- a/NPLib/VDetector/VDetector.h
+++ b/NPLib/VDetector/VDetector.h
@@ -83,7 +83,7 @@ namespace NPA {
       // Used for Online only, clear all the spectra hold by the Spectra class
       virtual void ClearSpectra() {};
       // Used for Online only, get all the spectra hold by the Spectra class
-      virtual  map< vector<TString> , TH1*> GetSpectra() {map< vector<TString>, TH1* > x; return x;};
+      virtual  map< vector<string> , TH1*> GetSpectra() {map< vector<string>, TH1* > x; return x;};
 
     private:   //   The list below is here to help you building your own detector
       /*
diff --git a/NPLib/configure b/NPLib/configure
index 1c6572588ac535e04766813b474b4149cb59245b..4303bc168abe3de318f89a21543903bed67da25e 100755
--- a/NPLib/configure
+++ b/NPLib/configure
@@ -65,42 +65,40 @@ do
    # remove "Makefile" string from file name
    name=${file%\/*}
    # file name in lower case
-   lname=$(echo "$name"  | tr '[A-Z]' '[a-z]')
+   lname=$(printf "$name\n"  | tr '[A-Z]' '[a-z]')
    # only build core libraries
-   if echo "$corelibs" | grep -q "$lname" ; then
+   if printf "$corelibs\n" | grep -q "$lname" ; then
       core_string="$core_string""$lname "
    else 
       if [ $# = 0 ] ; then 
          detector_string="$detector_string""$lname "
       else
-         if echo "$args" | grep -q "$lname" ; then
+         if printf "$args\n" | grep -q "$lname" ; then
             detector_string="$detector_string""$lname "
          fi ;
       fi ;
    fi ;
 done
 
-echo "$core_string" >> $core_file
-echo "$detector_string" >> $detector_file
+printf "$core_string\n" >> $core_file
+printf "$detector_string\n" >> $detector_file
 
-
-###########################################################################
-# Create detector entry in Makefile file for detectors given in arguments #
-###########################################################################
+########################################################################
+# Create cores entry in Makefile file for detectors given in arguments #
+########################################################################
 # output file
 outfile="Makefile.detector"
-echo " + Creating $outfile file....."
-
+printf " + Creating $outfile file.....\n"
 # if output file exists delete it
 if [ -e $outfile ] ; then
    rm $outfile
 fi ;
 
 # create output file
-echo "# WARNING:" >> $outfile
-echo "#    This file is automatically generated by the configure script." >> $outfile
-echo "#    If you modify this file by hand, changes won't persist the next time you run ./configure." >> $outfile
-echo "#" >> $outfile
+printf "# WARNING:\n" >> $outfile
+printf "#    This file is automatically generated by the configure script.\n" >> $outfile
+printf "#    If you modify this file by hand, changes won't persist the next time you run ./configure.\n" >> $outfile
+printf "#\n" >> $outfile
 
 # loop recursively on sub-directories containing a Makefile file
 for file in */Makefile
@@ -108,20 +106,38 @@ do
    # remove "Makefile" string from file name
    name=${file%\/*}
    # file name in lower case
-   lname=$(echo "$name"  | tr '[A-Z]' '[a-z]')
+   lname=$(printf "$name\n"  | tr '[A-Z]' '[a-z]')
+   # only build core libraries
+   if printf "$corelibs\n" | grep -q "$lname" ; then
+      ./scripts/makefile_detector.sh $name $outfile
+   fi ;
+done
+
+###########################################################################
+# Create detector entry in Makefile file for detectors given in arguments #
+###########################################################################
+# loop recursively on sub-directories containing a Makefile file
+for file in */Makefile
+do
+   # remove "Makefile" string from file name
+   name=${file%\/*}
+   # file name in lower case
+   lname=$(printf "$name\n"  | tr '[A-Z]' '[a-z]')
    # if no arguments are given, add all detectors in Makefile.detector
    # by default
-   if [ $# = 0 ] ; then 
-      # build target
-      echo "$lname": >> $outfile
-      # build commands
+   
+  if [ $# = 0 ] ; then 
+     #ignore the core folder
+     if printf "$corelibs\n" | grep -q "$lname" ; then
+    printf ""
+    else
+     # build commands
       ./scripts/makefile_detector.sh $name $outfile
+     fi
    else
       # only add Makefile.detector target if it is in the
       # arguments list
-      if echo "$args" | grep -q "$lname" ; then
-         # build target
-         echo "$lname": >> $outfile
+      if printf "$args\n" | grep -q "$lname" ; then
          # build commands
          ./scripts/makefile_detector.sh $name $outfile
       fi ;
@@ -129,6 +145,7 @@ do
 done
 
 
+
 ##########################################################################
 # Create DetectorList.inc file in VDetector directory used for compiling #
 # only the detectors given in arguments                                  #
@@ -136,7 +153,7 @@ done
 # output file
 outfile="DetectorList.inc"
 # outfile="VDetector/DetectorList.inc"
-echo " + Creating $outfile file....."
+printf " + Creating $outfile file.....\n"
 
 # if output file exists delete it
 if [ -e $outfile ] ; then
@@ -144,10 +161,10 @@ if [ -e $outfile ] ; then
 fi ;
 
 # create output file
-echo "// WARNING:" >> $outfile
-echo "//    This file is automatically generated by the configure script." >> $outfile
-echo "//    If you modify this file by hand, changes won't persist the next time you run ./configure." >> $outfile
-echo "//" >> $outfile
+printf "// WARNING:\n" >> $outfile
+printf "//    This file is automatically generated by the configure script.\n" >> $outfile
+printf "//    If you modify this file by hand, changes won't persist the next time you run ./configure.\n" >> $outfile
+printf "//\n" >> $outfile
 
 # loop recursively on sub-directories containing a Makefile file
 for file in */Makefile
@@ -155,50 +172,23 @@ do
    # remove "Makefile" string from file name
    name=${file%\/*}
    # file name in lower/upper case
-   lname=$(echo "$name"  | tr '[A-Z]' '[a-z]')
-   uname=$(echo "$name"  | tr '[a-z]' '[A-Z]')
+   lname=$(printf "$name\n"  | tr '[A-Z]' '[a-z]')
+   uname=$(printf "$name\n"  | tr '[a-z]' '[A-Z]')
    # if no arguments are given, add all detectors in Makefile.detector
    # by default
    if [ $# = 0 ] ; then 
       # build target
-      echo "#define INC_$uname" >> $outfile
+      printf "#define INC_$uname\n" >> $outfile
    else
       # only add Makefile.detector target if it is in the
       # arguments list
-      if echo "$args" | grep -q "$lname" ; then
+      if printf "$args\n" | grep -q "$lname" ; then
          # build target
-         echo "#define INC_$uname" >> $outfile
+         printf "#define INC_$uname\n" >> $outfile
       fi ;
    fi ;
 done
 
 
 
-########################
-# Build core libraries #
-########################
-# (I) fill include directory with associated headers
-#echo " + Copying header files to the include directory....."
-./scripts/fillincdir.sh
-
-# (II) compile core libraries
-echo " + Building core libraries....."
-# loop recursively on sub-directories containing a Makefile file
-for file in */Makefile
-do
-   # remove "Makefile" string from file name
-   name=${file%\/*}
-   # file name in lower case
-   lname=$(echo "$name"  | tr '[A-Z]' '[a-z]')
-   # only build core libraries
-   if echo "$corelibs" | grep -q "$lname" ; then
-      # print informations
-      echo -e "\tEntering $name directory..."
-      # add "-C ./" pattern at the beginning of the name
-      cmd="-C ./$name"
-      # execute make command with target specified on command line
-      make -j --silent $cmd
-   fi ;
-done
-
 
diff --git a/NPLib/scripts/filllibdir.sh b/NPLib/scripts/filllibdir.sh
deleted file mode 100755
index 3cdccec020c743158211d5794b3ad6b4e791bde9..0000000000000000000000000000000000000000
--- a/NPLib/scripts/filllibdir.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-# *****************************************************************************
-# * Copyright (C) 2009   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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
-# *                                                                           *
-# * Creation Date  : 16/11/10                                                 *
-# * Last update    :                                                          *
-# *---------------------------------------------------------------------------*
-# * Decription: This script moves all the libraries (*.so) in all directories *
-# *             to the lib/ directory.                                        *
-# *---------------------------------------------------------------------------*
-# * Comment:                                                                  *
-# *                                                                           *
-# *                                                                           *
-# *****************************************************************************
-
-#! /bin/bash
-
-echo " + Copying libraries to the lib directory....."
-
-# previously, clean lib/ directory
-rm -f lib/*.so
-
-# loop recursively on header files in all directories
-for file in */*.so
-do
-   # copy header files to the include directory
-   cp -f $file lib/
-done
-
-rm -f lib/NPToolLogon_C.so
diff --git a/NPLib/scripts/makefile.sh b/NPLib/scripts/makefile.sh
deleted file mode 100755
index 21c6f7b66f2f28cfe3fc23ed5f20fa85fa37597b..0000000000000000000000000000000000000000
--- a/NPLib/scripts/makefile.sh
+++ /dev/null
@@ -1,58 +0,0 @@
-# *****************************************************************************
-# * Copyright (C) 2009   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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
-# *                                                                           *
-# * Creation Date  : 16/11/10                                                 *
-# * Last update    :                                                          *
-# *---------------------------------------------------------------------------*
-# * Decription: This script loops on all subdirectories containing a Makefile *
-# *             and call it with the argument passed to the script.           *
-# *             Supported arguments are:                                      *
-# *               + no arguments: compile everything                          *
-# *               + clean: remove temporary files but not shared library      *
-# *               + distclean: remove temporary files and shared library      *
-# *                                                                           *
-# *---------------------------------------------------------------------------*
-# * Comment:                                                                  *
-# *                                                                           *
-# *                                                                           *
-# *****************************************************************************
-
-#! /bin/bash
-
-if [ $# = 0 ] ; then
-   printf " + Building detector libraries.....\n"
-else
-   printf " + Cleaning $2 libraries.....\n"
-fi ;
-
-# read .detector_libs or .core_libs file created by the configure script
-file=".""$2_libs"
-if [ $# = 0 ] ; then
-   file=".detector_libs"
-fi ;
-read -r detectorlibs < "$file" 
-
-# loop recursively on Makefile files in sub-directories
-for file in */Makefile
-do
-   # remove "Makefile" string from file name
-   name=${file%\/*}
-   # file name in lower case
-   lname=$(echo "$name"  | tr '[A-Z]' '[a-z]')
-   # only build defined detector libraries
-   if printf  "$detectorlibs" | grep -q "$lname" ; then
-      # print informations
-      printf "\tEntering $name directory...\n"
-      # add "-C ./" pattern at the beginning of the name
-      cmd="-C ./$name"
-      # execute make command with target specified on command line
-      make -j --silent $1 $cmd
-   fi ;
-done
diff --git a/NPLib/scripts/makefile_detector.sh b/NPLib/scripts/makefile_detector.sh
index 814a766ca8bfdebbacc775924a66cbdc1b3370ea..de57f486cfbe0757ddc3b545ae33dee77b9b094b 100755
--- a/NPLib/scripts/makefile_detector.sh
+++ b/NPLib/scripts/makefile_detector.sh
@@ -26,21 +26,15 @@
 # *                                                                           *
 # *****************************************************************************
 
-
+#Target name
+lname=$(printf "$1\n"  | tr '[A-Z]' '[a-z]')
+printf  "$lname: " >> $2
+#Dependancies
+printf "FillIncludeDir \n" >> $2
 # build message 
-printf  "\t@echo \"Entering $1 directory...\"" >> $2
+printf  "\t@echo \"Entering $1 directory...\"\n" >> $2
 # execute make command with target specified on command line
-printf  "\tmake --silent -C ./$1" >> $2
-# copy header files
-printf  "\tcd $1; cp -f *.h ../include" >> $2
-# remove *Dict header files
-printf  "\tcd include; rm *Dict.h" >> $2
-# copy library files
-printf  "\tcd $1; cp -f *.so ../lib" >> $2
-# deal with mac osx dylib files
-#echo "ifeq (\$(findstring macosx, \$(ARCH)), macosx)" >> $2
-#echo "\t@echo \"to be done\""
-#echo "endif" >> $2
-# newline
-printf "" >> $2
+printf  "\t+make --silent -C ./$1\n" >> $2
+printf  "\tcp ./$1/*.so lib/\n" >> $2
+printf "\n" >> $2
 
diff --git a/NPSimulation/GASPARD/GaspardTrackerSquare.cc b/NPSimulation/GASPARD/GaspardTrackerSquare.cc
index dac055ae83f690fd12ebb95817829e5ffd83a6fc..9e07060a170b5411741d35551f2cd322e091d347 100644
--- a/NPSimulation/GASPARD/GaspardTrackerSquare.cc
+++ b/NPSimulation/GASPARD/GaspardTrackerSquare.cc
@@ -234,8 +234,10 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
 
    new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicGPDSquare, Name, world, false, 0);
 
-   logicGPDSquare->SetVisAttributes(G4VisAttributes::Invisible);
-   if (m_non_sensitive_part_visiualisation) logicGPDSquare->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
+
+   G4VisAttributes* SquareVisAtt = new G4VisAttributes(G4Colour(0.90, 0.90, 0.90)); 
+   SquareVisAtt->SetForceWireframe(true); 
+   logicGPDSquare->SetVisAttributes(SquareVisAtt);
 
    //Place two marker to identify the u and v axis on silicon face:
    //marker are placed a bit before the silicon itself so they don't perturbate simulation
@@ -276,7 +278,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
       logicFirstStage->SetSensitiveDetector(m_FirstStageScorer);
 
       ///Visualisation of FirstStage Strip
-      G4VisAttributes* FirstStageVisAtt = new G4VisAttributes(G4Colour(0.0, 0.0, 0.9));   // blue
+      G4VisAttributes* FirstStageVisAtt = new G4VisAttributes(G4Colour(0.3, 0.3, 0.3));   // blue
       logicFirstStage->SetVisAttributes(FirstStageVisAtt);
    }
 
@@ -296,7 +298,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
       logicSecondStage->SetSensitiveDetector(m_SecondStageScorer);
 
       ///Visualisation of SecondStage Strip
-      G4VisAttributes* SecondStageVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.5)) ;
+      G4VisAttributes* SecondStageVisAtt = new G4VisAttributes(G4Colour(0.3, 0.3, 0.3)) ;
       logicSecondStage->SetVisAttributes(SecondStageVisAtt)                        ;
    }
 
@@ -316,7 +318,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
       logicThirdStage->SetSensitiveDetector(m_ThirdStageScorer);
 
       ///Visualisation of Third Stage
-      G4VisAttributes* ThirdStageVisAtt = new G4VisAttributes(G4Colour(0.0, 0.9, 0.0));   // green
+      G4VisAttributes* ThirdStageVisAtt = new G4VisAttributes(G4Colour(0.3, 0.3, 0.3));   // green
       logicThirdStage->SetVisAttributes(ThirdStageVisAtt);
    }
 }
diff --git a/NPSimulation/GASPARD/GaspardTrackerTrapezoid.cc b/NPSimulation/GASPARD/GaspardTrackerTrapezoid.cc
index 5094093f435ee1b7a1581a452af1d8c1b96778c9..790830ce324c171109f9e2e652c68ce80bc4ea44 100644
--- a/NPSimulation/GASPARD/GaspardTrackerTrapezoid.cc
+++ b/NPSimulation/GASPARD/GaspardTrackerTrapezoid.cc
@@ -235,8 +235,9 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
 
    new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicGPDTrapezoid, Name, world, false, 0);
 
-   logicGPDTrapezoid->SetVisAttributes(G4VisAttributes::Invisible);
-   if (m_non_sensitive_part_visiualisation) logicGPDTrapezoid->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
+   G4VisAttributes* TrapezoideVisAtt = new G4VisAttributes(G4Colour(0.90, 0.90, 0.90));
+   TrapezoideVisAtt->SetForceWireframe(true); 
+    logicGPDTrapezoid->SetVisAttributes(TrapezoideVisAtt);
 
    //Place two marker to identify the u and v axis on silicon face:
    //marker are placed a bit before the silicon itself so they don't perturbate simulation
@@ -286,7 +287,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
       logicFirstStage->SetSensitiveDetector(m_FirstStageScorer);
 
       ///Visualisation of FirstStage Strip
-      G4VisAttributes* FirstStageVisAtt = new G4VisAttributes(G4Colour(0.0, 0.0, 0.9));   // blue
+      G4VisAttributes* FirstStageVisAtt = new G4VisAttributes(G4Colour(0.3, 0.3, 0.3));   // blue
       logicFirstStage->SetVisAttributes(FirstStageVisAtt);
    }
 
@@ -315,7 +316,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
       logicSecondStage->SetSensitiveDetector(m_SecondStageScorer);
 
       ///Visualisation of SecondStage Strip
-      G4VisAttributes* SecondStageVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.5));
+      G4VisAttributes* SecondStageVisAtt = new G4VisAttributes(G4Colour(0.3, 0.3, 0.3));
       logicSecondStage->SetVisAttributes(SecondStageVisAtt);
    }
 
@@ -344,7 +345,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
       logicThirdStage->SetSensitiveDetector(m_ThirdStageScorer);
 
       ///Visualisation of Third Stage
-      G4VisAttributes* ThirdStageVisAtt = new G4VisAttributes(G4Colour(0.0, 0.9, 0.0));   // red
+      G4VisAttributes* ThirdStageVisAtt = new G4VisAttributes(G4Colour(0.3, 0.3, 0.3));   // red
       logicThirdStage->SetVisAttributes(ThirdStageVisAtt);
    }
 }
diff --git a/NPSimulation/MUST2/MUST2Array.cc b/NPSimulation/MUST2/MUST2Array.cc
index d611e88b4c20f145f4eaec73c86d3600d3e93d49..834c272d905ff008ecc9ba14f71eb7c94cf437d7 100644
--- a/NPSimulation/MUST2/MUST2Array.cc
+++ b/NPSimulation/MUST2/MUST2Array.cc
@@ -59,492 +59,490 @@ using namespace MUST2   ;
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // MUST2Array Specific Method
-MUST2Array::MUST2Array()
-{
-   m_Event = new TMust2Data() ;
-   InitializeMaterial();
+MUST2Array::MUST2Array(){
+  m_Event = new TMust2Data() ;
+  InitializeMaterial();
 }
 
-MUST2Array::~MUST2Array()
-{
-   delete m_MaterialAluminium;
-   delete m_MaterialIron;
-   delete m_MaterialCsI;
-   delete m_MaterialVacuum ;
-   delete m_MaterialMyl;
-   delete m_MaterialHarvar;
+MUST2Array::~MUST2Array(){
+  delete m_MaterialAluminium;
+  delete m_MaterialIron;
+  delete m_MaterialCsI;
+  delete m_MaterialVacuum ;
+  delete m_MaterialMyl;
+  delete m_MaterialHarvar;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void MUST2Array::AddTelescope(   G4ThreeVector X1_Y1,
-                                 G4ThreeVector X128_Y1,
-                                 G4ThreeVector X1_Y128,
-                                 G4ThreeVector X128_Y128,
-                                 bool wSi,
-                                 bool wSiLi,
-                                 bool wCsI)
+    G4ThreeVector X128_Y1,
+    G4ThreeVector X1_Y128,
+    G4ThreeVector X128_Y128,
+    bool wSi,
+    bool wSiLi,
+    bool wCsI)
 {
-   m_DefinitionType.push_back(true);
-
-   m_X1_Y1     .push_back(X1_Y1);
-   m_X128_Y1   .push_back(X128_Y1);
-   m_X1_Y128   .push_back(X1_Y128);
-   m_X128_Y128 .push_back(X128_Y128);
-   m_wSi.push_back(wSi);
-   m_wSiLi.push_back(wSiLi);
-   m_wCsI.push_back(wCsI);
-
-   m_R.push_back(0);
-   m_Theta.push_back(0);
-   m_Phi.push_back(0);
-   m_beta_u.push_back(0);
-   m_beta_v.push_back(0);
-   m_beta_w.push_back(0);
+  m_DefinitionType.push_back(true);
+
+  m_X1_Y1     .push_back(X1_Y1);
+  m_X128_Y1   .push_back(X128_Y1);
+  m_X1_Y128   .push_back(X1_Y128);
+  m_X128_Y128 .push_back(X128_Y128);
+  m_wSi.push_back(wSi);
+  m_wSiLi.push_back(wSiLi);
+  m_wCsI.push_back(wCsI);
+
+  m_R.push_back(0);
+  m_Theta.push_back(0);
+  m_Phi.push_back(0);
+  m_beta_u.push_back(0);
+  m_beta_v.push_back(0);
+  m_beta_w.push_back(0);
 }
 
 void MUST2Array::AddTelescope(   G4double R,
-                                 G4double Theta,
-                                 G4double Phi,
-                                 G4double beta_u,
-                                 G4double beta_v,
-                                 G4double beta_w,
-                                 bool wSi,
-                                 bool wSiLi,
-                                 bool wCsI)
+    G4double Theta,
+    G4double Phi,
+    G4double beta_u,
+    G4double beta_v,
+    G4double beta_w,
+    bool wSi,
+    bool wSiLi,
+    bool wCsI)
 {
-   G4ThreeVector empty = G4ThreeVector(0, 0, 0);
+  G4ThreeVector empty = G4ThreeVector(0, 0, 0);
 
-   m_DefinitionType.push_back(false);
+  m_DefinitionType.push_back(false);
 
-   m_R.push_back(R);
-   m_Theta.push_back(Theta);
-   m_Phi.push_back(Phi);
-   m_beta_u.push_back(beta_u);
-   m_beta_v.push_back(beta_v);
-   m_beta_w.push_back(beta_w);
-   m_wSi.push_back(wSi);
-   m_wSiLi.push_back(wSiLi);
-   m_wCsI.push_back(wCsI);
+  m_R.push_back(R);
+  m_Theta.push_back(Theta);
+  m_Phi.push_back(Phi);
+  m_beta_u.push_back(beta_u);
+  m_beta_v.push_back(beta_v);
+  m_beta_w.push_back(beta_w);
+  m_wSi.push_back(wSi);
+  m_wSiLi.push_back(wSiLi);
+  m_wCsI.push_back(wCsI);
 
-   m_X1_Y1     .push_back(empty) ;
-   m_X128_Y1   .push_back(empty) ;
-   m_X1_Y128   .push_back(empty) ;
-   m_X128_Y128 .push_back(empty) ;
+  m_X1_Y1     .push_back(empty) ;
+  m_X128_Y1   .push_back(empty) ;
+  m_X1_Y128   .push_back(empty) ;
+  m_X128_Y128 .push_back(empty) ;
 
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void MUST2Array::VolumeMaker( G4int TelescopeNumber,
-                              G4ThreeVector MMpos,
-                              G4RotationMatrix* MMrot,
-                              bool wSi,
-                              bool wSiLi,
-                              bool wCsI,
-                              G4LogicalVolume* world)
+    G4ThreeVector MMpos,
+    G4RotationMatrix* MMrot,
+    bool wSi,
+    bool wSiLi,
+    bool wCsI,
+    G4LogicalVolume* world)
 {
-   G4double NbrTelescopes = TelescopeNumber;
-   G4String DetectorNumber;
-   std::ostringstream Number;
-   Number << NbrTelescopes ;
-   DetectorNumber = Number.str();
+  G4double NbrTelescopes = TelescopeNumber;
+  G4String DetectorNumber;
+  std::ostringstream Number;
+  Number << NbrTelescopes ;
+  DetectorNumber = Number.str();
+
+  ////////////////////////////////////////////////////////////////
+  ////////////// Starting Volume Definition //////////////////////
+  ////////////////////////////////////////////////////////////////
+  G4Trd*           solidMM = new G4Trd("MUST2Telescope" + DetectorNumber, 0.5*FaceFront, 0.5*FaceBack, 0.5*FaceFront, 0.5*FaceBack, 0.5*Length);
+  G4LogicalVolume* logicMM = new G4LogicalVolume(solidMM, m_MaterialIron, "MUST2Telescope" + DetectorNumber, 0, 0, 0);
+  G4String Name = "MUST2Telescope" + DetectorNumber ;
 
-////////////////////////////////////////////////////////////////
-////////////// Starting Volume Definition //////////////////////
-////////////////////////////////////////////////////////////////
+  new G4PVPlacement(	G4Transform3D(*MMrot, MMpos),
+      logicMM               ,
+      Name                  ,
+      world                 ,
+      false                 ,
+      0                     );
 
+  if (m_non_sensitive_part_visiualisation){
+    G4VisAttributes* FrameVisAtt = new G4VisAttributes(G4Colour(0.80, 0.80, 0.80));
+    FrameVisAtt->SetForceWireframe(true);
+    logicMM->SetVisAttributes(FrameVisAtt)  ;
+  }
+  else                          logicMM->SetVisAttributes(G4VisAttributes::Invisible)               ;
 
-   G4Trd*           solidMM = new G4Trd("MUST2Telescope" + DetectorNumber, 0.5*FaceFront, 0.5*FaceBack, 0.5*FaceFront, 0.5*FaceBack, 0.5*Length);
-   G4LogicalVolume* logicMM = new G4LogicalVolume(solidMM, m_MaterialIron, "MUST2Telescope" + DetectorNumber, 0, 0, 0);
+  G4ThreeVector positionVacBox = G4ThreeVector(0, 0, VacBox_PosZ);
 
-   G4String Name = "MUST2Telescope" + DetectorNumber ;
+  G4Trd*           solidVacBox = new G4Trd("solidVacBox", 0.5*SiliconFace, 0.5*CsIFaceFront, 0.5*SiliconFace, 0.5*CsIFaceFront, 0.5*VacBoxThickness);
+  G4LogicalVolume* logicVacBox = new G4LogicalVolume(solidVacBox, m_MaterialVacuum, "logicVacBox", 0, 0, 0);
 
 
-   new G4PVPlacement(	G4Transform3D(*MMrot, MMpos)      ,
-									         	logicMM                           ,
-									         	Name                              ,
-									         	world                             ,
-									         	false                             ,
-									         	0                                 );
+  new G4PVPlacement(0, positionVacBox, logicVacBox, Name + "_VacBox", logicMM, false, 0);
 
+  logicVacBox->SetVisAttributes(G4VisAttributes::Invisible);
+ 
+  G4VisAttributes* SiliconVisAtt = new G4VisAttributes(G4Colour(0.3, 0.3, 0.3)) ;
 
+  ////////////////////////////////////////////////////////////////
+  /////////////////Si Strip Construction//////////////////////////
+  ////////////////////////////////////////////////////////////////
 
-   if (m_non_sensitive_part_visiualisation) logicMM->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)))  ;
-   else                          logicMM->SetVisAttributes(G4VisAttributes::Invisible)               ;
+  if (wSi) {
+    G4ThreeVector positionAluStripFront = G4ThreeVector(0, 0, AluStripFront_PosZ);
+    G4ThreeVector positionAluStripBack  = G4ThreeVector(0, 0, AluStripBack_PosZ);
 
-   G4ThreeVector positionVacBox = G4ThreeVector(0, 0, VacBox_PosZ);
+    G4Box*           solidAluStrip = new G4Box("AluBox", 0.5*SiliconFace, 0.5*SiliconFace, 0.5*AluStripThickness);
+    G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, m_MaterialAluminium, "logicAluStrip", 0, 0, 0);
 
-   G4Trd*           solidVacBox = new G4Trd("solidVacBox", 0.5*SiliconFace, 0.5*CsIFaceFront, 0.5*SiliconFace, 0.5*CsIFaceFront, 0.5*VacBoxThickness);
-   G4LogicalVolume* logicVacBox = new G4LogicalVolume(solidVacBox, m_MaterialVacuum, "logicVacBox", 0, 0, 0);
+    new G4PVPlacement(0, positionAluStripFront, logicAluStrip, Name + "_AluStripFront", logicMM, false, 0);
+    new G4PVPlacement(0, positionAluStripBack, logicAluStrip, Name + "_AluStripBack", logicMM, false, 0);
 
-   new G4PVPlacement(0, positionVacBox, logicVacBox, Name + "_VacBox", logicMM, false, 0);
+    logicAluStrip->SetVisAttributes(G4VisAttributes::Invisible);
 
-   logicVacBox->SetVisAttributes(G4VisAttributes::Invisible);
+    G4ThreeVector  positionSilicon = G4ThreeVector(0, 0, Silicon_PosZ);
 
-////////////////////////////////////////////////////////////////
-/////////////////Si Strip Construction//////////////////////////
-////////////////////////////////////////////////////////////////
+    G4Box*           solidSilicon = new G4Box("solidSilicon", 0.5*SiliconFace, 0.5*SiliconFace, 0.5*SiliconThickness);
+    G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, m_MaterialSilicon, "logicSilicon", 0, 0, 0);
 
-   if (wSi) {
-      G4ThreeVector positionAluStripFront = G4ThreeVector(0, 0, AluStripFront_PosZ);
-      G4ThreeVector positionAluStripBack  = G4ThreeVector(0, 0, AluStripBack_PosZ);
+    new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicMM, false, 0);
 
-      G4Box*           solidAluStrip = new G4Box("AluBox", 0.5*SiliconFace, 0.5*SiliconFace, 0.5*AluStripThickness);
-      G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, m_MaterialAluminium, "logicAluStrip", 0, 0, 0);
 
-      new G4PVPlacement(0, positionAluStripFront, logicAluStrip, Name + "_AluStripFront", logicMM, false, 0);
-      new G4PVPlacement(0, positionAluStripBack, logicAluStrip, Name + "_AluStripBack", logicMM, false, 0);
+    ///Set Silicon strip sensible
+    logicSilicon->SetSensitiveDetector(m_StripScorer);
+     
+    ///Visualisation of Silicon Strip
+    logicSilicon->SetVisAttributes(SiliconVisAtt)                        ;
+  }
+
+  ////////////////////////////////////////////////////////////////
+  //////////////////// SiLi  Construction ////////////////////////
+  ////////////////////////////////////////////////////////////////
 
-      logicAluStrip->SetVisAttributes(G4VisAttributes::Invisible);
+  if (wSiLi) {
+    G4double SiLiSpace = 8 * mm;
+    G4RotationMatrix* rotSiLi = new G4RotationMatrix(0,0,0); 
+    G4Box* solidSiLi = new G4Box("SiLi", 0.5*SiliconFace+0.5*SiLiSpace, 0.5*SiliconFace, 0.5*SiLiThickness);
+    G4LogicalVolume* logicSiLi = new G4LogicalVolume(solidSiLi, m_MaterialAluminium, Name + "_SiLi" , 0, 0, 0);
 
-      G4ThreeVector  positionSilicon = G4ThreeVector(0, 0, Silicon_PosZ);
+    logicSiLi->SetVisAttributes(G4VisAttributes::Invisible);
 
-      G4Box*           solidSilicon = new G4Box("solidSilicon", 0.5*SiliconFace, 0.5*SiliconFace, 0.5*SiliconThickness);
-      G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, m_MaterialSilicon, "logicSilicon", 0, 0, 0);
+    new G4PVPlacement(  G4Transform3D(*rotSiLi, G4ThreeVector(0,0,0) ) 	,
+        logicSiLi ,
+        Name + "_SiLi",
+        logicVacBox ,
+        false ,
+        0);
 
-      new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicMM, false, 0);
+    // SiLi are placed inside of the VacBox...
+    // Left/Right define when looking to detector from Si to CsI
+    G4double SiLi_HighY_Upper 	= 19.86 * mm;
+    G4double SiLi_HighY_Center = 25.39 * mm;
+    G4double SiLi_WidthX_Left  = 22.85 * mm;
+    G4double SiLi_WidthX_Right = 24.9  * mm;
+    G4double SiLi_ShiftX    	= 0.775 * mm;
 
+    //	SiLi are organized by two group of 8 Up(9 to 15) and Down(1 to 8).
+    G4ThreeVector ShiftSiLiUp 	 = G4ThreeVector(-0.25 * SiliconFace - 0.5 * SiLiSpace, 0, 0)	;
+    G4ThreeVector ShiftSiLiDown  = G4ThreeVector(0.25  * SiliconFace + 0.5 * SiLiSpace, 0, 0)	;
 
-      ///Set Silicon strip sensible
-      logicSilicon->SetSensitiveDetector(m_StripScorer);
+    // SiLi : left side of SiLi detector
+    G4Box* solidSiLi_LT  = new G4Box("SiLi_LT"  , 0.5*SiLi_WidthX_Left  , 0.5*SiLi_HighY_Upper   , 0.5*SiLiThickness);
+    G4Box* solidSiLi_RT  = new G4Box("SiLi_RT"  , 0.5*SiLi_WidthX_Right , 0.5*SiLi_HighY_Upper   , 0.5*SiLiThickness);
+    G4Box* solidSiLi_LC1 = new G4Box("SiLi_LC1" , 0.5*SiLi_WidthX_Left  , 0.5*SiLi_HighY_Center  , 0.5*SiLiThickness);
+    G4Box* solidSiLi_RC1 = new G4Box("SiLi_RC1" , 0.5*SiLi_WidthX_Right , 0.5*SiLi_HighY_Center  , 0.5*SiLiThickness);
+    G4Box* solidSiLi_LB  = new G4Box("SiLi_LB"  , 0.5*SiLi_WidthX_Left  , 0.5*SiLi_HighY_Upper   , 0.5*SiLiThickness);
+    G4Box* solidSiLi_RB  = new G4Box("SiLi_RB"  , 0.5*SiLi_WidthX_Right , 0.5*SiLi_HighY_Upper   , 0.5*SiLiThickness);
+    G4Box* solidSiLi_LC2 = new G4Box("SiLi_LC2" , 0.5*SiLi_WidthX_Left  , 0.5*SiLi_HighY_Center  , 0.5*SiLiThickness);
+    G4Box* solidSiLi_RC2 = new G4Box("SiLi_RC2" , 0.5*SiLi_WidthX_Right , 0.5*SiLi_HighY_Center  , 0.5*SiLiThickness);
 
-      ///Visualisation of Silicon Strip
-      G4VisAttributes* SiliconVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.5)) ;
-      logicSilicon->SetVisAttributes(SiliconVisAtt)                        ;
-   }
+    G4LogicalVolume* logicSiLi_LT    = new G4LogicalVolume(solidSiLi_LT   , m_MaterialSilicon , "SiLi_LT"  , 0 , 0 , 0);
+    G4LogicalVolume* logicSiLi_RT    = new G4LogicalVolume(solidSiLi_RT   , m_MaterialSilicon , "SiLi_RT"  , 0 , 0 , 0);
+    G4LogicalVolume* logicSiLi_LC1   = new G4LogicalVolume(solidSiLi_LC1  , m_MaterialSilicon , "SiLi_LC1" , 0 , 0 , 0);
+    G4LogicalVolume* logicSiLi_RC1   = new G4LogicalVolume(solidSiLi_RC1  , m_MaterialSilicon , "SiLi_RC1" , 0 , 0 , 0);
+    G4LogicalVolume* logicSiLi_LB    = new G4LogicalVolume(solidSiLi_LB   , m_MaterialSilicon , "SiLi_LB"  , 0 , 0 , 0);
+    G4LogicalVolume* logicSiLi_RB    = new G4LogicalVolume(solidSiLi_RB   , m_MaterialSilicon , "SiLi_RB"  , 0 , 0 , 0);
+    G4LogicalVolume* logicSiLi_LC2   = new G4LogicalVolume(solidSiLi_LC2  , m_MaterialSilicon , "SiLi_LC2" , 0 , 0 , 0);
+    G4LogicalVolume* logicSiLi_RC2   = new G4LogicalVolume(solidSiLi_RC2  , m_MaterialSilicon , "SiLi_RC2" , 0 , 0 , 0);
 
-////////////////////////////////////////////////////////////////
-//////////////////// SiLi  Construction ////////////////////////
-////////////////////////////////////////////////////////////////
+    G4double interSiLi = 0.5 * mm;
 
-   if (wSiLi) {
-      G4double SiLiSpace = 8 * mm;
+    // Top
+    G4ThreeVector positionSiLi_LT_up = G4ThreeVector(  -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX ,
+        0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi,
+        0);
 
-      G4RotationMatrix* rotSiLi = new G4RotationMatrix(0,0,0); 
+    positionSiLi_LT_up += ShiftSiLiUp ;
 
-     // G4Box* solidSiLi = new G4Box("SiLi", 0.5*SiLiFaceX, 0.5*SiLiFaceY, 0.5*SiLiThickness);
-     
-			G4Box* solidSiLi = new G4Box("SiLi", 0.5*SiliconFace+0.5*SiLiSpace, 0.5*SiliconFace, 0.5*SiLiThickness);
-			
-      G4LogicalVolume* logicSiLi = new G4LogicalVolume(solidSiLi, m_MaterialAluminium, Name + "_SiLi" , 0, 0, 0);
-
-			new G4PVPlacement(  G4Transform3D(*rotSiLi, G4ThreeVector(0,0,0) ) 	,
-									               logicSiLi ,
-									               Name + "_SiLi",
-									               logicVacBox ,
-									               false ,
-									               0);
-
-      // SiLi are placed inside of the VacBox...
-      // Left/Right define when looking to detector from Si to CsI
-      G4double SiLi_HighY_Upper 	= 19.86 * mm;
-      G4double SiLi_HighY_Center = 25.39 * mm;
-      G4double SiLi_WidthX_Left  = 22.85 * mm;
-      G4double SiLi_WidthX_Right = 24.9  * mm;
-      G4double SiLi_ShiftX    	= 0.775 * mm;
-
-		//	SiLi are organized by two group of 8 Up(9 to 15) and Down(1 to 8).
-		G4ThreeVector ShiftSiLiUp 	 = G4ThreeVector(-0.25 * SiliconFace - 0.5 * SiLiSpace, 0, 0)	;
-      G4ThreeVector ShiftSiLiDown  = G4ThreeVector(0.25  * SiliconFace + 0.5 * SiLiSpace, 0, 0)	;
-
-      // SiLi : left side of SiLi detector
-      G4Box* solidSiLi_LT  = new G4Box("SiLi_LT"  , 0.5*SiLi_WidthX_Left  , 0.5*SiLi_HighY_Upper   , 0.5*SiLiThickness);
-      G4Box* solidSiLi_RT  = new G4Box("SiLi_RT"  , 0.5*SiLi_WidthX_Right , 0.5*SiLi_HighY_Upper   , 0.5*SiLiThickness);
-      G4Box* solidSiLi_LC1 = new G4Box("SiLi_LC1" , 0.5*SiLi_WidthX_Left  , 0.5*SiLi_HighY_Center  , 0.5*SiLiThickness);
-      G4Box* solidSiLi_RC1 = new G4Box("SiLi_RC1" , 0.5*SiLi_WidthX_Right , 0.5*SiLi_HighY_Center  , 0.5*SiLiThickness);
-      G4Box* solidSiLi_LB  = new G4Box("SiLi_LB"  , 0.5*SiLi_WidthX_Left  , 0.5*SiLi_HighY_Upper   , 0.5*SiLiThickness);
-      G4Box* solidSiLi_RB  = new G4Box("SiLi_RB"  , 0.5*SiLi_WidthX_Right , 0.5*SiLi_HighY_Upper   , 0.5*SiLiThickness);
-      G4Box* solidSiLi_LC2 = new G4Box("SiLi_LC2" , 0.5*SiLi_WidthX_Left  , 0.5*SiLi_HighY_Center  , 0.5*SiLiThickness);
-      G4Box* solidSiLi_RC2 = new G4Box("SiLi_RC2" , 0.5*SiLi_WidthX_Right , 0.5*SiLi_HighY_Center  , 0.5*SiLiThickness);
-
-      G4LogicalVolume* logicSiLi_LT    = new G4LogicalVolume(solidSiLi_LT   , m_MaterialSilicon , "SiLi_LT"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_RT    = new G4LogicalVolume(solidSiLi_RT   , m_MaterialSilicon , "SiLi_RT"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_LC1   = new G4LogicalVolume(solidSiLi_LC1  , m_MaterialSilicon , "SiLi_LC1" , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_RC1   = new G4LogicalVolume(solidSiLi_RC1  , m_MaterialSilicon , "SiLi_RC1" , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_LB    = new G4LogicalVolume(solidSiLi_LB   , m_MaterialSilicon , "SiLi_LB"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_RB    = new G4LogicalVolume(solidSiLi_RB   , m_MaterialSilicon , "SiLi_RB"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_LC2   = new G4LogicalVolume(solidSiLi_LC2  , m_MaterialSilicon , "SiLi_LC2" , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_RC2   = new G4LogicalVolume(solidSiLi_RC2  , m_MaterialSilicon , "SiLi_RC2" , 0 , 0 , 0);
-
-      G4double interSiLi = 0.5 * mm;
-
-      // Top
-      G4ThreeVector positionSiLi_LT_up = G4ThreeVector(  -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX ,
-                                                         0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi,
-                                                         0);
-
-		positionSiLi_LT_up += ShiftSiLiUp ;
-
-      G4ThreeVector positionSiLi_RT_up = G4ThreeVector(  0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
-                                                         0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi,
-                                                         0);
-
-		positionSiLi_RT_up += ShiftSiLiUp ;
-			
-      G4ThreeVector positionSiLi_LC1_up = G4ThreeVector( -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX ,
-                                                         0.5 * SiLi_HighY_Center + 0.5 * interSiLi,
-                                                         0);
-
-		positionSiLi_LC1_up += ShiftSiLiUp ;
-
-      G4ThreeVector positionSiLi_RC1_up = G4ThreeVector( 0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
-                                                         0.5 * SiLi_HighY_Center + 0.5 * interSiLi,
-                                                         0);
-
-		positionSiLi_RC1_up += ShiftSiLiUp ;
-
-      G4ThreeVector positionSiLi_LB_up = G4ThreeVector(  -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX ,
-                                                         -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi ,
-                                                         0);
-
-		positionSiLi_LB_up += ShiftSiLiUp ;
-
-      G4ThreeVector positionSiLi_RB_up = G4ThreeVector(  0.5 * SiLi_WidthX_Right - SiLi_ShiftX ,
-                                                         -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi ,
-                                                         0);
-
-		positionSiLi_RB_up += ShiftSiLiUp ;
-
-      G4ThreeVector positionSiLi_LC2_up = G4ThreeVector( -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX ,
-                                                         -0.5 * SiLi_HighY_Center - 0.5 * interSiLi,
-                                                         0);
-
-		positionSiLi_LC2_up += ShiftSiLiUp ;
-
-      G4ThreeVector positionSiLi_RC2_up = G4ThreeVector( 0.5 * SiLi_WidthX_Right - SiLi_ShiftX ,
-                                                         -0.5 * SiLi_HighY_Center - 0.5 * interSiLi  ,
-                                                         0);
-  
-		positionSiLi_RC2_up += ShiftSiLiUp ;
-          
-            
-       // Down
-      G4ThreeVector positionSiLi_LT_down = G4ThreeVector(   -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX,
-                                                            0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi,
-                                                            0);
-
-		positionSiLi_LT_down += ShiftSiLiDown ;
-
-      G4ThreeVector positionSiLi_RT_down = G4ThreeVector(   0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
-                                                            0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi,
-                                                            0);
-
-		positionSiLi_RT_down += ShiftSiLiDown ;
-
-      G4ThreeVector positionSiLi_LC1_down = G4ThreeVector(  -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX,
-                                                            0.5 * SiLi_HighY_Center + 0.5 * interSiLi,
-                                                            0);
-
-		positionSiLi_LC1_down += ShiftSiLiDown ;
-
-      G4ThreeVector positionSiLi_RC1_down = G4ThreeVector(  0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
-                                                            0.5 * SiLi_HighY_Center + 0.5 * interSiLi ,
-                                                            0);
+    G4ThreeVector positionSiLi_RT_up = G4ThreeVector(  0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
+        0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi,
+        0);
+
+    positionSiLi_RT_up += ShiftSiLiUp ;
+
+    G4ThreeVector positionSiLi_LC1_up = G4ThreeVector( -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX ,
+        0.5 * SiLi_HighY_Center + 0.5 * interSiLi,
+        0);
+
+    positionSiLi_LC1_up += ShiftSiLiUp ;
+
+    G4ThreeVector positionSiLi_RC1_up = G4ThreeVector( 0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
+        0.5 * SiLi_HighY_Center + 0.5 * interSiLi,
+        0);
+
+    positionSiLi_RC1_up += ShiftSiLiUp ;
+
+    G4ThreeVector positionSiLi_LB_up = G4ThreeVector(  -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX ,
+        -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi ,
+        0);
+
+    positionSiLi_LB_up += ShiftSiLiUp ;
+
+    G4ThreeVector positionSiLi_RB_up = G4ThreeVector(  0.5 * SiLi_WidthX_Right - SiLi_ShiftX ,
+        -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi ,
+        0);
+
+    positionSiLi_RB_up += ShiftSiLiUp ;
+
+    G4ThreeVector positionSiLi_LC2_up = G4ThreeVector( -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX ,
+        -0.5 * SiLi_HighY_Center - 0.5 * interSiLi,
+        0);
+
+    positionSiLi_LC2_up += ShiftSiLiUp ;
+
+    G4ThreeVector positionSiLi_RC2_up = G4ThreeVector( 0.5 * SiLi_WidthX_Right - SiLi_ShiftX ,
+        -0.5 * SiLi_HighY_Center - 0.5 * interSiLi  ,
+        0);
+
+    positionSiLi_RC2_up += ShiftSiLiUp ;
+
+
+    // Down
+    G4ThreeVector positionSiLi_LT_down = G4ThreeVector(   -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX,
+        0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi,
+        0);
+
+    positionSiLi_LT_down += ShiftSiLiDown ;
 
-		positionSiLi_RC1_down += ShiftSiLiDown ;
+    G4ThreeVector positionSiLi_RT_down = G4ThreeVector(   0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
+        0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi,
+        0);
 
-      G4ThreeVector positionSiLi_LB_down = G4ThreeVector(   -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX,
-                                                            -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi,
-                                                            0);
+    positionSiLi_RT_down += ShiftSiLiDown ;
 
-		positionSiLi_LB_down += ShiftSiLiDown ;
+    G4ThreeVector positionSiLi_LC1_down = G4ThreeVector(  -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX,
+        0.5 * SiLi_HighY_Center + 0.5 * interSiLi,
+        0);
 
-      G4ThreeVector positionSiLi_RB_down = G4ThreeVector(   0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
-                                                            -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi,
-                                                            0);
+    positionSiLi_LC1_down += ShiftSiLiDown ;
 
-		positionSiLi_RB_down += ShiftSiLiDown ;
+    G4ThreeVector positionSiLi_RC1_down = G4ThreeVector(  0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
+        0.5 * SiLi_HighY_Center + 0.5 * interSiLi ,
+        0);
 
-      G4ThreeVector positionSiLi_LC2_down = G4ThreeVector(  -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX,
-                                                            -0.5 * SiLi_HighY_Center - 0.5 * interSiLi,
-                                                            0);
+    positionSiLi_RC1_down += ShiftSiLiDown ;
 
-		positionSiLi_LC2_down += ShiftSiLiDown ;
+    G4ThreeVector positionSiLi_LB_down = G4ThreeVector(   -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX,
+        -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi,
+        0);
 
-      G4ThreeVector positionSiLi_RC2_down = G4ThreeVector(  0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
-                                                            -0.5 * SiLi_HighY_Center - 0.5 * interSiLi,
-                                                            0);
-            
-		positionSiLi_RC2_down += ShiftSiLiDown ;
-            
-			
-			// up
-      new G4PVPlacement(0 , positionSiLi_LT_up  , logicSiLi_LT  , Name + "_SiLi_Pad9"   , logicSiLi , false , 0)  ;
-      new G4PVPlacement(0 , positionSiLi_RT_up  , logicSiLi_RT  , Name + "_SiLi_Pad10"  , logicSiLi , false , 0)  ;
-      new G4PVPlacement(0 , positionSiLi_LC1_up , logicSiLi_LC1 , Name + "_SiLi_Pad11" 	, logicSiLi , false , 0);
-      new G4PVPlacement(0 , positionSiLi_RC1_up , logicSiLi_RC1 , Name + "_SiLi_Pad12" 	, logicSiLi , false , 0);
+    positionSiLi_LB_down += ShiftSiLiDown ;
 
-      new G4PVPlacement(0 , positionSiLi_LB_up  , logicSiLi_LB  , Name + "_SiLi_Pad16"  , logicSiLi , false , 0)  ;
-      new G4PVPlacement(0 , positionSiLi_RB_up  , logicSiLi_RB  , Name + "_SiLi_Pad15"  , logicSiLi , false , 0)  ;
-      new G4PVPlacement(0 , positionSiLi_LC2_up , logicSiLi_LC2 , Name + "_SiLi_Pad14" 	, logicSiLi , false , 0);
-      new G4PVPlacement(0 , positionSiLi_RC2_up , logicSiLi_RC2 , Name + "_SiLi_Pad13" 	, logicSiLi , false , 0);
+    G4ThreeVector positionSiLi_RB_down = G4ThreeVector(   0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
+        -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi,
+        0);
 
-			
-			// down
-      new G4PVPlacement(0 , positionSiLi_LT_down  , logicSiLi_LT  , Name + "_SiLi_Pad2"  , logicSiLi , false , 0) ;
-      new G4PVPlacement(0 , positionSiLi_RT_down  , logicSiLi_RT  , Name + "_SiLi_Pad1"  , logicSiLi , false , 0) ;
-      new G4PVPlacement(0 , positionSiLi_LC1_down , logicSiLi_LC1 , Name + "_SiLi_Pad4" 	, logicSiLi , false , 0) ;
-      new G4PVPlacement(0 , positionSiLi_RC1_down , logicSiLi_RC1 , Name + "_SiLi_Pad3" 	, logicSiLi , false , 0) ;
+    positionSiLi_RB_down += ShiftSiLiDown ;
 
-      new G4PVPlacement(0 , positionSiLi_LB_down  , logicSiLi_LB  , Name + "_SiLi_Pad7"  , logicSiLi , false , 0) ;
-      new G4PVPlacement(0 , positionSiLi_RB_down  , logicSiLi_RB  , Name + "_SiLi_Pad8"  , logicSiLi , false , 0) ;
-      new G4PVPlacement(0 , positionSiLi_LC2_down , logicSiLi_LC2 , Name + "_SiLi_Pad5" 	, logicSiLi , false , 0) ;
-      new G4PVPlacement(0 , positionSiLi_RC2_down , logicSiLi_RC2 , Name + "_SiLi_Pad6" 	, logicSiLi , false , 0) ;
+    G4ThreeVector positionSiLi_LC2_down = G4ThreeVector(  -0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX,
+        -0.5 * SiLi_HighY_Center - 0.5 * interSiLi,
+        0);
 
+    positionSiLi_LC2_down += ShiftSiLiDown ;
 
+    G4ThreeVector positionSiLi_RC2_down = G4ThreeVector(  0.5 * SiLi_WidthX_Right - SiLi_ShiftX,
+        -0.5 * SiLi_HighY_Center - 0.5 * interSiLi,
+        0);
 
-      logicSiLi->SetVisAttributes(G4VisAttributes(G4Colour(1, 1., 1.)));
+    positionSiLi_RC2_down += ShiftSiLiDown ;
 
-      // Set SiLi sensible
-      logicSiLi_LT->SetSensitiveDetector(m_SiLiScorer);
-      logicSiLi_RT->SetSensitiveDetector(m_SiLiScorer);
-      logicSiLi_LC1->SetSensitiveDetector(m_SiLiScorer);
-      logicSiLi_RC1->SetSensitiveDetector(m_SiLiScorer);
 
-      logicSiLi_LB->SetSensitiveDetector(m_SiLiScorer);
-      logicSiLi_RB->SetSensitiveDetector(m_SiLiScorer);
-      logicSiLi_LC2->SetSensitiveDetector(m_SiLiScorer);
-      logicSiLi_RC2->SetSensitiveDetector(m_SiLiScorer);
+    // up
+    new G4PVPlacement(0 , positionSiLi_LT_up  , logicSiLi_LT  , Name + "_SiLi_Pad9"   , logicSiLi , false , 0)  ;
+    new G4PVPlacement(0 , positionSiLi_RT_up  , logicSiLi_RT  , Name + "_SiLi_Pad10"  , logicSiLi , false , 0)  ;
+    new G4PVPlacement(0 , positionSiLi_LC1_up , logicSiLi_LC1 , Name + "_SiLi_Pad11" 	, logicSiLi , false , 0);
+    new G4PVPlacement(0 , positionSiLi_RC1_up , logicSiLi_RC1 , Name + "_SiLi_Pad12" 	, logicSiLi , false , 0);
 
-      // Mark blue a SiLi to see telescope orientation
-      logicSiLi_LT->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
-      logicSiLi_RT->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
-      logicSiLi_LC1->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
-      logicSiLi_RC1->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
+    new G4PVPlacement(0 , positionSiLi_LB_up  , logicSiLi_LB  , Name + "_SiLi_Pad16"  , logicSiLi , false , 0)  ;
+    new G4PVPlacement(0 , positionSiLi_RB_up  , logicSiLi_RB  , Name + "_SiLi_Pad15"  , logicSiLi , false , 0)  ;
+    new G4PVPlacement(0 , positionSiLi_LC2_up , logicSiLi_LC2 , Name + "_SiLi_Pad14" 	, logicSiLi , false , 0);
+    new G4PVPlacement(0 , positionSiLi_RC2_up , logicSiLi_RC2 , Name + "_SiLi_Pad13" 	, logicSiLi , false , 0);
 
-      logicSiLi_LB->SetVisAttributes(G4VisAttributes(G4Colour(0, 0, 1.)));
-      logicSiLi_RB->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
-      logicSiLi_LC2->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
-      logicSiLi_RC2->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
-      
-      
-      delete rotSiLi;
-   }
 
-////////////////////////////////////////////////////////////////
-//////////////////// CsI  Construction//////////////////////////
-////////////////////////////////////////////////////////////////
+    // down
+    new G4PVPlacement(0 , positionSiLi_LT_down  , logicSiLi_LT  , Name + "_SiLi_Pad2"  , logicSiLi , false , 0) ;
+    new G4PVPlacement(0 , positionSiLi_RT_down  , logicSiLi_RT  , Name + "_SiLi_Pad1"  , logicSiLi , false , 0) ;
+    new G4PVPlacement(0 , positionSiLi_LC1_down , logicSiLi_LC1 , Name + "_SiLi_Pad4" 	, logicSiLi , false , 0) ;
+    new G4PVPlacement(0 , positionSiLi_RC1_down , logicSiLi_RC1 , Name + "_SiLi_Pad3" 	, logicSiLi , false , 0) ;
 
-   if (wCsI) {
-   
-      G4ThreeVector positionCsI = G4ThreeVector(0, 0, CsI_PosZ);
-      G4Trd* solidCsI = new G4Trd("csI", 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIThickness);
+    new G4PVPlacement(0 , positionSiLi_LB_down  , logicSiLi_LB  , Name + "_SiLi_Pad7"  , logicSiLi , false , 0) ;
+    new G4PVPlacement(0 , positionSiLi_RB_down  , logicSiLi_RB  , Name + "_SiLi_Pad8"  , logicSiLi , false , 0) ;
+    new G4PVPlacement(0 , positionSiLi_LC2_down , logicSiLi_LC2 , Name + "_SiLi_Pad5" 	, logicSiLi , false , 0) ;
+    new G4PVPlacement(0 , positionSiLi_RC2_down , logicSiLi_RC2 , Name + "_SiLi_Pad6" 	, logicSiLi , false , 0) ;
 
-      G4LogicalVolume* logicCsI = new G4LogicalVolume(solidCsI, m_MaterialAluminium, Name + "_CsI_Mylar", 0, 0, 0);
-      new G4PVPlacement(0, positionCsI, logicCsI, Name + "_CsI_Mylar", logicMM, false, 0);
+    // Set SiLi sensible
+    logicSiLi_LT->SetSensitiveDetector(m_SiLiScorer);
+    logicSiLi_RT->SetSensitiveDetector(m_SiLiScorer);
+    logicSiLi_LC1->SetSensitiveDetector(m_SiLiScorer);
+    logicSiLi_RC1->SetSensitiveDetector(m_SiLiScorer);
 
-      G4ThreeVector   positionMylarCsI = G4ThreeVector(0, 0, MylarCsIThickness * 0.5 - CsIThickness * 0.5);
+    logicSiLi_LB->SetSensitiveDetector(m_SiLiScorer);
+    logicSiLi_RB->SetSensitiveDetector(m_SiLiScorer);
+    logicSiLi_LC2->SetSensitiveDetector(m_SiLiScorer);
+    logicSiLi_RC2->SetSensitiveDetector(m_SiLiScorer);
 
-      G4Box*           solidMylarCsI = new G4Box("MylarCsIBox", 0.5*CsIFaceFront, 0.5*CsIFaceFront, 0.5*MylarCsIThickness);
-      G4LogicalVolume* logicMylarCsI = new G4LogicalVolume(solidMylarCsI, m_MaterialMyl, Name + "_CsI_Mylar", 0, 0, 0);
+    // Mark blue a SiLi to see telescope orientation
+    G4VisAttributes* SiLiVisAtt = new G4VisAttributes(G4Colour(0.3, 1, 0.3));
 
-      new G4PVPlacement(0, positionMylarCsI, logicMylarCsI, Name + "_CsI_Mylar", logicCsI, false, 0);
+    logicSiLi_LT->SetVisAttributes(SiLiVisAtt);
+    logicSiLi_RT->SetVisAttributes(SiLiVisAtt);
+    logicSiLi_LC1->SetVisAttributes(SiLiVisAtt);
+    logicSiLi_RC1->SetVisAttributes(SiLiVisAtt);
 
+    logicSiLi_LB->SetVisAttributes(SiLiVisAtt);
+    logicSiLi_RB->SetVisAttributes(SiLiVisAtt);
+    logicSiLi_LC2->SetVisAttributes(SiLiVisAtt);
+    logicSiLi_RC2->SetVisAttributes(SiLiVisAtt);
 
-      logicCsI->SetVisAttributes(G4VisAttributes::Invisible);
-      logicMylarCsI->SetVisAttributes(G4VisAttributes::Invisible);
 
-      // Cristal1
-      G4Trap* solidCristal1 = new G4Trap("Cristal1", 40.*mm / 2., 6.693896*deg, 41.97814*deg, 33.1*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 26.9*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal1 = new G4LogicalVolume(solidCristal1, m_MaterialCsI, Name + "_CsI_Cristal1", 0, 0, 0);
+    delete rotSiLi;
+  }
 
-      // Cristal2
-      G4Trap* solidCristal2 = new G4Trap("Cristal2", 40.*mm / 2., 17.8836*deg, (74.3122 + 180)*deg, 43.49*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 31.0377*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal2 = new G4LogicalVolume(solidCristal2, m_MaterialCsI, Name + "_CsI_Cristal2", 0, 0, 0);
+  ////////////////////////////////////////////////////////////////
+  //////////////////// CsI  Construction//////////////////////////
+  ////////////////////////////////////////////////////////////////
 
-      // Cristal3
-      G4Trap* solidCristal3 = new G4Trap("Cristal3", 40.*mm / 2., 18.243*deg, 13.5988*deg, 33.11*mm / 2., 39.25*mm / 2., 39.25*mm / 2., 0.*deg, 26.91*mm / 2., 27.58*mm / 2., 27.58*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal3 = new G4LogicalVolume(solidCristal3, m_MaterialCsI, Name + "_CsI_Cristal3", 0, 0, 0);
+  if (wCsI) {
 
-      // Cristal4
+    G4ThreeVector positionCsI = G4ThreeVector(0, 0, CsI_PosZ);
+    G4Trd* solidCsI = new G4Trd("csI", 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIThickness);
 
-      G4Trap* solidCristal4 = new G4Trap("Cristal4", 40.*mm / 2., 24.0482*deg, 44.1148*deg, 43.49*mm / 2., 39.19*mm / 2., 39.19*mm / 2., 0.*deg, 31.04*mm / 2., 27.52*mm / 2., 27.52*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal4 = new G4LogicalVolume(solidCristal4, m_MaterialCsI, Name + "_CsI_Cristal4", 0, 0, 0);
+    G4LogicalVolume* logicCsI = new G4LogicalVolume(solidCsI, m_MaterialAluminium, Name + "_CsI_Mylar", 0, 0, 0);
+    new G4PVPlacement(0, positionCsI, logicCsI, Name + "_CsI_Mylar", logicMM, false, 0);
 
+    G4ThreeVector   positionMylarCsI = G4ThreeVector(0, 0, MylarCsIThickness * 0.5 - CsIThickness * 0.5);
 
-      // Cristal1s
+    G4Box*           solidMylarCsI = new G4Box("MylarCsIBox", 0.5*CsIFaceFront, 0.5*CsIFaceFront, 0.5*MylarCsIThickness);
+    G4LogicalVolume* logicMylarCsI = new G4LogicalVolume(solidMylarCsI, m_MaterialMyl, Name + "_CsI_Mylar", 0, 0, 0);
 
-      G4Trap* solidCristal1s = new G4Trap("Cristal1s", 40.*mm / 2., 6.693896*deg, -41.97814*deg, 33.1*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 26.9*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal1s = new G4LogicalVolume(solidCristal1s, m_MaterialCsI, Name + "_CsI_Cristal1s", 0, 0, 0);
+    new G4PVPlacement(0, positionMylarCsI, logicMylarCsI, Name + "_CsI_Mylar", logicCsI, false, 0);
 
-      // Cristal2s
 
-      G4Trap* solidCristal2s = new G4Trap("Cristal2s", 40.*mm / 2., 17.8836*deg, -(74.3122 + 180)*deg, 43.49*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 31.0377*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal2s = new G4LogicalVolume(solidCristal2s, m_MaterialCsI, Name + "_CsI_Cristal2s", 0, 0, 0);
+    logicCsI->SetVisAttributes(G4VisAttributes::Invisible);
+    logicMylarCsI->SetVisAttributes(G4VisAttributes::Invisible);
 
-      // Cristal3s
+    // Cristal1
+    G4Trap* solidCristal1 = new G4Trap("Cristal1", 40.*mm / 2., 6.693896*deg, 41.97814*deg, 33.1*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 26.9*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
+    G4LogicalVolume* logicCristal1 = new G4LogicalVolume(solidCristal1, m_MaterialCsI, Name + "_CsI_Cristal1", 0, 0, 0);
 
-      G4Trap* solidCristal3s = new G4Trap("Cristal3s", 40.*mm / 2., 18.243*deg, -13.5988*deg, 33.11*mm / 2., 39.25*mm / 2., 39.25*mm / 2., 0.*deg, 26.91*mm / 2., 27.58*mm / 2., 27.58*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal3s = new G4LogicalVolume(solidCristal3s, m_MaterialCsI, Name + "_CsI_Cristal3s", 0, 0, 0);
+    // Cristal2
+    G4Trap* solidCristal2 = new G4Trap("Cristal2", 40.*mm / 2., 17.8836*deg, (74.3122 + 180)*deg, 43.49*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 31.0377*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
+    G4LogicalVolume* logicCristal2 = new G4LogicalVolume(solidCristal2, m_MaterialCsI, Name + "_CsI_Cristal2", 0, 0, 0);
 
-      // Cristal4s
+    // Cristal3
+    G4Trap* solidCristal3 = new G4Trap("Cristal3", 40.*mm / 2., 18.243*deg, 13.5988*deg, 33.11*mm / 2., 39.25*mm / 2., 39.25*mm / 2., 0.*deg, 26.91*mm / 2., 27.58*mm / 2., 27.58*mm / 2., 0.*deg);
+    G4LogicalVolume* logicCristal3 = new G4LogicalVolume(solidCristal3, m_MaterialCsI, Name + "_CsI_Cristal3", 0, 0, 0);
 
-      G4Trap* solidCristal4s = new G4Trap("Cristal4s", 40.*mm / 2., 24.0482*deg, -44.1148*deg, 43.49*mm / 2., 39.19*mm / 2., 39.19*mm / 2., 0.*deg, 31.04*mm / 2., 27.52*mm / 2., 27.52*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal4s = new G4LogicalVolume(solidCristal4s, m_MaterialCsI, Name + "_CsI_Cristal4s", 0, 0, 0);
-      //to see telescope orientation
-      G4LogicalVolume* logicCristal4sbis = new G4LogicalVolume(solidCristal4s, m_MaterialCsI, Name + "_CsI_Cristal4s", 0, 0, 0);
+    // Cristal4
 
+    G4Trap* solidCristal4 = new G4Trap("Cristal4", 40.*mm / 2., 24.0482*deg, 44.1148*deg, 43.49*mm / 2., 39.19*mm / 2., 39.19*mm / 2., 0.*deg, 31.04*mm / 2., 27.52*mm / 2., 27.52*mm / 2., 0.*deg);
+    G4LogicalVolume* logicCristal4 = new G4LogicalVolume(solidCristal4, m_MaterialCsI, Name + "_CsI_Cristal4", 0, 0, 0);
 
-      G4double XEdge1 = 16.96 * mm + DistInterCsI * 0.5;
-      G4double YEdge1 = 15.01 * mm + DistInterCsI * 0.5;
-      G4double XEdge2 = 50.63 * mm + DistInterCsI * 1.5;
-      G4double YEdge2 = 48.67 * mm + DistInterCsI * 1.5;
 
-      G4ThreeVector positionCristal1 = G4ThreeVector(-XEdge1, YEdge1, 0 * mm);
-      G4ThreeVector positionCristal2 = G4ThreeVector(-XEdge1, YEdge2, 0);
-      G4ThreeVector positionCristal3 = G4ThreeVector(-XEdge2, YEdge1, 0);
-      G4ThreeVector positionCristal4 = G4ThreeVector(-XEdge2, YEdge2, 0);
+    // Cristal1s
 
-      new G4PVPlacement(Rotation(180., 0., 0.), positionCristal1, logicCristal1, Name + "_CsI_Cristal1", logicCsI, false, 1);
-      new G4PVPlacement(Rotation(180., 0., 180.), positionCristal2, logicCristal2, Name + "_CsI_Cristal2", logicCsI, false, 2);
-      new G4PVPlacement(Rotation(180., 0., 0.), positionCristal3, logicCristal3, Name + "_CsI_Cristal3", logicCsI, false, 3);
-      new G4PVPlacement(Rotation(180., 0., 0.), positionCristal4, logicCristal4, Name + "_CsI_Cristal4", logicCsI, false, 4);
+    G4Trap* solidCristal1s = new G4Trap("Cristal1s", 40.*mm / 2., 6.693896*deg, -41.97814*deg, 33.1*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 26.9*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
+    G4LogicalVolume* logicCristal1s = new G4LogicalVolume(solidCristal1s, m_MaterialCsI, Name + "_CsI_Cristal1s", 0, 0, 0);
 
+    // Cristal2s
 
-      G4ThreeVector positionCristal1b = G4ThreeVector(XEdge1, -YEdge1, 0 * mm);
-      G4ThreeVector positionCristal2b = G4ThreeVector(XEdge1, -YEdge2, 0);
-      G4ThreeVector positionCristal3b = G4ThreeVector(XEdge2, -YEdge1, 0);
-      G4ThreeVector positionCristal4b = G4ThreeVector(XEdge2, -YEdge2, 0);
+    G4Trap* solidCristal2s = new G4Trap("Cristal2s", 40.*mm / 2., 17.8836*deg, -(74.3122 + 180)*deg, 43.49*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 31.0377*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
+    G4LogicalVolume* logicCristal2s = new G4LogicalVolume(solidCristal2s, m_MaterialCsI, Name + "_CsI_Cristal2s", 0, 0, 0);
 
-      new G4PVPlacement(Rotation(180., 0., 180.), positionCristal1b, logicCristal1, Name + "_CsI_Cristal5", logicCsI, false, 5);
-      new G4PVPlacement(Rotation(180., 0., 0.), positionCristal2b, logicCristal2, Name + "_CsI_Cristal6", logicCsI, false, 6);
-      new G4PVPlacement(Rotation(180., 0., 180.), positionCristal3b, logicCristal3, Name + "_CsI_Cristal7", logicCsI, false, 7);
-      new G4PVPlacement(Rotation(180., 0., 180.), positionCristal4b, logicCristal4, Name + "_CsI_Cristal8", logicCsI, false, 8);
+    // Cristal3s
 
-      G4ThreeVector positionCristal1s = G4ThreeVector(-XEdge1, -YEdge1, 0 * mm);
-      G4ThreeVector positionCristal2s = G4ThreeVector(-XEdge1, -YEdge2, 0);
-      G4ThreeVector positionCristal3s = G4ThreeVector(-XEdge2, -YEdge1, 0);
-      G4ThreeVector positionCristal4s = G4ThreeVector(-XEdge2, -YEdge2, 0);
+    G4Trap* solidCristal3s = new G4Trap("Cristal3s", 40.*mm / 2., 18.243*deg, -13.5988*deg, 33.11*mm / 2., 39.25*mm / 2., 39.25*mm / 2., 0.*deg, 26.91*mm / 2., 27.58*mm / 2., 27.58*mm / 2., 0.*deg);
+    G4LogicalVolume* logicCristal3s = new G4LogicalVolume(solidCristal3s, m_MaterialCsI, Name + "_CsI_Cristal3s", 0, 0, 0);
 
-      new G4PVPlacement(Rotation(180., 0., 0.), positionCristal1s, logicCristal1s, Name + "_CsI_Cristal9", logicCsI, false, 9);
-      new G4PVPlacement(Rotation(180., 0., 180.), positionCristal2s, logicCristal2s, Name + "_CsI_Cristal10", logicCsI, false, 10);
-      new G4PVPlacement(Rotation(180., 0., 0.), positionCristal3s, logicCristal3s, Name + "_CsI_Cristal11", logicCsI, false, 11);
-      new G4PVPlacement(Rotation(180., 0., 0.), positionCristal4s, logicCristal4sbis, Name + "_CsI_Cristal12", logicCsI, false, 12);
+    // Cristal4s
 
-      G4ThreeVector positionCristal1sb = G4ThreeVector(XEdge1, YEdge1, 0 * mm);
-      G4ThreeVector positionCristal2sb = G4ThreeVector(XEdge1, YEdge2, 0);
-      G4ThreeVector positionCristal3sb = G4ThreeVector(XEdge2, YEdge1, 0);
-      G4ThreeVector positionCristal4sb = G4ThreeVector(XEdge2, YEdge2, 0);
+    G4Trap* solidCristal4s = new G4Trap("Cristal4s", 40.*mm / 2., 24.0482*deg, -44.1148*deg, 43.49*mm / 2., 39.19*mm / 2., 39.19*mm / 2., 0.*deg, 31.04*mm / 2., 27.52*mm / 2., 27.52*mm / 2., 0.*deg);
+    G4LogicalVolume* logicCristal4s = new G4LogicalVolume(solidCristal4s, m_MaterialCsI, Name + "_CsI_Cristal4s", 0, 0, 0);
 
-      new G4PVPlacement(Rotation(180., 0., 180.), positionCristal1sb, logicCristal1s, Name + "_CsI_Cristal13", logicCsI, false, 13);
-      new G4PVPlacement(Rotation(180, 0, 0), positionCristal2sb, logicCristal2s, Name + "_CsI_Cristal14", logicCsI, false, 14);
-      new G4PVPlacement(Rotation(180., 0., 180.), positionCristal3sb, logicCristal3s, Name + "_CsI_Cristal15", logicCsI, false, 15);
-      new G4PVPlacement(Rotation(180., 0., 180.), positionCristal4sb, logicCristal4s, Name + "_CsI_Cristal16", logicCsI, false, 16);
+    G4double XEdge1 = 16.96 * mm + DistInterCsI * 0.5;
+    G4double YEdge1 = 15.01 * mm + DistInterCsI * 0.5;
+    G4double XEdge2 = 50.63 * mm + DistInterCsI * 1.5;
+    G4double YEdge2 = 48.67 * mm + DistInterCsI * 1.5;
 
-      ///Set CsI sensible
-      logicCristal1->SetSensitiveDetector(m_CsIScorer);
-      logicCristal2->SetSensitiveDetector(m_CsIScorer);
-      logicCristal3->SetSensitiveDetector(m_CsIScorer);
-      logicCristal4->SetSensitiveDetector(m_CsIScorer);
+    G4ThreeVector positionCristal1 = G4ThreeVector(-XEdge1, YEdge1, 0 * mm);
+    G4ThreeVector positionCristal2 = G4ThreeVector(-XEdge1, YEdge2, 0);
+    G4ThreeVector positionCristal3 = G4ThreeVector(-XEdge2, YEdge1, 0);
+    G4ThreeVector positionCristal4 = G4ThreeVector(-XEdge2, YEdge2, 0);
 
-      logicCristal1s->SetSensitiveDetector(m_CsIScorer);
-      logicCristal2s->SetSensitiveDetector(m_CsIScorer);
-      logicCristal3s->SetSensitiveDetector(m_CsIScorer);
-      logicCristal4s->SetSensitiveDetector(m_CsIScorer);
-      logicCristal4sbis->SetSensitiveDetector(m_CsIScorer);
+    new G4PVPlacement(Rotation(180., 0., 0.), positionCristal1, logicCristal1, Name + "_CsI_Cristal1", logicCsI, false, 1);
+    new G4PVPlacement(Rotation(180., 0., 180.), positionCristal2, logicCristal2, Name + "_CsI_Cristal2", logicCsI, false, 2);
+    new G4PVPlacement(Rotation(180., 0., 0.), positionCristal3, logicCristal3, Name + "_CsI_Cristal3", logicCsI, false, 3);
+    new G4PVPlacement(Rotation(180., 0., 0.), positionCristal4, logicCristal4, Name + "_CsI_Cristal4", logicCsI, false, 4);
 
-      //Mark blue a CsI corner crystal to see telescope orientation
-      logicCristal4sbis->SetVisAttributes(G4VisAttributes(G4Colour(0, 0, 1.)));
-   }
+
+    G4ThreeVector positionCristal1b = G4ThreeVector(XEdge1, -YEdge1, 0 * mm);
+    G4ThreeVector positionCristal2b = G4ThreeVector(XEdge1, -YEdge2, 0);
+    G4ThreeVector positionCristal3b = G4ThreeVector(XEdge2, -YEdge1, 0);
+    G4ThreeVector positionCristal4b = G4ThreeVector(XEdge2, -YEdge2, 0);
+
+    new G4PVPlacement(Rotation(180., 0., 180.), positionCristal1b, logicCristal1, Name + "_CsI_Cristal5", logicCsI, false, 5);
+    new G4PVPlacement(Rotation(180., 0., 0.), positionCristal2b, logicCristal2, Name + "_CsI_Cristal6", logicCsI, false, 6);
+    new G4PVPlacement(Rotation(180., 0., 180.), positionCristal3b, logicCristal3, Name + "_CsI_Cristal7", logicCsI, false, 7);
+    new G4PVPlacement(Rotation(180., 0., 180.), positionCristal4b, logicCristal4, Name + "_CsI_Cristal8", logicCsI, false, 8);
+
+    G4ThreeVector positionCristal1s = G4ThreeVector(-XEdge1, -YEdge1, 0 * mm);
+    G4ThreeVector positionCristal2s = G4ThreeVector(-XEdge1, -YEdge2, 0);
+    G4ThreeVector positionCristal3s = G4ThreeVector(-XEdge2, -YEdge1, 0);
+    G4ThreeVector positionCristal4s = G4ThreeVector(-XEdge2, -YEdge2, 0);
+
+    new G4PVPlacement(Rotation(180., 0., 0.), positionCristal1s, logicCristal1s, Name + "_CsI_Cristal9", logicCsI, false, 9);
+    new G4PVPlacement(Rotation(180., 0., 180.), positionCristal2s, logicCristal2s, Name + "_CsI_Cristal10", logicCsI, false, 10);
+    new G4PVPlacement(Rotation(180., 0., 0.), positionCristal3s, logicCristal3s, Name + "_CsI_Cristal11", logicCsI, false, 11);
+    new G4PVPlacement(Rotation(180., 0., 0.), positionCristal4s, logicCristal4s, Name + "_CsI_Cristal12", logicCsI, false, 12);
+
+    G4ThreeVector positionCristal1sb = G4ThreeVector(XEdge1, YEdge1, 0 * mm);
+    G4ThreeVector positionCristal2sb = G4ThreeVector(XEdge1, YEdge2, 0);
+    G4ThreeVector positionCristal3sb = G4ThreeVector(XEdge2, YEdge1, 0);
+    G4ThreeVector positionCristal4sb = G4ThreeVector(XEdge2, YEdge2, 0);
+
+    new G4PVPlacement(Rotation(180., 0., 180.), positionCristal1sb, logicCristal1s, Name + "_CsI_Cristal13", logicCsI, false, 13);
+    new G4PVPlacement(Rotation(180, 0, 0), positionCristal2sb, logicCristal2s, Name + "_CsI_Cristal14", logicCsI, false, 14);
+    new G4PVPlacement(Rotation(180., 0., 180.), positionCristal3sb, logicCristal3s, Name + "_CsI_Cristal15", logicCsI, false, 15);
+    new G4PVPlacement(Rotation(180., 0., 180.), positionCristal4sb, logicCristal4s, Name + "_CsI_Cristal16", logicCsI, false, 16);
+
+    ///Set CsI sensible
+    logicCristal1->SetSensitiveDetector(m_CsIScorer);
+    logicCristal2->SetSensitiveDetector(m_CsIScorer);
+    logicCristal3->SetSensitiveDetector(m_CsIScorer);
+    logicCristal4->SetSensitiveDetector(m_CsIScorer);
+
+    logicCristal1s->SetSensitiveDetector(m_CsIScorer);
+    logicCristal2s->SetSensitiveDetector(m_CsIScorer);
+    logicCristal3s->SetSensitiveDetector(m_CsIScorer);
+    logicCristal4s->SetSensitiveDetector(m_CsIScorer);
+
+    //Mark blue a CsI corner crystal to see telescope orientation
+    G4VisAttributes* CsIVisAtt = new G4VisAttributes(G4Colour(1, 0.5, 0));
+    logicCristal1  ->SetVisAttributes(CsIVisAtt);
+    logicCristal2  ->SetVisAttributes(CsIVisAtt);
+    logicCristal3  ->SetVisAttributes(CsIVisAtt);
+    logicCristal4  ->SetVisAttributes(CsIVisAtt);
+    logicCristal1s ->SetVisAttributes(CsIVisAtt);
+    logicCristal2s ->SetVisAttributes(CsIVisAtt);
+    logicCristal3s ->SetVisAttributes(CsIVisAtt);
+    logicCristal4s ->SetVisAttributes(CsIVisAtt);
+
+  }
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -554,872 +552,859 @@ void MUST2Array::VolumeMaker( G4int TelescopeNumber,
 
 // Read stream at Configfile to pick-up parameters of detector (Position,...)
 // Called in DetecorConstruction::ReadDetextorConfiguration Method
-void MUST2Array::ReadConfiguration(string Path)
-{
-   ifstream ConfigFile           ;
-   ConfigFile.open(Path.c_str()) ;
-   string LineBuffer          ;
-   string DataBuffer          ;
-
-   // A:X1_Y1     --> X:1    Y:1
-   // B:X128_Y1   --> X:128  Y:1
-   // C:X1_Y128   --> X:1    Y:128
-   // D:X128_Y128 --> X:128  Y:128
-
-   G4double Ax , Bx , Cx , Dx , Ay , By , Cy , Dy , Az , Bz , Cz , Dz           	;
-   G4ThreeVector A , B , C , D                                          			;
-   G4double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0      ;
-   int SI = 0 , SILI = 0 , CSI = 0                                         			;	
-
-   bool check_A = false ;
-   bool check_C = false  ;
-   bool check_B = false ;
-   bool check_D = false  ;
-
-   bool check_Theta = false   ;
-   bool check_Phi  = false  ;
-   bool check_R     = false   ;
-//   bool check_beta = false  ;
-   
-   bool check_SI = false   ;
-   bool check_SILI  = false  ;
-   bool check_CSI     = false   ;
-   bool check_VIS = false  ;
-   
-   bool ReadingStatus = false ;
-	
-
-   while (!ConfigFile.eof()) {
-      
-      	getline(ConfigFile, LineBuffer);
-
-		//	If line is a Start Up MUST2 bloc, Reading toggle to true      
-      	if (LineBuffer.compare(0, 11, "M2Telescope") == 0) 
-	      	{
-	        	 G4cout << "///" << G4endl           ;
-	       		  G4cout << "Telescope found: " << G4endl   ;        
-	        	 ReadingStatus = true ;
-	        	
-		   	}
-		
-		//	Else don't toggle to Reading Block Status
-		else ReadingStatus = false ;
-		
-		//	Reading Block
-		while(ReadingStatus)
-			{
-				 
-				ConfigFile >> DataBuffer ;
-				//	Comment Line 
-					if(DataBuffer.compare(0, 1, "%") == 0) {
-						 	ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );
-							
-						}
-			
-					//	Finding another telescope (safety), toggle out
-				else if (DataBuffer.compare(0, 11, "M2Telescope") == 0) {
-						cout << "WARNING: Another Telescope is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
-						ReadingStatus = false ;
-						}
-			
-					//	Position method
-					
-		         else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) {
-		            check_A = true;
-		            ConfigFile >> DataBuffer ;
-		            Ax = atof(DataBuffer.c_str()) ;
-		            Ax = Ax * mm ;
-		            ConfigFile >> DataBuffer ;
-		            Ay = atof(DataBuffer.c_str()) ;
-		            Ay = Ay * mm ;
-		            ConfigFile >> DataBuffer ;
-		            Az = atof(DataBuffer.c_str()) ;
-		            Az = Az * mm ;
-
-		            A = G4ThreeVector(Ax, Ay, Az);
-		            cout << "X1 Y1 corner position : " << A << endl;
-		            
-		         }
-
-
-		         else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) {
-		            check_B = true;
-		            ConfigFile >> DataBuffer ;
-		            Bx = atof(DataBuffer.c_str()) ;
-		            Bx = Bx * mm ;
-		            ConfigFile >> DataBuffer ;
-		            By = atof(DataBuffer.c_str()) ;
-		            By = By * mm ;
-		            ConfigFile >> DataBuffer ;
-		            Bz = atof(DataBuffer.c_str()) ;
-		            Bz = Bz * mm ;
-
-		            B = G4ThreeVector(Bx, By, Bz);
-		            cout << "X128 Y1 corner position : " << B << endl;
-		            
-		         }
-		         
-
-		         else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) {
-		            check_C = true;
-		            ConfigFile >> DataBuffer ;
-		            Cx = atof(DataBuffer.c_str()) ;
-		            Cx = Cx * mm ;
-		            ConfigFile >> DataBuffer ;
-		            Cy = atof(DataBuffer.c_str()) ;
-		            Cy = Cy * mm ;
-		            ConfigFile >> DataBuffer ;
-		            Cz = atof(DataBuffer.c_str()) ;
-		            Cz = Cz * mm ;
-
-		            C = G4ThreeVector(Cx, Cy, Cz);
-		            cout << "X1 Y128 corner position : " << C << endl;
-		           
-		         }
-
-		         else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) {
-		            check_D = true;
-		            ConfigFile >> DataBuffer ;
-		            Dx = atof(DataBuffer.c_str()) ;
-		            Dx = Dx * mm ;
-		            ConfigFile >> DataBuffer ;
-		            Dy = atof(DataBuffer.c_str()) ;
-		            Dy = Dy * mm ;
-		            ConfigFile >> DataBuffer ;
-		            Dz = atof(DataBuffer.c_str()) ;
-		            Dz = Dz * mm ;
-
-		            D = G4ThreeVector(Dx, Dy, Dz);
-		            cout << "X128 Y128 corner position : " << D << endl;
-		           
-		         }
-			
-				//	End Position Method
-
-		         //	Angle method
-		         else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
-		            check_Theta = true;
-		            ConfigFile >> DataBuffer ;
-		            Theta = atof(DataBuffer.c_str()) ;
-		            Theta = Theta * deg;
-		            cout << "Theta:  " << Theta / deg << endl;
-		            
-		         }
-
-		         //Angle method
-		         else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
-		            check_Phi = true;
-		            ConfigFile >> DataBuffer ;
-		            Phi = atof(DataBuffer.c_str()) ;
-		            Phi = Phi * deg;
-		            cout << "Phi:  " << Phi / deg << endl;
-		          
-		         }
-
-		         //Angle method
-		         else if (DataBuffer.compare(0, 2, "R=") == 0) {
-		            check_R = true;
-		            ConfigFile >> DataBuffer ;
-		            R = atof(DataBuffer.c_str()) ;
-		            R = R * mm;
-		            cout << "R:  " << R / mm << endl;
-		          
-		         }
-
-		         //Angle method
-		         else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-//		            check_beta = true;
-		            ConfigFile >> DataBuffer ;
-		            beta_u = atof(DataBuffer.c_str()) ;
-		            beta_u = beta_u * deg   ;
-		            ConfigFile >> DataBuffer ;
-		            beta_v = atof(DataBuffer.c_str()) ;
-		            beta_v = beta_v * deg   ;
-		            ConfigFile >> DataBuffer ;
-		            beta_w = atof(DataBuffer.c_str()) ;
-		            beta_w = beta_w * deg   ;
-		            G4cout << "Beta:  " << beta_u / deg << " " << beta_v / deg << " " << beta_w / deg << G4endl  ;
-		            
-		         }
-
-		         //	End Angle Method
-		         
-		         
-		         //	Common part
-		         else if (DataBuffer.compare(0, 3, "SI=") == 0) {
-		         	check_SI = true ;
-		            ConfigFile >> DataBuffer;
-		            SI = atof(DataBuffer.c_str()) ;
-		            G4cout << " SI= " << SI << G4endl ;
-		            
-		         }
-
-		        
-		         else if (DataBuffer.compare(0, 5, "SILI=") == 0) {
-		        	 check_SILI = true ;
-		            ConfigFile >> DataBuffer;
-		            SILI = atof(DataBuffer.c_str()) ;
-		             G4cout << " SILI= " << SILI << G4endl ;
-		            
-		         }
-
-		         
-		         else if (DataBuffer.compare(0, 4, "CSI=") == 0) {
-		         	check_CSI = true ;
-		            ConfigFile >> DataBuffer;
-		            CSI = atof(DataBuffer.c_str()) ;
-		             G4cout << " CSI= " << CSI << G4endl ;
-		            
-		         }
-
-		         
-		         else if (DataBuffer.compare(0, 4, "VIS=") == 0) {
-		         	check_VIS = true ;
-		            ConfigFile >> DataBuffer;
-		            if (DataBuffer.compare(0, 3, "all") == 0) 
-		           		{
-		           			m_non_sensitive_part_visiualisation = true;
-		           			G4cout << " VIS= all" << G4endl ;
-		           		}
-		             
-		             else 
-		           			G4cout << " VIS= Sensible Only" << G4endl ;	             
-		             
-		            
-		         }
-		         
-		          // If no MUST2 Token and no comment, toggle out
-		         else 
-		         	{ReadingStatus = false; G4cout << "other token " << DataBuffer << G4endl ;}
-		         
-		         
-		         
-		         /////////////////////////////////////////////////
-		         //	If All necessary information there, toggle out
-		         if ( ( check_SI && check_SILI && check_CSI && check_VIS ) && ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R) ) ) 
-		         	{ 
-		            	ReadingStatus = false; 
-		            	
-		            	///Add The previously define telescope
-            			//With position method
-		            	if ((check_A && check_B && check_C && check_D) || !(check_Theta && check_Phi && check_R)) 
-		            		{
-				               AddTelescope(  A,
-				                              B,
-				                              C,
-				                              D,
-				                              SI == 1,
-				                              SILI == 1,
-				                              CSI == 1);
-				            }
-		            	
-		            	    //with angle method
-          				  else if ((check_Theta && check_Phi && check_R) || !(check_A && check_B && check_C && check_D)) 
-          				  	{
-					               AddTelescope(  R,
-					                              Theta,
-					                              Phi,
-					                              beta_u,
-					                              beta_v,
-					                              beta_w,
-					                              SI == 1,
-					                              SILI == 1,
-					                              CSI == 1);
-         					}
-							
-								
-			           	check_A = false 	;
-		     				check_C = false  	;
-		     				check_B = false 	;
-		     				check_D = false  	;
-
-	      				check_Theta = false   	;
-	      				check_Phi  = false  	;
-	      				check_R    = false   	;
-//	      				check_beta = false  	;
-	      
-	      				check_SI = false   		;
-	      				check_SILI  = false  	;
-	      				check_CSI   = false   	;
-	      				check_VIS = false  		;	
-					
-		         	}
-			}
-   }
+void MUST2Array::ReadConfiguration(string Path){
+  ifstream ConfigFile           ;
+  ConfigFile.open(Path.c_str()) ;
+  string LineBuffer          ;
+  string DataBuffer          ;
+
+  // A:X1_Y1     --> X:1    Y:1
+  // B:X128_Y1   --> X:128  Y:1
+  // C:X1_Y128   --> X:1    Y:128
+  // D:X128_Y128 --> X:128  Y:128
+
+  G4double Ax , Bx , Cx , Dx , Ay , By , Cy , Dy , Az , Bz , Cz , Dz           	;
+  G4ThreeVector A , B , C , D                                          			;
+  G4double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0      ;
+  int SI = 0 , SILI = 0 , CSI = 0                                         			;	
+
+  bool check_A = false ;
+  bool check_C = false  ;
+  bool check_B = false ;
+  bool check_D = false  ;
+
+  bool check_Theta = false   ;
+  bool check_Phi  = false  ;
+  bool check_R     = false   ;
+  //   bool check_beta = false  ;
+
+  bool check_SI = false   ;
+  bool check_SILI  = false  ;
+  bool check_CSI     = false   ;
+  bool check_VIS = false  ;
+
+  bool ReadingStatus = false ;
+
+
+  while (!ConfigFile.eof()) {
+
+    getline(ConfigFile, LineBuffer);
+
+    //	If line is a Start Up MUST2 bloc, Reading toggle to true      
+    if (LineBuffer.compare(0, 11, "M2Telescope") == 0) 
+    {
+      G4cout << "///" << G4endl           ;
+      G4cout << "Telescope found: " << G4endl   ;        
+      ReadingStatus = true ;
+
+    }
+
+    //	Else don't toggle to Reading Block Status
+    else ReadingStatus = false ;
+
+    //	Reading Block
+    while(ReadingStatus)
+    {
+
+      ConfigFile >> DataBuffer ;
+      //	Comment Line 
+      if(DataBuffer.compare(0, 1, "%") == 0) {
+        ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );
+
+      }
+
+      //	Finding another telescope (safety), toggle out
+      else if (DataBuffer.compare(0, 11, "M2Telescope") == 0) {
+        cout << "WARNING: Another Telescope is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
+        ReadingStatus = false ;
+      }
+
+      //	Position method
+
+      else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) {
+        check_A = true;
+        ConfigFile >> DataBuffer ;
+        Ax = atof(DataBuffer.c_str()) ;
+        Ax = Ax * mm ;
+        ConfigFile >> DataBuffer ;
+        Ay = atof(DataBuffer.c_str()) ;
+        Ay = Ay * mm ;
+        ConfigFile >> DataBuffer ;
+        Az = atof(DataBuffer.c_str()) ;
+        Az = Az * mm ;
+
+        A = G4ThreeVector(Ax, Ay, Az);
+        cout << "X1 Y1 corner position : " << A << endl;
+
+      }
+
+
+      else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) {
+        check_B = true;
+        ConfigFile >> DataBuffer ;
+        Bx = atof(DataBuffer.c_str()) ;
+        Bx = Bx * mm ;
+        ConfigFile >> DataBuffer ;
+        By = atof(DataBuffer.c_str()) ;
+        By = By * mm ;
+        ConfigFile >> DataBuffer ;
+        Bz = atof(DataBuffer.c_str()) ;
+        Bz = Bz * mm ;
+
+        B = G4ThreeVector(Bx, By, Bz);
+        cout << "X128 Y1 corner position : " << B << endl;
+
+      }
+
+
+      else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) {
+        check_C = true;
+        ConfigFile >> DataBuffer ;
+        Cx = atof(DataBuffer.c_str()) ;
+        Cx = Cx * mm ;
+        ConfigFile >> DataBuffer ;
+        Cy = atof(DataBuffer.c_str()) ;
+        Cy = Cy * mm ;
+        ConfigFile >> DataBuffer ;
+        Cz = atof(DataBuffer.c_str()) ;
+        Cz = Cz * mm ;
+
+        C = G4ThreeVector(Cx, Cy, Cz);
+        cout << "X1 Y128 corner position : " << C << endl;
+
+      }
+
+      else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) {
+        check_D = true;
+        ConfigFile >> DataBuffer ;
+        Dx = atof(DataBuffer.c_str()) ;
+        Dx = Dx * mm ;
+        ConfigFile >> DataBuffer ;
+        Dy = atof(DataBuffer.c_str()) ;
+        Dy = Dy * mm ;
+        ConfigFile >> DataBuffer ;
+        Dz = atof(DataBuffer.c_str()) ;
+        Dz = Dz * mm ;
+
+        D = G4ThreeVector(Dx, Dy, Dz);
+        cout << "X128 Y128 corner position : " << D << endl;
+
+      }
+
+      //	End Position Method
+
+      //	Angle method
+      else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
+        check_Theta = true;
+        ConfigFile >> DataBuffer ;
+        Theta = atof(DataBuffer.c_str()) ;
+        Theta = Theta * deg;
+        cout << "Theta:  " << Theta / deg << endl;
+
+      }
+
+      //Angle method
+      else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
+        check_Phi = true;
+        ConfigFile >> DataBuffer ;
+        Phi = atof(DataBuffer.c_str()) ;
+        Phi = Phi * deg;
+        cout << "Phi:  " << Phi / deg << endl;
+
+      }
+
+      //Angle method
+      else if (DataBuffer.compare(0, 2, "R=") == 0) {
+        check_R = true;
+        ConfigFile >> DataBuffer ;
+        R = atof(DataBuffer.c_str()) ;
+        R = R * mm;
+        cout << "R:  " << R / mm << endl;
+
+      }
+
+      //Angle method
+      else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
+        //		            check_beta = true;
+        ConfigFile >> DataBuffer ;
+        beta_u = atof(DataBuffer.c_str()) ;
+        beta_u = beta_u * deg   ;
+        ConfigFile >> DataBuffer ;
+        beta_v = atof(DataBuffer.c_str()) ;
+        beta_v = beta_v * deg   ;
+        ConfigFile >> DataBuffer ;
+        beta_w = atof(DataBuffer.c_str()) ;
+        beta_w = beta_w * deg   ;
+        G4cout << "Beta:  " << beta_u / deg << " " << beta_v / deg << " " << beta_w / deg << G4endl  ;
+
+      }
+
+      //	End Angle Method
+
+
+      //	Common part
+      else if (DataBuffer.compare(0, 3, "SI=") == 0) {
+        check_SI = true ;
+        ConfigFile >> DataBuffer;
+        SI = atof(DataBuffer.c_str()) ;
+        G4cout << " SI= " << SI << G4endl ;
+
+      }
+
+
+      else if (DataBuffer.compare(0, 5, "SILI=") == 0) {
+        check_SILI = true ;
+        ConfigFile >> DataBuffer;
+        SILI = atof(DataBuffer.c_str()) ;
+        G4cout << " SILI= " << SILI << G4endl ;
+
+      }
+
+
+      else if (DataBuffer.compare(0, 4, "CSI=") == 0) {
+        check_CSI = true ;
+        ConfigFile >> DataBuffer;
+        CSI = atof(DataBuffer.c_str()) ;
+        G4cout << " CSI= " << CSI << G4endl ;
+
+      }
+
+
+      else if (DataBuffer.compare(0, 4, "VIS=") == 0) {
+        check_VIS = true ;
+        ConfigFile >> DataBuffer;
+        if (DataBuffer.compare(0, 3, "all") == 0) 
+        {
+          m_non_sensitive_part_visiualisation = true;
+          G4cout << " VIS= all" << G4endl ;
+        }
+
+        else 
+          G4cout << " VIS= Sensible Only" << G4endl ;	             
+
+
+      }
+
+      // If no MUST2 Token and no comment, toggle out
+      else 
+      {ReadingStatus = false; G4cout << "other token " << DataBuffer << G4endl ;}
+
+
+
+      /////////////////////////////////////////////////
+      //	If All necessary information there, toggle out
+      if ( ( check_SI && check_SILI && check_CSI && check_VIS ) && ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R) ) ) 
+      { 
+        ReadingStatus = false; 
+
+        ///Add The previously define telescope
+        //With position method
+        if ((check_A && check_B && check_C && check_D) || !(check_Theta && check_Phi && check_R)) 
+        {
+          AddTelescope(  A,
+              B,
+              C,
+              D,
+              SI == 1,
+              SILI == 1,
+              CSI == 1);
+        }
+
+        //with angle method
+        else if ((check_Theta && check_Phi && check_R) || !(check_A && check_B && check_C && check_D)) 
+        {
+          AddTelescope(  R,
+              Theta,
+              Phi,
+              beta_u,
+              beta_v,
+              beta_w,
+              SI == 1,
+              SILI == 1,
+              CSI == 1);
+        }
+
+
+        check_A = false 	;
+        check_C = false  	;
+        check_B = false 	;
+        check_D = false  	;
+
+        check_Theta = false   	;
+        check_Phi  = false  	;
+        check_R    = false   	;
+        //	      				check_beta = false  	;
+
+        check_SI = false   		;
+        check_SILI  = false  	;
+        check_CSI   = false   	;
+        check_VIS = false  		;	
+
+      }
+    }
+  }
 }
 
 
 // Construct detector and inialise sensitive part.
 // Called After DetecorConstruction::AddDetector Method
-void MUST2Array::ConstructDetector(G4LogicalVolume* world)
-{
-   G4RotationMatrix* MMrot  		= NULL ;
-   G4ThreeVector     MMpos  		= G4ThreeVector(0, 0, 0) ;
-   G4ThreeVector     MMu       	= G4ThreeVector(0, 0, 0) ;
-   G4ThreeVector     MMv       	= G4ThreeVector(0, 0, 0) ;
-   G4ThreeVector     MMw       	= G4ThreeVector(0, 0, 0) ;
-   G4ThreeVector     MMCenter 	= G4ThreeVector(0, 0, 0) ;
-   bool           	Si     		= true ;
-   bool          	 	SiLi   		= true ;
-   bool           	CsI    		= true ;
-
-   G4int NumberOfTelescope = m_DefinitionType.size() ;
-
-   for (G4int i = 0 ; i < NumberOfTelescope ; i++) {
-      // By Point
-      if (m_DefinitionType[i]) {
-         // (u,v,w) unitary vector associated to telescope referencial
-         // (u,v) // to silicon plan
-         // w perpendicular to (u,v) plan and pointing CsI
-         MMu = m_X128_Y1[i] - m_X1_Y1[i]     ;
-         MMu = MMu.unit()              ;
-
-         MMv = m_X1_Y128[i] - m_X1_Y1[i]     ;
-         MMv = MMv.unit()              ;
-          
-         MMw = MMv.cross(MMu)          ;
-        // if (MMw.z() > 0)MMw = MMv.cross(MMu)  ;
-         MMw = MMw.unit()                ;
-         
-         MMCenter = (m_X1_Y1[i] + m_X1_Y128[i] + m_X128_Y1[i] + m_X128_Y128[i]) / 4 ;
-
-         // Passage Matrix from Lab Referential to Telescope Referential
-         MMrot = new G4RotationMatrix(MMv, MMu, MMw);
-         MMpos = MMw * Length * 0.5 + MMCenter ;
-      }
+void MUST2Array::ConstructDetector(G4LogicalVolume* world){
+  G4RotationMatrix* MMrot  		= NULL ;
+  G4ThreeVector     MMpos  		= G4ThreeVector(0, 0, 0) ;
+  G4ThreeVector     MMu       	= G4ThreeVector(0, 0, 0) ;
+  G4ThreeVector     MMv       	= G4ThreeVector(0, 0, 0) ;
+  G4ThreeVector     MMw       	= G4ThreeVector(0, 0, 0) ;
+  G4ThreeVector     MMCenter 	= G4ThreeVector(0, 0, 0) ;
+  bool           	Si     		= true ;
+  bool          	 	SiLi   		= true ;
+  bool           	CsI    		= true ;
+
+  G4int NumberOfTelescope = m_DefinitionType.size() ;
+
+  for (G4int i = 0 ; i < NumberOfTelescope ; i++) {
+    // By Point
+    if (m_DefinitionType[i]) {
+      // (u,v,w) unitary vector associated to telescope referencial
+      // (u,v) // to silicon plan
+      // w perpendicular to (u,v) plan and pointing CsI
+      MMu = m_X128_Y1[i] - m_X1_Y1[i]     ;
+      MMu = MMu.unit()              ;
+
+      MMv = m_X1_Y128[i] - m_X1_Y1[i]     ;
+      MMv = MMv.unit()              ;
+
+      MMw = MMv.cross(MMu)          ;
+      // if (MMw.z() > 0)MMw = MMv.cross(MMu)  ;
+      MMw = MMw.unit()                ;
+
+      MMCenter = (m_X1_Y1[i] + m_X1_Y128[i] + m_X128_Y1[i] + m_X128_Y128[i]) / 4 ;
+
+      // Passage Matrix from Lab Referential to Telescope Referential
+      MMrot = new G4RotationMatrix(MMv, MMu, MMw);
+      MMpos = MMw * Length * 0.5 + MMCenter ;
+    }
 
-      // By Angle
-      else {
-         G4double Theta = m_Theta[i]   ;
-         G4double Phi   = m_Phi[i]  ;
-         
-         // (u,v,w) unitary vector associated to telescope referencial
-         // (u,v) // to silicon plan
-         // w perpendicular to (u,v) plan and pointing ThirdStage
-         // Phi is angle between X axis and projection in (X,Y) plan
-         // Theta is angle between  position vector and z axis
-         G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad) ;
-         G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad) ;
-         G4double wZ = m_R[i] * cos(Theta / rad);
-         MMw = G4ThreeVector(wX, wY, wZ) ;
-
-         // vector corresponding to the center of the module
-         G4ThreeVector CT = MMw;
-
-         // vector parallel to one axis of silicon plane
-         G4double ii = cos(Theta / rad) * cos(Phi / rad);
-         G4double jj = cos(Theta / rad) * sin(Phi / rad);
-         G4double kk = -sin(Theta / rad);
-         G4ThreeVector Y = G4ThreeVector(ii, jj, kk);
-
-         MMw = MMw.unit();
-         MMu = MMw.cross(Y);
-         MMv = MMw.cross(MMu);
-         MMv = MMv.unit();
-         MMu = MMu.unit();
-
-         // Passage Matrix from Lab Referential to Telescope Referential
-         // MUST2
-         MMrot = new G4RotationMatrix(MMu, MMv, MMw);
-         // Telescope is rotate of Beta angle around MMv axis.
-         MMrot->rotate(m_beta_u[i], MMu);
-         MMrot->rotate(m_beta_v[i], MMv);
-         MMrot->rotate(m_beta_w[i], MMw);
-         // translation to place Telescope
-         MMpos = MMw * Length * 0.5 + CT ;
-      }
+    // By Angle
+    else {
+      G4double Theta = m_Theta[i]   ;
+      G4double Phi   = m_Phi[i]  ;
+
+      // (u,v,w) unitary vector associated to telescope referencial
+      // (u,v) // to silicon plan
+      // w perpendicular to (u,v) plan and pointing ThirdStage
+      // Phi is angle between X axis and projection in (X,Y) plan
+      // Theta is angle between  position vector and z axis
+      G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad) ;
+      G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad) ;
+      G4double wZ = m_R[i] * cos(Theta / rad);
+      MMw = G4ThreeVector(wX, wY, wZ) ;
+
+      // vector corresponding to the center of the module
+      G4ThreeVector CT = MMw;
+
+      // vector parallel to one axis of silicon plane
+      G4double ii = cos(Theta / rad) * cos(Phi / rad);
+      G4double jj = cos(Theta / rad) * sin(Phi / rad);
+      G4double kk = -sin(Theta / rad);
+      G4ThreeVector Y = G4ThreeVector(ii, jj, kk);
+
+      MMw = MMw.unit();
+      MMu = MMw.cross(Y);
+      MMv = MMw.cross(MMu);
+      MMv = MMv.unit();
+      MMu = MMu.unit();
+
+      // Passage Matrix from Lab Referential to Telescope Referential
+      // MUST2
+      MMrot = new G4RotationMatrix(MMu, MMv, MMw);
+      // Telescope is rotate of Beta angle around MMv axis.
+      MMrot->rotate(m_beta_u[i], MMu);
+      MMrot->rotate(m_beta_v[i], MMv);
+      MMrot->rotate(m_beta_w[i], MMw);
+      // translation to place Telescope
+      MMpos = MMw * Length * 0.5 + CT ;
+    }
 
-      Si  = m_wSi[i]    ;
-      SiLi = m_wSiLi[i] ;
-      CsI  = m_wCsI[i]  ;
+    Si  = m_wSi[i]    ;
+    SiLi = m_wSiLi[i] ;
+    CsI  = m_wCsI[i]  ;
 
-      VolumeMaker(i + 1 , MMpos , MMrot , Si , SiLi , CsI , world);
-   }
+    VolumeMaker(i + 1 , MMpos , MMrot , Si , SiLi , CsI , world);
+  }
 
-   delete MMrot ;
+  delete MMrot ;
 }
 
 // Add Detector branch to the EventTree.
 // Called After DetecorConstruction::AddDetector Method
 
-void MUST2Array::InitializeRootOutput()
-{
-   RootOutput *pAnalysis = RootOutput::getInstance();
-   TTree *pTree = pAnalysis->GetTree();
-   pTree->Branch("MUST2", "TMust2Data", &m_Event) ;
+void MUST2Array::InitializeRootOutput(){
+  RootOutput *pAnalysis = RootOutput::getInstance();
+  TTree *pTree = pAnalysis->GetTree();
+  pTree->Branch("MUST2", "TMust2Data", &m_Event) ;
 }
 
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void MUST2Array::ReadSensitive(const G4Event* event)
-{
-   G4String DetectorNumber 	;
-   m_Event->Clear()			;
-   
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////// Used to Read Event Map of detector //////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-
-// Si
-	std::map<G4int, G4int*>::iterator DetectorNumber_itr;
-	std::map<G4int, G4double*>::iterator Energy_itr;
-	std::map<G4int, G4double*>::iterator Time_itr;
-	std::map<G4int, G4int*>::iterator X_itr;
-	std::map<G4int, G4int*>::iterator Y_itr;
-	std::map<G4int, G4double*>::iterator Pos_X_itr;
-	std::map<G4int, G4double*>::iterator Pos_Y_itr;
-	std::map<G4int, G4double*>::iterator Pos_Z_itr;
-	std::map<G4int, G4double*>::iterator Ang_Theta_itr;
-	std::map<G4int, G4double*>::iterator Ang_Phi_itr;
-	
-	G4THitsMap<G4int>*	  DetectorNumberHitMap;
-	G4THitsMap<G4double>* EnergyHitMap;
-	G4THitsMap<G4double>* TimeHitMap;
-	G4THitsMap<G4int>* XHitMap;
-	G4THitsMap<G4int>* YHitMap;
-	G4THitsMap<G4double>* PosXHitMap;
-	G4THitsMap<G4double>* PosYHitMap;
-	G4THitsMap<G4double>* PosZHitMap;
-	G4THitsMap<G4double>* AngThetaHitMap;
-	G4THitsMap<G4double>* AngPhiHitMap;
-
-// Si(Li)
-   std::map<G4int, G4double*>::iterator SiLiEnergy_itr;
-   std::map<G4int, G4int*>::iterator SiLiPadNbr_itr;
-   G4THitsMap<G4double>* 				 SiLiEnergyHitMap;
-   G4THitsMap<G4int>* 				    SiLiPadNbrHitMap;
-   
-// CsI
-   std::map<G4int, G4double*>::iterator CsIEnergy_itr;
-   std::map<G4int, G4int*>::iterator    CsICristalNbr_itr;
-   G4THitsMap<G4double>* 				    CsIEnergyHitMap;
-   G4THitsMap<G4int>* 				       CsICristalNbrHitMap;
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-
-    // Read the Scorer associate to the Silicon Strip
-    
-	    //Detector Number
-	    G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/DetectorNumber");
-	    DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID));
-	    DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin();
-	    
-	    //Energy
-	    G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripEnergy") ;
-	    EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID)) ;
-	    Energy_itr = EnergyHitMap->GetMap()->begin();
-
-	    //Time of Flight
-	    G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripTime");
-	    TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID));
-	    Time_itr = TimeHitMap->GetMap()->begin();
-
-	    //Strip Number X
-	    G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripNumberX") ;
-	    XHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID));
-	    X_itr = XHitMap->GetMap()->begin();
-
-	    //Strip Number Y
-	    G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripNumberY");
-	    YHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID));
-	    Y_itr = YHitMap->GetMap()->begin();
-
-	    //Interaction Coordinate X
-	    G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordX");
-	    PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID));
-	    Pos_X_itr = PosXHitMap->GetMap()->begin();
-
-	    //Interaction Coordinate Y
-	    G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordY");
-	    PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID));
-	    Pos_Y_itr = PosYHitMap->GetMap()->begin();
-
-	    //Interaction Coordinate Z
-	    G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordZ");
-	    PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID));
-	    Pos_Z_itr = PosXHitMap->GetMap()->begin();
-
-	    //Interaction Coordinate Angle Theta
-	    G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordAngTheta");
-	    AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID));
-	    Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
-
-	    //Interaction Coordinate Angle Phi
-	    G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordAngPhi");	
-	    AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID));
-	    Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();			
-
-    // Read the Scorer associate to the SiLi
-        //Energy
-        G4int SiLiEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_SiLiScorer/SiLiEnergy");
-        SiLiEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(SiLiEnergyCollectionID));
-        SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin();
-
-        G4int SiLiPadNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_SiLiScorer/SiLiPadNbr");
-        SiLiPadNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(SiLiPadNbrCollectionID));
-        SiLiPadNbr_itr = SiLiPadNbrHitMap->GetMap()->begin();
-        
-    // Read the Scorer associate to the CsI crystal
-        //Energy
-        G4int CsIEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_CsIScorer/CsIEnergy");
-        CsIEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIEnergyCollectionID));
-        CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin();
-        
-        G4int CsICristalNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_CsIScorer/CsICristalNbr");
-        CsICristalNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsICristalNbrCollectionID));
-        CsICristalNbr_itr = CsICristalNbrHitMap->GetMap()->begin();
-
-
-/////////////////////
-
-  	G4int sizeN = DetectorNumberHitMap->entries();
-    G4int sizeE = EnergyHitMap->entries();
-    G4int sizeT = TimeHitMap->entries();
-    G4int sizeX = XHitMap->entries();
-    G4int sizeY = YHitMap->entries();
-
- // Loop on Telescope Number entry
-    for (G4int l = 0 ; l < sizeN ; l++) {
-        G4int N         =  *(DetectorNumber_itr->second);
-        G4int NTrackID  =   DetectorNumber_itr->first - N;
-        
-      
-        if (N > 0) {
-        
-	         m_Event->SetMMStripXEDetectorNbr(N) ;
-	         m_Event->SetMMStripYEDetectorNbr(N) ;
-	         m_Event->SetMMStripXTDetectorNbr(N) ;
-	         m_Event->SetMMStripYTDetectorNbr(N) ;
-
-			//  Energy
-	        Energy_itr = EnergyHitMap->GetMap()->begin();
-	        for (G4int h = 0 ; h < sizeE ; h++) {
-	            G4int ETrackID  =   Energy_itr->first - N;
-	            G4double E      = *(Energy_itr->second);
-
-	            if (ETrackID == NTrackID) {
-	                 	m_Event->SetMMStripXEEnergy(RandGauss::shoot(E, ResoStrip));
-	        					m_Event->SetMMStripYEEnergy(RandGauss::shoot(E, ResoStrip));
-	            }
-	            
-	            Energy_itr++;
-	        	}
-
-
-	        //  Time
-	        Time_itr = TimeHitMap->GetMap()->begin();
-	        for (G4int h = 0 ; h < sizeT ; h++) {
-	            G4int TTrackID  =   Time_itr->first - N;
-	            G4double T      = *(Time_itr->second);
-
-	            if (TTrackID == NTrackID) {
-	                m_Event->SetMMStripXTTime(RandGauss::shoot(T, ResoTimeMust)) ;
-	                m_Event->SetMMStripYTTime(RandGauss::shoot(T, ResoTimeMust)) ;
-	            }
-	            
-	            Time_itr++;
-	        }
-
-
-					// X
-	        X_itr = XHitMap->GetMap()->begin();
-	        for (G4int h = 0 ; h < sizeX ; h++) {
-	            G4int XTrackID  =   X_itr->first  - N;
-	            G4int X         = *(X_itr->second);
-	            if (XTrackID == NTrackID) {
-	                m_Event->SetMMStripXEStripNbr(X);
-	                m_Event->SetMMStripXTStripNbr(X);
-	            }
-
-	            X_itr++;
-	        }
-
-	        // Y
-	        Y_itr = YHitMap->GetMap()->begin()  ;
-	        for (G4int h = 0 ; h < sizeY ; h++) {
-	            G4int YTrackID  =   Y_itr->first  - N ;
-	            G4int Y         = *(Y_itr->second);
-	            if (YTrackID == NTrackID) {
-	                m_Event->SetMMStripYEStripNbr(Y);
-	                m_Event->SetMMStripYTStripNbr(Y);
-	            }
-
-	            Y_itr++;
-	        }
-
-	        // Pos X
-	        Pos_X_itr = PosXHitMap->GetMap()->begin();
-	        for (G4int h = 0 ; h < PosXHitMap->entries() ; h++) {
-	            G4int PosXTrackID =   Pos_X_itr->first  - N ;
-	            G4double PosX     = *(Pos_X_itr->second) ;
-	            if (PosXTrackID == NTrackID) {
-	                ms_InterCoord->SetDetectedPositionX(PosX) ;
-	            }
-	            Pos_X_itr++;
-	        }
-
-	        // Pos Y
-	        Pos_Y_itr = PosYHitMap->GetMap()->begin();
-	        for (G4int h = 0 ; h < PosYHitMap->entries() ; h++) {
-	            G4int PosYTrackID =   Pos_Y_itr->first  - N ;
-	            G4double PosY     = *(Pos_Y_itr->second) ;
-	            if (PosYTrackID == NTrackID) {
-	                ms_InterCoord->SetDetectedPositionY(PosY) ;
-	            }
-	            Pos_Y_itr++;
-	        }
-
-	        // Pos Z
-	        Pos_Z_itr = PosZHitMap->GetMap()->begin();
-	        for (G4int h = 0 ; h < PosZHitMap->entries() ; h++) {
-	            G4int PosZTrackID =   Pos_Z_itr->first   - N  ;
-	            G4double PosZ     = *(Pos_Z_itr->second)      ;
-	            if (PosZTrackID == NTrackID) {
-	                ms_InterCoord->SetDetectedPositionZ(PosZ) ;
-	            }
-	            Pos_Z_itr++;
-	        }
-
-	        // Angle Theta
-	        Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
-	        for (G4int h = 0 ; h < AngThetaHitMap->entries(); h++) {
-	            G4int AngThetaTrackID =   Ang_Theta_itr->first  - N   ;
-	            G4double AngTheta     = *(Ang_Theta_itr->second)      ;
-	            if (AngThetaTrackID == NTrackID) {
-	                ms_InterCoord->SetDetectedAngleTheta(AngTheta) ;
-	            }
-	            Ang_Theta_itr++;
-	        }
-
-	        // Angle Phi
-	        Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
-	        for (G4int h = 0 ; h < AngPhiHitMap->entries() ; h++) {
-	            G4int AngPhiTrackID =   Ang_Phi_itr->first  - N   ;
-	            G4double AngPhi     = *(Ang_Phi_itr->second)      ;
-	            if (AngPhiTrackID == NTrackID) {
-	                ms_InterCoord->SetDetectedAnglePhi(AngPhi) ;
-	            }
-	            Ang_Phi_itr++;
-	        }
-
-
-					// Si(Li)
-	        SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin() ;
-	        SiLiPadNbr_itr = SiLiPadNbrHitMap->GetMap()->begin() ;
-	        
-	        for (G4int h = 0 ; h < SiLiEnergyHitMap->entries() ; h++) {
-	            G4int SiLiEnergyTrackID =   SiLiEnergy_itr->first  -N ;
-	            G4double SiLiEnergy     = *(SiLiEnergy_itr->second)   ;
-
-							G4int PadNbr = *(SiLiPadNbr_itr->second)   ;
-
-	            if (SiLiEnergyTrackID == NTrackID) {
-	                m_Event->SetMMSiLiEEnergy(RandGauss::shoot(SiLiEnergy, ResoSiLi)) ;
-	                m_Event->SetMMSiLiEPadNbr(PadNbr);
-	                m_Event->SetMMSiLiTPadNbr(PadNbr);
-	                m_Event->SetMMSiLiTTime(1);
-	                m_Event->SetMMSiLiTDetectorNbr(N);
-	                m_Event->SetMMSiLiEDetectorNbr(N);
-	            }
-
-	            SiLiEnergy_itr++	;
-	            SiLiPadNbr_itr++	;
-	        }
-	        
-
-	        // CsI    
-	        CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin()  				;
-	        CsICristalNbr_itr = CsICristalNbrHitMap->GetMap()->begin()  ;
-	        
-	        for (G4int h = 0 ; h < CsIEnergyHitMap->entries() ; h++) {
-	            G4int CsIEnergyTrackID  =   CsIEnergy_itr->first-N ;
-	            G4double CsIEnergy      = *(CsIEnergy_itr->second) ;
-		
-							G4int CristalNumber  = *(CsICristalNbr_itr->second) ;
-	            if (CsIEnergyTrackID == NTrackID) {
-	                m_Event->SetMMCsIEEnergy(RandGauss::shoot(CsIEnergy, ResoCsI*sqrt(CsIEnergy)));
-	                m_Event->SetMMCsIECristalNbr(CristalNumber);
-	                m_Event->SetMMCsITCristalNbr(CristalNumber);
-	                m_Event->SetMMCsITTime(1);
-	                m_Event->SetMMCsITDetectorNbr(N);
-	                m_Event->SetMMCsIEDetectorNbr(N);
-	            }
-
-	            CsIEnergy_itr++			;
-	            CsICristalNbr_itr++	;
-	        }
+void MUST2Array::ReadSensitive(const G4Event* event){
+  G4String DetectorNumber 	;
+  m_Event->Clear()			;
+
+  //////////////////////////////////////////////////////////////////////////////////////
+  //////////////////////// Used to Read Event Map of detector //////////////////////////
+  //////////////////////////////////////////////////////////////////////////////////////
+
+  // Si
+  std::map<G4int, G4int*>::iterator DetectorNumber_itr;
+  std::map<G4int, G4double*>::iterator Energy_itr;
+  std::map<G4int, G4double*>::iterator Time_itr;
+  std::map<G4int, G4int*>::iterator X_itr;
+  std::map<G4int, G4int*>::iterator Y_itr;
+  std::map<G4int, G4double*>::iterator Pos_X_itr;
+  std::map<G4int, G4double*>::iterator Pos_Y_itr;
+  std::map<G4int, G4double*>::iterator Pos_Z_itr;
+  std::map<G4int, G4double*>::iterator Ang_Theta_itr;
+  std::map<G4int, G4double*>::iterator Ang_Phi_itr;
+
+  G4THitsMap<G4int>*	  DetectorNumberHitMap;
+  G4THitsMap<G4double>* EnergyHitMap;
+  G4THitsMap<G4double>* TimeHitMap;
+  G4THitsMap<G4int>* XHitMap;
+  G4THitsMap<G4int>* YHitMap;
+  G4THitsMap<G4double>* PosXHitMap;
+  G4THitsMap<G4double>* PosYHitMap;
+  G4THitsMap<G4double>* PosZHitMap;
+  G4THitsMap<G4double>* AngThetaHitMap;
+  G4THitsMap<G4double>* AngPhiHitMap;
+
+  // Si(Li)
+  std::map<G4int, G4double*>::iterator SiLiEnergy_itr;
+  std::map<G4int, G4int*>::iterator SiLiPadNbr_itr;
+  G4THitsMap<G4double>* 				 SiLiEnergyHitMap;
+  G4THitsMap<G4int>* 				    SiLiPadNbrHitMap;
+
+  // CsI
+  std::map<G4int, G4double*>::iterator CsIEnergy_itr;
+  std::map<G4int, G4int*>::iterator    CsICristalNbr_itr;
+  G4THitsMap<G4double>* 				    CsIEnergyHitMap;
+  G4THitsMap<G4int>* 				       CsICristalNbrHitMap;
+  //////////////////////////////////////////////////////////////////////////////////////
+  //////////////////////////////////////////////////////////////////////////////////////
+
+  // Read the Scorer associate to the Silicon Strip
+
+  //Detector Number
+  G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/DetectorNumber");
+  DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID));
+  DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin();
+
+  //Energy
+  G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripEnergy") ;
+  EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID)) ;
+  Energy_itr = EnergyHitMap->GetMap()->begin();
+
+  //Time of Flight
+  G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripTime");
+  TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID));
+  Time_itr = TimeHitMap->GetMap()->begin();
+
+  //Strip Number X
+  G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripNumberX") ;
+  XHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID));
+  X_itr = XHitMap->GetMap()->begin();
+
+  //Strip Number Y
+  G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripNumberY");
+  YHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID));
+  Y_itr = YHitMap->GetMap()->begin();
+
+  //Interaction Coordinate X
+  G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordX");
+  PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID));
+  Pos_X_itr = PosXHitMap->GetMap()->begin();
+
+  //Interaction Coordinate Y
+  G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordY");
+  PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID));
+  Pos_Y_itr = PosYHitMap->GetMap()->begin();
+
+  //Interaction Coordinate Z
+  G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordZ");
+  PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID));
+  Pos_Z_itr = PosXHitMap->GetMap()->begin();
+
+  //Interaction Coordinate Angle Theta
+  G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordAngTheta");
+  AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID));
+  Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
+
+  //Interaction Coordinate Angle Phi
+  G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordAngPhi");	
+  AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID));
+  Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();			
+
+  // Read the Scorer associate to the SiLi
+  //Energy
+  G4int SiLiEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_SiLiScorer/SiLiEnergy");
+  SiLiEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(SiLiEnergyCollectionID));
+  SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin();
+
+  G4int SiLiPadNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_SiLiScorer/SiLiPadNbr");
+  SiLiPadNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(SiLiPadNbrCollectionID));
+  SiLiPadNbr_itr = SiLiPadNbrHitMap->GetMap()->begin();
+
+  // Read the Scorer associate to the CsI crystal
+  //Energy
+  G4int CsIEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_CsIScorer/CsIEnergy");
+  CsIEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIEnergyCollectionID));
+  CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin();
+
+  G4int CsICristalNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_CsIScorer/CsICristalNbr");
+  CsICristalNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsICristalNbrCollectionID));
+  CsICristalNbr_itr = CsICristalNbrHitMap->GetMap()->begin();
+
+
+  /////////////////////
+
+  G4int sizeN = DetectorNumberHitMap->entries();
+  G4int sizeE = EnergyHitMap->entries();
+  G4int sizeT = TimeHitMap->entries();
+  G4int sizeX = XHitMap->entries();
+  G4int sizeY = YHitMap->entries();
+
+  // Loop on Telescope Number entry
+  for (G4int l = 0 ; l < sizeN ; l++) {
+    G4int N         =  *(DetectorNumber_itr->second);
+    G4int NTrackID  =   DetectorNumber_itr->first - N;
+
+
+    if (N > 0) {
+
+      m_Event->SetMMStripXEDetectorNbr(N) ;
+      m_Event->SetMMStripYEDetectorNbr(N) ;
+      m_Event->SetMMStripXTDetectorNbr(N) ;
+      m_Event->SetMMStripYTDetectorNbr(N) ;
+
+      //  Energy
+      Energy_itr = EnergyHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < sizeE ; h++) {
+        G4int ETrackID  =   Energy_itr->first - N;
+        G4double E      = *(Energy_itr->second);
+
+        if (ETrackID == NTrackID) {
+          m_Event->SetMMStripXEEnergy(RandGauss::shoot(E, ResoStrip));
+          m_Event->SetMMStripYEEnergy(RandGauss::shoot(E, ResoStrip));
+        }
+
+        Energy_itr++;
+      }
 
 
+      //  Time
+      Time_itr = TimeHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < sizeT ; h++) {
+        G4int TTrackID  =   Time_itr->first - N;
+        G4double T      = *(Time_itr->second);
 
+        if (TTrackID == NTrackID) {
+          m_Event->SetMMStripXTTime(RandGauss::shoot(T, ResoTimeMust)) ;
+          m_Event->SetMMStripYTTime(RandGauss::shoot(T, ResoTimeMust)) ;
         }
 
-        DetectorNumber_itr++;
+        Time_itr++;
+      }
+
+
+      // X
+      X_itr = XHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < sizeX ; h++) {
+        G4int XTrackID  =   X_itr->first  - N;
+        G4int X         = *(X_itr->second);
+        if (XTrackID == NTrackID) {
+          m_Event->SetMMStripXEStripNbr(X);
+          m_Event->SetMMStripXTStripNbr(X);
+        }
+
+        X_itr++;
+      }
+
+      // Y
+      Y_itr = YHitMap->GetMap()->begin()  ;
+      for (G4int h = 0 ; h < sizeY ; h++) {
+        G4int YTrackID  =   Y_itr->first  - N ;
+        G4int Y         = *(Y_itr->second);
+        if (YTrackID == NTrackID) {
+          m_Event->SetMMStripYEStripNbr(Y);
+          m_Event->SetMMStripYTStripNbr(Y);
+        }
+
+        Y_itr++;
+      }
+
+      // Pos X
+      Pos_X_itr = PosXHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < PosXHitMap->entries() ; h++) {
+        G4int PosXTrackID =   Pos_X_itr->first  - N ;
+        G4double PosX     = *(Pos_X_itr->second) ;
+        if (PosXTrackID == NTrackID) {
+          ms_InterCoord->SetDetectedPositionX(PosX) ;
+        }
+        Pos_X_itr++;
+      }
+
+      // Pos Y
+      Pos_Y_itr = PosYHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < PosYHitMap->entries() ; h++) {
+        G4int PosYTrackID =   Pos_Y_itr->first  - N ;
+        G4double PosY     = *(Pos_Y_itr->second) ;
+        if (PosYTrackID == NTrackID) {
+          ms_InterCoord->SetDetectedPositionY(PosY) ;
+        }
+        Pos_Y_itr++;
+      }
+
+      // Pos Z
+      Pos_Z_itr = PosZHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < PosZHitMap->entries() ; h++) {
+        G4int PosZTrackID =   Pos_Z_itr->first   - N  ;
+        G4double PosZ     = *(Pos_Z_itr->second)      ;
+        if (PosZTrackID == NTrackID) {
+          ms_InterCoord->SetDetectedPositionZ(PosZ) ;
+        }
+        Pos_Z_itr++;
+      }
+
+      // Angle Theta
+      Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < AngThetaHitMap->entries(); h++) {
+        G4int AngThetaTrackID =   Ang_Theta_itr->first  - N   ;
+        G4double AngTheta     = *(Ang_Theta_itr->second)      ;
+        if (AngThetaTrackID == NTrackID) {
+          ms_InterCoord->SetDetectedAngleTheta(AngTheta) ;
+        }
+        Ang_Theta_itr++;
+      }
+
+      // Angle Phi
+      Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < AngPhiHitMap->entries() ; h++) {
+        G4int AngPhiTrackID =   Ang_Phi_itr->first  - N   ;
+        G4double AngPhi     = *(Ang_Phi_itr->second)      ;
+        if (AngPhiTrackID == NTrackID) {
+          ms_InterCoord->SetDetectedAnglePhi(AngPhi) ;
+        }
+        Ang_Phi_itr++;
+      }
+
+      // Si(Li)
+      SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin() ;
+      SiLiPadNbr_itr = SiLiPadNbrHitMap->GetMap()->begin() ;
+
+      for (G4int h = 0 ; h < SiLiEnergyHitMap->entries() ; h++) {
+        G4int SiLiEnergyTrackID =   SiLiEnergy_itr->first  -N ;
+        G4double SiLiEnergy     = *(SiLiEnergy_itr->second)   ;
+
+        G4int PadNbr = *(SiLiPadNbr_itr->second)   ;
+
+        if (SiLiEnergyTrackID == NTrackID) {
+          m_Event->SetMMSiLiEEnergy(RandGauss::shoot(SiLiEnergy, ResoSiLi)) ;
+          m_Event->SetMMSiLiEPadNbr(PadNbr);
+          m_Event->SetMMSiLiTPadNbr(PadNbr);
+          m_Event->SetMMSiLiTTime(1);
+          m_Event->SetMMSiLiTDetectorNbr(N);
+          m_Event->SetMMSiLiEDetectorNbr(N);
+        }
+
+        SiLiEnergy_itr++	;
+        SiLiPadNbr_itr++	;
+      }
+
+      // CsI    
+      CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin()  				;
+      CsICristalNbr_itr = CsICristalNbrHitMap->GetMap()->begin()  ;
+
+      for (G4int h = 0 ; h < CsIEnergyHitMap->entries() ; h++) {
+        G4int CsIEnergyTrackID  =   CsIEnergy_itr->first-N ;
+        G4double CsIEnergy      = *(CsIEnergy_itr->second) ;
+
+        G4int CristalNumber  = *(CsICristalNbr_itr->second) ;
+        if (CsIEnergyTrackID == NTrackID) {
+          m_Event->SetMMCsIEEnergy(RandGauss::shoot(CsIEnergy, ResoCsI*sqrt(CsIEnergy)));
+          m_Event->SetMMCsIECristalNbr(CristalNumber);
+          m_Event->SetMMCsITCristalNbr(CristalNumber);
+          m_Event->SetMMCsITTime(1);
+          m_Event->SetMMCsITDetectorNbr(N);
+          m_Event->SetMMCsIEDetectorNbr(N);
+        }
+
+        CsIEnergy_itr++			;
+        CsICristalNbr_itr++	;
+      }
+
     }
-    
-    // clear map for next event
-    DetectorNumberHitMap	->clear();
-    EnergyHitMap   			->clear() ;
-    TimeHitMap     			->clear() ;
-    XHitMap        			->clear() ;
-    YHitMap        			->clear() ;
-    SiLiEnergyHitMap			->clear() ;
-    SiLiPadNbrHitMap			->clear() ;
-    CsIEnergyHitMap			->clear() ;
-    CsICristalNbrHitMap		->clear() ;
-    PosXHitMap					->clear() ; 
-    PosYHitMap					->clear() ;
-    PosZHitMap					->clear() ;
-    AngThetaHitMap			->clear() ;
-    AngPhiHitMap				->clear() ;
-     
+
+    DetectorNumber_itr++;
+  }
+
+  // clear map for next event
+  DetectorNumberHitMap	->clear();
+  EnergyHitMap   			->clear() ;
+  TimeHitMap     			->clear() ;
+  XHitMap        			->clear() ;
+  YHitMap        			->clear() ;
+  SiLiEnergyHitMap			->clear() ;
+  SiLiPadNbrHitMap			->clear() ;
+  CsIEnergyHitMap			->clear() ;
+  CsICristalNbrHitMap		->clear() ;
+  PosXHitMap					->clear() ; 
+  PosYHitMap					->clear() ;
+  PosZHitMap					->clear() ;
+  AngThetaHitMap			->clear() ;
+  AngPhiHitMap				->clear() ;
+
 }
 
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void MUST2Array::InitializeScorers() 
-	{ 
-		//	Silicon Associate Scorer
-		m_StripScorer = new G4MultiFunctionalDetector("MUST2_StripScorer");
-		
-		G4VPrimitiveScorer* DetNbr 									= new GENERALSCORERS::PSDetectorNumber("DetectorNumber","MUST2Telescope", 0);
-		G4VPrimitiveScorer* Energy 									= new GENERALSCORERS::PSEnergy("StripEnergy","MUST2Telescope", 0);			
-		G4VPrimitiveScorer* TOF 										= new GENERALSCORERS::PSTOF("StripTime","MUST2Telescope", 0);          					 		 
-		
-		G4VPrimitiveScorer* StripPositionX							= new PSStripNumberX("StripNumberX", 0, SiliconFace, 128);
-		G4VPrimitiveScorer* StripPositionY							= new PSStripNumberY("StripNumberY", 0, SiliconFace, 128);  		
-
-		G4VPrimitiveScorer* InteractionCoordinatesX 				= new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","MUST2Telescope", 0);
-		G4VPrimitiveScorer* InteractionCoordinatesY				= new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","MUST2Telescope", 0);
-		G4VPrimitiveScorer* InteractionCoordinatesZ  			= new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","MUST2Telescope", 0);	 		 
-		G4VPrimitiveScorer* InteractionCoordinatesAngleTheta	= new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","MUST2Telescope", 0);
-		G4VPrimitiveScorer* InteractionCoordinatesAnglePhi    = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","MUST2Telescope", 0) ;	    
-		
-	  	
-		//and register it to the multifunctionnal detector
-		m_StripScorer->RegisterPrimitive(DetNbr);
-		m_StripScorer->RegisterPrimitive(Energy);
-		m_StripScorer->RegisterPrimitive(TOF);
-		m_StripScorer->RegisterPrimitive(StripPositionX);
-		m_StripScorer->RegisterPrimitive(StripPositionY);
-		m_StripScorer->RegisterPrimitive(InteractionCoordinatesX);
-		m_StripScorer->RegisterPrimitive(InteractionCoordinatesY);
-		m_StripScorer->RegisterPrimitive(InteractionCoordinatesZ);
-		m_StripScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta);
-		m_StripScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi);
-	  	
-	  	//	SiLi Associate Scorer
-	  	m_SiLiScorer	= new G4MultiFunctionalDetector("MUST2_SiLiScorer");
-	   G4VPrimitiveScorer* SiLiEnergy 			= new GENERALSCORERS::PSEnergy("SiLiEnergy","MUST2Telescope", 0) ;
-	   G4VPrimitiveScorer* SiLiPadNbr 			= new PSPadOrCristalNumber("SiLiPadNbr",0) ;
-		m_SiLiScorer->RegisterPrimitive(SiLiEnergy);
-		m_SiLiScorer->RegisterPrimitive(SiLiPadNbr);
-	   
-	    //	CsI Associate Scorer 
-	    m_CsIScorer	= new G4MultiFunctionalDetector("MUST2_CsIScorer");
-	    G4VPrimitiveScorer* CsIEnergy 		= new GENERALSCORERS::PSEnergy("CsIEnergy","MUST2Telescope", 0) 	;
-	    G4VPrimitiveScorer* CsICristalNbr 	= new PSPadOrCristalNumber("CsICristalNbr",0) ;
-	    m_CsIScorer->RegisterPrimitive(CsIEnergy) ;
-	    m_CsIScorer->RegisterPrimitive(CsICristalNbr) ;
-	    
-	    //	Add All Scorer to the Global Scorer Manager
-	    G4SDManager::GetSDMpointer()->AddNewDetector(m_StripScorer) ;
-	    G4SDManager::GetSDMpointer()->AddNewDetector(m_SiLiScorer)	 ;
-	    G4SDManager::GetSDMpointer()->AddNewDetector(m_CsIScorer)	 ;
-	}
+void MUST2Array::InitializeScorers() { 
+  //	Silicon Associate Scorer
+  m_StripScorer = new G4MultiFunctionalDetector("MUST2_StripScorer");
+
+  G4VPrimitiveScorer* DetNbr 									= new GENERALSCORERS::PSDetectorNumber("DetectorNumber","MUST2Telescope", 0);
+  G4VPrimitiveScorer* Energy 									= new GENERALSCORERS::PSEnergy("StripEnergy","MUST2Telescope", 0);			
+  G4VPrimitiveScorer* TOF 										= new GENERALSCORERS::PSTOF("StripTime","MUST2Telescope", 0);          					 		 
+
+  G4VPrimitiveScorer* StripPositionX							= new PSStripNumberX("StripNumberX", 0, SiliconFace, 128);
+  G4VPrimitiveScorer* StripPositionY							= new PSStripNumberY("StripNumberY", 0, SiliconFace, 128);  		
+
+  G4VPrimitiveScorer* InteractionCoordinatesX 				= new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","MUST2Telescope", 0);
+  G4VPrimitiveScorer* InteractionCoordinatesY				= new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","MUST2Telescope", 0);
+  G4VPrimitiveScorer* InteractionCoordinatesZ  			= new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","MUST2Telescope", 0);	 		 
+  G4VPrimitiveScorer* InteractionCoordinatesAngleTheta	= new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","MUST2Telescope", 0);
+  G4VPrimitiveScorer* InteractionCoordinatesAnglePhi    = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","MUST2Telescope", 0) ;	    
+
+
+  //and register it to the multifunctionnal detector
+  m_StripScorer->RegisterPrimitive(DetNbr);
+  m_StripScorer->RegisterPrimitive(Energy);
+  m_StripScorer->RegisterPrimitive(TOF);
+  m_StripScorer->RegisterPrimitive(StripPositionX);
+  m_StripScorer->RegisterPrimitive(StripPositionY);
+  m_StripScorer->RegisterPrimitive(InteractionCoordinatesX);
+  m_StripScorer->RegisterPrimitive(InteractionCoordinatesY);
+  m_StripScorer->RegisterPrimitive(InteractionCoordinatesZ);
+  m_StripScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta);
+  m_StripScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi);
+
+  //	SiLi Associate Scorer
+  m_SiLiScorer	= new G4MultiFunctionalDetector("MUST2_SiLiScorer");
+  G4VPrimitiveScorer* SiLiEnergy 			= new GENERALSCORERS::PSEnergy("SiLiEnergy","MUST2Telescope", 0) ;
+  G4VPrimitiveScorer* SiLiPadNbr 			= new PSPadOrCristalNumber("SiLiPadNbr",0) ;
+  m_SiLiScorer->RegisterPrimitive(SiLiEnergy);
+  m_SiLiScorer->RegisterPrimitive(SiLiPadNbr);
+
+  //	CsI Associate Scorer 
+  m_CsIScorer	= new G4MultiFunctionalDetector("MUST2_CsIScorer");
+  G4VPrimitiveScorer* CsIEnergy 		= new GENERALSCORERS::PSEnergy("CsIEnergy","MUST2Telescope", 0) 	;
+  G4VPrimitiveScorer* CsICristalNbr 	= new PSPadOrCristalNumber("CsICristalNbr",0) ;
+  m_CsIScorer->RegisterPrimitive(CsIEnergy) ;
+  m_CsIScorer->RegisterPrimitive(CsICristalNbr) ;
+
+  //	Add All Scorer to the Global Scorer Manager
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_StripScorer) ;
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_SiLiScorer)	 ;
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_CsIScorer)	 ;
+}
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void MUST2Array::InitializeMaterial()
-	{
-	
-	////////////////////////////////////////////////////////////////
-/////////////////Element  Definition ///////////////////////////
-////////////////////////////////////////////////////////////////
-   G4String symbol               ;
-   G4double density = 0. , a = 0, z = 0   ;
-   G4int ncomponents = 0, natoms = 0  ;
-
-   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.011 * g / mole);
-   G4Element* N   = new G4Element("Nitrogen" , symbol = "N"  , z = 7  , a = 14.01  * g / mole);
-   G4Element* O   = new G4Element("Oxigen"   , symbol = "O"  , z = 8  , a = 16.00  * g / mole);
-   G4Element* I   = new G4Element("Iode"     , symbol = "I"  , z = 53 , a = 126.9  * g / mole);
-   G4Element* Cs  = new G4Element("Cesium"   , symbol = "Cs" , z = 55 , a = 132.9  * g / mole);
-
-   G4Element* Co  = new G4Element("Cobalt"  , symbol = "Co" , z = 27 , a = 58.933 * g / mole);
-   G4Element* Cr  = new G4Element("Cromium"  , symbol = "Cr" , z = 24 , a = 51.996 * g / mole);
-   G4Element* Ni  = new G4Element("Nickel"   , symbol = "Ni" , z = 28 , a = 58.69  * g / mole);
-   G4Element* Fe  = new G4Element("Iron"     , symbol = "Fe" , z = 26 , a = 55.847 * g / mole);
-   G4Element* W   = new G4Element("Tungsten" , symbol = "W"  , z = 74 , a = 183.5  * g / mole);
-
-////////////////////////////////////////////////////////////////
-/////////////////Material Definition ///////////////////////////
-////////////////////////////////////////////////////////////////
-
-   // Si
-   a = 28.0855 * g / mole;
-   density = 2.321 * g / cm3;
-   m_MaterialSilicon = new G4Material("Si", z = 14., a, density);
-
-   // Al
-   density = 2.702 * g / cm3;
-   a = 26.98 * g / mole;
-   m_MaterialAluminium = new G4Material("Aluminium", z = 13., a, density);
-
-   // Iron
-   density = 7.874 * g / cm3;
-   a = 55.847 * g / mole;
-   m_MaterialIron = new G4Material("Iron", z = 26., a, density);
-
-   // CsI
-   density = 4.51 * g / cm3;
-   m_MaterialCsI = new G4Material("CsI", density, ncomponents = 2);
-   m_MaterialCsI->AddElement(Cs , natoms = 1);
-   m_MaterialCsI->AddElement(I  , natoms = 1);
-
-   //  Vacuum
-   density = 0.000000001 * mg / cm3;
-   m_MaterialVacuum = new G4Material("Vacuum", density, ncomponents = 2);
-   m_MaterialVacuum->AddElement(N, .7);
-   m_MaterialVacuum->AddElement(O, .3);
-
-   //  Mylar
-   density = 1.397 * g / cm3;
-   m_MaterialMyl = new G4Material("Mylar", density, ncomponents = 3);
-   m_MaterialMyl->AddElement(C, natoms = 10);
-   m_MaterialMyl->AddElement(H, natoms = 8);
-   m_MaterialMyl->AddElement(O, natoms = 4);
-
-   // Havar
-   m_MaterialHarvar = new G4Material("Havar", 8.3*g / cm3, 5);
-   m_MaterialHarvar->AddElement(Co , 42);
-   m_MaterialHarvar->AddElement(Cr , 20);
-   m_MaterialHarvar->AddElement(Ni , 13);
-   m_MaterialHarvar->AddElement(Fe , 19);
-   m_MaterialHarvar->AddElement(W  ,  1);
-
-	
-	}
+void MUST2Array::InitializeMaterial(){
+
+  ////////////////////////////////////////////////////////////////
+  /////////////////Element  Definition ///////////////////////////
+  ////////////////////////////////////////////////////////////////
+  G4String symbol               ;
+  G4double density = 0. , a = 0, z = 0   ;
+  G4int ncomponents = 0, natoms = 0  ;
+
+  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.011 * g / mole);
+  G4Element* N   = new G4Element("Nitrogen" , symbol = "N"  , z = 7  , a = 14.01  * g / mole);
+  G4Element* O   = new G4Element("Oxigen"   , symbol = "O"  , z = 8  , a = 16.00  * g / mole);
+  G4Element* I   = new G4Element("Iode"     , symbol = "I"  , z = 53 , a = 126.9  * g / mole);
+  G4Element* Cs  = new G4Element("Cesium"   , symbol = "Cs" , z = 55 , a = 132.9  * g / mole);
+
+  G4Element* Co  = new G4Element("Cobalt"  , symbol = "Co" , z = 27 , a = 58.933 * g / mole);
+  G4Element* Cr  = new G4Element("Cromium"  , symbol = "Cr" , z = 24 , a = 51.996 * g / mole);
+  G4Element* Ni  = new G4Element("Nickel"   , symbol = "Ni" , z = 28 , a = 58.69  * g / mole);
+  G4Element* Fe  = new G4Element("Iron"     , symbol = "Fe" , z = 26 , a = 55.847 * g / mole);
+  G4Element* W   = new G4Element("Tungsten" , symbol = "W"  , z = 74 , a = 183.5  * g / mole);
+
+  ////////////////////////////////////////////////////////////////
+  /////////////////Material Definition ///////////////////////////
+  ////////////////////////////////////////////////////////////////
+
+  // Si
+  a = 28.0855 * g / mole;
+  density = 2.321 * g / cm3;
+  m_MaterialSilicon = new G4Material("Si", z = 14., a, density);
+
+  // Al
+  density = 2.702 * g / cm3;
+  a = 26.98 * g / mole;
+  m_MaterialAluminium = new G4Material("Aluminium", z = 13., a, density);
+
+  // Iron
+  density = 7.874 * g / cm3;
+  a = 55.847 * g / mole;
+  m_MaterialIron = new G4Material("Iron", z = 26., a, density);
+
+  // CsI
+  density = 4.51 * g / cm3;
+  m_MaterialCsI = new G4Material("CsI", density, ncomponents = 2);
+  m_MaterialCsI->AddElement(Cs , natoms = 1);
+  m_MaterialCsI->AddElement(I  , natoms = 1);
+
+  //  Vacuum
+  density = 0.000000001 * mg / cm3;
+  m_MaterialVacuum = new G4Material("Vacuum", density, ncomponents = 2);
+  m_MaterialVacuum->AddElement(N, .7);
+  m_MaterialVacuum->AddElement(O, .3);
+
+  //  Mylar
+  density = 1.397 * g / cm3;
+  m_MaterialMyl = new G4Material("Mylar", density, ncomponents = 3);
+  m_MaterialMyl->AddElement(C, natoms = 10);
+  m_MaterialMyl->AddElement(H, natoms = 8);
+  m_MaterialMyl->AddElement(O, natoms = 4);
+
+  // Havar
+  m_MaterialHarvar = new G4Material("Havar", 8.3*g / cm3, 5);
+  m_MaterialHarvar->AddElement(Co , 42);
+  m_MaterialHarvar->AddElement(Cr , 20);
+  m_MaterialHarvar->AddElement(Ni , 13);
+  m_MaterialHarvar->AddElement(Fe , 19);
+  m_MaterialHarvar->AddElement(W  ,  1);
+}
 
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4RotationMatrix* Rotation(double tetaX, double tetaY, double tetaZ)
-{
-   double PI = 3.141592653589793238;
-   double radX = tetaX * PI / 180.;
-   double radY = tetaY * PI / 180.;
-   double radZ = tetaZ * PI / 180.;
-
-   G4ThreeVector col1 = G4ThreeVector(cos(radZ) * cos(radY),
-         -sin(radZ) * cos(radY),
-         -sin(radY));
-   G4ThreeVector col2 = G4ThreeVector(sin(radZ) * cos(radX) - cos(radZ) * sin(radY) * sin(radX),
-         cos(radZ) * cos(radX) + sin(radZ) * sin(radY) * sin(radX),
-         -cos(radY) * sin(radX));
-   G4ThreeVector col3 = G4ThreeVector(sin(radZ) * sin(radX) + cos(radZ) * sin(radY) * sin(radX),
-         cos(radZ) * sin(radX) - sin(radZ) * sin(radY) * cos(radX),
-         cos(radY) * cos(radX));
-
-   return (new G4RotationMatrix(col1, col2, col3));
+G4RotationMatrix* Rotation(double tetaX, double tetaY, double tetaZ){
+  double PI = 3.141592653589793238;
+  double radX = tetaX * PI / 180.;
+  double radY = tetaY * PI / 180.;
+  double radZ = tetaZ * PI / 180.;
+
+  G4ThreeVector col1 = G4ThreeVector(cos(radZ) * cos(radY),
+      -sin(radZ) * cos(radY),
+      -sin(radY));
+  G4ThreeVector col2 = G4ThreeVector(sin(radZ) * cos(radX) - cos(radZ) * sin(radY) * sin(radX),
+      cos(radZ) * cos(radX) + sin(radZ) * sin(radY) * sin(radX),
+      -cos(radY) * sin(radX));
+  G4ThreeVector col3 = G4ThreeVector(sin(radZ) * sin(radX) + cos(radZ) * sin(radY) * sin(radX),
+      cos(radZ) * sin(radX) - sin(radZ) * sin(radY) * cos(radX),
+      cos(radY) * cos(radX));
+
+  return (new G4RotationMatrix(col1, col2, col3));
 }
 
 
diff --git a/NPSimulation/Makefile b/NPSimulation/Makefile
index a2c7acc85650b1ed93aec0a69d81de90d568f5f4..c837a7c229c40c1a5cfd75c05118a3137f48d35c 100644
--- a/NPSimulation/Makefile
+++ b/NPSimulation/Makefile
@@ -4,15 +4,14 @@ NPSIM		= NPSimulation
 
 all:	$(DELFILES) $(COPYFILES) $(NPSIM)
 
-
-CopyIncSrcFiles:
-	./scripts/copyfiles.sh
-
 DelIncSrcFiles:
 	./scripts/deletefiles.sh
 
-NPSimulation:
-	make -j 10 -f Makefile.geant4
+CopyIncSrcFiles: DelIncSrcFiles
+	./scripts/copyfiles.sh
+
+NPSimulation: DelIncSrcFiles CopyIncSrcFiles
+	make -f Makefile.geant4
 
 clean:
 	./scripts/deletefiles.sh
diff --git a/NPSimulation/Paris/ParisCluster.cc b/NPSimulation/Paris/ParisCluster.cc
index 2ee93847de8b42b7fd209d4af4a5b8a8900de89d..43f26531532a189957b95341521c4cba22bd88a0 100644
--- a/NPSimulation/Paris/ParisCluster.cc
+++ b/NPSimulation/Paris/ParisCluster.cc
@@ -212,15 +212,16 @@ void ParisCluster::VolumeMaker(G4int             DetecNumber,
                      false                        ,
                      0);
 
-   logicParisCluster->SetVisAttributes(G4VisAttributes::Invisible);
-   if (m_non_sensitive_part_visiualisation) logicParisCluster->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
-
+   G4VisAttributes* ClusterVisAtt = new G4VisAttributes(G4Colour(0.90, 0.90, 0.90));
+   ClusterVisAtt->SetForceWireframe(true);
+   logicParisCluster->SetVisAttributes(ClusterVisAtt);
    // Phoswich volume construction (empty volume)
 
    G4ThreeVector  positionPhoSwStage = G4ThreeVector(LaBr3Face+InterSpace, LaBr3Face+InterSpace, 0.);
    G4Box*           solidPhoSwStage = new G4Box(Name+"_PhoSwStage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*Length);
    G4LogicalVolume* logicPhoSwStage = new G4LogicalVolume(solidPhoSwStage, Vacuum, "logicPhoSwStage", 0, 0, 0);
-
+   logicPhoSwStage->SetVisAttributes(G4VisAttributes::Invisible);
+ 
    new G4PVPlacement(0, 
                      positionPhoSwStage, 
                      logicPhoSwStage, 
@@ -230,7 +231,7 @@ void ParisCluster::VolumeMaker(G4int             DetecNumber,
    // 0);
    
    positionPhoSwStage = G4ThreeVector(0., LaBr3Face+InterSpace, 0.);
-   G4PVPlacement(0, 
+   new G4PVPlacement(0, 
                                  positionPhoSwStage, 
                                  logicPhoSwStage, 
                                  Name+"_PhoSwStage", 
@@ -323,7 +324,7 @@ void ParisCluster::VolumeMaker(G4int             DetecNumber,
    logicLaBr3Stage->SetSensitiveDetector(m_LaBr3StageScorer);
 
    // Visualisation of LaBr3Stage Strip
-   G4VisAttributes* LaBr3VisAtt = new G4VisAttributes(G4Colour(0., 0., 1.));
+   G4VisAttributes* LaBr3VisAtt = new G4VisAttributes(G4Colour(0., 0.5, 1.));
    logicLaBr3Stage->SetVisAttributes(LaBr3VisAtt);
 
    // CsI or NaI
@@ -345,7 +346,7 @@ void ParisCluster::VolumeMaker(G4int             DetecNumber,
    logicCsIStage->SetSensitiveDetector(m_CsIStageScorer);
 
    // Visualisation of CsIStage Strip
-   G4VisAttributes* CsIVisAtt = new G4VisAttributes(G4Colour(1., 0., 0.));
+   G4VisAttributes* CsIVisAtt = new G4VisAttributes(G4Colour(1., 0.25, 0.));
    logicCsIStage->SetVisAttributes(CsIVisAtt);
 }
 
diff --git a/NPSimulation/Plastic/Plastic.cc b/NPSimulation/Plastic/Plastic.cc
index d61ce70c04c3335400dfb4653503b21fb00e3097..1350c3832dc5de5587ccc222e48636979ee3aeac 100644
--- a/NPSimulation/Plastic/Plastic.cc
+++ b/NPSimulation/Plastic/Plastic.cc
@@ -494,8 +494,8 @@ void Plastic::VolumeMaker(G4ThreeVector Det_pos, int DetNumber, G4LogicalVolume*
                                                 world                       ,
                                                 false                       ,
                                                 0                                    );   */
-  		//G4RotationMatrix Rot3D;
-    		//Rot3D.set(0, 0, 0);
+  		G4RotationMatrix Rot3D;
+    	Rot3D.set(0, 0, 0);
     		//Rot3D.rotateX(70*degree);
     		//Rot3D.rotateY(theta*degree);  
     		//Rot3D.rotateZ(phi*degree);  
diff --git a/NPSimulation/SSSD/ThinSi.cc b/NPSimulation/SSSD/ThinSi.cc
index d97c587b9995f291d50e48aaaef27b7b845f1251..2242c699faed12182f9dde92ba83ed3a7c0f80a5 100644
--- a/NPSimulation/SSSD/ThinSi.cc
+++ b/NPSimulation/SSSD/ThinSi.cc
@@ -60,641 +60,640 @@ using namespace CLHEP;
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // ThinSi Specific Method
-ThinSi::ThinSi()
-{
-      InitializeMaterial();
-      m_Event = new TSSSDData();
+ThinSi::ThinSi(){
+  InitializeMaterial();
+  m_Event = new TSSSDData();
 }
 
-ThinSi::~ThinSi()
-{
-      delete m_MaterialSilicon;
-      delete m_MaterialAl;
-      delete m_MaterialVacuum;
+ThinSi::~ThinSi(){
+  delete m_MaterialSilicon;
+  delete m_MaterialAl;
+  delete m_MaterialVacuum;
 
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void ThinSi::AddTelescope( G4ThreeVector TL,
-                           G4ThreeVector BL,
-                           G4ThreeVector BR,
-                           G4ThreeVector TR)
+    G4ThreeVector BL,
+    G4ThreeVector BR,
+    G4ThreeVector TR)
 {
-   m_DefinitionType.push_back(true);
-
-   m_TL.push_back(TL);
-   m_BL.push_back(BL);
-   m_BR.push_back(BR);
-   m_TR.push_back(TR);
-
-   m_R.push_back(0);
-   m_Theta.push_back(0);
-   m_Phi.push_back(0);
-   m_beta_u.push_back(0);
-   m_beta_v.push_back(0);
-   m_beta_w.push_back(0);
+  m_DefinitionType.push_back(true);
+
+  m_TL.push_back(TL);
+  m_BL.push_back(BL);
+  m_BR.push_back(BR);
+  m_TR.push_back(TR);
+
+  m_R.push_back(0);
+  m_Theta.push_back(0);
+  m_Phi.push_back(0);
+  m_beta_u.push_back(0);
+  m_beta_v.push_back(0);
+  m_beta_w.push_back(0);
 }
 
 void ThinSi::AddTelescope( G4double R,
-                           G4double Theta,
-                           G4double Phi,
-                           G4double beta_u,
-                           G4double beta_v,
-                           G4double beta_w)
+    G4double Theta,
+    G4double Phi,
+    G4double beta_u,
+    G4double beta_v,
+    G4double beta_w)
 {
-   G4ThreeVector empty = G4ThreeVector(0, 0, 0);
+  G4ThreeVector empty = G4ThreeVector(0, 0, 0);
 
-   m_DefinitionType.push_back(false);
+  m_DefinitionType.push_back(false);
 
-   m_R.push_back(R);
-   m_Theta.push_back(Theta);
-   m_Phi.push_back(Phi);
-   m_beta_u.push_back(beta_u);
-   m_beta_v.push_back(beta_v);
-   m_beta_w.push_back(beta_w);
+  m_R.push_back(R);
+  m_Theta.push_back(Theta);
+  m_Phi.push_back(Phi);
+  m_beta_u.push_back(beta_u);
+  m_beta_v.push_back(beta_v);
+  m_beta_w.push_back(beta_w);
 
-   m_TL.push_back(empty);
-   m_BL.push_back(empty);
-   m_BR.push_back(empty);
-   m_TR.push_back(empty);
+  m_TL.push_back(empty);
+  m_BL.push_back(empty);
+  m_BR.push_back(empty);
+  m_TR.push_back(empty);
 
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void ThinSi::VolumeMaker(  G4int             DetNumber ,
-                           G4ThreeVector     Det_pos ,
-                           G4RotationMatrix* Det_rot ,
-                           G4LogicalVolume*  world   )
+    G4ThreeVector     Det_pos ,
+    G4RotationMatrix* Det_rot ,
+    G4LogicalVolume*  world   )
 {
-   G4double NbrTelescopes = DetNumber  ;
-   G4String DetectorNumber ;
-   std::ostringstream Number ;
-   Number << NbrTelescopes ;
-   DetectorNumber = Number.str() ;
-
+  G4double NbrTelescopes = DetNumber  ;
+  G4String DetectorNumber ;
+  std::ostringstream Number ;
+  Number << NbrTelescopes ;
+  DetectorNumber = Number.str() ;
+
+  ////////////////////////////////////////////////////////////////
+  /////////General Geometry Parameter Definition /////////////////
+  ////////////////////////////////////////////////////////////////
+  /////// Starting Volume Definition ///////
+  G4String Name = "ThinSi" + DetectorNumber;
+
+  G4Box* solidThinSi = new G4Box(Name+"Solid", 0.5*DetectorSize, 0.5*DetectorSize, 0.5*FrameThickness);
+
+  G4LogicalVolume* logicThinSi =
+    new G4LogicalVolume(solidThinSi, m_MaterialVacuum, Name+"_logic", 0, 0);
+
+  new G4PVPlacement(   G4Transform3D(*Det_rot, Det_pos) ,
+      logicThinSi         ,
+      Name                ,
+      world               ,
+      false               ,
+      0);
+
+  logicThinSi->SetVisAttributes(G4VisAttributes::Invisible);
+  // Frame is made of 4 thick box (2 Horizontal and 2 Vertical)
+  G4Box* solidFrameHorizontal = new G4Box(Name + "_Frame", 0.5*SiliconSize, 0.5*(DetectorSize - SiliconSize) / 2, 0.5*FrameThickness*mm)   ;
+  G4Box* solidFrameVertical  = new G4Box(Name + "_Frame", 0.5*(DetectorSize - SiliconSize) / 2, 0.5*DetectorSize, 0.5*FrameThickness*mm)   ;
+
+  G4LogicalVolume* logicFrameHorizontal = new G4LogicalVolume(solidFrameHorizontal, m_MaterialAl, Name, 0, 0);
+  G4VisAttributes* VisAtt1 = new G4VisAttributes(G4Colour(0.0, 0.5, 1));
+  logicFrameHorizontal->SetVisAttributes(VisAtt1);
+
+
+  G4LogicalVolume* logicFrameVertical = new G4LogicalVolume(solidFrameVertical, m_MaterialAl, Name, 0, 0);
+  logicFrameVertical->SetVisAttributes(VisAtt1); 
+  
+  G4ThreeVector FrameTopPosition    = G4ThreeVector(0 ,  0.5 * SiliconSize + 0.5 * (DetectorSize - SiliconSize) / 2 , 0) ; 
+  G4ThreeVector FrameBottomPosition = G4ThreeVector(0 , -0.5 * SiliconSize - 0.5 * (DetectorSize - SiliconSize) / 2 , 0) ;
+  G4ThreeVector FrameLeftPosition   = G4ThreeVector(0.5 * SiliconSize + 0.5 * (DetectorSize - SiliconSize) / 2 , 0 , 0) ;
+  G4ThreeVector FrameRightPosition  = G4ThreeVector(-0.5 * SiliconSize - 0.5 * (DetectorSize - SiliconSize) / 2 , 0 , 0) ;
+
+
+  new G4PVPlacement(   0,
+      FrameTopPosition,
+      logicFrameHorizontal,
+      Name + "_Frame",
+      logicThinSi,
+      false,
+      0);
+
+  new G4PVPlacement(   0,
+      FrameBottomPosition,
+      logicFrameHorizontal,
+      Name + "_Frame",
+      logicThinSi,
+      false,
+      0);
+
+  new G4PVPlacement(   0,
+      FrameLeftPosition,
+      logicFrameVertical,
+      Name + "_Frame",
+      logicThinSi,
+      false,
+      0);
+
+  new G4PVPlacement(   0,
+      FrameRightPosition,
+      logicFrameVertical,
+      Name + "_Frame",
+      logicThinSi,
+      false,
+      0);
+
+
+  G4ThreeVector posAluFront  = G4ThreeVector(0 ,  0  ,  AluStripFront_PosZ)  ;
+  G4ThreeVector posSi        = G4ThreeVector(0 ,  0  ,  0                 )  ;
+  G4ThreeVector posAluBack   = G4ThreeVector(0 ,  0  ,  AluStripBack_PosZ )  ;
+
+  G4Box*   solidAlu  =
+    new G4Box("ThinSiAlu", 0.5*SiliconSize, 0.5*SiliconSize, 0.5*AluThickness) ;
+
+  G4LogicalVolume* logicAlu  =
+    new G4LogicalVolume(solidAlu, m_MaterialAl, "logicAlu", 0, 0, 0)    ;
 
-////////////////////////////////////////////////////////////////
-/////////General Geometry Parameter Definition /////////////////
-////////////////////////////////////////////////////////////////
-/////// Starting Volume Definition ///////
-   G4String Name = "ThinSi" + DetectorNumber;
+  
+  new G4PVPlacement(0  ,  posAluFront ,  logicAlu ,  Name + "_AluFront"   ,  logicThinSi ,  true, 0)  ;
 
-   G4Box* solidThinSi = new G4Box(Name, 0.5*DetectorSize, 0.5*DetectorSize, 0.5*FrameThickness*mm);
+  new G4PVPlacement(0  ,  posAluBack  ,  logicAlu ,  Name + "_AluBack"    ,  logicThinSi ,  true, 0)  ;
 
-   G4LogicalVolume* logicThinSi =
-      new G4LogicalVolume(solidThinSi, m_MaterialVacuum, Name, 0, 0);
+  G4Box*   solidSi  =
+    new G4Box("ThinSi", 0.5*SiliconSize, 0.5*SiliconSize, 0.5*SiliconThickness);
 
-   G4PVPlacement(   G4Transform3D(*Det_rot, Det_pos)  ,
-                                    logicThinSi                ,
-                                    Name                    ,
-                                    world                   ,
-                                    false                   ,
-                                    0);
+  G4LogicalVolume* logicSi  =
+    new G4LogicalVolume(solidSi, m_MaterialSilicon, "logicSi", 0, 0, 0);
 
-   // Frame is made of 4 thick box (2 Horizontal and 2 Vertical)
-   G4Box* solidFrameHorizontal = new G4Box(Name + "_Frame", 0.5*SiliconSize, 0.5*(DetectorSize - SiliconSize) / 2, 0.5*FrameThickness*mm)   ;
-   G4Box* solidFrameVertical  = new G4Box(Name + "_Frame", 0.5*(DetectorSize - SiliconSize) / 2, 0.5*DetectorSize, 0.5*FrameThickness*mm)   ;
+  G4VisAttributes* VisAtt2 = new G4VisAttributes(G4Colour(0.3, 0.3, 0.3));
+  logicAlu->SetVisAttributes(VisAtt2);  
 
-   G4LogicalVolume* logicFrameHorizontal = new G4LogicalVolume(solidFrameHorizontal, m_MaterialAl, Name, 0, 0);
+  new G4PVPlacement(0, posSi, logicSi, Name + "_Si", logicThinSi, true, 0);
 
-   G4LogicalVolume* logicFrameVertical = new G4LogicalVolume(solidFrameVertical, m_MaterialAl, Name, 0, 0);
+  //attach it to the Silicon plate
+  logicSi ->SetSensitiveDetector(m_StripScorer);
+}
 
-   G4ThreeVector FrameTopPosition    = G4ThreeVector(0 ,  0.5 * SiliconSize + 0.5 * (DetectorSize - SiliconSize) / 2 , 0) ; 
-   G4ThreeVector FrameBottomPosition = G4ThreeVector(0 , -0.5 * SiliconSize - 0.5 * (DetectorSize - SiliconSize) / 2 , 0) ;
-   G4ThreeVector FrameLeftPosition   = G4ThreeVector(0.5 * SiliconSize + 0.5 * (DetectorSize - SiliconSize) / 2 , 0 , 0) ;
-   G4ThreeVector FrameRightPosition  = G4ThreeVector(-0.5 * SiliconSize - 0.5 * (DetectorSize - SiliconSize) / 2 , 0 , 0) ;
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Virtual Method of VDetector class
 
 
-   new G4PVPlacement(   0,
-                                    FrameTopPosition,
-                                    logicFrameHorizontal,
-                                    Name + "_Frame",
-                                    logicThinSi,
-                                    false,
-                                    0);
+// Read stream at Configfile to pick-up parameters of detector (Position,...)
+// Called in DetecorConstruction::ReadDetextorConfiguration Method
+void ThinSi::ReadConfiguration(string Path){
+  ifstream ConfigFile           ;
+  ConfigFile.open(Path.c_str()) ;
+  string LineBuffer             ;
+  string DataBuffer             ;
+
+  G4double TLX , BLX , BRX , TRX , TLY , BLY , BRY , TRY , TLZ , BLZ , BRZ , TRZ;
+  G4ThreeVector TL , BL , BR , TR ;
+  G4double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0 ;
+  bool check_A = false ;
+  bool check_B = false ;
+  bool check_C = false ;
+  bool check_D = false ;
+
+  bool check_Theta   = false;
+  bool check_Phi     = false;
+  bool check_R       = false;
+  bool check_beta    = false;
+  bool ReadingStatus = false;
+
+  while (!ConfigFile.eof()) 
+  {
+
+    getline(ConfigFile, LineBuffer);
+
+    //   If line is a Start Up ThinSi bloc, Reading toggle to true      
+    if (LineBuffer.compare(0, 4, "SSSD") == 0 && LineBuffer.compare(0, 5, "SSSDA") != 0) 
+    {
+      G4cout << "///" << G4endl           ;
+      G4cout << "Detector found: " << G4endl   ;        
+      ReadingStatus = true ;
 
-   new G4PVPlacement(   0,
-                                    FrameBottomPosition,
-                                    logicFrameHorizontal,
-                                    Name + "_Frame",
-                                    logicThinSi,
-                                    false,
-                                    0);
+    }
 
-   new G4PVPlacement(   0,
-                                    FrameLeftPosition,
-                                    logicFrameVertical,
-                                    Name + "_Frame",
-                                    logicThinSi,
-                                    false,
-                                    0);
+    //   Else don't toggle to Reading Block Status
+    else ReadingStatus = false ;
 
-   new G4PVPlacement(   0,
-                                    FrameRightPosition,
-                                    logicFrameVertical,
-                                    Name + "_Frame",
-                                    logicThinSi,
-                                    false,
-                                    0);
+    //   Reading Block
+    while(ReadingStatus)
+    {
+      // Pickup Next Word 
+      ConfigFile >> DataBuffer ;
 
+      //   Comment Line 
+      if (DataBuffer.compare(0, 1, "%") == 0) {   ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
 
-   G4ThreeVector posAluFront  = G4ThreeVector(0 ,  0  ,  AluStripFront_PosZ)  ;
-   G4ThreeVector posSi        = G4ThreeVector(0 ,  0  ,  0                 )  ;
-   G4ThreeVector posAluBack   = G4ThreeVector(0 ,  0  ,  AluStripBack_PosZ )  ;
+      //   Finding another telescope (safety), toggle out
+      else if (DataBuffer=="SSSD") {
+        cout << "WARNING: Another Telescope is found before standard sequence of Token, Error may occured in detector definition" << endl ;
+        ReadingStatus = false ;
+      }
 
-   G4Box*   solidAlu  =
-      new G4Box("ThinSiAlu", 0.5*SiliconSize, 0.5*SiliconSize, 0.5*AluThickness) ;
+      //Position method
+      else if (DataBuffer.compare(0, 3, "A=") == 0) {
+        check_A = true;
+        ConfigFile >> DataBuffer ;
+        TLX = atof(DataBuffer.c_str()) ;
+        TLX = TLX * mm;
+        ConfigFile >> DataBuffer ;
+        TLY = atof(DataBuffer.c_str()) ;
+        TLY = TLY * mm;
+        ConfigFile >> DataBuffer ;
+        TLZ = atof(DataBuffer.c_str()) ;
+        TLZ = TLZ * mm;
+
+        TL = G4ThreeVector(TLX, TLY, TLZ);
+        cout << "Top Left position : (" << TLX << ";" << TLY << ";" << TLZ << ")" << endl;
+      }
 
-   G4LogicalVolume* logicAlu  =
-      new G4LogicalVolume(solidAlu, m_MaterialAl, "logicAlu", 0, 0, 0)    ;
+      else if (DataBuffer.compare(0, 3, "B=") == 0) {
+        check_B = true;
+        ConfigFile >> DataBuffer ;
+        BLX = atof(DataBuffer.c_str()) ;
+        BLX = BLX * mm;
+        ConfigFile >> DataBuffer ;
+        BLY = atof(DataBuffer.c_str()) ;
+        BLY = BLY * mm;
+        ConfigFile >> DataBuffer ;
+        BLZ = atof(DataBuffer.c_str()) ;
+        BLZ = BLZ * mm;
+
+        BL = G4ThreeVector(BLX, BLY, BLZ);
+        cout << "Top Right position : (" << BLX << ";" << BLY << ";" << BLZ << ")" << endl;
+      }
 
-      new G4PVPlacement(0  ,  posAluFront ,  logicAlu ,  Name + "_AluFront"   ,  logicThinSi ,  true, 0)  ;
+      else if (DataBuffer.compare(0, 3, "C=") == 0) {
+        check_C = true;
+        ConfigFile >> DataBuffer ;
+        BRX = atof(DataBuffer.c_str()) ;
+        BRX = BRX * mm;
+        ConfigFile >> DataBuffer ;
+        BRY = atof(DataBuffer.c_str()) ;
+        BRY = BRY * mm;
+        ConfigFile >> DataBuffer ;
+        BRZ = atof(DataBuffer.c_str()) ;
+        BRZ = BRZ * mm;
+
+        BR = G4ThreeVector(BRX, BRY, BRZ);
+        cout << "Bottom Right position : (" << BRX << ";" << BRY << ";" << BRZ << ")" << endl;
+      }
 
-      new G4PVPlacement(0  ,  posAluBack  ,  logicAlu ,  Name + "_AluBack"    ,  logicThinSi ,  true, 0)  ;
+      else if (DataBuffer.compare(0, 3, "D=") == 0) {
+        check_D = true;
+        ConfigFile >> DataBuffer ;
+        TRX = atof(DataBuffer.c_str()) ;
+        TRX = TRX * mm;
+        ConfigFile >> DataBuffer ;
+        TRY = atof(DataBuffer.c_str()) ;
+        TRY = TRY * mm;
+        ConfigFile >> DataBuffer ;
+        TRZ = atof(DataBuffer.c_str()) ;
+        TRZ = TRZ * mm;
+
+        TR = G4ThreeVector(TRX, TRY, TRZ);
+        G4cout << "Center position : (" << TRX << ";" << TRY << ";" << TRZ << ")" << G4endl << G4endl;
+      }
 
 
-   G4Box*   solidSi  =
-      new G4Box("ThinSi", 0.5*SiliconSize, 0.5*SiliconSize, 0.5*SiliconThickness);
+      //Angle method
+      else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
+        check_Theta = true;
+        ConfigFile >> DataBuffer ;
+        Theta = atof(DataBuffer.c_str()) ;
+        Theta = Theta * deg;
+        cout << "Theta:  " << Theta / deg << endl;
+      }
 
-   G4LogicalVolume* logicSi  =
-      new G4LogicalVolume(solidSi, m_MaterialSilicon, "logicSi", 0, 0, 0);
+      else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
+        check_Phi = true;
+        ConfigFile >> DataBuffer ;
+        Phi = atof(DataBuffer.c_str()) ;
+        Phi = Phi * deg;
+        cout << "Phi:  " << Phi / deg << endl;
+      }
 
-      new G4PVPlacement(0, posSi, logicSi, Name + "_Si", logicThinSi, true, 0);
+      else if (DataBuffer.compare(0, 2, "R=") == 0) {
+        check_R = true;
+        ConfigFile >> DataBuffer ;
+        R = atof(DataBuffer.c_str()) ;
+        R = R * mm;
+        cout << "R:  " << R*mm << endl;
+      }
 
-   //attach it to the Silicon plate
-   logicSi ->SetSensitiveDetector(m_StripScorer);
 
-}
+      else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
+        check_beta = true;
+        ConfigFile >> DataBuffer ;
+        beta_u = atof(DataBuffer.c_str()) ;
+        beta_u = beta_u * deg   ;
+        ConfigFile >> DataBuffer ;
+        beta_v = atof(DataBuffer.c_str()) ;
+        beta_v = beta_v * deg   ;
+        ConfigFile >> DataBuffer ;
+        beta_w = atof(DataBuffer.c_str()) ;
+        beta_w = beta_w * deg   ;
+        G4cout << "Beta:  " << beta_u / deg <<  " " << beta_v / deg << " " << beta_w / deg << G4endl       ;
+      }
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Virtual Method of VDetector class
+      ///////////////////////////////////////////////////
+      //   If no Detector Token and no comment, toggle out
+      else 
+      {ReadingStatus = false; G4cout << "Wrong Token Sequence: Getting out " << DataBuffer << G4endl ;}
+
+      /////////////////////////////////////////////////
+      //   If All necessary information there, toggle out
+
+      if ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R && check_beta) ) 
+      { 
+        ReadingStatus = false; 
+
+        ///Add The previously define telescope
+        //With position method
+        if ((check_A && check_B && check_C && check_D) || !(check_Theta && check_Phi && check_R)) {
+          AddTelescope(   TL ,
+              BL ,
+              BR ,
+              TR );
+        }
+
+        //with angle method
+        else if ((check_Theta && check_Phi && check_R) || !(check_A && check_B && check_C && check_D)) {
+          AddTelescope(   R ,
+              Theta ,
+              Phi ,
+              beta_u ,
+              beta_v ,
+              beta_w );
+        }
+
+        //   Reinitialisation of Check Boolean 
+
+        check_A = false ;
+        check_B = false ;
+        check_C = false ;
+        check_D = false ;
+
+        check_Theta   = false ;
+        check_Phi     = false ;
+        check_R       = false ;
+        check_beta    = false ;
+        ReadingStatus = false ;
 
+      }
 
-// Read stream at Configfile to pick-up parameters of detector (Position,...)
-// Called in DetecorConstruction::ReadDetextorConfiguration Method
-void ThinSi::ReadConfiguration(string Path)
-{
-   ifstream ConfigFile           ;
-   ConfigFile.open(Path.c_str()) ;
-   string LineBuffer             ;
-   string DataBuffer             ;
-
-   G4double TLX , BLX , BRX , TRX , TLY , BLY , BRY , TRY , TLZ , BLZ , BRZ , TRZ;
-   G4ThreeVector TL , BL , BR , TR ;
-   G4double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0 ;
-   bool check_A = false ;
-   bool check_B = false ;
-   bool check_C = false ;
-   bool check_D = false ;
-
-   bool check_Theta   = false;
-   bool check_Phi     = false;
-   bool check_R       = false;
-   bool check_beta    = false;
-   bool ReadingStatus = false;
-
- while (!ConfigFile.eof()) 
-    {
-      
-         getline(ConfigFile, LineBuffer);
-
-         //   If line is a Start Up ThinSi bloc, Reading toggle to true      
-         if (LineBuffer.compare(0, 4, "SSSD") == 0 && LineBuffer.compare(0, 5, "SSSDA") != 0) 
-            {
-               G4cout << "///" << G4endl           ;
-                  G4cout << "Detector found: " << G4endl   ;        
-               ReadingStatus = true ;
-              
-            }
-         
-         //   Else don't toggle to Reading Block Status
-         else ReadingStatus = false ;
-         
-         //   Reading Block
-         while(ReadingStatus)
-            {
-                  // Pickup Next Word 
-               ConfigFile >> DataBuffer ;
-
-               //   Comment Line 
-               if (DataBuffer.compare(0, 1, "%") == 0) {   ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
-
-                  //   Finding another telescope (safety), toggle out
-               else if (DataBuffer=="SSSD") {
-                  cout << "WARNING: Another Telescope is found before standard sequence of Token, Error may occured in detector definition" << endl ;
-                  ReadingStatus = false ;
-               }
-         
-                   //Position method
-                  else if (DataBuffer.compare(0, 3, "A=") == 0) {
-                     check_A = true;
-                     ConfigFile >> DataBuffer ;
-                     TLX = atof(DataBuffer.c_str()) ;
-                     TLX = TLX * mm;
-                     ConfigFile >> DataBuffer ;
-                     TLY = atof(DataBuffer.c_str()) ;
-                     TLY = TLY * mm;
-                     ConfigFile >> DataBuffer ;
-                     TLZ = atof(DataBuffer.c_str()) ;
-                     TLZ = TLZ * mm;
-
-                     TL = G4ThreeVector(TLX, TLY, TLZ);
-                     cout << "Top Left position : (" << TLX << ";" << TLY << ";" << TLZ << ")" << endl;
-                  }
-               
-               else if (DataBuffer.compare(0, 3, "B=") == 0) {
-                  check_B = true;
-                  ConfigFile >> DataBuffer ;
-                  BLX = atof(DataBuffer.c_str()) ;
-                  BLX = BLX * mm;
-                  ConfigFile >> DataBuffer ;
-                  BLY = atof(DataBuffer.c_str()) ;
-                  BLY = BLY * mm;
-                  ConfigFile >> DataBuffer ;
-                  BLZ = atof(DataBuffer.c_str()) ;
-                  BLZ = BLZ * mm;
-
-                  BL = G4ThreeVector(BLX, BLY, BLZ);
-                  cout << "Top Right position : (" << BLX << ";" << BLY << ";" << BLZ << ")" << endl;
-               }
-
-               else if (DataBuffer.compare(0, 3, "C=") == 0) {
-                  check_C = true;
-                  ConfigFile >> DataBuffer ;
-                  BRX = atof(DataBuffer.c_str()) ;
-                  BRX = BRX * mm;
-                  ConfigFile >> DataBuffer ;
-                  BRY = atof(DataBuffer.c_str()) ;
-                  BRY = BRY * mm;
-                  ConfigFile >> DataBuffer ;
-                  BRZ = atof(DataBuffer.c_str()) ;
-                  BRZ = BRZ * mm;
-
-                  BR = G4ThreeVector(BRX, BRY, BRZ);
-                  cout << "Bottom Right position : (" << BRX << ";" << BRY << ";" << BRZ << ")" << endl;
-               }
-
-               else if (DataBuffer.compare(0, 3, "D=") == 0) {
-                  check_D = true;
-                  ConfigFile >> DataBuffer ;
-                  TRX = atof(DataBuffer.c_str()) ;
-                  TRX = TRX * mm;
-                  ConfigFile >> DataBuffer ;
-                  TRY = atof(DataBuffer.c_str()) ;
-                  TRY = TRY * mm;
-                  ConfigFile >> DataBuffer ;
-                  TRZ = atof(DataBuffer.c_str()) ;
-                  TRZ = TRZ * mm;
-
-                  TR = G4ThreeVector(TRX, TRY, TRZ);
-                  G4cout << "Center position : (" << TRX << ";" << TRY << ";" << TRZ << ")" << G4endl << G4endl;
-               }
-
-                              
-               //Angle method
-               else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
-                  check_Theta = true;
-                  ConfigFile >> DataBuffer ;
-                  Theta = atof(DataBuffer.c_str()) ;
-                  Theta = Theta * deg;
-                  cout << "Theta:  " << Theta / deg << endl;
-               }
-
-               else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
-                  check_Phi = true;
-                  ConfigFile >> DataBuffer ;
-                  Phi = atof(DataBuffer.c_str()) ;
-                  Phi = Phi * deg;
-                  cout << "Phi:  " << Phi / deg << endl;
-               }
-
-               else if (DataBuffer.compare(0, 2, "R=") == 0) {
-                  check_R = true;
-                  ConfigFile >> DataBuffer ;
-                  R = atof(DataBuffer.c_str()) ;
-                  R = R * mm;
-                  cout << "R:  " << R*mm << endl;
-               }
-
-
-               else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-                  check_beta = true;
-                  ConfigFile >> DataBuffer ;
-                  beta_u = atof(DataBuffer.c_str()) ;
-                  beta_u = beta_u * deg   ;
-                  ConfigFile >> DataBuffer ;
-                  beta_v = atof(DataBuffer.c_str()) ;
-                  beta_v = beta_v * deg   ;
-                  ConfigFile >> DataBuffer ;
-                  beta_w = atof(DataBuffer.c_str()) ;
-                  beta_w = beta_w * deg   ;
-                  G4cout << "Beta:  " << beta_u / deg <<  " " << beta_v / deg << " " << beta_w / deg << G4endl       ;
-               }
-               
-                     ///////////////////////////////////////////////////
-                  //   If no Detector Token and no comment, toggle out
-                  else 
-                     {ReadingStatus = false; G4cout << "Wrong Token Sequence: Getting out " << DataBuffer << G4endl ;}
-                  
-                     /////////////////////////////////////////////////
-                     //   If All necessary information there, toggle out
-                  
-                  if ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R && check_beta) ) 
-                     { 
-                           ReadingStatus = false; 
-                           
-                           ///Add The previously define telescope
-                           //With position method
-                            if ((check_A && check_B && check_C && check_D) || !(check_Theta && check_Phi && check_R)) {
-                                      AddTelescope(   TL ,
-                                                      BL ,
-                                                      BR ,
-                                                      TR );
-                              }
-
-                           //with angle method
-                           else if ((check_Theta && check_Phi && check_R) || !(check_A && check_B && check_C && check_D)) {
-                                      AddTelescope(   R ,
-                                                      Theta ,
-                                                      Phi ,
-                                                      beta_u ,
-                                                      beta_v ,
-                                                      beta_w );
-                              }
-                              
-                             //   Reinitialisation of Check Boolean 
-                             
-                           check_A = false ;
-                           check_B = false ;
-                           check_C = false ;
-                           check_D = false ;
-
-                           check_Theta   = false ;
-                           check_Phi     = false ;
-                           check_R       = false ;
-                           check_beta    = false ;
-                           ReadingStatus = false ;
-                                 
-                     }
-                     
-            }
-   }
+    }
+  }
 
 }
 
 // Construct detector and inialise sensitive part.
 // Called After DetecorConstruction::AddDetector Method
-void ThinSi::ConstructDetector(G4LogicalVolume* world)
-{
-   G4RotationMatrix* Det_rot  = NULL;
-   G4ThreeVector     Det_pos  = G4ThreeVector(0, 0, 0);
-   G4ThreeVector     Det_u    = G4ThreeVector(0, 0, 0);
-   G4ThreeVector     Det_v    = G4ThreeVector(0, 0, 0);
-   G4ThreeVector     Det_w    = G4ThreeVector(0, 0, 0);
-
-   G4int NumberOfDetector = m_DefinitionType.size();
-
-   for (G4int i = 0 ; i < NumberOfDetector ; i++) {
-      // By Point
-      if (m_DefinitionType[i]) {
-         // (u,v,w) unitary vector associated to telescope referencial
-         // (u,v) // to silicon plan
-         // w perpendicular to (u,v) plan and pointing outside
-         Det_u = m_TL[i] - m_BL[i];
-         Det_u = Det_u.unit();
-         Det_v = m_BR[i] - m_BL[i];
-         Det_v = Det_v.unit();
-         Det_w = Det_u.cross(Det_v);
-         Det_w = Det_w.unit();
-         // Passage Matrix from Lab Referential to Telescope Referential
-         // MUST2
-         Det_rot = new G4RotationMatrix(Det_u, Det_v, Det_w);
-         // translation to place Telescope
-         Det_pos =  (m_TR[i]+m_TL[i]+m_BL[i]+m_BR[i])/4 ;
+void ThinSi::ConstructDetector(G4LogicalVolume* world){
+
+  G4RotationMatrix* Det_rot  = NULL;
+  G4ThreeVector     Det_pos  = G4ThreeVector(0, 0, 0);
+  G4ThreeVector     Det_u    = G4ThreeVector(0, 0, 0);
+  G4ThreeVector     Det_v    = G4ThreeVector(0, 0, 0);
+  G4ThreeVector     Det_w    = G4ThreeVector(0, 0, 0);
+
+  G4int NumberOfDetector = m_DefinitionType.size();
+
+  for (G4int i = 0 ; i < NumberOfDetector ; i++) {
+    // By Point
+    if (m_DefinitionType[i]) {
+      // (u,v,w) unitary vector associated to telescope referencial
+      // (u,v) // to silicon plan
+      // w perpendicular to (u,v) plan and pointing outside
+      Det_u = m_TL[i] - m_BL[i];
+      Det_u = Det_u.unit();
+      Det_v = m_BR[i] - m_BL[i];
+      Det_v = Det_v.unit();
+      Det_w = Det_u.cross(Det_v);
+      Det_w = Det_w.unit();
+      // Passage Matrix from Lab Referential to Telescope Referential
+      // MUST2
+      Det_rot = new G4RotationMatrix(Det_u, Det_v, Det_w);
+      // translation to place Telescope
+      Det_pos =  (m_TR[i]+m_TL[i]+m_BL[i]+m_BR[i])/4 ;
+    }
+
+    // By Angle
+    else {
+      G4double Theta = m_Theta[i];
+      G4double Phi   = m_Phi[i];
+      //This part because if Phi and Theta = 0 equation are false
+      if (Theta == 0) Theta   = 0.0001;
+      if (Theta == 2*cos(0)) Theta   = 2 * acos(0) - 0.00001;
+      if (Phi   == 0) Phi = 0.0001;
+
+
+      // (u,v,w) unitary vector associated to telescope referencial
+      // (u,v) // to silicon plan
+      // w perpendicular to (u,v) plan and pointing ThirdStage
+      // Phi is angle between X axis and projection in (X,Y) plan
+      // Theta is angle between  position vector and z axis
+      G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad)   ;
+      G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad)   ;
+      G4double wZ = m_R[i] * cos(Theta / rad);
+      Det_w = G4ThreeVector(wX, wY, wZ);
+
+      // vector corresponding to the center of the module
+      G4ThreeVector CT = Det_w;
+
+      // vector parallel to one axis of silicon plane
+      G4double ii = cos(Theta / rad) * cos(Phi / rad);
+      G4double jj = cos(Theta / rad) * sin(Phi / rad);
+      G4double kk = -sin(Theta / rad);
+      G4ThreeVector Y = G4ThreeVector(ii, jj, kk);
+
+      Det_w = Det_w.unit();
+      Det_u = Det_w.cross(Y);
+      Det_v = Det_w.cross(Det_u);
+      Det_v = Det_v.unit();
+      Det_u = Det_u.unit();
+
+      // Passage Matrix from Lab Referential to Telescope Referential
+      // MUST2
+      Det_rot = new G4RotationMatrix(Det_u, Det_v, Det_w);
+      // Telescope is rotate of Beta angle around Det_v axis.
+      Det_rot->rotate(m_beta_u[i], Det_u);
+      Det_rot->rotate(m_beta_v[i], Det_v);
+      Det_rot->rotate(m_beta_w[i], Det_w);
+      // translation to place Telescope
+      Det_pos = Det_w + CT ;
+    }
+
+
+
+    VolumeMaker(i + 1 , Det_pos , Det_rot , world);
+  }
+
+  delete Det_rot ;
+}
+
+// Add Detector branch to the EventTree.
+// Called After DetecorConstruction::AddDetector Method
+void ThinSi::InitializeRootOutput(){
+  RootOutput *pAnalysis = RootOutput::getInstance();
+  TTree *pTree = pAnalysis->GetTree();
+  pTree->Branch("SSSD", "TSSSDData", &m_Event) ;
+}
+
+// Read sensitive part and fill the Root tree.
+// Called at in the EventAction::EndOfEventAvtion
+void ThinSi::ReadSensitive(const G4Event* event){
+  m_Event->Clear();
+  //////////////////////////////////////////////////////////////////////////////////////
+  //////////////////////// Used to Read Event Map of detector //////////////////////////
+  //////////////////////////////////////////////////////////////////////////////////////
+
+  // Si
+  G4THitsMap<G4int>*     DetNbrHitMap;  
+  G4THitsMap<G4int>*     StripNbrHitMap;    
+  G4THitsMap<G4double>*  EnergyHitMap;
+  G4THitsMap<G4double>*  TimeHitMap;
+
+  std::map<G4int, G4int*>::iterator DetNbr_itr     ;
+  std::map<G4int, G4int*>::iterator StripNbr_itr  ;
+  std::map<G4int, G4double*>::iterator Energy_itr ;
+  std::map<G4int, G4double*>::iterator Time_itr   ;
+  //////////////////////////////////////////////////////////////////////////////////////
+  //////////////////////////////////////////////////////////////////////////////////////
+  // Read the Scorer associate to the Silicon Strip
+
+  //DetectorNumber   
+  G4int DetNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/DetectorNumber");
+  DetNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(DetNbrCollectionID));
+  DetNbr_itr = DetNbrHitMap->GetMap()->begin();
+
+  //StripNumber   
+  G4int StripNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/StripNumber");
+  StripNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripNbrCollectionID));
+
+  //Energy
+  G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/StripEnergy");
+  EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID));
+
+  //Time
+  G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/StripTime");
+  TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID));
+
+  G4int sizeN = DetNbrHitMap      ->entries();
+  G4int sizeS = StripNbrHitMap    ->entries();
+  G4int sizeE = EnergyHitMap       ->entries();
+  G4int sizeT = TimeHitMap         ->entries();
+
+  // Loop on Det Number
+  for (G4int l = 0 ; l < sizeN ; l++) 
+  {
+    G4int N     =      *(DetNbr_itr->second);
+    G4int NTrackID  =   DetNbr_itr->first - N;
+
+    if (N > 0) 
+    {
+      m_Event->SetEnergyDetectorNbr(N);
+      m_Event->SetTimeDetectorNbr(N);
+
+      //  Strip Number
+      StripNbr_itr = StripNbrHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < sizeS ; h++) {
+        G4int STrackID  =   StripNbr_itr->first  - N ;
+        G4int S         = *(StripNbr_itr->second);
+
+        if (STrackID == NTrackID) {
+          m_Event->SetEnergyStripNbr(S);
+          m_Event->SetTimeStripNbr(S);
+        }
+
+        StripNbr_itr++;
       }
 
-      // By Angle
-      else {
-         G4double Theta = m_Theta[i];
-         G4double Phi   = m_Phi[i];
-         //This part because if Phi and Theta = 0 equation are false
-         if (Theta == 0) Theta   = 0.0001;
-         if (Theta == 2*cos(0)) Theta   = 2 * acos(0) - 0.00001;
-         if (Phi   == 0) Phi = 0.0001;
-         
-
-         // (u,v,w) unitary vector associated to telescope referencial
-         // (u,v) // to silicon plan
-         // w perpendicular to (u,v) plan and pointing ThirdStage
-         // Phi is angle between X axis and projection in (X,Y) plan
-         // Theta is angle between  position vector and z axis
-         G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad)   ;
-         G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad)   ;
-         G4double wZ = m_R[i] * cos(Theta / rad);
-         Det_w = G4ThreeVector(wX, wY, wZ);
-
-         // vector corresponding to the center of the module
-         G4ThreeVector CT = Det_w;
-
-         // vector parallel to one axis of silicon plane
-         G4double ii = cos(Theta / rad) * cos(Phi / rad);
-         G4double jj = cos(Theta / rad) * sin(Phi / rad);
-         G4double kk = -sin(Theta / rad);
-         G4ThreeVector Y = G4ThreeVector(ii, jj, kk);
-
-         Det_w = Det_w.unit();
-         Det_u = Det_w.cross(Y);
-         Det_v = Det_w.cross(Det_u);
-         Det_v = Det_v.unit();
-         Det_u = Det_u.unit();
-
-         // Passage Matrix from Lab Referential to Telescope Referential
-         // MUST2
-         Det_rot = new G4RotationMatrix(Det_u, Det_v, Det_w);
-         // Telescope is rotate of Beta angle around Det_v axis.
-         Det_rot->rotate(m_beta_u[i], Det_u);
-         Det_rot->rotate(m_beta_v[i], Det_v);
-         Det_rot->rotate(m_beta_w[i], Det_w);
-         // translation to place Telescope
-         Det_pos = Det_w + CT ;
+      //  Energy
+      Energy_itr = EnergyHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < sizeE ; h++) {
+        G4int ETrackID  =   Energy_itr->first  - N;
+        G4double E      = *(Energy_itr->second);
+
+        if (ETrackID == NTrackID) {
+          m_Event->SetEnergy( RandGauss::shoot(E, ResoEnergy ) );
+        }
+
+        Energy_itr++;
       }
 
 
+      //  Time
+      Time_itr = TimeHitMap->GetMap()->begin();
+      for (G4int h = 0 ; h < sizeT ; h++) {
+        G4int TTrackID  =   Time_itr->first   - N ;
+        G4double T     = *(Time_itr->second);
 
-      VolumeMaker(i + 1 , Det_pos , Det_rot , world);
-   }
+        if (TTrackID == NTrackID) {
+          m_Event->SetTime( RandGauss::shoot(T, ResoTime ) );
+        }
 
-   delete Det_rot ;
-}
+        Time_itr++;
+      }
 
-// Add Detector branch to the EventTree.
-// Called After DetecorConstruction::AddDetector Method
-void ThinSi::InitializeRootOutput()
-{
-   RootOutput *pAnalysis = RootOutput::getInstance();
-   TTree *pTree = pAnalysis->GetTree();
-   pTree->Branch("SSSD", "TSSSDData", &m_Event) ;
-}
+    }
 
-// Read sensitive part and fill the Root tree.
-// Called at in the EventAction::EndOfEventAvtion
-void ThinSi::ReadSensitive(const G4Event* event)
-{
-     m_Event->Clear();
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////// Used to Read Event Map of detector //////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-
-// Si
-   G4THitsMap<G4int>*     DetNbrHitMap;  
-   G4THitsMap<G4int>*     StripNbrHitMap;    
-   G4THitsMap<G4double>*  EnergyHitMap;
-   G4THitsMap<G4double>*  TimeHitMap;
-
-   std::map<G4int, G4int*>::iterator DetNbr_itr     ;
-   std::map<G4int, G4int*>::iterator StripNbr_itr  ;
-   std::map<G4int, G4double*>::iterator Energy_itr ;
-   std::map<G4int, G4double*>::iterator Time_itr   ;
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-   // Read the Scorer associate to the Silicon Strip
-
-      //DetectorNumber   
-   G4int DetNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/DetectorNumber");
-   DetNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(DetNbrCollectionID));
-   DetNbr_itr = DetNbrHitMap->GetMap()->begin();
-   
-   //StripNumber   
-   G4int StripNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/StripNumber");
-   StripNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripNbrCollectionID));
-
-   //Energy
-   G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/StripEnergy");
-   EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID));
-
-      //Time
-   G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/StripTime");
-   TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID));
-
-   G4int sizeN = DetNbrHitMap      ->entries();
-   G4int sizeS = StripNbrHitMap    ->entries();
-   G4int sizeE = EnergyHitMap       ->entries();
-   G4int sizeT = TimeHitMap         ->entries();
-  
-      // Loop on Det Number
-    for (G4int l = 0 ; l < sizeN ; l++) 
-            {
-           G4int N     =      *(DetNbr_itr->second);
-           G4int NTrackID  =   DetNbr_itr->first - N;
-         
-           if (N > 0) 
-                  {
-                        m_Event->SetEnergyDetectorNbr(N);
-                        m_Event->SetTimeDetectorNbr(N);
-                        
-                  //  Strip Number
-                    StripNbr_itr = StripNbrHitMap->GetMap()->begin();
-                    for (G4int h = 0 ; h < sizeS ; h++) {
-                        G4int STrackID  =   StripNbr_itr->first  - N ;
-                        G4int S         = *(StripNbr_itr->second);
-                              
-                        if (STrackID == NTrackID) {
-                             m_Event->SetEnergyStripNbr(S);
-                             m_Event->SetTimeStripNbr(S);
-                        }
-                        
-                        StripNbr_itr++;
-                       }
-                        
-                  //  Energy
-                    Energy_itr = EnergyHitMap->GetMap()->begin();
-                    for (G4int h = 0 ; h < sizeE ; h++) {
-                        G4int ETrackID  =   Energy_itr->first  - N;
-                        G4double E      = *(Energy_itr->second);
-
-                        if (ETrackID == NTrackID) {
-                           m_Event->SetEnergy( RandGauss::shoot(E, ResoEnergy ) );
-                        }
-                        
-                        Energy_itr++;
-                       }
-
-
-                    //  Time
-                    Time_itr = TimeHitMap->GetMap()->begin();
-                    for (G4int h = 0 ; h < sizeT ; h++) {
-                        G4int TTrackID  =   Time_itr->first   - N ;
-                        G4double T     = *(Time_itr->second);
-
-                        if (TTrackID == NTrackID) {
-                              m_Event->SetTime( RandGauss::shoot(T, ResoTime ) );
-                        }
-                        
-                        Time_itr++;
-                    }
-
-              }
-
-           DetNbr_itr++;
-         }
-    
-    // clear map for next event
-    
-    DetNbrHitMap   ->clear();
-    StripNbrHitMap ->clear();
-    EnergyHitMap   ->clear(); 
-    TimeHitMap     ->clear();    
+    DetNbr_itr++;
+  }
+
+  // clear map for next event
+
+  DetNbrHitMap   ->clear();
+  StripNbrHitMap ->clear();
+  EnergyHitMap   ->clear(); 
+  TimeHitMap     ->clear();    
 }
 
 
-void ThinSi::InitializeScorers()
-   {
+void ThinSi::InitializeScorers(){
 
-      //   Silicon Associate Scorer
-         m_StripScorer = new G4MultiFunctionalDetector("ThinSi_StripScorer");
-         
-         G4VPrimitiveScorer* DetNbr   = new GENERALSCORERS::PSDetectorNumber("DetectorNumber","ThinSi_", 0);
-         G4VPrimitiveScorer* StripNbr = new PSStripNumber("StripNumber",0,SiliconSize, NumberOfStrip); 
-         G4VPrimitiveScorer* Energy   = new GENERALSCORERS::PSEnergy("StripEnergy","ThinSi_", 0);         
-         G4VPrimitiveScorer* TOF      = new GENERALSCORERS::PSTOF("StripTime","ThinSi_", 0);                                 
-         
+  //   Silicon Associate Scorer
+  m_StripScorer = new G4MultiFunctionalDetector("ThinSi_StripScorer");
 
-      //and register it to the multifunctionnal detector
-         m_StripScorer->RegisterPrimitive(DetNbr);
-         m_StripScorer->RegisterPrimitive(StripNbr);
-         m_StripScorer->RegisterPrimitive(Energy);
-         m_StripScorer->RegisterPrimitive(TOF);
+  G4VPrimitiveScorer* DetNbr   = new GENERALSCORERS::PSDetectorNumber("DetectorNumber","ThinSi_", 0);
+  G4VPrimitiveScorer* StripNbr = new PSStripNumber("StripNumber",0,SiliconSize, NumberOfStrip); 
+  G4VPrimitiveScorer* Energy   = new GENERALSCORERS::PSEnergy("StripEnergy","ThinSi_", 0);         
+  G4VPrimitiveScorer* TOF      = new GENERALSCORERS::PSTOF("StripTime","ThinSi_", 0);                                 
 
-       //   Add All Scorer to the Global Scorer Manager
-        G4SDManager::GetSDMpointer()->AddNewDetector(m_StripScorer) ;
-      }
+
+  //and register it to the multifunctionnal detector
+  m_StripScorer->RegisterPrimitive(DetNbr);
+  m_StripScorer->RegisterPrimitive(StripNbr);
+  m_StripScorer->RegisterPrimitive(Energy);
+  m_StripScorer->RegisterPrimitive(TOF);
+
+  //   Add All Scorer to the Global Scorer Manager
+  G4SDManager::GetSDMpointer()->AddNewDetector(m_StripScorer) ;
+}
 
 ////////////////////////////////////////////////////////////////
 /////////////////Material Definition ///////////////////////////
 ////////////////////////////////////////////////////////////////
-void ThinSi::InitializeMaterial()
-   {
-
-       G4Element* N   = new G4Element("Nitrogen" , "N"  , 7  , 14.01  * g / mole);
-      G4Element* O   = new G4Element("Oxigen"   , "O"  , 8  , 16.00  * g / mole);
-
-      G4double a, z, density;
-      // Si
-      a = 28.0855 * g / mole;
-      density = 2.321 * g / cm3;
-      m_MaterialSilicon = new G4Material("Si", z = 14., a, density);
-
-      // Al
-      density = 2.702 * g / cm3;
-      a = 26.98 * g / mole;
-      m_MaterialAl = new G4Material("Al", z = 13., a, density);
-
-      //  Vacuum
-      density = 0.000000001 * mg / cm3;
-      m_MaterialVacuum = new G4Material("Vacuum", density, 2);
-      m_MaterialVacuum->AddElement(N, .7);
-      m_MaterialVacuum->AddElement(O, .3);
-   }
-
-       
+void ThinSi::InitializeMaterial(){
+
+  G4Element* N   = new G4Element("Nitrogen" , "N"  , 7  , 14.01  * g / mole);
+  G4Element* O   = new G4Element("Oxigen"   , "O"  , 8  , 16.00  * g / mole);
+
+  G4double a, z, density;
+  // Si
+  a = 28.0855 * g / mole;
+  density = 2.321 * g / cm3;
+  m_MaterialSilicon = new G4Material("Si", z = 14., a, density);
+
+  // Al
+  density = 2.702 * g / cm3;
+  a = 26.98 * g / mole;
+  m_MaterialAl = new G4Material("Al", z = 13., a, density);
+
+  //  Vacuum
+  density = 0.000000001 * mg / cm3;
+  m_MaterialVacuum = new G4Material("Vacuum", density, 2);
+  m_MaterialVacuum->AddElement(N, .7);
+  m_MaterialVacuum->AddElement(O, .3);
+}
+
+
diff --git a/NPSimulation/scripts/copyfiles.sh b/NPSimulation/scripts/copyfiles.sh
index 0e22fa6d0ae049ea69fd28134f49ce877196ed01..b963dec729314bc1767a84c99776ca84f71ab02d 100755
--- a/NPSimulation/scripts/copyfiles.sh
+++ b/NPSimulation/scripts/copyfiles.sh
@@ -42,7 +42,7 @@ do
       # only copy files associated to defined detector libraries
       if echo "$detectorlibs" | grep -q "$ldir" ; then
          # print informations
-         echo " + Copying files from $ldir directory..."
+         # echo " + Copying files from $ldir directory..."
          # enter directory
          cd $dir
          # loop on files in directory
diff --git a/NPSimulation/src/DetectorConstruction.cc b/NPSimulation/src/DetectorConstruction.cc
index dbc6c65a41ed7488386b0a3808df8add5a6a7b94..d181b4534109b2b13751065a289d82771ce827c1 100644
--- a/NPSimulation/src/DetectorConstruction.cc
+++ b/NPSimulation/src/DetectorConstruction.cc
@@ -139,23 +139,20 @@ DetectorConstruction::~DetectorConstruction(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4VPhysicalVolume* DetectorConstruction::Construct(){
   //------------------------------------------------------ materials
-  
   G4double a;  // atomic mass
   G4double z;  // atomic number
   G4double density;
   
-  
   G4Element* N = new G4Element("Nitrogen", "N", z = 7., a = 14.01 * g / mole);
   G4Element* O = new G4Element("Oxygen"  , "O", z = 8., a = 16.00 * g / mole);
   
   //  Vacuum
   density = 0.000000001 * mg / cm3;
   G4Material* Vacuum = new G4Material("Vacuum", density, 2);
-  Vacuum->AddElement(N, .7);
-  Vacuum->AddElement(O, .3);
+  Vacuum->AddElement(N,.7);
+  Vacuum->AddElement(O,.3);
   
   //------------------------------world volume
-  
   G4double world_x = 10.0 * m;
   G4double world_y = 10.0 * m;
   G4double world_z = 10.0 * m;
@@ -164,10 +161,9 @@ G4VPhysicalVolume* DetectorConstruction::Construct(){
   = new G4Box("world_box", world_x, world_y, world_z);
   
   world_log = new G4LogicalVolume(world_box, Vacuum, "world_log", 0, 0, 0);
-  
   world_phys = new G4PVPlacement(0, G4ThreeVector(), world_log, "world", 0, false, 0);
   
-  //   G4VisAttributes* VisAtt = new G4VisAttributes(G4Colour(0.2, 0.2, 0.2));
+  //G4VisAttributes* VisAtt = new G4VisAttributes(G4Colour(0.2, 0.2, 0.2));
   G4VisAttributes* VisAtt = new G4VisAttributes(G4VisAttributes::Invisible);
   world_log->SetVisAttributes(VisAtt);
   
diff --git a/NPSimulation/src/EventGeneratorTwoBodyReaction.cc b/NPSimulation/src/EventGeneratorTwoBodyReaction.cc
index 0a421521c0b029f39cc293e782bbc89572e498e9..7cc5671b00af05f565a41b2776e0577addf819a4 100644
--- a/NPSimulation/src/EventGeneratorTwoBodyReaction.cc
+++ b/NPSimulation/src/EventGeneratorTwoBodyReaction.cc
@@ -126,6 +126,9 @@ void EventGeneratorTwoBodyReaction::GenerateEvent(G4Event* anEvent){
   G4int HeavyZ = m_Reaction->GetNucleus4()->GetZ() ;
   G4int HeavyA = m_Reaction->GetNucleus4()->GetA() ;
   
+  // Generate the excitation energy if a distribution is given
+  m_Reaction->ShootRandomExcitationEnergy();
+
   G4ParticleDefinition* HeavyName
   = G4ParticleTable::GetParticleTable()->GetIon(HeavyZ, HeavyA, m_Reaction->GetExcitation4()*MeV);
   
diff --git a/NPSimulation/vis.mac b/NPSimulation/vis.mac
index b85652b8a2f9da8f8f3daf162bcb94b136494303..9150d12e36fbabcfe951c94dd7357592d0517075 100644
--- a/NPSimulation/vis.mac
+++ b/NPSimulation/vis.mac
@@ -8,7 +8,7 @@
 /run/verbose 2
 #
 # Use this open statement to create an OpenGL view:
-#/vis/open OGLIQt 600x600-0+0
+/vis/open OGLIQt 600x600-0+0
 #
 # Use this open statement to create a .prim file suitable for
 # viewing in DAWN:
@@ -20,7 +20,7 @@
 #
 # Use this open statement to create a .wrl file suitable for
 # viewing in a VRML viewer:
-/vis/open VRML2FILE
+#/vis/open VRML2FILE
 #
 # Disable auto refresh and quieten vis messages whilst scene and
 # trajectories are established: