Make sure that histograms are obtained from output list in
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / AliForwardUtil.h
CommitLineData
7e4038b5 1#ifndef ALIROOT_PWG2_FORWARD_ALIFORWARDUTIL_H
2#define ALIROOT_PWG2_FORWARD_ALIFORWARDUTIL_H
3#include <TObject.h>
9d99b0dd 4#include <TString.h>
7e4038b5 5class TH2D;
9d99b0dd 6class TH1I;
7class TH1;
7e4038b5 8class TAxis;
9d99b0dd 9class AliESDEvent;
7e4038b5 10
11/**
12 * Utilities used in the forward multiplcity analysis
13 *
14 * @ingroup pwg2_forward_analysis
15 */
16class AliForwardUtil : public TObject
17{
9d99b0dd 18public:
19 /**
20 * Read the trigger information from the ESD event
21 *
22 * @param esd ESD event
23 * @param triggers On return, contains the trigger bits
24 * @param hTriggers Histogram to fill
25 *
26 * @return @c true on success, @c false otherwise
27 */
28 static Bool_t ReadTriggers(AliESDEvent* esd, UInt_t& triggers,
29 TH1I* hTriggers);
30 /**
31 * Read the vertex information from the ESD event
32 *
33 * @param esd ESD event
34 * @param vz On return, the vertex Z position
35 *
36 * @return @c true on success, @c false otherwise
37 */
38 static Bool_t ReadVertex(AliESDEvent* esd, Double_t& vz,
39 Double_t maxErr=0.1);
40 //__________________________________________________________________
7e4038b5 41 /**
42 * Structure to hold histograms
43 *
44 * @ingroup pwg2_forward_analysis
45 */
46 struct Histos : public TObject
47 {
48 /**
49 * Constructor
50 *
51 *
52 */
53 Histos() : fFMD1i(0), fFMD2i(0), fFMD2o(0), fFMD3i(0), fFMD3o(0) {}
54 /**
55 * Copy constructor
56 *
57 * @param o Object to copy from
58 */
59 Histos(const Histos& o)
60 : TObject(o),
61 fFMD1i(o.fFMD1i),
62 fFMD2i(o.fFMD2i),
63 fFMD2o(o.fFMD2o),
64 fFMD3i(o.fFMD3i),
65 fFMD3o(o.fFMD3o)
66 {}
67 /**
68 * Assignement operator
69 *
70 * @return Reference to this
71 */
72 Histos& operator=(const Histos&) { return *this;}
73 /**
74 * Destructor
75 */
76 ~Histos();
77 /**
78 * Initialize the object
79 *
80 * @param etaAxis Eta axis to use
81 */
82 void Init(const TAxis& etaAxis);
83 /**
84 * Make a histogram
85 *
86 * @param d Detector
87 * @param r Ring
88 * @param etaAxis Eta axis to use
89 *
90 * @return Newly allocated histogram
91 */
92 TH2D* Make(UShort_t d, Char_t r, const TAxis& etaAxis) const;
93 /**
94 * Clear data
95 *
96 * @param option Not used
97 */
98 void Clear(Option_t* option="");
99 // const TH2D* Get(UShort_t d, Char_t r) const;
100 /**
101 * Get the histogram for a particular detector,ring
102 *
103 * @param d Detector
104 * @param r Ring
105 *
106 * @return Histogram for detector,ring or nul
107 */
108 TH2D* Get(UShort_t d, Char_t r) const;
109 TH2D* fFMD1i; // Histogram for FMD1i
110 TH2D* fFMD2i; // Histogram for FMD2i
111 TH2D* fFMD2o; // Histogram for FMD2o
112 TH2D* fFMD3i; // Histogram for FMD3i
113 TH2D* fFMD3o; // Histogram for FMD3o
9d99b0dd 114
115 ClassDef(Histos,1)
7e4038b5 116 };
117
9d99b0dd 118 //__________________________________________________________________
119 struct RingHistos : public TObject
120 {
121 RingHistos() : fDet(0), fRing('\0'), fName("") {}
122 RingHistos(UShort_t d, Char_t r)
123 : fDet(d), fRing(r), fName(TString::Format("FMD%d%c", d, r))
124 {}
125 RingHistos(const RingHistos& o)
126 : TObject(o), fDet(o.fDet), fRing(o.fRing), fName(o.fName)
127 {}
128 virtual ~RingHistos() {}
129 RingHistos& operator=(const RingHistos& o)
130 {
131 TObject::operator=(o);
132 fDet = o.fDet;
133 fRing = o.fRing;
134 fName = o.fName;
135 return *this;
136 }
137 TList* DefineOutputList(TList* d) const;
138 TList* GetOutputList(TList* d) const;
139 TH1* GetOutputHist(TList* d, const char* name) const;
140 UShort_t fDet;
141 Char_t fRing;
142 TString fName;
143
144 ClassDef(RingHistos,1)
145 };
146
7e4038b5 147};
148
149#endif
150// Local Variables:
151// mode: C++
152// End:
153