IClusterModAlg.h
Go to the documentation of this file.
1 /**
2  * @file IClusterModAlg.h
3  *
4  * @brief This provides an art tool interface definition for 3D Cluster algorithms
5  *
6  * @author usher@slac.stanford.edu
7  *
8  */
9 #ifndef IClusterModAlg_h
10 #define IClusterModAlg_h
11 
12 // Framework Includes
13 #include "fhiclcpp/ParameterSet.h"
14 
15 // Algorithm includes
17 
18 //------------------------------------------------------------------------------------------------------------------------------------------
19 namespace art
20 {
21  class TFileDirectory;
22 }
23 
24 namespace lar_cluster3d
25 {
26 /**
27  * @brief IClusterModAlg interface class definiton
28  */
30 {
31 public:
32  /**
33  * @brief Virtual Destructor
34  */
35  virtual ~IClusterModAlg() noexcept = default;
36 
37  /**
38  * @brief Interface for configuring the particular algorithm tool
39  *
40  * @param ParameterSet The input set of parameters for configuration
41  */
42  virtual void configure(const fhicl::ParameterSet&) = 0;
43 
44  /**
45  * @brief Interface for initializing histograms if they are desired
46  * Note that the idea is to put hisgtograms in a subfolder
47  *
48  * @param TFileDirectory - the folder to store the hists in
49  */
50  virtual void initializeHistograms(art::TFileDirectory&) = 0;
51 
52  /**
53  * @brief Scan an input collection of clusters and modify those according
54  * to the specific implementing algorithm
55  *
56  * @param clusterParametersList A list of cluster objects (parameters from associated hits)
57  */
58  virtual void ModifyClusters(reco::ClusterParametersList&) const = 0;
59 
60  /**
61  * @brief If monitoring, recover the time to execute a particular function
62  */
63  virtual float getTimeToExecute() const = 0;
64 
65 };
66 
67 } // namespace lar_cluster3d
68 #endif
IClusterModAlg interface class definiton.
std::list< ClusterParameters > ClusterParametersList
Definition: Cluster3D.h:404