]>
Commit | Line | Data |
---|---|---|
2cbb5f31 | 1 | #ifndef ALIITSUTRACKERSA_H |
2 | #define ALIITSUTRACKERSA_H | |
3 | ||
4 | //------------------------------------------------------------------------- | |
5 | // The stand-alone ITSU tracker | |
6 | // It reads AliITSUClusterPix clusters and writes the tracks to the ESD | |
7 | //------------------------------------------------------------------------- | |
8 | ||
9 | #include "AliTracker.h" | |
10 | #include "AliITSUGeomTGeo.h" | |
11 | #include <TClonesArray.h> | |
12 | #include <vector> | |
57a336dd | 13 | #include "AliITSUTrackerSAaux.h" // Structs and other stuff |
a0c47fdb | 14 | #include "AliITSUMatLUT.h" |
15 | #include "AliITSUAux.h" | |
16 | #include "AliExternalTrackParam.h" | |
df380774 | 17 | |
a0c47fdb | 18 | class AliITSUReconstructor; |
19 | class AliITSURecoDet; | |
20 | class AliITSURecoLayer; | |
2cbb5f31 | 21 | |
22 | class TTree; | |
23 | class AliCluster; | |
24 | class AliESDEvent; | |
25 | ||
26 | using std::vector; | |
27 | ||
28 | //------------------------------------------------------------------------- | |
29 | class AliITSUTrackerSA : public AliTracker { | |
30 | public: | |
a0c47fdb | 31 | AliITSUTrackerSA(AliITSUReconstructor* rec=0); |
32 | virtual ~AliITSUTrackerSA(); | |
2cbb5f31 | 33 | |
57a336dd | 34 | // These functions must be implemented |
2cbb5f31 | 35 | Int_t Clusters2Tracks(AliESDEvent *event); |
36 | Int_t PropagateBack(AliESDEvent *event); | |
37 | Int_t RefitInward(AliESDEvent *event); | |
38 | Int_t LoadClusters(TTree *ct); | |
39 | void UnloadClusters(); | |
df380774 | 40 | |
41 | inline AliCluster *GetCluster(Int_t index) const { | |
42 | const Int_t l=(index & 0xf0000000) >> 28; | |
43 | const Int_t c=(index & 0x0fffffff); | |
44 | return (AliCluster*)fClustersTC[l]->At(c) ; | |
45 | } | |
2cbb5f31 | 46 | |
47 | // Possibly, other public functions | |
a0c47fdb | 48 | void Init(AliITSUReconstructor* rec); |
57a336dd | 49 | Double_t RefitTrack(AliExternalTrackParam* trc, Int_t clInfo[2*AliITSUAux::kMaxLayers], Double_t rDest, Int_t stopCond); |
a0c47fdb | 50 | Bool_t PropagateSeed(AliExternalTrackParam *seed, Double_t xToGo, Double_t mass, Double_t maxStep=1.0, Bool_t matCorr=kTRUE); |
51 | Double_t GetMaterialBudget(const double* pnt0, const double* pnt1, double& x2x0, double& rhol) const; | |
52 | Bool_t GoToEntranceToLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check=kFALSE); | |
53 | Bool_t GoToExitFromLayer(AliExternalTrackParam* seed, AliITSURecoLayer* lr, Int_t dir, Bool_t check=kTRUE); | |
57a336dd | 54 | Bool_t TransportToLayerX(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t xStop); |
a0c47fdb | 55 | Bool_t TransportToLayer(AliExternalTrackParam* seed, Int_t lFrom, Int_t lTo, Double_t rLim=-1); |
df380774 | 56 | |
57 | void SetChi2Cut(float cut) { fChi2Cut=cut; } | |
58 | void SetRPhiCut(float cut) { fRPhiCut=cut; } | |
59 | void SetPhiCut(float cut) { fPhiCut=cut; } | |
60 | void SetZCut(float cut) { fZCut=cut; } | |
61 | ||
62 | ||
a0c47fdb | 63 | // |
2cbb5f31 | 64 | protected: |
65 | AliITSUTrackerSA(const AliITSUTrackerSA&); | |
66 | ||
df380774 | 67 | void CellsCreation(const int &cutLevel); |
68 | void CellularAutomaton(AliESDEvent *ev); | |
a0c47fdb | 69 | // void MakeTriplets(); |
57a336dd | 70 | void CandidatesTreeTraversal( vector<Road> &vec, const int &iD, const int &doubl); |
df380774 | 71 | Bool_t InitTrackParams(AliITSUTrackCooked &track, int points[]); |
2cbb5f31 | 72 | void GlobalFit(); |
73 | void ChiSquareSelection(); | |
df380774 | 74 | void MergeTracks( vector<AliITSUTrackCooked> &vec, bool flags[] ); |
2cbb5f31 | 75 | // Other protected functions |
57a336dd | 76 | // (Sorting, labeling, calculations of "roads", etc) |
a0c47fdb | 77 | static Double_t Curvature(Double_t x1,Double_t y1,Double_t x2,Double_t y2,Double_t x3,Double_t y3); |
78 | ||
df380774 | 79 | |
2cbb5f31 | 80 | |
81 | private: | |
82 | AliITSUTrackerSA &operator=(const AliITSUTrackerSA &tr); | |
df380774 | 83 | void SetLabel(AliITSUTrackCooked &t, Float_t wrong); |
2cbb5f31 | 84 | |
85 | // Data members | |
a0c47fdb | 86 | |
87 | // classes for interfacing the geometry, materials etc. | |
57a336dd | 88 | AliITSUReconstructor* fReconstructor; // ITS global reconstructor |
a0c47fdb | 89 | AliITSURecoDet* fITS; // interface to ITS, borrowed from reconstructor |
90 | AliITSUMatLUT* fMatLUT; // material lookup table | |
91 | Bool_t fUseMatLUT; //! use material lookup table rather than TGeo | |
92 | Double_t fCurrMass; // assumption about particle mass | |
93 | ||
94 | ||
2cbb5f31 | 95 | // Internal tracker arrays, layers, modules, etc |
df380774 | 96 | Layer fLayer[7]; |
a0c47fdb | 97 | TClonesArray *fClustersTC[7]; |
df380774 | 98 | vector<Cell> fCells[5]; |
99 | Float_t fChi2Cut; | |
2cbb5f31 | 100 | Float_t fPhiCut; |
101 | Float_t fRPhiCut; | |
102 | Float_t fZCut; | |
103 | ||
a0c47fdb | 104 | // |
105 | static const Double_t fgkToler; // tracking tolerance | |
57a336dd | 106 | static const Double_t fgkChi2Cut; // chi2 cut during track merging |
a0c47fdb | 107 | // |
2cbb5f31 | 108 | ClassDef(AliITSUTrackerSA,1) //ITSU stand-alone tracker |
109 | }; | |
110 | ||
111 | #endif |