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,
50 const float boundedFraction,
const bool isConsistentDirection);
202 ConeParameters(
const pandora::Cluster *
const pCluster,
const pandora::CartesianVector &vertexPosition2D,
203 const float coneAngleCentile,
const float maxConeCosHalfAngle);
213 float GetBoundedFraction(
const pandora::Cluster *
const pDaughterCluster,
const float coneLengthMultiplier)
const;
246 pandora::StatusCode
Run();
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,
312 const pandora::Vertex *
const pVertex,
const pandora::Pfo *
const pVertexPfo,
const pandora::Pfo *
const pDaughterPfo)
const;
324 const pandora::Cluster *
const pDaughterCluster)
const;
342 pandora::StatusCode
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
380 return m_pDaughterCluster;
387 return m_boundedFraction;
394 return m_isConsistentDirection;
409 return m_pDaughterPfo;
416 return m_clusterAssociationU;
423 return m_clusterAssociationV;
430 return m_clusterAssociationW;
435 #endif // #ifndef LAR_VERTEX_BASED_PFO_MOP_UP_ALGORITHM_H
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::set< pandora::HitType > HitTypeSet
float GetBoundedFraction(const pandora::Cluster *const pDaughterCluster, const float coneLengthMultiplier) const
Get the fraction of hits in a candidate daughter cluster bounded by the cone.
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...
PfoAssociation(const pandora::Pfo *const pVertexPfo, const pandora::Pfo *const pDaughterPfo, const ClusterAssociation &clusterAssociationU, const ClusterAssociation &clusterAssociationV, const ClusterAssociation &clusterAssociationW)
Constructor.
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...
ConeParameters(const pandora::Cluster *const pCluster, const pandora::CartesianVector &vertexPosition2D, const float coneAngleCentile, const float maxConeCosHalfAngle)
Constructor.
bool IsConsistentDirection() const
Whether the vertex and daughter clusters have consistent directions.
const pandora::Cluster * m_pDaughterCluster
The address of the daughter cluster.
unsigned int GetNConsistentDirections() const
Get the number of views for which the vertex and daughter cluster directions are consistent.
VertexBasedPfoMopUpAlgorithm()
Default constructor.
float m_coneAngleCentile
Cluster cone angle is defined using specified centile of distribution of hit half angles...
float GetCosHalfAngleEstimate(const float coneAngleCentile) const
Get the cone cos half angle estimate.
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.
float GetMaxBoundedFraction() const
Get the maximum bounded fraction from the u, v and w views.
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.
float GetSignedConeLength() const
Get the cone length (signed, by projections of hits onto initial direction estimate) ...
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.
pandora::CartesianVector GetDirectionEstimate() const
Get the cone direction estimate, with apex fixed at the 2d vertex position.
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.
float GetMinBoundedFraction() const
Get the minimum bounded fraction from the u, v and w views.
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.
std::map< pandora::HitType, const pandora::Cluster * > HitTypeToClusterMap
float GetMeanBoundedFraction() const
Get the mean bounded fraction, averaging over the u, v and w views.
bool operator<(const PfoAssociation &rhs) const
operator<
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.