]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/Base/AliTPCCorrection.h
ATO-98 - forgotten commit - Getter for regstered correction - to enable change of...
[u/mrichter/AliRoot.git] / TPC / Base / AliTPCCorrection.h
index d1d55dd92f45b6ce3a47c647af488e28a09fc996..db1a245c43d15bdf19f2a77d437b9f9f6a9667f7 100644 (file)
@@ -33,24 +33,31 @@ public:
   
 
   // functions to correct a space point
-          void CorrectPoint (      Float_t x[],const Short_t roc);
-          void CorrectPointLocal(Float_t x[],const Short_t roc);
-          void CorrectPoint (const Float_t x[],const Short_t roc,Float_t xp[]);
-         virtual void GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]);
-
-  virtual void GetCorrectionDz(const Float_t x[],const Short_t roc,Float_t dx[], Float_t delta);
-  virtual void GetCorrectionIntegralDz(const Float_t x[],const Short_t roc,Float_t dx[], Float_t delta);
+          void CorrectPoint (      Float_t x[], Short_t roc);
+          void CorrectPointLocal(Float_t x[], Short_t roc);
+          void CorrectPoint (const Float_t x[], Short_t roc,Float_t xp[]);
+         virtual void GetCorrection(const Float_t x[], Short_t roc,Float_t dx[]);
 
+  virtual void GetCorrectionDz(const Float_t x[], Short_t roc,Float_t dx[], Float_t delta);
+  virtual void GetCorrectionIntegralDz(const Float_t x[], Short_t roc,Float_t dx[], Float_t delta);
+  
   // functions to distort a space point
-          void DistortPoint (      Float_t x[],const Short_t roc);
-          void DistortPointLocal(Float_t x[],const Short_t roc);
-          void DistortPoint (const Float_t x[],const Short_t roc,Float_t xp[]);
-  virtual void GetDistortion(const Float_t x[],const Short_t roc,Float_t dx[]);
+          void DistortPoint (      Float_t x[], Short_t roc);
+          void DistortPointLocal(Float_t x[], Short_t roc);
+          void DistortPoint (const Float_t x[], Short_t roc,Float_t xp[]);
+  virtual void GetDistortion(const Float_t x[], Short_t roc,Float_t dx[]);
 
+  virtual void GetDistortionDz(const Float_t x[], Short_t roc,Float_t dx[], Float_t delta);
+  virtual void GetDistortionIntegralDz(const Float_t x[], Short_t roc,Float_t dx[], Float_t delta);
+  
   // initialization and update functions
   virtual void Init();
   virtual void Update(const TTimeStamp &timeStamp);
 
+  // map scaling
+  virtual void    SetCorrScaleFactor(Float_t /*val*/) { ; }
+  virtual Float_t GetCorrScaleFactor() const { return 1.; }
+  
   // convenience functions
   virtual void Print(Option_t* option="") const;
  
@@ -79,11 +86,17 @@ public:
   void FastSimDistortedVertex(Double_t orgVertex[3], Int_t nTracks, AliESDVertex &aV, AliESDVertex &avOrg, AliESDVertex &cV, AliESDVertex &cvOrg, TTreeSRedirector * const pcstream, Double_t etaCuts);
 
   static void AddVisualCorrection(AliTPCCorrection* corr, Int_t position);
+  static AliTPCCorrection*  GetVisualCorrection(Int_t position);
   static Double_t GetCorrSector(Double_t sector, Double_t r, Double_t kZ, Int_t axisType, Int_t corrType=0);
   static Double_t GetCorrXYZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0);
   //
   static Double_t GetCorrXYZDz(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0,Double_t delta=5);
   static Double_t GetCorrXYZIntegrateZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0, Double_t delta=5);
+
+  static Double_t GetDistXYZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0);
+  //
+  static Double_t GetDistXYZDz(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0,Double_t delta=5);
+  static Double_t GetDistXYZIntegrateZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType=0, Double_t delta=5);
   
 
 protected:
@@ -114,34 +127,34 @@ protected:
   // Simple Interpolation functions: e.g. with tricubic interpolation (not yet in TH3)
   Int_t fILow, fJLow, fKLow;          // variable to help in the interpolation 
   // Double_t versions
