32 return StatusCode::SUCCESS;
40 beamTransform.pretranslate(beamSpotHandle->
beamPos());
42 return std::make_unique< Trk::StraightLineSurface >(beamTransform);
56 std::unique_ptr<Trk::Perigee> vertexPerigee;
60 ATH_MSG_DEBUG(
"Perigee of TrackParticle is already expressed to given "
61 "vertex, a copy is returned.");
62 return std::unique_ptr<Trk::Perigee>(trackparPerigee.
clone());
64 std::unique_ptr<Trk::TrackParameters> extrapResult =
65 m_extrapolator->extrapolateDirectly(ctx,trackparPerigee, persf);
67 vertexPerigee.reset(
static_cast<Trk::Perigee*
>(extrapResult.release()));
72 "Extrapolation to Perigee failed, a NULL pointer is returned.");
81 std::unique_ptr<Trk::Perigee> vertexPerigee;
82 std::unique_ptr<Trk::TrackParameters> extrapResult =
83 !startAtOriginalPerigee(
track)
84 ? m_extrapolator->extrapolateTrack(ctx,
track, persf)
85 : m_extrapolator->extrapolate(ctx, *(
track.perigeeParameters()), persf);
87 vertexPerigee.reset(
static_cast<Trk::Perigee*
>(extrapResult.release()));
92 ATH_MSG_DEBUG(
"Perigee of Track is already expressed to given vertex, a "
94 vertexPerigee.reset(trackPerigee->
clone());
97 "Extrapolation to Perigee failed, NULL pointer is returned.");
100 return (vertexPerigee);
103 std::unique_ptr<Trk::Perigee>
105 const EventContext& ctx,
120 amgtranslation * Amg::RotationMatrix3D::Identity();
126 std::unique_ptr<Trk::Perigee> vertexPerigee;
127 if(
track.perigeeParameters() && std::abs(
track.perigeeParameters()->position().z())>5000.){
128 ATH_MSG_DEBUG(
"Perigee well outside of tracking detector, skipping extrapolation");
131 std::unique_ptr<Trk::TrackParameters> extrapResult =
132 !startAtOriginalPerigee(
track)
133 ? m_extrapolator->extrapolateTrack(ctx,
track, persf)
134 : m_extrapolator->extrapolate(ctx,*(
track.perigeeParameters()), persf);
136 vertexPerigee.reset(
static_cast<Trk::Perigee*
>(extrapResult.release()));
139 if (!vertexPerigee) {
145 if (track_parameter_list) {
147 if (!trk_params || std::abs(trk_params->position().z())>5000.) {
150 std::unique_ptr<Trk::TrackParameters> extrapResult = m_extrapolator->extrapolate(ctx,*trk_params, persf);
153 vertexPerigee.reset(
static_cast<Trk::Perigee*
>(extrapResult.release()));
159 if (!vertexPerigee) {
162 ATH_MSG_DEBUG(
"Perigee of Track is already expressed to given vertex, a "
163 "copy is returned.");
164 vertexPerigee.reset(trackPerigee->
clone());
167 "Extrapolation to Beamline Perigee failed, NULL pointer is returned.");
170 return (vertexPerigee);
187 amgTransf = amgtranslation * Amg::RotationMatrix3D::Identity();
192 std::unique_ptr<Trk::TrackParameters> vertexPerigee;
196 ATH_MSG_DEBUG(
"Perigee of TrackParticle is already expressed to given vertex, a copy is returned.");
197 return std::unique_ptr<Trk::TrackParameters>(trackparPerigee.
clone());
199 vertexPerigee = m_extrapolator->extrapolateDirectly(ctx,trackparPerigee, persf);
201 ATH_MSG_DEBUG(
"Extrapolation to Beam Line failed, a NULL pointer is returned.");
203 return vertexPerigee;
207 const EventContext& ctx,
const Trk::Track& trk,
210 return !startAtOriginalPerigee(trk)
211 ? m_extrapolator->extrapolateTrack(ctx, trk, *beamline)
218 return m_extrapolator->extrapolate(ctx, tpars, *beamline);