]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCtracker.h
Corrected UInt_t <-> Int_t conversion
[u/mrichter/AliRoot.git] / TPC / AliTPCtracker.h
index 572117af98dab900373a58660ee342fcf5f25c58..85a775f1ce576fda5b33188422040ed9e322fc1d 100644 (file)
 #include "AliTPCcluster.h"
 
 class TFile;
+class TTree;
+class TBranch;
 class AliTPCParam;
 class TObjArray;
+class TClonesArray;
+class AliESDEvent;
 
 class AliTPCtracker : public AliTracker {
 public:
-   AliTPCtracker():AliTracker(),fkNIS(0),fkNOS(0) {
-      fInnerSec=fOuterSec=0; fSeeds=0; 
-      fParam = 0;
-   }
+   AliTPCtracker();
    AliTPCtracker(const AliTPCParam *par);
   ~AliTPCtracker();
 
    Int_t ReadSeeds(const TFile *in);
 
-   void LoadClusters();
+   Int_t LoadClusters(TTree *c);
    void UnloadClusters();
 
    AliCluster *GetCluster(Int_t index) const;
-   Int_t Clusters2Tracks(const TFile *in, TFile *out);
-   Int_t PropagateBack(const TFile *in, TFile *out);
+   Int_t Clusters2Tracks(AliESDEvent *event);
+   Int_t PropagateBack(AliESDEvent *event);
+   Int_t RefitInward(AliESDEvent *event);
 
    virtual void  CookLabel(AliKalmanTrack *t,Float_t wrong) const; 
 
@@ -43,17 +45,16 @@ public:
 //**************** Internal tracker class ********************** 
    class AliTPCRow {
    public:
-     AliTPCRow() {
-       fN=0; 
-       fSize=kMaxClusterPerRow/8;
-       fClusterArray=new AliTPCcluster[fSize];
-     }
+     AliTPCRow():
+         fN(0), fClusters(), fSize(kMaxClusterPerRow/8),
+         fClusterArray(new AliTPCcluster[fSize]), fIndex(), fX(0) {}
      ~AliTPCRow() {delete[] fClusterArray;}
      void InsertCluster(const AliTPCcluster *c, Int_t sec, Int_t row);
-     void ResetClusters() {fN=0;}
+     void ResetClusters() {fN=0; delete[] fClusterArray; fClusterArray=0;}
      operator int() const {return fN;}
      const AliTPCcluster *operator[](Int_t i) const {return fClusters[i];}
      const AliTPCcluster *GetUnsortedCluster(Int_t i) const {
+       if ((i < 0) || (i >= fN)) return NULL;
        return fClusterArray+i;
      }
      UInt_t GetIndex(Int_t i) const {return fIndex[i];}
@@ -62,22 +63,22 @@ public:
      Double_t GetX() const {return fX;}
 
    private:
+     AliTPCRow(const AliTPCRow& r);            //dummy copy constructor
+     AliTPCRow &operator=(const AliTPCRow& r); //dummy assignment operator
      Int_t fN;                                          //number of clusters 
      const AliTPCcluster *fClusters[kMaxClusterPerRow]; //pointers to clusters
      Int_t fSize;                                 //size of array of clusters
      AliTPCcluster *fClusterArray;                      //array of clusters
      UInt_t fIndex[kMaxClusterPerRow];                  //indeces of clusters
      Double_t fX;                                 //X-coordinate of this row
-
-   private:
-     AliTPCRow(const AliTPCRow& r);            //dummy copy constructor
-     AliTPCRow &operator=(const AliTPCRow& r); //dummy assignment operator
    };
 
 //**************** Internal tracker class ********************** 
    class AliTPCSector {
    public:
-     AliTPCSector() { fN=0; fRow = 0; }
+     AliTPCSector(): 
+        fN(0),fRow(0),fAlpha(0),fAlphaShift(0),
+        fPadPitchWidth(0),f1PadPitchLength(0),f2PadPitchLength(0){}
     ~AliTPCSector() { delete[] fRow; }
      AliTPCRow& operator[](Int_t i) const { return *(fRow+i); }
      Int_t GetNRows() const { return fN; }
@@ -124,15 +125,14 @@ public:
      AliTPCSector& operator=(const AliTPCSector &s);//dummy assignment operator
    };
 
-//**************** Internal tracker class ********************** 
+//**************** Internal tracker class **********************
    class AliTPCseed : public AliTPCtrack {
    public:
-     AliTPCseed():AliTPCtrack(){}
-     AliTPCseed(const AliTPCtrack &t):AliTPCtrack(t){}
-     AliTPCseed(const AliKalmanTrack &t, Double_t a):AliTPCtrack(t,a){}
-     AliTPCseed(UInt_t index, const Double_t xx[5], 
-                const Double_t cc[15], Double_t xr, Double_t alpha): 
-                AliTPCtrack(index, xx, cc, xr, alpha) {}
+     AliTPCseed():AliTPCtrack(){Init();}
+     AliTPCseed(const AliTPCtrack &t):AliTPCtrack(t){Init();}
+     AliTPCseed(Double_t xr, Double_t alpha, const Double_t xx[5], 
+                const Double_t cc[15], Int_t index): 
+                AliTPCtrack(xr, alpha, xx, cc, index) {Init();}
      void SetSampledEdx(Float_t q, Int_t i) {
         Double_t s=GetSnp(), t=GetTgl();
         q *= TMath::Sqrt((1-s*s)/(1+t*t));
@@ -141,13 +141,15 @@ public:
      void CookdEdx(Double_t low=0.05, Double_t up=0.70);
 
    private:
+     void Init() {for (Int_t i=0; i<200; i++) fdEdxSample[i]=0.;}
      Float_t fdEdxSample[200]; //array of dE/dx samples 
    };
-
 private:
+
    void MakeSeeds(Int_t i1, Int_t i2);
    Int_t FollowProlongation(AliTPCseed& t, Int_t rf=0);
    Int_t FollowBackProlongation(AliTPCseed &s, const AliTPCtrack &t);
+   Int_t FollowRefitInward(AliTPCseed *seed, AliTPCtrack *track);
 
    AliTPCtracker(const AliTPCtracker& r);           //dummy copy constructor
    AliTPCtracker &operator=(const AliTPCtracker& r);//dummy assignment operator
@@ -162,6 +164,8 @@ private:
    
    AliTPCParam *fParam;      //! TPC parameters for outer reference plane [SR, GSI, 18.02.2003]
    TObjArray *fSeeds;        //array of track seeds
+
+  ClassDef(AliTPCtracker,2)   // Time Projection Chamber tracker
 };
 
 #endif