diff --git a/NPSimulation/Detectors/Chio/Chio.cc b/NPSimulation/Detectors/Chio/Chio.cc index 4d6f446f893258209ff32d737562bcf3e30b8575..73afee883eb51daa3e1df7d9113af3abb45095b3 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); + MPT->AddConstProperty("DE_PAIRENERGY",30*eV, true); // MPT->AddConstProperty("DE_AMPLIFICATION",1e4); - 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); + 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); CF4->SetMaterialPropertiesTable(MPT); G4MaterialPropertiesTable* MPT2 = new G4MaterialPropertiesTable(); - MPT2->AddConstProperty("DE_YIELD",1); - MPT2->AddConstProperty("DE_AMPLIFICATION",2); - MPT2->AddConstProperty("DE_ABSLENGTH",1*pc); + MPT2->AddConstProperty("DE_YIELD",1, true); + MPT2->AddConstProperty("DE_AMPLIFICATION",2, true); + MPT2->AddConstProperty("DE_ABSLENGTH",1*pc, true); Al->SetMaterialPropertiesTable(MPT2); diff --git a/Projects/e748/Analysis.cxx b/Projects/e748/Analysis.cxx index 376c1dd901c721db230647806bffb4ec1d9645ff..af41652d5cac69edd5d037a5c8d6c019a5126591 100644 --- a/Projects/e748/Analysis.cxx +++ b/Projects/e748/Analysis.cxx @@ -19,6 +19,8 @@ * * * * *****************************************************************************/ +#include "NPSystemOfUnits.h" +#include <TUrl.h> #include<iostream> using namespace std; #include"Analysis.h" @@ -27,6 +29,8 @@ using namespace std; #include"NPOptionManager.h" #include"RootOutput.h" #include"RootInput.h" + +#include "TMath.h" //////////////////////////////////////////////////////////////////////////////// Analysis::Analysis(){ } @@ -36,185 +40,151 @@ Analysis::~Analysis(){ //////////////////////////////////////////////////////////////////////////////// void Analysis::Init(){ - 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); + //--> 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); } -//////////////////////////////////////////////////////////////////////////////// -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 ; - - 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 // - - // Beam speed from Beam Energy - - // 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 +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); - // 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)); + //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); - // 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; + // ELoss in CATS2 + double beamAfterCATS2 {ComputeELossInCATS(beamAfterCATS1, mThetaBeam)}; + //Time correction + mTimeCorr += ComputeTimeCorrectionInCATS(beamAfterCATS2, kBeamMass, pointCATS2, vertex); - // slow down beam inside the target - BeamEnergy = BeamCD2.Slow(BeamEnergyC2,TargetThickness*0.5,BeamDirection.Angle(TVector3(0,0,1))); - myReaction->SetBeamEnergy(BeamEnergy); - - } - + // Slow down beam inside the target + mEBeam = fBeamCD2.Slow(beamAfterCATS2, fTargetThickness * 0.5, mThetaBeam); - else{ - BeamDirection = TVector3(-1000,-1000,-1000); - ThetaM2Surface = -1000 ; - ThetaNormalTarget = -1000 ; - } - -/* // Part 2 : Impact Energy */ - Energy = ELab = E_M2 = 0; - Si_E_M2 = M2->Si_E[countMust2]; - CsI_E_M2= M2->CsI_E[countMust2]; - -/* // 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/ */ - -/* /1* else *1/ */ - - - - - Energy = Si_E_M2; - - E_M2 += Si_E_M2; + //--> Set kinematic calculator + fReaction->SetBeamEnergy(mEBeam); +} -/* // Evaluate energy using the thickness */ - ELab = He3Al.EvaluateInitialEnergy( Energy,0.4*micrometer , ThetaM2Surface); -/* // Target Correction */ - ELab = He3CD2.EvaluateInitialEnergy( ELab ,TargetThickness/2., ThetaNormalTarget); +//////////////////////////////////////////////////////////////////////////////// +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()}; -/* // Part 3 : Excitation Energy Calculation */ - Ex = myReaction -> ReconstructRelativistic( ELab , ThetaLab ); + 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)}; + //cut on telescope number + if(!(telescopeNumber < 9)) + continue; + //cut on vertex position + if(!(vertex.X() > -1000 && vertex.Y() > -1000)) + continue; -/* // Part 4 : Theta CM Calculation */ - ThetaCM = myReaction -> EnergyLabToThetaCM( ELab , ThetaLab)/deg; - ThetaLab=ThetaLab/deg; - - } - }//end loop MUST2 + // Beam computation (ONCE per event) + if(computeBeam) + { + TreatBeam(); + computeBeam = true; + } + XYZVector trackDirection {must2Point - vertex}; + // Angles computation + mThetaLab.push_back( 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 + double ELabIni {fHe3Al.EvaluateInitialEnergy(EAtDetector, 0.4 * micrometer, mNormalThetaM2)}; + //Assume reaction at the middle of target and correct energy + mELab.push_back( fHe3CD2.EvaluateInitialEnergy(ELabIni, fTargetThickness / 2., mNormalThetaTarget) ); + //Compute Excitation Energy + mEx.push_back( fReaction->ReconstructRelativistic(mELab.back(), mThetaLab.back()) ); + //std::cout<<" Ex = "<<mEx.back()<< "MeV"<<'\n'; + // Back to CM + mThetaCM.push_back( fReaction->EnergyLabToThetaCM(mELab.back(), mThetaLab.back()) / deg );//in degrees + mThetaLab.back() = mThetaLab.back() / 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!"); } //////////////////////////////////////////////////////////////////////////////// @@ -223,126 +193,225 @@ void Analysis::End(){ //////////////////////////////////////////////////////////////////////////////// void Analysis::InitOutputBranch() { - 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"); -*/ + 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"); + */ } //////////////////////////////////////////////////////////////////////////////// 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",&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); -*/ + 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); + */ } //////////////////////////////////////////////////////////////////////////////// void Analysis::ReInitValue(){ - 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; + 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.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; } +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 6bac47cdcb550985ba913f5ed81119a7689000a6..547c29d242051818c5b53a05afe96487ce11c3d5 100644 --- a/Projects/e748/Analysis.h +++ b/Projects/e748/Analysis.h @@ -29,12 +29,22 @@ #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(); - public: + //for points + using XYZPoint = ROOT::Math::XYZPoint; + using XYZVector = ROOT::Math::XYZVector; +public: void Init(); void TreatEvent(); void End(); @@ -42,81 +52,98 @@ class Analysis: public NPL::VAnalysis{ 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 + std::vector<double> mEx; + std::vector<double> mELab; + std::vector<double> mThetaLab; + std::vector<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; - 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; + 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; }; diff --git a/Projects/e748/BeamID.cxx b/Projects/e748/BeamID.cxx index 18f6996382344b729f4d64b3358fc4709ffcea88..94d17ad0375b7ef627dca69bc8ea1c903454da6e 100644 --- a/Projects/e748/BeamID.cxx +++ b/Projects/e748/BeamID.cxx @@ -1,34 +1,38 @@ +#include <TCanvas.h> void BeamID(){ + gStyle->SetOptStat("nmeruoi"); // Load the Main Tree - TFile* file = new TFile("../../Outputs/Analysis/e748_Physics_12Be.root"); + TFile* file = new TFile("./Data/Analysis/e748_Physics_12Be.root"); TTree* tree = (TTree*) file->FindObjectAny("PhysicsTree"); + //tree->Print(); - TFile* fileR = new TFile("../../Outputs/Analysis/e748_12Be.root"); + TFile* fileR = new TFile("./Data/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/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"); + 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"); // Friend the two trees tree->AddFriend(IC); @@ -40,5 +44,8 @@ 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 22c74affdfc45019bdda2594f8439c52d4ab97ec..58f19ada74c5884684f93f288d2ed7e9feae41c6 100644 --- a/Projects/e748/CMakeLists.txt +++ b/Projects/e748/CMakeLists.txt @@ -1,5 +1,7 @@ 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 e0702d26f2bd4af093e19a0b8943b1567faf3b95..912d764ab9950fab97f0fdebafa6cfae124cad0c 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("../../Outputs/Analysis/e748_Physics_12Be.root"); + TFile* file = new TFile("./Data/Analysis/e748_Physics_12Be.root"); TTree* tree = (TTree*) file->FindObjectAny("PhysicsTree"); - TFile* fileR = new TFile("../../Outputs/Analysis/e748_12Be.root"); + TFile* fileR = new TFile("./Data/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/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"); + 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"); /* // 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 825ac0c313b511b04c2a3b20c57e1f95492f8aa1..474712803640129da29b47b9f0b5c2214c77c0d3 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("PhysicsTree"); - chain.Add("../../Outputs/Analysis/e748_12Be.root"); + TChain chain("ResultTree"); + chain.Add("./Data/Analysis/e748_12Be.root"); // Load the IC chain TChain IC("Numexo2"); - 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"); + 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"); /* // Check that the number of entry is the same if( tree->GetEntries() != IC->GetEntries() ){ @@ -47,7 +47,7 @@ using namespace ROOT::Experimental; // TDataFrame's namespace } chain.SetEntryList(elist); - TDataFrame DF(chain); + ROOT::RDataFrame DF(chain); // TOF per telescope diff --git a/Projects/e748/RunToTreat/RunToTreat_12Be.txt b/Projects/e748/RunToTreat/RunToTreat_12Be.txt index 6f697d60b8c8d52d58771fc1aedc83388819b86f..ed36646e387ff125fc0225dad8f45f6d215d956f 100644 --- a/Projects/e748/RunToTreat/RunToTreat_12Be.txt +++ b/Projects/e748/RunToTreat/RunToTreat_12Be.txt @@ -1,23 +1,23 @@ TTreeName AutoTree RootFileName - /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 + ./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 diff --git a/Projects/e748/Target.cxx b/Projects/e748/Target.cxx index fe30793cbc942f3bda100965962898092f616c45..7f528ed2c64b3e24bdb22e7c5aa0b09ce855962c 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("../../Outputs/Analysis/e748_Mask.root"); + TFile* file = new TFile("./Data/Analysis/e748_Mask.root"); TTree* tree = (TTree*) file->FindObjectAny("PhysicsTree"); diff --git a/Projects/e748/e748.detector b/Projects/e748/e748.detector index 5ecaffe098cada6f161b3feae1ea0dfbda51425a..6f28e0636b0f8fffb8c327d5de4e057b3e7ad4d9 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 8b646d293787284f33dcb649b88cc39e82953b8e..f525633b8256e1941b363bc971bf356d24780646 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,463 +1,462 @@ Table from Geant4 generate using NPSimulation Particle: Be12 Material: NPS_iC4H10_0.008bar_273.15K 0 0 -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 +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 diff --git a/thisNPTool.sh b/thisNPTool.sh new file mode 100644 index 0000000000000000000000000000000000000000..d05c765448ad28b6908afa6cde675755d44dc5db --- /dev/null +++ b/thisNPTool.sh @@ -0,0 +1,8 @@ +#!/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"