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) 2012 Johan Bijnens,Torbjorn Sjostrand.
3 // PYTHIA is licenced under the GNU GPL version 2, 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 "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 
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), nameSave(nameIn) {}
30 
31  // Initialize process.
32  virtual void initProc();
33 
34  // Calculate flavour-independent parts of cross section.
35  virtual void sigmaKin();
36 
37  // Evaluate sigmaHat(sHat).
38  virtual double sigmaHat() {return sigma;}
39 
40  // Select flavour, colour and anticolour.
41  virtual void setIdColAcol();
42 
43  // Info on the subprocess.
44  virtual string name() const {return nameSave;}
45  virtual int code() const {return codeSave;}
46  virtual string inFlux() const {return "gg";}
47  virtual int id3Mass() const {return idNew;}
48  virtual int id4Mass() const {return idNew;}
49 
50 private:
51 
52  // Values stored for process type and colour flow selection.
53  int idNew, codeSave, spinSave, nCHV;
54  string nameSave;
55  bool hasKappa;
56  double openFracPair, sigma, sigTS, sigUS, sigSum, kappam1;
57 
58 };
59 
60 //==========================================================================
61 
62 // A derived class for q qbar -> qG qGbar (generic quark of spin 0, 1/2 or 1).
63 
65 
66 public:
67 
68  // Constructor.
69  Sigma2qqbar2qGqGbar(int idIn, int codeIn, int spinIn,
70  string nameIn = "q qbar -> qG qGbar") : idNew(idIn), codeSave(codeIn),
71  spinSave(spinIn), nameSave(nameIn) {}
72 
73  // Initialize process.
74  virtual void initProc();
75 
76  // Calculate flavour-independent parts of cross section.
77  virtual void sigmaKin();
78 
79  // Evaluate sigmaHat(sHat).
80  virtual double sigmaHat() {return sigma;}
81 
82  // Select flavour, colour and anticolour.
83  virtual void setIdColAcol();
84 
85  // Info on the subprocess.
86  virtual string name() const {return nameSave;}
87  virtual int code() const {return codeSave;}
88  virtual string inFlux() const {return "qqbarSame";}
89  virtual int id3Mass() const {return idNew;}
90  virtual int id4Mass() const {return idNew;}
91 
92 private:
93 
94  // Values stored for process type and colour flow selection.
95  int idNew, codeSave, spinSave, nCHV;
96  string nameSave;
97  double openFracPair, sigma, sigTS, sigUS, sigSum, kappa;
98 
99 };
100 
101 //==========================================================================
102 
103 // A derived class for f fbar -> fG fGbar (generic spin 0, 1/2 or 1 particle)
104 // via gamma^*/Z^* s-channel exchange. Still under development!! ??
105 
107 
108 public:
109 
110  // Constructor.
111  Sigma2ffbar2fGfGbar(int idIn, int codeIn, int spinIn,
112  string nameIn = "q qbar -> qG qGbar") : idNew(idIn), codeSave(codeIn),
113  spinSave(spinIn), nameSave(nameIn) {}
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  // Info on the subprocess.
128  virtual string name() const {return nameSave;}
129  virtual int code() const {return codeSave;}
130  virtual string inFlux() const {return "ffbarSame";}
131  virtual int id3Mass() const {return idNew;}
132  virtual int id4Mass() const {return idNew;}
133 
134 private:
135 
136  // Values stored for process type and colour flow selection.
137  int idNew, codeSave, spinSave, nCHV;
138  string nameSave;
139  bool hasColour;
140  double eQHV2, openFracPair, sigma0, sigTS, sigUS, sigSum, kappa, colFac;
141 
142 };
143 
144 //==========================================================================
145 
146 // A derived class for f fbar -> Zv, where Zv couples both to the SM and
147 // to a hidden sector. Primitive coupling structure.
148 
150 
151 public:
152 
153  // Constructor.
154  Sigma1ffbar2Zv() {}
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) for given inflavours.
163  virtual double sigmaHat();
164 
165  // Select flavour, colour and anticolour.
166  virtual void setIdColAcol();
167 
168  // Evaluate weight for decay angles.
169  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
170 
171  // Info on the subprocess.
172  virtual string name() const {return "f fbar -> Zv";}
173  virtual int code() const {return 4941;}
174  virtual string inFlux() const {return "ffbarSame";}
175  virtual int resonanceA() const {return 4900023;}
176 
177 private:
178 
179  // Store flavour-specific process information and standard prefactor.
180  int idZv;
181  double mRes, GammaRes, m2Res, GamMRat, sigOut;
182 
183  // Pointer to properties of Zv, to access decay width.
184  ParticleDataEntry* particlePtr;
185 
186 };
187 
188 //==========================================================================
189 
190 } // end namespace Pythia8
191 
192 #endif // Pythia8_SigmaGeneric_H