9 #include "Pandora/AlgorithmHeaders.h" 
   20 void PfoMopUpBaseAlgorithm::MergeAndDeletePfos(
const ParticleFlowObject *
const pPfoToEnlarge, 
const ParticleFlowObject *
const pPfoToDelete)
 const 
   22     if (pPfoToEnlarge == pPfoToDelete)
 
   23         throw StatusCodeException(STATUS_CODE_NOT_ALLOWED);
 
   25     const PfoList daughterPfos(pPfoToDelete->GetDaughterPfoList());
 
   26     const ClusterVector daughterClusters(pPfoToDelete->GetClusterList().begin(), pPfoToDelete->GetClusterList().end());
 
   27     const VertexVector daughterVertices(pPfoToDelete->GetVertexList().begin(), pPfoToDelete->GetVertexList().end());
 
   29     PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::Delete(*
this, pPfoToDelete, this->GetListName(pPfoToDelete)));
 
   31     for (
const ParticleFlowObject *
const pDaughterPfo : daughterPfos)
 
   33         PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::SetPfoParentDaughterRelationship(*
this, pPfoToEnlarge, pDaughterPfo));
 
   36     for (
const Vertex *
const pDaughterVertex : daughterVertices)
 
   38         PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::Delete(*
this, pDaughterVertex, this->GetListName(pDaughterVertex)));
 
   41     for (
const Cluster *
const pDaughterCluster : daughterClusters)
 
   43         const HitType daughterHitType(LArClusterHelper::GetClusterHitType(pDaughterCluster));
 
   44         const Cluster *pParentCluster(PfoMopUpBaseAlgorithm::GetParentCluster(pPfoToEnlarge->GetClusterList(), daughterHitType));
 
   48             PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=,
 
   49                 PandoraContentApi::MergeAndDeleteClusters(
 
   50                     *
this, pParentCluster, pDaughterCluster, this->GetListName(pParentCluster), this->GetListName(pDaughterCluster)));
 
   54             PANDORA_THROW_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::AddToPfo(*
this, pPfoToEnlarge, pDaughterCluster));
 
   61 const Cluster *PfoMopUpBaseAlgorithm::GetParentCluster(
const ClusterList &clusterList, 
const HitType hitType)
 
   63     unsigned int mostHits(0);
 
   64     const Cluster *pBestParentCluster(
nullptr);
 
   66     for (
const Cluster *
const pParentCluster : clusterList)
 
   68         if (hitType != LArClusterHelper::GetClusterHitType(pParentCluster))
 
   71         const unsigned int nParentHits(pParentCluster->GetNCaloHits());
 
   73         if (nParentHits > mostHits)
 
   75             mostHits = nParentHits;
 
   76             pBestParentCluster = pParentCluster;
 
   80     return pBestParentCluster;
 
   85 StatusCode PfoMopUpBaseAlgorithm::ReadSettings(
const TiXmlHandle xmlHandle)
 
   87     return MopUpBaseAlgorithm::ReadSettings(xmlHandle);
 
Header file for the cluster helper class. 
required by fuzzyCluster table::sbnd_g4_services gaushitTruthMatch pandora
Header file for the pfo mop up algorithm base class. 
std::vector< art::Ptr< recob::Cluster > > ClusterVector
std::array< float, 2 > VertexVector(const recob::Vertex &vert, const geo::PlaneID &plane, const geo::GeometryCore *geo, const detinfo::DetectorPropertiesData &dprop)