10 #include "Pythia8/SigmaSUSY.h"
21 double Sigma2SUSY::weightDecay(
Event& process,
int iResBeg,
int iResEnd) {
26 int idMother = process[process[iResBeg].mother1()].idAbs();
29 if (idMother == 25 || idMother == 35 || idMother == 36)
30 return weightHiggsDecay( process, iResBeg, iResEnd);
34 return weightTopDecay( process, iResBeg, iResEnd);
37 if ( settingsPtr->flag(
"SUSYResonance:3BodyMatrixElement")
38 && (idMother == 1000023 || idMother == 1000025 || idMother == 1000035) ) {
41 if (iResEnd - iResBeg != 2)
return(1.0);
44 int iFbar= iResBeg + 2;
45 int iT = process[iW1].mother1();
46 if( iT <= 0 )
return(1.0);
47 int idDau= process[iW1].idAbs();
50 if (idDau == 1000024 || idDau == 1000037 )
return(1.0);
51 if (idDau != 1000022 && idDau != 1000023 && idDau != 1000025
52 && idDau != 1000035 ) {
55 if( process[iF].idAbs() != process[iFbar].idAbs() )
return(1.0);
56 int idmo = -1;
int iddau = -1;
58 case 1000023: idmo = 2;
break;
59 case 1000025: idmo = 3;
break;
60 case 1000035: idmo = 4;
break;
63 case 1000022: iddau = 1;
break;
64 case 1000023: iddau = 2;
break;
65 case 1000025: iddau = 3;
break;
67 if( idmo<0 || iddau<0 )
return(1.0);
69 Sigma2qqbar2chi0chi0 localDecay(idmo,iddau,0);
70 localDecay.init(infoPtr, settingsPtr, particleDataPtr,NULL,NULL,
72 localDecay.initProc();
74 localDecay.id1 = process[iF].id();
75 localDecay.id2 = process[iFbar].id();
76 double xm3 = process[iT].m();
77 double xm4 = process[iW1].m();
80 localDecay.s3 = xm3*xm3;
81 localDecay.s4 = xm4*xm4;
82 localDecay.sH = (process[iF].p()+process[iFbar].p()).m2Calc();
83 localDecay.sH2 = pow2(localDecay.sH);
84 localDecay.tH = (process[iF].p()-process[iT].p()).m2Calc();
85 localDecay.uH = localDecay.s3+localDecay.s4-localDecay.tH-localDecay.sH;
86 localDecay.sigmaKin();
87 double wt = -localDecay.sigmaHat();
90 localDecay.sH = pow2(xm4-xm3);
91 localDecay.tH = 0.5*(localDecay.s3+localDecay.s4-localDecay.sH);
92 localDecay.uH = localDecay.tH;
93 localDecay.sigmaKin();
94 double wtmax = -localDecay.sigmaHat();
97 localDecay.tH = localDecay.s3;
98 localDecay.uH = localDecay.s3+localDecay.s4-localDecay.tH-localDecay.sH;
99 localDecay.sigmaKin();
100 wtmax += -localDecay.sigmaHat();
102 localDecay.uH = localDecay.s3;
103 localDecay.tH = localDecay.s3+localDecay.s4-localDecay.tH-localDecay.sH;
104 localDecay.sigmaKin();
105 wtmax += -localDecay.sigmaHat();
124 void Sigma2qqbar2chi0chi0::initProc() {
127 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
130 nameSave =
"q qbar' -> " + particleDataPtr->name(id3) +
" "
131 + particleDataPtr->name(id4);
134 openFracPair = particleDataPtr->resOpenFrac(id3, id4);
142 void Sigma2qqbar2chi0chi0::sigmaKin() {
145 sigma0 = M_PI /3.0/ sH2 / pow2(coupSUSYPtr->sin2W) * pow2(alpEM)
153 double sV= sH - pow2(coupSUSYPtr->mZpole);
154 double d = pow2(sV) + pow2(coupSUSYPtr->mZpole * coupSUSYPtr->wZpole);
155 propZ = complex( sV / d, coupSUSYPtr->mZpole * coupSUSYPtr->wZpole / d);
163 double Sigma2qqbar2chi0chi0::sigmaHat() {
171 if ((id1+id2) % 2 != 0) {
175 if(id1<0) swapTU =
true;
178 int idAbs1 = abs(id1);
179 int idAbs2 = abs(id2);
182 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
183 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
190 if( idAbs1 > 10 && idAbs1 < 17 ) {
191 LqqZloc = coupSUSYPtr->LllZ;
192 RqqZloc = coupSUSYPtr->RllZ;
195 LqqZloc = coupSUSYPtr->LqqZ;
196 RqqZloc = coupSUSYPtr->RqqZ;
200 if (idAbs1 == idAbs2) {
201 QuLL = LqqZloc[idAbs1-iAdd] * coupSUSYPtr->OLpp[id3chi][id4chi]
203 QtLL = LqqZloc[idAbs1-iAdd] * coupSUSYPtr->ORpp[id3chi][id4chi]
205 QuRR = RqqZloc[idAbs1-iAdd] * coupSUSYPtr->ORpp[id3chi][id4chi]
207 QtRR = RqqZloc[idAbs1-iAdd] * coupSUSYPtr->OLpp[id3chi][id4chi]
212 int ifl1 = (idAbs1+1-iAdd) / 2;
213 int ifl2 = (idAbs2+1-iAdd) / 2;
215 complex (*LsddXloc)[4][6];
216 complex (*RsddXloc)[4][6];
217 complex (*LsuuXloc)[4][6];
218 complex (*RsuuXloc)[4][6];
219 if( idAbs1 > 10 && idAbs1 < 17 ) {
220 LsddXloc = coupSUSYPtr->LsllX;
221 RsddXloc = coupSUSYPtr->RsllX;
222 LsuuXloc = coupSUSYPtr->LsvvX;
223 RsuuXloc = coupSUSYPtr->RsvvX;
225 LsddXloc = coupSUSYPtr->LsddX;
226 RsddXloc = coupSUSYPtr->RsddX;
227 LsuuXloc = coupSUSYPtr->LsuuX;
228 RsuuXloc = coupSUSYPtr->RsuuX;
232 for (
int ksq=1; ksq<=6; ksq++) {
237 idsq=((ksq+2)/3)*1000000 + 2*((ksq-1) % 3) + (idAbs1+1) % 2 + 1;
240 double msq2 = pow(particleDataPtr->m0(idsq),2);
241 double usq = uH - msq2;
242 double tsq = tH - msq2;
254 Lsqq1X3 = LsuuXloc[ksq][ifl1][id3chi];
255 Lsqq1X4 = LsuuXloc[ksq][ifl1][id4chi];
256 Lsqq2X3 = LsuuXloc[ksq][ifl2][id3chi];
257 Lsqq2X4 = LsuuXloc[ksq][ifl2][id4chi];
258 Rsqq1X3 = RsuuXloc[ksq][ifl1][id3chi];
259 Rsqq1X4 = RsuuXloc[ksq][ifl1][id4chi];
260 Rsqq2X3 = RsuuXloc[ksq][ifl2][id3chi];
261 Rsqq2X4 = RsuuXloc[ksq][ifl2][id4chi];
262 if (idAbs1 % 2 != 0) {
263 Lsqq1X3 = LsddXloc[ksq][ifl1][id3chi];
264 Lsqq1X4 = LsddXloc[ksq][ifl1][id4chi];
265 Lsqq2X3 = LsddXloc[ksq][ifl2][id3chi];
266 Lsqq2X4 = LsddXloc[ksq][ifl2][id4chi];
267 Rsqq1X3 = RsddXloc[ksq][ifl1][id3chi];
268 Rsqq1X4 = RsddXloc[ksq][ifl1][id4chi];
269 Rsqq2X3 = RsddXloc[ksq][ifl2][id3chi];
270 Rsqq2X4 = RsddXloc[ksq][ifl2][id4chi];
274 QuLL += conj(Lsqq1X4)*Lsqq2X3/usq;
275 QuRR += conj(Rsqq1X4)*Rsqq2X3/usq;
276 QuLR += conj(Lsqq1X4)*Rsqq2X3/usq;
277 QuRL += conj(Rsqq1X4)*Lsqq2X3/usq;
280 QtLL -= conj(Lsqq1X3)*Lsqq2X4/tsq;
281 QtRR -= conj(Rsqq1X3)*Rsqq2X4/tsq;
282 QtLR += conj(Lsqq1X3)*Rsqq2X4/tsq;
283 QtRL += conj(Rsqq1X3)*Lsqq2X4/tsq;
288 double fac = (1.0-coupSUSYPtr->sin2W);
289 if(abs(id3)==abs(id4)) fac *= sqrt(2.);
293 double facLR = uH*tH - s3*s4;
294 double facMS = m3*m4*sH;
298 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
299 + 2 * real(conj(QuLL) * QtLL) * facMS;
301 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
302 + 2 * real(conj(QuRR) * QtRR) * facMS;
304 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
305 + real(conj(QuRL) * QtRL) * facLR;
307 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
308 + real(conj(QuLR) * QtLR) * facLR;
310 double colorFactor = ( idAbs1 > 10 && idAbs1 < 17 ) ? 3.0 : 1.0;
313 double sigma = sigma0 * weight / pow2(fac) * colorFactor;
324 void Sigma2qqbar2chi0chi0::setIdColAcol() {
327 setId( id1, id2, id3, id4);
330 if (abs(id1) < 9) setColAcol( 1, 0, 0, 1, 0, 0, 0, 0);
331 else setColAcol( 0, 0, 0, 0, 0, 0, 0, 0);
332 if (id1 < 0) swapColAcol();
345 void Sigma2qqbar2charchi0::sigmaKin() {
349 sigma0 = M_PI / sH2 / 3.0 / pow2(coupSUSYPtr->sin2W) * pow2(alpEM) ;
350 sigma0 /= 2.0 * (1 - coupSUSYPtr->sin2W) ;
357 double sW = sH - pow2(coupSUSYPtr->mWpole);
358 double d = pow2(sW) + pow2(coupSUSYPtr->mWpole * coupSUSYPtr->wWpole);
359 propW = complex( sW / d, coupSUSYPtr->mWpole * coupSUSYPtr->wWpole / d);
367 double Sigma2qqbar2charchi0::sigmaHat() {
375 if (abs(id1) % 2 == abs(id2) % 2)
return 0.0;
376 int isPos = (id3chi > 0 ? 1 : 0);
377 if (id1 < 0 && id1 > -19 && abs(id1) % 2 == 1-isPos )
return 0.0;
378 else if (id1 > 0 && id1 < 19 && abs(id1) % 2 == isPos )
return 0.0;
381 int idAbs1 = abs(id1);
382 int iChar = abs(id3chi);
383 int iNeut = abs(id4chi);
385 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
386 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
390 complex (*LudWloc)[4];
391 complex (*LsddXloc)[4][6];
392 complex (*RsddXloc)[4][6];
393 complex (*LsuuXloc)[4][6];
394 complex (*RsuuXloc)[4][6];
395 complex (*LsduXloc)[4][3];
396 complex (*RsduXloc)[4][3];
397 complex (*LsudXloc)[4][3];
398 complex (*RsudXloc)[4][3];
399 if( idAbs1 > 10 && idAbs1 < 17 ) {
401 LudWloc = coupSUSYPtr->LlvW;
402 LsddXloc = coupSUSYPtr->LsllX;
403 RsddXloc = coupSUSYPtr->RsllX;
404 LsuuXloc = coupSUSYPtr->LsvvX;
405 RsuuXloc = coupSUSYPtr->RsvvX;
406 LsduXloc = coupSUSYPtr->LslvX;
407 RsduXloc = coupSUSYPtr->RslvX;
408 LsudXloc = coupSUSYPtr->LsvlX;
409 RsudXloc = coupSUSYPtr->RsvlX;
411 LudWloc = coupSUSYPtr->LudW;
412 LsddXloc = coupSUSYPtr->LsddX;
413 RsddXloc = coupSUSYPtr->RsddX;
414 LsuuXloc = coupSUSYPtr->LsuuX;
415 RsuuXloc = coupSUSYPtr->RsuuX;
416 LsduXloc = coupSUSYPtr->LsduX;
417 RsduXloc = coupSUSYPtr->RsduX;
418 LsudXloc = coupSUSYPtr->LsudX;
419 RsudXloc = coupSUSYPtr->RsudX;
424 int iGu = (abs(id1)-iAdd)/2;
425 int iGd = (abs(id2)+1-iAdd)/2;
426 if (idAbs1 % 2 != 0) {
428 iGu = (abs(id2)-iAdd)/2;
429 iGd = (abs(id1)+1-iAdd)/2;
433 QuLL = conj(LudWloc[iGu][iGd])
434 * conj(coupSUSYPtr->OL[iNeut][iChar])
436 QtLL = conj(LudWloc[iGu][iGd])
437 * conj(coupSUSYPtr->OR[iNeut][iChar])
441 for (
int jsq=1; jsq<=6; jsq++) {
443 int idsu=((jsq+2)/3)*1000000 + 2*((jsq-1) % 3) + 2 +iAdd;
444 int idsd=((jsq+2)/3)*1000000 + 2*((jsq-1) % 3) + 1 +iAdd;
445 double msd2 = pow(particleDataPtr->m0(idsd),2);
446 double msu2 = pow(particleDataPtr->m0(idsu),2);
447 double tsq = tH - msd2;
448 double usq = uH - msu2;
450 QuLL += conj(LsuuXloc[jsq][iGu][iNeut])
451 * conj(LsudXloc[jsq][iGd][iChar])/usq;
452 QuLR += conj(LsuuXloc[jsq][iGu][iNeut])
453 * conj(RsudXloc[jsq][iGd][iChar])/usq;
454 QuRR += conj(RsuuXloc[jsq][iGu][iNeut])
455 * conj(RsudXloc[jsq][iGd][iChar])/usq;
456 QuRL += conj(RsuuXloc[jsq][iGu][iNeut])
457 * conj(LsudXloc[jsq][iGd][iChar])/usq;
459 QtLL -= conj(LsduXloc[jsq][iGu][iChar])
460 * LsddXloc[jsq][iGd][iNeut]/tsq;
461 QtRR -= conj(RsduXloc[jsq][iGu][iChar])
462 * RsddXloc[jsq][iGd][iNeut]/tsq;
463 QtLR += conj(LsduXloc[jsq][iGu][iChar])
464 * RsddXloc[jsq][iGd][iNeut]/tsq;
465 QtRL += conj(RsduXloc[jsq][iGu][iChar])
466 * LsddXloc[jsq][iGd][iNeut]/tsq;
475 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
476 + 2 * real(conj(QuLL) * QtLL) * m3 * m4 * sH;
478 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
479 + 2 * real(conj(QuRR) * QtRR) * m3 * m4 * sH;
481 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
482 + real(conj(QuRL) * QtRL) * (uH * tH - s3 * s4);
484 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
485 + real(conj(QuLR) * QtLR) * (uH * tH - s3 * s4);
487 double colorFactor = ( idAbs1 > 10 && idAbs1 < 17 ) ? 3.0 : 1.0;
490 double sigma = sigma0 * weight * colorFactor;
506 void Sigma2qqbar2charchar::sigmaKin() {
509 sigma0 = M_PI / 3.0 / sH2 / pow2(coupSUSYPtr->sin2W) * pow2(alpEM) ;
516 double sV= sH - pow2(coupSUSYPtr->mZpole);
517 double d = pow2(sV) + pow2(coupSUSYPtr->mZpole * coupSUSYPtr->wZpole);
518 propZ = complex( sV / d, coupSUSYPtr->mZpole * coupSUSYPtr->wZpole / d);
526 double Sigma2qqbar2charchar::sigmaHat() {
529 if (id1*id2 >= 0)
return 0.0;
532 if ((id1+id2) % 2 != 0)
return 0.0;
537 swapTU = (id1 < 0 ?
true :
false);
540 int idAbs1 = abs(id1);
541 int idAbs2 = abs(id2);
542 int i3 = abs(id3chi);
543 int i4 = abs(id4chi);
546 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
547 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
551 complex (*LsduXloc)[4][3];
552 complex (*RsduXloc)[4][3];
553 complex (*LsudXloc)[4][3];
554 complex (*RsudXloc)[4][3];
557 if( idAbs1 > 10 && idAbs1 < 17 ) {
559 LqqZloc = coupSUSYPtr->LllZ;
560 RqqZloc = coupSUSYPtr->RllZ;
561 LsduXloc = coupSUSYPtr->LslvX;
562 RsduXloc = coupSUSYPtr->RslvX;
563 LsudXloc = coupSUSYPtr->LsvlX;
564 RsudXloc = coupSUSYPtr->RsvlX;
566 LqqZloc = coupSUSYPtr->LqqZ;
567 RqqZloc = coupSUSYPtr->RqqZ;
568 LsduXloc = coupSUSYPtr->LsduX;
569 RsduXloc = coupSUSYPtr->RsduX;
570 LsudXloc = coupSUSYPtr->LsudX;
571 RsudXloc = coupSUSYPtr->RsudX;
575 if (idAbs1 == idAbs2) {
577 QuLL = -LqqZloc[idAbs1-iShift]*conj(coupSUSYPtr->ORp[i3][i4]);
578 QtLL = -LqqZloc[idAbs1-iShift]*conj(coupSUSYPtr->OLp[i3][i4]);
579 QuRR = -RqqZloc[idAbs1-iShift]*conj(coupSUSYPtr->OLp[i3][i4]);
580 QtRR = -RqqZloc[idAbs1-iShift]*conj(coupSUSYPtr->ORp[i3][i4]);
582 QuLL *= propZ / 2.0 / (1.0-coupSUSYPtr->sin2W);
583 QtLL *= propZ / 2.0 / (1.0-coupSUSYPtr->sin2W);
584 QuRR *= propZ / 2.0 / (1.0-coupSUSYPtr->sin2W);
585 QtRR *= propZ / 2.0 / (1.0-coupSUSYPtr->sin2W);
591 double q = particleDataPtr->chargeType(idAbs1)/3.0;
592 QuLL += q * coupSUSYPtr->sin2W / sH;
593 QuRR += q * coupSUSYPtr->sin2W / sH;
594 QtLL += q * coupSUSYPtr->sin2W / sH;
595 QtRR += q * coupSUSYPtr->sin2W / sH;
600 int iG1 = (abs(id1)+1-iShift)/2;
601 int iG2 = (abs(id2)+1-iShift)/2;
604 for (
int ksq=1; ksq<=6; ksq++) {
611 int idsd = ((ksq+2)/3)*1000000 + 2*((ksq-1) % 3) + 1;
613 double msq = particleDataPtr->m0(idsd);
614 double ufac = 2.0 * (uH - pow2(msq));
617 QuLL += LsduXloc[ksq][iG2][i3]
618 * conj(LsduXloc[ksq][iG1][i4]) / ufac;
619 QuRR += RsduXloc[ksq][iG2][i3]
620 * conj(RsduXloc[ksq][iG1][i4]) / ufac;
621 QuLR += RsduXloc[ksq][iG2][i3]
622 * conj(LsduXloc[ksq][iG1][i4]) / ufac;
623 QuRL += LsduXloc[ksq][iG2][i3]
624 * conj(RsduXloc[ksq][iG1][i4]) / ufac;
630 int idsu = ((ksq+2)/3)*1000000 + 2*((ksq-1) % 3) + 2;
632 double msq = particleDataPtr->m0(idsu);
633 double tfac = 2.0 * (tH - pow2(msq));
636 QtLL -= LsudXloc[ksq][iG1][i3]
637 * conj(LsudXloc[ksq][iG2][i4]) / tfac;
638 QtRR -= RsudXloc[ksq][iG1][i3]
639 * conj(RsudXloc[ksq][iG2][i4]) / tfac;
640 QtLR += LsudXloc[ksq][iG1][i3]
641 * conj(RsudXloc[ksq][iG2][i4]) / tfac;
642 QtRL += RsudXloc[ksq][iG1][i3]
643 * conj(LsudXloc[ksq][iG2][i4]) / tfac;
652 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
653 + 2 * real(conj(QuLL) * QtLL) * m3 * m4 * sH;
655 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
656 + 2 * real(conj(QuRR) * QtRR) * m3 * m4 * sH;
658 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
659 + real(conj(QuRL) * QtRL) * (uH * tH - s3 * s4);
661 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
662 + real(conj(QuLR) * QtLR) * (uH * tH - s3 * s4);
664 double colorFactor = ( idAbs1 > 10 && idAbs1 < 17 ) ? 3.0 : 1.0;
667 double sigma = sigma0 * weight * colorFactor;
683 void Sigma2qg2chi0squark::initProc() {
686 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
690 nameSave =
"q g -> " + particleDataPtr->name(id3) +
" "
691 + particleDataPtr->name(id4) +
" + c.c. (q=u,c)";
694 nameSave =
"q g -> " + particleDataPtr->name(id3) +
" "
695 + particleDataPtr->name(id4) +
" + c.c. (q=d,s,b)";
699 openFracPair = particleDataPtr->resOpenFrac(id3, id4);
707 void Sigma2qg2chi0squark::sigmaKin() {
711 double nChi = 6.0 * coupSUSYPtr->sin2W * (1 - coupSUSYPtr->sin2W);
712 sigma0 = M_PI / sH2 / nChi * alpEM * alpS
727 double Sigma2qg2chi0squark::sigmaHat() {
731 if (id1 == 21 || id1 == 22) idq = id2;
742 int iGq = (abs(idq)+1)/2;
745 if (particleDataPtr->chargeType(idq) != particleDataPtr->chargeType(id4))
749 complex LsqqX, RsqqX;
751 LsqqX = coupSUSYPtr->LsuuX[id4sq][iGq][id3chi];
752 RsqqX = coupSUSYPtr->RsuuX[id4sq][iGq][id3chi];
755 LsqqX = coupSUSYPtr->LsddX[id4sq][iGq][id3chi];
756 RsqqX = coupSUSYPtr->RsddX[id4sq][iGq][id3chi];
762 fac1 = -ui/sH + 2.0 * ( uH*tH - s4*s3 )/sH/tj;
763 fac2 = ti/tj * ( (tH + s4)/tj + (ti - uj)/sH );
765 fac1 = -ti/sH + 2.0 * ( uH*tH - s4*s3 )/sH/uj;
766 fac2 = ui/uj * ( (uH + s4)/uj + (ui - tj)/sH );
775 weight += fac2 * norm(LsqqX) / 2.0;
777 weight += fac2 * norm(RsqqX) / 2.0;
779 weight += fac2 * norm(RsqqX) / 2.0 + fac1 * norm(RsqqX);
781 weight += fac2 * norm(LsqqX) / 2.0 + fac1 * norm(LsqqX);
783 double sigma = sigma0 * weight;
794 void Sigma2qg2chi0squark::setIdColAcol() {
797 setId( id1, id2, id3, (id1*id2 > 0 ? abs(id4) : -abs(id4)));
800 if (id1 != 21) setColAcol( 1, 0, 2, 1, 0, 0, 2, 0);
801 else setColAcol( 1, 2, 2, 0, 0, 0, 1, 0);
802 if (id1*id2 < 0) swapColAcol();
815 void Sigma2qg2charsquark::initProc() {
818 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
822 nameSave =
"q g -> " + particleDataPtr->name(id3) +
" "
823 + particleDataPtr->name(id4) +
" + c.c. (q=d,s,b)";
826 nameSave =
"q g -> " + particleDataPtr->name(id3) +
" "
827 + particleDataPtr->name(id4) +
" + c.c. (q=u,c)";
831 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
837 void Sigma2qg2charsquark::sigmaKin() {
841 double nChi = 12.0 * coupSUSYPtr->sin2W;
842 sigma0 = M_PI / sH2 / nChi * alpEM * alpS
857 double Sigma2qg2charsquark::sigmaHat() {
860 int idq = (id1 == 21) ? id2 : id1;
870 if (particleDataPtr->chargeType(idq) == particleDataPtr->chargeType(id4))
874 int iGq = (abs(idq)+1)/2;
877 complex LsqqX, RsqqX;
879 LsqqX = coupSUSYPtr->LsduX[id4sq][iGq][id3chi];
880 RsqqX = coupSUSYPtr->RsduX[id4sq][iGq][id3chi];
883 LsqqX = coupSUSYPtr->LsudX[id4sq][iGq][id3chi];
884 RsqqX = coupSUSYPtr->RsudX[id4sq][iGq][id3chi];
890 fac1 = -ui/sH + 2.0 * ( uH*tH - s4*s3 )/sH/tj;
891 fac2 = ti/tj * ( (tH + s4)/tj + (ti - uj)/sH );
893 fac1 = -ti/sH + 2.0 * ( uH*tH - s4*s3 )/sH/uj;
894 fac2 = ui/uj * ( (uH + s4)/uj + (ui - tj)/sH );
903 weight += fac2 * norm(LsqqX) / 2.0;
905 weight += fac2 * norm(RsqqX) / 2.0;
907 weight += fac2 * norm(RsqqX) / 2.0 + fac1 * norm(RsqqX);
909 weight += fac2 * norm(LsqqX) / 2.0 + fac1 * norm(LsqqX);
911 double sigma = sigma0 * weight;
914 return sigma * openFracPair;
922 void Sigma2qg2charsquark::setIdColAcol() {
925 if (id1 > 0 && id2 > 0) {
926 setId( id1, id2, id3Sav, id4Sav);
928 setId( id1, id2,-id3Sav,-id4Sav);
932 if (id1 != 21) setColAcol( 1, 0, 2, 1, 0, 0, 2, 0);
933 else setColAcol( 1, 2, 2, 0, 0, 0, 1, 0);
934 if (id1 < 0 || id2 < 0) swapColAcol();
947 void Sigma2qq2squarksquark::initProc() {
950 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
953 iGen3 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
954 iGen4 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
957 if (abs(id3Sav) % 2 == abs(id4Sav) % 2) isUD =
false;
961 nameSave =
"q q' -> "+particleDataPtr->name(abs(id3Sav))+
" "
962 +particleDataPtr->name(abs(id4Sav))+
" + c.c.";
965 nNeut = (coupSUSYPtr->isNMSSM ? 5 : 4);
968 m2Glu = pow2(particleDataPtr->m0(1000021));
969 m2Neut.resize(nNeut+1);
970 for (
int iNeut=1;iNeut<=nNeut;iNeut++) {
971 m2Neut[iNeut] = pow2(particleDataPtr->m0(coupSUSYPtr->idNeut(iNeut)));
974 m2Char[1] = pow2(particleDataPtr->m0(coupSUSYPtr->idChar(1)));
975 m2Char[2] = pow2(particleDataPtr->m0(coupSUSYPtr->idChar(2)));
978 tNeut.resize(nNeut+1);
979 uNeut.resize(nNeut+1);
984 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
987 onlyQCD = settingsPtr->flag(
"SUSY:qq2squarksquark:onlyQCD");
994 void Sigma2qq2squarksquark::sigmaKin() {
997 double xW = coupSUSYPtr->sin2W;
1000 double comFacHat = M_PI/sH2 * openFracPair;
1003 sigmaNeut = comFacHat * pow2(alpEM) / pow2(xW) / pow2(1-xW);
1004 sigmaGlu = comFacHat * 2.0 * pow2(alpS) / 9.0;
1006 sigmaChar = comFacHat * pow2(alpEM) / 4.0 / pow2(xW);
1007 sigmaCharNeut = comFacHat * pow2(alpEM) / 3.0 / pow2(xW) / (1-xW);
1008 sigmaCharGlu = comFacHat * 4.0 * alpEM * alpS / 9.0 / xW;
1012 sigmaCharNeut = 0.0;
1014 sigmaNeutGlu = comFacHat * 8.0 * alpEM * alpS / 9.0 / xW/(1-xW);
1023 double Sigma2qq2squarksquark::sigmaHat() {
1026 if (id1 * id2 < 0)
return 0.0;
1029 if (isUD && abs(id1) %2 == abs(id2) % 2)
return 0.0;
1030 if (!isUD && abs(id1) % 2 != abs(id2) % 2)
return 0.0;
1031 if (!isUD && abs(id1) % 2 != abs(id3Sav) % 2)
return 0.0;
1034 swapTU = (isUD && abs(id1) % 2 == 0);
1035 int idIn1A = (swapTU) ? abs(id2) : abs(id1);
1036 int idIn2A = (swapTU) ? abs(id1) : abs(id2);
1041 for (
int i=1; i<= nNeut; i++) {
1042 tNeut[i] = tH - m2Neut[i];
1043 uNeut[i] = uH - m2Neut[i];
1044 if (isUD && i <= 2) {
1045 tChar[i] = tH - m2Char[i];
1046 uChar[i] = uH - m2Char[i];
1051 int iGen1 = (abs(idIn1A)+1)/2;
1052 int iGen2 = (abs(idIn2A)+1)/2;
1061 sumInterference = 0.0;
1064 double facTU = uH*tH-s3*s4;
1070 for (
int k=1;k<=2;k++) {
1073 if (onlyQCD)
continue;
1075 for (
int l=1;l<=2;l++) {
1078 double facMS = sH*sqrt(m2Char[k]*m2Char[l]);
1084 * coupSUSYPtr->LsudX[iGen4][iGen2][k]
1085 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1086 * conj(coupSUSYPtr->LsudX[iGen4][iGen2][l])
1087 * coupSUSYPtr->LsduX[iGen3][iGen1][l];
1089 * coupSUSYPtr->RsudX[iGen4][iGen2][k]
1090 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1091 * conj(coupSUSYPtr->RsudX[iGen4][iGen2][l])
1092 * coupSUSYPtr->LsduX[iGen3][iGen1][l];
1094 * coupSUSYPtr->LsudX[iGen4][iGen2][k]
1095 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1096 * conj(coupSUSYPtr->LsudX[iGen4][iGen2][l])
1097 * coupSUSYPtr->RsduX[iGen3][iGen1][l];
1099 * coupSUSYPtr->RsudX[iGen4][iGen2][k]
1100 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1101 * conj(coupSUSYPtr->RsudX[iGen4][iGen2][l])
1102 * coupSUSYPtr->RsduX[iGen3][iGen1][l];
1105 sumCt += sigmaChar * real(Ckl[1][1] + Ckl[1][2] + Ckl[2][1]
1106 + Ckl[2][2]) / tChar[k] / tChar[l];
1115 for (
int k=1;k<=nNeut;k++) {
1116 for (
int l=1;l<=nNeut;l++) {
1119 double facMS = sH*sqrt(m2Neut[k]*m2Neut[l]);
1125 * conj(coupSUSYPtr->LsuuX[iGen4][iGen1][k])
1126 * conj(coupSUSYPtr->LsddX[iGen3][iGen2][k])
1127 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1128 * coupSUSYPtr->LsddX[iGen3][iGen2][l];
1130 * conj(coupSUSYPtr->LsuuX[iGen4][iGen1][k])
1131 * conj(coupSUSYPtr->RsddX[iGen3][iGen2][k])
1132 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1133 * coupSUSYPtr->RsddX[iGen3][iGen2][l];
1135 * conj(coupSUSYPtr->RsuuX[iGen4][iGen1][k])
1136 * conj(coupSUSYPtr->LsddX[iGen3][iGen2][k])
1137 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1138 * coupSUSYPtr->LsddX[iGen3][iGen2][l];
1140 * conj(coupSUSYPtr->RsuuX[iGen4][iGen1][k])
1141 * conj(coupSUSYPtr->RsddX[iGen3][iGen2][k])
1142 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1143 * coupSUSYPtr->RsddX[iGen3][iGen2][l];
1146 sumNu += sigmaNeut / uNeut[k] / uNeut[l]
1147 * real(Nkl[1][1] + Nkl[1][2] + Nkl[2][1] + Nkl[2][2]);
1157 Gij[1][1] = norm(coupSUSYPtr->LsuuG[iGen4][iGen1]
1158 * coupSUSYPtr->LsddG[iGen3][iGen2]);
1159 Gij[1][2] = norm(coupSUSYPtr->LsuuG[iGen4][iGen1]
1160 * coupSUSYPtr->RsddG[iGen3][iGen2]);
1161 Gij[2][1] = norm(coupSUSYPtr->RsuuG[iGen4][iGen1]
1162 * coupSUSYPtr->LsddG[iGen3][iGen2]);
1163 Gij[2][2] = norm(coupSUSYPtr->RsuuG[iGen4][iGen1]
1164 * coupSUSYPtr->RsddG[iGen3][iGen2]);
1165 Gij[1][1] *= sH*m2Glu;
1168 Gij[2][2] *= sH*m2Glu;
1170 sumGu += sigmaGlu * (Gij[1][1] + Gij[1][2] + Gij[2][1] + Gij[2][2])
1178 for (
int k=1;k<=2;k++) {
1179 for (
int l=1;l<=nNeut;l++) {
1183 CNkl[1][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1184 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1185 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1186 * coupSUSYPtr->LsddX[iGen3][iGen2][l]);
1187 CNkl[1][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1188 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1189 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1190 * coupSUSYPtr->RsddX[iGen3][iGen2][l]);
1191 CNkl[2][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1192 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1193 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1194 * coupSUSYPtr->LsddX[iGen3][iGen2][l]);
1195 CNkl[2][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1196 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1197 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1198 * coupSUSYPtr->RsddX[iGen3][iGen2][l]);
1199 CNkl[1][1] *= sH*sqrt(m2Char[k]*m2Neut[l]);
1200 CNkl[1][2] *= uH*tH-s3*s4;
1201 CNkl[2][1] *= uH*tH-s3*s4;
1202 CNkl[2][2] *= sH*sqrt(m2Char[k]*m2Neut[l]);
1204 sumInterference += sigmaCharNeut * (CNkl[1][1] + CNkl[1][2]
1205 + CNkl[2][1] + CNkl[2][2]) / tChar[k] / uNeut[l];
1210 for (
int k=1;k<=2;k++) {
1214 CGk[1][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1215 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1216 * conj(coupSUSYPtr->LsuuG[iGen4][iGen1])
1217 * conj(coupSUSYPtr->LsddG[iGen3][iGen2]));
1218 CGk[1][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1219 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1220 * conj(coupSUSYPtr->LsuuG[iGen4][iGen1])
1221 * conj(coupSUSYPtr->RsddG[iGen3][iGen2]));
1222 CGk[2][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1223 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1224 * conj(coupSUSYPtr->RsuuG[iGen4][iGen1])
1225 * conj(coupSUSYPtr->LsddG[iGen3][iGen2]));
1226 CGk[2][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1227 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1228 * conj(coupSUSYPtr->RsuuG[iGen4][iGen1])
1229 * conj(coupSUSYPtr->RsddG[iGen3][iGen2]));
1230 CGk[1][1] *= sH*sqrt(m2Glu*m2Char[k]);
1231 CGk[1][2] *= uH*tH-s3*s4;
1232 CGk[2][1] *= uH*tH-s3*s4;
1233 CGk[2][2] *= sH*sqrt(m2Glu*m2Char[k]);
1235 sumInterference += sigmaGlu * (CGk[1][1] + CGk[1][2] + CGk[2][1]
1236 + CGk[2][2]) / uGlu / tChar[k];
1247 for (
int k=1;k<=nNeut;k++) {
1248 for (
int l=1;l<=nNeut;l++) {
1251 double facMS = sH * particleDataPtr->m0(coupSUSYPtr->idNeut(k))
1252 * particleDataPtr->m0(coupSUSYPtr->idNeut(l));
1256 complex NTkl[3][3], NUkl[3][3], NTUkl[3][3];
1258 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1259 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1260 * coupSUSYPtr->getLsqqX(iGen4,idIn2A,l)
1261 * coupSUSYPtr->getLsqqX(iGen3,idIn1A,l);
1263 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1264 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1265 * coupSUSYPtr->getRsqqX(iGen4,idIn2A,l)
1266 * coupSUSYPtr->getLsqqX(iGen3,idIn1A,l);
1268 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1269 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1270 * coupSUSYPtr->getLsqqX(iGen4,idIn2A,l)
1271 * coupSUSYPtr->getRsqqX(iGen3,idIn1A,l);
1273 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1274 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1275 * coupSUSYPtr->getRsqqX(iGen4,idIn2A,l)
1276 * coupSUSYPtr->getRsqqX(iGen3,idIn1A,l);
1278 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1279 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1280 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1281 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l);
1283 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1284 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1285 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1286 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l);
1288 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1289 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1290 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1291 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l);
1293 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1294 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1295 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1296 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l);
1298 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1299 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1300 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1301 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l) );
1303 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1304 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1305 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1306 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l) );
1308 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1309 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1310 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1311 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l) );
1313 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1314 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1315 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1316 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l) );
1319 sumNt += sigmaNeut / tNeut[k] / tNeut[l]
1320 * real(NTkl[1][1] + NTkl[1][2] + NTkl[2][1] + NTkl[2][2]);
1321 sumNu += sigmaNeut / uNeut[k] / uNeut[l]
1322 * real(NUkl[1][1] + NUkl[1][2] + NUkl[2][1] + NUkl[2][2]);
1323 sumInterference += 2.0 / 3.0 * sigmaNeut
1324 * real(NTUkl[1][1] + NTUkl[1][2] + NTUkl[2][1] + NTUkl[2][2])
1325 / tNeut[k] / uNeut[l];
1331 double facMS = sH * particleDataPtr->m0(coupSUSYPtr->idNeut(k))
1332 * particleDataPtr->m0(1000021);
1336 complex NGA[3][3], NGB[3][3];
1338 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1339 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1340 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1341 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1343 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1344 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1345 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1346 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1348 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1349 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1350 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1351 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1353 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1354 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1355 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1356 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1358 * real( conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1359 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1360 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A))
1361 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A)) );
1363 * real( conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1364 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1365 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A))
1366 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A)) );
1368 * real( conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1369 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1370 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A))
1371 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A)) );
1373 * real( conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1374 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1375 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A))
1376 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A)) );
1379 sumInterference += sigmaNeutGlu *
1380 ( real(NGA[1][1] + NGA[1][2] + NGA[2][1] + NGA[2][2])
1382 + real(NGB[1][1] + NGB[1][2] + NGB[2][1] + NGB[2][2])
1383 / uNeut[k] / tGlu );
1389 double facMS = sH * m2Glu;
1393 complex GT[3][3], GU[3][3], GTU[3][3];
1395 * norm(coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1396 * coupSUSYPtr->getLsqqG(iGen3,idIn1A));
1398 * norm(coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1399 * coupSUSYPtr->getLsqqG(iGen3,idIn1A));
1401 * norm(coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1402 * coupSUSYPtr->getRsqqG(iGen3,idIn1A));
1404 * norm(coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1405 * coupSUSYPtr->getRsqqG(iGen3,idIn1A));
1407 * norm(coupSUSYPtr->getLsqqG(iGen3,idIn2A)
1408 * coupSUSYPtr->getLsqqG(iGen4,idIn1A));
1410 * norm(coupSUSYPtr->getLsqqG(iGen3,idIn2A)
1411 * coupSUSYPtr->getRsqqG(iGen4,idIn1A));
1413 * norm(coupSUSYPtr->getRsqqG(iGen3,idIn2A)
1414 * coupSUSYPtr->getLsqqG(iGen4,idIn1A));
1416 * norm(coupSUSYPtr->getRsqqG(iGen3,idIn2A)
1417 * coupSUSYPtr->getRsqqG(iGen4,idIn1A));
1420 * real(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1421 * coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1422 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1423 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1426 * real(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1427 * coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1428 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1429 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1432 * real(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1433 * coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1434 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1435 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1438 * real(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1439 * coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1440 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1441 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1444 sumGt += sigmaGlu * real(GT[1][1] + GT[1][2] + GT[2][1] + GT[2][2])
1446 sumGu += sigmaGlu * real(GU[1][1] + GU[1][2] + GU[2][1] + GU[2][2])
1448 sumInterference += - 2.0 / 3.0 * sigmaGlu
1449 * real(GTU[1][1] + GTU[1][2] + GTU[2][1] + GTU[2][2])
1455 double sigma = sumNt + sumNu + sumCt + sumCu + sumGt + sumGu
1459 if (id3Sav == id4Sav) sigma /= 2.0;
1470 void Sigma2qq2squarksquark::setIdColAcol() {
1473 if (id1 > 0 && id2 > 0) {
1474 setId( id1, id2, id3Sav, id4Sav);
1477 setId( id1, id2,-id3Sav,-id4Sav);
1481 swapTU = (isUD && abs(id1) % 2 == 0);
1487 double sumA = sumNt + sumCt + sumGu;
1488 double sumAB = sumNt + sumNu + sumCt + sumCu + sumGt + sumGu;
1489 if (swapTU) sumA = sumAB - sumA;
1490 setColAcol( 1, 0, 2, 0, 1, 0, 2, 0);
1492 if (rndmPtr->flat()*sumAB > sumA) setColAcol( 1, 0, 2, 0, 2, 0, 1, 0);
1495 if (id1 < 0 || id2 < 0) swapColAcol();
1508 void Sigma2qqbar2squarkantisquark::initProc() {
1511 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
1514 if (abs(id3Sav) % 2 == abs(id4Sav) % 2) isUD =
false;
1518 if(isUD && abs(id3Sav)%2 == 1){
1519 iGen3 = 3*(abs(id4Sav)/2000000) + (abs(id3Sav)%10+1)/2;
1520 iGen4 = 3*(abs(id3Sav)/2000000) + (abs(id4Sav)%10+1)/2;
1523 iGen3 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
1524 iGen4 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
1528 nameSave =
"q qbar' -> "+particleDataPtr->name(abs(id3Sav))+
" "+
1529 particleDataPtr->name(-abs(id4Sav));
1530 if (isUD && abs(id3Sav) != abs(id4Sav)) nameSave +=
" + c.c.";
1533 nNeut = (coupSUSYPtr->isNMSSM ? 5 : 4);
1536 m2Glu = pow2(particleDataPtr->m0(1000021));
1537 m2Neut.resize(nNeut+1);
1538 for (
int iNeut=1;iNeut<=nNeut;iNeut++)
1539 m2Neut[iNeut] = pow2(particleDataPtr->m0(coupSUSYPtr->idNeut(iNeut)));
1542 tNeut.resize(nNeut+1);
1543 uNeut.resize(nNeut+1);
1546 xW = coupSUSYPtr->sin2W;
1549 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
1552 onlyQCD = settingsPtr->flag(
"SUSY:qqbar2squarkantisquark:onlyQCD");
1559 void Sigma2qqbar2squarkantisquark::sigmaKin() {
1563 double sV= sH - pow2(coupSUSYPtr->mZpole);
1564 double d = pow2(sV) + pow2(coupSUSYPtr->mZpole * coupSUSYPtr->wZpole);
1565 propZW = complex( sV / d, coupSUSYPtr->mZpole * coupSUSYPtr->wZpole / d);
1567 double sV= sH - pow2(coupSUSYPtr->mWpole);
1568 double d = pow2(sV) + pow2(coupSUSYPtr->mWpole * coupSUSYPtr->wWpole);
1569 propZW = complex( sV / d, coupSUSYPtr->mWpole * coupSUSYPtr->wWpole / d);
1573 double comFacHat = M_PI/sH2 * openFracPair;
1575 sigmaEW = comFacHat * pow2(alpEM);
1576 sigmaGlu = comFacHat * 2.0 * pow2(alpS) / 9.0;
1577 sigmaEWG = comFacHat * 8.0 * alpEM * alpS / 9.0;
1585 double Sigma2qqbar2squarkantisquark::sigmaHat() {
1588 if (id1 * id2 > 0)
return 0.0;
1591 if (isUD && abs(id1) %2 == abs(id2) % 2)
return 0.0;
1592 if (!isUD && abs(id1) % 2 != abs(id2) % 2)
return 0.0;
1598 swapTU = (isUD && abs(id1) % 2 != 0);
1601 if (!isUD && id1 < 0) swapTU =
true;
1604 int idIn1A = (swapTU) ? abs(id2) : abs(id1);
1605 int idIn2A = (swapTU) ? abs(id1) : abs(id2);
1606 int iGen1 = (idIn1A+1)/2;
1607 int iGen2 = (idIn2A+1)/2;
1612 for (
int i=1; i<= nNeut; i++) {
1613 tNeut[i] = tH - m2Neut[i];
1614 uNeut[i] = uH - m2Neut[i];
1620 sumInterference = 0.0;
1623 double facTU = uH*tH-s3*s4;
1630 sumColS += sigmaEW / 16.0 / pow2(xW) / pow2(1.0-xW)
1631 * norm(conj(coupSUSYPtr->LudW[iGen1][iGen2])
1632 * coupSUSYPtr->LsusdW[iGen3][iGen4]) * facTU
1638 double facLR = m2Glu * sH;
1640 GT[1][1] = facTU * norm(conj(coupSUSYPtr->LsddG[iGen4][iGen2])
1641 *coupSUSYPtr->LsuuG[iGen3][iGen1]);
1642 GT[1][2] = facLR * norm(conj(coupSUSYPtr->RsddG[iGen4][iGen2])
1643 *coupSUSYPtr->LsuuG[iGen3][iGen1]);
1644 GT[2][1] = facLR * norm(conj(coupSUSYPtr->LsddG[iGen4][iGen2])
1645 *coupSUSYPtr->RsuuG[iGen3][iGen1]);
1646 GT[2][2] = facTU * norm(conj(coupSUSYPtr->RsddG[iGen4][iGen2])
1647 *coupSUSYPtr->RsuuG[iGen3][iGen1]);
1649 sumColS += sigmaGlu / pow2(tGlu)
1650 * (GT[1][1] + GT[1][2] + GT[2][1] + GT[2][2]);
1654 sumColS += sigmaEWG / 4.0 / xW / (1-xW)
1655 * real(conj(coupSUSYPtr->LsuuG[iGen3][iGen1])
1656 * coupSUSYPtr->LsddG[iGen4][iGen2]
1657 * conj(coupSUSYPtr->LudW[iGen1][iGen2])
1658 * coupSUSYPtr->LsusdW[iGen3][iGen4]) * facTU
1659 / tGlu * sqrt(norm(propZW));
1670 double eQ = (idIn1A % 2 == 0) ? 2./3. : 1./3. ;
1671 double eSq = (abs(id3Sav) % 2 == 0) ? 2./3. : 1./3. ;
1674 if (abs(id3Sav) == abs(id4Sav) && abs(id1) == abs(id2)) {
1676 sumColT += 2. * sigmaGlu * facTU / pow2(sH);
1683 double facLR = sH * m2Glu;
1684 GT[1][1] = facTU * norm(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1685 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A)));
1686 GT[1][2] = facLR * norm(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1687 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A)));
1688 GT[2][1] = facLR * norm(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1689 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A)));
1690 GT[2][2] = facTU * norm(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1691 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A)));
1693 sumColS += sigmaGlu / pow2(tGlu)
1694 * ( GT[1][1] + GT[1][2] + GT[2][1] + GT[2][2]);
1697 if (abs(id3Sav) == abs(id4Sav) && abs(id1) == abs(id2)) {
1699 GG11 = - facTU * 2./3.
1700 * real( conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A))
1701 * coupSUSYPtr->getLsqqG(iGen4,idIn2A));
1702 GG22 = - facTU * 2./3.
1703 * real( conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A))
1704 * coupSUSYPtr->getRsqqG(iGen4,idIn2A));
1706 sumInterference += sigmaGlu / sH / tGlu
1713 if (onlyQCD)
return sumColT+sumColS+sumInterference;
1716 if (abs(id3Sav) == abs(id4Sav) && abs(id1) == abs(id2)) {
1720 sumColS += 2. * pow2(eQ) * pow2(eSq) * sigmaEW * facTU / pow2(sH);
1723 double CsqZ = real(coupSUSYPtr->LsusuZ[iGen3][iGen4]
1724 + coupSUSYPtr->RsusuZ[iGen3][iGen4]);
1725 if (abs(id3Sav)%2 != 0) CsqZ = real(coupSUSYPtr->LsdsdZ[iGen3][iGen4]
1726 + coupSUSYPtr->RsdsdZ[iGen3][iGen4]);
1727 sumColS += eQ * eSq * sigmaEW * facTU / 2.0 / xW / (1.-xW)
1728 * sqrt(norm(propZW)) / sH * CsqZ
1729 * (coupSUSYPtr->LqqZ[idIn1A] + coupSUSYPtr->LqqZ[idIn2A]);
1733 double CsqG11 = real(conj(coupSUSYPtr->LsuuG[iGen3][iGen1])
1734 *coupSUSYPtr->LsuuG[iGen4][iGen2]);
1735 double CsqG22 = real(conj(coupSUSYPtr->RsuuG[iGen3][iGen1])
1736 *coupSUSYPtr->RsuuG[iGen4][iGen2]);
1737 if (id3Sav%2 != 0) {
1738 CsqG11 = real(conj(coupSUSYPtr->LsddG[iGen3][iGen1])
1739 *coupSUSYPtr->LsddG[iGen4][iGen2]);
1740 CsqG22 = real(conj(coupSUSYPtr->RsddG[iGen3][iGen1])
1741 *coupSUSYPtr->RsddG[iGen4][iGen2]);
1743 sumColS += eQ * eSq * sigmaEWG * facTU
1744 * (CsqG11 + CsqG22) / sH / tGlu;
1749 if (abs(id1) == abs(id2)) {
1750 double CsqZ = norm(coupSUSYPtr->LsusuZ[iGen3][iGen4]
1751 + coupSUSYPtr->RsusuZ[iGen3][iGen4]);
1752 if (abs(id3Sav)%2 != 0) CsqZ = norm(coupSUSYPtr->LsdsdZ[iGen3][iGen4]
1753 + coupSUSYPtr->RsdsdZ[iGen3][iGen4]);
1754 sumColS += sigmaEW * facTU / 16.0 / pow2(xW) / pow2(1.0-xW)
1755 * norm(propZW) * CsqZ * ( pow2(coupSUSYPtr->LqqZ[idIn1A])
1756 + pow2(coupSUSYPtr->RqqZ[idIn1A]) );
1760 double GZ11 = real(conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A))
1761 *coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1762 *(coupSUSYPtr->getLsqsqZ(id3Sav,id4Sav)
1763 +coupSUSYPtr->getRsqsqZ(id3Sav,id4Sav)))
1764 *coupSUSYPtr->LqqZ[idIn1A];
1765 double GZ22 = real(conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A))
1766 *coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1767 *(coupSUSYPtr->getLsqsqZ(id3Sav,id4Sav)
1768 +coupSUSYPtr->getRsqsqZ(id3Sav,id4Sav)))
1769 *coupSUSYPtr->RqqZ[idIn1A];
1770 sumColS += sigmaEWG * facTU / 4.0 / xW / (1.-xW)
1771 * ( GZ11 + GZ22 ) * sqrt(norm(propZW)) / tGlu;
1781 double sigma = sumColS + sumColT + sumInterference;
1792 void Sigma2qqbar2squarkantisquark::setIdColAcol() {
1796 if (isUD && ( (id1-1)%2 < 0 || (id2-1)%2 < 0 )) isCC =
true;
1799 id3 = (isCC) ? -id3Sav : id3Sav;
1800 id4 = (isCC) ? -id4Sav : id4Sav;
1803 setId( id1, id2, id3, id4);
1808 swapTU = (abs(id1) % 2 != 0);
1816 double R = rndmPtr->flat();
1817 double fracS = sumColS / (sumColS + sumColT) ;
1820 setColAcol( 1, 0, 0, 1, 2, 0, 0, 2);
1821 if (swapTU) setColAcol( 0, 1, 1, 0, 2, 0, 0, 2);
1825 setColAcol( 1, 0, 0, 2, 1, 0, 0, 2);
1826 if (swapTU) setColAcol( 0, 1, 2, 0, 2, 0, 0, 1);
1829 if (isCC) swapColAcol();
1842 void Sigma2gg2squarkantisquark::initProc() {
1845 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
1848 nameSave =
"g g -> "+particleDataPtr->name(abs(id3Sav))+
" "
1849 +particleDataPtr->name(-abs(id4Sav));
1852 m2Sq = pow2(particleDataPtr->m0(id3Sav));
1855 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
1863 void Sigma2gg2squarkantisquark::sigmaKin() {
1867 double s34Avg = 0.5 * (s3 + s4) - 0.25 * pow2(s3 - s4) / sH;
1868 double tHSq = -0.5 * (sH - tH + uH);
1869 double uHSq = -0.5 * (sH + tH - uH);
1874 double comFacHat = M_PI/sH2 * pow2(alpS) / 128.0
1875 * ( 24.0 * (1.0 - 2*tHSq*uHSq/sH2) - 8.0/3.0 ) * openFracPair;
1879 for (
int ha=-1;ha<=1;ha += 2) {
1880 for (
int hb=-1;hb<=1;hb += 2) {
1882 sigma += comFacHat / 4.0
1884 - 2.0 * sH*s34Avg/tHSq/uHSq
1885 * ( 1.0 - ha*hb - sH*s34Avg/tHSq/uHSq));
1895 void Sigma2gg2squarkantisquark::setIdColAcol() {
1898 setId( id1, id2, id3Sav, id4Sav);
1901 double R = rndmPtr->flat();
1902 if (R < 0.5) setColAcol( 1, 2, 2, 3, 1, 0, 0, 3);
1903 else setColAcol( 1, 2, 3, 1, 3, 0, 0, 2);
1916 void Sigma2qg2squarkgluino::initProc() {
1919 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
1923 nameSave =
"q g -> "+particleDataPtr->name(id3)+
" gluino";
1926 m2Glu = pow2(particleDataPtr->m0(1000021));
1927 m2Sq = pow2(particleDataPtr->m0(abs(id3)));
1930 openFracPair = particleDataPtr->resOpenFrac(id3, 1000021);
1938 void Sigma2qg2squarkgluino::sigmaKin() {
1941 comFacHat = (M_PI / sH2) * pow2(alpS) * 0.5 * openFracPair;
1944 double tGlu = m2Glu-tH;
1945 double uGlu = m2Glu-uH;
1946 double tSq = m2Sq-tH;
1947 double uSq = m2Sq-uH;
1950 sigmaA = 0.5*4./9.* tGlu/sH + (tGlu*sH+2.*m2Glu*tSq)/pow2(tGlu) -
1951 ( (sH-m2Sq+m2Glu)*(-tSq)-sH*m2Glu )/sH/(-tGlu)
1952 + 0.5*1./2.*( tSq*(tH+2.*uH+m2Glu)-tGlu*(sH-2.*tSq)
1953 + (-uGlu)*(tH+m2Glu+2.*m2Sq) )/2./tGlu/uSq;
1955 sigmaB = 4./9.*(-uGlu)*(uH+m2Sq)/pow2(uSq)
1956 + 1./18.* (sH*(uH+m2Glu) + 2.*(m2Sq-m2Glu)*uGlu)/sH/(-uSq)
1958 + 0.5*1./2.*(tSq*(tH+2.*uH+m2Glu)-tGlu*(sH-2.*tSq)
1959 + (-uGlu)*(tH+m2Glu+2.*m2Sq))/2./tGlu/uSq;
1965 double Sigma2qg2squarkgluino::sigmaHat() {
1968 int idQA = (id1 == 21) ? id2 : id1;
1969 int idSq = (abs(id3) == 10000021) ? id4 : id3;
1972 if(idQA%2 != idSq%2)
return 0.0;
1973 if(abs(idQA + idSq%10) < abs(idQA) + abs(idSq%10))
return 0.0;
1975 int idQ = (abs(idQA)+1)/2;
1976 idSq = 3 * (abs(id3) / 2000000) + (abs(id3) % 10 + 1)/2;
1979 if(abs(idQA) % 2 == 1)
1980 mixingFac = norm(coupSUSYPtr->LsddG[idSq][idQ])
1981 + norm(coupSUSYPtr->RsddG[idSq][idQ]);
1983 mixingFac = norm(coupSUSYPtr->LsuuG[idSq][idQ])
1984 + norm(coupSUSYPtr->RsuuG[idSq][idQ]);
1986 return mixingFac * comFacHat * (sigmaA + sigmaB);
1993 void Sigma2qg2squarkgluino::setIdColAcol() {
1995 int idQ = (id1 == 21) ? id2 : id1;
1998 setId( id1, id2, id3, id4);
2001 double R = rndmPtr->flat()*(sigmaA+sigmaB);
2003 setColAcol(1,0,2,1,3,0,2,3);
2004 if (R > sigmaA) setColAcol(1,0,2,3,2,0,1,3);
2006 setColAcol(2,1,1,0,3,0,2,3);
2007 if (R > sigmaB) setColAcol(2,3,1,0,2,0,1,3);
2009 if (idQ < 0) swapColAcol();
2012 if (id1 == 21) swapTU =
true;
2026 void Sigma2gg2gluinogluino::initProc() {
2029 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2032 openFracPair = particleDataPtr->resOpenFrac(1000021, 1000021);
2040 void Sigma2gg2gluinogluino::sigmaKin() {
2044 double s34Avg = 0.5 * (s3 + s4) - 0.25 * pow2(s3 - s4) / sH;
2045 double tHG = -0.5 * (sH - tH + uH);
2046 double uHG = -0.5 * (sH + tH - uH);
2047 double tHG2 = tHG * tHG;
2048 double uHG2 = uHG * uHG;
2051 sigTS = (tHG * uHG - 2. * s34Avg * (tHG + 2. * s34Avg)) / tHG2
2052 + (tHG * uHG + s34Avg * (uHG - tHG)) / (sH * tHG);
2053 sigUS = (tHG * uHG - 2. * s34Avg * (uHG + 2. * s34Avg)) / uHG2
2054 + (tHG * uHG + s34Avg * (tHG - uHG)) / (sH * uHG);
2055 sigTU = 2. * tHG * uHG / sH2 + s34Avg * (sH - 4. * s34Avg)
2057 sigSum = sigTS + sigUS + sigTU;
2060 sigma = (M_PI / sH2) * pow2(alpS) * (9./4.) * 0.5 * sigSum
2069 void Sigma2gg2gluinogluino::setIdColAcol() {
2072 setId( id1, id2, 1000021, 1000021);
2075 double sigRand = sigSum * rndmPtr->flat();
2076 if (sigRand < sigTS) setColAcol( 1, 2, 2, 3, 1, 4, 4, 3);
2077 else if (sigRand < sigTS + sigUS)
2078 setColAcol( 1, 2, 3, 1, 3, 4, 4, 2);
2079 else setColAcol( 1, 2, 3, 4, 1, 4, 3, 2);
2080 if (rndmPtr->flat() > 0.5) swapColAcol();
2094 void Sigma2qqbar2gluinogluino::initProc() {
2097 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2100 openFracPair = particleDataPtr->resOpenFrac(1000021, 1000021);
2108 void Sigma2qqbar2gluinogluino::sigmaKin() {
2113 tHG = -0.5 * (sH - tH + uH);
2114 uHG = -0.5 * (sH + tH - uH);
2117 s34Avg = 0.5 * (s3 + s4) - 0.25 * pow2(s3 - s4) / sH;
2121 sigS = 16./3. * (tHG2 + uHG2 + 2. * s34Avg * sH) / sH2;
2130 double Sigma2qqbar2gluinogluino::sigmaHat() {
2133 if (id1 * id2 > 0)
return 0.0;
2136 if ((id1+id2) % 2 != 0)
return 0.0;
2139 int iQA = (abs(id1)+1)/2;
2140 int iQB = (abs(id2)+1)/2;
2143 complex LsqqG[7][4];
2144 complex RsqqG[7][4];
2145 for (
int iSq=1; iSq<=6; ++iSq) {
2146 for (
int iQ=1; iQ<=3; ++iQ) {
2147 if (abs(id1) % 2 == 1) {
2148 LsqqG[iSq][iQ] = coupSUSYPtr->LsddG[iSq][iQ];
2149 RsqqG[iSq][iQ] = coupSUSYPtr->RsddG[iSq][iQ];
2152 LsqqG[iSq][iQ] = coupSUSYPtr->LsuuG[iSq][iQ];
2153 RsqqG[iSq][iQ] = coupSUSYPtr->RsuuG[iSq][iQ];
2160 vector<double> sigHel;
2161 for (
int iHel=0; iHel <4; ++iHel) sigHel.push_back(0.);
2164 if (abs(id1) == abs(id2)) {
2171 for (
int iSq=1; iSq<=6; ++iSq) {
2172 int idSq = ((iSq+2)/3)*1000000 + 2*((iSq-1)%3) + abs(id1-1) % 2 + 1;
2173 double mSq2 = pow2(particleDataPtr->m0(idSq));
2176 double tHsq = tHG + s34Avg - mSq2;
2177 double uHsq = uHG + s34Avg - mSq2;
2182 if ( abs(id1) == abs(id2) ) {
2183 double Qst1 = 16./3. * norm(LsqqG[iSq][iQA]) * (s34Avg * sH + tHG2);
2184 double Qsu1 = 16./3. * norm(LsqqG[iSq][iQA]) * (s34Avg * sH + uHG2);
2185 double Qst2 = 16./3. * norm(RsqqG[iSq][iQA]) * (s34Avg * sH + tHG2);
2186 double Qsu2 = 16./3. * norm(RsqqG[iSq][iQA]) * (s34Avg * sH + uHG2);
2187 double sigL = (Qst1 / tHsq + Qsu1 / uHsq) / sH;
2188 double sigR = (Qst2 / tHsq + Qsu2 / uHsq) / sH;
2194 for (
int jSq=1; jSq<=6; ++jSq) {
2195 int idSqJ = ((jSq+2)/3)*1000000 + 2*((jSq-1)%3) + abs(id1-1) % 2 + 1;
2196 double mSqJ2 = pow2(particleDataPtr->m0(idSqJ));
2199 double tHsqJ = tHG + s34Avg - mSqJ2;
2200 double uHsqJ = uHG + s34Avg - mSqJ2;
2202 double Q11 = real(LsqqG[iSq][iQA] * conj(LsqqG[iSq][iQB])
2203 * conj(LsqqG[jSq][iQA]) * LsqqG[jSq][iQB]);
2204 double Q12 = real(LsqqG[iSq][iQA] * conj(RsqqG[iSq][iQB])
2205 * conj(LsqqG[jSq][iQA]) * RsqqG[jSq][iQB]);
2206 double Q21 = real(RsqqG[iSq][iQA] * conj(LsqqG[iSq][iQB])
2207 * conj(RsqqG[jSq][iQA]) * LsqqG[jSq][iQB]);
2208 double Q22 = real(RsqqG[iSq][iQA] * conj(RsqqG[iSq][iQB])
2209 * conj(RsqqG[jSq][iQA]) * RsqqG[jSq][iQB]);
2211 double Qtt11 = 64./27. * Q11 * tHG2;
2212 double Qtt12 = 64./27. * Q12 * tHG2;
2213 double Qtt21 = 64./27. * Q21 * tHG2;
2214 double Qtt22 = 64./27. * Q22 * tHG2;
2216 double Quu11 = 64./27. * Q11 * uHG2;
2217 double Quu12 = 64./27. * Q12 * uHG2;
2218 double Quu21 = 64./27. * Q21 * uHG2;
2219 double Quu22 = 64./27. * Q22 * uHG2;
2221 double Qtu11 = 16./27. * Q11 * (s34Avg * sH);
2222 double Qtu12 = 16./27. * Q12 * (s34Avg * sH - tHG * uHG);
2223 double Qtu21 = 16./27. * Q21 * (s34Avg * sH - tHG * uHG);
2224 double Qtu22 = 16./27. * Q22 * (s34Avg * sH);
2227 sigHel[0] += Qtt11 / tHsq / tHsqJ
2228 + Quu11 / uHsq / uHsqJ
2229 + Qtu11 / tHsq / uHsqJ;
2230 sigHel[1] += Qtt22 / tHsq / tHsqJ
2231 + Quu22 / uHsq / uHsqJ
2232 + Qtu22 / tHsq / uHsqJ;
2233 sigHel[2] += Qtt12 / tHsq / tHsqJ
2234 + Quu12 / uHsq / uHsqJ
2235 + Qtu12 / tHsq / uHsqJ;
2236 sigHel[3] += Qtt21 / tHsq / tHsqJ
2237 + Quu21 / uHsq / uHsqJ
2238 + Qtu21 / tHsq / uHsqJ;
2245 double sigSum = sigHel[0] + sigHel[1] + sigHel[2] + sigHel[3];
2248 if ( sigSum <= 0. )
return 0.0;
2251 double sigma = (M_PI / 8. / sH2) * pow2(alpS) * sigSum * openFracPair;
2260 void Sigma2qqbar2gluinogluino::setIdColAcol() {
2263 setId( id1, id2, 1000021, 1000021);
2266 if (rndmPtr->flat() < 0.5) setColAcol( 1, 0, 0, 2, 1, 3, 3, 2);
2267 else setColAcol( 1, 0, 0, 2, 3, 2, 1, 3);
2268 if (id1 < 0) swapColAcol();
2281 void Sigma1qq2antisquark::initProc(){
2284 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2288 nameSave =
"q q' -> " + particleDataPtr->name(-idRes)+
" + c.c";
2289 codeSave = 2000 + 10*abs(idRes)/1000000 + abs(idRes)%10;
2296 void Sigma1qq2antisquark::sigmaKin() {
2299 if(!coupSUSYPtr->isUDD) {
2304 mRes = particleDataPtr->m0(abs(idRes));
2305 GammaRes = particleDataPtr->mWidth(abs(idRes));
2308 sigBW = sH * GammaRes/ ( pow2(sH - m2Res) + pow2(mRes * GammaRes) );
2309 sigBW *= 2.0/3.0/mRes;
2312 widthOut = GammaRes * particleDataPtr->resOpenFrac(id3);
2319 double Sigma1qq2antisquark::sigmaHat() {
2322 if (id1*id2 <= 0)
return 0.0;
2325 int iA = (abs(id1)+1)/2;
2326 int iB = (abs(id2)+1)/2;
2329 bool idown = (abs(idRes)%2 == 1) ?
true :
false;
2330 int iC = (abs(idRes)/1000000 == 2)
2331 ? (abs(idRes)%10+1)/2 + 3: (abs(idRes)%10+1)/2;
2334 if (abs(id1)%2 == 0 && abs(id2)%2 == 0)
return 0.0;
2335 if (abs(id1)%2 == 1 && abs(id2)%2 == 1 && idown)
return 0.0;
2336 if ((abs(id1) + abs(id2))%2 == 1 && !idown)
return 0.0;
2342 for(
int isq = 1; isq <=3; isq++){
2344 sigma += pow2(coupSUSYPtr->rvUDD[isq][iA][iB])
2345 * norm(coupSUSYPtr->Rusq[iC][isq+3]);
2351 iA = (abs(id2)+1)/2;
2352 iB = (abs(id1)+1)/2;
2354 for(
int isq = 1; isq <= 3; isq++){
2356 sigma += pow2(coupSUSYPtr->rvUDD[iA][iB][isq])
2357 * norm(coupSUSYPtr->Rdsq[iC][isq+3]);
2370 void Sigma1qq2antisquark::setIdColAcol() {
2373 if(id1 < 0 && id2 < 0 ) setId( id1, id2, idRes);
2374 else setId( id1, id2, -idRes);
2377 if (abs(id1) < 9) setColAcol( 1, 0, 2, 0, 0, 3);
2378 else setColAcol( 0, 0, 0, 0, 0, 0);
2379 if (id1 < 0) swapColAcol();
2394 void Sigma2qqbar2chi0gluino::initProc() {
2397 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2400 nameSave =
"q qbar' -> " + particleDataPtr->name(id3) +
" "
2401 + particleDataPtr->name(id4);
2404 openFracPair = particleDataPtr->resOpenFrac(id3, id4);
2412 void Sigma2qqbar2chi0gluino::sigmaKin() {
2415 sigma0 = M_PI * 4.0 / 9.0/ sH2 / coupSUSYPtr->sin2W * alpEM * alpS
2429 double Sigma2qqbar2chi0gluino::sigmaHat() {
2432 if (id1*id2 >= 0)
return 0.0;
2435 if ((id1+id2) % 2 != 0)
return 0.0;
2438 if (id1<0) swapTU =
true;
2441 int idAbs1 = abs(id1);
2442 int idAbs2 = abs(id2);
2445 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
2446 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
2449 int ifl1 = (idAbs1+1) / 2;
2450 int ifl2 = (idAbs2+1) / 2;
2452 complex (*LsddXloc)[4][6];
2453 complex (*RsddXloc)[4][6];
2454 complex (*LsuuXloc)[4][6];
2455 complex (*RsuuXloc)[4][6];
2456 LsddXloc = coupSUSYPtr->LsddX;
2457 RsddXloc = coupSUSYPtr->RsddX;
2458 LsuuXloc = coupSUSYPtr->LsuuX;
2459 RsuuXloc = coupSUSYPtr->RsuuX;
2462 for (
int ksq=1; ksq<=6; ksq++) {
2467 idsq=((ksq+2)/3)*1000000 + 2*((ksq-1) % 3) + (idAbs1+1) % 2 + 1;
2469 double msq2 = pow(particleDataPtr->m0(idsq),2);
2470 double usq = uH - msq2;
2471 double tsq = tH - msq2;
2484 Lsqq1X4 = LsuuXloc[ksq][ifl1][id4chi];
2485 Lsqq2X4 = LsuuXloc[ksq][ifl2][id4chi];
2486 Rsqq1X4 = RsuuXloc[ksq][ifl1][id4chi];
2487 Rsqq2X4 = RsuuXloc[ksq][ifl2][id4chi];
2489 Lsqq1G = coupSUSYPtr->LsuuG[ksq][ifl1];
2490 Rsqq1G = coupSUSYPtr->RsuuG[ksq][ifl1];
2491 Lsqq2G = coupSUSYPtr->LsuuG[ksq][ifl2];
2492 Rsqq2G = coupSUSYPtr->RsuuG[ksq][ifl2];
2494 if (idAbs1 % 2 != 0) {
2495 Lsqq1X4 = LsddXloc[ksq][ifl1][id4chi];
2496 Lsqq2X4 = LsddXloc[ksq][ifl2][id4chi];
2497 Rsqq1X4 = RsddXloc[ksq][ifl1][id4chi];
2498 Rsqq2X4 = RsddXloc[ksq][ifl2][id4chi];
2500 Lsqq1G = coupSUSYPtr->LsddG[ksq][ifl1];
2501 Rsqq1G = coupSUSYPtr->RsddG[ksq][ifl1];
2502 Lsqq2G = coupSUSYPtr->LsddG[ksq][ifl2];
2503 Rsqq2G = coupSUSYPtr->RsddG[ksq][ifl2];
2507 QuLL += conj(Lsqq1X4)*Lsqq2G/usq;
2508 QuRR += conj(Rsqq1X4)*Rsqq2G/usq;
2509 QuLR += conj(Lsqq1X4)*Rsqq2G/usq;
2510 QuRL += conj(Rsqq1X4)*Lsqq2G/usq;
2513 QtLL -= conj(Lsqq1G)*Lsqq2X4/tsq;
2514 QtRR -= conj(Rsqq1G)*Rsqq2X4/tsq;
2515 QtLR += conj(Lsqq1G)*Rsqq2X4/tsq;
2516 QtRL += conj(Rsqq1G)*Lsqq2X4/tsq;
2521 double fac = (1.0-coupSUSYPtr->sin2W);
2525 double facLR = uH*tH - s3*s4;
2526 double facMS = m3*m4*sH;
2530 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
2531 + 2 * real(conj(QuLL) * QtLL) * facMS;
2533 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
2534 + 2 * real(conj(QuRR) * QtRR) * facMS;
2536 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
2537 + real(conj(QuRL) * QtRL) * facLR;
2539 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
2540 + real(conj(QuLR) * QtLR) * facLR;
2543 double sigma = sigma0 * weight / fac;
2554 void Sigma2qqbar2chi0gluino::setIdColAcol() {
2557 setId( id1, id2, id3, id4);
2560 setColAcol( 1, 0, 0, 2, 1, 2, 0, 0);
2561 if (id1 < 0) swapColAcol();
2574 void Sigma2qqbar2chargluino::initProc() {
2577 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2580 nameSave =
"q qbar' -> " + particleDataPtr->name(id3) +
" "
2581 + particleDataPtr->name(id4);
2584 openFracPair = particleDataPtr->resOpenFrac(id3, id4);
2591 void Sigma2qqbar2chargluino::sigmaKin() {
2595 sigma0 = M_PI / sH2 * 4.0 / 9.0 / coupSUSYPtr->sin2W * alpEM * alpS ;
2596 sigma0 /= 2.0 * (1 - coupSUSYPtr->sin2W) ;
2609 double Sigma2qqbar2chargluino::sigmaHat() {
2612 if (id1*id2 >= 0)
return 0.0;
2615 if (abs(id1) % 2 == abs(id2) % 2)
return 0.0;
2616 int isPos = (id4chi > 0 ? 1 : 0);
2617 if (id1 < 0 && id1 > -19 && abs(id1) % 2 == 1-isPos )
return 0.0;
2618 else if (id1 > 0 && id1 < 19 && abs(id1) % 2 == isPos )
return 0.0;
2621 int idAbs1 = abs(id1);
2622 int iChar = abs(id4chi);
2624 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
2625 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
2632 complex (*LsduXloc)[4][3];
2633 complex (*RsduXloc)[4][3];
2634 complex (*LsudXloc)[4][3];
2635 complex (*RsudXloc)[4][3];
2637 LsduXloc = coupSUSYPtr->LsduX;
2638 RsduXloc = coupSUSYPtr->RsduX;
2639 LsudXloc = coupSUSYPtr->LsudX;
2640 RsudXloc = coupSUSYPtr->RsudX;
2644 int iGu = abs(id1)/2;
2645 int iGd = (abs(id2)+1)/2;
2646 if (idAbs1 % 2 != 0) {
2649 iGd = (abs(id1)+1)/2;
2653 for (
int jsq=1; jsq<=6; jsq++) {
2655 int idsu=((jsq+2)/3)*1000000 + 2*((jsq-1) % 3) + 2 ;
2656 int idsd=((jsq+2)/3)*1000000 + 2*((jsq-1) % 3) + 1 ;
2658 LsddGl = coupSUSYPtr->LsddG[jsq][iGd];
2659 RsddGl = coupSUSYPtr->RsddG[jsq][iGd];
2660 LsuuGl = coupSUSYPtr->LsuuG[jsq][iGu];
2661 RsuuGl = coupSUSYPtr->RsuuG[jsq][iGu];
2663 double msd2 = pow(particleDataPtr->m0(idsd),2);
2664 double msu2 = pow(particleDataPtr->m0(idsu),2);
2665 double tsq = tH - msd2;
2666 double usq = uH - msu2;
2668 QuLL += conj(LsuuGl) * conj(LsudXloc[jsq][iGd][iChar])/usq;
2669 QuLR += conj(LsuuGl) * conj(RsudXloc[jsq][iGd][iChar])/usq;
2670 QuRR += conj(RsuuGl) * conj(RsudXloc[jsq][iGd][iChar])/usq;
2671 QuRL += conj(RsuuGl) * conj(LsudXloc[jsq][iGd][iChar])/usq;
2673 QtLL -= conj(LsduXloc[jsq][iGu][iChar]) * LsddGl/tsq;
2674 QtRR -= conj(RsduXloc[jsq][iGu][iChar]) * RsddGl/tsq;
2675 QtLR += conj(LsduXloc[jsq][iGu][iChar]) * RsddGl/tsq;
2676 QtRL += conj(RsduXloc[jsq][iGu][iChar]) * LsddGl/tsq;
2685 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
2686 + 2 * real(conj(QuLL) * QtLL) * m3 * m4 * sH;
2688 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
2689 + 2 * real(conj(QuRR) * QtRR) * m3 * m4 * sH;
2691 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
2692 + real(conj(QuRL) * QtRL) * (uH * tH - s3 * s4);
2694 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
2695 + real(conj(QuLR) * QtLR) * (uH * tH - s3 * s4);
2698 double sigma = sigma0 * weight;
2707 void Sigma2qqbar2chargluino::setIdColAcol() {
2710 setId( id1, id2, id3, id4);
2713 setColAcol( 1, 0, 0, 2, 1, 2, 0, 0);
2714 if (id1 < 0) swapColAcol();
2727 void Sigma2qqbar2sleptonantislepton::initProc() {
2730 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2733 if (abs(id3Sav) % 2 == abs(id4Sav) % 2) isUD =
false;
2737 nameSave =
"q qbar' -> "+particleDataPtr->name(abs(id3Sav))+
" "+
2738 particleDataPtr->name(-abs(id4Sav));
2739 if (isUD) nameSave +=
" + c.c.";
2743 if(isUD && abs(id3Sav)%2 == 0) {
2745 iGen3 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
2746 iGen4 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
2749 iGen3 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
2750 iGen4 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
2754 nNeut = (coupSUSYPtr->isNMSSM ? 5 : 4);
2758 m2Neut.resize(nNeut+1);
2759 for (
int iNeut=1;iNeut<=nNeut;iNeut++)
2760 m2Neut[iNeut] = pow2(particleDataPtr->m0(coupSUSYPtr->idNeut(iNeut)));
2763 tNeut.resize(nNeut+1);
2764 uNeut.resize(nNeut+1);
2767 xW = coupSUSYPtr->sin2W;
2770 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
2778 void Sigma2qqbar2sleptonantislepton::sigmaKin() {
2782 double sV= sH - pow2(coupSUSYPtr->mZpole);
2783 double d = pow2(sV) + pow2(coupSUSYPtr->mZpole * coupSUSYPtr->wZpole);
2784 propZW = complex( sV / d, coupSUSYPtr->mZpole * coupSUSYPtr->wZpole / d);
2786 double sV= sH - pow2(coupSUSYPtr->mWpole);
2787 double d = pow2(sV) + pow2(coupSUSYPtr->mWpole * coupSUSYPtr->wWpole);
2788 propZW = complex( sV / d, coupSUSYPtr->mWpole * coupSUSYPtr->wWpole / d);
2792 double comFacHat = M_PI/sH2 * openFracPair;
2794 sigmaEW = comFacHat * pow2(alpEM);
2801 double Sigma2qqbar2sleptonantislepton::sigmaHat() {
2804 if (id1 * id2 > 0)
return 0.0;
2807 if (isUD && abs(id1) %2 == abs(id2) % 2)
return 0.0;
2808 if (!isUD && abs(id1) % 2 != abs(id2) % 2)
return 0.0;
2811 if ( (abs(id3)%2 == 0 && abs(id3) > 2000000)
2812 || (abs(id4)%2 == 0 && abs(id4) > 2000000) )
return 0.0;
2815 swapTU = (isUD && abs(id1) % 2 != 0);
2818 if (!isUD && id1 < 0) swapTU =
true;
2821 int idIn1A = (swapTU) ? abs(id2) : abs(id1);
2822 int idIn2A = (swapTU) ? abs(id1) : abs(id2);
2823 int iGen1 = (idIn1A+1)/2;
2824 int iGen2 = (idIn2A+1)/2;
2827 for (
int i=1; i<= nNeut; i++) {
2828 tNeut[i] = tH - m2Neut[i];
2829 uNeut[i] = uH - m2Neut[i];
2832 double eQ = (idIn1A % 2 == 0) ? 2./3. : -1./3. ;
2833 double eSl = (abs(id3Sav) % 2 == 0) ? 0. : -1. ;
2838 sumInterference = 0.0;
2841 double facTU = uH*tH-s3*s4;
2847 sumColS = sigmaEW / 32.0 / pow2(xW) / pow2(1.0-xW)
2848 * norm(conj(coupSUSYPtr->LudW[iGen1][iGen2])
2849 * coupSUSYPtr->LslsvW[iGen3][iGen4]) * facTU * norm(propZW);
2855 CslZ = norm(coupSUSYPtr->LslslZ[iGen3][iGen4]
2856 - coupSUSYPtr->RslslZ[iGen3][iGen4]);
2857 if (abs(id3Sav)%2 == 0)
2858 CslZ = norm(coupSUSYPtr->LsvsvZ[iGen3][iGen4]
2859 + coupSUSYPtr->RsvsvZ[iGen3][iGen4]);
2860 sumColS += sigmaEW * facTU / 16.0 / pow2(xW) / pow2(1.0-xW)
2861 * norm(propZW) * CslZ
2862 * ( pow2(coupSUSYPtr->LqqZ[idIn1A]) + pow2(coupSUSYPtr->RqqZ[idIn1A]) );
2866 if (abs(id1) == abs(id2)) {
2868 CslZ = real(coupSUSYPtr->LslslZ[iGen3][iGen4]
2869 + coupSUSYPtr->RslslZ[iGen3][iGen4]);
2870 if (abs(id3)%2 == 0)
2871 CslZ = real(coupSUSYPtr->LsvsvZ[iGen3][iGen4]
2872 + coupSUSYPtr->RsvsvZ[iGen3][iGen4]);
2874 if(abs(id3) == abs(id4)) {
2879 sumColS += (abs(CslZ) > 0.0) ? 2. * pow2(eQ) * pow2(eSl) * sigmaEW
2880 * facTU / pow2(sH) : 0.0;
2883 sumInterference += eQ * eSl * sigmaEW * facTU / 2.0 / xW / (1.-xW)
2884 * sqrt(norm(propZW)) / sH * CslZ
2885 * (coupSUSYPtr->LqqZ[idIn1A] + coupSUSYPtr->RqqZ[idIn1A]);
2891 double sigma = sumColS + sumColT + sumInterference;
2894 if (abs(id1) < 10) sigma /= 9.0;
2897 if (isUD) sigma *= 2.0;
2908 void Sigma2qqbar2sleptonantislepton::setIdColAcol() {
2913 iSl = (abs(id3)%2 == 0) ? abs(id3) : abs(id4);
2914 iSv = (abs(id3)%2 == 0) ? abs(id4) : abs(id3);
2915 if ((id1%2 + id2%2 ) > 0)
2916 setId( id1, id2, -iSl, iSv);
2918 setId( id1, id2, iSl, -iSv);
2921 setId( id1, id2, abs(id3), -abs(id4));
2923 setColAcol( 1, 0, 0, 1, 0, 0, 0, 0);
2924 if (id1 < 0 ) swapColAcol();