LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
ClusterSplittingAlgorithm.h
Go to the documentation of this file.
1 
8 #ifndef LAR_CLUSTER_SPLITTING_ALGORITHM_H
9 #define LAR_CLUSTER_SPLITTING_ALGORITHM_H 1
10 
11 #include "Pandora/Algorithm.h"
12 
13 #include <list>
14 
15 namespace lar_content
16 {
17 
21 class ClusterSplittingAlgorithm : public pandora::Algorithm
22 {
23 protected:
24  virtual pandora::StatusCode Run();
25  virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
26 
30  pandora::StatusCode RunUsingCurrentList() const;
31 
39  virtual pandora::StatusCode DivideCaloHits(
40  const pandora::Cluster *const pCluster, pandora::CaloHitList &firstCaloHitList, pandora::CaloHitList &secondCaloHitList) const = 0;
41 
42 private:
49  pandora::StatusCode SplitCluster(const pandora::Cluster *const pCluster, pandora::ClusterList &clusterSplittingList) const;
50 
51  pandora::StringVector m_inputClusterListNames;
52 };
53 
54 } // namespace lar_content
55 
56 #endif // #ifndef LAR_CLUSTER_SPLITTING_ALGORITHM_H
pandora::StatusCode RunUsingCurrentList() const
Run the algorithm using the current cluster list as input.
virtual pandora::StatusCode DivideCaloHits(const pandora::Cluster *const pCluster, pandora::CaloHitList &firstCaloHitList, pandora::CaloHitList &secondCaloHitList) const =0
Divide calo hits in a cluster into two lists, each associated with a separate fragment cluster...
pandora::StringVector m_inputClusterListNames
The list of input cluster list names - if empty, use the current cluster list.
virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
pandora::StatusCode SplitCluster(const pandora::Cluster *const pCluster, pandora::ClusterList &clusterSplittingList) const
Split cluster into two fragments.