]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCcalibAlign.h
It makes the addition in AOD of MC tracks associated to muons parametrizable from...
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibAlign.h
index 219c6df76c3e0c6ea2c312fd85bdd86f5430acf8..9898753c21c34cdf2ea81aaaacbaeb5a63627db7 100644 (file)
@@ -8,20 +8,19 @@
 ////
 ////
 
-#include "TObject.h"
-#include "TObjArray.h"
-#include "TLinearFitter.h"
-#include "AliTPCcalibBase.h"
-#include "TH1.h"
-
-class AliExternalTrackParam;
-class AliExternalComparison;
-class AliTPCseed;
+class TFile;
 class TGraphErrors;
-class TTree;
+class TH1;
 class THnSparse;
+#include <TLinearFitter.h>
+#include <TMatrixDfwd.h>
+class TObjArray;
+class TTree;
+
+#include "AliTPCcalibBase.h"
+class AliExternalTrackParam;
 class AliTPCPointCorrection;
-class TFile;
+class AliTPCseed;
 
 class AliTPCcalibAlign:public AliTPCcalibBase {
 public:
@@ -39,7 +38,7 @@ public:
   virtual void Process(AliTPCseed */*track*/){ return ;}
   virtual void Analyze();
   virtual void Terminate();  
-  virtual Long64_t Merge(TCollection* list);
+  virtual Long64_t Merge(TCollection* const list);
   void ExportTrackPoints(AliESDEvent *event);
   //
   //
@@ -60,8 +59,9 @@ public:
                        const AliTPCseed * seed,
                        Int_t s1,Int_t s2);
   
+  void UpdateClusterDeltaField(const AliTPCseed * seed);
   void UpdateAlignSector(const AliTPCseed * seed,Int_t isec); 
-  inline Int_t GetIndex(Int_t s1,Int_t s2){return 72*s1+s2;}
+  Int_t GetIndex(Int_t s1,Int_t s2) const {return 72*s1+s2;}
   //
   inline const TMatrixD     * GetTransformation(Int_t s1,Int_t s2, Int_t fitType);
   //
