]>
Commit | Line | Data |
---|---|---|
2f399afc | 1 | #ifndef ALIITSTRACKERHLT_H |
2 | #define ALIITSTRACKERHLT_H | |
3 | /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | ||
7 | class TTree; | |
8 | class TTreeSRedirector; | |
9 | class AliESDEvent; | |
6edb0fb5 | 10 | class AliESDtrack; |
2f399afc | 11 | |
12 | class AliITSChannelStatus; | |
13 | class AliITSDetTypeRec; | |
87cc43e1 | 14 | class AliITSRecoParam; |
2f399afc | 15 | #include "AliHLTITSTrack.h" |
16 | #include "AliHLTITSDetector.h" | |
17 | #include "AliHLTITSLayer.h" | |
18 | ||
19 | #include <TObjArray.h> | |
20 | ||
21 | #include "AliITSRecPoint.h" | |
22 | #include "AliTracker.h" | |
6edb0fb5 | 23 | #include "AliHLTITSTrack.h" |
2f399afc | 24 | |
25 | //------------------------------------------------------------------------- | |
26 | class AliITStrackerHLT : public AliTracker { | |
27 | public: | |
6edb0fb5 | 28 | |
29 | ||
365eee5d | 30 | void StartLoadClusters( Int_t NClusters ); |
ef6e2aa2 | 31 | void LoadCluster( const AliITSRecPoint &cluster); |
d72d9d99 | 32 | void Reconstruct( AliExternalTrackParam *tracksTPC, int *tracksTPCLab, int nTPCTracks ); |
ef6e2aa2 | 33 | |
63e4a461 | 34 | AliHLTITSTrack *Tracks() const { return fTracks;} |
35 | Int_t NTracks() const { return fNTracks;} | |
36 | AliHLTITSTrack *ITSOutTracks() const { return fITSOutTracks;} | |
37 | Int_t NITSOutTracks() const { return fNITSOutTracks;} | |
6edb0fb5 | 38 | |
2f399afc | 39 | Bool_t TransportToX( AliExternalTrackParam *t, double x ) const; |
40 | Bool_t TransportToPhiX( AliExternalTrackParam *t, double phi, double x ) const; | |
2f399afc | 41 | |
42 | AliITStrackerHLT(); | |
43 | AliITStrackerHLT(const Char_t *geom); | |
44 | virtual ~AliITStrackerHLT(); | |
45 | AliCluster *GetCluster(Int_t index) const; | |
46 | virtual Bool_t GetTrackPoint(Int_t index, AliTrackPoint& p) const; | |
47 | virtual Bool_t GetTrackPointTrackingError(Int_t index, | |
48 | AliTrackPoint& p, const AliESDtrack *t); | |
49 | AliITSRecPoint *GetClusterLayer(Int_t layn, Int_t ncl) const | |
5ababfa8 | 50 | {return fLayers[layn].GetCluster(ncl);} |
2f399afc | 51 | Int_t GetNumberOfClustersLayer(Int_t layn) const |
5ababfa8 | 52 | {return fLayers[layn].GetNumberOfClusters();} |
2f399afc | 53 | Int_t LoadClusters(TTree *cf); |
54 | void UnloadClusters(); | |
55 | ||
56 | Int_t Clusters2Tracks(AliESDEvent *event); | |
57 | Int_t PropagateBack(AliESDEvent *event); | |
58 | Int_t RefitInward(AliESDEvent *event); | |
b809e7f9 | 59 | |
2f399afc | 60 | |
2f399afc | 61 | static Int_t CorrectForTPCtoITSDeadZoneMaterial(AliHLTITSTrack *t); |
62 | ||
63 | ||
64 | AliHLTITSLayer & GetLayer(Int_t layer) const; | |
65 | AliHLTITSDetector & GetDetector(Int_t layer, Int_t n) const {return GetLayer(layer).GetDetector(n); } | |
66 | ||
67 | void FollowProlongationTree(AliHLTITSTrack * otrack); | |
b7ed2eb4 | 68 | Int_t FitOutward(AliHLTITSTrack * track ); |
2f399afc | 69 | |
ef6e2aa2 | 70 | void Init(); |
6edb0fb5 | 71 | |
72 | ||
2f399afc | 73 | protected: |
6edb0fb5 | 74 | |
63e4a461 | 75 | const AliITSRecoParam *GetRecoParam() const { return fRecoParam; } |
2f399afc | 76 | Bool_t ComputeRoad(AliHLTITSTrack* track,Int_t ilayer,Int_t idet,Double_t &zmin,Double_t &zmax,Double_t &ymin,Double_t &ymax) const; |
77 | ||
78 | ||
79 | void CookLabel(AliKalmanTrack *t,Float_t wrong) const; | |
80 | void CookLabel(AliHLTITSTrack *t,Float_t wrong) const; | |
81 | ||
2f399afc | 82 | void BuildMaterialLUT(TString material); |
83 | ||
ef6e2aa2 | 84 | Int_t CorrectForPipeMaterial(AliHLTITSTrack *t, bool InwardDirection=1); |
85 | Int_t CorrectForShieldMaterial(AliHLTITSTrack *t, Int_t shieldindex, bool InwardDirection=1); | |
86 | Int_t CorrectForLayerMaterial(AliHLTITSTrack *t, Int_t layerindex, bool InwardDirection=1); | |
6edb0fb5 | 87 | void UpdateESDtrack(AliESDtrack *tESD,AliHLTITSTrack* track, ULong_t flags) const; |
2f399afc | 88 | |
2f399afc | 89 | Bool_t LocalModuleCoord(Int_t ilayer,Int_t idet,const AliHLTITSTrack *track, |
90 | Float_t &xloc,Float_t &zloc) const; | |
9ddd097d | 91 | |
92 | ||
93 | ||
2f399afc | 94 | // method to be used for Plane Efficiency evaluation |
95 | ||
96 | // | |
97 | ||
63e4a461 | 98 | const AliITSRecoParam *fRecoParam; //! |
87cc43e1 | 99 | |
5ababfa8 | 100 | AliHLTITSLayer* fLayers; //! |
2f399afc | 101 | |
2f399afc | 102 | Double_t fSPDdetzcentre[4]; // centres of SPD modules in z |
103 | ||
104 | Int_t fUseTGeo; // use TGeo to get material budget | |
105 | ||
106 | Float_t fxOverX0Pipe; // material budget | |
107 | Float_t fxTimesRhoPipe; // material budget | |
108 | Float_t fxOverX0Shield[2]; // material budget | |
109 | Float_t fxTimesRhoShield[2]; // material budget | |
110 | Float_t fxOverX0Layer[6]; // material budget | |
111 | Float_t fxTimesRhoLayer[6]; // material budget | |
112 | ||
365eee5d | 113 | AliHLTITSTrack *fTracks; // array of its-updated tracks |
114 | AliHLTITSTrack *fITSOutTracks; // array of tracks, fitted outward with ITS only | |
115 | int fNTracks;// n tracks | |
116 | int fNITSOutTracks;// n out tracks | |
63e4a461 | 117 | double fLoadTime; // |
118 | double fRecoTime; // | |
119 | int fNEvents; // | |
120 | AliITSRecPoint *fClusters; //! | |
121 | int fNClusters; // | |
ef6e2aa2 | 122 | |
2f399afc | 123 | private: |
124 | AliITStrackerHLT(const AliITStrackerHLT &tracker); | |
125 | AliITStrackerHLT & operator=(const AliITStrackerHLT &tracker); | |
133288b9 | 126 | ClassDef(AliITStrackerHLT,0) //HLT ITS tracker |
2f399afc | 127 | }; |
128 | ||
129 | ||
130 | ||
131 | ||
132 | ///////////////////////////////////////////////////////// | |
133 | ///////////////////////////////////////////////////////// | |
134 | ///////////////////////////////////////////////////////// | |
135 | ||
136 | ||
137 | ||
138 | ||
139 | ||
140 | inline void AliITStrackerHLT::CookLabel(AliKalmanTrack *t,Float_t wrong) const { | |
141 | //-------------------------------------------------------------------- | |
142 | //This function "cooks" a track label. If label<0, this track is fake. | |
143 | //-------------------------------------------------------------------- | |
144 | Int_t tpcLabel=t->GetLabel(); | |
145 | if (tpcLabel<0) return; | |
146 | AliTracker::CookLabel(t,wrong); | |
147 | if (tpcLabel!=TMath::Abs(t->GetLabel())){ | |
148 | t->SetFakeRatio(1.); | |
149 | } | |
150 | if (tpcLabel !=t->GetLabel()) { | |
151 | t->SetLabel(-tpcLabel); | |
152 | } | |
153 | } | |
154 | ||
155 | ||
156 | ||
157 | #endif |