8 const std::string&
name,
22 return StatusCode::SUCCESS;
35 double extFtfInnerEta=0., extFtfInnerZ=0., extFtfInnerR=0., extFtfInnerPhi=0.;
36 double extFtfMiddleEta=0., extFtfMiddleZ=0., extFtfMiddleR=0., extFtfMiddlePhi=0.;
37 double extFtfOuterEta=0., extFtfOuterZ=0., extFtfOuterR=0., extFtfOuterPhi=0.;
39 double aw_ftf[3]={0.,0.,0.};
40 double bw_ftf[3]={0.,0.,0.};
43 bool CylinderFirst = (std::abs(idtrack->
eta()) < 1.05);
45 double innerCylinderZ = 7500.;
46 double middleCylinderZ = 14000.;
47 double outerCylinderZ = 21500.;
48 if(idtrack->
eta() < 0) {
49 innerCylinderZ = -innerCylinderZ;
50 middleCylinderZ = -middleCylinderZ;
51 outerCylinderZ = -outerCylinderZ;
54 auto extFtfInner = extTrack( CylinderFirst, idtrack, 4700., innerCylinderZ, muonRoad.
ext_ftf_flag[0][0]);
56 ATH_MSG_DEBUG(
"extrapolated track parameters on BarrelInner is null");
58 extFtfInnerEta = extFtfInner->eta();
59 extFtfInnerPhi = extFtfInner->position().phi();
60 extFtfInnerZ = extFtfInner->position().z();
61 extFtfInnerR = std::hypot(extFtfInner->position().x(), extFtfInner->position().y());
62 ATH_MSG_DEBUG(
"extFtfInnerEta: " << extFtfInnerEta <<
", extFtfInnerPhi: " << extFtfInnerPhi <<
", extFtfInnerZ: " << extFtfInnerZ <<
", extFtfInnerR: " << extFtfInnerR);
64 bw_ftf[0] = extFtfInnerR - (aw_ftf[0])*extFtfInnerZ;
65 muonRoad.
r_ftf[0][0] = extFtfInnerR;
66 muonRoad.
z_ftf[0][0] = extFtfInnerZ;
73 CylinderFirst =
false;
75 auto extFtfMiddle = extTrack( CylinderFirst, *extFtfInner, 7300., middleCylinderZ, muonRoad.
ext_ftf_flag[1][0]);
77 ATH_MSG_DEBUG(
"extrapolated track parameters on BarrelMiddle is null");
79 extFtfMiddleEta = extFtfMiddle->eta();
80 extFtfMiddlePhi = extFtfMiddle->position().phi();
81 extFtfMiddleZ = extFtfMiddle->position().z();
82 extFtfMiddleR = std::hypot(extFtfMiddle->position().x(), extFtfMiddle->position().y());
83 ATH_MSG_DEBUG(
"extFtfMiddleEta: " << extFtfMiddleEta <<
", extFtfMiddlePhi: " << extFtfMiddlePhi <<
", extFtfMiddleZ: " << extFtfMiddleZ <<
", extFtfMiddleR: " << extFtfMiddleR);
85 bw_ftf[1] = extFtfMiddleR - (aw_ftf[1])*extFtfMiddleZ;
86 muonRoad.
r_ftf[1][0] = extFtfMiddleR;
87 muonRoad.
z_ftf[1][0] = extFtfMiddleZ;
94 CylinderFirst =
false;
96 auto extFtfOuter = extTrack( CylinderFirst, *extFtfMiddle, 9800., outerCylinderZ, muonRoad.
ext_ftf_flag[2][0]);
98 ATH_MSG_DEBUG(
"extrapolated track parameters on BarrelOuter is null");
100 extFtfOuterEta = extFtfOuter->eta();
101 extFtfOuterPhi = extFtfOuter->position().phi();
102 extFtfOuterZ = extFtfOuter->position().z();
103 extFtfOuterR = std::hypot(extFtfOuter->position().x(), extFtfOuter->position().y());
104 ATH_MSG_DEBUG(
"extFtfOuterEta: " << extFtfOuterEta <<
", extFtfOuterPhi: " << extFtfOuterPhi <<
", extFtfOuterZ: " << extFtfOuterZ <<
", extFtfOuterR: " << extFtfOuterR);
106 bw_ftf[2] = extFtfOuterR - (aw_ftf[2])*extFtfOuterZ;
107 muonRoad.
r_ftf[2][0] = extFtfOuterR;
108 muonRoad.
z_ftf[2][0] = extFtfOuterZ;
116 for (
int i_sector=0; i_sector<
N_SECTOR; i_sector++) {
117 muonRoad.
aw_ftf[0][i_sector] = aw_ftf[0];
118 muonRoad.
bw_ftf[0][i_sector] = bw_ftf[0];
119 muonRoad.
aw_ftf[1][i_sector] = aw_ftf[1];
120 muonRoad.
bw_ftf[1][i_sector] = bw_ftf[1];
121 muonRoad.
aw_ftf[2][i_sector] = aw_ftf[2];
122 muonRoad.
bw_ftf[2][i_sector] = bw_ftf[2];
123 muonRoad.
aw_ftf[3][i_sector] = aw_ftf[0];
124 muonRoad.
bw_ftf[3][i_sector] = bw_ftf[0];
125 muonRoad.
aw_ftf[4][i_sector] = aw_ftf[1];
126 muonRoad.
bw_ftf[4][i_sector] = bw_ftf[1];
127 muonRoad.
aw_ftf[5][i_sector] = aw_ftf[2];
128 muonRoad.
bw_ftf[5][i_sector] = bw_ftf[2];
129 muonRoad.
aw_ftf[6][i_sector] = aw_ftf[0];
130 muonRoad.
bw_ftf[6][i_sector] = bw_ftf[0];
131 muonRoad.
aw_ftf[7][i_sector] = aw_ftf[0];
132 muonRoad.
bw_ftf[7][i_sector] = bw_ftf[0];
133 muonRoad.
aw_ftf[8][i_sector] = aw_ftf[0];
134 muonRoad.
bw_ftf[8][i_sector] = bw_ftf[0];
135 muonRoad.
aw_ftf[9][i_sector] = aw_ftf[1];
136 muonRoad.
bw_ftf[9][i_sector] = bw_ftf[1];
137 muonRoad.
aw_ftf[10][i_sector] = aw_ftf[1];
138 muonRoad.
bw_ftf[10][i_sector] = bw_ftf[1];
140 muonRoad.
eta_ftf[0][i_sector] = extFtfInnerEta;
141 muonRoad.
phi_ftf[0][i_sector] = extFtfInnerPhi;
142 muonRoad.
eta_ftf[1][i_sector] = extFtfMiddleEta;
143 muonRoad.
phi_ftf[1][i_sector] = extFtfMiddlePhi;
144 muonRoad.
eta_ftf[2][i_sector] = extFtfOuterEta;
145 muonRoad.
phi_ftf[2][i_sector] = extFtfOuterPhi;
146 muonRoad.
eta_ftf[3][i_sector] = extFtfInnerEta;
147 muonRoad.
phi_ftf[3][i_sector] = extFtfInnerPhi;
148 muonRoad.
eta_ftf[4][i_sector] = extFtfMiddleEta;
149 muonRoad.
phi_ftf[4][i_sector] = extFtfMiddlePhi;
150 muonRoad.
eta_ftf[5][i_sector] = extFtfOuterEta;
151 muonRoad.
phi_ftf[5][i_sector] = extFtfOuterPhi;
152 muonRoad.
eta_ftf[6][i_sector] = extFtfInnerEta;
153 muonRoad.
phi_ftf[6][i_sector] = extFtfInnerPhi;
154 muonRoad.
eta_ftf[7][i_sector] = extFtfInnerEta;
155 muonRoad.
phi_ftf[7][i_sector] = extFtfInnerPhi;
156 muonRoad.
eta_ftf[8][i_sector] = extFtfInnerEta;
157 muonRoad.
phi_ftf[8][i_sector] = extFtfInnerPhi;
158 muonRoad.
eta_ftf[9][i_sector] = extFtfMiddleEta;
159 muonRoad.
phi_ftf[9][i_sector] = extFtfMiddlePhi;
160 muonRoad.
eta_ftf[10][i_sector] = extFtfMiddleEta;
161 muonRoad.
phi_ftf[10][i_sector] = extFtfMiddlePhi;
164 return StatusCode::SUCCESS;
174 const EventContext& ctx = Gaudi::Hive::currentContext();
175 const bool boundaryCheck =
true;
178 std::unique_ptr<const Trk::CylinderSurface> barrel = std::make_unique<const Trk::CylinderSurface>( R, Z );
182 std::unique_ptr<const Trk::DiscSurface> disc = std::make_unique<const Trk::DiscSurface>(
matrix, 0, R );
187 std::unique_ptr<const Trk::TrackParameters> param1( m_extrapolator->extrapolate(ctx,
197 std::unique_ptr<const Trk::TrackParameters> param2( m_extrapolator->extrapolate(ctx,
208 std::unique_ptr<const Trk::TrackParameters> param2( m_extrapolator->extrapolate(ctx,
218 std::unique_ptr<const Trk::TrackParameters> param1( m_extrapolator->extrapolate(ctx,
238 const EventContext& ctx = Gaudi::Hive::currentContext();
239 const bool boundaryCheck =
true;
242 std::unique_ptr<const Trk::CylinderSurface> barrel = std::make_unique<const Trk::CylinderSurface>( R, Z );
246 std::unique_ptr<const Trk::DiscSurface> disc = std::make_unique<const Trk::DiscSurface>(
matrix, 0, R );
251 std::unique_ptr<const Trk::TrackParameters> param1( m_extrapolator->extrapolate(ctx,
261 std::unique_ptr<const Trk::TrackParameters> param2( m_extrapolator->extrapolate(ctx,
272 std::unique_ptr<const Trk::TrackParameters> param2( m_extrapolator->extrapolate(ctx,
282 std::unique_ptr<const Trk::TrackParameters> param1( m_extrapolator->extrapolate(ctx,