8 #ifndef LAR_VERTEX_BASED_PFO_MOP_UP_ALGORITHM_H 9 #define LAR_VERTEX_BASED_PFO_MOP_UP_ALGORITHM_H 1 13 #include <unordered_map> 49 ClusterAssociation(
const pandora::Cluster *
const pVertexCluster,
const pandora::Cluster *
const pDaughterCluster,
const float boundedFraction,
50 const bool isConsistentDirection);
110 const pandora::Pfo *GetVertexPfo()
const;
117 const pandora::Pfo *GetDaughterPfo()
const;
124 float GetMeanBoundedFraction()
const;
131 float GetMaxBoundedFraction()
const;
138 float GetMinBoundedFraction()
const;
145 unsigned int GetNConsistentDirections()
const;
202 ConeParameters(
const pandora::Cluster *
const pCluster,
const pandora::CartesianVector &vertexPosition2D,
const float coneAngleCentile,
203 const float maxConeCosHalfAngle);
213 float GetBoundedFraction(
const pandora::Cluster *
const pDaughterCluster,
const float coneLengthMultiplier)
const;
221 pandora::CartesianVector GetDirectionEstimate()
const;
228 float GetSignedConeLength()
const;
237 float GetCosHalfAngleEstimate(
const float coneAngleCentile)
const;
246 pandora::StatusCode
Run();
270 HitTypeToAssociationMap &hitTypeToAssociationMap)
const;
279 void GetInputPfos(
const pandora::Vertex *
const pVertex, pandora::PfoList &vertexPfos, pandora::PfoList &nonVertexPfos)
const;
289 bool IsVertexAssociated(
const pandora::Pfo *
const pPfo,
const pandora::Vertex *
const pVertex)
const;
299 void GetPfoAssociations(
const pandora::Vertex *
const pVertex,
const pandora::PfoList &vertexPfos,
const pandora::PfoList &nonVertexPfos,
300 PfoAssociationList &pfoAssociationList)
const;
311 PfoAssociation GetPfoAssociation(
const pandora::Vertex *
const pVertex,
const pandora::Pfo *
const pVertexPfo,
const pandora::Pfo *
const pDaughterPfo)
const;
323 const pandora::Cluster *
const pDaughterCluster)
const;
341 pandora::StatusCode
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
408 return m_pDaughterPfo;
415 return m_clusterAssociationU;
422 return m_clusterAssociationV;
429 return m_clusterAssociationW;
434 #endif // #ifndef LAR_VERTEX_BASED_PFO_MOP_UP_ALGORITHM_H pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::set< pandora::HitType > HitTypeSet
void GetPfoAssociations(const pandora::Vertex *const pVertex, const pandora::PfoList &vertexPfos, const pandora::PfoList &nonVertexPfos, PfoAssociationList &pfoAssociationList) const
Get the list of associations between vertex-associated pfos and non-vertex-associated pfos...
unsigned int m_minVertexAssociatedHitTypes
The min number of vertex associated hit types for a vertex associated pfo.
float m_maxConeLengthMultiplier
Consider hits as bound if inside cone, with projected distance less than N times cone length...
ClusterAssociation GetClusterAssociation(const pandora::Vertex *const pVertex, const pandora::Cluster *const pVertexCluster, const pandora::Cluster *const pDaughterCluster) const
Get cluster association details between a vertex-associated cluster and a non-vertex associated daugh...
std::map< pandora::HitType, const pandora::Cluster * > HitTypeToClusterMap
bool IsConsistentDirection() const
Whether the vertex and daughter clusters have consistent directions.
const pandora::Cluster * m_pDaughterCluster
The address of the daughter cluster.
bool operator<(CryostatID const &a, CryostatID const &b)
Order cryostats with increasing ID.
VertexBasedPfoMopUpAlgorithm()
Default constructor.
float m_coneAngleCentile
Cluster cone angle is defined using specified centile of distribution of hit half angles...
unsigned int m_minConsistentDirections
The minimum number of consistent cluster directions to allow a pfo merge.
const pandora::Cluster * GetVertexCluster() const
Get the address of the vertex cluster.
pandora::CartesianVector m_direction
The cone direction.
void MergePfos(const PfoAssociation &pfoAssociation) const
Merge the vertex and daughter pfos (deleting daughter pfo, merging clusters, etc.) described in the s...
std::vector< PfoAssociation > PfoAssociationList
LArPointingCluster class.
bool m_isConsistentDirection
Whether the vertex and daughter clusters have consistent directions.
float m_maxVertexTransverseDistance
Vertex association check: max transverse distance cut.
float m_minVertexLongitudinalDistance
Vertex association check: min longitudinal distance cut.
float m_maxBoundedFractionCut
Cut on association info (max bounded fraction) for determining pfo merges.
bool ProcessPfoAssociations(const PfoAssociationList &pfoAssociationList) const
Process the list of pfo associations, merging the best-matching pfo.
ClusterAssociation()
Default constructor.
float GetBoundedFraction() const
Get the fraction of daughter hits bounded by the cone defined by the vertex cluster.
const pandora::Cluster * GetDaughterCluster() const
Get the address of the daughter cluster.
VertexBasedPfoMopUpAlgorithm class.
std::map< pandora::HitType, ClusterAssociation > HitTypeToAssociationMap
float m_directionApexShift
Direction determination, look for vertex inside triangle with apex shifted along the cluster length...
float m_meanBoundedFractionCut
Cut on association info (mean bounded fraction) for determining pfo merges.
pandora::StatusCode Run()
float m_coneLength
The cone length.
virtual PfoAssociation GetPfoAssociation(const pandora::Pfo *const pVertexPfo, const pandora::Pfo *const pDaughterPfo, HitTypeToAssociationMap &hitTypeToAssociationMap) const
Get pfo association details between a vertex-associated pfo and a non-vertex associated daughter cand...
PfoMopUpBaseAlgorithm class.
float m_coneCosHalfAngle
The cone cos half angle.
float m_boundedFraction
The fraction of daughter hits bounded by the cone defined by the vertex cluster.
const ClusterAssociation & GetClusterAssociationW() const
Get the cluster association in the w view.
const pandora::Pfo * m_pDaughterPfo
The address of the non-vertex-associated candidate daughter pfo.
float m_directionTanAngle
Direction determination, look for vertex inside triangle with apex shifted along the cluster length...
ClusterAssociation m_clusterAssociationV
The cluster association in the v view.
void GetInputPfos(const pandora::Vertex *const pVertex, pandora::PfoList &vertexPfos, pandora::PfoList &nonVertexPfos) const
Get the list of input pfos and divide them into vertex-associated and non-vertex-associated lists...
virtual bool IsVertexAssociated(const pandora::CartesianVector &vertex2D, const LArPointingCluster &pointingCluster) const
Whether a specified pfo is associated with a specified vertex.
unsigned int m_minConsistentDirectionsTrack
The minimum number of consistent cluster directions to allow a merge involving a track pfo...
ClusterAssociation m_clusterAssociationW
The cluster association in the w view.
pandora::CartesianVector m_apex
The cone apex.
float m_maxConeCosHalfAngle
Maximum value for cosine of cone half angle.
const pandora::Pfo * GetDaughterPfo() const
Get the address of the non-vertex-associated candidate daughter pfo.
ClusterAssociation m_clusterAssociationU
The cluster association in the u view.
Header file for the pfo mop up algorithm base class.
const ClusterAssociation & GetClusterAssociationU() const
Get the cluster association in the u view.
std::string m_trackPfoListName
The input track pfo list name.
ClusterAssociation class.
const pandora::Pfo * GetVertexPfo() const
Get the address of the vertex-associated pfo.
const ClusterAssociation & GetClusterAssociationV() const
Get the cluster association in the v view.
const pandora::Cluster * m_pVertexCluster
The address of the vertex cluster.
const pandora::Pfo * m_pVertexPfo
The address of the vertex-associated pfo.
const pandora::Cluster * m_pCluster
The parent cluster.
std::string m_showerPfoListName
The input shower pfo list name.
float m_minBoundedFractionCut
Cut on association info (min bounded fraction) for determining pfo merges.