00001 #ifndef FastSimulation_Event_PrimaryVertexGenerator_H 00002 #define FastSimulation_Event_PrimaryVertexGenerator_H 00003 00004 // Data Format Headers 00005 #include "DataFormats/Math/interface/Vector3D.h" 00006 #include "DataFormats/Math/interface/Point3D.h" 00007 #include "TMatrixD.h" 00008 00009 class RandomEngine; 00010 00013 class PrimaryVertexGenerator : public math::XYZVector { 00014 00015 public: 00017 PrimaryVertexGenerator(); 00018 PrimaryVertexGenerator(const RandomEngine* engine); 00019 00021 virtual ~PrimaryVertexGenerator(); 00022 00024 virtual void generate() = 0; 00025 00026 TMatrixD* boost() const; 00027 00029 inline const math::XYZPoint& beamSpot() const { return beamSpot_; } 00030 00031 protected: 00032 00033 void setBoost(TMatrixD*); 00034 00035 const RandomEngine* random; 00036 TMatrixD* boost_; 00037 math::XYZPoint beamSpot_; 00038 00039 }; 00040 00041 #endif // PrimaryVertexGenerator_H