8#ifndef LAR_VERTEX_SELECTION_BASE_ALGORITHM_H
9#define LAR_VERTEX_SELECTION_BASE_ALGORITHM_H 1
22template <
typename,
unsigned int>
23class KDTreeLinkerAlgo;
24template <
typename,
unsigned int>
110 void SetConstants(
const float minZCoordinate,
const float decayConstant);
230 typedef std::map<pandora::HitType, const std::reference_wrapper<HitKDTree2D>>
KDTreeMap;
459 return (this->GetScore() > rhs.
GetScore());
467 return m_minZCoordinate.Get();
474 return m_decayConstant.Get();
481 m_minZCoordinate = minZCoordinate;
482 m_decayConstant = decayConstant;
489 return m_minLayerDirection;
496 return m_maxLayerDirection;
503 return m_minLayerPosition;
510 return m_maxLayerPosition;
524 return m_clusterList;
531 return m_twoDSlidingFitResult;
Header file for the algorithm class.
Header file for the lar support vector machine class.
Header file for the lar two dimensional sliding fit result class.
Header file for the vertex class.
Class that implements the KDTree partition of 2D space and a closest point search algorithm.
Data stored in each KDTree node. The dim1/dim2 fields are usually the duplication of some PFRecHit va...
MvaFeatureTool class template.
TwoDSlidingFitResult class.
float GetMinZCoordinate() const
Get the min z coordinate.
void SetConstants(const float minZCoordinate, const float decayConstant)
Set the beam constants.
float GetDecayConstant() const
Get the decay constant.
pandora::InputFloat m_decayConstant
The decay constant.
pandora::InputFloat m_minZCoordinate
The min z coordinate.
pandora::CartesianPointVector m_coordinateVector
The coordinate vector.
const pandora::ClusterList & GetClusters() const
Get the cluster list.
const TwoDSlidingFitResult & GetFit() const
Get the 2D sliding linear fit.
pandora::ClusterList m_clusterList
The list of clusters.
TwoDSlidingFitResult m_twoDSlidingFitResult
The fit to the hits of the cluster list.
pandora::CartesianPointVector GetClusterListCoordinateVector(const pandora::ClusterList &clusterList) const
Get the coordinate vector for a cluster list.
const pandora::Cluster * m_pCluster
Pointer to the corresponding cluster.
const pandora::CartesianVector & GetMinLayerDirection() const
Get the min layer direction.
pandora::CartesianVector m_minLayerDirection
The direction of the fit at the min layer.
const pandora::CartesianVector & GetMaxLayerDirection() const
Get the max layer direction.
pandora::CartesianVector m_maxLayerDirection
The direction of the fit at the min layer.
const pandora::CartesianVector & GetMaxLayerPosition() const
Get the max layer position.
const pandora::Cluster * GetCluster() const
Get a pointer to the corresponding cluster.
const pandora::CartesianVector & GetMinLayerPosition() const
Get the min layer position.
pandora::CartesianVector m_maxLayerPosition
The position of the fit at the max layer.
pandora::CartesianVector m_minLayerPosition
The position of the fit at the max layer.
const pandora::Vertex * m_pVertex
The address of the vertex.
float GetScore() const
Get the score.
const pandora::Vertex * GetVertex() const
Get the address of the vertex.
VertexScore(const pandora::Vertex *const pVertex, const float score)
Constructor.
bool operator<(const VertexScore &rhs) const
operator<
VertexSelectionBaseAlgorithm class.
VertexSelectionBaseAlgorithm()
Default constructor.
std::map< pandora::HitType, const SlidingFitDataList > SlidingFitDataListMap
Map of sliding fit data lists for passing to tools.
std::vector< VertexScore > VertexScoreList
bool AcceptVertexLocation(const pandora::Vertex *const pVertex, const pandora::VertexList &selectedVertexList) const
Whether to accept a candidate vertex, based on its spatial position in relation to other selected can...
KDTreeNodeInfoT< const pandora::CaloHit *, 2 > HitKDNode2D
std::map< pandora::HitType, const pandora::ClusterList & > ClusterListMap
Map array of cluster lists for passing to tools.
std::string m_outputVertexListName
The name under which to save the output vertex list.
std::map< pandora::HitType, const std::reference_wrapper< HitKDTree2D > > KDTreeMap
Map array of hit kd trees for passing to tools.
float m_nDecayLengthsInZSpan
The number of score decay lengths to use over the course of the vertex z-span.
void InitializeKDTrees(HitKDTree2D &kdTreeU, HitKDTree2D &kdTreeV, HitKDTree2D &kdTreeW) const
Initialize kd trees with details of hits in algorithm-configured cluster lists.
std::vector< HitKDNode2D > HitKDNode2DList
float GetBeamDeweightingScore(const BeamConstants &beamConstants, const pandora::Vertex *const pVertex) const
Get the beam deweighting score for a vertex.
void GetClusterLists(const pandora::StringVector &inputClusterListNames, pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
Get the cluster lists.
float m_maxOnHitDisplacement
Max hit-vertex displacement for declaring vertex to lie on a hit in each view.
pandora::StringVector m_inputCaloHitListNames
The list of calo hit list names.
void CalculateClusterSlidingFits(const pandora::ClusterList &inputClusterList, const unsigned int minClusterCaloHits, const unsigned int slidingFitWindow, SlidingFitDataList &slidingFitDataList) const
Calculate the cluster sliding fits.
KDTreeLinkerAlgo< const pandora::CaloHit *, 2 > HitKDTree2D
unsigned int m_minVertexAcceptableViews
The minimum number of views in which a candidate must sit on/near a hit or in a gap (or view can be e...
bool m_replaceCurrentVertexList
Whether to replace the current vertex list with the output list.
bool IsVertexOnHit(const pandora::Vertex *const pVertex, const pandora::HitType hitType, HitKDTree2D &kdTree) const
Whether the vertex lies on a hit in the specified view.
MvaFeatureTool< const VertexSelectionBaseAlgorithm *const, const pandora::Vertex *const, const SlidingFitDataListMap &, const ClusterListMap &, const KDTreeMap &, const ShowerClusterListMap &, const float, float & > VertexFeatureTool
The base type for the vertex feature tools.
float m_minCandidateScoreFraction
Ignore other top-scoring candidates with score less than a fraction of original.
static bool SortByVertexZPosition(const pandora::Vertex *const pLhs, const pandora::Vertex *const pRhs)
Sort vertices by increasing z position.
bool m_useDetectorGaps
Whether to account for registered detector gaps in vertex selection.
float m_gapTolerance
The tolerance to use when querying whether a sampling point is in a gap, units cm.
std::map< pandora::HitType, const ShowerClusterList > ShowerClusterListMap
Map of shower cluster lists for passing to tools.
void SelectTopScoreVertices(VertexScoreList &vertexScoreList, pandora::VertexList &selectedVertexList) const
From the top-scoring candidate vertices, select a subset for further investigation.
float GetVertexEnergy(const pandora::Vertex *const pVertex, const KDTreeMap &kdTreeMap) const
Calculate the energy of a vertex candidate by summing values from all three planes.
bool IsBeamModeOn() const
Whether algorithm is running in beam mode, assuming neutrinos travel in positive z-direction.
bool m_selectSingleVertex
Whether to make a final decision and select just one vertex candidate.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
float m_minCandidateDisplacement
Ignore other top-scoring candidates located in close proximity to original.
bool m_beamMode
Whether to run in beam mode, assuming neutrinos travel in positive z-direction.
virtual void GetVertexScoreList(const pandora::VertexVector &vertexVector, const BeamConstants &beamConstants, HitKDTree2D &kdTreeU, HitKDTree2D &kdTreeV, HitKDTree2D &kdTreeW, VertexScoreList &vertexScoreList) const =0
Get the vertex score list for a provided list of candidate vertices.
pandora::StatusCode Run()
Run the algorithm.
bool IsVertexInGap(const pandora::Vertex *const pVertex, const pandora::HitType hitType) const
Whether the vertex lies in a registered gap.
bool m_isEmptyViewAcceptable
Whether views entirely empty of hits are classed as 'acceptable' for candidate filtration.
virtual void FilterVertexList(const pandora::VertexList *const pInputVertexList, HitKDTree2D &kdTreeU, HitKDTree2D &kdTreeV, HitKDTree2D &kdTreeW, pandora::VertexVector &filteredVertices) const
Filter the input list of vertices to obtain a reduced number of vertex candidates.
std::vector< ShowerCluster > ShowerClusterList
std::vector< SlidingFitData > SlidingFitDataList
virtual void GetBeamConstants(const pandora::VertexVector &vertexVector, BeamConstants &beamConstants) const
Get the beam score constants for a provided list of candidate vertices.
unsigned int m_maxTopScoreSelections
Max number of top-scoring vertex candidate to select for output.
float VertexHitEnergy(const pandora::Vertex *const pVertex, const pandora::HitType hitType, HitKDTree2D &kdTree) const
Finds the energy of the nearest hit to the vertex candidate in this view.
Algorithm class. Algorithm addresses are held only by the algorithm manager. They have a fully define...
float GetZ() const
Get the cartesian z coordinate.
const CartesianVector & GetPosition() const
Get the vertex position.
HitType
Calorimeter hit type enum.
MANAGED_CONTAINER< const Cluster * > ClusterList
std::vector< std::string > StringVector
std::vector< CartesianVector > CartesianPointVector
MANAGED_CONTAINER< const Vertex * > VertexList
StatusCode
The StatusCode enum.
std::vector< const Vertex * > VertexVector