12 #include "cetlib_except/exception.h" 56 const std::shared_ptr<const Surface>& psurf,
64 std::optional<double>
result{std::nullopt};
68 if (dynamic_cast<const SurfYZLine*>(&*psurf))
70 else if (dynamic_cast<const SurfYZPlane*>(&*psurf))
72 else if (dynamic_cast<const SurfXYZPlane*>(&*psurf))
75 throw cet::exception(
"PropAny") <<
"Destination surface has unknown type.\n";
97 const std::shared_ptr<const Surface>& porient,
102 std::optional<double>
result{std::nullopt};
106 if (dynamic_cast<const SurfYZLine*>(&*porient))
108 else if (dynamic_cast<const SurfYZPlane*>(&*porient))
110 else if (dynamic_cast<const SurfXYZPlane*>(&*porient))
113 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.
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.
KMatrix< 5, 5 >::type TrackMatrix
General 5x5 matrix.
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.