ROOT logo
#ifndef ALITPCPOINTCORRECTION_H
#define ALITPCPOINTCORRECTION_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

#include "TNamed.h"
#include "TArrayD.h"
#include "TObjArray.h"
#include "TVectorD.h"

 
class AliTPCPointCorrection:public TNamed {
public:
  AliTPCPointCorrection(); 
  AliTPCPointCorrection(const Text_t *name, const Text_t *title);
  virtual ~AliTPCPointCorrection();
  //  
  TVectorD * GetParamOutR(Int_t sector) {return (TVectorD*)fParamsOutR.At(sector);}
  TVectorD * GetParamOutZ(Int_t sector) {return (TVectorD*)fParamsOutZ.At(sector);}
  //
  Double_t      GetDrOut(Bool_t isGlobal, Bool_t type, Double_t cx, Double_t cy, Double_t cz, Int_t sector);
  Double_t      GetDzOut(Bool_t isGlobal, Bool_t type, Double_t cx, Double_t cy, Double_t cz, Int_t sector);

  static Double_t      SGetDrOut(Bool_t isGlobal, Bool_t type, Double_t cx, Double_t cy, Double_t cz, Int_t sector);
  static Double_t      SGetDzOut(Bool_t isGlobal, Bool_t type, Double_t cx, Double_t cy, Double_t cz, Int_t sector);
  
  static AliTPCPointCorrection* Instance();
  void SetInstance(AliTPCPointCorrection*param){fgInstance = param;}
  //
  Double_t CorrectionOutR0(Bool_t isGlobal, Bool_t type, Double_t cx, Double_t cy, Double_t cz, Int_t sector);
  Double_t CorrectionOutZ0(Bool_t isGlobal, Bool_t type, Double_t cx, Double_t cy, Double_t cz, Int_t sector);
  
  Double_t RPhiCOGCorrection(Int_t sector, Int_t padrow, Float_t pad, Float_t cy, Float_t y, Float_t z, Float_t ky, Float_t qMax, Float_t threhsold);
  Double_t SRPhiCOGCorrection(Int_t sector, Int_t padrow, Float_t pad, Float_t cy, Float_t y, Float_t z, Float_t ky,  Float_t qMax, Float_t threhsold);
  //
  Double_t GetEdgeQ0(Int_t sector, Int_t padrow, Float_t y);
  static   Double_t SGetEdgeQ0(Int_t sector, Int_t padrow, Float_t y);
  //
  // IROC -OROC+Quadrant alignment
  //
  void     AddCorrectionSector(TObjArray & sideAPar, TObjArray &sideCPar, TObjArray & sideACov, TObjArray &sideCCov, Bool_t reset);
  Double_t GetCorrectionSector(Int_t coord, Int_t sector, Double_t lx, Double_t ly, Double_t lz, Int_t quadrant =-1); 
  static Double_t SGetCorrectionSector(Int_t coord, Int_t sector, Double_t lx, Double_t ly, Double_t lz, Int_t quadrant=-1); 
  //
  // Global alignment
  //
  Double_t GetCorrection(Int_t coord, Int_t sector, Double_t lx, Double_t ly, Double_t lz);
  static Double_t SGetCorrection(Int_t coord, Int_t sector, Double_t lx, Double_t ly, Double_t lz);
public: 
  //
  // Correction out
  //
  TObjArray   fParamsOutR;       // Parameters  for radial distortion  - outer field cage
  TObjArray   fParamsOutZ;       // Parameters  for z      distortion  - outer field cage
  Int_t       fParamOutRVersion;  // version of the parameterization
  TObjArray   fErrorsOutR;       // Parameters  for radial distortion  - outer field cage
  TObjArray   fErrorsOutZ;       // Parameters  for z      distortion  - outer field cage
  Int_t       fParamOutZVersion;  // version of the parameterization
  //
  //  Edge rfi
  // 
  //
  // Alignment part
  //
  Double_t fXIO;               // OROC-IROC boundary
  Double_t fXmiddle;           // center of the TPC sector local X
  Double_t fXquadrant;         // x quadrant
  //
  // IROC OROC alignment
  //
  TObjArray fArraySectorIntParam; // array of sector alignment parameters
  TObjArray fArraySectorIntCovar; // array of sector alignment covariances 
  //
  // Kalman filter for global alignment
  //
  TMatrixD  *fSectorParam;     // Kalman parameter   
  TMatrixD  *fSectorCovar;     // Kalman covariance  
  //
  //
  //
private:

