LCOV - code coverage report
Current view: top level - TPC/TPCbase - AliTPCcalibDB.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 24 52 46.2 %
Date: 2016-06-14 17:26:59 Functions: 25 56 44.6 %

          Line data    Source code
       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             : /// \class AliTPCcalibDB
       7             : /// \brief Class providing the calibration parameters by accessing the CDB
       8             : 
       9             : 
      10             : class AliTPCTransform;
      11             : class AliTPCExB;
      12             : #include "TObject.h"
      13             : #include "TObjArray.h"
      14             : #include "TArrayI.h"
      15             : #include "TVectorD.h"
      16             : #include "TGraph.h"
      17             : #include "AliTPCCalPad.h"
      18             : #include "TString.h"
      19             : #include "AliSplineFit.h"
      20             : #include "TMap.h"
      21             : 
      22             : class TGraphErrors;
      23             : class AliTPCSensorTempArray;
      24             : class AliDCSSensorArray;
      25             : class AliCDBEntry;
      26             : class AliTPCParam;
      27             : class AliTPCAltroMapping;
      28             : class AliTPCClusterParam;
      29             : class AliTPCRecoParam;
      30             : class AliDCSSensor;
      31             : class AliDCSSensorArray;
      32             : class AliTPCCalibVdrift;
      33             : class AliGRPObject;
      34             : class AliTPCCalibRaw;
      35             : class AliTPCdataQA;
      36             : class AliMagF;
      37             : class AliTPCcalibDButil;
      38             : class AliCTPTimeParams;
      39             : class AliTPCCorrection;
      40             : class AliTPCChebCorr;
      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             :   Bool_t   GetTailcancelationGraphs(Int_t sector, TGraphErrors ** graphRes, Float_t * indexAmpGraphs);
      55             :   //
      56         598 :   Long64_t GetRun() const {return fRun;}
      57             :   //
      58             :   //
      59             :   //
      60      489660 :   AliTPCTransform* GetTransform() const {return fTransform;}
      61     7025856 :   AliTPCExB*    GetExB() const {return fExB;}
      62             :   void          SetExBField(Float_t bz);
      63             :   void          SetExBField( const AliMagF*   bmap);
      64             :   static AliTPCExB*    GetExB(Float_t bz,Bool_t bdelete);
      65           0 :   AliTPCCalPad* GetPadGainFactorOld() const {return fPadGainFactor;}
      66          16 :   AliTPCCalPad* GetPadGainFactor() const {return fActiveChannelMap;}
      67           0 :   AliTPCCalPad* GetActiveChannelMap() const { return fActiveChannelMap; }
      68      311088 :   AliTPCCalPad* GetDedxGainFactor() const {return fDedxGainFactor;}
      69    10408024 :   AliTPCCalPad* GetPadTime0() const {return fPadTime0;}
      70             :   AliTPCCalPad* GetDistortionMap(Int_t i) const;
      71         576 :   AliTPCCorrection * GetTPCComposedCorrection() const { return fComposedCorrection;}
      72           0 :   TObjArray * GetTPCComposedCorrectionArray() const { return fComposedCorrectionArray;}
      73           0 :   TObjArray*  GetCorrectionMaps()             const {return fCorrectionMaps;}
      74           0 :   void          SetTPCComposedCorrection(AliTPCCorrection *compCorr) { fComposedCorrection=compCorr;}
      75             :   AliTPCCorrection * GetTPCComposedCorrection(Float_t field) const;
      76             :   AliTPCCorrection * GetTPCComposedCorrectionDelta() const;
      77      389688 :   Bool_t      HasAlignmentOCDB() const { return fBHasAlignmentOCDB;}
      78             : 
      79       46374 :   AliTPCCalPad* GetPadNoise() const {return fPadNoise;}
      80         574 :   AliTPCCalPad* GetPedestals() const{return fPedestals;}
      81             : 
      82             :   void LoadCorrectionMaps();
      83             : 
      84             :   // ===| ALTRO config data |===================================================
      85           0 :   TObjArray* GetAltroConfigData()  const {return fALTROConfigData;}
      86           0 :   AliTPCCalPad* GetALTROAcqStart() const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("AcqStart")):0;}
      87           0 :   AliTPCCalPad* GetALTROZsThr()    const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("ZsThr")):0;}
      88           0 :   AliTPCCalPad* GetALTROFPED()     const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("FPED")):0;}
      89          12 :   AliTPCCalPad* GetALTROAcqStop()  const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("AcqStop")):0;}
      90          12 :   AliTPCCalPad* GetALTROMasked()   const {return fALTROConfigData?static_cast<AliTPCCalPad*>(fALTROConfigData->FindObject("Masked")):0;}
      91          12 :   TMap* GetDDLMap()   const {return fALTROConfigData?static_cast<TMap*>(fALTROConfigData->FindObject("DDLArray")):0;}
      92          12 :   TMap* GetRCUconfig() const {return fALTROConfigData?(TMap*)(fALTROConfigData->FindObject("RCUconfig")):0;}
      93             :   Int_t GetRCUTriggerConfig() const;
      94             :   Bool_t IsTrgL0();
      95             :   Bool_t IsTrgL1();
      96           6 :   Int_t GetMaxTimeBinAllPads() const { return fMaxTimeBinAllPads; }
      97             : 
      98             :   //
      99           0 :   TObjArray*    GetIonTailArray()  const {return fIonTailArray;}
     100             :   //Pulser data
     101           0 :   TObjArray*    GetPulserData()  const {return fPulserData;}
     102           0 :   AliTPCCalPad* GetPulserTmean() const {return fPulserData?static_cast<AliTPCCalPad*>(fPulserData->FindObject("PulserTmean")):0;}
     103           0 :   AliTPCCalPad* GetPulserTrms()  const {return fPulserData?static_cast<AliTPCCalPad*>(fPulserData->FindObject("PulserTrms")):0;}
     104           0 :   AliTPCCalPad* GetPulserQmean() const {return fPulserData?static_cast<AliTPCCalPad*>(fPulserData->FindObject("PulserQmean")):0;}
     105             :   //CE data
     106           4 :   TObjArray*    GetCEData()     const {return fCEData;}
     107           0 :   AliTPCCalPad* GetCETmean()    const {return fCEData?static_cast<AliTPCCalPad*>(fCEData->FindObject("CETmean")):0;}
     108           0 :   AliTPCCalPad* GetCETrms()     const {return fCEData?static_cast<AliTPCCalPad*>(fCEData->FindObject("CETrms")):0;}
     109           0 :   AliTPCCalPad* GetCEQmean()    const {return fCEData?static_cast<AliTPCCalPad*>(fCEData->FindObject("CEQmean")):0;}
     110           8 :   TObjArray*    GetCErocTtime() const {return fCEData?static_cast<TObjArray*>(fCEData->FindObject("rocTtime")):0;}
     111           0 :   TObjArray*    GetCErocQtime() const {return fCEData?static_cast<TObjArray*>(fCEData->FindObject("rocQtime")):0;}
     112           0 :   TObjArray*    GetCEfitsDrift()const {return fCEData?static_cast<TObjArray*>(fCEData->FindObject("ceFitsDrift")):0;}
     113           0 :   TGraph*       GetCErocTgraph(const Int_t roc)const {return GetCErocTtime()?static_cast<TGraph*>(GetCErocTtime()->At(roc)):0;}
     114           0 :   TGraph*       GetCErocQgraph(const Int_t roc)const {return GetCErocQtime()?static_cast<TGraph*>(GetCErocQtime()->At(roc)):0;}
     115             :   static Float_t GetCEdriftTime(Int_t run, Int_t sector, Double_t timeStamp=-1., Int_t *entries=0);
     116             :   static Float_t GetCEchargeTime(Int_t run, Int_t sector, Double_t timeStamp=-1., Int_t *entries=0);
     117             :   //Raw calibration
     118           0 :   AliTPCCalibRaw* GetCalibRaw() const {return fCalibRaw;}
     119             : 
     120             :   //QA object
     121           0 :   AliTPCdataQA*   GetDataQA() const {return fDataQA;}
     122             :   //
     123           0 :   AliTPCSensorTempArray* GetTemperature() const {return fTemperature;}
     124      824952 :   AliTPCParam*  GetParameters() const {return fParam;}
     125           8 :   AliTPCAltroMapping ** GetMapping() const{ return fMapping;}
     126      633248 :   AliTPCClusterParam *GetClusterParam() const { return fClusterParam;}
     127           0 :   TObjArray *GetTimeGainSplines() const { return fTimeGainSplines;}  
     128             :   //
     129             :   //Reco param getter
     130             :   AliTPCRecoParam *GetRecoParam(Int_t i) const;
     131             :   //GRP information
     132             :   static AliGRPObject * GetGRP(Int_t run);
     133             :   static TMap *  GetGRPMap(Int_t run);
     134             :   static Float_t GetPressure(Int_t timeStamp, Int_t run, Int_t type=0);
     135             :   static Float_t GetL3Current(Int_t run, Int_t statType=0);
     136             :   static Float_t GetBz(Int_t run);
     137             :   static Char_t  GetL3Polarity(Int_t run);
     138             :   static TString GetRunType(Int_t run);
     139             :   //
     140             :   static Float_t GetDCSSensorValue(AliDCSSensorArray *arr, Int_t timeStamp, const char * sensorName, Int_t sigDigits=-1);
     141             :   static Float_t GetDCSSensorMeanValue(AliDCSSensorArray *arr, const char * sensorName, Int_t sigDigits=-1);
     142             :   //Voltage information
     143             :   static Float_t GetChamberHighVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0, Bool_t current=kFALSE);
     144             :   static Float_t GetSkirtVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
     145             :   static Float_t GetCoverVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
     146             :   static Float_t GetGGoffsetVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
     147             :   static Float_t GetGGnegVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
     148             :   static Float_t GetGGposVoltage(Int_t run, Int_t sector, Int_t timeStamp=-1, Int_t sigDigits=0);
     149             :   //
     150        2304 :   Bool_t  GetChamberHVStatus(UInt_t roc)                  const { return (roc<72)?fChamberHVStatus[roc]:kFALSE;   }
     151           0 :   Float_t GetChamberHighVoltageMedian(UInt_t roc)         const { return (roc<72)?fChamberHVmedian[roc]:0.;       }
     152         864 :   Float_t GetChamberCurrentNominalHighVoltage(UInt_t roc) const { return (roc<72)?fCurrentNominalVoltage[roc]:0.; }
     153           0 :   Float_t GetChamberGoodHighVoltageFraction(UInt_t roc)   const { return (roc<72)?fChamberHVgoodFraction[roc]:0.; }
     154        2304 :   AliDCSSensor* GetChamberHVSensor(UInt_t roc)            const { return (roc<72)?fHVsensors[roc]:0x0;            }
     155             :   Double_t GetGainCorrectionHVandPT(Int_t timeStamp, Int_t run, Int_t sector, Int_t deltaCache, Int_t mode);
     156             :   Bool_t  IsDataTakingActive(time_t timeStamp);
     157             :   //
     158             :   //Goofie Values
     159             :   //
     160             :   static Float_t GetValueGoofie(Int_t timeStamp, Int_t run, Int_t type);
     161             :   //
     162             :   static Bool_t  GetTemperatureFit(Int_t timeStamp, Int_t run, Int_t side,TVectorD& fit);
     163             :   static Float_t GetTemperature(Int_t timeStamp, Int_t run, Int_t side);
     164             :   static Double_t GetPTRelative(UInt_t timeSec, Int_t run,  Int_t side);
     165             :   AliDCSSensor * GetPressureSensor(Int_t run, Int_t type=0);
     166             :   //AliDCSSensor * GetVoltageSensor(Int_t run, Int_t type=0);
     167             :   AliTPCSensorTempArray * GetTemperatureSensor(Int_t run);
     168             :   AliDCSSensorArray *     GetGoofieSensors(Int_t run);
     169             :   AliDCSSensorArray *     GetVoltageSensors(Int_t run);
     170             :   AliTPCCalibVdrift *     GetVdrift(Int_t run);
     171             :   TObjArray *             GetTimeGainSplinesRun(Int_t run);
     172             :   TObjArray*              GetTimeVdriftSplineRun(Int_t run);
     173             :   static Float_t GetGain(Int_t sector, Int_t row, Int_t pad);
     174             :   //
     175             :   // Drift velocity information
     176             :   //
     177             :   Double_t      GetVDriftCorrectionTime(Int_t timeStamp, Int_t run, Int_t side, Int_t mode);
     178             :   Double_t      GetTime0CorrectionTime(Int_t timeStamp, Int_t run, Int_t side, Int_t mode);
     179             :   Double_t      GetVDriftCorrectionGy(Int_t timeStamp, Int_t run, Int_t side, Int_t mode);
     180             :   Double_t      GetVDriftCorrectionDeltaZ(Int_t timeStamp, Int_t run, Int_t side, Int_t mode);
     181             :   //
     182             :   AliSplineFit* GetVdriftSplineFit(const char* name, Int_t run);
     183             :   AliSplineFit* CreateVdriftSplineFit(const char* graphName, Int_t run);
     184             :   //
     185             :   static void     CreateObjectList(const Char_t *filename, TObjArray *calibObjects);
     186             :   static void MakeTree(const char * fileName, TObjArray * array, const char * mapFileName = 0, AliTPCCalPad* outlierPad = 0, Float_t ltmFraction = 0.9);
     187             :   static void RegisterExB(Int_t index, Float_t bz, Bool_t bdelete);
     188             :   //
     189             :   // Dead channel map functions
     190             :   //
     191             :   Int_t GetMaskedChannelsFromCorrectionMaps(TBits maskedPads[72]);
     192             :   //
     193             :   //
     194             :   //
     195             :   AliTPCCalPad* MakeDeadMap(Double_t notInMap=1, const char *nameMappingFile="$ALICE_ROOT/TPC/Calib/tpcMapping.root" );
     196             :   AliGRPObject * MakeGRPObjectFromMap(TMap *map);
     197           0 :   AliCTPTimeParams* GetCTPTimeParams() const {return fCTPTimeParams;}
     198             :   //Create a tree suited for diplaying with the AliTPCCalibViewerGUI
     199             :   Bool_t CreateGUITree(const char* filename="");
     200             :   static Bool_t CreateGUITree(Int_t run, const char* filename="");
     201             :   static Bool_t CreateRefFile(Int_t run, const char* filename="");
     202             :   //
     203             : protected:
     204             :   
     205             :   AliCDBEntry* GetCDBEntry(const char* cdbPath);   
     206             :   void         UpdateChamberHighVoltageData();
     207             :   Int_t        InitDeadMap();
     208             :   void         InitAltroData();
     209             : 
     210             :   Int_t        fRun;         ///< current run number
     211             :   AliTPCTransform *fTransform;      ///< object responsible for spacial corrections
     212             :   AliTPCExB *fExB;              ///< ExB correction factor
     213             : //  AliCDBStorage* fLocator;      // Storage locator retrieved from AliCDBManager
     214             :   //
     215             :   // calibration parameters per pad
     216             :   //
     217             :   AliTPCCalPad* fPadGainFactor;   ///< Gain calibration entry
     218             :   AliTPCCalPad* fActiveChannelMap; ///< Map of active channels calculated on the fly
     219             :   AliTPCCalPad* fDedxGainFactor;   ///< Gain calibration entry - for dEdx
     220             :   AliTPCCalPad* fPadTime0;        ///< Time0 calibration entry
     221             :   TObjArray   *fDistortionMap;    ///< distortion map
     222             :   AliTPCCorrection *fComposedCorrection;  ///< general space point corrections
     223             :   TObjArray *      fComposedCorrectionArray; ///< space point corrections for different field setting
     224             :   TObjArray*       fCorrectionMaps;          ///< RS: new fast Chebyshev parameterization maps
     225             :   AliTPCCalPad* fPadNoise;        ///< Noise calibration entry
     226             :   AliTPCCalPad* fPedestals;       ///< Pedestal calibration entry
     227             :   AliTPCCalibRaw *fCalibRaw;      ///< raw data calibration entry
     228             :   AliTPCdataQA  *fDataQA;         ///< qa object
     229             :   TObjArray *fALTROConfigData;    ///< ALTRO configuration data
     230             :   TObjArray * fIonTailArray;      ///< array of graphs with the ion tail
     231             :   TObjArray *fPulserData;         ///< Calibration Pulser data
     232             :   TObjArray *fCEData;             ///< CE data
     233             :   //
     234             :   // Defived ALTRO information
     235             :   //
     236             :   Int_t fMaxTimeBinAllPads;       ///< Maximum Time bin in whole TPC extracted from AltroConfig
     237             :   //
     238             :   // Chamber HV info
     239             :   //
     240             :   Bool_t  fChamberHVStatus[72];       ///< Status of the Chamber, HV wise (on/off)
     241             :   Float_t fChamberHVmedian[72];       ///< median chamber high voltage
     242             :   Float_t fCurrentNominalVoltage[72]; ///< current nominal voltages
     243             :   Float_t fChamberHVgoodFraction[72]; ///< fraction of time the chamber has a good HV (wrt. robust median)
     244             :   AliDCSSensor *fHVsensors[72];       ///< HV sensors
     245             :   TGraph *fGrRunState;                ///< store information if run is active or paused
     246             :   //
     247             :   //
     248             :   //
     249             :   AliTPCSensorTempArray* fTemperature; ///< Temperature calibration entry
     250             :   AliTPCAltroMapping **fMapping;   ///< Altro mapping
     251             :   //
     252             :   //
     253             :   AliTPCParam * fParam;                ///< TPC parameters
     254             :   AliTPCClusterParam * fClusterParam;  ///< TPC cluster error, shape and Q parameterization
     255             :   TObjArray * fRecoParamList;          ///< List of TPC reco param objects
     256             :   TObjArray * fTimeGainSplines;        ///< Array of AliSplineFits: at 0 MIP position in time ; at 1 Fermi Plateau from cosmics
     257             :   //
     258             :   // Get the corssrun information
     259             :   //
     260             :   TMap      fTimeGainSplinesArray; //!<! array Array of AliSplineFits: at 0 MIP position in time ; at 1 Fermi Plateau from cosmics
     261             :   TMap      fGRPArray;                                                  //!<! array of GRPs  -  per run
     262             :   TMap      fGRPMaps;                                                   //!<! array of GRPs maps  -  per run - old data
     263             :   TMap      fGoofieArray;                                       //!<! array of GOOFIE values -per run
     264             :   TMap      fVoltageArray;                                      //!<! array of Chamber HV values -per run
     265             :   TMap      fTemperatureArray;                  //!<! array of temperature sensors - per run
     266             :   TMap      fVdriftArray;                                       //!<! array of v drift interfaces
     267             :   TMap      fDriftCorrectionArray;                //!<! array of drift correction
     268             : 
     269             :   TArrayI        fRunList;                                                      //!<! run list - indicates try to get the run param
     270             :   Bool_t         fBHasAlignmentOCDB;                ///< Flag - alignment from the Transformation class
     271             :   //
     272             :   static AliTPCcalibDB* fgInstance;  ///< singleton control
     273             :   static Bool_t       fgTerminated;  ///< termination control
     274             :   static TObjArray    fgExBArray;    ///< array of ExB corrections
     275             :   AliTPCcalibDButil   *fDButil;       ///< utility class
     276             :   //ctp info
     277             :   AliCTPTimeParams *fCTPTimeParams;   ///< CTP timing parameters
     278             :   Int_t            fMode;             ///< RCU trigger config mode
     279             : 
     280             :  private:
     281             :    AliTPCcalibDB (const AliTPCcalibDB& );
     282             :    AliTPCcalibDB& operator= (const AliTPCcalibDB& );
     283             :   
     284             :    /// \cond CLASSIMP
     285         896 :    ClassDef(AliTPCcalibDB, 2)
     286             :    /// \endcond
     287             : };
     288             : 
     289             : #endif

Generated by: LCOV version 1.11