Introduction of V0 equalization factors in the ESD and their filling inside the V0...
[u/mrichter/AliRoot.git] / VZERO / AliVZEROReconstructor.h
1 #ifndef ALIVZERORECONSTRUCTOR_H
2 #define ALIVZERORECONSTRUCTOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.*/
4 /* See cxx source for full Copyright notice                              */
5 /* $Id$  */
6
7 ///////////////////////////////////////////////////////////////////////////
8 ///                                                                      //
9 /// class for VZERO reconstruction                                       //
10 ///                                                                      //
11 ///////////////////////////////////////////////////////////////////////////
12
13 #include "AliReconstructor.h"
14 #include "AliCDBManager.h"
15 #include "AliCDBStorage.h"
16 #include "AliCDBEntry.h"
17
18 #include "AliLog.h"
19 #include "AliESDVZERO.h"
20 #include "AliVZERORecoParam.h"
21
22 class TF1;
23 class TH1F;
24 class AliVZEROCalibData;
25 class AliVZEROTriggerData;
26 class AliESDEvent;
27 class AliESDVZEROfriend;
28
29 class AliVZEROReconstructor: public AliReconstructor {
30 public:
31   AliVZEROReconstructor();
32   virtual ~AliVZEROReconstructor();
33   virtual void   Init();
34   
35   virtual void   Reconstruct(AliRawReader* /*rawReader*/, 
36                              TTree* /*clustersTree*/) const {
37                  AliError("Method not implemented"); return;};
38   virtual void   Reconstruct(TTree*, TTree*) const {return;};
39   
40   virtual void   FillESD(TTree* digitsTree, TTree* /*clustersTree*/, 
41                          AliESDEvent* esd) const;
42
43   virtual void   FillESD(AliRawReader* /*rawReader*/, TTree* /*clustersTree*/, 
44                          AliESDEvent* /*esd*/) const {
45                  AliError("Method not implemented"); return;};
46   
47   virtual Bool_t HasDigitConversion() const { return kTRUE; }
48   virtual void   ConvertDigits(AliRawReader* rawReader,
49                                TTree* digitsTree) const;
50
51   static const AliVZERORecoParam* GetRecoParam() { return dynamic_cast<const AliVZERORecoParam*>(AliReconstructor::GetRecoParam(12)); }
52                                  
53   AliCDBStorage     *SetStorage(const char* uri);
54   void GetCollisionMode();
55   
56   AliVZEROCalibData *GetCalibData() const; 
57   Float_t            CorrectLeadingTime(Int_t i, Float_t time, Float_t adc) const;
58
59   enum {kInvalidADC   =  -1024,
60         kInvalidTime  =  -1024};
61
62   AliESDVZERO*    GetESDVZERO() { return fESDVZERO; }
63
64 protected:
65   AliESDVZERO*        fESDVZERO;       // ESD output object  
66   AliESDEvent*             fESD;       // ESD object
67   AliESDVZEROfriend*  fESDVZEROfriend; // ESD friend object (complete raw data)
68   
69 private:
70   AliVZEROReconstructor(const AliVZEROReconstructor& reconstructor);
71   AliVZEROReconstructor& operator = (const AliVZEROReconstructor& reconstructor);
72   
73   AliVZEROCalibData* fCalibData;      //! calibration data
74   AliVZEROTriggerData* fTriggerData;    //! calibration data
75   Float_t            fTimeOffset[64]; //! HPTDC time offsets channel by channel
76   TF1*               fTimeSlewing;    //! Function for time slewing correction
77   TObjArray*         fSaturationCorr; //! Array with functions for correcting the signal saturation
78   TH1F*              fEqFactors;      //! Histogram with the equalization factors used in event-plane reconstruction
79
80   Int_t              fCollisionMode;  // =0->p-p, =1->A-A
81   Float_t            fBeamEnergy;     // beam energy
82
83   mutable TClonesArray *fDigitsArray; // clones-array for ConvertDigits() and FillESD()
84
85   ClassDef(AliVZEROReconstructor, 5)  // class for the VZERO reconstruction
86 };
87
88 #endif