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