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 > 1000000 && idMother < 1000020)
30 || (idMother > 2000000 && idMother < 2000020)
31 || idMother == 1000021)
return 1.0;
34 if (idMother == 25 || idMother == 35 || idMother == 36)
35 return weightHiggsDecay( process, iResBeg, iResEnd);
39 return weightTopDecay( process, iResBeg, iResEnd);
42 if ( flag(
"SUSYResonance:3BodyMatrixElement")
43 && (idMother == 1000023 || idMother == 1000025 || idMother == 1000035) ) {
46 if (iResEnd - iResBeg != 2)
return(1.0);
49 int iFbar= iResBeg + 2;
50 int iT = process[iW1].mother1();
51 if( iT <= 0 )
return(1.0);
52 int idDau= process[iW1].idAbs();
55 if (idDau == 1000024 || idDau == 1000037 )
return(1.0);
56 if (idDau != 1000022 && idDau != 1000023 && idDau != 1000025
57 && idDau != 1000035 ) {
60 if( process[iF].idAbs() != process[iFbar].idAbs() )
return(1.0);
61 int idmo = -1;
int iddau = -1;
63 case 1000023: idmo = 2;
break;
64 case 1000025: idmo = 3;
break;
65 case 1000035: idmo = 4;
break;
68 case 1000022: iddau = 1;
break;
69 case 1000023: iddau = 2;
break;
70 case 1000025: iddau = 3;
break;
72 if( idmo<0 || iddau<0 )
return(1.0);
74 Sigma2qqbar2chi0chi0 localDecay(idmo,iddau,0);
75 localDecay.initInfoPtr(*infoPtr);
76 localDecay.init(NULL, NULL);
77 localDecay.initProc();
79 localDecay.id1 = process[iF].id();
80 localDecay.id2 = process[iFbar].id();
81 double xm3 = process[iT].m();
82 double xm4 = process[iW1].m();
85 localDecay.s3 = xm3*xm3;
86 localDecay.s4 = xm4*xm4;
87 localDecay.sH = (process[iF].p()+process[iFbar].p()).m2Calc();
88 localDecay.sH2 = pow2(localDecay.sH);
89 localDecay.tH = (process[iF].p()-process[iT].p()).m2Calc();
90 localDecay.uH = localDecay.s3+localDecay.s4-localDecay.tH-localDecay.sH;
91 localDecay.sigmaKin();
92 double wt = -localDecay.sigmaHat();
95 localDecay.sH = pow2(xm4-xm3);
96 localDecay.tH = 0.5*(localDecay.s3+localDecay.s4-localDecay.sH);
97 localDecay.uH = localDecay.tH;
98 localDecay.sigmaKin();
99 double wtmax = -localDecay.sigmaHat();
102 localDecay.tH = localDecay.s3;
103 localDecay.uH = localDecay.s3+localDecay.s4-localDecay.tH-localDecay.sH;
104 localDecay.sigmaKin();
105 wtmax += -localDecay.sigmaHat();
107 localDecay.uH = localDecay.s3;
108 localDecay.tH = localDecay.s3+localDecay.s4-localDecay.tH-localDecay.sH;
109 localDecay.sigmaKin();
110 wtmax += -localDecay.sigmaHat();
122 void Sigma2SUSY::setPointers(
string processIn){
125 coupSUSYPtr = infoPtr->coupSUSYPtr;
128 if (!coupSUSYPtr->isInit) coupSUSYPtr->initSUSY(slhaPtr, infoPtr);
131 if(!coupSUSYPtr->isInit) {
132 infoPtr->errorMsg(
"Warning from " + processIn +
"::setPointers"
133 ,
"; Unable to initialise Susy Couplings. ");
148 void Sigma2qqbar2chi0chi0::initProc() {
150 setPointers(
"qqbar2chi0chi0");
153 nameSave =
"q qbar' -> " + particleDataPtr->name(id3) +
" "
154 + particleDataPtr->name(id4);
157 openFracPair = particleDataPtr->resOpenFrac(id3, id4);
165 void Sigma2qqbar2chi0chi0::sigmaKin() {
168 sigma0 = M_PI /3.0/ sH2 / pow2(coupSUSYPtr->sin2W) * pow2(alpEM)
176 double sV= sH - pow2(coupSUSYPtr->mZpole);
177 double d = pow2(sV) + pow2(coupSUSYPtr->mZpole * coupSUSYPtr->wZpole);
178 propZ = complex( sV / d, coupSUSYPtr->mZpole * coupSUSYPtr->wZpole / d);
186 double Sigma2qqbar2chi0chi0::sigmaHat() {
194 if ((id1+id2) % 2 != 0) {
198 if(id1<0) swapTU =
true;
201 int idAbs1 = abs(id1);
202 int idAbs2 = abs(id2);
205 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
206 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
213 if( idAbs1 > 10 && idAbs1 < 17 ) {
214 LqqZloc = coupSUSYPtr->LllZ;
215 RqqZloc = coupSUSYPtr->RllZ;
218 LqqZloc = coupSUSYPtr->LqqZ;
219 RqqZloc = coupSUSYPtr->RqqZ;
223 if (idAbs1 == idAbs2) {
224 QuLL = LqqZloc[idAbs1-iAdd] * coupSUSYPtr->OLpp[id3chi][id4chi]
226 QtLL = LqqZloc[idAbs1-iAdd] * coupSUSYPtr->ORpp[id3chi][id4chi]
228 QuRR = RqqZloc[idAbs1-iAdd] * coupSUSYPtr->ORpp[id3chi][id4chi]
230 QtRR = RqqZloc[idAbs1-iAdd] * coupSUSYPtr->OLpp[id3chi][id4chi]
235 int ifl1 = (idAbs1+1-iAdd) / 2;
236 int ifl2 = (idAbs2+1-iAdd) / 2;
238 complex (*LsddXloc)[4][6];
239 complex (*RsddXloc)[4][6];
240 complex (*LsuuXloc)[4][6];
241 complex (*RsuuXloc)[4][6];
242 if( idAbs1 > 10 && idAbs1 < 17 ) {
243 LsddXloc = coupSUSYPtr->LsllX;
244 RsddXloc = coupSUSYPtr->RsllX;
245 LsuuXloc = coupSUSYPtr->LsvvX;
246 RsuuXloc = coupSUSYPtr->RsvvX;
248 LsddXloc = coupSUSYPtr->LsddX;
249 RsddXloc = coupSUSYPtr->RsddX;
250 LsuuXloc = coupSUSYPtr->LsuuX;
251 RsuuXloc = coupSUSYPtr->RsuuX;
255 for (
int ksq=1; ksq<=6; ksq++) {
260 idsq=((ksq+2)/3)*1000000 + 2*((ksq-1) % 3) + (idAbs1+1) % 2 + 1;
263 double msq2 = pow(particleDataPtr->m0(idsq),2);
264 double usq = uH - msq2;
265 double tsq = tH - msq2;
277 Lsqq1X3 = LsuuXloc[ksq][ifl1][id3chi];
278 Lsqq1X4 = LsuuXloc[ksq][ifl1][id4chi];
279 Lsqq2X3 = LsuuXloc[ksq][ifl2][id3chi];
280 Lsqq2X4 = LsuuXloc[ksq][ifl2][id4chi];
281 Rsqq1X3 = RsuuXloc[ksq][ifl1][id3chi];
282 Rsqq1X4 = RsuuXloc[ksq][ifl1][id4chi];
283 Rsqq2X3 = RsuuXloc[ksq][ifl2][id3chi];
284 Rsqq2X4 = RsuuXloc[ksq][ifl2][id4chi];
285 if (idAbs1 % 2 != 0) {
286 Lsqq1X3 = LsddXloc[ksq][ifl1][id3chi];
287 Lsqq1X4 = LsddXloc[ksq][ifl1][id4chi];
288 Lsqq2X3 = LsddXloc[ksq][ifl2][id3chi];
289 Lsqq2X4 = LsddXloc[ksq][ifl2][id4chi];
290 Rsqq1X3 = RsddXloc[ksq][ifl1][id3chi];
291 Rsqq1X4 = RsddXloc[ksq][ifl1][id4chi];
292 Rsqq2X3 = RsddXloc[ksq][ifl2][id3chi];
293 Rsqq2X4 = RsddXloc[ksq][ifl2][id4chi];
297 QuLL += conj(Lsqq1X4)*Lsqq2X3/usq;
298 QuRR += conj(Rsqq1X4)*Rsqq2X3/usq;
299 QuLR += conj(Lsqq1X4)*Rsqq2X3/usq;
300 QuRL += conj(Rsqq1X4)*Lsqq2X3/usq;
303 QtLL -= conj(Lsqq1X3)*Lsqq2X4/tsq;
304 QtRR -= conj(Rsqq1X3)*Rsqq2X4/tsq;
305 QtLR += conj(Lsqq1X3)*Rsqq2X4/tsq;
306 QtRL += conj(Rsqq1X3)*Lsqq2X4/tsq;
311 double fac = (1.0-coupSUSYPtr->sin2W);
312 if(abs(id3)==abs(id4)) fac *= sqrt(2.);
316 double facLR = uH*tH - s3*s4;
317 double facMS = m3*m4*sH;
321 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
322 + 2 * real(conj(QuLL) * QtLL) * facMS;
324 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
325 + 2 * real(conj(QuRR) * QtRR) * facMS;
327 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
328 + real(conj(QuRL) * QtRL) * facLR;
330 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
331 + real(conj(QuLR) * QtLR) * facLR;
333 double colorFactor = ( idAbs1 > 10 && idAbs1 < 17 ) ? 3.0 : 1.0;
336 double sigma = sigma0 * weight / pow2(fac) * colorFactor;
347 void Sigma2qqbar2chi0chi0::setIdColAcol() {
350 setId( id1, id2, id3, id4);
353 if (abs(id1) < 9) setColAcol( 1, 0, 0, 1, 0, 0, 0, 0);
354 else setColAcol( 0, 0, 0, 0, 0, 0, 0, 0);
355 if (id1 < 0) swapColAcol();
368 void Sigma2qqbar2charchi0::sigmaKin() {
372 sigma0 = M_PI / sH2 / 3.0 / pow2(coupSUSYPtr->sin2W) * pow2(alpEM) ;
373 sigma0 /= 2.0 * (1 - coupSUSYPtr->sin2W) ;
380 double sW = sH - pow2(coupSUSYPtr->mWpole);
381 double d = pow2(sW) + pow2(coupSUSYPtr->mWpole * coupSUSYPtr->wWpole);
382 propW = complex( sW / d, coupSUSYPtr->mWpole * coupSUSYPtr->wWpole / d);
390 double Sigma2qqbar2charchi0::sigmaHat() {
398 if (abs(id1) % 2 == abs(id2) % 2)
return 0.0;
399 int isPos = (id3chi > 0 ? 1 : 0);
400 if (id1 < 0 && id1 > -19 && abs(id1) % 2 == 1-isPos )
return 0.0;
401 else if (id1 > 0 && id1 < 19 && abs(id1) % 2 == isPos )
return 0.0;
404 int idAbs1 = abs(id1);
405 int iChar = abs(id3chi);
406 int iNeut = abs(id4chi);
408 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
409 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
413 complex (*LudWloc)[4];
414 complex (*LsddXloc)[4][6];
415 complex (*RsddXloc)[4][6];
416 complex (*LsuuXloc)[4][6];
417 complex (*RsuuXloc)[4][6];
418 complex (*LsduXloc)[4][3];
419 complex (*RsduXloc)[4][3];
420 complex (*LsudXloc)[4][3];
421 complex (*RsudXloc)[4][3];
422 if( idAbs1 > 10 && idAbs1 < 17 ) {
424 LudWloc = coupSUSYPtr->LlvW;
425 LsddXloc = coupSUSYPtr->LsllX;
426 RsddXloc = coupSUSYPtr->RsllX;
427 LsuuXloc = coupSUSYPtr->LsvvX;
428 RsuuXloc = coupSUSYPtr->RsvvX;
429 LsduXloc = coupSUSYPtr->LslvX;
430 RsduXloc = coupSUSYPtr->RslvX;
431 LsudXloc = coupSUSYPtr->LsvlX;
432 RsudXloc = coupSUSYPtr->RsvlX;
434 LudWloc = coupSUSYPtr->LudW;
435 LsddXloc = coupSUSYPtr->LsddX;
436 RsddXloc = coupSUSYPtr->RsddX;
437 LsuuXloc = coupSUSYPtr->LsuuX;
438 RsuuXloc = coupSUSYPtr->RsuuX;
439 LsduXloc = coupSUSYPtr->LsduX;
440 RsduXloc = coupSUSYPtr->RsduX;
441 LsudXloc = coupSUSYPtr->LsudX;
442 RsudXloc = coupSUSYPtr->RsudX;
447 int iGu = (abs(id1)-iAdd)/2;
448 int iGd = (abs(id2)+1-iAdd)/2;
449 if (idAbs1 % 2 != 0) {
451 iGu = (abs(id2)-iAdd)/2;
452 iGd = (abs(id1)+1-iAdd)/2;
456 QuLL = conj(LudWloc[iGu][iGd])
457 * conj(coupSUSYPtr->OL[iNeut][iChar])
459 QtLL = conj(LudWloc[iGu][iGd])
460 * conj(coupSUSYPtr->OR[iNeut][iChar])
464 for (
int jsq=1; jsq<=6; jsq++) {
466 int idsu=((jsq+2)/3)*1000000 + 2*((jsq-1) % 3) + 2 +iAdd;
467 int idsd=((jsq+2)/3)*1000000 + 2*((jsq-1) % 3) + 1 +iAdd;
468 double msd2 = pow(particleDataPtr->m0(idsd),2);
469 double msu2 = pow(particleDataPtr->m0(idsu),2);
470 double tsq = tH - msd2;
471 double usq = uH - msu2;
473 QuLL += conj(LsuuXloc[jsq][iGu][iNeut])
474 * conj(LsudXloc[jsq][iGd][iChar])/usq;
475 QuLR += conj(LsuuXloc[jsq][iGu][iNeut])
476 * conj(RsudXloc[jsq][iGd][iChar])/usq;
477 QuRR += conj(RsuuXloc[jsq][iGu][iNeut])
478 * conj(RsudXloc[jsq][iGd][iChar])/usq;
479 QuRL += conj(RsuuXloc[jsq][iGu][iNeut])
480 * conj(LsudXloc[jsq][iGd][iChar])/usq;
482 QtLL -= conj(LsduXloc[jsq][iGu][iChar])
483 * LsddXloc[jsq][iGd][iNeut]/tsq;
484 QtRR -= conj(RsduXloc[jsq][iGu][iChar])
485 * RsddXloc[jsq][iGd][iNeut]/tsq;
486 QtLR += conj(LsduXloc[jsq][iGu][iChar])
487 * RsddXloc[jsq][iGd][iNeut]/tsq;
488 QtRL += conj(RsduXloc[jsq][iGu][iChar])
489 * LsddXloc[jsq][iGd][iNeut]/tsq;
498 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
499 + 2 * real(conj(QuLL) * QtLL) * m3 * m4 * sH;
501 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
502 + 2 * real(conj(QuRR) * QtRR) * m3 * m4 * sH;
504 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
505 + real(conj(QuRL) * QtRL) * (uH * tH - s3 * s4);
507 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
508 + real(conj(QuLR) * QtLR) * (uH * tH - s3 * s4);
510 double colorFactor = ( idAbs1 > 10 && idAbs1 < 17 ) ? 3.0 : 1.0;
513 double sigma = sigma0 * weight * colorFactor;
529 void Sigma2qqbar2charchar::sigmaKin() {
532 sigma0 = M_PI / 3.0 / sH2 / pow2(coupSUSYPtr->sin2W) * pow2(alpEM) ;
539 double sV= sH - pow2(coupSUSYPtr->mZpole);
540 double d = pow2(sV) + pow2(coupSUSYPtr->mZpole * coupSUSYPtr->wZpole);
541 propZ = complex( sV / d, coupSUSYPtr->mZpole * coupSUSYPtr->wZpole / d);
549 double Sigma2qqbar2charchar::sigmaHat() {
552 if (id1*id2 >= 0)
return 0.0;
555 if ((id1+id2) % 2 != 0)
return 0.0;
560 swapTU = (id1 < 0 ?
true :
false);
563 int idAbs1 = abs(id1);
564 int idAbs2 = abs(id2);
565 int i3 = abs(id3chi);
566 int i4 = abs(id4chi);
569 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
570 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
574 complex (*LsduXloc)[4][3];
575 complex (*RsduXloc)[4][3];
576 complex (*LsudXloc)[4][3];
577 complex (*RsudXloc)[4][3];
580 if( idAbs1 > 10 && idAbs1 < 17 ) {
582 LqqZloc = coupSUSYPtr->LllZ;
583 RqqZloc = coupSUSYPtr->RllZ;
584 LsduXloc = coupSUSYPtr->LslvX;
585 RsduXloc = coupSUSYPtr->RslvX;
586 LsudXloc = coupSUSYPtr->LsvlX;
587 RsudXloc = coupSUSYPtr->RsvlX;
589 LqqZloc = coupSUSYPtr->LqqZ;
590 RqqZloc = coupSUSYPtr->RqqZ;
591 LsduXloc = coupSUSYPtr->LsduX;
592 RsduXloc = coupSUSYPtr->RsduX;
593 LsudXloc = coupSUSYPtr->LsudX;
594 RsudXloc = coupSUSYPtr->RsudX;
598 if (idAbs1 == idAbs2) {
600 QuLL = -LqqZloc[idAbs1-iShift]*conj(coupSUSYPtr->ORp[i3][i4]);
601 QtLL = -LqqZloc[idAbs1-iShift]*conj(coupSUSYPtr->OLp[i3][i4]);
602 QuRR = -RqqZloc[idAbs1-iShift]*conj(coupSUSYPtr->OLp[i3][i4]);
603 QtRR = -RqqZloc[idAbs1-iShift]*conj(coupSUSYPtr->ORp[i3][i4]);
605 QuLL *= propZ / 2.0 / (1.0-coupSUSYPtr->sin2W);
606 QtLL *= propZ / 2.0 / (1.0-coupSUSYPtr->sin2W);
607 QuRR *= propZ / 2.0 / (1.0-coupSUSYPtr->sin2W);
608 QtRR *= propZ / 2.0 / (1.0-coupSUSYPtr->sin2W);
614 double q = particleDataPtr->chargeType(idAbs1)/3.0;
615 QuLL += q * coupSUSYPtr->sin2W / sH;
616 QuRR += q * coupSUSYPtr->sin2W / sH;
617 QtLL += q * coupSUSYPtr->sin2W / sH;
618 QtRR += q * coupSUSYPtr->sin2W / sH;
623 int iG1 = (abs(id1)+1-iShift)/2;
624 int iG2 = (abs(id2)+1-iShift)/2;
627 for (
int ksq=1; ksq<=6; ksq++) {
634 int idsd = ((ksq+2)/3)*1000000 + 2*((ksq-1) % 3) + 1;
636 double msq = particleDataPtr->m0(idsd);
637 double ufac = 2.0 * (uH - pow2(msq));
640 QuLL += LsduXloc[ksq][iG2][i3]
641 * conj(LsduXloc[ksq][iG1][i4]) / ufac;
642 QuRR += RsduXloc[ksq][iG2][i3]
643 * conj(RsduXloc[ksq][iG1][i4]) / ufac;
644 QuLR += RsduXloc[ksq][iG2][i3]
645 * conj(LsduXloc[ksq][iG1][i4]) / ufac;
646 QuRL += LsduXloc[ksq][iG2][i3]
647 * conj(RsduXloc[ksq][iG1][i4]) / ufac;
653 int idsu = ((ksq+2)/3)*1000000 + 2*((ksq-1) % 3) + 2;
655 double msq = particleDataPtr->m0(idsu);
656 double tfac = 2.0 * (tH - pow2(msq));
659 QtLL -= LsudXloc[ksq][iG1][i3]
660 * conj(LsudXloc[ksq][iG2][i4]) / tfac;
661 QtRR -= RsudXloc[ksq][iG1][i3]
662 * conj(RsudXloc[ksq][iG2][i4]) / tfac;
663 QtLR += LsudXloc[ksq][iG1][i3]
664 * conj(RsudXloc[ksq][iG2][i4]) / tfac;
665 QtRL += RsudXloc[ksq][iG1][i3]
666 * conj(LsudXloc[ksq][iG2][i4]) / tfac;
675 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
676 + 2 * real(conj(QuLL) * QtLL) * m3 * m4 * sH;
678 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
679 + 2 * real(conj(QuRR) * QtRR) * m3 * m4 * sH;
681 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
682 + real(conj(QuRL) * QtRL) * (uH * tH - s3 * s4);
684 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
685 + real(conj(QuLR) * QtLR) * (uH * tH - s3 * s4);
687 double colorFactor = ( idAbs1 > 10 && idAbs1 < 17 ) ? 3.0 : 1.0;
690 double sigma = sigma0 * weight * colorFactor;
706 void Sigma2qg2chi0squark::initProc() {
709 setPointers(
"qg2chi0squark");
713 nameSave =
"q g -> " + particleDataPtr->name(id3) +
" "
714 + particleDataPtr->name(id4) +
" + c.c. (q=u,c)";
717 nameSave =
"q g -> " + particleDataPtr->name(id3) +
" "
718 + particleDataPtr->name(id4) +
" + c.c. (q=d,s,b)";
722 openFracPair = particleDataPtr->resOpenFrac(id3, id4);
730 void Sigma2qg2chi0squark::sigmaKin() {
734 double nChi = 6.0 * coupSUSYPtr->sin2W * (1 - coupSUSYPtr->sin2W);
735 sigma0 = M_PI / sH2 / nChi * alpEM * alpS
750 double Sigma2qg2chi0squark::sigmaHat() {
754 if (id1 == 21 || id1 == 22) idq = id2;
765 int iGq = (abs(idq)+1)/2;
768 if (particleDataPtr->chargeType(idq) != particleDataPtr->chargeType(id4))
772 complex LsqqX, RsqqX;
774 LsqqX = coupSUSYPtr->LsuuX[id4sq][iGq][id3chi];
775 RsqqX = coupSUSYPtr->RsuuX[id4sq][iGq][id3chi];
778 LsqqX = coupSUSYPtr->LsddX[id4sq][iGq][id3chi];
779 RsqqX = coupSUSYPtr->RsddX[id4sq][iGq][id3chi];
785 fac1 = -ui/sH + 2.0 * ( uH*tH - s4*s3 )/sH/tj;
786 fac2 = ti/tj * ( (tH + s4)/tj + (ti - uj)/sH );
788 fac1 = -ti/sH + 2.0 * ( uH*tH - s4*s3 )/sH/uj;
789 fac2 = ui/uj * ( (uH + s4)/uj + (ui - tj)/sH );
798 weight += fac2 * norm(LsqqX) / 2.0;
800 weight += fac2 * norm(RsqqX) / 2.0;
802 weight += fac2 * norm(RsqqX) / 2.0 + fac1 * norm(RsqqX);
804 weight += fac2 * norm(LsqqX) / 2.0 + fac1 * norm(LsqqX);
806 double sigma = sigma0 * weight;
817 void Sigma2qg2chi0squark::setIdColAcol() {
820 setId( id1, id2, id3, (id1*id2 > 0 ? abs(id4) : -abs(id4)));
823 if (id1 != 21) setColAcol( 1, 0, 2, 1, 0, 0, 2, 0);
824 else setColAcol( 1, 2, 2, 0, 0, 0, 1, 0);
825 if (id1*id2 < 0) swapColAcol();
838 void Sigma2qg2charsquark::initProc() {
841 setPointers(
"qg2charsquark");
845 nameSave =
"q g -> " + particleDataPtr->name(id3) +
" "
846 + particleDataPtr->name(id4) +
" + c.c. (q=d,s,b)";
849 nameSave =
"q g -> " + particleDataPtr->name(id3) +
" "
850 + particleDataPtr->name(id4) +
" + c.c. (q=u,c)";
854 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
860 void Sigma2qg2charsquark::sigmaKin() {
864 double nChi = 12.0 * coupSUSYPtr->sin2W;
865 sigma0 = M_PI / sH2 / nChi * alpEM * alpS
880 double Sigma2qg2charsquark::sigmaHat() {
883 int idq = (id1 == 21) ? id2 : id1;
893 if (particleDataPtr->chargeType(idq) == particleDataPtr->chargeType(id4))
897 int iGq = (abs(idq)+1)/2;
900 complex LsqqX, RsqqX;
902 LsqqX = coupSUSYPtr->LsduX[id4sq][iGq][id3chi];
903 RsqqX = coupSUSYPtr->RsduX[id4sq][iGq][id3chi];
906 LsqqX = coupSUSYPtr->LsudX[id4sq][iGq][id3chi];
907 RsqqX = coupSUSYPtr->RsudX[id4sq][iGq][id3chi];
913 fac1 = -ui/sH + 2.0 * ( uH*tH - s4*s3 )/sH/tj;
914 fac2 = ti/tj * ( (tH + s4)/tj + (ti - uj)/sH );
916 fac1 = -ti/sH + 2.0 * ( uH*tH - s4*s3 )/sH/uj;
917 fac2 = ui/uj * ( (uH + s4)/uj + (ui - tj)/sH );
926 weight += fac2 * norm(LsqqX) / 2.0;
928 weight += fac2 * norm(RsqqX) / 2.0;
930 weight += fac2 * norm(RsqqX) / 2.0 + fac1 * norm(RsqqX);
932 weight += fac2 * norm(LsqqX) / 2.0 + fac1 * norm(LsqqX);
934 double sigma = sigma0 * weight;
937 return sigma * openFracPair;
945 void Sigma2qg2charsquark::setIdColAcol() {
948 if (id1 > 0 && id2 > 0) {
949 setId( id1, id2, id3Sav, id4Sav);
951 setId( id1, id2,-id3Sav,-id4Sav);
955 if (id1 != 21) setColAcol( 1, 0, 2, 1, 0, 0, 2, 0);
956 else setColAcol( 1, 2, 2, 0, 0, 0, 1, 0);
957 if (id1 < 0 || id2 < 0) swapColAcol();
970 void Sigma2qq2squarksquark::initProc() {
972 setPointers(
"qq2squarksquark");
975 iGen3 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
976 iGen4 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
979 if (abs(id3Sav) % 2 == abs(id4Sav) % 2) isUD =
false;
983 nameSave =
"q q' -> "+particleDataPtr->name(abs(id3Sav))+
" "
984 +particleDataPtr->name(abs(id4Sav))+
" + c.c.";
987 nNeut = (coupSUSYPtr->isNMSSM ? 5 : 4);
990 m2Glu = pow2(particleDataPtr->m0(1000021));
991 m2Neut.resize(nNeut+1);
992 for (
int iNeut=1;iNeut<=nNeut;iNeut++) {
993 m2Neut[iNeut] = pow2(particleDataPtr->m0(coupSUSYPtr->idNeut(iNeut)));
996 m2Char[1] = pow2(particleDataPtr->m0(coupSUSYPtr->idChar(1)));
997 m2Char[2] = pow2(particleDataPtr->m0(coupSUSYPtr->idChar(2)));
1000 tNeut.resize(nNeut+1);
1001 uNeut.resize(nNeut+1);
1006 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
1009 onlyQCD = flag(
"SUSY:qq2squarksquark:onlyQCD");
1016 void Sigma2qq2squarksquark::sigmaKin() {
1019 double xW = coupSUSYPtr->sin2W;
1022 double comFacHat = M_PI/sH2 * openFracPair;
1025 sigmaNeut = comFacHat * pow2(alpEM) / pow2(xW) / pow2(1-xW);
1026 sigmaGlu = comFacHat * 2.0 * pow2(alpS) / 9.0;
1028 sigmaChar = comFacHat * pow2(alpEM) / 4.0 / pow2(xW);
1029 sigmaCharNeut = comFacHat * pow2(alpEM) / 3.0 / pow2(xW) / (1-xW);
1030 sigmaCharGlu = comFacHat * 4.0 * alpEM * alpS / 9.0 / xW;
1034 sigmaCharNeut = 0.0;
1036 sigmaNeutGlu = comFacHat * 8.0 * alpEM * alpS / 9.0 / xW/(1-xW);
1045 double Sigma2qq2squarksquark::sigmaHat() {
1048 if (id1 * id2 < 0)
return 0.0;
1051 if (isUD && abs(id1) %2 == abs(id2) % 2)
return 0.0;
1052 if (!isUD && abs(id1) % 2 != abs(id2) % 2)
return 0.0;
1053 if (!isUD && abs(id1) % 2 != abs(id3Sav) % 2)
return 0.0;
1056 swapTU = (isUD && abs(id1) % 2 == 0);
1057 int idIn1A = (swapTU) ? abs(id2) : abs(id1);
1058 int idIn2A = (swapTU) ? abs(id1) : abs(id2);
1063 for (
int i=1; i<= nNeut; i++) {
1064 tNeut[i] = tH - m2Neut[i];
1065 uNeut[i] = uH - m2Neut[i];
1066 if (isUD && i <= 2) {
1067 tChar[i] = tH - m2Char[i];
1068 uChar[i] = uH - m2Char[i];
1073 int iGen1 = (abs(idIn1A)+1)/2;
1074 int iGen2 = (abs(idIn2A)+1)/2;
1083 sumInterference = 0.0;
1086 double facTU = uH*tH-s3*s4;
1092 for (
int k=1;k<=2;k++) {
1095 if (onlyQCD)
continue;
1097 for (
int l=1;l<=2;l++) {
1100 double facMS = sH*sqrt(m2Char[k]*m2Char[l]);
1106 * coupSUSYPtr->LsudX[iGen4][iGen2][k]
1107 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1108 * conj(coupSUSYPtr->LsudX[iGen4][iGen2][l])
1109 * coupSUSYPtr->LsduX[iGen3][iGen1][l];
1111 * coupSUSYPtr->RsudX[iGen4][iGen2][k]
1112 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1113 * conj(coupSUSYPtr->RsudX[iGen4][iGen2][l])
1114 * coupSUSYPtr->LsduX[iGen3][iGen1][l];
1116 * coupSUSYPtr->LsudX[iGen4][iGen2][k]
1117 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1118 * conj(coupSUSYPtr->LsudX[iGen4][iGen2][l])
1119 * coupSUSYPtr->RsduX[iGen3][iGen1][l];
1121 * coupSUSYPtr->RsudX[iGen4][iGen2][k]
1122 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1123 * conj(coupSUSYPtr->RsudX[iGen4][iGen2][l])
1124 * coupSUSYPtr->RsduX[iGen3][iGen1][l];
1127 sumCt += sigmaChar * real(Ckl[1][1] + Ckl[1][2] + Ckl[2][1]
1128 + Ckl[2][2]) / tChar[k] / tChar[l];
1137 for (
int k=1;k<=nNeut;k++) {
1138 for (
int l=1;l<=nNeut;l++) {
1141 double facMS = sH*sqrt(m2Neut[k]*m2Neut[l]);
1147 * conj(coupSUSYPtr->LsuuX[iGen4][iGen1][k])
1148 * conj(coupSUSYPtr->LsddX[iGen3][iGen2][k])
1149 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1150 * coupSUSYPtr->LsddX[iGen3][iGen2][l];
1152 * conj(coupSUSYPtr->LsuuX[iGen4][iGen1][k])
1153 * conj(coupSUSYPtr->RsddX[iGen3][iGen2][k])
1154 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1155 * coupSUSYPtr->RsddX[iGen3][iGen2][l];
1157 * conj(coupSUSYPtr->RsuuX[iGen4][iGen1][k])
1158 * conj(coupSUSYPtr->LsddX[iGen3][iGen2][k])
1159 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1160 * coupSUSYPtr->LsddX[iGen3][iGen2][l];
1162 * conj(coupSUSYPtr->RsuuX[iGen4][iGen1][k])
1163 * conj(coupSUSYPtr->RsddX[iGen3][iGen2][k])
1164 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1165 * coupSUSYPtr->RsddX[iGen3][iGen2][l];
1168 sumNu += sigmaNeut / uNeut[k] / uNeut[l]
1169 * real(Nkl[1][1] + Nkl[1][2] + Nkl[2][1] + Nkl[2][2]);
1179 Gij[1][1] = norm(coupSUSYPtr->LsuuG[iGen4][iGen1]
1180 * coupSUSYPtr->LsddG[iGen3][iGen2]);
1181 Gij[1][2] = norm(coupSUSYPtr->LsuuG[iGen4][iGen1]
1182 * coupSUSYPtr->RsddG[iGen3][iGen2]);
1183 Gij[2][1] = norm(coupSUSYPtr->RsuuG[iGen4][iGen1]
1184 * coupSUSYPtr->LsddG[iGen3][iGen2]);
1185 Gij[2][2] = norm(coupSUSYPtr->RsuuG[iGen4][iGen1]
1186 * coupSUSYPtr->RsddG[iGen3][iGen2]);
1187 Gij[1][1] *= sH*m2Glu;
1190 Gij[2][2] *= sH*m2Glu;
1192 sumGu += sigmaGlu * (Gij[1][1] + Gij[1][2] + Gij[2][1] + Gij[2][2])
1200 for (
int k=1;k<=2;k++) {
1201 for (
int l=1;l<=nNeut;l++) {
1205 CNkl[1][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1206 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1207 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1208 * coupSUSYPtr->LsddX[iGen3][iGen2][l]);
1209 CNkl[1][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1210 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1211 * coupSUSYPtr->LsuuX[iGen4][iGen1][l]
1212 * coupSUSYPtr->RsddX[iGen3][iGen2][l]);
1213 CNkl[2][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1214 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1215 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1216 * coupSUSYPtr->LsddX[iGen3][iGen2][l]);
1217 CNkl[2][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1218 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1219 * coupSUSYPtr->RsuuX[iGen4][iGen1][l]
1220 * coupSUSYPtr->RsddX[iGen3][iGen2][l]);
1221 CNkl[1][1] *= sH*sqrt(m2Char[k]*m2Neut[l]);
1222 CNkl[1][2] *= uH*tH-s3*s4;
1223 CNkl[2][1] *= uH*tH-s3*s4;
1224 CNkl[2][2] *= sH*sqrt(m2Char[k]*m2Neut[l]);
1226 sumInterference += sigmaCharNeut * (CNkl[1][1] + CNkl[1][2]
1227 + CNkl[2][1] + CNkl[2][2]) / tChar[k] / uNeut[l];
1232 for (
int k=1;k<=2;k++) {
1236 CGk[1][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1237 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1238 * conj(coupSUSYPtr->LsuuG[iGen4][iGen1])
1239 * conj(coupSUSYPtr->LsddG[iGen3][iGen2]));
1240 CGk[1][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1241 * conj(coupSUSYPtr->LsduX[iGen3][iGen1][k])
1242 * conj(coupSUSYPtr->LsuuG[iGen4][iGen1])
1243 * conj(coupSUSYPtr->RsddG[iGen3][iGen2]));
1244 CGk[2][1] = real(coupSUSYPtr->LsudX[iGen4][iGen2][k]
1245 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1246 * conj(coupSUSYPtr->RsuuG[iGen4][iGen1])
1247 * conj(coupSUSYPtr->LsddG[iGen3][iGen2]));
1248 CGk[2][2] = real(coupSUSYPtr->RsudX[iGen4][iGen2][k]
1249 * conj(coupSUSYPtr->RsduX[iGen3][iGen1][k])
1250 * conj(coupSUSYPtr->RsuuG[iGen4][iGen1])
1251 * conj(coupSUSYPtr->RsddG[iGen3][iGen2]));
1252 CGk[1][1] *= sH*sqrt(m2Glu*m2Char[k]);
1253 CGk[1][2] *= uH*tH-s3*s4;
1254 CGk[2][1] *= uH*tH-s3*s4;
1255 CGk[2][2] *= sH*sqrt(m2Glu*m2Char[k]);
1257 sumInterference += sigmaGlu * (CGk[1][1] + CGk[1][2] + CGk[2][1]
1258 + CGk[2][2]) / uGlu / tChar[k];
1269 for (
int k=1;k<=nNeut;k++) {
1270 for (
int l=1;l<=nNeut;l++) {
1273 double facMS = sH * particleDataPtr->m0(coupSUSYPtr->idNeut(k))
1274 * particleDataPtr->m0(coupSUSYPtr->idNeut(l));
1278 complex NTkl[3][3], NUkl[3][3], NTUkl[3][3];
1280 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1281 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1282 * coupSUSYPtr->getLsqqX(iGen4,idIn2A,l)
1283 * coupSUSYPtr->getLsqqX(iGen3,idIn1A,l);
1285 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1286 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1287 * coupSUSYPtr->getRsqqX(iGen4,idIn2A,l)
1288 * coupSUSYPtr->getLsqqX(iGen3,idIn1A,l);
1290 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1291 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1292 * coupSUSYPtr->getLsqqX(iGen4,idIn2A,l)
1293 * coupSUSYPtr->getRsqqX(iGen3,idIn1A,l);
1295 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1296 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1297 * coupSUSYPtr->getRsqqX(iGen4,idIn2A,l)
1298 * coupSUSYPtr->getRsqqX(iGen3,idIn1A,l);
1300 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1301 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1302 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1303 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l);
1305 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1306 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1307 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1308 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l);
1310 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1311 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1312 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1313 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l);
1315 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1316 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1317 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1318 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l);
1320 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1321 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1322 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1323 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l) );
1325 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1326 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1327 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1328 * coupSUSYPtr->getLsqqX(iGen4,idIn1A,l) );
1330 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1331 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1332 * coupSUSYPtr->getLsqqX(iGen3,idIn2A,l)
1333 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l) );
1335 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1336 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1337 * coupSUSYPtr->getRsqqX(iGen3,idIn2A,l)
1338 * coupSUSYPtr->getRsqqX(iGen4,idIn1A,l) );
1341 sumNt += sigmaNeut / tNeut[k] / tNeut[l]
1342 * real(NTkl[1][1] + NTkl[1][2] + NTkl[2][1] + NTkl[2][2]);
1343 sumNu += sigmaNeut / uNeut[k] / uNeut[l]
1344 * real(NUkl[1][1] + NUkl[1][2] + NUkl[2][1] + NUkl[2][2]);
1345 sumInterference += 2.0 / 3.0 * sigmaNeut
1346 * real(NTUkl[1][1] + NTUkl[1][2] + NTUkl[2][1] + NTUkl[2][2])
1347 / tNeut[k] / uNeut[l];
1353 double facMS = sH * particleDataPtr->m0(coupSUSYPtr->idNeut(k))
1354 * particleDataPtr->m0(1000021);
1358 complex NGA[3][3], NGB[3][3];
1360 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1361 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1362 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1363 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1365 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1366 * conj(coupSUSYPtr->getLsqqX(iGen3,idIn1A,k))
1367 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1368 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1370 * real( conj(coupSUSYPtr->getLsqqX(iGen4,idIn2A,k))
1371 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1372 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1373 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1375 * real( conj(coupSUSYPtr->getRsqqX(iGen4,idIn2A,k))
1376 * conj(coupSUSYPtr->getRsqqX(iGen3,idIn1A,k))
1377 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1378 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1380 * real( conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1381 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1382 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A))
1383 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A)) );
1385 * real( conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1386 * conj(coupSUSYPtr->getLsqqX(iGen4,idIn1A,k))
1387 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A))
1388 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A)) );
1390 * real( conj(coupSUSYPtr->getLsqqX(iGen3,idIn2A,k))
1391 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1392 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A))
1393 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A)) );
1395 * real( conj(coupSUSYPtr->getRsqqX(iGen3,idIn2A,k))
1396 * conj(coupSUSYPtr->getRsqqX(iGen4,idIn1A,k))
1397 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A))
1398 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A)) );
1401 sumInterference += sigmaNeutGlu *
1402 ( real(NGA[1][1] + NGA[1][2] + NGA[2][1] + NGA[2][2])
1404 + real(NGB[1][1] + NGB[1][2] + NGB[2][1] + NGB[2][2])
1405 / uNeut[k] / tGlu );
1411 double facMS = sH * m2Glu;
1415 complex GT[3][3], GU[3][3], GTU[3][3];
1417 * norm(coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1418 * coupSUSYPtr->getLsqqG(iGen3,idIn1A));
1420 * norm(coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1421 * coupSUSYPtr->getLsqqG(iGen3,idIn1A));
1423 * norm(coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1424 * coupSUSYPtr->getRsqqG(iGen3,idIn1A));
1426 * norm(coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1427 * coupSUSYPtr->getRsqqG(iGen3,idIn1A));
1429 * norm(coupSUSYPtr->getLsqqG(iGen3,idIn2A)
1430 * coupSUSYPtr->getLsqqG(iGen4,idIn1A));
1432 * norm(coupSUSYPtr->getLsqqG(iGen3,idIn2A)
1433 * coupSUSYPtr->getRsqqG(iGen4,idIn1A));
1435 * norm(coupSUSYPtr->getRsqqG(iGen3,idIn2A)
1436 * coupSUSYPtr->getLsqqG(iGen4,idIn1A));
1438 * norm(coupSUSYPtr->getRsqqG(iGen3,idIn2A)
1439 * coupSUSYPtr->getRsqqG(iGen4,idIn1A));
1442 * real(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1443 * coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1444 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1445 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1448 * real(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1449 * coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1450 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1451 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn1A)) );
1454 * real(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1455 * coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1456 * conj(coupSUSYPtr->getLsqqG(iGen3,idIn2A))
1457 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1460 * real(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1461 * coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1462 * conj(coupSUSYPtr->getRsqqG(iGen3,idIn2A))
1463 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn1A)) );
1466 sumGt += sigmaGlu * real(GT[1][1] + GT[1][2] + GT[2][1] + GT[2][2])
1468 sumGu += sigmaGlu * real(GU[1][1] + GU[1][2] + GU[2][1] + GU[2][2])
1470 sumInterference += - 2.0 / 3.0 * sigmaGlu
1471 * real(GTU[1][1] + GTU[1][2] + GTU[2][1] + GTU[2][2])
1477 double sigma = sumNt + sumNu + sumCt + sumCu + sumGt + sumGu
1481 if (id3Sav == id4Sav) sigma /= 2.0;
1492 void Sigma2qq2squarksquark::setIdColAcol() {
1495 if (id1 > 0 && id2 > 0) {
1496 setId( id1, id2, id3Sav, id4Sav);
1499 setId( id1, id2,-id3Sav,-id4Sav);
1503 swapTU = (isUD && abs(id1) % 2 == 0);
1509 double sumA = sumNt + sumCt + sumGu;
1510 double sumAB = sumNt + sumNu + sumCt + sumCu + sumGt + sumGu;
1511 if (swapTU) sumA = sumAB - sumA;
1512 setColAcol( 1, 0, 2, 0, 1, 0, 2, 0);
1514 if (rndmPtr->flat()*sumAB > sumA) setColAcol( 1, 0, 2, 0, 2, 0, 1, 0);
1517 if (id1 < 0 || id2 < 0) swapColAcol();
1530 void Sigma2qqbar2squarkantisquark::initProc() {
1532 setPointers(
"qqbar2squarkantisquark");
1535 coupSUSYPtr = infoPtr->coupSUSYPtr;
1538 if (abs(id3Sav) % 2 == abs(id4Sav) % 2) isUD =
false;
1542 if(isUD && abs(id3Sav)%2 == 1){
1543 iGen3 = 3*(abs(id4Sav)/2000000) + (abs(id3Sav)%10+1)/2;
1544 iGen4 = 3*(abs(id3Sav)/2000000) + (abs(id4Sav)%10+1)/2;
1547 iGen3 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
1548 iGen4 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
1552 nameSave =
"q qbar' -> "+particleDataPtr->name(abs(id3Sav))+
" "+
1553 particleDataPtr->name(-abs(id4Sav));
1554 if (isUD && abs(id3Sav) != abs(id4Sav)) nameSave +=
" + c.c.";
1557 nNeut = (coupSUSYPtr->isNMSSM ? 5 : 4);
1560 m2Glu = pow2(particleDataPtr->m0(1000021));
1561 m2Neut.resize(nNeut+1);
1562 for (
int iNeut=1;iNeut<=nNeut;iNeut++)
1563 m2Neut[iNeut] = pow2(particleDataPtr->m0(coupSUSYPtr->idNeut(iNeut)));
1566 tNeut.resize(nNeut+1);
1567 uNeut.resize(nNeut+1);
1570 xW = coupSUSYPtr->sin2W;
1573 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
1576 onlyQCD = flag(
"SUSY:qqbar2squarkantisquark:onlyQCD");
1583 void Sigma2qqbar2squarkantisquark::sigmaKin() {
1587 double sV= sH - pow2(coupSUSYPtr->mZpole);
1588 double d = pow2(sV) + pow2(coupSUSYPtr->mZpole * coupSUSYPtr->wZpole);
1589 propZW = complex( sV / d, coupSUSYPtr->mZpole * coupSUSYPtr->wZpole / d);
1591 double sV= sH - pow2(coupSUSYPtr->mWpole);
1592 double d = pow2(sV) + pow2(coupSUSYPtr->mWpole * coupSUSYPtr->wWpole);
1593 propZW = complex( sV / d, coupSUSYPtr->mWpole * coupSUSYPtr->wWpole / d);
1597 double comFacHat = M_PI/sH2 * openFracPair;
1599 sigmaEW = comFacHat * pow2(alpEM);
1600 sigmaGlu = comFacHat * 2.0 * pow2(alpS) / 9.0;
1601 sigmaEWG = comFacHat * 8.0 * alpEM * alpS / 9.0;
1609 double Sigma2qqbar2squarkantisquark::sigmaHat() {
1612 if (id1 * id2 > 0)
return 0.0;
1615 if (isUD && abs(id1) %2 == abs(id2) % 2)
return 0.0;
1616 if (!isUD && abs(id1) % 2 != abs(id2) % 2)
return 0.0;
1622 swapTU = (isUD && abs(id1) % 2 != 0);
1625 if (!isUD && id1 < 0) swapTU =
true;
1628 int idIn1A = (swapTU) ? abs(id2) : abs(id1);
1629 int idIn2A = (swapTU) ? abs(id1) : abs(id2);
1630 int iGen1 = (idIn1A+1)/2;
1631 int iGen2 = (idIn2A+1)/2;
1636 for (
int i=1; i<= nNeut; i++) {
1637 tNeut[i] = tH - m2Neut[i];
1638 uNeut[i] = uH - m2Neut[i];
1644 sumInterference = 0.0;
1647 double facTU = uH*tH-s3*s4;
1654 sumColS += sigmaEW / 16.0 / pow2(xW) / pow2(1.0-xW)
1655 * norm(conj(coupSUSYPtr->LudW[iGen1][iGen2])
1656 * coupSUSYPtr->LsusdW[iGen3][iGen4]) * facTU
1662 double facLR = m2Glu * sH;
1664 GT[1][1] = facTU * norm(conj(coupSUSYPtr->LsddG[iGen4][iGen2])
1665 *coupSUSYPtr->LsuuG[iGen3][iGen1]);
1666 GT[1][2] = facLR * norm(conj(coupSUSYPtr->RsddG[iGen4][iGen2])
1667 *coupSUSYPtr->LsuuG[iGen3][iGen1]);
1668 GT[2][1] = facLR * norm(conj(coupSUSYPtr->LsddG[iGen4][iGen2])
1669 *coupSUSYPtr->RsuuG[iGen3][iGen1]);
1670 GT[2][2] = facTU * norm(conj(coupSUSYPtr->RsddG[iGen4][iGen2])
1671 *coupSUSYPtr->RsuuG[iGen3][iGen1]);
1673 sumColS += sigmaGlu / pow2(tGlu)
1674 * (GT[1][1] + GT[1][2] + GT[2][1] + GT[2][2]);
1678 sumColS += sigmaEWG / 4.0 / xW / (1-xW)
1679 * real(conj(coupSUSYPtr->LsuuG[iGen3][iGen1])
1680 * coupSUSYPtr->LsddG[iGen4][iGen2]
1681 * conj(coupSUSYPtr->LudW[iGen1][iGen2])
1682 * coupSUSYPtr->LsusdW[iGen3][iGen4]) * facTU
1683 / tGlu * sqrt(norm(propZW));
1694 double eQ = (idIn1A % 2 == 0) ? 2./3. : 1./3. ;
1695 double eSq = (abs(id3Sav) % 2 == 0) ? 2./3. : 1./3. ;
1698 if (abs(id3Sav) == abs(id4Sav) && abs(id1) == abs(id2)) {
1700 sumColT += 2. * sigmaGlu * facTU / pow2(sH);
1707 double facLR = sH * m2Glu;
1708 GT[1][1] = facTU * norm(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1709 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A)));
1710 GT[1][2] = facLR * norm(coupSUSYPtr->getLsqqG(iGen3,idIn1A)
1711 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A)));
1712 GT[2][1] = facLR * norm(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1713 * conj(coupSUSYPtr->getLsqqG(iGen4,idIn2A)));
1714 GT[2][2] = facTU * norm(coupSUSYPtr->getRsqqG(iGen3,idIn1A)
1715 * conj(coupSUSYPtr->getRsqqG(iGen4,idIn2A)));
1717 sumColS += sigmaGlu / pow2(tGlu)
1718 * ( GT[1][1] + GT[1][2] + GT[2][1] + GT[2][2]);
1721 if (abs(id3Sav) == abs(id4Sav) && abs(id1) == abs(id2)) {
1723 GG11 = - facTU * 2./3.
1724 * real( conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A))
1725 * coupSUSYPtr->getLsqqG(iGen4,idIn2A));
1726 GG22 = - facTU * 2./3.
1727 * real( conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A))
1728 * coupSUSYPtr->getRsqqG(iGen4,idIn2A));
1730 sumInterference += sigmaGlu / sH / tGlu
1737 if (onlyQCD)
return sumColT+sumColS+sumInterference;
1740 if (abs(id3Sav) == abs(id4Sav) && abs(id1) == abs(id2)) {
1744 sumColS += 2. * pow2(eQ) * pow2(eSq) * sigmaEW * facTU / pow2(sH);
1747 double CsqZ = real(coupSUSYPtr->LsusuZ[iGen3][iGen4]
1748 + coupSUSYPtr->RsusuZ[iGen3][iGen4]);
1749 if (abs(id3Sav)%2 != 0) CsqZ = real(coupSUSYPtr->LsdsdZ[iGen3][iGen4]
1750 + coupSUSYPtr->RsdsdZ[iGen3][iGen4]);
1751 sumColS += eQ * eSq * sigmaEW * facTU / 2.0 / xW / (1.-xW)
1752 * sqrt(norm(propZW)) / sH * CsqZ
1753 * (coupSUSYPtr->LqqZ[idIn1A] + coupSUSYPtr->LqqZ[idIn2A]);
1757 double CsqG11 = real(conj(coupSUSYPtr->LsuuG[iGen3][iGen1])
1758 *coupSUSYPtr->LsuuG[iGen4][iGen2]);
1759 double CsqG22 = real(conj(coupSUSYPtr->RsuuG[iGen3][iGen1])
1760 *coupSUSYPtr->RsuuG[iGen4][iGen2]);
1761 if (id3Sav%2 != 0) {
1762 CsqG11 = real(conj(coupSUSYPtr->LsddG[iGen3][iGen1])
1763 *coupSUSYPtr->LsddG[iGen4][iGen2]);
1764 CsqG22 = real(conj(coupSUSYPtr->RsddG[iGen3][iGen1])
1765 *coupSUSYPtr->RsddG[iGen4][iGen2]);
1767 sumColS += eQ * eSq * sigmaEWG * facTU
1768 * (CsqG11 + CsqG22) / sH / tGlu;
1773 if (abs(id1) == abs(id2)) {
1774 double CsqZ = norm(coupSUSYPtr->LsusuZ[iGen3][iGen4]
1775 + coupSUSYPtr->RsusuZ[iGen3][iGen4]);
1776 if (abs(id3Sav)%2 != 0) CsqZ = norm(coupSUSYPtr->LsdsdZ[iGen3][iGen4]
1777 + coupSUSYPtr->RsdsdZ[iGen3][iGen4]);
1778 sumColS += sigmaEW * facTU / 16.0 / pow2(xW) / pow2(1.0-xW)
1779 * norm(propZW) * CsqZ * ( pow2(coupSUSYPtr->LqqZ[idIn1A])
1780 + pow2(coupSUSYPtr->RqqZ[idIn1A]) );
1784 double GZ11 = real(conj(coupSUSYPtr->getLsqqG(iGen3,idIn1A))
1785 *coupSUSYPtr->getLsqqG(iGen4,idIn2A)
1786 *(coupSUSYPtr->getLsqsqZ(id3Sav,id4Sav)
1787 +coupSUSYPtr->getRsqsqZ(id3Sav,id4Sav)))
1788 *coupSUSYPtr->LqqZ[idIn1A];
1789 double GZ22 = real(conj(coupSUSYPtr->getRsqqG(iGen3,idIn1A))
1790 *coupSUSYPtr->getRsqqG(iGen4,idIn2A)
1791 *(coupSUSYPtr->getLsqsqZ(id3Sav,id4Sav)
1792 +coupSUSYPtr->getRsqsqZ(id3Sav,id4Sav)))
1793 *coupSUSYPtr->RqqZ[idIn1A];
1794 sumColS += sigmaEWG * facTU / 4.0 / xW / (1.-xW)
1795 * ( GZ11 + GZ22 ) * sqrt(norm(propZW)) / tGlu;
1805 double sigma = sumColS + sumColT + sumInterference;
1816 void Sigma2qqbar2squarkantisquark::setIdColAcol() {
1820 if (isUD && ( (id1-1)%2 < 0 || (id2-1)%2 < 0 )) isCC =
true;
1823 id3 = (isCC) ? -id3Sav : id3Sav;
1824 id4 = (isCC) ? -id4Sav : id4Sav;
1827 setId( id1, id2, id3, id4);
1832 swapTU = (abs(id1) % 2 != 0);
1840 double R = rndmPtr->flat();
1841 double fracS = sumColS / (sumColS + sumColT) ;
1844 setColAcol( 1, 0, 0, 1, 2, 0, 0, 2);
1845 if (swapTU) setColAcol( 0, 1, 1, 0, 2, 0, 0, 2);
1849 setColAcol( 1, 0, 0, 2, 1, 0, 0, 2);
1850 if (swapTU) setColAcol( 0, 1, 2, 0, 2, 0, 0, 1);
1853 if (isCC) swapColAcol();
1866 void Sigma2gg2squarkantisquark::initProc() {
1868 setPointers(
"gg2squarkantisquark");
1871 nameSave =
"g g -> "+particleDataPtr->name(abs(id3Sav))+
" "
1872 +particleDataPtr->name(-abs(id4Sav));
1875 m2Sq = pow2(particleDataPtr->m0(id3Sav));
1878 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
1886 void Sigma2gg2squarkantisquark::sigmaKin() {
1890 double s34Avg = 0.5 * (s3 + s4) - 0.25 * pow2(s3 - s4) / sH;
1891 double tHSq = -0.5 * (sH - tH + uH);
1892 double uHSq = -0.5 * (sH + tH - uH);
1897 double comFacHat = M_PI/sH2 * pow2(alpS) / 128.0
1898 * ( 24.0 * (1.0 - 2*tHSq*uHSq/sH2) - 8.0/3.0 ) * openFracPair;
1902 for (
int ha=-1;ha<=1;ha += 2) {
1903 for (
int hb=-1;hb<=1;hb += 2) {
1905 sigma += comFacHat / 4.0
1907 - 2.0 * sH*s34Avg/tHSq/uHSq
1908 * ( 1.0 - ha*hb - sH*s34Avg/tHSq/uHSq));
1918 void Sigma2gg2squarkantisquark::setIdColAcol() {
1921 setId( id1, id2, id3Sav, id4Sav);
1924 double R = rndmPtr->flat();
1925 if (R < 0.5) setColAcol( 1, 2, 2, 3, 1, 0, 0, 3);
1926 else setColAcol( 1, 2, 3, 1, 3, 0, 0, 2);
1939 void Sigma2qg2squarkgluino::initProc() {
1941 setPointers(
"qg2squarkgluino");
1945 nameSave =
"q g -> "+particleDataPtr->name(id3)+
" gluino";
1948 m2Glu = pow2(particleDataPtr->m0(1000021));
1949 m2Sq = pow2(particleDataPtr->m0(abs(id3)));
1952 openFracPair = particleDataPtr->resOpenFrac(id3, 1000021);
1960 void Sigma2qg2squarkgluino::sigmaKin() {
1963 comFacHat = (M_PI / sH2) * pow2(alpS) * 0.5 * openFracPair;
1966 double tGlu = m2Glu-tH;
1967 double uGlu = m2Glu-uH;
1968 double tSq = m2Sq-tH;
1969 double uSq = m2Sq-uH;
1972 sigmaA = 0.5*4./9.* tGlu/sH + (tGlu*sH+2.*m2Glu*tSq)/pow2(tGlu) -
1973 ( (sH-m2Sq+m2Glu)*(-tSq)-sH*m2Glu )/sH/(-tGlu)
1974 + 0.5*1./2.*( tSq*(tH+2.*uH+m2Glu)-tGlu*(sH-2.*tSq)
1975 + (-uGlu)*(tH+m2Glu+2.*m2Sq) )/2./tGlu/uSq;
1977 sigmaB = 4./9.*(-uGlu)*(uH+m2Sq)/pow2(uSq)
1978 + 1./18.* (sH*(uH+m2Glu) + 2.*(m2Sq-m2Glu)*uGlu)/sH/(-uSq)
1980 + 0.5*1./2.*(tSq*(tH+2.*uH+m2Glu)-tGlu*(sH-2.*tSq)
1981 + (-uGlu)*(tH+m2Glu+2.*m2Sq))/2./tGlu/uSq;
1987 double Sigma2qg2squarkgluino::sigmaHat() {
1990 int idQA = (id1 == 21) ? id2 : id1;
1991 int idSq = (abs(id3) == 10000021) ? id4 : id3;
1994 if(idQA%2 != idSq%2)
return 0.0;
1995 if(abs(idQA + idSq%10) < abs(idQA) + abs(idSq%10))
return 0.0;
1997 int idQ = (abs(idQA)+1)/2;
1998 idSq = 3 * (abs(id3) / 2000000) + (abs(id3) % 10 + 1)/2;
2001 coupSUSYPtr = infoPtr->coupSUSYPtr;
2004 if(abs(idQA) % 2 == 1)
2006 mixingFac = norm(coupSUSYPtr->LsddG[idSq][idQ])
2007 + norm(coupSUSYPtr->RsddG[idSq][idQ]);
2009 mixingFac = norm(coupSUSYPtr->LsuuG[idSq][idQ])
2010 + norm(coupSUSYPtr->RsuuG[idSq][idQ]);
2012 return mixingFac * comFacHat * (sigmaA + sigmaB);
2019 void Sigma2qg2squarkgluino::setIdColAcol() {
2021 int idQ = (id1 == 21) ? id2 : id1;
2024 setId( id1, id2, id3, id4);
2027 double R = rndmPtr->flat()*(sigmaA+sigmaB);
2029 setColAcol(1,0,2,1,3,0,2,3);
2030 if (R > sigmaA) setColAcol(1,0,2,3,2,0,1,3);
2032 setColAcol(2,1,1,0,3,0,2,3);
2033 if (R > sigmaB) setColAcol(2,3,1,0,2,0,1,3);
2035 if (idQ < 0) swapColAcol();
2038 if (id1 == 21) swapTU =
true;
2052 void Sigma2gg2gluinogluino::initProc() {
2054 setPointers(
"gg2gluinogluino");
2057 openFracPair = particleDataPtr->resOpenFrac(1000021, 1000021);
2065 void Sigma2gg2gluinogluino::sigmaKin() {
2069 double s34Avg = 0.5 * (s3 + s4) - 0.25 * pow2(s3 - s4) / sH;
2070 double tHG = -0.5 * (sH - tH + uH);
2071 double uHG = -0.5 * (sH + tH - uH);
2072 double tHG2 = tHG * tHG;
2073 double uHG2 = uHG * uHG;
2076 sigTS = (tHG * uHG - 2. * s34Avg * (tHG + 2. * s34Avg)) / tHG2
2077 + (tHG * uHG + s34Avg * (uHG - tHG)) / (sH * tHG);
2078 sigUS = (tHG * uHG - 2. * s34Avg * (uHG + 2. * s34Avg)) / uHG2
2079 + (tHG * uHG + s34Avg * (tHG - uHG)) / (sH * uHG);
2080 sigTU = 2. * tHG * uHG / sH2 + s34Avg * (sH - 4. * s34Avg)
2082 sigSum = sigTS + sigUS + sigTU;
2085 sigma = (M_PI / sH2) * pow2(alpS) * (9./4.) * 0.5 * sigSum
2094 void Sigma2gg2gluinogluino::setIdColAcol() {
2097 setId( id1, id2, 1000021, 1000021);
2100 double sigRand = sigSum * rndmPtr->flat();
2101 if (sigRand < sigTS) setColAcol( 1, 2, 2, 3, 1, 4, 4, 3);
2102 else if (sigRand < sigTS + sigUS)
2103 setColAcol( 1, 2, 3, 1, 3, 4, 4, 2);
2104 else setColAcol( 1, 2, 3, 4, 1, 4, 3, 2);
2105 if (rndmPtr->flat() > 0.5) swapColAcol();
2119 void Sigma2qqbar2gluinogluino::initProc() {
2121 setPointers(
"qqbar2gluinogluino");
2124 openFracPair = particleDataPtr->resOpenFrac(1000021, 1000021);
2132 void Sigma2qqbar2gluinogluino::sigmaKin() {
2137 tHG = -0.5 * (sH - tH + uH);
2138 uHG = -0.5 * (sH + tH - uH);
2141 s34Avg = 0.5 * (s3 + s4) - 0.25 * pow2(s3 - s4) / sH;
2145 sigS = 16./3. * (tHG2 + uHG2 + 2. * s34Avg * sH) / sH2;
2154 double Sigma2qqbar2gluinogluino::sigmaHat() {
2157 if (id1 * id2 > 0)
return 0.0;
2160 if ((id1+id2) % 2 != 0)
return 0.0;
2163 coupSUSYPtr = infoPtr->coupSUSYPtr;
2166 int iQA = (abs(id1)+1)/2;
2167 int iQB = (abs(id2)+1)/2;
2170 complex LsqqG[7][4];
2171 complex RsqqG[7][4];
2172 for (
int iSq=1; iSq<=6; ++iSq) {
2173 for (
int iQ=1; iQ<=3; ++iQ) {
2174 if (abs(id1) % 2 == 1) {
2175 LsqqG[iSq][iQ] = coupSUSYPtr->LsddG[iSq][iQ];
2176 RsqqG[iSq][iQ] = coupSUSYPtr->RsddG[iSq][iQ];
2179 LsqqG[iSq][iQ] = coupSUSYPtr->LsuuG[iSq][iQ];
2180 RsqqG[iSq][iQ] = coupSUSYPtr->RsuuG[iSq][iQ];
2187 vector<double> sigHel;
2188 for (
int iHel=0; iHel <4; ++iHel) sigHel.push_back(0.);
2191 if (abs(id1) == abs(id2)) {
2198 for (
int iSq=1; iSq<=6; ++iSq) {
2199 int idSq = ((iSq+2)/3)*1000000 + 2*((iSq-1)%3) + abs(id1-1) % 2 + 1;
2200 double mSq2 = pow2(particleDataPtr->m0(idSq));
2203 double tHsq = tHG + s34Avg - mSq2;
2204 double uHsq = uHG + s34Avg - mSq2;
2209 if ( abs(id1) == abs(id2) ) {
2210 double Qst1 = 16./3. * norm(LsqqG[iSq][iQA]) * (s34Avg * sH + tHG2);
2211 double Qsu1 = 16./3. * norm(LsqqG[iSq][iQA]) * (s34Avg * sH + uHG2);
2212 double Qst2 = 16./3. * norm(RsqqG[iSq][iQA]) * (s34Avg * sH + tHG2);
2213 double Qsu2 = 16./3. * norm(RsqqG[iSq][iQA]) * (s34Avg * sH + uHG2);
2214 double sigL = (Qst1 / tHsq + Qsu1 / uHsq) / sH;
2215 double sigR = (Qst2 / tHsq + Qsu2 / uHsq) / sH;
2221 for (
int jSq=1; jSq<=6; ++jSq) {
2222 int idSqJ = ((jSq+2)/3)*1000000 + 2*((jSq-1)%3) + abs(id1-1) % 2 + 1;
2223 double mSqJ2 = pow2(particleDataPtr->m0(idSqJ));
2226 double tHsqJ = tHG + s34Avg - mSqJ2;
2227 double uHsqJ = uHG + s34Avg - mSqJ2;
2229 double Q11 = real(LsqqG[iSq][iQA] * conj(LsqqG[iSq][iQB])
2230 * conj(LsqqG[jSq][iQA]) * LsqqG[jSq][iQB]);
2231 double Q12 = real(LsqqG[iSq][iQA] * conj(RsqqG[iSq][iQB])
2232 * conj(LsqqG[jSq][iQA]) * RsqqG[jSq][iQB]);
2233 double Q21 = real(RsqqG[iSq][iQA] * conj(LsqqG[iSq][iQB])
2234 * conj(RsqqG[jSq][iQA]) * LsqqG[jSq][iQB]);
2235 double Q22 = real(RsqqG[iSq][iQA] * conj(RsqqG[iSq][iQB])
2236 * conj(RsqqG[jSq][iQA]) * RsqqG[jSq][iQB]);
2238 double Qtt11 = 64./27. * Q11 * tHG2;
2239 double Qtt12 = 64./27. * Q12 * tHG2;
2240 double Qtt21 = 64./27. * Q21 * tHG2;
2241 double Qtt22 = 64./27. * Q22 * tHG2;
2243 double Quu11 = 64./27. * Q11 * uHG2;
2244 double Quu12 = 64./27. * Q12 * uHG2;
2245 double Quu21 = 64./27. * Q21 * uHG2;
2246 double Quu22 = 64./27. * Q22 * uHG2;
2248 double Qtu11 = 16./27. * Q11 * (s34Avg * sH);
2249 double Qtu12 = 16./27. * Q12 * (s34Avg * sH - tHG * uHG);
2250 double Qtu21 = 16./27. * Q21 * (s34Avg * sH - tHG * uHG);
2251 double Qtu22 = 16./27. * Q22 * (s34Avg * sH);
2254 sigHel[0] += Qtt11 / tHsq / tHsqJ
2255 + Quu11 / uHsq / uHsqJ
2256 + Qtu11 / tHsq / uHsqJ;
2257 sigHel[1] += Qtt22 / tHsq / tHsqJ
2258 + Quu22 / uHsq / uHsqJ
2259 + Qtu22 / tHsq / uHsqJ;
2260 sigHel[2] += Qtt12 / tHsq / tHsqJ
2261 + Quu12 / uHsq / uHsqJ
2262 + Qtu12 / tHsq / uHsqJ;
2263 sigHel[3] += Qtt21 / tHsq / tHsqJ
2264 + Quu21 / uHsq / uHsqJ
2265 + Qtu21 / tHsq / uHsqJ;
2272 double sigSum = sigHel[0] + sigHel[1] + sigHel[2] + sigHel[3];
2275 if ( sigSum <= 0. )
return 0.0;
2278 double sigma = (M_PI / 8. / sH2) * pow2(alpS) * sigSum * openFracPair;
2287 void Sigma2qqbar2gluinogluino::setIdColAcol() {
2290 setId( id1, id2, 1000021, 1000021);
2293 if (rndmPtr->flat() < 0.5) setColAcol( 1, 0, 0, 2, 1, 3, 3, 2);
2294 else setColAcol( 1, 0, 0, 2, 3, 2, 1, 3);
2295 if (id1 < 0) swapColAcol();
2308 void Sigma1qq2antisquark::initProc(){
2312 coupSUSYPtr = infoPtr->coupSUSYPtr;
2315 if (!coupSUSYPtr->isInit) coupSUSYPtr->initSUSY(slhaPtr, infoPtr);
2318 if(!coupSUSYPtr->isInit) infoPtr->errorMsg(
"Warning from qq2antisquark"
2319 "::setPointers",
"; Unable to initialise Susy Couplings.");
2324 nameSave =
"q q' -> " + particleDataPtr->name(-idRes)+
" + c.c";
2325 codeSave = 2000 + 10*abs(idRes)/1000000 + abs(idRes)%10;
2332 void Sigma1qq2antisquark::sigmaKin() {
2335 if(!coupSUSYPtr->isUDD) {
2340 mRes = particleDataPtr->m0(abs(idRes));
2341 GammaRes = particleDataPtr->mWidth(abs(idRes));
2344 sigBW = sH * GammaRes/ ( pow2(sH - m2Res) + pow2(mRes * GammaRes) );
2345 sigBW *= 2.0/3.0/mRes;
2348 widthOut = GammaRes * particleDataPtr->resOpenFrac(id3);
2355 double Sigma1qq2antisquark::sigmaHat() {
2358 if (id1*id2 <= 0)
return 0.0;
2361 int iA = (abs(id1)+1)/2;
2362 int iB = (abs(id2)+1)/2;
2365 bool idown = (abs(idRes)%2 == 1) ?
true :
false;
2366 int iC = (abs(idRes)/1000000 == 2)
2367 ? (abs(idRes)%10+1)/2 + 3: (abs(idRes)%10+1)/2;
2370 if (abs(id1)%2 == 0 && abs(id2)%2 == 0)
return 0.0;
2371 if (abs(id1)%2 == 1 && abs(id2)%2 == 1 && idown)
return 0.0;
2372 if ((abs(id1) + abs(id2))%2 == 1 && !idown)
return 0.0;
2378 for(
int isq = 1; isq <=3; isq++){
2380 sigma += pow2(coupSUSYPtr->rvUDD[isq][iA][iB])
2381 * norm(coupSUSYPtr->Rusq[iC][isq+3]);
2387 iA = (abs(id2)+1)/2;
2388 iB = (abs(id1)+1)/2;
2390 for(
int isq = 1; isq <= 3; isq++){
2392 sigma += pow2(coupSUSYPtr->rvUDD[iA][iB][isq])
2393 * norm(coupSUSYPtr->Rdsq[iC][isq+3]);
2406 void Sigma1qq2antisquark::setIdColAcol() {
2409 if(id1 < 0 && id2 < 0 ) setId( id1, id2, idRes);
2410 else setId( id1, id2, -idRes);
2413 if (abs(id1) < 9) setColAcol( 1, 0, 2, 0, 0, 3);
2414 else setColAcol( 0, 0, 0, 0, 0, 0);
2415 if (id1 < 0) swapColAcol();
2430 void Sigma2qqbar2chi0gluino::initProc() {
2432 setPointers(
"qqbar2chi0gluino");
2435 nameSave =
"q qbar' -> " + particleDataPtr->name(id3) +
" "
2436 + particleDataPtr->name(id4);
2439 openFracPair = particleDataPtr->resOpenFrac(id3, id4);
2447 void Sigma2qqbar2chi0gluino::sigmaKin() {
2450 sigma0 = M_PI * 4.0 / 9.0/ sH2 / coupSUSYPtr->sin2W * alpEM * alpS
2464 double Sigma2qqbar2chi0gluino::sigmaHat() {
2467 if (id1*id2 >= 0)
return 0.0;
2470 if ((id1+id2) % 2 != 0)
return 0.0;
2473 if (id1<0) swapTU =
true;
2476 int idAbs1 = abs(id1);
2477 int idAbs2 = abs(id2);
2480 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
2481 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
2484 int ifl1 = (idAbs1+1) / 2;
2485 int ifl2 = (idAbs2+1) / 2;
2487 complex (*LsddXloc)[4][6];
2488 complex (*RsddXloc)[4][6];
2489 complex (*LsuuXloc)[4][6];
2490 complex (*RsuuXloc)[4][6];
2491 LsddXloc = coupSUSYPtr->LsddX;
2492 RsddXloc = coupSUSYPtr->RsddX;
2493 LsuuXloc = coupSUSYPtr->LsuuX;
2494 RsuuXloc = coupSUSYPtr->RsuuX;
2497 for (
int ksq=1; ksq<=6; ksq++) {
2502 idsq=((ksq+2)/3)*1000000 + 2*((ksq-1) % 3) + (idAbs1+1) % 2 + 1;
2504 double msq2 = pow(particleDataPtr->m0(idsq),2);
2505 double usq = uH - msq2;
2506 double tsq = tH - msq2;
2519 Lsqq1X4 = LsuuXloc[ksq][ifl1][id4chi];
2520 Lsqq2X4 = LsuuXloc[ksq][ifl2][id4chi];
2521 Rsqq1X4 = RsuuXloc[ksq][ifl1][id4chi];
2522 Rsqq2X4 = RsuuXloc[ksq][ifl2][id4chi];
2524 Lsqq1G = coupSUSYPtr->LsuuG[ksq][ifl1];
2525 Rsqq1G = coupSUSYPtr->RsuuG[ksq][ifl1];
2526 Lsqq2G = coupSUSYPtr->LsuuG[ksq][ifl2];
2527 Rsqq2G = coupSUSYPtr->RsuuG[ksq][ifl2];
2529 if (idAbs1 % 2 != 0) {
2530 Lsqq1X4 = LsddXloc[ksq][ifl1][id4chi];
2531 Lsqq2X4 = LsddXloc[ksq][ifl2][id4chi];
2532 Rsqq1X4 = RsddXloc[ksq][ifl1][id4chi];
2533 Rsqq2X4 = RsddXloc[ksq][ifl2][id4chi];
2535 Lsqq1G = coupSUSYPtr->LsddG[ksq][ifl1];
2536 Rsqq1G = coupSUSYPtr->RsddG[ksq][ifl1];
2537 Lsqq2G = coupSUSYPtr->LsddG[ksq][ifl2];
2538 Rsqq2G = coupSUSYPtr->RsddG[ksq][ifl2];
2542 QuLL += conj(Lsqq1X4)*Lsqq2G/usq;
2543 QuRR += conj(Rsqq1X4)*Rsqq2G/usq;
2544 QuLR += conj(Lsqq1X4)*Rsqq2G/usq;
2545 QuRL += conj(Rsqq1X4)*Lsqq2G/usq;
2548 QtLL -= conj(Lsqq1G)*Lsqq2X4/tsq;
2549 QtRR -= conj(Rsqq1G)*Rsqq2X4/tsq;
2550 QtLR += conj(Lsqq1G)*Rsqq2X4/tsq;
2551 QtRL += conj(Rsqq1G)*Lsqq2X4/tsq;
2556 double fac = (1.0-coupSUSYPtr->sin2W);
2560 double facLR = uH*tH - s3*s4;
2561 double facMS = m3*m4*sH;
2565 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
2566 + 2 * real(conj(QuLL) * QtLL) * facMS;
2568 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
2569 + 2 * real(conj(QuRR) * QtRR) * facMS;
2571 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
2572 + real(conj(QuRL) * QtRL) * facLR;
2574 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
2575 + real(conj(QuLR) * QtLR) * facLR;
2578 double sigma = sigma0 * weight / fac;
2589 void Sigma2qqbar2chi0gluino::setIdColAcol() {
2592 setId( id1, id2, id3, id4);
2595 setColAcol( 1, 0, 0, 2, 1, 2, 0, 0);
2596 if (id1 < 0) swapColAcol();
2609 void Sigma2qqbar2chargluino::initProc() {
2611 setPointers(
"qqbar2chargluino");
2614 nameSave =
"q qbar' -> " + particleDataPtr->name(id3) +
" "
2615 + particleDataPtr->name(id4);
2618 openFracPair = particleDataPtr->resOpenFrac(id3, id4);
2625 void Sigma2qqbar2chargluino::sigmaKin() {
2629 sigma0 = M_PI / sH2 * 4.0 / 9.0 / coupSUSYPtr->sin2W * alpEM * alpS ;
2630 sigma0 /= 2.0 * (1 - coupSUSYPtr->sin2W) ;
2643 double Sigma2qqbar2chargluino::sigmaHat() {
2646 if (id1*id2 >= 0)
return 0.0;
2649 if (abs(id1) % 2 == abs(id2) % 2)
return 0.0;
2650 int isPos = (id4chi > 0 ? 1 : 0);
2651 if (id1 < 0 && id1 > -19 && abs(id1) % 2 == 1-isPos )
return 0.0;
2652 else if (id1 > 0 && id1 < 19 && abs(id1) % 2 == isPos )
return 0.0;
2655 int idAbs1 = abs(id1);
2656 int iChar = abs(id4chi);
2658 complex QuLL(0.0),QtLL(0.0),QuRR(0.0),QtRR(0.0);
2659 complex QuLR(0.0),QtLR(0.0),QuRL(0.0),QtRL(0.0);
2666 complex (*LsduXloc)[4][3];
2667 complex (*RsduXloc)[4][3];
2668 complex (*LsudXloc)[4][3];
2669 complex (*RsudXloc)[4][3];
2671 LsduXloc = coupSUSYPtr->LsduX;
2672 RsduXloc = coupSUSYPtr->RsduX;
2673 LsudXloc = coupSUSYPtr->LsudX;
2674 RsudXloc = coupSUSYPtr->RsudX;
2678 int iGu = abs(id1)/2;
2679 int iGd = (abs(id2)+1)/2;
2680 if (idAbs1 % 2 != 0) {
2683 iGd = (abs(id1)+1)/2;
2687 for (
int jsq=1; jsq<=6; jsq++) {
2689 int idsu=((jsq+2)/3)*1000000 + 2*((jsq-1) % 3) + 2 ;
2690 int idsd=((jsq+2)/3)*1000000 + 2*((jsq-1) % 3) + 1 ;
2692 LsddGl = coupSUSYPtr->LsddG[jsq][iGd];
2693 RsddGl = coupSUSYPtr->RsddG[jsq][iGd];
2694 LsuuGl = coupSUSYPtr->LsuuG[jsq][iGu];
2695 RsuuGl = coupSUSYPtr->RsuuG[jsq][iGu];
2697 double msd2 = pow(particleDataPtr->m0(idsd),2);
2698 double msu2 = pow(particleDataPtr->m0(idsu),2);
2699 double tsq = tH - msd2;
2700 double usq = uH - msu2;
2702 QuLL += conj(LsuuGl) * conj(LsudXloc[jsq][iGd][iChar])/usq;
2703 QuLR += conj(LsuuGl) * conj(RsudXloc[jsq][iGd][iChar])/usq;
2704 QuRR += conj(RsuuGl) * conj(RsudXloc[jsq][iGd][iChar])/usq;
2705 QuRL += conj(RsuuGl) * conj(LsudXloc[jsq][iGd][iChar])/usq;
2707 QtLL -= conj(LsduXloc[jsq][iGu][iChar]) * LsddGl/tsq;
2708 QtRR -= conj(RsduXloc[jsq][iGu][iChar]) * RsddGl/tsq;
2709 QtLR += conj(LsduXloc[jsq][iGu][iChar]) * RsddGl/tsq;
2710 QtRL += conj(RsduXloc[jsq][iGu][iChar]) * LsddGl/tsq;
2719 weight += norm(QuLL) * ui * uj + norm(QtLL) * ti * tj
2720 + 2 * real(conj(QuLL) * QtLL) * m3 * m4 * sH;
2722 weight += norm(QtRR) * ti * tj + norm(QuRR) * ui * uj
2723 + 2 * real(conj(QuRR) * QtRR) * m3 * m4 * sH;
2725 weight += norm(QuRL) * ui * uj + norm(QtRL) * ti * tj
2726 + real(conj(QuRL) * QtRL) * (uH * tH - s3 * s4);
2728 weight += norm(QuLR) * ui * uj + norm(QtLR) * ti * tj
2729 + real(conj(QuLR) * QtLR) * (uH * tH - s3 * s4);
2732 double sigma = sigma0 * weight;
2741 void Sigma2qqbar2chargluino::setIdColAcol() {
2744 setId( id1, id2, id3, id4);
2747 setColAcol( 1, 0, 0, 2, 1, 2, 0, 0);
2748 if (id1 < 0) swapColAcol();
2761 void Sigma2qqbar2sleptonantislepton::initProc() {
2763 setPointers(
"qqbar2sleptonantislepton");
2766 if (abs(id3Sav) % 2 == abs(id4Sav) % 2) isUD =
false;
2770 nameSave =
"q qbar' -> "+particleDataPtr->name(abs(id3Sav))+
" "+
2771 particleDataPtr->name(-abs(id4Sav));
2772 if (isUD) nameSave +=
" + c.c.";
2776 if(isUD && abs(id3Sav)%2 == 0) {
2778 iGen3 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
2779 iGen4 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
2782 iGen3 = 3*(abs(id3Sav)/2000000) + (abs(id3Sav)%10+1)/2;
2783 iGen4 = 3*(abs(id4Sav)/2000000) + (abs(id4Sav)%10+1)/2;
2787 nNeut = (coupSUSYPtr->isNMSSM ? 5 : 4);
2791 m2Neut.resize(nNeut+1);
2792 for (
int iNeut=1;iNeut<=nNeut;iNeut++)
2793 m2Neut[iNeut] = pow2(particleDataPtr->m0(coupSUSYPtr->idNeut(iNeut)));
2796 tNeut.resize(nNeut+1);
2797 uNeut.resize(nNeut+1);
2800 xW = coupSUSYPtr->sin2W;
2803 openFracPair = particleDataPtr->resOpenFrac(id3Sav, id4Sav);
2811 void Sigma2qqbar2sleptonantislepton::sigmaKin() {
2815 double sV= sH - pow2(coupSUSYPtr->mZpole);
2816 double d = pow2(sV) + pow2(coupSUSYPtr->mZpole * coupSUSYPtr->wZpole);
2817 propZW = complex( sV / d, coupSUSYPtr->mZpole * coupSUSYPtr->wZpole / d);
2819 double sV= sH - pow2(coupSUSYPtr->mWpole);
2820 double d = pow2(sV) + pow2(coupSUSYPtr->mWpole * coupSUSYPtr->wWpole);
2821 propZW = complex( sV / d, coupSUSYPtr->mWpole * coupSUSYPtr->wWpole / d);
2825 double comFacHat = M_PI/sH2 * openFracPair;
2827 sigmaEW = comFacHat * pow2(alpEM);
2834 double Sigma2qqbar2sleptonantislepton::sigmaHat() {
2837 if (id1 * id2 > 0)
return 0.0;
2840 if (isUD && abs(id1) %2 == abs(id2) % 2)
return 0.0;
2841 if (!isUD && abs(id1) % 2 != abs(id2) % 2)
return 0.0;
2844 if ( (abs(id3)%2 == 0 && abs(id3) > 2000000)
2845 || (abs(id4)%2 == 0 && abs(id4) > 2000000) )
return 0.0;
2848 swapTU = (isUD && abs(id1) % 2 != 0);
2851 if (!isUD && id1 < 0) swapTU =
true;
2854 int idIn1A = (swapTU) ? abs(id2) : abs(id1);
2855 int idIn2A = (swapTU) ? abs(id1) : abs(id2);
2856 int iGen1 = (idIn1A+1)/2;
2857 int iGen2 = (idIn2A+1)/2;
2860 for (
int i=1; i<= nNeut; i++) {
2861 tNeut[i] = tH - m2Neut[i];
2862 uNeut[i] = uH - m2Neut[i];
2865 double eQ = (idIn1A % 2 == 0) ? 2./3. : -1./3. ;
2866 double eSl = (abs(id3Sav) % 2 == 0) ? 0. : -1. ;
2871 sumInterference = 0.0;
2874 double facTU = uH*tH-s3*s4;
2880 sumColS = sigmaEW / 32.0 / pow2(xW) / pow2(1.0-xW)
2881 * norm(conj(coupSUSYPtr->LudW[iGen1][iGen2])
2882 * coupSUSYPtr->LslsvW[iGen3][iGen4]) * facTU * norm(propZW);
2888 CslZ = norm(coupSUSYPtr->LslslZ[iGen3][iGen4]
2889 - coupSUSYPtr->RslslZ[iGen3][iGen4]);
2890 if (abs(id3Sav)%2 == 0)
2891 CslZ = norm(coupSUSYPtr->LsvsvZ[iGen3][iGen4]
2892 + coupSUSYPtr->RsvsvZ[iGen3][iGen4]);
2893 sumColS += sigmaEW * facTU / 16.0 / pow2(xW) / pow2(1.0-xW)
2894 * norm(propZW) * CslZ
2895 * ( pow2(coupSUSYPtr->LqqZ[idIn1A]) + pow2(coupSUSYPtr->RqqZ[idIn1A]) );
2899 if (abs(id1) == abs(id2)) {
2901 CslZ = real(coupSUSYPtr->LslslZ[iGen3][iGen4]
2902 + coupSUSYPtr->RslslZ[iGen3][iGen4]);
2903 if (abs(id3)%2 == 0)
2904 CslZ = real(coupSUSYPtr->LsvsvZ[iGen3][iGen4]
2905 + coupSUSYPtr->RsvsvZ[iGen3][iGen4]);
2907 if(abs(id3) == abs(id4)) {
2912 sumColS += (abs(CslZ) > 0.0) ? 2. * pow2(eQ) * pow2(eSl) * sigmaEW
2913 * facTU / pow2(sH) : 0.0;
2916 sumInterference += eQ * eSl * sigmaEW * facTU / 2.0 / xW / (1.-xW)
2917 * sqrt(norm(propZW)) / sH * CslZ
2918 * (coupSUSYPtr->LqqZ[idIn1A] + coupSUSYPtr->RqqZ[idIn1A]);
2924 double sigma = sumColS + sumColT + sumInterference;
2927 if (abs(id1) < 10) sigma /= 9.0;
2930 if (isUD) sigma *= 2.0;
2941 void Sigma2qqbar2sleptonantislepton::setIdColAcol() {
2946 iSl = (abs(id3)%2 == 0) ? abs(id3) : abs(id4);
2947 iSv = (abs(id3)%2 == 0) ? abs(id4) : abs(id3);
2948 if ((id1%2 + id2%2 ) > 0)
2949 setId( id1, id2, -iSl, iSv);
2951 setId( id1, id2, iSl, -iSv);
2954 setId( id1, id2, abs(id3), -abs(id4));
2956 setColAcol( 1, 0, 0, 1, 0, 0, 0, 0);
2957 if (id1 < 0 ) swapColAcol();