1 #ifndef _DParticleCombo_
2 #define _DParticleCombo_
16 using namespace DAnalysis;
29 void Set_ParticleComboStep(
const DParticleComboStep* locParticleComboStep,
size_t locStepIndex);
45 vector<const DKinematicData*> Get_MissingParticles(
const DReaction* locReaction)
const;
46 vector<const DKinematicData*> Get_FinalParticles(
const DReaction* locReaction,
bool locIncludeMissingFlag =
true,
bool locIncludeDecayingFlag =
true,
Charge_t locCharge =
d_AllCharges)
const;
52 vector<const DKinematicData*> Get_DecayChainParticles_Measured(
const DReaction* locReaction,
int locStepIndex)
const;
64 inline void DParticleCombo::Reset(
void)
66 dKinFitResults = NULL;
68 dParticleComboSteps.clear();
71 inline const DParticleComboStep* DParticleCombo::Get_ParticleComboStep(
size_t locStepIndex)
const
73 if(locStepIndex >= dParticleComboSteps.size())
75 return dParticleComboSteps[locStepIndex];
78 inline void DParticleCombo::Set_ParticleComboStep(
const DParticleComboStep* locParticleComboStep,
size_t locStepIndex)
80 if(locStepIndex >= Get_NumParticleComboSteps())
82 dParticleComboSteps[locStepIndex] = locParticleComboStep;
87 if(dParticleComboSteps.empty())
89 return dParticleComboSteps[0]->Get_SpacetimeVertex();
92 inline vector<const DKinematicData*> DParticleCombo::Get_FinalParticles(
const DReaction* locReaction,
bool locIncludeMissingFlag,
bool locIncludeDecayingFlag,
Charge_t locCharge)
const
94 vector<const DKinematicData*> locParticles;
97 auto locStepParticles = dParticleComboSteps[loc_i]->Get_FinalParticles(locReaction->
Get_ReactionStep(loc_i), locIncludeMissingFlag, locIncludeDecayingFlag, locCharge);
98 locParticles.insert(locParticles.end(), locStepParticles.begin(), locStepParticles.end());
103 inline vector<const DKinematicData*> DParticleCombo::Get_FinalParticles_Measured(
const DReaction* locReaction,
Charge_t locCharge)
const
105 vector<const DKinematicData*> locParticles;
108 auto locStepParticles = dParticleComboSteps[loc_i]->Get_FinalParticles_Measured(locReaction->
Get_ReactionStep(loc_i), locCharge);
109 locParticles.insert(locParticles.end(), locStepParticles.begin(), locStepParticles.end());
114 inline vector<const JObject*> DParticleCombo::Get_FinalParticle_SourceObjects(
Charge_t locCharge)
const
116 vector<const JObject*> locSourceObjects;
117 for(
size_t loc_i = 0; loc_i < Get_NumParticleComboSteps(); ++loc_i)
119 auto locStepSourceObjects = dParticleComboSteps[loc_i]->Get_FinalParticle_SourceObjects(locCharge);
120 locSourceObjects.insert(locSourceObjects.end(), locStepSourceObjects.begin(), locStepSourceObjects.end());
122 return locSourceObjects;
125 inline vector<const DKinematicData*> DParticleCombo::Get_MissingParticles(
const DReaction* locReaction)
const
127 vector<const DKinematicData*> locParticles;
130 auto locMissingParticle = dParticleComboSteps[loc_i]->Get_MissingParticle(locReaction->
Get_ReactionStep(loc_i));
131 if(locMissingParticle !=
nullptr)
132 locParticles.push_back(locMissingParticle);
137 inline vector<const DKinematicData*> DParticleCombo::Get_DecayChainParticles_Measured(
const DReaction* locReaction,
int locStepIndex)
const
139 if((locStepIndex < 0) || (locStepIndex >=
int(dParticleComboSteps.size())))
142 auto locParticleComboStep = dParticleComboSteps[locStepIndex];
146 vector<const DKinematicData*> locMeasuredParticles;
147 if(locParticleComboStep->Get_InitialParticle_Measured() != NULL)
148 locMeasuredParticles.push_back(locParticleComboStep->Get_InitialParticle_Measured());
149 for(
size_t loc_i = 0; loc_i < locReactionStep->Get_NumFinalPIDs(); ++loc_i)
151 if(
int(loc_i) == locMissingIndex)
154 auto locMeasuredParticle = locParticleComboStep->Get_FinalParticle_Measured(loc_i);
155 if(locMeasuredParticle ==
nullptr)
158 locMeasuredParticles.insert(locMeasuredParticles.end(), locStepParticles.begin(), locStepParticles.end());
161 locMeasuredParticles.push_back(locMeasuredParticle);
163 return locMeasuredParticles;
174 #endif // _DParticleCombo_
void Set_EventRFBunch(const DEventRFBunch *locEventRFBunch)
size_t Get_NumParticleComboSteps(void) const
void Print(const DParticleCombo *locCombo)
vector< const DParticleComboStep * > dParticleComboSteps
void Add_ParticleComboStep(const DParticleComboStep *locParticleComboStep)
TLorentzVector DLorentzVector
const DEventRFBunch * Get_EventRFBunch(void) const
vector< const DParticleComboStep * > Get_ParticleComboSteps(void) const
const DEventRFBunch * dEventRFBunch
const DKinFitResults * dKinFitResults
int Get_MissingParticleIndex(void) const
const DReactionStep * Get_ReactionStep(size_t locStepIndex) const
int Get_DecayStepIndex(const DReaction *locReaction, size_t locStepIndex, size_t locParticleIndex)
const DKinFitResults * Get_KinFitResults(void) const
void Set_KinFitResults(const DKinFitResults *locKinFitResults)
size_t Get_NumReactionSteps(void) const