11 dDecayingParticles_FullConstrain[locFitFlag] = locFullConstrainDecayingParticles;
12 for(
auto locMapPair : locFullConstrainDecayingParticles)
13 dFullConstrainParticles[locFitFlag].emplace_back(locMapPair.first);
14 for(
auto locParticlePair : locNoConstrainDecayingParticles)
16 dDecayingParticles_NoConstrain[locFitFlag].emplace(locParticlePair,
nullptr);
17 dNoConstrainParticles[locFitFlag].emplace_back(locParticlePair);
19 std::sort(dFullConstrainParticles[locFitFlag].begin(), dFullConstrainParticles[locFitFlag].end());
20 std::sort(dNoConstrainParticles[locFitFlag].begin(), dNoConstrainParticles[locFitFlag].end());
24 const vector<pair<int, int>>& locOnlyConstrainTimeParticles,
const vector<pair<int, int>>& locNoConstrainParticles)
41 bool locIncludeDecayingFlag,
bool locIncludeMissingFlag,
bool locIncludeTargetFlag)
const
45 auto Check_State = [&locState](
const pair<int, int>& locIndices) ->
bool
46 {
return ((locIndices.second >= 0) != (locState ==
d_FinalState));};
47 locParticles.erase(std::remove_if(locParticles.begin(), locParticles.end(), Check_State), locParticles.end());
51 auto Check_Charge = [
this, &locCharge](
const pair<int, int>& locIndices) ->
bool
56 locParticles.erase(std::remove_if(locParticles.begin(), locParticles.end(), Check_Charge), locParticles.end());
58 if(!locIncludeDecayingFlag)
60 auto Check_Decaying = [
this](
const pair<int, int>& locIndices) ->
bool
62 locParticles.erase(std::remove_if(locParticles.begin(), locParticles.end(), Check_Decaying), locParticles.end());
64 if(!locIncludeMissingFlag)
66 auto Check_Missing = [
this](
const pair<int, int>& locIndices) ->
bool
68 locParticles.erase(std::remove_if(locParticles.begin(), locParticles.end(), Check_Missing), locParticles.end());
70 if(!locIncludeTargetFlag)
72 auto Check_Target = [
this](
const pair<int, int>& locIndices) ->
bool
74 locParticles.erase(std::remove_if(locParticles.begin(), locParticles.end(), Check_Target), locParticles.end());
83 cout << locStepIndex <<
", ";
89 cout <<
"DecayingParticles: ";
91 cout <<
"(" << locParticlePair.first <<
", " << locParticlePair.second <<
"), ";
94 cout <<
"OnlyConstrainTimeParticles: ";
96 cout <<
"(" << locParticlePair.first <<
", " << locParticlePair.second <<
"), ";
99 cout <<
"Reconstruction: FullConstrainParticles: ";
101 cout <<
"(" << locParticlePair.first <<
", " << locParticlePair.second <<
"), ";
104 cout <<
"Reconstruction: NoConstrainParticles: ";
106 cout <<
"(" << locParticlePair.first <<
", " << locParticlePair.second <<
"), ";
109 cout <<
"Fitting: FullConstrainParticles: ";
111 cout <<
"(" << locParticlePair.first <<
", " << locParticlePair.second <<
"), ";
114 cout <<
"Fitting: NoConstrainParticles: ";
116 cout <<
"(" << locParticlePair.first <<
", " << locParticlePair.second <<
"), ";
vector< pair< int, int > > Get_FullConstrainParticles(bool locFitFlag, DReactionState_t locState=d_EitherState, Charge_t locCharge=d_AllCharges, bool locIncludeDecayingFlag=true) const
map< bool, vector< pair< int, int > > > dFullConstrainParticles
bool Get_DanglingVertexFlag(void) const
void Print_ReactionStepVertexInfo(const DReactionStepVertexInfo *locStepInfo)
bool Get_FittableVertexFlag(void) const
const DReaction * dReaction
bool Get_ProductionVertexFlag(void) const
map< bool, vector< pair< int, int > > > dNoConstrainParticles
vector< pair< int, int > > dDecayingParticles
void Set_ParticleIndices(bool locFitFlag, const vector< pair< int, int >> &locFullConstrainParticles, const vector< pair< int, int >> &locDecayingParticles, const vector< pair< int, int >> &locOnlyConstrainTimeParticles, const vector< pair< int, int >> &locNoConstrainParticles)
const DReactionStepVertexInfo * Get_ParentVertexInfo(void) const
const DReaction * Get_Reaction(void) const
Particle_t Get_PID(int locParticlceIndex) const
string Get_ReactionName(void) const
void Register_DecayingParticleConstraints(bool locFitFlag, const vector< pair< int, int >> &locNoConstrainDecayingParticles, const map< pair< int, int >, const DReactionStepVertexInfo * > &locFullConstrainDecayingParticles)
vector< pair< int, int > > Filter_Particles(vector< pair< int, int >> locParticles, DReactionState_t locState, Charge_t locCharge, bool locIncludeDecayingFlag=true, bool locIncludeMissingFlag=true, bool locIncludeTargetFlag=true) const
int Get_MissingParticleIndex(void) const
static int Is_CorrectCharge(Particle_t locPID, Charge_t locCharge)
static constexpr int Get_ParticleIndex_Target(void)
vector< pair< int, int > > Get_NoConstrainParticles(bool locFitFlag, DReactionState_t locState=d_EitherState, Charge_t locCharge=d_AllCharges, bool locIncludeDecayingFlag=true, bool locIncludeMissingFlag=true, bool locIncludeTargetFlag=true) const
vector< pair< int, int > > Get_DecayingParticles(DReactionState_t locState=d_EitherState, Charge_t locCharge=d_AllCharges) const
vector< pair< int, int > > Get_OnlyConstrainTimeParticles(void) const
const DReactionStep * Get_ReactionStep(size_t locStepIndex) const
vector< size_t > Get_StepIndices(void) const
vector< pair< int, int > > dOnlyConstrainTimeParticles