// HitGenerator.h #ifndef HitGenerator_H #define HitGenerator_H // Abtract interface for class to generate a cluster from a VTrack. // The track is already at the the appropriate surface. Its position // is smeared to generate the hit. // // This class is used to generate simulated clusters which are used // to create hits. Note that it inherits from RandomGenerator and // the member _rand may be used to generate random numbers (e.g. // _rand.gauss(mean)). #include "trfutil/RandomGenerator.h" namespace trf { class Surface; class VTrack; class Cluster; class HitGenerator : public RandomGenerator { private: // Hide assignment. HitGenerator& operator=(const HitGenerator& rhs); public: // Constructor. HitGenerator(); // Constructor from seed. HitGenerator(long seed); // Copy constructor. HitGenerator(const HitGenerator& rhs); // Destructor. virtual ~HitGenerator(); // Return the surface to which track should be propagated. virtual const Surface& get_surface() const =0; // Generate a new cluster from a track. // Caller is responsible for deleting the cluster. // Zero is returned if cluster was not created (e.g. if track is // not at surface). virtual Cluster* new_cluster(const VTrack& trv) =0; }; } // end namespace trf #endif