34 rhoParameter_(
pset.getUntrackedParameter<double>(
"RhoParameter", 1.004)) {
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();
71 unsigned int nmothers =
part.numberOfMothers();
74 size_t key =
part.motherRef(0).key();
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);
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);
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;
127 return (qed + zint + zonly) * sudakov_factor;