Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // SigmaGeneric.h is a part of the PYTHIA event generator.
0002 // Copyright (C) 2024 Johan Bijnens,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 various generic production processes, to be used as
0007 // building blocks for some BSM processes.
0008 // Currently represented by QCD pair production of colour triplet objects,
0009 // with spin either 0, 1/2 or 1.
0010 
0011 #ifndef Pythia8_SigmaGeneric_H
0012 #define Pythia8_SigmaGeneric_H
0013 
0014 #include "Pythia8/SigmaProcess.h"
0015 
0016 namespace Pythia8 {
0017 
0018 //==========================================================================
0019 
0020 // A derived class for g g -> qG qGbar (generic quark of spin 0, 1/2 or 1).
0021 
0022 class Sigma2gg2qGqGbar : public Sigma2Process {
0023 
0024 public:
0025 
0026   // Constructor.
0027   Sigma2gg2qGqGbar(int idIn, int codeIn, int spinIn,
0028     string nameIn = "g g -> qG qGbar") : idNew(idIn), codeSave(codeIn),
0029     spinSave(spinIn), nCHV(), nameSave(nameIn), hasKappa(), openFracPair(),
0030     sigma(), sigTS(), sigUS(), sigSum(), kappam1() {}
0031 
0032   // Initialize process.
0033   virtual void initProc();
0034 
0035   // Calculate flavour-independent parts of cross section.
0036   virtual void sigmaKin();
0037 
0038   // Evaluate sigmaHat(sHat).
0039   virtual double sigmaHat() {return sigma;}
0040 
0041   // Select flavour, colour and anticolour.
0042   virtual void setIdColAcol();
0043 
0044   // Info on the subprocess.
0045   virtual string name()    const {return nameSave;}
0046   virtual int    code()    const {return codeSave;}
0047   virtual string inFlux()  const {return "gg";}
0048   virtual int    id3Mass() const {return idNew;}
0049   virtual int    id4Mass() const {return idNew;}
0050 
0051 private:
0052 
0053   // Values stored for process type and colour flow selection.
0054   int    idNew, codeSave, spinSave, nCHV;
0055   string nameSave;
0056   bool   hasKappa;
0057   double openFracPair, sigma, sigTS, sigUS, sigSum, kappam1;
0058 
0059 };
0060 
0061 //==========================================================================
0062 
0063 // A derived class for q qbar -> qG qGbar (generic quark of spin 0, 1/2 or 1).
0064 
0065 class Sigma2qqbar2qGqGbar : public Sigma2Process {
0066 
0067 public:
0068 
0069   // Constructor.
0070   Sigma2qqbar2qGqGbar(int idIn, int codeIn, int spinIn,
0071     string nameIn = "q qbar -> qG qGbar") : idNew(idIn), codeSave(codeIn),
0072     spinSave(spinIn), nCHV(), nameSave(nameIn), openFracPair(), sigma(),
0073     sigSum(), kappa() {}
0074 
0075   // Initialize process.
0076   virtual void initProc();
0077 
0078   // Calculate flavour-independent parts of cross section.
0079   virtual void sigmaKin();
0080 
0081   // Evaluate sigmaHat(sHat).
0082   virtual double sigmaHat() {return sigma;}
0083 
0084   // Select flavour, colour and anticolour.
0085   virtual void setIdColAcol();
0086 
0087   // Info on the subprocess.
0088   virtual string name()    const {return nameSave;}
0089   virtual int    code()    const {return codeSave;}
0090   virtual string inFlux()  const {return "qqbarSame";}
0091   virtual int    id3Mass() const {return idNew;}
0092   virtual int    id4Mass() const {return idNew;}
0093 
0094 private:
0095 
0096   // Values stored for process type and colour flow selection.
0097   int    idNew, codeSave, spinSave, nCHV;
0098   string nameSave;
0099   double openFracPair, sigma, sigSum, kappa;
0100 
0101 };
0102 
0103 //==========================================================================
0104 
0105 // A derived class for f fbar -> fG fGbar (generic spin 0, 1/2 or 1 particle)
0106 // via gamma^*/Z^* s-channel exchange. Still under development!! ??
0107 
0108 class Sigma2ffbar2fGfGbar : public Sigma2Process {
0109 
0110 public:
0111 
0112   // Constructor.
0113   Sigma2ffbar2fGfGbar(int idIn, int codeIn, int spinIn,
0114     string nameIn = "q qbar -> qG qGbar") : idNew(idIn), codeSave(codeIn),
0115     spinSave(spinIn), nCHV(), nameSave(nameIn), hasColour(), eQHV2(),
0116     openFracPair(), sigma0(), sigSum(), kappa(), colFac() {}
0117 
0118   // Initialize process.
0119   virtual void initProc();
0120 
0121   // Calculate flavour-independent parts of cross section.
0122   virtual void sigmaKin();
0123 
0124   // Evaluate sigmaHat(sHat).
0125   virtual double sigmaHat();
0126 
0127   // Select flavour, colour and anticolour.
0128   virtual void setIdColAcol();
0129 
0130   // Info on the subprocess.
0131   virtual string name()    const {return nameSave;}
0132   virtual int    code()    const {return codeSave;}
0133   virtual string inFlux()  const {return "ffbarSame";}
0134   virtual int    id3Mass() const {return idNew;}
0135   virtual int    id4Mass() const {return idNew;}
0136 
0137 private:
0138 
0139   // Values stored for process type and colour flow selection.
0140   int    idNew, codeSave, spinSave, nCHV;
0141   string nameSave;
0142   bool   hasColour;
0143   double eQHV2, openFracPair, sigma0, sigSum, kappa, colFac;
0144 
0145 };
0146 
0147 //==========================================================================
0148 
0149 // A derived class for f fbar -> Zv, where Zv couples both to the SM and
0150 // to a hidden sector. Primitive coupling structure.
0151 
0152 class Sigma1ffbar2Zv : public Sigma1Process {
0153 
0154 public:
0155 
0156   // Constructor.
0157   Sigma1ffbar2Zv() : idZv(), mRes(), GammaRes(), m2Res(), GamMRat(),
0158     sigOut(), particlePtr() {}
0159 
0160   // Initialize process.
0161   virtual void initProc();
0162 
0163   // Calculate flavour-independent parts of cross section.
0164   virtual void sigmaKin();
0165 
0166   // Evaluate sigmaHat(sHat) for given inflavours.
0167   virtual double sigmaHat();
0168 
0169   // Select flavour, colour and anticolour.
0170   virtual void setIdColAcol();
0171 
0172   // Evaluate weight for decay angles.
0173   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0174 
0175   // Info on the subprocess.
0176   virtual string name()       const {return "f fbar -> Zv";}
0177   virtual int    code()       const {return 4941;}
0178   virtual string inFlux()     const {return "ffbarSame";}
0179   virtual int    resonanceA() const {return 4900023;}
0180 
0181 private:
0182 
0183   // Store flavour-specific process information and standard prefactor.
0184   int    idZv;
0185   double mRes, GammaRes, m2Res, GamMRat, sigOut;
0186 
0187   // Pointer to properties of Zv, to access decay width.
0188   ParticleDataEntryPtr particlePtr;
0189 
0190 };
0191 
0192 //==========================================================================
0193 
0194 } // end namespace Pythia8
0195 
0196 #endif // Pythia8_SigmaGeneric_H