]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCtrackerMI.h
Adding the class for Cosmic events
[u/mrichter/AliRoot.git] / TPC / AliTPCtrackerMI.h
index d7c039ae13abe20e48411b7674f3b73675983f73..03197c9a2d08bc3b7cc1d6806e81cfc06903791b 100644 (file)
@@ -18,6 +18,7 @@
 #include "AliTPCreco.h"
 #include "AliPID.h"
 #include "AliTPCclusterMI.h"
+#include "AliTPCtrackerSector.h"
 
 
 class TFile;
@@ -30,6 +31,8 @@ class AliESDkink;
 class TTreeSRedirector;
 class AliTrackPoint;
 
+
+
 class AliTPCtrackerMI : public AliTracker {
 public:
   AliTPCtrackerMI();
@@ -40,12 +43,15 @@ public:
   virtual Int_t Clusters2Tracks (AliESDEvent *esd);
   virtual Int_t RefitInward (AliESDEvent *esd);
   virtual Int_t LoadClusters (TTree * tree);
+  virtual Int_t LoadClusters (TObjArray * arr); // another input
+  virtual Int_t LoadClusters (TClonesArray * arr); // another input
   Int_t  LoadClusters();
   void   UnloadClusters();
+  Int_t LoadInnerSectors();
+  Int_t LoadOuterSectors();
+  virtual void FillClusterArray(TObjArray* array) const;
   void   Transform(AliTPCclusterMI * cluster);
   //
-  void SetIO();  //set default IO from folders
-  void SetIO(TTree * input, TTree * output, AliESDEvent * event);
   void FillESD(TObjArray* arr);
   void DeleteSeeds();
   void SetDebug(Int_t debug){ fDebug = debug;}
@@ -70,15 +76,12 @@ public:
    virtual Int_t   CookLabel(AliTPCseed *t,Float_t wrong, Int_t first,Int_t last ) const; 
    
    void RotateToLocal(AliTPCseed *seed);
-  
    
    Int_t FollowProlongation(AliTPCseed& t, Int_t rf=0, Int_t step=1);
-   Int_t FollowProlongationFast(AliTPCseed& t, Int_t rf=0, Int_t step=1);
    Bool_t GetTrackPoint(Int_t index, AliTrackPoint &p ) const; 
 
    Int_t FollowBackProlongation(AliTPCseed& t, Int_t rf);
    Int_t FollowToNext(AliTPCseed& t, Int_t nr);
-   Int_t FollowToNextFast(AliTPCseed& t, Int_t nr);
    Int_t UpdateClusters(AliTPCseed& t,  Int_t nr);
    Int_t FollowToNextCluster( AliTPCseed& t, Int_t nr);
 
@@ -90,7 +93,6 @@ public:
 
    void SortTracks(TObjArray * arr, Int_t mode) const;
   
-
    virtual Double_t ErrY2(AliTPCseed* seed, AliTPCclusterMI * cl = 0);
    virtual Double_t ErrZ2(AliTPCseed* seed, AliTPCclusterMI * cl = 0);   
 
@@ -105,101 +107,7 @@ public:
    Bool_t GetProlongation(Double_t x1, Double_t x2, Double_t x[5], Double_t &y, Double_t &z);
 
  public:
-//**************** Internal tracker class ********************** 
-   class AliTPCSector;
-   class AliTPCRow {
-   public:
-     AliTPCRow();
-     ~AliTPCRow();
-     void InsertCluster(const AliTPCclusterMI *c, UInt_t index);
-     void ResetClusters();
-     operator int() const {return fN;}
-     Int_t GetN() const {return fN;}
-     const AliTPCclusterMI* operator[](Int_t i) const {return fClusters[i];}
-     UInt_t GetIndex(Int_t i) const {return fIndex[i];}
-     inline Int_t Find(Double_t z) const; 
-     AliTPCclusterMI *  FindNearest(Double_t y, Double_t z, Double_t roady, Double_t roadz) const;
-     AliTPCclusterMI *  FindNearest2(Double_t y, Double_t z, Double_t roady, Double_t roadz, UInt_t & index) const;
-      
-     void SetX(Double_t x) {fX=x;}
-     Double_t GetX() const {return fX;}
-     Float_t GetDeadZone() const {return fDeadZone;}
-     void SetDeadZone(Float_t d) {fDeadZone=d;}
-     Int_t GetN1() const {return fN1;}
-     void SetN1(Int_t n) {fN1=n;}
-     Int_t GetN2() const {return fN2;}
-     void SetN2(Int_t n) {fN2=n;}
-     AliTPCclusterMI* GetClusters1() const {return fClusters1;}
-     AliTPCclusterMI* GetClusters2() const {return fClusters2;}
-     void SetClusters1(AliTPCclusterMI* cl) {fClusters1=cl;}
-     void SetClusters2(AliTPCclusterMI* cl) {fClusters2=cl;}
-     void SetCluster1(Int_t i, const AliTPCclusterMI &cl) {fClusters1[i]=cl;}
-     void SetCluster2(Int_t i, const AliTPCclusterMI &cl) {fClusters2[i]=cl;}
-     AliTPCclusterMI* GetCluster1(Int_t i) const {return &fClusters1[i];}
-     AliTPCclusterMI* GetCluster2(Int_t i) const {return &fClusters2[i];}
-     Short_t GetFastCluster(Int_t i) const {return fFastCluster[i];}
-     void SetFastCluster(Int_t i, Short_t cl);
-
-private:  
-     AliTPCRow & operator=(const AliTPCRow & );
-     AliTPCRow(const AliTPCRow& /*r*/);           //dummy copy constructor
-     Float_t fDeadZone;  // the width of the dead zone
-     AliTPCclusterMI *fClusters1; //array with clusters 1
-     Int_t fN1;  //number of clusters on left side
-     AliTPCclusterMI *fClusters2; //array with clusters 2
-     Int_t fN2; // number of clusters on right side of the TPC
-     Short_t fFastCluster[510];   //index of the nearest cluster at given position
-     Int_t fN;                                          //number of clusters 
-     const AliTPCclusterMI *fClusters[kMaxClusterPerRow]; //pointers to clusters
-                               // indexes for cluster at given position z  
-     // AliTPCclusterMI *fClustersArray;                     // 
-     UInt_t fIndex[kMaxClusterPerRow];                  //indeces of clusters
-     Double_t fX;                                 //X-coordinate of this row
-
-   };
-
-//**************** Internal tracker class ********************** 
-   class AliTPCSector {
-   public:
-     AliTPCSector():
-       fN(0),
-       fRow(0),
-       fAlpha(0.),
-       fAlphaShift(0.),
-       fPadPitchWidth(0.),
-       fPadPitchLength(0.),
-       f1PadPitchLength(0.),
-       f2PadPitchLength(0.){}
-    ~AliTPCSector() { delete[] fRow; }
-    AliTPCRow& operator[](Int_t i) const { return *(fRow+i); }
-    Int_t GetNRows() const { return fN; }
-    void Setup(const AliTPCParam *par, Int_t flag);
-    Double_t GetX(Int_t l) const {return fRow[l].GetX();}
-    Double_t GetMaxY(Int_t l) const {
-      return GetX(l)*TMath::Tan(0.5*GetAlpha());
-    } 
-    Double_t GetAlpha() const {return fAlpha;}
-    Double_t GetAlphaShift() const {return fAlphaShift;}     
-    //Int_t GetFirst(){return fFirstRow;}
-    Int_t GetRowNumber(Double_t  x) const;
-    Double_t GetPadPitchWidth()  const {return fPadPitchWidth;}
-    Double_t GetPadPitchLength() const {return fPadPitchLength;}
-    Double_t GetPadPitchLength(Float_t x) const {return (x<200) ? fPadPitchLength:f2PadPitchLength ;}
-    
-   private:
-    AliTPCSector & operator=(const AliTPCSector & );
-    AliTPCSector(const AliTPCSector &/*s*/);           //dummy copy contructor 
-    Int_t fN;                        //number of pad rows 
-    //Int_t fFirstRow;                 //offset
-    AliTPCRow *fRow;                    //array of pad rows
-    Double_t fAlpha;                    //opening angle
-    Double_t fAlphaShift;               //shift angle;
-    Double_t fPadPitchWidth;            //pad pitch width
-    Double_t fPadPitchLength;           //pad pitch length
-    Double_t f1PadPitchLength;           //pad pitch length
-    Double_t f2PadPitchLength;           //pad pitch length
-    
-   };
+
 
    Float_t OverlapFactor(AliTPCseed * s1, AliTPCseed * s2, Int_t &sum1, Int_t &sum2);
    void  SignShared(AliTPCseed * s1, AliTPCseed * s2);
@@ -209,12 +117,15 @@ private:
 
    void  StopNotActive(TObjArray * arr, Int_t row0, Float_t th0, Float_t th1, Float_t th2) const;
    void  StopNotActive(AliTPCseed * seed, Int_t row0, Float_t th0, Float_t th1, Float_t th2) const;
-   Int_t AcceptCluster(AliTPCseed * seed, AliTPCclusterMI * cluster, Float_t factor, Float_t cory=1., Float_t corz=1.);
+   Int_t AcceptCluster(AliTPCseed * seed, AliTPCclusterMI * cluster);
 
 private:
+  Bool_t IsFindable(AliTPCseed & t);
   AliTPCtrackerMI(const AliTPCtrackerMI& r);           //dummy copy constructor
   AliTPCtrackerMI &operator=(const AliTPCtrackerMI& r);//dummy assignment operator
-   inline AliTPCRow &GetRow(Int_t sec, Int_t row);
+  void AddCovariance(AliTPCseed * seed);               // add covariance
+
+   inline AliTPCtrackerRow &GetRow(Int_t sec, Int_t row);
    inline Bool_t     IsActive(Int_t sec, Int_t row);
    inline Double_t  GetXrow(Int_t row) const;
    inline Double_t  GetMaxY(Int_t row) const;
@@ -223,9 +134,7 @@ private:
    inline Double_t GetPadPitchLength(Double_t x) const;
    inline Double_t GetPadPitchLength(Int_t row) const;
 
-   Float_t  GetSigmaY(AliTPCseed * seed);
-   Float_t  GetSigmaZ(AliTPCseed * seed);
-   void GetShape(AliTPCseed * seed, Int_t row);
+    void GetShape(AliTPCseed * seed, Int_t row);
  
    void ReadSeeds(AliESDEvent *event, Int_t direction);  //read seeds from the event
 
@@ -242,8 +151,8 @@ private:
 
   
    AliTPCseed * ReSeed(AliTPCseed *t);
-   Int_t LoadInnerSectors();
-   Int_t LoadOuterSectors();
+   //Int_t LoadInnerSectors();
+   //Int_t LoadOuterSectors();
    void UnsignClusters();
    void SignClusters(TObjArray * arr, Float_t fnumber=3., Float_t fdensity=2.);  
 
@@ -262,12 +171,12 @@ private:
    void MakeBitmaps(AliTPCseed *t);
 
    const Int_t fkNIS;        //number of inner sectors
-   AliTPCSector *fInnerSec;  //array of inner sectors;
+   AliTPCtrackerSector *fInnerSec;  //array of inner sectors;
    const Int_t fkNOS;        //number of outer sectors
-   AliTPCSector *fOuterSec;  //array of outer sectors;
+   AliTPCtrackerSector *fOuterSec;  //array of outer sectors;
 
    Int_t fN;               //number of loaded sectors
-   AliTPCSector *fSectors; //pointer to loaded sectors;
+   AliTPCtrackerSector *fSectors; //pointer to loaded sectors;
    //
    TTree * fInput;       // input tree with clusters
    TTree * fOutput;      // output tree with tracks
@@ -290,7 +199,7 @@ private:
 };
 
 
-AliTPCtrackerMI::AliTPCRow & AliTPCtrackerMI::GetRow(Int_t sec, Int_t row)
+AliTPCtrackerRow & AliTPCtrackerMI::GetRow(Int_t sec, Int_t row)
 {
   //
   return (row>=fInnerSec->GetNRows()) ? fOuterSec[sec][row-fInnerSec->GetNRows()]:fInnerSec[sec][row];