Adding new classes for TPC alingment - Magnus Mager
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibAlign.h
1 #ifndef ALITPCCALIBALIGN_H
2 #define ALITPCCALIBALIGN_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 ////
8 ////
9 ////
10
11 #include "TObject.h"
12 #include "TObjArray.h"
13 #include "TLinearFitter.h"
14
15 class AliExternalTrackParam;
16
17 class AliTPCcalibAlign:public TObject {
18 public:
19   AliTPCcalibAlign();
20
21   virtual ~AliTPCcalibAlign();
22
23   void Process(const AliExternalTrackParam &t1,
24                const AliExternalTrackParam &t2,
25                Int_t s1,Int_t s2);
26   void Eval();
27   TLinearFitter* GetFitter12(Int_t s1,Int_t s2) {
28     return static_cast<TLinearFitter*>(fFitterArray12[s1*72+s2]);
29   }
30   TLinearFitter* GetFitter9(Int_t s1,Int_t s2) {
31     return static_cast<TLinearFitter*>(fFitterArray9[s1*72+s2]);
32   }
33   TLinearFitter* GetFitter6(Int_t s1,Int_t s2) {
34     return static_cast<TLinearFitter*>(fFitterArray6[s1*72+s2]);
35   }
36   Bool_t GetTransformation12(Int_t s1,Int_t s2,TMatrixD &a);
37   Bool_t GetTransformation9(Int_t s1,Int_t s2,TMatrixD &a);
38   Bool_t GetTransformation6(Int_t s1,Int_t s2,TMatrixD &a);
39 private:
40   void Process12(Double_t *t1,
41                  Double_t *t2,
42                  TLinearFitter *fitter);
43   void Process9(Double_t *t1,
44                 Double_t *t2,
45                 TLinearFitter *fitter);
46   void Process6(Double_t *t1,
47                 Double_t *t2,
48                 TLinearFitter *fitter);
49   TLinearFitter* GetOrMakeFitter12(Int_t s1,Int_t s2) {
50     //get or make fitter
51     if (!fFitterArray12[s1*72+s2])
52       fFitterArray12[s1*72+s2]=new TLinearFitter(12,"x0++x1++x2++x3++x4++x5++x6++x7++x8++x9++x10++x11");
53     return GetFitter12(s1,s2);
54   }
55   TLinearFitter* GetOrMakeFitter9(Int_t s1,Int_t s2) {
56     //get or make fitter
57     if (!fFitterArray9[s1*72+s2])
58       fFitterArray9[s1*72+s2]=new TLinearFitter(9,"x0++x1++x2++x3++x4++x5++x6++x7++x8");
59     return GetFitter9(s1,s2);
60   }
61   TLinearFitter* GetOrMakeFitter6(Int_t s1,Int_t s2) {
62     //get or make fitter
63     if (!fFitterArray6[s1*72+s2])
64       fFitterArray6[s1*72+s2]=new TLinearFitter(6,"x0++x1++x2++x3++x4++x5");
65     return GetFitter6(s1,s2);
66   }
67   TObjArray fFitterArray12;
68   TObjArray fFitterArray9;
69   TObjArray fFitterArray6;
70   Int_t fPoints[72*72];
71
72   ClassDef(AliTPCcalibAlign,1)
73 };
74
75 #endif