Belle II Software  release-08-01-10
RbTuple.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #pragma once
10 
11 #include <vector>
12 #include <string>
13 
14 class TFile;
15 
16 namespace Belle2 {
21  class Module;
22 
24  /*
25  Modules with histogram definitions are supposed to be derived from
26  HistoModule class and histograms are defined in HistoModule::defineHisto() function.
27  It is supposed to be hooked by register_module(*this) function.
28  */
30  public:
31 
32  // Constructor and destructor are private for singleton access
34  ~RbTupleManager();
35 
37  RbTupleManager(int nprocess, const char* filename, const char* workdir = ".");
38 
40  static RbTupleManager& Instance();
41 
43  void init(int nprocess, const char* filename, const char* workdir = ".");
44 
46  // void define ( void (*func)( void ) );
47  void register_module(Module*);
48 
49 
51  int begin(int pid);
52 
54  int terminate();
55 
56  // Functions to collect histograms from event processing on the fly
57  // int collect ();
58 
60  int dump();
61 
63  int hadd(bool deleteflag = true);
64 
66  const std::vector<Module*>& getHistDefiningModules() const
67  {
68  return m_histdefs;
69  }
70 
71  private:
74  std::vector<Module*> m_histdefs;
75  int m_nproc{0};
76  std::string m_filename;
77  std::string m_workdir;
78  TFile* m_root{nullptr};
79  };
80 
82 } // Belle2 namespace
Base class for Modules.
Definition: Module.h:72
Class to manage histograms defined in registered modules.
Definition: RbTuple.h:29
TFile * m_root
Histogram output file.
Definition: RbTuple.h:78
static RbTupleManager & Instance()
Access to singleton.
Definition: RbTuple.cc:40
int hadd(bool deleteflag=true)
Functions to add up all histogram files.
Definition: RbTuple.cc:138
const std::vector< Module * > & getHistDefiningModules() const
Return the list of modules that have defined histograms.
Definition: RbTuple.h:66
std::string m_workdir
Name of working directory.
Definition: RbTuple.h:77
int terminate()
Function called by HistoManager module at the end.
Definition: RbTuple.cc:118
std::string m_filename
Name of histogram output file.
Definition: RbTuple.h:76
int dump()
Function to dump histograms/tuples to the file.
Definition: RbTuple.cc:129
void init(int nprocess, const char *filename, const char *workdir=".")
Global initialization.
Definition: RbTuple.cc:49
int begin(int pid)
Function called by HistoManager module for the first event.
Definition: RbTuple.cc:89
int m_nproc
Number of parallel processes.
Definition: RbTuple.h:75
void register_module(Module *)
Functions called by analysis modules in mother process.
Definition: RbTuple.cc:83
std::vector< Module * > m_histdefs
registered HistoModules.
Definition: RbTuple.h:74
static RbTupleManager * s_instance
singleton instance.
Definition: RbTuple.h:72
Abstract base class for different kinds of events.