Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:06:30

0001 // SigmaExtraDim.h is a part of the PYTHIA event generator.
0002 // Copyright (C) 2024 Torbjorn Sjostrand.
0003 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
0004 // Please respect the MCnet Guidelines, see GUIDELINES for details.
0005 
0006 // Author: Stefan Ask for the *LED* routines.
0007 // Header file for extra-dimensional-process differential cross sections.
0008 // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
0009 
0010 #ifndef Pythia8_SigmaExtraDim_H
0011 #define Pythia8_SigmaExtraDim_H
0012 
0013 #include "Pythia8/SigmaProcess.h"
0014 
0015 namespace Pythia8 {
0016 
0017 //==========================================================================
0018 
0019 // A derived class for g g -> G^* (excited graviton state).
0020 
0021 class Sigma1gg2GravitonStar : public Sigma1Process {
0022 
0023 public:
0024 
0025   // Constructor.
0026   Sigma1gg2GravitonStar() : eDsmbulk(), eDvlvl(), idGstar(), mRes(),
0027     GammaRes(), m2Res(), GamMRat(), kappaMG(), sigma(), eDcoupling(),
0028     gStarPtr() {}
0029 
0030   // Initialize process.
0031   virtual void initProc();
0032 
0033   // Calculate flavour-independent parts of cross section.
0034   virtual void sigmaKin();
0035 
0036   // Evaluate sigmaHat(sHat).
0037   virtual double sigmaHat() {return sigma;}
0038 
0039   // Select flavour, colour and anticolour.
0040   virtual void setIdColAcol();
0041 
0042   // Evaluate weight for G* decay angle.
0043   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0044 
0045   // Info on the subprocess.
0046   virtual string name()       const {return "g g -> G*";}
0047   virtual int    code()       const {return 5001;}
0048   virtual string inFlux()     const {return "gg";}
0049   virtual int    resonanceA() const {return idGstar;}
0050 
0051 private:
0052 
0053   // Parameters set at initialization or for current kinematics.
0054   bool   eDsmbulk, eDvlvl;
0055   int    idGstar;
0056   double mRes, GammaRes, m2Res, GamMRat, kappaMG, sigma;
0057 
0058   // Couplings between graviton and SM (indexed by particle id).
0059   double eDcoupling[27];
0060 
0061   // Pointer to properties of the particle species, to access decay channels.
0062   ParticleDataEntryPtr gStarPtr;
0063 
0064 };
0065 
0066 //==========================================================================
0067 
0068 // A derived class for f fbar -> G^* (excited graviton state).
0069 
0070 class Sigma1ffbar2GravitonStar : public Sigma1Process {
0071 
0072 public:
0073 
0074   // Constructor.
0075   Sigma1ffbar2GravitonStar() : eDsmbulk(), eDvlvl(), idGstar(), mRes(),
0076     GammaRes(), m2Res(), GamMRat(), kappaMG(), sigma0(), eDcoupling(),
0077     gStarPtr() {}
0078 
0079   // Initialize process.
0080   virtual void initProc();
0081 
0082   // Calculate flavour-independent parts of cross section.
0083   virtual void sigmaKin();
0084 
0085   // Evaluate sigmaHat(sHat).
0086   virtual double sigmaHat();
0087 
0088   // Select flavour, colour and anticolour.
0089   virtual void setIdColAcol();
0090 
0091   // Evaluate weight for G* decay angle.
0092   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0093 
0094   // Info on the subprocess.
0095   virtual string name()       const {return "f fbar -> G*";}
0096   virtual int    code()       const {return 5002;}
0097   virtual string inFlux()     const {return "ffbarSame";}
0098   virtual int    resonanceA() const {return idGstar;}
0099 
0100 private:
0101 
0102   // Parameters set at initialization or for current kinematics.
0103   bool   eDsmbulk, eDvlvl;
0104   int    idGstar;
0105   double mRes, GammaRes, m2Res, GamMRat, kappaMG, sigma0;
0106 
0107   // Couplings between graviton and SM (indexed by particle id).
0108   double eDcoupling[27];
0109 
0110   // Pointer to properties of the particle species, to access decay channels.
0111   ParticleDataEntryPtr gStarPtr;
0112 
0113 };
0114 
0115 //==========================================================================
0116 
0117 // A derived class for q qbar -> g^*/KK-gluon^* (excited kk-gluon state).
0118 
0119 class Sigma1qqbar2KKgluonStar : public Sigma1Process {
0120 
0121 public:
0122 
0123   // Constructor.
0124   Sigma1qqbar2KKgluonStar() : idKKgluon(), mRes(), GammaRes(), m2Res(),
0125     GamMRat(), sumSM(), sumInt(), sumKK(), sigSM(), sigInt(), sigKK(),
0126     eDgv(), eDga(), interfMode(), gStarPtr() {}
0127 
0128   // Initialize process.
0129   virtual void initProc();
0130 
0131   // Calculate flavour-independent parts of cross section.
0132   virtual void sigmaKin();
0133 
0134   // Evaluate sigmaHat(sHat).
0135   virtual double sigmaHat();
0136 
0137   // Select flavour, colour and anticolour.
0138   virtual void setIdColAcol();
0139 
0140   // Evaluate weight for g* decay angle.
0141   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0142 
0143   // Info on the subprocess.
0144   virtual string name()       const {return "q qbar -> g*/KK-gluon*";}
0145   virtual int    code()       const {return 5006;}
0146   virtual string inFlux()     const {return "qqbarSame";}
0147   virtual int    resonanceA() const {return idKKgluon;}
0148 
0149 private:
0150 
0151   // Parameters set at initialization or for current kinematics.
0152   int    idKKgluon;
0153   double mRes, GammaRes, m2Res, GamMRat;
0154   double sumSM, sumInt, sumKK, sigSM, sigInt, sigKK;
0155 
0156   // Couplings between kk gluon and SM (indexed by particle id).
0157   // Helicity dependent couplings. Use vector/axial-vector
0158   // couplings internally, gv/ga = 0.5 * (gL +/- gR).
0159   double eDgv[10], eDga[10];
0160 
0161   // Interference parameter.
0162   int interfMode;
0163 
0164   // Pointer to properties of the particle species, to access decay
0165   // channels.
0166   ParticleDataEntryPtr gStarPtr;
0167 
0168 };
0169 
0170 //==========================================================================
0171 
0172 // A derived class for g g -> G^* g (excited graviton state).
0173 
0174 class Sigma2gg2GravitonStarg : public Sigma2Process {
0175 
0176 public:
0177 
0178   // Constructor.
0179   Sigma2gg2GravitonStarg() : idGstar(), mRes(), GammaRes(), m2Res(),
0180     GamMRat(), kappaMG(), openFrac(), sigma() {}
0181 
0182   // Initialize process.
0183   virtual void initProc();
0184 
0185   // Calculate flavour-independent parts of cross section.
0186   virtual void sigmaKin();
0187 
0188   // Evaluate sigmaHat(sHat).
0189   virtual double sigmaHat() {return sigma;}
0190 
0191   // Select flavour, colour and anticolour.
0192   virtual void setIdColAcol();
0193 
0194   // Evaluate weight: currently isotropic (except secondary top decay)..
0195   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0196 
0197   // Info on the subprocess.
0198   virtual string name()    const {return "g g -> G* g";}
0199   virtual int    code()    const {return 5003;}
0200   virtual string inFlux()  const {return "gg";}
0201   virtual int    id3Mass() const {return idGstar;}
0202 
0203 private:
0204 
0205   // Parameters set at initialization or for current kinematics.
0206   int    idGstar;
0207   double mRes, GammaRes, m2Res, GamMRat, kappaMG, openFrac, sigma;
0208 
0209 };
0210 
0211 //==========================================================================
0212 
0213 // A derived class for q g -> G^* q (excited graviton state).
0214 
0215 class Sigma2qg2GravitonStarq : public Sigma2Process {
0216 
0217 public:
0218 
0219   // Constructor.
0220   Sigma2qg2GravitonStarq() : idGstar(), mRes(), GammaRes(), m2Res(),
0221     GamMRat(), kappaMG(), openFrac(), sigma() {}
0222 
0223   // Initialize process.
0224   virtual void initProc();
0225 
0226   // Calculate flavour-independent parts of cross section.
0227   virtual void sigmaKin();
0228 
0229   // Evaluate sigmaHat(sHat).
0230   virtual double sigmaHat() {return sigma;}
0231 
0232   // Select flavour, colour and anticolour.
0233   virtual void setIdColAcol();
0234 
0235   // Evaluate weight: currently isotropic (except secondary top decay).
0236   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0237 
0238   // Info on the subprocess.
0239   virtual string name()    const {return "q g -> G* q";}
0240   virtual int    code()    const {return 5004;}
0241   virtual string inFlux()  const {return "qg";}
0242   virtual int    id3Mass() const {return idGstar;}
0243 
0244 private:
0245 
0246   // Parameters set at initialization or for current kinematics.
0247   int    idGstar;
0248   double mRes, GammaRes, m2Res, GamMRat, kappaMG, openFrac, sigma;
0249 
0250 };
0251 
0252 //==========================================================================
0253 
0254 // A derived class for q qbar -> G^* g (excited graviton state).
0255 
0256 class Sigma2qqbar2GravitonStarg : public Sigma2Process {
0257 
0258 public:
0259 
0260   // Constructor.
0261   Sigma2qqbar2GravitonStarg() : idGstar(), mRes(), GammaRes(), m2Res(),
0262     GamMRat(), kappaMG(), openFrac(), sigma() {}
0263 
0264   // Initialize process.
0265   virtual void initProc();
0266 
0267   // Calculate flavour-independent parts of cross section.
0268   virtual void sigmaKin();
0269 
0270   // Evaluate sigmaHat(sHat).
0271   virtual double sigmaHat() {return sigma;}
0272 
0273   // Select flavour, colour and anticolour.
0274   virtual void setIdColAcol();
0275 
0276   // Evaluate weight: currently isotropic (except secondary top decay).
0277   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0278 
0279   // Info on the subprocess.
0280   virtual string name()    const {return "q qbar -> G* g";}
0281   virtual int    code()    const {return 5005;}
0282   virtual string inFlux()  const {return "qqbarSame";}
0283   virtual int    id3Mass() const {return idGstar;}
0284 
0285 private:
0286 
0287   // Parameters set at initialization or for current kinematics.
0288   int    idGstar;
0289   double mRes, GammaRes, m2Res, GamMRat, kappaMG, openFrac, sigma;
0290 
0291 };
0292 
0293 //==========================================================================
0294 
0295 // NOAM: A derived class for, f fbar -> (gamma/Z)_KKTower -> F Fbar,
0296 // for one heavy F.
0297 // Process provided by N. Hod et al. and is described in arXiv:XXXX.YYYY
0298 
0299 class Sigma2ffbar2TEVffbar : public Sigma2Process {
0300 
0301 public:
0302 
0303   // Constructor.
0304   Sigma2ffbar2TEVffbar(int idIn, int codeIn) : idNew(idIn), gmZmode(),
0305     codeSave(codeIn), nexcitationmax(), isPhysical(), gPlusf(), gMinusf(),
0306     gPlusF(), gMinusF(), gPlusTop(), gMinusTop(), gf(), gF(), mRes(), m2Res(),
0307     mStar(), mTop(), m2Top(), mZKKn(), m2ZKKn(), m2gmKKn(), mgmKKn(),
0308     alphaemfixed(), helicityME2(), coefTot(), coefAngular(), mr(), betaf(),
0309     cosThe(), openFracPair(), wgmKKFactor(), wgmKKn(), wZKKn(), wZ0(),
0310     ttbarwZKKn(), ttbarwgmKKn(), ttbarwFactorA(), ttbarwFactorB(),
0311     phaseSpacemHatMin(), phaseSpacemHatMax() {}
0312 
0313   // Initialize process.
0314   virtual void initProc();
0315 
0316   // Calculate flavour-independent parts of cross section.
0317   virtual void sigmaKin();
0318 
0319   // Evaluate sigmaHat(sHat).
0320   virtual double sigmaHat();
0321 
0322   // Select flavour, colour and anticolour.
0323   virtual void setIdColAcol();
0324 
0325   // Evaluate weight for W decay angles in top decay (else inactive).
0326   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0327 
0328   // Info on the subprocess.
0329   virtual string name()       const {return nameSave;}
0330   virtual int    code()       const {return codeSave;}
0331   virtual string inFlux()     const {return "ffbarSame";}
0332   virtual bool   isSChannel() const {return true;}
0333   virtual int    idSChannel() const {return 5000023;}
0334   virtual int    resonanceA() const {return 23;}
0335   virtual int    resonanceB() const {return 5000023;}
0336   virtual int    id3Mass()    const {return idNew;}
0337   virtual int    id4Mass()    const {return idNew;}
0338   // Add phase-space sampling also around the Z_KK resonance.
0339   virtual int    resonanceA();
0340   virtual int    resonanceB();
0341 
0342 private:
0343 
0344   // Values stored for process type.
0345   string  nameSave;
0346   int     idNew, gmZmode, codeSave, nexcitationmax;
0347   bool    isPhysical;
0348   double  gPlusf, gMinusf, gPlusF, gMinusF, gPlusTop, gMinusTop, gf, gF;
0349   double  mRes, m2Res, mStar, mTop, m2Top, mZKKn, m2ZKKn, m2gmKKn, mgmKKn,
0350           alphaemfixed;
0351   double  helicityME2, coefTot, coefAngular;
0352   double  mr, betaf, cosThe, openFracPair;
0353   double  wgmKKFactor, wgmKKn, wZKKn,
0354           wZ0, ttbarwZKKn, ttbarwgmKKn,
0355           ttbarwFactorA, ttbarwFactorB;
0356   double  phaseSpacemHatMin, phaseSpacemHatMax;
0357   complex gammaProp, resProp, gmPropKK, ZPropKK, totalProp;
0358   complex mI;
0359 };
0360 
0361 //==========================================================================
0362 
0363 // A derived class for g g -> U/G g (real graviton emission in
0364 // large extra dimensions or unparticle emission).
0365 
0366 class Sigma2gg2LEDUnparticleg : public Sigma2Process {
0367 
0368 public:
0369 
0370   // Constructor: bool Graviton  = true, to use LED graviton settings.
0371   Sigma2gg2LEDUnparticleg( bool Graviton ) : eDgraviton(Graviton), eDspin(),
0372     eDnGrav(), eDidG(), eDcutoff(), mG(), mGS(), eDsigma0(), eDdU(),
0373     eDLambdaU(), eDlambda(), eDconstantTerm(), eDtff(), eDcf() {}
0374 
0375   // Initialize process.
0376   virtual void initProc();
0377 
0378   // Calculate flavour-independent parts of cross section;
0379   // first step when inflavours unknown.
0380   virtual void sigmaKin();
0381 
0382   // Evaluate sigmaHat(sHat); second step for given inflavours.
0383   virtual double sigmaHat();
0384 
0385   // Select flavour, colour and anticolour.
0386   virtual void setIdColAcol();
0387 
0388   // Info on the subprocess.
0389   virtual string name()       const {return
0390     (eDgraviton ? "g g -> G g" : "g g -> U g") ;}
0391   virtual int    code()       const {return (eDgraviton ? 5021 : 5045);}
0392   virtual string inFlux()     const {return "gg";}
0393   virtual int    id3Mass()    const {return 5000039;}
0394   virtual int    id4Mass()    const {return 21;}
0395 
0396 private:
0397 
0398   bool   eDgraviton;
0399   int    eDspin, eDnGrav, eDidG, eDcutoff;
0400   double mG, mGS, eDsigma0, eDdU, eDLambdaU, eDlambda, eDconstantTerm,
0401          eDtff, eDcf;
0402 
0403 };
0404 
0405 //==========================================================================
0406 
0407 // A derived class for q g -> U/G q (real graviton emission in
0408 // large extra dimensions or unparticle emission).
0409 
0410 class Sigma2qg2LEDUnparticleq : public Sigma2Process {
0411 
0412 public:
0413 
0414   // Constructor: bool Graviton  = true, to use LED graviton settings.
0415   Sigma2qg2LEDUnparticleq( bool Graviton) : eDgraviton(Graviton), eDspin(),
0416     eDnGrav(), eDidG(), eDcutoff(), mG(), mGS(), eDsigma0(), eDdU(),
0417     eDLambdaU(), eDlambda(), eDconstantTerm(), eDtff(), eDgf(), eDcf() {}
0418 
0419   // Initialize process.
0420   virtual void initProc();
0421 
0422   // Calculate flavour-independent parts of cross section;
0423   // first step when inflavours unknown.
0424   virtual void sigmaKin();
0425 
0426   // Evaluate sigmaHat(sHat); second step for given inflavours.
0427   virtual double sigmaHat();
0428 
0429   // Select flavour, colour and anticolour.
0430   virtual void setIdColAcol();
0431 
0432   // Info on the subprocess.
0433   virtual string name()       const {return
0434     (eDgraviton ? "q g -> G q" : "q g -> U q") ;}
0435   virtual int    code()       const {return (eDgraviton ? 5022 : 5046);}
0436   virtual string inFlux()     const {return "qg";}
0437   virtual int    id3Mass()    const {return 5000039;}
0438 
0439 private:
0440 
0441   bool   eDgraviton;
0442   int    eDspin, eDnGrav, eDidG, eDcutoff;
0443   double mG, mGS, eDsigma0, eDdU, eDLambdaU, eDlambda, eDconstantTerm,
0444          eDtff, eDgf, eDcf;
0445 
0446 };
0447 
0448 //==========================================================================
0449 
0450 // A derived class for q qbar -> U/G g (real graviton emission in
0451 // large extra dimensions or unparticle emission).
0452 
0453 class Sigma2qqbar2LEDUnparticleg : public Sigma2Process {
0454 
0455 public:
0456 
0457   // Constructor: bool Graviton  = true, to use LED graviton settings.
0458   Sigma2qqbar2LEDUnparticleg( bool Graviton) : eDgraviton(Graviton), eDspin(),
0459     eDnGrav(), eDidG(), eDcutoff(), mG(), mGS(), eDsigma0(), eDdU(),
0460     eDLambdaU(), eDlambda(), eDconstantTerm(), eDtff(), eDgf(), eDcf() {}
0461 
0462   // Initialize process.
0463   virtual void initProc();
0464 
0465   // Calculate flavour-independent parts of cross section;
0466   // first step when inflavours unknown.
0467   virtual void sigmaKin();
0468 
0469   // Evaluate sigmaHat(sHat); second step for given inflavours.
0470   virtual double sigmaHat();
0471 
0472   // Select flavour, colour and anticolour.
0473   virtual void setIdColAcol();
0474 
0475   // Info on the subprocess.
0476   virtual string name()       const {return
0477     (eDgraviton ? "q qbar -> G g" : "q qbar -> U g") ;}
0478   virtual int    code()       const {return (eDgraviton ? 5023 : 5047);}
0479   virtual string inFlux()     const {return "qqbarSame";}
0480   virtual int    id3Mass()    const {return 5000039;}
0481   virtual int    id4Mass()    const {return 21;}
0482 
0483 private:
0484 
0485   bool   eDgraviton;
0486   int    eDspin, eDnGrav, eDidG, eDcutoff;
0487   double mG, mGS, eDsigma0, eDdU, eDLambdaU, eDlambda, eDconstantTerm,
0488          eDtff, eDgf, eDcf;
0489 
0490 };
0491 
0492 //==========================================================================
0493 
0494 // A derived class for f fbar -> U/G Z (real graviton emission in
0495 // large extra dimensions or unparticle emission).
0496 
0497 class Sigma2ffbar2LEDUnparticleZ : public Sigma2Process {
0498 
0499 public:
0500 
0501   // Constructor: bool Graviton  = true, to use LED graviton settings.
0502   Sigma2ffbar2LEDUnparticleZ( bool Graviton) : eDspin(), eDnGrav(), eDcutoff(),
0503     eDidG(), eDgraviton(Graviton), eDdU(), eDLambdaU(), eDlambda(), eDratio(),
0504     eDlambdaPrime(), eDtff(), eDconstantTerm(), sHS(), tHS(), uHS(), tHC(),
0505     uHC(), tHQ(), uHQ(), tHuH(), mU(), mUS(), mZ(), widZ(), mZS(), mwZS(),
0506     eDsigma0(), openFrac() {}
0507 
0508   // Initialize process.
0509   virtual void initProc();
0510 
0511   // Calculate flavour-independent parts of cross section;
0512   // first step when inflavours unknown.
0513   virtual void sigmaKin();
0514 
0515   // Evaluate sigmaHat(sHat); second step for given inflavours.
0516   virtual double sigmaHat();
0517 
0518   // Select flavour, colour and anticolour.
0519   virtual void setIdColAcol();
0520 
0521   // Info on the subprocess.
0522   virtual string name()       const {return
0523     (eDgraviton ? "f fbar -> G Z" : "f fbar -> U Z") ;}
0524   virtual int    code()       const {return (eDgraviton ? 5024 : 5041);}
0525   virtual string inFlux()     const {return "ffbarSame";}
0526   virtual int    id3Mass()    const {return 5000039;}
0527   virtual int    id4Mass()    const {return 23;}
0528   virtual int    resonanceA() const {return 23;}
0529   virtual int    gmZmode()    const {return 2;}
0530 
0531 private:
0532 
0533   // Constants: could only be changed in the code itself.
0534   static const double FIXRATIO;
0535 
0536   int    eDspin, eDnGrav, eDcutoff, eDidG;
0537   bool   eDgraviton;
0538   double eDdU, eDLambdaU, eDlambda, eDratio, eDlambdaPrime,
0539          eDtff, eDconstantTerm;
0540   double sHS, tHS, uHS, tHC, uHC, tHQ, uHQ, tHuH, mU, mUS, mZ, widZ,
0541          mZS, mwZS, eDsigma0, openFrac;
0542 
0543 };
0544 
0545 //==========================================================================
0546 
0547 // A derived class for f fbar -> U/G gamma (real graviton emission in
0548 // large extra dimensions or unparticle emission).
0549 
0550 class Sigma2ffbar2LEDUnparticlegamma : public Sigma2Process {
0551 
0552 public:
0553 
0554   // Constructor: bool Graviton  = true, to use LED graviton settings.
0555   Sigma2ffbar2LEDUnparticlegamma( bool Graviton) : eDspin(), eDnGrav(),
0556     eDcutoff(), eDidG(), eDgraviton(Graviton), eDdU(), eDLambdaU(),
0557     eDlambda(), eDratio(), eDlambdaPrime(), eDtff(), eDconstantTerm(),
0558     sHS(), tHS(), uHS(), tHC(), uHC(), tHQ(), uHQ(), tHuH(), mU(), mUS(),
0559     mZ(), mZS(), eDsigma0() {}
0560 
0561   // Initialize process.
0562   virtual void initProc();
0563 
0564   // Calculate flavour-independent parts of cross section;
0565   // first step when inflavours unknown.
0566   virtual void sigmaKin();
0567 
0568   // Evaluate sigmaHat(sHat); second step for given inflavours.
0569   virtual double sigmaHat();
0570 
0571   // Select flavour, colour and anticolour.
0572   virtual void setIdColAcol();
0573 
0574   // Info on the subprocess.
0575   virtual string name()       const {return
0576     (eDgraviton ? "f fbar -> G gamma" : "f fbar -> U gamma") ;}
0577   virtual int    code()       const {return (eDgraviton ? 5025 : 5042);}
0578   virtual string inFlux()     const {return "ffbarSame";}
0579   virtual int    id3Mass()    const {return 5000039;}
0580   virtual int    id4Mass()    const {return 22;}
0581 
0582 private:
0583 
0584   // Constants: could only be changed in the code itself.
0585   static const double FIXRATIO;
0586 
0587   int    eDspin, eDnGrav, eDcutoff, eDidG;
0588   bool   eDgraviton;
0589   double eDdU, eDLambdaU, eDlambda, eDratio, eDlambdaPrime,
0590          eDtff, eDconstantTerm;
0591   double sHS, tHS, uHS, tHC, uHC, tHQ, uHQ, tHuH, mU, mUS, mZ,
0592          mZS, eDsigma0;
0593 
0594 };
0595 
0596 //==========================================================================
0597 
0598 // A derived class for f fbar -> (LED G*/U*) -> gamma gamma
0599 // (virtual graviton/unparticle exchange).
0600 
0601 class Sigma2ffbar2LEDgammagamma : public Sigma2Process {
0602 
0603 public:
0604 
0605   // Constructor: bool Graviton  = true, to use LED graviton settings.
0606   Sigma2ffbar2LEDgammagamma( bool Graviton) : eDspin(), eDcutoff(), eDnGrav(),
0607     eDnegInt(), eDgraviton(Graviton), eDdU(), eDLambdaU(), eDlambda(),
0608     eDlambda2chi(), eDterm1(), eDterm2(), eDterm3(), eDtff() {}
0609 
0610   // Initialize process.
0611   virtual void initProc();
0612 
0613   // Calculate flavour-independent parts of cross section;
0614   // first step when inflavours unknown.
0615   virtual void sigmaKin();
0616 
0617   // Evaluate sigmaHat(sHat); second step for given inflavours.
0618   virtual double sigmaHat();
0619 
0620   // Select flavour, colour and anticolour.
0621   virtual void setIdColAcol();
0622 
0623   // Info on the subprocess.
0624   virtual string name()       const {return
0625     (eDgraviton ? "f fbar -> (LED G*) -> gamma gamma"
0626     : "f fbar -> (U*) -> gamma gamma") ;}
0627   virtual int    code()       const {return (eDgraviton ? 5026 : 5043);}
0628   virtual string inFlux()     const {return "ffbarSame";}
0629 
0630 private:
0631 
0632   int    eDspin, eDcutoff, eDnGrav, eDnegInt;
0633   bool   eDgraviton;
0634   double eDdU, eDLambdaU, eDlambda, eDlambda2chi,
0635          eDterm1, eDterm2, eDterm3, eDtff;
0636 
0637 };
0638 
0639 //==========================================================================
0640 
0641 // A derived class for g g -> (LED G*/U*) -> gamma gamma
0642 // (virtual graviton/unparticle exchange).
0643 
0644 class Sigma2gg2LEDgammagamma : public Sigma2Process {
0645 
0646 public:
0647 
0648   // Constructor: bool Graviton  = true, to use LED graviton settings.
0649   Sigma2gg2LEDgammagamma( bool Graviton) : eDspin(), eDcutoff(), eDnGrav(),
0650     eDgraviton(Graviton), eDdU(), eDLambdaU(), eDlambda(), eDlambda2chi(),
0651     eDsigma0(), eDtff() {}
0652 
0653   // Initialize process.
0654   virtual void initProc();
0655 
0656   // Calculate flavour-independent parts of cross section;
0657   // first step when inflavours unknown.
0658   virtual void sigmaKin();
0659 
0660   // Evaluate sigmaHat(sHat); second step for given inflavours.
0661   virtual double sigmaHat();
0662 
0663   // Select flavour, colour and anticolour.
0664   virtual void setIdColAcol();
0665 
0666   // Info on the subprocess.
0667   virtual string name()       const {return (eDgraviton
0668     ? "g g -> (LED G*) -> gamma gamma" : "g g -> (U*) -> gamma gamma") ;}
0669   virtual int    code()       const {return (eDgraviton ? 5027 : 5044);}
0670   virtual string inFlux()     const {return "gg";}
0671 
0672 private:
0673 
0674   int    eDspin, eDcutoff, eDnGrav;
0675   bool   eDgraviton;
0676   double eDdU, eDLambdaU, eDlambda, eDlambda2chi, eDsigma0, eDtff;
0677 
0678 };
0679 
0680 //==========================================================================
0681 
0682 // A derived class for f fbar -> (LED G*/U*) -> l lbar
0683 // (virtual graviton/unparticle exchange).
0684 // Does not include t-channel contributions relevant for e^+e^- to e^+e^-
0685 
0686 class Sigma2ffbar2LEDllbar : public Sigma2Process {
0687 
0688 public:
0689 
0690   // Constructor: bool Graviton  = true, to use LED graviton settings.
0691   Sigma2ffbar2LEDllbar( bool Graviton) : eDspin(), eDcutoff(), eDnGrav(),
0692     eDnxx(), eDnxy(), eDnegInt(), eDgraviton(Graviton), eDdU(), eDLambdaU(),
0693     eDlambda(), eDlambda2chi(), eDtff(), eDmZ(), eDmZS(), eDGZ(), eDGZS(),
0694     eDabsMeU(), eDdenomPropZ(), eDrePropGamma(), eDrePropZ(), eDimPropZ(),
0695     eDabsAS(), eDreA(), eDreABW(), eDpoly1(), eDpoly2(), eDpoly3() {}
0696 
0697   // Initialize process.
0698   virtual void initProc();
0699 
0700   // Calculate flavour-independent parts of cross section;
0701   // first step when inflavours unknown.
0702   virtual void sigmaKin();
0703 
0704   // Evaluate sigmaHat(sHat); second step for given inflavours.
0705   virtual double sigmaHat();
0706 
0707   // Select flavour, colour and anticolour.
0708   virtual void setIdColAcol();
0709 
0710   // Info on the subprocess.
0711   virtual string name()       const {return
0712     (eDgraviton ? "f fbar -> (LED G*) -> l l" : "f fbar -> (U*) -> l l") ;}
0713   virtual int    code()       const {return (eDgraviton ? 5028 : 5048);}
0714   virtual string inFlux()     const {return "ffbarSame";}
0715   virtual bool   isSChannel() const {return true;}
0716 
0717 private:
0718 
0719   int    eDspin, eDcutoff, eDnGrav,eDnxx, eDnxy, eDnegInt;
0720   bool   eDgraviton;
0721   double eDdU, eDLambdaU, eDlambda, eDlambda2chi, eDtff,
0722          eDmZ, eDmZS, eDGZ, eDGZS, eDabsMeU, eDdenomPropZ, eDrePropGamma,
0723          eDrePropZ, eDimPropZ, eDabsAS, eDreA, eDreABW, eDpoly1, eDpoly2,
0724          eDpoly3;
0725 
0726 };
0727 
0728 //==========================================================================
0729 
0730 // A derived class for g g -> (LED G*/U*) -> l lbar
0731 // (virtual graviton/unparticle exchange).
0732 
0733 class Sigma2gg2LEDllbar : public Sigma2Process {
0734 
0735 public:
0736 
0737   // Constructor: bool Graviton  = true, to use LED graviton settings.
0738   Sigma2gg2LEDllbar( bool Graviton) : eDspin(), eDcutoff(), eDnGrav(),
0739     eDgraviton(Graviton), eDdU(), eDLambdaU(), eDlambda(), eDlambda2chi(),
0740     eDsigma0(), eDtff() {}
0741 
0742 
0743   // Initialize process.
0744   virtual void initProc();
0745 
0746   // Calculate flavour-independent parts of cross section;
0747   // first step when inflavours unknown.
0748   virtual void sigmaKin();
0749 
0750   // Evaluate sigmaHat(sHat); second step for given inflavours.
0751   virtual double sigmaHat() {return eDsigma0;}
0752 
0753   // Select flavour, colour and anticolour.
0754   virtual void setIdColAcol();
0755 
0756   // Info on the subprocess.
0757   virtual string name()       const {return
0758     (eDgraviton ? "g g -> (LED G*) -> l l" : "g g -> (U*) -> l l") ;}
0759   virtual int    code()       const {return (eDgraviton ? 5029 : 5049);}
0760   virtual string inFlux()     const {return "gg";}
0761 
0762 private:
0763 
0764   int    eDspin, eDcutoff, eDnGrav;
0765   bool   eDgraviton;
0766   double eDdU, eDLambdaU, eDlambda, eDlambda2chi, eDsigma0, eDtff;
0767 
0768 };
0769 
0770 //==========================================================================
0771 
0772 // A derived class for g g -> (LED G*) -> g g.
0773 
0774 class Sigma2gg2LEDgg : public Sigma2Process {
0775 
0776 public:
0777 
0778   // Constructor.
0779   Sigma2gg2LEDgg() : sigTS(), sigUS(), sigTU(), sigSum(), sigma(), eDopMode(),
0780     eDnGrav(), eDcutoff(), eDnegInt(), eDMD(), eDLambdaT(), eDtff() {}
0781 
0782   // Initialize process.
0783   virtual void initProc();
0784 
0785   // Calculate flavour-independent parts of cross section.
0786   virtual void sigmaKin();
0787 
0788   // Evaluate d(sigmaHat)/d(tHat).
0789   virtual double sigmaHat() {return sigma;}
0790 
0791   // Select flavour, colour and anticolour.
0792   virtual void setIdColAcol();
0793 
0794   // Info on the subprocess.
0795   virtual string name()   const {return "g g -> (LED G*) -> g g";}
0796   virtual int    code()   const {return 5030;}
0797   virtual string inFlux() const {return "gg";}
0798 
0799 private:
0800 
0801   // Values stored for colour flow selection.
0802   double sigTS, sigUS, sigTU, sigSum, sigma;
0803 
0804   // Model parameters.
0805   int eDopMode, eDnGrav, eDcutoff, eDnegInt;
0806   double eDMD, eDLambdaT, eDtff;
0807 
0808 };
0809 
0810 //==========================================================================
0811 
0812 // A derived class for g g -> (LED G*) -> q qbar.
0813 
0814 class Sigma2gg2LEDqqbar : public Sigma2Process {
0815 
0816 public:
0817 
0818   // Constructor.
0819   Sigma2gg2LEDqqbar() : nQuarkNew(), idNew(), mNew(), m2New(), sigTS(),
0820     sigUS(), sigSum(), sigma(), eDopMode(), eDnGrav(), eDcutoff(),
0821     eDnegInt(), eDMD(), eDLambdaT(), eDtff() {}
0822 
0823   // Initialize process.
0824   virtual void initProc();
0825 
0826   // Calculate flavour-independent parts of cross section.
0827   virtual void sigmaKin();
0828 
0829   // Evaluate d(sigmaHat)/d(tHat).
0830   virtual double sigmaHat() {return sigma;}
0831 
0832   // Select flavour, colour and anticolour.
0833   virtual void setIdColAcol();
0834 
0835   // Info on the subprocess.
0836   virtual string name()   const {return "g g -> (LED G*) -> q qbar (uds)";}
0837   virtual int    code()   const {return 5031;}
0838   virtual string inFlux() const {return "gg";}
0839 
0840 private:
0841 
0842   // Number of quarks to be considered in massless approximation.
0843   int    nQuarkNew;
0844 
0845   // Values stored for colour flow selection.
0846   int    idNew;
0847   double mNew, m2New, sigTS, sigUS, sigSum, sigma;
0848 
0849   // Model parameters.
0850   int eDopMode, eDnGrav, eDcutoff, eDnegInt;
0851   double eDMD, eDLambdaT, eDtff;
0852 
0853 };
0854 
0855 //==========================================================================
0856 
0857 // A derived class for q g -> (LED G*) -> q g.
0858 // Use massless approximation also for Q since no alternative.
0859 
0860 class Sigma2qg2LEDqg : public Sigma2Process {
0861 
0862 public:
0863 
0864   // Constructor.
0865   Sigma2qg2LEDqg() : sigTS(), sigTU(), sigSum(), sigma(), eDopMode(),
0866     eDnGrav(), eDcutoff(), eDnegInt(), eDMD(), eDLambdaT(), eDtff() {}
0867 
0868   // Initialize process.
0869   virtual void initProc();
0870 
0871   // Calculate flavour-independent parts of cross section.
0872   virtual void sigmaKin();
0873 
0874   // Evaluate d(sigmaHat)/d(tHat).
0875   virtual double sigmaHat() {return sigma;}
0876 
0877   // Select flavour, colour and anticolour.
0878   virtual void setIdColAcol();
0879 
0880   // Info on the subprocess.
0881   virtual string name()   const {return "q g -> (LED G*) -> q g";}
0882   virtual int    code()   const {return 5032;}
0883   virtual string inFlux() const {return "qg";}
0884 
0885 private:
0886 
0887   // Values stored for colour flow selection.
0888   double sigTS, sigTU, sigSum, sigma;
0889 
0890   // Model parameters.
0891   int eDopMode, eDnGrav, eDcutoff, eDnegInt;
0892   double eDMD, eDLambdaT, eDtff;
0893 
0894 };
0895 
0896 //==========================================================================
0897 
0898 // A derived class for q q(bar)' -> (LED G*) -> q q(bar)'.
0899 
0900 class Sigma2qq2LEDqq : public Sigma2Process {
0901 
0902 public:
0903 
0904   // Constructor.
0905   Sigma2qq2LEDqq() : sigT(), sigU(), sigTU(), sigST(), sigSum(), sigGrT1(),
0906     sigGrT2(), sigGrU(), sigGrTU(), sigGrST(), eDopMode(), eDnGrav(),
0907     eDcutoff(), eDnegInt(), eDMD(), eDLambdaT(), eDtff() {}
0908 
0909   // Initialize process.
0910   virtual void initProc();
0911 
0912   // Calculate flavour-independent parts of cross section.
0913   virtual void sigmaKin();
0914 
0915   // Evaluate d(sigmaHat)/d(tHat).
0916   virtual double sigmaHat();
0917 
0918   // Select flavour, colour and anticolour.
0919   virtual void setIdColAcol();
0920 
0921   // Info on the subprocess.
0922   virtual string name()   const {return "q q(bar)' -> (LED G*) -> q q(bar)'";}
0923   virtual int    code()   const {return 5033;}
0924   virtual string inFlux() const {return "qq";}
0925 
0926  private:
0927 
0928   // Values stored for colour flow selection.
0929   double sigT, sigU, sigTU, sigST, sigSum;
0930   double sigGrT1, sigGrT2, sigGrU, sigGrTU, sigGrST;
0931 
0932   // Model parameters.
0933   int eDopMode, eDnGrav, eDcutoff, eDnegInt;
0934   double eDMD, eDLambdaT, eDtff;
0935 
0936 };
0937 
0938 //==========================================================================
0939 
0940 // A derived class for q qbar -> (LED G*) -> g g.
0941 
0942 class Sigma2qqbar2LEDgg : public Sigma2Process {
0943 
0944 public:
0945 
0946   // Constructor.
0947   Sigma2qqbar2LEDgg() : sigTS(), sigUS(), sigSum(), sigma(), eDopMode(),
0948     eDnGrav(), eDcutoff(), eDnegInt(), eDMD(), eDLambdaT(), eDtff() {}
0949 
0950   // Initialize process.
0951   virtual void initProc();
0952 
0953   // Calculate flavour-independent parts of cross section.
0954   virtual void sigmaKin();
0955 
0956   // Evaluate d(sigmaHat)/d(tHat).
0957   virtual double sigmaHat() {return sigma;}
0958 
0959   // Select flavour, colour and anticolour.
0960   virtual void setIdColAcol();
0961 
0962   // Info on the subprocess.
0963   virtual string name()   const {return "q qbar -> (LED G*) -> g g";}
0964   virtual int    code()   const {return 5034;}
0965   virtual string inFlux() const {return "qqbarSame";}
0966 
0967  private:
0968 
0969   // Values stored for colour flow selection.
0970   double sigTS, sigUS, sigSum, sigma;
0971 
0972   // Model parameters.
0973   int eDopMode, eDnGrav, eDcutoff, eDnegInt;
0974   double eDMD, eDLambdaT, eDtff;
0975 
0976 };
0977 
0978 //==========================================================================
0979 
0980 // A derived class for q qbar -> (LED G*) -> q' qbar'.
0981 
0982 class Sigma2qqbar2LEDqqbarNew : public Sigma2Process {
0983 
0984 public:
0985 
0986   // Constructor.
0987   Sigma2qqbar2LEDqqbarNew() : nQuarkNew(), idNew(), mNew(), m2New(), sigS(),
0988     sigma(), eDopMode(), eDnGrav(), eDcutoff(), eDMD(), eDLambdaT(),
0989     eDtff() {}
0990 
0991   // Initialize process.
0992   virtual void initProc();
0993 
0994   // Calculate flavour-independent parts of cross section.
0995   virtual void sigmaKin();
0996 
0997   // Evaluate d(sigmaHat)/d(tHat).
0998   virtual double sigmaHat() {return sigma;}
0999 
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