@@ -73,9 +73,9 @@ public:
   Bool_t GetTransformation9(Int_t s1,Int_t s2,TMatrixD &a);
   Bool_t GetTransformation6(Int_t s1,Int_t s2,TMatrixD &a);
   Int_t  AcceptTracklet(const AliExternalTrackParam &tp1,
-                       const AliExternalTrackParam &tp2);
+                       const AliExternalTrackParam &tp2) const;
   Int_t  AcceptTracklet(const Double_t *t1,
-                       const Double_t *t2);
+                       const Double_t *t2) const;
 
   void ProcessDiff(const AliExternalTrackParam &t1,
                   const AliExternalTrackParam &t2,
@@ -87,16 +87,15 @@ public:
 //   Bool_t GetTransformationCovar9(Int_t s1,Int_t s2,TMatrixD &a, Bool_t norm=kFALSE);
 //   Bool_t GetTransformationCovar6(Int_t s1,Int_t s2,TMatrixD &a, Bool_t norm=kFALSE);
   void Add(AliTPCcalibAlign * align);
-  Int_t *GetPoints() {return fPoints;}
-  void     Process(AliESDtrack *track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
+  const Int_t *GetPoints() const {return fPoints;}
+  void     Process(AliESDtrack *const track, Int_t runNo=-1){AliTPCcalibBase::Process(track,runNo);};
   TLinearFitter* GetOrMakeFitter12(Int_t s1,Int_t s2);
   TLinearFitter* GetOrMakeFitter9(Int_t s1,Int_t s2);
   TLinearFitter* GetOrMakeFitter6(Int_t s1,Int_t s2);
   void Process12(const Double_t *t1, const Double_t *t2,
-                TLinearFitter *fitter);
-  void Process9(Double_t *t1, Double_t *t2, TLinearFitter *fitter);
-  void Process6(Double_t *t1, Double_t *t2, TLinearFitter *fitter);
-  void ProcessTree(TTree * tree, AliExternalComparison *comp=0);
+                TLinearFitter *fitter) const;
+  void Process9(const Double_t *const t1, const Double_t *const t2, TLinearFitter *fitter) const;
+  void Process6(const Double_t *const t1, const Double_t *const t2, TLinearFitter *fitter) const;
   void GlobalAlign6(Int_t minPoints, Float_t sysError, Int_t niter);
   //
   // Cluster comparison Part
@@ -107,7 +106,7 @@ public:
   Double_t Correct(Int_t type, Int_t value, Int_t s1, Int_t s2, Double_t x, Double_t y, Double_t z, Double_t phi,Double_t theta); 
   static Double_t SCorrect(Int_t type, Int_t value, Int_t s1, Int_t s2, Double_t x, Double_t y, Double_t z, Double_t phi,Double_t theta){return Instance()->Correct(type,value,s1,s2,x,y,z,phi,theta);}
   static AliTPCcalibAlign* Instance();
-  void SetInstance(AliTPCcalibAlign*param){fgInstance = param;}
+  void SetInstance(AliTPCcalibAlign* const param){fgInstance = param;}
   static void Constrain1Pt(AliExternalTrackParam &t1, const AliExternalTrackParam &t2, Bool_t noField);
   void SetNoField(Bool_t noField){ fNoField=noField;}
 
@@ -115,7 +114,7 @@ public:
   // Kalman fileter for sectors
   //
   void MakeSectorKalman();
-  void UpdateSectorKalman(Int_t sector, Int_t quadrant0, Int_t quadrant1,  TMatrixD *p0, TMatrixD *c0, TMatrixD *p1, TMatrixD *c1);
+  void UpdateSectorKalman(Int_t sector, Int_t quadrant0, Int_t quadrant1,  TMatrixD *const p0, TMatrixD *const c0, TMatrixD *const p1, TMatrixD *const c1);
   void UpdateSectorKalman(TMatrixD &par0, TMatrixD &cov0, TMatrixD &para1, TMatrixD &cov1);
   Double_t GetCorrectionSector(Int_t coord, Int_t sector, Double_t lx, Double_t ly, Double_t lz); 
   static Double_t SGetCorrectionSector(Int_t coord, Int_t sector, Double_t lx, Double_t ly, Double_t lz); 
@@ -132,15 +131,21 @@ public:
   //
   //
   void MakeResidualHistos();
-
+  void MakeResidualHistosTracklet();
+  THnSparse * GetClusterDelta(Int_t index) const  { return fClusterDelta[index];}
+  THnSparse * GetTrackletDelta(Int_t index) const  { return fTrackletDelta[index];}
 public:
   
   void FillHisto(const Double_t *t1,
                 const Double_t *t2,
                 Int_t s1,Int_t s2);
+  void FillHisto(AliExternalTrackParam *tp1,
+                AliExternalTrackParam *tp2,
+                Int_t s1,Int_t s2);
 
-  THnSparse *fClusterDelta[6];  //clusters residuals
-
+protected:
+  THnSparse *fClusterDelta[2];  //clusters residuals
+  THnSparse *fTrackletDelta[4]; //track residuals
 
   TObjArray fDphiHistArray;    // array of residual histograms  phi      -kPhi
   TObjArray fDthetaHistArray;  // array of residual histograms  theta    -kTheta
@@ -169,7 +174,6 @@ public:
   //
   TObjArray fCombinedMatrixArray6;      // array  combeined transformation matrix
   //
-  AliExternalComparison  *fCompTracklet;  //tracklet comparison
   //
   Int_t fPoints[72*72];        // number of points in the fitter 
   Bool_t fNoField;             // flag - no field data
@@ -198,7 +202,7 @@ public:
 private:
   AliTPCcalibAlign&  operator=(const AliTPCcalibAlign&);// not implemented
 
-  ClassDef(AliTPCcalibAlign,3)
+  ClassDef(AliTPCcalibAlign,6)
 };