From 01cc729062138573aee19ab9a206769298514077 Mon Sep 17 00:00:00 2001 From: Hugo Jacob <hugojacob57@gmail.com> Date: Wed, 10 Jan 2024 16:13:29 +0100 Subject: [PATCH] E805 simu added --- Projects/E805_simu/48Cr_pd_test.reaction | 33 ++ Projects/E805_simu/Analysis.cxx | 265 +++++++++++++++ Projects/E805_simu/Analysis.h | 403 +++++++++++++++++++++++ Projects/E805_simu/MUST2_E805.detector | 54 +++ Projects/E805_simu/RunToTreat.txt | 5 + Projects/E805_simu/project.config | 8 + 6 files changed, 768 insertions(+) create mode 100644 Projects/E805_simu/48Cr_pd_test.reaction create mode 100755 Projects/E805_simu/Analysis.cxx create mode 100755 Projects/E805_simu/Analysis.h create mode 100644 Projects/E805_simu/MUST2_E805.detector create mode 100644 Projects/E805_simu/RunToTreat.txt create mode 100644 Projects/E805_simu/project.config diff --git a/Projects/E805_simu/48Cr_pd_test.reaction b/Projects/E805_simu/48Cr_pd_test.reaction new file mode 100644 index 000000000..ffeab1b9f --- /dev/null +++ b/Projects/E805_simu/48Cr_pd_test.reaction @@ -0,0 +1,33 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%% Reaction file for 48Cr(p,d)46V reaction %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Beam + Particle= 48Cr + Energy= 1511 MeV + SigmaEnergy= 42 MeV + ExcitationEnergy= 0 MeV + SigmaThetaX= 0.1 mrad + SigmaPhiY= 0.1 mrad + SigmaX= 5 mm + SigmaY= 5 mm + MeanThetaX= 0 mrad + MeanPhiY= 0 mrad + MeanX= 0 mm + MeanY= 0 mm + %EnergyProfilePath= eLise.txt EL + %XThetaXProfilePath= + %YPhiYProfilePath= + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +TwoBodyReaction + Beam= 48Cr + Target= 1H + Light= 2H + Heavy= 47Cr + ExcitationEnergyLight= 0.47 MeV + ExcitationEnergyHeavy= 0.0 MeV +%CrossSectionPath= CrossSections/48Cr_tot_0.txt CS48Cr + CrossSectionPath= flat.txt CS + ShootLight= 1 + ShootHeavy= 1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Projects/E805_simu/Analysis.cxx b/Projects/E805_simu/Analysis.cxx new file mode 100755 index 000000000..95867f102 --- /dev/null +++ b/Projects/E805_simu/Analysis.cxx @@ -0,0 +1,265 @@ +/***************************************************************************** + * Copyright (C) 2009-2016 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: XAUTHORX contact address: XMAILX * + * * + * Creation Date : XMONTHX XYEARX * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class describe MUST_AND_ZDD analysis project * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +#include<iostream> +using namespace std; +#include"Analysis.h" +#include"NPAnalysisFactory.h" +#include"NPDetectorManager.h" +//////////////////////////////////////////////////////////////////////////////// +Analysis::Analysis(){ +} +//////////////////////////////////////////////////////////////////////////////// +Analysis::~Analysis(){ +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::Init(){ + InitInputBranch(); + InitOutputBranch(); + M2 = (TMust2Physics*) m_DetectorManager -> GetDetector("M2Telescope"); + + string Path = "../../Inputs/EnergyLoss/"; + string TargetMaterial = m_DetectorManager->GetTargetMaterial(); + TargetThickness = m_DetectorManager->GetTargetThickness(); + string beam= NPL::ChangeNameToG4Standard(reaction->GetNucleus1()->GetName()); + string heavy_ejectile= NPL::ChangeNameToG4Standard(reaction->GetNucleus4()->GetName()); + string light=NPL::ChangeNameToG4Standard(reaction->GetNucleus3()->GetName()); + + string Reaction_pd_s = "48Cr(p,d)47Cr@1620"; + string Reaction_pt_s = "48Cr(p,t)46Cr@1620"; + string Reaction_p3He_s = "48Cr(p,3He)46V@1620"; + Reaction_pd = new Reaction(Reaction_pd_s); + Reaction_pt = new Reaction(Reaction_pt_s); + Reaction_p3He = new Reaction(Reaction_p3He_s); + + ProtonSi = NPL::EnergyLoss(Path+ "proton_Si.G4table", "G4Table", 100); + + for(unsigned int i = 0; i < ParticleType.size(); i++){ + LightAl[ParticleType[i]] = NPL::EnergyLoss(Path+ParticleType[i]+"_Al.G4table","G4Table",100); + LightTarget[ParticleType[i]] = NPL::EnergyLoss(Path+ParticleType[i]+"_CH2.G4table","G4Table",100); + } + BeamTarget["48Cr"] = NPL::EnergyLoss(Path+"Cr48_CH2.G4table","G4Table",100); + + Reaction_pd->SetBeamEnergy(BeamTarget["48Cr"].Slow(Reaction_pd->GetBeamEnergy(),TargetThickness*0.5,0)); + Reaction_pt->SetBeamEnergy(BeamTarget["48Cr"].Slow(Reaction_pt->GetBeamEnergy(),TargetThickness*0.5,0)); + Reaction_p3He->SetBeamEnergy(BeamTarget["48Cr"].Slow(Reaction_p3He->GetBeamEnergy(),TargetThickness*0.5,0)); + reaction->ReadConfigurationFile(NPOptionManager::getInstance()->GetReactionFile()); + OriginalBeamEnergy = reaction->GetBeamEnergy(); + + + Cal = CalibrationManager::getInstance(); + + +// +} + ///////////////////////////// Initialize some important parameters ////////////////////////////////// + + +bool Analysis::UnallocateBeforeBuild(){ + return true; +} + +bool Analysis::UnallocateBeforeTreat(){ + return true; +} + +bool Analysis::FillOutputCondition(){ + return true; +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::TreatEvent(){ + + + ReInit(); + //////////////////// MUST2 Part //////////////////// + int M2_size = M2->Si_E.size(); + for(unsigned int countMust2 = 0 ; countMust2 < M2_size ; countMust2++){ + M2_TelescopeM++; + // MUST2 + int TelescopeNumber = M2->TelescopeNumber[countMust2]; + + // Part 1 : Impact Angle + ThetaM2Surface = 0; + ThetaNormalTarget = 0; + + + BeamImpact = TVector3(0,0,0); + + BeamDirection = TVector3(0,0,1); + + TVector3 HitDirection = M2 -> GetPositionOfInteraction(countMust2) - BeamImpact ; + M2_ThetaLab.push_back(HitDirection.Angle( BeamDirection )); + + M2_X.push_back(M2 -> GetPositionOfInteraction(countMust2).X()); + M2_Y.push_back(M2 -> GetPositionOfInteraction(countMust2).Y()); + M2_Z.push_back(M2 -> GetPositionOfInteraction(countMust2).Z()); + + ThetaM2Surface = HitDirection.Angle(- M2 -> GetTelescopeNormal(countMust2) ); + ThetaNormalTarget = HitDirection.Angle( TVector3(0,0,1) ) ; + + // Part 2 : Impact Energy + int CristalNb = M2->CsI_N[countMust2]; + + Si_E_M2 = M2->Si_E[countMust2]; + CsI_E_M2= M2->CsI_E[countMust2]; + // if(CsI_E_M2 > 0) + // std::cout << "Analysis " << CsI_E_M2 << " " << M2->CsI_E.size() << " " << CristalNb << "\n \n"; + Energy = 0; + if(CsI_E_M2 > 0 && Si_E_M2 > 0) + { + Energy += CsI_E_M2; + Energy += Si_E_M2; + } + else + Energy = -1000; + if(Energy > 0) + Energy = LightTarget["deuteron"].EvaluateInitialEnergy(Energy,TargetThickness*0.5, ThetaNormalTarget); + + + // Evaluate energy using the thickness + //Energy = LightAl.EvaluateInitialEnergy( Energy ,0.4*micrometer , ThetaM2Surface); + // Target Correction + //M2_ELab.push_back(LightTarget.EvaluateInitialEnergy(Energy ,TargetThickness*0.5, ThetaNormalTarget)); + M2_ELab.push_back(Energy); + M2_dE.push_back(Si_E_M2); + + // Part 3 : Excitation Energy Calculation + M2_Ex.push_back(reaction->ReconstructRelativistic( Energy, M2_ThetaLab[countMust2] )); + + M2_ThetaLab[countMust2]=M2_ThetaLab[countMust2]/deg; + + // Part 4 : Theta CM Calculation + M2_ThetaCM.push_back(reaction->EnergyLabToThetaCM( M2_ELab[countMust2] , M2_ThetaLab[countMust2])/deg); + + //if(proton_cut[TelescopeNumber]){ + // std::cout << "Test :" << proton_cut[TelescopeNumber] << " \n"; + // + }//end loop MUST2 + + + //for(unsigned int countMust2 = 0 ; countMust2 < M2->Si_E.size() ; countMust2++){ + //Si_E_M2 = M2->Si_E[countMust2]; + //CsI_E_M2 = M2->CsI_E[countMust2]; + //ThetaM2Surface = 0; + // if(Si_E_M2 > 0 && CsI_E_M2 > 8192){ + // //double EfromdeltaE = ProtonSi.EvaluateEnergyFromDeltaE( + // // Si_E_M2, 300*um, ThetaM2Surface, 6.0 * MeV, 300.0 * MeV, + // // 0.001 * MeV, 10000); + // double EfromdeltaE = (CsI_E_M2-8192)*0.1; + // M2_ECsI_from_deltaE.push_back(EfromdeltaE); + // if(EfromdeltaE > 0){ + // Beta_light = sqrt(1./(1.+1./(pow(EfromdeltaE/911. + 1,2)-1))); + // Beta_from_deltaE.push_back(Beta_light); + // if(Beta_light>0){ + // double Beth = log(2*511.*Beta_light*Beta_light/(0.174*(1-Beta_light*Beta_light))) - Beta_light*Beta_light; + // Beth_from_deltaE.push_back(Beth); + // } + // } + // } + //} +} + + + +void Analysis::InitOutputBranch() { + RootOutput::getInstance()->GetTree()->Branch("M2_TelescopeM",&M2_TelescopeM,"M2_TelescopeM/s"); + // RootOutput::getInstance()->GetTree()->Branch("M2_CsI_E_p",&M2_CsI_E_p); + // RootOutput::getInstance()->GetTree()->Branch("M2_CsI_E_d",&M2_CsI_E_d); + // RootOutput::getInstance()->GetTree()->Branch("M2_CsI_E_t",&M2_CsI_E_t); + // RootOutput::getInstance()->GetTree()->Branch("M2_CsI_E_a",&M2_CsI_E_a); + // RootOutput::getInstance()->GetTree()->Branch("M2_Ex_p",&M2_Ex_p); + RootOutput::getInstance()->GetTree()->Branch("M2_Ex",&M2_Ex); + // RootOutput::getInstance()->GetTree()->Branch("M2_Ex_d",&M2_Ex_d); + // RootOutput::getInstance()->GetTree()->Branch("M2_Ex_t",&M2_Ex_t); + // RootOutput::getInstance()->GetTree()->Branch("M2_Ex_a",&M2_Ex_a); + //RootOutput::getInstance()->GetTree()->Branch("ExNoBeam",&ExNoBeam,"ExNoBeam/D"); + //RootOutput::getInstance()->GetTree()->Branch("ExNoProton",&ExNoProton,"ExNoProton/D"); + RootOutput::getInstance()->GetTree()->Branch("M2_ELab",&M2_ELab); + RootOutput::getInstance()->GetTree()->Branch("M2_ThetaLab",&M2_ThetaLab); + RootOutput::getInstance()->GetTree()->Branch("M2_ThetaCM",&M2_ThetaCM); + RootOutput::getInstance()->GetTree()->Branch("M2_X",&M2_X); + RootOutput::getInstance()->GetTree()->Branch("M2_Y",&M2_Y); + RootOutput::getInstance()->GetTree()->Branch("M2_Z",&M2_Z); + RootOutput::getInstance()->GetTree()->Branch("M2_dE",&M2_dE); + RootOutput::getInstance()->GetTree()->Branch("CsI_E_M2",&CsI_E_M2); + // RootOutput::getInstance()->GetTree()->Branch("M2_ECsI_from_deltaE",&M2_ECsI_from_deltaE); +} + +void Analysis::UnallocateVariables(){ +} + +void Analysis::InitInputBranch(){ + TTreeReader* inputTreeReader = RootInput::getInstance()->GetTreeReader(); +} +//////////////////////////////////////////////////////////////////////////////// + +void Analysis::ReInit(){ + + CsI_Energy.clear(); + Si_E_M2 = -1000; + CsI_E_M2 = -1000; + Theta_seg = -1000; + Phi_seg = -1000; + M2_TelescopeM= 0; + M2_Ex.clear(); + + // M2_ECsI_from_deltaE.clear(); + //ExNoBeam=ExNoProto.clear(); + //EDC.clear(); + M2_ELab.clear(); + //BeamEnergy .clear(); + M2_ThetaLab.clear(); + M2_ThetaCM.clear(); + M2_X.clear(); + M2_Y.clear(); + M2_Z.clear(); + M2_dE.clear(); + +} + +//////////////////////////////////////////////////////////////////////////////// +void Analysis::End(){ +} + + +//////////////////////////////////////////////////////////////////////////////// +// 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/E805_simu/Analysis.h b/Projects/E805_simu/Analysis.h new file mode 100755 index 000000000..f345a39e1 --- /dev/null +++ b/Projects/E805_simu/Analysis.h @@ -0,0 +1,403 @@ +#ifndef Analysis_h +#define Analysis_h +/***************************************************************************** + * Copyright (C) 2009-2016 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: XAUTHORX contact address: XMAILX * + * * + * Creation Date : XMONTHX XYEARX * + * Last update : * + *---------------------------------------------------------------------------* + * Decription: * + * This class describe MUST_AND_ZDD analysis project * + * * + *---------------------------------------------------------------------------* + * Comment: * + * * + *****************************************************************************/ + +#include "TMust2Physics.h" +#include "TCATSPhysics.h" +#include "TMust2PhysicsReader.h" +#include"NPVAnalysis.h" +#include"TZDDPhysics.h" +#include"NPEnergyLoss.h" +#include"NPFunction.h" +#include"NPReaction.h" +#include"NPOptionManager.h" +#include"RootInput.h" +#include"RootOutput.h" +#include"TInitialConditions.h" +#include "TReactionConditions.h" +#include"NPParticle.h" +#include"NPBeam.h" +#include "TCutG.h" +#include<random> +class Analysis: public NPL::VAnalysis{ + public: + Analysis(); + ~Analysis(); + + public: + void SetParticles(); + void SetEnergyLoss(); + void Init(); + bool UnallocateBeforeBuild(); + bool FillOutputCondition(); + bool UnallocateBeforeTreat(); + void TreatEvent(); + void End(); + void ReInit(); + void InitOutputBranch(); + void InitInputBranch(); + bool CheckGoodEvent(); + void UnallocateVariables(); + // CheckIC is checking that all IC are crossed (E>0) not less and not more than 1 time + bool CheckIC(); + // CheckPlastics is checking that only and at leat 1 plastic is hit + bool CheckPlastics(); + // CHecking multiplicity 1 in DC + bool CheckDC(); + bool CheckExoAddBack(int ExoDet1, int ExoCristal1, int ExoSegment1, float ExoTime1, int ExoDet2, int ExoCristal2, int ExoSegment2, float ExoTime2); + bool CheckExoDeltaTV(float ExoTime); + + static NPL::VAnalysis* Construct(); + TTreeReaderValue<TMust2Data>* r_ReaderEventData; + + private: + + /// Currently only treating multiplicity 1 events + // ZDD info + double ZDD_DC_X; + double ZDD_DC_Y; + double ZDD_ThetaIC = 30/deg; + double ZDD_ThetaAfterTarget; + double ZDD_ThetaAfterTarget_X; + double ZDD_ThetaLab; + double ZDD_E_tot; + double ZDD_E_Plastic; + double ZDD_dE_tot; + std::vector<double> ZDD_Corrected_IC_E; + + // MUST2 info + unsigned short M2_TelescopeM; + // std::vector<double> M2_Ex_p; + // std::vector<double> M2_Ex_d; + // std::vector<double> M2_Ex_t; + // std::vector<double> M2_Ex_a; + // std::vector<double> M2_CsI_E_p; + // std::vector<double> M2_CsI_E_d; + // std::vector<double> M2_CsI_E_t; + // std::vector<double> M2_CsI_E_a; + std::vector<double> M2_Ex; + std::vector<double> M2_ExNoBeam; + std::vector<double> M2_ExNoProton; + std::vector<double> M2_EDC; + std::vector<double> M2_ELab; + std::vector<double> M2_ThetaLab; + std::vector<double> M2_ThetaCM; + std::vector<double> M2_X; + std::vector<double> M2_Y; + std::vector<double> M2_Z; + std::vector<double> M2_dE; + + + double OriginalBeamEnergy ; // AMEV + double FinalBeamEnergy; + + + float CATS1_X; + float CATS2_X; + float CATS1_Y; + float CATS2_Y; + + float Xf; + float Yf; + float Tf; + float Pf; + + unsigned long long MUGAST_TS[1]; + unsigned long long DATATRIG_CATSTS[1]; + + int Inner6MVM; + TTreeReaderValue<int>* Inner6MVM_; + float Inner6MV[48]; + TTreeReaderArray<float>* Inner6MV_; + unsigned short Inner6MVN[48]; + TTreeReaderArray<unsigned short>* Inner6MVN_; + unsigned long long Inner6MVTS[48]; + + + int BGOVM; + TTreeReaderValue<int>* BGOVM_; + float BGOV[48]; + TTreeReaderArray<float>* BGOV_; + unsigned short BGOVN[48]; + TTreeReaderArray<unsigned short>* BGOVN_; + + unsigned short GATCONFMASTER; + TTreeReaderValue<unsigned short>* GATCONFMASTER_; + + unsigned short DATATRIG_CATS; + TTreeReaderValue<unsigned short>* DATATRIG_CATS_; + +// int Strip_X_M; +// float Strip_X_E[48]; +// float Strip_X_T[48]; +// unsigned int Strip_X_Nb[48]; +// unsigned short Strip_X_Det[48]; +// +// int Strip_Y_M; +// float Strip_Y_E[48]; +// float Strip_Y_T[48]; +// unsigned int Strip_Y_Nb[48]; +// unsigned short Strip_Y_Det[48]; + + int DeltaTVM; + float DeltaTV[48]; + unsigned short DeltaTVN[48]; + unsigned long long DeltaTVTS[48]; + + float EnergyDoppler; + float EnergyAddBackDoppler; + float EnergyAddBack; + int ExogamDetNb[3]; + // int CristalNb[3]; + int SegmentNb[3]; + + std::vector<int> event1; + std::vector<int> event2; + int highest_E; + + int OutersVM; + TTreeReaderValue<int>* OutersVM_; + float OutersV[192]; + TTreeReaderArray<float>* OutersV_; + unsigned short OutersVN[192]; + TTreeReaderArray<unsigned short>* OutersVN_; + + int DCRawM; + unsigned short DCRaw[4]; + unsigned short DCRawNr[4]; + unsigned long long DCRawTS[4]; + + unsigned short PlasticRaw[10]; + TTreeReaderArray<UShort_t>* PlasticRaw_; + unsigned long long PlasticRawTS[10]; + TTreeReaderArray<ULong64_t>* PlasticRaw_TS_; + float PlasticCal[10]; + + float PlasticEner[5]; + int PlasticEnerM; + unsigned short PlasticEnerN[5]; + unsigned long long PlasticEnerTS[5]; + int PlasticCounter; + float PlasticThreshold; + float PlasticEner_tmp; + + unsigned short IC_ZDDRaw[6]; + TTreeReaderArray<UShort_t>* IC_ZDDRaw_; + unsigned long long IC_ZDDRawTS[6]; + TTreeReaderArray<ULong64_t>* IC_ZDDRaw_TS_; + float ICCal[4]; + + unsigned short TAC_CATS_PL; + TTreeReaderValue<UShort_t>* TAC_CATS_PL_; + unsigned long long TAC_CATS_PLTS; + TTreeReaderValue<ULong64_t>* TAC_CATS_PL_TS_; + + unsigned short TAC_CATS_HF; + TTreeReaderValue<UShort_t>* TAC_CATS_HF_; + unsigned long long TAC_CATS_HFTS; + TTreeReaderValue<ULong64_t>* TAC_CATS_HF_TS_; + + unsigned short TAC_CATS_EXOGAM; + TTreeReaderValue<UShort_t>* TAC_CATS_EXOGAM_; + unsigned long long TAC_CATS_EXOGAMTS; + TTreeReaderValue<ULong64_t>* TAC_CATS_EXOGAM_TS_; + + unsigned short TAC_MMG_CATS2; + TTreeReaderValue<UShort_t>* TAC_MMG_CATS2_; + unsigned long long TAC_MMG_CATS2TS; + TTreeReaderValue<ULong64_t>* TAC_MMG_CATS2_TS_; + + unsigned short TAC_MMG_CATS1; + TTreeReaderValue<UShort_t>* TAC_MMG_CATS1_; + unsigned long long TAC_MMG_CATS1TS; + TTreeReaderValue<ULong64_t>* TAC_MMG_CATS1_TS_; + + unsigned short TAC_MMG_EXOGAM; + TTreeReaderValue<UShort_t>* TAC_MMG_EXOGAM_; + unsigned long long TAC_MMG_EXOGAMTS; + TTreeReaderValue<ULong64_t>* TAC_MMG_EXOGAM_TS_; + + unsigned short TAC_CATS1_CATS2; + TTreeReaderValue<UShort_t>* TAC_CATS1_CATS2_; + unsigned long long TAC_CATS1_CATS2TS; + TTreeReaderValue<ULong64_t>* TAC_CATS1_CATS2_TS_; + + unsigned short TAC_D4_CATS1; + TTreeReaderValue<UShort_t>* TAC_D4_CATS1_; + unsigned long long TAC_D4_CATS1TS; + TTreeReaderValue<ULong64_t>* TAC_D4_CATS1_TS_; + + unsigned short TAC_PL_1; + TTreeReaderValue<UShort_t>* TAC_PL_1_; + unsigned long long TAC_PL_1TS; + TTreeReaderValue<ULong64_t>* TAC_PL_1_TS_; + unsigned short TAC_PL_2; + TTreeReaderValue<UShort_t>* TAC_PL_2_; + unsigned long long TAC_PL_2TS; + TTreeReaderValue<ULong64_t>* TAC_PL_2_TS_; + unsigned short TAC_PL_3; + TTreeReaderValue<UShort_t>* TAC_PL_3_; + unsigned long long TAC_PL_3TS; + TTreeReaderValue<ULong64_t>* TAC_PL_3_TS_; + unsigned short TAC_PL_4; + TTreeReaderValue<UShort_t>* TAC_PL_4_; + unsigned long long TAC_PL_4TS; + TTreeReaderValue<ULong64_t>* TAC_PL_4_TS_; + unsigned short TAC_PL_5; + TTreeReaderValue<UShort_t>* TAC_PL_5_; + unsigned long long TAC_PL_5TS; + TTreeReaderValue<ULong64_t>* TAC_PL_5_TS_; + + double xtarget; + double ytarget; + double IncidentTheta = 0; + int DetectorNumber ; + double ThetaNormalTarget; + double ThetaM2Surface ; + double ThetaMGSurface ; + double Si_E_M2 ; + double CsI_E_M2 ; + std::vector<string> ParticleType{"proton","deuteron","triton","alpha"}; + // std::map<TString, double> Energy ; + double Energy; + std::map<TString, NPL::EnergyLoss> LightAl ; + std::map<TString, NPL::EnergyLoss> LightTarget ; + std::map<TString, NPL::EnergyLoss> BeamTarget ; + std::map<TString, double> CsI_Energy ; + double BeamEnergy; + double ThetaGDSurface ; + + double Beta; + double Beta_light; + double Gamma; + double Velocity; + + double Drift_Speed; + double TargetThickness; + double CorrectedBeamEnergy; + std::vector<double> IC_Energy; + + TVector3 ZDir; + TVector3 BeamDirection; + TVector3 BeamImpact; + + + + NPL::Reaction* Reaction_pd; + NPL::Reaction* Reaction_pt; + NPL::Reaction* Reaction_p3He; + NPL::Reaction* reaction = new Reaction; + NPL::Particle* Co_57 = new Particle; + NPL::Particle* Ni_57 = new Particle; + NPL::EnergyLoss Beam_Target; + NPL::EnergyLoss Heavy_Target; + // NPL::EnergyLoss LightTarget; + NPL::EnergyLoss ProtonSi; + std::vector<NPL::EnergyLoss> Heavy_IC_Gas; + std::vector<NPL::EnergyLoss> Heavy_IC_Windows; + std::vector<NPL::EnergyLoss> Heavy_IC_Mylar; + std::vector<NPL::EnergyLoss> Heavy_DC_Gas; + // NPL::EnergyLoss LightAl; + // NPL::EnergyLoss LightSi; + + string BeamName = "48Cr"; + + int Nb_Mylar_After_IC = 1; + int Nb_Mylar_Before_IC = 4; + int Nb_IC = 10; + double Drift_Chamber_Length = 180*mm; + double Drift_Chamber_Width = 180*mm; + double ZDD_R = 1027*mm; + + private: + // TMust2Data* M2_Raw; + TMust2Physics* M2; + TCATSPhysics* CATS; + TZDDPhysics* ZDD; + TMust2PhysicsReader* M2_Reader; + TInitialConditions* InitialConditions; + TReactionConditions* ReactionConditions; + + std::ifstream ExogamTopo; + std::ifstream DC_calib; + std::ifstream Plastic_calib; + std::ifstream IC_calib; + std::string ExogamLine; + std::string DCLine; + std::string PlasticLine; + std::string ICLine; + + Int_t Plastic_Nb_tmp; + Double_t Plastic_peak_tmp,Plastic_pedestal_tmp; + Double_t Plastic_pedestal[10]; + Double_t Plastic_peak[10]; + + Int_t IC_Nb_tmp; + Double_t IC_peak_tmp,IC_pedestal_tmp; + Double_t IC_pedestal[4]; + Double_t IC_peak[4]; + + int DC_Nr; + long long dt; + char DC_XY[1]; + Int_t DC_numb_tmp; + Double_t off_tmp,cff_tmp,sqr_tmp; + Double_t off[4]; + Double_t cff[4]; + Double_t sqr[4]; + + double DC_X; + double DC_Y; + + //Char_t* ExogamLine_char[100]; + + + double Theta_seg; + double Phi_seg; + + Char_t Exogam[100]; + Int_t ExoNumb; + Int_t Flange_tmp; + int FlangeNumb[12]; + + + + /////////////Exogam + + + TCutG* proton_cut[4]; + TCutG* deuteron_cut[4]; + TCutG* triton_cut[4]; + + TFile* proton_cut_file[4]; + TFile* deuteron_cut_file[4]; + TFile* triton_cut_file[4]; + + Beam* BeamPart = new Beam; + Particle* HeavyEjectile = new Particle; + + default_random_engine generator; + normal_distribution<double> distribution = normal_distribution<double>(0.0,1.0); + CalibrationManager* Cal; + +}; +#endif \ No newline at end of file diff --git a/Projects/E805_simu/MUST2_E805.detector b/Projects/E805_simu/MUST2_E805.detector new file mode 100644 index 000000000..b15b96f6d --- /dev/null +++ b/Projects/E805_simu/MUST2_E805.detector @@ -0,0 +1,54 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Target + THICKNESS= 53.5 micrometer + ANGLE= 0 deg + RADIUS= 15 mm + MATERIAL= CH2 + ANGLE= 0 deg + X= 0 mm + Y= 0 mm + Z= 0 mm +%%%%%%% Telescope 1 %%%%%%% +M2Telescope + X1_Y1= -13.57 -104.78 299.83 mm + X1_Y128= -25.1 -12.62 328.63 mm + X128_Y1= -104.01 -104.85 263.88 mm + X128_Y128= -115.53 -12.71 292.67 mm + SI= 1 + SILI= 0 + CSI= 1 + VIS= all +%%%%%%% Telescope 2 %%%%%%% +M2Telescope + X1_Y1= -114.9 9.68 291.84 mm + X1_Y128= -24.56 9.8 327.88 mm + X128_Y1= -103.58 101.8 262.73 mm + X128_Y128= -13.24 102.09 298.75 mm + SI= 1 + SILI= 0 + CSI= 1 + VIS= all + +%%%%%%% Telescope 3 %%%%%%% +M2Telescope + X1_Y1= 11.84 101.72 299.05 mm + X1_Y128= 23.44 9.68 328.38 mm + X128_Y1= 102.16 101.57 263.01 mm + X128_Y128= 113.81 9.57 292.3 mm + SI= 1 + SILI= 0 + CSI= 1 + VIS= all + + +%%%%%%% Telescope 4 %%%%%%% +M2Telescope + X1_Y1= 113.56 -13.18 292.11 mm + X1_Y128= 23.23 -13.37 328.15 mm + X128_Y1= 102.39 -105.49 263.59 mm + X128_Y128= 12.04 -105.69 299.63 mm + SI= 1 + SILI= 0 + CSI= 1 + VIS= all + diff --git a/Projects/E805_simu/RunToTreat.txt b/Projects/E805_simu/RunToTreat.txt new file mode 100644 index 000000000..e31b79130 --- /dev/null +++ b/Projects/E805_simu/RunToTreat.txt @@ -0,0 +1,5 @@ +TTreeName + SimulatedTree +RootFileName + ../E805/data/NPRoot/Simulation/test_simu.root + diff --git a/Projects/E805_simu/project.config b/Projects/E805_simu/project.config new file mode 100644 index 000000000..0edda1e97 --- /dev/null +++ b/Projects/E805_simu/project.config @@ -0,0 +1,8 @@ +Project E805_simu + AnalysisOutput= ../E805/data/NPRoot/Analysis/ + SimulationOutput= ../E805/data/NPRoot/Simulation/ + EnergyLoss= ../../Inputs/EnergyLoss/ + CalibrationOutput= ../E805/data/NPRoot/Calibration/ + Cuts= ../E805/data/NPRoot/Cuts/ + + -- GitLab