warning fix
[u/mrichter/AliRoot.git] / TOF / AliTOFcalib.h
1 #ifndef ALITOFCALIB_H
2 #define ALITOFCALIB_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //////////////////////////////////////////////////////////////////
8 //  class for TOF calibration:: simulation of uncalibrated data //
9 //////////////////////////////////////////////////////////////////
10
11 #define CHENTRIESSMALL       300   // number of entries per TOF channel per run
12                                    // (to be divided by 3 to get the 
13                                    // real number of entries), smallarray 
14 #define MAXCHENTRIESSMALL  10000   // max number of entries per TOF channel 
15                                    // (to be divided by 3 to get the 
16                                    // real number of entries), smallarray 
17                                    
18 #define NIDXSMALL              3   // number of values stored 
19                                    // after Comb PID per ESD track
20 #define DELTAIDXTOT            0   // index for ToT in bigarray
21 #define DELTAIDXTIME           1   // index for TOF time in big/smallarray
22 #define DELTAIDXPID            2   // index for Exp Time after Comb PID 
23                                    // in smallarray
24 #define MEANENTRIES           15   // Mean number of entries per channel 
25                                    // to perform calibration
26
27 #include "TTask.h"
28
29 class TArrayF;
30 class TF1;
31 class TH1F;
32 class TH1C;
33 class TObjArray;
34 class TTree;
35 class TChain;
36 class TMap;
37
38 //class AliESD;
39
40 class AliTOFCal;
41 class AliTOFRecoParam;
42 class AliTOFChannelOnlineStatusArray;
43 class AliTOFChannelOnlineArray;
44 class AliTOFDeltaBCOffset;
45 class AliTOFCTPLatency;
46 class AliTOFT0Fill;
47 class AliTOFRunParams;
48 class AliTOFResponseParams;
49 class AliESDEvent;
50 class AliLHCClockPhase;
51
52 class AliTOFcalib:public TTask{
53 public:
54   AliTOFcalib();          // ctor
55   AliTOFcalib(const AliTOFcalib & calib); // copy constructor
56   AliTOFcalib& operator=(const AliTOFcalib & calib); // assignment operator
57   virtual ~AliTOFcalib() ; // dtor
58   void CreateCalArrays();
59   void CreateCalObjects();
60   TObjArray * GetTOFCalArrayOnline() const {return fTOFCalOnline;}
61   AliTOFChannelOnlineArray * GetTOFOnlineDelay() const {return fCal;}
62   AliTOFChannelOnlineStatusArray * GetTOFOnlineStatus() const {return fStatus;}
63   TObjArray * GetTOFCalArrayOnlinePulser() const {return fTOFCalOnlinePulser;}
64   TObjArray * GetTOFCalArrayOnlineNoise() const {return fTOFCalOnlineNoise;}
65   TObjArray * GetTOFCalArrayOnlineHW() const {return fTOFCalOnlineHW;}
66   TObjArray * GetTOFCalArrayOffline() const {return fTOFCalOffline;}
67   TMap * GetConfigMap() const {return fConfigMap;}
68   TH1F * GetTOFSimToT() const {return fTOFSimToT;}
69   TTree * GetTOFCalibTree() const {return fTree;}
70   TChain * GetTOFCalibChain() const {return fChain;}
71   const char * GetOfflineValidity() const {return fkValidity;}
72   void SetOfflineValidity(const char* validity) {fkValidity = validity;}
73   Int_t NChannels()const{return fNChannels;}
74
75   void CreateDeltaBCOffset();
76   void CreateCTPLatency();
77   void CreateT0Fill();
78   void CreateRunParams();
79   AliTOFDeltaBCOffset *GetDeltaBCOffset() const {return fDeltaBCOffset;};
80   AliTOFCTPLatency *GetCTPLatency() const {return fCTPLatency;};
81   AliTOFT0Fill *GetT0Fill() const {return fT0Fill;};
82   AliTOFRunParams *GetRunParams() const {return fRunParams;};
83   AliTOFResponseParams *GetResponseParams() const {return fResponseParams;};
84
85   // Methods to retrieve/write parameters from/on CDB
86   // writing
87
88   void WriteSimHistoOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun, TH1F *histo);
89   void WriteConfigMapOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
90   void WriteConfigMapOnCDB(const Char_t *sel);
91   // new calib objs
92   void WriteParOnlineDelayOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
93   void WriteParOnlineStatusOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
94   void WriteParOnlineDelayOnCDB(const Char_t *sel);
95   void WriteParOnlineStatusOnCDB(const Char_t *sel);
96   // old calib objs
97   void WriteParOnlineOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
98   void WriteParOnlinePulserOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
99   void WriteParOnlineNoiseOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
100   void WriteParOnlineHWOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
101   void WriteParOfflineOnCDB(const Char_t *sel, const Char_t *validity, Int_t minrun, Int_t maxrun);
102   void WriteParOnlineOnCDB(const Char_t *sel);
103   void WriteParOnlinePulserOnCDB(const Char_t *sel);  // old, before unification of status info
104   void WriteParOnlineNoiseOnCDB(const Char_t *sel);   // old, before unification of status info
105   void WriteParOnlineHWOnCDB(const Char_t *sel);      // old, before unification of status info
106   void WriteParOfflineOnCDB(const Char_t *sel, const Char_t *validity);
107
108   void WriteDeltaBCOffsetOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
109   void WriteCTPLatencyOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
110   void WriteT0FillOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
111   void WriteRunParamsOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
112   void WriteReadoutEfficiencyOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
113   void WriteProblematicOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
114
115   // reading
116   Bool_t ReadSimHistoFromCDB(const Char_t *sel, Int_t nrun);
117   Bool_t ReadConfigMapFromCDB(const Char_t *sel, Int_t nrun);
118   // new objs
119   Bool_t ReadParOnlineDelayFromCDB(const Char_t *sel, Int_t nrun);
120   Bool_t ReadParOnlineStatusFromCDB(const Char_t *sel, Int_t nrun);
121   // old objs
122   Bool_t ReadParOnlineFromCDB(const Char_t *sel, Int_t nrun);
123   Bool_t ReadParOnlinePulserFromCDB(const Char_t *sel, Int_t nrun);  // old, before unification of status info
124   Bool_t ReadParOnlineNoiseFromCDB(const Char_t *sel, Int_t nrun);   // old, before unification of status info
125   Bool_t ReadParOnlineHWFromCDB(const Char_t *sel, Int_t nrun);      // old, before unification of status info
126   Bool_t ReadParOfflineFromCDB(const Char_t *sel, Int_t nrun);
127   void WriteRecParOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun, AliTOFRecoParam *param);
128   void WriteRecParOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun, TObjArray *arr);
129   AliTOFRecoParam * ReadRecParFromCDB(const Char_t *sel, Int_t nrun, Int_t eventType=0);
130   void CreateTreeFromCDB(Int_t minrun, Int_t maxrun);
131   void CreateTreeFromFile(Int_t minrun, Int_t maxrun);
132   void CreateTreeFromGrid(Int_t minrun, Int_t maxrun);
133   void CreateChainFromGrid(Int_t minrun, Int_t maxrun);
134   Int_t Calibrate(Option_t *optionSave="", Option_t *optionFit="RQ");
135   Int_t Calibrate(Int_t nch,Int_t *ich, Option_t *optionSave="", Option_t *optionFit="RQ");
136   Int_t Calibrate(Int_t ichmin, Int_t ichmax, Option_t *optionSave="", Option_t *optionFit="RQ");
137   Int_t Calibrate(Int_t ich, Option_t *optionSave="", Option_t *optionFit="RQ");
138   Int_t CalibrateFromProfile(Int_t ich, Option_t *optionSave="", Option_t *optionFit="RQ");
139   TH1F* Profile(Int_t i);
140   Int_t FindBins (TH1F* h, Double_t *bins) const;
141   void SetNruns(Int_t nruns) {fNruns=nruns;}
142   Int_t GetNruns() const {return fNruns;}
143   void SetFirstRun(Int_t firstRun) {fFirstRun=firstRun;}
144   Int_t GetFirstRun() const {return fFirstRun;}
145   void SetLastRun(Int_t lastRun) {fLastRun=lastRun;}
146   Int_t GetLastRun() const {return fLastRun;}
147
148   Bool_t ReadDeltaBCOffsetFromCDB(const Char_t *sel, Int_t nrun);
149   Bool_t ReadCTPLatencyFromCDB(const Char_t *sel, Int_t nrun);
150   Bool_t ReadT0FillFromCDB(const Char_t *sel, Int_t nrun);
151   Bool_t ReadRunParamsFromCDB(const Char_t *sel, Int_t nrun);
152   Bool_t ReadLHCClockPhaseFromCDB(const Char_t *sel, Int_t nrun);
153   Bool_t ReadReadoutEfficiencyFromCDB(const Char_t *sel, Int_t nrun);
154   Bool_t ReadProblematicFromCDB(const Char_t *sel, Int_t nrun);
155
156   Bool_t Init(Int_t run = -1); // init
157   Double_t GetTimeCorrection(Int_t index, Double_t tot, Int_t deltaBC, Int_t l0l1, UInt_t timestamp); // get time correction
158   void CalibrateESD(AliESDEvent *event); // calibrate ESD
159   void CalibrateTExp(AliESDEvent *event) const; // calibrate TExp
160   void SetRemoveMeanT0(Bool_t value) {fRemoveMeanT0 = value;}; // setter
161   void SetUseLHCClockPhase(Bool_t value) {fUseLHCClockPhase = value;}; // setter
162   Bool_t GetUseLHCClockPhase() const {return fUseLHCClockPhase;}; // getter
163   void SetCalibrateTOFsignal(Bool_t value) {fCalibrateTOFsignal = value;}; // setter
164   void SetCorrectTExp(Bool_t value) {fCorrectTExp = value;}; // setter
165   Bool_t IsChannelEnabled(Int_t index, Bool_t checkEfficiency = kTRUE, Bool_t checkProblematic = kTRUE); // is channel enabled
166   Bool_t IsChannelEfficient(Int_t index); // is channel efficient
167   Bool_t IsChannelProblematic(Int_t index); // is channel problematic
168   Double_t TuneForMC(AliESDEvent *event, Double_t resolution); // tune for MC
169
170 private:
171   Int_t fNChannels; // number of TOF channels
172
173   // old calibration objects
174   TObjArray *fTOFCalOnline;       // array of AliTOFChannels storing calib parameters
175   TObjArray *fTOFCalOnlinePulser; // array of AliTOFChannels storing calib status from pulser   // old, before unification of status info
176   TObjArray *fTOFCalOnlineNoise;  // array of AliTOFChannels storing calib status from noise    // old, before unification of status info
177   TObjArray *fTOFCalOnlineHW;  // array of AliTOFChannels storing calib status from hardware    // old, before unification of status info
178   TObjArray *fTOFCalOffline;       // array of AliTOFChannels storing calib parameters
179
180   // new calibration objects
181   AliTOFChannelOnlineArray *fCal; // object with delay array for TOF channels
182   AliTOFChannelOnlineStatusArray *fStatus; // object with status array for TOF channels
183
184   TH1F *fTOFSimToT;        // histo with realistic ToT signal from TB Data
185   const char *fkValidity;  // validity for offline calibration object
186   TTree *fTree;            // tree for TOF calibration
187   TChain *fChain;          // chain for TOF calibration
188   Int_t fNruns;            // number of runs to be processed
189   Int_t fFirstRun;            // first run for calibration obj validity
190   Int_t fLastRun;            // last run for calib obj validity
191   TMap* fConfigMap;          // map holding configuration obj
192
193   AliTOFDeltaBCOffset *fDeltaBCOffset; // deltaBC offset
194   AliTOFCTPLatency *fCTPLatency; // CTP latency
195   AliTOFT0Fill *fT0Fill; // T0 fill
196   AliTOFRunParams *fRunParams; // run params
197   AliLHCClockPhase *fLHCClockPhase; // LHC clock-phase
198   AliTOFResponseParams *fResponseParams; // run params
199   TH1F *fReadoutEfficiency; // readout efficiency
200   TH1C *fProblematic; // problematic
201   
202   Bool_t fInitFlag; // init flag
203   Bool_t fRemoveMeanT0; // remove mean T0
204   Bool_t fUseLHCClockPhase; // use LHC clock-phase
205   Bool_t fCalibrateTOFsignal; // calibrate TOF signal
206   Bool_t fCorrectTExp; // correct expected time
207
208   ClassDef(AliTOFcalib,11);
209 };
210
211 #endif // AliTOFcalib_H
212