-//**************** 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
-
- };