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