// HitCylPhiZGenerator.h #ifndef HitCylPhiZGenerator_H #define HitCylPhiZGenerator_H // Generator for ClusCylPhiZ objects. #include "ptr/Ptr.h" #include "ptr/DeletePolicy.h" #include "trfbase/HitGenerator.h" #include "SurfCylinder.h" namespace trf { class HitCylPhiZGenerator : public HitGenerator { private: // attributes // the surface Ptr _psrf; // the mixing parameter stereo: phiz = phi + stereo*z; double _stereo; // Error (standard deviation) for the measurement. double _dphiz; private: // methods // hide assignment operator HitCylPhiZGenerator& operator=(const HitCylPhiZGenerator& rhs); // output stream void ostr(std::ostream& stream) const; public: // Constructor from cylinder radius, mixing and measurement sigma. HitCylPhiZGenerator(const SurfCylinder& srf, double stereo, double dphiz); // Constructor from above plus random number seed. HitCylPhiZGenerator(const SurfCylinder& srf, double stereo, double dphiz, long iseed); // Copy constructor. HitCylPhiZGenerator(const HitCylPhiZGenerator& rhs); // Destructor. ~HitCylPhiZGenerator(); // 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