32 return StatusCode::SUCCESS;
40 beamTransform.pretranslate(beamSpotHandle->
beamPos());
42 return std::make_unique< Trk::StraightLineSurface >(beamTransform);
56 std::unique_ptr<Trk::Perigee> vertexPerigee;
58 const Trk::Perigee& trackparPerigee = tp.perigeeParameters();
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 =
67 vertexPerigee.reset(
static_cast<Trk::Perigee*
>(extrapResult.release()));
72 "Extrapolation to Perigee failed, a NULL pointer is returned.");
77 const EventContext& ctx,
const Trk::Track& track,
81 std::unique_ptr<Trk::Perigee> vertexPerigee;
82 std::unique_ptr<Trk::TrackParameters> extrapResult =
85 :
m_extrapolator->extrapolate(ctx, *(track.perigeeParameters()), persf);
87 vertexPerigee.reset(
static_cast<Trk::Perigee*
>(extrapResult.release()));
90 const Trk::Perigee* trackPerigee = track.perigeeParameters();
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);
103std::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 =
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) {
160 const Trk::Perigee* trackPerigee = track.perigeeParameters();
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;
194 const Trk::Perigee& trackparPerigee = tp.perigeeParameters();
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,
#define ATH_CHECK
Evaluate an expression and check for errors.
float beamTilt(int i) const noexcept
Returns the beam sigma for the i+3-th error matrix element (the 'tilt')
const Trk::RecVertex & beamVtx() const noexcept
const Amg::Vector3D & beamPos() const noexcept
virtual std::unique_ptr< Trk::Perigee > perigeeAtBeamline(const EventContext &ctx, const Trk::Track &trk, const InDet::BeamSpotData *) const override final
Interface method for use with Track and the beamline.
bool startAtOriginalPerigee(const Trk::Track &track) const
virtual StatusCode initialize() override final
AlgTool initailize method.
virtual std::unique_ptr< Trk::Perigee > perigeeAtVertex(const EventContext &ctx, const xAOD::TrackParticle &tp, const Amg::Vector3D &gp) const override final
Interface method for use with xAOD::Trackparticle and given vertex position.
virtual std::unique_ptr< Trk::StraightLineSurface > GetBeamLine(const InDet::BeamSpotData *) const override final
Use this for MT Coding.
TrackToVertex(const std::string &, const std::string &, const IInterface *)
AlgTool like constructor.
static const Amg::Vector3D s_origin
static origin
virtual std::unique_ptr< Trk::TrackParameters > trackAtBeamline(const EventContext &ctx, const xAOD::TrackParticle &tp, const InDet::BeamSpotData *) const override final
Interface method for use with TrackParticle and the beamline from the BeamSpotSvc - xAOD.
ToolHandle< Trk::IExtrapolator > m_extrapolator
ToolHandle for Extrapolator.
virtual ParametersT< DIM, T, S > * clone() const override final
Virtual clone.
virtual const S & associatedSurface() const override final
Access to the Surface method.
Class describing the Line to which the Perigee refers to.
Class for a StraightLineSurface in the ATLAS detector to describe dirft tube and straw like detectors...
const Perigee * perigeeParameters() const
return Perigee.
const Amg::Vector3D & position() const
return position of vertex
Eigen::AngleAxisd AngleAxis3D
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Eigen::Translation< double, 3 > Translation3D
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
ParametersBase< TrackParametersDim, Charged > TrackParameters
TrackParticle_v1 TrackParticle
Reference the current persistent version: