8 #ifndef LAR_DL_CHEAT_HIERARCHY_TOOL_H 9 #define LAR_DL_CHEAT_HIERARCHY_TOOL_H 1 11 #include "Pandora/PandoraInternal.h" 28 typedef std::map<const pandora::ParticleFlowObject *, const pandora::MCParticle *>
PfoToMCParticleMap;
29 typedef std::map<const pandora::ParticleFlowObject *, std::pair<const pandora::ParticleFlowObject *, int>>
ChildToParentPfoMap;
36 pandora::StatusCode Run(
const PfoToMCParticleMap &pfoToMCParticleMap,
const ChildToParentPfoMap &childToParentPfoMap,
37 const HierarchyPfo &parentPfo,
const HierarchyPfo &childPfo,
bool &isTrueLink,
bool &trueParentOrientation,
bool &trueChildOrientation);
39 pandora::StatusCode Run(
const PfoToMCParticleMap &pfoToMCParticleMap,
const ChildToParentPfoMap &childToParentPfoMap,
40 const pandora::ParticleFlowObject *
const pNeutrinoPfo,
const HierarchyPfo &childPfo,
bool &isTrueLink,
bool &trueChildOrientation);
50 void FillHierarchyMap(
51 const pandora::Algorithm *
const pAlgorithm, PfoToMCParticleMap &pfoToMCParticleMap, ChildToParentPfoMap &childToParentPfoMap)
const;
62 pandora::StatusCode IsNeutronChild(
63 const pandora::ParticleFlowObject *
const pPfo,
const PfoToMCParticleMap &pfoToMCParticleMap,
bool &isNeutronChild)
const;
66 typedef std::map<const pandora::MCParticle *, const pandora::MCParticle *>
MCToMCMap;
68 pandora::StatusCode ReadSettings(
const pandora::TiXmlHandle xmlHandle);
81 bool IsUpstreamTrueVertex(
const PfoToMCParticleMap &pfoToMCParticleMap,
const pandora::ParticleFlowObject *
const pPfo,
82 const pandora::CartesianVector &upstreamVertex,
const pandora::CartesianVector &downstreamVertex);
92 bool GetMCParticleList(
const pandora::Algorithm *
const pAlgorithm,
const pandora::MCParticleList *&pMCParticleList)
const;
102 bool GetNeutrinoPfo(
const pandora::Algorithm *
const pAlgorithm,
const pandora::ParticleFlowObject *&pNeutrinoPfo)
const;
110 void MatchPFParticles(
const pandora::Algorithm *
const pAlgorithm, PfoToMCParticleMap &pfoToMCParticleMap)
const;
117 float GetNSpacepoints(
const pandora::ParticleFlowObject *
const pPfo)
const;
124 bool IsEMParticle(
const pandora::MCParticle *
const pMCParticle)
const;
133 const pandora::MCParticle *GetLeadEMParticle(
const pandora::MCParticle *
const pMCParticle)
const;
142 float SumEnergy(
const pandora::CaloHitList &caloHitList)
const;
150 void GetVisibleMCHierarchy(
const PfoToMCParticleMap &pfoToMCParticleMap, MCToMCMap &childToParentMCMap)
const;
160 void GetVisiblePfoHierarchy(
const pandora::ParticleFlowObject *
const pNeutrinoPfo,
const PfoToMCParticleMap &pfoToMCParticleMap,
161 const MCToMCMap &childToParentMCMap, ChildToParentPfoMap &childToParentPfoMap)
const;
170 void BuildSplitHierarchy(
const std::pair<const pandora::MCParticle *, pandora::PfoList> &splitPfo, ChildToParentPfoMap &childToParentPfoMap)
const;
180 float GetClosestDistance(
const pandora::ParticleFlowObject *
const pPfo1,
const pandora::ParticleFlowObject *
const pPfo2)
const;
191 const pandora::ParticleFlowObject *BestParentInSplitHierarchy(
192 const pandora::ParticleFlowObject *
const pChildPfo,
const pandora::PfoList &splitParticle)
const;
203 void AssignGeneration(
const pandora::ParticleFlowObject *
const pParentPfo,
const int generationToFind, ChildToParentPfoMap &childToParentPfoMap)
const;
212 #endif // #ifndef LAR_DL_CHEAT_HIERARCHY_TOOL_H std::map< const pandora::ParticleFlowObject *, std::pair< const pandora::ParticleFlowObject *, int > > ChildToParentPfoMap
pandora::StringVector m_pfoListNames
the vector of pfo list names
std::map< const pandora::MCParticle *, const pandora::MCParticle * > MCToMCMap
Header file for the HierarchyPfo class.
DLCheatHierarchyTool to calculate variables related to the initial shower region. ...
std::string m_neutrinoPfoListName
the neutrino pfo list name
Header file for the lar monte carlo particle helper helper class.
std::string m_mcParticleListName
the MCParticle list name
std::map< const pandora::ParticleFlowObject *, const pandora::MCParticle * > PfoToMCParticleMap