// BSurfXYPlane.h #ifndef BSurfXYPlane_H #define BSurfXYPlane_H // XYPlane with rectangular boundaries in (v,z). #include "SurfXYPlane.h" namespace trf { class BSurfXYPlane : public SurfXYPlane { public: // Return the type name. static TypeName get_type_name() { return "BSurfXYPlane"; } // Return the creator. static ObjCreator get_creator(); // Return the type. static Type get_static_type() { return get_creator(); } private: // lower v-limit double _vmin; // upper v-limit double _vmax; // lower z-limit double _zmin; // upper z-limit double _zmax; // output stream void ostr(std::ostream& stream) const; // equality bool safe_bound_equal(const Surface& srf) const; // calculate crossing status from VTrack and error in (v,z)_track // This is used by both the public status methods. CrossStat status(const VTrack& trv, double dv, double dz) const; public: // constructor BSurfXYPlane(double dist, double phi, double vmin, double vmax, double zmin, double zmax); // destructor virtual ~BSurfXYPlane() { }; // return the min v double get_vmin() const { return _vmin; }; // return the max v double get_vmax() const { return _vmax; }; // return the min z double get_zmin() const { return _zmin; }; // return the max z double get_zmax() const { return _zmax; }; // return type Type get_type() const { return get_static_type(); }; // Write the object data. ObjData write_data() const; // clone Surface* new_surface() const; // calculate crossing status CrossStat status(const VTrack& trv) const; CrossStat status(const ETrack& trv) const; }; } // end namespace trf #endif