2 // ************************************************************************
3 // This file is property of and copyright by the ALICE ITSU Project *
4 // ALICE Experiment at CERN, All rights reserved. *
5 // See cxx source for full Copyright notice *
7 //*************************************************************************
9 #ifndef ALIITSUCATRACKER_H
10 #define ALIITSUCATRACKER_H
16 #include <TClonesArray.h>
17 #include "AliITSUCACell.h"
18 #include "AliITSUCATrackingStation.h"
19 typedef struct AliITSUCATrackingStation::ClsInfo ClsInfo_t;
21 #include "AliITSUTrackerGlo.h"
23 class AliITSUReconstructor;
25 class AliITSURecoLayer;
26 class AliITSUTrackCooked;
38 //__________________________________________________________________________________________________
41 Doublets(int xx = 0, int yy = 0, float tL = 0.f, float ph = 0.f)
42 : x((unsigned short)xx)
43 , y((unsigned short)yy)
50 //__________________________________________________________________________________________________
51 class AliITSUCATracker : public AliITSUTrackerGlo {
53 AliITSUCATracker(AliITSUReconstructor* rec=0);
54 virtual ~AliITSUCATracker();
56 // These functions must be implemented
57 Int_t Clusters2Tracks(AliESDEvent *event);
58 Int_t PropagateBack(AliESDEvent *event);
59 Int_t RefitInward(AliESDEvent *event);
60 Int_t LoadClusters(TTree *ct);
61 void UnloadClusters();
62 AliCluster *GetCluster(Int_t index) const;
64 // Possibly, other public functions
65 Double_t GetMaterialBudget(const double* p0, const double* p1, double& x2x0, double& rhol) const;
66 Bool_t GetSAonly() const { return fSAonly; }
67 void SetChi2Cut(float cut) { fChi2Cut = cut; }
68 void SetPhiCut(float cut) { fPhiCut = cut; }
69 void SetSAonly(Bool_t sa=kTRUE) { fSAonly=sa; }
70 void SetZCut(float cut) { fZCut = cut; }
74 TH1F * fGoodCombChi2[5];
75 TH1F * fFakeCombChi2[5];
95 bool CellParams(int l, ClsInfo_t* c1, ClsInfo_t* c2, ClsInfo_t* c3, float &curv, float np[3]);
96 void CellsTreeTraversal(vector<AliITSUCARoad> &roads, const int &iD, const int &doubl);
97 void FindTracksCA(int iteration);
98 void MakeCells(int iteration);
99 Bool_t RefitAt(Double_t xx, AliITSUTrackCooked *t, const AliITSUTrackCooked *c);
100 void SetCuts(int it);
101 void SetLabel(AliITSUTrackCooked &t, Float_t wrong);
104 AliITSUCATracker(const AliITSUCATracker&);
105 AliITSUCATracker &operator=(const AliITSUCATracker &tr);
109 // classes for interfacing the geometry, materials etc
110 // Internal tracker arrays, layers, modules, etc
111 AliITSUCATrackingStation fLayer[7];
112 vector<bool> fUsedClusters[7];
116 vector<Doublets> fDoublets[6];
117 vector<AliITSUCACell> fCells[5];
118 TClonesArray *fCandidates[4];
119 Bool_t fSAonly; // kTRUE if the standalone tracking only
133 static const Double_t fgkChi2Cut; // chi2 cut during track merging
134 static const int fgkNumberOfIterations;
135 static const float fgkR[7];
137 ClassDef(AliITSUCATracker,2) //ITSU stand-alone tracker
140 #endif // ALIITSUCATRACKER_H