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