-  void Interpolate2DEdistortion( const Int_t order, const Double_t r, const Double_t z, 
+  void Interpolate2DEdistortion( Int_t order, Double_t r, Double_t z, 
                                 const Double_t er[kNZ][kNR], Double_t &erValue );
-  void Interpolate3DEdistortion( const Int_t order, const Double_t r, const Float_t phi, const Double_t z, 
+  void Interpolate3DEdistortion( Int_t order, Double_t r, Float_t phi, Double_t z, 
                                 const Double_t er[kNZ][kNPhi][kNR], const Double_t ephi[kNZ][kNPhi][kNR], 
                                 const Double_t ez[kNZ][kNPhi][kNR],
                                 Double_t &erValue, Double_t &ephiValue, Double_t &ezValue);
   // TMatrixD versions (for e.g. Poisson relaxation)
-  Double_t Interpolate2DTable( const Int_t order, const Double_t x, const Double_t y, 
-                             const Int_t nx,  const Int_t ny, const Double_t xv[], const Double_t yv[], 
+  Double_t Interpolate2DTable( Int_t order, Double_t x, Double_t y, 
+                             Int_t nx,  Int_t ny, const Double_t xv[], const Double_t yv[], 
                              const TMatrixD &array );
-  Double_t Interpolate3DTable( const Int_t order, const Double_t x,   const Double_t y,   const Double_t z,
-                             const Int_t  nx,    const Int_t  ny,    const Int_t  nz,
+  Double_t Interpolate3DTable( Int_t order, Double_t x,   Double_t y,   Double_t z,
+                             Int_t  nx,    Int_t  ny,    Int_t  nz,
                              const Double_t xv[], const Double_t yv[], const Double_t zv[],
                              TMatrixD **arrayofArrays );
   Double_t Interpolate( const Double_t xArray[], const Double_t yArray[], 
-                       const Int_t order, const Double_t x );
-  void Search( const Int_t n, const Double_t xArray[], const Double_t x, Int_t &low );
+                       Int_t order, Double_t x );
+  void Search( Int_t n, const Double_t xArray[], Double_t x, Int_t &low );
  
   // TMatrixF versions (smaller size, e.g. for final look up table)
-  Float_t Interpolate2DTable( const Int_t order, const Double_t x, const Double_t y, 
-                             const Int_t nx,  const Int_t ny, const Double_t xv[], const Double_t yv[], 
+  Float_t Interpolate2DTable( Int_t order, Double_t x, Double_t y, 
+                             Int_t nx,  Int_t ny, const Double_t xv[], const Double_t yv[], 
                              const TMatrixF &array );
-  Float_t Interpolate3DTable( const Int_t order, const Double_t x,   const Double_t y,   const Double_t z,
-                             const Int_t  nx,    const Int_t  ny,    const Int_t  nz,
+  Float_t Interpolate3DTable( Int_t order, Double_t x,   Double_t y,   Double_t z,
+                             Int_t  nx,    Int_t  ny,    Int_t  nz,
                              const Double_t xv[], const Double_t yv[], const Double_t zv[],
                               TMatrixF **arrayofArrays ); 
   Float_t Interpolate( const Double_t xArray[], const Float_t yArray[], 
-                       const Int_t order, const Double_t x );
+                       Int_t order, Double_t x );
 
   virtual Int_t IsPowerOfTwo ( Int_t i ) const  ;
 
@@ -150,18 +163,20 @@ protected:
   // Algorithms to solve the laplace or poisson equation 
   void PoissonRelaxation2D(TMatrixD &arrayV, TMatrixD &chargeDensity, 
                           TMatrixD &arrayErOverEz, TMatrixD &arrayDeltaEz,
-                          const Int_t rows, const Int_t columns, const Int_t iterations,
-                          const Bool_t rocDisplacement = kTRUE);
+                          Int_t rows, Int_t columns, Int_t iterations,
+                          Bool_t rocDisplacement = kTRUE);
 
   void PoissonRelaxation3D( TMatrixD **arrayofArrayV, TMatrixD **arrayofChargeDensities, 
                            TMatrixD **arrayofEroverEz, TMatrixD **arrayofEPhioverEz, TMatrixD **arrayofEz,
-                           const Int_t rows, const Int_t columns,  const Int_t phislices, 
-                           const Float_t deltaphi, const Int_t iterations, const Int_t summetry,
-                           const Bool_t rocDisplacement = kTRUE); 
-    
+                           Int_t rows, Int_t columns,  Int_t phislices, 
+                           Float_t deltaphi, Int_t iterations, Int_t summetry,
+                           Bool_t rocDisplacement = kTRUE); 
+  void   SetIsLocal(Bool_t isLocal){fIsLocal=isLocal;}
+  Bool_t IsLocal() const  { return fIsLocal;}
 protected:
   Double_t fT1;         // tensor term of wt - T1
   Double_t fT2;         // tensor term of wt - T2
+  Bool_t fIsLocal;      // switch to indicate that the distortion is a local vector drphi/dz, dr/dz
   static TObjArray *fgVisualCorrection;  // array of orrection for visualization
 private:
   AliTPCCorrection(const AliTPCCorrection &);               // not implemented
@@ -169,7 +184,7 @@ private:
 
   void InitLookUpfulcrums();   // to initialize the grid of the look up table
 
-  ClassDef(AliTPCCorrection,4);
+  ClassDef(AliTPCCorrection,5);
 };
 
 #endif