StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SigmaCompositeness.h
1 // SigmaCompositeness.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 compositiness-process differential cross sections.
7 // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
8 
9 #ifndef Pythia8_SigmaCompositeness_H
10 #define Pythia8_SigmaCompositeness_H
11 
12 #include "Pythia8/SigmaProcess.h"
13 
14 namespace Pythia8 {
15 
16 //==========================================================================
17 
18 // A derived class for q g -> q^* (excited quark state).
19 
20 class Sigma1qg2qStar : public Sigma1Process {
21 
22 public:
23 
24  // Constructor.
25  Sigma1qg2qStar(int idqIn) : idq(idqIn) {}
26 
27  // Initialize process.
28  virtual void initProc();
29 
30  // Calculate flavour-independent parts of cross section.
31  virtual void sigmaKin();
32 
33  // Evaluate sigmaHat(sHat).
34  virtual double sigmaHat();
35 
36  // Select flavour, colour and anticolour.
37  virtual void setIdColAcol();
38 
39  // Evaluate weight for q* decay angles (else inactive).
40  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
41 
42  // Info on the subprocess.
43  virtual string name() const {return nameSave;}
44  virtual int code() const {return codeSave;}
45  virtual string inFlux() const {return "qg";}
46  virtual int resonanceA() const {return idRes;}
47 
48 private:
49 
50  // Parameters set at initialization or for current kinematics.
51  int idq, idRes, codeSave;
52  string nameSave;
53  double mRes, GammaRes, m2Res, GamMRat, Lambda, coupFcol, widthIn, sigBW;
54 
55  // Pointer to properties of the particle species, to access decay channels.
56  ParticleDataEntry* qStarPtr;
57 
58 };
59 
60 //==========================================================================
61 
62 // A derived class for l gamma -> l^* (excited lepton state).
63 
64 class Sigma1lgm2lStar : public Sigma1Process {
65 
66 public:
67 
68  // Constructor.
69  Sigma1lgm2lStar(int idlIn) : idl(idlIn) {}
70 
71  // Initialize process.
72  virtual void initProc();
73 
74  // Calculate flavour-independent parts of cross section.
75  virtual void sigmaKin();
76 
77  // Evaluate sigmaHat(sHat).
78  virtual double sigmaHat();
79 
80  // Select flavour, colour and anticolour.
81  virtual void setIdColAcol();
82 
83  // Evaluate weight for l* decay angles (else inactive).
84  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
85 
86  // Info on the subprocess.
87  virtual string name() const {return nameSave;}
88  virtual int code() const {return codeSave;}
89  virtual string inFlux() const {return "fgm";}
90  virtual int resonanceA() const {return idRes;}
91 
92 private:
93 
94  // Parameters set at initialization or for current kinematics.
95  int idl, idRes, codeSave;
96  string nameSave;
97  double mRes, GammaRes, m2Res, GamMRat, Lambda, coupChg, widthIn, sigBW;
98 
99  // Pointer to properties of the particle species, to access decay channels.
100  ParticleDataEntry* qStarPtr;
101 
102 };
103 
104 //==========================================================================
105 
106 // A derived class for q q' -> q^* q' (excited quark state).
107 
108 class Sigma2qq2qStarq : public Sigma2Process {
109 
110 public:
111 
112  // Constructor.
113  Sigma2qq2qStarq(int idqIn) : idq(idqIn) {}
114 
115  // Initialize process.
116  virtual void initProc();
117 
118  // Calculate flavour-independent parts of cross section.
119  virtual void sigmaKin();
120 
121  // Evaluate sigmaHat(sHat).
122  virtual double sigmaHat();
123 
124  // Select flavour, colour and anticolour.
125  virtual void setIdColAcol();
126 
127  // Evaluate weight for q* decay angles (else inactive).
128  virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
129 
130  // Info on the subprocess.
131  virtual string name() const {return nameSave;}
132  virtual int code() const {return codeSave;}
133  virtual string inFlux() const {return "qq";}
134  virtual int id3Mass() const {return idRes;}
135 
136 private:
137 
138  // Parameters set at initialization or for current kinematics.
139  int idq, idRes, codeSave;
140  string nameSave;
141  double Lambda, preFac, openFracPos, openFracNeg, sigmaA, sigmaB;
142 
143 };
144 
145 //==========================================================================
146 
147 // A derived class for q qbar -> l^* lbar (excited lepton state).
148 
149 class Sigma2qqbar2lStarlbar : public Sigma2Process {
150 
151 public:
152 
153  // Constructor.
154  Sigma2qqbar2lStarlbar(int idlIn) : idl(idlIn) {}
155 
156  // Initialize process.
157  virtual void initProc();
158 
159  // Calculate flavour-independent parts of cross section.
160  virtual void sigmaKin();
161 
162  // Evaluate sigmaHat(sHat).
163  virtual double sigmaHat() {return sigma;}
164 
165  // Select flavour, colour and anticolour.
166  virtual void setIdColAcol();
167 
168  // Evaluate weight for l* decay angles (else inactive).
169  virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
170 
171  // Info on the subprocess.
172  virtual string name() const {return nameSave;}
173  virtual int code() const {return codeSave;}
174  virtual string inFlux() const {return "qqbarSame";}
175  virtual int id3Mass() const {return idRes;}
176 
177 private:
178 
179  // Parameters set at initialization or for current kinematics.
180  int idl, idRes, codeSave;
181  string nameSave;
182  double Lambda, preFac, openFracPos, openFracNeg, sigma;
183 
184 };
185 
186 //==========================================================================
187 
188 // A derived class for q qbar -> lStar lStarBar.
189 // Code contributed by Olga Igonkina.
190 
192 
193 public:
194 
195  // Constructor.
196  Sigma2qqbar2lStarlStarBar(int idlIn) : idl(idlIn) {}
197 
198  // Initialize process.
199  void initProc();
200 
201  // Calculate flavour-independent parts of cross section.
202  void sigmaKin();
203 
204  // Evaluate sigmaHat(sHat).
205  virtual double sigmaHat() {return sigma;}
206 
207  // Select flavour, colour and anticolour.
208  void setIdColAcol();
209 
210  // Evaluate weight for l* decay angles (else inactive).
211  virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
212 
213  // Info on the subprocess.
214  virtual string name() const {return nameSave;}
215  virtual int code() const {return codeSave;}
216  virtual string inFlux() const {return "qqbarSame";}
217  virtual int id3Mass() const {return idRes;}
218  virtual int id4Mass() const {return idRes;}
219 
220 private:
221 
222  // Parameters set at initialization or for current kinematics.
223  int idl, idRes, codeSave;
224  string nameSave;
225  double Lambda, preFac, openFracPos, openFracNeg, sigma;
226 
227 };
228 
229 //==========================================================================
230 
231 // A derived class for q q -> q q (quark contact interactions).
232 // Based on, Sigma2qq2qq (QCD).
233 
234 class Sigma2QCqq2qq : public Sigma2Process {
235 
236 public:
237 
238  // Constructor.
239  Sigma2QCqq2qq(){}
240 
241  // Initialize process.
242  virtual void initProc();
243 
244  // Calculate flavour-independent parts of cross section.
245  virtual void sigmaKin();
246 
247  // Evaluate d(sigmaHat)/d(tHat).
248  virtual double sigmaHat();
249 
250  // Select flavour, colour and anticolour.
251  virtual void setIdColAcol();
252 
253  // Info on the subprocess.
254  virtual string name() const {return "q q(bar)' -> (QC) -> q q(bar)'";}
255  virtual int code() const {return 4201;}
256  virtual string inFlux() const {return "qq";}
257 
258  private:
259 
260  // Values stored for colour flow selection.
261  double sigT, sigU, sigTU, sigST, sigSum, sigQCSTU, sigQCUTS;
262 
263  // Compositeness parameters.
264  double qCLambda2;
265  int qCetaLL, qCetaRR, qCetaLR;
266 
267 };
268 
269 //==========================================================================
270 
271 // A derived class for q qbar -> q' qbar' (quark contact interactions).
272 // Based on, Sigma2qqbar2qqbarNew(QCD).
273 // Note: This process give the same contributions for q == q' and q != q'.
274 
275 class Sigma2QCqqbar2qqbar : public Sigma2Process {
276 
277 public:
278 
279  // Constructor.
280  Sigma2QCqqbar2qqbar(){}
281 
282  // Initialize process.
283  virtual void initProc();
284 
285  // Calculate flavour-independent parts of cross section.
286  virtual void sigmaKin();
287 
288  // Evaluate d(sigmaHat)/d(tHat).
289  virtual double sigmaHat() {return sigma;}
290 
291  // Select flavour, colour and anticolour.
292  virtual void setIdColAcol();
293 
294  // Info on the subprocess.
295  virtual string name() const {return "q qbar -> (QC) -> q' qbar' (uds)";}
296  virtual int code() const {return 4202;}
297  virtual string inFlux() const {return "qqbarSame";}
298 
299  private:
300 
301  // Number of outgoing quark flavours to be considered, given that
302  // matrix elements are calculated in the massless approximation.
303  int qCnQuarkNew;
304 
305  // Values stored for colour flow selection.
306  int idNew;
307  double mNew, m2New, sigS, sigma;
308 
309  // Compositeness parameters.
310  double qCLambda2;
311  int qCetaLL, qCetaRR, qCetaLR;
312 
313 };
314 
315 //==========================================================================
316 
317 // A derived class for f fbar -> l lbar
318 // (contact interactions).
319 // Does not include t-channel contributions relevant for e^+e^- to e^+e^-
320 
321 class Sigma2QCffbar2llbar : public Sigma2Process {
322 
323 public:
324 
325  // Constructor: bool Graviton = true, to use LED graviton settings.
326  Sigma2QCffbar2llbar (int idIn, int codeIn) : idNew(idIn), codeNew(codeIn) {}
327 
328  // Initialize process.
329  virtual void initProc();
330 
331  // Calculate flavour-independent parts of cross section;
332  // first step when inflavours unknown.
333  virtual void sigmaKin();
334 
335  // Evaluate sigmaHat(sHat); second step for given inflavours.
336  virtual double sigmaHat();
337 
338  // Select flavour, colour and anticolour.
339  virtual void setIdColAcol();
340 
341  // Info on the subprocess.
342  virtual string name() const {return nameNew;}
343  virtual int code() const {return codeNew;}
344  virtual string inFlux() const {return "ffbarSame";}
345  virtual bool isSChannel() const {return true;}
346 
347 private:
348 
349  // Process values.
350  string nameNew;
351  int idNew, codeNew;
352  double qCmNew, qCmNew2, qCmZ, qCmZ2, qCGZ, qCGZ2, sigma0;
353 
354  // Compositeness parameters.
355  double qCLambda2;
356  int qCetaLL, qCetaRR, qCetaLR, qCetaRL;
357  double qCPropGm, qCrePropZ, qCimPropZ;
358 
359 };
360 
361 //==========================================================================
362 
363 } // end namespace Pythia8
364 
365 #endif // Pythia8_SigmaCompositeness_H
Definition: AgUStep.h:26