Update of the TRD PID Response:
[u/mrichter/AliRoot.git] / ANALYSIS / TenderSupplies / AliTRDTenderSupply.h
1 #ifndef ALITRDTENDERSUPPLY_H
2 #define ALITRDTENDERSUPPLY_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 //  TRD tender, reapply pid on the fly                                //
10 //                                                                    //
11 ////////////////////////////////////////////////////////////////////////
12
13
14
15 #include <AliTenderSupply.h>
16
17 class AliTRDpidRecalculator;
18 class AliTRDCalDet;
19 class AliESDEvent;
20
21 class AliTRDTenderSupply: public AliTenderSupply {
22   
23 public:
24   enum{
25     kNNpid = 0,
26     k1DLQpid = 1,
27     k2DLQpid = 2
28   };
29   AliTRDTenderSupply();
30   AliTRDTenderSupply(const char *name, const AliTender *tender=NULL);
31   virtual ~AliTRDTenderSupply();
32
33   void SetLoadReferencesFromCDB() { fLoadReferencesFromCDB = kTRUE; }
34   void SetRefFile(const char* file) {fRefFilename=file;}
35   void SetPIDmethod(Int_t pidMethod) { fPIDmethod = pidMethod; }
36   void SetNormalizationFactor(Double_t norm) { fNormalizationFactor = norm; }
37   void SetCalibLowpThreshold(Double_t pmin) { fPthreshold = pmin; };
38   
39   virtual void              Init();
40   virtual void              ProcessEvent();
41   
42   void SwitchOnGainCorrection() { fGainCorrection = kTRUE; }
43   void SwitchOffGainCorrection() { fGainCorrection = kFALSE; }
44   void AddBadChamber(Int_t chamberID){fBadChamberID[fNBadChambers++] = chamberID;};
45   
46 private:
47   enum{
48     kNPlanes = 6,
49     kNStacks = 5,
50     kNChambers = 540
51   };
52
53   Bool_t GetTRDchamberID(AliESDtrack * const track, Int_t *detectors);
54   void SetChamberGain();
55   void ApplyGainCorrection(AliESDtrack *track);
56   void LoadReferences();
57   
58   AliESDEvent           *fESD;       //! the ESD Event
59   AliESDpid             *fESDpid;    //! ESD PID object
60
61   AliTRDCalDet *fChamberGainOld;     // TRD Chamber Gain Factor used for producing the ESD
62   AliTRDCalDet *fChamberGainNew;     // New TRD Chamber Gain Factor
63   AliTRDCalDet *fChamberVdriftOld;   // Old drift velocity calibration
64   AliTRDCalDet *fChamberVdriftNew;   // New drift velocity calibration
65
66   TString fRefFilename;                // path and name to the NNref file
67   Int_t fPIDmethod;                  // PID method
68   Double_t fNormalizationFactor;     // dE/dx Normalization Factor 
69   Double_t fPthreshold;              // Low Momentum threshold for calibration
70   Int_t fBadChamberID[kNChambers];   // List of Bad Chambers
71   UInt_t fNBadChambers;              // Number of bad chambers
72   Bool_t fGainCorrection;            // Apply gain correction 
73   Bool_t fLoadReferencesFromCDB;     // Load References from CDB
74   Bool_t fHasReferences;             // has references loaded
75   
76   AliTRDTenderSupply(const AliTRDTenderSupply&c);
77   AliTRDTenderSupply& operator= (const AliTRDTenderSupply&c);
78   
79   ClassDef(AliTRDTenderSupply, 1);  // TRD tender task
80 };
81 #endif
82