X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCtracker.h;h=1c6ebd86200f7f8c17814996a74c72c2c24d189f;hb=58443fe3eedee681abc3fcc555898b68d7897e18;hp=1483c4974747f7b86c36d33ba038c5223ecd43a4;hpb=b9d0a01d7a0723a09071b0b56200d72f59a9c2b6;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCtracker.h b/TPC/AliTPCtracker.h index 1483c497474..1c6ebd86200 100644 --- a/TPC/AliTPCtracker.h +++ b/TPC/AliTPCtracker.h @@ -12,31 +12,35 @@ //------------------------------------------------------- #include "AliTracker.h" #include "AliTPCtrack.h" -#include "AliTPCClustersArray.h" - #include "AliTPCreco.h" +#include "AliTPCcluster.h" class TFile; +class TTree; +class TBranch; class AliTPCParam; +class TObjArray; +class TClonesArray; +class AliESD; class AliTPCtracker : public AliTracker { public: AliTPCtracker():AliTracker(),fkNIS(0),fkNOS(0) { fInnerSec=fOuterSec=0; fSeeds=0; + fParam = 0; } - AliTPCtracker(const AliTPCParam *par, Int_t eventn=0); + AliTPCtracker(const AliTPCParam *par); ~AliTPCtracker(); Int_t ReadSeeds(const TFile *in); - void LoadInnerSectors(); - void UnloadInnerSectors(); - void LoadOuterSectors(); - void UnloadOuterSectors(); + 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(AliESD *event); + Int_t PropagateBack(AliESD *event); + Int_t RefitInward(AliESD *event); virtual void CookLabel(AliKalmanTrack *t,Float_t wrong) const; @@ -44,10 +48,20 @@ public: //**************** Internal tracker class ********************** class AliTPCRow { public: - AliTPCRow() {fN=0;} - void InsertCluster(const AliTPCcluster *c, UInt_t index); + AliTPCRow() { + fN=0; + fSize=kMaxClusterPerRow/8; + fClusterArray=new AliTPCcluster[fSize]; + } + ~AliTPCRow() {delete[] fClusterArray;} + void InsertCluster(const AliTPCcluster *c, Int_t sec, Int_t row); + 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 *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];} Int_t Find(Double_t y) const; void SetX(Double_t x) {fX=x;} @@ -56,6 +70,8 @@ public: private: 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 @@ -86,7 +102,7 @@ public: if (x > r) return fN; r=fRow[0].GetX(); if (x < r) return -1; - return Int_t((x-r)/fPadPitchLength + 0.5);} + return Int_t((x-r)/f1PadPitchLength + 0.5);} else{ r=fRow[fN-1].GetX(); if (x > r) return fN; @@ -100,7 +116,6 @@ public: } } Double_t GetPadPitchWidth() const {return fPadPitchWidth;} - Double_t GetPadPitchLength() const {return fPadPitchLength;} private: Int_t fN; //number of pad rows @@ -108,9 +123,8 @@ public: 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; + 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 @@ -121,7 +135,6 @@ public: 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) {} @@ -137,24 +150,27 @@ public: }; 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 const Int_t fkNIS; //number of inner sectors - AliTPCSector *fInnerSec; //array of inner sectors; + AliTPCSector *fInnerSec; //array of inner sectors const Int_t fkNOS; //number of outer sectors - AliTPCSector *fOuterSec; //array of outer sectors; + AliTPCSector *fOuterSec; //array of outer sectors - Int_t fN; //number of loaded sectors - AliTPCSector *fSectors; //pointer to loaded sectors; + Int_t fN; //number of "active" sectors + AliTPCSector *fSectors; //pointer to "active" sectors; + + AliTPCParam *fParam; //! TPC parameters for outer reference plane [SR, GSI, 18.02.2003] + TObjArray *fSeeds; //array of track seeds - Int_t fEventN; //event number - AliTPCClustersArray fClustersArray; //array of TPC clusters - TObjArray *fSeeds; //array of track seeds + ClassDef(AliTPCtracker,2) // Time Projection Chamber tracker }; #endif