17 #include "cetlib_except/exception.h" 32 fPropYZLine(tcut, doDedx),
33 fPropYZPlane(tcut, doDedx),
34 fPropXYZPlane(tcut, doDedx)
57 boost::optional<double>
59 const std::shared_ptr<const Surface>& psurf,
67 boost::optional<double> result(
false, 0.);
71 if(dynamic_cast<const SurfYZLine*>(&*psurf))
73 else if(dynamic_cast<const SurfYZPlane*>(&*psurf))
75 else if(dynamic_cast<const SurfXYZPlane*>(&*psurf))
78 throw cet::exception(
"PropAny") <<
"Destination surface has unknown type.\n";
98 boost::optional<double>
100 const std::shared_ptr<const Surface>& porient,
105 boost::optional<double> result(
false, 0.);
109 if(dynamic_cast<const SurfYZLine*>(&*porient))
111 else if(dynamic_cast<const SurfYZPlane*>(&*porient))
113 else if(dynamic_cast<const SurfXYZPlane*>(&*porient))
116 throw cet::exception(
"PropAny") <<
"Destination surface has unknown type.\n";
virtual boost::optional< double > origin_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &porient, TrackMatrix *prop_matrix=0) const
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.
boost::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
Propagate without error.
PropAny(double tcut, bool doDedx)
Constructor.
boost::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
Propagate without error.
boost::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
Propagate without error.
PropYZLine fPropYZLine
Underlying propagators.
virtual ~PropAny()
Destructor.
Propagate between any two surfaces.
PropXYZPlane fPropXYZPlane
virtual boost::optional< double > origin_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &porient, TrackMatrix *prop_matrix=0) const
Propagate without error to surface whose origin parameters coincide with track position.
virtual boost::optional< double > origin_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &porient, TrackMatrix *prop_matrix=0) const
Propagate without error to surface whose origin parameters coincide with track position.
virtual boost::optional< double > origin_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &porient, TrackMatrix *prop_matrix=0) const
Propagate without error to surface whose origin parameters coincide with track position.
KMatrix< 5, 5 >::type TrackMatrix
General 5x5 matrix.
Interactor for planar surfaces.
Line surface perpendicular to x-axis.
boost::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
Propagate without error.
cet::coded_exception< error, detail::translate > exception
PropDirection
Propagation direction enum.