9 #ifndef LAR_THREE_D_RECLUSTERING_ALGORITHM_H 10 #define LAR_THREE_D_RECLUSTERING_ALGORITHM_H 1 12 #include "Objects/ParticleFlowObject.h" 13 #include "Pandora/Algorithm.h" 14 #include "Pandora/AlgorithmTool.h" 15 #include "Pandora/PandoraInternal.h" 51 pandora::StatusCode
Run();
59 pandora::StatusCode
RebuildPfo(
const pandora::Pfo *pPfoToRebuild, pandora::ClusterList &newClustersList);
67 pandora::StatusCode
BuildNewTwoDClusters(
const pandora::Pfo *pPfoToRebuild, pandora::ClusterList &newClustersList);
75 pandora::StatusCode
BuildNewPfos(
const pandora::Pfo *pPfoToRebuild, pandora::ClusterList &newClustersList);
84 float GetFigureOfMerit(
const pandora::CaloHitList &mergedClusterCaloHitList3D);
94 float GetFigureOfMerit(
const std::string &figureOfMeritName,
const pandora::CaloHitList &mergedClusterCaloHitList3D);
103 float GetFigureOfMerit(
const std::vector<pandora::CaloHitList> &newClustersCaloHitList3D);
113 float GetFigureOfMerit(
const std::string &figureOfMeritName,
const std::vector<pandora::CaloHitList> &newClustersCaloHitLists3D);
133 pandora::StatusCode
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
148 static const std::unordered_map<std::string, ThreeDReclusteringAlgorithm::FigureOfMeritType>
m_stringToEnumMap;
161 virtual bool Run(
const pandora::CaloHitList &inputCaloHitList, std::vector<pandora::CaloHitList> &outputCaloHitListsVector) = 0;
166 #endif // #ifndef LAR_THREE_D_RECLUSTERING_ALGORITHM_H std::string m_wClustersListName
pandora::StatusCode BuildNewPfos(const pandora::Pfo *pPfoToRebuild, pandora::ClusterList &newClustersList)
Create new Pfos for each new ThreeD cluster in newClustersList.
std::map< int, const pandora::Cluster * > m_newClustersVMap
pandora::StatusCode Run()
RecursivePfoMopUpAlgorithm class.
std::string m_clusterListName
Name of the list of clusters to consider for reclustering.
std::string m_PfosForReclusteringListName
Name of the internal list to contain new Pfos before/after reclustering.
float m_fomThresholdForReclustering
A threshold on the minimum figure of merit for reclustering.
std::string m_pfoListName
Name of the list of pfos to consider for reclustering.
std::string m_vClustersListName
pandora::StatusCode RebuildPfo(const pandora::Pfo *pPfoToRebuild, pandora::ClusterList &newClustersList)
Create new TwoD clusters and Pfos for each new ThreeD cluster in newClustersList. ...
std::map< int, const pandora::Cluster * > m_newClustersWMap
Per-view maps associating new 3D clusters with new 2D clusters.
~ThreeDReclusteringAlgorithm()
Destructor.
float GetCheatedFigureOfMerit(const pandora::CaloHitList &mergedClusterCaloHitList3D)
Get cheated FOM as an impurity: the fraction of hits that are NOT contributed by the main MC particle...
ThreeDReclusteringAlgorithm()
Default constructor.
static const std::unordered_map< std::string, ThreeDReclusteringAlgorithm::FigureOfMeritType > m_stringToEnumMap
FigureOfMeritType
FigureOfMerit type enumeration.
std::string m_uClustersListName
std::vector< ClusteringTool * > ClusteringToolVector
std::string m_mcParticleListName
The mc particle list name.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::map< int, const pandora::Cluster * > m_newClustersUMap
float GetFigureOfMerit(const pandora::CaloHitList &mergedClusterCaloHitList3D)
Loop over all specified figure of merit names, calculate figures of merit for the CaloHitList under c...
bool PassesCutsForReclustering(const pandora::ParticleFlowObject *const pPfo)
Select pfos to be reclustered if it passes reclustering criteria.
ClusteringToolVector m_algorithmToolVector
The reclustering algorithm tool vector.
long unsigned int m_minNumCaloHitsForReclustering
pandora::StringVector m_figureOfMeritNames
The names of the figures of merit to use.
pandora::StatusCode BuildNewTwoDClusters(const pandora::Pfo *pPfoToRebuild, pandora::ClusterList &newClustersList)
Create new TwoD clusters for each new ThreeD cluster in newClustersList.