1 #ifndef ALIITSUTRACKERCooked_H
2 #define ALIITSUTRACKERCooked_H
4 //-------------------------------------------------------------------------
5 // The stand-alone ITSU tracker
6 // The pattern recongintion based on the "cooked covariance" approach
7 //-------------------------------------------------------------------------
9 #include "AliTracker.h"
17 class AliITSUClusterPix;
19 //-------------------------------------------------------------------------
20 class AliITSUTrackerCooked : public AliTracker {
22 enum{kNLayers=7, kMaxClusterPerLayer=70000};
23 AliITSUTrackerCooked();
24 virtual ~AliITSUTrackerCooked();
26 // These functions must be implemented
27 Int_t Clusters2Tracks(AliESDEvent *event);
28 Int_t PropagateBack(AliESDEvent *event);
29 Int_t RefitInward(AliESDEvent *event);
30 Int_t LoadClusters(TTree *ct);
31 void UnloadClusters();
32 AliCluster *GetCluster(Int_t index) const;
34 // internal helper classes
38 AliITSUTrackerCooked(const AliITSUTrackerCooked&);
39 // Other protected functions
40 Int_t MakeSeeds(Int_t layer1, Int_t layer2);
41 Bool_t AddCookedSeed(const Float_t r1[3], Int_t l1, Int_t i1,
42 const Float_t r2[3], Int_t l2, Int_t i2,
43 const AliCluster *c3,Int_t l3, Int_t i3);
46 AliITSUTrackerCooked &operator=(const AliITSUTrackerCooked &tr);
49 // Internal tracker arrays, layers, modules, etc
50 static AliITSUlayer fgLayers[kNLayers];// Layers
52 TObjArray *fSeeds; // Track seeds
54 ClassDef(AliITSUTrackerCooked,1) //ITSU stand-alone tracker
60 class AliITSUTrackerCooked::AliITSUlayer {
63 ~AliITSUlayer(){DeleteClusters();}
65 void InsertClusters(TClonesArray *clusters);
66 void SetR(Double_t r) {fR=r;}
67 void DeleteClusters();
69 Int_t FindClusterIndex(Double_t z) const;
70 Double_t GetR() const {return fR;}
71 AliCluster *GetCluster(Int_t i) const { return fClusters[i]; }
72 Int_t GetNumberOfClusters() const {return fN;}
75 AliITSUlayer(const AliITSUlayer&);
76 AliITSUlayer &operator=(const AliITSUlayer &tr);
77 Int_t InsertCluster(AliCluster *c);
79 Double_t fR; // mean radius of this layer
81 AliCluster *fClusters[kMaxClusterPerLayer]; // array of clusters
82 Int_t fN; //number of clusters
84 Int_t fIndex[kMaxClusterPerLayer]; // Indexes of selected clusters
85 Int_t fNsel; // number of selected clusters