ClusterMopUpBaseAlgorithm.h
Go to the documentation of this file.
1 /**
2  * @file larpandoracontent/LArTwoDReco/LArClusterMopUp/ClusterMopUpBaseAlgorithm.h
3  *
4  * @brief Header file for the cluster mop up algorithm base class.
5  *
6  * $Log: $
7  */
8 #ifndef LAR_CLUSTER_MOP_UP_BASE_ALGORITHM_H
9 #define LAR_CLUSTER_MOP_UP_BASE_ALGORITHM_H 1
10 
12 
13 #include <unordered_map>
14 
15 namespace lar_content
16 {
17 
18 /**
19  * @brief ClusterMopUpBaseAlgorithm class
20  */
21 
23 {
24 public:
25  /**
26  * @brief Default constructor
27  */
29 
30 protected:
31  virtual pandora::StatusCode Run();
32 
33  /**
34  * @brief Get the two dimensional clusters contained in the input pfo list, divided into three different views
35  *
36  * @param clusterListU to receive the list of clusters in the u view
37  * @param clusterListV to receive the list of clusters in the v view
38  * @param clusterListW to receive the list of clusters in the w view
39  */
40  virtual void GetPfoClusterLists(pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const;
41 
42  /**
43  * @brief Get the two dimensional clusters contained in the input remant/daughter cluster lists, divided into three different views
44  *
45  * @param clusterListU to receive the list of clusters in the u view
46  * @param clusterListV to receive the list of clusters in the v view
47  * @param clusterListW to receive the list of clusters in the w view
48  */
49  virtual void GetDaughterClusterLists(pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const;
50 
51  /**
52  * @brief Get the two dimensional clusters contained in an input cluster list, divided into three different views
53  *
54  * @param inputClusterList the input cluster list
55  * @param availabilityFlag only clusters with matching availability will be considered
56  * @param clusterListU to receive the list of clusters in the u view
57  * @param clusterListV to receive the list of clusters in the v view
58  * @param clusterListW to receive the list of clusters in the w view
59  */
60  virtual void GetClusterLists(const pandora::ClusterList &inputClusterList, const bool availabilityFlag,
61  pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const;
62 
63  /**
64  * @brief Cluster mop up for a single view. This function is responsible for instructing pandora to make cluster alterations
65  *
66  * @param pfoClusters the list of pfo clusters
67  * @param remnantClusters the list of remnant clusters
68  */
69  virtual void ClusterMopUp(const pandora::ClusterList &pfoClusters, const pandora::ClusterList &remnantClusters) const = 0;
70 
71  typedef std::unordered_map<const pandora::Cluster *, float> AssociationDetails;
72  typedef std::unordered_map<const pandora::Cluster *, AssociationDetails> ClusterAssociationMap;
73 
74  /**
75  * @brief Make the cluster merges specified in the cluster association map, using list name information in the cluster list name map
76  *
77  * @param clusterAssociationMap the cluster association map
78  */
79  virtual void MakeClusterMerges(const ClusterAssociationMap &clusterAssociationMap) const;
80 
81  virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
82 
83  pandora::StringVector m_pfoListNames; ///< The list of pfo list names
84  bool m_excludePfosContainingTracks; ///< Whether to exclude any pfos containing clusters flagged as fixed tracks
85 };
86 
87 } // namespace lar_content
88 
89 #endif // #ifndef LAR_CLUSTER_MOP_UP_BASE_ALGORITHM_H
virtual void MakeClusterMerges(const ClusterAssociationMap &clusterAssociationMap) const
Make the cluster merges specified in the cluster association map, using list name information in the ...
virtual void GetClusterLists(const pandora::ClusterList &inputClusterList, const bool availabilityFlag, pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
Get the two dimensional clusters contained in an input cluster list, divided into three different vie...
bool m_excludePfosContainingTracks
Whether to exclude any pfos containing clusters flagged as fixed tracks.
MopUpBaseAlgorithm class.
std::unordered_map< const pandora::Cluster *, AssociationDetails > ClusterAssociationMap
Header file for the mop up algorithm base class.
virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::unordered_map< const pandora::Cluster *, float > AssociationDetails
virtual void GetPfoClusterLists(pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
Get the two dimensional clusters contained in the input pfo list, divided into three different views...
virtual void ClusterMopUp(const pandora::ClusterList &pfoClusters, const pandora::ClusterList &remnantClusters) const =0
Cluster mop up for a single view. This function is responsible for instructing pandora to make cluste...
std::vector< string > StringVector
Definition: fcldump.cxx:29
pandora::StringVector m_pfoListNames
The list of pfo list names.
virtual void GetDaughterClusterLists(pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
Get the two dimensional clusters contained in the input remant/daughter cluster lists, divided into three different views.