From 99f089b5f87bc73c484121923f0ca1e37c40c0ea Mon Sep 17 00:00:00 2001 From: Miguel Lozano-Gonzalez <miguellozano.gonzalez@usc.es> Date: Tue, 21 Mar 2023 12:40:23 +0100 Subject: [PATCH] Revert repo to status before forking I was pushing both to my fork and to this repo! Sorry for any inconveniences --- NPSimulation/Detectors/Chio/Chio.cc | 16 +- Projects/e748/Analysis.cxx | 638 +++++------- Projects/e748/Analysis.h | 179 ++-- Projects/e748/BeamID.cxx | 51 +- Projects/e748/CMakeLists.txt | 2 - Projects/e748/ID.cxx | 46 +- Projects/e748/MT.cxx | 48 +- Projects/e748/Postanalysis/AnalyzeBeam.cpp | 44 - Projects/e748/Postanalysis/AnalyzeCATS.cpp | 34 - Projects/e748/Postanalysis/ApplyCuts.cpp | 52 - Projects/e748/Postanalysis/CalibrateBeam.cpp | 18 - Projects/e748/Postanalysis/GetCuts.cpp | 117 --- Projects/e748/Postanalysis/GetSpectrum.cpp | 62 -- Projects/e748/Postanalysis/ImprovePID.cpp | 85 -- .../PlotTheoreticalKinematics.cpp | 47 - Projects/e748/Postanalysis/Utils.cpp | 35 - Projects/e748/RunToTreat/RunToTreat_12Be.txt | 40 +- Projects/e748/Target.cxx | 2 +- Projects/e748/e748.detector | 2 +- .../Be12_iC4H10_0.008bar_273.15K.G4table | 921 +++++++++--------- thisNPTool.sh | 8 - 21 files changed, 900 insertions(+), 1547 deletions(-) delete mode 100644 Projects/e748/Postanalysis/AnalyzeBeam.cpp delete mode 100644 Projects/e748/Postanalysis/AnalyzeCATS.cpp delete mode 100644 Projects/e748/Postanalysis/ApplyCuts.cpp delete mode 100644 Projects/e748/Postanalysis/CalibrateBeam.cpp delete mode 100644 Projects/e748/Postanalysis/GetCuts.cpp delete mode 100644 Projects/e748/Postanalysis/GetSpectrum.cpp delete mode 100644 Projects/e748/Postanalysis/ImprovePID.cpp delete mode 100644 Projects/e748/Postanalysis/PlotTheoreticalKinematics.cpp delete mode 100644 Projects/e748/Postanalysis/Utils.cpp delete mode 100644 thisNPTool.sh diff --git a/NPSimulation/Detectors/Chio/Chio.cc b/NPSimulation/Detectors/Chio/Chio.cc index 73afee883..4d6f446f8 100644 --- a/NPSimulation/Detectors/Chio/Chio.cc +++ b/NPSimulation/Detectors/Chio/Chio.cc @@ -154,19 +154,19 @@ G4LogicalVolume* Chio::BuildDetector(){ G4Material* Mylar= MaterialManager::getInstance()->GetMaterialFromLibrary("Mylar"); G4MaterialPropertiesTable* MPT = new G4MaterialPropertiesTable(); - MPT->AddConstProperty("DE_PAIRENERGY",30*eV, true); + MPT->AddConstProperty("DE_PAIRENERGY",30*eV); // MPT->AddConstProperty("DE_AMPLIFICATION",1e4); - MPT->AddConstProperty("DE_ABSLENGTH",1*pc, true); - MPT->AddConstProperty("DE_DRIFTSPEED",11*cm/microsecond, true); - MPT->AddConstProperty("DE_TRANSVERSALSPREAD",6e-5*mm2/ns, true); - MPT->AddConstProperty("DE_LONGITUDINALSPREAD",4e-5*mm2/ns, true); + MPT->AddConstProperty("DE_ABSLENGTH",1*pc); + MPT->AddConstProperty("DE_DRIFTSPEED",11*cm/microsecond); + MPT->AddConstProperty("DE_TRANSVERSALSPREAD",6e-5*mm2/ns); + MPT->AddConstProperty("DE_LONGITUDINALSPREAD",4e-5*mm2/ns); CF4->SetMaterialPropertiesTable(MPT); G4MaterialPropertiesTable* MPT2 = new G4MaterialPropertiesTable(); - MPT2->AddConstProperty("DE_YIELD",1, true); - MPT2->AddConstProperty("DE_AMPLIFICATION",2, true); - MPT2->AddConstProperty("DE_ABSLENGTH",1*pc, true); + MPT2->AddConstProperty("DE_YIELD",1); + MPT2->AddConstProperty("DE_AMPLIFICATION",2); + MPT2->AddConstProperty("DE_ABSLENGTH",1*pc); Al->SetMaterialPropertiesTable(MPT2); diff --git a/Projects/e748/Analysis.cxx b/Projects/e748/Analysis.cxx index dca01065e..376c1dd90 100644 --- a/Projects/e748/Analysis.cxx +++ b/Projects/e748/Analysis.cxx @@ -19,8 +19,6 @@ * * * * *****************************************************************************/ -#include "NPSystemOfUnits.h" -#include <TUrl.h> #include<iostream> using namespace std; #include"Analysis.h" @@ -29,8 +27,6 @@ using namespace std; #include"NPOptionManager.h" #include"RootOutput.h" #include"RootInput.h" - -#include "TMath.h" //////////////////////////////////////////////////////////////////////////////// Analysis::Analysis(){ } @@ -40,188 +36,185 @@ Analysis::~Analysis(){ //////////////////////////////////////////////////////////////////////////////// void Analysis::Init(){ - //--> Detector physics - fM2 = (TMust2Physics*) m_DetectorManager->GetDetector("M2Telescope"); - fCATS = (TCATSPhysics*) m_DetectorManager->GetDetector("CATSDetector"); - //IC, Plastic and TOF from CATS - fModularLeaf = (TModularLeafPhysics*) m_DetectorManager->GetDetector("ModularLeaf"); - //--> ROOT I/O - InitOutputBranch(); - InitInputBranch(); - //--> Auxiliar funcs and variables for analysis - fReaction= new NPL::Reaction(); - fTargetThickness = m_DetectorManager->GetTargetThickness(); - // Energy loss table: the G4Table are generated by the simulation - fHe3CD2 = EnergyLoss("./energy_loss/He3_CD2.G4table","G4Table",10 ); - fHe3Al = EnergyLoss("./energy_loss/He3_Al.G4table","G4Table",10); - fHe3Si = EnergyLoss("./energy_loss/He3_Si.G4table","G4Table",10); - fBeamCD2 = EnergyLoss("./energy_loss/Be12_CD2.G4table","G4Table",10); - fBeamMylar = EnergyLoss("./energy_loss/Be12_Mylar.G4table","G4Table",10); - fBeamIsobutane = EnergyLoss("./energy_loss/Be12_iC4H10_0.008bar_273.15K.G4table","G4Table",10); + M2 = (TMust2Physics*) m_DetectorManager->GetDetector("M2Telescope"); + CATS = (TCATSPhysics*) m_DetectorManager->GetDetector("CATSDetector"); + ModularLeaf = (TModularLeafPhysics*) m_DetectorManager->GetDetector("ModularLeaf"); + InitOutputBranch(); + InitInputBranch(); + /* Rand = TRandom3(); */ + myReaction= new NPL::Reaction(); + myReaction->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 ; + Energy = 0; + E_M2 = 0; + Si_X_M2 = 0; + Si_Y_M2 = 0; + ZTarget = 0; + TimeCorr=0; + TargetThickness = m_DetectorManager->GetTargetThickness(); + // Energy loss table: the G4Table are generated by the simulation + He3CD2 = EnergyLoss("Example/He3_CD2.G4table","G4Table",10 ); + He3Al = EnergyLoss("Example/He3_Al.G4table","G4Table",10); + He3Si = EnergyLoss("Example/He3_Si.G4table","G4Table",10); + BeamCD2 = EnergyLoss("Be12_CD2.G4table","G4Table",10); + BeamMylar = EnergyLoss("Be12_Mylar.G4table","G4Table",10); + BeamIsobutane = EnergyLoss("Be12_iC4H10.G4table","G4Table",10); } -void Analysis::TreatBeam() -{ - //--> Get beam vertex and direction - XYZPoint vertex {fCATS->GetPositionOnTargetX(), fCATS->GetPositionOnTargetY(), 0.}; - XYZVector beamDirection {fCATS->GetBeamDirection()}; - mThetaBeam = ComputeXYZVectorAngle(beamDirection, XYZVector(0, 0, 1)); - //--> Beam energy CALIBRATION - mCATS1Calibrated = fModularLeaf->GetCalibratedValue("T_CATS1_CAV"); - double beamSpeed { 11.0476 + mCATS1Calibrated * 0.278917}; // mm/ns - //work in SI units - beamSpeed *= 1.E6; //1.E9 * 1.E-3 m/s - // Beam Energy before CATS1 - static double kCSquared {TMath::Power(TMath::C(), 2)}; - auto gamma0 {ComputeGamma(beamSpeed)}; - mEBeam = kBeamMass * (gamma0 - 1); +//////////////////////////////////////////////////////////////////////////////// +void Analysis::TreatEvent(){ + // Reinitiate calculated variable + ReInitValue(); + + // Calculate Run Number + static string filename ; + filename = RootInput::getInstance()->GetChain()->GetFile()->GetName(); + size_t minor_pos = filename.rfind("_"); + run_minor = atoi(filename.substr(minor_pos+1,1).c_str()); + filename = filename.substr(0,minor_pos); + size_t major_pos = filename.rfind("_"); + run_major = atoi(filename.substr(major_pos+1,4).c_str()); + // 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 = CATS->GetPositionOnTarget().X(); + double YTarget = CATS->GetPositionOnTarget().Y(); + + TVector3 BeamDirection = CATS->GetBeamDirection(); + // Beam energy is measured using F3 and F2 plastic TOF + //double BeamEnergy= myReaction-> GetBeamEnergy()* MeV; + //////////////////////////// LOOP on MUST2 Hit ////////////////// + 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 ; - //debug - // std::cout<<"Beam speed = "<<BeamSpeed<<'\n'; - // std::cout<<"Beta = "<<beta<<'\n'; - // std::cout<<"Gamma = "<<gamma<<'\n'; - // std::cout<<"Beam energy = "<<BeamEnergy<<'\n'; - - // Energy Loss in CATS1 - double beamAfterCATS1 {ComputeELossInCATS(mEBeam, mThetaBeam)}; - XYZPoint pointCATS1 {fCATS->PositionX.at(0), fCATS->PositionY.at(0), fCATS->PositionZ.at(0)}; - XYZPoint pointCATS2 {fCATS->PositionX.at(1), fCATS->PositionY.at(1), fCATS->PositionZ.at(1)}; - //Time correction in space between CATS1 to CATS2 - mTimeCorr = ComputeTimeCorrectionInCATS(beamAfterCATS1, kBeamMass, pointCATS1, pointCATS2); + if(TelescopeNumber<9){ + 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() ; + + // Beam Energy from Cav Time of Flight // - // ELoss in CATS2 - double beamAfterCATS2 {ComputeELossInCATS(beamAfterCATS1, mThetaBeam)}; - //Time correction - mTimeCorr += ComputeTimeCorrectionInCATS(beamAfterCATS2, kBeamMass, pointCATS2, vertex); + // Beam speed from Beam Energy - // Slow down beam inside the target - mEBeam = fBeamCD2.Slow(beamAfterCATS2, fTargetThickness * 0.5, mThetaBeam); + // double BeamSpeed = 10.8727 + ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.276825; // mm/ns + //double BeamSpeed = 5.17952 + ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.305315; // mm/ns + double BeamSpeed = 11.0476 + ModularLeaf->GetCalibratedValue("T_CATS1_CAV")*0.278917; // mm/ns - //--> Set kinematic calculator - fReaction->SetBeamEnergy(mEBeam); -} + // Beam Energy before CATS1 + static double c2 = 299.792458*299.792458;// mm/ns + double gamma = 1./sqrt(1-BeamSpeed*BeamSpeed/c2); + BeamEnergy= 11200.962140*(gamma-1); + double BeamAngle= BeamDirection.Angle(TVector3(0,0,1)); + + // Beam Energy and speed after CATS1 + double BeamEnergyC1 = BeamMylar.Slow(BeamEnergy,1.2*micrometer,BeamAngle); + BeamEnergyC1 = BeamIsobutane.Slow(BeamEnergyC1,cm/3.,BeamAngle); + BeamEnergyC1 = BeamMylar.Slow(BeamEnergyC1,0.9*micrometer,BeamAngle); + BeamEnergyC1 = BeamIsobutane.Slow(BeamEnergyC1,cm/3,BeamAngle); + BeamEnergyC1 = BeamMylar.Slow(BeamEnergyC1,0.9*micrometer,BeamAngle); + BeamEnergyC1 = BeamIsobutane.Slow(BeamEnergyC1,cm/3.,BeamAngle); + BeamEnergyC1 = BeamMylar.Slow(BeamEnergyC1,1.2*micrometer,BeamAngle); + + double gammaC1 = (BeamEnergyC1+11200.962140) / 11200.962140 ; + double BeamSpeedC1 = sqrt(c2*(1-1/(gammaC1*gammaC1))); + TVector3 C1toC2 = TVector3(CATS->PositionX[1],CATS->PositionY[1],CATS->PositionZ[1]) + - TVector3(CATS->PositionX[0],CATS->PositionY[0],CATS->PositionZ[0]) ; + TimeCorr = C1toC2.Mag()/BeamSpeedC1; + + // Beam Energy and speed after CATS2 + double BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC1,1.2*micrometer,BeamAngle); + BeamEnergyC2 = BeamIsobutane.Slow(BeamEnergyC2,cm/3.,BeamAngle); + BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC2,0.9*micrometer,BeamAngle); + BeamEnergyC2 = BeamIsobutane.Slow(BeamEnergyC2,cm/3,BeamAngle); + BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC2,0.9*micrometer,BeamAngle); + BeamEnergyC2 = BeamIsobutane.Slow(BeamEnergyC2,cm/3.,BeamAngle); + BeamEnergyC2 = BeamMylar.Slow(BeamEnergyC2,1.2*micrometer,BeamAngle); + + double gammaC2 = (BeamEnergyC2+11200.962140) / 11200.962140; + double BeamSpeedC2 = sqrt(c2*(1-1/(gammaC2*gammaC2))); + TVector3 C2toTarget = BeamImpact-TVector3(CATS->PositionX[1],CATS->PositionY[1],CATS->PositionZ[1]); + TimeCorr += C2toTarget.Mag()/BeamSpeedC2; -//////////////////////////////////////////////////////////////////////////////// -void Analysis::TreatEvent(){ - // Reset saved variables - ReInitValue(); - - // Calculate Run Number - static string filename ; - filename = RootInput::getInstance()->GetChain()->GetFile()->GetName(); - size_t minor_pos = filename.rfind("_"); - mRunMinor = atoi(filename.substr(minor_pos+1,1).c_str()); - filename = filename.substr(0,minor_pos); - size_t major_pos = filename.rfind("_"); - mRunMajor = atoi(filename.substr(major_pos+1,4).c_str()); - - // 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 - //------------------- BEAM --------------------------- - XYZPoint vertex {fCATS->GetPositionOnTargetX(), fCATS->GetPositionOnTargetY(), 0.}; - XYZVector beamDirection {fCATS->GetBeamDirection()}; + // slow down beam inside the target + BeamEnergy = BeamCD2.Slow(BeamEnergyC2,TargetThickness*0.5,BeamDirection.Angle(TVector3(0,0,1))); + myReaction->SetBeamEnergy(BeamEnergy); + + } + - bool computeBeam {true};//just do this one time if cuts are passed - //////////////////////////// LOOP on MUST2 Hit ///////////////// - for(unsigned int hit = 0 ; hit < fM2->Si_E.size() ; hit++) - { - - int telescopeNumber {fM2->TelescopeNumber.at(hit)}; - XYZPoint must2Point {fM2->GetPositionOfInteraction(hit)}; + else{ + BeamDirection = TVector3(-1000,-1000,-1000); + ThetaM2Surface = -1000 ; + ThetaNormalTarget = -1000 ; + } - //cut on telescope number - if(!(telescopeNumber < 9)) - continue; - //cut on vertex position - if(!(vertex.X() > -1000 && vertex.Y() > -1000)) - continue; +/* // Part 2 : Impact Energy */ + Energy = ELab = E_M2 = 0; + Si_E_M2 = M2->Si_E[countMust2]; + CsI_E_M2= M2->CsI_E[countMust2]; - // // Beam computation (ONCE per event) - // if(computeBeam) - // { - // TreatBeam(); - // computeBeam = true; - // } - ///////////// BEAM - mThetaBeam = ComputeXYZVectorAngle(beamDirection, XYZVector(0, 0, 1)); - //--> Beam energy CALIBRATION - mCATS1Calibrated = fModularLeaf->GetCalibratedValue("T_CATS1_CAV"); - double beamSpeed { 11.0476 + mCATS1Calibrated * 0.278917}; // mm/ns - //work in SI units - beamSpeed *= 1.E6; //1.E9 * 1.E-3 m/s - // Beam Energy before CATS1 - static double kCSquared {TMath::Power(TMath::C(), 2)}; - auto gamma0 {ComputeGamma(beamSpeed)}; - mEBeam = kBeamMass * (gamma0 - 1); +/* // if CsI */ +/* /1* if(CsI_E_M2>0 ){ *1/ */ +/* /1* // The energy in CsI is calculate form dE/dx Table because *1/ */ +/* /1* // 20um resolution is poor *1/ */ +/* /1* Energy = *1/ */ +/* /1* He3Si.EvaluateEnergyFromDeltaE(Si_E_M2,300*micrometer, *1/ */ +/* /1* ThetaM2Surface, 0.01*MeV, *1/ */ +/* /1* 450.*MeV,0.001*MeV ,1000); *1/ */ +/* /1* E_M2=CsI_E_M2; *1/ */ +/* /1* } *1/ */ - //debug - // std::cout<<"Beam speed = "<<BeamSpeed<<'\n'; - // std::cout<<"Beta = "<<beta<<'\n'; - // std::cout<<"Gamma = "<<gamma<<'\n'; - // std::cout<<"Beam energy = "<<BeamEnergy<<'\n'; - - // Energy Loss in CATS1 - double beamAfterCATS1 {ComputeELossInCATS(mEBeam, mThetaBeam)}; - XYZPoint pointCATS1 {fCATS->PositionX.at(0), fCATS->PositionY.at(0), fCATS->PositionZ.at(0)}; - XYZPoint pointCATS2 {fCATS->PositionX.at(1), fCATS->PositionY.at(1), fCATS->PositionZ.at(1)}; - //Time correction in space between CATS1 to CATS2 - mTimeCorr = ComputeTimeCorrectionInCATS(beamAfterCATS1, kBeamMass, pointCATS1, pointCATS2); - - // ELoss in CATS2 - double beamAfterCATS2 {ComputeELossInCATS(beamAfterCATS1, mThetaBeam)}; - //Time correction - mTimeCorr += ComputeTimeCorrectionInCATS(beamAfterCATS2, kBeamMass, pointCATS2, vertex); +/* /1* else *1/ */ + + + + + Energy = Si_E_M2; - // Slow down beam inside the target - mEBeam = fBeamCD2.Slow(beamAfterCATS2, fTargetThickness * 0.5, mThetaBeam); + E_M2 += Si_E_M2; - //--> Set kinematic calculator - fReaction->SetBeamEnergy(mEBeam); - - XYZVector trackDirection {must2Point - vertex}; - // Angles computation - //mThetaLab.push_back( ComputeXYZVectorAngle(trackDirection, beamDirection) ); - mThetaLab = ComputeXYZVectorAngle(trackDirection, beamDirection); - double mNormalThetaTarget = ComputeXYZVectorAngle(trackDirection, XYZVector(0, 0, 1)); - double mNormalThetaM2 = ComputeXYZVectorAngle(trackDirection, - -1 * XYZVector(fM2->GetTelescopeNormal(hit))); - - // Save hit position (can't be accessed afterwards if not done here) - mMust2Telescopes.push_back( telescopeNumber ); - mMust2PointsX.push_back( must2Point.X() ); - mMust2PointsY.push_back( must2Point.Y() ); - mMust2PointsZ.push_back( must2Point.Z() ); - - //Assume CsIE == 0! - double EAtDetector { fM2->Si_E.at(hit) }; - //Save energies to custom branches - mMust2SiE.push_back( fM2->Si_E.at(hit) ); - mMust2CsIE.push_back( fM2->CsI_E.at(hit) ); - mMust2SiT.push_back( fM2->Si_T.at(hit) ); - - //Backpropagate to vertex - mELab = fHe3Al.EvaluateInitialEnergy(EAtDetector, 0.4 * micrometer, mNormalThetaM2); - //Assume reaction at the middle of target and correct energy - mELab = fHe3CD2.EvaluateInitialEnergy(mELab, fTargetThickness / 2., mNormalThetaTarget); - //Compute Excitation Energy - mEx = fReaction->ReconstructRelativistic(mELab, mThetaLab); - //std::cout<<" Ex = "<<mEx.back()<< "MeV"<<'\n'; - // Back to CM - mThetaCM = fReaction->EnergyLabToThetaCM(mELab, mThetaLab) / deg;//in degrees - mThetaLab = mThetaLab / deg ;//store in degrees! - //debug - // std::cout<<" EAtSil = "<<EAtDetector<<'\n'; - // std::cout<<" E1 = "<<ELabIni<<'\n'; - // std::cout<<" EVert = "<<mELab.back()<<'\n'; - // std::cout<<" Theta = "<<mThetaLab.back() * TMath::RadToDeg()<<'\n'; - // std::cout<<" Ex = "<<mEx.back()<<'\n'; - } - // //ensure - // if(!(mEx.size() == mThetaLab.size())) - // throw std::runtime_error("Mismatching sizes for Eex && thetaLab vectors!"); +/* // Evaluate energy using the thickness */ + ELab = He3Al.EvaluateInitialEnergy( Energy,0.4*micrometer , ThetaM2Surface); +/* // Target Correction */ + ELab = He3CD2.EvaluateInitialEnergy( ELab ,TargetThickness/2., ThetaNormalTarget); + +/* // Part 3 : Excitation Energy Calculation */ + Ex = myReaction -> ReconstructRelativistic( ELab , ThetaLab ); + + +/* // Part 4 : Theta CM Calculation */ + ThetaCM = myReaction -> EnergyLabToThetaCM( ELab , ThetaLab)/deg; + ThetaLab=ThetaLab/deg; + + } + }//end loop MUST2 } //////////////////////////////////////////////////////////////////////////////// @@ -230,229 +223,126 @@ void Analysis::End(){ //////////////////////////////////////////////////////////////////////////////// void Analysis::InitOutputBranch() { - RootOutput::getInstance()->GetTree()->Branch("Ex", &mEx); - RootOutput::getInstance()->GetTree()->Branch("ELab", &mELab); - RootOutput::getInstance()->GetTree()->Branch("ThetaLab", &mThetaLab); - RootOutput::getInstance()->GetTree()->Branch("ThetaCM", &mThetaCM); - RootOutput::getInstance()->GetTree()->Branch("BeamEnergy", &mEBeam, "BeamEnergy/D"); - RootOutput::getInstance()->GetTree()->Branch("BeamTheta", &mThetaBeam, "BeamTheta/D"); - RootOutput::getInstance()->GetTree()->Branch("TimeCorr", &mTimeCorr,"TimeCorr/D"); - //mNormalThetaTarget - //mNormalThetaM2 - RootOutput::getInstance()->GetTree()->Branch("Must2Telescopes", &mMust2Telescopes); - RootOutput::getInstance()->GetTree()->Branch("Must2SiE", &mMust2SiE); - RootOutput::getInstance()->GetTree()->Branch("Must2CsIE", &mMust2CsIE); - RootOutput::getInstance()->GetTree()->Branch("Must2SiT", &mMust2SiT); - RootOutput::getInstance()->GetTree()->Branch("Must2PointsX", &mMust2PointsX); - RootOutput::getInstance()->GetTree()->Branch("Must2PointsY", &mMust2PointsY); - RootOutput::getInstance()->GetTree()->Branch("Must2PointsZ", &mMust2PointsZ); - // RootOutput::getInstance()->GetTree()->Branch("Must2Time", &mMust2Time, "Must2Time/D"); - // RootOutput::getInstance()->GetTree()->Branch("Must2SiE", &mMust2SiE, "Must2SiE/D"); - // RootOutput::getInstance()->GetTree()->Branch("Must2CsI", &mMust2CsIE, "Must2CsI/D"); - // RootOutput::getInstance()->GetTree()->Branch("BeamLength", &mBeamLength, "BeamLength/D"); - // RootOutput::getInstance()->GetTree()->Branch("ParticleLength", &mTrackLength, "ParticleLength/D"); - RootOutput::getInstance()->GetTree()->Branch("RunMajor", &mRunMajor, "RunMajor/I"); - RootOutput::getInstance()->GetTree()->Branch("RunMinor", &mRunMinor, "RunMinor/I"); - RootOutput::getInstance()->GetTree()->Branch("GATCONF", &mGATCONF, "GATCONF/s"); - RootOutput::getInstance()->GetTree()->Branch("T_CATS1_CAV_Cal", &mCATS1Calibrated, "T_CATS1_CAV_Cal/s"); - /* RootOutput::getInstance()->GetTree()->Branch("ADC_CHIO_V15",&vADC_CHIO_V15,"ADC_CHIO_V15/s"); - RootOutput::getInstance()->GetTree()->Branch("ADC_VOIE_29",&vADC_VOIE_29,"ADC_VOIE_29/s"); - RootOutput::getInstance()->GetTree()->Branch("CHIO",&vCHIO,"CHIO/s"); - RootOutput::getInstance()->GetTree()->Branch("CONFDEC",&vCONFDEC,"CONFDEC/s"); - RootOutput::getInstance()->GetTree()->Branch("CONFDEC_AGAVA",&vCONFDEC_AGAVA,"CONFDEC_AGAVA/s"); - RootOutput::getInstance()->GetTree()->Branch("DATATRIG",&vDATATRIG,"DATATRIG/s"); - RootOutput::getInstance()->GetTree()->Branch("DATATRIG_CHIO",&vDATATRIG_CHIO,"DATATRIG_CHIO/s"); - RootOutput::getInstance()->GetTree()->Branch("E1D6",&vE1D6,"E1D6/s"); - RootOutput::getInstance()->GetTree()->Branch("E2D6",&vE2D6,"E2D6/s"); - RootOutput::getInstance()->GetTree()->Branch("ED4",&vED4,"ED4/s"); - RootOutput::getInstance()->GetTree()->Branch("EXL_HF",&vEXL_HF,"EXL_HF/s"); - RootOutput::getInstance()->GetTree()->Branch("GALD4X",&vGALD4X,"GALD4X/s"); - RootOutput::getInstance()->GetTree()->Branch("GALD4Y",&vGALD4Y,"GALD4Y/s"); - RootOutput::getInstance()->GetTree()->Branch("QCaviar",&vQCaviar,"QCaviar/s"); - RootOutput::getInstance()->GetTree()->Branch("QPlast",&vQPlast,"QPlast/s"); - RootOutput::getInstance()->GetTree()->Branch("TCAVHF",&vTCAVHF,"TCAVHF/s"); - RootOutput::getInstance()->GetTree()->Branch("TE1D6CAV",&vTE1D6CAV,"TE1D6CAV/s"); - RootOutput::getInstance()->GetTree()->Branch("TE1D6GAL",&vTE1D6GAL,"TE1D6GAL/s"); - RootOutput::getInstance()->GetTree()->Branch("TE1D6HF",&vTE1D6HF,"TE1D6HF/s"); - RootOutput::getInstance()->GetTree()->Branch("TED4HF",&vTED4HF,"TED4HF/s"); - RootOutput::getInstance()->GetTree()->Branch("TGALD4HF",&vTGALD4HF,"TGALD4HF/s"); - RootOutput::getInstance()->GetTree()->Branch("T_CATS1_2",&vT_CATS1_2,"T_CATS1_2/s"); - RootOutput::getInstance()->GetTree()->Branch("T_CATS1_CAV",&vT_CATS1_CAV,"T_CATS1_CAV/s"); - RootOutput::getInstance()->GetTree()->Branch("T_MUVI_CATS1",&vT_MUVI_CATS1,"T_MUVI_CATS1/s"); - RootOutput::getInstance()->GetTree()->Branch("T_PL_CATS1",&vT_PL_CATS1,"T_PL_CATS1/s"); - RootOutput::getInstance()->GetTree()->Branch("T_PL_CATS2",&vT_PL_CATS2,"T_PL_CATS2/s"); - RootOutput::getInstance()->GetTree()->Branch("T_PL_CHIO",&vT_PL_CHIO,"T_PL_CHIO/s"); - RootOutput::getInstance()->GetTree()->Branch("T_PLchCATS1",&vT_PLchCATS1,"T_PLchCATS1/s"); - */ + RootOutput::getInstance()->GetTree()->Branch("X_M2",&X_M2,"X_M2/D"); + RootOutput::getInstance()->GetTree()->Branch("Y_M2",&Y_M2,"Y_M2/D"); + RootOutput::getInstance()->GetTree()->Branch("Ex",&Ex,"Ex/D"); + RootOutput::getInstance()->GetTree()->Branch("ThetaLab",&ThetaLab,"ThetaLab/D"); + RootOutput::getInstance()->GetTree()->Branch("ThetaCM",&ThetaCM,"ThetaCM/D"); + /* RootOutput::getInstance()->GetTree()->Branch("OriginalThetaLab",&OriginalThetaLab,"OriginalThetaLab/D"); */ + RootOutput::getInstance()->GetTree()->Branch("ELab",&ELab,"ELab/D"); + RootOutput::getInstance()->GetTree()->Branch("TimeCorr",&TimeCorr,"TimeCorr/D"); + RootOutput::getInstance()->GetTree()->Branch("BeamLength",&BeamLength,"BeamLength/D"); + RootOutput::getInstance()->GetTree()->Branch("ParticleLength",&ParticleLength,"ParticleLength/D"); + RootOutput::getInstance()->GetTree()->Branch("BeamEnergy",&BeamEnergy,"BeamEnergy/D"); + + + RootOutput::getInstance()->GetTree()->Branch("GATCONF",&vGATCONF,"GATCONF/s"); + RootOutput::getInstance()->GetTree()->Branch("RunMajor",&run_major,"RunMajor/I"); + RootOutput::getInstance()->GetTree()->Branch("RunMinor",&run_minor,"RunMinor/I"); + +/* RootOutput::getInstance()->GetTree()->Branch("ADC_CHIO_V15",&vADC_CHIO_V15,"ADC_CHIO_V15/s"); + RootOutput::getInstance()->GetTree()->Branch("ADC_VOIE_29",&vADC_VOIE_29,"ADC_VOIE_29/s"); + RootOutput::getInstance()->GetTree()->Branch("CHIO",&vCHIO,"CHIO/s"); + RootOutput::getInstance()->GetTree()->Branch("CONFDEC",&vCONFDEC,"CONFDEC/s"); + RootOutput::getInstance()->GetTree()->Branch("CONFDEC_AGAVA",&vCONFDEC_AGAVA,"CONFDEC_AGAVA/s"); + RootOutput::getInstance()->GetTree()->Branch("DATATRIG",&vDATATRIG,"DATATRIG/s"); + RootOutput::getInstance()->GetTree()->Branch("DATATRIG_CHIO",&vDATATRIG_CHIO,"DATATRIG_CHIO/s"); + RootOutput::getInstance()->GetTree()->Branch("E1D6",&vE1D6,"E1D6/s"); + RootOutput::getInstance()->GetTree()->Branch("E2D6",&vE2D6,"E2D6/s"); + RootOutput::getInstance()->GetTree()->Branch("ED4",&vED4,"ED4/s"); + RootOutput::getInstance()->GetTree()->Branch("EXL_HF",&vEXL_HF,"EXL_HF/s"); + RootOutput::getInstance()->GetTree()->Branch("GALD4X",&vGALD4X,"GALD4X/s"); + RootOutput::getInstance()->GetTree()->Branch("GALD4Y",&vGALD4Y,"GALD4Y/s"); + RootOutput::getInstance()->GetTree()->Branch("QCaviar",&vQCaviar,"QCaviar/s"); + RootOutput::getInstance()->GetTree()->Branch("QPlast",&vQPlast,"QPlast/s"); + RootOutput::getInstance()->GetTree()->Branch("TCAVHF",&vTCAVHF,"TCAVHF/s"); + RootOutput::getInstance()->GetTree()->Branch("TE1D6CAV",&vTE1D6CAV,"TE1D6CAV/s"); + RootOutput::getInstance()->GetTree()->Branch("TE1D6GAL",&vTE1D6GAL,"TE1D6GAL/s"); + RootOutput::getInstance()->GetTree()->Branch("TE1D6HF",&vTE1D6HF,"TE1D6HF/s"); + RootOutput::getInstance()->GetTree()->Branch("TED4HF",&vTED4HF,"TED4HF/s"); + RootOutput::getInstance()->GetTree()->Branch("TGALD4HF",&vTGALD4HF,"TGALD4HF/s"); + RootOutput::getInstance()->GetTree()->Branch("T_CATS1_2",&vT_CATS1_2,"T_CATS1_2/s"); + RootOutput::getInstance()->GetTree()->Branch("T_CATS1_CAV",&vT_CATS1_CAV,"T_CATS1_CAV/s"); + RootOutput::getInstance()->GetTree()->Branch("T_MUVI_CATS1",&vT_MUVI_CATS1,"T_MUVI_CATS1/s"); + RootOutput::getInstance()->GetTree()->Branch("T_PL_CATS1",&vT_PL_CATS1,"T_PL_CATS1/s"); + RootOutput::getInstance()->GetTree()->Branch("T_PL_CATS2",&vT_PL_CATS2,"T_PL_CATS2/s"); + RootOutput::getInstance()->GetTree()->Branch("T_PL_CHIO",&vT_PL_CHIO,"T_PL_CHIO/s"); + RootOutput::getInstance()->GetTree()->Branch("T_PLchCATS1",&vT_PLchCATS1,"T_PLchCATS1/s"); +*/ } //////////////////////////////////////////////////////////////////////////////// void Analysis::InitInputBranch(){ - /* RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true ); */ - /* RootInput:: getInstance()->GetChain()->SetBranchStatus("fIC_*",true ); */ - /* RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true ); */ + /* RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true ); */ + /* RootInput:: getInstance()->GetChain()->SetBranchStatus("fIC_*",true ); */ + /* RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true ); */ - RootInput:: getInstance()->GetChain()->SetBranchAddress("GATCONF",&mGATCONF); - /* RootInput:: getInstance()->GetChain()->SetBranchAddress("ADC_CHIO_V15",&vADC_CHIO_V15); - RootInput:: getInstance()->GetChain()->SetBranchAddress("ADC_VOIE_29",&vADC_VOIE_29); - RootInput:: getInstance()->GetChain()->SetBranchAddress("CHIO",&vCHIO); - RootInput:: getInstance()->GetChain()->SetBranchAddress("CONFDEC",&vCONFDEC); - RootInput:: getInstance()->GetChain()->SetBranchAddress("CONFDEC_AGAVA",&vCONFDEC_AGAVA); - RootInput:: getInstance()->GetChain()->SetBranchAddress("DATATRIG",&vDATATRIG); - RootInput:: getInstance()->GetChain()->SetBranchAddress("DATATRIG_CHIO",&vDATATRIG_CHIO); - RootInput:: getInstance()->GetChain()->SetBranchAddress("E1D6",&vE1D6); - RootInput:: getInstance()->GetChain()->SetBranchAddress("E2D6",&vE2D6); - RootInput:: getInstance()->GetChain()->SetBranchAddress("ED4",&vED4); - RootInput:: getInstance()->GetChain()->SetBranchAddress("EXL_HF",&vEXL_HF); - RootInput:: getInstance()->GetChain()->SetBranchAddress("GALD4X",&vGALD4X); - RootInput:: getInstance()->GetChain()->SetBranchAddress("GALD4Y",&vGALD4Y); - RootInput:: getInstance()->GetChain()->SetBranchAddress("QCaviar",&vQCaviar); - RootInput:: getInstance()->GetChain()->SetBranchAddress("QPlast",&vQPlast); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TCAVHF",&vTCAVHF); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6CAV",&vTE1D6CAV); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6GAL",&vTE1D6GAL); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6HF",&vTE1D6HF); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TED4HF",&vTED4HF); - RootInput:: getInstance()->GetChain()->SetBranchAddress("TGALD4HF",&vTGALD4HF); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_CATS1_2",&vT_CATS1_2); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_CATS1_CAV",&vT_CATS1_CAV); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_MUVI_CATS1",&vT_MUVI_CATS1); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CATS1",&vT_PL_CATS1); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CATS2",&vT_PL_CATS2); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CHIO",&vT_PL_CHIO); - RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PLchCATS1",&vT_PLchCATS1); - */ + RootInput:: getInstance()->GetChain()->SetBranchAddress("GATCONF",&vGATCONF); + /* RootInput:: getInstance()->GetChain()->SetBranchAddress("ADC_CHIO_V15",&vADC_CHIO_V15); + RootInput:: getInstance()->GetChain()->SetBranchAddress("ADC_VOIE_29",&vADC_VOIE_29); + RootInput:: getInstance()->GetChain()->SetBranchAddress("CHIO",&vCHIO); + RootInput:: getInstance()->GetChain()->SetBranchAddress("CONFDEC",&vCONFDEC); + RootInput:: getInstance()->GetChain()->SetBranchAddress("CONFDEC_AGAVA",&vCONFDEC_AGAVA); + RootInput:: getInstance()->GetChain()->SetBranchAddress("DATATRIG",&vDATATRIG); + RootInput:: getInstance()->GetChain()->SetBranchAddress("DATATRIG_CHIO",&vDATATRIG_CHIO); + RootInput:: getInstance()->GetChain()->SetBranchAddress("E1D6",&vE1D6); + RootInput:: getInstance()->GetChain()->SetBranchAddress("E2D6",&vE2D6); + RootInput:: getInstance()->GetChain()->SetBranchAddress("ED4",&vED4); + RootInput:: getInstance()->GetChain()->SetBranchAddress("EXL_HF",&vEXL_HF); + RootInput:: getInstance()->GetChain()->SetBranchAddress("GALD4X",&vGALD4X); + RootInput:: getInstance()->GetChain()->SetBranchAddress("GALD4Y",&vGALD4Y); + RootInput:: getInstance()->GetChain()->SetBranchAddress("QCaviar",&vQCaviar); + RootInput:: getInstance()->GetChain()->SetBranchAddress("QPlast",&vQPlast); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TCAVHF",&vTCAVHF); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6CAV",&vTE1D6CAV); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6GAL",&vTE1D6GAL); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TE1D6HF",&vTE1D6HF); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TED4HF",&vTED4HF); + RootInput:: getInstance()->GetChain()->SetBranchAddress("TGALD4HF",&vTGALD4HF); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_CATS1_2",&vT_CATS1_2); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_CATS1_CAV",&vT_CATS1_CAV); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_MUVI_CATS1",&vT_MUVI_CATS1); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CATS1",&vT_PL_CATS1); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CATS2",&vT_PL_CATS2); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PL_CHIO",&vT_PL_CHIO); + RootInput:: getInstance()->GetChain()->SetBranchAddress("T_PLchCATS1",&vT_PLchCATS1); +*/ } //////////////////////////////////////////////////////////////////////////////// void Analysis::ReInitValue(){ - ResetMVariables(); - // mEx = -1000 ; - // ELab = -1000; - // ThetaLab = -1000; - // ThetaCM = -1000; - // OriginalThetaLab = -1000; - // OriginalELab = -1000; - // TimeCorr=-1000; - // BeamLength=-1000; - // ParticleLength=-1000; - // run_minor=-1000; - // run_major=-1000; - // BeamEnergy=-1000; - // vT_CATS1_CAV_Cal = -1000; -} - -void Analysis::ResetMVariables() -{ - int initVal {-1000}; - //////////// - mEx = initVal; - mELab = initVal; - mThetaLab = initVal; - mThetaCM = initVal; - // mEx.clear(); - // mELab.clear(); - // mThetaLab.clear(); - // mThetaCM.clear(); - mEBeam = initVal; - mThetaBeam = initVal; - //////////////////////// - // mNormalThetaTarget = initVal; - // mNormalThetaM2 = initVal; - //////////////////////// - mMust2Telescopes.clear(); - mMust2SiE.clear(); - mMust2CsIE.clear(); - mMust2SiT.clear(); - mMust2PointsX.clear(); - mMust2PointsY.clear(); - mMust2PointsZ.clear(); - // mMust2Time = initVal; - // mMust2SiE = initVal; - // mMust2CsIE = initVal; - //////////////////////// - // mBeamLength = initVal; - // mTrackLength = initVal; - mTimeCorr = initVal; - mRunMinor = initVal; - mRunMajor = initVal; - mCATS1Calibrated = initVal; - mGATCONF = initVal; + Ex = -1000 ; + ELab = -1000; + ThetaLab = -1000; + ThetaCM = -1000; + OriginalThetaLab = -1000; + OriginalELab = -1000; + TimeCorr=-1000; + BeamLength=-1000; + ParticleLength=-1000; + run_minor=-1000; + run_major=-1000; + BeamEnergy=-1000; } -double Analysis::ComputeXYZVectorAngle(const XYZVector& v1, - const XYZVector& v2) -{ - //reproduce the same calculus as TVector3 - double ptot2 {v1.Mag2() * v2.Mag2()}; - if(ptot2 <= 0) - return 0.; - else - { - double arg {v1.Dot(v2) / TMath::Sqrt(ptot2)}; - if(arg > 1.) - arg = 1.; - if(arg < -1.) - arg = -1.; - return TMath::ACos(arg); - } -} - -double Analysis::ComputeGamma(double vInSIUnits) -{ - double beta {vInSIUnits / TMath::C()}; - double gamma {1. / TMath::Sqrt(1. - beta * beta)}; - return gamma; -} - -double Analysis::ComputeELossInCATS(double initEBeam, double thetaBeam) -{ - //1. Mylar - double E {fBeamMylar.Slow(initEBeam, 1.2 * micrometer, thetaBeam)}; - //2. Isobutane - E = fBeamIsobutane.Slow(E, 1. / 3 * cm, thetaBeam); - //3. Mylar again - E = fBeamMylar.Slow(E, 0.9 * micrometer, thetaBeam); - //4. Again iC4H10 - E = fBeamIsobutane.Slow(E, 1. / 3 * cm, thetaBeam); - //5. 3rd Mylar - E = fBeamMylar.Slow(E, 0.9 * micrometer, thetaBeam); - //6. 3rd isobutane... - E = fBeamIsobutane.Slow(E, 1. / 3 * cm, thetaBeam); - //7. Finally, last mylar - E = fBeamMylar.Slow(E, 1.2 * micrometer, thetaBeam); - return E; -} - -double Analysis::ComputeTimeCorrectionInCATS(double EBeam, double MBeam, - const XYZPoint& p0, const XYZPoint& p1) -{ - //Velocity - double gamma {1. + EBeam / MBeam}; - double beta {TMath::Sqrt(1 - 1. / (gamma * gamma))}; - double v {beta * TMath::C() * 1.E-6};//m/s to mm/ns - //Distance - auto dist {(p1 - p0).R()}; - return dist / v; -} //////////////////////////////////////////////////////////////////////////////// // Construct Method to be pass to the DetectorFactory // //////////////////////////////////////////////////////////////////////////////// NPL::VAnalysis* Analysis::Construct(){ - return (NPL::VAnalysis*) new Analysis(); + return (NPL::VAnalysis*) new Analysis(); } //////////////////////////////////////////////////////////////////////////////// // Registering the construct method to the factory // //////////////////////////////////////////////////////////////////////////////// extern "C"{ - class proxy{ - public: - proxy(){ - NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct); - } - }; +class proxy{ + public: + proxy(){ + NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct); + } +}; - proxy p; +proxy p; } diff --git a/Projects/e748/Analysis.h b/Projects/e748/Analysis.h index 6a344867e..6bac47cdc 100644 --- a/Projects/e748/Analysis.h +++ b/Projects/e748/Analysis.h @@ -29,22 +29,12 @@ #include "NPEnergyLoss.h" #include "NPReaction.h" #include "TRandom3.h" -#include <Math/Point3D.h> - -#include <Math/Vector3D.h> -#include <RtypesCore.h> -#include <TAttMarker.h> -#include <unordered_map> -#include <vector> class Analysis: public NPL::VAnalysis{ -public: + public: Analysis(); ~Analysis(); - //for points - using XYZPoint = ROOT::Math::XYZPoint; - using XYZVector = ROOT::Math::XYZVector; -public: + public: void Init(); void TreatEvent(); void End(); @@ -52,98 +42,81 @@ public: void InitInputBranch(); void ReInitValue(); static NPL::VAnalysis* Construct(); -private: - void ResetMVariables(); - void TreatBeam(); - double ComputeXYZVectorAngle(const XYZVector& v1, - const XYZVector& v2); - double ComputeGamma(double vInSIUnits); - double ComputeELossInCATS(double initEBeam, double beamAngle); - double ComputeTimeCorrectionInCATS(double EBeam, double MBeam, - const XYZPoint& p0, const XYZPoint& p1); -private: - //Naming convention: - //-- m members are going to be written to .root file - //-- f members just used in the class - ////////////////////////////////////// - // Kinematic variables for each track - double mEx; - double mELab; - double mThetaLab; - double mThetaCM; - //std::vector<double> mNormalThetaM2; - // Kinematics and variables for beam - double mEBeam; - double mThetaBeam; - //double mNormalThetaTarget; - double mTimeCorr; - // MUST2 hits; - // WARNING: Not all info is contained in TMUST2Physics (//!) - std::vector<short> mMust2Telescopes; - std::vector<double> mMust2SiE; - std::vector<double> mMust2CsIE; - std::vector<double> mMust2SiT; - //points are decomposed by coords. bc ROOT doesnt - // know how to read and RVec of XYZPoints and I dont want to play - //with dictionaries... - std::vector<double> mMust2PointsX; - std::vector<double> mMust2PointsY; - std::vector<double> mMust2PointsZ; - //Lengths and TOF - // double mBeamLength; - // double mTrackLength; - int mRunMinor; - int mRunMajor; - short mCATS1Calibrated; - short mGATCONF; - - /////////////////////////////////////// - NPL::Reaction* fReaction; - NPL::EnergyLoss fHe3CD2; - NPL::EnergyLoss fHe3Al; - NPL::EnergyLoss fHe3Si; - NPL::EnergyLoss fBeamCD2; - NPL::EnergyLoss fBeamMylar; - NPL::EnergyLoss fBeamIsobutane; - double fTargetThickness; - double kBeamMass {12.026922 * 931.494 - 4 * 0.511};//12Be - - TMust2Physics* fM2; - TCATSPhysics* fCATS; - TModularLeafPhysics* fModularLeaf; - TInitialConditions* fInitial; - // //other variables - // Short_t vADC_CHIO_V15; - // Short_t vADC_VOIE_29; - // Short_t vCHIO; - // Short_t vCONFDEC; - // Short_t vCONFDEC_AGAVA; - // Short_t vDATATRIG; - // Short_t vDATATRIG_CHIO; - // Short_t vE1D6; - // Short_t vE2D6; - // Short_t vED4; - // Short_t vEXL_HF; - // Short_t vGALD4X; - // Short_t vGALD4Y; - // Short_t vGATCONF; - // Short_t vQCaviar; - // Short_t vQPlast; - // Short_t vTCAVHF; - // Short_t vTE1D6CAV; - // Short_t vTE1D6GAL; - // Short_t vTE1D6HF; - // Short_t vTED4HF; - // Short_t vTGALD4HF; - // Short_t vT_CATS1_2; - // Short_t vT_CATS1_CAV; - // Short_t vT_CATS1_CAV_Cal; - // Short_t vT_MUVI_CATS1; - // Short_t vT_PL_CATS1; - // Short_t vT_PL_CATS2; - // Short_t vT_PL_CHIO; - // Short_t vT_PLchCATS1; + private: + double Ex; + double ELab; + double ThetaLab; + double ThetaCM; + NPL::Reaction* myReaction; + + // 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 Energy ; + double E_M2 ; + double Si_X_M2; + double Si_Y_M2; + double ZTarget; + double TimeCorr; + double BeamLength; + double ParticleLength; + double TargetThickness; + double OriginalThetaLab; + double OriginalELab; + double BeamEnergy; + int run_major; + int run_minor; + NPL::EnergyLoss He3CD2 ; + NPL::EnergyLoss He3Al ; + NPL::EnergyLoss He3Si ; + NPL::EnergyLoss BeamCD2 ; + NPL::EnergyLoss BeamMylar ; + NPL::EnergyLoss BeamIsobutane ; + + + + TMust2Physics* M2; + TCATSPhysics* CATS; + TModularLeafPhysics* ModularLeaf; + TInitialConditions* Initial; + //other variables + Short_t vADC_CHIO_V15; + Short_t vADC_VOIE_29; + Short_t vCHIO; + Short_t vCONFDEC; + Short_t vCONFDEC_AGAVA; + Short_t vDATATRIG; + Short_t vDATATRIG_CHIO; + Short_t vE1D6; + Short_t vE2D6; + Short_t vED4; + Short_t vEXL_HF; + Short_t vGALD4X; + Short_t vGALD4Y; + Short_t vGATCONF; + Short_t vQCaviar; + Short_t vQPlast; + Short_t vTCAVHF; + Short_t vTE1D6CAV; + Short_t vTE1D6GAL; + Short_t vTE1D6HF; + Short_t vTED4HF; + Short_t vTGALD4HF; + Short_t vT_CATS1_2; + Short_t vT_CATS1_CAV; + Short_t vT_MUVI_CATS1; + Short_t vT_PL_CATS1; + Short_t vT_PL_CATS2; + Short_t vT_PL_CHIO; + Short_t vT_PLchCATS1; }; diff --git a/Projects/e748/BeamID.cxx b/Projects/e748/BeamID.cxx index 94d17ad03..18f699638 100644 --- a/Projects/e748/BeamID.cxx +++ b/Projects/e748/BeamID.cxx @@ -1,38 +1,34 @@ -#include <TCanvas.h> void BeamID(){ - gStyle->SetOptStat("nmeruoi"); // Load the Main Tree - TFile* file = new TFile("./Data/Analysis/e748_Physics_12Be.root"); + TFile* file = new TFile("../../Outputs/Analysis/e748_Physics_12Be.root"); TTree* tree = (TTree*) file->FindObjectAny("PhysicsTree"); - //tree->Print(); - TFile* fileR = new TFile("./Data/Analysis/e748_12Be.root"); + TFile* fileR = new TFile("../../Outputs/Analysis/e748_12Be.root"); TTree* treeR = (TTree*) fileR->FindObjectAny("ResultTree"); tree->AddFriend(treeR); - //treeR->Print(); // Load the IC chain TChain* IC = new TChain("Numexo2"); - IC->Add("./Data/Merged/run_0315.root"); - IC->Add("./Data/Merged/run_0316.root"); - IC->Add("./Data/Merged/run_0317.root"); - IC->Add("./Data/Merged/run_0318.root"); - IC->Add("./Data/Merged/run_0320.root"); - IC->Add("./Data/Merged/run_0321.root"); - IC->Add("./Data/Merged/run_0323.root"); - IC->Add("./Data/Merged/run_0325.root"); - IC->Add("./Data/Merged/run_0326.root"); - IC->Add("./Data/Merged/run_0327.root"); - IC->Add("./Data/Merged/run_0328.root"); - IC->Add("./Data/Merged/run_0329.root"); - IC->Add("./Data/Merged/run_0330.root"); - IC->Add("./Data/Merged/run_0331.root"); - IC->Add("./Data/Merged/run_0339.root"); - IC->Add("./Data/Merged/run_0341.root"); - IC->Add("./Data/Merged/run_0342.root"); - IC->Add("./Data/Merged/run_0346.root"); - IC->Add("./Data/Merged/run_0347.root"); - IC->Add("./Data/Merged/run_0348.root"); + IC->Add("/data/Transfert/e748/Merged/run_0315.root"); + IC->Add("/data/Transfert/e748/Merged/run_0316.root"); + IC->Add("/data/Transfert/e748/Merged/run_0317.root"); + IC->Add("/data/Transfert/e748/Merged/run_0318.root"); + IC->Add("/data/Transfert/e748/Merged/run_0320.root"); + IC->Add("/data/Transfert/e748/Merged/run_0321.root"); + IC->Add("/data/Transfert/e748/Merged/run_0323.root"); + IC->Add("/data/Transfert/e748/Merged/run_0325.root"); + IC->Add("/data/Transfert/e748/Merged/run_0326.root"); + IC->Add("/data/Transfert/e748/Merged/run_0327.root"); + IC->Add("/data/Transfert/e748/Merged/run_0328.root"); + IC->Add("/data/Transfert/e748/Merged/run_0329.root"); + IC->Add("/data/Transfert/e748/Merged/run_0330.root"); + IC->Add("/data/Transfert/e748/Merged/run_0331.root"); + IC->Add("/data/Transfert/e748/Merged/run_0339.root"); + IC->Add("/data/Transfert/e748/Merged/run_0341.root"); + IC->Add("/data/Transfert/e748/Merged/run_0342.root"); + IC->Add("/data/Transfert/e748/Merged/run_0346.root"); + IC->Add("/data/Transfert/e748/Merged/run_0347.root"); + IC->Add("/data/Transfert/e748/Merged/run_0348.root"); // Friend the two trees tree->AddFriend(IC); @@ -44,8 +40,5 @@ void BeamID(){ c->cd(2); tree->Draw("QPlast:T_CATS1_CAV>>hIC2(400,0,400,4000,0,16000)","TelescopeNumber@.size()==0","colz"); - auto* c1 {new TCanvas("c1")}; - tree->Draw("T_CATS1_CAV"); - } diff --git a/Projects/e748/CMakeLists.txt b/Projects/e748/CMakeLists.txt index 58f19ada7..22c74affd 100644 --- a/Projects/e748/CMakeLists.txt +++ b/Projects/e748/CMakeLists.txt @@ -1,7 +1,5 @@ cmake_minimum_required (VERSION 2.8) # Setting the policy to match Cmake version cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) -## write compile_commands.json to clangd -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # include the default NPAnalysis cmake file include("../../NPLib/ressources/CMake/NPAnalysis.cmake") diff --git a/Projects/e748/ID.cxx b/Projects/e748/ID.cxx index 912d764ab..e0702d26f 100644 --- a/Projects/e748/ID.cxx +++ b/Projects/e748/ID.cxx @@ -1,35 +1,35 @@ void ID(){ // Load the Main Tree - TFile* file = new TFile("./Data/Analysis/e748_Physics_12Be.root"); + TFile* file = new TFile("../../Outputs/Analysis/e748_Physics_12Be.root"); TTree* tree = (TTree*) file->FindObjectAny("PhysicsTree"); - TFile* fileR = new TFile("./Data/Analysis/e748_12Be.root"); + TFile* fileR = new TFile("../../Outputs/Analysis/e748_12Be.root"); TTree* treeR = (TTree*) fileR->FindObjectAny("ResultTree"); tree->AddFriend(treeR); // Load the IC chain TChain* IC = new TChain("Numexo2"); - IC->Add("./Data/Merged/run_0315.root"); - IC->Add("./Data/Merged/run_0316.root"); - IC->Add("./Data/Merged/run_0317.root"); - IC->Add("./Data/Merged/run_0318.root"); - IC->Add("./Data/Merged/run_0320.root"); - IC->Add("./Data/Merged/run_0321.root"); - IC->Add("./Data/Merged/run_0323.root"); - IC->Add("./Data/Merged/run_0325.root"); - IC->Add("./Data/Merged/run_0326.root"); - IC->Add("./Data/Merged/run_0327.root"); - IC->Add("./Data/Merged/run_0328.root"); - IC->Add("./Data/Merged/run_0329.root"); - IC->Add("./Data/Merged/run_0330.root"); - IC->Add("./Data/Merged/run_0331.root"); - IC->Add("./Data/Merged/run_0339.root"); - IC->Add("./Data/Merged/run_0341.root"); - IC->Add("./Data/Merged/run_0342.root"); - IC->Add("./Data/Merged/run_0346.root"); - IC->Add("./Data/Merged/run_0347.root"); - IC->Add("./Data/Merged/run_0348.root"); + IC->Add("/data/Transfert/e748/Merged/run_0315.root"); + IC->Add("/data/Transfert/e748/Merged/run_0316.root"); + IC->Add("/data/Transfert/e748/Merged/run_0317.root"); + IC->Add("/data/Transfert/e748/Merged/run_0318.root"); + IC->Add("/data/Transfert/e748/Merged/run_0320.root"); + IC->Add("/data/Transfert/e748/Merged/run_0321.root"); + IC->Add("/data/Transfert/e748/Merged/run_0323.root"); + IC->Add("/data/Transfert/e748/Merged/run_0325.root"); + IC->Add("/data/Transfert/e748/Merged/run_0326.root"); + IC->Add("/data/Transfert/e748/Merged/run_0327.root"); + IC->Add("/data/Transfert/e748/Merged/run_0328.root"); + IC->Add("/data/Transfert/e748/Merged/run_0329.root"); + IC->Add("/data/Transfert/e748/Merged/run_0330.root"); + IC->Add("/data/Transfert/e748/Merged/run_0331.root"); + IC->Add("/data/Transfert/e748/Merged/run_0339.root"); + IC->Add("/data/Transfert/e748/Merged/run_0341.root"); + IC->Add("/data/Transfert/e748/Merged/run_0342.root"); + IC->Add("/data/Transfert/e748/Merged/run_0346.root"); + IC->Add("/data/Transfert/e748/Merged/run_0347.root"); + IC->Add("/data/Transfert/e748/Merged/run_0348.root"); /* // Check that the number of entry is the same if( tree->GetEntries() != IC->GetEntries() ){ @@ -67,7 +67,7 @@ void ID(){ TFile* cutTOF = new TFile("TOF.root"); TCutG* cutt = (TCutG*) cutTOF->FindObjectAny("TOF"); - tree->Draw("Si_T + TimeCorr + ((TelescopeNumber==1)*-2.521+(TelescopeNumber==2)*0.148+(TelescopeNumber==3)*-1.922+(TelescopeNumber==4)*-7.176):Si_E>>hTOFc(1000,0,30,1000,460,580)","","colz"); + tree->Draw("Si_T+TimeCorr+((TelescopeNumber==1)*-2.521+(TelescopeNumber==2)*0.148+(TelescopeNumber==3)*-1.922+(TelescopeNumber==4)*-7.176):Si_E>>hTOFc(1000,0,30,1000,460,580)","","colz"); cutt->Draw("same"); /*new TCanvas(); diff --git a/Projects/e748/MT.cxx b/Projects/e748/MT.cxx index 474712803..825ac0c31 100644 --- a/Projects/e748/MT.cxx +++ b/Projects/e748/MT.cxx @@ -1,32 +1,32 @@ void MT(){ - +using namespace ROOT::Experimental; // TDataFrame's namespace //ROOT::EnableImplicitMT(); // Load the Main Tree - TChain chain("ResultTree"); - chain.Add("./Data/Analysis/e748_12Be.root"); + TChain chain("PhysicsTree"); + chain.Add("../../Outputs/Analysis/e748_12Be.root"); // Load the IC chain TChain IC("Numexo2"); - IC.Add("./Data/Merged/run_0315.root"); - IC.Add("./Data/Merged/run_0316.root"); - IC.Add("./Data/Merged/run_0317.root"); - IC.Add("./Data/Merged/run_0318.root"); - IC.Add("./Data/Merged/run_0320.root"); - IC.Add("./Data/Merged/run_0321.root"); - IC.Add("./Data/Merged/run_0323.root"); - IC.Add("./Data/Merged/run_0325.root"); - IC.Add("./Data/Merged/run_0326.root"); - IC.Add("./Data/Merged/run_0327.root"); - IC.Add("./Data/Merged/run_0328.root"); - IC.Add("./Data/Merged/run_0329.root"); - IC.Add("./Data/Merged/run_0330.root"); - IC.Add("./Data/Merged/run_0331.root"); - IC.Add("./Data/Merged/run_0339.root"); - IC.Add("./Data/Merged/run_0341.root"); - IC.Add("./Data/Merged/run_0342.root"); - IC.Add("./Data/Merged/run_0346.root"); - IC.Add("./Data/Merged/run_0347.root"); - IC.Add("./Data/Merged/run_0348.root"); + IC.Add("/data/Transfert/e748/Merged/run_0315.root"); + IC.Add("/data/Transfert/e748/Merged/run_0316.root"); + IC.Add("/data/Transfert/e748/Merged/run_0317.root"); + IC.Add("/data/Transfert/e748/Merged/run_0318.root"); + IC.Add("/data/Transfert/e748/Merged/run_0320.root"); + IC.Add("/data/Transfert/e748/Merged/run_0321.root"); + IC.Add("/data/Transfert/e748/Merged/run_0323.root"); + IC.Add("/data/Transfert/e748/Merged/run_0325.root"); + IC.Add("/data/Transfert/e748/Merged/run_0326.root"); + IC.Add("/data/Transfert/e748/Merged/run_0327.root"); + IC.Add("/data/Transfert/e748/Merged/run_0328.root"); + IC.Add("/data/Transfert/e748/Merged/run_0329.root"); + IC.Add("/data/Transfert/e748/Merged/run_0330.root"); + IC.Add("/data/Transfert/e748/Merged/run_0331.root"); + IC.Add("/data/Transfert/e748/Merged/run_0339.root"); + IC.Add("/data/Transfert/e748/Merged/run_0341.root"); + IC.Add("/data/Transfert/e748/Merged/run_0342.root"); + IC.Add("/data/Transfert/e748/Merged/run_0346.root"); + IC.Add("/data/Transfert/e748/Merged/run_0347.root"); + IC.Add("/data/Transfert/e748/Merged/run_0348.root"); /* // Check that the number of entry is the same if( tree->GetEntries() != IC->GetEntries() ){ @@ -47,7 +47,7 @@ void MT(){ } chain.SetEntryList(elist); - ROOT::RDataFrame DF(chain); + TDataFrame DF(chain); // TOF per telescope diff --git a/Projects/e748/Postanalysis/AnalyzeBeam.cpp b/Projects/e748/Postanalysis/AnalyzeBeam.cpp deleted file mode 100644 index a6d39929d..000000000 --- a/Projects/e748/Postanalysis/AnalyzeBeam.cpp +++ /dev/null @@ -1,44 +0,0 @@ -#include <ROOT/RDataFrame.hxx> -#include <TCanvas.h> -#include <TChain.h> -#include <TFile.h> -#include <TH2D.h> -#include <TH1D.h> -#include <TString.h> -#include <TTree.h> -#include <TROOT.h> -#include <TStyle.h> - -#include "TMust2Physics.h" -#include "Utils.cpp" - -#include <set> - -void AnalyzeBeam() -{ - ROOT::EnableImplicitMT(); - //gStyle->SetOptStat("nmeruoi"); - - //ROOT::RDataFrame df("BaseCutTree", "./RootFiles/BaseCutTree_12Be.root"); - auto df {ReadAll12BeData()}; - - auto gated {df.Filter( - [](const TMust2Physics& must2) - { - return (must2.TelescopeNumber.size() == 0); - }, - {"MUST2"})}; - auto hCATSchio {gated.Histo2D({"hCATSchio", "Raw TOF vs IC", 700, 0., 300., 900, 0, 900}, "T_CATS1_CAV", "IC_E")}; - auto hCATSplast {gated.Histo2D({"hCATSplast", "Raw TOF vs QPlast", 700, 0., 300., 4000, 0, 16000}, "T_CATS1_CAV", "QPlast")}; - auto hCHIOplast {gated.Histo2D({"hCHIOplast", "CHIO vs QPlast", 900, 0, 900, 4000, 0, 16000}, "IC_E", "QPlast")}; - - //plotting - auto* c1 {new TCanvas("c1", "Beam ID")}; - c1->DivideSquare(4); - c1->cd(1); - hCATSchio->DrawClone("colz"); - c1->cd(2); - hCATSplast->DrawClone("colz"); - c1->cd(3); - hCHIOplast->DrawClone("colz"); -} diff --git a/Projects/e748/Postanalysis/AnalyzeCATS.cpp b/Projects/e748/Postanalysis/AnalyzeCATS.cpp deleted file mode 100644 index 16660ad1c..000000000 --- a/Projects/e748/Postanalysis/AnalyzeCATS.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "TROOT.h" -#include "TFile.h" -#include "TTree.h" -#include "TCanvas.h" -#include "TString.h" -#include "TCATSPhysics.h" -#include "TMust2Physics.h" -#include "TModularLeafPhysics.h" - -#include "ROOT/RDataFrame.hxx" - -void AnalyzeCATS() -{ - ROOT::EnableImplicitMT(); - - auto* inFile {new TFile("/home/miguel/nptool/Projects/e748/output/analysis/Test_12Be.root")}; - //inFile->ls(); - auto* tree {inFile->Get<TTree>("PhysicsTree")}; - //tree->Print(); - - ROOT::RDataFrame df(*tree); - auto cond {df.Filter("CATS.PositionOnTargetX != -1000 && CATS.PositionOnTargetY != -1000")}; - auto hPos {cond.Define("x", "CATS.PositionOnTargetX").Define("y", "CATS.PositionOnTargetY") - .Histo2D({"hPos", "Position on CATS;X;Y", 100, -70., 70., 100, -70., 70.}, "x", "y")}; - hPos->DrawClone("colz"); - - auto hCATS1Cal {cond.Histo1D("T_CATS1_CAV_Cal")}; - hCATS1Cal->DrawClone(); - - auto hCATSBeamEnergy {cond.Filter("T_CATS1_CAV > 0") - .Histo2D({"hCATSBeamEnergy", "CATS against BeamEnergy", 100, 0., 300., 200, 0., 500.}, "T_CATS1_CAV", "BeamEnergy")}; - hCATSBeamEnergy->DrawClone("colz"); - -} diff --git a/Projects/e748/Postanalysis/ApplyCuts.cpp b/Projects/e748/Postanalysis/ApplyCuts.cpp deleted file mode 100644 index d0716e879..000000000 --- a/Projects/e748/Postanalysis/ApplyCuts.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include "TROOT.h" -#include "TStyle.h" -#include "TFile.h" -#include "TTree.h" -#include "TChain.h" -#include "TCATSPhysics.h" -#include "TMust2Physics.h" - -#include "ROOT/RDataFrame.hxx" -#include <ROOT/RVec.hxx> - -#include "Utils.cpp" - -#include <Rtypes.h> -#include <TCanvas.h> -#include <algorithm> -#include <iostream> -#include <vector> - -void ApplyCuts() -{ - ROOT::EnableImplicitMT(); - gStyle->SetOptStat("nmeruoi"); - - ROOT::RDataFrame df("BaseCutTree", "./RootFiles/BaseCutTree_12Be.root"); - auto dsc {df.Describe()}; - //dsc.Print(); - - //--> Read TCutGs - auto* cutChio {GetGraphCutFromFile("./Cuts/chio_v0.root")}; - auto* cutPID {GetGraphCutFromFile("./../TOF.root", "TOF")}; - //--> Apply them. Must apply cuts to the vectors stored in classes - auto gated {df.Filter([&](const ROOT::RVecD& vSiE, const ROOT::RVecD& pid, - const unsigned short& chioE, const double& Qplast) - { - std::vector<bool> vCondPID {}; - for(int i = 0; i < vSiE.size(); i++) - { - vCondPID.push_back(cutPID->IsInside(vSiE.at(i), pid.at(i))); - } - //all hits in MUST2 should be inside TCutG - bool condPID {std::all_of(vCondPID.begin(), vCondPID.end(), [](const bool& e){return e;})}; - //same but for heavy ID - bool condChio {static_cast<bool>(cutChio->IsInside(Qplast, chioE))}; - return (condChio && condPID); - }, - {"Must2SiE", "TOFLight", "IC_E", "QPlast"})}; - - - //--> Write to file - gated.Snapshot("FinalTree", "./RootFiles/FinalTree_12Be.root"); -} diff --git a/Projects/e748/Postanalysis/CalibrateBeam.cpp b/Projects/e748/Postanalysis/CalibrateBeam.cpp deleted file mode 100644 index bfe9e65eb..000000000 --- a/Projects/e748/Postanalysis/CalibrateBeam.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include <ROOT/RDataFrame.hxx> -#include <TROOT.h> - -#include "TMust2Physics.h" -#include "Utils.cpp" - -void CalibrateBeam() -{ - ROOT::EnableImplicitMT(); - //we can use all the data, because its measured between Caviar and CATS - auto df {ReadAll12BeData()}; - - //plot original values without telescope hits - auto hOri {df.Filter([](const TMust2Physics& must2){return must2.TelescopeNumber.size() == 0;}, {"MUST2"}) - .Histo1D({"hOri", "Raw TOF", 1000, 100., 350.}, "T_CATS1_CAV")}; - - hOri->DrawClone(); -} diff --git a/Projects/e748/Postanalysis/GetCuts.cpp b/Projects/e748/Postanalysis/GetCuts.cpp deleted file mode 100644 index e330c4e8f..000000000 --- a/Projects/e748/Postanalysis/GetCuts.cpp +++ /dev/null @@ -1,117 +0,0 @@ -#include "TROOT.h" -#include "TStyle.h" -#include "TFile.h" -#include "TTree.h" -#include "TChain.h" -#include "TCATSPhysics.h" -#include "TMust2Physics.h" -#include "Math/Point3D.h" - -#include "ROOT/RDataFrame.hxx" -#include <ROOT/RVec.hxx> - -#include "Utils.cpp" - -#include <Rtypes.h> -#include <TCanvas.h> -#include <algorithm> -#include <iostream> -#include <vector> - -void GetCuts() -{ - ROOT::EnableImplicitMT(); - ///////////////////////////////////////////////////// - ///READ DATA - gStyle->SetOptStat("nmeruoi"); - - auto* inFile {new TFile("/home/miguel/nptool/Projects/e748/output/analysis/Physics_12Be.root")}; - //inFile->ls(); - auto* tree {inFile->Get<TTree>("PhysicsTree")}; - //tree->Print(); - - //load also chio chain - auto* chioChain {new TChain("Numexo2")};//runs for 12Be - std::set<int> runs {315, 316, 317, 318, 320, 321, 323, 325, 326, 327, 328, 329, 330, 331, 339, 341, 342, 346, 347, 348}; - for(const auto& run : runs) - chioChain->Add(TString::Format("/home/miguel/nptool/Projects/e748/Data/Merged/run_%04d.root", run)); - tree->AddFriend(chioChain); - - ////// DATAFRAME - ROOT::RDataFrame df(*tree); - //Apply base cut - auto baseCut = [](const TCATSPhysics& cats, - const std::vector<short>& vtel, const std::vector<double>& vCsIE, - unsigned short chioE, double QPlast, double T_CATS1_CAV) - { - //0--> Only one hit per event! - bool condSize {vtel.size() == 1}; - //1--> Position on target should be inside its dimensions - bool condPosition {cats.PositionOnTargetY > -10 && cats.PositionOnTargetY < 10. - && cats.PositionOnTargetX > -20. && cats.PositionOnTargetX < 20.}; - //2--> Telescope number lower than 5 - bool condTelescopeN {std::all_of(vtel.begin(), vtel.end(), - [](const auto& t){return t < 5;})}; - //3--> CsI energy == 0!! - bool condCsIEnergy {std::all_of(vCsIE.begin(), vCsIE.end(), - [](const auto& e){return e < 0;})}; - //4--> Recoil measured in IC and plastic - bool condRecoil {chioE > 0 && QPlast > 0}; - //5--> TOF for beam, raw cut - bool condBeam {T_CATS1_CAV > 160. && T_CATS1_CAV < 235.}; - return (condSize && condPosition && condTelescopeN && condCsIEnergy && condRecoil && condBeam); - }; - - auto gated {df.Filter(baseCut, - {"CATS", - "Must2Telescopes", "Must2CsIE", - "IC_E", "QPlast", "T_CATS1_CAV"})}; - - //Build ID for light recoil, based on TOF between CATS and MUST2 - gated = gated.Define("TOFLight", - [](const std::vector<short>& vTel, const std::vector<double>& vSiT, - const double& timeCorr) - { - ROOT::RVecD v {};//serialize use of RVec even though we are working with a size=1 vector - for(int i = 0; i < vTel.size(); i++) - { - auto val1 {vSiT.at(i) + timeCorr}; - auto tn {vTel.at(i)}; - double opt {}; - if(tn == 1) - opt = -2.521; - else if(tn == 2) - opt = 0.148; - else if(tn == 3) - opt = -1.922; - else if(tn == 4) - opt = -7.176; - v.push_back(val1 + opt); - } - return v; - }, - {"Must2Telescopes", "Must2SiT", "TimeCorr"}); - - // //HISTOGRAMS - auto hCHIO { gated.Histo2D({"hCHIO", "Heavy ID;QPlast;IC_E", 4000, 0., 16000., 900, 0., 900.}, "QPlast", "IC_E")}; - auto hPID {gated.Histo2D({"hPID", "PID;E_{Si} [MeV];TOF_{Heavy}[au]", 1000, 0., 30., 1000, 460., 580.}, "Must2SiE", "TOFLight")}; - - //--> Read TCutGs - auto* cutChio {GetGraphCutFromFile("./Cuts/chio_v0.root")}; - auto* cutPID {GetGraphCutFromFile("./../TOF.root", "TOF")}; - - //plotting - auto* cID {new TCanvas("cID", "ID canvas", 1)}; - cID->DivideSquare(2); - cID->cd(1); - hCHIO->DrawClone("colz"); - cutChio->SetLineColor(kRed); cutChio->SetLineWidth(2); - cutChio->Draw("same"); - cID->cd(2); - hPID->DrawClone("colz"); - cutPID->SetLineColor(kRed); cutPID->SetLineWidth(2); - cutPID->Draw("same"); - - //save to disk gated TTree - gated.Snapshot("BaseCutTree", "./RootFiles/BaseCutTree_12Be.root"); -} diff --git a/Projects/e748/Postanalysis/GetSpectrum.cpp b/Projects/e748/Postanalysis/GetSpectrum.cpp deleted file mode 100644 index bff5942f2..000000000 --- a/Projects/e748/Postanalysis/GetSpectrum.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "TROOT.h" -#include "TStyle.h" -#include "TFile.h" -#include "TTree.h" -#include "TChain.h" -#include "TCATSPhysics.h" -#include "TMust2Physics.h" -#include "NPReaction.h" - -#include "ROOT/RDataFrame.hxx" -#include <ROOT/RVec.hxx> - -#include "Utils.cpp" - -#include <Rtypes.h> -#include <TCanvas.h> -#include <algorithm> -#include <iostream> -#include <vector> - -void GetSpectrum() -{ - ROOT::EnableImplicitMT(); - gStyle->SetOptStat("nmeruoi"); - - ROOT::RDataFrame df("FinalTree", "./RootFiles/FinalTree_12Be.root"); - auto dsc {df.Describe()}; - dsc.Print(); - - //--> Read TCutGs - auto* cutChio {GetGraphCutFromFile("./Cuts/chio_v0.root")}; - auto* cutPID {GetGraphCutFromFile("./../TOF.root", "TOF")}; - - //--> Get histograms - // kinematic lines - auto hKin {df.Histo2D({"hKin", "Kinematic lines;#theta_{Lab} [degree];E_{Vertex} [MeV]", 500, 0., 60., 500, 0., 30.}, "ThetaLab", "ELab")}; - auto hBeam {df.Histo1D({"hBem", "Beam raw TOF", 500, 100., 300.}, "T_CATS1_CAV")}; - // excitation energy - auto hEex {df.Histo1D("Ex")}; - // beam energy - auto hBeamE {df.Histo1D("BeamEnergy")}; - - // Reaction - NPL::Reaction reaction("12Be(d,3He)11Li@355"); - auto* g {reaction.GetKinematicLine3()}; - - auto* cRes {new TCanvas("cRes", "Results canvas", 1)}; - cRes->DivideSquare(2); - cRes->cd(1); - hKin->DrawClone("colz"); - g->SetLineColor(kRed); g->SetLineWidth(2); - g->Draw("l same"); - cRes->cd(2); - hEex->DrawClone(); - - auto* cBeam {new TCanvas("cBeam", "Beam canvas", 1)}; - cBeam->DivideSquare(2); - cBeam->cd(1); - hBeam->DrawClone(); - cBeam->cd(2); - hBeamE->DrawClone(); -} diff --git a/Projects/e748/Postanalysis/ImprovePID.cpp b/Projects/e748/Postanalysis/ImprovePID.cpp deleted file mode 100644 index c27f22b61..000000000 --- a/Projects/e748/Postanalysis/ImprovePID.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include <Math/Vector3D.h> -#include <Math/Point3D.h> -#include <ROOT/RDataFrame.hxx> -#include <ROOT/RVec.hxx> -#include <TCanvas.h> -#include <TMath.h> -#include <iostream> - -#include "TCATSPhysics.h" -#include "TMust2Data.h" -#include "TMust2Physics.h" - -using XYZVector = ROOT::Math::XYZVector; -using XYZPoint = ROOT::Math::XYZPoint; - -double LandTtoGamma(double L, double T) -{ - //MUST be in SI units - double v {L / T}; - double beta {v / TMath::C()}; - std::cout<<"Beta = "<<beta<<'\n'; - double gamma {1. / TMath::Sqrt(1. - beta * beta)}; - return gamma; -} - -double ConvertTOFToMass(double Tbeam, - double xM2, double yM2, double zM2, double tM2, - double tCorr, - TCATSPhysics& cats) -{ - double timeWindow {600.};// ns - double lengthFactor {180.};//mm - //Length - XYZPoint vertex {cats.PositionOnTargetX, cats.PositionOnTargetY, 0.}; - //get MUST2 point - XYZPoint must2Point {xM2, yM2, zM2 + lengthFactor}; - //Time (including correction) - double tof {tM2 + tCorr}; - std::cout<<"tCorr = "<<tCorr<<'\n'; - auto LAfterReaction {(must2Point - vertex).R()};//should be in mm! - //let's ignore by now distance cats (or whatever provides STOP signal) to vertex - auto L {(LAfterReaction) * 1.E-3};//mm to m - auto T {TMath::Abs(tof - timeWindow) * 1.E-9}; //ns to s - std::cout<<"L = "<<L<<" T = "<<T<<'\n'; - auto gamma {LandTtoGamma(L, T)}; - std::cout<<"Gamma = "<<gamma<<'\n'; - return Tbeam / (gamma - 1); -} - -void ImprovePID() -{ - ROOT::RDataFrame d("GatedTree", "./RootFiles/GatedTree_12Be.root"); - auto description {d.Describe()}; - description.Print();std::cout<<'\n'; - - auto df = d.Redefine("TOF", "TOF"); - auto hPID {df.Define("x", "MUST2.Si_E") - .Histo2D({"hPID", "PID;E_{Si} [MeV];TOF [au]", 1000, 0., 30., 1000, 460., 580.}, "x", "TOF")}; - df = df.Define("ReconstructedMass", ConvertTOFToMass, {"BeamEnergy", - "X_M2", "Y_M2", "Z_M2", "T_M2", - "TimeCorr", - "CATS"}); - - auto hMass {df.Histo1D( "ReconstructedMass")}; - - auto hTelN {df.Define("TelescopeNumber", [](const TMust2Physics& must2) - { - return must2.TelescopeNumber; - }, - {"MUST2"}) - .Histo1D("TelescopeNumber")}; - - //plotting - auto* c1 {new TCanvas("c1")}; - c1->DivideSquare(2); - c1->cd(1); - hPID->DrawClone("col"); - c1->cd(2); - hMass->DrawClone(); - - auto* c2 {new TCanvas("c2")}; - c2->DivideSquare(2); - c2->cd(1); - hTelN->DrawClone(); -} diff --git a/Projects/e748/Postanalysis/PlotTheoreticalKinematics.cpp b/Projects/e748/Postanalysis/PlotTheoreticalKinematics.cpp deleted file mode 100644 index d2761e5c0..000000000 --- a/Projects/e748/Postanalysis/PlotTheoreticalKinematics.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include "NPReaction.h" -#include <Rtypes.h> -#include <TCanvas.h> -#include <TString.h> - -void PlotTheoreticalKinematics() -{ - double beam10Be {28. * 10.013534}; - double beam12Be {30. * 12.026922}; - //simply compare reaction kinematics - NPL::Reaction r10Be(TString::Format("10Be(d,3He)9Li@%.f", beam10Be).Data()); - NPL::Reaction r12Be (TString::Format("12Be(d,3He)11Li@%.f", beam12Be).Data()); - - //get graphs - auto* g9Li {r10Be.GetKinematicLine3()}; - auto* g11Li {r12Be.GetKinematicLine3()}; - //also Elab vs thetaCM - auto* gcm9Li {r10Be.GetELabVersusThetaCM()}; - auto* gcm11Li {r12Be.GetELabVersusThetaCM()}; - //theta3 vs theta4 in LAB - auto* gtheta9Li {r10Be.GetTheta3VsTheta4()}; - auto* gtheta11Li {r12Be.GetTheta3VsTheta4()}; - - //plotting - auto* c1 {new TCanvas("c1", "Kinematic lines comparaison")}; - c1->DivideSquare(4); - c1->cd(1); - g11Li->SetTitle(";#theta_{3}^{LAB} [degree];T_{3} [MeV]"); - g9Li->SetLineWidth(2); g9Li->SetLineColor(kRed); - g11Li->SetLineWidth(2); g11Li->SetLineColor(kBlue); - g11Li->Draw("apl"); - g9Li->Draw("pl same"); - - c1->cd(2); - gcm11Li->SetTitle(";#theta_{3}^{CM} [degree];T_{3} [MeV]"); - gcm9Li->SetLineWidth(2); gcm9Li->SetLineColor(kRed); - gcm11Li->SetLineWidth(2); gcm11Li->SetLineColor(kBlue); - gcm11Li->Draw("apl"); - gcm9Li->Draw("pl same"); - - c1->cd(3); - gtheta9Li->SetTitle(";#theta_{3}^{LAB} [degree];#theta_{4}^{LAB} [degree]"); - gtheta9Li->SetLineWidth(2); gtheta9Li->SetLineColor(kRed); - gtheta11Li->SetLineWidth(2); gtheta11Li->SetLineColor(kBlue); - gtheta9Li->Draw("apl"); - gtheta11Li->Draw("pl same"); -} diff --git a/Projects/e748/Postanalysis/Utils.cpp b/Projects/e748/Postanalysis/Utils.cpp deleted file mode 100644 index 78da8e96c..000000000 --- a/Projects/e748/Postanalysis/Utils.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include <ROOT/RDataFrame.hxx> -#include <TCutG.h> -#include <TFile.h> -#include <TTree.h> -#include <TChain.h> - -#include <stdexcept> -#include <string> -#include <set> - -TCutG* GetGraphCutFromFile(const std::string& fileName, const std::string& name = "CUTG") -{ - auto* file {new TFile(fileName.c_str())}; - auto* cut {file->Get<TCutG>(name.c_str())}; - if(!cut) - throw std::runtime_error("Error loading TCutG: Check file existence or name!"); - return cut; - -} - -ROOT::RDataFrame ReadAll12BeData() -{ - auto* inFile {new TFile("/home/miguel/nptool/Projects/e748/output/analysis/Physics_12Be.root")}; - //inFile->ls(); - auto* tree {inFile->Get<TTree>("PhysicsTree")}; - //tree->Print(); - - //load also chio chain - auto* chioChain {new TChain("Numexo2")};//runs for 12Be - std::set<int> runs {315, 316, 317, 318, 320, 321, 323, 325, 326, 327, 328, 329, 330, 331, 339, 341, 342, 346, 347, 348}; - for(const auto& run : runs) - chioChain->Add(TString::Format("/home/miguel/nptool/Projects/e748/Data/Merged/run_%04d.root", run)); - tree->AddFriend(chioChain); - return ROOT::RDataFrame(*tree); -} diff --git a/Projects/e748/RunToTreat/RunToTreat_12Be.txt b/Projects/e748/RunToTreat/RunToTreat_12Be.txt index ed36646e3..6f697d60b 100644 --- a/Projects/e748/RunToTreat/RunToTreat_12Be.txt +++ b/Projects/e748/RunToTreat/RunToTreat_12Be.txt @@ -1,23 +1,23 @@ TTreeName AutoTree RootFileName - ./Data/root/run_0315_*.root - ./Data/root/run_0316_*.root - ./Data/root/run_0317_*.root - ./Data/root/run_0318_*.root - ./Data/root/run_0320_*.root - ./Data/root/run_0321_*.root - ./Data/root/run_0323_*.root - ./Data/root/run_0325_*.root - ./Data/root/run_0326_*.root - ./Data/root/run_0327_*.root - ./Data/root/run_0328_*.root - ./Data/root/run_0329_*.root - ./Data/root/run_0330_*.root - ./Data/root/run_0331_*.root - ./Data/root/run_0339_*.root - ./Data/root/run_0341_*.root - ./Data/root/run_0342_*.root - ./Data/root/run_0346_*.root - ./Data/root/run_0347_*.root - ./Data/root/run_0348_*.root + /data/Transfert/e748/root/run_0315_*.root + /data/Transfert/e748/root/run_0316_*.root + /data/Transfert/e748/root/run_0317_*.root + /data/Transfert/e748/root/run_0318_*.root + /data/Transfert/e748/root/run_0320_*.root + /data/Transfert/e748/root/run_0321_*.root + /data/Transfert/e748/root/run_0323_*.root + /data/Transfert/e748/root/run_0325_*.root + /data/Transfert/e748/root/run_0326_*.root + /data/Transfert/e748/root/run_0327_*.root + /data/Transfert/e748/root/run_0328_*.root + /data/Transfert/e748/root/run_0329_*.root + /data/Transfert/e748/root/run_0330_*.root + /data/Transfert/e748/root/run_0331_*.root + /data/Transfert/e748/root/run_0339_*.root + /data/Transfert/e748/root/run_0341_*.root + /data/Transfert/e748/root/run_0342_*.root + /data/Transfert/e748/root/run_0346_*.root + /data/Transfert/e748/root/run_0347_*.root + /data/Transfert/e748/root/run_0348_*.root diff --git a/Projects/e748/Target.cxx b/Projects/e748/Target.cxx index 7f528ed2c..fe30793cb 100644 --- a/Projects/e748/Target.cxx +++ b/Projects/e748/Target.cxx @@ -1,7 +1,7 @@ void Target(){ // Load the Main Tree - TFile* file = new TFile("./Data/Analysis/e748_Mask.root"); + TFile* file = new TFile("../../Outputs/Analysis/e748_Mask.root"); TTree* tree = (TTree*) file->FindObjectAny("PhysicsTree"); diff --git a/Projects/e748/e748.detector b/Projects/e748/e748.detector index 6f28e0636..5ecaffe09 100755 --- a/Projects/e748/e748.detector +++ b/Projects/e748/e748.detector @@ -95,7 +95,7 @@ M2Telescope X1_Y128= 114.6 -1.8 -144.5 SI= 1 SILI= 0 - CSI= 1 + CSI= 1 VIS= all %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Projects/e748/energy_loss/Be12_iC4H10_0.008bar_273.15K.G4table b/Projects/e748/energy_loss/Be12_iC4H10_0.008bar_273.15K.G4table index f525633b8..8b646d293 100644 --- a/Projects/e748/energy_loss/Be12_iC4H10_0.008bar_273.15K.G4table +++ b/Projects/e748/energy_loss/Be12_iC4H10_0.008bar_273.15K.G4table @@ -1,462 +1,463 @@ Table from Geant4 generate using NPSimulation Particle: Be12 Material: NPS_iC4H10_0.008bar_273.15K 0 0 -0.001 2.54448e-06 -0.002 2.59185e-06 -0.003 2.58332e-06 -0.005 2.54053e-06 -0.007 2.50628e-06 -0.009 2.49157e-06 -0.013 2.4831e-06 -0.021 2.53861e-06 -0.029 2.63523e-06 -0.037 2.73903e-06 -0.045 2.85502e-06 -0.053 2.96708e-06 -0.061 3.07564e-06 -0.069 3.19281e-06 -0.077 3.30801e-06 -0.085 3.41672e-06 -0.093 3.52011e-06 -0.101 3.619e-06 -0.109 3.71401e-06 -0.117 3.80902e-06 -0.125 3.90486e-06 -0.133 4.00238e-06 -0.141 4.09967e-06 -0.149 4.19445e-06 -0.157 4.2885e-06 -0.165 4.38086e-06 -0.173 4.47178e-06 -0.181 4.56207e-06 -0.189 4.65045e-06 -0.197 4.73819e-06 -0.205 4.82417e-06 -0.213 4.90848e-06 -0.221 4.99236e-06 -0.229 5.07501e-06 -0.237 5.15689e-06 -0.245 5.23736e-06 -0.253 5.3165e-06 -0.261 5.395e-06 -0.269 5.47257e-06 -0.277 5.54895e-06 -0.285 5.62419e-06 -0.293 5.69832e-06 -0.301 5.77139e-06 -0.309 5.84408e-06 -0.317 5.91588e-06 -0.325 5.98671e-06 -0.333 6.05662e-06 -0.341 6.12566e-06 -0.349 6.19451e-06 -0.357 6.26254e-06 -0.365 6.32978e-06 -0.373 6.39626e-06 -0.381 6.46211e-06 -0.389 6.52753e-06 -0.397 6.59225e-06 -0.413 6.71964e-06 -0.429 6.84455e-06 -0.445 6.96774e-06 -0.461 7.08847e-06 -0.477 7.2068e-06 -0.493 7.3228e-06 -0.509 7.43658e-06 -0.525 7.54822e-06 -0.541 7.65785e-06 -0.557 7.7655e-06 -0.573 7.87151e-06 -0.589 7.97607e-06 -0.605 8.0788e-06 -0.621 8.17975e-06 -0.637 8.27896e-06 -0.653 8.37707e-06 -0.669 8.4736e-06 -0.685 8.56852e-06 -0.701 8.66185e-06 -0.717 8.75363e-06 -0.733 8.84389e-06 -0.749 8.93266e-06 -0.765 9.0202e-06 -0.797 9.19128e-06 -0.829 9.35681e-06 -0.861 9.51715e-06 -0.893 9.67278e-06 -0.925 9.82334e-06 -0.957 9.96894e-06 -0.989 1.01097e-05 -1.021 1.02459e-05 -1.053 1.03775e-05 -1.085 1.05046e-05 -1.117 1.06274e-05 -1.149 1.07463e-05 -1.181 1.08612e-05 -1.213 1.09721e-05 -1.245 1.10791e-05 -1.309 1.12821e-05 -1.373 1.1471e-05 -1.437 1.16462e-05 -1.501 1.18083e-05 -1.565 1.19583e-05 -1.629 1.20966e-05 -1.693 1.22237e-05 -1.757 1.23407e-05 -1.885 1.25454e-05 -2.013 1.27151e-05 -2.141 1.28534e-05 -2.269 1.29643e-05 -2.525 1.31163e-05 -2.781 1.31932e-05 -3.293 1.31832e-05 -4.317 1.27882e-05 -5.341 1.22176e-05 -6.365 1.16099e-05 -7.389 1.10269e-05 -8.413 1.04851e-05 -9.437 9.98176e-06 -10.461 9.5161e-06 -11.485 9.08847e-06 -12.509 8.6969e-06 -13.533 8.33761e-06 -14.557 8.00575e-06 -15.581 7.69912e-06 -16.605 7.41383e-06 -17.629 7.14532e-06 -18.653 6.89286e-06 -19.677 6.65593e-06 -20.701 6.43361e-06 -21.725 6.225e-06 -22.749 6.02917e-06 -23.773 5.84519e-06 -24.797 5.67214e-06 -25.821 5.50921e-06 -26.845 5.35565e-06 -27.869 5.21074e-06 -28.893 5.07377e-06 -29.917 4.94422e-06 -30.941 4.82165e-06 -31.965 4.70561e-06 -32.989 4.59547e-06 -34.013 4.49065e-06 -35.037 4.39057e-06 -36.061 4.29473e-06 -37.085 4.20405e-06 -38.109 4.11769e-06 -39.133 4.03521e-06 -40.157 3.95618e-06 -41.181 3.88048e-06 -42.205 3.80789e-06 -43.229 3.73822e-06 -44.253 3.67129e-06 -45.277 3.60693e-06 -46.301 3.54499e-06 -47.325 3.48533e-06 -48.349 3.42784e-06 -49.373 3.37245e-06 -50.397 3.31902e-06 -51.421 3.2674e-06 -52.445 3.21751e-06 -53.469 3.16924e-06 -54.493 3.12255e-06 -55.517 3.07734e-06 -56.541 3.03353e-06 -57.565 2.99107e-06 -58.589 2.9499e-06 -59.613 2.90995e-06 -60.637 2.87117e-06 -61.661 2.8335e-06 -62.685 2.79689e-06 -63.709 2.76131e-06 -64.733 2.72671e-06 -65.757 2.69307e-06 -66.781 2.66034e-06 -67.805 2.62847e-06 -68.829 2.59742e-06 -69.853 2.56716e-06 -70.877 2.53767e-06 -71.901 2.5089e-06 -72.925 2.48085e-06 -73.949 2.45347e-06 -74.973 2.42674e-06 -75.997 2.40065e-06 -77.021 2.37516e-06 -78.045 2.35027e-06 -79.069 2.32593e-06 -80.093 2.30215e-06 -81.117 2.27888e-06 -82.141 2.25613e-06 -84.189 2.21209e-06 -86.237 2.16989e-06 -88.285 2.12943e-06 -90.333 2.09058e-06 -92.381 2.05326e-06 -94.429 2.01735e-06 -96.477 1.9828e-06 -98.525 1.94967e-06 -100.573 1.91773e-06 -102.621 1.88678e-06 -104.669 1.8569e-06 -106.717 1.82806e-06 -108.765 1.80018e-06 -110.813 1.77321e-06 -112.861 1.74712e-06 -114.909 1.72186e-06 -116.957 1.6974e-06 -119.005 1.67368e-06 -121.053 1.65068e-06 -123.101 1.62836e-06 -125.149 1.6067e-06 -127.197 1.58566e-06 -129.245 1.56521e-06 -131.293 1.54534e-06 -133.341 1.52602e-06 -135.389 1.50722e-06 -137.437 1.48892e-06 -139.485 1.47111e-06 -141.533 1.45375e-06 -143.581 1.43685e-06 -145.629 1.42036e-06 -147.677 1.40429e-06 -149.725 1.38861e-06 -151.773 1.37332e-06 -153.821 1.35839e-06 -155.869 1.34381e-06 -157.917 1.32958e-06 -159.965 1.31567e-06 -162.013 1.30208e-06 -164.061 1.28879e-06 -166.109 1.2758e-06 -168.157 1.2631e-06 -172.253 1.23851e-06 -176.349 1.21495e-06 -180.445 1.19236e-06 -184.541 1.17068e-06 -188.637 1.14985e-06 -192.733 1.12918e-06 -196.829 1.10992e-06 -200.925 1.09137e-06 -205.021 1.07349e-06 -209.117 1.05625e-06 -213.213 1.03961e-06 -217.309 1.02355e-06 -221.405 1.00802e-06 -225.501 9.93005e-07 -229.597 9.78478e-07 -233.693 9.64414e-07 -237.789 9.50793e-07 -241.885 9.37592e-07 -245.981 9.24791e-07 -250.077 9.12372e-07 -254.173 9.00317e-07 -258.269 8.88611e-07 -262.365 8.7724e-07 -266.461 8.66189e-07 -270.557 8.55443e-07 -274.653 8.44989e-07 -278.749 8.34816e-07 -282.845 8.24913e-07 -286.941 8.15269e-07 -291.037 8.05872e-07 -295.133 7.96714e-07 -299.229 7.87786e-07 -303.325 7.79079e-07 -307.421 7.70585e-07 -311.517 7.62295e-07 -315.613 7.54202e-07 -319.709 7.46299e-07 -323.805 7.3858e-07 -327.901 7.31038e-07 -331.997 7.23667e-07 -336.093 7.1646e-07 -344.285 7.02519e-07 -352.477 6.89174e-07 -360.669 6.76387e-07 -368.861 6.64124e-07 -377.053 6.5235e-07 -385.245 6.41038e-07 -393.437 6.30159e-07 -401.629 6.1969e-07 -409.821 6.09607e-07 -418.013 5.99889e-07 -426.205 5.90516e-07 -434.397 5.81468e-07 -442.589 5.72729e-07 -450.781 5.64285e-07 -458.973 5.5612e-07 -467.165 5.4822e-07 -475.357 5.40571e-07 -483.549 5.33163e-07 -491.741 5.25983e-07 -499.933 5.1902e-07 -508.125 5.12264e-07 -516.317 5.05708e-07 -524.509 4.99342e-07 -532.701 4.93158e-07 -540.893 4.87148e-07 -549.085 4.81303e-07 -557.277 4.75617e-07 -565.469 4.70085e-07 -573.661 4.647e-07 -581.853 4.59456e-07 -590.045 4.54347e-07 -598.237 4.49368e-07 -606.429 4.44514e-07 -614.621 4.39781e-07 -622.813 4.35163e-07 -631.005 4.30657e-07 -639.197 4.26258e-07 -647.389 4.21962e-07 -655.581 4.17767e-07 -671.965 4.09662e-07 -688.349 4.01917e-07 -704.733 3.94508e-07 -721.117 3.87414e-07 -737.501 3.80615e-07 -753.885 3.74091e-07 -770.269 3.67827e-07 -786.653 3.61807e-07 -803.037 3.56016e-07 -819.421 3.50442e-07 -835.805 3.45073e-07 -852.189 3.39898e-07 -868.573 3.34905e-07 -884.957 3.30086e-07 -901.341 3.25431e-07 -917.725 3.20932e-07 -934.109 3.16581e-07 -950.493 3.12371e-07 -966.877 3.08294e-07 -983.261 3.04345e-07 -999.645 3.00519e-07 -1016.03 2.96809e-07 -1032.41 2.9321e-07 -1048.8 2.89716e-07 -1065.18 2.86323e-07 -1081.57 2.83027e-07 -1097.95 2.79825e-07 -1114.33 2.7671e-07 -1130.72 2.73681e-07 -1147.1 2.70732e-07 -1163.49 2.67862e-07 -1179.87 2.65068e-07 -1196.25 2.62347e-07 -1212.64 2.59696e-07 -1229.02 2.57111e-07 -1261.79 2.5213e-07 -1294.56 2.47388e-07 -1327.33 2.42869e-07 -1360.09 2.38555e-07 -1392.86 2.34434e-07 -1425.63 2.30493e-07 -1458.4 2.26721e-07 -1491.17 2.23105e-07 -1523.93 2.19638e-07 -1556.7 2.16311e-07 -1589.47 2.13114e-07 -1622.24 2.10039e-07 -1655.01 2.0708e-07 -1687.77 2.04231e-07 -1720.54 2.01487e-07 -1753.31 1.98841e-07 -1786.08 1.96287e-07 -1818.85 1.9382e-07 -1851.61 1.91437e-07 -1884.38 1.89134e-07 -1917.15 1.86907e-07 -1949.92 1.84752e-07 -1982.69 1.82665e-07 -2015.45 1.80642e-07 -2048.22 1.78682e-07 -2080.99 1.76782e-07 -2113.76 1.74939e-07 -2146.53 1.7315e-07 -2179.29 1.71412e-07 -2212.06 1.69723e-07 -2277.6 1.66489e-07 -2343.13 1.63428e-07 -2408.67 1.60529e-07 -2474.21 1.57779e-07 -2539.74 1.55167e-07 -2605.28 1.52683e-07 -2670.81 1.50317e-07 -2736.35 1.48061e-07 -2801.89 1.4591e-07 -2867.42 1.43854e-07 -2932.96 1.41887e-07 -2998.49 1.40005e-07 -3064.03 1.38202e-07 -3129.57 1.36473e-07 -3195.1 1.34814e-07 -3260.64 1.33221e-07 -3326.17 1.3169e-07 -3391.71 1.30218e-07 -3457.25 1.288e-07 -3522.78 1.27436e-07 -3588.32 1.2612e-07 -3653.85 1.24851e-07 -3719.39 1.23627e-07 -3850.46 1.21303e-07 -3981.53 1.19132e-07 -4112.61 1.17099e-07 -4243.68 1.15193e-07 -4374.75 1.13403e-07 -4505.82 1.11718e-07 -4636.89 1.10129e-07 -4767.97 1.08629e-07 -4899.04 1.0721e-07 -5030.11 1.05868e-07 -5161.18 1.04596e-07 -5292.25 1.03388e-07 -5423.33 1.02241e-07 -5554.4 1.0115e-07 -5685.47 1.00111e-07 -5816.54 9.91207e-08 -6078.69 9.72746e-08 -6340.83 9.55898e-08 -6602.97 9.40451e-08 -6865.12 9.26279e-08 -7127.26 9.13215e-08 -7389.41 9.01164e-08 -7651.55 8.89994e-08 -7913.69 8.79637e-08 -8175.84 8.70019e-08 -8437.98 8.61063e-08 -8700.13 8.52699e-08 -9224.41 8.37608e-08 -9748.7 8.24357e-08 -10273 8.12676e-08 -10797.3 8.02332e-08 -11321.6 7.93122e-08 -11845.9 7.84907e-08 -12370.1 7.78209e-08 -13418.7 7.6739e-08 -14467.3 7.58731e-08 -15515.9 7.51777e-08 -17613 7.4169e-08 -19710.2 7.35243e-08 -23904.5 7.29067e-08 -32293.1 7.2982e-08 -49070.3 7.46854e-08 -65847.5 7.66749e-08 -82624.7 7.85253e-08 -99401.9 8.01854e-08 -116179 8.16703e-08 -132956 8.30054e-08 -149734 8.42141e-08 -166511 8.53164e-08 -183288 8.63282e-08 -200065 8.72625e-08 -216842 8.81298e-08 -250397 8.96964e-08 -283951 9.10808e-08 -317506 9.23202e-08 -351060 9.34414e-08 -384615 9.44648e-08 -418169 9.54057e-08 -485278 9.70863e-08 -552387 9.85538e-08 -619496 9.98557e-08 -686605 1.01025e-07 -753713 1.02086e-07 -820822 1.03057e-07 -955040 1.04782e-07 +0.001 2.50969e-06 +0.002 2.54265e-06 +0.003 2.52307e-06 +0.005 2.4777e-06 +0.007 2.44108e-06 +0.009 2.42646e-06 +0.013 2.42001e-06 +0.021 2.48293e-06 +0.029 2.58914e-06 +0.037 2.70364e-06 +0.045 2.83084e-06 +0.053 2.95419e-06 +0.061 3.0737e-06 +0.069 3.2011e-06 +0.077 3.32551e-06 +0.085 3.44225e-06 +0.093 3.55236e-06 +0.101 3.65669e-06 +0.109 3.75591e-06 +0.117 3.85399e-06 +0.125 3.95193e-06 +0.133 4.05071e-06 +0.141 4.14855e-06 +0.149 4.2433e-06 +0.157 4.33684e-06 +0.165 4.42831e-06 +0.173 4.51802e-06 +0.181 4.60687e-06 +0.189 4.69361e-06 +0.197 4.77957e-06 +0.205 4.86365e-06 +0.213 4.94597e-06 +0.221 5.02779e-06 +0.229 5.10834e-06 +0.237 5.1881e-06 +0.245 5.26643e-06 +0.253 5.34342e-06 +0.261 5.41977e-06 +0.269 5.4952e-06 +0.277 5.56945e-06 +0.285 5.64258e-06 +0.293 5.71463e-06 +0.301 5.78496e-06 +0.309 5.85407e-06 +0.317 5.92328e-06 +0.325 5.99249e-06 +0.333 6.0617e-06 +0.341 6.13093e-06 +0.349 6.20084e-06 +0.357 6.27074e-06 +0.365 6.34065e-06 +0.373 6.41055e-06 +0.381 6.47506e-06 +0.389 6.53698e-06 +0.405 6.66083e-06 +0.421 6.78468e-06 +0.437 6.90927e-06 +0.453 7.0342e-06 +0.469 7.15912e-06 +0.485 7.27327e-06 +0.501 7.38381e-06 +0.517 7.49436e-06 +0.533 7.6049e-06 +0.549 7.71545e-06 +0.565 7.82599e-06 +0.581 7.93718e-06 +0.597 8.04688e-06 +0.613 8.14182e-06 +0.629 8.23677e-06 +0.645 8.33197e-06 +0.661 8.42758e-06 +0.677 8.52319e-06 +0.693 8.6188e-06 +0.709 8.71442e-06 +0.725 8.81003e-06 +0.741 8.90564e-06 +0.757 8.9936e-06 +0.789 9.15202e-06 +0.821 9.31044e-06 +0.853 9.46888e-06 +0.885 9.62805e-06 +0.917 9.78722e-06 +0.949 9.94146e-06 +0.981 1.00705e-05 +1.013 1.01995e-05 +1.045 1.03286e-05 +1.077 1.04576e-05 +1.109 1.05866e-05 +1.141 1.07158e-05 +1.173 1.08452e-05 +1.205 1.09561e-05 +1.237 1.10502e-05 +1.301 1.12387e-05 +1.365 1.14277e-05 +1.429 1.16168e-05 +1.493 1.18058e-05 +1.557 1.19303e-05 +1.621 1.2052e-05 +1.685 1.21737e-05 +1.749 1.22956e-05 +1.813 1.24176e-05 +1.941 1.26093e-05 +2.069 1.27377e-05 +2.197 1.28663e-05 +2.325 1.29952e-05 +2.453 1.30641e-05 +2.709 1.31356e-05 +3.221 1.31575e-05 +4.245 1.27905e-05 +5.269 1.22353e-05 +6.293 1.16401e-05 +7.317 1.10508e-05 +8.341 1.05208e-05 +9.365 1.00038e-05 +10.389 9.55572e-06 +11.413 9.1129e-06 +12.437 8.72064e-06 +13.461 8.37098e-06 +14.485 8.02138e-06 +15.509 7.71356e-06 +16.533 7.4416e-06 +17.557 7.16967e-06 +18.581 6.89778e-06 +19.605 6.67345e-06 +20.629 6.46447e-06 +21.653 6.25549e-06 +22.677 6.04655e-06 +23.701 5.83764e-06 +24.725 5.60152e-06 +25.749 5.45559e-06 +26.773 5.31702e-06 +27.797 5.1853e-06 +28.821 5.05996e-06 +29.845 4.9403e-06 +30.869 4.82608e-06 +31.893 4.71709e-06 +32.917 4.61299e-06 +33.941 4.51348e-06 +34.965 4.41827e-06 +35.989 4.32711e-06 +37.013 4.23965e-06 +38.037 4.15572e-06 +39.061 4.07518e-06 +40.085 3.99784e-06 +41.109 3.9235e-06 +42.133 3.852e-06 +43.157 3.78318e-06 +44.181 3.71692e-06 +45.205 3.65305e-06 +46.229 3.59147e-06 +47.253 3.53204e-06 +48.277 3.47465e-06 +49.301 3.41912e-06 +50.325 3.36536e-06 +51.349 3.31336e-06 +52.373 3.26305e-06 +53.397 3.21434e-06 +54.421 3.16715e-06 +55.445 3.12142e-06 +56.469 3.07709e-06 +57.493 3.03408e-06 +58.517 2.99236e-06 +59.541 2.95184e-06 +60.565 2.91249e-06 +61.589 2.87425e-06 +62.613 2.83707e-06 +63.637 2.80092e-06 +64.661 2.76576e-06 +65.685 2.73157e-06 +66.709 2.69829e-06 +67.733 2.66587e-06 +68.757 2.63427e-06 +69.781 2.60342e-06 +70.805 2.57334e-06 +71.829 2.544e-06 +72.853 2.51538e-06 +73.877 2.48745e-06 +74.901 2.46018e-06 +75.925 2.43356e-06 +76.949 2.40755e-06 +77.973 2.38215e-06 +78.997 2.35731e-06 +80.021 2.33304e-06 +81.045 2.3093e-06 +82.069 2.28609e-06 +83.093 2.26337e-06 +85.141 2.21938e-06 +87.189 2.17723e-06 +89.237 2.13679e-06 +91.285 2.09795e-06 +93.333 2.06063e-06 +95.381 2.02472e-06 +97.429 1.99016e-06 +99.477 1.95685e-06 +101.525 1.92473e-06 +103.573 1.89373e-06 +105.621 1.8638e-06 +107.669 1.83489e-06 +109.717 1.80694e-06 +111.765 1.77991e-06 +113.813 1.75375e-06 +115.861 1.72842e-06 +117.909 1.70388e-06 +119.957 1.68009e-06 +122.005 1.65701e-06 +124.053 1.63462e-06 +126.101 1.61287e-06 +128.149 1.59176e-06 +130.197 1.57124e-06 +132.245 1.5513e-06 +134.293 1.53191e-06 +136.341 1.51304e-06 +138.389 1.49467e-06 +140.437 1.47679e-06 +142.485 1.45937e-06 +144.533 1.44239e-06 +146.581 1.42584e-06 +148.629 1.40971e-06 +150.677 1.39397e-06 +152.725 1.37862e-06 +154.773 1.36363e-06 +156.821 1.349e-06 +158.869 1.33471e-06 +160.917 1.32074e-06 +162.965 1.3071e-06 +165.013 1.29376e-06 +167.061 1.28072e-06 +169.109 1.26797e-06 +173.205 1.24328e-06 +177.301 1.21963e-06 +181.397 1.19695e-06 +185.493 1.17518e-06 +189.589 1.15426e-06 +193.685 1.13351e-06 +197.781 1.11417e-06 +201.877 1.09555e-06 +205.973 1.07761e-06 +210.069 1.0603e-06 +214.165 1.0436e-06 +218.261 1.02747e-06 +222.357 1.01188e-06 +226.453 9.96807e-07 +230.549 9.82224e-07 +234.645 9.68106e-07 +238.741 9.54432e-07 +242.837 9.41179e-07 +246.933 9.28328e-07 +251.029 9.15861e-07 +255.125 9.03761e-07 +259.221 8.92011e-07 +263.317 8.80596e-07 +267.413 8.69502e-07 +271.509 8.58714e-07 +275.605 8.4822e-07 +279.701 8.38009e-07 +283.797 8.28067e-07 +287.893 8.18382e-07 +291.989 8.08945e-07 +296.085 7.99747e-07 +300.181 7.9078e-07 +304.277 7.82035e-07 +308.373 7.73504e-07 +312.469 7.65179e-07 +316.565 7.57051e-07 +320.661 7.49115e-07 +324.757 7.41363e-07 +328.853 7.3379e-07 +332.949 7.26387e-07 +337.045 7.19151e-07 +345.237 7.05153e-07 +353.429 6.91754e-07 +361.621 6.78915e-07 +369.813 6.66601e-07 +378.005 6.5478e-07 +386.197 6.43423e-07 +394.389 6.32501e-07 +402.581 6.21991e-07 +410.773 6.11868e-07 +418.965 6.02112e-07 +427.157 5.92702e-07 +435.349 5.8362e-07 +443.541 5.74848e-07 +451.733 5.66371e-07 +459.925 5.58173e-07 +468.117 5.50241e-07 +476.309 5.42562e-07 +484.501 5.35124e-07 +492.693 5.27915e-07 +500.885 5.20924e-07 +509.077 5.14143e-07 +517.269 5.0756e-07 +525.461 5.01169e-07 +533.653 4.94959e-07 +541.845 4.88925e-07 +550.037 4.83057e-07 +558.229 4.77349e-07 +566.421 4.71795e-07 +574.613 4.66388e-07 +582.805 4.61123e-07 +590.997 4.55994e-07 +599.189 4.50995e-07 +607.381 4.46122e-07 +615.573 4.4137e-07 +623.765 4.36734e-07 +631.957 4.32211e-07 +640.149 4.27795e-07 +648.341 4.23484e-07 +656.533 4.19273e-07 +672.917 4.11138e-07 +689.301 4.03365e-07 +705.685 3.95929e-07 +722.069 3.88809e-07 +738.453 3.81984e-07 +754.837 3.75438e-07 +771.221 3.69151e-07 +787.605 3.6311e-07 +803.989 3.573e-07 +820.373 3.51708e-07 +836.757 3.46321e-07 +853.141 3.41128e-07 +869.525 3.36119e-07 +885.909 3.31285e-07 +902.293 3.26615e-07 +918.677 3.22103e-07 +935.061 3.17739e-07 +951.445 3.13516e-07 +967.829 3.09429e-07 +984.213 3.05469e-07 +1000.6 3.01632e-07 +1016.98 2.97911e-07 +1033.37 2.94301e-07 +1049.75 2.90798e-07 +1066.13 2.87395e-07 +1082.52 2.8409e-07 +1098.9 2.80878e-07 +1115.29 2.77755e-07 +1131.67 2.74717e-07 +1148.05 2.71761e-07 +1164.44 2.68883e-07 +1180.82 2.6608e-07 +1197.21 2.6335e-07 +1213.59 2.60689e-07 +1229.97 2.58095e-07 +1262.74 2.53098e-07 +1295.51 2.48339e-07 +1328.28 2.43803e-07 +1361.05 2.39474e-07 +1393.81 2.35338e-07 +1426.58 2.31383e-07 +1459.35 2.27597e-07 +1492.12 2.23969e-07 +1524.89 2.2049e-07 +1557.65 2.17151e-07 +1590.42 2.13944e-07 +1623.19 2.1086e-07 +1655.96 2.07893e-07 +1688.73 2.05036e-07 +1721.49 2.02283e-07 +1754.26 1.99629e-07 +1787.03 1.97067e-07 +1819.8 1.94594e-07 +1852.57 1.92205e-07 +1885.33 1.89895e-07 +1918.1 1.87661e-07 +1950.87 1.85499e-07 +1983.64 1.83405e-07 +2016.41 1.81376e-07 +2049.17 1.7941e-07 +2081.94 1.77503e-07 +2114.71 1.75653e-07 +2147.48 1.73857e-07 +2180.25 1.72113e-07 +2213.01 1.7042e-07 +2278.55 1.67173e-07 +2344.09 1.64102e-07 +2409.62 1.61193e-07 +2475.16 1.58434e-07 +2540.69 1.55813e-07 +2606.23 1.5332e-07 +2671.77 1.50947e-07 +2737.3 1.48685e-07 +2802.84 1.46527e-07 +2868.37 1.44465e-07 +2933.91 1.42494e-07 +2999.45 1.40608e-07 +3064.98 1.38801e-07 +3130.52 1.37068e-07 +3196.05 1.35406e-07 +3261.59 1.3381e-07 +3327.13 1.32277e-07 +3392.66 1.30802e-07 +3458.2 1.29383e-07 +3523.73 1.28016e-07 +3589.27 1.267e-07 +3654.81 1.2543e-07 +3720.34 1.24205e-07 +3851.41 1.21881e-07 +3982.49 1.19711e-07 +4113.56 1.17681e-07 +4244.63 1.15778e-07 +4375.7 1.1399e-07 +4506.77 1.12308e-07 +4637.85 1.10724e-07 +4768.92 1.09228e-07 +4899.99 1.07815e-07 +5031.06 1.06478e-07 +5162.13 1.05211e-07 +5293.21 1.04008e-07 +5424.28 1.02867e-07 +5555.35 1.01781e-07 +5686.42 1.00748e-07 +5817.49 9.97645e-08 +6079.64 9.79311e-08 +6341.78 9.6259e-08 +6603.93 9.47292e-08 +6866.07 9.33256e-08 +7128.21 9.20345e-08 +7390.36 9.08439e-08 +7652.5 8.97435e-08 +7914.65 8.87244e-08 +8176.79 8.77787e-08 +8438.93 8.68996e-08 +8701.08 8.60811e-08 +9225.37 8.46048e-08 +9749.65 8.33141e-08 +10273.9 8.21802e-08 +10798.2 8.11798e-08 +11322.5 8.02941e-08 +11846.8 7.95075e-08 +12895.4 7.81815e-08 +13944 7.71209e-08 +14992.5 7.62674e-08 +16041.1 7.55779e-08 +18138.3 7.45687e-08 +20235.4 7.39139e-08 +24429.7 7.32649e-08 +32818.3 7.32724e-08 +49595.5 7.48734e-08 +66372.8 7.67978e-08 +83150 7.86024e-08 +99927.2 8.02273e-08 +116704 8.16853e-08 +133482 8.30003e-08 +150259 8.41936e-08 +167036 8.5283e-08 +183813 8.62838e-08 +200590 8.72086e-08 +217368 8.80675e-08 +250922 8.96203e-08 +284477 9.09938e-08 +318031 9.22231e-08 +351585 9.33346e-08 +385140 9.43482e-08 +418694 9.52794e-08 +485803 9.69414e-08 +552912 9.83922e-08 +620021 9.96789e-08 +687130 1.00834e-07 +754239 1.0188e-07 +821347 1.02836e-07 +955565 1.04528e-07 diff --git a/thisNPTool.sh b/thisNPTool.sh deleted file mode 100644 index d05c76544..000000000 --- a/thisNPTool.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -# Self locate script when sourced -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -# And now export -export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:"${SCRIPT_DIR}/NPLib/lib" -export ROOT_INCLUDE_PATH=${ROOT_INCLUDE_PATH}:"${SCRIPT_DIR}/NPLib/include" -- GitLab