// VTrackGenerator.h #ifndef VTrackGenerator_H #define VTrackGenerator_H // Generates VTrack objects with parameters chosen randomly. // The track surface and the ranges for the parameters are // specified in the constructor. #include "SurfacePtr.h" #include "trfutil/RandomGenerator.h" #include "trfbase/TrackVector.h" namespace trf { class VTrack; class VTrackGenerator : public RandomGenerator { private: // attributes // min and max values for each parameter. TrackVector _min; TrackVector _max; // surface. SurfacePtr _psrf; private: // methods // Hide copy and assignment operators. VTrackGenerator& operator=(const VTrackGenerator& gen); // output stream void ostr(std::ostream& stream) const; public: // constructor VTrackGenerator(const Surface& srf, const TrackVector& min, const TrackVector& max); // Copy consructor. VTrackGenerator(const VTrackGenerator& rhs); // destructor ~VTrackGenerator(); // Return the surface. const Surface& get_surface() const { return *_psrf; }; // Generate a new track. User must delete. VTrack* new_track(); }; } // end namespace trf #endif