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