8 #ifndef LAR_DELTA_RAY_IDENTIFICATION_ALGORITHM_H
9 #define LAR_DELTA_RAY_IDENTIFICATION_ALGORITHM_H 1
11 #include "Pandora/Algorithm.h"
13 #include <unordered_map>
30 pandora::StatusCode
Run();
32 typedef std::unordered_map<const pandora::ParticleFlowObject *, const pandora::ParticleFlowObject *>
PfoAssociationMap;
40 void GetPfos(
const std::string &inputPfoListName, pandora::PfoVector &outputPfoVector)
const;
60 bool IsAssociated(
const pandora::ParticleFlowObject *
const pDaughterPfo,
const pandora::ParticleFlowObject *
const pParentPfo,
float &displacement)
const;
70 float GetTwoDSeparation(
const pandora::ParticleFlowObject *
const pDaughterPfo,
const pandora::ParticleFlowObject *
const pParentPfo)
const;
79 void GetTwoDVertices(
const pandora::ParticleFlowObject *
const pPfo,
const pandora::HitType &hitType, pandora::CartesianPointVector &vertexVector)
const;
87 float GetClosestDistance(
const pandora::CartesianPointVector &vertexVector,
const pandora::ClusterList &clusterList)
const;
105 const pandora::ParticleFlowObject *
GetParent(
const PfoAssociationMap &pfoAssociationMap,
const pandora::ParticleFlowObject *
const pPfo)
const;
107 pandora::StatusCode
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
119 #endif // #ifndef LAR_DELTA_RAY_IDENTIFICATION_ALGORITHM_H
pandora::StatusCode Run()
float m_distanceForMatching
Maximum allowed distance of delta ray from parent cosmic ray.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
void GetPfos(const std::string &inputPfoListName, pandora::PfoVector &outputPfoVector) const
Get the vector of Pfos, given the input list name.
const pandora::ParticleFlowObject * GetParent(const PfoAssociationMap &pfoAssociationMap, const pandora::ParticleFlowObject *const pPfo) const
For a given daughter, follow the parent/daughter links to find the overall parent.
float GetTwoDSeparation(const pandora::ParticleFlowObject *const pDaughterPfo, const pandora::ParticleFlowObject *const pParentPfo) const
Calculate 2D separation between two Pfos.
std::string m_parentPfoListName
The parent pfo list name.
float m_maxDaughterLengthSquared
Maximum allowed length of daughter delta ray.
std::string m_daughterPfoListName
The daughter pfo list name.
DeltaRayIdentificationAlgorithm()
Default constructor.
void GetTwoDVertices(const pandora::ParticleFlowObject *const pPfo, const pandora::HitType &hitType, pandora::CartesianPointVector &vertexVector) const
Calculate 2D separation between two Pfos.
bool IsAssociated(const pandora::ParticleFlowObject *const pDaughterPfo, const pandora::ParticleFlowObject *const pParentPfo, float &displacement) const
Determine if a given pair of Pfos have a parent/daughter association.
void BuildParentDaughterLinks(const PfoAssociationMap &pfoAssociationMap, pandora::PfoList &outputPfoList) const
Build the parent/daughter links from the map of parent/daughter associations.
void BuildAssociationMap(const pandora::PfoVector &inputPfos, const pandora::PfoVector &outputPfos, PfoAssociationMap &pfoAssociationMap) const
Build parent/daughter associations between PFOs.
float m_minParentLengthSquared
Minimum allowed length of parent cosmic ray.
DeltaRayIdentificationAlgorithm class.
float GetClosestDistance(const pandora::CartesianPointVector &vertexVector, const pandora::ClusterList &clusterList) const
Calculate closest 2D separation between a set of vertices and a set of clusters.
std::unordered_map< const pandora::ParticleFlowObject *, const pandora::ParticleFlowObject * > PfoAssociationMap