]>
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" |
24 | #include <vector> | |
2f399afc | 25 | |
26 | //------------------------------------------------------------------------- | |
27 | class AliITStrackerHLT : public AliTracker { | |
28 | public: | |
6edb0fb5 | 29 | |
30 | ||
31 | void LoadClusters( std::vector<AliITSRecPoint> clusters ); | |
32 | void Reconstruct( std::vector<AliExternalTrackParam> tracksTPC ); | |
33 | std::vector< AliHLTITSTrack > &Tracks(){ return fTracks;} | |
34 | ||
2f399afc | 35 | Bool_t TransportToX( AliExternalTrackParam *t, double x ) const; |
36 | Bool_t TransportToPhiX( AliExternalTrackParam *t, double phi, double x ) const; | |
6edb0fb5 | 37 | |
2f399afc | 38 | void GetClusterErrors2( Int_t layer, const AliITSRecPoint *cluster, AliHLTITSTrack* track, double &err2Y, double &err2Z ) const ; |
39 | ||
40 | AliITStrackerHLT(); | |
41 | AliITStrackerHLT(const Char_t *geom); | |
42 | virtual ~AliITStrackerHLT(); | |
43 | AliCluster *GetCluster(Int_t index) const; | |
44 | virtual Bool_t GetTrackPoint(Int_t index, AliTrackPoint& p) const; | |
45 | virtual Bool_t GetTrackPointTrackingError(Int_t index, | |
46 | AliTrackPoint& p, const AliESDtrack *t); | |
47 | AliITSRecPoint *GetClusterLayer(Int_t layn, Int_t ncl) const | |
48 | {return fgLayers[layn].GetCluster(ncl);} | |
49 | Int_t GetNumberOfClustersLayer(Int_t layn) const | |
50 | {return fgLayers[layn].GetNumberOfClusters();} | |
51 | Int_t LoadClusters(TTree *cf); | |
52 | void UnloadClusters(); | |
53 | ||
54 | Int_t Clusters2Tracks(AliESDEvent *event); | |
55 | Int_t PropagateBack(AliESDEvent *event); | |
56 | Int_t RefitInward(AliESDEvent *event); | |
b809e7f9 | 57 | |
2f399afc | 58 | |
59 | Double_t GetPredictedChi2MI(AliHLTITSTrack* track, const AliITSRecPoint *cluster,Int_t layer); | |
60 | Int_t UpdateMI(AliHLTITSTrack* track, const AliITSRecPoint* cl,Double_t chi2,Int_t layer) const; | |
2f399afc | 61 | |
62 | TTreeSRedirector *GetDebugStreamer() {return fDebugStreamer;} | |
63 | static Int_t CorrectForTPCtoITSDeadZoneMaterial(AliHLTITSTrack *t); | |
64 | ||
65 | ||
66 | AliHLTITSLayer & GetLayer(Int_t layer) const; | |
67 | AliHLTITSDetector & GetDetector(Int_t layer, Int_t n) const {return GetLayer(layer).GetDetector(n); } | |
68 | ||
69 | void FollowProlongationTree(AliHLTITSTrack * otrack); | |
70 | ||
6edb0fb5 | 71 | |
72 | ||
2f399afc | 73 | protected: |
6edb0fb5 | 74 | |
87cc43e1 | 75 | const AliITSRecoParam *GetRecoParam(){ 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 | ||
82 | void SignDeltas(const TObjArray *clusterArray, Float_t zv); | |
83 | void BuildMaterialLUT(TString material); | |
84 | ||
85 | Int_t CorrectForPipeMaterial(AliHLTITSTrack *t, TString direction="inward"); | |
86 | Int_t CorrectForShieldMaterial(AliHLTITSTrack *t, TString shield, TString direction="inward"); | |
87 | Int_t CorrectForLayerMaterial(AliHLTITSTrack *t, Int_t layerindex, Double_t oldGlobXYZ[3], TString direction="inward"); | |
6edb0fb5 | 88 | void UpdateESDtrack(AliESDtrack *tESD,AliHLTITSTrack* track, ULong_t flags) const; |
2f399afc | 89 | |
2f399afc | 90 | Bool_t LocalModuleCoord(Int_t ilayer,Int_t idet,const AliHLTITSTrack *track, |
91 | Float_t &xloc,Float_t &zloc) const; | |
9ddd097d | 92 | |
93 | ||
94 | ||
2f399afc | 95 | // method to be used for Plane Efficiency evaluation |
96 | ||
97 | // | |
98 | ||
87cc43e1 | 99 | const AliITSRecoParam *fRecoParam; |
100 | ||
2f399afc | 101 | static AliHLTITSLayer fgLayers[AliITSgeomTGeo::kNLayers];// ITS layers |
102 | ||
103 | AliESDEvent * fEsd; //! pointer to the ESD event | |
104 | Double_t fSPDdetzcentre[4]; // centres of SPD modules in z | |
105 | ||
106 | Int_t fUseTGeo; // use TGeo to get material budget | |
107 | ||
108 | Float_t fxOverX0Pipe; // material budget | |
109 | Float_t fxTimesRhoPipe; // material budget | |
110 | Float_t fxOverX0Shield[2]; // material budget | |
111 | Float_t fxTimesRhoShield[2]; // material budget | |
112 | Float_t fxOverX0Layer[6]; // material budget | |
113 | Float_t fxTimesRhoLayer[6]; // material budget | |
114 | ||
115 | TTreeSRedirector *fDebugStreamer; //!debug streamer | |
116 | AliITSChannelStatus *fITSChannelStatus;//! bitmaps with channel status for SPD and SDD | |
6edb0fb5 | 117 | std::vector< AliHLTITSTrack > fTracks; |
2f399afc | 118 | |
119 | private: | |
120 | AliITStrackerHLT(const AliITStrackerHLT &tracker); | |
121 | AliITStrackerHLT & operator=(const AliITStrackerHLT &tracker); | |
133288b9 | 122 | ClassDef(AliITStrackerHLT,0) //HLT ITS tracker |
2f399afc | 123 | }; |
124 | ||
125 | ||
126 | ||
127 | ||
128 | ///////////////////////////////////////////////////////// | |
129 | ///////////////////////////////////////////////////////// | |
130 | ///////////////////////////////////////////////////////// | |
131 | ||
132 | ||
133 | ||
134 | ||
135 | ||
136 | inline void AliITStrackerHLT::CookLabel(AliKalmanTrack *t,Float_t wrong) const { | |
137 | //-------------------------------------------------------------------- | |
138 | //This function "cooks" a track label. If label<0, this track is fake. | |
139 | //-------------------------------------------------------------------- | |
140 | Int_t tpcLabel=t->GetLabel(); | |
141 | if (tpcLabel<0) return; | |
142 | AliTracker::CookLabel(t,wrong); | |
143 | if (tpcLabel!=TMath::Abs(t->GetLabel())){ | |
144 | t->SetFakeRatio(1.); | |
145 | } | |
146 | if (tpcLabel !=t->GetLabel()) { | |
147 | t->SetLabel(-tpcLabel); | |
148 | } | |
149 | } | |
150 | ||
151 | ||
152 | ||
153 | #endif |