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