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 sigma0 = M_PI / sH2 / coupSUSYPtr->sin2W * alpEM * alpS
726 double Sigma2qg2chi0squark::sigmaHat() {
730 if (id1 == 21 || id1 == 22) idq = id2;
741 int iGq = (abs(idq)+1)/2;
744 if (particleDataPtr->chargeType(idq) != particleDataPtr->chargeType(id4))
748 complex LsqqX, RsqqX;
750 LsqqX = coupSUSYPtr->LsuuX[id4sq][iGq][id3chi];
751 RsqqX = coupSUSYPtr->RsuuX[id4sq][iGq][id3chi];
754 LsqqX = coupSUSYPtr->LsddX[id4sq][iGq][id3chi];
755 RsqqX = coupSUSYPtr->RsddX[id4sq][iGq][id3chi];
761 fac1 = -ui/sH + 2.0 * ( uH*tH - s4*s3 )/sH/tj;
762 fac2 = ti/tj * ( (tH + s4)/tj + (ti - uj)/sH );
764 fac1 = -ti/sH + 2.0 * ( uH*tH - s4*s3 )/sH/uj;
765 fac2 = ui/uj * ( (uH + s4)/uj + (ui - tj)/sH );
774 weight += fac2 * norm(LsqqX) / 2.0;
776 weight += fac2 * norm(RsqqX) / 2.0;
778 weight += fac2 * norm(RsqqX) / 2.0 + fac1 * norm(RsqqX);
780 weight += fac2 * norm(LsqqX) / 2.0 + fac1 * norm(LsqqX);
782 double sigma = sigma0 * weight;
783 if (abs(idq) < 9) sigma /= 3.;
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);
839 double Sigma2qg2charsquark::sigmaHat() {
842 int idq = (id1 == 21) ? id2 : id1;
852 if (particleDataPtr->chargeType(idq) == particleDataPtr->chargeType(id4))
856 int iGq = (abs(idq)+1)/2;
859 complex LsqqX, RsqqX;
861 LsqqX = coupSUSYPtr->LsduX[id4sq][iGq][id3chi];
862 RsqqX = coupSUSYPtr->RsduX[id4sq][iGq][id3chi];
865 LsqqX = coupSUSYPtr->LsduX[id4sq][iGq][id3chi];
866 RsqqX = coupSUSYPtr->RsduX[id4sq][iGq][id3chi];
872 fac1 = -ui/sH + 2.0 * ( uH*tH - s4*s3 )/sH/tj;
873 fac2 = ti/tj * ( (tH + s4)/tj + (ti - uj)/sH );
875 fac1 = -ti/sH + 2.0 * ( uH*tH - s4*s3 )/sH/uj;
876 fac2 = ui/uj * ( (uH + s4)/uj + (ui - tj)/sH );
885 weight += fac2 * norm(LsqqX) / 2.0;
887 weight += fac2 * norm(RsqqX) / 2.0;
889 weight += fac2 * norm(RsqqX) / 2.0 + fac1 * norm(RsqqX);
891 weight += fac2 * norm(LsqqX) / 2.0 + fac1 * norm(LsqqX);
893 double sigma = sigma0 * weight;
894 if (abs(idq) < 9) sigma /= 3.;
897 return sigma * openFracPair;
905 void Sigma2qg2charsquark::setIdColAcol() {
908 if (id1 > 0 && id2 > 0) {
909 setId( id1, id2, id3Sav, id4Sav);
911 setId( id1, id2,-id3Sav,-id4Sav);
915 if (id1 != 21) setColAcol( 1, 0, 2, 1, 0, 0, 2, 0);
916 else setColAcol( 1, 2, 2, 0, 0, 0, 1, 0);
917 if (id1 < 0 || id2 < 0) swapColAcol();
930 void Sigma2qq2squarksquark::initProc() {
933 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
936 iGen3 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
937 iGen4 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
940 if (abs(id3Sav) % 2 == abs(id4Sav) % 2) isUD =
false;
944 nameSave =
"q q' -> "+particleDataPtr->name(abs(id3Sav))+
" "
945 +particleDataPtr->name(abs(id4Sav))+
" + c.c.";
948 nNeut = (coupSUSYPtr->isNMSSM ? 5 : 4);
951 m2Glu = pow2(particleDataPtr->m0(1000021));
952 m2Neut.resize(nNeut+1);
953 for (
int iNeut=1;iNeut<=nNeut;iNeut++) {
954 m2Neut[iNeut] = pow2(particleDataPtr->m0(coupSUSYPtr->idNeut(iNeut)));
957 m2Char[1] = pow2(particleDataPtr->m0(coupSUSYPtr->idChar(1)));
958 m2Char[2] = pow2(particleDataPtr->m0(coupSUSYPtr->idChar(2)));
961 tNeut.resize(nNeut+1);
962 uNeut.resize(nNeut+1);
967 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
974 void Sigma2qq2squarksquark::sigmaKin() {
977 double xW = coupSUSYPtr->sin2W;
980 double comFacHat = M_PI/sH2 * openFracPair;
983 sigmaNeut = comFacHat * pow2(alpEM) / pow2(xW) / pow2(1-xW);
984 sigmaGlu = comFacHat * 2.0 * pow2(alpS) / 9.0;
986 sigmaChar = comFacHat * pow2(alpEM) / 4.0 / pow2(xW);
987 sigmaCharNeut = comFacHat * pow2(alpEM) / 3.0 / pow2(xW) / (1-xW);
988 sigmaCharGlu = comFacHat * 4.0 * alpEM * alpS / 9.0 / xW;
994 sigmaNeutGlu = comFacHat * 8.0 * alpEM * alpS / 9.0 / xW/(1-xW);
1003 double Sigma2qq2squarksquark::sigmaHat() {
1006 if (id1 * id2 < 0)
return 0.0;
1009 if (isUD && abs(id1) %2 == abs(id2) % 2)
return 0.0;
1010 if (!isUD && abs(id1) % 2 != abs(id2) % 2)
return 0.0;
1011 if (!isUD && abs(id1) % 2 != abs(id3Sav) % 2)
return 0.0;
1014 swapTU = (isUD && abs(id1) % 2 == 0);
1015 int idIn1A = (swapTU) ? abs(id2) : abs(id1);
1016 int idIn2A = (swapTU) ? abs(id1) : abs(id2);
1021 for (
int i=1; i<= nNeut; i++) {
1022 tNeut[i] = tH - m2Neut[i];
1023 uNeut[i] = uH - m2Neut[i];
1024 if (isUD && i <= 2) {
1025 tChar[i] = tH - m2Char[i];
1026 uChar[i] = uH - m2Char[i];
1031 int iGen1 = (abs(idIn1A)+1)/2;
1032 int iGen2 = (abs(idIn2A)+1)/2;
1041 sumInterference = 0.0;
1044 double facTU = uH*tH-s3*s4;
1050 for (
int k=1;k<=2;k++) {
1053 if (settingsPtr->flag(
"SUSY:qq2squarksquark:onlyQCD"))
continue;
1055 for (
int l=1;l<=2;l++) {
1058 double facMS = sH*sqrt(m2Char[k]*m2Char[l]);
1064 * coupSUSYPtr->LsudX[iGen4][iGen2][k]
1065 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1066 * conj(coupSUSYPtr->LsudX[iGen4][iGen2][l])
1067 * coupSUSYPtr->LsduX[iGen3][iGen1][l];
1069 * coupSUSYPtr->RsudX[iGen4][iGen2][k]
1070 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1071 * conj(coupSUSYPtr->RsudX[iGen4][iGen2][l])
1072 * coupSUSYPtr->LsduX[iGen3][iGen1][l];
1074 * coupSUSYPtr->LsudX[iGen4][iGen2][k]
1075 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1076 * conj(coupSUSYPtr->LsudX[iGen4][iGen2][l])
1077 * coupSUSYPtr->RsduX[iGen3][iGen1][l];
1079 * coupSUSYPtr->RsudX[iGen4][iGen2][k]
1080 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1081 * conj(coupSUSYPtr->RsudX[iGen4][iGen2][l])
1082 * coupSUSYPtr->RsduX[iGen3][iGen1][l];
1085 sumCt += sigmaChar * real(Ckl[1][1] + Ckl[1][2] + Ckl[2][1]
1086 + Ckl[2][2]) / tChar[k] / tChar[l];
1092 for (
int k=1;k<=nNeut;k++) {
1095 if (settingsPtr->flag(
"SUSY:qq2squarksquark:onlyQCD"))
continue;
1097 for (
int l=1;l<=nNeut;l++) {
1100 double facMS = sH*sqrt(m2Neut[k]*m2Neut[l]);
1106 * conj(coupSUSYPtr->LsuuX[iGen4][iGen1][k])
1107 * conj(coupSUSYPtr->LsddX[iGen3][iGen2][k])
1108 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1109 * coupSUSYPtr->LsddX[iGen3][iGen2][l];
1111 * conj(coupSUSYPtr->LsuuX[iGen4][iGen1][k])
1112 * conj(coupSUSYPtr->RsddX[iGen3][iGen2][k])
1113 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1114 * coupSUSYPtr->RsddX[iGen3][iGen2][l];
1116 * conj(coupSUSYPtr->RsuuX[iGen4][iGen1][k])
1117 * conj(coupSUSYPtr->LsddX[iGen3][iGen2][k])
1118 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1119 * coupSUSYPtr->LsddX[iGen3][iGen2][l];
1121 * conj(coupSUSYPtr->RsuuX[iGen4][iGen1][k])
1122 * conj(coupSUSYPtr->RsddX[iGen3][iGen2][k])
1123 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1124 * coupSUSYPtr->RsddX[iGen3][iGen2][l];
1127 sumNu += sigmaNeut / uNeut[k] / uNeut[l]
1128 * real(Nkl[1][1] + Nkl[1][2] + Nkl[2][1] + Nkl[2][2]);
1137 Gij[1][1] = norm(coupSUSYPtr->LsuuG[iGen4][iGen1]
1138 * coupSUSYPtr->LsddG[iGen3][iGen2]);
1139 Gij[1][2] = norm(coupSUSYPtr->LsuuG[iGen4][iGen1]
1140 * coupSUSYPtr->RsddG[iGen3][iGen2]);
1141 Gij[2][1] = norm(coupSUSYPtr->RsuuG[iGen4][iGen1]
1142 * coupSUSYPtr->LsddG[iGen3][iGen2]);
1143 Gij[2][2] = norm(coupSUSYPtr->RsuuG[iGen4][iGen1]
1144 * coupSUSYPtr->RsddG[iGen3][iGen2]);
1145 Gij[1][1] *= sH*m2Glu;
1148 Gij[2][2] *= sH*m2Glu;
1150 sumGu += sigmaGlu * (Gij[1][1] + Gij[1][2] + Gij[2][1] + Gij[2][2])
1154 for (
int k=1;k<=2;k++) {
1155 for (
int l=1;l<=nNeut;l++) {
1158 if (settingsPtr->flag(
"SUSY:qq2squarksquark:onlyQCD"))
continue;
1163 CNkl[1][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1164 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1165 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1166 * coupSUSYPtr->LsddX[iGen3][iGen2][l]);
1167 CNkl[1][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1168 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1169 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1170 * coupSUSYPtr->RsddX[iGen3][iGen2][l]);
1171 CNkl[2][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1172 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1173 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1174 * coupSUSYPtr->LsddX[iGen3][iGen2][l]);
1175 CNkl[2][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1176 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1177 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1178 * coupSUSYPtr->RsddX[iGen3][iGen2][l]);
1179 CNkl[1][1] *= sH*sqrt(m2Char[k]*m2Neut[l]);
1180 CNkl[1][2] *= uH*tH-s3*s4;
1181 CNkl[2][1] *= uH*tH-s3*s4;
1182 CNkl[2][2] *= sH*sqrt(m2Char[k]*m2Neut[l]);
1184 sumInterference += sigmaCharNeut * (CNkl[1][1] + CNkl[1][2]
1185 + CNkl[2][1] + CNkl[2][2]) / tChar[k] / uNeut[l];
1190 for (
int k=1;k<=2;k++) {
1193 if (settingsPtr->flag(
"SUSY:qq2squarksquark:onlyQCD"))
continue;
1198 CGk[1][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1199 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1200 * conj(coupSUSYPtr->LsuuG[iGen4][iGen1])
1201 * conj(coupSUSYPtr->LsddG[iGen3][iGen2]));
1202 CGk[1][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1203 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1204 * conj(coupSUSYPtr->LsuuG[iGen4][iGen1])
1205 * conj(coupSUSYPtr->RsddG[iGen3][iGen2]));
1206 CGk[2][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1207 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1208 * conj(coupSUSYPtr->RsuuG[iGen4][iGen1])
1209 * conj(coupSUSYPtr->LsddG[iGen3][iGen2]));
1210 CGk[2][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1211 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1212 * conj(coupSUSYPtr->RsuuG[iGen4][iGen1])
1213 * conj(coupSUSYPtr->RsddG[iGen3][iGen2]));
1214 CGk[1][1] *= sH*sqrt(m2Glu*m2Char[k]);
1215 CGk[1][2] *= uH*tH-s3*s4;
1216 CGk[2][1] *= uH*tH-s3*s4;
1217 CGk[2][2] *= sH*sqrt(m2Glu*m2Char[k]);
1219 sumInterference += sigmaGlu * (CGk[1][1] + CGk[1][2] + CGk[2][1]
1220 + CGk[2][2]) / uGlu / tChar[k];
1228 for (
int k=1;k<=nNeut;k++) {
1231 if (settingsPtr->flag(
"SUSY:qq2squarksquark:onlyQCD"))
continue;
1233 for (
int l=1;l<=nNeut;l++) {
1236 double facMS = sH * particleDataPtr->m0(coupSUSYPtr->idNeut(k))
1237 * particleDataPtr->m0(coupSUSYPtr->idNeut(l));
1241 complex NTkl[3][3], NUkl[3][3], NTUkl[3][3];
1243 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1244 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1245 * coupSUSYPtr->getLsqqX(iGen4,idIn2A,l)
1246 * coupSUSYPtr->getLsqqX(iGen3,idIn1A,l);
1248 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1249 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1250 * coupSUSYPtr->getRsqqX(iGen4,idIn2A,l)
1251 * coupSUSYPtr->getLsqqX(iGen3,idIn1A,l);
1253 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1254 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1255 * coupSUSYPtr->getLsqqX(iGen4,idIn2A,l)
1256 * coupSUSYPtr->getRsqqX(iGen3,idIn1A,l);
1258 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1259 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1260 * coupSUSYPtr->getRsqqX(iGen4,idIn2A,l)
1261 * coupSUSYPtr->getRsqqX(iGen3,idIn1A,l);
1263 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1264 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1265 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1266 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l);
1268 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1269 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1270 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1271 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l);
1273 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1274 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1275 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1276 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l);
1278 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1279 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1280 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1281 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l);
1283 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1284 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1285 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1286 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l) );
1288 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1289 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1290 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1291 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l) );
1293 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1294 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1295 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1296 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l) );
1298 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1299 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1300 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1301 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l) );
1304 sumNt += sigmaNeut / tNeut[k] / tNeut[l]
1305 * real(NTkl[1][1] + NTkl[1][2] + NTkl[2][1] + NTkl[2][2]);
1306 sumNu += sigmaNeut / uNeut[k] / uNeut[l]
1307 * real(NUkl[1][1] + NUkl[1][2] + NUkl[2][1] + NUkl[2][2]);
1308 sumInterference += 2.0 / 3.0 * sigmaNeut
1309 * real(NTUkl[1][1] + NTUkl[1][2] + NTUkl[2][1] + NTUkl[2][2])
1310 / tNeut[k] / uNeut[l];
1316 double facMS = sH * particleDataPtr->m0(coupSUSYPtr->idNeut(k))
1317 * particleDataPtr->m0(1000021);
1321 complex NGA[3][3], NGB[3][3];
1323 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1324 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1325 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1326 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1328 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1329 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1330 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1331 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1333 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1334 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1335 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1336 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1338 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1339 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1340 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1341 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1343 * real( conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1344 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1345 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A))
1346 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A)) );
1348 * real( conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1349 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1350 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A))
1351 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A)) );
1353 * real( conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1354 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1355 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A))
1356 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A)) );
1358 * real( conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1359 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1360 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A))
1361 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A)) );
1364 sumInterference += sigmaNeutGlu *
1365 ( real(NGA[1][1] + NGA[1][2] + NGA[2][1] + NGA[2][2])
1367 + real(NGB[1][1] + NGB[1][2] + NGB[2][1] + NGB[2][2])
1368 / uNeut[k] / tGlu );
1374 double facMS = sH * m2Glu;
1378 complex GT[3][3], GU[3][3], GTU[3][3];
1380 * norm(coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1381 * coupSUSYPtr->getLsqqG(iGen3,idIn1A));
1383 * norm(coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1384 * coupSUSYPtr->getLsqqG(iGen3,idIn1A));
1386 * norm(coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1387 * coupSUSYPtr->getRsqqG(iGen3,idIn1A));
1389 * norm(coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1390 * coupSUSYPtr->getRsqqG(iGen3,idIn1A));
1392 * norm(coupSUSYPtr->getLsqqG(iGen3,idIn2A)
1393 * coupSUSYPtr->getLsqqG(iGen4,idIn1A));
1395 * norm(coupSUSYPtr->getLsqqG(iGen3,idIn2A)
1396 * coupSUSYPtr->getRsqqG(iGen4,idIn1A));
1398 * norm(coupSUSYPtr->getRsqqG(iGen3,idIn2A)
1399 * coupSUSYPtr->getLsqqG(iGen4,idIn1A));
1401 * norm(coupSUSYPtr->getRsqqG(iGen3,idIn2A)
1402 * coupSUSYPtr->getRsqqG(iGen4,idIn1A));
1405 * real(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1406 * coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1407 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1408 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1411 * real(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1412 * coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1413 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1414 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1417 * real(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1418 * coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1419 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1420 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1423 * real(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1424 * coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1425 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1426 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1429 sumGt += sigmaGlu * real(GT[1][1] + GT[1][2] + GT[2][1] + GT[2][2])
1431 sumGu += sigmaGlu * real(GU[1][1] + GU[1][2] + GU[2][1] + GU[2][2])
1433 sumInterference += - 2.0 / 3.0 * sigmaGlu
1434 * real(GTU[1][1] + GTU[1][2] + GTU[2][1] + GTU[2][2])
1440 double sigma = sumNt + sumNu + sumCt + sumCu + sumGt + sumGu
1444 if (id3Sav == id4Sav) sigma /= 2.0;
1455 void Sigma2qq2squarksquark::setIdColAcol() {
1458 if (id1 > 0 && id2 > 0) {
1459 setId( id1, id2, id3Sav, id4Sav);
1462 setId( id1, id2,-id3Sav,-id4Sav);
1466 swapTU = (isUD && abs(id1) % 2 == 0);
1472 double sumA = sumNt + sumCt + sumGu;
1473 double sumAB = sumNt + sumNu + sumCt + sumCu + sumGt + sumGu;
1474 if (swapTU) sumA = sumAB - sumA;
1475 setColAcol( 1, 0, 2, 0, 1, 0, 2, 0);
1477 if (rndmPtr->flat()*sumAB > sumA) setColAcol( 1, 0, 2, 0, 2, 0, 1, 0);
1480 if (id1 < 0 || id2 < 0) swapColAcol();
1493 void Sigma2qqbar2squarkantisquark::initProc() {
1496 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
1499 if (abs(id3Sav) % 2 == abs(id4Sav) % 2) isUD =
false;
1503 if(isUD && abs(id3Sav)%2 == 1){
1504 iGen3 = 3*(abs(id4Sav)/2000000) + (abs(id3Sav)%10+1)/2;
1505 iGen4 = 3*(abs(id3Sav)/2000000) + (abs(id4Sav)%10+1)/2;
1508 iGen3 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
1509 iGen4 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
1513 nameSave =
"q qbar' -> "+particleDataPtr->name(abs(id3Sav))+
" "+
1514 particleDataPtr->name(-abs(id4Sav));
1515 if (isUD && abs(id3Sav) != abs(id4Sav)) nameSave +=
" + c.c.";
1518 nNeut = (coupSUSYPtr->isNMSSM ? 5 : 4);
1521 m2Glu = pow2(particleDataPtr->m0(1000021));
1522 m2Neut.resize(nNeut+1);
1523 for (
int iNeut=1;iNeut<=nNeut;iNeut++)
1524 m2Neut[iNeut] = pow2(particleDataPtr->m0(coupSUSYPtr->idNeut(iNeut)));
1527 tNeut.resize(nNeut+1);
1528 uNeut.resize(nNeut+1);
1531 xW = coupSUSYPtr->sin2W;
1534 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
1542 void Sigma2qqbar2squarkantisquark::sigmaKin() {
1546 double sV= sH - pow2(coupSUSYPtr->mZpole);
1547 double d = pow2(sV) + pow2(coupSUSYPtr->mZpole * coupSUSYPtr->wZpole);
1548 propZW = complex( sV / d, coupSUSYPtr->mZpole * coupSUSYPtr->wZpole / d);
1550 double sV= sH - pow2(coupSUSYPtr->mWpole);
1551 double d = pow2(sV) + pow2(coupSUSYPtr->mWpole * coupSUSYPtr->wWpole);
1552 propZW = complex( sV / d, coupSUSYPtr->mWpole * coupSUSYPtr->wWpole / d);
1556 double comFacHat = M_PI/sH2 * openFracPair;
1558 sigmaEW = comFacHat * pow2(alpEM);
1559 sigmaGlu = comFacHat * 2.0 * pow2(alpS) / 9.0;
1560 sigmaEWG = comFacHat * 8.0 * alpEM * alpS / 9.0;
1568 double Sigma2qqbar2squarkantisquark::sigmaHat() {
1571 if (id1 * id2 > 0)
return 0.0;
1574 if (isUD && abs(id1) %2 == abs(id2) % 2)
return 0.0;
1575 if (!isUD && abs(id1) % 2 != abs(id2) % 2)
return 0.0;
1578 bool onlyQCD = settingsPtr->flag(
"SUSY:qqbar2squarkantisquark:onlyQCD");
1581 swapTU = (isUD && abs(id1) % 2 != 0);
1584 if (!isUD && id1 < 0) swapTU =
true;
1587 int idIn1A = (swapTU) ? abs(id2) : abs(id1);
1588 int idIn2A = (swapTU) ? abs(id1) : abs(id2);
1589 int iGen1 = (idIn1A+1)/2;
1590 int iGen2 = (idIn2A+1)/2;
1595 for (
int i=1; i<= nNeut; i++) {
1596 tNeut[i] = tH - m2Neut[i];
1597 uNeut[i] = uH - m2Neut[i];
1603 sumInterference = 0.0;
1606 double facTU = uH*tH-s3*s4;
1613 sumColS += sigmaEW / 16.0 / pow2(xW) / pow2(1.0-xW)
1614 * norm(conj(coupSUSYPtr->LudW[iGen1][iGen2])
1615 * coupSUSYPtr->LsusdW[iGen3][iGen4]) * facTU
1621 double facLR = m2Glu * sH;
1623 GT[1][1] = facTU * norm(conj(coupSUSYPtr->LsddG[iGen4][iGen2])
1624 *coupSUSYPtr->LsuuG[iGen3][iGen1]);
1625 GT[1][2] = facLR * norm(conj(coupSUSYPtr->RsddG[iGen4][iGen2])
1626 *coupSUSYPtr->LsuuG[iGen3][iGen1]);
1627 GT[2][1] = facLR * norm(conj(coupSUSYPtr->LsddG[iGen4][iGen2])
1628 *coupSUSYPtr->RsuuG[iGen3][iGen1]);
1629 GT[2][2] = facTU * norm(conj(coupSUSYPtr->RsddG[iGen4][iGen2])
1630 *coupSUSYPtr->RsuuG[iGen3][iGen1]);
1632 sumColS += sigmaGlu / pow2(tGlu)
1633 * (GT[1][1] + GT[1][2] + GT[2][1] + GT[2][2]);
1637 sumColS += sigmaEWG / 4.0 / xW / (1-xW)
1638 * real(conj(coupSUSYPtr->LsuuG[iGen3][iGen1])
1639 * coupSUSYPtr->LsddG[iGen4][iGen2]
1640 * conj(coupSUSYPtr->LudW[iGen1][iGen2])
1641 * coupSUSYPtr->LsusdW[iGen3][iGen4]) * facTU
1642 / tGlu * sqrt(norm(propZW));
1653 double eQ = (idIn1A % 2 == 0) ? 2./3. : 1./3. ;
1654 double eSq = (abs(id3Sav) % 2 == 0) ? 2./3. : 1./3. ;
1657 if (abs(id3Sav) == abs(id4Sav) && abs(id1) == abs(id2)) {
1659 sumColT += 2. * sigmaGlu * facTU / pow2(sH);
1666 double facLR = sH * m2Glu;
1667 GT[1][1] = facTU * norm(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1668 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A)));
1669 GT[1][2] = facLR * norm(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1670 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A)));
1671 GT[2][1] = facLR * norm(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1672 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A)));
1673 GT[2][2] = facTU * norm(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1674 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A)));
1676 sumColS += sigmaGlu / pow2(tGlu)
1677 * ( GT[1][1] + GT[1][2] + GT[2][1] + GT[2][2]);
1680 if (abs(id3Sav) == abs(id4Sav) && abs(id1) == abs(id2)) {
1682 GG11 = - facTU * 2./3.
1683 * real( conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A))
1684 * coupSUSYPtr->getLsqqG(iGen4,idIn2A));
1685 GG22 = - facTU * 2./3.
1686 * real( conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A))
1687 * coupSUSYPtr->getRsqqG(iGen4,idIn2A));
1689 sumInterference += sigmaGlu / sH / tGlu
1696 if (onlyQCD)
return sumColT+sumColS+sumInterference;
1699 if (abs(id3Sav) == abs(id4Sav) && abs(id1) == abs(id2)) {
1703 sumColS += 2. * pow2(eQ) * pow2(eSq) * sigmaEW * facTU / pow2(sH);
1706 double CsqZ = real(coupSUSYPtr->LsusuZ[iGen3][iGen4]
1707 + coupSUSYPtr->RsusuZ[iGen3][iGen4]);
1708 if (abs(id3Sav)%2 != 0) CsqZ = real(coupSUSYPtr->LsdsdZ[iGen3][iGen4]
1709 + coupSUSYPtr->RsdsdZ[iGen3][iGen4]);
1710 sumColS += eQ * eSq * sigmaEW * facTU / 2.0 / xW / (1.-xW)
1711 * sqrt(norm(propZW)) / sH * CsqZ
1712 * (coupSUSYPtr->LqqZ[idIn1A] + coupSUSYPtr->LqqZ[idIn2A]);
1716 double CsqG11 = real(conj(coupSUSYPtr->LsuuG[iGen3][iGen1])
1717 *coupSUSYPtr->LsuuG[iGen4][iGen2]);
1718 double CsqG22 = real(conj(coupSUSYPtr->RsuuG[iGen3][iGen1])
1719 *coupSUSYPtr->RsuuG[iGen4][iGen2]);
1720 if (id3Sav%2 != 0) {
1721 CsqG11 = real(conj(coupSUSYPtr->LsddG[iGen3][iGen1])
1722 *coupSUSYPtr->LsddG[iGen4][iGen2]);
1723 CsqG22 = real(conj(coupSUSYPtr->RsddG[iGen3][iGen1])
1724 *coupSUSYPtr->RsddG[iGen4][iGen2]);
1726 sumColS += eQ * eSq * sigmaEWG * facTU
1727 * (CsqG11 + CsqG22) / sH / tGlu;
1732 if (abs(id1) == abs(id2)) {
1733 double CsqZ = norm(coupSUSYPtr->LsusuZ[iGen3][iGen4]
1734 + coupSUSYPtr->RsusuZ[iGen3][iGen4]);
1735 if (abs(id3Sav)%2 != 0) CsqZ = norm(coupSUSYPtr->LsdsdZ[iGen3][iGen4]
1736 + coupSUSYPtr->RsdsdZ[iGen3][iGen4]);
1737 sumColS += sigmaEW * facTU / 16.0 / pow2(xW) / pow2(1.0-xW)
1738 * norm(propZW) * CsqZ * ( pow2(coupSUSYPtr->LqqZ[idIn1A])
1739 + pow2(coupSUSYPtr->RqqZ[idIn1A]) );
1743 double GZ11 = real(conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A))
1744 *coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1745 *(coupSUSYPtr->getLsqsqZ(id3Sav,id4Sav)
1746 +coupSUSYPtr->getRsqsqZ(id3Sav,id4Sav)))
1747 *coupSUSYPtr->LqqZ[idIn1A];
1748 double GZ22 = real(conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A))
1749 *coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1750 *(coupSUSYPtr->getLsqsqZ(id3Sav,id4Sav)
1751 +coupSUSYPtr->getRsqsqZ(id3Sav,id4Sav)))
1752 *coupSUSYPtr->RqqZ[idIn1A];
1753 sumColS += sigmaEWG * facTU / 4.0 / xW / (1.-xW)
1754 * ( GZ11 + GZ22 ) * sqrt(norm(propZW)) / tGlu;
1764 double sigma = sumColS + sumColT + sumInterference;
1775 void Sigma2qqbar2squarkantisquark::setIdColAcol() {
1779 if (isUD && ( (id1-1)%2 < 0 || (id2-1)%2 < 0 )) isCC =
true;
1782 id3 = (isCC) ? -id3Sav : id3Sav;
1783 id4 = (isCC) ? -id4Sav : id4Sav;
1786 setId( id1, id2, id3, id4);
1791 swapTU = (abs(id1) % 2 != 0);
1799 double R = rndmPtr->flat();
1800 double fracS = sumColS / (sumColS + sumColT) ;
1803 setColAcol( 1, 0, 0, 1, 2, 0, 0, 2);
1804 if (swapTU) setColAcol( 0, 1, 1, 0, 2, 0, 0, 2);
1808 setColAcol( 1, 0, 0, 2, 1, 0, 0, 2);
1809 if (swapTU) setColAcol( 0, 1, 2, 0, 2, 0, 0, 1);
1812 if (isCC) swapColAcol();
1825 void Sigma2gg2squarkantisquark::initProc() {
1828 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
1831 nameSave =
"g g -> "+particleDataPtr->name(abs(id3Sav))+
" "
1832 +particleDataPtr->name(-abs(id4Sav));
1835 m2Sq = pow2(particleDataPtr->m0(id3Sav));
1838 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
1846 void Sigma2gg2squarkantisquark::sigmaKin() {
1851 double tHSq = -0.5 * (sH - tH + uH);
1852 double uHSq = -0.5 * (sH + tH - uH);
1857 double comFacHat = M_PI/sH2 * pow2(alpS) / 128.0
1858 * ( 24.0 * (1.0 - 2*tHSq*uHSq/sH2) - 8.0/3.0 );
1862 for (
int ha=-1;ha<=1;ha += 2) {
1863 for (
int hb=-1;hb<=1;hb += 2) {
1865 sigma += comFacHat / 4.0
1867 - 2.0 * sH*m2Sq/tHSq/uHSq
1868 * ( 1.0 - ha*hb - sH*m2Sq/tHSq/uHSq));
1878 void Sigma2gg2squarkantisquark::setIdColAcol() {
1881 setId( id1, id2, id3Sav, id4Sav);
1884 double R = rndmPtr->flat();
1885 if (R < 0.5) setColAcol( 1, 2, 2, 3, 1, 0, 0, 3);
1886 else setColAcol( 1, 2, 3, 1, 3, 0, 0, 2);
1899 void Sigma2qg2squarkgluino::initProc() {
1902 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
1905 nameSave =
"q g -> "+particleDataPtr->name(abs(id3Sav))+
" gluino + c.c.";
1908 m2Glu = pow2(particleDataPtr->m0(1000021));
1909 m2Sq = pow2(particleDataPtr->m0(id3Sav));
1912 openFracPair = particleDataPtr->resOpenFrac(id3Sav, 1000021);
1920 void Sigma2qg2squarkgluino::sigmaKin() {
1923 comFacHat = (M_PI / sH2) * pow2(alpS) * 0.5 * openFracPair;
1926 double tGlu = m2Glu-tH;
1927 double uGlu = m2Glu-uH;
1928 double tSq = m2Sq-tH;
1929 double uSq = m2Sq-uH;
1932 sigmaA = 0.5*4./9.* tGlu/sH + (tGlu*sH+2.*m2Glu*tSq)/pow2(tGlu) -
1933 ( (sH-m2Sq+m2Glu)*(-tSq)-sH*m2Glu )/sH/(-tGlu)
1934 + 0.5*1./2.*( tSq*(tH+2.*uH+m2Glu)-tGlu*(sH-2.*tSq)
1935 + (-uGlu)*(tH+m2Glu+2.*m2Sq) )/2./tGlu/uSq;
1937 sigmaB = 4./9.*(-uGlu)*(uH+m2Sq)/pow2(uSq)
1938 + 1./18.* (sH*(uH+m2Glu) + 2.*(m2Sq-m2Glu)*uGlu)/sH/(-uSq)
1940 + 0.5*1./2.*(tSq*(tH+2.*uH+m2Glu)-tGlu*(sH-2.*tSq)
1941 + (-uGlu)*(tH+m2Glu+2.*m2Sq))/2./tGlu/uSq;
1947 double Sigma2qg2squarkgluino::sigmaHat() {
1950 int idQA = (id1 == 21) ? id2 : id1;
1951 int idSq = (abs(id3) == 10000021) ? id4 : id3;
1954 if(idQA%2 != idSq%2)
return 0.0;
1956 int idQ = (abs(idQA)+1)/2;
1957 idSq = 3 * (id3Sav / 2000000) + (id3Sav % 10 + 1)/2;
1960 if(abs(idQA) % 2 == 1)
1961 mixingFac = norm(coupSUSYPtr->LsddG[idSq][idQ])
1962 + norm(coupSUSYPtr->RsddG[idSq][idQ]);
1964 mixingFac = norm(coupSUSYPtr->LsuuG[idSq][idQ])
1965 + norm(coupSUSYPtr->RsuuG[idSq][idQ]);
1967 return mixingFac * comFacHat * (sigmaA + sigmaB);
1974 void Sigma2qg2squarkgluino::setIdColAcol() {
1977 int idQ = (id1 == 21) ? id2 : id1;
1978 id3 = (idQ > 0) ? id3Sav : -id3Sav;
1982 setId( id1, id2, id3, id4);
1987 double R = rndmPtr->flat()*(sigmaA+sigmaB);
1989 setColAcol(1,0,2,1,3,0,2,3);
1990 if (R > sigmaA) setColAcol(1,0,2,3,2,0,1,3);
1992 setColAcol(2,1,1,0,3,0,2,3);
1993 if (R > sigmaB) setColAcol(2,3,1,0,2,0,1,3);
1995 if (idQ < 0) swapColAcol();
1998 if (id1 == 21) swapTU =
true;
2012 void Sigma2gg2gluinogluino::initProc() {
2015 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2018 openFracPair = particleDataPtr->resOpenFrac(1000021, 1000021);
2026 void Sigma2gg2gluinogluino::sigmaKin() {
2030 double s34Avg = 0.5 * (s3 + s4) - 0.25 * pow2(s3 - s4) / sH;
2031 double tHG = -0.5 * (sH - tH + uH);
2032 double uHG = -0.5 * (sH + tH - uH);
2033 double tHG2 = tHG * tHG;
2034 double uHG2 = uHG * uHG;
2037 sigTS = (tHG * uHG - 2. * s34Avg * (tHG + 2. * s34Avg)) / tHG2
2038 + (tHG * uHG + s34Avg * (uHG - tHG)) / (sH * tHG);
2039 sigUS = (tHG * uHG - 2. * s34Avg * (uHG + 2. * s34Avg)) / uHG2
2040 + (tHG * uHG + s34Avg * (tHG - uHG)) / (sH * uHG);
2041 sigTU = 2. * tHG * uHG / sH2 + s34Avg * (sH - 4. * s34Avg)
2043 sigSum = sigTS + sigUS + sigTU;
2046 sigma = (M_PI / sH2) * pow2(alpS) * (9./4.) * 0.5 * sigSum
2055 void Sigma2gg2gluinogluino::setIdColAcol() {
2058 setId( id1, id2, 1000021, 1000021);
2061 double sigRand = sigSum * rndmPtr->flat();
2062 if (sigRand < sigTS) setColAcol( 1, 2, 2, 3, 1, 4, 4, 3);
2063 else if (sigRand < sigTS + sigUS)
2064 setColAcol( 1, 2, 3, 1, 3, 4, 4, 2);
2065 else setColAcol( 1, 2, 3, 4, 1, 4, 3, 2);
2066 if (rndmPtr->flat() > 0.5) swapColAcol();
2080 void Sigma2qqbar2gluinogluino::initProc() {
2083 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2086 openFracPair = particleDataPtr->resOpenFrac(1000021, 1000021);
2094 void Sigma2qqbar2gluinogluino::sigmaKin() {
2099 tHG = -0.5 * (sH - tH + uH);
2100 uHG = -0.5 * (sH + tH - uH);
2103 s34Avg = 0.5 * (s3 + s4) - 0.25 * pow2(s3 - s4) / sH;
2107 sigS = 16./3. * (tHG2 + uHG2 + 2. * s34Avg * sH) / sH2;
2116 double Sigma2qqbar2gluinogluino::sigmaHat() {
2119 if (id1 * id2 > 0)
return 0.0;
2122 if ((id1+id2) % 2 != 0)
return 0.0;
2125 int iQA = (abs(id1)+1)/2;
2126 int iQB = (abs(id2)+1)/2;
2129 complex LsqqG[7][4];
2130 complex RsqqG[7][4];
2131 for (
int iSq=1; iSq<=6; ++iSq) {
2132 for (
int iQ=1; iQ<=3; ++iQ) {
2133 if (abs(id1) % 2 == 1) {
2134 LsqqG[iSq][iQ] = coupSUSYPtr->LsddG[iSq][iQ];
2135 RsqqG[iSq][iQ] = coupSUSYPtr->RsddG[iSq][iQ];
2138 LsqqG[iSq][iQ] = coupSUSYPtr->LsuuG[iSq][iQ];
2139 RsqqG[iSq][iQ] = coupSUSYPtr->RsuuG[iSq][iQ];
2146 vector<double> sigHel;
2147 for (
int iHel=0; iHel <4; ++iHel) sigHel.push_back(0.);
2150 if (abs(id1) == abs(id2)) {
2157 for (
int iSq=1; iSq<=6; ++iSq) {
2158 int idSq = ((iSq+2)/3)*1000000 + 2*((iSq-1)%3) + abs(id1-1) % 2 + 1;
2159 double mSq2 = pow2(particleDataPtr->m0(idSq));
2162 double tHsq = tHG + s34Avg - mSq2;
2163 double uHsq = uHG + s34Avg - mSq2;
2168 if ( abs(id1) == abs(id2) ) {
2169 double Qst1 = 16./3. * norm(LsqqG[iSq][iQA]) * (s34Avg * sH + tHG2);
2170 double Qsu1 = 16./3. * norm(LsqqG[iSq][iQA]) * (s34Avg * sH + uHG2);
2171 double Qst2 = 16./3. * norm(RsqqG[iSq][iQA]) * (s34Avg * sH + tHG2);
2172 double Qsu2 = 16./3. * norm(RsqqG[iSq][iQA]) * (s34Avg * sH + uHG2);
2173 double sigL = (Qst1 / tHsq + Qsu1 / uHsq) / sH;
2174 double sigR = (Qst2 / tHsq + Qsu2 / uHsq) / sH;
2180 for (
int jSq=1; jSq<=6; ++jSq) {
2181 int idSqJ = ((jSq+2)/3)*1000000 + 2*((jSq-1)%3) + abs(id1-1) % 2 + 1;
2182 double mSqJ2 = pow2(particleDataPtr->m0(idSqJ));
2185 double tHsqJ = tHG + s34Avg - mSqJ2;
2186 double uHsqJ = uHG + s34Avg - mSqJ2;
2188 double Q11 = real(LsqqG[iSq][iQA] * conj(LsqqG[iSq][iQB])
2189 * conj(LsqqG[jSq][iQA]) * LsqqG[jSq][iQB]);
2190 double Q12 = real(LsqqG[iSq][iQA] * conj(RsqqG[iSq][iQB])
2191 * conj(LsqqG[jSq][iQA]) * RsqqG[jSq][iQB]);
2192 double Q21 = real(RsqqG[iSq][iQA] * conj(LsqqG[iSq][iQB])
2193 * conj(RsqqG[jSq][iQA]) * LsqqG[jSq][iQB]);
2194 double Q22 = real(RsqqG[iSq][iQA] * conj(RsqqG[iSq][iQB])
2195 * conj(RsqqG[jSq][iQA]) * RsqqG[jSq][iQB]);
2197 double Qtt11 = 64./27. * Q11 * tHG2;
2198 double Qtt12 = 64./27. * Q12 * tHG2;
2199 double Qtt21 = 64./27. * Q21 * tHG2;
2200 double Qtt22 = 64./27. * Q22 * tHG2;
2202 double Quu11 = 64./27. * Q11 * uHG2;
2203 double Quu12 = 64./27. * Q12 * uHG2;
2204 double Quu21 = 64./27. * Q21 * uHG2;
2205 double Quu22 = 64./27. * Q22 * uHG2;
2207 double Qtu11 = 16./27. * Q11 * (s34Avg * sH);
2208 double Qtu12 = 16./27. * Q12 * (s34Avg * sH - tHG * uHG);
2209 double Qtu21 = 16./27. * Q21 * (s34Avg * sH - tHG * uHG);
2210 double Qtu22 = 16./27. * Q22 * (s34Avg * sH);
2213 sigHel[0] += Qtt11 / tHsq / tHsqJ
2214 + Quu11 / uHsq / uHsqJ
2215 + Qtu11 / tHsq / uHsqJ;
2216 sigHel[1] += Qtt22 / tHsq / tHsqJ
2217 + Quu22 / uHsq / uHsqJ
2218 + Qtu22 / tHsq / uHsqJ;
2219 sigHel[2] += Qtt12 / tHsq / tHsqJ
2220 + Quu12 / uHsq / uHsqJ
2221 + Qtu12 / tHsq / uHsqJ;
2222 sigHel[3] += Qtt21 / tHsq / tHsqJ
2223 + Quu21 / uHsq / uHsqJ
2224 + Qtu21 / tHsq / uHsqJ;
2231 double sigSum = sigHel[0] + sigHel[1] + sigHel[2] + sigHel[3];
2234 if ( sigSum <= 0. )
return 0.0;
2237 double sigma = (M_PI / 8. / sH2) * pow2(alpS) * sigSum * openFracPair;
2246 void Sigma2qqbar2gluinogluino::setIdColAcol() {
2249 setId( id1, id2, 1000021, 1000021);
2252 if (rndmPtr->flat() < 0.5) setColAcol( 1, 0, 0, 2, 1, 3, 3, 2);
2253 else setColAcol( 1, 0, 0, 2, 3, 2, 1, 3);
2254 if (id1 < 0) swapColAcol();
2267 void Sigma1qq2antisquark::initProc(){
2270 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2274 nameSave =
"q q' -> " + coupSUSYPtr->getName(idRes)+
"* + c.c";
2275 codeSave = 2000 + 10*abs(idRes)/1000000 + abs(idRes)%10;
2282 void Sigma1qq2antisquark::sigmaKin() {
2285 if(!coupSUSYPtr->isUDD) {
2290 mRes = particleDataPtr->m0(abs(idRes));
2291 GammaRes = particleDataPtr->mWidth(abs(idRes));
2294 sigBW = sH * GammaRes/ ( pow2(sH - m2Res) + pow2(mRes * GammaRes) );
2295 sigBW *= 2.0/3.0/mRes;
2298 widthOut = GammaRes * particleDataPtr->resOpenFrac(id3);
2305 double Sigma1qq2antisquark::sigmaHat() {
2308 if (id1*id2 <= 0)
return 0.0;
2311 int iA = (abs(id1)+1)/2;
2312 int iB = (abs(id2)+1)/2;
2315 bool idown = (abs(idRes)%2 == 1) ?
true :
false;
2316 int iC = (abs(idRes)/1000000 == 2)
2317 ? (abs(idRes)%10+1)/2 + 3: (abs(idRes)%10+1)/2;
2320 if (abs(id1)%2 == 0 && abs(id2)%2 == 0)
return 0.0;
2321 if (abs(id1)%2 == 1 && abs(id2)%2 == 1 && idown)
return 0.0;
2322 if ((abs(id1) + abs(id2))%2 == 1 && !idown)
return 0.0;
2328 for(
int isq = 1; isq <=3; isq++){
2330 sigma += pow2(coupSUSYPtr->rvUDD[isq][iA][iB])
2331 * norm(coupSUSYPtr->Rusq[iC][isq+3]);
2337 iA = (abs(id2)+1)/2;
2338 iB = (abs(id1)+1)/2;
2340 for(
int isq = 1; isq <= 3; isq++){
2342 sigma += pow2(coupSUSYPtr->rvUDD[iA][iB][isq])
2343 * norm(coupSUSYPtr->Rdsq[iC][isq+3]);
2356 void Sigma1qq2antisquark::setIdColAcol() {
2359 if(id1 < 0 && id2 < 0 ) setId( id1, id2, idRes);
2360 else setId( id1, id2, -idRes);
2363 if (abs(id1) < 9) setColAcol( 1, 0, 2, 0, 0, 3);
2364 else setColAcol( 0, 0, 0, 0, 0, 0);
2365 if (id1 < 0) swapColAcol();
2380 void Sigma2qqbar2chi0gluino::initProc() {
2383 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2386 nameSave =
"q qbar' -> " + particleDataPtr->name(id3) +
" "
2387 + particleDataPtr->name(id4);
2390 openFracPair = particleDataPtr->resOpenFrac(id3, id4);
2398 void Sigma2qqbar2chi0gluino::sigmaKin() {
2401 sigma0 = M_PI * 4.0 / 9.0/ sH2 / coupSUSYPtr->sin2W * alpEM * alpS
2415 double Sigma2qqbar2chi0gluino::sigmaHat() {
2418 if (id1*id2 >= 0)
return 0.0;
2421 if ((id1+id2) % 2 != 0)
return 0.0;
2424 if (id1<0) swapTU =
true;
2427 int idAbs1 = abs(id1);
2428 int idAbs2 = abs(id2);
2431 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
2432 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
2435 int ifl1 = (idAbs1+1) / 2;
2436 int ifl2 = (idAbs2+1) / 2;
2438 complex (*LsddXloc)[4][6];
2439 complex (*RsddXloc)[4][6];
2440 complex (*LsuuXloc)[4][6];
2441 complex (*RsuuXloc)[4][6];
2442 LsddXloc = coupSUSYPtr->LsddX;
2443 RsddXloc = coupSUSYPtr->RsddX;
2444 LsuuXloc = coupSUSYPtr->LsuuX;
2445 RsuuXloc = coupSUSYPtr->RsuuX;
2448 for (
int ksq=1; ksq<=6; ksq++) {
2453 idsq=((ksq+2)/3)*1000000 + 2*((ksq-1) % 3) + (idAbs1+1) % 2 + 1;
2455 double msq2 = pow(particleDataPtr->m0(idsq),2);
2456 double usq = uH - msq2;
2457 double tsq = tH - msq2;
2470 Lsqq1X4 = LsuuXloc[ksq][ifl1][id4chi];
2471 Lsqq2X4 = LsuuXloc[ksq][ifl2][id4chi];
2472 Rsqq1X4 = RsuuXloc[ksq][ifl1][id4chi];
2473 Rsqq2X4 = RsuuXloc[ksq][ifl2][id4chi];
2475 Lsqq1G = coupSUSYPtr->LsuuG[ksq][ifl1];
2476 Rsqq1G = coupSUSYPtr->RsuuG[ksq][ifl1];
2477 Lsqq2G = coupSUSYPtr->LsuuG[ksq][ifl2];
2478 Rsqq2G = coupSUSYPtr->RsuuG[ksq][ifl2];
2480 if (idAbs1 % 2 != 0) {
2481 Lsqq1X4 = LsddXloc[ksq][ifl1][id4chi];
2482 Lsqq2X4 = LsddXloc[ksq][ifl2][id4chi];
2483 Rsqq1X4 = RsddXloc[ksq][ifl1][id4chi];
2484 Rsqq2X4 = RsddXloc[ksq][ifl2][id4chi];
2486 Lsqq1G = coupSUSYPtr->LsddG[ksq][ifl1];
2487 Rsqq1G = coupSUSYPtr->RsddG[ksq][ifl1];
2488 Lsqq2G = coupSUSYPtr->LsddG[ksq][ifl2];
2489 Rsqq2G = coupSUSYPtr->RsddG[ksq][ifl2];
2493 QuLL += conj(Lsqq1X4)*Lsqq2G/usq;
2494 QuRR += conj(Rsqq1X4)*Rsqq2G/usq;
2495 QuLR += conj(Lsqq1X4)*Rsqq2G/usq;
2496 QuRL += conj(Rsqq1X4)*Lsqq2G/usq;
2499 QtLL -= conj(Lsqq1G)*Lsqq2X4/tsq;
2500 QtRR -= conj(Rsqq1G)*Rsqq2X4/tsq;
2501 QtLR += conj(Lsqq1G)*Rsqq2X4/tsq;
2502 QtRL += conj(Rsqq1G)*Lsqq2X4/tsq;
2507 double fac = (1.0-coupSUSYPtr->sin2W);
2511 double facLR = uH*tH - s3*s4;
2512 double facMS = m3*m4*sH;
2516 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
2517 + 2 * real(conj(QuLL) * QtLL) * facMS;
2519 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
2520 + 2 * real(conj(QuRR) * QtRR) * facMS;
2522 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
2523 + real(conj(QuRL) * QtRL) * facLR;
2525 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
2526 + real(conj(QuLR) * QtLR) * facLR;
2529 double sigma = sigma0 * weight / fac;
2540 void Sigma2qqbar2chi0gluino::setIdColAcol() {
2543 setId( id1, id2, id3, id4);
2546 setColAcol( 1, 0, 0, 2, 1, 2, 0, 0);
2547 if (id1 < 0) swapColAcol();
2560 void Sigma2qqbar2chargluino::initProc() {
2563 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2566 nameSave =
"q qbar' -> " + particleDataPtr->name(id3) +
" "
2567 + particleDataPtr->name(id4) +
" + c.c";
2570 openFracPair = particleDataPtr->resOpenFrac(id3, id4);
2577 void Sigma2qqbar2chargluino::sigmaKin() {
2581 sigma0 = M_PI / sH2 * 4.0 / 9.0 / coupSUSYPtr->sin2W * alpEM * alpS ;
2582 sigma0 /= 2.0 * (1 - coupSUSYPtr->sin2W) ;
2595 double Sigma2qqbar2chargluino::sigmaHat() {
2598 if (id1*id2 >= 0)
return 0.0;
2601 if (abs(id1) % 2 == abs(id2) % 2)
return 0.0;
2602 int isPos = (id4chi > 0 ? 1 : 0);
2603 if (id1 < 0 && id1 > -19 && abs(id1) % 2 == 1-isPos )
return 0.0;
2604 else if (id1 > 0 && id1 < 19 && abs(id1) % 2 == isPos )
return 0.0;
2607 int idAbs1 = abs(id1);
2608 int iChar = abs(id4chi);
2610 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
2611 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
2618 complex (*LsduXloc)[4][3];
2619 complex (*RsduXloc)[4][3];
2620 complex (*LsudXloc)[4][3];
2621 complex (*RsudXloc)[4][3];
2623 LsduXloc = coupSUSYPtr->LsduX;
2624 RsduXloc = coupSUSYPtr->RsduX;
2625 LsudXloc = coupSUSYPtr->LsudX;
2626 RsudXloc = coupSUSYPtr->RsudX;
2630 int iGu = abs(id1)/2;
2631 int iGd = (abs(id2)+1)/2;
2632 if (idAbs1 % 2 != 0) {
2635 iGd = (abs(id1)+1)/2;
2639 for (
int jsq=1; jsq<=6; jsq++) {
2641 int idsu=((jsq+2)/3)*1000000 + 2*((jsq-1) % 3) + 2 ;
2642 int idsd=((jsq+2)/3)*1000000 + 2*((jsq-1) % 3) + 1 ;
2644 LsddGl = coupSUSYPtr->LsddG[jsq][iGd];
2645 RsddGl = coupSUSYPtr->RsddG[jsq][iGd];
2646 LsuuGl = coupSUSYPtr->LsuuG[jsq][iGu];
2647 RsuuGl = coupSUSYPtr->RsuuG[jsq][iGu];
2649 double msd2 = pow(particleDataPtr->m0(idsd),2);
2650 double msu2 = pow(particleDataPtr->m0(idsu),2);
2651 double tsq = tH - msd2;
2652 double usq = uH - msu2;
2654 QuLL += conj(LsuuGl) * conj(LsudXloc[jsq][iGd][iChar])/usq;
2655 QuLR += conj(LsuuGl) * conj(RsudXloc[jsq][iGd][iChar])/usq;
2656 QuRR += conj(RsuuGl) * conj(RsudXloc[jsq][iGd][iChar])/usq;
2657 QuRL += conj(RsuuGl) * conj(LsudXloc[jsq][iGd][iChar])/usq;
2659 QtLL -= conj(LsduXloc[jsq][iGu][iChar]) * LsddGl/tsq;
2660 QtRR -= conj(RsduXloc[jsq][iGu][iChar]) * RsddGl/tsq;
2661 QtLR += conj(LsduXloc[jsq][iGu][iChar]) * RsddGl/tsq;
2662 QtRL += conj(RsduXloc[jsq][iGu][iChar]) * LsddGl/tsq;
2671 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
2672 + 2 * real(conj(QuLL) * QtLL) * m3 * m4 * sH;
2674 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
2675 + 2 * real(conj(QuRR) * QtRR) * m3 * m4 * sH;
2677 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
2678 + real(conj(QuRL) * QtRL) * (uH * tH - s3 * s4);
2680 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
2681 + real(conj(QuLR) * QtLR) * (uH * tH - s3 * s4);
2684 double sigma = sigma0 * weight;
2693 void Sigma2qqbar2chargluino::setIdColAcol() {
2696 setId( id1, id2, id3, id4);
2699 setColAcol( 1, 0, 0, 2, 1, 2, 0, 0);
2700 if (id1 < 0) swapColAcol();
2713 void Sigma2qqbar2sleptonantislepton::initProc() {
2716 coupSUSYPtr = (CoupSUSY*) couplingsPtr;
2719 if (abs(id3Sav) % 2 == abs(id4Sav) % 2) isUD =
false;
2723 nameSave =
"q qbar' -> "+particleDataPtr->name(abs(id3Sav))+
" "+
2724 particleDataPtr->name(-abs(id4Sav));
2725 if (isUD) nameSave +=
" + c.c.";
2729 if(isUD && abs(id3Sav)%2 == 0) {
2731 iGen3 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
2732 iGen4 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
2735 iGen3 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
2736 iGen4 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
2740 nNeut = (coupSUSYPtr->isNMSSM ? 5 : 4);
2744 m2Neut.resize(nNeut+1);
2745 for (
int iNeut=1;iNeut<=nNeut;iNeut++)
2746 m2Neut[iNeut] = pow2(particleDataPtr->m0(coupSUSYPtr->idNeut(iNeut)));
2749 tNeut.resize(nNeut+1);
2750 uNeut.resize(nNeut+1);
2753 xW = coupSUSYPtr->sin2W;
2756 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
2764 void Sigma2qqbar2sleptonantislepton::sigmaKin() {
2768 double sV= sH - pow2(coupSUSYPtr->mZpole);
2769 double d = pow2(sV) + pow2(coupSUSYPtr->mZpole * coupSUSYPtr->wZpole);
2770 propZW = complex( sV / d, coupSUSYPtr->mZpole * coupSUSYPtr->wZpole / d);
2772 double sV= sH - pow2(coupSUSYPtr->mWpole);
2773 double d = pow2(sV) + pow2(coupSUSYPtr->mWpole * coupSUSYPtr->wWpole);
2774 propZW = complex( sV / d, coupSUSYPtr->mWpole * coupSUSYPtr->wWpole / d);
2778 double comFacHat = M_PI/sH2 * openFracPair;
2780 sigmaEW = comFacHat * pow2(alpEM);
2787 double Sigma2qqbar2sleptonantislepton::sigmaHat() {
2790 if (id1 * id2 > 0)
return 0.0;
2793 if (isUD && abs(id1) %2 == abs(id2) % 2)
return 0.0;
2794 if (!isUD && abs(id1) % 2 != abs(id2) % 2)
return 0.0;
2797 if ( (abs(id3)%2 == 0 && abs(id3) > 2000000)
2798 || (abs(id4)%2 == 0 && abs(id4) > 2000000) )
return 0.0;
2801 swapTU = (isUD && abs(id1) % 2 != 0);
2804 if (!isUD && id1 < 0) swapTU =
true;
2807 int idIn1A = (swapTU) ? abs(id2) : abs(id1);
2808 int idIn2A = (swapTU) ? abs(id1) : abs(id2);
2809 int iGen1 = (idIn1A+1)/2;
2810 int iGen2 = (idIn2A+1)/2;
2813 for (
int i=1; i<= nNeut; i++) {
2814 tNeut[i] = tH - m2Neut[i];
2815 uNeut[i] = uH - m2Neut[i];
2818 double eQ = (idIn1A % 2 == 0) ? 2./3. : -1./3. ;
2819 double eSl = (abs(id3Sav) % 2 == 0) ? 0. : -1. ;
2824 sumInterference = 0.0;
2827 double facTU = uH*tH-s3*s4;
2833 sumColS = sigmaEW / 32.0 / pow2(xW) / pow2(1.0-xW)
2834 * norm(conj(coupSUSYPtr->LudW[iGen1][iGen2])
2835 * coupSUSYPtr->LslsvW[iGen3][iGen4]) * facTU * norm(propZW);
2841 if (abs(id1) == abs(id2)) {
2843 CslZ = real(coupSUSYPtr->LslslZ[iGen3][iGen4]
2844 + coupSUSYPtr->RslslZ[iGen3][iGen4]);
2845 if (abs(id3)%2 == 0)
2846 CslZ = real(coupSUSYPtr->LsvsvZ[iGen3][iGen4]
2847 + coupSUSYPtr->RsvsvZ[iGen3][iGen4]);
2851 sumColS += (abs(CslZ) > 0.0) ? 2. * pow2(eQ) * pow2(eSl) * sigmaEW
2852 * facTU / pow2(sH) : 0.0;
2855 sumInterference += eQ * eSl * sigmaEW * facTU / 2.0 / xW / (1.-xW)
2856 * sqrt(norm(propZW)) / sH * CslZ
2857 * (coupSUSYPtr->LqqZ[idIn1A] + coupSUSYPtr->RqqZ[idIn1A]);
2861 CslZ = norm(coupSUSYPtr->LslslZ[iGen3][iGen4]
2862 + coupSUSYPtr->RslslZ[iGen3][iGen4]);
2863 if (abs(id3Sav)%2 == 0)
2864 CslZ = norm(coupSUSYPtr->LsvsvZ[iGen3][iGen4]
2865 + coupSUSYPtr->RsvsvZ[iGen3][iGen4]);
2867 sumColS += sigmaEW * facTU / 16.0 / pow2(xW) / pow2(1.0-xW)
2868 * norm(propZW) * CslZ
2869 * ( pow2(coupSUSYPtr->LqqZ[idIn1A]) + pow2(coupSUSYPtr->RqqZ[idIn1A]) );
2873 double sigma = sumColS + sumColT + sumInterference;
2876 if(abs(id1) < 10) sigma /= 3.0;
2879 if(isUD) sigma *= 2.0;
2890 void Sigma2qqbar2sleptonantislepton::setIdColAcol() {
2895 iSl = (abs(id3)%2 == 0) ? abs(id3) : abs(id4);
2896 iSv = (abs(id3)%2 == 0) ? abs(id4) : abs(id3);
2897 if ((id1%2 + id2%2 ) > 0)
2898 setId( id1, id2, -iSl, iSv);
2900 setId( id1, id2, iSl, -iSv);
2903 setId( id1, id2, abs(id3), -abs(id4));
2905 setColAcol( 1, 0, 0, 1, 0, 0, 0, 0);
2906 if (id1 < 0 ) swapColAcol();