]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCcalibDB.h
Fix to bug reports:
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibDB.h
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
23 class AliTPCSensorTempArray;
24 class AliDCSSensorArray;
25 class AliCDBEntry;
26 class AliTPCParam;
27 class AliTPCAltroMapping;
28 class AliTPCClusterParam;
29 class AliDCSSensor;
30 class AliDCSSensorArray;
31 class AliTPCCalibVdrift;
32 class AliGRPObject;
33 class AliTPCCalibRaw;
34 class TMap;
35 class AliMagF;
36 //class AliCDBStorage;
37
38 class AliTPCcalibDB : public TObject
39 {
40  public: 
41   static AliTPCcalibDB* Instance();
42   AliTPCcalibDB();
43   virtual ~AliTPCcalibDB();
44   static void Terminate();
45   void   SetRun(Long64_t run);   
46   void   Update();  //update entries
47   void   UpdateRunInformations(Int_t run, Bool_t force=kFALSE);
48   //
49   Long64_t GetRun() const {return fRun;}
50   //
51   //
52   //
53   AliTPCTransform* GetTransform() {return fTransform;}
54   AliTPCExB*    GetExB() {return fExB;}
55   void          SetExBField(Float_t bz);
56   void          SetExBField( const AliMagF*   bmap);
57   static AliTPCExB*    GetExB(Float_t bz,Bool_t bdelete);
58   AliTPCCalPad* GetPadGainFactor() {return fPadGainFactor;}
59   AliTPCCalPad* GetDedxGainFactor() {return fDedxGainFactor;}
60   AliTPCCalPad* GetPadTime0() {return fPadTime0;}
61   AliTPCCalPad* GetPadNoise() {return fPadNoise;}
62   AliTPCCalPad* GetPedestals() {return fPedestals;}
63   //ALTRO config data
64   TObjArray* GetAltroConfigData()  const {return fALTROConfigData;}
65   AliTPCCalPad* GetALTROAcqStart() const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("AcqStart")):0;}
66   AliTPCCalPad* GetALTROZsThr()    const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("ZsThr")):0;}
67   AliTPCCalPad* GetALTROFPED()     const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("FPED")):0;}
68   AliTPCCalPad* GetALTROAcqStop()  const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("AcqStop")):0;}
69   AliTPCCalPad* GetALTROMasked()   const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("Masked")):0;}
70   //Pulser data
71   TObjArray*    GetPulserData()  const {return fPulserData;}
72   AliTPCCalPad* GetPulserTmean() const {return fPulserData?static_cast<AliTPCCalPad*>(fPulserData->FindObject("PulserTmean")):0;}
73   AliTPCCalPad* GetPulserTrms()  const {return fPulserData?static_cast<AliTPCCalPad*>(fPulserData->FindObject("PulserTrms")):0;}
74   AliTPCCalPad* GetPulserQmean() const {return fPulserData?static_cast<AliTPCCalPad*>(fPulserData->FindObject("PulserQmean")):0;}
75   //CE data
76   TObjArray*    GetCEData()     const {return fCEData;}
77   AliTPCCalPad* GetCETmean()    const {return fCEData?static_cast<AliTPCCalPad*>(fCEData->FindObject("CETmean")):0;}
78   AliTPCCalPad* GetCETrms()     const {return fCEData?static_cast<AliTPCCalPad*>(fCEData->FindObject("CETrms")):0;}
79   AliTPCCalPad* GetCEQmean()    const {return fCEData?static_cast<AliTPCCalPad*>(fCEData->FindObject("CEQmean")):0;}
80   TObjArray*    GetCErocTtime() const {return fCEData?static_cast<TObjArray*>(fCEData->FindObject("rocTtime")):0;}
81   TObjArray*    GetCErocQtime() const {return fCEData?static_cast<TObjArray*>(fCEData->FindObject("rocQtime")):0;}
82   TGraph*       GetCErocTgraph(const Int_t roc)const {return GetCErocTtime()?static_cast<TGraph*>(GetCErocTtime()->At(roc)):0;}
83   TGraph*       GetCErocQgraph(const Int_t roc)const {return GetCErocQtime()?static_cast<TGraph*>(GetCErocQtime()->At(roc)):0;}
84   static Float_t GetCEdriftTime(Int_t run, Int_t sector, Double_t timeStamp=-1., Int_t *entries=0);
85   static Float_t GetCEchargeTime(Int_t run, Int_t sector, Double_t timeStamp=-1., Int_t *entries=0);
86   //Raw calibration
87   AliTPCCalibRaw* GetCalibRaw() const {return fCalibRaw;}
88   //
89   AliTPCSensorTempArray* GetTemperature() {return fTemperature;}
90   AliTPCParam*  GetParameters(){return fParam;}
91   AliTPCAltroMapping ** GetMapping(){ return fMapping;}
92   AliTPCClusterParam *GetClusterParam(){ return fClusterParam;}
93   TObjArray *GetTimeGainSplines(){ return fTimeGainSplines;}  
94   //
95   //GRP information
96   static AliGRPObject * GetGRP(Int_t run);
97   static TMap *  GetGRPMap(Int_t run);
98   static Float_t GetPressure(Int_t timeStamp, Int_t run, Int_t type=0);
99   static Float_t GetL3Current(Int_t run, Int_t statType=0);
100   static Float_t GetBz(Int_t run);
101   static Char_t  GetL3Polarity(Int_t run);
102   static TString GetRunType(Int_t run);
103   //
104   static Float_t GetDCSSensorValue(AliDCSSensorArray *arr, Int_t timeStamp, const char * sensorName, Int_t sigDigits=-1);
105   static Float_t GetDCSSensorMeanValue(AliDCSSensorArray *arr, const char * sensorName, Int_t sigDigits=-1);
106   //Voltage information
107   static Float_t GetChamberHighVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
108   static Float_t GetSkirtVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
109   static Float_t GetCoverVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
110   static Float_t GetGGoffsetVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
111   static Float_t GetGGnegVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
112   static Float_t GetGGposVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
113   //Goofie Values
114   static Float_t GetValueGoofie(Int_t timeStamp, Int_t run, Int_t type);
115   //
116   static Bool_t  GetTemperatureFit(Int_t timeStamp, Int_t run, Int_t side,TVectorD& fit);
117   static Float_t GetTemperature(Int_t timeStamp, Int_t run, Int_t side);
118   static Double_t GetPTRelative(UInt_t timeSec, Int_t run,  Int_t side);
119   AliDCSSensor * GetPressureSensor(Int_t run, Int_t type=0);
120   //AliDCSSensor * GetVoltageSensor(Int_t run, Int_t type=0);
121   AliTPCSensorTempArray * GetTemperatureSensor(Int_t run);
122   AliDCSSensorArray *     GetGoofieSensors(Int_t run);
123   AliDCSSensorArray *     GetVoltageSensors(Int_t run);
124   AliTPCCalibVdrift *     GetVdrift(Int_t run);
125         TObjArray *                                                     GetTimeGainSplinesRun(Int_t run);
126   static Float_t GetGain(Int_t sector, Int_t row, Int_t pad);
127   //
128   static void     CreateObjectList(const Char_t *filename, TObjArray *calibObjects);
129   static void MakeTree(const char * fileName, TObjArray * array, const char * mapFileName = 0, AliTPCCalPad* outlierPad = 0, Float_t ltmFraction = 0.9);
130   static void RegisterExB(Int_t index, Float_t bz, Bool_t bdelete);
131   //
132   //
133
134   AliGRPObject * MakeGRPObjectFromMap(TMap *map);
135   //Create a tree suited for diplaying with the AliTPCCalibViewerGUI
136   static Bool_t CreateGUITree(Int_t run, const char* filename="");
137   //
138 protected:
139   
140   AliCDBEntry* GetCDBEntry(const char* cdbPath);   
141   Long64_t        fRun;         // current run number
142   AliTPCTransform *fTransform;      // object responsible for spacial corrections
143   AliTPCExB *fExB;              // ExB correction factor
144 //  AliCDBStorage* fLocator;      // Storage locator retrieved from AliCDBManager
145   //
146   // calibration parameters per pad
147   //
148   AliTPCCalPad* fPadGainFactor;   // Gain calibration entry
149   AliTPCCalPad* fDedxGainFactor;   // Gain calibration entry - for dEdx
150   AliTPCCalPad* fPadTime0;        // Time0 calibration entry
151   AliTPCCalPad* fPadNoise;        // Noise calibration entry
152   AliTPCCalPad* fPedestals;       // Pedestal calibration entry
153   AliTPCCalibRaw *fCalibRaw;      // raw data calibration entry
154   TObjArray *fALTROConfigData;    // ALTRO configuration data
155   TObjArray *fPulserData;         // Calibration Pulser data
156   TObjArray *fCEData;             // CE data
157   //
158   AliTPCSensorTempArray* fTemperature; // Temperature calibration entry
159   AliTPCAltroMapping **fMapping;   // Altro mapping   
160   //
161   //
162   AliTPCParam * fParam;           // TPC parameters
163   AliTPCClusterParam * fClusterParam;  // TPC cluster error, shape and Q parameterization
164   TObjArray * fTimeGainSplines; // Array of AliSplineFits: at 0 MIP position in time ; at 1 Fermi Plateau from cosmics
165   //
166   // Get the corssrun information
167   //
168   TObjArray      fTimeGainSplinesArray; //! array Array of AliSplineFits: at 0 MIP position in time ; at 1 Fermi Plateau from cosmics
169   TObjArray      fGRPArray;                                                     //! array of GRPs  -  per run
170   TObjArray      fGRPMaps;                                                      //! array of GRPs maps  -  per run - old data  
171   TObjArray      fGoofieArray;                                  //! array of GOOFIE values -per run
172   TObjArray      fVoltageArray;                                 //! array of Chamber HV values -per run
173   TObjArray      fTemperatureArray;                     //! array of temperature sensors - per run
174   TObjArray      fVdriftArray;                                  //! array of v drift interfaces
175   TObjArray      fDriftCorrectionArray;                //! array of drift correction
176
177   TArrayI        fRunList;                                                      //! run list - indicates try to get the run param
178   //
179   static AliTPCcalibDB* fgInstance;  // singleton control
180   static Bool_t       fgTerminated;  // termination control 
181   static TObjArray    fgExBArray;    // array of ExB corrections
182   ClassDef(AliTPCcalibDB, 0)
183  private:
184    AliTPCcalibDB (const AliTPCcalibDB& );
185    AliTPCcalibDB& operator= (const AliTPCcalibDB& );
186 };
187
188
189 #endif