// D0GTrackPropagator.hpp #ifndef D0GTrackPropagator_H #define D0GTrackPropagator_H // This is just a facade for GTrackPropagator constructed using // D0Propagator. #include "gtrbase/GTrackPropagator.hpp" #include "ref_count/RefCounter.hpp" class D0GTrackPropagator : public RefCounter { //class D0GTrackPropagator { private: // attributes // The underlying propagator. // We construct this and it does all the work. GTrackPropagator _gprop; public: // methods // Default constructor. explicit D0GTrackPropagator(); // destructor ~D0GTrackPropagator(); // Return the GTrack propagator pointer. const GTrackPropagator& get_gtrack_propagator() const; // Return the TRF++ propagator pointer. const trf::PropagatorPtr& get_propagator() const; // Propagate track to a surface over a specified s-range. // A reference to an invalid state is returned if the surface // cannot be reached. GTrackState propagate(const GTrack& gtr, const trf::SurfacePtr& srf, double s1 =GTrack::SMIN, double s2 =GTrack::SMAX) const; }; // output stream std::ostream& operator<<(std::ostream& stream, const D0GTrackPropagator& gtr); // equality bool operator==(const D0GTrackPropagator& lhs, const D0GTrackPropagator& rhs); // inequality inline bool operator!=(const D0GTrackPropagator& lhs, const D0GTrackPropagator& rhs) { return ! (lhs == rhs); } #endif