34 rhoParameter_(pset.getUntrackedParameter<double>(
"RhoParameter", 1.004)) {
54 unsigned int gensize = genParticles->size();
56 std::unique_ptr<double>
weight(
new double);
62 for (
unsigned int i = 0;
i < gensize; ++
i) {
67 int id = part.
pdgId();
70 double Q = part.
mass();
75 unsigned int quark_id =
abs((*genParticles)[key].
pdgId());
76 if (quark_id > 0 && quark_id < 6) {
87 double pigaga = -0.010449239475366825 - 0.0023228196282246765 *
log(q2) - 0.0288 -
88 0.002980 * (
log(q2 / 8464.) + 0.006307 * (q2 / 8464. - 1.));
89 return (1. / 137.0359895) / (1. + pigaga);
95 double sin2eff = 0.232;
97 double vl = -0.5 + 2. * sin2eff;
103 double alphaW = 2.7e-3 *
pow(
log(Q * Q / 80.4 / 80.4), 2);
104 double alphaZ = 2.7e-3 *
pow(
log(Q * Q / MZ / MZ), 2);
105 double sudakov_factor = 1.;
106 if (quark_id % 2 == 1) {
108 vq = -0.5 - 2. * qq * sin2eff;
110 sudakov_factor = 1 + (-2.139 + 0.864) * alphaW - 0.385 * alphaZ;
113 vq = 0.5 - 2. * qq * sin2eff;
115 sudakov_factor = 1 + (-3.423 + 1.807) * alphaW - 0.557 * alphaZ;
119 double zcoupl =
sqrt(2.) * 1.166389e-5 * MZ * MZ / 4. /
M_PI;
120 double gll = zcoupl * MZ / 3. * (vl * vl + al * al);
121 double gdd = zcoupl * MZ / 3. * (vq * vq + aq * aq);
122 double denom = (Q * Q - MZ *
MZ) * (Q * Q - MZ * MZ) +
pow(Q, 4) * GZ * GZ / MZ /
MZ;
123 double qed =
M_PI * qq * qq * alfarn * alfarn / Q /
Q;
124 double zint = rho * 2 *
M_PI * zcoupl * alfarn * qq * vq * vl * (Q * Q - MZ *
MZ) / denom;
125 double zonly = rho * rho * 9. *
M_PI * gll * gdd / MZ / MZ * Q * Q /
denom;
127 return (qed + zint + zonly) * sudakov_factor;
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
int pdgId() const final
PDG identifier.
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
size_t numberOfMothers() const override
number of mothers
double sigma0_qqbarll(unsigned int quark_type, double Q, double rho)
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
void produce(edm::Event &, const edm::EventSetup &) override
#define DEFINE_FWK_MODULE(type)
double alphaQED(double q2)
Abs< T >::type abs(const T &t)
daughters::value_type motherRef(size_type i=0) const
reference to mother at given position
~WeakEffectsWeightProducer() override
edm::EDGetTokenT< reco::GenParticleCollection > genParticlesToken_
int status() const final
status word
Power< A, B >::type pow(const A &a, const B &b)
WeakEffectsWeightProducer(const edm::ParameterSet &pset)
double mass() const final
mass