Line data Source code
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 0 : TObjArray * GetTOFCalArrayOnline() const {return fTOFCalOnline;}
61 0 : AliTOFChannelOnlineArray * GetTOFOnlineDelay() const {return fCal;}
62 0 : AliTOFChannelOnlineStatusArray * GetTOFOnlineStatus() const {return fStatus;}
63 0 : TObjArray * GetTOFCalArrayOnlinePulser() const {return fTOFCalOnlinePulser;}
64 0 : TObjArray * GetTOFCalArrayOnlineNoise() const {return fTOFCalOnlineNoise;}
65 0 : TObjArray * GetTOFCalArrayOnlineHW() const {return fTOFCalOnlineHW;}
66 0 : TObjArray * GetTOFCalArrayOffline() const {return fTOFCalOffline;}
67 0 : TMap * GetConfigMap() const {return fConfigMap;}
68 0 : TH1F * GetTOFSimToT() const {return fTOFSimToT;}
69 0 : TTree * GetTOFCalibTree() const {return fTree;}
70 0 : TChain * GetTOFCalibChain() const {return fChain;}
71 8 : const char * GetOfflineValidity() const {return fkValidity;}
72 0 : void SetOfflineValidity(const char* validity) {fkValidity = validity;}
73 0 : Int_t NChannels()const{return fNChannels;}
74 :
75 : void CreateDeltaBCOffset();
76 : void CreateCTPLatency();
77 : void CreateT0Fill();
78 : void CreateRunParams();
79 0 : AliTOFDeltaBCOffset *GetDeltaBCOffset() const {return fDeltaBCOffset;};
80 0 : AliTOFCTPLatency *GetCTPLatency() const {return fCTPLatency;};
81 0 : AliTOFT0Fill *GetT0Fill() const {return fT0Fill;};
82 0 : AliTOFRunParams *GetRunParams() const {return fRunParams;};
83 0 : 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 0 : void SetNruns(Int_t nruns) {fNruns=nruns;}
142 0 : Int_t GetNruns() const {return fNruns;}
143 0 : void SetFirstRun(Int_t firstRun) {fFirstRun=firstRun;}
144 0 : Int_t GetFirstRun() const {return fFirstRun;}
145 0 : void SetLastRun(Int_t lastRun) {fLastRun=lastRun;}
146 0 : 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 0 : void SetRemoveMeanT0(Bool_t value) {fRemoveMeanT0 = value;}; // setter
161 0 : void SetUseLHCClockPhase(Bool_t value) {fUseLHCClockPhase = value;}; // setter
162 0 : Bool_t GetUseLHCClockPhase() const {return fUseLHCClockPhase;}; // getter
163 0 : void SetCalibrateTOFsignal(Bool_t value) {fCalibrateTOFsignal = value;}; // setter
164 0 : 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 0 : void SetRunParamsSpecificVersion(Int_t value) {fRunParamsSpecificVersion = value;}; // setter
171 :
172 : private:
173 : Int_t fNChannels; // number of TOF channels
174 :
175 : // old calibration objects
176 : TObjArray *fTOFCalOnline; // array of AliTOFChannels storing calib parameters
177 : TObjArray *fTOFCalOnlinePulser; // array of AliTOFChannels storing calib status from pulser // old, before unification of status info
178 : TObjArray *fTOFCalOnlineNoise; // array of AliTOFChannels storing calib status from noise // old, before unification of status info
179 : TObjArray *fTOFCalOnlineHW; // array of AliTOFChannels storing calib status from hardware // old, before unification of status info
180 : TObjArray *fTOFCalOffline; // array of AliTOFChannels storing calib parameters
181 :
182 : // new calibration objects
183 : AliTOFChannelOnlineArray *fCal; // object with delay array for TOF channels
184 : AliTOFChannelOnlineStatusArray *fStatus; // object with status array for TOF channels
185 :
186 : TH1F *fTOFSimToT; // histo with realistic ToT signal from TB Data
187 : const char *fkValidity; // validity for offline calibration object
188 : TTree *fTree; // tree for TOF calibration
189 : TChain *fChain; // chain for TOF calibration
190 : Int_t fNruns; // number of runs to be processed
191 : Int_t fFirstRun; // first run for calibration obj validity
192 : Int_t fLastRun; // last run for calib obj validity
193 : TMap* fConfigMap; // map holding configuration obj
194 :
195 : AliTOFDeltaBCOffset *fDeltaBCOffset; // deltaBC offset
196 : AliTOFCTPLatency *fCTPLatency; // CTP latency
197 : AliTOFT0Fill *fT0Fill; // T0 fill
198 : AliTOFRunParams *fRunParams; // run params
199 : AliLHCClockPhase *fLHCClockPhase; // LHC clock-phase
200 : AliTOFResponseParams *fResponseParams; // run params
201 : TH1F *fReadoutEfficiency; // readout efficiency
202 : TH1C *fProblematic; // problematic
203 :
204 : Bool_t fInitFlag; // init flag
205 : Bool_t fRemoveMeanT0; // remove mean T0
206 : Bool_t fUseLHCClockPhase; // use LHC clock-phase
207 : Bool_t fCalibrateTOFsignal; // calibrate TOF signal
208 : Bool_t fCorrectTExp; // correct expected time
209 :
210 : Int_t fRunParamsSpecificVersion; // RunParams specific version
211 26 : ClassDef(AliTOFcalib,11);
212 : };
213 :
214 : #endif // AliTOFcalib_H
215 :
|