00001 #ifndef IOMC_BetafuncEvtVtxGenerator_H 00002 #define IOMC_BetafuncEvtVtxGenerator_H 00003 00004 // $Id: BetafuncEvtVtxGenerator.h,v 1.6 2008/04/04 21:38:24 yumiceva Exp $ 00005 /* 00006 ________________________________________________________________________ 00007 00008 BetafuncEvtVtxGenerator 00009 00010 Smear vertex according to the Beta function on the transverse plane 00011 and a Gaussian on the z axis. It allows the beam to have a crossing 00012 angle (dx/dz and dy/dz). 00013 00014 Based on GaussEvtVtxGenerator.h 00015 implemented by Francisco Yumiceva (yumiceva@fnal.gov) 00016 00017 FERMILAB 00018 2006 00019 ________________________________________________________________________ 00020 */ 00021 00022 #include "IOMC/EventVertexGenerators/interface/BaseEvtVtxGenerator.h" 00023 00024 00025 namespace CLHEP { 00026 class RandGaussQ; 00027 } 00028 00029 class BetafuncEvtVtxGenerator : public BaseEvtVtxGenerator 00030 { 00031 public: 00032 BetafuncEvtVtxGenerator(const edm::ParameterSet & p); 00033 virtual ~BetafuncEvtVtxGenerator(); 00034 00036 //virtual CLHEP::Hep3Vector * newVertex(); 00037 virtual HepMC::FourVector* newVertex() ; 00038 00039 virtual TMatrixD* GetInvLorentzBoost(); 00040 00041 00043 void sigmaZ(double s=1.0); 00044 00046 void X0(double m=0) { fX0=m; } 00048 void Y0(double m=0) { fY0=m; } 00050 void Z0(double m=0) { fZ0=m; } 00051 00053 void Phi(double m=0) { phi_=m; } 00055 void Alpha(double m=0) { alpha_=m; } 00056 00058 void betastar(double m=0) { fbetastar=m; } 00060 void emittance(double m=0) { femittance=m; } 00061 00063 double BetaFunction(double z, double z0); 00064 00065 private: 00067 BetafuncEvtVtxGenerator(const BetafuncEvtVtxGenerator &p); 00069 BetafuncEvtVtxGenerator& operator = (const BetafuncEvtVtxGenerator & rhs ); 00070 00071 private: 00072 00073 double alpha_, phi_; 00074 //TMatrixD boost_; 00075 00076 double fX0, fY0, fZ0; 00077 double fSigmaZ; 00078 //double fdxdz, fdydz; 00079 double fbetastar, femittance; 00080 double falpha; 00081 double fTimeOffset; 00082 00083 CLHEP::RandGaussQ* fRandom ; 00084 00085 }; 00086 00087 #endif