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