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) 2014 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 "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.
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  // Evaluate d(sigmaHat)/d(tHat).
286  virtual double sigmaHat();
287 
288  // Select flavour, colour and anticolour.
289  virtual void setIdColAcol();
290 
291  private:
292 
293  // Basic process information
294  int id3Sav, id4Sav;
295 
296 };
297 
298 //==========================================================================
299 
300 // A derived class for q q' -> ~q_i ~q_j
301 
302 class Sigma2qq2squarksquark : public Sigma2Process {
303 
304 public:
305 
306  // Constructor.
307  Sigma2qq2squarksquark() {}
308 
309  // Constructor.
310  Sigma2qq2squarksquark(int id3In, int id4In, int codeIn) {
311 
312  // Save ordering indices and process code
313  id3Sav = id3In;
314  id4Sav = id4In;
315  codeSave = codeIn;
316  // Initial values (flipped for c.c.)
317  id3 = id3Sav;
318  id4 = id4Sav;
319 
320  }
321 
322  // Initialize process.
323  virtual void initProc();
324 
325  // Calculate flavour-independent parts of cross section.
326  virtual void sigmaKin();
327 
328  // Evaluate d(sigmaHat)/d(tHat).
329  virtual double sigmaHat();
330 
331  // Select flavour, colour and anticolour.
332  virtual void setIdColAcol();
333 
334  // Info on the subprocess.
335  virtual string name() const {return nameSave;}
336  virtual int code() const {return codeSave;}
337  virtual string inFlux() const {return "qq";}
338  virtual int id3Mass() const {return abs(id3Sav);}
339  virtual int id4Mass() const {return abs(id4Sav);}
340  virtual bool isSUSY() const {return true;}
341 
342 private:
343 
344  // Basic process information
345  int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
346  string nameSave;
347  bool isUD;
348 
349  // Storage of mass squares
350  double m2Glu;
351  vector<double> m2Neut, m2Char;
352 
353  // Flavor-independent prefactors.
354  double sigmaChar, sigmaNeut, sigmaGlu;
355  double sigmaCharNeut, sigmaCharGlu, sigmaNeutGlu;
356  double openFracPair;
357 
358  // Point-by-point info
359  double tGlu, uGlu;
360  vector<double> tNeut, uNeut, tChar, uChar;
361  double sumCt, sumCu, sumNt, sumNu, sumGt, sumGu, sumInterference;
362 
363  //SUSY couplings
364  CoupSUSY* coupSUSYPtr;
365 };
366 
367 //==========================================================================
368 
369 // A derived class for q qbar' -> ~q_i ~q*_j
370 
371 class Sigma2qqbar2squarkantisquark : public Sigma2Process {
372 
373 public:
374 
375  // Constructor.
376  Sigma2qqbar2squarkantisquark() {}
377 
378  // Constructor.
379  Sigma2qqbar2squarkantisquark(int id3In, int id4In, int codeIn) {
380 
381  // Save ordering indices and process code
382  // (always store squark first, antisquark second)
383  id3Sav = abs(id3In);
384  id4Sav = -abs(id4In);
385  codeSave = codeIn;
386  // Initial values
387  id3 = id3Sav;
388  id4 = id4Sav;
389 
390  }
391 
392  // Initialize process.
393  virtual void initProc();
394 
395  // Calculate flavour-independent parts of cross section.
396  virtual void sigmaKin();
397 
398  // Evaluate d(sigmaHat)/d(tHat).
399  virtual double sigmaHat();
400 
401  // Select flavour, colour and anticolour.
402  virtual void setIdColAcol();
403 
404  // Info on the subprocess.
405  virtual string name() const {return nameSave;}
406  virtual int code() const {return codeSave;}
407  virtual string inFlux() const {return "qq";}
408  virtual int id3Mass() const {return abs(id3Sav);}
409  virtual int id4Mass() const {return abs(id4Sav);}
410  virtual bool isSUSY() const {return true;}
411 
412 private:
413 
414  // Basic process information
415  int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
416  string nameSave;
417  bool isUD, isCC;
418 
419  // Storage of mass squares
420  double m2Glu;
421  vector<double> m2Neut;
422 
423  // Flavor-independent prefactors: EW, strong, and interference
424  double xW;
425  double openFracPair;
426  double sigmaEW, sigmaGlu, sigmaEWG;
427 
428  // Point-by-point info
429  double tGlu, uGlu;
430  vector<double> tNeut, uNeut;
431  complex propZW;
432  double sumColS, sumColT, sumInterference;
433 
434  //SUSY couplings
435  CoupSUSY* coupSUSYPtr;
436 
437 };
438 
439 //==========================================================================
440 
441 // A derived class for g g -> ~q ~q*
442 
443 class Sigma2gg2squarkantisquark : public Sigma2Process {
444 
445 public:
446 
447  // Constructor.
448  Sigma2gg2squarkantisquark() {
449  }
450 
451  // Constructor.
452  Sigma2gg2squarkantisquark(int id34In, int codeIn) {
453 
454  // Save ordering indices and process code
455  // (always store squark first, antisquark second)
456  id3Sav = abs(id34In);
457  id4Sav = -abs(id34In);
458  codeSave = codeIn;
459  // Initial values
460  id3 = id3Sav;
461  id4 = id4Sav;
462 
463  }
464 
465  // Initialize process.
466  virtual void initProc();
467 
468  // Calculate flavour-independent parts of cross section.
469  virtual void sigmaKin();
470 
471  // Evaluate d(sigmaHat)/d(tHat).
472  virtual double sigmaHat() {return sigma;}
473 
474  // Select flavour, colour and anticolour.
475  virtual void setIdColAcol();
476 
477  // Info on the subprocess.
478  virtual string name() const {return nameSave;}
479  virtual int code() const {return codeSave;}
480  virtual string inFlux() const {return "gg";}
481  virtual int id3Mass() const {return abs(id3Sav);}
482  virtual int id4Mass() const {return abs(id4Sav);}
483  virtual bool isSUSY() const {return true;}
484 
485 private:
486 
487  // Basic process information
488  int id3Sav, id4Sav, codeSave;
489  string nameSave;
490  double sigma, m2Sq, openFracPair;
491 
492  //SUSY couplings
493  CoupSUSY* coupSUSYPtr;
494 
495 };
496 
497 //==========================================================================
498 
499 // A derived class for q g -> ~q ~g
500 
501 class Sigma2qg2squarkgluino : public Sigma2Process {
502 
503 public:
504 
505  // Constructor.
506  Sigma2qg2squarkgluino() {}
507 
508  // Constructor.
509  Sigma2qg2squarkgluino(int id3In, int codeIn) {
510 
511  // Save ordering indices and process code
512  id3Sav = abs(id3In);
513  codeSave = codeIn;
514  // Initial values
515  id3 = id3Sav;
516  id4 = 1000021;
517 
518  }
519 
520  // Initialize process.
521  virtual void initProc();
522 
523  // Calculate flavour-independent parts of cross section.
524  virtual void sigmaKin();
525 
526  // Evaluate d(sigmaHat)/d(tHat).
527  virtual double sigmaHat();
528 
529  // Select flavour, colour and anticolour.
530  virtual void setIdColAcol();
531 
532  // Info on the subprocess.
533  virtual string name() const {return nameSave;}
534  virtual int code() const {return codeSave;}
535  virtual string inFlux() const {return "qg";}
536  virtual int id3Mass() const {return abs(id3Sav);}
537  virtual int id4Mass() const {return 1000021;}
538  virtual bool isSUSY() const {return true;}
539 
540 private:
541 
542  // Basic process information
543  int id3Sav, codeSave;
544  string nameSave;
545  double sigmaA, sigmaB, comFacHat, m2Glu, m2Sq, openFracPair;
546 
547  //SUSY couplings
548  CoupSUSY* coupSUSYPtr;
549 
550 };
551 
552 //==========================================================================
553 
554 // A derived class for g g -> gluino gluino.
555 
556 class Sigma2gg2gluinogluino : public Sigma2Process {
557 
558 public:
559 
560  // Constructor.
561  Sigma2gg2gluinogluino() {
562  }
563 
564  // Initialize process.
565  virtual void initProc();
566 
567  // Calculate flavour-independent parts of cross section.
568  virtual void sigmaKin();
569 
570  // Evaluate d(sigmaHat)/d(tHat).
571  virtual double sigmaHat() {return sigma;}
572 
573  // Select flavour, colour and anticolour.
574  virtual void setIdColAcol();
575 
576  // Info on the subprocess.
577  virtual string name() const {return "g g -> gluino gluino";}
578  virtual int code() const {return 1201;}
579  virtual string inFlux() const {return "gg";}
580  virtual int id3Mass() const {return 1000021;}
581  virtual int id4Mass() const {return 1000021;}
582  virtual bool isSUSY() const {return true;}
583 
584 private:
585 
586  // Values stored for process type and colour flow selection.
587  double sigTS, sigUS, sigTU, sigSum, sigma, openFracPair;
588 
589  //SUSY couplings
590  CoupSUSY* coupSUSYPtr;
591 
592 };
593 
594 //==========================================================================
595 
596 // A derived class for q qbar -> gluino gluino.
597 
598 class Sigma2qqbar2gluinogluino : public Sigma2Process {
599 
600 public:
601 
602  // Constructor.
603  Sigma2qqbar2gluinogluino() {
604 
605 }
606 
607  // Initialize process.
608  virtual void initProc();
609 
610  // Calculate flavour-independent parts of cross section.
611  virtual void sigmaKin();
612 
613  // Evaluate d(sigmaHat)/d(tHat).
614  virtual double sigmaHat();
615 
616  // Select flavour, colour and anticolour.
617  virtual void setIdColAcol();
618 
619  // Info on the subprocess.
620  virtual string name() const {return "q qbar -> gluino gluino";}
621  virtual int code() const {return 1202;}
622  virtual string inFlux() const {return "qq";}
623  virtual int id3Mass() const {return 1000021;}
624  virtual int id4Mass() const {return 1000021;}
625  virtual bool isSUSY() const {return true;}
626 
627 private:
628 
629  // Values stored for process type and colour flow selection.
630  double openFracPair, s34Avg, sigS, tHG, uHG, tHG2, uHG2;
631 
632  //SUSY couplings
633  CoupSUSY* coupSUSYPtr;
634 
635 };
636 
637 //==========================================================================
638 
639 class Sigma1qq2antisquark : public Sigma1Process {
640 public:
641 
642  // Constructor.
643  Sigma1qq2antisquark() {}
644 
645 
646  Sigma1qq2antisquark(int id3In) {
647 
648  idRes = id3In;
649 
650  }
651 
652  // Initialize process.
653  virtual void initProc();
654 
655  // Calculate flavour-independent parts of cross section.
656  virtual void sigmaKin();
657 
658  // Evaluate d(sigmaHat)/d(tHat).
659  virtual double sigmaHat();
660 
661  // Select flavour, colour and anticolour.
662  virtual void setIdColAcol();
663 
664  // Info on the subprocess.
665  virtual string name() const {return nameSave;}
666  virtual int code() const {return codeSave;}
667  virtual string inFlux() const {return "qq";}
668  virtual bool isSUSY() const {return true;}
669  virtual bool isRPV() const {return true;}
670  virtual int resonanceA() const {return idRes;}
671 
672 private:
673 
674  // Values stored for process type and colour flow selection.
675  double mRes, GammaRes, m2Res, sigBW, widthOut;
676  int codeSave, idRes;
677  string nameSave;
678 
679  //SUSY couplings
680  CoupSUSY* coupSUSYPtr;
681 
682 };
683 
684 
685 //==========================================================================
686 
687 // A derived class for q qbar -> neutralino_i gluino.
688 
690 
691 public:
692 
693  // Constructor.
695 
696  // Constructor.
697  Sigma2qqbar2chi0gluino(int id4chiIn, int codeIn) {
698 
699  // Save ordering indices and process code
700  id3 = 1000021;
701  id4chi = id4chiIn;
702  codeSave = codeIn;
703 
704 
705  // Construct id codes from ordering indices.
706  id4 = 1000022;
707  if (id4chi == 2) id4 = 1000023;
708  if (id4chi == 3) id4 = 1000025;
709  if (id4chi == 4) id4 = 1000035;
710  if (id4chi == 5) id4 = 1000045;
711 
712  }
713 
714  // Initialize process.
715  virtual void initProc();
716 
717  // Calculate flavour-independent parts of cross section.
718  virtual void sigmaKin();
719 
720  // Evaluate d(sigmaHat)/d(tHat).
721  virtual double sigmaHat();
722 
723  // Select flavour, colour and anticolour.
724  virtual void setIdColAcol();
725 
726  // Evaluate weight for decay angles.
727  // virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
728 
729  // Info on the subprocess.
730  virtual string name() const {return nameSave;}
731  virtual int code() const {return codeSave;}
732  virtual string inFlux() const {return "ff";}
733  virtual int id3Mass() const {return abs(id3);}
734  virtual int id4Mass() const {return abs(id4);}
735  virtual int resonanceA() const {return 23;}
736  virtual bool isSUSY() const {return true;}
737  virtual double getSigma0() const {return sigma0;}
738 
739  protected:
740 
741  // Basic process information
742  int id3chi, id4chi, codeSave;
743  string nameSave;
744 
745  // Values stored for later use
746  double sigma0, ui, uj, ti, tj, openFracPair;
747 
748  CoupSUSY* coupSUSYPtr;
749 
750 };
751 
752 //==========================================================================
753 
754 // A derived class for q qbar -> neutralino_i chargino_j.
755 
757 
758 public:
759 
760  // Constructor.
761  Sigma2qqbar2chargluino(int id4chiIn, int codeIn) {
762 
763  // Save ordering indices and process code
764  id3 = 1000021;
765  id4chi = id4chiIn;
766  codeSave = codeIn;
767 
768  // Construct id codes from ordering indices.
769  id4 = (abs(id4chi) == 2) ? 1000037 : 1000024;
770  if (id4chi < 0) id4 = -id4;
771  }
772 
773  // Initialize process.
774  virtual void initProc();
775 
776  // Calculate flavour-independent parts of cross section.
777  virtual void sigmaKin();
778 
779  // Evaluate d(sigmaHat)/d(tHat).
780  virtual double sigmaHat();
781 
782  // Select flavour, colour and anticolour.
783  virtual void setIdColAcol();
784 
785  virtual int resonanceA() const {return 24;}
786 
787 protected :
788 
789  complex propW;
790 
791 };
792 
793 //==========================================================================
794 
795 // A derived class for q qbar' -> ~q_i ~q*_j
796 
798 
799 public:
800 
801  // Constructor.
803 
804  // Constructor.
805  Sigma2qqbar2sleptonantislepton(int id3In, int id4In, int codeIn) {
806 
807  // Save ordering indices and process code
808  // (always store squark first, antisquark second)
809  id3Sav = abs(id3In);
810  id4Sav = -abs(id4In);
811  codeSave = codeIn;
812  // Initial values
813  id3 = id3Sav;
814  id4 = id4Sav;
815  }
816 
817  // Initialize process.
818  virtual void initProc();
819 
820  // Calculate flavour-independent parts of cross section.
821  virtual void sigmaKin();
822 
823  // Evaluate d(sigmaHat)/d(tHat).
824  virtual double sigmaHat();
825 
826  // Select flavour, colour and anticolour.
827  virtual void setIdColAcol();
828 
829  // Info on the subprocess.
830  virtual string name() const {return nameSave;}
831  virtual int code() const {return codeSave;}
832  virtual string inFlux() const {return "qq";}
833  virtual int id3Mass() const {return abs(id3Sav);}
834  virtual int id4Mass() const {return abs(id4Sav);}
835  virtual bool isSUSY() const {return true;}
836 
837 private:
838 
839  // Basic process information
840  int id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
841  string nameSave;
842  bool isUD;
843 
844  // Storage of mass squares
845  vector<double> m2Neut;
846 
847  // Flavor-independent prefactors: EW, strong, and interference
848  double xW;
849  double openFracPair;
850  double sigmaEW;
851 
852  // Point-by-point info
853  vector<double> tNeut, uNeut;
854  complex propZW;
855  double sumColS, sumColT, sumInterference;
856 
857  //SUSY couplings
858  CoupSUSY* coupSUSYPtr;
859 
860 };
861 
862 //==========================================================================
863 
864 } // end namespace Pythia8
865 
866 #endif // Pythia8_SigmaSUSY_H
867