Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // SigmaLeptoquark.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 // Header file for leptoquark-process differential cross sections.
0007 // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
0008 // Note: since leptoquark assumed scalar no need for decay-angles routines.
0009 
0010 #ifndef Pythia8_SigmaLeptoquark_H
0011 #define Pythia8_SigmaLeptoquark_H
0012 
0013 #include "Pythia8/SigmaProcess.h"
0014 
0015 namespace Pythia8 {
0016 
0017 //==========================================================================
0018 
0019 // A derived class for q l -> LQ (leptoquark).
0020 
0021 class Sigma1ql2LeptoQuark : public Sigma1Process {
0022 
0023 public:
0024 
0025   // Constructor.
0026   Sigma1ql2LeptoQuark() : idQuark(), idLepton(), mRes(), GammaRes(), m2Res(),
0027     GamMRat(), kCoup(), widthIn(), sigBW(), LQPtr() {}
0028 
0029   // Initialize process.
0030   virtual void initProc();
0031 
0032   // Calculate flavour-independent parts of cross section.
0033   virtual void sigmaKin();
0034 
0035   // Evaluate sigmaHat(sHat).
0036   virtual double sigmaHat();
0037 
0038   // Select flavour, colour and anticolour.
0039   virtual void setIdColAcol();
0040 
0041   // Info on the subprocess.
0042   virtual string name()       const {return "q l -> LQ (leptoquark)";}
0043   virtual int    code()       const {return 3201;}
0044   virtual string inFlux()     const {return "ff";}
0045   virtual int    resonanceA() const {return 42;}
0046 
0047 private:
0048 
0049   // Parameters set at initialization or for current kinematics.
0050   int    idQuark, idLepton;
0051   double mRes, GammaRes, m2Res, GamMRat, kCoup, widthIn, sigBW;
0052 
0053   // Pointer to properties of the particle species, to access decay channel.
0054   ParticleDataEntryPtr LQPtr;
0055 
0056 };
0057 
0058 //==========================================================================
0059 
0060 // A derived class for q g -> LQ l (leptoquark).
0061 
0062 class Sigma2qg2LeptoQuarkl : public Sigma2Process {
0063 
0064 public:
0065 
0066   // Constructor.
0067   Sigma2qg2LeptoQuarkl() : idQuark(), idLepton(), mRes(), GammaRes(), m2Res(),
0068     GamMRat(), kCoup(), openFracPos(), openFracNeg(), sigma0() {}
0069 
0070   // Initialize process.
0071   virtual void initProc();
0072 
0073   // Calculate flavour-independent parts of cross section.
0074   virtual void sigmaKin();
0075 
0076   // Evaluate sigmaHat(sHat).
0077   virtual double sigmaHat();
0078 
0079   // Select flavour, colour and anticolour.
0080   virtual void setIdColAcol();
0081 
0082   // Info on the subprocess.
0083   virtual string name()    const {return "q g -> LQ l (leptoquark)";}
0084   virtual int    code()    const {return 3202;}
0085   virtual string inFlux()  const {return "qg";}
0086   virtual int    id3Mass() const {return 42;}
0087 
0088 private:
0089 
0090   // Parameters set at initialization or for current kinematics.
0091   int    idQuark, idLepton;
0092   double mRes, GammaRes, m2Res, GamMRat, kCoup, openFracPos, openFracNeg,
0093          sigma0;
0094 
0095 };
0096 
0097 //==========================================================================
0098 
0099 // A derived class for g g -> LQ LQbar (leptoquark).
0100 
0101 class Sigma2gg2LQLQbar : public Sigma2Process {
0102 
0103 public:
0104 
0105   // Constructor.
0106   Sigma2gg2LQLQbar() : mRes(), GammaRes(), m2Res(), GamMRat(), openFrac(),
0107     sigma() {}
0108 
0109   // Initialize process.
0110   virtual void initProc();
0111 
0112   // Calculate flavour-independent parts of cross section.
0113   virtual void sigmaKin();
0114 
0115   // Evaluate sigmaHat(sHat).
0116   virtual double sigmaHat() {return sigma;}
0117 
0118   // Select flavour, colour and anticolour.
0119   virtual void setIdColAcol();
0120 
0121   // Info on the subprocess.
0122   virtual string name()    const {return "g g -> LQ LQbar (leptoquark)";}
0123   virtual int    code()    const {return 3203;}
0124   virtual string inFlux()  const {return "gg";}
0125   virtual int    id3Mass() const {return 42;}
0126   virtual int    id4Mass() const {return 42;}
0127 
0128 private:
0129 
0130   // Parameters set at initialization or for current kinematics.
0131   double mRes, GammaRes, m2Res, GamMRat, openFrac, sigma;
0132 
0133 };
0134 
0135 //==========================================================================
0136 
0137 // A derived class for q qbar -> LQ LQbar (leptoquark).
0138 
0139 class Sigma2qqbar2LQLQbar : public Sigma2Process {
0140 
0141 public:
0142 
0143   // Constructor.
0144   Sigma2qqbar2LQLQbar() : idQuark(), mRes(), GammaRes(), m2Res(), GamMRat(),
0145     kCoup(), openFrac(), sigmaDiff(), sigmaSame() {}
0146 
0147   // Initialize process.
0148   virtual void initProc();
0149 
0150   // Calculate flavour-independent parts of cross section.
0151   virtual void sigmaKin();
0152 
0153   // Evaluate sigmaHat(sHat).
0154   virtual double sigmaHat() {
0155     return (abs(id1) == idQuark) ? sigmaSame : sigmaDiff;}
0156 
0157   // Select flavour, colour and anticolour.
0158   virtual void setIdColAcol();
0159 
0160   // Info on the subprocess.
0161   virtual string name()    const {return "q qbar -> LQ LQbar (leptoquark)";}
0162   virtual int    code()    const {return 3204;}
0163   virtual string inFlux()  const {return "qqbarSame";}
0164   virtual int    id3Mass() const {return 42;}
0165   virtual int    id4Mass() const {return 42;}
0166 
0167 private:
0168 
0169   // Parameters set at initialization or for current kinematics.
0170   int    idQuark;
0171   double mRes, GammaRes, m2Res, GamMRat, kCoup, openFrac, sigmaDiff,
0172          sigmaSame;
0173 
0174 };
0175 
0176 //==========================================================================
0177 
0178 } // end namespace Pythia8
0179 
0180 #endif // Pythia8_SigmaLeptoquark_H