From 56065d34ad5923c41cc893da5f8ac7e7a83101d0 Mon Sep 17 00:00:00 2001 From: deserevi <deserevi@nptool> Date: Fri, 11 Sep 2009 10:11:38 +0000 Subject: [PATCH] * Create macros directory in NPAnalysis directory * New version of Gaspard analysis code --- NPAnalysis/Gaspard/CrossSection.c | 121 ------ NPAnalysis/Gaspard/Makefile | 6 + NPAnalysis/Gaspard/Result/myResult.root | Bin 83933 -> 0 bytes .../Gaspard/Result/myResult_newGPD.root | Bin 33080 -> 0 bytes NPAnalysis/Gaspard/RunToTreat.txt | 4 + NPAnalysis/Gaspard/TimeOfFlight.c | 14 - NPAnalysis/Gaspard/affich.c | 291 ------------- NPAnalysis/Gaspard/efficiency.c | 58 --- NPAnalysis/Gaspard/hit.c | 44 -- .../Gaspard/include/ConfigurationReader.hh | 20 - NPAnalysis/Gaspard/include/DetectorManager.hh | 39 ++ NPAnalysis/Gaspard/include/ObjectManager.hh | 118 ++++-- NPAnalysis/Gaspard/include/must.hh | 75 ---- NPAnalysis/Gaspard/kinematic1MeV.contour | 27 -- NPAnalysis/Gaspard/makeAnalyse.sh | 8 - NPAnalysis/Gaspard/root.ps | 98 ----- NPAnalysis/Gaspard/src/Analysis.cc | 387 ++++-------------- NPAnalysis/Gaspard/src/ConfigurationReader.cc | 319 --------------- NPAnalysis/Gaspard/src/ConfigurationReader.hh | 20 - NPAnalysis/Gaspard/src/DetectorManager.cc | 229 +++++++++++ NPAnalysis/Gaspard/src/GNUmakefile | 16 +- NPAnalysis/Gaspard/src/ObjectManager.hh | 84 ---- NPAnalysis/Gaspard/src/must.cc | 245 ----------- NPAnalysis/Gaspard/src/must.hh | 75 ---- NPAnalysis/{Gaspard => }/macros/ControlSimu.C | 27 ++ .../macros/GeometricalEfficiency.C | 28 ++ NPAnalysis/macros/README | 24 ++ .../macros/TestAngleReconstruction.C | 35 +- NPLib/GASPARD/GaspardTracker.cxx | 16 +- NPLib/GASPARD/GaspardTracker.h | 12 +- NPLib/GASPARD/TGaspardTrackerPhysics.cxx | 2 +- .../TInteractionCoordinates.cxx | 4 +- 32 files changed, 560 insertions(+), 1886 deletions(-) delete mode 100644 NPAnalysis/Gaspard/CrossSection.c create mode 100644 NPAnalysis/Gaspard/Makefile delete mode 100644 NPAnalysis/Gaspard/Result/myResult.root delete mode 100644 NPAnalysis/Gaspard/Result/myResult_newGPD.root create mode 100644 NPAnalysis/Gaspard/RunToTreat.txt delete mode 100644 NPAnalysis/Gaspard/TimeOfFlight.c delete mode 100644 NPAnalysis/Gaspard/affich.c delete mode 100644 NPAnalysis/Gaspard/efficiency.c delete mode 100644 NPAnalysis/Gaspard/hit.c delete mode 100644 NPAnalysis/Gaspard/include/ConfigurationReader.hh create mode 100644 NPAnalysis/Gaspard/include/DetectorManager.hh delete mode 100644 NPAnalysis/Gaspard/include/must.hh delete mode 100644 NPAnalysis/Gaspard/kinematic1MeV.contour delete mode 100755 NPAnalysis/Gaspard/makeAnalyse.sh delete mode 100644 NPAnalysis/Gaspard/root.ps delete mode 100644 NPAnalysis/Gaspard/src/ConfigurationReader.cc delete mode 100644 NPAnalysis/Gaspard/src/ConfigurationReader.hh create mode 100644 NPAnalysis/Gaspard/src/DetectorManager.cc delete mode 100644 NPAnalysis/Gaspard/src/ObjectManager.hh delete mode 100644 NPAnalysis/Gaspard/src/must.cc delete mode 100644 NPAnalysis/Gaspard/src/must.hh rename NPAnalysis/{Gaspard => }/macros/ControlSimu.C (70%) rename NPAnalysis/{Gaspard => }/macros/GeometricalEfficiency.C (50%) create mode 100644 NPAnalysis/macros/README rename NPAnalysis/{Gaspard => }/macros/TestAngleReconstruction.C (68%) diff --git a/NPAnalysis/Gaspard/CrossSection.c b/NPAnalysis/Gaspard/CrossSection.c deleted file mode 100644 index 5640efb44..000000000 --- a/NPAnalysis/Gaspard/CrossSection.c +++ /dev/null @@ -1,121 +0,0 @@ -{ - 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/Gaspard/Makefile b/NPAnalysis/Gaspard/Makefile new file mode 100644 index 000000000..f5bfeb69f --- /dev/null +++ b/NPAnalysis/Gaspard/Makefile @@ -0,0 +1,6 @@ + +Analyse: + make -C ./src + +clean: + make clean -C ./src diff --git a/NPAnalysis/Gaspard/Result/myResult.root b/NPAnalysis/Gaspard/Result/myResult.root deleted file mode 100644 index eb7aa8c9045793132a6c1c12c390e3b06e31eeb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83933 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 diff --git a/NPAnalysis/Gaspard/Result/myResult_newGPD.root b/NPAnalysis/Gaspard/Result/myResult_newGPD.root deleted file mode 100644 index ab4d9b0461ed828ac52fcd4fab9f366248c0950e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33080 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 Qaiau0e8Es}(G;Bj0nP;q5&!@I diff --git a/NPAnalysis/Gaspard/RunToTreat.txt b/NPAnalysis/Gaspard/RunToTreat.txt new file mode 100644 index 000000000..008354fd1 --- /dev/null +++ b/NPAnalysis/Gaspard/RunToTreat.txt @@ -0,0 +1,4 @@ +TTreeName + SimulatedTree +RootFileName + ../../Outputs/Simulation/mySimul.root diff --git a/NPAnalysis/Gaspard/TimeOfFlight.c b/NPAnalysis/Gaspard/TimeOfFlight.c deleted file mode 100644 index 916932fc0..000000000 --- a/NPAnalysis/Gaspard/TimeOfFlight.c +++ /dev/null @@ -1,14 +0,0 @@ -{ - - 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/Gaspard/affich.c b/NPAnalysis/Gaspard/affich.c deleted file mode 100644 index 2c8537ea6..000000000 --- a/NPAnalysis/Gaspard/affich.c +++ /dev/null @@ -1,291 +0,0 @@ -{ - - 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/Gaspard/efficiency.c b/NPAnalysis/Gaspard/efficiency.c deleted file mode 100644 index 9a04af185..000000000 --- a/NPAnalysis/Gaspard/efficiency.c +++ /dev/null @@ -1,58 +0,0 @@ -{ - 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/Gaspard/hit.c b/NPAnalysis/Gaspard/hit.c deleted file mode 100644 index 50db19da5..000000000 --- a/NPAnalysis/Gaspard/hit.c +++ /dev/null @@ -1,44 +0,0 @@ -{ - 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/Gaspard/include/ConfigurationReader.hh b/NPAnalysis/Gaspard/include/ConfigurationReader.hh deleted file mode 100644 index d4b2e1fe1..000000000 --- a/NPAnalysis/Gaspard/include/ConfigurationReader.hh +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef ConfigurationReader_h -#define ConfigurationReader_h 1 - -// STL -#include <string> -#include <iostream> -#include <fstream> - -// NPL -#include "NPReaction.h" -using namespace NPL ; - -#include "must.hh" - -void ReadConfiguration ( string Path , array* myArray ) ; -Reaction* ReadReaction ( string Path ) ; - - -#endif - diff --git a/NPAnalysis/Gaspard/include/DetectorManager.hh b/NPAnalysis/Gaspard/include/DetectorManager.hh new file mode 100644 index 000000000..eb49f01ef --- /dev/null +++ b/NPAnalysis/Gaspard/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/Gaspard/include/ObjectManager.hh b/NPAnalysis/Gaspard/include/ObjectManager.hh index 9f90b2a5d..f7aa582ee 100644 --- a/NPAnalysis/Gaspard/include/ObjectManager.hh +++ b/NPAnalysis/Gaspard/include/ObjectManager.hh @@ -1,26 +1,65 @@ // 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 organising we use Name Space. +// In order to help debugging and organizing we use Name Space. + +///////////////////////////////////////////////////////////////////////////////////////////////// +// -------------------------------------- VARIOUS INCLUDE --------------------------------------- + +// NPA +#include "DetectorManager.hh" +#include "Must2Array.h" +#include "GaspardTracker.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, INT, BOOL-------------------------------------------- - +// ---------------------------------------------------------------------------------------------- +double ThetaCalculation (TVector3 A , TVector3 B) ; +///////////////////////////////////////////////////////////////////////////////////////////////// +// ----------------------------------- DOUBLE, INT, BOOL AND MORE ------------------------------- namespace VARIABLE { - double Xs,Ys,Zs,N ; - double Theta = 0 ; - double Ex = 0 ; - double ThetaCM = 0 ; - int X,Y ; - bool check_light = false ; + // 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> @@ -32,53 +71,48 @@ using namespace VARIABLE ; namespace GRAPH { // Declare your Spectra here: - const int NbElements = 18; - TH2F *hXY1 = new TH2F("hXY1","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hXY2 = new TH2F("hXY2","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hXY3 = new TH2F("hXY3","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hXY4 = new TH2F("hXY4","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hXY5 = new TH2F("hXY5","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hXY6 = new TH2F("hXY6","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hHitPattern[NbElements]; - - TH1F *hEnerX = new TH1F("hEnerX", "Energy X", 1000, -1, 10); - TH1F *hEnerY = new TH1F("hEnerY", "Energy Y", 1000, -1, 10); - TH2F *hEnerXY = new TH2F("hEnerXY", "Energy X vs Y", 100, -1, 10, 100, -1, 10); - TH2F *hEnerTheta = new TH2F("hEnerTheta", "Energy v.s. Theta", 90, 0, 180, 400, 0, 100); - - TH2F *hXY = new TH2F("hXY","", 300 , -130 , 130 , 300 , -130 , 130 ) ; - TH2F *hEA = new TH2F("hEA" ,"", 120 , 0 , 60 , 260 , 0 , 130 ) ; - TH1F *hEx = new TH1F("hEx", "E* (MeV)", 10000, -10, 40); - TH1F *hEHexa = new TH1F("hEHexa","EHexa (MeV)", 1000 , -5 , 5 ) ; - TH1F *hThetaCM = new TH1F("hThetaCM","ThetaCM (deg)", 30 , 0 , 60 ) ; - TH1F *hTheta = new TH1F("hTheta","Theta Lab (deg)",180,0,180) ; - TH2F *hThetaLabCM = new TH2F("hThetaLabCM","", 90 , 0 , 180 , 90 , 0 , 180 ) ; + 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 GRAPH ; -// ---------------------------------------------------------------------------------------------- +using namespace CUT ; +// -------------------------------------------------------------------------------------------- + -// -----------------------------------ENERGY LOSS------------------------------------------------ -/* -#include "NPEnergyLossCorrection.h" +//////////////////////////////////////////////////////////////////////////////////////////////// +// -----------------------------------ENERGY LOSS---------------------------------------------- +#include "NPEnergyLoss.h" using namespace NPL ; namespace ENERGYLOSS { -// EnergyLoss ProtonTarget = EnergyLoss ( "/home/Adrien/Desktop/dEdX.txt" , -// 100 , -// 1 ); - + // Declare your Energy loss here : + /* EnergyLoss ProtonTarget = EnergyLoss ( "CD2.txt" , + 100 , + 1 ); + */ } using namespace ENERGYLOSS ; -*/ // ---------------------------------------------------------------------------------------------- - +///////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/NPAnalysis/Gaspard/include/must.hh b/NPAnalysis/Gaspard/include/must.hh deleted file mode 100644 index d3fa3a733..000000000 --- a/NPAnalysis/Gaspard/include/must.hh +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef must_h -#define must_h 1 - -#include <vector> -#include <TFile.h> -#include <TH2.h> -#include <TH2F.h> -#include "CLHEP/Vector/ThreeVector.h" -using namespace std ; -using namespace CLHEP ; - -class must -{ -public: - must( double theta , double phi , double distance , double beta_u , double beta_v, double beta_w) ; - must( Hep3Vector C_X1_Y1 , - Hep3Vector C_X128_Y1 , - Hep3Vector C_X1_Y128 , - Hep3Vector C_X128_Y128 , - Hep3Vector TargetPosition ); - - double GetStripPositionX( int X , int Y ) ; - double GetStripPositionY( int X , int Y ) ; - double GetStripPositionZ( int X , int Y ) ; - void Print() ; - -private: - - vector< vector < double > > StripPositionX ; - vector< vector < double > > StripPositionY ; - vector< vector < double > > StripPositionZ ; - -}; - - -class array -{ -public: - array(); - void addTelescope( double theta , double phi , double distance , double beta_u , double beta_v , double beta_w) ; - void addTelescope( Hep3Vector C_X1_Y1 , - Hep3Vector C_X128_Y1 , - Hep3Vector C_X1_Y128 , - Hep3Vector C_X128_Y128 ); - - double GetStripPositionX( int N , int X , int Y ) ; - double GetStripPositionY( int N , int X , int Y ) ; - double GetStripPositionZ( int N , int X , int Y ) ; - double GetNumberOfTelescope() {return NumberOfTelescope;} ; - void Print() ; - -private: - vector< must > myArray ; - int NumberOfTelescope ; - -public: // Histogram - -/*// Hit Density - vector<TH2F*> HitDensity ; - - // Time of Flight Identification - vector<TH2F*> TOF ; - - // EDE Identification - vector<TH2F*> EDE ; - - // Kinematic Line - KinematicLine ; - - // Excitation Energy - ExcitationEnergy ;*/ - -}; - -#endif diff --git a/NPAnalysis/Gaspard/kinematic1MeV.contour b/NPAnalysis/Gaspard/kinematic1MeV.contour deleted file mode 100644 index 96c8267de..000000000 --- a/NPAnalysis/Gaspard/kinematic1MeV.contour +++ /dev/null @@ -1,27 +0,0 @@ -{ -//========= Macro generated from object: Graph/Graph -//========= by ROOT version5.22/00 - - TGraph *graph = new TGraph(9); - graph->SetName("Graph"); - graph->SetTitle("Graph"); - graph->SetFillColor(1); - graph->SetPoint(0,42.5558,25.636); - graph->SetPoint(1,36.4453,18.3991); - graph->SetPoint(2,21.2109,12.2588); - graph->SetPoint(3,6.22768,10.943); - graph->SetPoint(4,6.89732,5.67982); - graph->SetPoint(5,24.308,7.87281); - graph->SetPoint(6,38.8728,14.6711); - graph->SetPoint(7,44.6484,23.6623); - graph->SetPoint(8,42.6395,25.636); - - TH1 *Graph1 = new TH1F("Graph1","Graph",100,2.3856,48.4905); - Graph1->SetMinimum(3.68421); - Graph1->SetMaximum(27.6316); - Graph1->SetDirectory(0); - Graph1->SetStats(0); - graph->SetHistogram(Graph1); - - graph->Draw(""); -} diff --git a/NPAnalysis/Gaspard/makeAnalyse.sh b/NPAnalysis/Gaspard/makeAnalyse.sh deleted file mode 100755 index 6d62d9b5e..000000000 --- a/NPAnalysis/Gaspard/makeAnalyse.sh +++ /dev/null @@ -1,8 +0,0 @@ -# This file is here to help you making Analysis. -# Feel free to had more such as automatic lauch ou ROOT macro - - - -cd src ; make ; cd .. -./Analysis ../Inputs/Reaction/34Si.reaction ../Inputs/DetectorConfiguration/e530.detector -root -l hit.c diff --git a/NPAnalysis/Gaspard/root.ps b/NPAnalysis/Gaspard/root.ps deleted file mode 100644 index 79ba81bb0..000000000 --- a/NPAnalysis/Gaspard/root.ps +++ /dev/null @@ -1,98 +0,0 @@ -%!PS-Adobe-2.0 -%%Title: root.ps: figure d'article -%%Creator: ROOT Version 5.22/00 -%%CreationDate: Thu Sep 10 19:14:45 2009 -%%Orientation: Landscape -%%EndComments -%%BeginProlog -/s {stroke} def /l {lineto} def /m {moveto} def /t {translate} def -/sw {stringwidth} def /r {rotate} def /rl {roll} def /R {repeat} def -/d {rlineto} def /rm {rmoveto} def /gr {grestore} def /f {eofill} def -/c {setrgbcolor} def /black {0 setgray} def /sd {setdash} def -/cl {closepath} def /sf {scalefont setfont} def /lw {setlinewidth} def -/box {m dup 0 exch d exch 0 d 0 exch neg d cl} def -/NC{systemdict begin initclip end}def/C{NC box clip newpath}def -/bl {box s} def /bf {box f} def /Y { 0 exch d} def /X { 0 d} def -/mp {newpath /y exch def /x exch def} def -/side {[w .77 mul w .23 mul] .385 w mul sd w 0 l currentpoint t -144 r} def -/mr {mp x y w2 0 360 arc} def /m24 {mr s} def /m20 {mr f} def -/mb {mp x y w2 add m w2 neg 0 d 0 w neg d w 0 d 0 w d cl} def -/mt {mp x y w2 add m w2 neg w neg d w 0 d cl} def -/m21 {mb f} def /m25 {mb s} def /m22 {mt f} def /m26{mt s} def -/m23 {mp x y w2 sub m w2 w d w neg 0 d cl f} def -/m27 {mp x y w2 add m w3 neg w2 neg d w3 w2 neg d w3 w2 d cl s} def -/m28 {mp x w2 sub y w2 sub w3 add m w3 0 d 0 w3 neg d w3 0 d 0 w3 d w3 0 d 0 w3 d w3 neg 0 d 0 w3 d w3 neg 0 d - 0 w3 neg d w3 neg 0 d cl s } def -/m29 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t - 4 {side} repeat cl fill gr} def -/m30 {mp gsave x w2 sub y w2 add w3 sub m currentpoint t - 4 {side} repeat cl s gr} def -/m31 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d x w2 sub y w2 add m w w neg d x w2 sub y w2 - sub m w w d s} def -/m2 {mp x y w2 sub m 0 w d x w2 sub y m w 0 d s} def -/m5 {mp x w2 sub y w2 sub m w w d x w2 sub y w2 add m w w neg d s} def -/reEncode {exch findfont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse } forall /Encoding exch def currentdict end dup /FontName get exch definefont pop } def [/Times-Bold /Times-Italic /Times-BoldItalic /Helvetica - /Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique /Courier /Courier-Oblique /Courier-Bold /Courier-BoldOblique /Times-Roman /AvantGarde-Book /AvantGarde-BookOblique /AvantGarde-Demi /AvantGarde-DemiOblique /Bookman-Demi - /Bookman-DemiItalic /Bookman-Light /Bookman-LightItalic /Helvetica-Narrow /Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-Oblique /NewCenturySchlbk-Roman /NewCenturySchlbk-Bold - /NewCenturySchlbk-BoldItalic /NewCenturySchlbk-Italic /Palatino-Bold /Palatino-BoldItalic /Palatino-Italic /Palatino-Roman ] {ISOLatin1Encoding reEncode } forall -/oshow {gsave [] 0 sd true charpath stroke gr} def -/stwn { /fs exch def /fn exch def /text exch def fn findfont fs sf - text sw pop xs add /xs exch def} def -/stwb { /fs exch def /fn exch def /nbas exch def /textf exch deftextf length /tlen exch def nbas tlen gt {/nbas tlendef} iffn findfont fs sf textf dup length nbas sub nbas getinterval sw -pop neg xs add /xs exch def} def -/Zone {/iy exch def /ix exch def ix 1 sub 3144 mul 1 iy sub 2224 - mul t} def -%%EndProlog -%%BeginSetup -%%EndSetup -newpath gsave 90 r 0 -594 t 28 20 t .25 .25 scale gsave -%%Page: 1 1 - gsave gsave - 1 1 Zone - gsave 0 0 t black[ ] 0 sd 3 lw 0.999 0.999 0.999 c 2948 1992 0 0 bf black 0.999 0.999 0.999 c 2329 1574 324 219 bf black 2329 1574 324 219 bl 0.999 0.999 0.999 c 2329 1574 324 219 bf black 2329 1574 324 219 bl 1 1 1 c black 324 255 m 6 X 18 Y 5 X - -18 Y 6 X -18 Y 17 X -18 Y 5 X 36 Y 6 X -36 Y 6 X 36 Y 11 X -18 Y 11 X -18 Y 11 X 18 Y 17 X 36 Y 5 X -36 Y 23 X -18 Y 5 X 18 Y 6 X 36 Y 5 X -54 Y 6 X 36 Y 6 X -18 Y 5 X 18 Y 6 X -18 Y 17 X 18 Y 11 X -18 Y 11 X 53 Y 6 X -53 Y 5 X 18 Y 6 X -18 Y 11 X - 18 Y 11 X 18 Y 6 X 35 Y 5 X -18 Y 6 X -53 Y 5 X 18 Y 12 X 35 Y 5 X -53 Y 6 X -18 Y 5 X 107 Y 6 X -18 Y 5 X -53 Y 12 X 89 Y 5 X -89 Y 17 X -36 Y 6 X 89 Y 5 X -89 Y 6 X 71 Y 5 X -17 Y 6 X 17 Y 5 X 36 Y 6 X -18 Y 6 X 18 Y 5 X -53 Y 6 X 53 Y 5 X -36 Y - 6 X -53 Y 6 X 107 Y 5 X -89 Y 6 X -18 Y 5 X 36 Y 6 X -36 Y 5 X 71 Y 6 X -35 Y 6 X 71 Y 5 X 53 Y 6 X -53 Y 5 X -71 Y 6 X 53 Y 6 X -36 Y 5 X -17 Y 6 X -18 Y 5 X 125 Y 6 X -90 Y 6 X -17 Y 5 X 71 Y 6 X -89 Y 5 X 18 Y 6 X 17 Y 5 X 36 Y 6 X 36 Y 6 X -36 - Y 11 X 36 Y 5 X -125 Y 6 X 53 Y 6 X -35 Y 5 X 160 Y 6 X -160 Y 5 X 125 Y 6 X -72 Y 5 X -53 Y 6 X 35 Y 6 X 54 Y 5 X -54 Y 6 X 107 Y 5 X -124 Y 6 X 35 Y 6 X 54 Y 5 X -36 Y 6 X 18 Y 5 X 36 Y 6 X -90 Y 5 X -35 Y 6 X 53 Y 6 X -35 Y 5 X 35 Y 6 X 72 Y 5 X - -90 Y 6 X 54 Y 6 X -18 Y 5 X 18 Y 6 X -54 Y 5 X 36 Y 6 X 54 Y 6 X -107 Y 5 X 124 Y 6 X 18 Y 5 X -107 Y 6 X 54 Y 5 X -18 Y 6 X 36 Y 6 X 17 Y 11 X 72 Y 5 X -72 Y 6 X -107 Y 6 X 72 Y 5 X 53 Y 6 X 54 Y 5 X -89 Y 6 X -54 Y 5 X 71 Y 6 X -35 Y 6 X -54 Y 5 - X 18 Y 6 X 36 Y 5 X 143 Y 6 X 35 Y 6 X -89 Y 5 X -89 Y 6 X 53 Y 5 X 36 Y 6 X -54 Y 5 X 18 Y 6 X 143 Y 6 X -125 Y 5 X 18 Y 6 X 54 Y 5 X 53 Y 6 X 18 Y 6 X -89 Y 11 X 107 Y 5 X -36 Y 6 X -36 Y 5 X 72 Y 12 X 18 Y 5 X 71 Y 6 X -107 Y 5 X 214 Y 6 X -54 Y - 6 X -17 Y 5 X -36 Y 6 X -107 Y 5 X 232 Y 6 X -54 Y 6 X 107 Y 5 X -89 Y 6 X 214 Y 5 X -160 Y 6 X -72 Y 5 X 18 Y 6 X 232 Y 6 X 161 Y 5 X -179 Y 6 X 250 Y 5 X -71 Y 6 X -179 Y 6 X 143 Y 5 X 285 Y 6 X 36 Y 5 X -125 Y 6 X 357 Y 5 X -286 Y 6 X 215 Y 6 X - -286 Y 11 X 179 Y 5 X -143 Y 6 X -72 Y 6 X 250 Y 5 X -35 Y 6 X -72 Y 5 X 286 Y 6 X -90 Y 5 X -142 Y 12 X -304 Y 5 X 125 Y 6 X 107 Y 11 X -285 Y 6 X 196 Y 5 X -125 Y 6 X -53 Y 5 X -72 Y 6 X -160 Y 5 X 285 Y 6 X -410 Y 6 X 53 Y 5 X -124 Y 6 X 214 Y 5 - X -18 Y 6 X -36 Y 6 X -125 Y 5 X -160 Y 6 X 71 Y 5 X -18 Y 6 X 143 Y 6 X -143 Y 5 X -18 Y 6 X 36 Y 5 X -125 Y 6 X -18 Y 5 X 107 Y 6 X -71 Y 6 X 18 Y 5 X -18 Y 11 X 54 Y 6 X -107 Y 11 X -72 Y 6 X -36 Y 5 X 108 Y 6 X -36 Y 5 X 18 Y 6 X -18 Y 6 X 53 Y - 5 X -125 Y 11 X 54 Y 6 X 18 Y 6 X 18 Y 5 X -125 Y 6 X -18 Y 11 X -36 Y 5 X -18 Y 6 X 90 Y 11 X -18 Y 6 X 35 Y 5 X -17 Y 6 X -72 Y 6 X 54 Y 5 X 71 Y 6 X -53 Y 5 X -18 Y 6 X -18 Y 11 X -54 Y 6 X 54 Y 5 X -18 Y 6 X -36 Y 5 X -17 Y 12 X -18 Y 5 X 71 Y - 6 X -36 Y 5 X 18 Y 6 X 89 Y 6 X -107 Y 16 X 18 Y 6 X -53 Y 5 X 35 Y 12 X -53 Y 5 X 71 Y 6 X 18 Y 5 X -18 Y 6 X -18 Y 6 X 72 Y 5 X 18 Y 6 X -143 Y 5 X 89 Y 6 X -18 Y 5 X -53 Y 6 X 35 Y 6 X -17 Y 5 X -18 Y 6 X 35 Y 5 X -17 Y 6 X 53 Y 6 X -36 Y 5 X - -17 Y 6 X -54 Y 5 X 71 Y 6 X -17 Y 17 X -18 Y 5 X 35 Y 6 X 90 Y 5 X -125 Y 6 X 35 Y 6 X -35 Y 5 X 35 Y 6 X -17 Y 5 X -18 Y 6 X 53 Y 6 X -18 Y 5 X -35 Y 11 X 35 Y 6 X -53 Y 11 X 18 Y 6 X 35 Y 5 X -17 Y 6 X 17 Y 5 X 36 Y 17 X -53 Y 6 X -36 Y 5 X 53 Y - 6 X -17 Y 22 X 35 Y 6 X 54 Y 5 X -89 Y 12 X -18 Y 5 X 18 Y 6 X 53 Y 5 X -36 Y 6 X -17 Y 5 X 53 Y 17 X -89 Y 11 X 18 Y 12 X 89 Y 5 X -89 Y 6 X 18 Y 5 X -18 Y 6 X -18 Y 5 X 53 Y 6 X -53 Y 6 X 36 Y 5 X -36 Y 6 X 18 Y 5 X 18 Y 6 X -18 Y 6 X 53 Y 5 X - -18 Y 6 X -35 Y 11 X 35 Y 6 X -53 Y 5 X 53 Y 6 X -35 Y 11 X -18 Y 11 X -18 Y 6 X 54 Y 11 X -36 Y 5 X 36 Y 12 X -36 Y 11 X 36 Y 5 X -54 Y 6 X 71 Y 5 X -35 Y 6 X 18 Y 6 X 17 Y 5 X -53 Y 6 X 71 Y 5 X -71 Y 12 X 18 Y 5 X 18 Y 6 X -36 Y 5 X 89 Y 6 X -89 - Y 5 X 18 Y 6 X 18 Y 11 X s 324 219 m 2329 X s 369 266 m -47 Y s 481 243 m -24 Y s 592 243 m -24 Y s 704 243 m -24 Y s 816 243 m -24 Y s 927 266 m -47 Y s 1039 243 m -24 Y s 1151 243 m -24 Y s 1263 243 m -24 Y s 1374 243 m -24 Y s 1486 266 m -47 Y s - 1598 243 m -24 Y s 1709 243 m -24 Y s 1821 243 m -24 Y s 1933 243 m -24 Y s 2044 266 m -47 Y s 2156 243 m -24 Y s 2268 243 m -24 Y s 2380 243 m -24 Y s 2491 243 m -24 Y s 2603 266 m -47 Y s 369 266 m -47 Y s 2603 266 m -47 Y s - gsave 2948 1992 0 0 C 351 149 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (1) show NC gr - gsave 2948 1992 0 0 C 873 149 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (1.5) show NC gr - gsave 2948 1992 0 0 C 1461 149 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (2) show NC gr - gsave 2948 1992 0 0 C 1992 149 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (2.5) show NC gr - gsave 2948 1992 0 0 C 2580 149 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (3) show NC gr 324 1793 m 2329 X s 369 1745 m 48 Y s 481 1769 m 24 Y s 592 1769 m 24 Y s 704 1769 m 24 Y s 816 1769 m 24 Y s 927 1745 m 48 Y s 1039 1769 m 24 Y s 1151 - 1769 m 24 Y s 1263 1769 m 24 Y s 1374 1769 m 24 Y s 1486 1745 m 48 Y s 1598 1769 m 24 Y s 1709 1769 m 24 Y s 1821 1769 m 24 Y s 1933 1769 m 24 Y s 2044 1745 m 48 Y s 2156 1769 m 24 Y s 2268 1769 m 24 Y s 2380 1769 m 24 Y s 2491 1769 m 24 Y s 2603 - 1745 m 48 Y s 369 1745 m 48 Y s 2603 1745 m 48 Y s 324 219 m 1574 Y s 394 219 m -70 X s 359 255 m -35 X s 359 290 m -35 X s 359 326 m -35 X s 359 362 m -35 X s 394 397 m -70 X s 359 433 m -35 X s 359 469 m -35 X s 359 505 m -35 X s 359 540 m -35 X - s 394 576 m -70 X s 359 612 m -35 X s 359 647 m -35 X s 359 683 m -35 X s 359 719 m -35 X s 394 754 m -70 X s 359 790 m -35 X s 359 826 m -35 X s 359 861 m -35 X s 359 897 m -35 X s 394 933 m -70 X s 359 968 m -35 X s 359 1004 m -35 X s 359 1040 m - -35 X s 359 1075 m -35 X s 394 1111 m -70 X s 359 1147 m -35 X s 359 1182 m -35 X s 359 1218 m -35 X s 359 1254 m -35 X s 394 1289 m -70 X s 359 1325 m -35 X s 359 1361 m -35 X s 359 1396 m -35 X s 359 1432 m -35 X s 394 1468 m -70 X s 359 1504 m - -35 X s 359 1539 m -35 X s 359 1575 m -35 X s 359 1611 m -35 X s 394 1646 m -70 X s 394 1646 m -70 X s 359 1682 m -35 X s 359 1718 m -35 X s 359 1753 m -35 X s 359 1789 m -35 X s - gsave 2948 1992 0 0 C 268 189 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (0) show NC gr - gsave 2948 1992 0 0 C 224 369 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (10) show NC gr - gsave 2948 1992 0 0 C 224 548 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (20) show NC gr - gsave 2948 1992 0 0 C 224 724 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (30) show NC gr - gsave 2948 1992 0 0 C 224 904 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (40) show NC gr - gsave 2948 1992 0 0 C 224 1084 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (50) show NC gr - gsave 2948 1992 0 0 C 224 1259 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (60) show NC gr - gsave 2948 1992 0 0 C 224 1439 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (70) show NC gr - gsave 2948 1992 0 0 C 224 1619 t 0 r /Helvetica-Bold findfont 74.5782 sf 0 0 m (80) show NC gr 2653 219 m 1574 Y s 2583 219 m 70 X s 2618 255 m 35 X s 2618 290 m 35 X s 2618 326 m 35 X s 2618 362 m 35 X s 2583 397 m 70 X s 2618 433 m 35 X s 2618 - 469 m 35 X s 2618 505 m 35 X s 2618 540 m 35 X s 2583 576 m 70 X s 2618 612 m 35 X s 2618 647 m 35 X s 2618 683 m 35 X s 2618 719 m 35 X s 2583 754 m 70 X s 2618 790 m 35 X s 2618 826 m 35 X s 2618 861 m 35 X s 2618 897 m 35 X s 2583 933 m 70 X s - 2618 968 m 35 X s 2618 1004 m 35 X s 2618 1040 m 35 X s 2618 1075 m 35 X s 2583 1111 m 70 X s 2618 1147 m 35 X s 2618 1182 m 35 X s 2618 1218 m 35 X s 2618 1254 m 35 X s 2583 1289 m 70 X s 2618 1325 m 35 X s 2618 1361 m 35 X s 2618 1396 m 35 X s - 2618 1432 m 35 X s 2583 1468 m 70 X s 2618 1504 m 35 X s 2618 1539 m 35 X s 2618 1575 m 35 X s 2618 1611 m 35 X s 2583 1646 m 70 X s 2583 1646 m 70 X s 2618 1682 m 35 X s 2618 1718 m 35 X s 2618 1753 m 35 X s 2618 1789 m 35 X s 0.999 0.999 0.999 c - 432 111 29 1871 bf black 43 1871 m -9 Y 427 X 107 Y -9 X -98 Y f 29 1871 m 111 Y 432 X -111 Y -432 X cl s 1 1 1 c black - gsave 2948 1992 0 0 C 61 1904 t 0 r /Helvetica-Bold findfont 87.739 sf 0 0 m (E* \(MeV\)) show NC gr gr -showpage - gr -%%Trailer -%%Pages: 1 - gr gr gr -%%EOF diff --git a/NPAnalysis/Gaspard/src/Analysis.cc b/NPAnalysis/Gaspard/src/Analysis.cc index ad75bb183..f3b8bbc88 100644 --- a/NPAnalysis/Gaspard/src/Analysis.cc +++ b/NPAnalysis/Gaspard/src/Analysis.cc @@ -1,337 +1,96 @@ -#include "must.hh" - -#include <fstream> -#include "sstream" -#include <string> -#include <cmath> - -//include ROOT -#include "TROOT.h" -#include "TChain.h" -#include "TFile.h" -#include "TString.h" -#include "TH2.h" -#include "TStyle.h" -#include "TRandom.h" - -//NPL -#include "TGaspardTrackerData.h" -#include "TInteractionCoordinates.h" -#include "TInitialConditions.h" -#include "NPReaction.h" -//#include "NPEnergyLossCorrection.h" -using namespace NPL ; - -// Use CLHEP System of unit and Physical Constant -#include "CLHEP/Units/GlobalSystemOfUnits.h" -#include "CLHEP/Units/PhysicalConstants.h" -#include "CLHEP/Vector/ThreeVector.h" - -//NPA -#include "ConfigurationReader.hh" #include "ObjectManager.hh" -// prototype -double ThetaCalculation( double StripX , double StripY ,double StripZ, double PPAC_X, double PPAC_Y, double PPAC_Theta); -double HexaEnergy(double HeavyEnergy ,double ThetaHeavy , double Excitation); -///////////// +using namespace std; -int main(int argc,char** argv) -{ - // A Usefull Random Generator - TRandom rand; - // Get arguments from command line +int main(int argc,char** argv) +{ + // test if number of arguments is correct if (argc != 4) { cout << - "you need to specify a Reaction file, a Detector file and a ROOT file such as : Analysis myReaction.reaction myDetector.detector myRootFile.root" - << endl; + "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 rootfileName = argv[3]; + } - ////////////////////////////////////////////////////////////////////// - ///////////////////////// Load Reaction ////////////////////////////// - ////////////////////////////////////////////////////////////////////// - Reaction* myReaction = ReadReaction(reactionfileName); + // get arguments + string reactionfileName = argv[1]; + string detectorfileName = argv[2]; + string runToReadfileName = argv[3]; - ////////////////////////////////////////////////////////////////////// - ///////////////////////// Load Detector ///////////////////////////// - ////////////////////////////////////////////////////////////////////// - array* myArray = new array(); - ReadConfiguration(detectorfileName, myArray); - - cout << "////////////////////////////////////////////" << endl; - cout << "Total Number Of telescope : " << myArray->GetNumberOfTelescope() << endl; - cout << "////////////////////////////////////////////" << endl; + // Instantiate RootInput and RootOutput singleton classes + RootInput:: getInstance(runToReadfileName); + RootOutput::getInstance("Analysis/Gaspard_AnalyzedData", "AnalyzedTree"); - ////////////////////////////////////////////////////////////////////// - /////////////////////// Load ROOT file /////////////////////////////// - ////////////////////////////////////////////////////////////////////// - // Open output ROOT file from NPTool simulation run - string path = getenv("NPTOOL"); - path += "/Outputs/Simulation/" + rootfileName; - TFile *inFile = new TFile(path.c_str()); - TTree *tree = (TTree*) inFile->Get("SimulatedTree"); + // Initialize the reaction + NPL::Reaction* myReaction = new Reaction(); + myReaction->ReadConfigurationFile(reactionfileName); -// TChain* t1 = new TChain("SimulatedTree"); -// t1->Add("../../Outputs/Simulation/mySimul.root"); - TGaspardTrackerData* EventGPD = new TGaspardTrackerData(); - tree->SetBranchAddress("GASPARD",&EventGPD); - TInteractionCoordinates* InterCoord = new TInteractionCoordinates(); - tree->SetBranchAddress("InteractionCoordinates",&InterCoord); - TInitialConditions* InitCond = new TInitialConditions(); - tree->SetBranchAddress("InitialConditions",&InitCond); + // Initialize the detector + DetectorManager* myDetector = new DetectorManager; + myDetector -> ReadConfigurationFile(detectorfileName); - ////////////////////////////////////////////////////////////////////// - /////////////////////// Load ROOT file /////////////////////////////// - ////////////////////////////////////////////////////////////////////// - for (Int_t i = 0; i < NbElements; i++) { - TString hname = Form("hHitPattern%d", i+1); - TString htitle = Form("HitPattern%d", i+1); - hHitPattern[i] = new TH2F(hname, htitle, 128, 1, 128, 128, 1, 128); - } + // 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") ; - //////////////// Analyse Part //////////////////////////////////////// - Int_t nentries = (Int_t) tree->GetEntries(); - cout << "There are " << nentries << " entries to process" << endl; - for (Int_t e = 0; e < nentries; e++) { - check_light =false ; - if ((e+1)%10000==0) cout << "Entries number " << e+1 << " on " << tree->GetEntries() << endl ; - tree->GetEntry(e); + // Get GaspardTracker pointer + GaspardTracker* GPDTrack = (GaspardTracker*) myDetector->m_Detector["GASPARD"]; - // first check that there is an event detected - if (EventGPD->GetGPDTrkFirstStageFrontEMult() > 0) { - // calculate multiplicity - Int_t multXE = EventGPD->GetGPDTrkFirstStageFrontEMult(); - Int_t multYE = EventGPD->GetGPDTrkFirstStageBackEMult(); - Int_t multXT = EventGPD->GetGPDTrkFirstStageFrontTMult(); - Int_t multYT = EventGPD->GetGPDTrkFirstStageBackTMult(); - // case of multiplicity 1 for the strips - if (multXE==1 && multYE==1 && multXT==1 && multYT==1) { - // calculate detector number - Int_t det_ref = EventGPD->GetGPDTrkFirstStageFrontEDetectorNbr(0); - Int_t detecXE = EventGPD->GetGPDTrkFirstStageFrontEDetectorNbr(0) / det_ref; - Int_t detecXT = EventGPD->GetGPDTrkFirstStageFrontTDetectorNbr(0) / det_ref; - Int_t detecYE = EventGPD->GetGPDTrkFirstStageBackEDetectorNbr(0) / det_ref; - Int_t detecYT = EventGPD->GetGPDTrkFirstStageBackTDetectorNbr(0) / det_ref; - det_ref -= 1000; // for TGaspardTrackerDummyShape - // case of same detector - if (detecXE*detecXT*detecYE*detecYT == 1) { - // calculate strip number - Int_t stripXE = EventGPD->GetGPDTrkFirstStageFrontEStripNbr(0); - Int_t stripXT = EventGPD->GetGPDTrkFirstStageFrontTStripNbr(0); - Int_t stripYE = EventGPD->GetGPDTrkFirstStageBackEStripNbr(0); - Int_t stripYT = EventGPD->GetGPDTrkFirstStageBackTStripNbr(0); - // case of same strips on X and Y - if (stripXE == stripXT && stripYE == stripYT) { // here we have a good strip event - // fill hit pattern histograms - hHitPattern[det_ref-1]->Fill(stripXE, stripYE); - // get energy from strips - Double_t EnergyStripX = EventGPD->GetGPDTrkFirstStageFrontEEnergy(0) * MeV; - Double_t EnergyStripY = EventGPD->GetGPDTrkFirstStageBackEEnergy(0) * MeV; - Double_t EnergyStrip = 0.5 * (EnergyStripX + EnergyStripY); -// Double_t EnergyStrip = EnergyStripX; -// if (EnergyStripY > EnergyStrip) EnergyStrip = EnergyStripY; - Double_t TotalEnergy = EnergyStrip; - // fill detected energy - hEnerX->Fill(EnergyStripX); - hEnerY->Fill(EnergyStripY); - hEnerXY->Fill(EnergyStripX, EnergyStripY); - // calculate multiplicity of 2nd and third stages - Int_t mult2E = EventGPD->GetGPDTrkSecondStageEMult(); - Int_t mult2T = EventGPD->GetGPDTrkSecondStageTMult(); - Int_t mult3E = EventGPD->GetGPDTrkThirdStageEMult(); - Int_t mult3T = EventGPD->GetGPDTrkThirdStageTMult(); - // check if we have a 2nd stage event - if (mult2E==1 && mult2T==1) { - Double_t EnergySecond = EventGPD->GetGPDTrkSecondStageEEnergy(0); - TotalEnergy += EnergySecond; - } - // check if we have a third stage event - if (mult3E==1 && mult3T==1) { - Double_t EnergyThird = EventGPD->GetGPDTrkThirdStageEEnergy(0); - TotalEnergy += EnergyThird; - } - // get emitted angle in the beam frame -// Double_t Theta = InitCond->GetICEmittedAngleThetaLabIncidentFrame(0) * deg; - Double_t Theta = InterCoord->GetDetectedAngleTheta(0) * deg; - hTheta->Fill(Theta / deg); - hEnerTheta->Fill(Theta / deg, TotalEnergy); - // calculate lab angle from strips - Double_t xstrip = myArray->GetStripPositionX(det_ref, stripXE, stripYE); - Double_t ystrip = myArray->GetStripPositionY(det_ref, stripXE, stripYE); - Double_t zstrip = myArray->GetStripPositionZ(det_ref, stripXE, stripYE); - Hep3Vector posstrip(xstrip, ystrip, zstrip); - Double_t ThetaStrip = posstrip.theta() * rad; - cout << Theta/deg << " " << ThetaStrip/deg << endl; - // calculate excitation energy -// Ex = myReaction->ReconstructRelativistic(TotalEnergy / MeV, Theta / rad); - Ex = myReaction->ReconstructRelativistic(TotalEnergy / MeV, ThetaStrip / rad); - // condition on c.m. angle - // for (d,p) reaction theta_c.m. < 40 deg - Double_t ThetaCM = myReaction->EnergyLabToThetaCM(TotalEnergy / MeV, -500) * rad; - hThetaCM->Fill(ThetaCM / deg); - hThetaLabCM -> Fill(ThetaCM/deg,Theta/deg); -// if (ThetaCM/deg < 20) { - hEx->Fill(Ex); -// } - } - else { - cout << "Not same strips" << endl; - } - } - else { - cout << "Not same detector" << endl; - } - } - else { - cout << "Multiplicity is not one, it is: " << endl; - cout << "\tmultXE: " << multXE << endl; - cout << "\tmultXT: " << multXT << endl; - cout << "\tmultYE: " << multYE << endl; - cout << "\tmultYT: " << multYT << endl; - } - } -/* - PhysicsMUST2->BuildPhysicalEvent(EventMUST2) ; - - /////////////////////// - // Put your Analysis Here - - if( PhysicsMUST2->TelescopeNumber.size()>0) - { - for(Int_t mult = 0 ; mult < PhysicsMUST2->TelescopeNumber.size() ; mult++) - { - N=PhysicsMUST2->TelescopeNumber.at(mult); - - Double_t Theta = rad * ThetaCalculation( - Xs=myArray->GetStripPositionX( N , X=PhysicsMUST2->Si_X.at(mult) , Y=PhysicsMUST2->Si_Y.at(mult) ) , - Ys=myArray->GetStripPositionY( N , X=PhysicsMUST2->Si_X.at(mult) , Y=PhysicsMUST2->Si_Y.at(mult) ) , - Zs=myArray->GetStripPositionZ( N , X=PhysicsMUST2->Si_X.at(mult) , Y=PhysicsMUST2->Si_Y.at(mult) ) , - BeamX , - BeamY , - BeamTheta ); - - // Rand prevent binning effect due to discret Hit position pattern (strip center) - hXY->Fill( (Xs-1)+2*rand.Uniform() ,(Ys-1)+2*rand.Uniform() ); - - if(N==1)hXY1 -> Fill(X,Y) ; - if(N==2)hXY2 -> Fill(X,Y) ; - if(N==3)hXY3 -> Fill(X,Y) ; - if(N==4)hXY4 -> Fill(X,Y) ; - - Double_t Energy = PhysicsMUST2->TotalEnergy.at(mult)*MeV ; - - // Correct Energy Loss in the target -// Energy = ProtonTarget.EvaluateInitialEnergy( Energy , -// 20.618556701*micrometer , -// Theta ); - - - Ex = myReaction->ReconstructRelativistic( Energy , Theta ) ; - - ThetaCM = myReaction->EnergyLabToThetaCM(Energy) ; - hThetaLabCM -> Fill(ThetaCM/deg,Theta/deg) ; - hThetaCM -> Fill(ThetaCM/deg) ; - hEA-> Fill(Theta/deg , Energy) ; - //hEA-> Fill(InitialTheta , InitialEnergy) ; - hTheta->Fill(Theta/deg) ; - check_light = true ; - - hEx->Fill(Ex); -*/ - /*if(N==5 && check_light) - { - - double Hexa = HexaEnergy(PhysicsMUST2->TotalEnergy.at(mult) ,Ex) ; - cout << Hexa << endl ; - hEHexa->Fill(Hexa); - }*/ -/* } - - } - - PhysicsMUST2->Clear(); - ////////////////////// - - PhysicsMUST2->Clear();*/ - } - - TFile outfile("./Result/myResult.root","RECREATE") ; - - for (Int_t i = 0; i < NbElements; i++) hHitPattern[i]->Write(); - hTheta -> Write() ; - hThetaCM -> Write() ; - hThetaLabCM -> Write() ; - hXY -> Write() ; - hXY1 -> Write() ; - hXY2 -> Write() ; - hXY3 -> Write() ; - hXY4 -> Write() ; - hXY5 -> Write() ; - hXY6 -> Write() ; - hEx -> Write() ; - hEA -> Write() ; - hEHexa -> Write() ; - hEnerX->Write(); - hEnerY->Write(); - hEnerXY->Write(); - hEnerTheta->Write(); + // Get the TChain and treat it + TChain* chain = RootInput:: getInstance() -> GetChain(); - outfile.Close() ; - -return 0 ; -} + // Analysis is here! + int nentries = chain->GetEntries(); + cout << "Number of entries to be analysed: " << nentries << endl; + + for (int i = 0; i < nentries; i ++) { + if (i%10000 == 0 && i!=0) cout << i << " analysed events" << endl; + chain -> GetEntry(i); + + // Treat Gaspard event + myDetector->ClearEventPhysics(); + myDetector->BuildPhysicalEvent(); + // Get total energy and coordinates of interaction + double E = GPDTrack->GetEnergyDeposit(); + TVector3 A = GPDTrack->GetPositionOfInteraction(); + // Calculate scattering angle + double Theta = ThetaCalculation (A ,TVector3(0,0,1)); -double ThetaCalculation( double StripX , double StripY ,double StripZ, double PPAC_X, double PPAC_Y, double PPAC_Theta) - { - double TargetZ = -50;//mm - StripX = StripX-PPAC_X ; StripY = StripY-PPAC_Y ; StripZ=StripZ-TargetZ ; - double norme = sqrt ( StripX*StripX + StripY*StripY + StripZ*StripZ ) ; - double Theta = acos ( StripZ / norme ) ; - return (Theta-PPAC_Theta) ; //return Theta in rad - } + // Calculate excitatioin energy + 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; + } -double HexaEnergy(double HeavyEnergy ,double ThetaHeavy , double Excitation) - { - /*double M10He = 9362.73 + Excitation ; - double Malpha = 3727.42 ; - double Mn = 939.56536 ; - double M2 = M10He * M10He ; - double Ma2 = Malpha * Malpha ; + // Fill output tree + RootOutput::getInstance()->GetTree()->Fill(); + } - // HeavyEnergyLab to HeavyEnergyCM - - // Initial Lab to CM Momentum - G4double InitialMomentum = sqrt(EnergyHeavy*EnergyHeavy - Ma2) ; - G4double InitialMomentumX = sin(ThetaHeavy) ; - G4double InitialMomentumY = sin(ThetaHeavy) ; - G4double InitialMomentumZ = cos(ThetaHeavy) ; - - // Beta and Gamma CM to Lab - G4double betaX = (DaughterMomentumX*p - InitialMomentumX*InitialMomentum)/E ; - G4double betaY = (DaughterMomentumY*p - InitialMomentumY*InitialMomentum)/E ; - G4double betaZ = (DaughterMomentumZ*p - InitialMomentumZ*InitialMomentum)/E ; - G4double beta = sqrt (betaX*betaX + betaY*betaY + betaZ*betaZ ) ; - G4double beta2 = beta*beta ; - G4double gamma = 1 / ( sqrt(1 - beta2 ) ) ; - // Calculate everything for heavy particule - - G4double NewEnergy = - gamma*E - - betaX*gamma*DaughterMomentumX*p - - betaY*gamma*DaughterMomentumY*p - - betaZ*gamma*DaughterMomentumZ*p; - - double HexaEnergy = sqrt( ( (M2 + Ma2)/(2*M10He) - (HeavyEnergy) ) * (2*M10He) ); - - return(6*Mn-HexaEnergy) ;*/ - } + // delete singleton classes + RootOutput::getInstance()->Destroy(); + RootInput::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/Gaspard/src/ConfigurationReader.cc b/NPAnalysis/Gaspard/src/ConfigurationReader.cc deleted file mode 100644 index 827855f11..000000000 --- a/NPAnalysis/Gaspard/src/ConfigurationReader.cc +++ /dev/null @@ -1,319 +0,0 @@ -#include "ConfigurationReader.hh" -#include <vector> -#include <stdlib.h> -#include "CLHEP/Vector/ThreeVector.h" - -using namespace std ; -using namespace CLHEP ; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void ReadConfiguration( string Path , array* myArray) -{ - -////////General Reading needs//////// - string LineBuffer; - string DataBuffer; - -////////MUST2 Detector needs//////// - Hep3Vector A,B,C,D; - - double Theta,Phi,Distance,Beta_u,Beta_v,Beta_w; - int SI,SILI,CSI,VIS; - 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_Distance=false;bool check_Beta=false; - - bool MUST2=false; - bool Target=false; - bool CryoTarget=false; - -//////////Target Definition needs/////// - double TargetThickness, TargetRadius; - - //for cryogenic target - - double WindowsThickness, TargetTemperature, TargetPressure; - -////////////////////////////////////////////////////////////////////////////////////////// - ifstream ConfigFile; - ConfigFile.open(Path.c_str()); - - if( ConfigFile.is_open() ) - cout << " Configuration file " << Path << " loading " << endl; - else{ - cout << " Error, no configuration file" << Path << " found" << endl; return;} - - int i=0; - while( !ConfigFile.eof() ) - { - - //Pick-up next line - getline(ConfigFile, LineBuffer); i++; - - //Search for comment Symbol % - if(LineBuffer.compare(0,1,"%")==0) {;} - - //Search for Telescope - else if(LineBuffer.compare(0,9,"GPDSquare")==0 || LineBuffer.compare(0,13,"GPDDummyShape")==0) - { - - //A MUST2 Telescope is detected: - - //Check if it is the first telescope added. If yes, Instantiate a new Array linked to the logical World. - if(!MUST2) - { - //MUST2Array= new MUST2Array(world); - MUST2=true; - } - - check_A=false; check_B=false; check_C=false; check_D=false; - check_Theta=false; check_Phi=false; check_Distance=false; - cout << "///////////////" << endl; - cout << "Telescope found" << endl; - cout << "///////////////" << endl; - - ConfigFile >> DataBuffer; - //Position method - if(DataBuffer.compare(0,6,"X1_Y1=")==0) - { - check_A=true; - ConfigFile >> DataBuffer ; A.setX( atof( DataBuffer.c_str() ) ); - ConfigFile >> DataBuffer ; A.setY( atof( DataBuffer.c_str() ) ); - ConfigFile >> DataBuffer ; A.setZ( atof( DataBuffer.c_str() ) ); - - cout << "X1 Y1 corner position : " << A << endl; - } - - //Angle method - if(DataBuffer.compare(0,6,"THETA=")==0) - { - check_Theta=true; - ConfigFile >> DataBuffer ; Theta=atof(DataBuffer.c_str()) ; - cout << "Theta: "<< Theta << endl; - } - - - ConfigFile >> DataBuffer; - - //Position method - if(DataBuffer.compare(0,8,"X128_Y1=")==0) - { - check_B=true; - ConfigFile >> DataBuffer ; B.setX( atof( DataBuffer.c_str() ) ); - ConfigFile >> DataBuffer ; B.setY( atof( DataBuffer.c_str() ) ); - ConfigFile >> DataBuffer ; B.setZ( atof( DataBuffer.c_str() ) ); - - cout << "X128 Y1 corner position : " << B << endl; - } - - //Angle method - if(DataBuffer.compare(0,4,"PHI=")==0) - { - check_Phi=true; - ConfigFile >> DataBuffer ; Phi=atof(DataBuffer.c_str()) ; - cout << "Phi: "<< Phi << endl; - } - - ConfigFile >> DataBuffer; - - //Position method - if(DataBuffer.compare(0,8,"X1_Y128=")==0) - { - check_C=true; - ConfigFile >> DataBuffer ; C.setX( atof( DataBuffer.c_str() ) ); - ConfigFile >> DataBuffer ; C.setY( atof( DataBuffer.c_str() ) ); - ConfigFile >> DataBuffer ; C.setZ( atof( DataBuffer.c_str() ) ); - - cout << "X1 Y128 corner position : " << C << endl; - } - - //Angle method - if(DataBuffer.compare(0,2,"R=")==0) - { - check_Distance=true; - ConfigFile >> DataBuffer ; Distance=atof(DataBuffer.c_str()) ; - cout << "Distance: "<< Distance << endl; - } - - ConfigFile >> DataBuffer; - //Position method - if(DataBuffer.compare(0,10,"X128_Y128=")==0) - { - check_D=true; - ConfigFile >> DataBuffer ; D.setX( atof( DataBuffer.c_str() ) ); - ConfigFile >> DataBuffer ; D.setY( atof( DataBuffer.c_str() ) ); - ConfigFile >> DataBuffer ; D.setZ( atof( DataBuffer.c_str() ) ); - - cout << "X128 Y128 corner position : " << D << endl; - } - - //Angle method - if(DataBuffer.compare(0,5,"BETA=")==0) - { - check_Beta=true; - ConfigFile >> DataBuffer ; Beta_u=atof(DataBuffer.c_str()) ; - ConfigFile >> DataBuffer ; Beta_v=atof(DataBuffer.c_str()) ; - ConfigFile >> DataBuffer ; Beta_w=atof(DataBuffer.c_str()) ; - cout << "Beta: "<< Beta_u << Beta_v << Beta_w << endl; - } - - ConfigFile >> DataBuffer; - if(DataBuffer.compare(0,10,"FIRSTSTAGE=")==0) - { - ConfigFile >> DataBuffer;SI=atof(DataBuffer.c_str()) ; - } - - ConfigFile >> DataBuffer; - if(DataBuffer.compare(0,11,"SECONDSTAGE=")==0) - { - ConfigFile >> DataBuffer;SILI=atof(DataBuffer.c_str()) ; - } - - - ConfigFile >> DataBuffer; - if(DataBuffer.compare(0,10,"THIRDSTAGE=")==0) - { - ConfigFile >> DataBuffer;CSI=atof(DataBuffer.c_str()) ; - } - - - ///Add The previously define telescope - - //With position method - if(check_A && check_B && check_C && check_D) - { - myArray->addTelescope( A , - B , - C , - D ); - - } - - //with angle method - if(check_Theta && check_Phi && check_Distance && check_Beta) - { - myArray->addTelescope( Theta , - Phi , - Distance , - Beta_u , - Beta_v , - Beta_w ); - - } - - - } - - //Nothing understandable - else ; - - - } - -ConfigFile.close(); -return; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -Reaction* ReadReaction( string Path ) -{ -////////General Reading needs//////// - string LineBuffer; - string DataBuffer; - -////////Reaction Setting needs/////// -string Beam,Target,Heavy,Light,CrossSectionPath; -double BeamEnergy,ExcitationEnergy; -Reaction* myReaction; - -////////////////////////////////////////////////////////////////////////////////////////// - ifstream ReactionFile; - ReactionFile.open(Path.c_str()); - - if( ReactionFile.is_open() ) - cout << " Reaction file " << Path << " loading " << endl; - else{ - cout << " Error, no Reaction file" << Path << " found" << endl; return myReaction;} - - - int i=0; - while( !ReactionFile.eof() ) - { - //Pick-up next line - getline(ReactionFile, LineBuffer); i++; - - //Search for comment Symbol % - if(LineBuffer.compare(0,1,"%")==0) {;} - - else if(LineBuffer.compare(0,9,"Transfert")==0) - { - - ReactionFile >> DataBuffer; - if(DataBuffer.compare(0,5,"Beam=")==0) - { - ReactionFile >> DataBuffer; - Beam = DataBuffer; - cout << "Beam " << Beam << endl; - } - - ReactionFile >> DataBuffer; - if(DataBuffer.compare(0,7,"Target=")==0) - { - ReactionFile >> DataBuffer; - Target = DataBuffer; - cout << "Target " << Target << endl; - } - - ReactionFile >> DataBuffer; - if(DataBuffer.compare(0,6,"Light=")==0) - { - ReactionFile >> DataBuffer; - Light = DataBuffer; - cout << "Light " << Light << endl; - } - - ReactionFile >> DataBuffer; - if(DataBuffer.compare(0,6,"Heavy=")==0) - { - ReactionFile >> DataBuffer; - Heavy = DataBuffer; - cout << "Heavy " << Heavy << endl; - } - - ReactionFile >> DataBuffer; - if(DataBuffer.compare(0,17,"ExcitationEnergy=")==0) - { - ReactionFile >> DataBuffer; - ExcitationEnergy = atof(DataBuffer.c_str()); - cout << "ExcitationEnergy " << ExcitationEnergy << " MeV" << endl; - } - - ReactionFile >> DataBuffer; - if(DataBuffer.compare(0,11,"BeamEnergy=")==0) - { - ReactionFile >> DataBuffer; - BeamEnergy = atof(DataBuffer.c_str()); - cout << "EnergyBeam " << BeamEnergy << " MeV" << endl; - } - - ReactionFile >> DataBuffer;ReactionFile >> DataBuffer; - ReactionFile >> DataBuffer;ReactionFile >> DataBuffer; - ReactionFile >> DataBuffer;ReactionFile >> DataBuffer; - ReactionFile >> DataBuffer;ReactionFile >> DataBuffer; - ReactionFile >> DataBuffer;ReactionFile >> DataBuffer; - - - ReactionFile >> DataBuffer; - if(DataBuffer.compare(0,17,"CrossSectionPath=")==0) - { - ReactionFile >> CrossSectionPath; - cout << "CrossSectionPath " << CrossSectionPath << endl; - } - } - } - -myReaction = new Reaction(Beam, Target, Light, Heavy,BeamEnergy,ExcitationEnergy,CrossSectionPath); - -ReactionFile.close(); -return myReaction; - -} - diff --git a/NPAnalysis/Gaspard/src/ConfigurationReader.hh b/NPAnalysis/Gaspard/src/ConfigurationReader.hh deleted file mode 100644 index d4b2e1fe1..000000000 --- a/NPAnalysis/Gaspard/src/ConfigurationReader.hh +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef ConfigurationReader_h -#define ConfigurationReader_h 1 - -// STL -#include <string> -#include <iostream> -#include <fstream> - -// NPL -#include "NPReaction.h" -using namespace NPL ; - -#include "must.hh" - -void ReadConfiguration ( string Path , array* myArray ) ; -Reaction* ReadReaction ( string Path ) ; - - -#endif - diff --git a/NPAnalysis/Gaspard/src/DetectorManager.cc b/NPAnalysis/Gaspard/src/DetectorManager.cc new file mode 100644 index 000000000..93bbbd699 --- /dev/null +++ b/NPAnalysis/Gaspard/src/DetectorManager.cc @@ -0,0 +1,229 @@ +#include "DetectorManager.hh" + +// STL +#include <iostream> +#include <fstream> +#include <cstdlib> + +// Detector +#include "Must2Array.h" +#include "GaspardTracker.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("GASPARD", 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[DetectorName] = 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/Gaspard/src/GNUmakefile b/NPAnalysis/Gaspard/src/GNUmakefile index 51c5fef9d..c18b108aa 100644 --- a/NPAnalysis/Gaspard/src/GNUmakefile +++ b/NPAnalysis/Gaspard/src/GNUmakefile @@ -5,7 +5,7 @@ CPP=g++ EXEC=Analysis # local includes -NPAINCLUDES = $(NPANA)/include +NPAINCLUDES = ../include # ROOT includes CXXFLAGS += `root-config --cflags` @@ -15,21 +15,21 @@ CXXFLAGS += -I$(CLHEP_INCLUDE_DIR) CXXFLAGS += -I$(NPAINCLUDES) CXXFLAGS += -I$(NPLIB)/include - LDFLAGS = `root-config --libs` -lMathMore -#LDFLAGS += -L$(NPLIB) -lMust2Data -lReaction -lEnergyLossCorrection -LDFLAGS += -L$(NPLIB)/lib -lMust2Data -lGaspardData -lInteractionCoordinates \ - -lInitialConditions -lReaction -LDFLAGS += -L$(CLHEP_LIB_DIR) -l$(CLHEP_LIB) +LDFLAGS+= -L$(NPLIB)/lib -lVDetector -lIORoot -lReaction -lEnergyLoss \ + -lMust2Data -lMust2Physics \ + -lGaspardData -lGaspardPhysics \ + -lAnnularS1Data \ + -lInitialConditions -lInteractionCoordinates +LDFLAGS+= -L$(CLHEP_LIB_DIR) -l$(CLHEP_LIB) SRC= $(wildcard *.cc) -INC= $(wildcart $(NPAINCLUDES)/*.hh) OBJ=$(SRC:.cc=.o) #all:$(EXEC) # @$(CPP) -o $@ -c $< $(CXXFLAGS) -Analysis:$(OBJ) $(INC) +Analysis:$(OBJ) @$(CPP) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) mv Analysis ../Analysis diff --git a/NPAnalysis/Gaspard/src/ObjectManager.hh b/NPAnalysis/Gaspard/src/ObjectManager.hh deleted file mode 100644 index 3e2bd0b1d..000000000 --- a/NPAnalysis/Gaspard/src/ObjectManager.hh +++ /dev/null @@ -1,84 +0,0 @@ -// 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 organising we use Name Space. - - -// -----------------------------------DOUBLE, INT, BOOL-------------------------------------------- - -namespace VARIABLE - { - double Xs,Ys,Zs,N ; - double Theta = 0 ; - double Ex = 0 ; - double ThetaCM = 0 ; - int X,Y ; - bool check_light = false ; - - } - -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: - const int NbElements = 40; - - TH2F *hXY1 = new TH2F("hXY1","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hXY2 = new TH2F("hXY2","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hXY3 = new TH2F("hXY3","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hXY4 = new TH2F("hXY4","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hXY5 = new TH2F("hXY5","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hXY6 = new TH2F("hXY6","", 128 , 1 , 128 , 128 , 1 , 128 ) ; - TH2F *hHitPattern[NbElements]; - - TH1F *hEnerX = new TH1F("hEnerX", "Energy X", 1000, -1, 10); - TH1F *hEnerY = new TH1F("hEnerY", "Energy Y", 1000, -1, 10); - TH2F *hEnerXY = new TH2F("hEnerXY", "Energy X vs Y", 100, -1, 10, 100, -1, 10); - TH2F *hEnerTheta = new TH2F("hEnerTheta", "Energy v.s. Theta", 90, 0, 180, 400, 0, 100); - - TH2F *hXY = new TH2F("hXY","", 300 , -130 , 130 , 300 , -130 , 130 ) ; - TH2F *hEA = new TH2F("hEA" ,"", 120 , 0 , 60 , 260 , 0 , 130 ) ; - TH1F *hEx = new TH1F("hEx", "E* (MeV)", 10000, -10, 40); - TH1F *hEHexa = new TH1F("hEHexa","EHexa (MeV)", 1000 , -5 , 5 ) ; - TH1F *hThetaCM = new TH1F("hThetaCM","ThetaCM (deg)", 30 , 0 , 60 ) ; - TH1F *hTheta = new TH1F("hTheta","Theta Lab (deg)",180,0,180) ; - TH2F *hThetaLabCM = new TH2F("hThetaLabCM","", 90 , 0 , 180 , 90 , 0 , 180 ) ; - - // Declare your Cut here: - - } - -using namespace GRAPH ; -// ---------------------------------------------------------------------------------------------- - - -// -----------------------------------ENERGY LOSS------------------------------------------------ -/* -#include "NPEnergyLossCorrection.h" -using namespace NPL ; -namespace ENERGYLOSS - { - -// EnergyLoss ProtonTarget = EnergyLoss ( "/home/Adrien/Desktop/dEdX.txt" , -// 100 , -// 1 ); - - } - -using namespace ENERGYLOSS ; -*/ -// ---------------------------------------------------------------------------------------------- - - - diff --git a/NPAnalysis/Gaspard/src/must.cc b/NPAnalysis/Gaspard/src/must.cc deleted file mode 100644 index 4ccdeb7ed..000000000 --- a/NPAnalysis/Gaspard/src/must.cc +++ /dev/null @@ -1,245 +0,0 @@ -#include "must.hh" -#include <cmath> -#include <iostream> - -using namespace std; - -/////////////////////////////////////////////////////// - -//////// Constructor by Spherical Coordinate -must::must(double theta, double phi, double distance, double beta_u , double beta_v, double beta_w) - { - 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) - Hep3Vector U ; - //Vector V on Telescope Face (parallele to X Strip) - Hep3Vector V ; - //Vector W normal to Telescope Face (pointing CsI) - Hep3Vector W ; - //Vector position of Telescope Face center - Hep3Vector C ; - - /*if(theta==180 && phi==90) - { - C = Hep3Vector (0,0,distance) ; - U = Hep3Vector (1,0,0) ; - V = Hep3Vector (0,1,0) ; - W = Hep3Vector (0,0,1) ; - }*/ - - if(theta==0 && phi==0) - { - C = Hep3Vector (0,0,distance) ; - U = Hep3Vector (1,0,0) ; - V = Hep3Vector (0,1,0) ; - W = Hep3Vector (0,0,1) ; - } - - else - { - C = Hep3Vector ( distance * sin(theta) * cos(phi) , - distance * sin(theta) * sin(phi) , - distance * cos(theta) ); - - Hep3Vector Y = Hep3Vector( cos(theta) * cos(phi), - cos(theta) * sin(phi), - -sin(theta)); - - W = C.unit() ; -// U = W.cross( Hep3Vector (0,1,0) ) ; - U = W.cross( Y ) ; - V = W.cross(U); - - U = U.unit(); - V = V.unit(); - - U.rotate( U , beta_u * Pi/180. ) ; - V.rotate( U , beta_u * Pi/180. ) ; - - U.rotate( V , beta_v * Pi/180. ) ; - V.rotate( V , beta_v * Pi/180. ) ; - - U.rotate( W , beta_w * Pi/180. ) ; - V.rotate( W , beta_w * Pi/180. ) ; - } - -// double Face = 98 ; //mm - double Face = 50 ; //mm - double NumberOfStrip = 128 ; - double StripPitch = Face/NumberOfStrip ; //mm - - vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ; - 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 < 128 ; i++ ) - { - - lineX.clear() ; - lineY.clear() ; - lineZ.clear() ; - - for( int j = 0 ; j < 128 ; 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) ; - } - - StripPositionX.push_back(lineX) ; - StripPositionY.push_back(lineY) ; - StripPositionZ.push_back(lineZ) ; - - } - } - -/////////////////////////////////////////////////////// - -must::must( Hep3Vector C_X1_Y1 , - Hep3Vector C_X128_Y1 , - Hep3Vector C_X1_Y128 , - Hep3Vector C_X128_Y128 , - Hep3Vector TargetPosition = Hep3Vector(0,0,0) ) - { - - // Vector U on Telescope Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis) - Hep3Vector U = C_X128_Y1 - C_X1_Y1 ; - U = U.unit() ; - - // Vector V on Telescope Face (parallele to X Strip) - Hep3Vector V = C_X1_Y128 - C_X1_Y1 ; - V = V.unit() ; - - // Position Vector of Strip Center - Hep3Vector StripCenter ; - // Position Vector of X=1 Y=1 Strip - Hep3Vector Strip_1_1 ; - - // Geometry Parameter - double Face = 98 ; //mm - double NumberOfStrip = 128 ; - double StripPitch = Face/NumberOfStrip ; //mm - - // Buffer object to fill Position Array - vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ; - - // Moving StripCenter to 1.1 corner: - Strip_1_1 = C_X1_Y1 + (U+V) * StripPitch/2 ; - - for( int i = 0 ; i < 128 ; i++ ) - { - lineX.clear() ; - lineY.clear() ; - lineZ.clear() ; - - for( int j = 0 ; j < 128 ; j++ ) - { - StripCenter = Strip_1_1 + StripPitch*( i*U + j*V ) ; - //StripCenter += -TargetPosition ; - - lineX.push_back( StripCenter.x() ) ; - lineY.push_back( StripCenter.y() ) ; - lineZ.push_back( StripCenter.z() ) ; - } - - StripPositionX.push_back(lineX) ; - StripPositionY.push_back(lineY) ; - StripPositionZ.push_back(lineZ) ; - - } - } - -/////////////////////////////////////////////////////// -double must::GetStripPositionX(int X , int Y) - { - return StripPositionX[X][Y]; - } -/////////////////////////////////////////////////////// -double must::GetStripPositionY(int X , int Y) - { - return StripPositionY[X][Y]; - } -/////////////////////////////////////////////////////// -double must::GetStripPositionZ(int X , int Y) - { - return StripPositionZ[X][Y]; - } -/////////////////////////////////////////////////////// -void must::Print() - { - - for( int i = 0 ; i < 128 ; i++ ) - { - - for( int j = 0 ; j < 128 ; j++ ) - { - cout << i+1 << " "<< j+1 << " " - << StripPositionX[i][j] << " " - << StripPositionY[i][j] << " " - << StripPositionZ[i][j] << " " - << endl ; - } - } - } - -/////////////////////////////////////////////////////// -///////////////// Class Array ///////////////////////// -/////////////////////////////////////////////////////// -array::array() -{NumberOfTelescope=0;} -/////////////////////////////////////////////////////// -void array::addTelescope( double theta , double phi , double distance , double beta_u , double beta_v, double beta_w) - { - must myMust(theta , phi , distance , beta_u , beta_v, beta_w) ; - NumberOfTelescope++ ; - myArray.push_back(myMust) ; - } - -/////////////// -void array::addTelescope(Hep3Vector A , Hep3Vector B , Hep3Vector C , Hep3Vector D ) - { - must myMust( A , B , C , D) ; - NumberOfTelescope++ ; - myArray.push_back(myMust) ; - } - - -/////////////////////////////////////////////////////// -double array::GetStripPositionX( int N , int X , int Y ) - { - return myArray[N-1].GetStripPositionX( X-1 , Y-1 ); - } - -/////////////////////////////////////////////////////// -double array::GetStripPositionY( int N , int X , int Y ) - { - return myArray[N-1].GetStripPositionY( X-1 , Y-1 ); - } - -/////////////////////////////////////////////////////// -double array::GetStripPositionZ( int N , int X , int Y ) - { - return myArray[N-1].GetStripPositionZ( X-1 , Y-1 ); - } - -/////////////////////////////////////////////////////// -void array::Print() - { - for ( int i = 0 ; i < myArray.size() ; i++ ) - { cout << " Telescope : " << i+1 << endl ; myArray.at(i).Print() ; } - } - diff --git a/NPAnalysis/Gaspard/src/must.hh b/NPAnalysis/Gaspard/src/must.hh deleted file mode 100644 index d3fa3a733..000000000 --- a/NPAnalysis/Gaspard/src/must.hh +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef must_h -#define must_h 1 - -#include <vector> -#include <TFile.h> -#include <TH2.h> -#include <TH2F.h> -#include "CLHEP/Vector/ThreeVector.h" -using namespace std ; -using namespace CLHEP ; - -class must -{ -public: - must( double theta , double phi , double distance , double beta_u , double beta_v, double beta_w) ; - must( Hep3Vector C_X1_Y1 , - Hep3Vector C_X128_Y1 , - Hep3Vector C_X1_Y128 , - Hep3Vector C_X128_Y128 , - Hep3Vector TargetPosition ); - - double GetStripPositionX( int X , int Y ) ; - double GetStripPositionY( int X , int Y ) ; - double GetStripPositionZ( int X , int Y ) ; - void Print() ; - -private: - - vector< vector < double > > StripPositionX ; - vector< vector < double > > StripPositionY ; - vector< vector < double > > StripPositionZ ; - -}; - - -class array -{ -public: - array(); - void addTelescope( double theta , double phi , double distance , double beta_u , double beta_v , double beta_w) ; - void addTelescope( Hep3Vector C_X1_Y1 , - Hep3Vector C_X128_Y1 , - Hep3Vector C_X1_Y128 , - Hep3Vector C_X128_Y128 ); - - double GetStripPositionX( int N , int X , int Y ) ; - double GetStripPositionY( int N , int X , int Y ) ; - double GetStripPositionZ( int N , int X , int Y ) ; - double GetNumberOfTelescope() {return NumberOfTelescope;} ; - void Print() ; - -private: - vector< must > myArray ; - int NumberOfTelescope ; - -public: // Histogram - -/*// Hit Density - vector<TH2F*> HitDensity ; - - // Time of Flight Identification - vector<TH2F*> TOF ; - - // EDE Identification - vector<TH2F*> EDE ; - - // Kinematic Line - KinematicLine ; - - // Excitation Energy - ExcitationEnergy ;*/ - -}; - -#endif diff --git a/NPAnalysis/Gaspard/macros/ControlSimu.C b/NPAnalysis/macros/ControlSimu.C similarity index 70% rename from NPAnalysis/Gaspard/macros/ControlSimu.C rename to NPAnalysis/macros/ControlSimu.C index 56f2ee460..bb7b8ddcb 100644 --- a/NPAnalysis/Gaspard/macros/ControlSimu.C +++ b/NPAnalysis/macros/ControlSimu.C @@ -1,3 +1,30 @@ +/***************************************************************************** + * 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 : 22/07/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * + This macro displays everything concerning the incident beam and the * + * emitted particle from NPSimulation * + * * + * + Use in a ROOT session: * + * .x ControlSimu.C("FileToAnalyse") * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + #include <iostream> #include "TROOT.h" diff --git a/NPAnalysis/Gaspard/macros/GeometricalEfficiency.C b/NPAnalysis/macros/GeometricalEfficiency.C similarity index 50% rename from NPAnalysis/Gaspard/macros/GeometricalEfficiency.C rename to NPAnalysis/macros/GeometricalEfficiency.C index 90ca0e83b..5bbc6f586 100644 --- a/NPAnalysis/Gaspard/macros/GeometricalEfficiency.C +++ b/NPAnalysis/macros/GeometricalEfficiency.C @@ -1,3 +1,31 @@ +/***************************************************************************** + * 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 : 22/07/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * + This macro calculates the geometrical efficiency for a given geometry* + * NPSimulation should have been run with an isotropic source event * + * generator. * + * * + * + Use in a ROOT session: * + * .x GeometricalEfficiency.C("FileToAnalyse") * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + #include <iostream> #include "TROOT.h" diff --git a/NPAnalysis/macros/README b/NPAnalysis/macros/README new file mode 100644 index 000000000..de21ad125 --- /dev/null +++ b/NPAnalysis/macros/README @@ -0,0 +1,24 @@ +/***************************************************************************** + * 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 : 11/09/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * + The ROOT macros found in this directory are independent of the * + * detector set-up and can be run for any detector. * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + * * + *****************************************************************************/ + diff --git a/NPAnalysis/Gaspard/macros/TestAngleReconstruction.C b/NPAnalysis/macros/TestAngleReconstruction.C similarity index 68% rename from NPAnalysis/Gaspard/macros/TestAngleReconstruction.C rename to NPAnalysis/macros/TestAngleReconstruction.C index 217efe959..b29fc482f 100644 --- a/NPAnalysis/Gaspard/macros/TestAngleReconstruction.C +++ b/NPAnalysis/macros/TestAngleReconstruction.C @@ -1,3 +1,31 @@ +/***************************************************************************** + * 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 : 22/07/09 * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * + This macro studues the impact of the beam emittance on the angle * + * determination. * + * * + * + Use in a ROOT session: * + * .x TestAngleReconstruction.C("FileToAnalyse") * + * * + * * + *---------------------------------------------------------------------------* + * Comment: * + * + This macro has not been fully tested yet. Be careful * + * * + * * + *****************************************************************************/ + #include <iostream> #include "TROOT.h" @@ -11,7 +39,6 @@ #include "TCanvas.h" #include "TMath.h" -#include "TGaspardTrackerData.h" #include "TInitialConditions.h" #include "TInteractionCoordinates.h" @@ -23,13 +50,9 @@ void TestAngleReconstruction(const char * fname = "mySimul") TString inFileName = fname; if (!inFileName.Contains("root")) inFileName += ".root"; TFile *inFile = new TFile(path + inFileName); - TTree *tree = (TTree*) inFile->Get("EventTree"); + TTree *tree = (TTree*) inFile->Get("SimulatedTree"); // Connect the branches of the TTree and activate then if necessary - // TGaspardTrackerData branch - TGaspardTrackerData *gpdTrkData = 0; - tree->SetBranchAddress("GASPARD", &gpdTrkData); - tree->SetBranchStatus("GASPARD", 0); // TInitialConditions branch TInitialConditions *initCond = 0; tree->SetBranchAddress("InitialConditions", &initCond); diff --git a/NPLib/GASPARD/GaspardTracker.cxx b/NPLib/GASPARD/GaspardTracker.cxx index d9971e51b..c6afac495 100644 --- a/NPLib/GASPARD/GaspardTracker.cxx +++ b/NPLib/GASPARD/GaspardTracker.cxx @@ -244,9 +244,9 @@ void GaspardTracker::ReadConfiguration(string Path) // with angle method else if ( check_Theta && check_Phi && check_R && check_beta ) { - AddModuleSquare(R , - Theta , + AddModuleSquare(Theta , Phi , + R , beta_u , beta_v , beta_w ); @@ -398,12 +398,12 @@ void GaspardTracker::ReadConfiguration(string Path) // with angle method else if ( check_Theta && check_Phi && check_R && check_beta ) { - AddModuleDummyShape(R , - Theta , - Phi , - beta_u , - beta_v , - beta_w ); + AddModuleDummyShape(Theta, + Phi, + R, + beta_u, + beta_v, + beta_w); } // reset boolean flag for point positioning diff --git a/NPLib/GASPARD/GaspardTracker.h b/NPLib/GASPARD/GaspardTracker.h index 7ffc4f8db..e0d25a08b 100644 --- a/NPLib/GASPARD/GaspardTracker.h +++ b/NPLib/GASPARD/GaspardTracker.h @@ -106,14 +106,14 @@ public: double beta_w); // Getters to retrieve the (X,Y,Z) coordinates of a pixel defined by strips (X,Y) - double GetStripPositionX(int N ,int X ,int Y) { return m_StripPositionX[N-1][X-1][Y-1]; }; - double GetStripPositionY(int N ,int X ,int Y) { return m_StripPositionY[N-1][X-1][Y-1]; }; - double GetStripPositionZ(int N ,int X ,int Y) { return m_StripPositionZ[N-1][X-1][Y-1]; }; - double GetNumberOfModule() { return m_NumberOfModule; }; + double GetStripPositionX(int N ,int X ,int Y) { return m_StripPositionX[N-1][X-1][Y-1]; } + double GetStripPositionY(int N ,int X ,int Y) { return m_StripPositionY[N-1][X-1][Y-1]; } + double GetStripPositionZ(int N ,int X ,int Y) { return m_StripPositionZ[N-1][X-1][Y-1]; } + double GetNumberOfModule() { return m_NumberOfModule; } // Get Root input and output objects - TGaspardTrackerData* GetEventData() {return m_EventData;}; - TGaspardTrackerPhysics* GetEventPhysics() {return m_EventPhysics;}; + TGaspardTrackerData* GetEventData() {return m_EventData;} + TGaspardTrackerPhysics* GetEventPhysics() {return m_EventPhysics;} // To be called after a build Physical Event double GetEnergyDeposit(); diff --git a/NPLib/GASPARD/TGaspardTrackerPhysics.cxx b/NPLib/GASPARD/TGaspardTrackerPhysics.cxx index 6bca92aea..51f79ca0e 100644 --- a/NPLib/GASPARD/TGaspardTrackerPhysics.cxx +++ b/NPLib/GASPARD/TGaspardTrackerPhysics.cxx @@ -136,7 +136,7 @@ void TGaspardTrackerPhysics::BuildPhysicalEvent(TGaspardTrackerData* Data) cout << "Warning: multiplicity in third stage greater than in firststage" << endl; } - // Analysis code here. + // Fill total energy TotalEnergy.push_back(EnergyTot); } else { diff --git a/NPLib/InteractionCoordinates/TInteractionCoordinates.cxx b/NPLib/InteractionCoordinates/TInteractionCoordinates.cxx index ac06880b8..25e71b4f3 100644 --- a/NPLib/InteractionCoordinates/TInteractionCoordinates.cxx +++ b/NPLib/InteractionCoordinates/TInteractionCoordinates.cxx @@ -54,9 +54,9 @@ void TInteractionCoordinates::Clear() void TInteractionCoordinates::Dump() { - cout << "XXXXXXXXXXXXX Initial conditions XXXXXXXXXXXXXXXX" << endl; + cout << "XXXXXXXXXXXXX Interaction coordinates XXXXXXXXXXXXXXXX" << endl; - cout << "Vertex position : " << endl; + cout << "Interaction position : " << endl; cout << "\tX : " << fDetected_Position_X[0] << endl; cout << "\tY : " << fDetected_Position_Y[0] << endl; cout << "\tZ : " << fDetected_Position_Z[0] << endl; -- GitLab