]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PYTHIA8/pythia8175/include/SigmaSUSY.h
- remove descriptors and classes with obsolete TRD inputs
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8175 / include / SigmaSUSY.h
CommitLineData
c6b60c38 1// SigmaSUSY.h is a part of the PYTHIA event generator.
2// Copyright (C) 2013 Torbjorn Sjostrand.
3// Main authors of this file: N. Desai, P. Skands
4// PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
5// Please respect the MCnet Guidelines, see GUIDELINES for details.
6
7// Header file for Supersymmetric process differential cross sections.
8// Contains classes derived from SigmaProcess via Sigma2Process.
9
10#ifndef Pythia8_SigmaSUSY_H
11#define Pythia8_SigmaSUSY_H
12
13#include "PhaseSpace.h"
14#include "PythiaComplex.h"
15#include "SigmaProcess.h"
16#include "SusyCouplings.h"
17#include "SusyLesHouches.h"
18
19namespace Pythia8 {
20
21//==========================================================================
22
23// A derived class for q qbar -> neutralino_i neutralino_j.
24
25class Sigma2qqbar2chi0chi0 : public Sigma2Process {
26
27public:
28
29 // Constructor.
30 Sigma2qqbar2chi0chi0() {};
31
32 // Constructor.
33 Sigma2qqbar2chi0chi0(int id3chiIn, int id4chiIn, int codeIn) {
34
35 // Save ordering indices and process code
36 id3chi = id3chiIn;
37 id4chi = id4chiIn;
38 codeSave = codeIn;
39
40
41 // Construct id codes from ordering indices.
42 id3 = 1000022;
43 if (id3chi == 2) id3 = 1000023;
44 if (id3chi == 3) id3 = 1000025;
45 if (id3chi == 4) id3 = 1000035;
46 if (id3chi == 5) id3 = 1000045;
47 id4 = 1000022;
48 if (id4chi == 2) id4 = 1000023;
49 if (id4chi == 3) id4 = 1000025;
50 if (id4chi == 4) id4 = 1000035;
51 if (id4chi == 5) id4 = 1000045;
52
53 }
54
55 // Initialize process.
56 virtual void initProc();
57
58 // Calculate flavour-independent parts of cross section.
59 virtual void sigmaKin();
60
61 // Evaluate d(sigmaHat)/d(tHat).
62 virtual double sigmaHat();
63
64 // Select flavour, colour and anticolour.
65 virtual void setIdColAcol();
66
67 // Info on the subprocess.
68 virtual string name() const {return nameSave;}
69 virtual int code() const {return codeSave;}
70 virtual string inFlux() const {return "qq";}
71 virtual int id3Mass() const {return abs(id3);}
72 virtual int id4Mass() const {return abs(id4);}
73 virtual int resonanceA() const {return 23;}
74 virtual bool isSUSY() const {return true;}
75
76 protected:
77
78 // Basic process information
79 int id3chi, id4chi, codeSave;
80 string nameSave;
81
82 // Values stored for later use
83 double sigma0, ui, uj, ti, tj, openFracPair;
84 complex propZ;
85
86 CoupSUSY* coupSUSYPtr;
87
88};
89
90//==========================================================================
91
92// A derived class for q qbar -> neutralino_i chargino_j.
93
94class Sigma2qqbar2charchi0 : public Sigma2qqbar2chi0chi0 {
95
96public:
97
98 // Constructor.
99 Sigma2qqbar2charchi0(int id3chiIn, int id4chiIn, int codeIn) {
100
101 // Save ordering indices and process code
102 id3chi = id3chiIn;
103 id4chi = id4chiIn;
104 codeSave = codeIn;
105
106 // Construct id codes from ordering indices.
107 id3 = (abs(id3chi) == 2) ? 1000037 : 1000024;
108 if (id3chi < 0) id3 = -id3;
109
110 id4 = 1000022;
111 if (id4chi == 2) id4 = 1000023;
112 if (id4chi == 3) id4 = 1000025;
113 if (id4chi == 4) id4 = 1000035;
114 if (id4chi == 5) id4 = 1000045;
115
116 }
117
118 // Calculate flavour-independent parts of cross section.
119 virtual void sigmaKin();
120
121 // Evaluate d(sigmaHat)/d(tHat).
122 virtual double sigmaHat();
123
124 virtual int resonanceA() const {return 24;}
125
126protected :
127
128 complex propW;
129
130};
131
132//==========================================================================
133
134// A derived class for q qbar -> chargino+_i chargino-_j.
135
136class Sigma2qqbar2charchar : public Sigma2qqbar2chi0chi0 {
137
138public:
139
140 // Constructor.
141 Sigma2qqbar2charchar(int id3chiIn, int id4chiIn, int codeIn) {
142
143 // Save ordering indices and process code
144 id3chi = id3chiIn;
145 id4chi = id4chiIn;
146 codeSave = codeIn;
147
148 // Construct id codes from ordering indices.
149 id3 = (abs(id3chi) == 2) ? 1000037 : 1000024;
150 id4 = (abs(id4chi) == 2) ? -1000037 : -1000024;
151
152 }
153
154 // Calculate flavour-independent parts of cross section.
155 virtual void sigmaKin();
156
157 // Evaluate d(sigmaHat)/d(tHat).
158 virtual double sigmaHat();
159
160};
161
162//==========================================================================
163
164// A derived class for q g -> neutralino_i squark_j (and cc)
165
166class Sigma2qg2chi0squark : public Sigma2Process {
167
168public:
169
170 // Constructor.
171 Sigma2qg2chi0squark() { };
172
173 // Constructor.
174 Sigma2qg2chi0squark(int id3chiIn, int id4sqIn, bool isUp, int codeIn) {
175
176 // Save ordering indices and process code
177 id3chi = id3chiIn;
178 id4sq = id4sqIn;
179 codeSave = codeIn;
180
181 // Construct id codes from ordering indices.
182 id3 = 1000022;
183 if (id3chi == 2) id3 = 1000023;
184 if (id3chi == 3) id3 = 1000025;
185 if (id3chi == 4) id3 = 1000035;
186 if (id3chi == 5) id3 = 1000045;
187 id4 = 1000001 + (isUp ? 1 : 0);
188 if (id4sq == 2) id4 = 1000003 + (isUp ? 1 : 0);
189 if (id4sq == 3) id4 = 1000005 + (isUp ? 1 : 0);
190 if (id4sq == 4) id4 = 2000001 + (isUp ? 1 : 0);
191 if (id4sq == 5) id4 = 2000003 + (isUp ? 1 : 0);
192 if (id4sq == 6) id4 = 2000005 + (isUp ? 1 : 0);
193
194 }
195
196 // Initialize process.
197 virtual void initProc();
198
199 // Calculate flavour-independent parts of cross section.
200 virtual void sigmaKin();
201
202 // Evaluate d(sigmaHat)/d(tHat).
203 virtual double sigmaHat();
204
205 // Select flavour, colour and anticolour.
206 virtual void setIdColAcol();
207
208 // Info on the subprocess.
209 virtual string name() const {return nameSave;}
210 virtual int code() const {return codeSave;}
211 virtual string inFlux() const {return "qg";}
212 virtual int id3Mass() const {return abs(id3);}
213 virtual int id4Mass() const {return abs(id4);}
214 virtual bool isSUSY() const {return true;}
215
216 protected:
217
218 // Basic process information
219 int id3chi, id4sq, codeSave;
220 string nameSave;
221
222 // Values stored for later use
223 double sigma0, ui, uj, ti, tj, openFracPair;
224
225 //SUSY couplings
226 CoupSUSY* coupSUSYPtr;
227
228};
229
230//==========================================================================
231
232// A derived class for q g -> chargino_i squark_j (incl cc)
233
234class Sigma2qg2charsquark : public Sigma2qg2chi0squark {
235
236public:
237
238 // Constructor.
239 Sigma2qg2charsquark(int id3chiIn, int id4sqIn, bool isUp, int codeIn) {
240
241 // Save ordering indices and process code
242 id3chi = id3chiIn;
243 id4sq = id4sqIn;
244 codeSave = codeIn;
245
246 // Construct id codes from ordering indices.
247 id3Sav = 1000024;
248 if (abs(id3chi) == 2) id3Sav = 1000037;
249 if (isUp) id3Sav = -id3Sav;
250 id4Sav = 1000001 + (isUp ? 1 : 0);
251 if (id4sq == 2) id4Sav = 1000003 + (isUp ? 1 : 0);
252 if (id4sq == 3) id4Sav = 1000005 + (isUp ? 1 : 0);
253 if (id4sq == 4) id4Sav = 2000001 + (isUp ? 1 : 0);
254 if (id4sq == 5) id4Sav = 2000003 + (isUp ? 1 : 0);
255 if (id4sq == 6) id4Sav = 2000005 + (isUp ? 1 : 0);
256
257 // Initial values, can be swapped to charge conjugates event by event.
258 id3 = id3Sav;
259 id4 = id4Sav;
260
261 }
262
263 // Initialize process.
264 virtual void initProc();
265
266 // Evaluate d(sigmaHat)/d(tHat).
267 virtual double sigmaHat();
268
269 // Select flavour, colour and anticolour.
270 virtual void setIdColAcol();
271
272 private:
273
274 // Basic process information
275 int id3Sav, id4Sav;
276
277};
278
279//==========================================================================
280
281// A derived class for q q' -> ~q_i ~q_j
282
283class Sigma2qq2squarksquark : public Sigma2Process {
284
285public:
286
287 // Constructor.
288 Sigma2qq2squarksquark() {}
289
290 // Constructor.
291 Sigma2qq2squarksquark(int id3In, int id4In, int codeIn) {
292
293 // Save ordering indices and process code
294 id3Sav = id3In;
295 id4Sav = id4In;
296 codeSave = codeIn;
297 // Initial values (flipped for c.c.)
298 id3 = id3Sav;
299 id4 = id4Sav;
300
301 }
302
303 // Initialize process.
304 virtual void initProc();
305
306 // Calculate flavour-independent parts of cross section.
307 virtual void sigmaKin();
308
309 // Evaluate d(sigmaHat)/d(tHat).
310 virtual double sigmaHat();
311
312 // Select flavour, colour and anticolour.
313 virtual void setIdColAcol();
314
315 // Info on the subprocess.
316 virtual string name() const {return nameSave;}
317 virtual int code() const {return codeSave;}
318 virtual string inFlux() const {return "qq";}
319 virtual int id3Mass() const {return abs(id3Sav);}
320 virtual int id4Mass() const {return abs(id4Sav);}
321 virtual bool isSUSY() const {return true;}
322
323private:
324
325 // Basic process information
326 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
327 string nameSave;
328 bool isUD;
329
330 // Storage of mass squares
331 double m2Glu;
332 vector<double> m2Neut, m2Char;
333
334 // Flavor-independent prefactors.
335 double sigmaChar, sigmaNeut, sigmaGlu;
336 double sigmaCharNeut, sigmaCharGlu, sigmaNeutGlu;
337 double openFracPair;
338
339 // Point-by-point info
340 double tGlu, uGlu;
341 vector<double> tNeut, uNeut, tChar, uChar;
342 double sumCt, sumCu, sumNt, sumNu, sumGt, sumGu, sumInterference;
343
344 //SUSY couplings
345 CoupSUSY* coupSUSYPtr;
346};
347
348//==========================================================================
349
350// A derived class for q qbar' -> ~q_i ~q*_j
351
352class Sigma2qqbar2squarkantisquark : public Sigma2Process {
353
354public:
355
356 // Constructor.
357 Sigma2qqbar2squarkantisquark() {}
358
359 // Constructor.
360 Sigma2qqbar2squarkantisquark(int id3In, int id4In, int codeIn) {
361
362 // Save ordering indices and process code
363 // (always store squark first, antisquark second)
364 id3Sav = abs(id3In);
365 id4Sav = -abs(id4In);
366 codeSave = codeIn;
367 // Initial values
368 id3 = id3Sav;
369 id4 = id4Sav;
370
371 }
372
373 // Initialize process.
374 virtual void initProc();
375
376 // Calculate flavour-independent parts of cross section.
377 virtual void sigmaKin();
378
379 // Evaluate d(sigmaHat)/d(tHat).
380 virtual double sigmaHat();
381
382 // Select flavour, colour and anticolour.
383 virtual void setIdColAcol();
384
385 // Info on the subprocess.
386 virtual string name() const {return nameSave;}
387 virtual int code() const {return codeSave;}
388 virtual string inFlux() const {return "qq";}
389 virtual int id3Mass() const {return abs(id3Sav);}
390 virtual int id4Mass() const {return abs(id4Sav);}
391 virtual bool isSUSY() const {return true;}
392
393private:
394
395 // Basic process information
396 int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
397 string nameSave;
398 bool isUD, isCC;
399
400 // Storage of mass squares
401 double m2Glu;
402 vector<double> m2Neut;
403
404 // Flavor-independent prefactors: EW, strong, and interference
405 double xW;
406 double openFracPair;
407 double sigmaEW, sigmaGlu, sigmaEWG;
408
409 // Point-by-point info
410 double tGlu, uGlu;
411 vector<double> tNeut, uNeut;
412 complex propZW;
413 double sumColS, sumColT, sumColSCC, sumColTCC, sumInterference;
414
415 //SUSY couplings
416 CoupSUSY* coupSUSYPtr;
417
418};
419
420//==========================================================================
421
422// A derived class for g g -> ~q ~q*
423
424class Sigma2gg2squarkantisquark : public Sigma2Process {
425
426public:
427
428 // Constructor.
429 Sigma2gg2squarkantisquark() {
430 }
431
432 // Constructor.
433 Sigma2gg2squarkantisquark(int id34In, int codeIn) {
434
435 // Save ordering indices and process code
436 // (always store squark first, antisquark second)
437 id3Sav = abs(id34In);
438 id4Sav = -abs(id34In);
439 codeSave = codeIn;
440 // Initial values
441 id3 = id3Sav;
442 id4 = id4Sav;
443
444 }
445
446 // Initialize process.
447 virtual void initProc();
448
449 // Calculate flavour-independent parts of cross section.
450 virtual void sigmaKin();
451
452 // Evaluate d(sigmaHat)/d(tHat).
453 virtual double sigmaHat() {return sigma;}
454
455 // Select flavour, colour and anticolour.
456 virtual void setIdColAcol();
457
458 // Info on the subprocess.
459 virtual string name() const {return nameSave;}
460 virtual int code() const {return codeSave;}
461 virtual string inFlux() const {return "gg";}
462 virtual int id3Mass() const {return abs(id3Sav);}
463 virtual int id4Mass() const {return abs(id4Sav);}
464 virtual bool isSUSY() const {return true;}
465
466private:
467
468 // Basic process information
469 int id3Sav, id4Sav, codeSave;
470 string nameSave;
471 double sigma, m2Sq, openFracPair;
472
473 // Color flow info
474 double sumColT, sumColU, sumInterference;
475
476 //SUSY couplings
477 CoupSUSY* coupSUSYPtr;
478
479};
480
481//==========================================================================
482
483// A derived class for q g -> ~q ~g
484
485class Sigma2qg2squarkgluino : public Sigma2Process {
486
487public:
488
489 // Constructor.
490 Sigma2qg2squarkgluino() {}
491
492 // Constructor.
493 Sigma2qg2squarkgluino(int id3In, int codeIn) {
494
495 // Save ordering indices and process code
496 id3Sav = abs(id3In);
497 codeSave = codeIn;
498 // Initial values
499 id3 = id3Sav;
500 id4 = 1000021;
501
502 }
503
504 // Initialize process.
505 virtual void initProc();
506
507 // Calculate flavour-independent parts of cross section.
508 virtual void sigmaKin();
509
510 // Evaluate d(sigmaHat)/d(tHat).
511 virtual double sigmaHat();
512
513 // Select flavour, colour and anticolour.
514 virtual void setIdColAcol();
515
516 // Info on the subprocess.
517 virtual string name() const {return nameSave;}
518 virtual int code() const {return codeSave;}
519 virtual string inFlux() const {return "qg";}
520 virtual int id3Mass() const {return abs(id3Sav);}
521 virtual int id4Mass() const {return 1000021;}
522 virtual bool isSUSY() const {return true;}
523
524private:
525
526 // Basic process information
527 int id3Sav, codeSave;
528 string nameSave;
529 double sigmaA, sigmaB, comFacHat, m2Glu, m2Sq, openFracPair;
530
531 //SUSY couplings
532 CoupSUSY* coupSUSYPtr;
533
534};
535
536//==========================================================================
537
538// A derived class for g g -> gluino gluino.
539
540class Sigma2gg2gluinogluino : public Sigma2Process {
541
542public:
543
544 // Constructor.
545 Sigma2gg2gluinogluino() {
546 }
547
548 // Initialize process.
549 virtual void initProc();
550
551 // Calculate flavour-independent parts of cross section.
552 virtual void sigmaKin();
553
554 // Evaluate d(sigmaHat)/d(tHat).
555 virtual double sigmaHat() {return sigma;}
556
557 // Select flavour, colour and anticolour.
558 virtual void setIdColAcol();
559
560 // Info on the subprocess.
561 virtual string name() const {return "g g -> gluino gluino";}
562 virtual int code() const {return 1201;}
563 virtual string inFlux() const {return "gg";}
564 virtual int id3Mass() const {return 1000021;}
565 virtual int id4Mass() const {return 1000021;}
566 virtual bool isSUSY() const {return true;}
567
568private:
569
570 // Values stored for process type and colour flow selection.
571 double sigTS, sigUS, sigTU, sigSum, sigma, openFracPair;
572
573 //SUSY couplings
574 CoupSUSY* coupSUSYPtr;
575
576};
577
578//==========================================================================
579
580// A derived class for q qbar -> gluino gluino.
581
582class Sigma2qqbar2gluinogluino : public Sigma2Process {
583
584public:
585
586 // Constructor.
587 Sigma2qqbar2gluinogluino() {
588
589}
590
591 // Initialize process.
592 virtual void initProc();
593
594 // Calculate flavour-independent parts of cross section.
595 virtual void sigmaKin();
596
597 // Evaluate d(sigmaHat)/d(tHat).
598 virtual double sigmaHat();
599
600 // Select flavour, colour and anticolour.
601 virtual void setIdColAcol();
602
603 // Info on the subprocess.
604 virtual string name() const {return "q qbar -> gluino gluino";}
605 virtual int code() const {return 1202;}
606 virtual string inFlux() const {return "qqbarSame";}
607 virtual int id3Mass() const {return 1000021;}
608 virtual int id4Mass() const {return 1000021;}
609 virtual bool isSUSY() const {return true;}
610
611private:
612
613 // Values stored for process type and colour flow selection.
614 double openFracPair, s34Avg, sigS, tHG, uHG, tHG2, uHG2;
615
616 //SUSY couplings
617 CoupSUSY* coupSUSYPtr;
618
619};
620
621//==========================================================================
622
623class Sigma1qq2antisquark : public Sigma1Process {
624public:
625
626 // Constructor.
627 Sigma1qq2antisquark() {}
628
629
630 Sigma1qq2antisquark(int id3In) {
631
632 idRes = id3In;
633
634 }
635
636 // Initialize process.
637 virtual void initProc();
638
639 // Calculate flavour-independent parts of cross section.
640 virtual void sigmaKin();
641
642 // Evaluate d(sigmaHat)/d(tHat).
643 virtual double sigmaHat();
644
645 // Select flavour, colour and anticolour.
646 virtual void setIdColAcol();
647
648 // Info on the subprocess.
649 virtual string name() const {return nameSave;}
650 virtual int code() const {return codeSave;}
651 virtual string inFlux() const {return "qq";}
652 virtual bool isSUSY() const {return true;}
653 virtual bool isRPV() const {return true;}
654 virtual int resonanceA() const {return idRes;}
655
656private:
657
658 // Values stored for process type and colour flow selection.
659 double mRes, GammaRes, m2Res, GamMRat, sigBW, widthOut;
660 int squarkType, codeSave, idRes;
661 string nameSave;
662
663 //SUSY couplings
664 CoupSUSY* coupSUSYPtr;
665
666};
667
668
669//==========================================================================
670} // end namespace Pythia8
671
672
673
674
675
676
677
678#endif // Pythia8_SigmaSUSY_H
679