]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCcalibAlign.h
Pseudocode for v drift calibration
[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 #include "AliTPCcalibBase.h"
15 #include "TH1.h"
16
17 class AliExternalTrackParam;
18 class AliTPCseed;
19 class TGraphErrors;
20
21 class AliTPCcalibAlign:public AliTPCcalibBase {
22 public:
23   enum HistoType {kY=0, kZ =1, kPhi=2, kTheta=3};
24   enum FitType{ k6=0, k9=1, k12};
25   AliTPCcalibAlign();
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);
32   //
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,
41                         Int_t s1,Int_t s2);
42   inline Int_t GetIndex(Int_t s1,Int_t s2){return 72*s1+s2;}
43   //
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);
47   //
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);
51   
52   void ProcessDiff(const AliExternalTrackParam &t1,
53                    const AliExternalTrackParam &t2,
54                    const AliTPCseed *seed,
55                    Int_t s1,Int_t s2);
56
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;}
62 private:
63   void FillHisto(const AliExternalTrackParam &t1,
64                         const AliExternalTrackParam &t2,
65                         Int_t s1,Int_t s2);
66
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)
83 };
84
85
86 TLinearFitter* AliTPCcalibAlign::GetFitter12(Int_t s1,Int_t s2) {
87   return static_cast<TLinearFitter*>(fFitterArray12[GetIndex(s1,s2)]);
88 }
89 TLinearFitter* AliTPCcalibAlign::GetFitter9(Int_t s1,Int_t s2) {
90   return static_cast<TLinearFitter*>(fFitterArray9[GetIndex(s1,s2)]);
91 }
92 TLinearFitter* AliTPCcalibAlign::GetFitter6(Int_t s1,Int_t s2) {
93   return static_cast<TLinearFitter*>(fFitterArray6[GetIndex(s1,s2)]);
94 }
95
96
97
98
99
100 #endif