17 #include "Pythia8/SigmaGeneric.h"
30 void Sigma2gg2qGqGbar::initProc() {
33 nCHV = mode(
"HiddenValley:Ngauge");
34 kappam1 = parm(
"HiddenValley:kappa") - 1.;
35 hasKappa = (abs(kappam1) > 1e-8);
38 openFracPair = particleDataPtr->resOpenFrac(idNew, -idNew);
46 void Sigma2gg2qGqGbar::sigmaKin() {
49 double delta = 0.25 * pow2(s3 - s4) / sH;
50 double s34Avg = 0.5 * (s3 + s4) - delta;
51 double tHavg = tH - delta;
52 double uHavg = uH - delta;
53 double tHQ = -0.5 * (sH - tH + uH);
54 double uHQ = -0.5 * (sH + tH - uH);
55 double tHQ2 = tHQ * tHQ;
56 double uHQ2 = uHQ * uHQ;
60 sigSum = 0.5 * ( 7. / 48. + 3. * pow2(uHavg - tHavg) / (16. * sH2) )
61 * ( 1. + 2. * s34Avg * tHavg / pow2(tHavg - s34Avg)
62 + 2. * s34Avg * uHavg / pow2(uHavg - s34Avg)
63 + 4. * pow2(s34Avg) / ((tHavg - s34Avg) * (uHavg - s34Avg)) );
71 else if (spinSave == 1) {
72 double tumHQ = tHQ * uHQ - s34Avg * sH;
73 sigTS = ( uHQ / tHQ - 2.25 * uHQ2 / sH2 + 4.5 * s34Avg * tumHQ
74 / ( sH * tHQ2) + 0.5 * s34Avg * (tHQ + s34Avg) / tHQ2
75 - s34Avg*s34Avg / (sH * tHQ) ) / 6.;
76 sigUS = ( tHQ / uHQ - 2.25 * tHQ2 / sH2 + 4.5 * s34Avg * tumHQ
77 / ( sH * uHQ2) + 0.5 * s34Avg * (uHQ + s34Avg) / uHQ2
78 - s34Avg*s34Avg / (sH * uHQ) ) / 6.;
79 sigSum = sigTS + sigUS;
84 double tmu = tHavg - uHavg;
85 double s34Pos = s34Avg / sH;
86 double s34Pos2 = s34Pos * s34Pos;
87 double s34Neg = sH / s34Avg;
88 double s34Neg2 = s34Neg * s34Neg;
89 sigSum = pow2(tmu) * sH2 * (241./1536. - 1./32. * s34Pos
91 + pow4(tmu) * (37./512. + 9./64. * s34Pos)
92 + pow6(tmu) * (9./512. / sH2)
93 + sH2 * sH2 * (133./1536. - 7./64. * s34Pos + 7./16. * s34Pos2);
97 sigSum += pow2(tmu) * sH2 * (kappam1 * (143./384. - 7./3072 * s34Neg)
98 + pow2(kappam1) * (- 1./768. * s34Neg + 185./768.)
99 + pow3(kappam1) * (- 7./3072. * s34Neg2
100 - 25./3072. * s34Neg + 67./1536.)
101 + pow4(kappam1) * (- 37./49152. * s34Neg2
102 - 25./6144. * s34Neg + 5./1536.) )
103 + pow4(tmu) * (kappam1 * 3./32.
104 + pow2(kappam1) * (7./6144. * s34Neg2 - 7./768. * s34Neg + 3./128.)
105 + pow3(kappam1) * (7./6144. * s34Neg2 - 7./1536. * s34Neg)
106 + pow4(kappam1) * (- 1./49152. * s34Neg2 + 5./6144. * s34Neg) )
107 + pow6(tmu) * pow4(kappam1) * 13./49152. / pow2(s34Avg)
108 + sH2 * sH2 * ( kappam1 * 77./384.
109 + pow2(kappam1) * (7./6144. * s34Neg2 + 1./96.* s34Neg + 39./256.)
110 + pow3(kappam1) * (7./6144. * s34Neg2 + 13./1024. * s34Neg + 61./1536.)
111 + pow4(kappam1) * (25./49152. * s34Neg2 + 5./1536. * s34Neg + 1./512.)
115 sigSum /= pow2( (uHavg-s34Avg) * (tHavg-s34Avg) );
116 sigTS = 0.5 * sigSum;
121 sigma = (M_PI / sH2) * pow2(alpS) * sigSum * nCHV * openFracPair;
129 void Sigma2gg2qGqGbar::setIdColAcol() {
132 setId( 21, 21, idNew, -idNew);
135 double sigRand = sigSum * rndmPtr->flat();
136 if (sigRand < sigTS) setColAcol( 1, 2, 2, 3, 1, 0, 0, 3);
137 else setColAcol( 1, 2, 3, 1, 3, 0, 0, 2);
150 void Sigma2qqbar2qGqGbar::initProc() {
153 nCHV = mode(
"HiddenValley:Ngauge");
154 kappa = parm(
"HiddenValley:kappa");
157 openFracPair = particleDataPtr->resOpenFrac(idNew, -idNew);
165 void Sigma2qqbar2qGqGbar::sigmaKin() {
168 double delta = 0.25 * pow2(s3 - s4) / sH;
169 double s34Avg = 0.5 * (s3 + s4) - delta;
170 double tHavg = tH - delta;
171 double uHavg = uH - delta;
172 double tHQ = -0.5 * (sH - tH + uH);
173 double uHQ = -0.5 * (sH + tH - uH);
174 double tHQ2 = tHQ * tHQ;
175 double uHQ2 = uHQ * uHQ;
179 sigSum = (1./9.) * (sH * (sH - 4. * s34Avg)
180 - pow2(uHavg - tHavg)) / sH2;
184 else if (spinSave == 1) {
185 sigSum = (4./9.) * ((tHQ2 + uHQ2) / sH2 + 2. * s34Avg / sH);
190 double tuH34 = (tHavg + uHavg) / s34Avg;
192 pow2(1. + kappa) * sH * s34Avg * (pow2(tuH34) - 4.)
193 + (tHavg * uHavg - pow2(s34Avg)) * (8. + 2. * (1. - pow2(kappa)) * tuH34
194 + pow2(kappa) * pow2(tuH34)) ) / sH2;
198 sigma = (M_PI / sH2) * pow2(alpS) * sigSum * nCHV * openFracPair;
206 void Sigma2qqbar2qGqGbar::setIdColAcol() {
209 setId( id1, id2, idNew, -idNew);
215 if (id1 > 0) setColAcol( 1, 0, 0, 2, 1, 0, 0, 2);
216 else setColAcol( 0, 2, 1, 0, 1, 0, 0, 2);
230 void Sigma2ffbar2fGfGbar::initProc() {
233 if (flag(
"HiddenValley:doKinMix"))
234 eQHV2 = pow2(parm(
"HiddenValley:kinMix"));
236 eQHV2 = pow2( particleDataPtr->charge(idNew) );
237 nCHV = mode(
"HiddenValley:Ngauge");
238 kappa = parm(
"HiddenValley:kappa");
241 hasColour = (particleDataPtr->colType(idNew) != 0);
242 colFac = (hasColour) ? 3. : 1.;
245 openFracPair = particleDataPtr->resOpenFrac(idNew, -idNew);
253 void Sigma2ffbar2fGfGbar::sigmaKin() {
256 double delta = 0.25 * pow2(s3 - s4) / sH;
257 double s34Avg = 0.5 * (s3 + s4) - delta;
258 double tHavg = tH - delta;
259 double uHavg = uH - delta;
260 double tHQ = -0.5 * (sH - tH + uH);
261 double uHQ = -0.5 * (sH + tH - uH);
262 double tHQ2 = tHQ * tHQ;
263 double uHQ2 = uHQ * uHQ;
267 sigSum = 0.5 * (sH * (sH - 4. * s34Avg) - pow2(uHavg - tHavg)) / sH2;
271 else if (spinSave == 1) {
272 sigSum = 2. * ((tHQ2 + uHQ2) / sH2 + 2. * s34Avg / sH);
277 double tuH34 = (tHavg + uHavg) / s34Avg;
278 sigSum = 0.5 * ( pow2(1. + kappa) * sH * s34Avg * (pow2(tuH34) - 4.)
279 + (tHavg * uHavg - pow2(s34Avg)) * (8. + 2. * (1. - pow2(kappa)) * tuH34
280 + pow2(kappa) * pow2(tuH34)) ) / sH2;
284 sigSum *= colFac * eQHV2 * (1. + alpS / M_PI);
287 sigma0 = (M_PI / sH2) * pow2(alpEM) * sigSum * nCHV * openFracPair;
295 double Sigma2ffbar2fGfGbar::sigmaHat() {
298 double eNow = coupSMPtr->ef( abs(id1) );
299 double sigma = sigma0 * pow2(eNow);
300 if (abs(id1) < 9) sigma /= 3.;
311 void Sigma2ffbar2fGfGbar::setIdColAcol() {
314 setId( id1, id2, idNew, -idNew);
321 if (id1 > 0 && id1 < 7) setColAcol( 1, 0, 0, 1, 2, 0, 0, 2);
322 else if (id1 > -7 && id1 < 0) setColAcol( 0, 1, 1, 0, 2, 0, 0, 2);
323 else setColAcol( 0, 0, 0, 0, 1, 0, 0, 1);
325 if (id1 > 0 && id1 < 7) setColAcol( 1, 0, 0, 1, 0, 0, 0, 0);
326 else if (id1 > -7 && id1 < 0) setColAcol( 0, 1, 1, 0, 0, 0, 0, 0);
327 else setColAcol( 0, 0, 0, 0, 0, 0, 0, 0);
342 void Sigma1ffbar2Zv::initProc() {
346 mRes = particleDataPtr->m0(idZv);
347 GammaRes = particleDataPtr->mWidth(idZv);
349 GamMRat = GammaRes / mRes;
352 particlePtr = particleDataPtr->particleDataEntryPtr(idZv);
360 void Sigma1ffbar2Zv::sigmaKin() {
363 double sigBW = 12. * M_PI / ( pow2(sH - m2Res) + pow2(sH * GamMRat) );
366 double widthOut = particlePtr->resWidthOpen(663, mH);
369 sigOut = sigBW * widthOut;
377 double Sigma1ffbar2Zv::sigmaHat() {
380 int id1Abs = abs(id1);
381 double widthIn = particlePtr->resWidthChan( mH, id1Abs, -id1Abs);
382 if (id1Abs < 6) widthIn /= 9.;
383 return widthIn * sigOut;
391 void Sigma1ffbar2Zv::setIdColAcol() {
394 setId( id1, id2, idZv);
397 if (abs(id1) < 6) setColAcol( 1, 0, 0, 1, 0, 0);
398 else setColAcol( 0, 0, 0, 0, 0, 0);
399 if (id1 < 0) swapColAcol();
407 double Sigma1ffbar2Zv::weightDecay(
Event& process,
int iResBeg,
411 int idMother = process[process[iResBeg].mother1()].idAbs();
414 if (iResBeg == 5 && iResEnd == 5) {
415 double mr = 4. * pow2(process[6].m()) / sH;
416 double cosThe = (process[3].p() - process[4].p())
417 * (process[7].p() - process[6].p()) / (sH * sqrtpos(1. - mr));
418 double wt = 1. + pow2(cosThe) + mr * (1. - pow2(cosThe));
424 return weightTopDecay( process, iResBeg, iResEnd);