Line data Source code
1 : // SigmaNewGaugeBosons.h is a part of the PYTHIA event generator.
2 : // Copyright (C) 2015 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 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 0 : class Sigma1ffbarZprimeWprime: public Sigma1Process {
23 :
24 : public:
25 :
26 : // Constructor.
27 0 : 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 0 : class Sigma1ffbar2gmZZprime : public Sigma1ffbarZprimeWprime {
58 :
59 : public:
60 :
61 : // Constructor.
62 0 : 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 0 : virtual string name() const {return "f fbar -> gamma*/Z0/Zprime0";}
81 0 : virtual int code() const {return 3001;}
82 0 : virtual string inFlux() const {return "ffbarSame";}
83 0 : virtual int resonanceA() const {return 23;}
84 0 : 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 0 : class Sigma1ffbar2Wprime : public Sigma1ffbarZprimeWprime {
105 :
106 : public:
107 :
108 : // Constructor.
109 0 : 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 0 : virtual string name() const {return "f fbar' -> W'+-";}
128 0 : virtual int code() const {return 3021;}
129 0 : virtual string inFlux() const {return "ffbarChg";}
130 0 : 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 0 : class Sigma1ffbar2Rhorizontal : public Sigma1Process {
147 :
148 : public:
149 :
150 : // Constructor.
151 0 : 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 0 : virtual string name() const {return "f fbar' -> R^0";}
167 0 : virtual int code() const {return 3041;}
168 0 : virtual string inFlux() const {return "ffbar";}
169 0 : 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
|