9 #include "Pythia8/SigmaLeptoquark.h"
22 void Sigma1ql2LeptoQuark::initProc() {
25 mRes = particleDataPtr->m0(42);
26 GammaRes = particleDataPtr->mWidth(42);
28 GamMRat = GammaRes / mRes;
31 kCoup = settingsPtr->parm(
"LeptoQuark:kCoup");
34 LQPtr = particleDataPtr->particleDataEntryPtr(42);
37 idQuark = LQPtr->channel(0).product(0);
38 idLepton = LQPtr->channel(0).product(1);
46 void Sigma1ql2LeptoQuark::sigmaKin() {
49 widthIn = 0.25 * alpEM * kCoup * mH;
52 sigBW = 4. * M_PI/ ( pow2(sH - m2Res) + pow2(sH * GamMRat) );
60 double Sigma1ql2LeptoQuark::sigmaHat() {
64 if (id1 == idQuark && id2 == idLepton) idLQ = 42;
65 else if (id2 == idQuark && id1 == idLepton) idLQ = 42;
66 else if (id1 == -idQuark && id2 == -idLepton) idLQ = -42;
67 else if (id2 == -idQuark && id1 == -idLepton) idLQ = -42;
68 if (idLQ == 0)
return 0.;
71 return widthIn * sigBW * LQPtr->resWidthOpen(idLQ, mH);
79 void Sigma1ql2LeptoQuark::setIdColAcol() {
82 int idq = (abs(id1) < 9) ? id1 : id2;
83 int idLQ = (idq > 0) ? 42 : -42;
84 setId( id1, id2, idLQ);
87 if (id1 == idq) setColAcol( 1, 0, 0, 0, 1, 0);
88 else setColAcol( 0, 0, 1, 0, 1, 0);
89 if (idq < 0) swapColAcol();
102 void Sigma2qg2LeptoQuarkl::initProc() {
105 mRes = particleDataPtr->m0(42);
106 GammaRes = particleDataPtr->mWidth(42);
108 GamMRat = GammaRes / mRes;
111 kCoup = settingsPtr->parm(
"LeptoQuark:kCoup");
114 ParticleDataEntry* LQPtr = particleDataPtr->particleDataEntryPtr(42);
115 idQuark = LQPtr->channel(0).product(0);
116 idLepton = LQPtr->channel(0).product(1);
119 openFracPos = LQPtr->resOpenFrac( 42);
120 openFracNeg = LQPtr->resOpenFrac(-42);
128 void Sigma2qg2LeptoQuarkl::sigmaKin() {
131 sigma0 = (M_PI / sH2) * kCoup * (alpS * alpEM / 6.) * (-tH / sH)
132 * (uH2 + s3 * s3) / pow2(uH - s3);
140 double Sigma2qg2LeptoQuarkl::sigmaHat() {
143 if (abs(id1) != idQuark && abs(id2) != idQuark)
return 0.;
146 double sigma = sigma0;
147 sigma *= (id1 == idQuark || id2 == idQuark) ? openFracPos : openFracNeg;
156 void Sigma2qg2LeptoQuarkl::setIdColAcol() {
159 int idq = (id2 == 21) ? id1 : id2;
160 int idLQ = (idq > 0) ? 42 : -42;
161 int idlp = (idq > 0) ? -idLepton : idLepton;
162 setId( id1, id2, idLQ, idlp);
165 swapTU = (id1 == 21);
168 if (id2 == 21) setColAcol( 1, 0, 2, 1, 2, 0, 0, 0);
169 else setColAcol( 2, 1, 1, 0, 2, 0, 0, 0);
170 if (idq < 0) swapColAcol();
183 void Sigma2gg2LQLQbar::initProc() {
186 mRes = particleDataPtr->m0(42);
187 GammaRes = particleDataPtr->mWidth(42);
189 GamMRat = GammaRes / mRes;
192 openFrac = particleDataPtr->resOpenFrac(42, -42);
200 void Sigma2gg2LQLQbar::sigmaKin() {
203 double delta = 0.25 * pow2(s3 - s4) / sH;
204 double m2avg = 0.5 * (s3 + s4) - delta;
205 double tHavg = tH - delta;
206 double uHavg = uH - delta;
209 sigma = (M_PI / sH2) * 0.5 * pow2(alpS)
210 * ( 7. / 48. + 3. * pow2(uHavg - tHavg) / (16. * sH2) )
211 * ( 1. + 2. * m2avg * tHavg / pow2(tHavg - m2avg)
212 + 2. * m2avg * uHavg / pow2(uHavg - m2avg)
213 + 4. * m2avg * m2avg / ((tHavg - m2avg) * (uHavg - m2avg)) );
222 void Sigma2gg2LQLQbar::setIdColAcol() {
225 setId( 21, 21, 42, -42);
228 if (rndmPtr->flat() < 0.5) setColAcol( 1, 2, 2, 3, 1, 0, 0, 3);
229 else setColAcol( 1, 2, 3, 1, 3, 0, 0, 2);
242 void Sigma2qqbar2LQLQbar::initProc() {
245 mRes = particleDataPtr->m0(42);
246 GammaRes = particleDataPtr->mWidth(42);
248 GamMRat = GammaRes / mRes;
251 kCoup = settingsPtr->parm(
"LeptoQuark:kCoup");
254 ParticleDataEntry* LQPtr = particleDataPtr->particleDataEntryPtr(42);
255 idQuark = LQPtr->channel(0).product(0);
258 openFrac = particleDataPtr->resOpenFrac(42, -42);
266 void Sigma2qqbar2LQLQbar::sigmaKin() {
269 double delta = 0.25 * pow2(s3 - s4) / sH;
270 double m2avg = 0.5 * (s3 + s4) - delta;
271 double tHavg = tH - delta;
272 double uHavg = uH - delta;
275 sigmaDiff = (M_PI / sH2) * (pow2(alpS) / 9.)
276 * ( sH * (sH - 4. * m2avg) - pow2(uHavg - tHavg) ) / sH2;
279 sigmaSame = sigmaDiff + (M_PI / sH2) * (pow2(kCoup * alpEM) / 8.)
280 * (-sH * tHavg - pow2(m2avg-tHavg)) / pow2(tHavg)
281 + (M_PI / sH2) * (kCoup * alpEM * alpS / 18.) * ( (m2avg - tHavg)
282 * (uHavg - tHavg) + sH * (m2avg + tHavg) ) / (sH * tHavg);
285 sigmaDiff *= openFrac;
286 sigmaSame *= openFrac;
294 void Sigma2qqbar2LQLQbar::setIdColAcol() {
297 setId( id1, id2, 42, -42);
303 if (id1 > 0) setColAcol( 1, 0, 0, 2, 1, 0, 0, 2);
304 else setColAcol( 0, 2, 1, 0, 1, 0, 0, 2);