Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // SigmaCompositeness.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 compositiness-process differential cross sections.
0007 // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
0008 
0009 #ifndef Pythia8_SigmaCompositeness_H
0010 #define Pythia8_SigmaCompositeness_H
0011 
0012 #include "Pythia8/SigmaProcess.h"
0013 
0014 namespace Pythia8 {
0015 
0016 //==========================================================================
0017 
0018 // A derived class for q g -> q^* (excited quark state).
0019 
0020 class Sigma1qg2qStar : public Sigma1Process {
0021 
0022 public:
0023 
0024   // Constructor.
0025   Sigma1qg2qStar(int idqIn) : idq(idqIn), idRes(), codeSave(), mRes(),
0026     GammaRes(), m2Res(), GamMRat(), Lambda(), coupFcol(), widthIn(),
0027     sigBW(), qStarPtr() {}
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   // Evaluate weight for q* decay angles (else inactive).
0042   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
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 "qg";}
0048   virtual int    resonanceA() const {return idRes;}
0049 
0050 private:
0051 
0052   // Parameters set at initialization or for current kinematics.
0053   int    idq, idRes, codeSave;
0054   string nameSave;
0055   double mRes, GammaRes, m2Res, GamMRat, Lambda, coupFcol, widthIn, sigBW;
0056 
0057   // Pointer to properties of the particle species, to access decay channels.
0058   ParticleDataEntryPtr qStarPtr;
0059 
0060 };
0061 
0062 //==========================================================================
0063 
0064 // A derived class for l gamma -> l^* (excited lepton state).
0065 
0066 class Sigma1lgm2lStar : public Sigma1Process {
0067 
0068 public:
0069 
0070   // Constructor.
0071   Sigma1lgm2lStar(int idlIn) : idl(idlIn), idRes(), codeSave(), mRes(),
0072     GammaRes(), m2Res(), GamMRat(), Lambda(), coupChg(), widthIn(), sigBW(),
0073     qStarPtr() {}
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();
0083 
0084   // Select flavour, colour and anticolour.
0085   virtual void setIdColAcol();
0086 
0087   // Evaluate weight for l* decay angles (else inactive).
0088   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0089 
0090   // Info on the subprocess.
0091   virtual string name()       const {return nameSave;}
0092   virtual int    code()       const {return codeSave;}
0093   virtual string inFlux()     const {return "fgm";}
0094   virtual int    resonanceA() const {return idRes;}
0095 
0096 private:
0097 
0098   // Parameters set at initialization or for current kinematics.
0099   int    idl, idRes, codeSave;
0100   string nameSave;
0101   double mRes, GammaRes, m2Res, GamMRat, Lambda, coupChg, widthIn, sigBW;
0102 
0103   // Pointer to properties of the particle species, to access decay channels.
0104   ParticleDataEntryPtr qStarPtr;
0105 
0106 };
0107 
0108 //==========================================================================
0109 
0110 // A derived class for q q' -> q^* q' (excited quark state).
0111 
0112 class Sigma2qq2qStarq : public Sigma2Process {
0113 
0114 public:
0115 
0116   // Constructor.
0117   Sigma2qq2qStarq(int idqIn) : idq(idqIn), idRes(), codeSave(), Lambda(),
0118     preFac(), openFracPos(), openFracNeg(), sigmaA(), sigmaB() {}
0119 
0120   // Initialize process.
0121   virtual void initProc();
0122 
0123   // Calculate flavour-independent parts of cross section.
0124   virtual void sigmaKin();
0125 
0126   // Evaluate sigmaHat(sHat).
0127   virtual double sigmaHat();
0128 
0129   // Select flavour, colour and anticolour.
0130   virtual void setIdColAcol();
0131 
0132   // Evaluate weight for q* decay angles (else inactive).
0133   virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
0134 
0135   // Info on the subprocess.
0136   virtual string name()       const {return nameSave;}
0137   virtual int    code()       const {return codeSave;}
0138   virtual string inFlux()     const {return "qq";}
0139   virtual int    id3Mass()    const {return idRes;}
0140 
0141 private:
0142 
0143   // Parameters set at initialization or for current kinematics.
0144   int    idq, idRes, codeSave;
0145   string nameSave;
0146   double Lambda, preFac, openFracPos, openFracNeg, sigmaA, sigmaB;
0147 
0148 };
0149 
0150 //==========================================================================
0151 
0152 // A derived class for q qbar -> l^* lbar (excited lepton state).
0153 
0154 class Sigma2qqbar2lStarlbar : public Sigma2Process {
0155 
0156 public:
0157 
0158   // Constructor.
0159   Sigma2qqbar2lStarlbar(int idlIn) : idl(idlIn), idRes(), codeSave(), Lambda(),
0160     preFac(), openFracPos(), openFracNeg(), sigma() {}
0161 
0162   // Initialize process.
0163   virtual void initProc();
0164 
0165   // Calculate flavour-independent parts of cross section.
0166   virtual void sigmaKin();
0167 
0168   // Evaluate sigmaHat(sHat).
0169   virtual double sigmaHat() {return sigma;}
0170 
0171   // Select flavour, colour and anticolour.
0172   virtual void setIdColAcol();
0173 
0174   // Evaluate weight for l* decay angles (else inactive).
0175   virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
0176 
0177   // Info on the subprocess.
0178   virtual string name()       const {return nameSave;}
0179   virtual int    code()       const {return codeSave;}
0180   virtual string inFlux()     const {return "qqbarSame";}
0181   virtual int    id3Mass()    const {return idRes;}
0182 
0183 private:
0184 
0185   // Parameters set at initialization or for current kinematics.
0186   int    idl, idRes, codeSave;
0187   string nameSave;
0188   double Lambda, preFac, openFracPos, openFracNeg, sigma;
0189 
0190 };
0191 
0192 //==========================================================================
0193 
0194 // A derived class for q qbar -> lStar lStarBar.
0195 // Code contributed by Olga Igonkina.
0196 
0197 class Sigma2qqbar2lStarlStarBar: public Sigma2Process {
0198 
0199 public:
0200 
0201   // Constructor.
0202   Sigma2qqbar2lStarlStarBar(int idlIn) : idl(idlIn), idRes(), codeSave(),
0203     Lambda(), preFac(), openFracPos(), openFracNeg(), sigma() {}
0204 
0205   // Initialize process.
0206   void initProc();
0207 
0208   // Calculate flavour-independent parts of cross section.
0209   void sigmaKin();
0210 
0211   // Evaluate sigmaHat(sHat).
0212   virtual double sigmaHat() {return sigma;}
0213 
0214   // Select flavour, colour and anticolour.
0215   void setIdColAcol();
0216 
0217   // Evaluate weight for l* decay angles (else inactive).
0218   virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
0219 
0220   // Info on the subprocess.
0221   virtual string name()       const {return nameSave;}
0222   virtual int    code()       const {return codeSave;}
0223   virtual string inFlux()     const {return "qqbarSame";}
0224   virtual int    id3Mass()    const {return idRes;}
0225   virtual int    id4Mass()    const {return idRes;}
0226 
0227 private:
0228 
0229   // Parameters set at initialization or for current kinematics.
0230   int    idl, idRes, codeSave;
0231   string nameSave;
0232   double Lambda, preFac, openFracPos, openFracNeg, sigma;
0233 
0234 };
0235 
0236 //==========================================================================
0237 
0238 // A derived class for q q -> q q (quark contact interactions).
0239 // Based on, Sigma2qq2qq (QCD).
0240 
0241 class Sigma2QCqq2qq : public Sigma2Process {
0242 
0243 public:
0244 
0245   // Constructor.
0246   Sigma2QCqq2qq() : sigT(), sigU(), sigTU(), sigST(), sigSum(), sigQCSTU(),
0247     sigQCUTS(), qCLambda2(), qCetaLL(), qCetaRR(), qCetaLR(){}
0248 
0249   // Initialize process.
0250   virtual void initProc();
0251 
0252   // Calculate flavour-independent parts of cross section.
0253   virtual void sigmaKin();
0254 
0255   // Evaluate d(sigmaHat)/d(tHat).
0256   virtual double sigmaHat();
0257 
0258   // Select flavour, colour and anticolour.
0259   virtual void setIdColAcol();
0260 
0261   // Info on the subprocess.
0262   virtual string name()   const {return "q q(bar)' -> (QC) -> q q(bar)'";}
0263   virtual int    code()   const {return 4201;}
0264   virtual string inFlux() const {return "qq";}
0265 
0266  private:
0267 
0268   // Values stored for colour flow selection.
0269   double sigT, sigU, sigTU, sigST, sigSum, sigQCSTU, sigQCUTS;
0270 
0271   // Compositeness parameters.
0272   double qCLambda2;
0273   int    qCetaLL, qCetaRR, qCetaLR;
0274 
0275 };
0276 
0277 //==========================================================================
0278 
0279 // A derived class for q qbar -> q' qbar' (quark contact interactions).
0280 // Based on, Sigma2qqbar2qqbarNew(QCD).
0281 // Note: This process give the same contributions for q == q' and q != q'.
0282 
0283 class Sigma2QCqqbar2qqbar : public Sigma2Process {
0284 
0285 public:
0286 
0287   // Constructor.
0288   Sigma2QCqqbar2qqbar() : qCnQuarkNew(), idNew(), mNew(), m2New(), sigS(),
0289     sigma(), qCLambda2(), qCetaLL(), qCetaRR(), qCetaLR(){}
0290 
0291   // Initialize process.
0292   virtual void initProc();
0293 
0294   // Calculate flavour-independent parts of cross section.
0295   virtual void sigmaKin();
0296 
0297   // Evaluate d(sigmaHat)/d(tHat).
0298   virtual double sigmaHat() {return sigma;}
0299 
0300   // Select flavour, colour and anticolour.
0301   virtual void setIdColAcol();
0302 
0303   // Info on the subprocess.
0304   virtual string name()   const {return "q qbar -> (QC) -> q' qbar' (uds)";}
0305   virtual int    code()   const {return 4202;}
0306   virtual string inFlux() const {return "qqbarSame";}
0307 
0308  private:
0309 
0310   // Number of outgoing quark flavours to be considered, given that
0311   // matrix elements are calculated in the massless approximation.
0312   int    qCnQuarkNew;
0313 
0314   // Values stored for colour flow selection.
0315   int    idNew;
0316   double mNew, m2New, sigS, sigma;
0317 
0318   // Compositeness parameters.
0319   double qCLambda2;
0320   int    qCetaLL, qCetaRR, qCetaLR;
0321 
0322 };
0323 
0324 //==========================================================================
0325 
0326 // A derived class for f fbar -> l lbar
0327 // (contact interactions).
0328 // Does not include t-channel contributions relevant for e^+e^- to e^+e^-
0329 
0330 class Sigma2QCffbar2llbar : public Sigma2Process {
0331 
0332 public:
0333 
0334   // Constructor: bool Graviton  = true, to use LED graviton settings.
0335   Sigma2QCffbar2llbar (int idIn, int codeIn) : idNew(idIn), codeNew(codeIn),
0336     qCmNew(), qCmNew2(), qCmZ(), qCmZ2(), qCGZ(), qCGZ2(), sigma0(),
0337     qCLambda2(), qCetaLL(), qCetaRR(), qCetaLR(), qCetaRL(), qCPropGm(),
0338     qCrePropZ(), qCimPropZ() {}
0339 
0340   // Initialize process.
0341   virtual void initProc();
0342 
0343   // Calculate flavour-independent parts of cross section;
0344   // first step when inflavours unknown.
0345   virtual void sigmaKin();
0346 
0347   // Evaluate sigmaHat(sHat); second step for given inflavours.
0348   virtual double sigmaHat();
0349 
0350   // Select flavour, colour and anticolour.
0351   virtual void setIdColAcol();
0352 
0353   // Info on the subprocess.
0354   virtual string name()       const {return nameNew;}
0355   virtual int    code()       const {return codeNew;}
0356   virtual string inFlux()     const {return "ffbarSame";}
0357   virtual bool   isSChannel() const {return true;}
0358 
0359 private:
0360 
0361   // Process values.
0362   string nameNew;
0363   int    idNew, codeNew;
0364   double qCmNew, qCmNew2, qCmZ, qCmZ2, qCGZ, qCGZ2, sigma0;
0365 
0366   // Compositeness parameters.
0367   double qCLambda2;
0368   int    qCetaLL, qCetaRR, qCetaLR, qCetaRL;
0369   double qCPropGm, qCrePropZ, qCimPropZ;
0370 
0371 };
0372 
0373 //==========================================================================
0374 
0375 } // end namespace Pythia8
0376 
0377 #endif // Pythia8_SigmaCompositeness_H