Line data Source code
1 : // SigmaCompositeness.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 compositiness-process differential cross sections.
7 : // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
8 :
9 : #ifndef Pythia8_SigmaCompositeness_H
10 : #define Pythia8_SigmaCompositeness_H
11 :
12 : #include "Pythia8/SigmaProcess.h"
13 :
14 : namespace Pythia8 {
15 :
16 : //==========================================================================
17 :
18 : // A derived class for q g -> q^* (excited quark state).
19 :
20 0 : class Sigma1qg2qStar : public Sigma1Process {
21 :
22 : public:
23 :
24 : // Constructor.
25 0 : Sigma1qg2qStar(int idqIn) : idq(idqIn) {}
26 :
27 : // Initialize process.
28 : virtual void initProc();
29 :
30 : // Calculate flavour-independent parts of cross section.
31 : virtual void sigmaKin();
32 :
33 : // Evaluate sigmaHat(sHat).
34 : virtual double sigmaHat();
35 :
36 : // Select flavour, colour and anticolour.
37 : virtual void setIdColAcol();
38 :
39 : // Evaluate weight for q* decay angles (else inactive).
40 : virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
41 :
42 : // Info on the subprocess.
43 0 : virtual string name() const {return nameSave;}
44 0 : virtual int code() const {return codeSave;}
45 0 : virtual string inFlux() const {return "qg";}
46 0 : virtual int resonanceA() const {return idRes;}
47 :
48 : private:
49 :
50 : // Parameters set at initialization or for current kinematics.
51 : int idq, idRes, codeSave;
52 : string nameSave;
53 : double mRes, GammaRes, m2Res, GamMRat, Lambda, coupFcol, widthIn, sigBW;
54 :
55 : // Pointer to properties of the particle species, to access decay channels.
56 : ParticleDataEntry* qStarPtr;
57 :
58 : };
59 :
60 : //==========================================================================
61 :
62 : // A derived class for l gamma -> l^* (excited lepton state).
63 :
64 0 : class Sigma1lgm2lStar : public Sigma1Process {
65 :
66 : public:
67 :
68 : // Constructor.
69 0 : Sigma1lgm2lStar(int idlIn) : idl(idlIn) {}
70 :
71 : // Initialize process.
72 : virtual void initProc();
73 :
74 : // Calculate flavour-independent parts of cross section.
75 : virtual void sigmaKin();
76 :
77 : // Evaluate sigmaHat(sHat).
78 : virtual double sigmaHat();
79 :
80 : // Select flavour, colour and anticolour.
81 : virtual void setIdColAcol();
82 :
83 : // Evaluate weight for l* decay angles (else inactive).
84 : virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
85 :
86 : // Info on the subprocess.
87 0 : virtual string name() const {return nameSave;}
88 0 : virtual int code() const {return codeSave;}
89 0 : virtual string inFlux() const {return "fgm";}
90 0 : virtual int resonanceA() const {return idRes;}
91 :
92 : private:
93 :
94 : // Parameters set at initialization or for current kinematics.
95 : int idl, idRes, codeSave;
96 : string nameSave;
97 : double mRes, GammaRes, m2Res, GamMRat, Lambda, coupChg, widthIn, sigBW;
98 :
99 : // Pointer to properties of the particle species, to access decay channels.
100 : ParticleDataEntry* qStarPtr;
101 :
102 : };
103 :
104 : //==========================================================================
105 :
106 : // A derived class for q q' -> q^* q' (excited quark state).
107 :
108 0 : class Sigma2qq2qStarq : public Sigma2Process {
109 :
110 : public:
111 :
112 : // Constructor.
113 0 : Sigma2qq2qStarq(int idqIn) : idq(idqIn) {}
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 : // Evaluate weight for q* decay angles (else inactive).
128 : virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
129 :
130 : // Info on the subprocess.
131 0 : virtual string name() const {return nameSave;}
132 0 : virtual int code() const {return codeSave;}
133 0 : virtual string inFlux() const {return "qq";}
134 0 : virtual int id3Mass() const {return idRes;}
135 :
136 : private:
137 :
138 : // Parameters set at initialization or for current kinematics.
139 : int idq, idRes, codeSave;
140 : string nameSave;
141 : double Lambda, preFac, openFracPos, openFracNeg, sigmaA, sigmaB;
142 :
143 : };
144 :
145 : //==========================================================================
146 :
147 : // A derived class for q qbar -> l^* lbar (excited lepton state).
148 :
149 0 : class Sigma2qqbar2lStarlbar : public Sigma2Process {
150 :
151 : public:
152 :
153 : // Constructor.
154 0 : Sigma2qqbar2lStarlbar(int idlIn) : idl(idlIn) {}
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).
163 0 : virtual double sigmaHat() {return sigma;}
164 :
165 : // Select flavour, colour and anticolour.
166 : virtual void setIdColAcol();
167 :
168 : // Evaluate weight for l* decay angles (else inactive).
169 : virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
170 :
171 : // Info on the subprocess.
172 0 : virtual string name() const {return nameSave;}
173 0 : virtual int code() const {return codeSave;}
174 0 : virtual string inFlux() const {return "qqbarSame";}
175 0 : virtual int id3Mass() const {return idRes;}
176 :
177 : private:
178 :
179 : // Parameters set at initialization or for current kinematics.
180 : int idl, idRes, codeSave;
181 : string nameSave;
182 : double Lambda, preFac, openFracPos, openFracNeg, sigma;
183 :
184 : };
185 :
186 : //==========================================================================
187 :
188 : // A derived class for q qbar -> lStar lStarBar.
189 : // Code contributed by Olga Igonkina.
190 :
191 0 : class Sigma2qqbar2lStarlStarBar: public Sigma2Process {
192 :
193 : public:
194 :
195 : // Constructor.
196 0 : Sigma2qqbar2lStarlStarBar(int idlIn) : idl(idlIn) {}
197 :
198 : // Initialize process.
199 : void initProc();
200 :
201 : // Calculate flavour-independent parts of cross section.
202 : void sigmaKin();
203 :
204 : // Evaluate sigmaHat(sHat).
205 0 : virtual double sigmaHat() {return sigma;}
206 :
207 : // Select flavour, colour and anticolour.
208 : void setIdColAcol();
209 :
210 : // Evaluate weight for l* decay angles (else inactive).
211 : virtual double weightDecay(Event& process, int iResBeg, int iResEnd);
212 :
213 : // Info on the subprocess.
214 0 : virtual string name() const {return nameSave;}
215 0 : virtual int code() const {return codeSave;}
216 0 : virtual string inFlux() const {return "qqbarSame";}
217 0 : virtual int id3Mass() const {return idRes;}
218 0 : virtual int id4Mass() const {return idRes;}
219 :
220 : private:
221 :
222 : // Parameters set at initialization or for current kinematics.
223 : int idl, idRes, codeSave;
224 : string nameSave;
225 : double Lambda, preFac, openFracPos, openFracNeg, sigma;
226 :
227 : };
228 :
229 : //==========================================================================
230 :
231 : // A derived class for q q -> q q (quark contact interactions).
232 : // Based on, Sigma2qq2qq (QCD).
233 :
234 0 : class Sigma2QCqq2qq : public Sigma2Process {
235 :
236 : public:
237 :
238 : // Constructor.
239 0 : Sigma2QCqq2qq(){}
240 :
241 : // Initialize process.
242 : virtual void initProc();
243 :
244 : // Calculate flavour-independent parts of cross section.
245 : virtual void sigmaKin();
246 :
247 : // Evaluate d(sigmaHat)/d(tHat).
248 : virtual double sigmaHat();
249 :
250 : // Select flavour, colour and anticolour.
251 : virtual void setIdColAcol();
252 :
253 : // Info on the subprocess.
254 0 : virtual string name() const {return "q q(bar)' -> (QC) -> q q(bar)'";}
255 0 : virtual int code() const {return 4201;}
256 0 : virtual string inFlux() const {return "qq";}
257 :
258 : private:
259 :
260 : // Values stored for colour flow selection.
261 : double sigT, sigU, sigTU, sigST, sigSum, sigQCSTU, sigQCUTS;
262 :
263 : // Compositeness parameters.
264 : double qCLambda2;
265 : int qCetaLL, qCetaRR, qCetaLR;
266 :
267 : };
268 :
269 : //==========================================================================
270 :
271 : // A derived class for q qbar -> q' qbar' (quark contact interactions).
272 : // Based on, Sigma2qqbar2qqbarNew(QCD).
273 : // Note: This process give the same contributions for q == q' and q != q'.
274 :
275 0 : class Sigma2QCqqbar2qqbar : public Sigma2Process {
276 :
277 : public:
278 :
279 : // Constructor.
280 0 : Sigma2QCqqbar2qqbar(){}
281 :
282 : // Initialize process.
283 : virtual void initProc();
284 :
285 : // Calculate flavour-independent parts of cross section.
286 : virtual void sigmaKin();
287 :
288 : // Evaluate d(sigmaHat)/d(tHat).
289 0 : virtual double sigmaHat() {return sigma;}
290 :
291 : // Select flavour, colour and anticolour.
292 : virtual void setIdColAcol();
293 :
294 : // Info on the subprocess.
295 0 : virtual string name() const {return "q qbar -> (QC) -> q' qbar' (uds)";}
296 0 : virtual int code() const {return 4202;}
297 0 : virtual string inFlux() const {return "qqbarSame";}
298 :
299 : private:
300 :
301 : // Number of outgoing quark flavours to be considered, given that
302 : // matrix elements are calculated in the massless approximation.
303 : int qCnQuarkNew;
304 :
305 : // Values stored for colour flow selection.
306 : int idNew;
307 : double mNew, m2New, sigS, sigma;
308 :
309 : // Compositeness parameters.
310 : double qCLambda2;
311 : int qCetaLL, qCetaRR, qCetaLR;
312 :
313 : };
314 :
315 : //==========================================================================
316 :
317 : // A derived class for f fbar -> l lbar
318 : // (contact interactions).
319 : // Does not include t-channel contributions relevant for e^+e^- to e^+e^-
320 :
321 0 : class Sigma2QCffbar2llbar : public Sigma2Process {
322 :
323 : public:
324 :
325 : // Constructor: bool Graviton = true, to use LED graviton settings.
326 0 : Sigma2QCffbar2llbar (int idIn, int codeIn) : idNew(idIn), codeNew(codeIn) {}
327 :
328 : // Initialize process.
329 : virtual void initProc();
330 :
331 : // Calculate flavour-independent parts of cross section;
332 : // first step when inflavours unknown.
333 : virtual void sigmaKin();
334 :
335 : // Evaluate sigmaHat(sHat); second step for given inflavours.
336 : virtual double sigmaHat();
337 :
338 : // Select flavour, colour and anticolour.
339 : virtual void setIdColAcol();
340 :
341 : // Info on the subprocess.
342 0 : virtual string name() const {return nameNew;}
343 0 : virtual int code() const {return codeNew;}
344 0 : virtual string inFlux() const {return "ffbarSame";}
345 0 : virtual bool isSChannel() const {return true;}
346 :
347 : private:
348 :
349 : // Process values.
350 : string nameNew;
351 : int idNew, codeNew;
352 : double qCmNew, qCmNew2, qCmZ, qCmZ2, qCGZ, qCGZ2, sigma0;
353 :
354 : // Compositeness parameters.
355 : double qCLambda2;
356 : int qCetaLL, qCetaRR, qCetaLR;
357 : double qCPropGm, qCrePropZ, qCimPropZ;
358 :
359 : };
360 :
361 : //==========================================================================
362 :
363 : } // end namespace Pythia8
364 :
365 : #endif // Pythia8_SigmaCompositeness_H
|