// HitZPlane1Generator.h #ifndef HitZPlane1Generator_H #define HitZPlane1Generator_H // Generator for ClusZPlane1 objects. #include "trfbase/HitGenerator.h" #include "SurfZPlane.h" namespace trf { class HitZPlane1Generator : public HitGenerator { private: // attributes // the surface SurfZPlane _szp; // the x axis weight double _wx; // the y axis weight double _wy; // the error (standard deviation) for the measurement axy = wx*x + wy*y double _daxy; private: // methods // hide assignment operator HitZPlane1Generator& operator=(const HitZPlane1Generator& rhs); // output stream void ostr(std::ostream& stream) const; public: // Constructor from plane position, mixing and measurement sigma. HitZPlane1Generator(double zpos, double wx, double wy,double daxy); // Constructor from above plus random number seed. HitZPlane1Generator(double zpos, double wx, double wy, double daxy, long iseed); // Copy constructor. HitZPlane1Generator(const HitZPlane1Generator& rhs); // Destructor. ~HitZPlane1Generator(); // Return the surface. const Surface& get_surface() const { return _szp; }; // Generate a new cluster. // Caller must delete. // Return 0 for failure. Cluster* new_cluster(const VTrack& trv); }; } // end namespace trf #endif