From e644812ef65d87444e29e19d1071e5c68c4f99fe Mon Sep 17 00:00:00 2001
From: Unknown <unknown>
Date: Wed, 2 Oct 2013 10:00:25 +0000
Subject: [PATCH]

---
 NPAnalysis/10He_Riken/Analysis                | Bin 0 -> 57698 bytes
 NPAnalysis/10He_Riken/Makefile                |   6 +
 NPAnalysis/10He_Riken/RunToTreat.txt          |   4 +
 .../10He_Riken/include/DetectorManager.hh     |  39 +++
 .../10He_Riken/include/ObjectManager.hh       | 117 +++++++
 NPAnalysis/10He_Riken/macro/CrossSection.c    | 121 ++++++++
 NPAnalysis/10He_Riken/macro/TimeOfFlight.c    |  14 +
 NPAnalysis/10He_Riken/macro/affich.c          | 291 ++++++++++++++++++
 NPAnalysis/10He_Riken/macro/efficiency.c      |  58 ++++
 NPAnalysis/10He_Riken/macro/hit.c             |  44 +++
 NPAnalysis/10He_Riken/src/Analysis.cc         |  80 +++++
 NPAnalysis/10He_Riken/src/DetectorManager.cc  | 228 ++++++++++++++
 NPAnalysis/10He_Riken/src/GNUmakefile         |  44 +++
 NPSimulation/src/ThinSi.cc                    |  12 +-
 14 files changed, 1052 insertions(+), 6 deletions(-)
 create mode 100755 NPAnalysis/10He_Riken/Analysis
 create mode 100644 NPAnalysis/10He_Riken/Makefile
 create mode 100644 NPAnalysis/10He_Riken/RunToTreat.txt
 create mode 100644 NPAnalysis/10He_Riken/include/DetectorManager.hh
 create mode 100644 NPAnalysis/10He_Riken/include/ObjectManager.hh
 create mode 100644 NPAnalysis/10He_Riken/macro/CrossSection.c
 create mode 100644 NPAnalysis/10He_Riken/macro/TimeOfFlight.c
 create mode 100644 NPAnalysis/10He_Riken/macro/affich.c
 create mode 100644 NPAnalysis/10He_Riken/macro/efficiency.c
 create mode 100644 NPAnalysis/10He_Riken/macro/hit.c
 create mode 100644 NPAnalysis/10He_Riken/src/Analysis.cc
 create mode 100644 NPAnalysis/10He_Riken/src/DetectorManager.cc
 create mode 100644 NPAnalysis/10He_Riken/src/GNUmakefile

diff --git a/NPAnalysis/10He_Riken/Analysis b/NPAnalysis/10He_Riken/Analysis
new file mode 100755
index 0000000000000000000000000000000000000000..e4e550e76ef53467904d0205641e15791e9579a0
GIT binary patch
literal 57698
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
CBdY=c

literal 0
HcmV?d00001

