From 8d8daebe7882e05110cf5ed6cf65d34963a8d7cb Mon Sep 17 00:00:00 2001 From: adrien-matta <a.matta@surrey.ac.uk> Date: Sun, 11 Jan 2015 14:49:51 +0000 Subject: [PATCH] * Adding MUGAST analysis --- NPAnalysis/MUGAST/Analysis.cxx | 283 ++++++++++++++++++++++ NPAnalysis/MUGAST/Analysis.h | 67 +++++ NPAnalysis/MUGAST/Makefile | 31 +++ NPAnalysis/MUGAST/NPAnalysis | Bin 0 -> 47784 bytes NPAnalysis/MUGAST/RunToTreat.txt | 5 + NPAnalysis/MUGAST/configs/ConfigMust2.dat | 26 ++ NPAnalysis/MUGAST/configs/ConfigSSSD.dat | 4 + 7 files changed, 416 insertions(+) create mode 100755 NPAnalysis/MUGAST/Analysis.cxx create mode 100755 NPAnalysis/MUGAST/Analysis.h create mode 100755 NPAnalysis/MUGAST/Makefile create mode 100755 NPAnalysis/MUGAST/NPAnalysis create mode 100755 NPAnalysis/MUGAST/RunToTreat.txt create mode 100755 NPAnalysis/MUGAST/configs/ConfigMust2.dat create mode 100755 NPAnalysis/MUGAST/configs/ConfigSSSD.dat diff --git a/NPAnalysis/MUGAST/Analysis.cxx b/NPAnalysis/MUGAST/Analysis.cxx new file mode 100755 index 000000000..4849a27d9 --- /dev/null +++ b/NPAnalysis/MUGAST/Analysis.cxx @@ -0,0 +1,283 @@ +#include "Analysis.h" + +int main(int argc, char** argv){ + // command line parsing + NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv); + + // Instantiate RootInput + string runToReadfileName = myOptionManager->GetRunToReadFile(); + RootInput:: getInstance("RunToTreat.txt"); + TChain* Chain = RootInput:: getInstance()->GetChain(); + // if input files are not given, use those from TAsciiFile + if (myOptionManager->IsDefault("DetectorConfiguration")) { + string name = RootInput::getInstance()->DumpAsciiFile("DetectorConfiguration"); + myOptionManager->SetDetectorFile(name); + } + + if (myOptionManager->IsDefault("EventGenerator")) { + string name = RootInput::getInstance()->DumpAsciiFile("EventGenerator"); + myOptionManager->SetReactionFile(name); + } + + // get input files from NPOptionManager + string detectorfileName = myOptionManager->GetDetectorFile(); + string OutputfileName = myOptionManager->GetOutputFile(); + + // Instantiate RootOutput + RootOutput::getInstance("Analysis/"+OutputfileName, "ResultTree"); + // RootOutput::getInstance()->GetFile()->SetCompressionLevel(0); + // Instantiate the detector using a file + NPA::DetectorManager* myDetector = new DetectorManager(); + myDetector->ReadConfigurationFile(detectorfileName); + // Attach new branch + InitOutputBranch(); + InitInputBranch(); + + // Instantiate the Reaction + NPL::Reaction* myReaction = new Reaction ; + myReaction -> ReadConfigurationFile(myOptionManager->GetReactionFile()); + + //////////////////////////////////////////////////////// + // Get pointer to the different detector + + TMust2Physics* M2 = (TMust2Physics*) myDetector -> GetDetector("MUST2"); + GaspardTracker* GD = (GaspardTracker*) myDetector -> GetDetector("GASPARD"); + + // Beam Energy + double BeamEnergy = 4.0* 74; // AMEV + + // intermediate variable + TRandom3 Rand = TRandom3(); + int DetectorNumber = 0 ; + double ThetaNormalTarget = 0 ; + double ThetaM2Surface = 0; + double X_M2 = 0 ; + double Y_M2 = 0 ; + double Z_M2 = 0 ; + double Si_E_M2 = 0 ; + double CsI_E_M2 = 0 ; + double Energy = 0; + double E_M2 = 0; + double Si_X_M2 = 0; + double Si_Y_M2 = 0; + double ZTarget = 0; + double TargetThickness = 9*micrometer; + + double ThetaGDSurface = 0; + double X_GD = 0 ; + double Y_GD = 0 ; + double Z_GD = 0 ; + double Si_E_GD = 0 ; + double E_GD = 0; + double Si_X_GD = 0; + double Si_Y_GD = 0; + + + // Get number of events to treat + cout << endl << "///////// Starting Analysis ///////// "<< endl; + int nentries = Chain->GetEntries(); + cout << " Number of Event to be treated : " << nentries << endl; + clock_t begin = clock(); + clock_t end = begin; + cout.precision(5); + ////////////////////////////////////////////////////////////////////////////// + // main loop on entries // + for (int i = 0 ; i < nentries; i++) { + if (i%10000 == 0 && i!=0) { + end = clock(); + long double TimeElapsed = (long double) (end-begin) / CLOCKS_PER_SEC; + double percent = (double)i/nentries; + double TimeToWait = (TimeElapsed/percent) - TimeElapsed; + cout << " "<< flush; + cout << "\r Progression:" + << percent*100 << " % \t | \t Remaining time : ~" + << TimeToWait <<"s | Analysis Rate : " + << (double) i/TimeElapsed << flush; + } + else if (i == nentries-1) cout << "\r Progression:" << " 100% " <<endl; + // Get the raw Data + Chain -> GetEntry(i); + // Clear previous Event + myDetector->ClearEventPhysics(); + // Build the current event + myDetector->BuildPhysicalEvent(); + // Reinitiate calculated variable + ReInitValue(); + + // Get the Init information on beam position and energy + // and apply by hand the experimental resolution + // This is because the beam diagnosis are not simulated + // PPAC position resolution on target is assumed to be 1mm + double XTarget = 0; + double YTarget = 0; + TVector3 BeamDirection = TVector3(0,0,1); + + // Beam energy is measured using F3 and F2 plastic TOF + BeamEnergy = BeamCD2.Slow(BeamEnergy,TargetThickness/2.,0); + myReaction->SetBeamEnergy(BeamEnergy); + + //////////////////////////// LOOP on MUST2 ////////////////// + for(unsigned int countMust2 = 0 ; countMust2 < M2->Si_E.size() ; countMust2++){ + /************************************************/ + //Part 0 : Get the usefull Data + // MUST2 + int X = M2->Si_X[countMust2]; + int Y = M2->Si_Y[countMust2]; + int TelescopeNumber = M2->TelescopeNumber[countMust2]; + Si_X_M2 = X ; + Si_Y_M2 = Y ; + + /************************************************/ + // Part 1 : Impact Angle + ThetaM2Surface = 0; + ThetaNormalTarget = 0; + if(XTarget>-1000 && YTarget>-1000){ + TVector3 BeamImpact(XTarget,YTarget,0); + TVector3 HitDirection = M2 -> GetPositionOfInteraction(countMust2) - BeamImpact ; + ThetaLab = HitDirection.Angle( BeamDirection ); + + ThetaM2Surface = HitDirection.Angle(- M2 -> GetTelescopeNormal(countMust2) ); + ThetaNormalTarget = HitDirection.Angle( TVector3(0,0,1) ) ; + X_M2 = M2 -> GetPositionOfInteraction(countMust2).X() ; + Y_M2 = M2 -> GetPositionOfInteraction(countMust2).Y() ; + Z_M2 = M2 -> GetPositionOfInteraction(countMust2).Z() ; + } + + else{ + BeamDirection = TVector3(-1000,-1000,-1000); + ThetaM2Surface = -1000 ; + ThetaNormalTarget = -1000 ; + } + + /************************************************/ + + /************************************************/ + // Part 2 : Impact Energy + Energy = ELab = 0; + Si_E_M2 = M2->Si_E[countMust2]; + CsI_E_M2= M2->CsI_E[countMust2]; + + // if CsI + if(CsI_E_M2>0 ){ + // The energy in CsI is calculate form dE/dx Table because + // 20um resolution is poor + Energy = + LightSi.EvaluateEnergyFromDeltaE(Si_E_M2,300*micrometer, + ThetaM2Surface, 0.01*MeV, + 450.*MeV,0.001*MeV ,1000); + E_M2=CsI_E_M2; + } + + else + Energy = Si_E_M2; + + E_M2 += Si_E_M2; + + // Evaluate energy using the thickness + ELab = LightAl.EvaluateInitialEnergy( Energy ,0.4*micrometer , ThetaM2Surface); + // Target Correction + ELab = LightCD2.EvaluateInitialEnergy( ELab ,TargetThickness/2., ThetaNormalTarget); + /************************************************/ + + /************************************************/ + // Part 3 : Excitation Energy Calculation + Ex = myReaction -> ReconstructRelativistic( ELab , ThetaLab ); + ThetaLab=ThetaLab/deg; + /************************************************/ + + /************************************************/ + // Part 4 : Theta CM Calculation + ThetaCM = myReaction -> EnergyLabToThetaCM( ELab , 0)/deg; + /************************************************/ + }//end loop MUST2 + + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + //////////////////////////// LOOP on GASPARD ////////////////// + if(GD->GetEnergyDeposit()>0){ + /************************************************/ + // Part 1 : Impact Angle + ThetaGDSurface = 0; + ThetaNormalTarget = 0; + if(XTarget>-1000 && YTarget>-1000){ + TVector3 BeamImpact(XTarget,YTarget,0); + TVector3 HitDirection = GD -> GetPositionOfInteraction() - BeamImpact ; + ThetaLab = HitDirection.Angle( BeamDirection ); + + ThetaGDSurface = HitDirection.Angle( TVector3(0,0,1) ) ; + ThetaNormalTarget = HitDirection.Angle( TVector3(0,0,1) ) ; + X_GD = GD -> GetPositionOfInteraction().X() ; + Y_GD = GD -> GetPositionOfInteraction().Y() ; + Z_GD = GD -> GetPositionOfInteraction().Z() ; + } + + else{ + BeamDirection = TVector3(-1000,-1000,-1000); + ThetaGDSurface = -1000 ; + ThetaNormalTarget = -1000 ; + } + + /************************************************/ + + /************************************************/ + // Part 2 : Impact Energy + Energy = ELab = 0; + Energy = GD->GetEnergyDeposit(); + + ELab = LightAl.EvaluateInitialEnergy( Energy ,0.4*micrometer , ThetaGDSurface); + // Target Correction + ELab = LightCD2.EvaluateInitialEnergy( ELab ,TargetThickness/2., ThetaNormalTarget); + /************************************************/ + + /************************************************/ + // Part 3 : Excitation Energy Calculation + Ex = myReaction -> ReconstructRelativistic( ELab , ThetaLab ); + if(Ex!=Ex){ + cout << ELab << " " << ThetaLab << " " << Ex<< endl; + } + ThetaLab=ThetaLab/deg; + /************************************************/ + + /************************************************/ + // Part 4 : Theta CM Calculation + ThetaCM = myReaction -> EnergyLabToThetaCM( ELab , 0)/deg; + /************************************************/ + }//end loop GASPARD + + if(ELab>0) + RootOutput::getInstance()->GetTree()->Fill(); + }// loop over events + + cout << "A total of " << nentries << " event has been annalysed " << endl ; + + RootOutput::getInstance()->Destroy(); + RootInput::getInstance()->Destroy(); + NPOptionManager::getInstance()->Destroy(); + ///////////////////////////////////////////////////////////////////////////// + return 0 ; +} + +//////////////////////////////////////////////////////////////////////////////// +void InitOutputBranch() { + RootOutput::getInstance()->GetTree()->Branch("Ex",&Ex,"Ex/D"); + RootOutput::getInstance()->GetTree()->Branch("ELab",&ELab,"ELab/D"); + RootOutput::getInstance()->GetTree()->Branch("ThetaLab",&ThetaLab,"ThetaLab/D"); + RootOutput::getInstance()->GetTree()->Branch("ThetaCM",&ThetaCM,"ThetaCM/D"); +} + +//////////////////////////////////////////////////////////////////////////////// +void InitInputBranch(){ + RootInput:: getInstance()->GetChain()->SetBranchAddress("InitialConditions",&Init ); + RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true ); + RootInput:: getInstance()->GetChain()->SetBranchStatus("fIC_*",true ); +} +//////////////////////////////////////////////////////////////////////////////// +void ReInitValue(){ + Ex = -1000 ; + ELab = -1000; + ThetaLab = -1000; + ThetaCM = -1000; +} + + +//////////////////////////////////////////////////////////////////////////////// diff --git a/NPAnalysis/MUGAST/Analysis.h b/NPAnalysis/MUGAST/Analysis.h new file mode 100755 index 000000000..4e36754d2 --- /dev/null +++ b/NPAnalysis/MUGAST/Analysis.h @@ -0,0 +1,67 @@ +// You can use this file to declare your spectra, file, energy loss , ... and whatever you want. +// This way you can remove all unnecessary declaration in the main programm. +// In order to help debugging and organizing we use Name Space. + +///////////////////////////////////////////////////////////////////////////////////////////////// +// -------------------------------------- VARIOUS INCLUDE --------------------------------------- + +// NPL +#include "DetectorManager.h" +#include "NPOptionManager.h" +#include "NPReaction.h" +#include "RootInput.h" +#include "RootOutput.h" +#include "TMust2Physics.h" +#include "GaspardTracker.h" + +#include "TInitialConditions.h" +#include "NPEnergyLoss.h" +using namespace NPL ; +// STL C++ +#include <iostream> +#include <fstream> +#include <sstream> +#include <string> +#include <cmath> +#include <cstdlib> +using namespace std; +// ROOT +#include <TROOT.h> +#include <TChain.h> +#include <TFile.h> +#include <TVector3.h> +#include <TRandom3.h> +#include <TMath.h> +#include <TObject.h> + +// ---------------------------------------------------------------------------------------------- +void InitOutputBranch() ; +void InitInputBranch() ; +void ReInitValue() ; +///////////////////////////////////////////////////////////////////////////////////////////////// +// ----------------------------------- DOUBLE, INT, BOOL AND MORE ------------------------------- +namespace VARIABLE{ + double Ex; + double ELab; + double ThetaLab; + double ThetaCM; + TInitialConditions* Init = new TInitialConditions(); +} + +using namespace VARIABLE ; +// ---------------------------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////////////// +// -----------------------------------ENERGY LOSS---------------------------------------------- +namespace ENERGYLOSS{ + // Energy loss table: the G4Table are generated by the simulation + EnergyLoss LightCD2 = EnergyLoss("proton_CD2.G4table","G4Table",100 ); + EnergyLoss LightAl = EnergyLoss("proton_Al.G4table","G4Table",10); + EnergyLoss LightSi = EnergyLoss("proton_Si.G4table","G4Table",10); + EnergyLoss BeamCD2 = EnergyLoss("Kr74[0.0]_CD2.G4table","G4Table",100); +} + +using namespace ENERGYLOSS ; +// ---------------------------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////////////// + + diff --git a/NPAnalysis/MUGAST/Makefile b/NPAnalysis/MUGAST/Makefile new file mode 100755 index 000000000..abdac126f --- /dev/null +++ b/NPAnalysis/MUGAST/Makefile @@ -0,0 +1,31 @@ +# include same architecture file than for NPLib +# so that consistency is ensured +include $(NPLIB)/Makefile.arch + +# additional libraries +LIBRARY = `$(NPLIB)/liblist` +LIBRARY += -L$(CLHEP_LIB_DIR) -l$(CLHEP_LIB) + +PROGRAMS = NPAnalysis + +all: $(PROGRAMS) + +NPAnalysis: Analysis.o + $(LD) $(LDFLAGS) $^ $(LIBS) $(LIBRARY) $(OutPutOpt) $@ + @echo "$@ done" + + +# rule for creating .o from .cxx +.SUFFIXES: .$(SrcSuf) +.$(SrcSuf).$(ObjSuf): + $(CXX) $(CXXFLAGS) $(INCLUDE) -c $< + +# some cleaning +clean: + rm -rf *.o + +distclean: + make clean; rm $(PROGRAMS) + +# dependences +Analysis.o: Analysis.cxx Analysis.h diff --git a/NPAnalysis/MUGAST/NPAnalysis b/NPAnalysis/MUGAST/NPAnalysis new file mode 100755 index 0000000000000000000000000000000000000000..0d3882cc25d0c134a2037c81bb354721d0ab6dd2 GIT binary patch literal 47784 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 GYWzQuZjfI9 literal 0 HcmV?d00001 diff --git a/NPAnalysis/MUGAST/RunToTreat.txt b/NPAnalysis/MUGAST/RunToTreat.txt new file mode 100755 index 000000000..237ac3af2 --- /dev/null +++ b/NPAnalysis/MUGAST/RunToTreat.txt @@ -0,0 +1,5 @@ +TTreeName + SimulatedTree +RootFileName + ../../Outputs/Simulation/myResult.root + diff --git a/NPAnalysis/MUGAST/configs/ConfigMust2.dat b/NPAnalysis/MUGAST/configs/ConfigMust2.dat new file mode 100755 index 000000000..2c36d1d62 --- /dev/null +++ b/NPAnalysis/MUGAST/configs/ConfigMust2.dat @@ -0,0 +1,26 @@ +ConfigMust2 + MAX_STRIP_MULTIPLICITY 1 + STRIP_ENERGY_MATCHING_NUMBER_OF_SIGMA 5 + STRIP_ENERGY_MATCHING_SIGMA 0.02 + DISABLE_CHANNEL MM1STRY12 + DISABLE_CHANNEL MM2STRY12 + DISABLE_CHANNEL MM3STRY12 + DISABLE_CHANNEL MM4STRY12 + DISABLE_CHANNEL MM1STRX12 + DISABLE_CHANNEL MM2STRX12 + DISABLE_CHANNEL MM3STRX12 + DISABLE_CHANNEL MM4STRX12 + DISABLE_CHANNEL MM1STRY124 + DISABLE_CHANNEL MM4STRX3 + DISABLE_CHANNEL MM4STRX4 + DISABLE_CHANNEL MM4STRX5 + DISABLE_CHANNEL MM4STRX6 + DISABLE_CHANNEL MM4STRX8 + DISABLE_CHANNEL MM4STRX31 + DISABLE_ALL MM5 + DISABLE_ALL MM6 + DISABLE_ALL MM7 + DISABLE_ALL MM8 + SI_X_E_RAW_THRESHOLD 0 + CSI_E_RAW_THRESHOLD 0 + CSI_SIZE 256 diff --git a/NPAnalysis/MUGAST/configs/ConfigSSSD.dat b/NPAnalysis/MUGAST/configs/ConfigSSSD.dat new file mode 100755 index 000000000..a56fa0b90 --- /dev/null +++ b/NPAnalysis/MUGAST/configs/ConfigSSSD.dat @@ -0,0 +1,4 @@ +ConfigSSSD + PEDESTAL_THRESHOLD 0 + DISABLE_CHANNEL SI2STR1 + DISABLE_CHANNEL SI4STR13 -- GitLab