9 #include "Pythia8/SigmaDM.h"
22 void Sigma1ffbar2Zp2XX::initProc() {
25 mRes = particleDataPtr->m0(55);
26 GammaRes = particleDataPtr->mWidth(55);
30 particlePtr = particleDataPtr->particleDataEntryPtr(55);
32 double mf, mr, psvec, psaxi, betaf;
36 for (
int i = 0; i < particlePtr->sizeChannels(); ++i) {
37 int idAbs = abs( particlePtr->channel(i).product(0));
40 particlePtr->channel(i).onMode(0);
44 mf = particleDataPtr->m0(idAbs);
47 if (mRes > 2. * mf + MASSMARGIN) {
49 betaf = sqrtpos(1. - 4. * mr);
50 psvec = betaf * (1. + 2. * mr);
52 double vf = settingsPtr->parm(
"Zp:vX");
53 double af = settingsPtr->parm(
"Zp:aX");
54 preFac += (vf * vf * psvec + af * af * psaxi ) ;
64 void Sigma1ffbar2Zp2XX::sigmaKin() {
66 sigma0 = 1. / ( pow2(sH - m2Res) + pow2(mRes * GammaRes) );
74 double Sigma1ffbar2Zp2XX::sigmaHat() {
77 if (id1 + id2 != 0 || abs(id1) > 6 )
return 0.;
87 if (abs(id1) % 2 == 0) {
88 vf = settingsPtr->parm(
"Zp:vu");
89 af = settingsPtr->parm(
"Zp:au");
92 vf = settingsPtr->parm(
"Zp:vd");
93 af = settingsPtr->parm(
"Zp:ad");
96 double vf2af2 = vf * vf + af * af;
97 double sigma = preFac * sigma0 * vf2af2;
108 void Sigma1ffbar2Zp2XX::setIdColAcol() {
112 if (abs(id1) < 9) setColAcol( 1, 0, 0, 1, 0, 0);
113 else setColAcol( 0, 0, 0, 0, 0, 0);
114 if (id1 < 0) swapColAcol();
127 void Sigma2qqbar2Zpg2XXj::initProc() {
130 mRes = particleDataPtr->m0(55);
131 GammaRes = particleDataPtr->mWidth(55);
135 particlePtr = particleDataPtr->particleDataEntryPtr(55);
137 double mf, mr, psvec, psaxi, betaf;
140 mf = particleDataPtr->m0(52);
141 for (
int i = 0; i < particlePtr->sizeChannels(); ++i) {
142 int idAbs = abs( particlePtr->channel(i).product(0));
145 particlePtr->channel(i).onMode(0);
150 if (m3 > 2. * mf + MASSMARGIN) {
152 betaf = sqrtpos(1. - 4. * mr);
153 psvec = betaf * (1. + 2. * mr);
155 double vf = settingsPtr->parm(
"Zp:vX");
156 double af = settingsPtr->parm(
"Zp:aX");
157 preFac += (vf * vf * psvec + af * af * psaxi) ;
166 void Sigma2qqbar2Zpg2XXj::sigmaKin() {
168 double propZp = s3 / ( pow2(s3 - m2Res) + pow2(mRes * GammaRes) );
171 sigma0 = (M_PI / sH2) * (alpEM * alpS) * propZp
172 * (2./9.) * (tH2 + uH2 + 2. * sH * s3) / (tH * uH);
180 double Sigma2qqbar2Zpg2XXj::sigmaHat() {
183 if (id1 + id2 != 0 || abs(id1) > 6 )
return 0.;
187 if (abs(id1) % 2 == 0) {
188 vf = settingsPtr->parm(
"Zp:vu");
189 af = settingsPtr->parm(
"Zp:au");
192 vf = settingsPtr->parm(
"Zp:vd");
193 af = settingsPtr->parm(
"Zp:ad");
196 double vf2af2 = vf * vf + af * af;
197 double sigma = sigma0 * vf2af2;
208 void Sigma2qqbar2Zpg2XXj::setIdColAcol() {
210 setId(id1, id2, 55, 21);
213 if (id1 > 0) setColAcol( 1, 0, 0, 2, 0, 0, 1, 2);
214 else setColAcol( 0, 2, 1, 0, 0, 0, 1, 2);
228 void Sigma2ffbar2ZpH::initProc() {
231 mRes = particleDataPtr->m0(55);
232 GammaRes = particleDataPtr->mWidth(55);
234 coupZpH = settingsPtr->parm(
"Zp:coupH");
235 gZp = settingsPtr->parm(
"Zp:gZp");
238 particlePtr = particleDataPtr->particleDataEntryPtr(55);
240 openFrac = particleDataPtr->resOpenFrac(55, 25);
248 void Sigma2ffbar2ZpH::sigmaKin() {
250 double denom = (pow2(sH - m2Res) + pow2(mRes * GammaRes));
252 sigma0 = (M_PI / sH2) * 8. * pow2(gZp * coupZpH)
253 * (tH * uH - s3 * s4 + 2. * sH * s4);
263 double Sigma2ffbar2ZpH::sigmaHat() {
266 if (id1 + id2 != 0 )
return 0.;
269 double vf = 0., af = 0.;
271 if (abs(id1) % 2 == 0) {
272 vf = settingsPtr->parm(
"Zp:vu");
273 af = settingsPtr->parm(
"Zp:au");
276 vf = settingsPtr->parm(
"Zp:vd");
277 af = settingsPtr->parm(
"Zp:ad");
280 double sigma = sigma0 * (vf * vf + af * af);
281 if (abs(id1) < 9) sigma /= 3.;
295 void Sigma2ffbar2ZpH::setIdColAcol() {
297 setId(id1, id2, 55, 25);
299 if (abs(id1) < 9) setColAcol( 1, 0, 0, 1, 0, 0, 0, 0);
300 else setColAcol( 0, 0, 0, 0, 0, 0, 0, 0);
301 if (id1 < 0) swapColAcol();
315 void Sigma1gg2S2XX::initProc() {
318 mRes = particleDataPtr->m0(54);
319 GammaRes = particleDataPtr->mWidth(54);
323 particlePtr = particleDataPtr->particleDataEntryPtr(54);
325 for (
int i = 0; i < particlePtr->sizeChannels(); ++i) {
326 int idAbs = abs( particlePtr->channel(i).product(0));
329 particlePtr->channel(i).onMode(0);
339 void Sigma1gg2S2XX::sigmaKin() {
341 double propS = sH / ( pow2(sH - m2Res) + pow2(mRes * GammaRes) );
342 sigma0 = 8. * M_PI * propS;
350 double Sigma1gg2S2XX::sigmaHat() {
353 if (id1 != id2 || abs(id1) != 21 )
return 0.;
355 double widthIn = particlePtr->resWidthChan( mRes, 21, 21) / 64.;
358 double widthOut = particlePtr->resWidthChan( mRes, 52, -52);
361 double sigma = widthIn * sigma0 * widthOut;
372 void Sigma1gg2S2XX::setIdColAcol() {
375 setColAcol( 1, 2, 2, 1, 0, 0);
388 void Sigma2gg2Sg2XXj::initProc() {
391 mRes = particleDataPtr->m0(54);
392 GammaRes = particleDataPtr->mWidth(54);
396 particlePtr = particleDataPtr->particleDataEntryPtr(54);
398 for (
int i = 0; i < particlePtr->sizeChannels(); ++i) {
399 int idAbs = abs( particlePtr->channel(i).product(0));
402 particlePtr->channel(i).onMode(0);
412 void Sigma2gg2Sg2XXj::sigmaKin() {
414 double wid = particlePtr->resWidthChan(m3, 21, 21);
437 sigma0 = (M_PI / sH2) * (3. / 16.) * alpS * (wid / m3)
438 * (sH2 * sH2 + tH2 * tH2 + uH2 * uH2 + pow2(sH2))
439 / (sH * tH * uH * sH);
447 double Sigma2gg2Sg2XXj::sigmaHat() {
449 return sigma0 * particlePtr->resWidthChan(mRes, 52, -52);
457 void Sigma2gg2Sg2XXj::setIdColAcol() {
459 setId(id1, id2, 54, 21);
461 if( rndmPtr->flat() < 0.5)
462 setColAcol( 1, 2, 3, 1, 0, 0, 3, 2);
464 setColAcol( 1, 2, 2, 3, 0, 0, 1, 3);