From d137e71769f44c34d8b1bc87b8e9097af053373b Mon Sep 17 00:00:00 2001 From: Morfouace <morfouac@ipno.in2p3.fr> Date: Thu, 7 Jan 2016 16:11:32 -0500 Subject: [PATCH] *removing obsolete Hira folder in the analysis area --- Projects/Hira/Analysis.cxx | 196 ---------------------------- Projects/Hira/Analysis.h | 141 -------------------- Projects/Hira/Makefile | 30 ----- Projects/Hira/RunToTreat.txt | 10 -- Projects/Hira/Show.C | 151 --------------------- Projects/newHira/Analysis.cxx | 223 -------------------------------- Projects/newHira/Analysis.h | 80 ------------ Projects/newHira/CMakeLists.txt | 2 - 8 files changed, 833 deletions(-) delete mode 100644 Projects/Hira/Analysis.cxx delete mode 100644 Projects/Hira/Analysis.h delete mode 100644 Projects/Hira/Makefile delete mode 100644 Projects/Hira/RunToTreat.txt delete mode 100644 Projects/Hira/Show.C delete mode 100644 Projects/newHira/Analysis.cxx delete mode 100644 Projects/newHira/Analysis.h delete mode 100644 Projects/newHira/CMakeLists.txt diff --git a/Projects/Hira/Analysis.cxx b/Projects/Hira/Analysis.cxx deleted file mode 100644 index c95877e97..000000000 --- a/Projects/Hira/Analysis.cxx +++ /dev/null @@ -1,196 +0,0 @@ -#include "Analysis.h" -using namespace std; - -int main(int argc, char** argv) -{ - // command line parsing - NPOptionManager* myOptionManager = NPOptionManager::getInstance(argc,argv); - - // Instantiate RootInput - string runToReadfileName = myOptionManager->GetRunToReadFile(); - RootInput:: getInstance(runToReadfileName); - - // if input files are not given, use those from TAsciiFile - if (myOptionManager->IsDefault("DetectorConfiguration")) { - string name = RootInput::getInstance()->DumpAsciiFile("DetectorConfiguration"); - myOptionManager->SetDetectorFile(name); - } - - // get input files from NPOptionManager - string detectorfileName = myOptionManager->GetDetectorFile(); - string calibrationfileName = myOptionManager->GetCalibrationFile(); - string OutputfileName = myOptionManager->GetOutputFile(); - - // Instantiate RootOutput - RootOutput::getInstance("Analysis/"+OutputfileName, "AnalysedTree"); - - // Instantiate the detector using a file - NPL::DetectorManager* myDetector = new DetectorManager(); - myDetector->ReadConfigurationFile(detectorfileName); - - // Get the formed Chained Tree and Treat it - TChain* Chain = RootInput:: getInstance() -> GetChain(); - - // Instantiate some Reaction - NPL::Reaction* TransfertReaction = new Reaction ; - TransfertReaction -> ReadConfigurationFile("34Ar_pd.reaction") ; - //TransfertReaction -> ReadConfigurationFile("46Ar_pd.reaction") ; - //TransfertReaction -> ReadConfigurationFile("11Be_d3He.reaction") ; - - //Get Detector pointer : - THiraPhysics* Hira = (THiraPhysics*) myDetector -> GetDetector("HIRAArray") ; - - //TInteractionCoordinate - TInteractionCoordinates* InteractionCoordinates = new TInteractionCoordinates(); - Chain->SetBranchStatus("InteractionCoordinates",true); - Chain->SetBranchStatus("fDetected_*",true); - Chain->SetBranchAddress("InteractionCoordinates",&InteractionCoordinates); - RootOutput::getInstance()->GetTree()->Branch("InteractionCoordinates","TInteractionCoordinates",&InteractionCoordinates); - - //TInitialConditions - TInitialConditions* InitialConditions = new TInitialConditions(); - Chain->SetBranchStatus("InitialConditions",true); - Chain->SetBranchStatus("fIC_*",true); - Chain->SetBranchAddress("InitialConditions",&InitialConditions); - RootOutput::getInstance()->GetTree()->Branch("InitialConditions","TInitialConditions",&InitialConditions); - - RootOutput::getInstance()->GetTree()->Branch( "ThetaLab" , &ThetaLab , "ThetaLab/D" ); - RootOutput::getInstance()->GetTree()->Branch( "PhiLab" , &PhiLab , "PhiLab/D" ) ; - RootOutput::getInstance()->GetTree()->Branch("ThetaCM", &ThetaCM,"ThetaCM/D") ; - RootOutput::getInstance()->GetTree()->Branch( "E_ThinSi" , &E_ThinSi , "E_ThinSi/D" ) ; - RootOutput::getInstance()->GetTree()->Branch( "E_ThickSi" , &E_ThickSi , "E_ThickSi/D" ) ; - RootOutput::getInstance()->GetTree()->Branch( "E_CsI" , &E_CsI , "E_CsI/D" ) ; - RootOutput::getInstance()->GetTree()->Branch( "ELab" , &ELab , "ELab/D" ) ; - RootOutput::getInstance()->GetTree()->Branch("ExcitationEnergy", &ExcitationEnergy,"ExcitationEnergy/D") ; - RootOutput::getInstance()->GetTree()->Branch( "X" , &X , "X/D" ) ; - RootOutput::getInstance()->GetTree()->Branch( "Y" , &Y , "Y/D" ) ; - RootOutput::getInstance()->GetTree()->Branch( "Z" , &Z , "Z/D" ) ; - RootOutput::getInstance()->GetTree()->Branch( "TelescopeNumber" , &TelescopeNumber , "TelescopeNumber/D" ) ; - - // 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; - - double EnergyThreshold = 0.; - - // main loop on entries - for (int i = 0; i < nentries; i++) { - if (i%10000 == 0 && i!=0) { - cout.precision(5); - end = clock(); - double TimeElapsed = (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"<< flush; - } - else if (i == nentries-1) cout << "\r Progression:" << " 100% " <<endl; - - // get data - Chain -> GetEntry(i); - ReInitOuputValue(); - - myDetector->ClearEventPhysics(); - myDetector->BuildPhysicalEvent(); - - if(Hira -> ThickSi_E.size() == 1){ - for(int countHira = 0 ; countHira < Hira->ThickSi_E.size() ; countHira++){ - - TelescopeNumber = Hira->TelescopeNumber[countHira]; - - TargetThickness = myDetector->GetTargetThickness(); - - X = Hira->GetPositionOfInteraction(0).X(); - Y = Hira->GetPositionOfInteraction(0).Y(); - Z = Hira->GetPositionOfInteraction(0).Z(); - - TVector3 PositionOnHira = TVector3(X,Y,Z); - TVector3 ZUnit = TVector3(0,0,1); - //TVector3 TelescopeNormal = -Hira->GetTelescopeNormal(countHira); - TVector3 TargetNormal = TVector3(0,0,1);//TVector3(-sin(TargetAngle*deg),0,cos(TargetAngle*deg)); - - double X_target = InitialConditions->GetIncidentPositionX(); - double Y_target = InitialConditions->GetIncidentPositionY(); - double Z_target = InitialConditions->GetIncidentPositionZ(); - - TVector3 PositionOnTarget = TVector3(X_target,Y_target,Z_target); - //TVector3 PositionOnTarget = TVector3(0,0,0); - TVector3 HitDirection = PositionOnHira - PositionOnTarget; - TVector3 HitDirectionUnit = HitDirection.Unit(); - - //double ThetaNormalHira = HitDirection.Angle(TelescopeNormal); - double ThetaNormalTarget = HitDirection.Angle(TargetNormal); - - //double ThetaBeam = InitialConditions->GetICIncidentAngleTheta(countHira); - //double PhiBeam = InitialConditions->GetICIncidentAnglePhi(countHira); - - TVector3 BeamDirection = InitialConditions->GetBeamDirection(); - - //TVector3(sin(ThetaBeam*deg)*cos(PhiBeam*deg),sin(ThetaBeam*deg)*sin(PhiBeam*deg),cos(ThetaBeam*deg)); - - double XBeam = BeamDirection.X(); - double YBeam = BeamDirection.Y(); - double ZBeam = BeamDirection.Z(); - - ThetaLab = BeamDirection.Angle(HitDirection); - ThetaLab = ThetaLab/deg; - - PhiLab = HitDirection.Phi()/deg; - - E_ThickSi = Hira->ThickSi_E[countHira]; - E_ThinSi = Hira->ThinSi_E[countHira]; - ELab = E_ThinSi + E_ThickSi; - if(Hira->CsI_E.size() == 1){ - for(int countCsI =0; countCsI<Hira->CsI_E.size(); countCsI++){ - E_CsI = Hira->CsI_E[countCsI]; - if(E_CsI>EnergyThreshold)ELab += E_CsI; - } - } - else E_CsI = -1000; - - ELab = EL_deuteron_CH2.EvaluateInitialEnergy(ELab, - (TargetThickness/2)*micrometer, - ThetaNormalTarget); - - - // ********************** Angle in the CM frame ***************************** - TransfertReaction -> SetNuclei3(ELab, ThetaLab*deg); - ThetaCM = TransfertReaction->GetThetaCM()/deg; - ExcitationEnergy = TransfertReaction->GetExcitation4(); - - RootOutput::getInstance()->GetTree()->Fill(); - } - } - } - - cout << "A total of " << nentries << " event has been annalysed " << endl ; - - RootOutput::getInstance()->Destroy(); - RootInput::getInstance()->Destroy(); - NPOptionManager::getInstance()->Destroy(); - - return 0 ; -} - - -///////////////////////////////////////////////////////////////////////////////////////// -// On reinitialise les valeurs des branches de sorties à chaque entrée dans la boucle : -void ReInitOuputValue() -{ - E_ThinSi = -1000; - E_ThickSi = -1000; - E_CsI = -1000; - ELab = -1000; - ThetaLab = -1000; - PhiLab = -1000; - ThetaCM = -1000; - ExcitationEnergy = -1000; - X = -1000; - Y = -1000; - Z = -1000; - TelescopeNumber = -1; -} - diff --git a/Projects/Hira/Analysis.h b/Projects/Hira/Analysis.h deleted file mode 100644 index af98dbbc4..000000000 --- a/Projects/Hira/Analysis.h +++ /dev/null @@ -1,141 +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 organizing we use Name Space. - -///////////////////////////////////////////////////////////////////////////////////////////////// -// -------------------------------------- VARIOUS INCLUDE --------------------------------------- - -// NPA -#include "NPDetectorManager.h" -#include "NPOptionManager.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 "RootInput.h" -#include "RootOutput.h" -#include "NPReaction.h" -#include "TInitialConditions.h" -#include "TInteractionCoordinates.h" -#include "THiraData.h" -#include "THiraPhysics.h" - - -// Use CLHEP System of unit and Physical Constant -#include "NPGlobalSystemOfUnits.h" -#include "NPPhysicalConstants.h" - -Double_t TargetThickness; -Double_t E_ThinSi = 0; -Double_t E_ThickSi = 0; -Double_t E_CsI = 0; -Double_t ELab = 0; -Double_t ThetaLab = 0; -Double_t PhiLab = 0; -Double_t ThetaLab_simu = 0; -Double_t ThetaCM = 0; -Double_t ExcitationEnergy = 0; -Double_t X = 0; -Double_t Y = 0; -Double_t Z = 0; -Double_t TelescopeNumber = 0; - -Double_t BeamEnergy = 0; - -void ReInitOuputValue(); - -// ---------------------------------------------------------------------------------------------- -double ThetaCalculation (TVector3 A , TVector3 B) ; -///////////////////////////////////////////////////////////////////////////////////////////////// -// ----------------------------------- DOUBLE, INT, BOOL AND MORE ------------------------------- -namespace VARIABLE - { - // Declare your Variable here: - - double X1,Y1,Z1 ; - int N1,N2 = 0 ; - bool check= false ; - - // A Usefull Simple Random Generator - TRandom Rand; - } - -using namespace VARIABLE ; -// ---------------------------------------------------------------------------------------------- - - - -///////////////////////////////////////////////////////////////////////////////////////////////// -// -----------------------------------GRAPH------------------------------------------------------ -#include <TObject.h> -#include <TH1.h> -#include <TH1F.h> -#include <TH2.h> -#include <TH2F.h> -#include <TGraph2D.h> - -namespace GRAPH - { - // Declare your Spectra here: - - TH1F *myHist1D = new TH1F("Hist1D","Histogramm 1D ; x ; count", 1000 , -5 , 5 ) ; - - TH2F *myHist2D = new TH2F("Hist2D","Histogramm 2D ; x ; y ", 128 , 1 , 128 , 128 , 1 , 128 ) ; - - } - -using namespace GRAPH ; -// -------------------------------------------------------------------------------------------- - - - -/////////////////////////////////////////////////////////////////////////////////////////////// -// -----------------------------------CUT------------------------------------------------------ -#include <TCutG.h> -namespace CUT - { - // Declare your Cut here: - - } - -using namespace CUT ; -// -------------------------------------------------------------------------------------------- - - - -//////////////////////////////////////////////////////////////////////////////////////////////// -// -----------------------------------ENERGY LOSS---------------------------------------------- -#include "NPEnergyLoss.h" -using namespace NPL ; -namespace ENERGYLOSS - { - - //EnergyLoss EL_deuteron_CH2 = EnergyLoss("deuteron_CH2.G4table","G4Table",100 ); - EnergyLoss EL_deuteron_CH2 = EnergyLoss("He3_CD2.G4table","G4Table",100 ); - // Declare your Energy loss here : - /* EnergyLoss DeuerontTarget = EnergyLoss ( "CD2.txt" , - 100 , - 1, - 1 ); - */ - } - -using namespace ENERGYLOSS ; -// ---------------------------------------------------------------------------------------------- -///////////////////////////////////////////////////////////////////////////////////////////////// - - diff --git a/Projects/Hira/Makefile b/Projects/Hira/Makefile deleted file mode 100644 index bdfccb1e4..000000000 --- a/Projects/Hira/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -# include same architecture file than for NPLib -# so that consistency is ensured -include $(NPTOOL)/NPLib/Makefile.arch - -# additional libraries -LIBRARY = `$(NPTOOL)/NPLib/liblist` - -PROGRAMS = Analysis - -all: $(PROGRAMS) - -Analysis: Analysis.o - $(LD) $(LDFLAGS) $^ $(LIBS) $(LIBRARY) $(OutPutOpt) $@ - @echo "$@ done" - - -# rule for creating .o from .cxx -.SUFFIXES: .$(SrcSuf) -.$(SrcSuf).$(ObjSuf): - $(CXX) $(CXXFLAGS) $(INCLUDE) -c $< - -# some cleaning -clean: - rm -rf *.o - -distclean: - make clean; rm $(PROGRAMS) - -# dependences -Analysis.o: Analysis.cxx Analysis.h diff --git a/Projects/Hira/RunToTreat.txt b/Projects/Hira/RunToTreat.txt deleted file mode 100644 index 3a48e00e5..000000000 --- a/Projects/Hira/RunToTreat.txt +++ /dev/null @@ -1,10 +0,0 @@ -TTreeName - SimulatedTree -RootFileName - %/Users/pierremorfouace/Physics/NPTool/nptool/Outputs/Simulation/46Ar_pd_gs.root - %/Users/pierremorfouace/Physics/NPTool/nptool/Outputs/Simulation/46Ar_pd_1st.root - - /Users/pierremorfouace/Physics/NPTool/nptool/Outputs/Simulation/test.root - - - diff --git a/Projects/Hira/Show.C b/Projects/Hira/Show.C deleted file mode 100644 index 1eac6b7b6..000000000 --- a/Projects/Hira/Show.C +++ /dev/null @@ -1,151 +0,0 @@ -void InitChain(); -void LoadCut(); - -TChain *chain; -TGraph *kin; - -int nentries; - -TCutG *cut_kine; - - -void Show() -{ - gStyle->SetOptStat(0); - InitChain(); - LoadCut(); - - nentries = chain->GetEntries(); - - //**************** Condition ****************// - TString CondCut = "cut_kine"; - TString CondTot = CondCut;//+"&&"+ - //*******************************************// - - TCanvas* mainC0 = new TCanvas("Hira XY", "Hira XY" , 800,600); - TCanvas* mainC1 = new TCanvas("PID", "PID" , 1200,600); - TCanvas* mainC2 = new TCanvas("Kinematics", "Kinematics" , 800,600); - TCanvas* mainC3 = new TCanvas("Phi-Theta", "Phi-Theta" , 800,600); - TCanvas* mainC4 = new TCanvas("BeamSpot", "BeamSpot" , 800,600); - TCanvas* mainC5 = new TCanvas("ThetaCM", "ThetaCM" , 800,600); - TCanvas* mainC6 = new TCanvas("Efficiency", "Efficiency" , 800,600); - TCanvas* mainC7 = new TCanvas("CrossSection","CrossSection",800,600); - mainC1->Divide(2,1); - - mainC0->cd(); - chain->Draw("Y:X>>h0(300,-300,300,200,-200,200)","","colz"); - TH2F* h0 = (TH2F*)gDirectory->FindObjectAny("h0"); - h0->GetXaxis()->SetTitle("X (mm)"); - h0->GetYaxis()->SetTitle("Y (mm)"); - h0->SetTitle(""); - - - mainC1->cd(1); - chain->Draw("E_ThickSi:E_CsI>>h1(1000,0,600,1000,0,30)","","colz"); - TH2F* h1 = (TH2F*)gDirectory->FindObjectAny("h1"); - h1->GetXaxis()->SetTitle("E_{CsI} (MeV)"); - h1->GetYaxis()->SetTitle("E_{Si} (MeV)"); - h1->SetTitle(""); - - mainC1->cd(2); - chain->Draw("E_ThinSi:E_ThickSi>>h12(1000,0,30,1000,0,10)","","colz"); - TH2F* h12 = (TH2F*)gDirectory->FindObjectAny("h12"); - h12->GetXaxis()->SetTitle("E_{Si} (MeV)"); - h12->GetYaxis()->SetTitle("#Delta E (MeV)"); - h12->SetTitle(""); - - - mainC2->cd(); - chain->Draw("ELab:ThetaLab>>h2(1000,0,50,1000,0,50)","","colz"); - h2->SetMinimum(1); - TH2F* h2 = (TH2F*)gDirectory->FindObjectAny("h2"); - h2->GetXaxis()->SetTitle("#theta_{lab} (deg)"); - h2->GetYaxis()->SetTitle("E (MeV)"); - h2->SetTitle(""); - - NPL::Reaction *r = new NPL::Reaction("11Be(d,3He)10Li@770"); - //NPL::Reaction *r = new NPL::Reaction("34Ar(p,d)33Ar@2380"); - //NPL::Reaction *r = new NPL::Reaction("46Ar(p,d)45Ar@3220"); - kin = r->GetKinematicLine3(); - - kin->SetLineColor(2); - kin->Draw("plsame"); - - mainC3->cd(); - chain->Draw("PhiLab:ThetaLab>>h3(100,0,50,720,-180,180)","","colz"); - TH2F* h3 = (TH2F*)gDirectory->FindObjectAny("h3"); - h3->GetXaxis()->SetTitle("#theta_{lab} (deg)"); - h3->GetYaxis()->SetTitle("#phi_{lab} (MeV)"); - h3->SetTitle(""); - - mainC4->cd(); - chain->Draw("fIC_Incident_Position_Y:fIC_Incident_Position_X>>h4(1000,-10,10,100,-10,10)","","colz"); - TH2F* h4 = (TH2F*)gDirectory->FindObjectAny("h4"); - h4->GetXaxis()->SetTitle("X_{beam} (mm)"); - h4->GetYaxis()->SetTitle("Y_{beam} (mm)"); - h4->SetTitle(""); - - mainC5->cd(); - chain->Draw("ThetaCM>>h5(25,0,100)",CondTot,"E1"); - TH1F* h5 = (TH1F*)gDirectory->FindObjectAny("h5"); - h5->GetXaxis()->SetTitle("#theta_{CM} (deg)"); - h5->SetTitle(""); - - - //Efficiency calculation - mainC6->cd(); - TH1F *Efficiency = new TH1F("Efficiency", "Efficiency", 25, 0, 100); - Efficiency->SetXTitle("#theta_{CM}"); - Efficiency->SetTitle("Efficiency"); - Efficiency->Add(h5,4*TMath::Pi()/nentries); - Efficiency->Draw(); - - // Cross-Section - mainC7->cd(); - mainC7->SetLogy(); - TH1F *h7 = new TH1F("h7", "h7", 25, 0, 100); - h7->SetXTitle("#theta_{CM}"); - h7->SetYTitle("d#sigma/d#Omega (mb/sr)"); - h7->SetTitle(""); - h7->Divide(h5,Efficiency,1,nentries/(4*TMath::Pi()));//262000 - h7->Draw(); - - - return; -} - - -////////////////////////////////////////////////// -void InitChain() -{ - if(chain!=NULL){delete chain;} - chain = new TChain("AnalysedTree",""); - - //chain->Add("/Users/pierremorfouace/Physics/NPTool/nptool/Outputs/Analysis/34Ar_pd.root"); - //chain->Add("/Users/pierremorfouace/Physics/NPTool/nptool/Outputs/Analysis/46Ar_pd.root"); - chain->Add("/Users/pierremorfouace/Physics/NPTool/nptool/Outputs/Analysis/11Be_d3He_1mg.root"); - - return; -} - - - -/////////////////////////////////////////////////////////////////////////////// -void LoadCut() -{ - TString Cut_Name = "CUT/cut_kine.root"; - TString Object_Name = "cut_kine"; - TFile* f_cut_kine = new TFile(Cut_Name,"read"); - cut_kine = (TCutG*) f_cut_kine->FindObjectAny(Object_Name); - - return; -} - - - - - - - - - diff --git a/Projects/newHira/Analysis.cxx b/Projects/newHira/Analysis.cxx deleted file mode 100644 index 3581d19f0..000000000 --- a/Projects/newHira/Analysis.cxx +++ /dev/null @@ -1,223 +0,0 @@ -/***************************************************************************** - * Copyright (C) 2009-2014 this file is part of the NPTool Project * - * * - * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * - * For the list of contributors see $NPTOOL/Licence/Contributors * - *****************************************************************************/ - -/***************************************************************************** - * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * - * * - * Creation Date : march 2025 * - * Last update : * - *---------------------------------------------------------------------------* - * Decription: * - * Class describing the property of an Analysis object * - * * - *---------------------------------------------------------------------------* - * Comment: * - * * - * * - *****************************************************************************/ -#include<iostream> -using namespace std; -#include"Analysis.h" -#include"NPAnalysisFactory.h" -#include"NPDetectorManager.h" -#include"NPOptionManager.h" -#include"RootOutput.h" -#include"RootInput.h" -//////////////////////////////////////////////////////////////////////////////// -Analysis::Analysis(){ -} -//////////////////////////////////////////////////////////////////////////////// -Analysis::~Analysis(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void Analysis::Init(){ - M2= (TMust2Physics*) m_DetectorManager->GetDetector("MUST2Array"); - SSSD= (TSSSDPhysics*) m_DetectorManager->GetDetector("SSSD"); - Initial=new TInitialConditions(); - InitOutputBranch(); - InitInputBranch(); - Rand = TRandom3(); - He10Reaction= new NPL::Reaction(); - He10Reaction->ReadConfigurationFile(NPOptionManager::getInstance()->GetReactionFile()); - DetectorNumber = 0 ; - ThetaNormalTarget = 0 ; - ThetaM2Surface = 0; - X_M2 = 0 ; - Y_M2 = 0 ; - Z_M2 = 0 ; - Si_E_M2 = 0 ; - CsI_E_M2 = 0 ; - E_SSSD = 0 ; - Energy = 0; - E_M2 = 0; - Si_X_M2 = 0; - Si_Y_M2 = 0; - ZTarget = 0; - TargetThickness = m_DetectorManager->GetTargetThickness()*micrometer; - // Energy loss table: the G4Table are generated by the simulation - He3CD2 = EnergyLoss("He3_CD2.G4table","G4Table",100 ); - He3Al = EnergyLoss("He3_Al.G4table","G4Table",10); - He3Si = EnergyLoss("He3_Si.G4table","G4Table",10); - //Li11CD2 = EnergyLoss("Li11[0.0]_CD2.G4table","G4Table",100); -} - -//////////////////////////////////////////////////////////////////////////////// -void Analysis::TreatEvent(){ - // 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 = Rand.Gaus(Initial->GetIncidentPositionX(),1); - double YTarget = Rand.Gaus(Initial->GetIncidentPositionY(),1); - TVector3 BeamDirection = Initial->GetBeamDirection(); - // Beam energy is measured using F3 and F2 plastic TOF - double BeamEnergy = Rand.Gaus(Initial->GetIncidentInitialKineticEnergy(),4.5); - //BeamEnergy = Li11CD2.Slow(BeamEnergy,TargetThickness/2.,0); - - He10Reaction->SetBeamEnergy(BeamEnergy); - //////////////////////////// LOOP on MUST2 + SSSD Hit ////////////////// - for(unsigned int countSSSD = 0 ; countSSSD < SSSD->Energy.size() ; countSSSD++){ - 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 ; - //SSSD - int SiNumber = SSSD->DetectorNumber[countSSSD]; - - /************************************************/ - // Matching between Thin Si and MUST2, and Forward Telescope Only - if(TelescopeNumber==SiNumber && TelescopeNumber<5){ - DetectorNumber = TelescopeNumber ; - /************************************************/ - // 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]; - E_SSSD = SSSD->Energy[countSSSD]; - - // if CsI - if(CsI_E_M2>0 ){ - // The energy in CsI is calculate form dE/dx Table because - // 20um resolution is poor - Energy = - He3Si.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 = He3Al.EvaluateInitialEnergy( Energy ,2*0.4*micrometer , ThetaM2Surface); - ELab = He3Si.EvaluateInitialEnergy( ELab ,20*micrometer , ThetaM2Surface); - ELab = He3Al.EvaluateInitialEnergy( ELab ,0.4*micrometer , ThetaM2Surface); - // Target Correction - ELab = He3CD2.EvaluateInitialEnergy( ELab ,TargetThickness/2., ThetaNormalTarget); - /************************************************/ - - /************************************************/ - // Part 3 : Excitation Energy Calculation - Ex = He10Reaction -> ReconstructRelativistic( ELab , ThetaLab ); - /************************************************/ - - - /************************************************/ - // Part 4 : Theta CM Calculation - ThetaCM = He10Reaction -> EnergyLabToThetaCM( ELab , ThetaLab)/deg; - ThetaLab=ThetaLab/deg; - /************************************************/ - - } - } //end loop SSSD - }//end loop MUST2 -} - -//////////////////////////////////////////////////////////////////////////////// -void Analysis::End(){ -} - -//////////////////////////////////////////////////////////////////////////////// -void Analysis::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 Analysis::InitInputBranch(){ - RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true ); - RootInput:: getInstance()->GetChain()->SetBranchStatus("fIC_*",true ); - RootInput:: getInstance()->GetChain()->SetBranchAddress("InitialConditions",&Initial); -} - -//////////////////////////////////////////////////////////////////////////////// -void Analysis::ReInitValue(){ - Ex = -1000 ; - ELab = -1000; - ThetaLab = -1000; - ThetaCM = -1000; -} - -//////////////////////////////////////////////////////////////////////////////// -// Construct Method to be pass to the DetectorFactory // -//////////////////////////////////////////////////////////////////////////////// -NPL::VAnalysis* Analysis::Construct(){ - return (NPL::VAnalysis*) new Analysis(); -} - -//////////////////////////////////////////////////////////////////////////////// -// Registering the construct method to the factory // -//////////////////////////////////////////////////////////////////////////////// -extern "C"{ -class proxy{ - public: - proxy(){ - NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct); - } -}; - -proxy p; -} - diff --git a/Projects/newHira/Analysis.h b/Projects/newHira/Analysis.h deleted file mode 100644 index 10215aa6d..000000000 --- a/Projects/newHira/Analysis.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef Analysis_h -#define Analysis_h -/***************************************************************************** - * Copyright (C) 2009-2014 this file is part of the NPTool Project * - * * - * For the licensing terms see $NPTOOL/Licence/NPTool_Licence * - * For the list of contributors see $NPTOOL/Licence/Contributors * - *****************************************************************************/ - -/***************************************************************************** - * Original Author: Adrien MATTA contact address: a.matta@surrey.ac.uk * - * * - * Creation Date : march 2025 * - * Last update : * - *---------------------------------------------------------------------------* - * Decription: * - * Class describing the property of an Analysis object * - * * - *---------------------------------------------------------------------------* - * Comment: * - * * - * * - *****************************************************************************/ -#include"NPVAnalysis.h" -#include"THiraPhysics.h" -#include "TMust2Physics.h" -#include "TSSSDPhysics.h" -#include "TInitialConditions.h" -#include "NPEnergyLoss.h" -#include "NPReaction.h" -#include "TRandom3.h" -class Analysis: public NPL::VAnalysis{ - public: - Analysis(); - ~Analysis(); - - public: - void Init(); - void TreatEvent(); - void End(); - void InitOutputBranch(); - void InitInputBranch(); - void ReInitValue(); - static NPL::VAnalysis* Construct(); - - private: - double Ex; - double ELab; - double ThetaLab; - double ThetaCM; - NPL::Reaction* He10Reaction; - - // intermediate variable - TRandom3 Rand; - int DetectorNumber; - double ThetaNormalTarget; - double ThetaM2Surface; - double X_M2; - double Y_M2; - double Z_M2; - double Si_E_M2; - double CsI_E_M2; - double E_SSSD; - double Energy = 0; - double E_M2 = 0; - double Si_X_M2 = 0; - double Si_Y_M2 = 0; - double ZTarget = 0; - double TargetThickness; - - NPL::EnergyLoss He3CD2 ; - NPL::EnergyLoss He3Al ; - NPL::EnergyLoss He3Si ; - NPL::EnergyLoss Li11CD2 ; - - TMust2Physics* M2; - TSSSDPhysics* SSSD; - TInitialConditions* Initial; -}; -#endif diff --git a/Projects/newHira/CMakeLists.txt b/Projects/newHira/CMakeLists.txt deleted file mode 100644 index 6806d778c..000000000 --- a/Projects/newHira/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -cmake_minimum_required (VERSION 2.8) -include("../../NPLib/ressources/CMake/NPAnalysis.cmake") -- GitLab