9 #include "Pythia8/ProcessContainer.h"
12 #include "Pythia8/SigmaCompositeness.h"
13 #include "Pythia8/SigmaEW.h"
14 #include "Pythia8/SigmaExtraDim.h"
15 #include "Pythia8/SigmaGeneric.h"
16 #include "Pythia8/SigmaHiggs.h"
17 #include "Pythia8/SigmaLeftRightSym.h"
18 #include "Pythia8/SigmaLeptoquark.h"
19 #include "Pythia8/SigmaNewGaugeBosons.h"
20 #include "Pythia8/SigmaQCD.h"
21 #include "Pythia8/SigmaSUSY.h"
36 const int ProcessContainer::N12SAMPLE = 100;
39 const int ProcessContainer::N3SAMPLE = 1000;
46 bool ProcessContainer::init(
bool isFirst, Info* infoPtrIn,
47 Settings& settings, ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
48 BeamParticle* beamAPtr, BeamParticle* beamBPtr, Couplings* couplingsPtr,
49 SigmaTotal* sigmaTotPtr, ResonanceDecays* resDecaysPtrIn,
50 SLHAinterface* slhaInterfacePtr, UserHooks* userHooksPtrIn) {
53 isLHA = sigmaProcessPtr->isLHA();
54 isNonDiff = sigmaProcessPtr->isNonDiff();
55 isResolved = sigmaProcessPtr->isResolved();
56 isDiffA = sigmaProcessPtr->isDiffA();
57 isDiffB = sigmaProcessPtr->isDiffB();
58 isDiffC = sigmaProcessPtr->isDiffC();
59 isQCD3body = sigmaProcessPtr->isQCD3body();
60 int nFin = sigmaProcessPtr->nFinal();
61 lhaStrat = (isLHA) ? lhaUpPtr->strategy() : 0;
62 lhaStratAbs = abs(lhaStrat);
63 allowNegSig = sigmaProcessPtr->allowNegativeSigma();
66 increaseMaximum = settings.flag(
"PhaseSpace:increaseMaximum");
69 if (isLHA) phaseSpacePtr =
new PhaseSpaceLHA();
70 else if (isNonDiff) phaseSpacePtr =
new PhaseSpace2to2nondiffractive();
71 else if (!isResolved && !isDiffA && !isDiffB && !isDiffC )
72 phaseSpacePtr =
new PhaseSpace2to2elastic();
73 else if (!isResolved && !isDiffA && !isDiffB && isDiffC)
74 phaseSpacePtr =
new PhaseSpace2to3diffractive();
75 else if (!isResolved) phaseSpacePtr =
new PhaseSpace2to2diffractive(
77 else if (nFin == 1) phaseSpacePtr =
new PhaseSpace2to1tauy();
78 else if (nFin == 2) phaseSpacePtr =
new PhaseSpace2to2tauyz();
79 else if (isQCD3body) phaseSpacePtr =
new PhaseSpace2to3yyycyl();
80 else phaseSpacePtr =
new PhaseSpace2to3tauycyl();
84 particleDataPtr = particleDataPtrIn;
86 resDecaysPtr = resDecaysPtrIn;
87 userHooksPtr = userHooksPtrIn;
88 canVetoResDecay = (userHooksPtr != 0)
89 ? userHooksPtr->canVetoResonanceDecays() :
false;
91 sigmaProcessPtr->setLHAPtr(lhaUpPtr);
92 phaseSpacePtr->setLHAPtr(lhaUpPtr);
94 sigmaProcessPtr->init(infoPtr, &settings, particleDataPtr, rndmPtr,
95 beamAPtr, beamBPtr, couplingsPtr, sigmaTotPtr, slhaInterfacePtr);
96 phaseSpacePtr->init( isFirst, sigmaProcessPtr, infoPtr, &settings,
97 particleDataPtr, rndmPtr, beamAPtr, beamBPtr, couplingsPtr, sigmaTotPtr,
115 sigmaProcessPtr->initProc();
116 if (!sigmaProcessPtr->initFlux())
return false;
119 bool physical = phaseSpacePtr->setupSampling();
120 sigmaMx = phaseSpacePtr->sigmaMax();
121 double sigmaHalfWay = sigmaMx;
124 sigmaSgn = phaseSpacePtr->sigmaSumSigned();
127 if (physical & !isLHA) {
128 int nSample = (nFin < 3) ? N12SAMPLE : N3SAMPLE;
129 for (
int iSample = 0; iSample < nSample; ++iSample) {
131 while (!test) test = phaseSpacePtr->trialKin(
false);
132 if (iSample == nSample/2) sigmaHalfWay = phaseSpacePtr->sigmaMax();
134 double sigmaFullWay = phaseSpacePtr->sigmaMax();
135 sigmaMx = (sigmaHalfWay > 0.) ? pow2(sigmaFullWay) / sigmaHalfWay
137 phaseSpacePtr->setSigmaMax(sigmaMx);
141 idRenameBeams = settings.mode(
"LesHouches:idRenameBeams");
142 setLifetime = settings.mode(
"LesHouches:setLifetime");
152 bool ProcessContainer::trialProcess() {
155 for (
int iTry = 0; ; ++iTry) {
158 if (sigmaMx == 0.)
return false;
159 infoPtr->setEndOfFile(
false);
160 bool repeatSame = (iTry > 0);
161 bool physical = phaseSpacePtr->trialKin(
true, repeatSame);
164 if (isLHA && !physical) infoPtr->setEndOfFile(
true);
169 int codeLHANow = lhaUpPtr->idProcess();
171 for (
int i = 0; i < int(codeLHA.size()); ++i)
172 if (codeLHANow == codeLHA[i]) iFill = i;
176 codeLHA.push_back(codeLHANow);
177 nTryLHA.push_back(1);
178 nSelLHA.push_back(0);
179 nAccLHA.push_back(0);
180 for (
int i =
int(codeLHA.size()) - 1; i > 0; --i) {
181 if (codeLHA[i] < codeLHA[i - 1]) {
182 swap(codeLHA[i], codeLHA[i - 1]);
183 swap(nTryLHA[i], nTryLHA[i - 1]);
184 swap(nSelLHA[i], nSelLHA[i - 1]);
185 swap(nAccLHA[i], nAccLHA[i - 1]);
194 if (!physical)
return false;
195 double sigmaNow = phaseSpacePtr->sigmaNow();
198 double sigmaWeight = 1.;
199 if (!isLHA && !increaseMaximum && sigmaNow > sigmaMx)
200 sigmaWeight = sigmaNow / sigmaMx;
201 if ( lhaStrat < 0 && sigmaNow < 0.) sigmaWeight = -1.;
202 if ( lhaStratAbs == 4) sigmaWeight = sigmaNow;
205 double biasWeight = phaseSpacePtr->biasSelectionWeight();
206 weightNow = sigmaWeight * biasWeight;
207 infoPtr->setWeight( weightNow, lhaStrat);
211 if (sigmaNow < sigmaNeg) {
212 infoPtr->errorMsg(
"Warning in ProcessContainer::trialProcess: neg"
213 "ative cross section set 0",
"for " + sigmaProcessPtr->name() );
216 if (sigmaNow < 0.) sigmaNow = 0.;
220 double sigmaAdd = sigmaNow * biasWeight;
221 if (lhaStratAbs == 2 || lhaStratAbs == 3) sigmaAdd = sigmaSgn;
222 sigmaSum += sigmaAdd;
223 sigma2Sum += pow2(sigmaAdd);
226 newSigmaMx = phaseSpacePtr->newSigmaMax();
227 if (newSigmaMx) sigmaMx = phaseSpacePtr->sigmaMax();
231 if (lhaStratAbs < 3) select
232 = (newSigmaMx || rndmPtr->flat() * abs(sigmaMx) < abs(sigmaNow));
236 int codeLHANow = lhaUpPtr->idProcess();
238 for (
int i = 0; i < int(codeLHA.size()); ++i)
239 if (codeLHANow == codeLHA[i]) iFill = i;
240 if (iFill >= 0) ++nSelLHA[iFill];
243 if (select || lhaStratAbs != 2)
return select;
253 void ProcessContainer::accumulate() {
256 wtAccSum += weightNow;
258 int codeLHANow = lhaUpPtr->idProcess();
260 for (
int i = 0; i < int(codeLHA.size()); ++i)
261 if (codeLHANow == codeLHA[i]) iFill = i;
262 if (iFill >= 0) ++nAccLHA[iFill];
271 bool ProcessContainer::constructState() {
274 if (isResolved && !isNonDiff) sigmaProcessPtr->pickInState();
275 sigmaProcessPtr->setIdColAcol();
286 bool ProcessContainer::constructProcess(
Event& process,
bool isHardest) {
289 if (!phaseSpacePtr->finalKin())
return false;
290 int nFin = sigmaProcessPtr->nFinal();
293 if (isHardest) infoPtr->setType( name(), code(), nFin, isNonDiff,
294 isResolved, isDiffA, isDiffB, isDiffC, isLHA);
298 int idA = infoPtr->idA();
299 if (abs(idA) == idRenameBeams) idA = 16;
300 int idB = infoPtr->idB();
301 if (abs(idB) == idRenameBeams) idB = -16;
302 process.append( 90, -11, 0, 0, 0, 0, 0, 0,
303 Vec4(0., 0., 0., infoPtr->eCM()), infoPtr->eCM(), 0. );
304 process.append( idA, -12, 0, 0, 0, 0, 0, 0,
305 Vec4(0., 0., infoPtr->pzA(), infoPtr->eA()), infoPtr->mA(), 0. );
306 process.append( idB, -12, 0, 0, 0, 0, 0, 0,
307 Vec4(0., 0., infoPtr->pzB(), infoPtr->eB()), infoPtr->mB(), 0. );
310 if (isNonDiff)
return true;
313 process[1].daughter1(3);
314 process[2].daughter1(4);
320 process[1].daughters(3, 5);
321 process[2].daughters(3, 5);
325 int idRes = sigmaProcessPtr->idSChannel();
326 if (isResolved && !isLHA) {
332 int m_D2 = (nFin == 1) ? 0 : 4 + nFin;
341 scale = sqrt(Q2Fac());
342 process.scale( scale );
345 int colOffset = process.lastColTag();
346 for (
int i = 1; i <= 2 + nFin; ++i) {
349 int id = sigmaProcessPtr->id(i);
350 int status = (i <= 2) ? -21 : 23;
351 int mother1 = (i <= 2) ? i : m_M1 ;
352 int mother2 = (i <= 2) ? 0 : m_M2 ;
353 int daughter1 = (i <= 2) ? m_D1 : 0;
354 int daughter2 = (i <= 2) ? m_D2 : 0;
355 int col = sigmaProcessPtr->col(i);
356 if (col > 0) col += colOffset;
357 else if (col < 0) col -= colOffset;
358 int acol = sigmaProcessPtr->acol(i);
359 if (acol > 0) acol += colOffset;
360 else if (acol < 0) acol -= colOffset;
363 int iNow = process.append(
id, status, mother1, mother2,
364 daughter1, daughter2, col, acol, phaseSpacePtr->p(i),
365 phaseSpacePtr->m(i), scale);
369 if (i == 2 && idRes != 0) {
372 if (particleDataPtr->hasAnti(idRes)
373 && process[3].chargeType() + process[4].chargeType() < 0)
380 int m_col1 = sigmaProcessPtr->col(1);
381 int m_acol1 = sigmaProcessPtr->acol(1);
382 int m_col2 = sigmaProcessPtr->col(2);
383 int m_acol2 = sigmaProcessPtr->acol(2);
384 if (m_col1 == m_acol2 && m_col2 != m_acol1) {
387 }
else if (m_col2 == m_acol1 && m_col1 != m_acol2) {
391 if ( col > 0) col += colOffset;
392 else if ( col < 0) col -= colOffset;
393 if (acol > 0) acol += colOffset;
394 else if (acol < 0) acol -= colOffset;
397 Vec4 pIntMed = phaseSpacePtr->p(1) + phaseSpacePtr->p(2);
398 process.append( idRes, -22, 3, 4, 6, 5 + nFin, col, acol,
399 pIntMed, pIntMed.mCalc(), scale);
403 if (process[iNow].tau0() > 0.) process[iNow].tau(
404 process[iNow].tau0() * rndmPtr->exp() );
410 int id3 = sigmaProcessPtr->id(3);
411 int status3 = (id3 == process[1].id()) ? 14 : 15;
412 process.append( id3, status3, 1, 0, 0, 0, 0, 0,
413 phaseSpacePtr->p(3), phaseSpacePtr->m(3));
414 int id4 = sigmaProcessPtr->id(4);
415 int status4 = (id4 == process[2].id()) ? 14 : 15;
416 process.append( id4, status4, 2, 0, 0, 0, 0, 0,
417 phaseSpacePtr->p(4), phaseSpacePtr->m(4));
422 process[3].mothers( 1, 2);
423 process[4].mothers( 1, 2);
424 int id5 = sigmaProcessPtr->id(5);
426 process.append( id5, status5, 1, 2, 0, 0, 0, 0,
427 phaseSpacePtr->p(5), phaseSpacePtr->m(5));
437 newPos.reserve(lhaUpPtr->sizePart());
439 for (
int iNew = 0; iNew < lhaUpPtr->sizePart(); ++iNew) {
442 for (
int i = 1; i < lhaUpPtr->sizePart(); ++i)
443 if (lhaUpPtr->mother1(i) == newPos[iNew]) newPos.push_back(i);
444 if (
int(newPos.size()) <= iNew)
break;
448 scalup = lhaUpPtr->scale();
450 double scalePr = (scale < 0.) ? sqrt(Q2Fac()) : scale;
451 process.scale( scalePr);
454 for (
int i = 1; i < lhaUpPtr->sizePart(); ++i) {
455 int iOld = newPos[i];
456 int id = lhaUpPtr->id(iOld);
457 if (i == 1 && abs(
id) == idRenameBeams)
id = 16;
458 if (i == 2 && abs(
id) == idRenameBeams)
id = -16;
461 int lhaStatus = lhaUpPtr->status(iOld);
463 if (lhaStatus == 2 || lhaStatus == 3) status = -22;
464 if (lhaStatus == 1) status = 23;
467 int mother1Old = lhaUpPtr->mother1(iOld);
468 int mother2Old = lhaUpPtr->mother2(iOld);
471 for (
int im = 1; im < i; ++im) {
472 if (mother1Old == newPos[im]) mother1 = im + 2;
473 if (mother2Old == newPos[im]) mother2 = im + 2;
475 if (i <= 2) mother1 = i;
478 if (mother1 > 0 && mother2 == mother1) {
479 int sister1 = process[mother1].daughter1();
480 int sister2 = process[mother1].daughter2();
481 if (sister2 != sister1 && sister2 != 0) mother2 = 0;
488 for (
int im = i + 1; im < lhaUpPtr->sizePart(); ++im) {
489 if (lhaUpPtr->mother1(newPos[im]) == iOld
490 || lhaUpPtr->mother2(newPos[im]) == iOld) {
491 if (daughter1 == 0 || im + 2 < daughter1) daughter1 = im + 2;
492 if (daughter2 == 0 || im + 2 > daughter2) daughter2 = im + 2;
496 if (daughter2 == daughter1) daughter2 = 0;
499 int colType = particleDataPtr->colType(
id);
500 int col1 = (colType == 1 || colType == 2 || abs(colType) == 3)
501 ? lhaUpPtr->col1(iOld) : 0;
502 int col2 = (colType == -1 || colType == 2 || abs(colType) == 3)
503 ? lhaUpPtr->col2(iOld) : 0;
506 double px = lhaUpPtr->px(iOld);
507 double py = lhaUpPtr->py(iOld);
508 double pz = lhaUpPtr->pz(iOld);
509 double e = lhaUpPtr->e(iOld);
510 double m = lhaUpPtr->m(iOld);
513 double pol = lhaUpPtr->spin(iOld);
516 double scaleShow = lhaUpPtr->scale(iOld);
519 double scaleNow = scalePr;
520 if (mother1 > 4) scaleNow = process[mother1].m();
521 if (scaleShow >= 0.0) scaleNow = scaleShow;
524 int iNow = process.append(
id, status, mother1, mother2, daughter1,
525 daughter2, col1, col2, Vec4(px, py, pz, e), m, scaleNow, pol);
528 double tau = lhaUpPtr->tau(iOld);
529 if ( (setLifetime == 1 && abs(
id) == 15) || setLifetime == 2)
530 tau = process[iNow].tau0() * rndmPtr->exp();
531 if (tau > 0.) process[iNow].tau(tau);
536 for (
int i = 3; i < process.size(); ++i) {
537 int iMother = process[i].mother1();
540 if ( process[i - 1].mother1() == iMother && process[i - 1].hasVertex() )
541 process[i].vProd( process[i - 1].vProd() );
544 else if ( process[iMother].hasVertex() || process[iMother].tau() > 0.)
545 process[i].vProd( process[iMother].vDec() );
549 int id1Now = process[3].id();
550 int id2Now = process[4].id();
564 double x1Now, x2Now, Q2FacNow, alphaEM, alphaS, Q2Ren, sHat;
570 x1Now = phaseSpacePtr->x1();
571 x2Now = phaseSpacePtr->x2();
574 pdf1 = sigmaProcessPtr->pdf1();
575 pdf2 = sigmaProcessPtr->pdf2();
576 Q2FacNow = sigmaProcessPtr->Q2Fac();
577 alphaEM = sigmaProcessPtr->alphaEMRen();
578 alphaS = sigmaProcessPtr->alphaSRen();
579 Q2Ren = sigmaProcessPtr->Q2Ren();
580 sHat = phaseSpacePtr->sHat();
581 tHat = phaseSpacePtr->tHat();
582 uHat = phaseSpacePtr->uHat();
583 pTHatL = phaseSpacePtr->pTHat();
584 m3 = phaseSpacePtr->m(3);
585 m4 = phaseSpacePtr->m(4);
586 theta = phaseSpacePtr->thetaHat();
587 phi = phaseSpacePtr->phiHat();
592 x1Now = 2. * process[3].e() / infoPtr->eCM();
593 x2Now = 2. * process[4].e() / infoPtr->eCM();
594 Q2FacNow = (scale < 0.) ? sigmaProcessPtr->Q2Fac() : pow2(scale);
595 alphaEM = lhaUpPtr->alphaQED();
596 if (alphaEM < 0.001) alphaEM = sigmaProcessPtr->alphaEMRen();
597 alphaS = lhaUpPtr->alphaQCD();
598 if (alphaS < 0.001) alphaS = sigmaProcessPtr->alphaSRen();
599 Q2Ren = (scale < 0.) ? sigmaProcessPtr->Q2Ren() : pow2(scale);
600 Vec4 pSum = process[3].p() + process[4].p();
604 for (
int i = 5; i < process.size(); ++i)
605 if (process[i].mother1() == 3 && process[i].mother2() == 4) {
607 pTLH += process[i].pT();
609 if (nFinLH > 0) pTHatL = pTLH / nFinLH;
612 id1pdf = lhaUpPtr->id1pdf();
613 id2pdf = lhaUpPtr->id2pdf();
614 x1pdf = lhaUpPtr->x1pdf();
615 x2pdf = lhaUpPtr->x2pdf();
616 if (lhaUpPtr->pdfIsSet()) {
617 pdf1 = lhaUpPtr->pdf1();
618 pdf2 = lhaUpPtr->pdf2();
619 Q2FacNow = pow2(lhaUpPtr->scalePDF());
624 Vec4 pDifT = process[3].p() - process[5].p();
625 tHat = pDifT * pDifT;
626 Vec4 pDifU = process[3].p() - process[6].p();
627 uHat = pDifU * pDifU;
628 pTHatL = process[5].pT();
631 Vec4 p5 = process[5].p();
634 phi = process[5].phi();
640 infoPtr->setPDFalpha( 0, id1pdf, id2pdf, x1pdf, x2pdf, pdf1, pdf2,
641 Q2FacNow, alphaEM, alphaS, Q2Ren, scalup);
642 infoPtr->setKin( 0, id1Now, id2Now, x1Now, x2Now, sHat, tHat, uHat,
643 pTHatL, m3, m4, theta, phi);
645 infoPtr->setTypeMPI( code(), pTHatL);
649 int codeSub = lhaUpPtr->idProcess();
650 ostringstream nameSub;
651 nameSub <<
"user process " << codeSub;
652 infoPtr->setSubType( 0, nameSub.str(), codeSub, nFin);
665 bool ProcessContainer::constructDecays(
Event& process) {
669 process.append( 90, -11, 0, 0, 0, 0, 0, 0, Vec4(0., 0., 0., 0.), 0., 0. );
674 newPos.reserve(lhaUpPtr->sizePart());
676 for (
int iNew = 0; iNew < lhaUpPtr->sizePart(); ++iNew) {
679 for (
int i = 1; i < lhaUpPtr->sizePart(); ++i)
680 if (lhaUpPtr->mother1(i) == newPos[iNew]) newPos.push_back(i);
681 if (
int(newPos.size()) <= iNew)
break;
685 double scale = lhaUpPtr->scale();
686 process.scale( scale);
690 for (
int i = 1; i < lhaUpPtr->sizePart(); ++i) {
691 int iOld = newPos[i];
692 int id = lhaUpPtr->id(iOld);
695 int lhaStatus = lhaUpPtr->status(iOld);
697 if (lhaStatus == 2 || lhaStatus == 3) status = -22;
698 if (lhaStatus == 1) status = 23;
701 int mother1Old = lhaUpPtr->mother1(iOld);
702 int mother2Old = lhaUpPtr->mother2(iOld);
705 for (
int im = 1; im < i; ++im) {
706 if (mother1Old == newPos[im]) mother1 = im;
707 if (mother2Old == newPos[im]) mother2 = im;
711 if (mother1 > 0 && mother2 == mother1) {
712 int sister1 = process[mother1].daughter1();
713 int sister2 = process[mother1].daughter2();
714 if (sister2 != sister1 && sister2 != 0) mother2 = 0;
720 for (
int im = i + 1; im < lhaUpPtr->sizePart(); ++im) {
721 if (lhaUpPtr->mother1(newPos[im]) == iOld
722 || lhaUpPtr->mother2(newPos[im]) == iOld) {
723 if (daughter1 == 0 || im < daughter1) daughter1 = im;
724 if (daughter2 == 0 || im > daughter2) daughter2 = im;
728 if (daughter2 == daughter1) daughter2 = 0;
731 int colType = particleDataPtr->colType(
id);
732 int col1 = (colType == 1 || colType == 2 || abs(colType) == 3)
733 ? lhaUpPtr->col1(iOld) : 0;
734 int col2 = (colType == -1 || colType == 2 || abs(colType) == 3)
735 ? lhaUpPtr->col2(iOld) : 0;
738 double px = lhaUpPtr->px(iOld);
739 double py = lhaUpPtr->py(iOld);
740 double pz = lhaUpPtr->pz(iOld);
741 double e = lhaUpPtr->e(iOld);
742 double m = lhaUpPtr->m(iOld);
743 if (status > 0) pSum += Vec4( px, py, pz, e);
746 double pol = lhaUpPtr->spin(iOld);
749 double scaleNow = scale;
750 if (mother1 > 0) scaleNow = process[mother1].m();
753 int iNow = process.append(
id, status, mother1, mother2, daughter1,
754 daughter2, col1, col2, Vec4(px, py, pz, e), m, scaleNow, pol);
757 double tau = lhaUpPtr->tau(iOld);
758 if ( (setLifetime == 1 && abs(
id) == 15) || setLifetime == 2)
759 tau = process[iNow].tau0() * rndmPtr->exp();
760 if (tau > 0.) process[iNow].tau(tau);
765 process[0].m( pSum.mCalc());
768 for (
int i = 1; i < process.size(); ++i) {
769 int iMother = process[i].mother1();
772 if ( process[i - 1].mother1() == iMother && process[i - 1].hasVertex()
773 && i > 1) process[i].vProd( process[i - 1].vProd() );
776 else if ( process[iMother].hasVertex() || process[iMother].tau() > 0.)
777 process[i].vProd( process[iMother].vDec() );
789 bool ProcessContainer::decayResonances(
Event& process) {
793 vector<int> statusSave( process.size());
794 for (
int i = 0; i < process.size(); ++i)
795 statusSave[i] = process[i].status();
796 bool physical =
true;
797 bool newChain =
false;
798 bool newFlavours =
false;
805 physical = resDecaysPtr->next( process);
806 if (!physical)
return false;
810 newFlavours = ( sigmaProcessPtr->weightDecayFlav( process)
815 process.restoreSize();
816 for (
int i = 0; i < process.size(); ++i)
817 process[i].status( statusSave[i]);
821 }
while (newFlavours);
824 phaseSpacePtr->decayKinematics( process);
828 newChain = userHooksPtr->doVetoResonanceDecays( process);
832 process.restoreSize();
833 for (
int i = 0; i < process.size(); ++i)
834 process[i].status( statusSave[i]);
849 void ProcessContainer::reset() {
869 void ProcessContainer::sigmaDelta() {
876 if (nAcc == 0)
return;
879 double nTryInv = 1. / nTry;
880 double nSelInv = 1. / nSel;
881 double nAccInv = 1. / nAcc;
882 sigmaAvg = sigmaSum * nTryInv;
883 double fracAcc = nAcc * nSelInv;
884 sigmaFin = sigmaAvg * fracAcc;
886 if (nAcc == 1)
return;
890 double delta2Sig = (lhaStratAbs != 3)
891 ? (sigma2Sum * nTryInv - pow2(sigmaAvg)) * nTryInv / pow2(sigmaAvg)
892 : pow2( lhaUpPtr->xErrSum() / lhaUpPtr->xSecSum());
893 double delta2Veto = (nSel - nAcc) * nAccInv * nSelInv;
894 double delta2Sum = delta2Sig + delta2Veto;
895 deltaFin = sqrtpos(delta2Sum) * sigmaFin;
908 bool SetupContainers::init(vector<ProcessContainer*>& containerPtrs,
909 Info *infoPtr, Settings& settings, ParticleData* particleDataPtr,
910 Couplings* couplings) {
913 if (containerPtrs.size() > 0) {
914 for (
int i = 0; i < int(containerPtrs.size()); ++i)
915 delete containerPtrs[i];
916 containerPtrs.clear();
918 SigmaProcess* sigmaPtr;
921 bool softQCD = settings.flag(
"SoftQCD:all");
922 bool inelastic = settings.flag(
"SoftQCD:inelastic");
923 if (softQCD || inelastic || settings.flag(
"SoftQCD:nonDiffractive")) {
924 sigmaPtr =
new Sigma0nonDiffractive;
925 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
927 if (softQCD || settings.flag(
"SoftQCD:elastic")) {
928 sigmaPtr =
new Sigma0AB2AB;
929 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
931 if (softQCD || inelastic || settings.flag(
"SoftQCD:singleDiffractive")) {
932 sigmaPtr =
new Sigma0AB2XB;
933 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
934 sigmaPtr =
new Sigma0AB2AX;
935 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
937 if (softQCD || inelastic || settings.flag(
"SoftQCD:doubleDiffractive")) {
938 sigmaPtr =
new Sigma0AB2XX;
939 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
941 if (softQCD || inelastic || settings.flag(
"SoftQCD:centralDiffractive")) {
942 sigmaPtr =
new Sigma0AB2AXB;
943 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
947 bool hardQCD = settings.flag(
"HardQCD:all");
948 if (hardQCD || settings.flag(
"HardQCD:gg2gg")) {
949 sigmaPtr =
new Sigma2gg2gg;
950 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
952 if (hardQCD || settings.flag(
"HardQCD:gg2qqbar")) {
953 sigmaPtr =
new Sigma2gg2qqbar;
954 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
956 if (hardQCD || settings.flag(
"HardQCD:qg2qg")) {
957 sigmaPtr =
new Sigma2qg2qg;
958 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
960 if (hardQCD || settings.flag(
"HardQCD:qq2qq")) {
961 sigmaPtr =
new Sigma2qq2qq;
962 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
964 if (hardQCD || settings.flag(
"HardQCD:qqbar2gg")) {
965 sigmaPtr =
new Sigma2qqbar2gg;
966 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
968 if (hardQCD || settings.flag(
"HardQCD:qqbar2qqbarNew")) {
969 sigmaPtr =
new Sigma2qqbar2qqbarNew;
970 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
974 bool hardccbar = settings.flag(
"HardQCD:hardccbar");
975 if (hardQCD || hardccbar || settings.flag(
"HardQCD:gg2ccbar")) {
976 sigmaPtr =
new Sigma2gg2QQbar(4, 121);
977 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
979 if (hardQCD || hardccbar || settings.flag(
"HardQCD:qqbar2ccbar")) {
980 sigmaPtr =
new Sigma2qqbar2QQbar(4, 122);
981 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
983 bool hardbbbar = settings.flag(
"HardQCD:hardbbbar");
984 if (hardQCD || hardbbbar || settings.flag(
"HardQCD:gg2bbbar")) {
985 sigmaPtr =
new Sigma2gg2QQbar(5, 123);
986 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
988 if (hardQCD || hardbbbar || settings.flag(
"HardQCD:qqbar2bbbar")) {
989 sigmaPtr =
new Sigma2qqbar2QQbar(5, 124);
990 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
994 bool hardQCD3parton = settings.flag(
"HardQCD:3parton");
995 if (hardQCD3parton || settings.flag(
"HardQCD:gg2ggg")) {
996 sigmaPtr =
new Sigma3gg2ggg;
997 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
999 if (hardQCD3parton || settings.flag(
"HardQCD:qqbar2ggg")) {
1000 sigmaPtr =
new Sigma3qqbar2ggg;
1001 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1003 if (hardQCD3parton || settings.flag(
"HardQCD:qg2qgg")) {
1004 sigmaPtr =
new Sigma3qg2qgg;
1005 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1007 if (hardQCD3parton || settings.flag(
"HardQCD:qq2qqgDiff")) {
1008 sigmaPtr =
new Sigma3qq2qqgDiff;
1009 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1011 if (hardQCD3parton || settings.flag(
"HardQCD:qq2qqgSame")) {
1012 sigmaPtr =
new Sigma3qq2qqgSame;
1013 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1015 if (hardQCD3parton || settings.flag(
"HardQCD:qqbar2qqbargDiff")) {
1016 sigmaPtr =
new Sigma3qqbar2qqbargDiff;
1017 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1019 if (hardQCD3parton || settings.flag(
"HardQCD:qqbar2qqbargSame")) {
1020 sigmaPtr =
new Sigma3qqbar2qqbargSame;
1021 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1023 if (hardQCD3parton || settings.flag(
"HardQCD:gg2qqbarg")) {
1024 sigmaPtr =
new Sigma3gg2qqbarg;
1025 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1027 if (hardQCD3parton || settings.flag(
"HardQCD:qg2qqqbarDiff")) {
1028 sigmaPtr =
new Sigma3qg2qqqbarDiff;
1029 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1031 if (hardQCD3parton || settings.flag(
"HardQCD:qg2qqqbarSame")) {
1032 sigmaPtr =
new Sigma3qg2qqqbarSame;
1033 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1037 bool promptPhotons = settings.flag(
"PromptPhoton:all");
1039 || settings.flag(
"PromptPhoton:qg2qgamma")) {
1040 sigmaPtr =
new Sigma2qg2qgamma;
1041 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1044 || settings.flag(
"PromptPhoton:qqbar2ggamma")) {
1045 sigmaPtr =
new Sigma2qqbar2ggamma;
1046 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1049 || settings.flag(
"PromptPhoton:gg2ggamma")) {
1050 sigmaPtr =
new Sigma2gg2ggamma;
1051 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1054 || settings.flag(
"PromptPhoton:ffbar2gammagamma")) {
1055 sigmaPtr =
new Sigma2ffbar2gammagamma;
1056 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1059 || settings.flag(
"PromptPhoton:gg2gammagamma")) {
1060 sigmaPtr =
new Sigma2gg2gammagamma;
1061 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1065 bool weakBosonExchanges = settings.flag(
"WeakBosonExchange:all");
1066 if (weakBosonExchanges
1067 || settings.flag(
"WeakBosonExchange:ff2ff(t:gmZ)")) {
1068 sigmaPtr =
new Sigma2ff2fftgmZ;
1069 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1071 if (weakBosonExchanges
1072 || settings.flag(
"WeakBosonExchange:ff2ff(t:W)")) {
1073 sigmaPtr =
new Sigma2ff2fftW;
1074 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1078 bool weakSingleBosons = settings.flag(
"WeakSingleBoson:all");
1079 if (weakSingleBosons
1080 || settings.flag(
"WeakSingleBoson:ffbar2gmZ")) {
1081 sigmaPtr =
new Sigma1ffbar2gmZ;
1082 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1084 if (weakSingleBosons
1085 || settings.flag(
"WeakSingleBoson:ffbar2W")) {
1086 sigmaPtr =
new Sigma1ffbar2W;
1087 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1092 if (settings.flag(
"WeakSingleBoson:ffbar2ffbar(s:gm)")) {
1093 sigmaPtr =
new Sigma2ffbar2ffbarsgm;
1094 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1098 if (settings.flag(
"WeakSingleBoson:ffbar2ffbar(s:gmZ)")) {
1099 sigmaPtr =
new Sigma2ffbar2ffbarsgmZ;
1100 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1102 if (settings.flag(
"WeakSingleBoson:ffbar2ffbar(s:W)")) {
1103 sigmaPtr =
new Sigma2ffbar2ffbarsW;
1104 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1108 bool weakDoubleBosons = settings.flag(
"WeakDoubleBoson:all");
1109 if (weakDoubleBosons
1110 || settings.flag(
"WeakDoubleBoson:ffbar2gmZgmZ")) {
1111 sigmaPtr =
new Sigma2ffbar2gmZgmZ;
1112 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1114 if (weakDoubleBosons
1115 || settings.flag(
"WeakDoubleBoson:ffbar2ZW")) {
1116 sigmaPtr =
new Sigma2ffbar2ZW;
1117 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1119 if (weakDoubleBosons
1120 || settings.flag(
"WeakDoubleBoson:ffbar2WW")) {
1121 sigmaPtr =
new Sigma2ffbar2WW;
1122 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1126 bool weakBosonAndPartons = settings.flag(
"WeakBosonAndParton:all");
1127 if (weakBosonAndPartons
1128 || settings.flag(
"WeakBosonAndParton:qqbar2gmZg")) {
1129 sigmaPtr =
new Sigma2qqbar2gmZg;
1130 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1132 if (weakBosonAndPartons
1133 || settings.flag(
"WeakBosonAndParton:qg2gmZq")) {
1134 sigmaPtr =
new Sigma2qg2gmZq;
1135 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1137 if (weakBosonAndPartons
1138 || settings.flag(
"WeakBosonAndParton:ffbar2gmZgm")) {
1139 sigmaPtr =
new Sigma2ffbar2gmZgm;
1140 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1142 if (weakBosonAndPartons
1143 || settings.flag(
"WeakBosonAndParton:fgm2gmZf")) {
1144 sigmaPtr =
new Sigma2fgm2gmZf;
1145 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1147 if (weakBosonAndPartons
1148 || settings.flag(
"WeakBosonAndParton:qqbar2Wg")) {
1149 sigmaPtr =
new Sigma2qqbar2Wg;
1150 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1152 if (weakBosonAndPartons
1153 || settings.flag(
"WeakBosonAndParton:qg2Wq")) {
1154 sigmaPtr =
new Sigma2qg2Wq;
1155 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1157 if (weakBosonAndPartons
1158 || settings.flag(
"WeakBosonAndParton:ffbar2Wgm")) {
1159 sigmaPtr =
new Sigma2ffbar2Wgm;
1160 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1162 if (weakBosonAndPartons
1163 || settings.flag(
"WeakBosonAndParton:fgm2Wf")) {
1164 sigmaPtr =
new Sigma2fgm2Wf;
1165 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1169 bool photonCollisions = settings.flag(
"PhotonCollision:all");
1170 if (photonCollisions || settings.flag(
"PhotonCollision:gmgm2qqbar")) {
1171 sigmaPtr =
new Sigma2gmgm2ffbar(1, 261);
1172 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1174 if (photonCollisions || settings.flag(
"PhotonCollision:gmgm2ccbar")) {
1175 sigmaPtr =
new Sigma2gmgm2ffbar(4, 262);
1176 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1178 if (photonCollisions || settings.flag(
"PhotonCollision:gmgm2bbbar")) {
1179 sigmaPtr =
new Sigma2gmgm2ffbar(5, 263);
1180 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1182 if (photonCollisions || settings.flag(
"PhotonCollision:gmgm2ee")) {
1183 sigmaPtr =
new Sigma2gmgm2ffbar(11, 264);
1184 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1186 if (photonCollisions || settings.flag(
"PhotonCollision:gmgm2mumu")) {
1187 sigmaPtr =
new Sigma2gmgm2ffbar(13, 265);
1188 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1190 if (photonCollisions || settings.flag(
"PhotonCollision:gmgm2tautau")) {
1191 sigmaPtr =
new Sigma2gmgm2ffbar(15, 266);
1192 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1196 charmonium = SigmaOniaSetup(infoPtr, &settings, particleDataPtr, 4);
1197 bottomonium = SigmaOniaSetup(infoPtr, &settings, particleDataPtr, 5);
1198 vector<SigmaProcess*> charmoniumSigmaPtrs, bottomoniumSigmaPtrs;
1199 charmonium.setupSigma2gg(charmoniumSigmaPtrs);
1200 charmonium.setupSigma2qg(charmoniumSigmaPtrs);
1201 charmonium.setupSigma2qq(charmoniumSigmaPtrs);
1202 bottomonium.setupSigma2gg(bottomoniumSigmaPtrs);
1203 bottomonium.setupSigma2qg(bottomoniumSigmaPtrs);
1204 bottomonium.setupSigma2qq(bottomoniumSigmaPtrs);
1205 for (
unsigned int i = 0; i < charmoniumSigmaPtrs.size(); ++i)
1206 containerPtrs.push_back(
new ProcessContainer(charmoniumSigmaPtrs[i]) );
1207 for (
unsigned int i = 0; i < bottomoniumSigmaPtrs.size(); ++i)
1208 containerPtrs.push_back(
new ProcessContainer(bottomoniumSigmaPtrs[i]) );
1211 bool tops = settings.flag(
"Top:all");
1212 if (tops || settings.flag(
"Top:gg2ttbar")) {
1213 sigmaPtr =
new Sigma2gg2QQbar(6, 601);
1214 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1216 if (tops || settings.flag(
"Top:qqbar2ttbar")) {
1217 sigmaPtr =
new Sigma2qqbar2QQbar(6, 602);
1218 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1220 if (tops || settings.flag(
"Top:qq2tq(t:W)")) {
1221 sigmaPtr =
new Sigma2qq2QqtW(6, 603);
1222 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1224 if (tops || settings.flag(
"Top:ffbar2ttbar(s:gmZ)")) {
1225 sigmaPtr =
new Sigma2ffbar2FFbarsgmZ(6, 604);
1226 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1228 if (tops || settings.flag(
"Top:ffbar2tqbar(s:W)")) {
1229 sigmaPtr =
new Sigma2ffbar2FfbarsW(6, 0, 605);
1230 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1232 if (tops || settings.flag(
"Top:gmgm2ttbar")) {
1233 sigmaPtr =
new Sigma2gmgm2ffbar(6, 606);
1234 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1238 bool bPrimes = settings.flag(
"FourthBottom:all");
1239 if (bPrimes || settings.flag(
"FourthBottom:gg2bPrimebPrimebar")) {
1240 sigmaPtr =
new Sigma2gg2QQbar(7, 801);
1241 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1243 if (bPrimes || settings.flag(
"FourthBottom:qqbar2bPrimebPrimebar")) {
1244 sigmaPtr =
new Sigma2qqbar2QQbar(7, 802);
1245 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1247 if (bPrimes || settings.flag(
"FourthBottom:qq2bPrimeq(t:W)")) {
1248 sigmaPtr =
new Sigma2qq2QqtW(7, 803);
1249 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1251 if (bPrimes || settings.flag(
"FourthBottom:ffbar2bPrimebPrimebar(s:gmZ)")) {
1252 sigmaPtr =
new Sigma2ffbar2FFbarsgmZ(7, 804);
1253 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1255 if (bPrimes || settings.flag(
"FourthBottom:ffbar2bPrimeqbar(s:W)")) {
1256 sigmaPtr =
new Sigma2ffbar2FfbarsW(7, 0, 805);
1257 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1259 if (bPrimes || settings.flag(
"FourthBottom:ffbar2bPrimetbar(s:W)")) {
1260 sigmaPtr =
new Sigma2ffbar2FfbarsW(7, 6, 806);
1261 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1265 bool tPrimes = settings.flag(
"FourthTop:all");
1266 if (tPrimes || settings.flag(
"FourthTop:gg2tPrimetPrimebar")) {
1267 sigmaPtr =
new Sigma2gg2QQbar(8, 821);
1268 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1270 if (tPrimes || settings.flag(
"FourthTop:qqbar2tPrimetPrimebar")) {
1271 sigmaPtr =
new Sigma2qqbar2QQbar(8, 822);
1272 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1274 if (tPrimes || settings.flag(
"FourthTop:qq2tPrimeq(t:W)")) {
1275 sigmaPtr =
new Sigma2qq2QqtW(8, 823);
1276 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1278 if (tPrimes || settings.flag(
"FourthTop:ffbar2tPrimetPrimebar(s:gmZ)")) {
1279 sigmaPtr =
new Sigma2ffbar2FFbarsgmZ(8, 824);
1280 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1282 if (tPrimes || settings.flag(
"FourthTop:ffbar2tPrimeqbar(s:W)")) {
1283 sigmaPtr =
new Sigma2ffbar2FfbarsW(8, 0, 825);
1284 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1288 if (bPrimes || tPrimes
1289 || settings.flag(
"FourthPair:ffbar2tPrimebPrimebar(s:W)")) {
1290 sigmaPtr =
new Sigma2ffbar2FfbarsW(8, 7, 841);
1291 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1293 if (settings.flag(
"FourthPair:ffbar2tauPrimenuPrimebar(s:W)")) {
1294 sigmaPtr =
new Sigma2ffbar2FfbarsW(17, 18, 842);
1295 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1299 bool useBSMHiggses = settings.flag(
"Higgs:useBSM");
1302 if (!useBSMHiggses) {
1303 bool HiggsesSM = settings.flag(
"HiggsSM:all");
1304 if (HiggsesSM || settings.flag(
"HiggsSM:ffbar2H")) {
1305 sigmaPtr =
new Sigma1ffbar2H(0);
1306 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1308 if (HiggsesSM || settings.flag(
"HiggsSM:gg2H")) {
1309 sigmaPtr =
new Sigma1gg2H(0);
1310 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1312 if (HiggsesSM || settings.flag(
"HiggsSM:gmgm2H")) {
1313 sigmaPtr =
new Sigma1gmgm2H(0);
1314 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1316 if (HiggsesSM || settings.flag(
"HiggsSM:ffbar2HZ")) {
1317 sigmaPtr =
new Sigma2ffbar2HZ(0);
1318 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1320 if (HiggsesSM || settings.flag(
"HiggsSM:ffbar2HW")) {
1321 sigmaPtr =
new Sigma2ffbar2HW(0);
1322 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1324 if (HiggsesSM || settings.flag(
"HiggsSM:ff2Hff(t:ZZ)")) {
1325 sigmaPtr =
new Sigma3ff2HfftZZ(0);
1326 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1328 if (HiggsesSM || settings.flag(
"HiggsSM:ff2Hff(t:WW)")) {
1329 sigmaPtr =
new Sigma3ff2HfftWW(0);
1330 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1332 if (HiggsesSM || settings.flag(
"HiggsSM:gg2Httbar")) {
1333 sigmaPtr =
new Sigma3gg2HQQbar(6,0);
1334 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1336 if (HiggsesSM || settings.flag(
"HiggsSM:qqbar2Httbar")) {
1337 sigmaPtr =
new Sigma3qqbar2HQQbar(6,0);
1338 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1342 if (settings.flag(
"HiggsSM:qg2Hq")) {
1343 sigmaPtr =
new Sigma2qg2Hq(4,0);
1344 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1345 sigmaPtr =
new Sigma2qg2Hq(5,0);
1346 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1348 if (settings.flag(
"HiggsSM:gg2Hbbbar")) {
1349 sigmaPtr =
new Sigma3gg2HQQbar(5,0);
1350 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1352 if (settings.flag(
"HiggsSM:qqbar2Hbbbar")) {
1353 sigmaPtr =
new Sigma3qqbar2HQQbar(5,0);
1354 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1356 if (settings.flag(
"HiggsSM:gg2Hg(l:t)")) {
1357 sigmaPtr =
new Sigma2gg2Hglt(0);
1358 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1360 if (settings.flag(
"HiggsSM:qg2Hq(l:t)")) {
1361 sigmaPtr =
new Sigma2qg2Hqlt(0);
1362 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1364 if (settings.flag(
"HiggsSM:qqbar2Hg(l:t)")) {
1365 sigmaPtr =
new Sigma2qqbar2Hglt(0);
1366 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1371 if (useBSMHiggses) {
1372 bool HiggsesBSM = settings.flag(
"HiggsBSM:all");
1375 bool HiggsesH1 = settings.flag(
"HiggsBSM:allH1");
1376 if (HiggsesBSM || HiggsesH1 || settings.flag(
"HiggsBSM:ffbar2H1")) {
1377 sigmaPtr =
new Sigma1ffbar2H(1);
1378 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1380 if (HiggsesBSM || HiggsesH1 || settings.flag(
"HiggsBSM:gg2H1")) {
1381 sigmaPtr =
new Sigma1gg2H(1);
1382 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1384 if (HiggsesBSM || HiggsesH1 || settings.flag(
"HiggsBSM:gmgm2H1")) {
1385 sigmaPtr =
new Sigma1gmgm2H(1);
1386 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1388 if (HiggsesBSM || HiggsesH1 || settings.flag(
"HiggsBSM:ffbar2H1Z")) {
1389 sigmaPtr =
new Sigma2ffbar2HZ(1);
1390 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1392 if (HiggsesBSM || HiggsesH1 || settings.flag(
"HiggsBSM:ffbar2H1W")) {
1393 sigmaPtr =
new Sigma2ffbar2HW(1);
1394 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1396 if (HiggsesBSM || HiggsesH1 || settings.flag(
"HiggsBSM:ff2H1ff(t:ZZ)")) {
1397 sigmaPtr =
new Sigma3ff2HfftZZ(1);
1398 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1400 if (HiggsesBSM || HiggsesH1 || settings.flag(
"HiggsBSM:ff2H1ff(t:WW)")) {
1401 sigmaPtr =
new Sigma3ff2HfftWW(1);
1402 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1404 if (HiggsesBSM || HiggsesH1 || settings.flag(
"HiggsBSM:gg2H1ttbar")) {
1405 sigmaPtr =
new Sigma3gg2HQQbar(6,1);
1406 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1408 if (HiggsesBSM || HiggsesH1 || settings.flag(
"HiggsBSM:qqbar2H1ttbar")) {
1409 sigmaPtr =
new Sigma3qqbar2HQQbar(6,1);
1410 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1414 if (settings.flag(
"HiggsBSM:qg2H1q")) {
1415 sigmaPtr =
new Sigma2qg2Hq(4,1);
1416 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1417 sigmaPtr =
new Sigma2qg2Hq(5,1);
1418 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1420 if (settings.flag(
"HiggsBSM:gg2H1bbbar")) {
1421 sigmaPtr =
new Sigma3gg2HQQbar(5,1);
1422 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1424 if (settings.flag(
"HiggsBSM:qqbar2H1bbbar")) {
1425 sigmaPtr =
new Sigma3qqbar2HQQbar(5,1);
1426 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1428 if (settings.flag(
"HiggsBSM:gg2H1g(l:t)")) {
1429 sigmaPtr =
new Sigma2gg2Hglt(1);
1430 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1432 if (settings.flag(
"HiggsBSM:qg2H1q(l:t)")) {
1433 sigmaPtr =
new Sigma2qg2Hqlt(1);
1434 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1436 if (settings.flag(
"HiggsBSM:qqbar2H1g(l:t)")) {
1437 sigmaPtr =
new Sigma2qqbar2Hglt(1);
1438 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1442 bool HiggsesH2 = settings.flag(
"HiggsBSM:allH2");
1443 if (HiggsesBSM || HiggsesH2 || settings.flag(
"HiggsBSM:ffbar2H2")) {
1444 sigmaPtr =
new Sigma1ffbar2H(2);
1445 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1447 if (HiggsesBSM || HiggsesH2 || settings.flag(
"HiggsBSM:gg2H2")) {
1448 sigmaPtr =
new Sigma1gg2H(2);
1449 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1451 if (HiggsesBSM || HiggsesH2 || settings.flag(
"HiggsBSM:gmgm2H2")) {
1452 sigmaPtr =
new Sigma1gmgm2H(2);
1453 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1455 if (HiggsesBSM || HiggsesH2 || settings.flag(
"HiggsBSM:ffbar2H2Z")) {
1456 sigmaPtr =
new Sigma2ffbar2HZ(2);
1457 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1459 if (HiggsesBSM || HiggsesH2 || settings.flag(
"HiggsBSM:ffbar2H2W")) {
1460 sigmaPtr =
new Sigma2ffbar2HW(2);
1461 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1463 if (HiggsesBSM || HiggsesH2 || settings.flag(
"HiggsBSM:ff2H2ff(t:ZZ)")) {
1464 sigmaPtr =
new Sigma3ff2HfftZZ(2);
1465 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1467 if (HiggsesBSM || HiggsesH2 || settings.flag(
"HiggsBSM:ff2H2ff(t:WW)")) {
1468 sigmaPtr =
new Sigma3ff2HfftWW(2);
1469 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1471 if (HiggsesBSM || HiggsesH2 || settings.flag(
"HiggsBSM:gg2H2ttbar")) {
1472 sigmaPtr =
new Sigma3gg2HQQbar(6,2);
1473 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1475 if (HiggsesBSM || HiggsesH2 || settings.flag(
"HiggsBSM:qqbar2H2ttbar")) {
1476 sigmaPtr =
new Sigma3qqbar2HQQbar(6,2);
1477 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1481 if (settings.flag(
"HiggsBSM:qg2H2q")) {
1482 sigmaPtr =
new Sigma2qg2Hq(4,2);
1483 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1484 sigmaPtr =
new Sigma2qg2Hq(5,2);
1485 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1487 if (settings.flag(
"HiggsBSM:gg2H2bbbar")) {
1488 sigmaPtr =
new Sigma3gg2HQQbar(5,2);
1489 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1491 if (settings.flag(
"HiggsBSM:qqbar2H2bbbar")) {
1492 sigmaPtr =
new Sigma3qqbar2HQQbar(5,2);
1493 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1495 if (settings.flag(
"HiggsBSM:gg2H2g(l:t)")) {
1496 sigmaPtr =
new Sigma2gg2Hglt(2);
1497 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1499 if (settings.flag(
"HiggsBSM:qg2H2q(l:t)")) {
1500 sigmaPtr =
new Sigma2qg2Hqlt(2);
1501 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1503 if (settings.flag(
"HiggsBSM:qqbar2H2g(l:t)")) {
1504 sigmaPtr =
new Sigma2qqbar2Hglt(2);
1505 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1509 bool HiggsesA3 = settings.flag(
"HiggsBSM:allA3");
1510 if (HiggsesBSM || HiggsesA3 || settings.flag(
"HiggsBSM:ffbar2A3")) {
1511 sigmaPtr =
new Sigma1ffbar2H(3);
1512 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1514 if (HiggsesBSM || HiggsesA3 || settings.flag(
"HiggsBSM:gg2A3")) {
1515 sigmaPtr =
new Sigma1gg2H(3);
1516 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1518 if (HiggsesBSM || HiggsesA3 || settings.flag(
"HiggsBSM:gmgm2A3")) {
1519 sigmaPtr =
new Sigma1gmgm2H(3);
1520 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1522 if (HiggsesBSM || HiggsesA3 || settings.flag(
"HiggsBSM:ffbar2A3Z")) {
1523 sigmaPtr =
new Sigma2ffbar2HZ(3);
1524 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1526 if (HiggsesBSM || HiggsesA3 || settings.flag(
"HiggsBSM:ffbar2A3W")) {
1527 sigmaPtr =
new Sigma2ffbar2HW(3);
1528 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1530 if (HiggsesBSM || HiggsesA3 || settings.flag(
"HiggsBSM:ff2A3ff(t:ZZ)")) {
1531 sigmaPtr =
new Sigma3ff2HfftZZ(3);
1532 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1534 if (HiggsesBSM || HiggsesA3 || settings.flag(
"HiggsBSM:ff2A3ff(t:WW)")) {
1535 sigmaPtr =
new Sigma3ff2HfftWW(3);
1536 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1538 if (HiggsesBSM || HiggsesA3 || settings.flag(
"HiggsBSM:gg2A3ttbar")) {
1539 sigmaPtr =
new Sigma3gg2HQQbar(6,3);
1540 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1542 if (HiggsesBSM || HiggsesA3 || settings.flag(
"HiggsBSM:qqbar2A3ttbar")) {
1543 sigmaPtr =
new Sigma3qqbar2HQQbar(6,3);
1544 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1548 if (settings.flag(
"HiggsBSM:qg2A3q")) {
1549 sigmaPtr =
new Sigma2qg2Hq(4,3);
1550 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1551 sigmaPtr =
new Sigma2qg2Hq(5,3);
1552 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1554 if (settings.flag(
"HiggsBSM:gg2A3bbbar")) {
1555 sigmaPtr =
new Sigma3gg2HQQbar(5,3);
1556 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1558 if (settings.flag(
"HiggsBSM:qqbar2A3bbbar")) {
1559 sigmaPtr =
new Sigma3qqbar2HQQbar(5,3);
1560 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1562 if (settings.flag(
"HiggsBSM:gg2A3g(l:t)")) {
1563 sigmaPtr =
new Sigma2gg2Hglt(3);
1564 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1566 if (settings.flag(
"HiggsBSM:qg2A3q(l:t)")) {
1567 sigmaPtr =
new Sigma2qg2Hqlt(3);
1568 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1570 if (settings.flag(
"HiggsBSM:qqbar2A3g(l:t)")) {
1571 sigmaPtr =
new Sigma2qqbar2Hglt(3);
1572 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1576 bool HiggsesChg = settings.flag(
"HiggsBSM:allH+-");
1577 if (HiggsesBSM || HiggsesChg || settings.flag(
"HiggsBSM:ffbar2H+-")) {
1578 sigmaPtr =
new Sigma1ffbar2Hchg;
1579 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1581 if (HiggsesBSM || HiggsesChg || settings.flag(
"HiggsBSM:bg2H+-t")) {
1582 sigmaPtr =
new Sigma2qg2Hchgq(6, 1062,
"b g -> H+- t");
1583 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1587 bool HiggsesPairs = settings.flag(
"HiggsBSM:allHpair");
1588 if (HiggsesBSM || HiggsesPairs || settings.flag(
"HiggsBSM:ffbar2A3H1")) {
1589 sigmaPtr =
new Sigma2ffbar2A3H12(1);
1590 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1592 if (HiggsesBSM || HiggsesPairs || settings.flag(
"HiggsBSM:ffbar2A3H2")) {
1593 sigmaPtr =
new Sigma2ffbar2A3H12(2);
1594 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1596 if (HiggsesBSM || HiggsesPairs || settings.flag(
"HiggsBSM:ffbar2H+-H1")) {
1597 sigmaPtr =
new Sigma2ffbar2HchgH12(1);
1598 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1600 if (HiggsesBSM || HiggsesPairs || settings.flag(
"HiggsBSM:ffbar2H+-H2")) {
1601 sigmaPtr =
new Sigma2ffbar2HchgH12(2);
1602 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1604 if (HiggsesBSM || HiggsesPairs || settings.flag(
"HiggsBSM:ffbar2H+H-")) {
1605 sigmaPtr =
new Sigma2ffbar2HposHneg();
1606 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1611 if (couplings->isSUSY) {
1612 CoupSUSY* coupSUSY = (CoupSUSY *) couplings;
1614 bool SUSYs = settings.flag(
"SUSY:all");
1615 bool nmssm = settings.flag(
"SLHA:NMSSM");
1618 setupIdVecs( settings);
1622 if (nmssm) nNeut = 5;
1625 if (SUSYs || settings.flag(
"SUSY:gg2gluinogluino")) {
1627 if (allowIdVals( 1000021, 1000021)) {
1628 sigmaPtr =
new Sigma2gg2gluinogluino();
1629 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1632 if (SUSYs || settings.flag(
"SUSY:qqbar2gluinogluino")) {
1634 if (allowIdVals( 1000021, 1000021)) {
1635 sigmaPtr =
new Sigma2qqbar2gluinogluino();
1636 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1641 if (SUSYs || settings.flag(
"SUSY:qg2squarkgluino")) {
1643 for (
int idx = 1; idx <= 6; ++idx) {
1644 for (
int iso = 1; iso <= 2; ++iso) {
1646 int id3 = iso + ((idx <= 3)
1647 ? 1000000+2*(idx-1) : 2000000+2*(idx-4));
1650 if (!allowIdVals( id3, id4))
continue;
1651 sigmaPtr =
new Sigma2qg2squarkgluino(id3,iproc);
1652 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1658 if (SUSYs || settings.flag(
"SUSY:gg2squarkantisquark")) {
1660 for (
int idx = 1; idx <= 6; ++idx) {
1661 for (
int iso = 1; iso <= 2; ++iso) {
1663 int id = iso + ((idx <= 3)
1664 ? 1000000+2*(idx-1) : 2000000+2*(idx-4));
1666 if (!allowIdVals(
id,
id))
continue;
1667 sigmaPtr =
new Sigma2gg2squarkantisquark(
id,iproc);
1668 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1674 if (SUSYs || settings.flag(
"SUSY:qqbar2squarkantisquark")) {
1676 for (
int idx = 1; idx <= 6; ++idx) {
1677 for (
int iso = 1; iso <= 2; ++iso) {
1678 for (
int jso = iso; jso >= 1; --jso) {
1679 for (
int jdx = 1; jdx <= 6; ++jdx) {
1680 if (iso == jso && jdx < idx)
continue;
1681 int id1 = iso + ((idx <= 3) ? 1000000+2*(idx-1)
1682 : 2000000+2*(idx-4));
1683 int id2 = jso + ((jdx <= 3) ? 1000000+2*(jdx-1)
1684 : 2000000+2*(jdx-4));
1688 if (iso == jso && id1 != id2) iproc++;
1690 if (!allowIdVals( id1, id2))
continue;
1691 if (iso == jso && id1 != id2) {
1692 sigmaPtr =
new Sigma2qqbar2squarkantisquark(id1,-id2,iproc-1);
1693 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1694 sigmaPtr =
new Sigma2qqbar2squarkantisquark(id2,-id1,iproc);
1695 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1697 sigmaPtr =
new Sigma2qqbar2squarkantisquark(id1,-id2,iproc);
1698 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1707 if (SUSYs || settings.flag(
"SUSY:qq2squarksquark")) {
1709 for (
int idx = 1; idx <= 6; ++idx) {
1710 for (
int iso = 1; iso <= 2; ++iso) {
1711 for (
int jso = iso; jso >= 1; jso--) {
1712 for (
int jdx = 1; jdx <= 6; ++jdx) {
1713 if (iso == jso && jdx < idx)
continue;
1715 int id1 = iso + ((idx <= 3)
1716 ? 1000000+2*(idx-1) : 2000000+2*(idx-4));
1717 int id2 = jso + ((jdx <= 3)
1718 ? 1000000+2*(jdx-1) : 2000000+2*(jdx-4));
1720 if (!allowIdVals( id1, id2))
continue;
1721 sigmaPtr =
new Sigma2qq2squarksquark(id1,id2,iproc);
1722 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1730 if (SUSYs || settings.flag(
"SUSY:qg2chi0squark")) {
1732 for (
int iNeut= 1; iNeut <= nNeut; iNeut++) {
1733 for (
int idx = 1; idx <= 6; idx++) {
1735 for (
int iso = 1; iso <= 2; iso++) {
1736 if (iso == 2) isUp =
true;
1738 int id3 = coupSUSY->idNeut(iNeut);
1739 int id4 = iso + ((idx <= 3)
1740 ? 1000000+2*(idx-1) : 2000000+2*(idx-4));
1742 if (!allowIdVals( id3, id4))
continue;
1743 sigmaPtr =
new Sigma2qg2chi0squark(iNeut,idx,isUp,iproc);
1744 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1751 if (SUSYs || settings.flag(
"SUSY:qg2chi+-squark")) {
1753 for (
int iChar = 1; iChar <= 2; iChar++) {
1754 for (
int idx = 1; idx <= 6; idx++) {
1756 for (
int iso = 1; iso <= 2; iso++) {
1757 if (iso == 2) isUp =
true;
1759 int id3 = coupSUSY->idChar(iChar);
1760 int id4 = iso + ((idx <= 3)
1761 ? 1000000+2*(idx-1) : 2000000+2*(idx-4));
1763 if (!allowIdVals( id3, id4))
continue;
1764 sigmaPtr =
new Sigma2qg2charsquark(iChar,idx,isUp,iproc);
1765 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1772 if (SUSYs || settings.flag(
"SUSY:qqbar2chi0chi0")) {
1774 for (
int iNeut2 = 1; iNeut2 <= nNeut; iNeut2++) {
1775 for (
int iNeut1 = 1; iNeut1 <= iNeut2; iNeut1++) {
1778 if (!allowIdVals( coupSUSY->idNeut(iNeut1),
1779 coupSUSY->idNeut(iNeut2) ) )
continue;
1780 sigmaPtr =
new Sigma2qqbar2chi0chi0(iNeut1, iNeut2,iproc);
1781 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1787 if (SUSYs || settings.flag(
"SUSY:qqbar2chi+-chi0")) {
1789 for (
int iNeut = 1; iNeut <= nNeut; iNeut++) {
1790 for (
int iChar = 1; iChar <= 2; ++iChar) {
1793 if (!allowIdVals( coupSUSY->idNeut(iNeut),
1794 coupSUSY->idChar(iChar) ) )
continue;
1795 sigmaPtr =
new Sigma2qqbar2charchi0( iChar, iNeut, iproc-1);
1796 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1797 sigmaPtr =
new Sigma2qqbar2charchi0(-iChar, iNeut, iproc);
1798 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1804 if (SUSYs || settings.flag(
"SUSY:qqbar2chi+chi-")) {
1806 for (
int i = 1; i <= 2; ++i) {
1807 for (
int j = 1; j <= 2; ++j) {
1810 if (!allowIdVals( coupSUSY->idChar(i),
1811 coupSUSY->idChar(j) ) )
continue;
1812 sigmaPtr =
new Sigma2qqbar2charchar( i,-j, iproc);
1813 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1819 if(SUSYs || settings.flag(
"SUSY:qq2antisquark")) {
1820 for (
int idx = 1; idx <= 6; ++idx) {
1821 for (
int iso = 1; iso <= 2; ++iso) {
1822 int id1 = iso + ((idx <= 3) ? 1000000+2*(idx-1) : 2000000+2*(idx-4));
1824 if (!allowIdVals( id1, 0))
continue;
1825 sigmaPtr =
new Sigma1qq2antisquark(id1);
1826 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1832 if (SUSYs || settings.flag(
"SUSY:qqbar2chi0gluino")) {
1834 for (
int iNeut = 1; iNeut <= nNeut; iNeut++) {
1837 if (!allowIdVals( coupSUSY->idNeut(iNeut), 1000021))
continue;
1838 sigmaPtr =
new Sigma2qqbar2chi0gluino(iNeut, iproc);
1839 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1844 if (SUSYs || settings.flag(
"SUSY:qqbar2chi+-gluino")) {
1846 for (
int iChar = 1; iChar <= 2; ++iChar) {
1849 if (!allowIdVals( coupSUSY->idChar(iChar), 1000021))
continue;
1850 sigmaPtr =
new Sigma2qqbar2chargluino( iChar, iproc);
1851 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1856 if (SUSYs || settings.flag(
"SUSY:qqbar2sleptonantislepton")) {
1858 for (
int idx = 1; idx <= 6; ++idx) {
1859 for (
int iso = 1; iso <= 2; ++iso) {
1860 for (
int jso = iso; jso >= 1; --jso) {
1861 for (
int jdx = 1; jdx <= 6; ++jdx) {
1862 if (iso == jso && jdx < idx)
continue;
1863 int id1 = iso + ((idx <= 3) ? 1000010+2*(idx-1)
1864 : 2000010+2*(idx-4));
1865 int id2 = jso + ((jdx <= 3) ? 1000010+2*(jdx-1)
1866 : 2000010+2*(jdx-4));
1869 if (iso == jso && id1 != id2) iproc++;
1871 if (!allowIdVals( id1, id2))
continue;
1872 if (iso == jso && id1 != id2) {
1874 =
new Sigma2qqbar2sleptonantislepton(id1,-id2,iproc-1);
1875 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1876 sigmaPtr =
new Sigma2qqbar2sleptonantislepton(id2,-id1,iproc);
1877 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1879 sigmaPtr =
new Sigma2qqbar2sleptonantislepton(id1,-id2,iproc);
1880 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1891 if (settings.flag(
"NewGaugeBoson:ffbar2gmZZprime")) {
1892 sigmaPtr =
new Sigma1ffbar2gmZZprime();
1893 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1895 if (settings.flag(
"NewGaugeBoson:ffbar2Wprime")) {
1896 sigmaPtr =
new Sigma1ffbar2Wprime();
1897 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1899 if (settings.flag(
"NewGaugeBoson:ffbar2R0")) {
1900 sigmaPtr =
new Sigma1ffbar2Rhorizontal();
1901 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1905 bool leftrights = settings.flag(
"LeftRightSymmmetry:all");
1906 if (leftrights || settings.flag(
"LeftRightSymmmetry:ffbar2ZR")) {
1907 sigmaPtr =
new Sigma1ffbar2ZRight();
1908 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1910 if (leftrights || settings.flag(
"LeftRightSymmmetry:ffbar2WR")) {
1911 sigmaPtr =
new Sigma1ffbar2WRight();
1912 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1914 if (leftrights || settings.flag(
"LeftRightSymmmetry:ll2HL")) {
1915 sigmaPtr =
new Sigma1ll2Hchgchg(1);
1916 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1918 if (leftrights || settings.flag(
"LeftRightSymmmetry:lgm2HLe")) {
1919 sigmaPtr =
new Sigma2lgm2Hchgchgl(1, 11);
1920 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1922 if (leftrights || settings.flag(
"LeftRightSymmmetry:lgm2HLmu")) {
1923 sigmaPtr =
new Sigma2lgm2Hchgchgl(1, 13);
1924 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1926 if (leftrights || settings.flag(
"LeftRightSymmmetry:lgm2HLtau")) {
1927 sigmaPtr =
new Sigma2lgm2Hchgchgl(1, 15);
1928 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1930 if (leftrights || settings.flag(
"LeftRightSymmmetry:ff2HLff")) {
1931 sigmaPtr =
new Sigma3ff2HchgchgfftWW(1);
1932 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1934 if (leftrights || settings.flag(
"LeftRightSymmmetry:ffbar2HLHL")) {
1935 sigmaPtr =
new Sigma2ffbar2HchgchgHchgchg(1);
1936 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1938 if (leftrights || settings.flag(
"LeftRightSymmmetry:ll2HR")) {
1939 sigmaPtr =
new Sigma1ll2Hchgchg(2);
1940 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1942 if (leftrights || settings.flag(
"LeftRightSymmmetry:lgm2HRe")) {
1943 sigmaPtr =
new Sigma2lgm2Hchgchgl(2, 11);
1944 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1946 if (leftrights || settings.flag(
"LeftRightSymmmetry:lgm2HRmu")) {
1947 sigmaPtr =
new Sigma2lgm2Hchgchgl(2, 13);
1948 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1950 if (leftrights || settings.flag(
"LeftRightSymmmetry:lgm2HRtau")) {
1951 sigmaPtr =
new Sigma2lgm2Hchgchgl(2, 15);
1952 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1954 if (leftrights || settings.flag(
"LeftRightSymmmetry:ff2HRff")) {
1955 sigmaPtr =
new Sigma3ff2HchgchgfftWW(2);
1956 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1958 if (leftrights || settings.flag(
"LeftRightSymmmetry:ffbar2HRHR")) {
1959 sigmaPtr =
new Sigma2ffbar2HchgchgHchgchg(2);
1960 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1964 bool leptoquarks = settings.flag(
"LeptoQuark:all");
1965 if (leptoquarks || settings.flag(
"LeptoQuark:ql2LQ")) {
1966 sigmaPtr =
new Sigma1ql2LeptoQuark;
1967 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1969 if (leptoquarks || settings.flag(
"LeptoQuark:qg2LQl")) {
1970 sigmaPtr =
new Sigma2qg2LeptoQuarkl;
1971 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1973 if (leptoquarks || settings.flag(
"LeptoQuark:gg2LQLQbar")) {
1974 sigmaPtr =
new Sigma2gg2LQLQbar;
1975 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1977 if (leptoquarks || settings.flag(
"LeptoQuark:qqbar2LQLQbar")) {
1978 sigmaPtr =
new Sigma2qqbar2LQLQbar;
1979 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1983 bool excitedfermions = settings.flag(
"ExcitedFermion:all");
1984 if (excitedfermions || settings.flag(
"ExcitedFermion:dg2dStar")) {
1985 sigmaPtr =
new Sigma1qg2qStar(1);
1986 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1988 if (excitedfermions || settings.flag(
"ExcitedFermion:ug2uStar")) {
1989 sigmaPtr =
new Sigma1qg2qStar(2);
1990 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1992 if (excitedfermions || settings.flag(
"ExcitedFermion:sg2sStar")) {
1993 sigmaPtr =
new Sigma1qg2qStar(3);
1994 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
1996 if (excitedfermions || settings.flag(
"ExcitedFermion:cg2cStar")) {
1997 sigmaPtr =
new Sigma1qg2qStar(4);
1998 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2000 if (excitedfermions || settings.flag(
"ExcitedFermion:bg2bStar")) {
2001 sigmaPtr =
new Sigma1qg2qStar(5);
2002 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2004 if (excitedfermions || settings.flag(
"ExcitedFermion:egm2eStar")) {
2005 sigmaPtr =
new Sigma1lgm2lStar(11);
2006 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2008 if (excitedfermions || settings.flag(
"ExcitedFermion:mugm2muStar")) {
2009 sigmaPtr =
new Sigma1lgm2lStar(13);
2010 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2012 if (excitedfermions || settings.flag(
"ExcitedFermion:taugm2tauStar")) {
2013 sigmaPtr =
new Sigma1lgm2lStar(15);
2014 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2016 if (excitedfermions || settings.flag(
"ExcitedFermion:qq2dStarq")) {
2017 sigmaPtr =
new Sigma2qq2qStarq(1);
2018 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2020 if (excitedfermions || settings.flag(
"ExcitedFermion:qq2uStarq")) {
2021 sigmaPtr =
new Sigma2qq2qStarq(2);
2022 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2024 if (excitedfermions || settings.flag(
"ExcitedFermion:qq2sStarq")) {
2025 sigmaPtr =
new Sigma2qq2qStarq(3);
2026 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2028 if (excitedfermions || settings.flag(
"ExcitedFermion:qq2cStarq")) {
2029 sigmaPtr =
new Sigma2qq2qStarq(4);
2030 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2032 if (excitedfermions || settings.flag(
"ExcitedFermion:qq2bStarq")) {
2033 sigmaPtr =
new Sigma2qq2qStarq(5);
2034 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2036 if (excitedfermions || settings.flag(
"ExcitedFermion:qqbar2eStare")) {
2037 sigmaPtr =
new Sigma2qqbar2lStarlbar(11);
2038 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2040 if (excitedfermions || settings.flag(
"ExcitedFermion:qqbar2nueStarnue")) {
2041 sigmaPtr =
new Sigma2qqbar2lStarlbar(12);
2042 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2044 if (excitedfermions || settings.flag(
"ExcitedFermion:qqbar2muStarmu")) {
2045 sigmaPtr =
new Sigma2qqbar2lStarlbar(13);
2046 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2048 if (excitedfermions || settings.flag(
"ExcitedFermion:qqbar2numuStarnumu")) {
2049 sigmaPtr =
new Sigma2qqbar2lStarlbar(14);
2050 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2052 if (excitedfermions || settings.flag(
"ExcitedFermion:qqbar2tauStartau")) {
2053 sigmaPtr =
new Sigma2qqbar2lStarlbar(15);
2054 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2057 || settings.flag(
"ExcitedFermion:qqbar2nutauStarnutau")) {
2058 sigmaPtr =
new Sigma2qqbar2lStarlbar(16);
2059 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2063 if (settings.flag(
"ContactInteractions:QCqq2qq")) {
2064 sigmaPtr =
new Sigma2QCqq2qq();
2065 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2067 if (settings.flag(
"ContactInteractions:QCqqbar2qqbar")) {
2068 sigmaPtr =
new Sigma2QCqqbar2qqbar();
2069 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2071 if (settings.flag(
"ContactInteractions:QCffbar2eebar")) {
2072 sigmaPtr =
new Sigma2QCffbar2llbar(11, 4003);
2073 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2075 if (settings.flag(
"ContactInteractions:QCffbar2mumubar")) {
2076 sigmaPtr =
new Sigma2QCffbar2llbar(13, 4004);
2077 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2079 if (settings.flag(
"ContactInteractions:QCffbar2tautaubar")) {
2080 sigmaPtr =
new Sigma2QCffbar2llbar(15, 4005);
2081 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2085 int spinFv = settings.mode(
"HiddenValley:spinFv");
2086 for (
int i = 1; i < 7; ++i) {
2087 if (particleDataPtr->spinType( 4900000 + i) != spinFv + 1)
2088 particleDataPtr->spinType( 4900000 + i, spinFv + 1);
2089 if (particleDataPtr->spinType( 4900010 + i) != spinFv + 1)
2090 particleDataPtr->spinType( 4900010 + i, spinFv + 1);
2093 if (particleDataPtr->spinType( 4900101) != 2)
2094 particleDataPtr->spinType( 4900101, 2);
2096 int spinqv = settings.mode(
"HiddenValley:spinqv");
2097 if (particleDataPtr->spinType( 4900101) != 2 * spinqv + 1)
2098 particleDataPtr->spinType( 4900101, 2 * spinqv + 1);
2102 bool hiddenvalleys = settings.flag(
"HiddenValley:all");
2103 if (hiddenvalleys || settings.flag(
"HiddenValley:gg2DvDvbar")) {
2104 sigmaPtr =
new Sigma2gg2qGqGbar( 4900001, 4901, spinFv,
2106 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2108 if (hiddenvalleys || settings.flag(
"HiddenValley:gg2UvUvbar")) {
2109 sigmaPtr =
new Sigma2gg2qGqGbar( 4900002, 4902, spinFv,
2111 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2113 if (hiddenvalleys || settings.flag(
"HiddenValley:gg2SvSvbar")) {
2114 sigmaPtr =
new Sigma2gg2qGqGbar( 4900003, 4903, spinFv,
2116 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2118 if (hiddenvalleys || settings.flag(
"HiddenValley:gg2CvCvbar")) {
2119 sigmaPtr =
new Sigma2gg2qGqGbar( 4900004, 4904, spinFv,
2121 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2123 if (hiddenvalleys || settings.flag(
"HiddenValley:gg2BvBvbar")) {
2124 sigmaPtr =
new Sigma2gg2qGqGbar( 4900005, 4905, spinFv,
2126 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2128 if (hiddenvalleys || settings.flag(
"HiddenValley:gg2TvTvbar")) {
2129 sigmaPtr =
new Sigma2gg2qGqGbar( 4900006, 4906, spinFv,
2131 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2133 if (hiddenvalleys || settings.flag(
"HiddenValley:qqbar2DvDvbar")) {
2134 sigmaPtr =
new Sigma2qqbar2qGqGbar( 4900001, 4911, spinFv,
2135 "q qbar -> Dv Dvbar");
2136 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2138 if (hiddenvalleys || settings.flag(
"HiddenValley:qqbar2UvUvbar")) {
2139 sigmaPtr =
new Sigma2qqbar2qGqGbar( 4900002, 4912, spinFv,
2140 "q qbar -> Uv Uvbar");
2141 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2143 if (hiddenvalleys || settings.flag(
"HiddenValley:qqbar2SvSvbar")) {
2144 sigmaPtr =
new Sigma2qqbar2qGqGbar( 4900003, 4913, spinFv,
2145 "q qbar -> Sv Svbar");
2146 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2148 if (hiddenvalleys || settings.flag(
"HiddenValley:qqbar2CvCvbar")) {
2149 sigmaPtr =
new Sigma2qqbar2qGqGbar( 4900004, 4914, spinFv,
2150 "q qbar -> Cv Cvbar");
2151 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2153 if (hiddenvalleys || settings.flag(
"HiddenValley:qqbar2BvBvbar")) {
2154 sigmaPtr =
new Sigma2qqbar2qGqGbar( 4900005, 4915, spinFv,
2155 "q qbar -> Bv Bvbar");
2156 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2158 if (hiddenvalleys || settings.flag(
"HiddenValley:qqbar2TvTvbar")) {
2159 sigmaPtr =
new Sigma2qqbar2qGqGbar( 4900006, 4916, spinFv,
2160 "q qbar -> Tv Tvbar");
2161 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2163 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2DvDvbar")) {
2164 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900001, 4921, spinFv,
2165 "f fbar -> Dv Dvbar");
2166 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2168 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2UvUvbar")) {
2169 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900002, 4922, spinFv,
2170 "f fbar -> Uv Uvbar");
2171 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2173 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2SvSvbar")) {
2174 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900003, 4923, spinFv,
2175 "f fbar -> Sv Svbar");
2176 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2178 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2CvCvbar")) {
2179 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900004, 4924, spinFv,
2180 "f fbar -> Cv Cvbar");
2181 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2183 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2BvBvbar")) {
2184 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900005, 4925, spinFv,
2185 "f fbar -> Bv Bvbar");
2186 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2188 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2TvTvbar")) {
2189 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900006, 4926, spinFv,
2190 "f fbar -> Tv Tvbar");
2191 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2193 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2EvEvbar")) {
2194 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900011, 4931, spinFv,
2195 "f fbar -> Ev Evbar");
2196 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2198 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2nuEvnuEvbar")) {
2199 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900012, 4932, spinFv,
2200 "f fbar -> nuEv nuEvbar");
2201 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2203 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2MUvMUvbar")) {
2204 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900013, 4933, spinFv,
2205 "f fbar -> MUv MUvbar");
2206 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2208 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2nuMUvnuMUvbar")) {
2209 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900014, 4934, spinFv,
2210 "f fbar -> nuMUv nuMUvbar");
2211 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2213 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2TAUvTAUvbar")) {
2214 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900015, 4935, spinFv,
2215 "f fbar -> TAUv TAUvbar");
2216 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2218 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2nuTAUvnuTAUvbar")) {
2219 sigmaPtr =
new Sigma2ffbar2fGfGbar( 4900016, 4936, spinFv,
2220 "f fbar -> nuTAUv nuTAUvbar");
2221 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2223 if (hiddenvalleys || settings.flag(
"HiddenValley:ffbar2Zv")) {
2224 sigmaPtr =
new Sigma1ffbar2Zv();
2225 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2229 bool extraDimGstars = settings.flag(
"ExtraDimensionsG*:all");
2230 if (extraDimGstars || settings.flag(
"ExtraDimensionsG*:gg2G*")) {
2231 sigmaPtr =
new Sigma1gg2GravitonStar;
2232 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2234 if (extraDimGstars || settings.flag(
"ExtraDimensionsG*:ffbar2G*")) {
2235 sigmaPtr =
new Sigma1ffbar2GravitonStar;
2236 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2238 if (settings.flag(
"ExtraDimensionsG*:gg2G*g")) {
2239 sigmaPtr =
new Sigma2gg2GravitonStarg;
2240 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2242 if (settings.flag(
"ExtraDimensionsG*:qg2G*q")) {
2243 sigmaPtr =
new Sigma2qg2GravitonStarq;
2244 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2246 if (settings.flag(
"ExtraDimensionsG*:qqbar2G*g")) {
2247 sigmaPtr =
new Sigma2qqbar2GravitonStarg;
2248 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2252 if (settings.flag(
"ExtraDimensionsG*:qqbar2KKgluon*")) {
2253 sigmaPtr =
new Sigma1qqbar2KKgluonStar;
2254 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2258 if (settings.flag(
"ExtraDimensionsTEV:ffbar2ddbar")) {
2259 sigmaPtr =
new Sigma2ffbar2TEVffbar(1, 5061);
2260 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2262 if (settings.flag(
"ExtraDimensionsTEV:ffbar2uubar")) {
2263 sigmaPtr =
new Sigma2ffbar2TEVffbar(2, 5062);
2264 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2266 if (settings.flag(
"ExtraDimensionsTEV:ffbar2ssbar")) {
2267 sigmaPtr =
new Sigma2ffbar2TEVffbar(3, 5063);
2268 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2270 if (settings.flag(
"ExtraDimensionsTEV:ffbar2ccbar")) {
2271 sigmaPtr =
new Sigma2ffbar2TEVffbar(4, 5064);
2272 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2274 if (settings.flag(
"ExtraDimensionsTEV:ffbar2bbbar")) {
2275 sigmaPtr =
new Sigma2ffbar2TEVffbar(5, 5065);
2276 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2278 if (settings.flag(
"ExtraDimensionsTEV:ffbar2ttbar")) {
2279 sigmaPtr =
new Sigma2ffbar2TEVffbar(6, 5066);
2280 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2282 if (settings.flag(
"ExtraDimensionsTEV:ffbar2e+e-")) {
2283 sigmaPtr =
new Sigma2ffbar2TEVffbar(11, 5071);
2284 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2286 if (settings.flag(
"ExtraDimensionsTEV:ffbar2nuenuebar")) {
2287 sigmaPtr =
new Sigma2ffbar2TEVffbar(12, 5072);
2288 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2290 if (settings.flag(
"ExtraDimensionsTEV:ffbar2mu+mu-")) {
2291 sigmaPtr =
new Sigma2ffbar2TEVffbar(13, 5073);
2292 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2294 if (settings.flag(
"ExtraDimensionsTEV:ffbar2numunumubar")) {
2295 sigmaPtr =
new Sigma2ffbar2TEVffbar(14, 5074);
2296 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2298 if (settings.flag(
"ExtraDimensionsTEV:ffbar2tau+tau-")) {
2299 sigmaPtr =
new Sigma2ffbar2TEVffbar(15, 5075);
2300 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2302 if (settings.flag(
"ExtraDimensionsTEV:ffbar2nutaunutaubar")) {
2303 sigmaPtr =
new Sigma2ffbar2TEVffbar(16, 5076);
2304 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2308 bool extraDimLEDmono = settings.flag(
"ExtraDimensionsLED:monojet");
2309 if (extraDimLEDmono || settings.flag(
"ExtraDimensionsLED:gg2Gg")) {
2310 sigmaPtr =
new Sigma2gg2LEDUnparticleg(
true );
2311 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2313 if (extraDimLEDmono || settings.flag(
"ExtraDimensionsLED:qg2Gq")) {
2314 sigmaPtr =
new Sigma2qg2LEDUnparticleq(
true );
2315 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2317 if (extraDimLEDmono || settings.flag(
"ExtraDimensionsLED:qqbar2Gg")) {
2318 sigmaPtr =
new Sigma2qqbar2LEDUnparticleg(
true );
2319 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2321 if (settings.flag(
"ExtraDimensionsLED:ffbar2GZ")) {
2322 sigmaPtr =
new Sigma2ffbar2LEDUnparticleZ(
true );
2323 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2325 if (settings.flag(
"ExtraDimensionsLED:ffbar2Ggamma")) {
2326 sigmaPtr =
new Sigma2ffbar2LEDUnparticlegamma(
true );
2327 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2329 if (settings.flag(
"ExtraDimensionsLED:ffbar2gammagamma")) {
2330 sigmaPtr =
new Sigma2ffbar2LEDgammagamma(
true );
2331 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2333 if (settings.flag(
"ExtraDimensionsLED:gg2gammagamma")) {
2334 sigmaPtr =
new Sigma2gg2LEDgammagamma(
true );
2335 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2337 if (settings.flag(
"ExtraDimensionsLED:ffbar2llbar")) {
2338 sigmaPtr =
new Sigma2ffbar2LEDllbar(
true );
2339 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2341 if (settings.flag(
"ExtraDimensionsLED:gg2llbar")) {
2342 sigmaPtr =
new Sigma2gg2LEDllbar(
true );
2343 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2345 bool extraDimLEDdij = settings.flag(
"ExtraDimensionsLED:dijets");
2346 if (extraDimLEDdij || settings.flag(
"ExtraDimensionsLED:gg2DJgg")) {
2347 sigmaPtr =
new Sigma2gg2LEDgg;
2348 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2350 if (extraDimLEDdij || settings.flag(
"ExtraDimensionsLED:gg2DJqqbar")) {
2351 sigmaPtr =
new Sigma2gg2LEDqqbar;
2352 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2354 if (extraDimLEDdij || settings.flag(
"ExtraDimensionsLED:qg2DJqg")) {
2355 sigmaPtr =
new Sigma2qg2LEDqg;
2356 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2358 if (extraDimLEDdij || settings.flag(
"ExtraDimensionsLED:qq2DJqq")) {
2359 sigmaPtr =
new Sigma2qq2LEDqq;
2360 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2362 if (extraDimLEDdij || settings.flag(
"ExtraDimensionsLED:qqbar2DJgg")) {
2363 sigmaPtr =
new Sigma2qqbar2LEDgg;
2364 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2366 if (extraDimLEDdij || settings.flag(
"ExtraDimensionsLED:qqbar2DJqqbarNew")) {
2367 sigmaPtr =
new Sigma2qqbar2LEDqqbarNew;
2368 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2372 bool extraDimUnpartmono = settings.flag(
"ExtraDimensionsUnpart:monojet");
2373 if (extraDimUnpartmono || settings.flag(
"ExtraDimensionsUnpart:gg2Ug")) {
2374 sigmaPtr =
new Sigma2gg2LEDUnparticleg(
false );
2375 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2377 if (extraDimUnpartmono || settings.flag(
"ExtraDimensionsUnpart:qg2Uq")) {
2378 sigmaPtr =
new Sigma2qg2LEDUnparticleq(
false );
2379 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2381 if (extraDimUnpartmono || settings.flag(
"ExtraDimensionsUnpart:qqbar2Ug")) {
2382 sigmaPtr =
new Sigma2qqbar2LEDUnparticleg(
false );
2383 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2385 if (settings.flag(
"ExtraDimensionsUnpart:ffbar2UZ")) {
2386 sigmaPtr =
new Sigma2ffbar2LEDUnparticleZ(
false );
2387 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2389 if (settings.flag(
"ExtraDimensionsUnpart:ffbar2Ugamma")) {
2390 sigmaPtr =
new Sigma2ffbar2LEDUnparticlegamma(
false );
2391 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2393 if (settings.flag(
"ExtraDimensionsUnpart:ffbar2gammagamma")) {
2394 sigmaPtr =
new Sigma2ffbar2LEDgammagamma(
false );
2395 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2397 if (settings.flag(
"ExtraDimensionsUnpart:gg2gammagamma")) {
2398 sigmaPtr =
new Sigma2gg2LEDgammagamma(
false );
2399 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2401 if (settings.flag(
"ExtraDimensionsUnpart:ffbar2llbar")) {
2402 sigmaPtr =
new Sigma2ffbar2LEDllbar(
false );
2403 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2405 if (settings.flag(
"ExtraDimensionsUnpart:gg2llbar")) {
2406 sigmaPtr =
new Sigma2gg2LEDllbar(
false );
2407 containerPtrs.push_back(
new ProcessContainer(sigmaPtr) );
2419 bool SetupContainers::init2(vector<ProcessContainer*>& container2Ptrs,
2420 Settings& settings) {
2423 if (container2Ptrs.size() > 0) {
2424 for (
int i = 0; i < int(container2Ptrs.size()); ++i)
2425 delete container2Ptrs[i];
2426 container2Ptrs.clear();
2428 SigmaProcess* sigmaPtr;
2431 if (settings.flag(
"SecondHard:TwoJets")) {
2432 sigmaPtr =
new Sigma2gg2gg;
2433 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2434 sigmaPtr =
new Sigma2gg2qqbar;
2435 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2436 sigmaPtr =
new Sigma2qg2qg;
2437 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2438 sigmaPtr =
new Sigma2qq2qq;
2439 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2440 sigmaPtr =
new Sigma2qqbar2gg;
2441 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2442 sigmaPtr =
new Sigma2qqbar2qqbarNew;
2443 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2444 sigmaPtr =
new Sigma2gg2QQbar(4, 121);
2445 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2446 sigmaPtr =
new Sigma2qqbar2QQbar(4, 122);
2447 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2448 sigmaPtr =
new Sigma2gg2QQbar(5, 123);
2449 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2450 sigmaPtr =
new Sigma2qqbar2QQbar(5, 124);
2451 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2455 if (settings.flag(
"SecondHard:PhotonAndJet")) {
2456 sigmaPtr =
new Sigma2qg2qgamma;
2457 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2458 sigmaPtr =
new Sigma2qqbar2ggamma;
2459 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2460 sigmaPtr =
new Sigma2gg2ggamma;
2461 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2465 if (settings.flag(
"SecondHard:TwoPhotons")) {
2466 sigmaPtr =
new Sigma2ffbar2gammagamma;
2467 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2468 sigmaPtr =
new Sigma2gg2gammagamma;
2469 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2473 if (settings.flag(
"SecondHard:Charmonium")) {
2474 vector<SigmaProcess*> charmoniumSigmaPtrs;
2475 charmonium.setupSigma2gg(charmoniumSigmaPtrs,
true);
2476 charmonium.setupSigma2qg(charmoniumSigmaPtrs,
true);
2477 charmonium.setupSigma2qq(charmoniumSigmaPtrs,
true);
2478 for (
unsigned int i = 0; i < charmoniumSigmaPtrs.size(); ++i)
2479 container2Ptrs.push_back(
new ProcessContainer(charmoniumSigmaPtrs[i]) );
2483 if (settings.flag(
"SecondHard:Bottomonium")) {
2484 vector<SigmaProcess*> bottomoniumSigmaPtrs;
2485 bottomonium.setupSigma2gg(bottomoniumSigmaPtrs,
true);
2486 bottomonium.setupSigma2qg(bottomoniumSigmaPtrs,
true);
2487 bottomonium.setupSigma2qq(bottomoniumSigmaPtrs,
true);
2488 for (
unsigned int i = 0; i < bottomoniumSigmaPtrs.size(); ++i)
2489 container2Ptrs.push_back(
new ProcessContainer(bottomoniumSigmaPtrs[i]) );
2493 if (settings.flag(
"SecondHard:SingleGmZ")) {
2494 sigmaPtr =
new Sigma1ffbar2gmZ;
2495 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2499 if (settings.flag(
"SecondHard:SingleW")) {
2500 sigmaPtr =
new Sigma1ffbar2W;
2501 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2505 if (settings.flag(
"SecondHard:GmZAndJet")) {
2506 sigmaPtr =
new Sigma2qqbar2gmZg;
2507 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2508 sigmaPtr =
new Sigma2qg2gmZq;
2509 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2513 if (settings.flag(
"SecondHard:WAndJet")) {
2514 sigmaPtr =
new Sigma2qqbar2Wg;
2515 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2516 sigmaPtr =
new Sigma2qg2Wq;
2517 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2521 if (settings.flag(
"SecondHard:TopPair")) {
2522 sigmaPtr =
new Sigma2gg2QQbar(6, 601);
2523 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2524 sigmaPtr =
new Sigma2qqbar2QQbar(6, 602);
2525 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2526 sigmaPtr =
new Sigma2ffbar2FFbarsgmZ(6, 604);
2527 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2531 if (settings.flag(
"SecondHard:SingleTop")) {
2532 sigmaPtr =
new Sigma2qq2QqtW(6, 603);
2533 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2534 sigmaPtr =
new Sigma2ffbar2FfbarsW(6, 0, 605);
2535 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2539 if (settings.flag(
"SecondHard:TwoBJets")) {
2540 sigmaPtr =
new Sigma2gg2QQbar(5, 123);
2541 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2542 sigmaPtr =
new Sigma2qqbar2QQbar(5, 124);
2543 container2Ptrs.push_back(
new ProcessContainer(sigmaPtr) );
2555 void SetupContainers::setupIdVecs( Settings& settings) {
2559 if (settings.mode(
"SUSY:idA") != 0) {
2560 idVecA.push_back( abs(settings.mode(
"SUSY:idA")) );
2562 vector<int> idTmpA = settings.mvec(
"SUSY:idVecA");
2563 for (
int i = 0; i < int(idTmpA.size()); ++i)
2564 if (idTmpA[i] != 0) idVecA.push_back( abs(idTmpA[i]) );
2566 nVecA = idVecA.size();
2570 if (settings.mode(
"SUSY:idB") != 0) {
2571 idVecB.push_back( abs(settings.mode(
"SUSY:idB")) );
2573 vector<int> idTmpB = settings.mvec(
"SUSY:idVecB");
2574 for (
int i = 0; i < int(idTmpB.size()); ++i)
2575 if (idTmpB[i] != 0) idVecB.push_back( abs(idTmpB[i]) );
2577 nVecB = idVecB.size();
2586 bool SetupContainers::allowIdVals(
int idCheck1,
int idCheck2) {
2589 if (nVecA == 0 && nVecB == 0)
return true;
2590 if (idCheck1 == 0 && idCheck2 == 0)
return true;
2591 int idChk1 = abs(idCheck1);
2592 int idChk2 = abs(idCheck2);
2595 if (idChk1 == 0) swap(idChk1, idChk2);
2597 for (
int i = 0; i < nVecA; ++i)
if (idChk1 == idVecA[i])
return true;
2598 for (
int i = 0; i < nVecB; ++i)
if (idChk1 == idVecB[i])
return true;
2604 for (
int i = 0; i < nVecA; ++i)
2605 if (idChk1 == idVecA[i] || idChk2 == idVecA[i])
return true;
2611 for (
int i = 0; i < nVecB; ++i)
2612 if (idChk1 == idVecB[i] || idChk2 == idVecB[i])
return true;
2617 for (
int i = 0; i < nVecA; ++i)
2618 for (
int j = 0; j < nVecB; ++j)
2619 if ( (idChk1 == idVecA[i] && idChk2 == idVecB[j])
2620 || (idChk2 == idVecA[i] && idChk1 == idVecB[j]) )
return true;