8#ifndef LAR_DELTA_RAY_MATCHING_ALGORITHM_H
9#define LAR_DELTA_RAY_MATCHING_ALGORITHM_H 1
18template <
typename,
unsigned int>
19class KDTreeLinkerAlgo;
20template <
typename,
unsigned int>
100 typedef std::unordered_map<const pandora::CaloHit *, const pandora::Cluster *>
HitToClusterMap;
146 typedef std::unordered_map<const pandora::ParticleFlowObject *, float>
PfoLengthMap;
Header file for the algorithm class.
Header file for the lar two dimensional sliding fit result class.
const pandora::ParticleFlowObject * m_pParentPfo
Address of parent Pfo.
const pandora::ParticleFlowObject * GetParentPfo() const
Get parent Pfo.
const pandora::Cluster * m_pClusterV
Address of cluster in V view.
unsigned int GetNCaloHits() const
Get number of calo hits.
const pandora::Cluster * m_pClusterU
Address of cluster in U view.
const pandora::Cluster * GetClusterV() const
Get cluster in V view.
unsigned int GetNViews() const
Get number of views.
const pandora::Cluster * GetClusterW() const
Get cluster in W view.
const pandora::Cluster * GetClusterU() const
Get cluster in U view.
const pandora::Cluster * m_pClusterW
Address of cluster in W view.
DeltaRayMatchingAlgorithm class.
std::unordered_map< const pandora::CaloHit *, const pandora::Cluster * > HitToClusterMap
std::string m_inputClusterListNameW
The input cluster list name for the w view.
KDTreeNodeInfoT< const pandora::CaloHit *, 2 > HitKDNode2D
float m_searchRegion1D
Search region, applied to each dimension, for look-up from kd-trees.
std::unordered_map< const pandora::Cluster *, float > ClusterLengthMap
void OneViewMatching(ClusterLengthMap &clusterLengthMap) const
Match clusters using single views.
ClusterToClustersMap m_nearbyClustersV
The nearby clusters map for the v view.
void CreateDaughterPfo(const pandora::ClusterList &clusterList, const pandora::ParticleFlowObject *const pParentPfo) const
Create a new Pfo from an input cluster list and set up a parent/daughter relationship.
KDTreeLinkerAlgo< const pandora::CaloHit *, 2 > HitKDTree2D
void CreateParticles(const ParticleList &particleList) const
Build new particle flow objects.
float m_distanceForMatching
The maximum allowed distance between tracks and delta rays.
void InitializeNearbyClusterMaps()
Initialize nearby cluster maps.
DeltaRayMatchingAlgorithm()
Default constructor.
pandora::StatusCode Run()
Run the algorithm.
void ThreeViewMatching(ClusterLengthMap &clusterLengthMap) const
Match clusters using all three views.
std::string m_inputClusterListNameV
The input cluster list name for the v view.
std::string m_parentPfoListName
The parent pfo list name.
void SelectParticles(const ParticleList &inputParticles, ClusterLengthMap &clusterLengthMap, ParticleList &outputParticles) const
Resolve any ambiguities between candidate particles.
float m_xOverlapWindow
The maximum allowed displacement in x position.
bool AreClustersMatched(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, const pandora::Cluster *const pCluster3) const
Look at consistency of a combination of clusters.
std::vector< HitKDNode2D > HitKDNode2DList
ClusterToClustersMap m_nearbyClustersW
The nearby clusters map for the w view.
void InitializeNearbyClusterMap(const std::string &clusterListName, ClusterToClustersMap &nearbyClusters)
Initialize a nearby cluster map with details relating to a specific cluster list.
void ClearNearbyClusterMaps()
Clear nearby cluster maps.
float m_pseudoChi2Cut
Pseudo chi2 cut for three view matching.
std::string m_inputClusterListNameU
The input cluster list name for the u view.
void FindBestParentPfo(const pandora::Cluster *const pClusterU, const pandora::Cluster *const pClusterV, const pandora::Cluster *const pClusterW, ClusterLengthMap &clusterLengthMap, PfoLengthMap &pfoLengthMap, const pandora::ParticleFlowObject *&pBestPfo) const
Find best Pfo to associate a UVW triplet.
std::string m_daughterPfoListName
The daughter pfo list name for new daughter particles.
unsigned int m_minCaloHitsPerCluster
The min number of calo hits per candidate cluster.
std::unordered_map< const pandora::ParticleFlowObject *, float > PfoLengthMap
void AddToDaughterPfo(const pandora::ClusterList &clusterList, const pandora::ParticleFlowObject *const pParentPfo) const
Merge an input cluster list with an existing daughter Pfo.
std::unordered_map< const pandora::Cluster *, pandora::ClusterList > ClusterToClustersMap
void GetAllPfos(const std::string &inputPfoListName, pandora::PfoVector &pfoVector) const
Get a vector of all Pfos in the provided input Pfo lists.
float GetLength(const Particle &particle, ClusterLengthMap &clusterLengthMap) const
Get the length (squared) of a candidate particle.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
float GetLengthFromCache(const pandora::Cluster *const pCluster, ClusterLengthMap &clusterLengthMap) const
Reduce number of length (squared) calculations by caching results when they are first obtained.
void GetTrackPfos(const std::string &inputPfoListName, pandora::PfoVector &pfoVector) const
Get a vector of track-like Pfos in the provided input Pfo lists.
void TwoViewMatching(ClusterLengthMap &clusterLengthMap) const
Match clusters using pairs of views.
std::vector< Particle > ParticleList
ClusterToClustersMap m_nearbyClustersU
The nearby clusters map for the u view.
void GetClusters(const std::string &clusterListName, pandora::ClusterVector &clusterVector) const
Get a vector containing all available input clusters in the provided cluster list,...
float GetDistanceSquaredToPfo(const pandora::Cluster *const pCluster, const pandora::ParticleFlowObject *const pPfo) const
Get displacementr between cluster and particle flow object.
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...
Algorithm class. Algorithm addresses are held only by the algorithm manager. They have a fully define...
ParticleFlowObject class.
std::vector< const Cluster * > ClusterVector
MANAGED_CONTAINER< const Cluster * > ClusterList
std::vector< const ParticleFlowObject * > PfoVector
StatusCode
The StatusCode enum.