8 #ifndef LAR_MATCHING_BASE_ALGORITHM_H
9 #define LAR_MATCHING_BASE_ALGORITHM_H 1
11 #include "Api/PandoraContentApi.h"
13 #include "Pandora/Algorithm.h"
15 #include <unordered_map>
31 typedef std::unordered_map<const pandora::Cluster *, pandora::ClusterList>
ClusterMergeMap;
72 virtual const std::string &
GetClusterListName(
const pandora::HitType hitType)
const = 0;
81 virtual const pandora::ClusterList &
GetInputClusterList(
const pandora::HitType hitType)
const = 0;
99 virtual void CalculateOverlapResult(
const pandora::Cluster *
const pCluster1,
const pandora::Cluster *
const pCluster2,
100 const pandora::Cluster *
const pCluster3 =
nullptr) = 0;
108 virtual void SelectInputClusters(
const pandora::ClusterList *
const pInputClusterList, pandora::ClusterList &selectedClusterList)
const;
174 virtual void TidyUp() = 0;
176 virtual pandora::StatusCode
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
179 pandora::StatusCode
Run();
186 #endif // #ifndef LAR_MATCHING_BASE_ALGORITHM_H
std::vector< ProtoParticle > ProtoParticleVector
virtual void UpdateUponDeletion(const pandora::Cluster *const pDeletedCluster)=0
Update to reflect cluster deletion.
virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
MatchingBaseAlgorithm()
Default constructor.
virtual void CalculateOverlapResult(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, const pandora::Cluster *const pCluster3=nullptr)=0
Calculate cluster overlap result and store in container.
virtual void ExamineOverlapContainer()=0
Examine contents of overlap container, collect together best-matching 2D particles and modify cluster...
virtual void SelectInputClusters(const pandora::ClusterList *const pInputClusterList, pandora::ClusterList &selectedClusterList) const
Select a subset of input clusters for processing in this algorithm.
MatchingBaseAlgorithm class.
virtual void PerformMainLoop()=0
Main loop over cluster combinations in order to populate the overlap container. Responsible for calli...
virtual void SelectAllInputClusters()=0
Select a subset of input clusters for processing in this algorithm.
virtual const pandora::ClusterList & GetInputClusterList(const pandora::HitType hitType) const =0
Get the input cluster list corresponding to a specified hit type.
virtual ~MatchingBaseAlgorithm()
Destructor.
virtual void UpdateForNewCluster(const pandora::Cluster *const pNewCluster)=0
Update to reflect addition of a new cluster to the problem space.
virtual void PrepareInputClusters(pandora::ClusterList &preparedClusterList)
Perform any preparatory steps required on the input clusters, e.g. caching expensive fit results...
virtual void SetPfoParameters(const ProtoParticle &protoParticle, PandoraContentApi::ParticleFlowObject::Parameters &pfoParameters) const
Set Pfo properties.
pandora::ClusterList m_clusterList
List of 2D clusters in a 3D proto particle.
virtual const pandora::ClusterList & GetSelectedClusterList(const pandora::HitType hitType) const =0
Get the selected cluster list corresponding to a specified hit type.
pandora::StatusCode Run()
virtual bool MakeClusterMerges(const ClusterMergeMap &clusterMergeMap)
Merge clusters together.
fhicl::Table< sbnd::crt::CRTDetSimParams > Parameters
virtual void PrepareAllInputClusters()=0
Perform any preparatory steps required, e.g. caching expensive fit results for clusters.
std::unordered_map< const pandora::Cluster *, pandora::ClusterList > ClusterMergeMap
virtual bool CreateThreeDParticles(const ProtoParticleVector &protoParticleVector)
Create particles using findings from recent algorithm processing.
virtual const std::string & GetClusterListName(const pandora::HitType hitType) const =0
Get the cluster list name corresponding to a specified hit type.
std::string m_outputPfoListName
The output pfo list name.
virtual void TidyUp()=0
Tidy member variables in derived class.
virtual void SetPfoParticleId(PandoraContentApi::ParticleFlowObject::Parameters &pfoParameters) const
Set pfo particle id.