- Double_t f1(Double_t x1,Double_t y1, Double_t x2,Double_t y2, Double_t x3,Double_t y3);
- Double_t f2(Double_t x1,Double_t y1, Double_t x2,Double_t y2, Double_t x3,Double_t y3);
- Double_t f3(Double_t x1,Double_t y1, Double_t x2,Double_t y2, Double_t z1,Double_t z2);
-public:
-//**************** Internal tracker class **********************
- class AliTPCRow {
- public:
- AliTPCRow() {fN=0; fClusterTracks=0;}
- ~AliTPCRow();
- void InsertCluster(const AliTPCclusterMI *c, UInt_t index);
- operator int() const {return fN;}
- const AliTPCclusterMI* operator[](Int_t i) const {return fClusters[i];}
- UInt_t GetIndex(Int_t i) const {return fIndex[i];}
- Int_t Find(Double_t z) const;
- void SetX(Double_t x) {fX=x;}
- Double_t GetX() const {return fX;}
- AliTPCclusterTracks * GetClusterTracks(Int_t index){ return ( (index<fN) && fClusterTracks!=0)? &(fClusterTracks[index]):0;}
- void UpdateClusterTrack(Int_t clindex, Int_t trindex,AliTPCseed * seed);
- void MakeClusterTracks();
- void ClearClusterTracks();
- Float_t fDeadZone; // the width of the dead zone
- private:
- Int_t fN; //number of clusters
- const AliTPCclusterMI *fClusters[kMaxClusterPerRow]; //pointers to clusters
- UInt_t fIndex[kMaxClusterPerRow]; //indeces of clusters
- Double_t fX; //X-coordinate of this row
- AliTPCclusterTracks * fClusterTracks; // array of cluster tracks - for overlap calculation
- 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() { 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 GetRowNumber(Double_t x) const {
- //return pad row number for this x
- Double_t r;
- if (fN < 64){
- r=fRow[fN-1].GetX();
- if (x > r) return fN;
- r=fRow[0].GetX();
- if (x < r) return -1;
- return Int_t((x-r)/fPadPitchLength + 0.5);}
- else{
- r=fRow[fN-1].GetX();
- if (x > r) return fN;
- r=fRow[0].GetX();
- if (x < r) return -1;
- Double_t r1=fRow[64].GetX();
- if(x<r1){
- return Int_t((x-r)/f1PadPitchLength + 0.5);}
- else{
- return (Int_t((x-r1)/f2PadPitchLength + 0.5)+64);}
- }
- }
- 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:
- Int_t fN; //number of pad rows
- 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
-
- private:
- AliTPCSector(const AliTPCSector &s); //dummy copy contructor
- AliTPCSector& operator=(const AliTPCSector &s);//dummy assignment operator
- };