1 #ifndef DSourceComboP4Handler_h
2 #define DSourceComboP4Handler_h
4 #include <unordered_map>
14 #include "TDirectoryFile.h"
52 bool Get_InvariantMassCuts(
Particle_t locPID, pair<float, float>& locMinMaxCuts_GeV)
const;
53 bool Get_MissingMassSquaredCuts(
Particle_t locPID, pair<TF1*, TF1*>& locMinMaxCuts_GeVSq)
const;
63 bool Calc_P4_Decay(
bool locIsProductionVertex,
bool locIsPrimaryProductionVertex,
const DSourceCombo* locReactionFullCombo,
const DSourceComboUse& locDecayUse,
const DSourceCombo* locDecayCombo,
DVector3 locVertex,
double locTimeOffset,
int locRFBunch,
double locRFVertexTime,
DLorentzVector& locDecayP4,
const DKinematicData* locBeamParticle,
const DSourceComboUse& locToExcludeUse,
size_t locInstanceToExclude,
bool locAccuratePhotonsFlag);
64 bool Calc_P4_HasMassiveNeutrals(
bool locIsProductionVertex,
bool locIsPrimaryProductionVertex,
const DSourceCombo* locReactionFullCombo,
const DSourceCombo* locCurrentCombo,
DVector3 locVertex,
double locTimeOffset,
int locRFBunch,
double locRFVertexTime,
const DSourceComboUse& locToExcludeUse,
size_t locInstanceToExclude,
DLorentzVector& locTotalP4,
const DKinematicData* locBeamParticle,
bool locAccuratePhotonsFlag);
68 bool Cut_InvariantMass_NoMassiveNeutrals(
const DSourceCombo* locVertexCombo,
Particle_t locDecayPID,
Particle_t locTargetPIDToSubtract,
const DVector3& locVertex,
signed char locVertexZBin,
bool locAccuratePhotonsFlag);
69 bool Cut_InvariantMass_HasMassiveNeutral_OrPhotonVertex(
const DReactionVertexInfo* locReactionVertexInfo,
const DSourceCombo* locReactionFullCombo, vector<int>& locValidRFBunches);
70 bool Cut_InvariantMass_HasMassiveNeutral(
bool locIsProductionVertex,
bool locIsPrimaryProductionVertex,
const DSourceCombo* locReactionFullCombo,
const DSourceCombo* locVertexCombo,
Particle_t locDecayPID,
Particle_t locTargetPIDToSubtract,
double locPrimaryVertexZ,
const DVector3& locVertex,
double locTimeOffset, vector<int>& locValidRFBunches,
const DKinematicData* locBeamParticle,
bool locAccuratePhotonsFlag);
77 bool Get_InvariantMassCut(
const DSourceCombo* locSourceCombo,
Particle_t locDecayPID,
bool locAccuratePhotonsFlag, pair<float, float>& locMinMaxMassCuts_GeV)
const;
78 bool Cut_MissingMassSquared(
const DReaction* locReaction,
const DReactionVertexInfo* locReactionVertexInfo,
const DSourceComboUse& locReactionFullComboUse,
const DSourceCombo* locFullCombo,
Particle_t locMissingPID,
int locStepIndex,
int locDecayStepIndex,
const DLorentzVector& locInitialStateP4,
int locRFBunch,
const DKinematicData* locBeamParticle,
DLorentzVector& locMissingP4);
79 void Fill_Histograms(
void);
82 bool dPrintCutFlag =
false;
85 void Define_DefaultCuts(
void);
86 void Get_CommandLineCuts_MM2(
void);
87 void Get_CommandLineCuts_IM(
void);
88 void Get_CommandLineCuts_MissingEnergy(
void);
89 void Create_CutFunctions(
void);
105 string dDefaultMissingMassSquaredCutFunctionString =
"[0]";
112 double dMaxMassiveNeutralBeta = 0.99999;
113 double d2PhotonInvariantMassCutError = 0.02;
138 inline void DSourceComboP4Handler::Reset(
void)
142 dInvariantMassFilledSet.clear();
143 dInvariantMassFilledSet_MassiveNeutral.clear();
144 dPhotonKinematics.clear();
145 dFinalStateP4ByCombo.clear();
146 dFinalStateP4ByCombo_HasMassiveNeutrals.clear();
149 inline bool DSourceComboP4Handler::Get_InvariantMassCuts(
Particle_t locPID, pair<float, float>& locMinMaxCuts_GeV)
const
151 auto locIterator = dInvariantMassCuts.find(locPID);
152 if(locIterator == dInvariantMassCuts.end())
154 locMinMaxCuts_GeV = locIterator->second;
158 inline bool DSourceComboP4Handler::Get_MissingMassSquaredCuts(
Particle_t locPID, pair<TF1*, TF1*>& locMinMaxCuts_GeVSq)
const
160 auto locIterator = dMissingMassSquaredCuts.find(locPID);
161 if(locIterator == dMissingMassSquaredCuts.end())
163 locMinMaxCuts_GeVSq = locIterator->second;
169 #endif // DSourceComboP4Handler_h
vector< pair< float, float > > dMissingPtVsMissingE_PostMissMassSqCut
DPhotonKinematicsByZBin dPhotonKinematics
map< Particle_t, vector< pair< float, float > > > dMissingMassPairs
map< DetectorSystem_t, vector< float > > d2GammaInvariantMasses
map< Particle_t, pair< double, double > > dInvariantMassCuts
vector< pair< float, float > > dMissingEVsBeamEnergy_PreMissMassSqCut
unordered_map< signed char, unordered_map< const DNeutralShower *, shared_ptr< const DKinematicData >>> DPhotonKinematicsByZBin
map< Particle_t, vector< float > > dInvariantMasses
map< Particle_t, pair< vector< double >, vector< double > > > dMissingMassSquaredCuts_TF1Params
TH2 * dHist_NoneMissing_MissingPtVsMissingE_PreMissMassSqCut
set< tuple< Particle_t, bool, const DSourceCombo *, const DSourceCombo *, int > > dInvariantMassFilledSet_MassiveNeutral
TH2 * dHist_NoneMissing_MissingPtVsMissingE_PostMissMassSqCut
TLorentzVector DLorentzVector
TH2 * dHist_NoneMissing_MissingEVsBeamEnergy_PreMissMassSqCut
map< tuple< bool, const DSourceCombo *, const DSourceCombo *, int, const DKinematicData *, DSourceComboUse, size_t >, DLorentzVector > dFinalStateP4ByCombo_HasMassiveNeutrals
tuple< Particle_t, signed char, const DSourceComboInfo *, bool, Particle_t > DSourceComboUse
map< Particle_t, TH1 * > dHistMap_InvariantMass
map< Particle_t, TH2 * > dHistMap_MissingMassSquaredVsBeamEnergy
DSourceComboer * dSourceComboer
map< Particle_t, pair< TF1 *, TF1 * > > dMissingMassSquaredCuts
~DSourceComboP4Handler(void)
vector< pair< float, float > > dMissingPtVsMissingE_PreMissMassSqCut
map< pair< const DSourceCombo *, signed char >, DLorentzVector > dFinalStateP4ByCombo
pair< string, string > dMissingEnergyCuts_TF1FunctionStrings
void Set_DebugLevel(int locDebugLevel)
void Set_SourceComboVertexer(const DSourceComboVertexer *locSourceComboVertexer)
pair< vector< double >, vector< double > > dMissingEnergyCuts_TF1Params
vector< pair< float, float > > dMissingEVsBeamEnergy_PostMissMassSqCut
map< Particle_t, pair< string, string > > dMissingMassSquaredCuts_TF1FunctionStrings
pair< TF1 *, TF1 * > dMissingECuts
TH2 * dHist_NoneMissing_MissingEVsBeamEnergy_PostMissMassSqCut
void Set_SourceComboTimeHandler(const DSourceComboTimeHandler *locSourceComboTimeHandler)
void Set_PhotonKinematics(const DPhotonKinematicsByZBin &locPhotonKinematics)
set< tuple< Particle_t, const DSourceCombo * > > dInvariantMassFilledSet
map< DetectorSystem_t, TH1 * > dHistMap_2GammaMass