LCOV - code coverage report
Current view: top level - TPC/TPCbase - AliTPCFCVoltError3D.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 21 4.8 %
Date: 2016-06-14 17:26:59 Functions: 1 22 4.5 %

          Line data    Source code
       1             : #ifndef ALITPCFCVOLTERROR3D_H
       2             : #define ALITPCFCVOLTERROR3D_H
       3             : 
       4             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       5             :  * See cxx source for full Copyright notice                               */
       6             : 
       7             : /// \class AliTPCFCVoltError3D
       8             : /// \brief AliTPCFCVoltError3D class
       9             : ///
      10             : /// \author Jim Thomas, Stefan Rossegger
      11             : 
      12             : #include "AliTPCCorrection.h"
      13             : 
      14             : 
      15             : class AliTPCFCVoltError3D : public AliTPCCorrection {
      16             : public:
      17             :   AliTPCFCVoltError3D();
      18             :   virtual ~AliTPCFCVoltError3D();
      19             :   virtual Bool_t AddCorrectionCompact(AliTPCCorrection* corr, Double_t weight);
      20             :   // initialization and update functions
      21             :   virtual void Init();
      22             :   virtual void Update(const TTimeStamp &timeStamp);
      23             : 
      24             :   // common setters and getters for tangled ExB effect
      25             :   virtual void SetOmegaTauT1T2(Float_t omegaTau,Float_t t1,Float_t t2) {
      26           0 :     fT1=t1; fT2=t2;
      27           0 :     const Double_t wt0=t2*omegaTau;     fC0=1./(1.+wt0*wt0);
      28           0 :     const Double_t wt1=t1*omegaTau;     fC1=wt1/(1.+wt1*wt1);
      29           0 :   };
      30           0 :   void SetC0C1(Float_t c0,Float_t c1) {fC0=c0;fC1=c1;} // CAUTION: USE WITH CARE
      31           0 :   Float_t GetC0() const {return fC0;}
      32           0 :   Float_t GetC1() const {return fC1;}
      33             : 
      34             :   // setters and getters
      35             : 
      36             :   // Set rod shift in Voltage equivalents (40V ~ 1mm)
      37             :   // rod numbers: 0-17 (IFC), 18-35 (OFC)
      38             :   // note: strips move accordingly
      39           0 :   void SetRodVoltShiftA(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE) {fRodVoltShiftA[rod]=voltOffset; fInitLookUp=doInit;}
      40           0 :   void SetRodVoltShiftC(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE) {fRodVoltShiftC[rod]=voltOffset; fInitLookUp=doInit;}
      41           0 :   Float_t GetRodVoltShiftA(Int_t i) const {return fRodVoltShiftA[i];}// 0-17: IFC, 18-35; OFC
      42           0 :   Float_t GetRodVoltShiftC(Int_t i) const {return fRodVoltShiftC[i];}// 0-17: IFC, 18-35; OFC
      43             : 
      44             :   // Set rotated clip (just at High Voltage RODs) in Voltage equivalents (40V ~ 1mm)
      45             :   // rod number: 0 (IFC), 1 (OFC)
      46           0 :   void SetRotatedClipVoltA(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE) {fRotatedClipVoltA[rod]=voltOffset; fInitLookUp=doInit;}
      47           0 :   void SetRotatedClipVoltC(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE) {fRotatedClipVoltC[rod]=voltOffset; fInitLookUp=doInit;}
      48           0 :   Float_t GetRotatedClipVoltA(Int_t i) const {return fRotatedClipVoltA[i];}// (0,1):(IFC,OFC)
      49           0 :   Float_t GetRotatedClipVoltC(Int_t i) const {return fRotatedClipVoltC[i];}// (0,1):(IFC,OFC)
      50             : 
      51             :   // Set rod shift in Voltage equivalents (40V ~ 1mm)
      52             :   // rod numbers: 0-17 (OFC)
      53             :   // note: strips DO NOT move, only the copper rods do ...
      54           0 :   void SetCopperRodShiftA(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE) {fCopperRodShiftA[rod]=voltOffset; fInitLookUp=doInit;}
      55           0 :   void SetCopperRodShiftC(Int_t rod, Float_t voltOffset, Bool_t doInit=kTRUE) {fCopperRodShiftC[rod]=voltOffset; fInitLookUp=doInit;}
      56           0 :   Float_t GetCopperRodShiftA(Int_t i) const {return fCopperRodShiftA[i];}// 0-17: IFC, 18-35; OFC
      57           0 :   Float_t GetCopperRodShiftC(Int_t i) const {return fCopperRodShiftC[i];}// 0-17: IFC, 18-35; OFC
      58             : 
      59             : 
      60             :   void InitFCVoltError3D(); // Fill the lookup tables
      61           0 :   void ForceInitFCVoltError3D() { fInitLookUp=kFALSE; InitFCVoltError3D(); }
      62             : 
      63             :   virtual void Print(const Option_t* option="") const;
      64             : 
      65             : 
      66             : 
      67             : protected:
      68             :   virtual void GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]);
      69             : 
      70             : private:
      71             : 
      72             :   AliTPCFCVoltError3D(const AliTPCFCVoltError3D &);               // not implemented
      73             :   AliTPCFCVoltError3D &operator=(const AliTPCFCVoltError3D &);    // not implemented
      74             : 
      75             :   Float_t fC0; ///< coefficient C0           (compare Jim Thomas's notes for definitions)
      76             :   Float_t fC1; ///< coefficient C1           (compare Jim Thomas's notes for definitions)
      77             :   Float_t fRodVoltShiftA[36];      ///< Rod (&strips) shift in Volt (40V~1mm)
      78             :   Float_t fRodVoltShiftC[36];      ///< Rod (&strips) shift in Volt (40V~1mm)
      79             :   Float_t fRotatedClipVoltA[2];    ///< rotated clips at HV rod
      80             :   Float_t fRotatedClipVoltC[2];    ///< rotated clips at HV rod
      81             :   Float_t fCopperRodShiftA[36];    ///< only Rod shift
      82             :   Float_t fCopperRodShiftC[36];    ///< only Rod shift
      83             : 
      84             :   Bool_t fInitLookUp;           ///< flag to check if the Look Up table was created (SUM)
      85             :   Bool_t fInitLookUpBasic[6];   //!<! flag if the basic lookup was created (shifted Rod (IFC,OFC) or rotated clip (IFC,OFC))
      86             : 
      87             : 
      88             :   TMatrixF *fLookUpErOverEz[kNPhi];   ///< Array to store electric field integral (int Er/Ez)
      89             :   TMatrixF *fLookUpEphiOverEz[kNPhi]; ///< Array to store electric field integral (int Er/Ez)
      90             :   TMatrixF *fLookUpDeltaEz[kNPhi];    ///< Array to store electric field integral (int Er/Ez)
      91             : 
      92             :   // basic numbers for the poisson relaxation //can be set individually in each class
      93             :   enum {kRows   =257}; // grid size in r direction used in the poisson relaxation // ( 2**n + 1 ) eg. 65, 129, 257 etc.
      94             :   enum {kColumns=129}; // grid size in z direction used in the poisson relaxation // ( 2**m + 1 ) eg. 65, 129, 257 etc.
      95             :   enum {kPhiSlicesPerSector = 10 }; // number of points in phi slices
      96             :   enum {kPhiSlices = 1+kPhiSlicesPerSector*3 };      // number of points in phi for the basic lookup tables
      97             :   enum {kIterations=100}; // Number of iterations within the poisson relaxation
      98             : 
      99             :   // ugly way to store "partial" look up tables
     100             :   // needed for the faster calculation of the final distortion table
     101             : 
     102             :   // for Rod and Strip shift
     103             :   TMatrixD *fLookUpBasic1ErOverEz[kPhiSlices];   //!<! Array to store electric field integral (int Er/Ez)
     104             :   TMatrixD *fLookUpBasic1EphiOverEz[kPhiSlices]; //!<! Array to store electric field integral (int Ephi/Ez)
     105             :   TMatrixD *fLookUpBasic1DeltaEz[kPhiSlices];    //!<! Array to store electric field integral (int Ez)
     106             : 
     107             :   TMatrixD *fLookUpBasic2ErOverEz[kPhiSlices];   //!<! Array to store electric field integral
     108             :   TMatrixD *fLookUpBasic2EphiOverEz[kPhiSlices]; //!<! Array to store electric field integral
     109             :   TMatrixD *fLookUpBasic2DeltaEz[kPhiSlices];    //!<! Array to store electric field integral
     110             : 
     111             :   // for rotated clips
     112             :   TMatrixD *fLookUpBasic3ErOverEz[kPhiSlices];   //!<! Array to store electric field integral
     113             :   TMatrixD *fLookUpBasic3EphiOverEz[kPhiSlices]; //!<! Array to store electric field integral
     114             :   TMatrixD *fLookUpBasic3DeltaEz[kPhiSlices];    //!<! Array to store electric field integral
     115             : 
     116             :   TMatrixD *fLookUpBasic4ErOverEz[kPhiSlices];   //!<! Array to store electric field integral
     117             :   TMatrixD *fLookUpBasic4EphiOverEz[kPhiSlices]; //!<! Array to store electric field integral
     118             :   TMatrixD *fLookUpBasic4DeltaEz[kPhiSlices];    //!<! Array to store electric field integral
     119             : 
     120             :   // for (only rod) shift (copper rods)
     121             :   TMatrixD *fLookUpBasic5ErOverEz[kPhiSlices];   //!<! Array to store electric field integral
     122             :   TMatrixD *fLookUpBasic5EphiOverEz[kPhiSlices]; //!<! Array to store electric field integral
     123             :   TMatrixD *fLookUpBasic5DeltaEz[kPhiSlices];    //!<! Array to store electric field integral
     124             : 
     125             :   TMatrixD *fLookUpBasic6ErOverEz[kPhiSlices];   //!<! Array to store electric field integral
     126             :   TMatrixD *fLookUpBasic6EphiOverEz[kPhiSlices]; //!<! Array to store electric field integral
     127             :   TMatrixD *fLookUpBasic6DeltaEz[kPhiSlices];    //!<! Array to store electric field integral
     128             : 
     129             : 
     130             :   /// \cond CLASSIMP
     131          24 :   ClassDef(AliTPCFCVoltError3D,3); //
     132             :   /// \endcond
     133             : };
     134             : 
     135             : #endif

Generated by: LCOV version 1.11