12 #include "cetlib_except/exception.h" 55 const std::shared_ptr<const Surface>& psurf,
63 std::optional<double> result{std::nullopt};
67 if (dynamic_cast<const SurfYZLine*>(&*psurf))
69 else if (dynamic_cast<const SurfYZPlane*>(&*psurf))
71 else if (dynamic_cast<const SurfXYZPlane*>(&*psurf))
74 throw cet::exception(
"PropAny") <<
"Destination surface has unknown type.\n";
95 const std::shared_ptr<const Surface>& porient,
100 std::optional<double> result{std::nullopt};
104 if (dynamic_cast<const SurfYZLine*>(&*porient))
106 else if (dynamic_cast<const SurfYZPlane*>(&*porient))
108 else if (dynamic_cast<const SurfXYZPlane*>(&*porient))
111 throw cet::exception(
"PropAny") <<
"Destination surface has unknown type.\n";
virtual std::optional< double > origin_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &porient, TrackMatrix *prop_matrix=0) const override
Propagate without error to surface whose origin parameters coincide with track position.
std::optional< double > origin_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &porient, TrackMatrix *prop_matrix=0) const override
Propagate without error to surface whose origin parameters coincide with track position.
std::optional< double > origin_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &porient, TrackMatrix *prop_matrix=0) const override
Propagate without error to surface whose origin parameters coincide with track position.
KSymMatrix< 5 >::type TrackError
Track error matrix, dimension 5x5.
Planar surface parallel to x-axis.
KMatrix< 5, 5 >::type TrackMatrix
General 5x5 matrix.
std::optional< double > short_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &surf, Propagator::PropDirection dir, bool doDedx, TrackMatrix *prop_matrix=0, TrackError *noise_matrix=0) const override
Propagate without error.
PropYZLine fPropYZLine
Underlying propagators.
std::optional< double > short_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &surf, Propagator::PropDirection dir, bool doDedx, TrackMatrix *prop_matrix=0, TrackError *noise_matrix=0) const override
Propagate without error.
Propagate between any two surfaces.
PropXYZPlane fPropXYZPlane
std::optional< double > short_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &surf, Propagator::PropDirection dir, bool doDedx, TrackMatrix *prop_matrix=0, TrackError *noise_matrix=0) const override
Propagate without error.
std::optional< double > origin_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &porient, TrackMatrix *prop_matrix=0) const override
Propagate without error to surface whose origin parameters coincide with track position.
Interactor for planar surfaces.
std::optional< double > short_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &surf, Propagator::PropDirection dir, bool doDedx, TrackMatrix *prop_matrix=0, TrackError *noise_matrix=0) const override
Propagate without error.
Line surface perpendicular to x-axis.
PropAny(detinfo::DetectorPropertiesData const &detProp, double tcut, bool doDedx)
Constructor.
cet::coded_exception< error, detail::translate > exception
PropDirection
Propagation direction enum.