b8a0248bea67fd17c04c5b469f08637718126086
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8130 / include / SigmaNewGaugeBosons.h
1 // SigmaNewGaugeBosons.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2008 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 "PythiaComplex.h"
13 #include "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;
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