Updated reco alghorithm, changes in OCDB object and in RecoParam objects, new classes...
[u/mrichter/AliRoot.git] / ZDC / AliZDCReconstructor.h
1 #ifndef ALIZDCRECONSTRUCTOR_H
2 #define ALIZDCRECONSTRUCTOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 ///////////////////////////////////////////////////////////////////////////////
9 //                                                                           //
10 // class for ZDC reconstruction                                              //
11 //                                                                           //
12 ///////////////////////////////////////////////////////////////////////////////
13
14 #include "AliReconstructor.h"
15 #include "AliCDBManager.h"
16 #include "AliCDBStorage.h"
17 #include "AliZDCPedestals.h"
18 #include "AliZDCEnCalib.h"
19 #include "AliZDCTowerCalib.h"
20 #include "AliZDCRecoParam.h"
21 #include "AliZDCRecoParampp.h"
22 #include "AliZDCRecoParamPbPb.h"
23 #include "AliLog.h"
24
25 class AliLoader;
26
27 class AliZDCReconstructor: public AliReconstructor {
28 public:
29   AliZDCReconstructor();
30   virtual ~AliZDCReconstructor();
31
32   virtual void   Init();
33   virtual Bool_t HasDigitConversion() const {return kFALSE;};
34   
35   virtual void Reconstruct(TTree* digitsTree, TTree* clustersTree) const; 
36   virtual void Reconstruct(AliRawReader* rawReader, TTree* clustersTree);
37
38   virtual void FillESD(TTree* /*digitsTree*/, TTree* clustersTree, AliESDEvent* esd) const 
39                 {FillZDCintoESD(clustersTree, esd);}
40   virtual void FillESD(AliRawReader* /*rawReader*/, TTree* clustersTree, AliESDEvent* esd) const 
41                 {FillZDCintoESD(clustersTree, esd);}
42   
43   // parameter settings for reconstruction
44   void SetRecoMode(Int_t recoMode, Float_t beamEnergy) 
45                   {fRecoMode=recoMode; fBeamEnergy=beamEnergy;}
46   static void SetRecoParam(AliZDCRecoParam * param){fRecoParam = param;}
47   
48   Int_t   GetRecoMode() {return fRecoMode;}
49   Float_t GetBeamEnergy() {return fBeamEnergy;}
50   
51   static const AliZDCRecoParam* GetRecoParam() {return fRecoParam;}
52
53   void  SetPedSubMode(Int_t pedsubMode) {fPedSubMode=pedsubMode;}
54   Int_t GetPedSubMode() {return fPedSubMode;}
55   
56   // OCDB objects for reconstruction
57   AliCDBStorage   *SetStorage(const char* uri);
58   AliZDCPedestals *GetPedData() const; 
59   AliZDCEnCalib   *GetEnCalibData() const; 
60   AliZDCTowerCalib  *GetTowCalibData() const; 
61   AliZDCRecoParampp   *GetppRecoParamFromOCDB() const;  
62   AliZDCRecoParamPbPb *GetPbPbRecoParamFromOCDB() const;  
63   
64   void WritePbPbRecoParamInOCDB() const;
65
66 private:
67   AliZDCReconstructor(const AliZDCReconstructor&);
68   AliZDCReconstructor& operator =(const AliZDCReconstructor&);
69
70   void   ReconstructEventpp(TTree *clustersTree, 
71             Float_t* ZN1ADCCorr, Float_t* ZP1ADCCorr, Float_t* ZN2ADCCorr, Float_t* ZP2ADCCorr,
72             Float_t* ZEM1ADCCorr, Float_t* ZEM2ADCCorr, Float_t* PMRef1, Float_t* PMRef2) const;
73   void   ReconstructEventPbPb(TTree *clustersTree, 
74             Float_t* ZN1ADCCorr, Float_t* ZP1ADCCorr, Float_t* ZN2ADCCorr, Float_t* ZP2ADCCorr,
75             Float_t* ZEM1ADCCorr, Float_t* ZEM2ADCCorr, Float_t* PMRef1, Float_t* PMRef2) const;
76   void   BuildRecoParam(TH2F* hCorr, TH2F* hCorrC, TH2F* hCorrA,
77                         Float_t ZDCC, Float_t ZDCA, Float_t ZEM) const;
78
79   void   FillZDCintoESD(TTree *clustersTree, AliESDEvent*esd) const;
80
81
82   static AliZDCRecoParam *fRecoParam; // reconstruction parameters
83
84   AliZDCPedestals  *fPedData;       //! pedestal calibration data
85   AliZDCEnCalib    *fEnCalibData;   //! energy calibration data
86   AliZDCTowerCalib *fTowCalibData;  //! equalization calibration data
87   
88   Int_t   fRecoMode;        // =1->p-p, =2->A-A
89   Float_t fBeamEnergy;      // beam energy
90   Int_t   fNRun;            // Run Number (from raw data)
91   Bool_t  fIsCalibrationMB; // true if run type = "CALIBRATION_MB"
92   Int_t   fPedSubMode;      // =0->mean values, =1->from correlations
93   UInt_t  fRecoFlag;        // flag indicating problems in reco
94
95   ClassDef(AliZDCReconstructor, 7)   // class for the ZDC reconstruction
96 };
97
98 #endif