]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TOF/AliTOFcalib.h
bugfix: corrected calculation of slice and partition from track point Id
[u/mrichter/AliRoot.git] / TOF / AliTOFcalib.h
CommitLineData
6dc9348d 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
0a749fa5 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
6dc9348d 27#include "TTask.h"
0e46b9ae 28
29class TArrayF;
30class TF1;
31class TH1F;
8da43270 32class TH1C;
0e46b9ae 33class TObjArray;
0a749fa5 34class TTree;
296591ad 35class TChain;
17149e6b 36class TMap;
0e46b9ae 37
5c7c93fa 38//class AliESD;
0e46b9ae 39
40class AliTOFCal;
7037bd93 41class AliTOFRecoParam;
17149e6b 42class AliTOFChannelOnlineStatusArray;
43class AliTOFChannelOnlineArray;
2bf4d9d6 44class AliTOFDeltaBCOffset;
45class AliTOFCTPLatency;
46class AliTOFT0Fill;
f04b3a69 47class AliTOFRunParams;
5b4ed716 48class AliTOFResponseParams;
49class AliESDEvent;
6dc9348d 50
51class AliTOFcalib:public TTask{
52public:
53 AliTOFcalib(); // ctor
7aeeaf38 54 AliTOFcalib(const AliTOFcalib & calib); // copy constructor
55 AliTOFcalib& operator=(const AliTOFcalib & calib); // assignment operator
6dc9348d 56 virtual ~AliTOFcalib() ; // dtor
0a749fa5 57 void CreateCalArrays();
24d1e16e 58 void CreateCalObjects();
0a749fa5 59 TObjArray * GetTOFCalArrayOnline() const {return fTOFCalOnline;}
17149e6b 60 AliTOFChannelOnlineArray * GetTOFOnlineDelay() const {return fCal;}
61 AliTOFChannelOnlineStatusArray * GetTOFOnlineStatus() const {return fStatus;}
7fffa85b 62 TObjArray * GetTOFCalArrayOnlinePulser() const {return fTOFCalOnlinePulser;}
63 TObjArray * GetTOFCalArrayOnlineNoise() const {return fTOFCalOnlineNoise;}
64 TObjArray * GetTOFCalArrayOnlineHW() const {return fTOFCalOnlineHW;}
0a749fa5 65 TObjArray * GetTOFCalArrayOffline() const {return fTOFCalOffline;}
17149e6b 66 TMap * GetConfigMap() const {return fConfigMap;}
d4ad0d6b 67 TH1F * GetTOFSimToT() const {return fTOFSimToT;}
0a749fa5 68 TTree * GetTOFCalibTree() const {return fTree;}
296591ad 69 TChain * GetTOFCalibChain() const {return fChain;}
0a749fa5 70 const char * GetOfflineValidity() const {return fkValidity;}
71 void SetOfflineValidity(const char* validity) {fkValidity = validity;}
d4ad0d6b 72 Int_t NChannels()const{return fNChannels;}
17149e6b 73
2bf4d9d6 74 void CreateDeltaBCOffset();
75 void CreateCTPLatency();
76 void CreateT0Fill();
f04b3a69 77 void CreateRunParams();
2bf4d9d6 78 AliTOFDeltaBCOffset *GetDeltaBCOffset() const {return fDeltaBCOffset;};
79 AliTOFCTPLatency *GetCTPLatency() const {return fCTPLatency;};
80 AliTOFT0Fill *GetT0Fill() const {return fT0Fill;};
f04b3a69 81 AliTOFRunParams *GetRunParams() const {return fRunParams;};
5b4ed716 82 AliTOFResponseParams *GetResponseParams() const {return fResponseParams;};
2bf4d9d6 83
d4ad0d6b 84 // Methods to retrieve/write parameters from/on CDB
17149e6b 85 // writing
86
a6e0ebfe 87 void WriteSimHistoOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun, TH1F *histo);
88 void WriteConfigMapOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
89 void WriteConfigMapOnCDB(const Char_t *sel);
17149e6b 90 // new calib objs
a6e0ebfe 91 void WriteParOnlineDelayOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
92 void WriteParOnlineStatusOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
93 void WriteParOnlineDelayOnCDB(const Char_t *sel);
94 void WriteParOnlineStatusOnCDB(const Char_t *sel);
17149e6b 95 // old calib objs
a6e0ebfe 96 void WriteParOnlineOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
97 void WriteParOnlinePulserOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
98 void WriteParOnlineNoiseOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
99 void WriteParOnlineHWOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
100 void WriteParOfflineOnCDB(const Char_t *sel, const Char_t *validity, Int_t minrun, Int_t maxrun);
101 void WriteParOnlineOnCDB(const Char_t *sel);
102 void WriteParOnlinePulserOnCDB(const Char_t *sel); // old, before unification of status info
103 void WriteParOnlineNoiseOnCDB(const Char_t *sel); // old, before unification of status info
104 void WriteParOnlineHWOnCDB(const Char_t *sel); // old, before unification of status info
105 void WriteParOfflineOnCDB(const Char_t *sel, const Char_t *validity);
17149e6b 106
2bf4d9d6 107 void WriteDeltaBCOffsetOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
108 void WriteCTPLatencyOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
109 void WriteT0FillOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
f04b3a69 110 void WriteRunParamsOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
dad2868f 111 void WriteReadoutEfficiencyOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
8da43270 112 void WriteProblematicOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun);
2bf4d9d6 113
17149e6b 114 // reading
a6e0ebfe 115 Bool_t ReadSimHistoFromCDB(const Char_t *sel, Int_t nrun);
116 Bool_t ReadConfigMapFromCDB(const Char_t *sel, Int_t nrun);
17149e6b 117 // new objs
a6e0ebfe 118 Bool_t ReadParOnlineDelayFromCDB(const Char_t *sel, Int_t nrun);
119 Bool_t ReadParOnlineStatusFromCDB(const Char_t *sel, Int_t nrun);
17149e6b 120 // old objs
a6e0ebfe 121 Bool_t ReadParOnlineFromCDB(const Char_t *sel, Int_t nrun);
122 Bool_t ReadParOnlinePulserFromCDB(const Char_t *sel, Int_t nrun); // old, before unification of status info
123 Bool_t ReadParOnlineNoiseFromCDB(const Char_t *sel, Int_t nrun); // old, before unification of status info
124 Bool_t ReadParOnlineHWFromCDB(const Char_t *sel, Int_t nrun); // old, before unification of status info
125 Bool_t ReadParOfflineFromCDB(const Char_t *sel, Int_t nrun);
126 void WriteRecParOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun, AliTOFRecoParam *param);
f858b00e 127 void WriteRecParOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun, TObjArray *arr);
d6888ae2 128 AliTOFRecoParam * ReadRecParFromCDB(const Char_t *sel, Int_t nrun, Int_t eventType=0);
0a749fa5 129 void CreateTreeFromCDB(Int_t minrun, Int_t maxrun);
130 void CreateTreeFromFile(Int_t minrun, Int_t maxrun);
131 void CreateTreeFromGrid(Int_t minrun, Int_t maxrun);
296591ad 132 void CreateChainFromGrid(Int_t minrun, Int_t maxrun);
0a749fa5 133 Int_t Calibrate(Option_t *optionSave="", Option_t *optionFit="RQ");
134 Int_t Calibrate(Int_t nch,Int_t *ich, Option_t *optionSave="", Option_t *optionFit="RQ");
135 Int_t Calibrate(Int_t ichmin, Int_t ichmax, Option_t *optionSave="", Option_t *optionFit="RQ");
136 Int_t Calibrate(Int_t ich, Option_t *optionSave="", Option_t *optionFit="RQ");
137 Int_t CalibrateFromProfile(Int_t ich, Option_t *optionSave="", Option_t *optionFit="RQ");
138 TH1F* Profile(Int_t i);
139 Int_t FindBins (TH1F* h, Double_t *bins) const;
140 void SetNruns(Int_t nruns) {fNruns=nruns;}
141 Int_t GetNruns() const {return fNruns;}
0cb9d099 142 void SetFirstRun(Int_t firstRun) {fFirstRun=firstRun;}
143 Int_t GetFirstRun() const {return fFirstRun;}
144 void SetLastRun(Int_t lastRun) {fLastRun=lastRun;}
145 Int_t GetLastRun() const {return fLastRun;}
6dc9348d 146
2bf4d9d6 147 Bool_t ReadDeltaBCOffsetFromCDB(const Char_t *sel, Int_t nrun);
148 Bool_t ReadCTPLatencyFromCDB(const Char_t *sel, Int_t nrun);
149 Bool_t ReadT0FillFromCDB(const Char_t *sel, Int_t nrun);
f04b3a69 150 Bool_t ReadRunParamsFromCDB(const Char_t *sel, Int_t nrun);
dad2868f 151 Bool_t ReadReadoutEfficiencyFromCDB(const Char_t *sel, Int_t nrun);
8da43270 152 Bool_t ReadProblematicFromCDB(const Char_t *sel, Int_t nrun);
2bf4d9d6 153
5b4ed716 154 Bool_t Init(Int_t run = -1); // init
155 Double_t GetTimeCorrection(Int_t index, Double_t tot, Int_t deltaBC, Int_t l0l1, UInt_t timestamp); // get time correction
156 void CalibrateESD(AliESDEvent *event); // calibrate ESD
c2fb5b09 157 void CalibrateTExp(AliESDEvent *event) const; // calibrate TExp
5b4ed716 158 void SetRemoveMeanT0(Bool_t value) {fRemoveMeanT0 = value;}; // setter
8bb89c94 159 void SetCalibrateTOFsignal(Bool_t value) {fCalibrateTOFsignal = value;}; // setter
5b4ed716 160 void SetCorrectTExp(Bool_t value) {fCorrectTExp = value;}; // setter
8da43270 161 Bool_t IsChannelEnabled(Int_t index, Bool_t checkEfficiency = kTRUE, Bool_t checkProblematic = kTRUE); // is channel enabled
dad2868f 162 Bool_t IsChannelEfficient(Int_t index); // is channel efficient
8da43270 163 Bool_t IsChannelProblematic(Int_t index); // is channel problematic
899d8839 164 Double_t TuneForMC(AliESDEvent *event, Double_t resolution); // tune for MC
5b4ed716 165
6dc9348d 166private:
d4ad0d6b 167 Int_t fNChannels; // number of TOF channels
17149e6b 168
169 // old calibration objects
0a749fa5 170 TObjArray *fTOFCalOnline; // array of AliTOFChannels storing calib parameters
17149e6b 171 TObjArray *fTOFCalOnlinePulser; // array of AliTOFChannels storing calib status from pulser // old, before unification of status info
172 TObjArray *fTOFCalOnlineNoise; // array of AliTOFChannels storing calib status from noise // old, before unification of status info
173 TObjArray *fTOFCalOnlineHW; // array of AliTOFChannels storing calib status from hardware // old, before unification of status info
0a749fa5 174 TObjArray *fTOFCalOffline; // array of AliTOFChannels storing calib parameters
17149e6b 175
176 // new calibration objects
177 AliTOFChannelOnlineArray *fCal; // object with delay array for TOF channels
178 AliTOFChannelOnlineStatusArray *fStatus; // object with status array for TOF channels
179
d4ad0d6b 180 TH1F *fTOFSimToT; // histo with realistic ToT signal from TB Data
0a749fa5 181 const char *fkValidity; // validity for offline calibration object
182 TTree *fTree; // tree for TOF calibration
296591ad 183 TChain *fChain; // chain for TOF calibration
0a749fa5 184 Int_t fNruns; // number of runs to be processed
0cb9d099 185 Int_t fFirstRun; // first run for calibration obj validity
186 Int_t fLastRun; // last run for calib obj validity
17149e6b 187 TMap* fConfigMap; // map holding configuration obj
0cb9d099 188
2bf4d9d6 189 AliTOFDeltaBCOffset *fDeltaBCOffset; // deltaBC offset
190 AliTOFCTPLatency *fCTPLatency; // CTP latency
191 AliTOFT0Fill *fT0Fill; // T0 fill
f04b3a69 192 AliTOFRunParams *fRunParams; // run params
5b4ed716 193 AliTOFResponseParams *fResponseParams; // run params
dad2868f 194 TH1F *fReadoutEfficiency; // readout efficiency
8da43270 195 TH1C *fProblematic; // problematic
5b4ed716 196
197 Bool_t fInitFlag; // init flag
198 Bool_t fRemoveMeanT0; // remove mean T0
8bb89c94 199 Bool_t fCalibrateTOFsignal; // calibrate TOF signal
5b4ed716 200 Bool_t fCorrectTExp; // correct expected time
2bf4d9d6 201
8da43270 202 ClassDef(AliTOFcalib,11);
6dc9348d 203};
204
205#endif // AliTOFcalib_H
206