StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SigmaSUSY.h
1 // SigmaSUSY.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2018 Torbjorn Sjostrand.
3 // Main authors of this file: N. Desai, P. Skands
4 // PYTHIA is licenced under the GNU GPL v2 or later, 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 "Pythia8/PhaseSpace.h"
14 #include "Pythia8/PythiaComplex.h"
15 #include "Pythia8/SigmaProcess.h"
16 #include "Pythia8/SusyCouplings.h"
17 
18 namespace Pythia8 {
19 
20 //==========================================================================
21 
22 // An intermediate class for SUSY 2 -> 2 with nontrivial decay angles.
23 
24 class Sigma2SUSY : public Sigma2Process {
25 
26 public:
27 
28  // Constructor.
29  Sigma2SUSY() { };
30 
31  // Evaluate weight for decay angles.
32  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
33 
34  };
35 
36 //==========================================================================
37 
38 // A derived class for q qbar -> neutralino_i neutralino_j.
39 
40 class Sigma2qqbar2chi0chi0 : public Sigma2SUSY {
41 
42 public:
43 
44  // Constructor.
45  Sigma2qqbar2chi0chi0() {};
46 
47  // Constructor.
48  Sigma2qqbar2chi0chi0(int id3chiIn, int id4chiIn, int codeIn) {
49 
50  // Save ordering indices and process code
51  id3chi = id3chiIn;
52  id4chi = id4chiIn;
53  codeSave = codeIn;
54 
55 
56  // Construct id codes from ordering indices.
57  id3 = 1000022;
58  if (id3chi == 2) id3 = 1000023;
59  if (id3chi == 3) id3 = 1000025;
60  if (id3chi == 4) id3 = 1000035;
61  if (id3chi == 5) id3 = 1000045;
62  id4 = 1000022;
63  if (id4chi == 2) id4 = 1000023;
64  if (id4chi == 3) id4 = 1000025;
65  if (id4chi == 4) id4 = 1000035;
66  if (id4chi == 5) id4 = 1000045;
67 
68  }
69 
70  // Initialize process.
71  virtual void initProc();
72 
73  // Calculate flavour-independent parts of cross section.
74  virtual void sigmaKin();
75 
76  // Evaluate d(sigmaHat)/d(tHat).
77  virtual double sigmaHat();
78 
79  // Select flavour, colour and anticolour.
80  virtual void setIdColAcol();
81 
82  // Evaluate weight for decay angles.
83  // virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
84 
85  // Info on the subprocess.
86  virtual string name() const {return nameSave;}
87  virtual int code() const {return codeSave;}
88  virtual string inFlux() const {return "ff";}
89  virtual int id3Mass() const {return abs(id3);}
90  virtual int id4Mass() const {return abs(id4);}
91  virtual int resonanceA() const {return 23;}
92  virtual bool isSUSY() const {return true;}
93  virtual double getSigma0() const {return sigma0;}
94 
95  protected:
96 
97  // Basic process information
98  int id3chi, id4chi, codeSave;
99  string nameSave;
100 
101  // Values stored for later use
102  double sigma0, ui, uj, ti, tj, openFracPair;
103  complex propZ;
104 
105  CoupSUSY* coupSUSYPtr;
106 
107 };
108 
109 //==========================================================================
110 
111 // A derived class for q qbar -> neutralino_i chargino_j.
112 
113 class Sigma2qqbar2charchi0 : public Sigma2qqbar2chi0chi0 {
114 
115 public:
116 
117  // Constructor.
118  Sigma2qqbar2charchi0(int id3chiIn, int id4chiIn, int codeIn) {
119 
120  // Save ordering indices and process code
121  id3chi = id3chiIn;
122  id4chi = id4chiIn;
123  codeSave = codeIn;
124 
125  // Construct id codes from ordering indices.
126  id3 = (abs(id3chi) == 2) ? 1000037 : 1000024;
127  if (id3chi < 0) id3 = -id3;
128 
129  id4 = 1000022;
130  if (id4chi == 2) id4 = 1000023;
131  if (id4chi == 3) id4 = 1000025;
132  if (id4chi == 4) id4 = 1000035;
133  if (id4chi == 5) id4 = 1000045;
134 
135  }
136 
137  // Calculate flavour-independent parts of cross section.
138  virtual void sigmaKin();
139 
140  // Evaluate d(sigmaHat)/d(tHat).
141  virtual double sigmaHat();
142 
143  virtual int resonanceA() const {return 24;}
144 
145 protected :
146 
147  complex propW;
148 
149 };
150 
151 //==========================================================================
152 
153 // A derived class for q qbar -> chargino+_i chargino-_j.
154 
155 class Sigma2qqbar2charchar : public Sigma2qqbar2chi0chi0 {
156 
157 public:
158 
159  // Constructor.
160  Sigma2qqbar2charchar(int id3chiIn, int id4chiIn, int codeIn) {
161 
162  // Save ordering indices and process code
163  id3chi = id3chiIn;
164  id4chi = id4chiIn;
165  codeSave = codeIn;
166 
167  // Construct id codes from ordering indices.
168  id3 = (abs(id3chi) == 2) ? 1000037 : 1000024;
169  id4 = (abs(id4chi) == 2) ? -1000037 : -1000024;
170 
171  }
172 
173  // Calculate flavour-independent parts of cross section.
174  virtual void sigmaKin();
175 
176  // Evaluate d(sigmaHat)/d(tHat).
177  virtual double sigmaHat();
178 
179 };
180 
181 //==========================================================================
182 
183 // A derived class for q g -> neutralino_i squark_j (and cc)
184 
185 class Sigma2qg2chi0squark : public Sigma2Process {
186 
187 public:
188 
189  // Constructor.
190  Sigma2qg2chi0squark() { };
191 
192  // Constructor.
193  Sigma2qg2chi0squark(int id3chiIn, int id4sqIn, bool isUp, int codeIn) {
194 
195  // Save ordering indices and process code
196  id3chi = id3chiIn;
197  id4sq = id4sqIn;
198  codeSave = codeIn;
199 
200  // Construct id codes from ordering indices.
201  id3 = 1000022;
202  if (id3chi == 2) id3 = 1000023;
203  if (id3chi == 3) id3 = 1000025;
204  if (id3chi == 4) id3 = 1000035;
205  if (id3chi == 5) id3 = 1000045;
206  id4 = 1000001 + (isUp ? 1 : 0);
207  if (id4sq == 2) id4 = 1000003 + (isUp ? 1 : 0);
208  if (id4sq == 3) id4 = 1000005 + (isUp ? 1 : 0);
209  if (id4sq == 4) id4 = 2000001 + (isUp ? 1 : 0);
210  if (id4sq == 5) id4 = 2000003 + (isUp ? 1 : 0);
211  if (id4sq == 6) id4 = 2000005 + (isUp ? 1 : 0);
212 
213  }
214 
215  // Initialize process.
216  virtual void initProc();
217 
218  // Calculate flavour-independent parts of cross section.
219  virtual void sigmaKin();
220 
221  // Evaluate d(sigmaHat)/d(tHat).
222  virtual double sigmaHat();
223 
224  // Select flavour, colour and anticolour.
225  virtual void setIdColAcol();
226 
227  // Info on the subprocess.
228  virtual string name() const {return nameSave;}
229  virtual int code() const {return codeSave;}
230  virtual string inFlux() const {return "qg";}
231  virtual int id3Mass() const {return abs(id3);}
232  virtual int id4Mass() const {return abs(id4);}
233  virtual bool isSUSY() const {return true;}
234 
235  protected:
236 
237  // Basic process information
238  int id3chi, id4sq, codeSave;
239  string nameSave;
240 
241  // Values stored for later use
242  double sigma0, ui, uj, ti, tj, openFracPair;
243 
244  //SUSY couplings
245  CoupSUSY* coupSUSYPtr;
246 
247 };
248 
249 //==========================================================================
250 
251 // A derived class for q g -> chargino_i squark_j (incl cc)
252 
253 class Sigma2qg2charsquark : public Sigma2qg2chi0squark {
254 
255 public:
256 
257  // Constructor.
258  Sigma2qg2charsquark(int id3chiIn, int id4sqIn, bool isUp, int codeIn) {
259 
260  // Save ordering indices and process code
261  id3chi = id3chiIn;
262  id4sq = id4sqIn;
263  codeSave = codeIn;
264 
265  // Construct id codes from ordering indices.
266  id3Sav = 1000024;
267  if (abs(id3chi) == 2) id3Sav = 1000037;
268  if (isUp) id3Sav = -id3Sav;
269  id4Sav = 1000001 + (isUp ? 1 : 0);
270  if (id4sq == 2) id4Sav = 1000003 + (isUp ? 1 : 0);
271  if (id4sq == 3) id4Sav = 1000005 + (isUp ? 1 : 0);
272  if (id4sq == 4) id4Sav = 2000001 + (isUp ? 1 : 0);
273  if (id4sq == 5) id4Sav = 2000003 + (isUp ? 1 : 0);
274  if (id4sq == 6) id4Sav = 2000005 + (isUp ? 1 : 0);
275 
276  // Initial values, can be swapped to charge conjugates event by event.
277  id3 = id3Sav;
278  id4 = id4Sav;
279 
280  }
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  virtual double sigmaHat();
290 
291  // Select flavour, colour and anticolour.
292  virtual void setIdColAcol();
293 
294  private:
295 
296  // Basic process information
297  int id3Sav, id4Sav;
298 
299 };
300 
301 //==========================================================================
302 
303 // A derived class for q q' -> ~q_i ~q_j
304 
305 class Sigma2qq2squarksquark : public Sigma2Process {
306 
307 public:
308 
309  // Constructor.
310  Sigma2qq2squarksquark() {}
311 
312  // Constructor.
313  Sigma2qq2squarksquark(int id3In, int id4In, int codeIn) {
314 
315  // Save ordering indices and process code
316  id3Sav = id3In;
317  id4Sav = id4In;
318  codeSave = codeIn;
319  // Initial values (flipped for c.c.)
320  id3 = id3Sav;
321  id4 = id4Sav;
322 
323  }
324 
325  // Initialize process.
326  virtual void initProc();
327 
328  // Calculate flavour-independent parts of cross section.
329  virtual void sigmaKin();
330 
331  // Evaluate d(sigmaHat)/d(tHat).
332  virtual double sigmaHat();
333 
334  // Select flavour, colour and anticolour.
335  virtual void setIdColAcol();
336 
337  // Info on the subprocess.
338  virtual string name() const {return nameSave;}
339  virtual int code() const {return codeSave;}
340  virtual string inFlux() const {return "qq";}
341  virtual int id3Mass() const {return abs(id3Sav);}
342  virtual int id4Mass() const {return abs(id4Sav);}
343  virtual bool isSUSY() const {return true;}
344 
345 private:
346 
347  // Basic process information
348  int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
349  string nameSave;
350  bool isUD, onlyQCD;
351 
352  // Storage of mass squares
353  double m2Glu;
354  vector<double> m2Neut, m2Char;
355 
356  // Flavor-independent prefactors.
357  double sigmaChar, sigmaNeut, sigmaGlu;
358  double sigmaCharNeut, sigmaCharGlu, sigmaNeutGlu;
359  double openFracPair;
360 
361  // Point-by-point info
362  double tGlu, uGlu;
363  vector<double> tNeut, uNeut, tChar, uChar;
364  double sumCt, sumCu, sumNt, sumNu, sumGt, sumGu, sumInterference;
365 
366  //SUSY couplings
367  CoupSUSY* coupSUSYPtr;
368 };
369 
370 //==========================================================================
371 
372 // A derived class for q qbar' -> ~q_i ~q*_j
373 
374 class Sigma2qqbar2squarkantisquark : public Sigma2Process {
375 
376 public:
377 
378  // Constructor.
379  Sigma2qqbar2squarkantisquark() {}
380 
381  // Constructor.
382  Sigma2qqbar2squarkantisquark(int id3In, int id4In, int codeIn) {
383 
384  // Save ordering indices and process code
385  // (always store squark first, antisquark second)
386  id3Sav = abs(id3In);
387  id4Sav = -abs(id4In);
388  codeSave = codeIn;
389  // Initial values
390  id3 = id3Sav;
391  id4 = id4Sav;
392 
393  }
394 
395  // Initialize process.
396  virtual void initProc();
397 
398  // Calculate flavour-independent parts of cross section.
399  virtual void sigmaKin();
400 
401  // Evaluate d(sigmaHat)/d(tHat).
402  virtual double sigmaHat();
403 
404  // Select flavour, colour and anticolour.
405  virtual void setIdColAcol();
406 
407  // Info on the subprocess.
408  virtual string name() const {return nameSave;}
409  virtual int code() const {return codeSave;}
410  virtual string inFlux() const {return "qq";}
411  virtual int id3Mass() const {return abs(id3Sav);}
412  virtual int id4Mass() const {return abs(id4Sav);}
413  virtual bool isSUSY() const {return true;}
414 
415 private:
416 
417  // Basic process information
418  int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
419  string nameSave;
420  bool isUD, isCC, onlyQCD;
421 
422  // Storage of mass squares
423  double m2Glu;
424  vector<double> m2Neut;
425 
426  // Flavor-independent prefactors: EW, strong, and interference
427  double xW;
428  double openFracPair;
429  double sigmaEW, sigmaGlu, sigmaEWG;
430 
431  // Point-by-point info
432  double tGlu, uGlu;
433  vector<double> tNeut, uNeut;
434  complex propZW;
435  double sumColS, sumColT, sumInterference;
436 
437  //SUSY couplings
438  CoupSUSY* coupSUSYPtr;
439 
440 };
441 
442 //==========================================================================
443 
444 // A derived class for g g -> ~q ~q*
445 
446 class Sigma2gg2squarkantisquark : public Sigma2Process {
447 
448 public:
449 
450  // Constructor.
451  Sigma2gg2squarkantisquark() {
452  }
453 
454  // Constructor.
455  Sigma2gg2squarkantisquark(int id34In, int codeIn) {
456 
457  // Save ordering indices and process code
458  // (always store squark first, antisquark second)
459  id3Sav = abs(id34In);
460  id4Sav = -abs(id34In);
461  codeSave = codeIn;
462  // Initial values
463  id3 = id3Sav;
464  id4 = id4Sav;
465 
466  }
467 
468  // Initialize process.
469  virtual void initProc();
470 
471  // Calculate flavour-independent parts of cross section.
472  virtual void sigmaKin();
473 
474  // Evaluate d(sigmaHat)/d(tHat).
475  virtual double sigmaHat() {return sigma;}
476 
477  // Select flavour, colour and anticolour.
478  virtual void setIdColAcol();
479 
480  // Info on the subprocess.
481  virtual string name() const {return nameSave;}
482  virtual int code() const {return codeSave;}
483  virtual string inFlux() const {return "gg";}
484  virtual int id3Mass() const {return abs(id3Sav);}
485  virtual int id4Mass() const {return abs(id4Sav);}
486  virtual bool isSUSY() const {return true;}
487 
488 private:
489 
490  // Basic process information
491  int id3Sav, id4Sav, codeSave;
492  string nameSave;
493  double sigma, m2Sq, openFracPair;
494 
495  //SUSY couplings
496  CoupSUSY* coupSUSYPtr;
497 
498 };
499 
500 //==========================================================================
501 
502 // A derived class for q g -> ~q ~g
503 
504 class Sigma2qg2squarkgluino : public Sigma2Process {
505 
506 public:
507 
508  // Constructor.
509  Sigma2qg2squarkgluino() {}
510 
511  // Constructor.
512  Sigma2qg2squarkgluino(int id3In, int codeIn) {
513 
514  // Save ordering indices and process code
515  codeSave = codeIn;
516  // Initial values
517  id3 = id3In;
518  id4 = 1000021;
519 
520  }
521 
522  // Initialize process.
523  virtual void initProc();
524 
525  // Calculate flavour-independent parts of cross section.
526  virtual void sigmaKin();
527 
528  // Evaluate d(sigmaHat)/d(tHat).
529  virtual double sigmaHat();
530 
531  // Select flavour, colour and anticolour.
532  virtual void setIdColAcol();
533 
534  // Info on the subprocess.
535  virtual string name() const {return nameSave;}
536  virtual int code() const {return codeSave;}
537  virtual string inFlux() const {return "qg";}
538  virtual int id3Mass() const {return abs(id3);}
539  virtual int id4Mass() const {return 1000021;}
540  virtual bool isSUSY() const {return true;}
541 
542 private:
543 
544  // Basic process information
545  int codeSave;
546  string nameSave;
547  double sigmaA, sigmaB, comFacHat, m2Glu, m2Sq, openFracPair;
548 
549  //SUSY couplings
550  CoupSUSY* coupSUSYPtr;
551 
552 };
553 
554 //==========================================================================
555 
556 // A derived class for g g -> gluino gluino.
557 
558 class Sigma2gg2gluinogluino : public Sigma2Process {
559 
560 public:
561 
562  // Constructor.
563  Sigma2gg2gluinogluino() {
564  }
565 
566  // Initialize process.
567  virtual void initProc();
568 
569  // Calculate flavour-independent parts of cross section.
570  virtual void sigmaKin();
571 
572  // Evaluate d(sigmaHat)/d(tHat).
573  virtual double sigmaHat() {return sigma;}
574 
575  // Select flavour, colour and anticolour.
576  virtual void setIdColAcol();
577 
578  // Info on the subprocess.
579  virtual string name() const {return "g g -> gluino gluino";}
580  virtual int code() const {return 1201;}
581  virtual string inFlux() const {return "gg";}
582  virtual int id3Mass() const {return 1000021;}
583  virtual int id4Mass() const {return 1000021;}
584  virtual bool isSUSY() const {return true;}
585 
586 private:
587 
588  // Values stored for process type and colour flow selection.
589  double sigTS, sigUS, sigTU, sigSum, sigma, openFracPair;
590 
591  //SUSY couplings
592  CoupSUSY* coupSUSYPtr;
593 
594 };
595 
596 //==========================================================================
597 
598 // A derived class for q qbar -> gluino gluino.
599 
600 class Sigma2qqbar2gluinogluino : public Sigma2Process {
601 
602 public:
603 
604  // Constructor.
605  Sigma2qqbar2gluinogluino() {
606 
607 }
608 
609  // Initialize process.
610  virtual void initProc();
611 
612  // Calculate flavour-independent parts of cross section.
613  virtual void sigmaKin();
614 
615  // Evaluate d(sigmaHat)/d(tHat).
616  virtual double sigmaHat();
617 
618  // Select flavour, colour and anticolour.
619  virtual void setIdColAcol();
620 
621  // Info on the subprocess.
622  virtual string name() const {return "q qbar -> gluino gluino";}
623  virtual int code() const {return 1202;}
624  virtual string inFlux() const {return "qq";}
625  virtual int id3Mass() const {return 1000021;}
626  virtual int id4Mass() const {return 1000021;}
627  virtual bool isSUSY() const {return true;}
628 
629 private:
630 
631  // Values stored for process type and colour flow selection.
632  double openFracPair, s34Avg, sigS, tHG, uHG, tHG2, uHG2;
633 
634  //SUSY couplings
635  CoupSUSY* coupSUSYPtr;
636 
637 };
638 
639 //==========================================================================
640 
641 class Sigma1qq2antisquark : public Sigma1Process {
642 public:
643 
644  // Constructor.
645  Sigma1qq2antisquark() {}
646 
647 
648  Sigma1qq2antisquark(int id3In) {
649 
650  idRes = id3In;
651 
652  }
653 
654  // Initialize process.
655  virtual void initProc();
656 
657  // Calculate flavour-independent parts of cross section.
658  virtual void sigmaKin();
659 
660  // Evaluate d(sigmaHat)/d(tHat).
661  virtual double sigmaHat();
662 
663  // Select flavour, colour and anticolour.
664  virtual void setIdColAcol();
665 
666  // Info on the subprocess.
667  virtual string name() const {return nameSave;}
668  virtual int code() const {return codeSave;}
669  virtual string inFlux() const {return "qq";}
670  virtual bool isSUSY() const {return true;}
671  virtual bool isRPV() const {return true;}
672  virtual int resonanceA() const {return idRes;}
673 
674 private:
675 
676  // Values stored for process type and colour flow selection.
677  double mRes, GammaRes, m2Res, sigBW, widthOut;
678  int codeSave, idRes;
679  string nameSave;
680 
681  //SUSY couplings
682  CoupSUSY* coupSUSYPtr;
683 
684 };
685 
686 
687 //==========================================================================
688 
689 // A derived class for q qbar -> neutralino_i gluino.
690 
691 class Sigma2qqbar2chi0gluino : public Sigma2SUSY {
692 
693 public:
694 
695  // Constructor.
696  Sigma2qqbar2chi0gluino() {};
697 
698  // Constructor.
699  Sigma2qqbar2chi0gluino(int id4chiIn, int codeIn) {
700 
701  // Save ordering indices and process code
702  id3 = 1000021;
703  id4chi = id4chiIn;
704  codeSave = codeIn;
705 
706 
707  // Construct id codes from ordering indices.
708  id4 = 1000022;
709  if (id4chi == 2) id4 = 1000023;
710  if (id4chi == 3) id4 = 1000025;
711  if (id4chi == 4) id4 = 1000035;
712  if (id4chi == 5) id4 = 1000045;
713 
714  }
715 
716  // Initialize process.
717  virtual void initProc();
718 
719  // Calculate flavour-independent parts of cross section.
720  virtual void sigmaKin();
721 
722  // Evaluate d(sigmaHat)/d(tHat).
723  virtual double sigmaHat();
724 
725  // Select flavour, colour and anticolour.
726  virtual void setIdColAcol();
727 
728  // Evaluate weight for decay angles.
729  // virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
730 
731  // Info on the subprocess.
732  virtual string name() const {return nameSave;}
733  virtual int code() const {return codeSave;}
734  virtual string inFlux() const {return "ff";}
735  virtual int id3Mass() const {return abs(id3);}
736  virtual int id4Mass() const {return abs(id4);}
737  virtual int resonanceA() const {return 23;}
738  virtual bool isSUSY() const {return true;}
739  virtual double getSigma0() const {return sigma0;}
740 
741  protected:
742 
743  // Basic process information
744  int id3chi, id4chi, codeSave;
745  string nameSave;
746 
747  // Values stored for later use
748  double sigma0, ui, uj, ti, tj, openFracPair;
749 
750  CoupSUSY* coupSUSYPtr;
751 
752 };
753 
754 //==========================================================================
755 
756 // A derived class for q qbar -> neutralino_i chargino_j.
757 
758 class Sigma2qqbar2chargluino : public Sigma2qqbar2chi0gluino {
759 
760 public:
761 
762  // Constructor.
763  Sigma2qqbar2chargluino(int id4chiIn, int codeIn) {
764 
765  // Save ordering indices and process code
766  id3 = 1000021;
767  id4chi = id4chiIn;
768  codeSave = codeIn;
769 
770  // Construct id codes from ordering indices.
771  id4 = (abs(id4chi) == 2) ? 1000037 : 1000024;
772  if (id4chi < 0) id4 = -id4;
773  }
774 
775  // Initialize process.
776  virtual void initProc();
777 
778  // Calculate flavour-independent parts of cross section.
779  virtual void sigmaKin();
780 
781  // Evaluate d(sigmaHat)/d(tHat).
782  virtual double sigmaHat();
783 
784  // Select flavour, colour and anticolour.
785  virtual void setIdColAcol();
786 
787  virtual int resonanceA() const {return 24;}
788 
789 protected :
790 
791  complex propW;
792 
793 };
794 
795 //==========================================================================
796 
797 // A derived class for q qbar' -> ~q_i ~q*_j
798 
799 class Sigma2qqbar2sleptonantislepton : public Sigma2qqbar2squarkantisquark {
800 
801 public:
802 
803  // Constructor.
804  Sigma2qqbar2sleptonantislepton() {}
805 
806  // Constructor.
807  Sigma2qqbar2sleptonantislepton(int id3In, int id4In, int codeIn) {
808 
809  // Save ordering indices and process code
810  // (always store squark first, antisquark second)
811  id3Sav = abs(id3In);
812  id4Sav = -abs(id4In);
813  codeSave = codeIn;
814  // Initial values
815  id3 = id3Sav;
816  id4 = id4Sav;
817  }
818 
819  // Initialize process.
820  virtual void initProc();
821 
822  // Calculate flavour-independent parts of cross section.
823  virtual void sigmaKin();
824 
825  // Evaluate d(sigmaHat)/d(tHat).
826  virtual double sigmaHat();
827 
828  // Select flavour, colour and anticolour.
829  virtual void setIdColAcol();
830 
831  // Info on the subprocess.
832  virtual string name() const {return nameSave;}
833  virtual int code() const {return codeSave;}
834  virtual string inFlux() const {return "qq";}
835  virtual int id3Mass() const {return abs(id3Sav);}
836  virtual int id4Mass() const {return abs(id4Sav);}
837  virtual bool isSUSY() const {return true;}
838 
839 private:
840 
841  // Basic process information
842  int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
843  string nameSave;
844  bool isUD;
845 
846  // Storage of mass squares
847  vector<double> m2Neut;
848 
849  // Flavor-independent prefactors: EW, strong, and interference
850  double xW;
851  double openFracPair;
852  double sigmaEW;
853 
854  // Point-by-point info
855  vector<double> tNeut, uNeut;
856  complex propZW;
857  double sumColS, sumColT, sumInterference;
858 
859  //SUSY couplings
860  CoupSUSY* coupSUSYPtr;
861 
862 };
863 
864 //==========================================================================
865 
866 } // end namespace Pythia8
867 
868 #endif // Pythia8_SigmaSUSY_H
Definition: AgUStep.h:26