  AliTPCPointCorrection(const AliTPCPointCorrection&); 
  AliTPCPointCorrection& operator=(const AliTPCPointCorrection&); 
  static AliTPCPointCorrection*   fgInstance; //! Instance of this class (singleton implementation)
  ClassDef(AliTPCPointCorrection, 3); 
};

#endif


 AliTPCPointCorrection.h:1
 AliTPCPointCorrection.h:2
 AliTPCPointCorrection.h:3
 AliTPCPointCorrection.h:4
 AliTPCPointCorrection.h:5
 AliTPCPointCorrection.h:6
 AliTPCPointCorrection.h:7
 AliTPCPointCorrection.h:8
 AliTPCPointCorrection.h:9
 AliTPCPointCorrection.h:10
 AliTPCPointCorrection.h:11
 AliTPCPointCorrection.h:12
 AliTPCPointCorrection.h:13
 AliTPCPointCorrection.h:14
 AliTPCPointCorrection.h:15
 AliTPCPointCorrection.h:16
 AliTPCPointCorrection.h:17
 AliTPCPointCorrection.h:18
 AliTPCPointCorrection.h:19
 AliTPCPointCorrection.h:20
 AliTPCPointCorrection.h:21
 AliTPCPointCorrection.h:22
 AliTPCPointCorrection.h:23
 AliTPCPointCorrection.h:24
 AliTPCPointCorrection.h:25
 AliTPCPointCorrection.h:26
 AliTPCPointCorrection.h:27
 AliTPCPointCorrection.h:28
 AliTPCPointCorrection.h:29
 AliTPCPointCorrection.h:30
 AliTPCPointCorrection.h:31
 AliTPCPointCorrection.h:32
 AliTPCPointCorrection.h:33
 AliTPCPointCorrection.h:34
 AliTPCPointCorrection.h:35
 AliTPCPointCorrection.h:36
 AliTPCPointCorrection.h:37
 AliTPCPointCorrection.h:38
 AliTPCPointCorrection.h:39
 AliTPCPointCorrection.h:40
 AliTPCPointCorrection.h:41
 AliTPCPointCorrection.h:42
 AliTPCPointCorrection.h:43
 AliTPCPointCorrection.h:44
 AliTPCPointCorrection.h:45
 AliTPCPointCorrection.h:46
 AliTPCPointCorrection.h:47
 AliTPCPointCorrection.h:48
 AliTPCPointCorrection.h:49
 AliTPCPointCorrection.h:50
 AliTPCPointCorrection.h:51
 AliTPCPointCorrection.h:52
 AliTPCPointCorrection.h:53
 AliTPCPointCorrection.h:54
 AliTPCPointCorrection.h:55
 AliTPCPointCorrection.h:56
 AliTPCPointCorrection.h:57
 AliTPCPointCorrection.h:58
 AliTPCPointCorrection.h:59
 AliTPCPointCorrection.h:60
 AliTPCPointCorrection.h:61
 AliTPCPointCorrection.h:62
 AliTPCPointCorrection.h:63
 AliTPCPointCorrection.h:64
 AliTPCPointCorrection.h:65
 AliTPCPointCorrection.h:66
 AliTPCPointCorrection.h:67
 AliTPCPointCorrection.h:68
 AliTPCPointCorrection.h:69
 AliTPCPointCorrection.h:70
 AliTPCPointCorrection.h:71
 AliTPCPointCorrection.h:72
 AliTPCPointCorrection.h:73
 AliTPCPointCorrection.h:74
 AliTPCPointCorrection.h:75
 AliTPCPointCorrection.h:76
 AliTPCPointCorrection.h:77
 AliTPCPointCorrection.h:78
 AliTPCPointCorrection.h:79
 AliTPCPointCorrection.h:80
 AliTPCPointCorrection.h:81
 AliTPCPointCorrection.h:82
 AliTPCPointCorrection.h:83
 AliTPCPointCorrection.h:84
 AliTPCPointCorrection.h:85
 AliTPCPointCorrection.h:86
 AliTPCPointCorrection.h:87
 AliTPCPointCorrection.h:88
 AliTPCPointCorrection.h:89
 AliTPCPointCorrection.h:90
 AliTPCPointCorrection.h:91
 AliTPCPointCorrection.h:92