]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TENDER/TenderSupplies/AliTOFTenderSupply.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / TENDER / TenderSupplies / AliTOFTenderSupply.h
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 //                                                                    //
9 //  TOF tender, reapply pid on the fly                                //
10 //                                                                    //
11 ////////////////////////////////////////////////////////////////////////
12
13 #include <AliTenderSupply.h>
14 #include <AliLog.h>
15 #include <AliESDpid.h>
16
17 class AliESDpid;
18 class AliTOFcalib;
19 class AliTOFT0maker;
20 class AliESDEevent;
21 class AliESDtrack;
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
33   // TOF tender methods
34   void SetIsMC(Bool_t flag=kFALSE){fIsMC=flag;}
35   void SetCorrectExpTimes(Bool_t flag=kTRUE){fCorrectExpTimes=flag;}
36   void SetT0DetectorAdjust(Bool_t flag=kFALSE){fT0DetectorAdjust=flag;}
37   void SetDebugLevel(Int_t flag=0){fDebugLevel=flag;}
38   void SetLHC10dPatch(Bool_t flag=kFALSE){ 
39     if (flag == kTRUE) {
40       AliInfo(" **** TOF Tender: special setting LHC10d patch is ON");
41       AliInfo(" **** TOF Tender: this setting is valid only on LHC10d pass2");
42     }
43     fLHC10dPatch=flag;
44     return;
45   }
46   void SetAutomaticSettings(Bool_t flag=kTRUE){fAutomaticSettings=flag;}
47   void SetForceCorrectTRDBug(Bool_t flag=kTRUE){fForceCorrectTRDBug=flag;}
48   void SetUserRecoPass(Int_t flag=0){fUserRecoPass=flag;}
49   Int_t GetRecoPass(void){return fRecoPass;}
50   void DetectRecoPass();
51
52   /* theoretical expected time: related stuff for LHC10d patch */
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;
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);
68   Int_t GetOCDBVersion(Int_t runNumber);
69   void LoadTOFPIDParams(Int_t runNumber);
70
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
75 private:
76   AliESDpid          *fESDpid;         //! ESD pid object
77
78   
79   Bool_t fTenderNoAction;    // flag for periods when tender action is not requested/not supported
80   Bool_t fIsMC;              // flag for MC data: adds start Time
81   Bool_t fCorrectExpTimes;   // flag to apply Expected Time correction 
82   Bool_t fCorrectTRDBug;     // flag to fix wrong dE/dx inside TRD
83   Bool_t fLHC10dPatch;       // flag to apply special patch for LHC10d (reconstructed with wrong geometry)
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)
86   Int_t  fDebugLevel;        // debug purposes 0= no output, 1 Info, 2 lot of info....
87   Bool_t fAutomaticSettings; // enable/disable automatic (per run) settings
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
90   Bool_t fForceCorrectTRDBug; // force TRD bug correction (for some bad MC production...)
91   Bool_t fT0Simulate;        // ignore existing T0 data (if any) and simulate them
92
93
94   // variables for TOF calibrations and timeZero setup
95   AliTOFPIDParams *fTOFPIDParams;   //! TOF PID Params - period depending (OADB loaded)
96   AliTOFcalib     *fTOFCalib;       // recalibrate TOF signal with OCDB
97   AliTOFT0maker   *fTOFT0maker;     // computation of TOF-T0
98   Float_t fT0shift[4];              // T0 detector correction from OCDB
99   Float_t fT0IntercalibrationShift; // extra-shift to adjust TOF/TO intercalibration issue in some period
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)
104
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]
115   ULong64_t fCDBkey;
116
117   AliTOFTenderSupply(const AliTOFTenderSupply&c);
118   AliTOFTenderSupply& operator= (const AliTOFTenderSupply&c);
119
120   ClassDef(AliTOFTenderSupply, 12);
121 };
122
123
124 #endif