First V0 MC Analysis from H.Ricaud
[u/mrichter/AliRoot.git] / TRD / AliTRDcalibDB.h
1 #ifndef ALITRDCALIBDB_H
2 #define ALITRDCALIBDB_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 ///////////////////////////////////////////////////////////////////////////////
7 //                                                                           //
8 // Class providing the calibration parameters by accessing the CDB           //
9 //                                                                           //
10 ///////////////////////////////////////////////////////////////////////////////
11
12 /* $Id$ */
13
14 #include "TObject.h"
15
16 class AliCDBEntry;
17
18 class AliTRDCalPID;
19 class AliTRDCalMonitoring;
20 class AliTRDCalROC;
21 class AliTRDCalDet;
22
23 class AliTRDcalibDB : public TObject {
24
25  public:
26
27   enum { kNplan =   6
28        , kNcham =   5
29        , kNsect =  18
30        , kNdet  = 540 };
31   
32   static AliTRDcalibDB      *Instance();
33   static void                Terminate();
34
35   void                       SetRun(Long64_t run);
36   Long64_t                   GetRun() { return fRun; }
37
38   Float_t                    GetVdrift(Int_t det, Int_t col, Int_t row);
39   Float_t                    GetVdriftAverage(Int_t det);
40         AliTRDCalROC        *GetVdriftROC(Int_t det);
41   const AliTRDCalDet        *GetVdriftDet();
42
43   Float_t                    GetT0(Int_t det, Int_t col, Int_t row);
44   Float_t                    GetT0Average(Int_t det);
45         AliTRDCalROC        *GetT0ROC(Int_t det);
46   const AliTRDCalDet        *GetT0Det();
47
48   Float_t                    GetGainFactor(Int_t det, Int_t col, Int_t row);
49   Float_t                    GetGainFactorAverage(Int_t det);
50         AliTRDCalROC        *GetGainFactorROC(Int_t det);
51   const AliTRDCalDet        *GetGainFactorDet();
52
53         AliTRDCalROC        *GetPRFROC(Int_t det);
54   Float_t                    GetPRFWidth(Int_t det, Int_t col, Int_t row);
55
56   Int_t                      GetNumberOfTimeBins();
57
58   Char_t                     GetPadStatus(Int_t det, Int_t col, Int_t row);
59   Char_t                     GetChamberStatus(Int_t det);
60
61   Bool_t                     IsPadMasked(Int_t det, Int_t col, Int_t row);
62   Bool_t                     IsPadBridgedLeft(Int_t det, Int_t col, Int_t row);
63   Bool_t                     IsPadBridgedRight(Int_t det, Int_t col, Int_t row);
64   
65   Bool_t                     IsChamberInstalled(Int_t det);
66   Bool_t                     IsChamberMasked(Int_t det);
67
68   const AliTRDCalMonitoring *GetMonitoringObject();
69   const AliTRDCalPID        *GetPIDObject(const Int_t method);
70
71   // Related functions, these depend on calibration data
72   static Float_t             GetOmegaTau(Float_t vdrift, Float_t bz);
73          Int_t               PadResponse(Double_t signal, Double_t dist
74                                        , Int_t plane, Double_t *pad) const;
75   
76  protected:
77
78   // For caching see also implentation of GetCachedCDBObject in the .cxx file
79   enum { kCDBCacheSize = 16 };   // Number of cached objects
80   enum { kIDVdriftPad = 0
81        , kIDVdriftChamber
82        , kIDT0Pad
83        , kIDT0Chamber
84        , kIDGainFactorPad
85        , kIDGainFactorChamber
86        , kIDPRFWidth
87        , kIDFEE
88        , kIDChamberPos
89        , kIDStackPos
90        , kIDSuperModulePos
91        , kIDPIDNN
92        , kIDPIDLQ
93        , kIDMonitoringData
94        , kIDChamberStatus
95        , kIDPadStatus };         // IDs of cached objects
96
97   const TObject *GetCachedCDBObject(Int_t id);
98   
99   void           Invalidate();
100   void           SamplePRF();
101   
102   AliCDBEntry   *GetCDBEntry(const Char_t *cdbPath);
103   const TObject *CacheCDBEntry(Int_t id, const Char_t *cdbPath);
104
105   static AliTRDcalibDB *fgInstance;                 //  Instance of this class (singleton implementation)
106   static Bool_t         fgTerminated;               //  Defines if this class has already been terminated
107
108   AliCDBEntry          *fCDBEntries[kCDBCacheSize]; //  Cache for CDB entries
109   TObject              *fCDBCache[kCDBCacheSize];   //  Cache for calibration objects.
110
111   Long64_t              fRun;                       //  Run Number
112   
113   Float_t              *fPRFsmp;                    //! Sampled pad response
114   Int_t                 fPRFbin;                    //  Number of bins for the PRF
115   Float_t               fPRFlo;                     //  Lower boundary of the PRF
116   Float_t               fPRFhi;                     //  Higher boundary of the PRF
117   Float_t               fPRFwid;                    //  Bin width of the sampled PRF
118   Int_t                 fPRFpad;                    //  Distance to next pad in PRF
119   
120  private:
121
122   AliTRDcalibDB();                                  //  This is a singleton, constructor is private!  
123   AliTRDcalibDB(const AliTRDcalibDB &c);   
124   AliTRDcalibDB &operator=(const AliTRDcalibDB &c); 
125   virtual ~AliTRDcalibDB();
126
127   ClassDef(AliTRDcalibDB,3)                         //  Provides central access to the CDB
128
129 };
130
131 #endif