All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ClusterSplittingAlgorithm.h
Go to the documentation of this file.
1 /**
2  * @file larpandoracontent/LArTwoDReco/LArClusterSplitting/ClusterSplittingAlgorithm.h
3  *
4  * @brief Header file for the cluster splitting algorithm class.
5  *
6  * $Log: $
7  */
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 
18 /**
19  * @brief ClusterSplittingAlgorithm class
20  */
21 class ClusterSplittingAlgorithm : public pandora::Algorithm
22 {
23 protected:
24  virtual pandora::StatusCode Run();
25  virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
26 
27  /**
28  * @brief Run the algorithm using the current cluster list as input
29  */
30  pandora::StatusCode RunUsingCurrentList() const;
31 
32  /**
33  * @brief Divide calo hits in a cluster into two lists, each associated with a separate fragment cluster
34  *
35  * @param pCluster address of the cluster
36  * @param firstCaloHitList the hits in the first fragment
37  * @param secondCaloHitList the hits in the second fragment
38  */
39  virtual pandora::StatusCode DivideCaloHits(
40  const pandora::Cluster *const pCluster, pandora::CaloHitList &firstCaloHitList, pandora::CaloHitList &secondCaloHitList) const = 0;
41 
42 private:
43  /**
44  * @brief Split cluster into two fragments
45  *
46  * @param pCluster address of the cluster
47  * @param clusterSplittingList to receive the two cluster fragments
48  */
49  pandora::StatusCode SplitCluster(const pandora::Cluster *const pCluster, pandora::ClusterList &clusterSplittingList) const;
50 
51  pandora::StringVector m_inputClusterListNames; ///< The list of input cluster list names - if empty, use the current cluster list
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.