1 // SigmaNewGaugeBosons.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2012 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.
6 // Header file for new-gauge-boson-process differential cross sections.
7 // Contains classes derived from SigmaProcess via Sigma1Process.
9 #ifndef Pythia8_SigmaNewGaugeBosons_H
10 #define Pythia8_SigmaNewGaugeBosons_H
12 #include "PythiaComplex.h"
13 #include "SigmaProcess.h"
17 //==========================================================================
19 // An intermediate class for f fbar -> Z'/W' -> WW/WZ -> 4 fermions.
20 // Copied from SigmaEW for gauge-boson-pair production.
22 class Sigma1ffbarZprimeWprime: public Sigma1Process {
27 Sigma1ffbarZprimeWprime() {}
36 // Calculate and store internal products.
37 void setupProd( Event& process, int i1, int i2, int i3, int i4,
40 // Evaluate the F function of Gunion and Kunszt.
41 complex fGK(int i1, int i2, int i3, int i4, int i5, int i6);
43 // Evaluate the Xi function of Gunion and Kunszt.
44 double xiGK( double tHnow, double uHnow, double s3now, double s4now);
46 // Evaluate the Xj function of Gunion and Kunszt.
47 double xjGK( double tHnow, double uHnow, double s3now, double s4now);
53 //==========================================================================
55 // A derived class for f fbar -> gamma*/Z0/Z'0.
57 class Sigma1ffbar2gmZZprime : public Sigma1ffbarZprimeWprime {
62 Sigma1ffbar2gmZZprime() {}
64 // Initialize process.
65 virtual void initProc();
67 // Calculate flavour-independent parts of cross section.
68 virtual void sigmaKin();
70 // Evaluate sigmaHat(sHat).
71 virtual double sigmaHat();
73 // Select flavour, colour and anticolour.
74 virtual void setIdColAcol();
76 // Evaluate weight for Z' decay angle.
77 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
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;}
88 // Parameters set at initialization or for each new event.
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;
95 // Pointer to properties of the particle species, to access decay channels.
96 ParticleDataEntry* particlePtr;
100 //==========================================================================
102 // A derived class for f fbar' -> W'+-.
104 class Sigma1ffbar2Wprime : public Sigma1ffbarZprimeWprime {
109 Sigma1ffbar2Wprime() {}
111 // Initialize process.
112 virtual void initProc();
114 // Calculate flavour-independent parts of cross section.
115 virtual void sigmaKin();
117 // Evaluate sigmaHat(sHat).
118 virtual double sigmaHat();
120 // Select flavour, colour and anticolour.
121 virtual void setIdColAcol();
123 // Evaluate weight for W decay angle.
124 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
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;}
134 // Parameters set at initialization.
135 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0Pos, sigma0Neg,
136 aqWp, vqWp, alWp, vlWp, coupWpWZ, anglesWpWZ;
138 // Pointer to properties of the particle species, to access decay channels.
139 ParticleDataEntry* particlePtr;
142 //==========================================================================
144 // A derived class for f fbar' -> R^0 (horizontal gauge boson).
146 class Sigma1ffbar2Rhorizontal : public Sigma1Process {
151 Sigma1ffbar2Rhorizontal() {}
153 // Initialize process.
154 virtual void initProc();
156 // Calculate flavour-independent parts of cross section.
157 virtual void sigmaKin();
159 // Evaluate sigmaHat(sHat).
160 virtual double sigmaHat();
162 // Select flavour, colour and anticolour.
163 virtual void setIdColAcol();
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;}
173 // Parameters set at initialization.
174 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0Pos, sigma0Neg;
176 // Pointer to properties of the particle species, to access decay channels.
177 ParticleDataEntry* particlePtr;
181 //==========================================================================
183 } // end namespace Pythia8
185 #endif // Pythia_SigmaNewGaugeBosons_H