// BSurfZPlane.h #ifndef BSurfZPlane_H #define BSurfZPlane_H // ZPlane with rectangular boundaries in (x,y). #include "SurfZPlane.h" namespace trf { class BSurfZPlane : public SurfZPlane { public: // Return the type name. static TypeName get_type_name() { return "BSurfZPlane"; } // Return the creator. static ObjCreator get_creator(); // Return the type. static Type get_static_type() { return get_creator(); } private: // lower x-limit double _xmin; // upper x-limit double _xmax; // lower y-limit double _ymin; // upper y-limit double _ymax; // 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 (x,y)_track // This is used by both the public status methods. CrossStat status(const VTrack& trv, double dx, double dy) const; public: // constructor BSurfZPlane(double zpos, double xmin, double xmax, double ymin, double ymax); // destructor virtual ~BSurfZPlane() { }; // return the min x double get_xmin() const { return _xmin; }; // return the max x double get_xmax() const { return _xmax; }; // return the min y double get_ymin() const { return _ymin; }; // return the max y double get_ymax() const { return _ymax; }; // 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