]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ZDC/AliZDCReconstructor.h
Bug in beam type comparing in AliZDCDigitizer that prevented PMT gains to be set...
[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 "AliZDCRecoParam.h"
16 #include "AliESDZDC.h"
17
18 class AliCDBManager;
19 class AliCDBStorage;
20 class AliZDCPedestals;
21 class AliZDCEnCalib;
22 class AliZDCTowerCalib;
23 class AliZDCMBCalib;
24 class AliZDCTDCCalib;
25 class AliZDCRecoParampp;
26 class AliZDCRecoParamPbPb;
27 class AliLog;
28 class AliLoader;
29
30 class AliZDCReconstructor: public AliReconstructor {
31 public:
32   AliZDCReconstructor();
33   virtual ~AliZDCReconstructor();
34
35   virtual void   Init();
36   virtual void   Init(TString beamType, Float_t beamEnergy);
37   virtual Bool_t HasDigitConversion() const {return kFALSE;};
38   
39   virtual void Reconstruct(TTree*digitsTree, TTree* clustersTree) const; 
40   virtual void Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const;
41
42   virtual void FillESD(TTree* /*digitsTree*/, TTree* clustersTree, 
43                        AliESDEvent* esd) const {FillZDCintoESD(clustersTree, esd);}
44   virtual void FillESD(AliRawReader* /*rawReader*/, TTree* clustersTree, 
45                        AliESDEvent* esd) const {FillZDCintoESD(clustersTree, esd);}
46   
47   void   FillZDCintoESD(TTree *clustersTree, AliESDEvent *esd) const;
48   
49   // parameter settings for reconstruction
50   void SetRecoMode(Int_t recoMode, Float_t beamEnergy) 
51        {fRecoMode=recoMode; fBeamEnergy=beamEnergy;}
52   static void SetRecoParam(AliZDCRecoParam * const param)
53               {fgRecoParam = param;}
54   
55   Int_t   GetRecoMode() const {return fRecoMode;}
56   Float_t GetBeamEnergy() const {return fBeamEnergy;}
57   
58   AliESDZDC* GetZDCESDData() const {return fESDZDC;}
59   
60   static const AliZDCRecoParam* GetRecoParam() 
61   {return dynamic_cast<const AliZDCRecoParam*>(AliReconstructor::GetRecoParam(9));}
62     
63   void  SetPedSubMode(Int_t pedsubMode) {fPedSubMode=pedsubMode;}
64   Int_t GetPedSubMode() const {return fPedSubMode;}
65   
66   void    SetSignalThreshold(Float_t val) {fSignalThreshold=val;}
67   Float_t GetSignalThreshold() const {return fSignalThreshold;}
68   
69   // OCDB objects for reconstruction
70   AliCDBStorage       *SetStorage(const char* uri);
71   AliZDCPedestals     *GetPedestalData() const; 
72   AliZDCEnCalib       *GetEnergyCalibData() const; 
73   AliZDCTowerCalib    *GetTowerCalibData() const; 
74   AliZDCMBCalib       *GetMBCalibData() const; 
75   AliZDCTDCCalib      *GetTDCCalibData() const; 
76   
77 private:
78   AliZDCReconstructor(const AliZDCReconstructor&); //Not implemented
79   AliZDCReconstructor& operator =(const AliZDCReconstructor&); //Not implemented
80
81   void   ReconstructEventpp(TTree *clustersTree, 
82          const Float_t* const corrADCZN1, const Float_t* const corrADCZP1, 
83          const Float_t* const corrADCZN2, const Float_t* const corrADCZP2,
84          const Float_t* const corrADCZEM1, const Float_t* const corrADCZEM2,
85          Float_t* sPMRef1, Float_t* sPMRef2, Bool_t isScalerOn, UInt_t* scaler, 
86          Int_t tdcData[32][4], const Int_t* const evQualityBlock, 
87          const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const;
88   void   ReconstructEventPbPb(TTree *clustersTree, 
89          const Float_t* const corrADCZN1, const Float_t* const corrADCZP1, 
90          const Float_t* const corrADCZN2, const Float_t* const corrADCZP2,
91          const Float_t* const corrADCZEM1, const Float_t* const corrADCZEM2,
92          Float_t* sPMRef1, Float_t* sPMRef2, Bool_t isScalerOn, UInt_t* scaler, 
93          Int_t tdcData[32][4], const Int_t* const evQualityBlock, 
94          const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const;
95
96   static AliZDCRecoParam *fgRecoParam; // reconstruction parameters
97
98   static AliZDCMBCalib   *fgMBCalibData;   //! mb calibration data
99   AliZDCPedestals  *fPedData;             //! pedestal calibration data
100   AliZDCEnCalib    *fEnCalibData;         //! energy calibration data
101   AliZDCTowerCalib *fTowCalibData;        //! equalization calibration data
102   AliZDCTDCCalib   *fTDCCalibData;        //! TDC offset data
103   
104   Int_t    fRecoMode;       // =1->p-p, =2->A-A
105   Float_t  fBeamEnergy;     // beam energy
106   Int_t    fNRun;           // Run Number (from raw data)
107   Bool_t   fIsCalibrationMB; // true if run type = "CALIBRATION_MB"
108   Int_t    fPedSubMode;     // =0->mean values, =1->from correlations
109   Float_t  fSignalThreshold; // Threshold value for "triggering" in p-p
110   Double_t fMeanPhase;      // LHC clock phase
111   
112   AliESDZDC* fESDZDC;       // ESD output object  
113
114   ClassDef(AliZDCReconstructor, 13)   // class for the ZDC reconstruction
115 };
116
117 #endif