StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SigmaGeneric.h
1 // SigmaGeneric.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2020 Johan Bijnens,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 various generic production processes, to be used as
7 // building blocks for some BSM processes.
8 // Currently represented by QCD pair production of colour triplet objects,
9 // with spin either 0, 1/2 or 1.
10 
11 #ifndef Pythia8_SigmaGeneric_H
12 #define Pythia8_SigmaGeneric_H
13 
14 #include "Pythia8/SigmaProcess.h"
15 
16 namespace Pythia8 {
17 
18 //==========================================================================
19 
20 // A derived class for g g -> qG qGbar (generic quark of spin 0, 1/2 or 1).
21 
22 class Sigma2gg2qGqGbar : public Sigma2Process {
23 
24 public:
25 
26  // Constructor.
27  Sigma2gg2qGqGbar(int idIn, int codeIn, int spinIn,
28  string nameIn = "g g -> qG qGbar") : idNew(idIn), codeSave(codeIn),
29  spinSave(spinIn), nCHV(), nameSave(nameIn), hasKappa(), openFracPair(),
30  sigma(), sigTS(), sigUS(), sigSum(), kappam1() {}
31 
32  // Initialize process.
33  virtual void initProc();
34 
35  // Calculate flavour-independent parts of cross section.
36  virtual void sigmaKin();
37 
38  // Evaluate sigmaHat(sHat).
39  virtual double sigmaHat() {return sigma;}
40 
41  // Select flavour, colour and anticolour.
42  virtual void setIdColAcol();
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 "gg";}
48  virtual int id3Mass() const {return idNew;}
49  virtual int id4Mass() const {return idNew;}
50 
51 private:
52 
53  // Values stored for process type and colour flow selection.
54  int idNew, codeSave, spinSave, nCHV;
55  string nameSave;
56  bool hasKappa;
57  double openFracPair, sigma, sigTS, sigUS, sigSum, kappam1;
58 
59 };
60 
61 //==========================================================================
62 
63 // A derived class for q qbar -> qG qGbar (generic quark of spin 0, 1/2 or 1).
64 
65 class Sigma2qqbar2qGqGbar : public Sigma2Process {
66 
67 public:
68 
69  // Constructor.
70  Sigma2qqbar2qGqGbar(int idIn, int codeIn, int spinIn,
71  string nameIn = "q qbar -> qG qGbar") : idNew(idIn), codeSave(codeIn),
72  spinSave(spinIn), nCHV(), nameSave(nameIn), openFracPair(), sigma(),
73  sigSum(), kappa() {}
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() {return sigma;}
83 
84  // Select flavour, colour and anticolour.
85  virtual void setIdColAcol();
86 
87  // Info on the subprocess.
88  virtual string name() const {return nameSave;}
89  virtual int code() const {return codeSave;}
90  virtual string inFlux() const {return "qqbarSame";}
91  virtual int id3Mass() const {return idNew;}
92  virtual int id4Mass() const {return idNew;}
93 
94 private:
95 
96  // Values stored for process type and colour flow selection.
97  int idNew, codeSave, spinSave, nCHV;
98  string nameSave;
99  double openFracPair, sigma, sigSum, kappa;
100 
101 };
102 
103 //==========================================================================
104 
105 // A derived class for f fbar -> fG fGbar (generic spin 0, 1/2 or 1 particle)
106 // via gamma^*/Z^* s-channel exchange. Still under development!! ??
107 
108 class Sigma2ffbar2fGfGbar : public Sigma2Process {
109 
110 public:
111 
112  // Constructor.
113  Sigma2ffbar2fGfGbar(int idIn, int codeIn, int spinIn,
114  string nameIn = "q qbar -> qG qGbar") : idNew(idIn), codeSave(codeIn),
115  spinSave(spinIn), nCHV(), nameSave(nameIn), hasColour(), eQHV2(),
116  openFracPair(), sigma0(), sigSum(), kappa(), colFac() {}
117 
118  // Initialize process.
119  virtual void initProc();
120 
121  // Calculate flavour-independent parts of cross section.
122  virtual void sigmaKin();
123 
124  // Evaluate sigmaHat(sHat).
125  virtual double sigmaHat();
126 
127  // Select flavour, colour and anticolour.
128  virtual void setIdColAcol();
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 "ffbarSame";}
134  virtual int id3Mass() const {return idNew;}
135  virtual int id4Mass() const {return idNew;}
136 
137 private:
138 
139  // Values stored for process type and colour flow selection.
140  int idNew, codeSave, spinSave, nCHV;
141  string nameSave;
142  bool hasColour;
143  double eQHV2, openFracPair, sigma0, sigSum, kappa, colFac;
144 
145 };
146 
147 //==========================================================================
148 
149 // A derived class for f fbar -> Zv, where Zv couples both to the SM and
150 // to a hidden sector. Primitive coupling structure.
151 
152 class Sigma1ffbar2Zv : public Sigma1Process {
153 
154 public:
155 
156  // Constructor.
157  Sigma1ffbar2Zv() : idZv(), mRes(), GammaRes(), m2Res(), GamMRat(),
158  sigOut(), particlePtr() {}
159 
160  // Initialize process.
161  virtual void initProc();
162 
163  // Calculate flavour-independent parts of cross section.
164  virtual void sigmaKin();
165 
166  // Evaluate sigmaHat(sHat) for given inflavours.
167  virtual double sigmaHat();
168 
169  // Select flavour, colour and anticolour.
170  virtual void setIdColAcol();
171 
172  // Evaluate weight for decay angles.
173  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
174 
175  // Info on the subprocess.
176  virtual string name() const {return "f fbar -> Zv";}
177  virtual int code() const {return 4941;}
178  virtual string inFlux() const {return "ffbarSame";}
179  virtual int resonanceA() const {return 4900023;}
180 
181 private:
182 
183  // Store flavour-specific process information and standard prefactor.
184  int idZv;
185  double mRes, GammaRes, m2Res, GamMRat, sigOut;
186 
187  // Pointer to properties of Zv, to access decay width.
188  ParticleDataEntry* particlePtr;
189 
190 };
191 
192 //==========================================================================
193 
194 } // end namespace Pythia8
195 
196 #endif // Pythia8_SigmaGeneric_H
Definition: AgUStep.h:26