9 #include "Pythia8/SigmaNewGaugeBosons.h"
24 void Sigma1ffbarZprimeWprime::setupProd(
Event& process,
int i1,
int i2,
25 int i3,
int i4,
int i5,
int i6) {
28 pRot[1] = process[i1].p();
29 pRot[2] = process[i2].p();
30 pRot[3] = process[i3].p();
31 pRot[4] = process[i4].p();
32 pRot[5] = process[i5].p();
33 pRot[6] = process[i6].p();
39 double thetaNow = acos(2. * rndmPtr->flat() - 1.);
40 double phiNow = 2. * M_PI * rndmPtr->flat();
41 for (
int i = 1; i <= 6; ++i) {
42 pRot[i].rot( thetaNow, phiNow);
43 if (pRot[i].pT2() < 1e-4 * pRot[i].pAbs2()) smallPT =
true;
48 for (
int i = 1; i < 6; ++i) {
49 for (
int j = i + 1; j <= 6; ++j) {
51 sqrt( (pRot[i].e() - pRot[i].pz()) * (pRot[j].e() + pRot[j].pz())
52 / pRot[i].pT2() ) * complex( pRot[i].px(), pRot[i].py() )
53 - sqrt( (pRot[i].e() + pRot[i].pz()) * (pRot[j].e() - pRot[j].pz())
54 / pRot[j].pT2() ) * complex( pRot[j].px(), pRot[j].py() );
55 hC[i][j] = conj( hA[i][j] );
57 hA[i][j] *= complex( 0., 1.);
58 hC[i][j] *= complex( 0., 1.);
60 hA[j][i] = - hA[i][j];
61 hC[j][i] = - hC[i][j];
71 complex Sigma1ffbarZprimeWprime::fGK(
int j1,
int j2,
int j3,
int j4,
74 return 4. * hA[j1][j3] * hC[j2][j6]
75 * ( hA[j1][j5] * hC[j1][j4] + hA[j3][j5] * hC[j3][j4] );
83 double Sigma1ffbarZprimeWprime::xiGK(
double tHnow,
double uHnow,
84 double s3now,
double s4now) {
86 return - 4. * s3now * s4now + tHnow * (3. * tHnow + 4. * uHnow)
87 + tHnow * tHnow * ( tHnow * uHnow / (s3now * s4now)
88 - 2. * (1. / s3now + 1./s4now) * (tHnow + uHnow)
89 + 2. * (s3now / s4now + s4now / s3now) );
97 double Sigma1ffbarZprimeWprime::xjGK(
double tHnow,
double uHnow,
98 double s3now,
double s4now) {
100 return 8. * pow2(s3now + s4now) - 8. * (s3now + s4now) * (tHnow + uHnow)
101 - 6. * tHnow * uHnow - 2. * tHnow * uHnow * ( tHnow * uHnow
102 / (s3now * s4now) - 2. * (1. / s3now + 1. / s4now) * (tHnow + uHnow)
103 + 2. * (s3now / s4now + s4now / s3now) );
116 void Sigma1ffbar2gmZZprime::initProc() {
119 gmZmode = settingsPtr->mode(
"Zprime:gmZmode");
122 mRes = particleDataPtr->m0(32);
123 GammaRes = particleDataPtr->mWidth(32);
125 GamMRat = GammaRes / mRes;
126 sin2tW = couplingsPtr->sin2thetaW();
127 cos2tW = 1. - sin2tW;
128 thetaWRat = 1. / (16. * sin2tW * cos2tW);
131 mZ = particleDataPtr->m0(23);
132 GammaZ = particleDataPtr->mWidth(23);
134 GamMRatZ = GammaZ / mZ;
137 for (
int i = 0; i < 20; ++i) afZp[i] = 0.;
138 for (
int i = 0; i < 20; ++i) vfZp[i] = 0.;
141 afZp[1] = settingsPtr->parm(
"Zprime:ad");
142 afZp[2] = settingsPtr->parm(
"Zprime:au");
143 afZp[11] = settingsPtr->parm(
"Zprime:ae");
144 afZp[12] = settingsPtr->parm(
"Zprime:anue");
145 vfZp[1] = settingsPtr->parm(
"Zprime:vd");
146 vfZp[2] = settingsPtr->parm(
"Zprime:vu");
147 vfZp[11] = settingsPtr->parm(
"Zprime:ve");
148 vfZp[12] = settingsPtr->parm(
"Zprime:vnue");
151 bool coupZp2gen4 = settingsPtr->flag(
"Zprime:coup2gen4");
153 maxZpGen = (coupZp2gen4) ? 8 : 6;
157 if (settingsPtr->flag(
"Zprime:universality")) {
158 for (
int i = 3; i <= maxZpGen; ++i) {
161 afZp[i+10] = afZp[i+8];
162 vfZp[i+10] = vfZp[i+8];
167 afZp[3] = settingsPtr->parm(
"Zprime:as");
168 afZp[4] = settingsPtr->parm(
"Zprime:ac");
169 afZp[5] = settingsPtr->parm(
"Zprime:ab");
170 afZp[6] = settingsPtr->parm(
"Zprime:at");
171 afZp[13] = settingsPtr->parm(
"Zprime:amu");
172 afZp[14] = settingsPtr->parm(
"Zprime:anumu");
173 afZp[15] = settingsPtr->parm(
"Zprime:atau");
174 afZp[16] = settingsPtr->parm(
"Zprime:anutau");
175 vfZp[3] = settingsPtr->parm(
"Zprime:vs");
176 vfZp[4] = settingsPtr->parm(
"Zprime:vc");
177 vfZp[5] = settingsPtr->parm(
"Zprime:vb");
178 vfZp[6] = settingsPtr->parm(
"Zprime:vt");
179 vfZp[13] = settingsPtr->parm(
"Zprime:vmu");
180 vfZp[14] = settingsPtr->parm(
"Zprime:vnumu");
181 vfZp[15] = settingsPtr->parm(
"Zprime:vtau");
182 vfZp[16] = settingsPtr->parm(
"Zprime:vnutau");
184 afZp[7] = settingsPtr->parm(
"Zprime:abPrime");
185 afZp[8] = settingsPtr->parm(
"Zprime:atPrime");
186 vfZp[7] = settingsPtr->parm(
"Zprime:vbPrime");
187 vfZp[8] = settingsPtr->parm(
"Zprime:vtPrime");
188 afZp[17] = settingsPtr->parm(
"Zprime:atauPrime");
189 afZp[18] = settingsPtr->parm(
"Zprime:anutauPrime");
190 vfZp[17] = settingsPtr->parm(
"Zprime:vtauPrime");
191 vfZp[18] = settingsPtr->parm(
"Zprime:vnutauPrime");
196 coupZpWW = settingsPtr->parm(
"Zprime:coup2WW");
197 anglesZpWW = settingsPtr->parm(
"Zprime:anglesWW");
200 particlePtr = particleDataPtr->particleDataEntryPtr(32);
208 void Sigma1ffbar2gmZZprime::sigmaKin() {
211 double colQ = 3. * (1. + alpS / M_PI);
221 double mf, mr, ps, kinFacA, kinFacV, ef, af, vf, apf, vpf,
222 ef2, efvf, vaf2, efvpf, vafvapf, vapf2, colf;
225 for (
int i = 0; i < particlePtr->sizeChannels(); ++i) {
226 onMode = particlePtr->channel(i).onMode();
227 if (onMode != 1 && onMode != 2)
continue;
228 idAbs = abs( particlePtr->channel(i).product(0) );
232 if ( (idAbs > 0 && idAbs <= maxZpGen)
233 || (idAbs > 10 && idAbs <= maxZpGen+10)
234 || (idAbs > 4000000 && idAbs <= 4000006)
235 || (idAbs > 4000010 && idAbs <= 4000016) ) {
236 int idAbs4 = (idAbs < 4000000) ? idAbs : idAbs - 4000000;
237 mf = particleDataPtr->m0(idAbs);
240 if (mH > 2. * mf + MASSMARGIN) {
242 ps = sqrtpos(1. - 4. * mr);
245 ef = couplingsPtr->ef(idAbs4);
246 af = couplingsPtr->af(idAbs4);
247 vf = couplingsPtr->vf(idAbs4);
253 kinFacV = ps * (1. + 2. * mr);
254 ef2 = ef * ef * kinFacV;
255 efvf = ef * vf * kinFacV;
256 vaf2 = vf * vf * kinFacV + af * af * kinFacA;
257 efvpf = ef * vpf * kinFacV;
258 vafvapf = vf * vpf * kinFacV + af * apf * kinFacA;
259 vapf2 = vpf * vpf * kinFacV + apf * apf * kinFacA;
262 colf = (idAbs4 < 9) ? colQ : 1.;
263 if ( (idAbs > 5 && idAbs < 9) || (idAbs > 17 && idAbs < 19)
265 colf *= particleDataPtr->resOpenFrac(idAbs, -idAbs);
268 gamSum += colf * ef2;
269 gamZSum += colf * efvf;
271 gamZpSum += colf * efvpf;
272 ZZpSum += colf * vafvapf;
273 ZpSum += colf * vapf2;
277 }
else if (idAbs == 24) {
278 mf = particleDataPtr->m0(idAbs);
279 if (mH > 2. * mf + MASSMARGIN) {
281 ps = sqrtpos(1. - 4. * mr);
282 ZpSum += pow2(coupZpWW * cos2tW) * pow3(ps)
283 * (1. + 20. * mr + 12. * mr*mr)
284 * particleDataPtr->resOpenFrac(24, -24);
290 double propZ = sH / ( pow2(sH - m2Z) + pow2(sH * GamMRatZ) );
291 double propZp = sH / ( pow2(sH - m2Res) + pow2(sH * GamMRat) );
292 gamNorm = 4. * M_PI * pow2(alpEM) / (3. * sH);
293 gamZNorm = gamNorm * 2. * thetaWRat * (sH - m2Z) * propZ;
294 ZNorm = gamNorm * pow2(thetaWRat) * sH * propZ;
295 gamZpNorm = gamNorm * 2. * thetaWRat * (sH - m2Res) * propZp;
296 ZZpNorm = gamNorm * 2. * pow2(thetaWRat) * ((sH - m2Z) * (sH - m2Res)
297 + sH * GamMRatZ * sH * GamMRat) * propZ * propZp;
298 ZpNorm = gamNorm * pow2(thetaWRat) * sH * propZp;
301 if (gmZmode == 1) {gamZNorm = 0; ZNorm = 0.; gamZpNorm = 0.;
302 ZZpNorm = 0.; ZpNorm = 0.;}
303 if (gmZmode == 2) {gamNorm = 0.; gamZNorm = 0.; gamZpNorm = 0.;
304 ZZpNorm = 0.; ZpNorm = 0.;}
305 if (gmZmode == 3) {gamNorm = 0.; gamZNorm = 0.; ZNorm = 0.;
306 gamZpNorm = 0.; ZZpNorm = 0.;}
307 if (gmZmode == 4) {gamZpNorm = 0.; ZZpNorm = 0.; ZpNorm = 0.;}
308 if (gmZmode == 5) {gamZNorm = 0.; ZNorm = 0.; ZZpNorm = 0.;}
309 if (gmZmode == 6) {gamNorm = 0.; gamZNorm = 0.; gamZpNorm = 0.;}
317 double Sigma1ffbar2gmZZprime::sigmaHat() {
320 int idAbs = abs(id1);
321 double ei = couplingsPtr->ef(idAbs);
322 double ai = couplingsPtr->af(idAbs);
323 double vi = couplingsPtr->vf(idAbs);
324 double api = afZp[idAbs];
325 double vpi = vfZp[idAbs];
326 double ei2 = ei * ei;
327 double eivi = ei * vi;
328 double vai2 = vi * vi + ai * ai;
329 double eivpi = ei * vpi;
330 double vaivapi = vi * vpi + ai * api;;
331 double vapi2 = vpi * vpi + api * api;
334 double sigma = ei2 * gamNorm * gamSum + eivi * gamZNorm * gamZSum
335 + vai2 * ZNorm * ZSum + eivpi * gamZpNorm * gamZpSum
336 + vaivapi * ZZpNorm * ZZpSum + vapi2 * ZpNorm * ZpSum;
339 if (idAbs < 9) sigma /= 3.;
348 void Sigma1ffbar2gmZZprime::setIdColAcol() {
351 setId( id1, id2, 32);
354 if (abs(id1) < 9) setColAcol( 1, 0, 0, 1, 0, 0);
355 else setColAcol( 0, 0, 0, 0, 0, 0);
356 if (id1 < 0) swapColAcol();
364 double Sigma1ffbar2gmZZprime::weightDecay(
Event& process,
int iResBeg,
370 int idInAbs = process[3].idAbs();
371 int idOutAbs = process[6].idAbs();
374 if (iResBeg == 5 && iResEnd == 5 && (idOutAbs <= maxZpGen
375 || (idOutAbs > 10 && idOutAbs <= maxZpGen+10) || idOutAbs > 4000000) ) {
378 double ei = couplingsPtr->ef(idInAbs);
379 double vi = couplingsPtr->vf(idInAbs);
380 double ai = couplingsPtr->af(idInAbs);
381 double vpi = vfZp[idInAbs];
382 double api = afZp[idInAbs];
383 int idOutAbs4 = (idOutAbs < 4000000) ? idOutAbs : idOutAbs - 4000000;
384 double ef = couplingsPtr->ef(idOutAbs4);
385 double vf = couplingsPtr->vf(idOutAbs4);
386 double af = couplingsPtr->af(idOutAbs4);
387 double vpf = vfZp[idOutAbs4];
388 double apf = afZp[idOutAbs4];
391 double mr1 = pow2(process[6].m()) / sH;
392 double mr2 = pow2(process[7].m()) / sH;
393 double ps = sqrtpos(pow2(1. - mr1 - mr2) - 4. * mr1 * mr2);
394 double mrAvg = 0.5 * (mr1 + mr2) - 0.25 * pow2(mr1 - mr2);
397 double coefTran = ei*ei * gamNorm * ef*ef + ei * vi * gamZNorm * ef * vf
398 + (vi*vi + ai*ai) * ZNorm * (vf*vf + ps*ps * af*af)
399 + ei * vpi * gamZpNorm * ef * vpf
400 + (vi * vpi + ai * api) * ZZpNorm * (vf * vpf + ps*ps * af * apf)
401 + (vpi*vpi + api*api) * ZpNorm * (vpf*vpf + ps*ps * apf*apf);
402 double coefLong = 4. * mrAvg * ( ei*ei * gamNorm * ef*ef
403 + ei * vi * gamZNorm * ef * vf + (vi*vi + ai*ai) * ZNorm * vf*vf
404 + ei * vpi * gamZpNorm * ef * vpf
405 + (vi * vpi + ai * api) * ZZpNorm * vf * vpf
406 + (vpi*vpi + api*api) * ZpNorm * vpf*vpf );
407 double coefAsym = ps * ( ei * ai * gamZNorm * ef * af
408 + 4. * vi * ai * ZNorm * vf * af + ei * api * gamZpNorm * ef * apf
409 + (vi * api + vpi * ai) * ZZpNorm * (vf * apf + vpf * af)
410 + 4. * vpi * api * ZpNorm * vpf * apf );
413 if (process[3].
id() * process[6].id() < 0) coefAsym = -coefAsym;
416 double cosThe = (process[3].p() - process[4].p())
417 * (process[7].p() - process[6].p()) / (sH * ps);
418 wt = coefTran * (1. + pow2(cosThe))
419 + coefLong * (1. - pow2(cosThe)) + 2. * coefAsym * cosThe;
420 wtMax = 2. * (coefTran + abs(coefAsym));
424 else if (iResBeg == 5 && iResEnd == 5 && idOutAbs == 24) {
425 double mr1 = pow2(process[6].m()) / sH;
426 double mr2 = pow2(process[7].m()) / sH;
427 double ps = sqrtpos(pow2(1. - mr1 -mr2) - 4. * mr1 * mr2);
428 double cCos2 = - (1./16.) * ps*ps * (1. - 2. * mr1 - 2. * mr2
429 + mr1*mr1 + mr2*mr2 + 10. * mr1 * mr2);
430 double cFlat = -cCos2 + 0.5 * (mr1 + mr2)
431 * (1. - 2. * mr1 - 2. * mr2 + pow2(mr1 - mr2));
434 double cosThe = (process[3].p() - process[4].p())
435 * (process[7].p() - process[6].p()) / (sH * ps);
436 wt = cFlat + cCos2 * cosThe*cosThe;
437 wtMax = cFlat + max(0., cCos2);
441 else if (iResBeg == 6 && iResEnd == 7 && idOutAbs == 24) {
445 int i1 = (process[3].id() < 0) ? 3 : 4;
447 int i3 = (process[8].id() > 0) ? 8 : 9;
449 int i5 = (process[10].id() > 0) ? 10 : 11;
451 if (process[6].
id() > 0) {swap(i3, i5); swap(i4, i6);}
454 if (rndmPtr->flat() > anglesZpWW) {
457 setupProd( process, i1, i2, i3, i4, i5, i6);
460 int iNeg = (process[6].id() < 0) ? 6 : 7;
461 int iPos = 13 - iNeg;
462 double tHres = (process[i1].p() - process[iNeg].p()).m2Calc();
463 double uHres = (process[i1].p() - process[iPos].p()).m2Calc();
464 double s3now = process[iNeg].m2();
465 double s4now = process[iPos].m2();
468 double fGK135 = norm(fGK( 1, 2, 3, 4, 5, 6) - fGK( 1, 2, 5, 6, 3, 4) );
469 double fGK253 = norm(fGK( 2, 1, 5, 6, 3, 4) - fGK( 2, 1, 3, 4, 5, 6) );
470 double xiT = xiGK( tHres, uHres, s3now, s4now);
471 double xiU = xiGK( uHres, tHres, s3now, s4now);
472 double xjTU = xjGK( tHres, uHres, s3now, s4now);
475 int idAbs = process[i1].idAbs();
476 double li = 0.5 * (vfZp[idAbs] + afZp[idAbs]);
477 double ri = 0.5 * (vfZp[idAbs] - afZp[idAbs]);
478 wt = li*li * fGK135 + ri*ri * fGK253;
479 wtMax = 4. * s3now * s4now * (li*li + ri*ri)
480 * (xiT + xiU - xjTU);
484 double p35 = 2. * process[i3].p() * process[i5].p();
485 double p46 = 2. * process[i4].p() * process[i6].p();
486 wt = 16. * p35 * p46;
492 else if (process[process[iResBeg].mother1()].idAbs() == 6)
493 return weightTopDecay( process, iResBeg, iResEnd);
511 void Sigma1ffbar2Wprime::initProc() {
514 mRes = particleDataPtr->m0(34);
515 GammaRes = particleDataPtr->mWidth(34);
517 GamMRat = GammaRes / mRes;
518 thetaWRat = 1. / (12. * couplingsPtr->sin2thetaW());
521 aqWp = settingsPtr->parm(
"Wprime:aq");
522 vqWp = settingsPtr->parm(
"Wprime:vq");
523 alWp = settingsPtr->parm(
"Wprime:al");
524 vlWp = settingsPtr->parm(
"Wprime:vl");
527 coupWpWZ = settingsPtr->parm(
"Wprime:coup2WZ");
528 anglesWpWZ = settingsPtr->parm(
"Wprime:anglesWZ");
531 particlePtr = particleDataPtr->particleDataEntryPtr(34);
539 void Sigma1ffbar2Wprime::sigmaKin() {
542 double sigBW = 12. * M_PI / ( pow2(sH - m2Res) + pow2(sH * GamMRat) );
543 double preFac = alpEM * thetaWRat * mH;
544 sigma0Pos = preFac * sigBW * particlePtr->resWidthOpen(34, mH);
545 sigma0Neg = preFac * sigBW * particlePtr->resWidthOpen(-34, mH);
553 double Sigma1ffbar2Wprime::sigmaHat() {
556 int idUp = (abs(id1)%2 == 0) ? id1 : id2;
557 double sigma = (idUp > 0) ? sigma0Pos : sigma0Neg;
558 if (abs(id1) < 7) sigma *= couplingsPtr->V2CKMid(abs(id1), abs(id2)) / 3.;
561 if (abs(id1) < 7) sigma *= 0.5 * (aqWp * aqWp + vqWp * vqWp);
562 else sigma *= 0.5 * (alWp * alWp + vlWp * vlWp);
573 void Sigma1ffbar2Wprime::setIdColAcol() {
576 int sign = 1 - 2 * (abs(id1)%2);
577 if (id1 < 0) sign = -sign;
578 setId( id1, id2, 34 * sign);
581 if (abs(id1) < 9) setColAcol( 1, 0, 0, 1, 0, 0);
582 else setColAcol( 0, 0, 0, 0, 0, 0);
583 if (id1 < 0) swapColAcol();
591 double Sigma1ffbar2Wprime::weightDecay(
Event& process,
int iResBeg,
597 int idInAbs = process[3].idAbs();
598 int idOutAbs = process[6].idAbs();
601 if (iResBeg == 5 && iResEnd == 5 &&
602 (idOutAbs < 7 || ( idOutAbs > 10 && idOutAbs < 17)) ) {
605 double ai = (idInAbs < 9) ? aqWp : alWp;
606 double vi = (idInAbs < 9) ? vqWp : vlWp;
607 double af = (idOutAbs < 9) ? aqWp : alWp;
608 double vf = (idOutAbs < 9) ? vqWp : vlWp;
611 double coefAsym = 8. * vi * ai * vf * af
612 / ((vi*vi + ai*ai) * (vf*vf + af*af));
615 if (process[3].
id() * process[6].id() < 0) coefAsym = -coefAsym;
618 double mr1 = pow2(process[6].m()) / sH;
619 double mr2 = pow2(process[7].m()) / sH;
620 double ps = sqrtpos(pow2(1. - mr1 - mr2) - 4. * mr1 * mr2);
623 double cosThe = (process[3].p() - process[4].p())
624 * (process[7].p() - process[6].p()) / (sH * ps);
625 wt = 1. + coefAsym * cosThe + cosThe * cosThe;
626 wtMax = 2. + abs(coefAsym);
630 else if (iResBeg == 5 && iResEnd == 5 && idOutAbs == 24) {
631 double mr1 = pow2(process[6].m()) / sH;
632 double mr2 = pow2(process[7].m()) / sH;
633 double ps = sqrtpos(pow2(1. - mr1 - mr2) - 4. * mr1 * mr2);
634 double cCos2 = - (1./16.) * ps*ps * (1. - 2. * mr1 - 2. * mr2
635 + mr1*mr1 + mr2*mr2 + 10. * mr1 * mr2);
636 double cFlat = -cCos2 + 0.5 * (mr1 + mr2)
637 * (1. - 2. * mr1 - 2. * mr2 + pow2(mr1 - mr2));
640 double cosThe = (process[3].p() - process[4].p())
641 * (process[7].p() - process[6].p()) / (sH * ps);
642 wt = cFlat + cCos2 * cosThe*cosThe;
643 wtMax = cFlat + max(0., cCos2);
647 else if (iResBeg == 6 && iResEnd == 7
648 && (idOutAbs == 24 || idOutAbs == 23)) {
652 int i1 = (process[3].id() < 0) ? 3 : 4;
654 int i3 = (process[8].id() > 0) ? 8 : 9;
656 int i5 = (process[10].id() > 0) ? 10 : 11;
658 if (process[6].
id() == 23) {swap(i3, i5); swap(i4, i6);}
661 if (rndmPtr->flat() > anglesWpWZ) {
664 setupProd( process, i1, i2, i3, i4, i5, i6);
667 int iW = (process[6].id() == 23) ? 7 : 6;
669 double tHres = (process[i1].p() - process[iW].p()).m2Calc();
670 double uHres = (process[i1].p() - process[iZ].p()).m2Calc();
671 double s3now = process[iW].m2();
672 double s4now = process[iZ].m2();
675 double fGK135 = norm(fGK( 1, 2, 3, 4, 5, 6) - fGK( 1, 2, 5, 6, 3, 4) );
676 double fGK136 = norm(fGK( 1, 2, 3, 4, 6, 5) - fGK( 1, 2, 6, 5, 3, 4) );
677 double xiT = xiGK( tHres, uHres, s3now, s4now);
678 double xiU = xiGK( uHres, tHres, s3now, s4now);
679 double xjTU = xjGK( tHres, uHres, s3now, s4now);
682 int idAbs = process[i5].idAbs();
683 double lfZ = couplingsPtr->lf(idAbs);
684 double rfZ = couplingsPtr->rf(idAbs);
685 wt = lfZ*lfZ * fGK135 + rfZ*rfZ * fGK136;
686 wtMax = 4. * s3now * s4now * (lfZ*lfZ + rfZ*rfZ)
687 * (xiT + xiU - xjTU);
691 double p35 = 2. * process[i3].p() * process[i5].p();
692 double p46 = 2. * process[i4].p() * process[i6].p();
693 wt = 16. * p35 * p46;
699 else if (process[process[iResBeg].mother1()].idAbs() == 6)
700 return weightTopDecay( process, iResBeg, iResEnd);
717 void Sigma1ffbar2Rhorizontal::initProc() {
720 mRes = particleDataPtr->m0(41);
721 GammaRes = particleDataPtr->mWidth(41);
723 GamMRat = GammaRes / mRes;
724 thetaWRat = 1. / (12. * couplingsPtr->sin2thetaW());
727 particlePtr = particleDataPtr->particleDataEntryPtr(41);
735 void Sigma1ffbar2Rhorizontal::sigmaKin() {
738 double sigBW = 12. * M_PI / ( pow2(sH - m2Res) + pow2(sH * GamMRat) );
739 double preFac = alpEM * thetaWRat * mH;
740 sigma0Pos = preFac * sigBW * particlePtr->resWidthOpen(41, mH);
741 sigma0Neg = preFac * sigBW * particlePtr->resWidthOpen(-41, mH);
749 double Sigma1ffbar2Rhorizontal::sigmaHat() {
752 if (id1 * id2 > 0 || abs(id1 + id2) != 2)
return 0.;
755 double sigma = (id1 + id2 > 0) ? sigma0Pos : sigma0Neg;
756 if (abs(id1) < 7) sigma /= 3.;
767 void Sigma1ffbar2Rhorizontal::setIdColAcol() {
770 id3 = (id1 +id2 > 0) ? 41 : -41;
771 setId( id1, id2, id3);
774 if (abs(id1) < 9) setColAcol( 1, 0, 0, 1, 0, 0);
775 else setColAcol( 0, 0, 0, 0, 0, 0);
776 if (id1 < 0) swapColAcol();