#ifndef ALITPCTRACKERSECTOR_H
#define ALITPCTRACKERSECTOR_H
class AliTPCParam;
class TTreeSRedirector;
class AliTPCtrackerRow : public TObject{
public:
AliTPCtrackerRow();
~AliTPCtrackerRow();
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];}
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;}
TClonesArray* GetClusters1() const {return fClusters1;}
TClonesArray* GetClusters2() const {return fClusters2;}
void SetCluster1(Int_t i, const AliTPCclusterMI &cl);
void SetCluster2(Int_t i, const AliTPCclusterMI &cl);
AliTPCclusterMI* GetCluster1(Int_t i) const {return (fClusters1)?(AliTPCclusterMI*) fClusters1->At(i):NULL;}
AliTPCclusterMI* GetCluster2(Int_t i) const {return (fClusters2)?(AliTPCclusterMI*) fClusters2->At(i):NULL;}
Short_t GetFastCluster(Int_t i) const {return fFastCluster[i];}
void SetFastCluster(Int_t i, Short_t cl);
Int_t IncrementN1() { return ++fN1;}
Int_t IncrementN2() { return ++fN2;}
private:
AliTPCtrackerRow & operator=(const AliTPCtrackerRow & );
AliTPCtrackerRow(const AliTPCtrackerRow& );
Float_t fDeadZone;
TClonesArray *fClusters1;
Int_t fN1;
TClonesArray *fClusters2;
Int_t fN2;
Short_t fFastCluster[510];
Int_t fN;
const AliTPCclusterMI *fClusters[kMaxClusterPerRow];
UInt_t fIndex[kMaxClusterPerRow];
Double_t fX;
ClassDef(AliTPCtrackerRow,0)
};
class AliTPCtrackerSector: public TObject {
public:
AliTPCtrackerSector():
fN(0),
fRow(0),
fAlpha(0.),
fAlphaShift(0.),
fPadPitchWidth(0.),
fPadPitchLength(0.),
f1PadPitchLength(0.),
f2PadPitchLength(0.) {}
~AliTPCtrackerSector() { delete[] fRow; }
AliTPCtrackerRow& 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 GetNClInSector(Int_t side);
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 ;}
void InsertCluster(AliTPCclusterMI *cl, Int_t size, const AliTPCParam *par);
Int_t GetNClInSector(Int_t side) const;
Int_t GetNClUsedInSector(Int_t side) const;
private:
AliTPCtrackerSector & operator=(const AliTPCtrackerSector & );
AliTPCtrackerSector(const AliTPCtrackerSector &);
Int_t fN;
AliTPCtrackerRow *fRow;
Double_t fAlpha;
Double_t fAlphaShift;
Double_t fPadPitchWidth;
Double_t fPadPitchLength;
Double_t f1PadPitchLength;
Double_t f2PadPitchLength;
ClassDef(AliTPCtrackerSector,1)
};
#endif
AliTPCtrackerSector.h:100 AliTPCtrackerSector.h:101 AliTPCtrackerSector.h:102 AliTPCtrackerSector.h:103 AliTPCtrackerSector.h:104 AliTPCtrackerSector.h:105 AliTPCtrackerSector.h:106 AliTPCtrackerSector.h:107 AliTPCtrackerSector.h:108 AliTPCtrackerSector.h:109 AliTPCtrackerSector.h:110 AliTPCtrackerSector.h:111 AliTPCtrackerSector.h:112 AliTPCtrackerSector.h:113 AliTPCtrackerSector.h:114 AliTPCtrackerSector.h:115 AliTPCtrackerSector.h:116 AliTPCtrackerSector.h:117 AliTPCtrackerSector.h:118 AliTPCtrackerSector.h:119 AliTPCtrackerSector.h:120 AliTPCtrackerSector.h:121 AliTPCtrackerSector.h:122 AliTPCtrackerSector.h:123 AliTPCtrackerSector.h:124 AliTPCtrackerSector.h:125 AliTPCtrackerSector.h:126 AliTPCtrackerSector.h:127 AliTPCtrackerSector.h:128 AliTPCtrackerSector.h:129 AliTPCtrackerSector.h:130 AliTPCtrackerSector.h:131