8 const std::string&
name,
22 return StatusCode::SUCCESS;
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.;
40 double aw_ftf[3]={0.,0.,0.};
41 double bw_ftf[3]={0.,0.,0.};
44 bool CylinderFirst = (std::abs(idtrack->
eta()) < 1.05);
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;
55 auto extFtfInner = extTrack( ctx, CylinderFirst, idtrack, 4700., innerCylinderZ, muonRoad.
ext_ftf_flag[0][0]);
57 ATH_MSG_DEBUG(
"extrapolated track parameters on BarrelInner is null");
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);
65 bw_ftf[0] = extFtfInnerR - (aw_ftf[0])*extFtfInnerZ;
66 muonRoad.
r_ftf[0][0] = extFtfInnerR;
67 muonRoad.
z_ftf[0][0] = extFtfInnerZ;
74 CylinderFirst =
false;
76 auto extFtfMiddle = extTrack( ctx, CylinderFirst, *extFtfInner, 7300., middleCylinderZ, muonRoad.
ext_ftf_flag[1][0]);
78 ATH_MSG_DEBUG(
"extrapolated track parameters on BarrelMiddle is null");
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);
86 bw_ftf[1] = extFtfMiddleR - (aw_ftf[1])*extFtfMiddleZ;
87 muonRoad.
r_ftf[1][0] = extFtfMiddleR;
88 muonRoad.
z_ftf[1][0] = extFtfMiddleZ;
95 CylinderFirst =
false;
97 auto extFtfOuter = extTrack( ctx, CylinderFirst, *extFtfMiddle, 9800., outerCylinderZ, muonRoad.
ext_ftf_flag[2][0]);
99 ATH_MSG_DEBUG(
"extrapolated track parameters on BarrelOuter is null");
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);
107 bw_ftf[2] = extFtfOuterR - (aw_ftf[2])*extFtfOuterZ;
108 muonRoad.
r_ftf[2][0] = extFtfOuterR;
109 muonRoad.
z_ftf[2][0] = extFtfOuterZ;
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];
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;
165 return StatusCode::SUCCESS;
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 bool boundaryCheck =
true;
241 std::unique_ptr<const Trk::CylinderSurface> barrel = std::make_unique<const Trk::CylinderSurface>( R, Z );
245 std::unique_ptr<const Trk::DiscSurface> disc = std::make_unique<const Trk::DiscSurface>(
matrix, 0, R );
250 std::unique_ptr<const Trk::TrackParameters> param1( m_extrapolator->extrapolate(ctx,
260 std::unique_ptr<const Trk::TrackParameters> param2( m_extrapolator->extrapolate(ctx,
271 std::unique_ptr<const Trk::TrackParameters> param2( m_extrapolator->extrapolate(ctx,
281 std::unique_ptr<const Trk::TrackParameters> param1( m_extrapolator->extrapolate(ctx,