]>
Commit | Line | Data |
---|---|---|
14fb7846 | 1 | //-*- Mode: C++ -*- |
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 * | |
6 | // * | |
7 | //************************************************************************* | |
8 | ||
9 | #ifndef ALIITSUCATRACKER_H | |
10 | #define ALIITSUCATRACKER_H | |
11 | ||
12 | #define _TUNING_ | |
13 | ||
14fb7846 | 14 | #include <vector> |
30f37073 | 15 | |
16 | #include <TClonesArray.h> | |
14fb7846 | 17 | #include "AliITSUCACell.h" |
30f37073 | 18 | #include "AliITSUCATrackingStation.h" |
19 | typedef struct AliITSUCATrackingStation::ClsInfo ClsInfo_t; | |
20 | ||
21 | #include "AliITSUTrackerGlo.h" | |
14fb7846 | 22 | |
23 | class AliITSUReconstructor; | |
24 | class AliITSURecoDet; | |
25 | class AliITSURecoLayer; | |
26 | class AliITSUTrackCooked; | |
27 | ||
28 | class TTree; | |
29 | class AliCluster; | |
30 | class AliESDEvent; | |
31 | ||
30f37073 | 32 | #ifdef _TUNING_ |
33 | #include <TH1F.h> | |
34 | #endif | |
14fb7846 | 35 | |
36 | using std::vector; | |
37 | ||
38 | //__________________________________________________________________________________________________ | |
39 | class Doublets { | |
40 | public: | |
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) | |
44 | , tanL(tL) | |
45 | , phi(ph) {} | |
46 | unsigned short x,y; | |
47 | float tanL, phi; | |
48 | }; | |
49 | ||
50 | //__________________________________________________________________________________________________ | |
30f37073 | 51 | class AliITSUCATracker : public AliITSUTrackerGlo { |
14fb7846 | 52 | public: |
53 | AliITSUCATracker(AliITSUReconstructor* rec=0); | |
54 | virtual ~AliITSUCATracker(); | |
55 | ||
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; | |
63 | ||
64 | // Possibly, other public functions | |
30f37073 | 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; } | |
14fb7846 | 71 | |
72 | #ifdef _TUNING_ | |
73 | bool fGood; | |
74 | TH1F * fGoodCombChi2[5]; | |
75 | TH1F * fFakeCombChi2[5]; | |
76 | TH1F * fGoodCombN[4]; | |
77 | TH1F * fFakeCombN[4]; | |
78 | TH1F * fGDZ[6]; | |
79 | TH1F * fGDXY[6]; | |
80 | TH1F * fFDZ[6]; | |
81 | TH1F * fFDXY[6]; | |
82 | TH1F * fGDCAZ[5]; | |
83 | TH1F * fGDCAXY[5]; | |
84 | TH1F * fFDCAZ[5]; | |
85 | TH1F * fFDCAXY[5]; | |
86 | TH1F * fTan; | |
87 | TH1F * fTanF; | |
88 | TH1F * fPhi; | |
89 | TH1F * fPhiF; | |
90 | TH1F * fNEntries; | |
30f37073 | 91 | void ResetHistos(); |
14fb7846 | 92 | #endif |
93 | // | |
94 | protected: | |
30f37073 | 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); | |
14fb7846 | 99 | Bool_t RefitAt(Double_t xx, AliITSUTrackCooked *t, const AliITSUTrackCooked *c); |
30f37073 | 100 | void SetCuts(int it); |
101 | void SetLabel(AliITSUTrackCooked &t, Float_t wrong); | |
102 | ||
14fb7846 | 103 | private: |
30f37073 | 104 | AliITSUCATracker(const AliITSUCATracker&); |
14fb7846 | 105 | AliITSUCATracker &operator=(const AliITSUCATracker &tr); |
14fb7846 | 106 | |
107 | // Data members | |
108 | ||
30f37073 | 109 | // classes for interfacing the geometry, materials etc |
14fb7846 | 110 | // Internal tracker arrays, layers, modules, etc |
111 | AliITSUCATrackingStation fLayer[7]; | |
112 | vector<bool> fUsedClusters[7]; | |
113 | Float_t fChi2Cut; | |
114 | Float_t fPhiCut; | |
115 | Float_t fZCut; | |
116 | vector<Doublets> fDoublets[6]; | |
117 | vector<AliITSUCACell> fCells[5]; | |
118 | TClonesArray *fCandidates[4]; | |
30f37073 | 119 | Bool_t fSAonly; // kTRUE if the standalone tracking only |
120 | ||
121 | ||
122 | // Cuts | |
123 | float fCPhi; | |
124 | float fCDTanL; | |
125 | float fCDPhi; | |
126 | float fCZ; | |
127 | float fCDCAz[5]; | |
128 | float fCDCAxy[5]; | |
129 | float fCDN[4]; | |
130 | float fCDP[4]; | |
131 | float fCDZ[6]; | |
14fb7846 | 132 | |
14fb7846 | 133 | static const Double_t fgkChi2Cut; // chi2 cut during track merging |
134 | static const int fgkNumberOfIterations; | |
135 | static const float fgkR[7]; | |
136 | // | |
137 | ClassDef(AliITSUCATracker,2) //ITSU stand-alone tracker | |
138 | }; | |
139 | ||
140 | #endif // ALIITSUCATRACKER_H |