// PropXYXY.h #ifndef PropXYXY_H #define PropXYXY_H // Propagates tracks from one XYPlane to another in a constant field. // // Propagation will fail if either the origin or destination is // not a XYPlane. // Propagator works incorrectly for tracks with very small curvatures #include "trfbase/PropDirected.h" #include "trfbase/ObjDoublePtr.h" namespace trf { class PropXYXY : public PropDirected { private: // attributes ObjDoublePtr _bfield; private: // output stream void ostr(std::ostream& stream) const; public: // static methods // Return the type name. static TypeName get_type_name() { return "PropXYXY"; } // Return the creator. static ObjCreator get_creator(); // Return the type. static Type get_static_type() { return get_creator(); } public: // constructor from magnetic field in Tesla. PropXYXY(ObjDoublePtr bfield); // destructor ~PropXYXY(); // Clone. Propagator* new_propagator( ) const; // propagate a track without error in the specified direction PropStat vec_dir_prop( VTrack& trv, const Surface& srf, PropDir dir,TrackDerivative* pder =0 ) const; // return the magnetic field double get_bfield() const; // Return the type. Type get_type() const { return get_static_type(); } // Write the object data. ObjData write_data() const; }; } // end namespace trf #endif