25 #include "CLHEP/Random/RandGaussQ.h"
26 #include "CLHEP/Units/GlobalSystemOfUnits.h"
27 #include "CLHEP/Units/GlobalPhysicalConstants.h"
29 #include "HepMC/SimpleVector.h"
34 readDB_ =
p.getParameter<
bool>(
"readDB");
36 fX0 =
p.getParameter<
double>(
"X0") * cm;
37 fY0 =
p.getParameter<
double>(
"Y0") * cm;
38 fZ0 =
p.getParameter<
double>(
"Z0") * cm;
39 fSigmaZ =
p.getParameter<
double>(
"SigmaZ") * cm;
40 fbetastar =
p.getParameter<
double>(
"BetaStar") * cm;
41 femittance =
p.getParameter<
double>(
"Emittance") * cm;
42 fTimeOffset =
p.getParameter<
double>(
"TimeOffset") * ns * c_light;
44 setBoost(
p.getParameter<
double>(
"Alpha") * radian,
p.getParameter<
double>(
"Phi") * radian);
46 throw cms::Exception(
"Configuration") <<
"Error in BetafuncEvtVtxGenerator: "
47 <<
"Illegal resolution in Z (SigmaZ is negative)";
51 beamToken_ = esConsumes<SimBeamSpotObjects, SimBeamSpotObjectsRcd, edm::Transition::BeginLuminosityBlock>();
80 double tmp_sigz = CLHEP::RandGaussQ::shoot(engine, 0.,
fSigmaZ);
85 tmp_sigx /=
sqrt(2.0);
86 X = CLHEP::RandGaussQ::shoot(engine, 0., tmp_sigx) +
fX0;
90 tmp_sigy /=
sqrt(2.0);
91 Y = CLHEP::RandGaussQ::shoot(engine, 0., tmp_sigy) +
fY0;
93 double tmp_sigt = CLHEP::RandGaussQ::shoot(engine, 0.,
fSigmaZ);
96 return HepMC::FourVector(
X,
Y,
Z,
T);
106 TMatrixD tmpboost(4, 4);
114 tmpboost(0, 0) = 1. /
cos(
phi);
124 tmpboost(2, 2) =
cos(
phi);
140 throw cms::Exception(
"LogicError") <<
"Error in BetafuncEvtVtxGenerator::sigmaZ: "
141 <<
"Illegal resolution in Z (negative)";