Always take the number of time bins from OCDB, unless explicitly overwritten
[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 #ifndef ROOT_TObject
15 #include "TObject.h"
16 #endif
17
18 #ifndef ALITRDPIDUTIL_H
19 #include "AliTRDpidUtil.h"
20 #endif
21
22 #ifndef ALITRDPIDRESPONSE_H
23 #include "AliTRDPIDResponse.h"
24 #endif
25
26 class AliCDBEntry;
27
28 class AliTRDrecoParam;
29 class AliTRDCalTrkAttach;
30 class AliTRDCalPID;
31 class AliTRDCalMonitoring;
32 class AliTRDCalROC;
33 class AliTRDCalDet;
34 class AliTRDCalSingleChamberStatus;
35 class TString;
36 class AliTRDcalibDB : public TObject {
37
38  public:
39
40   enum { kNlayer  =   6
41        , kNstack  =   5
42        , kNsector =  18
43        , kNdet    = 540 };
44   
45   static AliTRDcalibDB               *Instance();
46   static void                         Terminate();
47
48   void                                SetRun(Long64_t run);
49   Long64_t                            GetRun() const { return fRun; }
50
51   Float_t                             GetNoise(Int_t det, Int_t col, Int_t row);
52         AliTRDCalROC                 *GetNoiseROC(Int_t det);
53   const AliTRDCalDet                 *GetNoiseDet();
54
55   Float_t                             GetVdrift(Int_t det, Int_t col, Int_t row);
56   Float_t                             GetVdriftAverage(Int_t det);
57         AliTRDCalROC                 *GetVdriftROC(Int_t det);
58   const AliTRDCalDet                 *GetVdriftDet();
59
60   Float_t                             GetT0(Int_t det, Int_t col, Int_t row);
61   Float_t                             GetT0Average(Int_t det);
62         AliTRDCalROC                 *GetT0ROC(Int_t det);
63   const AliTRDCalDet                 *GetT0Det();
64
65   Float_t                             GetGainFactor(Int_t det, Int_t col, Int_t row);
66   Float_t                             GetGainFactorAverage(Int_t det);
67   AliTRDCalROC                       *GetGainFactorROC(Int_t det);
68   const AliTRDCalDet                 *GetGainFactorDet();
69
70   AliTRDCalROC                       *GetPRFROC(Int_t det);
71   Float_t                             GetPRFWidth(Int_t det, Int_t col, Int_t row);
72
73   Float_t*                            GetSampledPRF() const { return fPRFsmp; };
74   Int_t                               GetPRFbin() const     { return fPRFbin; };
75   Float_t                             GetPRFlo() const      { return fPRFlo;  };
76   Float_t                             GetPRFhi() const      { return fPRFhi;  };
77
78   Int_t                               GetNumberOfTimeBinsDCS();
79   void                                GetFilterType(TString &filterType);
80   void                                GetGlobalConfiguration(TString &config);
81   Bool_t                              HasOnlineFilterPedestal();
82   Bool_t                              HasOnlineFilterGain();
83   Bool_t                              HasOnlineTailCancellation();
84
85   Char_t                              GetPadStatus(Int_t det, Int_t col, Int_t row);
86   AliTRDCalSingleChamberStatus       *GetPadStatusROC(Int_t det);
87   AliTRDrecoParam*                    GetRecoParam(Int_t *eventtype);
88   AliTRDPIDResponse                  *GetPIDResponse(AliTRDPIDResponse::ETRDPIDMethod m);
89
90   Char_t                              GetChamberStatus(Int_t det);
91
92   Bool_t                              IsPadMasked(Int_t det, Int_t col, Int_t row);
93   Bool_t                              IsPadBridgedLeft(Int_t det, Int_t col, Int_t row);
94   Bool_t                              IsPadBridgedRight(Int_t det, Int_t col, Int_t row);
95   Bool_t                              IsPadNotConnected(Int_t det, Int_t col, Int_t row);
96   
97   Bool_t                              IsChamberInstalled(Int_t det);
98   Bool_t                              IsChamberMasked(Int_t det);
99   Bool_t                              IsHalfChamberMasked(Int_t det, Int_t side);
100
101   const AliTRDCalMonitoring          *GetMonitoringObject();
102   const AliTRDCalPID                 *GetPIDObject(AliTRDpidUtil::ETRDPIDMethod m);
103   const AliTRDCalTrkAttach           *GetAttachObject();
104
105   // Related functions, these depend on calibration data
106          Int_t                        PadResponse(Double_t signal, Double_t dist
107                                                 , Int_t layer, Double_t *pad) const;
108
109  protected:
110
111   // For caching see also implentation of GetCachedCDBObject in the .cxx file
112   enum { kIDVdriftPad = 0
113        , kIDVdriftChamber
114        , kIDT0Pad
115        , kIDT0Chamber
116        , kIDGainFactorPad
117        , kIDGainFactorChamber
118        , kIDNoiseChamber
119        , kIDNoisePad
120        , kIDPRFWidth
121        , kIDFEE
122        , kIDChamberPos
123        , kIDStackPos
124        , kIDSuperModulePos
125        , kIDPIDNN
126        , kIDPIDLQ
127        , kIDPIDLQ1D
128        , kIDRecoParam
129        , kIDMonitoringData
130        , kIDChamberStatus
131        , kIDPadStatus
132        , kIDDCS
133        , kIDAttach
134        , kCDBCacheSize };         // IDs of cached objects
135
136   const TObject *GetCachedCDBObject(Int_t id);
137   
138   void           Invalidate();
139   void           SamplePRF();
140   
141   AliCDBEntry   *GetCDBEntry(const Char_t *cdbPath);
142   const TObject *CacheCDBEntry(Int_t id, const Char_t *cdbPath);
143
144   static AliTRDcalibDB *fgInstance;                 //  Instance of this class (singleton implementation)
145   static Bool_t         fgTerminated;               //  Defines if this class has already been terminated
146
147   AliCDBEntry          *fCDBEntries[kCDBCacheSize]; //  Cache for CDB entries
148   TObject              *fCDBCache[kCDBCacheSize];   //  Cache for calibration objects.
149
150   Long64_t              fRun;                       //  Run Number
151   
152   Float_t              *fPRFsmp;                    //! Sampled pad response
153   Int_t                 fPRFbin;                    //  Number of bins for the PRF
154   Float_t               fPRFlo;                     //  Lower boundary of the PRF
155   Float_t               fPRFhi;                     //  Higher boundary of the PRF
156   Float_t               fPRFwid;                    //  Bin width of the sampled PRF
157   Int_t                 fPRFpad;                    //  Distance to next pad in PRF
158   AliTRDPIDResponse    *fPIDResponse;               //  TRD PID Response function
159   
160  private:
161
162   AliTRDcalibDB();                                  //  This is a singleton, constructor is private!  
163   AliTRDcalibDB(const AliTRDcalibDB &c);   
164   AliTRDcalibDB &operator=(const AliTRDcalibDB &c); 
165   virtual ~AliTRDcalibDB();
166
167   ClassDef(AliTRDcalibDB, 5)                         //  Provides central access to the CDB
168
169 };
170
171 #endif
172