Line data Source code
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 AliZDCSaturationCalib;
23 : class AliZDCTowerCalib;
24 : class AliZDCMBCalib;
25 : class AliZDCTDCCalib;
26 : class AliZDCChMap;
27 : class AliZDCRecoParampp;
28 : class AliZDCRecoParamPbPb;
29 : class AliLog;
30 : class AliLoader;
31 :
32 : class AliZDCReconstructor: public AliReconstructor {
33 : public:
34 : // MAPPING !!!! NB !!!!! MUST BE THE SAME AS FOR AliZDCRawStream.h !!!!
35 : // Module type codes
36 : enum ZDCModules{kV965=1, kV830=2, kTRG=3, kTRGI=4, kPU=5, KV1290=6, kV775N=7};
37 :
38 : // Module type codes
39 : enum ZDCGeoAddr{kFirstADCGeo=0, kLastADCGeo=3, kADDADCGeo=5,
40 : kTDCFakeGeo=8, kZDCTDCGeo=4, kADDTDCGeo=6,
41 : kScalerGeo=16, kPUGeo=29, kTrigScales=30, kTrigHistory=31};
42 :
43 : // Signal codes for ZDC
44 : // Same codes used in DAQ configuration file
45 : // To be changed ONLY IF this file is changed!!!
46 : // **** DO NOT CHANGE THE FOLLOWING LINES!!! ****
47 : enum ZDCSignal{
48 : kNotConnected=0, kVoid=1,
49 : kZNAC=2, kZNA1=3, kZNA2=4, kZNA3=5, kZNA4=6,
50 : kZPAC=7, kZPA1=8, kZPA2=9, kZPA3=10, kZPA4=11,
51 : kZNCC=12, kZNC1=13, kZNC2=14, kZNC3=15, kZNC4=16,
52 : kZPCC=17, kZPC1=18, kZPC2=19, kZPC3=20, kZPC4=21,
53 : kZEM1=22, kZEM2=23,
54 : kZDCAMon=24, kZDCCMon=25,
55 : kZNACoot=26, kZNA1oot=27, kZNA2oot=28, kZNA3oot=29, kZNA4oot=30,
56 : kZPACoot=31, kZPA1oot=32, kZPA2oot=33, kZPA3oot=34, kZPA4oot=35,
57 : kZNCCoot=36, kZNC1oot=37, kZNC2oot=38, kZNC3oot=39, kZNC4oot=40,
58 : kZPCCoot=41, kZPC1oot=42, kZPC2oot=43, kZPC3oot=44, kZPC4oot=45,
59 : kZEM1oot=46, kZEM2oot=47,
60 : kZDCAMonoot=48, kZDCCMonoot=49,
61 : kL1MBI=50, kL1CNI=51, kL1SCI=52, kL1EMDI=53, kL0I=54,
62 : kL1MBO=55, kL1CNO=56, kL1SCO=57, kL1EMDO=58,
63 : kHMBCN=59, kHSCEMD=60,
64 : kZNACD=61, kZNA1D=62, kZNA2D=63, kZNA3D=64, kZNA4D=65,
65 : kZPACD=66, kZPA1D=67, kZPA2D=68, kZPA3D=69, kZPA4D=70,
66 : kZNCCD=71, kZNC1D=72, kZNC2D=73, kZNC3D=74, kZNC4D=75,
67 : kZPCCD=76, kZPC1D=77, kZPC2D=78, kZPC3D=79, kZPC4D=80,
68 : kZEM1D=81, kZEM2D=82,
69 : kZDCAMonD=83, kZDCCMonD=84,
70 : kZNAD=85, kZPAD=86, kZNCD=87, kZPCD=88, kZEMD=89,
71 : kZNA0D=90, kZPA0D=91, kZNC0D=92, kZPC0D=93, k1kHzD=94, kGate=95, kAD=96, kCD=97,
72 : kAorCD=98, kAandCD=99, kZEMORD=100, kAorCorZEMORD=101, kAorCorZEMD=102, kAD0=103, kAD1=104, kAD2=105,
73 : kAD3=106, kAD4=107, kAD5=108, kAD6=109, kAD7=110, kAD8=111, kAD9=112, kAD10=113,
74 : kAD11=114, kAD12=115, kAD13=116, kAD14=117, kAD15=118, kAD0D=119, kAD1D=120, kAD2D=121,
75 : kAD3D=122, kAD4D=123, kAD5D=124, kAD6D=125, kAD7D=126, kAD8D=127, kAD9D=128, kAD10D=129,
76 : kAD11D=130, kAD12D=131, kAD13D=132, kAD14D=133, kAD15D=134, kL0=135,
77 : k1ZAC=136, k1ZED=137, k1ZMD=138, k1ZMB=139
78 : };
79 : // MAPPING !!!! NB !!!!! MUST BE THE SAME AS FOR AliZDCRawStream.h !!!!
80 :
81 : AliZDCReconstructor();
82 : virtual ~AliZDCReconstructor();
83 :
84 : virtual void Init();
85 : virtual void Init(TString beamType, Float_t beamEnergy);
86 24 : virtual Bool_t HasDigitConversion() const {return kFALSE;};
87 :
88 : virtual void Reconstruct(TTree*digitsTree, TTree* clustersTree) const;
89 : virtual void Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const;
90 :
91 : virtual void FillESD(TTree* /*digitsTree*/, TTree* clustersTree,
92 8 : AliESDEvent* esd) const {FillZDCintoESD(clustersTree, esd);}
93 : virtual void FillESD(AliRawReader* /*rawReader*/, TTree* clustersTree,
94 8 : AliESDEvent* esd) const {FillZDCintoESD(clustersTree, esd);}
95 :
96 : void FillZDCintoESD(TTree *clustersTree, AliESDEvent *esd) const;
97 :
98 : int GetChannelSignal(int det, int quad, Bool_t intime=kTRUE) const;
99 :
100 : // parameter settings for reconstruction
101 : void SetRecoMode(Int_t recoMode, Float_t beamEnergy)
102 0 : {fRecoMode=recoMode; fBeamEnergy=beamEnergy;}
103 : static void SetRecoParam(AliZDCRecoParam * const param)
104 0 : {fgRecoParam = param;}
105 :
106 0 : Int_t GetRecoMode() const {return fRecoMode;}
107 0 : Float_t GetBeamEnergy() const {return fBeamEnergy;}
108 :
109 0 : AliESDZDC* GetZDCESDData() const {return fESDZDC;}
110 :
111 : static const AliZDCRecoParam* GetRecoParam()
112 0 : {return dynamic_cast<const AliZDCRecoParam*>(AliReconstructor::GetRecoParam(9));}
113 :
114 0 : void SetSignalThreshold(Float_t val) {fSignalThreshold=val;}
115 0 : Float_t GetSignalThreshold() const {return fSignalThreshold;}
116 :
117 : // OCDB objects for reconstruction
118 : AliCDBStorage *SetStorage(const char* uri);
119 : AliZDCPedestals *GetPedestalData() const;
120 : AliZDCEnCalib *GetEnergyCalibData() const;
121 : AliZDCSaturationCalib *GetSaturationCalibData() const;
122 : AliZDCTowerCalib *GetTowerCalibData() const;
123 : AliZDCMBCalib *GetMBCalibData() const;
124 : AliZDCTDCCalib *GetTDCCalibData() const;
125 : AliZDCChMap *GetMapping() const;
126 :
127 : private:
128 : AliZDCReconstructor(const AliZDCReconstructor&); //Not implemented
129 : AliZDCReconstructor& operator =(const AliZDCReconstructor&); //Not implemented
130 :
131 : void ReconstructEventpp(TTree *clustersTree,
132 : Float_t corrADC[24][2], Int_t signalCodeADC[24], Int_t signalCodeTDC[7], Bool_t isScalerOn, UInt_t* scaler,
133 : Int_t tdcData[32][4], const Int_t* const evQualityBlock,
134 : const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const;
135 :
136 : void ReconstructEventPbPb(TTree *clustersTree,
137 : Float_t corrADC[24][2], Int_t signalCodeADC[24], Int_t signalCodeTDC[7], Bool_t isScalerOn, UInt_t* scaler,
138 : Int_t tdcData[32][4], const Int_t* const evQualityBlock,
139 : const Int_t* const triggerBlock, const Int_t* const chBlock, UInt_t puBits) const;
140 :
141 : static AliZDCRecoParam *fgRecoParam; // reconstruction parameters
142 :
143 : static AliZDCMBCalib *fgMBCalibData; //! mb calibration data
144 : AliZDCPedestals *fPedData; //! pedestal calibration data
145 : AliZDCEnCalib *fEnCalibData; //! energy calibration data
146 : AliZDCSaturationCalib *fSatCalibData; //! energy calibration data
147 : AliZDCTowerCalib *fTowCalibData; //! equalization calibration data
148 : AliZDCTDCCalib *fTDCCalibData; //! TDC offset data
149 : AliZDCChMap *fMapping; //! Mapping from OCDB
150 :
151 : Int_t fRecoMode; // =1->p-p, p-A (A-p), =2->A-A
152 : Float_t fBeamEnergy; // beam energy
153 : Int_t fNRun; // Run Number (from raw data)
154 : Bool_t fIsCalibrationMB; // true if run type = "CALIBRATION_MB"
155 : Float_t fSignalThreshold; // Threshold value for "triggering" in p-p
156 : Double_t fMeanPhase; // LHC clock phase
157 :
158 : AliESDZDC* fESDZDC; // ESD output object
159 :
160 72 : ClassDef(AliZDCReconstructor, 15) // class for the ZDC reconstruction
161 : };
162 :
163 : #endif
|