9 #include "Pandora/AlgorithmHeaders.h" 18 MopUpRemnantsTool::MopUpRemnantsTool()
26 if (PandoraContentApi::GetSettings(*pAlgorithm)->ShouldDisplayAlgorithmInfo())
27 std::cout <<
"----> Running Algorithm Tool: " << this->GetInstanceName() <<
", " << this->GetType() <<
std::endl;
30 this->FindBestShowers(overlapTensor, protoParticleVector);
40 ClusterSet usedClusters;
44 for (
const Cluster *
const pKeyCluster : sortedKeyClusters)
46 if (!pKeyCluster->IsAvailable())
53 this->SelectBestElement(connectedElements, usedClusters, eIter);
54 this->GetUsedClusters(connectedElements, usedClusters);
56 if (connectedElements.end() == eIter)
63 protoParticleVector.push_back(protoParticle);
73 usedClusters.insert(eIter->GetClusterU());
74 usedClusters.insert(eIter->GetClusterV());
75 usedClusters.insert(eIter->GetClusterW());
81 void MopUpRemnantsTool::SelectBestElement(
84 float bestFigureOfMerit(0.
f);
88 const Cluster *
const pClusterU = eIter->GetClusterU();
89 const Cluster *
const pClusterV = eIter->GetClusterV();
90 const Cluster *
const pClusterW = eIter->GetClusterW();
92 if (usedClusters.count(pClusterU) || usedClusters.count(pClusterV) || usedClusters.count(pClusterW))
95 const float figureOfMerit(pClusterU->GetHadronicEnergy() + pClusterV->GetHadronicEnergy() + pClusterW->GetHadronicEnergy());
97 if (figureOfMerit > bestFigureOfMerit)
99 bestFigureOfMerit = figureOfMerit;
107 StatusCode MopUpRemnantsTool::ReadSettings(
const TiXmlHandle )
109 return STATUS_CODE_SUCCESS;
std::vector< ProtoParticle > ProtoParticleVector
void GetConnectedElements(const pandora::Cluster *const pCluster, const bool ignoreUnavailable, ElementList &elementList) const
Get a list of elements connected to a specified cluster.
std::vector< Element > ElementList
pandora::ClusterList m_clusterList
List of 2D clusters in a 3D proto particle.
void GetSortedKeyClusters(pandora::ClusterVector &sortedKeyClusters) const
Get a sorted vector of key clusters (U clusters with current implementation)
virtual bool CreateThreeDParticles(const ProtoParticleVector &protoParticleVector)
Create particles using findings from recent algorithm processing.
std::vector< art::Ptr< recob::Cluster > > ClusterVector
ThreeViewRemnantsAlgorithm class.
TheTensor::const_iterator const_iterator
QTextStream & endl(QTextStream &s)