1 |
// Dear emacs, this is -*- c++ -*-
|
2 |
#ifndef BaseHists_H
|
3 |
#define BaseHists_H
|
4 |
|
5 |
// STL include(s):
|
6 |
#include <map>
|
7 |
#include <string>
|
8 |
|
9 |
// ROOT include(s):
|
10 |
#include <TObject.h>
|
11 |
#include <TString.h>
|
12 |
|
13 |
// Local include(s):
|
14 |
//#include "include/ISCycleBaseHist.h"
|
15 |
#include "include/SCycleBaseHist.h"
|
16 |
#include "include/SCycleBaseBase.h"
|
17 |
#include "include/SError.h"
|
18 |
|
19 |
// Forward declaration(s):
|
20 |
class TDirectory;
|
21 |
class TH1;
|
22 |
class TList;
|
23 |
|
24 |
/**
|
25 |
* Base Class for the histogramming functionality
|
26 |
*
|
27 |
* Class which books and fills histograms. This class is a base
|
28 |
* class, all histogramming classes should inherit from it.
|
29 |
* The booking and naming of the histograms is taken care of
|
30 |
* through this class. Any derived class has to overwrite the
|
31 |
* Init, Fill and Finish methods.
|
32 |
* The derived objects have to be initialised in each
|
33 |
* SCycleBase::BeginInputData(...)
|
34 |
*
|
35 |
* @version $Revision: 0 $
|
36 |
*/
|
37 |
|
38 |
class BaseHists : public SCycleBaseHist {
|
39 |
|
40 |
|
41 |
public:
|
42 |
/// Named constructor
|
43 |
BaseHists(const char* name);
|
44 |
|
45 |
/// Default destructor
|
46 |
~BaseHists();
|
47 |
|
48 |
virtual void Init() = 0;
|
49 |
|
50 |
virtual void Fill() = 0;
|
51 |
|
52 |
virtual void Finish() = 0;
|
53 |
|
54 |
double* MakeLogBinning(int n_bins, double xmin, double xmax);
|
55 |
|
56 |
TString GetName() {return m_name;}
|
57 |
void SetName(TString name) {m_name = name;}
|
58 |
|
59 |
protected:
|
60 |
/// Function placing a ROOT object in the output file
|
61 |
template< class T > T* Book( const T& histo ) throw( SError );
|
62 |
|
63 |
/// Function searching for a ROOT object in the output file
|
64 |
template< class T > T* Retrieve( const char* name ) throw( SError );
|
65 |
|
66 |
/// Function for persistifying a ROOT object to the output
|
67 |
void WriteObj( const TObject& obj ) throw( SError );
|
68 |
|
69 |
/// Function searching for 1-dimensional histograms in the output file
|
70 |
TH1* Hist( const char* name );
|
71 |
|
72 |
private:
|
73 |
// private constructor, use the named one
|
74 |
BaseHists(){}
|
75 |
|
76 |
TString m_name;
|
77 |
|
78 |
|
79 |
}; // class BaseHists
|
80 |
|
81 |
// Don't include the templated function(s) when we're generating
|
82 |
// a dictionary:
|
83 |
#ifndef __CINT__
|
84 |
#include "BaseHists.icc"
|
85 |
#endif
|
86 |
|
87 |
|
88 |
|
89 |
#endif // BaseHists_H
|