]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/AliTRDcalibDB.h
Replace AliTRDCalibra
[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 AliTRDCalPIDLQ;
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   Float_t                    GetPRFWidth(Int_t det, Int_t col, Int_t row);
54
55   Int_t                      GetNumberOfTimeBins();
56
57   Char_t                     GetPadStatus(Int_t det, Int_t col, Int_t row);
58   Char_t                     GetChamberStatus(Int_t det);
59
60   Bool_t                     IsPadMasked(Int_t det, Int_t col, Int_t row);
61   Bool_t                     IsPadBridgedLeft(Int_t det, Int_t col, Int_t row);
62   Bool_t                     IsPadBridgedRight(Int_t det, Int_t col, Int_t row);
63   
64   Bool_t                     IsChamberInstalled(Int_t det);
65   Bool_t                     IsChamberMasked(Int_t det);
66
67   const AliTRDCalMonitoring *GetMonitoringObject();
68   const AliTRDCalPIDLQ      *GetPIDLQObject();
69
70   // Related functions, these depend on calibration data
71   static Float_t             GetOmegaTau(Float_t vdrift, Float_t bz);
72          Int_t               PadResponse(Double_t signal, Double_t dist
73                                        , Int_t plane, Double_t *pad) const;
74   
75  protected:
76
77   // For caching see also implentation of GetCachedCDBObject in the .cxx file
78   enum { kCDBCacheSize = 15 };   // Number of cached objects
79   enum { kIDVdriftPad = 0
80        , kIDVdriftChamber
81        , kIDT0Pad
82        , kIDT0Chamber
83        , kIDGainFactorPad
84        , kIDGainFactorChamber
85        , kIDPRFWidth
86        , kIDGlobals
87        , kIDChamberPos
88        , kIDStackPos
89        , kIDSuperModulePos
90        , kIDPIDLQ
91        , kIDMonitoringData
92        , kIDChamberStatus
93        , kIDPadStatus };         // IDs of cached objects
94
95   const TObject *GetCachedCDBObject(Int_t id);
96   
97   void           Invalidate();
98   void           SamplePRF();
99   
100   AliCDBEntry   *GetCDBEntry(const Char_t *cdbPath);
101   const TObject *CacheCDBEntry(Int_t id, const Char_t *cdbPath);
102
103   static AliTRDcalibDB *fgInstance;                 //  Instance of this class (singleton implementation)
104   static Bool_t         fgTerminated;               //  Defines if this class has already been terminated
105
106   AliCDBEntry          *fCDBEntries[kCDBCacheSize]; //  Cache for CDB entries
107   TObject              *fCDBCache[kCDBCacheSize];   //  Cache for calibration objects.
108
109   Long64_t              fRun;                       //  Run Number
110   
111   Float_t              *fPRFsmp;                    //! Sampled pad response
112   Int_t                 fPRFbin;                    //  Number of bins for the PRF
113   Float_t               fPRFlo;                     //  Lower boundary of the PRF
114   Float_t               fPRFhi;                     //  Higher boundary of the PRF
115   Float_t               fPRFwid;                    //  Bin width of the sampled PRF
116   Int_t                 fPRFpad;                    //  Distance to next pad in PRF
117   
118  private:
119
120   AliTRDcalibDB();                                  //  This is a singleton, constructor is private!  
121   AliTRDcalibDB(const AliTRDcalibDB &c);   
122   AliTRDcalibDB &operator=(const AliTRDcalibDB &c); 
123   virtual ~AliTRDcalibDB();
124
125   ClassDef(AliTRDcalibDB,3)                         //  Provides central access to the CDB
126
127 };
128
129 #endif