enable and disable detectors
[u/mrichter/AliRoot.git] / HLT / global / physics / AliHLTMultiplicityCorrelations.h
1 //-*- Mode: C++ -*-
2
3 // $Id: AliHLTMultiplicityCorrelations.h  $
4 #ifndef ALIHLTMULTIPLICITYCORRELATIONS_H
5 #define ALIHLTMULTIPLICITYCORRELATIONS_H
6
7 /* This file is property of and copyright by the ALICE HLT Project        * 
8  * ALICE Experiment at CERN, All rights reserved.                         *
9  * See cxx source for full Copyright notice                               */
10
11 /** @file   AliHLTMultiplicityCorrelations.h
12     @author Jochen Thaeder
13     @date   
14     @brief  Correlation plots for multiplicity studies
15 */
16
17 // see below for class documentation
18 // or
19 // refer to README to build package
20 // or
21 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
22
23 #include "AliHLTLogging.h"
24
25 #include "AliESDtrackCuts.h"
26 #include "AliESDEvent.h"
27 #include "AliESDVZERO.h"
28 #include "AliESDZDC.h"
29
30 #include "TList.h"
31
32 class TH1;
33
34
35 /**
36  * @class AliHLTMultiplicityCorrelations
37  *
38  * @ingroup alihlt_physics
39  */
40
41 class AliHLTMultiplicityCorrelations : public TObject, public AliHLTLogging {
42 public:
43   
44   /*
45    * ---------------------------------------------------------------------------------
46    *                            Constructor / Destructor
47    * ---------------------------------------------------------------------------------
48    */
49
50   /** Constructor */
51   AliHLTMultiplicityCorrelations();
52   
53   /** Destructor */
54   ~AliHLTMultiplicityCorrelations();
55
56   /*
57    * ---------------------------------------------------------------------------------
58    *                         Initialize / Setup / Reset - public
59    * ---------------------------------------------------------------------------------
60    */
61
62   /** Initialize class and members */
63   Int_t Initialize();
64
65   /*
66    * ---------------------------------------------------------------------------------
67    *                                Setter - public
68    * ---------------------------------------------------------------------------------
69    */
70
71   /** Set ESD track cuts */
72   void SetESDTrackCuts(AliESDtrackCuts *cuts) { fESDTrackCuts = cuts; }
73
74   /** Set SPD clusters from inner and outer layer */
75   void SetSPDClusters(Int_t inner, Int_t outer) { fSpdNClustersInner = inner; fSpdNClustersOuter = outer; }
76
77   /** Set Binning of VZERO */
78   void SetBinningVzero(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
79     fVzeroBinning = i; fVzeroBinningMin = f1; fVzeroBinningMax = f2;
80   }
81
82   /** Set Binning of TPC */
83   void SetBinningTpc(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
84     fTpcBinning = i; fTpcBinningMin = f1; fTpcBinningMax = f2;
85   }
86
87   /** Set Binning of ZDC */
88   void SetBinningZdc(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
89     fZdcBinning = i; fZdcBinningMin = f1; fZdcBinningMax = f2;
90   }
91
92   /** Set Binning of ZEM */
93   void SetBinningZem(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
94     fZemBinning = i; fZemBinningMin = f1; fZemBinningMax = f2;
95   }
96
97   /** Set Binning of ZNP */
98   void SetBinningZnp(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
99     fZnpBinning = i; fZnpBinningMin = f1; fZnpBinningMax = f2;
100   }
101
102   /** Set Binning of CALO */
103   void SetBinningCalo(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
104     fCaloBinning = i; fCaloBinningMin = f1; fCaloBinningMax = f2;
105   }
106
107   /** Set Binning of SPD */
108   void SetBinningSpd(Int_t i=1, Float_t f1=0., Float_t f2=1.) {
109     fSpdBinning = i; fSpdBinningMin = f1; fSpdBinningMax = f2;
110   }
111
112   /** Set process PHOS */
113   void SetProcessPhos(Bool_t b=kTRUE)  { fProcessPhos  = b; }
114   /** Set process EMCAL */
115   void SetProcessEmcal(Bool_t b=kTRUE) { fProcessEmcal = b; }
116
117
118   /** Enable / Disable detectors */
119   void SetProcessCALO(Bool_t b = kTRUE) { fProcessCALO = b; }
120   void SetProcessSPD(Bool_t b = kTRUE)  { fProcessSPD = b; }
121   void SetProcessTPC(Bool_t b = kTRUE)  { fProcessTPC = b; }
122   void SetProcessZDC(Bool_t b = kTRUE)  { fProcessZDC = b; }
123   void SetProcessVZERO(Bool_t b = kTRUE){ fProcessVZERO = b; }
124
125   /*
126    * ---------------------------------------------------------------------------------
127    *                                 Getter - public
128    * ---------------------------------------------------------------------------------
129    */
130
131   /** Get List of histograms */
132   TList* GetHistList() const { return fHistList; }
133
134   /*
135    * ---------------------------------------------------------------------------------
136    *                             Process - public
137    * ---------------------------------------------------------------------------------
138    */
139   
140   /** Process current event */
141   Int_t ProcessEvent( AliESDEvent *esd, AliESDVZERO* esdVZERO, Int_t nSpdClusters );
142
143   Int_t ProcessEvent( AliESDEvent *esd ) {
144     return ProcessEvent(esd, NULL, 0);
145   }
146
147
148   ///////////////////////////////////////////////////////////////////////////////////
149   
150  private:
151  
152   /** copy constructor prohibited */
153   AliHLTMultiplicityCorrelations(const AliHLTMultiplicityCorrelations&);
154   
155   /** assignment operator prohibited */
156   AliHLTMultiplicityCorrelations& operator=(const AliHLTMultiplicityCorrelations&);
157
158   /*
159    * ---------------------------------------------------------------------------------
160    *                         Initialize / Setup / Reset - private
161    * ---------------------------------------------------------------------------------
162    */
163
164   /** Add esd object
165    * param esd Ptr to AliESDEvent
166    * return kTRUE if AliESDEvent and Vertex present
167    */
168   Bool_t AddESDEvent( AliESDEvent* esd );
169
170   /** Setup histograms */
171   Int_t SetupHistograms();
172
173   /** Setup VZERO histograms */
174   Int_t SetupVZERO();
175
176   /** Setup ZDC histograms */
177   Int_t SetupZDC();
178
179   /** Setup TPC histograms */
180   Int_t SetupTPC();
181
182   /** Setup correlation histograms */
183   Int_t SetupCorrelations();
184   
185   /** Setup CALO histograms */
186   Int_t SetupCALO();
187
188   /** Setup SPD histograms */
189   Int_t SetupSPD();
190
191   /*
192    * ---------------------------------------------------------------------------------
193    *                             Process - private
194    * ---------------------------------------------------------------------------------
195    */
196
197   /** Process current event - TPC */
198   Int_t ProcessTPC();
199
200   /** Process current event - SPD */
201   Int_t ProcessSPD();
202   
203   /** Process current event - VZERO */
204   Int_t ProcessVZERO();
205
206   /** Process current event - ZDC and correlations */
207   Int_t ProcessZDC();
208   
209   /** Process current event - CALO */
210   Int_t ProcessCALO();
211   
212   /*
213    * ---------------------------------------------------------------------------------
214    *                             Members - private
215    * ---------------------------------------------------------------------------------
216    */
217
218   /** List of histograms */ 
219   TList           *fHistList;             // see above
220
221   /** Ptr to AliESDEvent */
222   AliESDEvent     *fESDEvent;             //! transient
223
224   /** Ptr to ZDC object in AliESDEvent*/ 
225   AliESDZDC       *fESDZDC;               //! transient
226
227   /** Ptr to VZERO object in AliESDEvent*/ 
228   AliESDVZERO     *fESDVZERO;             //! transient
229
230   /** Ptr to AliESD track cuts */
231   AliESDtrackCuts *fESDTrackCuts;         //! transient
232
233   // -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
234
235   /** Process TPC information */
236   Bool_t           fProcessTPC;
237
238   /** Process SPD information */
239   Bool_t           fProcessSPD;
240
241   /** Process VZERO information */
242   Bool_t           fProcessVZERO;
243
244   /** Process ZDC information */
245   Bool_t           fProcessZDC;
246
247   /** Process CALO information */
248   Bool_t           fProcessCALO;
249
250   // -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
251
252   /** N ESD tracks */
253   Int_t fEsdTracks;
254
255   /** N ESD tracks accepted */
256   Int_t fEsdTracksA;
257
258   /** N TPC tracks */
259   Int_t fTpcTracks;
260
261   /** N TPC tracks accepted */
262   Int_t fTpcTracksA;
263
264   /** VZERO mult */
265   Float_t fVzeroMult;
266
267   /** VZERO mult A */
268   Float_t fVzeroMultA;
269
270   /** VZERO mult C */
271   Float_t fVzeroMultC;
272
273   /** VZERO flagged mult */
274   Float_t fVzeroMultFlagged;
275
276   /** VZERO flagged mult A */
277   Float_t fVzeroMultFlaggedA;
278
279   /** VZERO flagged mult C */
280   Float_t fVzeroMultFlaggedC;
281
282   /** Spd N clusters */
283   Int_t   fSpdNClusters;
284
285   /** Spd N clusters inner layer*/
286   Int_t   fSpdNClustersInner;
287
288   /** Spd N clusters outer layer */
289   Int_t   fSpdNClustersOuter;
290
291   // -- -- -- 
292
293   /** Binnning VZERO */
294   Int_t   fVzeroBinning;
295   Float_t fVzeroBinningMin;
296   Float_t fVzeroBinningMax;
297
298   /** Binnning TPC */
299   Int_t   fTpcBinning;
300   Float_t fTpcBinningMin;
301   Float_t fTpcBinningMax;
302
303   /** Binnning ZDC */
304   Int_t   fZdcBinning;
305   Float_t fZdcBinningMin;
306   Float_t fZdcBinningMax;
307
308   /** Binnning ZEM */
309   Int_t   fZemBinning;
310   Float_t fZemBinningMin;
311   Float_t fZemBinningMax;
312
313   /** Binnning ZNP */
314   Int_t   fZnpBinning;
315   Float_t fZnpBinningMin;
316   Float_t fZnpBinningMax;
317   
318   /** CALO flags */
319   Bool_t fProcessPhos; 
320   Bool_t fProcessEmcal;
321   
322   /** CALO variables */
323   Float_t fPhosTotalEt;
324   Float_t fEmcalTotalEt;
325   
326   /** Binnning CALO */
327   Int_t   fCaloBinning;
328   Float_t fCaloBinningMin;
329   Float_t fCaloBinningMax;
330
331   /** Binnning SPD */
332   Int_t   fSpdBinning;
333   Float_t fSpdBinningMin;
334   Float_t fSpdBinningMax;
335   
336   ClassDef(AliHLTMultiplicityCorrelations, 1);
337 };
338 #endif