]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALITPCCALIBDB_H | |
2 | #define ALITPCCALIBDB_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 | ||
13 | class AliTPCTransform; | |
14 | class AliTPCExB; | |
15 | #include "TObject.h" | |
16 | #include "TObjArray.h" | |
17 | #include "TArrayI.h" | |
18 | #include "TVectorD.h" | |
19 | #include "TGraph.h" | |
20 | #include "AliTPCCalPad.h" | |
21 | #include "TString.h" | |
22 | #include "AliSplineFit.h" | |
23 | #include "TMap.h" | |
24 | ||
25 | class AliTPCSensorTempArray; | |
26 | class AliDCSSensorArray; | |
27 | class AliCDBEntry; | |
28 | class AliTPCParam; | |
29 | class AliTPCAltroMapping; | |
30 | class AliTPCClusterParam; | |
31 | class AliDCSSensor; | |
32 | class AliDCSSensorArray; | |
33 | class AliTPCCalibVdrift; | |
34 | class AliGRPObject; | |
35 | class AliTPCCalibRaw; | |
36 | class AliTPCdataQA; | |
37 | class AliMagF; | |
38 | class AliTPCcalibDButil; | |
39 | class AliCTPTimeParams; | |
40 | class AliTPCCorrection; | |
41 | //class AliCDBStorage; | |
42 | ||
43 | class AliTPCcalibDB : public TObject | |
44 | { | |
45 | public: | |
46 | static AliTPCcalibDB* Instance(); | |
47 | AliTPCcalibDB(); | |
48 | virtual ~AliTPCcalibDB(); | |
49 | static void Terminate(); | |
50 | void SetRun(Long64_t run); | |
51 | void Update(); //update entries | |
52 | void UpdateRunInformations(Int_t run, Bool_t force=kFALSE); | |
53 | void UpdateNonRec(); | |
54 | // | |
55 | Long64_t GetRun() const {return fRun;} | |
56 | // | |
57 | // | |
58 | // | |
59 | AliTPCTransform* GetTransform() const {return fTransform;} | |
60 | AliTPCExB* GetExB() const {return fExB;} | |
61 | void SetExBField(Float_t bz); | |
62 | void SetExBField( const AliMagF* bmap); | |
63 | static AliTPCExB* GetExB(Float_t bz,Bool_t bdelete); | |
64 | AliTPCCalPad* GetPadGainFactorOld() const {return fPadGainFactor;} | |
65 | AliTPCCalPad* GetPadGainFactor() const {return fActiveChannelMap;} | |
66 | AliTPCCalPad* GetActiveChannelMap() const { return fActiveChannelMap; } | |
67 | AliTPCCalPad* GetDedxGainFactor() const {return fDedxGainFactor;} | |
68 | AliTPCCalPad* GetPadTime0() const {return fPadTime0;} | |
69 | AliTPCCalPad* GetDistortionMap(Int_t i) const; | |
70 | AliTPCCorrection * GetTPCComposedCorrection() const { return fComposedCorrection;} | |
71 | TObjArray * GetTPCComposedCorrectionArray() const { return fComposedCorrectionArray;} | |
72 | void SetTPCComposedCorrection(AliTPCCorrection *compCorr) { fComposedCorrection=compCorr;} | |
73 | AliTPCCorrection * GetTPCComposedCorrection(Float_t field) const; | |
74 | AliTPCCorrection * GetTPCComposedCorrectionDelta() const; | |
75 | Bool_t HasAlignmentOCDB() const { return fBHasAlignmentOCDB;} | |
76 | ||
77 | AliTPCCalPad* GetPadNoise() const {return fPadNoise;} | |
78 | AliTPCCalPad* GetPedestals() const{return fPedestals;} | |
79 | //ALTRO config data | |
80 | TObjArray* GetAltroConfigData() const {return fALTROConfigData;} | |
81 | AliTPCCalPad* GetALTROAcqStart() const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("AcqStart")):0;} | |
82 | AliTPCCalPad* GetALTROZsThr() const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("ZsThr")):0;} | |
83 | AliTPCCalPad* GetALTROFPED() const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("FPED")):0;} | |
84 | AliTPCCalPad* GetALTROAcqStop() const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("AcqStop")):0;} | |
85 | AliTPCCalPad* GetALTROMasked() const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("Masked")):0;} | |
86 | TMap* GetDDLMap() const {return fALTROConfigData?static_cast<TMap*>(fALTROConfigData->FindObject("DDLArray")):0;} | |
87 | TMap* GetRCUconfig() const {return fALTROConfigData?(TMap*)(fALTROConfigData->FindObject("RCUconfig")):0;} | |
88 | Int_t GetRCUTriggerConfig() const; | |
89 | Bool_t IsTrgL0(); | |
90 | Bool_t IsTrgL1(); | |
91 | ||
92 | ||
93 | //Pulser data | |
94 | TObjArray* GetPulserData() const {return fPulserData;} | |
95 | AliTPCCalPad* GetPulserTmean() const {return fPulserData?static_cast<AliTPCCalPad*>(fPulserData->FindObject("PulserTmean")):0;} | |
96 | AliTPCCalPad* GetPulserTrms() const {return fPulserData?static_cast<AliTPCCalPad*>(fPulserData->FindObject("PulserTrms")):0;} | |
97 | AliTPCCalPad* GetPulserQmean() const {return fPulserData?static_cast<AliTPCCalPad*>(fPulserData->FindObject("PulserQmean")):0;} | |
98 | //CE data | |
99 | TObjArray* GetCEData() const {return fCEData;} | |
100 | AliTPCCalPad* GetCETmean() const {return fCEData?static_cast<AliTPCCalPad*>(fCEData->FindObject("CETmean")):0;} | |
101 | AliTPCCalPad* GetCETrms() const {return fCEData?static_cast<AliTPCCalPad*>(fCEData->FindObject("CETrms")):0;} | |
102 | AliTPCCalPad* GetCEQmean() const {return fCEData?static_cast<AliTPCCalPad*>(fCEData->FindObject("CEQmean")):0;} | |
103 | TObjArray* GetCErocTtime() const {return fCEData?static_cast<TObjArray*>(fCEData->FindObject("rocTtime")):0;} | |
104 | TObjArray* GetCErocQtime() const {return fCEData?static_cast<TObjArray*>(fCEData->FindObject("rocQtime")):0;} | |
105 | TObjArray* GetCEfitsDrift()const {return fCEData?static_cast<TObjArray*>(fCEData->FindObject("ceFitsDrift")):0;} | |
106 | TGraph* GetCErocTgraph(const Int_t roc)const {return GetCErocTtime()?static_cast<TGraph*>(GetCErocTtime()->At(roc)):0;} | |
107 | TGraph* GetCErocQgraph(const Int_t roc)const {return GetCErocQtime()?static_cast<TGraph*>(GetCErocQtime()->At(roc)):0;} | |
108 | static Float_t GetCEdriftTime(Int_t run, Int_t sector, Double_t timeStamp=-1., Int_t *entries=0); | |
109 | static Float_t GetCEchargeTime(Int_t run, Int_t sector, Double_t timeStamp=-1., Int_t *entries=0); | |
110 | //Raw calibration | |
111 | AliTPCCalibRaw* GetCalibRaw() const {return fCalibRaw;} | |
112 | //QA object | |
113 | AliTPCdataQA* GetDataQA() const {return fDataQA;} | |
114 | // | |
115 | AliTPCSensorTempArray* GetTemperature() const {return fTemperature;} | |
116 | AliTPCParam* GetParameters() const {return fParam;} | |
117 | AliTPCAltroMapping ** GetMapping() const{ return fMapping;} | |
118 | AliTPCClusterParam *GetClusterParam() const { return fClusterParam;} | |
119 | TObjArray *GetTimeGainSplines() const { return fTimeGainSplines;} | |
120 | // | |
121 | //GRP information | |
122 | static AliGRPObject * GetGRP(Int_t run); | |
123 | static TMap * GetGRPMap(Int_t run); | |
124 | static Float_t GetPressure(Int_t timeStamp, Int_t run, Int_t type=0); | |
125 | static Float_t GetL3Current(Int_t run, Int_t statType=0); | |
126 | static Float_t GetBz(Int_t run); | |
127 | static Char_t GetL3Polarity(Int_t run); | |
128 | static TString GetRunType(Int_t run); | |
129 | // | |
130 | static Float_t GetDCSSensorValue(AliDCSSensorArray *arr, Int_t timeStamp, const char * sensorName, Int_t sigDigits=-1); | |
131 | static Float_t GetDCSSensorMeanValue(AliDCSSensorArray *arr, const char * sensorName, Int_t sigDigits=-1); | |
132 | //Voltage information | |
133 | static Float_t GetChamberHighVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0, Bool_t current=kFALSE); | |
134 | static Float_t GetSkirtVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0); | |
135 | static Float_t GetCoverVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0); | |
136 | static Float_t GetGGoffsetVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0); | |
137 | static Float_t GetGGnegVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0); | |
138 | static Float_t GetGGposVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0); | |
139 | //Goofie Values | |
140 | static Float_t GetValueGoofie(Int_t timeStamp, Int_t run, Int_t type); | |
141 | // | |
142 | static Bool_t GetTemperatureFit(Int_t timeStamp, Int_t run, Int_t side,TVectorD& fit); | |
143 | static Float_t GetTemperature(Int_t timeStamp, Int_t run, Int_t side); | |
144 | static Double_t GetPTRelative(UInt_t timeSec, Int_t run, Int_t side); | |
145 | AliDCSSensor * GetPressureSensor(Int_t run, Int_t type=0); | |
146 | //AliDCSSensor * GetVoltageSensor(Int_t run, Int_t type=0); | |
147 | AliTPCSensorTempArray * GetTemperatureSensor(Int_t run); | |
148 | AliDCSSensorArray * GetGoofieSensors(Int_t run); | |
149 | AliDCSSensorArray * GetVoltageSensors(Int_t run); | |
150 | AliTPCCalibVdrift * GetVdrift(Int_t run); | |
151 | TObjArray * GetTimeGainSplinesRun(Int_t run); | |
152 | TObjArray* GetTimeVdriftSplineRun(Int_t run); | |
153 | static Float_t GetGain(Int_t sector, Int_t row, Int_t pad); | |
154 | // | |
155 | Double_t GetVDriftCorrectionTime(Int_t timeStamp, Int_t run, Int_t side, Int_t mode); | |
156 | Double_t GetTime0CorrectionTime(Int_t timeStamp, Int_t run, Int_t side, Int_t mode); | |
157 | Double_t GetVDriftCorrectionGy(Int_t timeStamp, Int_t run, Int_t side, Int_t mode); | |
158 | // | |
159 | AliSplineFit* GetVdriftSplineFit(const char* name, Int_t run); | |
160 | AliSplineFit* CreateVdriftSplineFit(const char* graphName, Int_t run); | |
161 | // | |
162 | static void CreateObjectList(const Char_t *filename, TObjArray *calibObjects); | |
163 | static void MakeTree(const char * fileName, TObjArray * array, const char * mapFileName = 0, AliTPCCalPad* outlierPad = 0, Float_t ltmFraction = 0.9); | |
164 | static void RegisterExB(Int_t index, Float_t bz, Bool_t bdelete); | |
165 | // | |
166 | // | |
167 | // | |
168 | AliTPCCalPad* MakeDeadMap(Double_t notInMap=1, const char *nameMappingFile="$ALICE_ROOT/TPC/Calib/tpcMapping.root" ); | |
169 | AliGRPObject * MakeGRPObjectFromMap(TMap *map); | |
170 | AliCTPTimeParams* GetCTPTimeParams() const {return fCTPTimeParams;} | |
171 | //Create a tree suited for diplaying with the AliTPCCalibViewerGUI | |
172 | Bool_t CreateGUITree(const char* filename=""); | |
173 | static Bool_t CreateGUITree(Int_t run, const char* filename=""); | |
174 | static Bool_t CreateRefFile(Int_t run, const char* filename=""); | |
175 | // | |
176 | protected: | |
177 | ||
178 | AliCDBEntry* GetCDBEntry(const char* cdbPath); | |
179 | Int_t InitDeadMap(); | |
180 | ||
181 | Int_t fRun; // current run number | |
182 | AliTPCTransform *fTransform; // object responsible for spacial corrections | |
183 | AliTPCExB *fExB; // ExB correction factor | |
184 | // AliCDBStorage* fLocator; // Storage locator retrieved from AliCDBManager | |
185 | // | |
186 | // calibration parameters per pad | |
187 | // | |
188 | AliTPCCalPad* fPadGainFactor; // Gain calibration entry | |
189 | AliTPCCalPad* fActiveChannelMap; // Map of active channels calculated on the fly | |
190 | AliTPCCalPad* fDedxGainFactor; // Gain calibration entry - for dEdx | |
191 | AliTPCCalPad* fPadTime0; // Time0 calibration entry | |
192 | TObjArray *fDistortionMap; // distortion map | |
193 | AliTPCCorrection *fComposedCorrection; // general space point corrections | |
194 | TObjArray * fComposedCorrectionArray; //space point corrections for different field setting | |
195 | AliTPCCalPad* fPadNoise; // Noise calibration entry | |
196 | AliTPCCalPad* fPedestals; // Pedestal calibration entry | |
197 | AliTPCCalibRaw *fCalibRaw; // raw data calibration entry | |
198 | AliTPCdataQA *fDataQA; // qa object | |
199 | TObjArray *fALTROConfigData; // ALTRO configuration data | |
200 | TObjArray *fPulserData; // Calibration Pulser data | |
201 | TObjArray *fCEData; // CE data | |
202 | // | |
203 | // | |
204 | // | |
205 | AliTPCSensorTempArray* fTemperature; // Temperature calibration entry | |
206 | AliTPCAltroMapping **fMapping; // Altro mapping | |
207 | // | |
208 | // | |
209 | AliTPCParam * fParam; // TPC parameters | |
210 | AliTPCClusterParam * fClusterParam; // TPC cluster error, shape and Q parameterization | |
211 | TObjArray * fTimeGainSplines; // Array of AliSplineFits: at 0 MIP position in time ; at 1 Fermi Plateau from cosmics | |
212 | // | |
213 | // Get the corssrun information | |
214 | // | |
215 | TMap fTimeGainSplinesArray; //! array Array of AliSplineFits: at 0 MIP position in time ; at 1 Fermi Plateau from cosmics | |
216 | TMap fGRPArray; //! array of GRPs - per run | |
217 | TMap fGRPMaps; //! array of GRPs maps - per run - old data | |
218 | TMap fGoofieArray; //! array of GOOFIE values -per run | |
219 | TMap fVoltageArray; //! array of Chamber HV values -per run | |
220 | TMap fTemperatureArray; //! array of temperature sensors - per run | |
221 | TMap fVdriftArray; //! array of v drift interfaces | |
222 | TMap fDriftCorrectionArray; //! array of drift correction | |
223 | ||
224 | TArrayI fRunList; //! run list - indicates try to get the run param | |
225 | Bool_t fBHasAlignmentOCDB; // Flag - alignment from the Transformation class | |
226 | // | |
227 | static AliTPCcalibDB* fgInstance; // singleton control | |
228 | static Bool_t fgTerminated; // termination control | |
229 | static TObjArray fgExBArray; // array of ExB corrections | |
230 | AliTPCcalibDButil *fDButil; // utility class | |
231 | //ctp info | |
232 | AliCTPTimeParams *fCTPTimeParams; //CTP timing parameters | |
233 | Int_t fMode; //RCU trigger config mode | |
234 | ||
235 | private: | |
236 | AliTPCcalibDB (const AliTPCcalibDB& ); | |
237 | AliTPCcalibDB& operator= (const AliTPCcalibDB& ); | |
238 | ||
239 | ClassDef(AliTPCcalibDB, 0) | |
240 | }; | |
241 | ||
242 | #endif |