StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SigmaNewGaugeBosons.h
1 // SigmaNewGaugeBosons.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 new-gauge-boson-process differential cross sections.
7 // Contains classes derived from SigmaProcess via Sigma1Process.
8 
9 #ifndef Pythia8_SigmaNewGaugeBosons_H
10 #define Pythia8_SigmaNewGaugeBosons_H
11 
12 #include "Pythia8/PythiaComplex.h"
13 #include "Pythia8/SigmaProcess.h"
14 
15 namespace Pythia8 {
16 
17 //==========================================================================
18 
19 // An intermediate class for f fbar -> Z'/W' -> WW/WZ -> 4 fermions.
20 // Copied from SigmaEW for gauge-boson-pair production.
21 
22 class Sigma1ffbarZprimeWprime: public Sigma1Process {
23 
24 public:
25 
26  // Constructor.
27  Sigma1ffbarZprimeWprime() {}
28 
29 protected:
30 
31  // Internal products.
32  Vec4 pRot[7];
33  complex hA[7][7];
34  complex hC[7][7];
35 
36  // Calculate and store internal products.
37  void setupProd( Event& process, int i1, int i2, int i3, int i4,
38  int i5, int i6);
39 
40  // Evaluate the F function of Gunion and Kunszt.
41  complex fGK(int i1, int i2, int i3, int i4, int i5, int i6);
42 
43  // Evaluate the Xi function of Gunion and Kunszt.
44  double xiGK( double tHnow, double uHnow, double s3now, double s4now);
45 
46  // Evaluate the Xj function of Gunion and Kunszt.
47  double xjGK( double tHnow, double uHnow, double s3now, double s4now);
48 
49 private:
50 
51 };
52 
53 //==========================================================================
54 
55 // A derived class for f fbar -> gamma*/Z0/Z'0.
56 
57 class Sigma1ffbar2gmZZprime : public Sigma1ffbarZprimeWprime {
58 
59 public:
60 
61  // Constructor.
62  Sigma1ffbar2gmZZprime() {}
63 
64  // Initialize process.
65  virtual void initProc();
66 
67  // Calculate flavour-independent parts of cross section.
68  virtual void sigmaKin();
69 
70  // Evaluate sigmaHat(sHat).
71  virtual double sigmaHat();
72 
73  // Select flavour, colour and anticolour.
74  virtual void setIdColAcol();
75 
76  // Evaluate weight for Z' decay angle.
77  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
78 
79  // Info on the subprocess.
80  virtual string name() const {return "f fbar -> gamma*/Z0/Zprime0";}
81  virtual int code() const {return 3001;}
82  virtual string inFlux() const {return "ffbarSame";}
83  virtual int resonanceA() const {return 23;}
84  virtual int resonanceB() const {return 32;}
85 
86 private:
87 
88  // Parameters set at initialization or for each new event.
89  int gmZmode, maxZpGen;
90  double mRes, GammaRes, m2Res, GamMRat, sin2tW, cos2tW, thetaWRat,
91  mZ, GammaZ, m2Z, GamMRatZ, afZp[20], vfZp[20], coupZpWW,
92  anglesZpWW, gamSum, gamZSum, ZSum, gamZpSum, ZZpSum, ZpSum,
93  gamNorm, gamZNorm, ZNorm, gamZpNorm, ZZpNorm, ZpNorm;
94 
95  // Pointer to properties of the particle species, to access decay channels.
96  ParticleDataEntry* particlePtr;
97 
98 };
99 
100 //==========================================================================
101 
102 // A derived class for f fbar' -> W'+-.
103 
104 class Sigma1ffbar2Wprime : public Sigma1ffbarZprimeWprime {
105 
106 public:
107 
108  // Constructor.
109  Sigma1ffbar2Wprime() {}
110 
111  // Initialize process.
112  virtual void initProc();
113 
114  // Calculate flavour-independent parts of cross section.
115  virtual void sigmaKin();
116 
117  // Evaluate sigmaHat(sHat).
118  virtual double sigmaHat();
119 
120  // Select flavour, colour and anticolour.
121  virtual void setIdColAcol();
122 
123  // Evaluate weight for W decay angle.
124  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
125 
126  // Info on the subprocess.
127  virtual string name() const {return "f fbar' -> W'+-";}
128  virtual int code() const {return 3021;}
129  virtual string inFlux() const {return "ffbarChg";}
130  virtual int resonanceA() const {return 34;}
131 
132 private:
133 
134  // Parameters set at initialization.
135  double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0Pos, sigma0Neg,
136  aqWp, vqWp, alWp, vlWp, coupWpWZ, anglesWpWZ;
137 
138  // Pointer to properties of the particle species, to access decay channels.
139  ParticleDataEntry* particlePtr;
140 
141 };
142 //==========================================================================
143 
144 // A derived class for f fbar' -> R^0 (horizontal gauge boson).
145 
146 class Sigma1ffbar2Rhorizontal : public Sigma1Process {
147 
148 public:
149 
150  // Constructor.
151  Sigma1ffbar2Rhorizontal() {}
152 
153  // Initialize process.
154  virtual void initProc();
155 
156  // Calculate flavour-independent parts of cross section.
157  virtual void sigmaKin();
158 
159  // Evaluate sigmaHat(sHat).
160  virtual double sigmaHat();
161 
162  // Select flavour, colour and anticolour.
163  virtual void setIdColAcol();
164 
165  // Info on the subprocess.
166  virtual string name() const {return "f fbar' -> R^0";}
167  virtual int code() const {return 3041;}
168  virtual string inFlux() const {return "ffbar";}
169  virtual int resonanceA() const {return 41;}
170 
171 private:
172 
173  // Parameters set at initialization.
174  double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0Pos, sigma0Neg;
175 
176  // Pointer to properties of the particle species, to access decay channels.
177  ParticleDataEntry* particlePtr;
178 
179 };
180 
181 //==========================================================================
182 
183 } // end namespace Pythia8
184 
185 #endif // Pythia_SigmaNewGaugeBosons_H
Definition: AgUStep.h:26