8 #ifndef LAR_THREE_D_BASE_ALGORITHM_H 9 #define LAR_THREE_D_BASE_ALGORITHM_H 1 11 #include "Api/PandoraContentApi.h" 13 #include "Pandora/Algorithm.h" 17 #include <unordered_map> 34 typedef std::unordered_map<const pandora::Cluster*, pandora::ClusterList>
ClusterMergeMap;
64 virtual bool CreateThreeDParticles(
const ProtoParticleVector &protoParticleVector);
72 virtual void SetPfoParameters(
const ProtoParticle &protoParticle, PandoraContentApi::ParticleFlowObject::Parameters &pfoParameters)
const = 0;
81 virtual bool MakeClusterMerges(
const ClusterMergeMap &clusterMergeMap);
88 virtual void UpdateForNewCluster(
const pandora::Cluster *
const pNewCluster);
95 virtual void UpdateUponDeletion(
const pandora::Cluster *
const pDeletedCluster);
100 virtual void RemoveUnavailableTensorElements();
105 const pandora::ClusterList &GetInputClusterListU()
const;
110 const pandora::ClusterList &GetInputClusterListV()
const;
115 const pandora::ClusterList &GetInputClusterListW()
const;
120 const pandora::ClusterList &GetSelectedClusterListU()
const;
125 const pandora::ClusterList &GetSelectedClusterListV()
const;
130 const pandora::ClusterList &GetSelectedClusterListW()
const;
135 const std::string &GetClusterListNameU()
const;
140 const std::string &GetClusterListNameV()
const;
145 const std::string &GetClusterListNameW()
const;
153 virtual void SelectInputClusters(
const pandora::ClusterList *
const pInputClusterList, pandora::ClusterList &selectedClusterList)
const = 0;
156 virtual pandora::StatusCode ReadSettings(
const pandora::TiXmlHandle xmlHandle);
161 virtual void SelectAllInputClusters();
166 virtual void PreparationStep();
171 virtual void PerformMainLoop();
180 virtual void CalculateOverlapResult(
const pandora::Cluster *
const pClusterU,
const pandora::Cluster *
const pClusterV,
const pandora::Cluster *
const pClusterW) = 0;
185 virtual void ExamineTensor() = 0;
190 virtual void TidyUp();
203 pandora::StatusCode Run();
216 if (NULL == m_pInputClusterListU)
217 throw pandora::StatusCodeException(pandora::STATUS_CODE_NOT_INITIALIZED);
219 return (*m_pInputClusterListU);
227 if (NULL == m_pInputClusterListV)
228 throw pandora::StatusCodeException(pandora::STATUS_CODE_NOT_INITIALIZED);
230 return (*m_pInputClusterListV);
238 if (NULL == m_pInputClusterListW)
239 throw pandora::StatusCodeException(pandora::STATUS_CODE_NOT_INITIALIZED);
241 return (*m_pInputClusterListW);
273 return m_inputClusterListNameU;
281 return m_inputClusterListNameV;
289 return m_inputClusterListNameW;
294 #endif // #ifndef LAR_THREE_D_BASE_ALGORITHM_H
std::vector< ProtoParticle > ProtoParticleVector
ThreeDBaseAlgorithm class.
const pandora::ClusterList & GetInputClusterListW() const
Get the input w cluster list.
const std::string & GetClusterListNameU() const
Get the name of the u cluster list.
std::string m_inputClusterListNameV
The name of the view V cluster list.
pandora::ClusterList m_clusterListW
The selected modified cluster list W.
Header file for the lar overlap tensor class.
const std::string & GetClusterListNameV() const
Get the name of the v cluster list.
const pandora::ClusterList & GetSelectedClusterListV() const
Get the selected v cluster list.
const pandora::ClusterList * m_pInputClusterListV
Address of the input cluster list V.
const pandora::ClusterList * m_pInputClusterListU
Address of the input cluster list U.
const pandora::ClusterList & GetSelectedClusterListU() const
Get the selected u cluster list.
const pandora::ClusterList * m_pInputClusterListW
Address of the input cluster list W.
const pandora::ClusterList & GetSelectedClusterListW() const
Get the selected w cluster list.
pandora::ClusterList m_clusterListV
The selected modified cluster list V.
pandora::ClusterList m_clusterListW
List of 2D W clusters in a 3D proto particle.
const std::string & GetClusterListNameW() const
Get the name of the w cluster list.
const pandora::ClusterList & GetInputClusterListV() const
Get the input v cluster list.
TensorType m_overlapTensor
The overlap tensor.
pandora::ClusterList m_clusterListV
List of 2D V clusters in a 3D proto particle.
const pandora::ClusterList & GetInputClusterListU() const
Get the input u cluster list.
pandora::ClusterList m_clusterListU
List of 2D U clusters in a 3D proto particle.
std::string m_inputClusterListNameW
The name of the view W cluster list.
OverlapTensor< T > TensorType
std::unordered_map< const pandora::Cluster *, pandora::ClusterList > ClusterMergeMap
pandora::ClusterList m_clusterListU
The selected modified cluster list U.
std::string m_inputClusterListNameU
The name of the view U cluster list.
std::string m_outputPfoListName
The output pfo list name.