1 #ifndef ALITPCCALIBALIGN_H
2 #define ALITPCCALIBALIGN_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
12 #include "TObjArray.h"
13 #include "TLinearFitter.h"
14 #include "AliTPCcalibBase.h"
17 class AliExternalTrackParam;
21 class AliTPCcalibAlign:public AliTPCcalibBase {
23 enum HistoType {kY=0, kZ =1, kPhi=2, kTheta=3};
24 enum FitType{ k6=0, k9=1, k12};
26 AliTPCcalibAlign(const Text_t *name, const Text_t *title);
27 virtual ~AliTPCcalibAlign();
28 virtual void Process(AliTPCseed *track);
29 virtual void Analyze();
30 virtual void Terminate();
31 virtual Long64_t Merge(TCollection* list);
33 virtual void EvalFitters();
34 TH1 * GetHisto(HistoType type, Int_t s1, Int_t s2, Bool_t force=kFALSE);
35 void MakeTree(const char *fname="alignTree.root");
36 TGraphErrors * MakeGraph(Int_t sec0, Int_t sec1, Int_t dsec,
37 Int_t i0, Int_t i1, FitType type);
38 void ProcessTracklets(const AliExternalTrackParam &t1,
39 const AliExternalTrackParam &t2,
40 const AliTPCseed * seed,
42 inline Int_t GetIndex(Int_t s1,Int_t s2){return 72*s1+s2;}
44 inline TLinearFitter* GetFitter12(Int_t s1,Int_t s2);
45 inline TLinearFitter* GetFitter9(Int_t s1,Int_t s2);
46 inline TLinearFitter* GetFitter6(Int_t s1,Int_t s2);
48 Bool_t GetTransformation12(Int_t s1,Int_t s2,TMatrixD &a);
49 Bool_t GetTransformation9(Int_t s1,Int_t s2,TMatrixD &a);
50 Bool_t GetTransformation6(Int_t s1,Int_t s2,TMatrixD &a);
52 void ProcessDiff(const AliExternalTrackParam &t1,
53 const AliExternalTrackParam &t2,
54 const AliTPCseed *seed,
57 // Bool_t GetTransformationCovar12(Int_t s1,Int_t s2,TMatrixD &a, Bool_t norm=kFALSE);
58 // Bool_t GetTransformationCovar9(Int_t s1,Int_t s2,TMatrixD &a, Bool_t norm=kFALSE);
59 // Bool_t GetTransformationCovar6(Int_t s1,Int_t s2,TMatrixD &a, Bool_t norm=kFALSE);
60 void Add(AliTPCcalibAlign * align);
61 // Int_t *GetPoints() {return fPoints;}
63 void FillHisto(const AliExternalTrackParam &t1,
64 const AliExternalTrackParam &t2,
67 void Process12(const Double_t *t1, const Double_t *t2,
68 TLinearFitter *fitter);
69 void Process9(Double_t *t1, Double_t *t2, TLinearFitter *fitter);
70 void Process6(Double_t *t1, Double_t *t2, TLinearFitter *fitter);
71 TLinearFitter* GetOrMakeFitter12(Int_t s1,Int_t s2);
72 TLinearFitter* GetOrMakeFitter9(Int_t s1,Int_t s2);
73 TLinearFitter* GetOrMakeFitter6(Int_t s1,Int_t s2);
74 TObjArray fDphiHistArray; // array of residual histograms phi
75 TObjArray fDthetaHistArray; // array of residual histograms theta
76 TObjArray fDyHistArray; // array of residual histograms y
77 TObjArray fDzHistArray; // array of residual histograms z
78 TObjArray fFitterArray12; // array of fitters
79 TObjArray fFitterArray9; // array of fitters
80 TObjArray fFitterArray6; // array of fitters
81 Int_t fPoints[72*72]; // number of points in the fitter
82 ClassDef(AliTPCcalibAlign,1)
86 TLinearFitter* AliTPCcalibAlign::GetFitter12(Int_t s1,Int_t s2) {
87 return static_cast<TLinearFitter*>(fFitterArray12[GetIndex(s1,s2)]);
89 TLinearFitter* AliTPCcalibAlign::GetFitter9(Int_t s1,Int_t s2) {
90 return static_cast<TLinearFitter*>(fFitterArray9[GetIndex(s1,s2)]);
92 TLinearFitter* AliTPCcalibAlign::GetFitter6(Int_t s1,Int_t s2) {
93 return static_cast<TLinearFitter*>(fFitterArray6[GetIndex(s1,s2)]);