CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/IOMC/EventVertexGenerators/interface/BetafuncEvtVtxGenerator.h

Go to the documentation of this file.
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