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;
20 class AliTPCcalibAlign:public AliTPCcalibBase {
23 AliTPCcalibAlign(const Text_t *name, const Text_t *title);
25 virtual ~AliTPCcalibAlign();
27 virtual void Process(AliTPCseed *track);
28 virtual void Analyze();
29 virtual void Terminate();
31 virtual void EvalFitters();
32 void ProcessTracklets(const AliExternalTrackParam &t1,
33 const AliExternalTrackParam &t2,
35 inline Int_t GetIndex(Int_t s1,Int_t s2){return s1*72+s2;}
36 TLinearFitter* GetFitter12(Int_t s1,Int_t s2) {
37 return static_cast<TLinearFitter*>(fFitterArray12[GetIndex(s1,s2)]);
39 TLinearFitter* GetFitter9(Int_t s1,Int_t s2) {
40 return static_cast<TLinearFitter*>(fFitterArray9[GetIndex(s1,s2)]);
42 TLinearFitter* GetFitter6(Int_t s1,Int_t s2) {
43 return static_cast<TLinearFitter*>(fFitterArray6[GetIndex(s1,s2)]);
45 Bool_t GetTransformation12(Int_t s1,Int_t s2,TMatrixD &a);
46 Bool_t GetTransformation9(Int_t s1,Int_t s2,TMatrixD &a);
47 Bool_t GetTransformation6(Int_t s1,Int_t s2,TMatrixD &a);
49 TObjArray fDphiHistArray;
50 TObjArray fDthetaHistArray;
51 TObjArray fDyHistArray;
52 TObjArray fDzHistArray;
55 void Process12(const Double_t *t1,
57 TLinearFitter *fitter);
58 void Process9(Double_t *t1,
60 TLinearFitter *fitter);
61 void Process6(Double_t *t1,
63 TLinearFitter *fitter);
64 TLinearFitter* GetOrMakeFitter12(Int_t s1,Int_t s2) {
66 if (!fFitterArray12[s1*72+s2])
67 fFitterArray12[s1*72+s2]=new TLinearFitter(12,"x[0]++x[1]++x[2]++x[3]++x[4]++x[5]++x[6]++x[7]++x[8]++x[9]++x[10]++x[11]");
68 return GetFitter12(s1,s2);
70 TLinearFitter* GetOrMakeFitter9(Int_t s1,Int_t s2) {
72 if (!fFitterArray9[s1*72+s2])
73 fFitterArray9[s1*72+s2]=new TLinearFitter(9,"x0++x1++x2++x3++x4++x5++x6++x7++x8");
74 return GetFitter9(s1,s2);
76 TLinearFitter* GetOrMakeFitter6(Int_t s1,Int_t s2) {
78 if (!fFitterArray6[s1*72+s2])
79 fFitterArray6[s1*72+s2]=new TLinearFitter(6,"x0++x1++x2++x3++x4++x5");
80 return GetFitter6(s1,s2);
82 TObjArray fFitterArray12; // array of fitters
83 TObjArray fFitterArray9; // array of fitters
84 TObjArray fFitterArray6; // array of fitters
87 ClassDef(AliTPCcalibAlign,1)