10 if((locInclusiveFlag || locBeamMissingFlag) && (locMissingFinalPID !=
Unknown))
12 cout <<
"ERROR: CANNOT HAVE MISSING PID + MISSING BEAM OR INCLUSIVE. ABORTING." << endl;
16 if(locMissingFinalPID !=
Unknown)
18 locFinalPIDs.push_back(locMissingFinalPID);
19 return locFinalPIDs.size() - 1;
21 else if(locInclusiveFlag)
23 else if(locBeamMissingFlag)
25 else if(locSecondBeamMissingFlag)
39 cout <<
"ERROR: CANNOT SET UNKNOWN PID AS NON-MISSING FINAL PARTICLE. ABORTING." << endl;
49 cout <<
"ERROR: CANNOT SET MORE THAN ONE MISSING PARTICLE IN A STEP. ABORTING." << endl;
67 locFinalPIDs.erase(locFinalPIDs.begin() +
dReactionStepInfo->dMissingParticleIndex);
70 locFinalPIDs.erase(std::remove_if(locFinalPIDs.begin(), locFinalPIDs.end(), locComparator), locFinalPIDs.end());
72 if(!locIncludeDuplicatesFlag)
74 std::sort(locFinalPIDs.begin(), locFinalPIDs.end());
75 locFinalPIDs.erase(std::unique(locFinalPIDs.begin(), locFinalPIDs.end()), locFinalPIDs.end());
85 string locInitPIDString = locGetNameFunc(locStep->
Get_InitialPID());
90 Particle_t locSecondPID = (locTargetPID !=
Unknown) ? locTargetPID : locSecondBeamPID;
95 locStepName += locGetNameFunc(locSecondPID);
103 vector<string> locParticleNames;
106 vector<Particle_t> locFinalPIDs = locStep->
Get_FinalPIDs(
false);
107 auto locPIDTransformer = [&locGetNameFunc](
Particle_t& locPID) ->
string {
return locGetNameFunc(locPID);};
108 std::transform(locFinalPIDs.begin(), locFinalPIDs.end(), std::back_inserter(locParticleNames), locPIDTransformer);
110 if(!locIncludeMissingFlag)
111 return locParticleNames;
115 locParticleNames.push_back(
"(X)");
116 return locParticleNames;
121 locParticleNames.push_back(
string(
"(") + locGetNameFunc(locMissingPID) +
string(
")"));
123 return locParticleNames;
139 if(locFinalPIDs1.size() != locFinalPIDs2.size())
143 return std::is_permutation(locFinalPIDs1.begin(), locFinalPIDs1.end(), locFinalPIDs2.begin());
static char * ParticleName_ROOT(Particle_t p)
static constexpr int Get_ParticleIndex_Initial(void)
bool Are_ParticlesIdentical(const DReactionStep *locStep1, const DReactionStep *locStep2, bool locExceptMissingUnknownInInputFlag)
Particle_t Get_TargetPID(void) const
static char * ParticleType(Particle_t p)
int Prepare_InfoArguments(vector< Particle_t > &locFinalPIDs, Particle_t locMissingFinalPID, bool locInclusiveFlag, bool locBeamMissingFlag, bool locSecondBeamMissingFlag) const
vector< string > Get_FinalParticleNames(const DReactionStep *locStep, bool locIncludeMissingFlag, bool locTLatexFlag)
Particle_t Get_SecondBeamPID(void) const
Particle_t Get_InitialPID(void) const
void Add_FinalParticleID(Particle_t locPID, bool locIsMissingFlag=false)
shared_ptr< DReactionStepInfo > dReactionStepInfo
static constexpr int Get_ParticleIndex_Inclusive(void)
static constexpr int Get_ParticleIndex_None(void)
int Get_MissingParticleIndex(void) const
static int Is_CorrectCharge(Particle_t locPID, Charge_t locCharge)
static void Check_IsResonance(Particle_t locPID)
vector< Particle_t > Get_FinalPIDs(bool locIncludeMissingFlag=true, Charge_t locCharge=d_AllCharges, bool locIncludeDuplicatesFlag=true) const
static constexpr int Get_ParticleIndex_SecondBeam(void)
bool Get_IsInclusiveFlag(void) const
string Get_InitialParticlesName(const DReactionStep *locStep, bool locTLatexFlag)
Particle_t Get_MissingPID(void) const