1 |
rkogler |
1.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
|