#include "TArrayD.h"
#include "TObjArray.h"
#include "TTreeStream.h"
+#include "TVectorD.h"
class TH1F;
class TH3F;
class AliESDEvent;
class AliESDtrack;
class TLinearFitter;
+class AliTPCClusterParam;
class AliTPCcalibUnlinearity:public AliTPCcalibBase {
virtual void Process(AliTPCseed *track);
virtual void Analyze(){return;}
virtual void Terminate();
- virtual Long64_t Merge(TCollection* list){return 0;}
+ virtual Long64_t Merge(TCollection* list);
+ void Add(AliTPCcalibUnlinearity * calib);
//
- void ProcessTree(TTree * tree, Int_t nmaxPoints);
- void AddPoint(Int_t sector, Int_t row, Float_t dz, Float_t dy, Float_t p2, Float_t p3, Float_t dr, Int_t npoints=1);
+ void ProcessTree(TTree * tree, Long64_t nmaxPoints);
+ void AddPoint(Int_t sector, Double_t cx, Double_t cy, Double_t cz, Double_t ty, Double_t tz, Double_t ky, Double_t kz, Int_t npoints=1);
+ void AddPointRPHI(Int_t sector, Double_t cx, Double_t cy, Double_t cz, Double_t ty, Double_t tz, Double_t ky, Double_t kz, Int_t npoints=1);
//
void MakeHisto();
void ProcessDiff(AliTPCseed *track, Int_t isec);
- void DumpTree();
- void MakeFitters();
+ void AlignOROC(AliTPCseed *track, Int_t isec);
+ //
+ void DumpTree(const char *fname="unlinResidual.root");
+ void Init();
void EvalFitters();
+ TLinearFitter * GetFitterOutR(Int_t sector) {return (TLinearFitter*)fFittersOutR.At(sector);}
+ TLinearFitter * GetFitterOutZ(Int_t sector) {return (TLinearFitter*)fFittersOutZ.At(sector);}
+ TVectorD * GetParamOutR(Int_t sector) {return (TVectorD*)fParamsOutR.At(sector);}
+ TVectorD * GetParamOutZ(Int_t sector) {return (TVectorD*)fParamsOutZ.At(sector);}
//
+ //TMatrixD * GetNormCovariance(Int_t sector, Int_t type);
+ //TMatrixD * GetNormCovariance(Int_t sector, Int_t type);
+ static void MakeQPosNormAll(TTree * chainres, AliTPCClusterParam * param, Int_t maxPoints);
+ void Process(AliESDEvent *event) {AliTPCcalibBase::Process(event);};
+ void Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
public:
- THnSparse * fDiffHistoLine; // matrix with cluster residuals - linear fit
- THnSparse * fDiffHistoPar; // matrix with cluster residuals - parabolic fit
+ Bool_t fInit; // initialization flag
+ THnSparse * fDiffHistoLineY; // matrix with cluster residuals - linear fit
+ THnSparse * fDiffHistoParY; // matrix with cluster residuals - parabolic fit
+ THnSparse * fDiffHistoLineZ; // matrix with cluster residuals - linear fit
+ THnSparse * fDiffHistoParZ; // matrix with cluster residuals - parabolic fit
//
+ // Outer residula fit
//
TObjArray fFittersOutR; // Unlinearity fitters for radial distortion - outer field cage
TObjArray fFittersOutZ; // Unlinearity fitters for z distortion - outer field cage
+ TObjArray fParamsOutR; // Parameters for radial distortion - outer field cage
+ TObjArray fParamsOutZ; // Parameters for z distortion - outer field cage
+ TObjArray fErrorsOutR; // Parameters for radial distortion - outer field cage
+ TObjArray fErrorsOutZ; // Parameters for z distortion - outer field cage
+ //
+ // R-phi residual histogram
+ //
+ TObjArray fDistRPHIPlus; // edge effect histograms - plus direction
+ TObjArray fDistRPHIMinus; // edge effect histograms - minus direction
//
-
+ // Quadrant fitters
+ //
+ TObjArray fFitterQuadrantY; //qudrant misalignemnt fit Y
+ TObjArray fFitterQuadrantPhi; //qudrant misalignemnt fit Phi
private:
AliTPCcalibUnlinearity(const AliTPCcalibUnlinearity&);
AliTPCcalibUnlinearity& operator=(const AliTPCcalibUnlinearity&);
-
- ClassDef(AliTPCcalibUnlinearity, 1);
+
+ ClassDef(AliTPCcalibUnlinearity, 4);
};
#endif