Line data Source code
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 : #include "AliTRDCalTrapConfig.h"
27 : #include "AliTRDtrapConfig.h"
28 :
29 : class TString;
30 :
31 : class AliCDBEntry;
32 :
33 : class AliTRDrecoParam;
34 : class AliTRDCalTrkAttach;
35 : class AliTRDCalPID;
36 : class AliTRDCalMonitoring;
37 : class AliTRDCalROC;
38 : class AliTRDCalDet;
39 : class AliTRDCalSingleChamberStatus;
40 : class AliTRDCalOnlineGainTableROC;
41 :
42 : class AliTRDcalibDB : public TObject {
43 :
44 : public:
45 :
46 : enum { kNlayer = 6
47 : , kNstack = 5
48 : , kNsector = 18
49 : , kNdet = 540 };
50 :
51 : enum { kFltrSet = 1
52 : , kReadout
53 : , kTimebin
54 : , kTrkMode
55 : , kTrigSet
56 : , kAddOpti };
57 :
58 : static AliTRDcalibDB *Instance();
59 : static void Terminate();
60 : void SetRun(Long64_t run);
61 760 : Long64_t GetRun() const { return fRun; }
62 :
63 : Float_t GetNoise(Int_t det, Int_t col, Int_t row);
64 : AliTRDCalROC *GetNoiseROC(Int_t det);
65 : const AliTRDCalDet *GetNoiseDet();
66 :
67 : Float_t GetVdrift(Int_t det, Int_t col, Int_t row);
68 : Float_t GetVdriftAverage(Int_t det);
69 : AliTRDCalROC *GetVdriftROC(Int_t det);
70 : const AliTRDCalDet *GetVdriftDet();
71 : TObjArray *GetPHQ();
72 : const AliTRDCalDet *GetExBDet();
73 :
74 : Float_t GetT0(Int_t det, Int_t col, Int_t row);
75 : Float_t GetT0Average(Int_t det);
76 : AliTRDCalROC *GetT0ROC(Int_t det);
77 : const AliTRDCalDet *GetT0Det();
78 :
79 : Float_t GetGainFactor(Int_t det, Int_t col, Int_t row);
80 : Float_t GetGainFactorAverage(Int_t det);
81 : AliTRDCalROC *GetGainFactorROC(Int_t det);
82 : const AliTRDCalDet *GetGainFactorDet();
83 :
84 : Float_t GetOnlineGainFactor(Int_t det, Int_t col, Int_t row);
85 : AliTRDCalOnlineGainTableROC *GetOnlineGainTableROC(Int_t det);
86 :
87 : AliTRDCalROC *GetPRFROC(Int_t det);
88 : Float_t GetPRFWidth(Int_t det, Int_t col, Int_t row);
89 :
90 0 : Float_t* GetSampledPRF() const { return fPRFsmp; };
91 0 : Int_t GetPRFbin() const { return fPRFbin; };
92 0 : Float_t GetPRFlo() const { return fPRFlo; };
93 0 : Float_t GetPRFhi() const { return fPRFhi; };
94 :
95 : static Int_t ExtractTimeBinsFromString(TString tbstr);
96 : Int_t GetNumberOfTimeBinsDCS();
97 : void GetFilterType(TString &filterType);
98 : void GetGlobalConfiguration(TString &config);
99 : void GetGlobalConfigurationByChamber(TString &config,Int_t par, Int_t opt=0);
100 : void GetGlobalConfigurationVersion(TString &version);
101 : static Int_t GetNumberOfParsDCS(TString cname, Char_t delimiter='_');
102 : static Int_t GetNumberOfOptsDCS(TString cname, Int_t cfgType);
103 : static void GetDCSConfigParOption(TString cname, Int_t cfgType, Int_t option, TString &cfgo);
104 :
105 : Int_t GetOnlineGainTableID();
106 :
107 : Bool_t HasOnlineFilterPedestal();
108 : Bool_t HasOnlineFilterGain();
109 : Bool_t HasOnlineTailCancellation();
110 :
111 : Char_t GetPadStatus(Int_t det, Int_t col, Int_t row);
112 : AliTRDCalSingleChamberStatus *GetPadStatusROC(Int_t det);
113 : AliTRDrecoParam* GetRecoParam(Int_t *eventtype);
114 : AliTRDPIDResponse *GetPIDResponse(AliTRDPIDResponse::ETRDPIDMethod m);
115 :
116 : Char_t GetChamberStatus(Int_t det);
117 :
118 : Bool_t IsPadMasked(Int_t det, Int_t col, Int_t row);
119 : Bool_t IsPadBridgedLeft(Int_t det, Int_t col, Int_t row);
120 : Bool_t IsPadBridgedRight(Int_t det, Int_t col, Int_t row);
121 : Bool_t IsPadNotConnected(Int_t det, Int_t col, Int_t row);
122 :
123 : Bool_t IsChamberGood(Int_t det);
124 : Bool_t IsChamberNoData(Int_t det);
125 : Bool_t IsHalfChamberNoData(Int_t det, Int_t side);
126 : Bool_t IsChamberBadCalibrated(Int_t det);
127 : Bool_t IsChamberNotCalibrated(Int_t det);
128 :
129 : const AliTRDCalMonitoring *GetMonitoringObject();
130 : const AliTRDCalPID *GetPIDObject(AliTRDpidUtil::ETRDPIDMethod m);
131 : const AliTRDCalTrkAttach *GetAttachObject();
132 :
133 : // Related functions, these depend on calibration data
134 : Int_t PadResponse(Double_t signal, Double_t dist
135 : , Int_t layer, Double_t *pad) const;
136 :
137 : AliTRDtrapConfig* GetTrapConfig();
138 0 : void GetTrapConfig(TString &name, TString &version) { name = fTrapConfigName; version = fTrapConfigVersion; }
139 0 : void SetTrapConfig(const TString name, const TString version) { fTrapConfigName = name; fTrapConfigVersion = version; }
140 0 : void SetTrapConfig(AliTRDtrapConfig *trapcfg) { fTrapConfig = trapcfg; }
141 : void Invalidate();
142 :
143 : protected:
144 :
145 : AliTRDtrapConfig* LoadTrapConfig(const TString &name = "", const TString &version = "");
146 : Int_t GetNumberOfTimeBinsDCSBoard(); // Old method as fallback for patched OCDB
147 : virtual ~AliTRDcalibDB();
148 : // For caching see also implentation of GetCachedCDBObject in the .cxx file
149 : enum { kIDVdriftPad = 0
150 : , kIDVdriftChamber
151 : , kIDExBChamber
152 : , kIDT0Pad
153 : , kIDT0Chamber
154 : , kIDGainFactorPad
155 : , kIDGainFactorChamber
156 : , kIDOnlineGainFactor
157 : , kIDNoiseChamber
158 : , kIDNoisePad
159 : , kIDPRFWidth
160 : , kIDFEE
161 : , kIDTrapConfig
162 : , kIDChamberPos
163 : , kIDStackPos
164 : , kIDSuperModulePos
165 : , kIDPIDNN
166 : , kIDPIDLQ
167 : , kIDPIDLQ1D
168 : , kIDRecoParam
169 : , kIDMonitoringData
170 : , kIDChamberStatus
171 : , kIDPadStatus
172 : , kIDDCS
173 : , kIDAttach
174 : , kIDPHQ
175 : , kCDBCacheSize }; // IDs of cached objects
176 :
177 : const TObject *GetCachedCDBObject(Int_t id);
178 :
179 : void SamplePRF();
180 :
181 : AliCDBEntry *GetCDBEntry(const Char_t *cdbPath);
182 : const TObject *CacheCDBEntry(Int_t id, const Char_t *cdbPath);
183 :
184 : static AliTRDcalibDB *fgInstance; // Instance of this class (singleton implementation)
185 : static Bool_t fgTerminated; // Defines if this class has already been terminated
186 :
187 : AliCDBEntry *fCDBEntries[kCDBCacheSize]; // Cache for CDB entries
188 : TObject *fCDBCache[kCDBCacheSize]; // Cache for calibration objects.
189 :
190 : Long64_t fRun; // Run Number
191 :
192 : Float_t *fPRFsmp; //! Sampled pad response
193 : Int_t fPRFbin; // Number of bins for the PRF
194 : Float_t fPRFlo; // Lower boundary of the PRF
195 : Float_t fPRFhi; // Higher boundary of the PRF
196 : Float_t fPRFwid; // Bin width of the sampled PRF
197 : Int_t fPRFpad; // Distance to next pad in PRF
198 :
199 : AliTRDPIDResponse *fPIDResponse; // TRD PID Response function
200 :
201 : Int_t fOnlineGainTableID; // ID for online gain table
202 :
203 : AliTRDtrapConfig* fTrapConfig; // TRAP configuration
204 : TString fTrapConfigName; // name of the TRAPconfig
205 : TString fTrapConfigVersion; // version of the TRAPconfig
206 :
207 : private:
208 :
209 : AliTRDcalibDB(); // This is a singleton, constructor is private!
210 : AliTRDcalibDB(const AliTRDcalibDB &c);
211 : AliTRDcalibDB &operator=(const AliTRDcalibDB &c);
212 :
213 62 : ClassDef(AliTRDcalibDB, 8) // Provides central access to the CDB
214 :
215 : };
216 :
217 : #endif
218 :
|