]>
Commit | Line | Data |
---|---|---|
ee981ab3 | 1 | #ifndef ALITOFTENDERSUPPLY_H |
2 | #define ALITOFTENDERSUPPLY_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 | // // | |
88ccd4cf | 9 | // TOF tender, reapply pid on the fly // |
ee981ab3 | 10 | // // |
11 | //////////////////////////////////////////////////////////////////////// | |
12 | ||
13 | #include <AliTenderSupply.h> | |
dc369c13 | 14 | #include <AliLog.h> |
15 | #include <AliESDpid.h> | |
ee981ab3 | 16 | |
17 | class AliESDpid; | |
18 | class AliTOFcalib; | |
19 | class AliTOFT0maker; | |
88ccd4cf | 20 | class AliESDEevent; |
21 | class AliESDtrack; | |
ee981ab3 | 22 | class AliTOFTenderSupply: public AliTenderSupply { |
23 | ||
24 | public: | |
25 | AliTOFTenderSupply(); | |
26 | AliTOFTenderSupply(const char *name, const AliTender *tender=NULL); | |
27 | ||
28 | virtual ~AliTOFTenderSupply(){;} | |
29 | ||
30 | virtual void Init(); | |
31 | virtual void ProcessEvent(); | |
32 | ||
dc369c13 | 33 | // TOF tender methods |
dc369c13 | 34 | void SetIsMC(Bool_t flag=kFALSE){fIsMC=flag;} |
88ccd4cf | 35 | void SetCorrectExpTimes(Bool_t flag=kTRUE){fCorrectExpTimes=flag;} |
3eb060be | 36 | void SetT0DetectorAdjust(Bool_t flag=kFALSE){fT0DetectorAdjust=flag;} |
dc369c13 | 37 | void SetDebugLevel(Int_t flag=0){fDebugLevel=flag;} |
88ccd4cf | 38 | void SetLHC10dPatch(Bool_t flag=kFALSE){ |
39 | if (flag == kTRUE) { | |
dc369c13 | 40 | AliInfo(" **** TOF Tender: special setting LHC10d patch is ON"); |
41 | AliInfo(" **** TOF Tender: this setting is valid only on LHC10d pass2"); | |
88ccd4cf | 42 | } |
43 | fLHC10dPatch=flag; | |
44 | return; | |
45 | } | |
63f693ef | 46 | void SetAutomaticSettings(Bool_t flag=kTRUE){fAutomaticSettings=flag;} |
b60e825c | 47 | void SetForceCorrectTRDBug(Bool_t flag=kTRUE){fForceCorrectTRDBug=flag;} |
fd611537 | 48 | void SetUserRecoPass(Int_t flag=0){fUserRecoPass=flag;} |
49 | Int_t GetRecoPass(void){return fRecoPass;} | |
50 | void DetectRecoPass(); | |
ee981ab3 | 51 | |
dc369c13 | 52 | /* theoretical expected time: related stuff for LHC10d patch */ |
88ccd4cf | 53 | static Float_t GetBetaTh(Float_t m, Float_t p) {return TMath::Sqrt(1. / (1. + m * m / (p * p)));}; // get beta th |
54 | static Float_t GetExpTimeTh(Float_t m, Float_t p, Float_t L) {return L / 2.99792457999999984e-02 / GetBetaTh(m, p);}; // get exp time th | |
55 | void RecomputeTExp(AliESDEvent *event) const; | |
56 | void RecomputeTExp(AliESDtrack *track) const; | |
fd611537 | 57 | void FixTRDBug(AliESDEvent *event); |
58 | void FixTRDBug(AliESDtrack *track); | |
59 | void InitGeom(); | |
60 | void FindTRDFix(AliESDtrack *track,Double_t *corr); | |
61 | Double_t EstimateLengthInTRD1(AliESDtrack *track); | |
62 | Double_t EstimateLengthInTRD2(AliESDtrack *track); | |
63 | Double_t EstimateLengthOutTRD(AliESDtrack *track); | |
64 | void CorrectDeltaTimes(Double_t pT, Double_t length, Bool_t isTRDout, Double_t *corrections); | |
65 | Double_t CorrectExpectedProtonTime(Double_t pT,Double_t length, Bool_t isTRDout); | |
66 | Double_t CorrectExpectedKaonTime(Double_t pT,Double_t length, Bool_t isTRDout); | |
67 | Double_t CorrectExpectedPionTime(Double_t pT,Double_t length, Bool_t isTRDout); | |
3fbc4ebf | 68 | Int_t GetOCDBVersion(Int_t runNumber); |
86acb87b | 69 | void LoadTOFPIDParams(Int_t runNumber); |
88ccd4cf | 70 | |
7b2d197a PA |
71 | /* to invent a T0 signal... */ |
72 | Double_t SampleT0Signal(Int_t side, Double_t zvertex, Double_t tracklets) const; | |
73 | void GetTrackletsForT0(AliESDEvent *event, Double_t *trkA, Double_t *trkC) const; | |
74 | ||
ee981ab3 | 75 | private: |
76 | AliESDpid *fESDpid; //! ESD pid object | |
77 | ||
fd611537 | 78 | |
86acb87b | 79 | Bool_t fTenderNoAction; // flag for periods when tender action is not requested/not supported |
7b2d197a | 80 | Bool_t fIsMC; // flag for MC data: adds start Time |
ee981ab3 | 81 | Bool_t fCorrectExpTimes; // flag to apply Expected Time correction |
fd611537 | 82 | Bool_t fCorrectTRDBug; // flag to fix wrong dE/dx inside TRD |
88ccd4cf | 83 | Bool_t fLHC10dPatch; // flag to apply special patch for LHC10d (reconstructed with wrong geometry) |
7b2d197a PA |
84 | Bool_t fT0DetectorAdjust; // DATA: flag to apply offsets to T0 data (LHC10b, c, d, e) |
85 | // MC: add smearing to simulated data (LHC10b,c,d,e) | |
dc369c13 | 86 | Int_t fDebugLevel; // debug purposes 0= no output, 1 Info, 2 lot of info.... |
63f693ef | 87 | Bool_t fAutomaticSettings; // enable/disable automatic (per run) settings |
fd611537 | 88 | Int_t fRecoPass; // reconstruction pass: the tender applies different recipes depending on the pass |
89 | Int_t fUserRecoPass; // when reco pass is selected by user | |
b60e825c | 90 | Bool_t fForceCorrectTRDBug; // force TRD bug correction (for some bad MC production...) |
7b2d197a | 91 | Bool_t fT0Simulate; // ignore existing T0 data (if any) and simulate them |
3eb060be | 92 | |
86acb87b | 93 | |
dc369c13 | 94 | // variables for TOF calibrations and timeZero setup |
86acb87b | 95 | AliTOFPIDParams *fTOFPIDParams; //! TOF PID Params - period depending (OADB loaded) |
dc369c13 | 96 | AliTOFcalib *fTOFCalib; // recalibrate TOF signal with OCDB |
97 | AliTOFT0maker *fTOFT0maker; // computation of TOF-T0 | |
dc369c13 | 98 | Float_t fT0shift[4]; // T0 detector correction from OCDB |
63f693ef | 99 | Float_t fT0IntercalibrationShift; // extra-shift to adjust TOF/TO intercalibration issue in some period |
dc369c13 | 100 | |
101 | // variables to parametrize MC | |
102 | static Float_t fgT0Aresolution; // T0 resolution A-Side (MC) | |
103 | static Float_t fgT0Cresolution; // T0 resolution C-Side (MC) | |
ee981ab3 | 104 | |
fd611537 | 105 | // variables to steer TRD bug fix |
106 | Bool_t fGeomSet; // steer loading GRP entry | |
107 | Bool_t fIsEnteringInTRD; | |
108 | Bool_t fInTRD; | |
109 | Bool_t fIsComingOutTRD; | |
110 | Bool_t fOutTRD; | |
111 | Float_t fRhoTRDin; // cm | |
112 | Float_t fRhoTRDout; // cm | |
113 | Float_t fStep; // cm | |
114 | Double_t fMagField; // magnetic field value [kGauss] | |
6fc2efbf | 115 | ULong64_t fCDBkey; |
ee981ab3 | 116 | |
117 | AliTOFTenderSupply(const AliTOFTenderSupply&c); | |
118 | AliTOFTenderSupply& operator= (const AliTOFTenderSupply&c); | |
119 | ||
7b2d197a | 120 | ClassDef(AliTOFTenderSupply, 12); |
ee981ab3 | 121 | }; |
122 | ||
123 | ||
124 | #endif |