// BSurfCylinder.h #ifndef BSurfCylinder_H #define BSurfCylinder_H // Cylinder with boundaries in z. // // ObjStream example: // // [ mysrf BSurfCylinder radius=30.0 zmin=-65. zmax=65. ] // #include "SurfCylinder.h" namespace trf { class BSurfCylinder : public SurfCylinder { public: // static methods // Return the type name. static TypeName get_type_name() { return "BSurfCylinder"; } // Return the creator. static ObjCreator get_creator(); // Return the type. static Type get_static_type() { return get_creator(); } private: // 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 z_track // This is used by both the public status methods. CrossStat status(const VTrack& trv, double dz) const; public: // constructor BSurfCylinder(double radius, double zmin, double zmax); // destructor virtual ~BSurfCylinder() { }; // return the min z double get_zmin() const { return _zmin; }; // return the max z double get_zmax() const { return _zmax; }; // Return the 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& tre) const; }; } // end namespace trf #endif