1 #ifndef DReactionVertexInfo_h
2 #define DReactionVertexInfo_h
4 #include <unordered_map>
8 #include "JANA/JObject.h"
53 inline DReactionVertexInfo::DReactionVertexInfo(
const DReaction* locReaction,
const vector<DReactionStepVertexInfo*>& locStepVertexInfos) :
54 dReactions({locReaction})
58 std::transform(locStepVertexInfos.begin(), locStepVertexInfos.end(), std::back_inserter(dStepVertexInfos), locConstify);
61 for(
auto locVertexInfo : dStepVertexInfos)
63 for(
auto locStepIndex : locVertexInfo->Get_StepIndices())
64 dVertexInfoMap.emplace(locStepIndex, locVertexInfo);
75 {
return lhs->
Get_StepIndices().front() < rhs->Get_StepIndices().front();};
77 std::sort(locStepVertexInfos.begin(), locStepVertexInfos.end(), Comparator_OrderByStep);
78 return locStepVertexInfos;
87 {
return lhs->
Get_StepIndices().front() > rhs->Get_StepIndices().front();};
89 std::sort(locStepVertexInfos.begin(), locStepVertexInfos.end(), Comparator_ReverseOrderByStep);
90 return locStepVertexInfos;
97 vector<pair<int, int>> locAllFullConstrainParticles;
98 for(
auto& locStepVertexInfo : locStepVertexInfos)
100 auto locFullConstrainParticles = locStepVertexInfo->Get_FullConstrainParticles(locFitFlag, locState, locCharge, locIncludeDecayingFlag);
101 locAllFullConstrainParticles.insert(locAllFullConstrainParticles.end(), locFullConstrainParticles.begin(), locFullConstrainParticles.end());
103 return locAllFullConstrainParticles;
110 vector<pair<int, int>> locAllOnlyConstrainTimeParticles;
111 for(
auto& locStepVertexInfo : locStepVertexInfos)
113 auto locOnlyConstrainTimeParticles = locStepVertexInfo->Get_OnlyConstrainTimeParticles();
114 locAllOnlyConstrainTimeParticles.insert(locAllOnlyConstrainTimeParticles.end(), locOnlyConstrainTimeParticles.begin(), locOnlyConstrainTimeParticles.end());
116 return locAllOnlyConstrainTimeParticles;
121 #endif // DReactionVertexInfo_h
const DReaction * Get_Reaction(void) const
void Add_Reaction(const DReaction *locReaction)
vector< pair< int, int > > Get_OnlyConstrainTimeParticles(const DReactionVertexInfo *locReactionVertexInfo)
const DReactionStepVertexInfo * Get_StepVertexInfo(size_t locStepIndex) const
void Print_ReactionStepVertexInfo(const DReactionStepVertexInfo *locStepInfo)
vector< const DReaction * > dReactions
vector< const DReactionStepVertexInfo * > Get_StepVertexInfos_OrderByStep(const DReactionVertexInfo *locReactionVertexInfo)
void Print_ReactionVertexInfo(const DReactionVertexInfo *locReactionInfo)
string Get_ReactionName(void) const
vector< const DReactionStepVertexInfo * > dStepVertexInfos
vector< pair< int, int > > Get_FullConstrainParticles(const DReactionVertexInfo *locReactionVertexInfo, bool locFitFlag, DReactionState_t locState=d_EitherState, Charge_t locCharge=d_AllCharges, bool locIncludeDecayingFlag=true)
vector< const DReactionStepVertexInfo * > Get_StepVertexInfos(void) const
vector< const DReactionStepVertexInfo * > Get_StepVertexInfos_ReverseOrderByStep(const DReactionVertexInfo *locReactionVertexInfo)
unordered_map< size_t, const DReactionStepVertexInfo * > dVertexInfoMap
vector< size_t > Get_StepIndices(void) const
vector< const DReaction * > Get_Reactions(void) const