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