StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SigmaLeptoquark.h
1 // SigmaLeptoquark.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 // Header file for leptoquark-process differential cross sections.
7 // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
8 // Note: since leptoquark assumed scalar no need for decay-angles routines.
9 
10 #ifndef Pythia8_SigmaLeptoquark_H
11 #define Pythia8_SigmaLeptoquark_H
12 
13 #include "Pythia8/SigmaProcess.h"
14 
15 namespace Pythia8 {
16 
17 //==========================================================================
18 
19 // A derived class for q l -> LQ (leptoquark).
20 
21 class Sigma1ql2LeptoQuark : public Sigma1Process {
22 
23 public:
24 
25  // Constructor.
26  Sigma1ql2LeptoQuark() : idQuark(), idLepton(), mRes(), GammaRes(), m2Res(),
27  GamMRat(), kCoup(), widthIn(), sigBW(), LQPtr() {}
28 
29  // Initialize process.
30  virtual void initProc();
31 
32  // Calculate flavour-independent parts of cross section.
33  virtual void sigmaKin();
34 
35  // Evaluate sigmaHat(sHat).
36  virtual double sigmaHat();
37 
38  // Select flavour, colour and anticolour.
39  virtual void setIdColAcol();
40 
41  // Info on the subprocess.
42  virtual string name() const {return "q l -> LQ (leptoquark)";}
43  virtual int code() const {return 3201;}
44  virtual string inFlux() const {return "ff";}
45  virtual int resonanceA() const {return 42;}
46 
47 private:
48 
49  // Parameters set at initialization or for current kinematics.
50  int idQuark, idLepton;
51  double mRes, GammaRes, m2Res, GamMRat, kCoup, widthIn, sigBW;
52 
53  // Pointer to properties of the particle species, to access decay channel.
54  ParticleDataEntry* LQPtr;
55 
56 };
57 
58 //==========================================================================
59 
60 // A derived class for q g -> LQ l (leptoquark).
61 
62 class Sigma2qg2LeptoQuarkl : public Sigma2Process {
63 
64 public:
65 
66  // Constructor.
67  Sigma2qg2LeptoQuarkl() : idQuark(), idLepton(), mRes(), GammaRes(), m2Res(),
68  GamMRat(), kCoup(), openFracPos(), openFracNeg(), sigma0() {}
69 
70  // Initialize process.
71  virtual void initProc();
72 
73  // Calculate flavour-independent parts of cross section.
74  virtual void sigmaKin();
75 
76  // Evaluate sigmaHat(sHat).
77  virtual double sigmaHat();
78 
79  // Select flavour, colour and anticolour.
80  virtual void setIdColAcol();
81 
82  // Info on the subprocess.
83  virtual string name() const {return "q g -> LQ l (leptoquark)";}
84  virtual int code() const {return 3202;}
85  virtual string inFlux() const {return "qg";}
86  virtual int id3Mass() const {return 42;}
87 
88 private:
89 
90  // Parameters set at initialization or for current kinematics.
91  int idQuark, idLepton;
92  double mRes, GammaRes, m2Res, GamMRat, kCoup, openFracPos, openFracNeg,
93  sigma0;
94 
95 };
96 
97 //==========================================================================
98 
99 // A derived class for g g -> LQ LQbar (leptoquark).
100 
101 class Sigma2gg2LQLQbar : public Sigma2Process {
102 
103 public:
104 
105  // Constructor.
106  Sigma2gg2LQLQbar() : mRes(), GammaRes(), m2Res(), GamMRat(), openFrac(),
107  sigma() {}
108 
109  // Initialize process.
110  virtual void initProc();
111 
112  // Calculate flavour-independent parts of cross section.
113  virtual void sigmaKin();
114 
115  // Evaluate sigmaHat(sHat).
116  virtual double sigmaHat() {return sigma;}
117 
118  // Select flavour, colour and anticolour.
119  virtual void setIdColAcol();
120 
121  // Info on the subprocess.
122  virtual string name() const {return "g g -> LQ LQbar (leptoquark)";}
123  virtual int code() const {return 3203;}
124  virtual string inFlux() const {return "gg";}
125  virtual int id3Mass() const {return 42;}
126  virtual int id4Mass() const {return 42;}
127 
128 private:
129 
130  // Parameters set at initialization or for current kinematics.
131  double mRes, GammaRes, m2Res, GamMRat, openFrac, sigma;
132 
133 };
134 
135 //==========================================================================
136 
137 // A derived class for q qbar -> LQ LQbar (leptoquark).
138 
139 class Sigma2qqbar2LQLQbar : public Sigma2Process {
140 
141 public:
142 
143  // Constructor.
144  Sigma2qqbar2LQLQbar() : idQuark(), mRes(), GammaRes(), m2Res(), GamMRat(),
145  kCoup(), openFrac(), sigmaDiff(), sigmaSame() {}
146 
147  // Initialize process.
148  virtual void initProc();
149 
150  // Calculate flavour-independent parts of cross section.
151  virtual void sigmaKin();
152 
153  // Evaluate sigmaHat(sHat).
154  virtual double sigmaHat() {
155  return (abs(id1) == idQuark) ? sigmaSame : sigmaDiff;}
156 
157  // Select flavour, colour and anticolour.
158  virtual void setIdColAcol();
159 
160  // Info on the subprocess.
161  virtual string name() const {return "q qbar -> LQ LQbar (leptoquark)";}
162  virtual int code() const {return 3204;}
163  virtual string inFlux() const {return "qqbarSame";}
164  virtual int id3Mass() const {return 42;}
165  virtual int id4Mass() const {return 42;}
166 
167 private:
168 
169  // Parameters set at initialization or for current kinematics.
170  int idQuark;
171  double mRes, GammaRes, m2Res, GamMRat, kCoup, openFrac, sigmaDiff,
172  sigmaSame;
173 
174 };
175 
176 //==========================================================================
177 
178 } // end namespace Pythia8
179 
180 #endif // Pythia8_SigmaLeptoquark_H