31{
33
35
36 double extFtfInnerEta=0., extFtfInnerZ=0., extFtfInnerR=0., extFtfInnerPhi=0.;
37 double extFtfMiddleEta=0., extFtfMiddleZ=0., extFtfMiddleR=0., extFtfMiddlePhi=0.;
38 double extFtfOuterEta=0., extFtfOuterZ=0., extFtfOuterR=0., extFtfOuterPhi=0.;
39
40 double aw_ftf[3]={0.,0.,0.};
41 double bw_ftf[3]={0.,0.,0.};
42
43
44 bool CylinderFirst = (std::abs(idtrack->
eta()) < 1.05);
45
46 double innerCylinderZ = 7500.;
47 double middleCylinderZ = 14000.;
48 double outerCylinderZ = 21500.;
49 if(idtrack->
eta() < 0) {
50 innerCylinderZ = -innerCylinderZ;
51 middleCylinderZ = -middleCylinderZ;
52 outerCylinderZ = -outerCylinderZ;
53 }
54
55 auto extFtfInner =
extTrack( ctx, CylinderFirst, idtrack, 4700., innerCylinderZ, muonRoad.
ext_ftf_flag[0][0]);
56 if( !extFtfInner ) {
57 ATH_MSG_DEBUG(
"extrapolated track parameters on BarrelInner is null");
58 } else {
59 extFtfInnerEta = extFtfInner->eta();
60 extFtfInnerPhi = extFtfInner->position().phi();
61 extFtfInnerZ = extFtfInner->position().z();
62 extFtfInnerR = std::hypot(extFtfInner->position().x(), extFtfInner->position().y());
63 ATH_MSG_DEBUG(
"extFtfInnerEta: " << extFtfInnerEta <<
", extFtfInnerPhi: " << extFtfInnerPhi <<
", extFtfInnerZ: " << extFtfInnerZ <<
", extFtfInnerR: " << extFtfInnerR);
64 aw_ftf[0] = std::tan(2*std::atan(std::exp(-extFtfInnerEta)));
65 bw_ftf[0] = extFtfInnerR - (aw_ftf[0])*extFtfInnerZ;
66 muonRoad.
r_ftf[0][0] = extFtfInnerR;
67 muonRoad.
z_ftf[0][0] = extFtfInnerZ;
68
69
72 CylinderFirst = true;
73 else
74 CylinderFirst = false;
75
76 auto extFtfMiddle =
extTrack( ctx, CylinderFirst, *extFtfInner, 7300., middleCylinderZ, muonRoad.
ext_ftf_flag[1][0]);
77 if( !extFtfMiddle ) {
78 ATH_MSG_DEBUG(
"extrapolated track parameters on BarrelMiddle is null");
79 } else {
80 extFtfMiddleEta = extFtfMiddle->eta();
81 extFtfMiddlePhi = extFtfMiddle->position().phi();
82 extFtfMiddleZ = extFtfMiddle->position().z();
83 extFtfMiddleR = std::hypot(extFtfMiddle->position().x(), extFtfMiddle->position().y());
84 ATH_MSG_DEBUG(
"extFtfMiddleEta: " << extFtfMiddleEta <<
", extFtfMiddlePhi: " << extFtfMiddlePhi <<
", extFtfMiddleZ: " << extFtfMiddleZ <<
", extFtfMiddleR: " << extFtfMiddleR);
85 aw_ftf[1] = std::tan(2*std::atan(std::exp(-extFtfMiddleEta)));
86 bw_ftf[1] = extFtfMiddleR - (aw_ftf[1])*extFtfMiddleZ;
87 muonRoad.
r_ftf[1][0] = extFtfMiddleR;
88 muonRoad.
z_ftf[1][0] = extFtfMiddleZ;
89
90
93 CylinderFirst = true;
94 else
95 CylinderFirst = false;
96
97 auto extFtfOuter =
extTrack( ctx, CylinderFirst, *extFtfMiddle, 9800., outerCylinderZ, muonRoad.
ext_ftf_flag[2][0]);
98 if( !extFtfOuter ) {
99 ATH_MSG_DEBUG(
"extrapolated track parameters on BarrelOuter is null");
100 } else {
101 extFtfOuterEta = extFtfOuter->eta();
102 extFtfOuterPhi = extFtfOuter->position().phi();
103 extFtfOuterZ = extFtfOuter->position().z();
104 extFtfOuterR = std::hypot(extFtfOuter->position().x(), extFtfOuter->position().y());
105 ATH_MSG_DEBUG(
"extFtfOuterEta: " << extFtfOuterEta <<
", extFtfOuterPhi: " << extFtfOuterPhi <<
", extFtfOuterZ: " << extFtfOuterZ <<
", extFtfOuterR: " << extFtfOuterR);
106 aw_ftf[2] = std::tan(2*std::atan(std::exp(-extFtfOuterEta)));
107 bw_ftf[2] = extFtfOuterR - (aw_ftf[2])*extFtfOuterZ;
108 muonRoad.
r_ftf[2][0] = extFtfOuterR;
109 muonRoad.
z_ftf[2][0] = extFtfOuterZ;
110 }
111 }
112 }
113
116
117 for (
int i_sector=0; i_sector<
N_SECTOR; i_sector++) {
118 muonRoad.
aw_ftf[0][i_sector] = aw_ftf[0];
119 muonRoad.
bw_ftf[0][i_sector] = bw_ftf[0];
120 muonRoad.
aw_ftf[1][i_sector] = aw_ftf[1];
121 muonRoad.
bw_ftf[1][i_sector] = bw_ftf[1];
122 muonRoad.
aw_ftf[2][i_sector] = aw_ftf[2];
123 muonRoad.
bw_ftf[2][i_sector] = bw_ftf[2];
124 muonRoad.
aw_ftf[3][i_sector] = aw_ftf[0];
125 muonRoad.
bw_ftf[3][i_sector] = bw_ftf[0];
126 muonRoad.
aw_ftf[4][i_sector] = aw_ftf[1];
127 muonRoad.
bw_ftf[4][i_sector] = bw_ftf[1];
128 muonRoad.
aw_ftf[5][i_sector] = aw_ftf[2];
129 muonRoad.
bw_ftf[5][i_sector] = bw_ftf[2];
130 muonRoad.
aw_ftf[6][i_sector] = aw_ftf[0];
131 muonRoad.
bw_ftf[6][i_sector] = bw_ftf[0];
132 muonRoad.
aw_ftf[7][i_sector] = aw_ftf[0];
133 muonRoad.
bw_ftf[7][i_sector] = bw_ftf[0];
134 muonRoad.
aw_ftf[8][i_sector] = aw_ftf[0];
135 muonRoad.
bw_ftf[8][i_sector] = bw_ftf[0];
136 muonRoad.
aw_ftf[9][i_sector] = aw_ftf[1];
137 muonRoad.
bw_ftf[9][i_sector] = bw_ftf[1];
138 muonRoad.
aw_ftf[10][i_sector] = aw_ftf[1];
139 muonRoad.
bw_ftf[10][i_sector] = bw_ftf[1];
140
141 muonRoad.
eta_ftf[0][i_sector] = extFtfInnerEta;
142 muonRoad.
phi_ftf[0][i_sector] = extFtfInnerPhi;
143 muonRoad.
eta_ftf[1][i_sector] = extFtfMiddleEta;
144 muonRoad.
phi_ftf[1][i_sector] = extFtfMiddlePhi;
145 muonRoad.
eta_ftf[2][i_sector] = extFtfOuterEta;
146 muonRoad.
phi_ftf[2][i_sector] = extFtfOuterPhi;
147 muonRoad.
eta_ftf[3][i_sector] = extFtfInnerEta;
148 muonRoad.
phi_ftf[3][i_sector] = extFtfInnerPhi;
149 muonRoad.
eta_ftf[4][i_sector] = extFtfMiddleEta;
150 muonRoad.
phi_ftf[4][i_sector] = extFtfMiddlePhi;
151 muonRoad.
eta_ftf[5][i_sector] = extFtfOuterEta;
152 muonRoad.
phi_ftf[5][i_sector] = extFtfOuterPhi;
153 muonRoad.
eta_ftf[6][i_sector] = extFtfInnerEta;
154 muonRoad.
phi_ftf[6][i_sector] = extFtfInnerPhi;
155 muonRoad.
eta_ftf[7][i_sector] = extFtfInnerEta;
156 muonRoad.
phi_ftf[7][i_sector] = extFtfInnerPhi;
157 muonRoad.
eta_ftf[8][i_sector] = extFtfInnerEta;
158 muonRoad.
phi_ftf[8][i_sector] = extFtfInnerPhi;
159 muonRoad.
eta_ftf[9][i_sector] = extFtfMiddleEta;
160 muonRoad.
phi_ftf[9][i_sector] = extFtfMiddlePhi;
161 muonRoad.
eta_ftf[10][i_sector] = extFtfMiddleEta;
162 muonRoad.
phi_ftf[10][i_sector] = extFtfMiddlePhi;
163 }
164
165 return StatusCode::SUCCESS;
166}
std::unique_ptr< const Trk::TrackParameters > extTrack(const EventContext &ctx, const bool CylinderFirst, const xAOD::TrackParticle *trk, const double R, const double Z, int &extFlag) const
double bw_ftf[N_STATION][N_SECTOR]
double aw_ftf[N_STATION][N_SECTOR]
int ext_ftf_flag[N_STATION][N_SECTOR]
double z_ftf[N_STATION][N_SECTOR]
double r_ftf[N_STATION][N_SECTOR]
double eta_ftf[N_STATION][N_SECTOR]
double phi_ftf[N_STATION][N_SECTOR]
virtual double eta() const override final
The pseudorapidity ( ) of the particle.