diff --git a/NPAnalysis/10He_Riken/Makefile b/NPAnalysis/10He_Riken/Makefile
new file mode 100644
index 000000000..f5bfeb69f
--- /dev/null
+++ b/NPAnalysis/10He_Riken/Makefile
@@ -0,0 +1,6 @@
+
+Analyse:
+	make -C ./src
+	
+clean:
+	make clean -C ./src
diff --git a/NPAnalysis/10He_Riken/RunToTreat.txt b/NPAnalysis/10He_Riken/RunToTreat.txt
new file mode 100644
index 000000000..008354fd1
--- /dev/null
+++ b/NPAnalysis/10He_Riken/RunToTreat.txt
@@ -0,0 +1,4 @@
+TTreeName 
+	SimulatedTree
+RootFileName 
+	../../Outputs/Simulation/mySimul.root
diff --git a/NPAnalysis/10He_Riken/include/DetectorManager.hh b/NPAnalysis/10He_Riken/include/DetectorManager.hh
new file mode 100644
index 000000000..eb49f01ef
--- /dev/null
+++ b/NPAnalysis/10He_Riken/include/DetectorManager.hh
@@ -0,0 +1,39 @@
+#ifndef DetectorManager_h
+#define DetectorManager_h
+
+//	NPL
+#include "VDetector.h"
+
+//	STL
+#include <string>
+#include <map>
+
+using namespace std ;
+using namespace NPA ;
+
+// This class manage a map of virtual detector
+
+class DetectorManager
+	{
+		public:
+			DetectorManager()		;
+			~DetectorManager()		;
+			
+		public:
+			//	Read stream at Path and pick-up Token declaration of Detector
+			void	ReadConfigurationFile(string Path)	;
+			void	BuildPhysicalEvent()				;
+			void	BuildSimplePhysicalEvent()			;
+			void	InitializeRootInput()				;
+			void	InitializeRootOutput()				;
+			void	AddDetector(string,VDetector*)		;
+			void	ClearEventPhysics()					;
+			void	ClearEventData()					;
+
+		public:	//	The map containning all detectors
+			//	Using a Map one can access to any detector using its name
+			map<string,VDetector*>	m_Detector	;
+				
+	};
+
+#endif 
diff --git a/NPAnalysis/10He_Riken/include/ObjectManager.hh b/NPAnalysis/10He_Riken/include/ObjectManager.hh
new file mode 100644
index 000000000..e0a66004b
--- /dev/null
+++ b/NPAnalysis/10He_Riken/include/ObjectManager.hh
@@ -0,0 +1,117 @@
+// You can use this file to declare your spectra, file, energy loss , ... and whatever you want.
+// This way you can remove all unnecessary declaration in the main programm.
+// In order to help debugging and organizing we use Name Space.
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+// -------------------------------------- VARIOUS INCLUDE ---------------------------------------
+
+// NPA
+#include "DetectorManager.hh"
+#include "Must2Array.h"
+
+// STL C++
+#include <iostream>
+#include <fstream>
+#include <sstream>
+#include <string>
+#include <cmath>
+#include <cstdlib>
+
+// ROOT
+#include <TROOT.h>
+#include <TChain.h>
+#include <TFile.h>
+#include <TLeaf.h>
+#include <TVector3.h>
+#include <TRandom.h>
+
+// NPL
+#include "TMust2Data.h"
+#include "TMust2Physics.h"
+#include "NPReaction.h"
+#include "RootInput.h"
+#include "RootOutput.h"
+
+// Use CLHEP System of unit and Physical Constant
+#include "CLHEP/Units/GlobalSystemOfUnits.h"
+#include "CLHEP/Units/PhysicalConstants.h"
+
+
+// ----------------------------------------------------------------------------------------------
+double ThetaCalculation (TVector3 A , TVector3 B) ;
+/////////////////////////////////////////////////////////////////////////////////////////////////
+// ----------------------------------- DOUBLE, INT, BOOL AND MORE -------------------------------
+namespace VARIABLE
+	{
+		//	Declare your Variable here:
+		
+			double X1,Y1,Z1				;
+			int N1,N2 = 0				;
+			bool check= false			;
+	
+		//	A Usefull Simple Random Generator
+			TRandom Rand;
+	}
+	 
+using namespace VARIABLE ;
+// ----------------------------------------------------------------------------------------------
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+// -----------------------------------GRAPH------------------------------------------------------
+#include <TObject.h>
+#include <TH1.h>
+#include <TH1F.h>
+#include <TH2.h>
+#include <TH2F.h>
+#include <TGraph2D.h>
+
+namespace GRAPH
+	{
+		//	Declare your Spectra here:
+	
+			TH1F *myHist1D = new TH1F("Hist1D","Histogramm 1D ; x ; count", 1000 , -5 , 5 )					;
+	
+			TH2F *myHist2D = new TH2F("Hist2D","Histogramm 2D ; x ; y ", 128 , 1 , 128 , 128 , 1 , 128 )	;
+
+	}
+
+using namespace GRAPH ;
+// --------------------------------------------------------------------------------------------
+
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////
+// -----------------------------------CUT------------------------------------------------------
+#include <TCutG.h>
+namespace CUT
+	{
+		//	Declare your Cut here:
+
+	}
+
+using namespace CUT ;
+// --------------------------------------------------------------------------------------------
+
+
+
+////////////////////////////////////////////////////////////////////////////////////////////////
+// -----------------------------------ENERGY LOSS----------------------------------------------
+#include "NPEnergyLoss.h"
+using namespace NPL ;
+namespace ENERGYLOSS
+	{
+	
+		//	Declare your Energy loss here	:
+	/*		EnergyLoss ProtonTarget = EnergyLoss 	(	"CD2.txt" 	,
+														100 		,
+														1			);
+	*/
+	}
+	
+using namespace ENERGYLOSS ;
+// ----------------------------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////////////
+
+
diff --git a/NPAnalysis/10He_Riken/macro/CrossSection.c b/NPAnalysis/10He_Riken/macro/CrossSection.c
new file mode 100644
index 000000000..5640efb44
--- /dev/null
+++ b/NPAnalysis/10He_Riken/macro/CrossSection.c
@@ -0,0 +1,121 @@
+{
+	gROOT->Reset();
+	gStyle->SetOptStat(1);
+	gStyle->SetPalette(51,0);
+	///////////////////////
+	///////////////////////	
+	
+		double Pi = 3.141592654 	;
+
+///Usefull myAngleInRad * RadToDeg = myAngle In deg :p
+	double DegToRad = Pi/180.   ; // 2Pi/360 = Pi/180
+	double RadToDeg = 180./Pi   ; // 360/2Pi = 180/Pi
+	
+TFile *file0 = TFile::Open("./Result/myResult.root");
+	
+	cEA = new TCanvas("cEA","Kinematic Line" ,100,100,900,900);
+	hEA->Draw("COLZ");
+	cEx = new TCanvas("cEx","Excitation Energy" ,100,100,600,600);
+	hEx->Draw();
+	
+	cEHexa = new TCanvas("cEHexa","Hexaneutron bound Energy" ,100,100,600,600);
+	hEHexa->Draw();
+	
+	cCM = new TCanvas("cCm" , "Cross Section (CM)" , 100 , 100 , 900, 900) ;
+	hThetaCM->Draw();
+	
+	vector<double> relative_error;
+	double NumberOfHitX=0;
+	ifstream efficFile;
+	efficFile.open("./17cm.efficiency");
+	string EffString, ThetaString;
+	double xxx = hThetaLabCM->GetNbinsY();
+	
+	for(Int_t i = 1 ; i < hThetaLabCM->GetNbinsX() ; i++)
+		{
+			// Calculate Relative error	
+			NumberOfHitX=hThetaLabCM->Integral(i, i, 1, xxx );			
+			if(NumberOfHitX!=0)relative_error.push_back( 1. / ( sqrt(NumberOfHitX) ) );
+			else {relative_error.push_back(0) ;}
+		}
+		
+	for(Int_t j = 1 ; j < hThetaLabCM->GetNbinsY() ; j++)
+		{
+			//Efficacity correction
+			efficFile >> ThetaString >> EffString;
+			double Eff = atoi(EffString.c_str());
+			for(Int_t i = 1 ; i < hThetaLabCM->GetNbinsX() ; i++)
+				{
+				if (Eff!=0)
+					{
+					double pipo = (hThetaLabCM->GetCellContent(i,j))/(Eff) ;
+					hThetaLabCM->SetCellContent( i, j, pipo );
+					}
+				else hThetaLabCM->SetCellContent( i, j, 0 );
+				}
+		}
+		
+		TH1D* hCrossSection = new TH1D();
+		hCrossSection = hThetaLabCM->ProjectionX("Cross Section", 0, -1, "")	;
+		
+		for(Int_t i = 1 ; i < hCrossSection->GetNbinsX() ; i++)
+			{
+				// Calculate Error		
+				hCrossSection->SetBinContent(i, 
+				NumberOfHitX=hCrossSection->GetBinContent(i)/(sin(hCrossSection->GetBinCenter(i)*DegToRad) ));
+				double error=NumberOfHitX*relative_error[i];
+				hCrossSection->SetBinError(i,error);
+			}
+	
+	hCrossSection->Draw();
+	
+	string Path="../Data/CrossSection/11Li(d,3He)10He.txt";
+	ifstream CrossSectionFile;
+	CrossSectionFile.open(Path.c_str());
+	if( CrossSectionFile.is_open() ) 
+		cout << " file " << Path << " loading " << endl;
+	else{
+		cout << " Error, no file " << Path << " found" << endl; return;}
+	
+	
+	//Normalisation:
+	//Int_t Maximum_Bin 		= hCrossSection->GetMaximumBin()			;
+	Int_t Maximum_Bin 		= 3 										;
+	Double_t Maximum_theta 	= hCrossSection->GetBinCenter(Maximum_Bin)	;
+	Double_t Bin_Width		= hCrossSection->GetBinWidth(Maximum_Bin)	;
+	Double_t Maximum  		= hCrossSection->GetBinContent(Maximum_Bin)	;
+	
+	Double_t Normalisation_Factor = 0	;
+	Double_t ThetaVal = 0				;
+	Double_t CSVal = 0					;
+	TMarker marker						;
+	string theta,CS						;
+	
+	while( !CrossSectionFile.eof() &&  ThetaVal<60)	
+	{
+	CrossSectionFile >> theta >> CS ;
+	
+	ThetaVal=atof(theta.c_str())	;
+	
+	if(ThetaVal>(Maximum_theta-Bin_Width/1000) && ThetaVal<(Maximum_theta+Bin_Width/1000) ) 
+		{
+		CSVal=atof(CS.c_str())	;
+		Normalisation_Factor =	Maximum/CSVal;
+		} 	
+	}
+	CrossSectionFile.close();
+	CrossSectionFile.open(Path.c_str());
+
+	//Reading Cross Section
+	
+	ThetaVal=0;
+	while( !CrossSectionFile.eof() &&  ThetaVal<60)	
+	{
+	
+	CrossSectionFile >> theta >> CS ;
+	CSVal=atof(CS.c_str())			;
+	ThetaVal=atof(theta.c_str())	; 	
+	marker->DrawMarker(ThetaVal,CSVal*Normalisation_Factor	)	;
+	}
+	
+}
diff --git a/NPAnalysis/10He_Riken/macro/TimeOfFlight.c b/NPAnalysis/10He_Riken/macro/TimeOfFlight.c
new file mode 100644
index 000000000..916932fc0
--- /dev/null
+++ b/NPAnalysis/10He_Riken/macro/TimeOfFlight.c
@@ -0,0 +1,14 @@
+{
+
+	gROOT->Reset();
+	gStyle->SetOptStat(1);
+	gStyle->SetPalette(51,0);
+	//gStyle->SetPalette(1);
+	///////////////////////
+	///////////////////////	
+TFile *file0 = TFile::Open("./Result/myResult.root");
+
+   TCanvas* cTOF = new TCanvas("cTOF","Time of Flight" ,10,10,800,800);
+	hTOF1234->Draw("COLZ"); 
+	
+}
diff --git a/NPAnalysis/10He_Riken/macro/affich.c b/NPAnalysis/10He_Riken/macro/affich.c
new file mode 100644
index 000000000..2c8537ea6
--- /dev/null
+++ b/NPAnalysis/10He_Riken/macro/affich.c
@@ -0,0 +1,291 @@
+{
+
+	gROOT->Reset();
+	gStyle->SetOptStat(1);
+	//gStyle->SetPalette(51,0);
+	gStyle->SetPalette(1);
+	///////////////////////
+	///////////////////////	
+TFile *file0 = TFile::Open("./Result/myResult.root");
+
+/*   TCanvas* cTOF = new TCanvas("cTOF","Time of Flight" ,10,10,800,800);
+	cTOF->Divide(3,2);
+	
+	cTOF->cd(1);
+	hTOF1->Draw("COLZ"); 
+	
+	cTOF->cd(2);
+	hTOF2->Draw("COLZ"); 
+	
+	cTOF->cd(3);
+	hTOF3->Draw("COLZ"); 
+	
+	cTOF->cd(4);
+	hTOF4->Draw("COLZ"); 
+	
+	cTOF->cd(5);
+	hTOF5->Draw("COLZ"); */
+	
+	double Pi = 3.141592654 	;
+	double DegToRad = Pi/180.   ; // 2Pi/360 = Pi/180
+
+/*	vector<double> relative_error;
+	double NumberOfHitX=0;
+	cTheta2D = new TCanvas("cTheta2d","Cross Section" ,100,100,900,900);
+	hThetaLabCM->Draw("COLZ");*/
+	cTheta = new TCanvas("cTheta","Cross Section" ,100,100,900,900);
+	hTheta->Draw();
+/*	ifstream efficFile;
+	
+	efficFile.open("./efficiency/20cm2.efficiency");
+	string EffString, ThetaString;
+	double xxx = hThetaLabCM->GetNbinsY();
+	
+	for(Int_t i = 1 ; i < hThetaLabCM->GetNbinsX() ; i++)
+		{
+			// Calculate Relative error	
+			NumberOfHitX=hThetaLabCM->Integral(i, i, 1, xxx );			
+			if(NumberOfHitX!=0)relative_error.push_back( ( sqrt(NumberOfHitX) ) / (NumberOfHitX) );
+			else {relative_error.push_back(0) ;}
+		}
+		
+	for(Int_t j = 1 ; j < hThetaLabCM->GetNbinsY() ; j++)
+		{
+			//Efficacity correction
+			efficFile >> ThetaString >> EffString;
+			double Eff = atoi(EffString.c_str());
+			for(Int_t i = 1 ; i < hThetaLabCM->GetNbinsX() ; i++)
+				{
+				if (Eff!=0)
+					{
+					double pipo =  (hThetaLabCM->GetCellContent(i,j))/(Eff/100) ;
+					hThetaLabCM->SetCellContent( i, j, pipo );
+					}
+				else hThetaLabCM->SetCellContent( i, j, 0 );
+				}
+		}
+		
+		
+		TH1D* hCrossSection = new TH1D();
+		hCrossSection = hThetaLabCM->ProjectionX("Cross Section", 0, -1, "")	;
+		
+		
+		for(Int_t i = 1 ; i < hCrossSection->GetNbinsX() ; i++)
+			{
+				// Calculate Error		
+				NumberOfHitX=hCrossSection->GetBinContent(i);			
+				double error=NumberOfHitX*relative_error[i];
+				hCrossSection->SetBinError(i,error);
+			}
+	
+	hCrossSection->Draw();
+	
+/*	ofstream efficFile;
+	efficFile.open("20cm.efficiency");
+
+	for(Int_t i = 1 ; i < hTheta->GetNbinsX() ; i++)
+		{
+		
+		Double_t Flux = 100000*sin(hTheta->GetBinCenter(i)*DegToRad)*2*DegToRad/2; 
+		
+			if(Flux!=0)
+			{	
+			Double_t Efficiency = ( ( Flux - hTheta->GetBinContent(i) ) / Flux ) * 100 ;
+			
+			hTheta->SetBinContent(i, 100-Efficiency ) ;
+			
+	        efficFile << hTheta->GetBinCenter(i) << " " << 100-Efficiency << endl;
+			}
+			
+			else hTheta->SetBinContent(i, 0 );
+		}
+	
+	
+		//hTheta->Draw();*/
+
+	//efficiency correction and error bar calculation
+/*	ifstream efficFile;
+	efficFile.open("./efficiency/20cmCM.efficiency");
+	string EffString, ThetaString;
+	double Eff, relative_error, error, toto ;
+
+	for(Int_t i = 1 ; i < hThetaCM->GetNbinsX() ; i++)
+		{
+		
+			efficFile >> ThetaString >> EffString;	
+			Eff = atoi(EffString.c_str());
+			if(hThetaCM->GetBinContent(i)!=0)relative_error = sqrt(hThetaCM->GetBinContent(i))/(hThetaCM->GetBinContent(i));
+						
+			toto=hThetaCM->GetBinContent(i)*(100-Eff)	;
+			hThetaCM->SetBinContent(i, toto) ;
+			
+			error=hThetaCM->GetBinContent(i)*relative_error;
+	        hThetaCM->SetBinError(i,error);
+		}*/
+	
+
+	
+	
+	//hThetaCM->Draw();
+
+/*	string Path="/home/Adrien/Desktop/geant/Simulation/Data/CrossSection/11Li(d,3He)10He.txt";
+	ifstream CrossSectionFile;
+	CrossSectionFile.open(Path.c_str());
+	if( CrossSectionFile.is_open() ) 
+		cout << " file " << Path << " loading " << endl;
+	else{
+		cout << " Error, no file " << Path << " found" << endl; return;}
+	
+	
+	//Normalisation:
+	Int_t Maximum_Bin 		= hCrossSection->GetMaximumBin()			;
+	Double_t Maximum_theta 	= hCrossSection->GetBinCenter(Maximum_Bin)	;
+	Double_t Bin_Width		= hCrossSection->GetBinWidth(Maximum_Bin)	;
+	Double_t Maximum  		= hCrossSection->GetBinContent(Maximum_Bin)	;
+	
+	Double_t Normalisation_Factor=0;
+	
+	
+	
+	Double_t ThetaVal=0	;
+	Double_t CSVal=0	;
+	TMarker marker		;
+	string theta,CS		;
+	
+	while( !CrossSectionFile.eof() &&  ThetaVal<60)	
+	{
+	CrossSectionFile >> theta >> CS ;
+	
+	ThetaVal=atof(theta.c_str())	;
+	
+	if(ThetaVal>(Maximum_theta-Bin_Width/4) && ThetaVal<(Maximum_theta+Bin_Width/4) ) 
+		{
+		CSVal=atof(CS.c_str())	;
+		Normalisation_Factor =	Maximum/CSVal;
+		} 	
+	}
+	CrossSectionFile.close();
+	CrossSectionFile.open(Path.c_str());
+
+	//Reading Cross Section
+	
+	ThetaVal=0;
+	while( !CrossSectionFile.eof() &&  ThetaVal<60)	
+	{
+	
+	CrossSectionFile >> theta >> CS ;
+	CSVal=atof(CS.c_str())			;
+	ThetaVal=atof(theta.c_str())	; 	
+	marker->DrawMarker(ThetaVal,CSVal*Normalisation_Factor)		;
+	}
+	
+	
+	
+/*	
+	//Normalisation:
+	Double_t Maximum_Bin 			= hTheta->GetMaximumBin()			 ;
+	Double_t Maximum				= hTheta->GetBinContent(Maximum_Bin) ;
+		
+	Double_t Normalisation_Factor	= Maximum/3.;
+	
+	
+	
+	//Reading Cross Section
+	Double_t ThetaVal=0	;
+	Double_t CSVal=0	;
+	TMarker marker		;
+	string theta,CS		;
+	
+	while( !CrossSectionFile.eof() &&  ThetaVal<60)	
+	{
+	
+	CrossSectionFile >> theta >> CS ;
+	CSVal=atof(CS.c_str())			;
+	ThetaVal=atof(theta.c_str())	; 
+	
+	ThetaVal=0.000479597*pow(ThetaVal,3)-0.0670771*pow(ThetaVal,2)+3.08149*ThetaVal-0.339958 ;
+	
+	marker->DrawMarker(ThetaVal,CSVal*Normalisation_Factor)		;
+	}
+//	cTheta->SetLogy(1);
+	
+	
+	
+	
+	/*
+	cKine = new TCanvas("cKine","Kinematics lines" ,10,10,800,800);
+	hKine->Draw("COLZ");*/
+	
+/*	cKineInit = new TCanvas("cKineInit","Initial Kinematics lines" ,100,100,600,600);
+	hKineInit->Draw("COLZ");
+	
+	cEDE = new TCanvas("EDE","EDE add Strip" ,100,100,600,600);
+	hEDEAddStrip->Draw("COLZ");
+/*	cG = new TCanvas("cG","Strip position",500,100,800,600);
+	cG->Divide(3,2);
+
+	cG->cd(1);
+	Agraph2D->Draw("P0")	;
+	cG->cd(2);
+	Bgraph2D->Draw("P0")	;
+	cG->cd(3);
+	Cgraph2D->Draw("P0")	;
+	cG->cd(4);
+	Dgraph2D->Draw("P0")	;
+	cG->cd(5);
+	Egraph2D->Draw("P0")	;
+	
+	cG2 = new TCanvas("cG2","all Strip position",500,100,800,600);
+	TOTgraph2D->Draw("P0")	;
+	*/
+	cH = new TCanvas("cH","Hit density",500,100,1000,800);
+	cH->Divide(3,2);
+	
+	cH->cd(1);
+	hHIT4->Draw("COLZ");
+	cH->cd(2);
+	hHIT2->Draw("COLZ");
+	cH->cd(3);
+	hHIT5->Draw("COLZ");
+	cH->cd(4);
+	hHIT1->Draw("COLZ");
+	cH->cd(5);
+	hHIT3->Draw("COLZ");
+    cH->cd(6);
+    hThetaHeavy->Draw();
+    
+/*	cH->cd(5);
+	hXZ->Draw("COLZ");
+	cH->cd(6);
+	hXY->Draw("COLZ");
+	
+	cEDE = new TCanvas("cEDE","EDE indentification Spectra",500,100,1000,800);
+	cEDE->Divide(3,2);
+	
+	cEDE->cd(1);
+	hEDE1->Draw("COLZ");
+	cEDE->cd(2);
+	hEDE2->Draw("COLZ");
+	cEDE->cd(3);
+	hEDE3->Draw("COLZ");
+	cEDE->cd(4);
+	hEDE4->Draw("COLZ");
+	cEDE->cd(5);
+	hEDE5->Draw("COLZ");
+	cEDE->cd(6);
+	TH2F* hEDET= new TH2F("hEDET","",4000,-1,600, 400, -1, 25)	; 
+	hEDET->Add(hEDE1);
+	hEDET->Add(hEDE2);
+	hEDET->Add(hEDE3);
+	hEDET->Add(hEDE4);
+	hEDET->Draw("CLOZ");*/
+	
+	cEx = new TCanvas("cEx","Excitation Energy" ,100,100,600,600);
+	hEx->Draw();
+	/*cE = new TCanvas("cE","Light Energy" ,500,100,1000,800);
+	cE->Divide(2);
+	cE->cd(1);
+	hE1234->Draw();
+	cE->cd(2);
+	hE5->Draw();*/
+}
diff --git a/NPAnalysis/10He_Riken/macro/efficiency.c b/NPAnalysis/10He_Riken/macro/efficiency.c
new file mode 100644
index 000000000..9a04af185
--- /dev/null
+++ b/NPAnalysis/10He_Riken/macro/efficiency.c
@@ -0,0 +1,58 @@
+{
+	gROOT->Reset();
+	gStyle->SetOptStat(1);
+	gStyle->SetPalette(51,0);
+	///////////////////////
+	///////////////////////	
+TFile *file0 = TFile::Open("./Result/myResult.root");
+	
+	double Pi = 3.141592654 	;
+	double DegToRad = Pi/180.   ; // 2Pi/360 = Pi/180
+
+	
+	ofstream efficFile;
+	efficFile.open("12cm.efficiency");
+
+	for(Int_t i = 1 ; i < hTheta->GetNbinsX() ; i++)
+		{	
+		Double_t Flux = 1000000./2. * sin(hTheta->GetBinCenter(i)*DegToRad) * (2*DegToRad) ;  
+		
+			if(Flux!=0)
+			{	
+			Double_t Efficiency = 100*( (hTheta->GetBinContent(i)) / Flux );
+			hTheta->SetBinContent(i, Efficiency ) ;
+			}
+			
+			else hTheta->SetBinContent(i, 0 );
+			
+			efficFile << hTheta->GetBinCenter(i) << " " << Efficiency << endl;
+		}
+		
+	cEff = new TCanvas("cEff","Efficiency" ,100,100,600,600);
+	hTheta->Draw();
+	
+	cHit = new TCanvas("cHit","Hit" ,100,100,600,600);
+	hXY->Draw("COLZ");
+	
+	cHit2 = new TCanvas("cHit2","Hit" ,100,100,600,600);
+	cHit2->Divide(3,2);
+	
+	cHit2->cd(1);
+	hXY1->Draw("COLZ");
+	
+	cHit2->cd(2);
+	hXY2->Draw("COLZ");
+	
+	cHit2->cd(3);
+	hXY3->Draw("COLZ");
+	
+	cHit2->cd(4);
+	hXY4->Draw("COLZ");
+	
+	cHit2->cd(5);
+	hXY5->Draw("COLZ");
+	
+	cHit2->cd(6);
+	hXY6->Draw("COLZ");
+	
+}
diff --git a/NPAnalysis/10He_Riken/macro/hit.c b/NPAnalysis/10He_Riken/macro/hit.c
new file mode 100644
index 000000000..50db19da5
--- /dev/null
+++ b/NPAnalysis/10He_Riken/macro/hit.c
@@ -0,0 +1,44 @@
+{
+	gROOT->Reset();
+	gStyle->SetOptStat(1);
+	gStyle->SetPalette(51,0);
+	///////////////////////
+	///////////////////////	
+TFile *file0 = TFile::Open("./Result/myResult.root");
+		
+	cEff = new TCanvas("cEff","Theta Distribution" ,100,100,600,600);
+	hTheta->Draw();
+	
+	
+	cCM = new TCanvas("cCm" , "ThetaCM" , 100 , 100 , 600, 600) ;
+	hThetaCM->Draw();
+	
+	cHit = new TCanvas("cHit","Hit" ,100,100,600,600);
+	hXY->Draw("COLZ");
+	
+	
+	cHit2 = new TCanvas("cHit2","Hit" ,100,100,600,600);
+	cHit2->Divide(3,2);
+	
+	cHit2->cd(1);
+	hXY1->Draw("COLZ");
+	
+	cHit2->cd(2);
+	hXY2->Draw("COLZ");
+	
+	cHit2->cd(3);
+	hXY3->Draw("COLZ");
+	
+	cHit2->cd(4);
+	hXY4->Draw("COLZ");
+	
+	cHit2->cd(5);
+	hXY5->Draw("COLZ");
+	
+	cHit2->cd(6);
+	hXY6->Draw("COLZ");
+	
+	cEx = new TCanvas("cEx","Excitation Energy" ,100,100,300,300);
+	hEx->Draw();
+	
+}
diff --git a/NPAnalysis/10He_Riken/src/Analysis.cc b/NPAnalysis/10He_Riken/src/Analysis.cc
new file mode 100644
index 000000000..c06a0e94a
--- /dev/null
+++ b/NPAnalysis/10He_Riken/src/Analysis.cc
@@ -0,0 +1,80 @@
+#include "ObjectManager.hh"
+
+using namespace std;
+
+int main(int argc,char** argv)
+{	
+	
+	if(argc!=4) 
+		{
+			cout << 
+			"you need to specify both a Reaction file and a Detector file such as : Analysis 	myReaction.reaction myDetector.detector runToRead.run" 
+			<< endl;
+			return 0;
+		}
+	
+	string reactionfileName 	= argv[1]	;
+	string detectorfileName 	= argv[2]	;
+	string runToReadfileName 	= argv[3]	;
+	
+	//	First of All instantiate RootInput and Output
+	//	Detector will be attached later
+	RootInput:: getInstance(runToReadfileName)	;
+	RootOutput::getInstance("Analysis/10HeRiken_AnalyzedData", "AnalyzedTree")					;
+	
+	//	Instantiate a Reaction
+	NPL::Reaction* myReaction = new Reaction					;
+	myReaction	->	ReadConfigurationFile(reactionfileName)		;
+
+		//	Instantiate the detector using a file 
+	DetectorManager* myDetector = new DetectorManager 			;
+	myDetector	->	ReadConfigurationFile(detectorfileName)		;
+	
+	//	Attach more branch to the output
+	double Ex = 0 ; double EE = 0 ; double TT = 0 ; double X = 0 ; double Y = 0 ; int det ;
+	RootOutput::getInstance()->GetTree()->Branch("ExcitationEnergy",&Ex,"Ex/D") ;
+	RootOutput::getInstance()->GetTree()->Branch("E",&EE,"EE/D") ;
+	RootOutput::getInstance()->GetTree()->Branch("A",&TT,"TT/D") ;
+	RootOutput::getInstance()->GetTree()->Branch("X",&X,"X/D") ;
+	RootOutput::getInstance()->GetTree()->Branch("Y",&Y,"Y/D") ;
+	
+	// Get Must2 Pointer:
+	MUST2Array* M2 = (MUST2Array*) myDetector -> m_Detector["MUST2"] ;
+	//	Get the formed Chained Tree and Treat it
+	TChain* Chain = RootInput:: getInstance() -> GetChain()	;
+	int i;	
+	for ( i = 0 ; i < Chain -> GetEntries() ; i ++ )
+		{
+			if( i%10000 == 0 && i!=0) cout << i << " Event annalysed " << endl ;						
+			Chain -> GetEntry(i);
+			
+			myDetector -> ClearEventPhysics()				;
+			myDetector -> BuildPhysicalEvent()				;
+			
+			
+			double E = M2 -> GetEnergyDeposit();
+			TVector3 A = M2 -> GetPositionOfInteraction();
+			double Theta = ThetaCalculation ( A , TVector3(0,0,1) ) ;
+			if(E>-1000)		Ex = myReaction -> ReconstructRelativistic( E , Theta ) ;
+			else Ex = -100 ;
+			EE = E ; TT = Theta/deg ;
+			if(E>-1000){
+			X = A . X();
+			Y = A . Y();}
+			else{X = -1000 ; Y = -1000;}
+			
+			RootOutput::getInstance()->GetTree()->Fill()	;
+		}
+	cout << "A total of " << i << " event has been annalysed " << endl ;
+	
+	RootOutput::getInstance()->Destroy();
+	return 0	;
+}
+
+
+double ThetaCalculation (TVector3 A , TVector3 B)
+	{
+		double Theta = acos( (A.Dot(B)) / (A.Mag()*B.Mag()) ) ;
+		return Theta ;
+	}
+
diff --git a/NPAnalysis/10He_Riken/src/DetectorManager.cc b/NPAnalysis/10He_Riken/src/DetectorManager.cc
new file mode 100644
index 000000000..000d61fe3
--- /dev/null
+++ b/NPAnalysis/10He_Riken/src/DetectorManager.cc
@@ -0,0 +1,228 @@
+#include "DetectorManager.hh"
+
+//	STL
+#include <iostream>
+#include <fstream>
+#include <cstdlib>
+
+//	Detector	
+#include "Must2Array.h"
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+//	Default Constructor and Destructor
+DetectorManager::DetectorManager()	
+	{}
+	
+/////////////////////////////////////////////////////////////////////////////////////////////////	
+DetectorManager::~DetectorManager()
+	{}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+//	Read stream at ConfigFile and pick-up Token declaration of Detector
+void	DetectorManager::ReadConfigurationFile(string Path)	
+	{
+		////////General Reading needs////////
+	   string LineBuffer;
+	   string DataBuffer;
+
+	   /////////Boolean////////////////////
+	   bool MUST2           = false  ;
+	   bool AddThinSi       = false  ;
+	   bool GeneralTarget   = false  ;
+	   bool GPDTracker      = false  ;	// Gaspard Tracker
+	   //////////////////////////////////////////////////////////////////////////////////////////
+	   // added by Nicolas [07/05/09]
+	   string GlobalPath = getenv("NPTOOL");
+	   Path = GlobalPath + "/Inputs/DetectorConfiguration/" + Path;
+	   ifstream ConfigFile;
+	   ConfigFile.open(Path.c_str());
+
+	   if (ConfigFile.is_open())
+	   	{
+	   		cout << "/////////////////////////////" << endl;
+	      	cout << " Configuration file " << Path << " loading " << endl;
+	   	}	
+	   	
+	   else 
+	   	{
+	      cout << " Error, no configuration file" << Path << " found" << endl;
+	      return;
+	   	}
+
+
+	   while (!ConfigFile.eof()) {
+	      //Pick-up next line
+	      getline(ConfigFile, LineBuffer);
+	      //Search for comment Symbol: %
+	      if (LineBuffer.compare(0, 1, "%") == 0) {   /*Do  Nothing*/ ;}
+
+	    /*  ////////////////////////////////////////////
+	      //////////// Search for Gaspard ////////////
+	      ////////////////////////////////////////////
+	      else if (LineBuffer.compare(0, 14, "GaspardTracker") == 0 && GPDTracker == false) {
+	         GPDTracker = true ;
+	         cout << "//////// Gaspard Tracker ////////" << endl   ;
+
+	         // Instantiate the new array as a VDetector Object
+	         VDetector* myDetector = new GaspardTracker()                  ;
+
+	         // Read Position of Telescope
+	         ConfigFile.close()                                 ;
+	         myDetector->ReadConfiguration(Path)                   ;
+	         ConfigFile.open(Path.c_str())                      ;
+
+	         // Add array to the VDetector Vector
+	         AddDetector(myDetector)                            ;
+	      }*/
+
+	      ////////////////////////////////////////////
+	      //////// Search for MUST2 Array  ////////
+	      ////////////////////////////////////////////
+	      else if (LineBuffer.compare(0, 10, "MUST2Array") == 0 && MUST2 == false) {
+	         MUST2 = true ;
+	         cout << "//////// MUST2 Array ////////" << endl   << endl   ;
+
+	         // Instantiate the new array as a VDetector Object
+	         VDetector* myDetector = new MUST2Array()                 ;
+
+	         // Read Position of Telescope
+	         ConfigFile.close()                                    ;
+	         myDetector->ReadConfiguration(Path)                      ;
+	         ConfigFile.open(Path.c_str())                         ;
+
+	         // Add array to the VDetector Vector
+	         AddDetector("MUST2" , myDetector)                               ;
+	      }
+
+	/*      ////////////////////////////////////////////
+	      ////////// Search for Add.ThinSi ///////////
+	      ////////////////////////////////////////////
+	      else if (LineBuffer.compare(0, 9, "AddThinSi") == 0 && AddThinSi == false) {
+	         AddThinSi = true ;
+	         cout << "//////// Thin Si ////////" << endl << endl   ;
+
+	         // Instantiate the new array as a VDetector Object
+	         VDetector* myDetector = new ThinSi()                  ;
+
+	         // Read Position of Telescope
+	         ConfigFile.close()                                 ;
+	         myDetector->ReadConfiguration(Path)                   ;
+	         ConfigFile.open(Path.c_str())                      ;
+
+	         // Add array to the VDetector Vector
+	         AddDetector(myDetector)                            ;
+	      }
+
+	      ////////////////////////////////////////////
+	      //////////// Search for Target /////////////
+	      ////////////////////////////////////////////
+
+	      else if (LineBuffer.compare(0, 13, "GeneralTarget") == 0 && GeneralTarget == false) {
+	         GeneralTarget = true ;
+	         cout << "////////// Target ///////////" << endl   << endl   ;
+
+	         // Instantiate the new array as a VDetector Objects
+	         VDetector* myDetector = new Target()                     ;
+
+	         // Read Position and target specification
+	         ConfigFile.close()                                    ;
+	         myDetector->ReadConfiguration(Path)                      ;
+	         ConfigFile.open(Path.c_str())                         ;
+
+	         m_TargetThickness = ((Target*)myDetector)->GetTargetThickness()   ;
+	         m_TargetRadius    = ((Target*)myDetector)->GetTargetRadius()   ;
+	         m_TargetX        = ((Target*)myDetector)->GetTargetX()         ;
+	         m_TargetY        = ((Target*)myDetector)->GetTargetY()         ;
+	         m_TargetZ        = ((Target*)myDetector)->GetTargetZ()         ;
+
+	         // Add target to the VDetector Vector
+	         AddDetector(myDetector)                               ;
+	      }*/
+
+	      //Nothing understandable
+	      //else ;
+	   }
+
+		ConfigFile.close();
+		
+		InitializeRootInput();
+		InitializeRootOutput();
+		
+		return   ;
+	}
+	
+/////////////////////////////////////////////////////////////////////////////////////////////////	
+
+void	DetectorManager::BuildPhysicalEvent()						
+	{	
+		map<string,VDetector*>::iterator it	;
+		
+		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
+			{
+				it->second->BuildPhysicalEvent()	;	
+			}           
+	}
+/////////////////////////////////////////////////////////////////////////////////////////////////
+	
+void	DetectorManager::BuildSimplePhysicalEvent()					
+	{
+		map<string,VDetector*>::iterator it	;
+		
+		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
+			{
+				it->second->BuildSimplePhysicalEvent()	;	
+			}    
+	}
+/////////////////////////////////////////////////////////////////////////////////////////////////
+	
+void	DetectorManager::InitializeRootInput()						
+	{
+		map<string,VDetector*>::iterator it	;
+		
+		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
+			{
+				it->second->InitializeRootInput()	;	
+			}    
+	}
+/////////////////////////////////////////////////////////////////////////////////////////////////	
+
+void	DetectorManager::InitializeRootOutput()						
+	{
+		map<string,VDetector*>::iterator it	;
+		
+		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
+			{
+				it->second->InitializeRootOutput()	;	
+			}   
+		
+	}
+/////////////////////////////////////////////////////////////////////////////////////////////////
+	
+void	DetectorManager::AddDetector(string DetectorName , VDetector* newDetector)	
+	{
+		m_Detector["MUST2"] = newDetector ;
+	}
+/////////////////////////////////////////////////////////////////////////////////////////////////
+void	DetectorManager::ClearEventPhysics()	
+	{
+		map<string,VDetector*>::iterator it	;
+		
+		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
+			{
+				it->second->ClearEventPhysics()	;	
+			}   
+		
+	}
+/////////////////////////////////////////////////////////////////////////////////////////////////
+void	DetectorManager::ClearEventData()
+	{
+		map<string,VDetector*>::iterator it	;
+		
+		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
+			{
+				it->second->ClearEventData()	;	
+			}   
+		
+	}
+			
diff --git a/NPAnalysis/10He_Riken/src/GNUmakefile b/NPAnalysis/10He_Riken/src/GNUmakefile
new file mode 100644
index 000000000..742a90a49
--- /dev/null
+++ b/NPAnalysis/10He_Riken/src/GNUmakefile
@@ -0,0 +1,44 @@
+###Make file made by Adrien MATTA/ Institut de Physique Nucleaire d'Orsay IPNO###
+#			Made to compile the ROOT Analyser for MUST2 experiment
+
+CPP=g++
+EXEC=Analysis
+
+# local includes
+NPAINCLUDES = ../include
+
+# ROOT includes
+CXXFLAGS += `root-config --cflags`
+
+# CLHEP includes
+CXXFLAGS += -I$(CLHEP_INCLUDE_DIR)
+CXXFLAGS += -I$(NPAINCLUDES)
+CXXFLAGS += -I$(NPLIB)/include
+
+LDFLAGS  = `root-config --libs` -lMathMore
+LDFLAGS+= -L$(NPLIB)/lib -lVDetector -lIORoot -lReaction -lEnergyLoss \
+			-lMust2Data -lMust2Physics \
+			-lAnnularS1Data -lGaspardData \
+			-lInitialConditions -lInteractionCoordinates
+LDFLAGS+= -L$(CLHEP_LIB_DIR) -l$(CLHEP_LIB) 
+
+SRC= $(wildcard *.cc)
+OBJ=$(SRC:.cc=.o)
+
+#all:$(EXEC)
+#	@$(CPP) -o $@ -c $< $(CXXFLAGS)
+
+Analysis:$(OBJ)
+	@$(CPP) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
+	mv Analysis  ../Analysis
+
+%.o: %.cc
+	@$(CPP) $(CXXFLAGS) -o $@ -c $<
+	
+.PHONY: clean mrproper
+
+clean:
+	rm -rf *.o
+
+mrproper: clean
+	rm -rf $(EXEC)
diff --git a/NPSimulation/src/ThinSi.cc b/NPSimulation/src/ThinSi.cc
index a6680545a..ff0c030aa 100644
--- a/NPSimulation/src/ThinSi.cc
+++ b/NPSimulation/src/ThinSi.cc
@@ -44,15 +44,15 @@ namespace THINSI
    const G4double ResoEnergy  = 0.042 ;// = 100keV of Resolution   //   Unit is MeV/2.35
 
    // Geometry
-   const G4double DetectorSize   = 70*mm           ;
+   const G4double DetectorSize   	= 70*mm           ;
    const G4double SiliconThickness  = 20*micrometer      ;
-   const G4double SiliconSize    = 50*mm           ;
+   const G4double SiliconSize    	= 50*mm           ;
    const G4double AluThickness      = 0.4*micrometer  ;
-   const G4int  NumberOfStrip    = 32           ;
+   const G4int  NumberOfStrip    	= 32           ;
 
-   const G4double AluStripFront_PosZ = -0.5*SiliconThickness - 0.5*AluThickness ;
-   const G4double Si_PosZ        = 0                                 ;
-   const G4double AluStripBack_PosZ  = 0.5*SiliconThickness + 0.5*AluThickness  ;
+   const G4double AluStripFront_PosZ 	= -0.5*SiliconThickness - 0.5*AluThickness ;
+   const G4double Si_PosZ        		= 0                                 ;
+   const G4double AluStripBack_PosZ  	= 0.5*SiliconThickness + 0.5*AluThickness  ;
 
    const G4double Si_PosX_Shift = 4*mm ;
    const G4double Si_PosY_Shift = 2*mm ;
-- 
GitLab