StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SigmaExtraDim.h
1 // SigmaExtraDim.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2020 Torbjorn Sjostrand.
3 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
4 // Please respect the MCnet Guidelines, see GUIDELINES for details.
5 
6 // Author: Stefan Ask for the *LED* routines.
7 // Header file for extra-dimensional-process differential cross sections.
8 // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
9 
10 #ifndef Pythia8_SigmaExtraDim_H
11 #define Pythia8_SigmaExtraDim_H
12 
13 #include "Pythia8/SigmaProcess.h"
14 
15 namespace Pythia8 {
16 
17 //==========================================================================
18 
19 // A derived class for g g -> G^* (excited graviton state).
20 
21 class Sigma1gg2GravitonStar : public Sigma1Process {
22 
23 public:
24 
25  // Constructor.
26  Sigma1gg2GravitonStar() : eDsmbulk(), eDvlvl(), idGstar(), mRes(),
27  GammaRes(), m2Res(), GamMRat(), kappaMG(), sigma(), eDcoupling(),
28  gStarPtr() {}
29 
30  // Initialize process.
31  virtual void initProc();
32 
33  // Calculate flavour-independent parts of cross section.
34  virtual void sigmaKin();
35 
36  // Evaluate sigmaHat(sHat).
37  virtual double sigmaHat() {return sigma;}
38 
39  // Select flavour, colour and anticolour.
40  virtual void setIdColAcol();
41 
42  // Evaluate weight for G* decay angle.
43  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
44 
45  // Info on the subprocess.
46  virtual string name() const {return "g g -> G*";}
47  virtual int code() const {return 5001;}
48  virtual string inFlux() const {return "gg";}
49  virtual int resonanceA() const {return idGstar;}
50 
51 private:
52 
53  // Parameters set at initialization or for current kinematics.
54  bool eDsmbulk, eDvlvl;
55  int idGstar;
56  double mRes, GammaRes, m2Res, GamMRat, kappaMG, sigma;
57 
58  // Couplings between graviton and SM (indexed by particle id).
59  double eDcoupling[27];
60 
61  // Pointer to properties of the particle species, to access decay channels.
62  ParticleDataEntry* gStarPtr;
63 
64 };
65 
66 //==========================================================================
67 
68 // A derived class for f fbar -> G^* (excited graviton state).
69 
70 class Sigma1ffbar2GravitonStar : public Sigma1Process {
71 
72 public:
73 
74  // Constructor.
75  Sigma1ffbar2GravitonStar() : eDsmbulk(), eDvlvl(), idGstar(), mRes(),
76  GammaRes(), m2Res(), GamMRat(), kappaMG(), sigma0(), eDcoupling(),
77  gStarPtr() {}
78 
79  // Initialize process.
80  virtual void initProc();
81 
82  // Calculate flavour-independent parts of cross section.
83  virtual void sigmaKin();
84 
85  // Evaluate sigmaHat(sHat).
86  virtual double sigmaHat();
87 
88  // Select flavour, colour and anticolour.
89  virtual void setIdColAcol();
90 
91  // Evaluate weight for G* decay angle.
92  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
93 
94  // Info on the subprocess.
95  virtual string name() const {return "f fbar -> G*";}
96  virtual int code() const {return 5002;}
97  virtual string inFlux() const {return "ffbarSame";}
98  virtual int resonanceA() const {return idGstar;}
99 
100 private:
101 
102  // Parameters set at initialization or for current kinematics.
103  bool eDsmbulk, eDvlvl;
104  int idGstar;
105  double mRes, GammaRes, m2Res, GamMRat, kappaMG, sigma0;
106 
107  // Couplings between graviton and SM (indexed by particle id).
108  double eDcoupling[27];
109 
110  // Pointer to properties of the particle species, to access decay channels.
111  ParticleDataEntry* gStarPtr;
112 
113 };
114 
115 //==========================================================================
116 
117 // A derived class for q qbar -> g^*/KK-gluon^* (excited kk-gluon state).
118 
119 class Sigma1qqbar2KKgluonStar : public Sigma1Process {
120 
121 public:
122 
123  // Constructor.
124  Sigma1qqbar2KKgluonStar() : idKKgluon(), mRes(), GammaRes(), m2Res(),
125  GamMRat(), sumSM(), sumInt(), sumKK(), sigSM(), sigInt(), sigKK(),
126  eDgv(), eDga(), interfMode(), gStarPtr() {}
127 
128  // Initialize process.
129  virtual void initProc();
130 
131  // Calculate flavour-independent parts of cross section.
132  virtual void sigmaKin();
133 
134  // Evaluate sigmaHat(sHat).
135  virtual double sigmaHat();
136 
137  // Select flavour, colour and anticolour.
138  virtual void setIdColAcol();
139 
140  // Evaluate weight for g* decay angle.
141  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
142 
143  // Info on the subprocess.
144  virtual string name() const {return "q qbar -> g*/KK-gluon*";}
145  virtual int code() const {return 5006;}
146  virtual string inFlux() const {return "qqbarSame";}
147  virtual int resonanceA() const {return idKKgluon;}
148 
149 private:
150 
151  // Parameters set at initialization or for current kinematics.
152  int idKKgluon;
153  double mRes, GammaRes, m2Res, GamMRat;
154  double sumSM, sumInt, sumKK, sigSM, sigInt, sigKK;
155 
156  // Couplings between kk gluon and SM (indexed by particle id).
157  // Helicity dependent couplings. Use vector/axial-vector
158  // couplings internally, gv/ga = 0.5 * (gL +/- gR).
159  double eDgv[10], eDga[10];
160 
161  // Interference parameter.
162  int interfMode;
163 
164  // Pointer to properties of the particle species, to access decay
165  // channels.
166  ParticleDataEntry* gStarPtr;
167 
168 };
169 
170 //==========================================================================
171 
172 // A derived class for g g -> G^* g (excited graviton state).
173 
174 class Sigma2gg2GravitonStarg : public Sigma2Process {
175 
176 public:
177 
178  // Constructor.
179  Sigma2gg2GravitonStarg() : idGstar(), mRes(), GammaRes(), m2Res(),
180  GamMRat(), kappaMG(), openFrac(), sigma() {}
181 
182  // Initialize process.
183  virtual void initProc();
184 
185  // Calculate flavour-independent parts of cross section.
186  virtual void sigmaKin();
187 
188  // Evaluate sigmaHat(sHat).
189  virtual double sigmaHat() {return sigma;}
190 
191  // Select flavour, colour and anticolour.
192  virtual void setIdColAcol();
193 
194  // Evaluate weight: currently isotropic (except secondary top decay)..
195  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
196 
197  // Info on the subprocess.
198  virtual string name() const {return "g g -> G* g";}
199  virtual int code() const {return 5003;}
200  virtual string inFlux() const {return "gg";}
201  virtual int id3Mass() const {return idGstar;}
202 
203 private:
204 
205  // Parameters set at initialization or for current kinematics.
206  int idGstar;
207  double mRes, GammaRes, m2Res, GamMRat, kappaMG, openFrac, sigma;
208 
209 };
210 
211 //==========================================================================
212 
213 // A derived class for q g -> G^* q (excited graviton state).
214 
215 class Sigma2qg2GravitonStarq : public Sigma2Process {
216 
217 public:
218 
219  // Constructor.
220  Sigma2qg2GravitonStarq() : idGstar(), mRes(), GammaRes(), m2Res(),
221  GamMRat(), kappaMG(), openFrac(), sigma() {}
222 
223  // Initialize process.
224  virtual void initProc();
225 
226  // Calculate flavour-independent parts of cross section.
227  virtual void sigmaKin();
228 
229  // Evaluate sigmaHat(sHat).
230  virtual double sigmaHat() {return sigma;}
231 
232  // Select flavour, colour and anticolour.
233  virtual void setIdColAcol();
234 
235  // Evaluate weight: currently isotropic (except secondary top decay).
236  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
237 
238  // Info on the subprocess.
239  virtual string name() const {return "q g -> G* q";}
240  virtual int code() const {return 5004;}
241  virtual string inFlux() const {return "qg";}
242  virtual int id3Mass() const {return idGstar;}
243 
244 private:
245 
246  // Parameters set at initialization or for current kinematics.
247  int idGstar;
248  double mRes, GammaRes, m2Res, GamMRat, kappaMG, openFrac, sigma;
249 
250 };
251 
252 //==========================================================================
253 
254 // A derived class for q qbar -> G^* g (excited graviton state).
255 
256 class Sigma2qqbar2GravitonStarg : public Sigma2Process {
257 
258 public:
259 
260  // Constructor.
261  Sigma2qqbar2GravitonStarg() : idGstar(), mRes(), GammaRes(), m2Res(),
262  GamMRat(), kappaMG(), openFrac(), sigma() {}
263 
264  // Initialize process.
265  virtual void initProc();
266 
267  // Calculate flavour-independent parts of cross section.
268  virtual void sigmaKin();
269 
270  // Evaluate sigmaHat(sHat).
271  virtual double sigmaHat() {return sigma;}
272 
273  // Select flavour, colour and anticolour.
274  virtual void setIdColAcol();
275 
276  // Evaluate weight: currently isotropic (except secondary top decay).
277  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
278 
279  // Info on the subprocess.
280  virtual string name() const {return "q qbar -> G* g";}
281  virtual int code() const {return 5005;}
282  virtual string inFlux() const {return "qqbarSame";}
283  virtual int id3Mass() const {return idGstar;}
284 
285 private:
286 
287  // Parameters set at initialization or for current kinematics.
288  int idGstar;
289  double mRes, GammaRes, m2Res, GamMRat, kappaMG, openFrac, sigma;
290 
291 };
292 
293 //==========================================================================
294 
295 // NOAM: A derived class for, f fbar -> (gamma/Z)_KKTower -> F Fbar,
296 // for one heavy F.
297 // Process provided by N. Hod et al. and is described in arXiv:XXXX.YYYY
298 
299 class Sigma2ffbar2TEVffbar : public Sigma2Process {
300 
301 public:
302 
303  // Constructor.
304  Sigma2ffbar2TEVffbar(int idIn, int codeIn) : idNew(idIn), gmZmode(),
305  codeSave(codeIn), nexcitationmax(), isPhysical(), gPlusf(), gMinusf(),
306  gPlusF(), gMinusF(), gPlusTop(), gMinusTop(), gf(), gF(), mRes(), m2Res(),
307  mStar(), mTop(), m2Top(), mZKKn(), m2ZKKn(), m2gmKKn(), mgmKKn(),
308  alphaemfixed(), helicityME2(), coefTot(), coefAngular(), mr(), betaf(),
309  cosThe(), openFracPair(), wgmKKFactor(), wgmKKn(), wZKKn(), wZ0(),
310  ttbarwZKKn(), ttbarwgmKKn(), ttbarwFactorA(), ttbarwFactorB(),
311  phaseSpacemHatMin(), phaseSpacemHatMax() {}
312 
313  // Initialize process.
314  virtual void initProc();
315 
316  // Calculate flavour-independent parts of cross section.
317  virtual void sigmaKin();
318 
319  // Evaluate sigmaHat(sHat).
320  virtual double sigmaHat();
321 
322  // Select flavour, colour and anticolour.
323  virtual void setIdColAcol();
324 
325  // Evaluate weight for W decay angles in top decay (else inactive).
326  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
327 
328  // Info on the subprocess.
329  virtual string name() const {return nameSave;}
330  virtual int code() const {return codeSave;}
331  virtual string inFlux() const {return "ffbarSame";}
332  virtual bool isSChannel() const {return true;}
333  virtual int idSChannel() const {return 5000023;}
334  virtual int resonanceA() const {return 23;}
335  virtual int resonanceB() const {return 5000023;}
336  virtual int id3Mass() const {return idNew;}
337  virtual int id4Mass() const {return idNew;}
338  // Add phase-space sampling also around the Z_KK resonance.
339  virtual int resonanceA();
340  virtual int resonanceB();
341 
342 private:
343 
344  // Values stored for process type.
345  string nameSave;
346  int idNew, gmZmode, codeSave, nexcitationmax;
347  bool isPhysical;
348  double gPlusf, gMinusf, gPlusF, gMinusF, gPlusTop, gMinusTop, gf, gF;
349  double mRes, m2Res, mStar, mTop, m2Top, mZKKn, m2ZKKn, m2gmKKn, mgmKKn,
350  alphaemfixed;
351  double helicityME2, coefTot, coefAngular;
352  double mr, betaf, cosThe, openFracPair;
353  double wgmKKFactor, wgmKKn, wZKKn,
354  wZ0, ttbarwZKKn, ttbarwgmKKn,
355  ttbarwFactorA, ttbarwFactorB;
356  double phaseSpacemHatMin, phaseSpacemHatMax;
357  complex gammaProp, resProp, gmPropKK, ZPropKK, totalProp;
358  complex mI;
359 };
360 
361 //==========================================================================
362 
363 // A derived class for g g -> U/G g (real graviton emission in
364 // large extra dimensions or unparticle emission).
365 
366 class Sigma2gg2LEDUnparticleg : public Sigma2Process {
367 
368 public:
369 
370  // Constructor: bool Graviton = true, to use LED graviton settings.
371  Sigma2gg2LEDUnparticleg( bool Graviton ) : eDgraviton(Graviton), eDspin(),
372  eDnGrav(), eDidG(), eDcutoff(), mG(), mGS(), eDsigma0(), eDdU(),
373  eDLambdaU(), eDlambda(), eDconstantTerm(), eDtff(), eDcf() {}
374 
375  // Initialize process.
376  virtual void initProc();
377 
378  // Calculate flavour-independent parts of cross section;
379  // first step when inflavours unknown.
380  virtual void sigmaKin();
381 
382  // Evaluate sigmaHat(sHat); second step for given inflavours.
383  virtual double sigmaHat();
384 
385  // Select flavour, colour and anticolour.
386  virtual void setIdColAcol();
387 
388  // Info on the subprocess.
389  virtual string name() const {return
390  (eDgraviton ? "g g -> G g" : "g g -> U g") ;}
391  virtual int code() const {return (eDgraviton ? 5021 : 5045);}
392  virtual string inFlux() const {return "gg";}
393  virtual int id3Mass() const {return 5000039;}
394  virtual int id4Mass() const {return 21;}
395 
396 private:
397 
398  bool eDgraviton;
399  int eDspin, eDnGrav, eDidG, eDcutoff;
400  double mG, mGS, eDsigma0, eDdU, eDLambdaU, eDlambda, eDconstantTerm,
401  eDtff, eDcf;
402 
403 };
404 
405 //==========================================================================
406 
407 // A derived class for q g -> U/G q (real graviton emission in
408 // large extra dimensions or unparticle emission).
409 
410 class Sigma2qg2LEDUnparticleq : public Sigma2Process {
411 
412 public:
413 
414  // Constructor: bool Graviton = true, to use LED graviton settings.
415  Sigma2qg2LEDUnparticleq( bool Graviton) : eDgraviton(Graviton), eDspin(),
416  eDnGrav(), eDidG(), eDcutoff(), mG(), mGS(), eDsigma0(), eDdU(),
417  eDLambdaU(), eDlambda(), eDconstantTerm(), eDtff(), eDgf(), eDcf() {}
418 
419  // Initialize process.
420  virtual void initProc();
421 
422  // Calculate flavour-independent parts of cross section;
423  // first step when inflavours unknown.
424  virtual void sigmaKin();
425 
426  // Evaluate sigmaHat(sHat); second step for given inflavours.
427  virtual double sigmaHat();
428 
429  // Select flavour, colour and anticolour.
430  virtual void setIdColAcol();
431 
432  // Info on the subprocess.
433  virtual string name() const {return
434  (eDgraviton ? "q g -> G q" : "q g -> U q") ;}
435  virtual int code() const {return (eDgraviton ? 5022 : 5046);}
436  virtual string inFlux() const {return "qg";}
437  virtual int id3Mass() const {return 5000039;}
438 
439 private:
440 
441  bool eDgraviton;
442  int eDspin, eDnGrav, eDidG, eDcutoff;
443  double mG, mGS, eDsigma0, eDdU, eDLambdaU, eDlambda, eDconstantTerm,
444  eDtff, eDgf, eDcf;
445 
446 };
447 
448 //==========================================================================
449 
450 // A derived class for q qbar -> U/G g (real graviton emission in
451 // large extra dimensions or unparticle emission).
452 
453 class Sigma2qqbar2LEDUnparticleg : public Sigma2Process {
454 
455 public:
456 
457  // Constructor: bool Graviton = true, to use LED graviton settings.
458  Sigma2qqbar2LEDUnparticleg( bool Graviton) : eDgraviton(Graviton), eDspin(),
459  eDnGrav(), eDidG(), eDcutoff(), mG(), mGS(), eDsigma0(), eDdU(),
460  eDLambdaU(), eDlambda(), eDconstantTerm(), eDtff(), eDgf(), eDcf() {}
461 
462  // Initialize process.
463  virtual void initProc();
464 
465  // Calculate flavour-independent parts of cross section;
466  // first step when inflavours unknown.
467  virtual void sigmaKin();
468 
469  // Evaluate sigmaHat(sHat); second step for given inflavours.
470  virtual double sigmaHat();
471 
472  // Select flavour, colour and anticolour.
473  virtual void setIdColAcol();
474 
475  // Info on the subprocess.
476  virtual string name() const {return
477  (eDgraviton ? "q qbar -> G g" : "q qbar -> U g") ;}
478  virtual int code() const {return (eDgraviton ? 5023 : 5047);}
479  virtual string inFlux() const {return "qqbarSame";}
480  virtual int id3Mass() const {return 5000039;}
481  virtual int id4Mass() const {return 21;}
482 
483 private:
484 
485  bool eDgraviton;
486  int eDspin, eDnGrav, eDidG, eDcutoff;
487  double mG, mGS, eDsigma0, eDdU, eDLambdaU, eDlambda, eDconstantTerm,
488  eDtff, eDgf, eDcf;
489 
490 };
491 
492 //==========================================================================
493 
494 // A derived class for f fbar -> U/G Z (real graviton emission in
495 // large extra dimensions or unparticle emission).
496 
497 class Sigma2ffbar2LEDUnparticleZ : public Sigma2Process {
498 
499 public:
500 
501  // Constructor: bool Graviton = true, to use LED graviton settings.
502  Sigma2ffbar2LEDUnparticleZ( bool Graviton) : eDspin(), eDnGrav(), eDcutoff(),
503  eDidG(), eDgraviton(Graviton), eDdU(), eDLambdaU(), eDlambda(), eDratio(),
504  eDlambdaPrime(), eDtff(), eDconstantTerm(), sHS(), tHS(), uHS(), tHC(),
505  uHC(), tHQ(), uHQ(), tHuH(), mU(), mUS(), mZ(), widZ(), mZS(), mwZS(),
506  eDsigma0(), openFrac() {}
507 
508  // Initialize process.
509  virtual void initProc();
510 
511  // Calculate flavour-independent parts of cross section;
512  // first step when inflavours unknown.
513  virtual void sigmaKin();
514 
515  // Evaluate sigmaHat(sHat); second step for given inflavours.
516  virtual double sigmaHat();
517 
518  // Select flavour, colour and anticolour.
519  virtual void setIdColAcol();
520 
521  // Info on the subprocess.
522  virtual string name() const {return
523  (eDgraviton ? "f fbar -> G Z" : "f fbar -> U Z") ;}
524  virtual int code() const {return (eDgraviton ? 5024 : 5041);}
525  virtual string inFlux() const {return "ffbarSame";}
526  virtual int id3Mass() const {return 5000039;}
527  virtual int id4Mass() const {return 23;}
528  virtual int resonanceA() const {return 23;}
529  virtual int gmZmode() const {return 2;}
530 
531 private:
532 
533  // Constants: could only be changed in the code itself.
534  static const double FIXRATIO;
535 
536  int eDspin, eDnGrav, eDcutoff, eDidG;
537  bool eDgraviton;
538  double eDdU, eDLambdaU, eDlambda, eDratio, eDlambdaPrime,
539  eDtff, eDconstantTerm;
540  double sHS, tHS, uHS, tHC, uHC, tHQ, uHQ, tHuH, mU, mUS, mZ, widZ,
541  mZS, mwZS, eDsigma0, openFrac;
542 
543 };
544 
545 //==========================================================================
546 
547 // A derived class for f fbar -> U/G gamma (real graviton emission in
548 // large extra dimensions or unparticle emission).
549 
550 class Sigma2ffbar2LEDUnparticlegamma : public Sigma2Process {
551 
552 public:
553 
554  // Constructor: bool Graviton = true, to use LED graviton settings.
555  Sigma2ffbar2LEDUnparticlegamma( bool Graviton) : eDspin(), eDnGrav(),
556  eDcutoff(), eDidG(), eDgraviton(Graviton), eDdU(), eDLambdaU(),
557  eDlambda(), eDratio(), eDlambdaPrime(), eDtff(), eDconstantTerm(),
558  sHS(), tHS(), uHS(), tHC(), uHC(), tHQ(), uHQ(), tHuH(), mU(), mUS(),
559  mZ(), mZS(), eDsigma0() {}
560 
561  // Initialize process.
562  virtual void initProc();
563 
564  // Calculate flavour-independent parts of cross section;
565  // first step when inflavours unknown.
566  virtual void sigmaKin();
567 
568  // Evaluate sigmaHat(sHat); second step for given inflavours.
569  virtual double sigmaHat();
570 
571  // Select flavour, colour and anticolour.
572  virtual void setIdColAcol();
573 
574  // Info on the subprocess.
575  virtual string name() const {return
576  (eDgraviton ? "f fbar -> G gamma" : "f fbar -> U gamma") ;}
577  virtual int code() const {return (eDgraviton ? 5025 : 5042);}
578  virtual string inFlux() const {return "ffbarSame";}
579  virtual int id3Mass() const {return 5000039;}
580  virtual int id4Mass() const {return 22;}
581 
582 private:
583 
584  // Constants: could only be changed in the code itself.
585  static const double FIXRATIO;
586 
587  int eDspin, eDnGrav, eDcutoff, eDidG;
588  bool eDgraviton;
589  double eDdU, eDLambdaU, eDlambda, eDratio, eDlambdaPrime,
590  eDtff, eDconstantTerm;
591  double sHS, tHS, uHS, tHC, uHC, tHQ, uHQ, tHuH, mU, mUS, mZ,
592  mZS, eDsigma0;
593 
594 };
595 
596 //==========================================================================
597 
598 // A derived class for f fbar -> (LED G*/U*) -> gamma gamma
599 // (virtual graviton/unparticle exchange).
600 
601 class Sigma2ffbar2LEDgammagamma : public Sigma2Process {
602 
603 public:
604 
605  // Constructor: bool Graviton = true, to use LED graviton settings.
606  Sigma2ffbar2LEDgammagamma( bool Graviton) : eDspin(), eDcutoff(), eDnGrav(),
607  eDnegInt(), eDgraviton(Graviton), eDdU(), eDLambdaU(), eDlambda(),
608  eDlambda2chi(), eDterm1(), eDterm2(), eDterm3(), eDtff() {}
609 
610  // Initialize process.
611  virtual void initProc();
612 
613  // Calculate flavour-independent parts of cross section;
614  // first step when inflavours unknown.
615  virtual void sigmaKin();
616 
617  // Evaluate sigmaHat(sHat); second step for given inflavours.
618  virtual double sigmaHat();
619 
620  // Select flavour, colour and anticolour.
621  virtual void setIdColAcol();
622 
623  // Info on the subprocess.
624  virtual string name() const {return
625  (eDgraviton ? "f fbar -> (LED G*) -> gamma gamma"
626  : "f fbar -> (U*) -> gamma gamma") ;}
627  virtual int code() const {return (eDgraviton ? 5026 : 5043);}
628  virtual string inFlux() const {return "ffbarSame";}
629 
630 private:
631 
632  int eDspin, eDcutoff, eDnGrav, eDnegInt;
633  bool eDgraviton;
634  double eDdU, eDLambdaU, eDlambda, eDlambda2chi,
635  eDterm1, eDterm2, eDterm3, eDtff;
636 
637 };
638 
639 //==========================================================================
640 
641 // A derived class for g g -> (LED G*/U*) -> gamma gamma
642 // (virtual graviton/unparticle exchange).
643 
644 class Sigma2gg2LEDgammagamma : public Sigma2Process {
645 
646 public:
647 
648  // Constructor: bool Graviton = true, to use LED graviton settings.
649  Sigma2gg2LEDgammagamma( bool Graviton) : eDspin(), eDcutoff(), eDnGrav(),
650  eDgraviton(Graviton), eDdU(), eDLambdaU(), eDlambda(), eDlambda2chi(),
651  eDsigma0(), eDtff() {}
652 
653  // Initialize process.
654  virtual void initProc();
655 
656  // Calculate flavour-independent parts of cross section;
657  // first step when inflavours unknown.
658  virtual void sigmaKin();
659 
660  // Evaluate sigmaHat(sHat); second step for given inflavours.
661  virtual double sigmaHat();
662 
663  // Select flavour, colour and anticolour.
664  virtual void setIdColAcol();
665 
666  // Info on the subprocess.
667  virtual string name() const {return (eDgraviton
668  ? "g g -> (LED G*) -> gamma gamma" : "g g -> (U*) -> gamma gamma") ;}
669  virtual int code() const {return (eDgraviton ? 5027 : 5044);}
670  virtual string inFlux() const {return "gg";}
671 
672 private:
673 
674  int eDspin, eDcutoff, eDnGrav;
675  bool eDgraviton;
676  double eDdU, eDLambdaU, eDlambda, eDlambda2chi, eDsigma0, eDtff;
677 
678 };
679 
680 //==========================================================================
681 
682 // A derived class for f fbar -> (LED G*/U*) -> l lbar
683 // (virtual graviton/unparticle exchange).
684 // Does not include t-channel contributions relevant for e^+e^- to e^+e^-
685 
686 class Sigma2ffbar2LEDllbar : public Sigma2Process {
687 
688 public:
689 
690  // Constructor: bool Graviton = true, to use LED graviton settings.
691  Sigma2ffbar2LEDllbar( bool Graviton) : eDspin(), eDcutoff(), eDnGrav(),
692  eDnxx(), eDnxy(), eDnegInt(), eDgraviton(Graviton), eDdU(), eDLambdaU(),
693  eDlambda(), eDlambda2chi(), eDtff(), eDmZ(), eDmZS(), eDGZ(), eDGZS(),
694  eDabsMeU(), eDdenomPropZ(), eDrePropGamma(), eDrePropZ(), eDimPropZ(),
695  eDabsAS(), eDreA(), eDreABW(), eDpoly1(), eDpoly2(), eDpoly3() {}
696 
697  // Initialize process.
698  virtual void initProc();
699 
700  // Calculate flavour-independent parts of cross section;
701  // first step when inflavours unknown.
702  virtual void sigmaKin();
703 
704  // Evaluate sigmaHat(sHat); second step for given inflavours.
705  virtual double sigmaHat();
706 
707  // Select flavour, colour and anticolour.
708  virtual void setIdColAcol();
709 
710  // Info on the subprocess.
711  virtual string name() const {return
712  (eDgraviton ? "f fbar -> (LED G*) -> l l" : "f fbar -> (U*) -> l l") ;}
713  virtual int code() const {return (eDgraviton ? 5028 : 5048);}
714  virtual string inFlux() const {return "ffbarSame";}
715  virtual bool isSChannel() const {return true;}
716 
717 private:
718 
719  int eDspin, eDcutoff, eDnGrav,eDnxx, eDnxy, eDnegInt;
720  bool eDgraviton;
721  double eDdU, eDLambdaU, eDlambda, eDlambda2chi, eDtff,
722  eDmZ, eDmZS, eDGZ, eDGZS, eDabsMeU, eDdenomPropZ, eDrePropGamma,
723  eDrePropZ, eDimPropZ, eDabsAS, eDreA, eDreABW, eDpoly1, eDpoly2,
724  eDpoly3;
725 
726 };
727 
728 //==========================================================================
729 
730 // A derived class for g g -> (LED G*/U*) -> l lbar
731 // (virtual graviton/unparticle exchange).
732 
733 class Sigma2gg2LEDllbar : public Sigma2Process {
734 
735 public:
736 
737  // Constructor: bool Graviton = true, to use LED graviton settings.
738  Sigma2gg2LEDllbar( bool Graviton) : eDspin(), eDcutoff(), eDnGrav(),
739  eDgraviton(Graviton), eDdU(), eDLambdaU(), eDlambda(), eDlambda2chi(),
740  eDsigma0(), eDtff() {}
741 
742 
743  // Initialize process.
744  virtual void initProc();
745 
746  // Calculate flavour-independent parts of cross section;
747  // first step when inflavours unknown.
748  virtual void sigmaKin();
749 
750  // Evaluate sigmaHat(sHat); second step for given inflavours.
751  virtual double sigmaHat() {return eDsigma0;}
752 
753  // Select flavour, colour and anticolour.
754  virtual void setIdColAcol();
755 
756  // Info on the subprocess.
757  virtual string name() const {return
758  (eDgraviton ? "g g -> (LED G*) -> l l" : "g g -> (U*) -> l l") ;}
759  virtual int code() const {return (eDgraviton ? 5029 : 5049);}
760  virtual string inFlux() const {return "gg";}
761 
762 private:
763 
764  int eDspin, eDcutoff, eDnGrav;
765  bool eDgraviton;
766  double eDdU, eDLambdaU, eDlambda, eDlambda2chi, eDsigma0, eDtff;
767 
768 };
769 
770 //==========================================================================
771 
772 // A derived class for g g -> (LED G*) -> g g.
773 
774 class Sigma2gg2LEDgg : public Sigma2Process {
775 
776 public:
777 
778  // Constructor.
779  Sigma2gg2LEDgg() : sigTS(), sigUS(), sigTU(), sigSum(), sigma(), eDopMode(),
780  eDnGrav(), eDcutoff(), eDnegInt(), eDMD(), eDLambdaT(), eDtff() {}
781 
782  // Initialize process.
783  virtual void initProc();
784 
785  // Calculate flavour-independent parts of cross section.
786  virtual void sigmaKin();
787 
788  // Evaluate d(sigmaHat)/d(tHat).
789  virtual double sigmaHat() {return sigma;}
790 
791  // Select flavour, colour and anticolour.
792  virtual void setIdColAcol();
793 
794  // Info on the subprocess.
795  virtual string name() const {return "g g -> (LED G*) -> g g";}
796  virtual int code() const {return 5030;}
797  virtual string inFlux() const {return "gg";}
798 
799 private:
800 
801  // Values stored for colour flow selection.
802  double sigTS, sigUS, sigTU, sigSum, sigma;
803 
804  // Model parameters.
805  int eDopMode, eDnGrav, eDcutoff, eDnegInt;
806  double eDMD, eDLambdaT, eDtff;
807 
808 };
809 
810 //==========================================================================
811 
812 // A derived class for g g -> (LED G*) -> q qbar.
813 
814 class Sigma2gg2LEDqqbar : public Sigma2Process {
815 
816 public:
817 
818  // Constructor.
819  Sigma2gg2LEDqqbar() : nQuarkNew(), idNew(), mNew(), m2New(), sigTS(),
820  sigUS(), sigSum(), sigma(), eDopMode(), eDnGrav(), eDcutoff(),
821  eDnegInt(), eDMD(), eDLambdaT(), eDtff() {}
822 
823  // Initialize process.
824  virtual void initProc();
825 
826  // Calculate flavour-independent parts of cross section.
827  virtual void sigmaKin();
828 
829  // Evaluate d(sigmaHat)/d(tHat).
830  virtual double sigmaHat() {return sigma;}
831 
832  // Select flavour, colour and anticolour.
833  virtual void setIdColAcol();
834 
835  // Info on the subprocess.
836  virtual string name() const {return "g g -> (LED G*) -> q qbar (uds)";}
837  virtual int code() const {return 5031;}
838  virtual string inFlux() const {return "gg";}
839 
840 private:
841 
842  // Number of quarks to be considered in massless approximation.
843  int nQuarkNew;
844 
845  // Values stored for colour flow selection.
846  int idNew;
847  double mNew, m2New, sigTS, sigUS, sigSum, sigma;
848 
849  // Model parameters.
850  int eDopMode, eDnGrav, eDcutoff, eDnegInt;
851  double eDMD, eDLambdaT, eDtff;
852 
853 };
854 
855 //==========================================================================
856 
857 // A derived class for q g -> (LED G*) -> q g.
858 // Use massless approximation also for Q since no alternative.
859 
860 class Sigma2qg2LEDqg : public Sigma2Process {
861 
862 public:
863 
864  // Constructor.
865  Sigma2qg2LEDqg() : sigTS(), sigTU(), sigSum(), sigma(), eDopMode(),
866  eDnGrav(), eDcutoff(), eDnegInt(), eDMD(), eDLambdaT(), eDtff() {}
867 
868  // Initialize process.
869  virtual void initProc();
870 
871  // Calculate flavour-independent parts of cross section.
872  virtual void sigmaKin();
873 
874  // Evaluate d(sigmaHat)/d(tHat).
875  virtual double sigmaHat() {return sigma;}
876 
877  // Select flavour, colour and anticolour.
878  virtual void setIdColAcol();
879 
880  // Info on the subprocess.
881  virtual string name() const {return "q g -> (LED G*) -> q g";}
882  virtual int code() const {return 5032;}
883  virtual string inFlux() const {return "qg";}
884 
885 private:
886 
887  // Values stored for colour flow selection.
888  double sigTS, sigTU, sigSum, sigma;
889 
890  // Model parameters.
891  int eDopMode, eDnGrav, eDcutoff, eDnegInt;
892  double eDMD, eDLambdaT, eDtff;
893 
894 };
895 
896 //==========================================================================
897 
898 // A derived class for q q(bar)' -> (LED G*) -> q q(bar)'.
899 
900 class Sigma2qq2LEDqq : public Sigma2Process {
901 
902 public:
903 
904  // Constructor.
905  Sigma2qq2LEDqq() : sigT(), sigU(), sigTU(), sigST(), sigSum(), sigGrT1(),
906  sigGrT2(), sigGrU(), sigGrTU(), sigGrST(), eDopMode(), eDnGrav(),
907  eDcutoff(), eDnegInt(), eDMD(), eDLambdaT(), eDtff() {}
908 
909  // Initialize process.
910  virtual void initProc();
911 
912  // Calculate flavour-independent parts of cross section.
913  virtual void sigmaKin();
914 
915  // Evaluate d(sigmaHat)/d(tHat).
916  virtual double sigmaHat();
917 
918  // Select flavour, colour and anticolour.
919  virtual void setIdColAcol();
920 
921  // Info on the subprocess.
922  virtual string name() const {return "q q(bar)' -> (LED G*) -> q q(bar)'";}
923  virtual int code() const {return 5033;}
924  virtual string inFlux() const {return "qq";}
925 
926  private:
927 
928  // Values stored for colour flow selection.
929  double sigT, sigU, sigTU, sigST, sigSum;
930  double sigGrT1, sigGrT2, sigGrU, sigGrTU, sigGrST;
931 
932  // Model parameters.
933  int eDopMode, eDnGrav, eDcutoff, eDnegInt;
934  double eDMD, eDLambdaT, eDtff;
935 
936 };
937 
938 //==========================================================================
939 
940 // A derived class for q qbar -> (LED G*) -> g g.
941 
942 class Sigma2qqbar2LEDgg : public Sigma2Process {
943 
944 public:
945 
946  // Constructor.
947  Sigma2qqbar2LEDgg() : sigTS(), sigUS(), sigSum(), sigma(), eDopMode(),
948  eDnGrav(), eDcutoff(), eDnegInt(), eDMD(), eDLambdaT(), eDtff() {}
949 
950  // Initialize process.
951  virtual void initProc();
952 
953  // Calculate flavour-independent parts of cross section.
954  virtual void sigmaKin();
955 
956  // Evaluate d(sigmaHat)/d(tHat).
957  virtual double sigmaHat() {return sigma;}
958 
959  // Select flavour, colour and anticolour.
960  virtual void setIdColAcol();
961 
962  // Info on the subprocess.
963  virtual string name() const {return "q qbar -> (LED G*) -> g g";}
964  virtual int code() const {return 5034;}
965  virtual string inFlux() const {return "qqbarSame";}
966 
967  private:
968 
969  // Values stored for colour flow selection.
970  double sigTS, sigUS, sigSum, sigma;
971 
972  // Model parameters.
973  int eDopMode, eDnGrav, eDcutoff, eDnegInt;
974  double eDMD, eDLambdaT, eDtff;
975 
976 };
977 
978 //==========================================================================
979 
980 // A derived class for q qbar -> (LED G*) -> q' qbar'.
981 
982 class Sigma2qqbar2LEDqqbarNew : public Sigma2Process {
983 
984 public:
985 
986  // Constructor.
987  Sigma2qqbar2LEDqqbarNew() : nQuarkNew(), idNew(), mNew(), m2New(), sigS(),
988  sigma(), eDopMode(), eDnGrav(), eDcutoff(), eDMD(), eDLambdaT(),
989  eDtff() {}
990 
991  // Initialize process.
992  virtual void initProc();
993 
994  // Calculate flavour-independent parts of cross section.
995  virtual void sigmaKin();
996 
997  // Evaluate d(sigmaHat)/d(tHat).
998  virtual double sigmaHat() {return sigma;}
999 
1000  // Select flavour, colour and anticolour.
1001  virtual void setIdColAcol();
1002 
1003  // Info on the subprocess.
1004  virtual string name() const {return "q qbar -> (LED G*) -> q' qbar' (uds)";}
1005  virtual int code() const {return 5035;}
1006  virtual string inFlux() const {return "qqbarSame";}
1007 
1008  private:
1009 
1010  // Number of quarks to be considered in massless approximation.
1011  int nQuarkNew;
1012 
1013  // Values stored for colour flow selection.
1014  int idNew;
1015  double mNew, m2New, sigS, sigma;
1016 
1017  // Model parameters.
1018  int eDopMode, eDnGrav, eDcutoff;
1019  double eDMD, eDLambdaT, eDtff;
1020 
1021 };
1022 
1023 //==========================================================================
1024 
1025 } // end namespace Pythia8
1026 
1027 #endif // Pythia8_SigmaExtraDim_H
Definition: AgUStep.h:26