// HitCylPhiGenerator.h #ifndef HitCylPhiGenerator_H #define HitCylPhiGenerator_H // Generator for ClusCylPhi objects. #include "trfbase/HitGenerator.h" #include "BSurfCylinder.h" #include "ptr/Ptr.h" #include "ptr/DeletePolicy.h" namespace trf { class HitCylPhiGenerator : public HitGenerator { private: // attributes // the surface // Hold by pointer so user can pass a subclass. Ptr _psrf; // Error (standard deviation) for the measurement. double _dphi; private: // methods // hide assignment operator HitCylPhiGenerator& operator=(const HitCylPhiGenerator& rhs); // output stream void ostr(std::ostream& stream) const; public: // Constructor from cylinder and the measurement sigma. // The cylinder is cloned so user can pass subclass. HitCylPhiGenerator(const SurfCylinder& srf, double dphi); // Constructor from above plus random number seed. HitCylPhiGenerator(const SurfCylinder& srf, double dphi, long seed); // Copy constructor. HitCylPhiGenerator(const HitCylPhiGenerator& rhs); // Destructor. ~HitCylPhiGenerator(); // Return the surface. const Surface& get_surface() const { return *_psrf; }; // Generate a new cluster. // Caller must delete. // Return 0 for failure. Cluster* new_cluster(const VTrack& trv); }; } // end namespace trf #endif