LCOV - code coverage report
Current view: top level - TPC/TPCbase - AliTPCCorrectionLookupTable.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 11 9.1 %
Date: 2016-06-14 17:26:59 Functions: 1 15 6.7 %

          Line data    Source code
       1             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       2             :  * See cxx source for full Copyright notice                               */
       3             : 
       4             : /// \class AliTPCCorrectionLookupTable
       5             : /// \brief AliTPCCorrectionLookupTable class
       6             : ///
       7             : /// \author Jens Wiechula
       8             : 
       9             : #include "AliTPCCorrection.h"
      10             : #include <TVectorD.h>
      11             : #include <TMatrixFfwd.h>
      12             : #include <THn.h>
      13             : 
      14             : class AliTPCCorrectionLookupTable : public AliTPCCorrection {
      15             : 
      16             : public:
      17             :   AliTPCCorrectionLookupTable();
      18             :   virtual ~AliTPCCorrectionLookupTable();
      19             : 
      20             :   virtual void GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]);
      21             :   virtual void GetDistortion(const Float_t x[],const Short_t roc,Float_t dx[]);
      22             : 
      23             :   void SetupDefaultLimits();
      24             :   void CreateLookupTable(AliTPCCorrection &tpcCorr, Float_t stepSize=5.);
      25             :   void CreateLookupTableSinglePhi(AliTPCCorrection &tpcCorr, Int_t iPhi, Float_t stepSize=5.);
      26             : 
      27             :   void CreateLookupTableFromResidualDistortion(THn &resDist);
      28             :   void CreateResidual(AliTPCCorrection *distortion, AliTPCCorrection* correction);
      29             : 
      30             :   void MergePhiTables(const char* files);
      31             : 
      32           0 :   void   SetFillCorrection(Bool_t fill) { fFillCorrection=fill;   }
      33           0 :   Bool_t GetFillCorrection() const      { return fFillCorrection; }
      34             :   void BuildExactInverse();
      35             : 
      36           0 :   Int_t GetNR()   const { return fNR;   }
      37           0 :   Int_t GetNPhi() const { return fNPhi; }
      38           0 :   Int_t GetNZ()   const { return fNZ;   }
      39             : 
      40           0 :   const TVectorD& GetLimitsR()   const { return fLimitsR; }
      41           0 :   const TVectorD& GetLimitsPhi() const { return fLimitsPhi; }
      42           0 :   const TVectorD& GetLimitsZ()   const { return fLimitsZ; }
      43             : 
      44           0 :   void SetCorrScaleFactor(Float_t    val) { fCorrScaleFactor = val; }
      45           0 :   Float_t    GetCorrScaleFactor() const { return fCorrScaleFactor; }
      46             : 
      47             : private:
      48             : 
      49             :   // sizes of lookup tables
      50             :   // TODO: Remove, since it will be stored in the TVectorD anyhow?
      51             :   Int_t     fNR;                   ///< number of rows (r) used for lookup table
      52             :   Int_t     fNPhi;                 ///< number of phi slices used for lookup table
      53             :   Int_t     fNZ;                   ///< number of columns (z) used for lookup table
      54             : 
      55             :   Float_t   fCorrScaleFactor;      ///< overall scaling factor for the correction
      56             : 
      57             :   Bool_t    fFillCorrection;       ///< whether to also fill the correction tables
      58             :   //
      59             :   TVectorD  fLimitsR;              ///< bin limits in row direction
      60             :   TVectorD  fLimitsPhi;            ///< bin limits in phi direction
      61             :   TVectorD  fLimitsZ;              ///< bin limits in z direction
      62             :   // for distortion
      63             :   /// Array to store electric field integral (int Er/Ez)
      64             :   TMatrixF **fLookUpDxDist;        //[fNPhi]
      65             :   /// Array to store electric field integral (int Er/Ez)
      66             :   TMatrixF **fLookUpDyDist;        //[fNPhi]
      67             :   /// Array to store electric field integral (int Er/Ez)
      68             :   TMatrixF **fLookUpDzDist;        //[fNPhi]
      69             : 
      70             :   // for correction
      71             :   /// Array to store electric field integral (int Er/Ez)
      72             :   TMatrixF **fLookUpDxCorr;        //[fNPhi]
      73             :   /// Array to store electric field integral (int Er/Ez)
      74             :   TMatrixF **fLookUpDyCorr;        //[fNPhi]
      75             :   /// Array to store electric field integral (int Er/Ez)
      76             :   TMatrixF **fLookUpDzCorr;        //[fNPhi]
      77             : 
      78             :   void InitTables();
      79             :   void InitTableArrays();
      80             :   void InitTablesPhiBin(Int_t iPhi);
      81             : 
      82             :   void ResetTables();
      83             :   void ResetLimits();
      84             : 
      85             :   void GetInterpolation(const Float_t x[],const Short_t roc,Float_t dx[],
      86             :                         TMatrixF **mR, TMatrixF **mPhi, TMatrixF **mZ);
      87             : 
      88             :   void CreateLookupTablePhiBin(AliTPCCorrection &tpcCorr, Int_t iPhi, Float_t stepSize);
      89             : 
      90             :   void FindClosestPosition(const Int_t binR, const Int_t binZ, const Int_t binPhi,
      91             :                            const Float_t xref[3], Float_t xret[3]);
      92             :   AliTPCCorrectionLookupTable(const AliTPCCorrectionLookupTable &corr);
      93             :   AliTPCCorrectionLookupTable& operator= (const AliTPCCorrectionLookupTable &corr);
      94             : 
      95             :   /// \cond CLASSIMP
      96          24 :   ClassDef(AliTPCCorrectionLookupTable,3);  // TPC corrections dumped into a lookup table
      97             :   /// \endcond
      98             : };
      99             : 
     100             : 

Generated by: LCOV version 1.11