LCOV - code coverage report
Current view: top level - PYTHIA8/pythia8210dev/include/Pythia8 - SigmaSUSY.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 219 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 157 0.0 %

          Line data    Source code
       1             : // SigmaSUSY.h is a part of the PYTHIA event generator.
       2             : // Copyright (C) 2015 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           0 : class Sigma2SUSY : public Sigma2Process {
      25             : 
      26             : public:
      27             : 
      28             :   // Constructor.
      29           0 :   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           0 : class Sigma2qqbar2chi0chi0 : public Sigma2SUSY {
      41             : 
      42             : public:
      43             : 
      44             :   // Constructor.
      45           0 :   Sigma2qqbar2chi0chi0() {};
      46             : 
      47             :   // Constructor.
      48           0 :   Sigma2qqbar2chi0chi0(int id3chiIn, int id4chiIn, int codeIn) {
      49             : 
      50             :     // Save ordering indices and process code
      51           0 :     id3chi   = id3chiIn;
      52           0 :     id4chi   = id4chiIn;
      53           0 :     codeSave = codeIn;
      54             : 
      55             : 
      56             :     // Construct id codes from ordering indices.
      57           0 :     id3                  = 1000022;
      58           0 :     if (id3chi == 2) id3 = 1000023;
      59           0 :     if (id3chi == 3) id3 = 1000025;
      60           0 :     if (id3chi == 4) id3 = 1000035;
      61           0 :     if (id3chi == 5) id3 = 1000045;
      62           0 :     id4                  = 1000022;
      63           0 :     if (id4chi == 2) id4 = 1000023;
      64           0 :     if (id4chi == 3) id4 = 1000025;
      65           0 :     if (id4chi == 4) id4 = 1000035;
      66           0 :     if (id4chi == 5) id4 = 1000045;
      67             : 
      68           0 :   }
      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           0 :   virtual string name()    const {return nameSave;}
      87           0 :   virtual int    code()    const {return codeSave;}
      88           0 :   virtual string inFlux()  const {return "ff";}
      89           0 :   virtual int    id3Mass() const {return abs(id3);}
      90           0 :   virtual int    id4Mass() const {return abs(id4);}
      91           0 :   virtual int    resonanceA() const {return 23;}
      92           0 :   virtual bool   isSUSY()  const {return true;}
      93           0 :   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           0 : class Sigma2qqbar2charchi0 : public Sigma2qqbar2chi0chi0 {
     114             : 
     115             : public:
     116             : 
     117             :   // Constructor.
     118           0 :   Sigma2qqbar2charchi0(int id3chiIn, int id4chiIn, int codeIn) {
     119             : 
     120             :     // Save ordering indices and process code
     121           0 :     id3chi   = id3chiIn;
     122           0 :     id4chi   = id4chiIn;
     123           0 :     codeSave = codeIn;
     124             : 
     125             :     // Construct id codes from ordering indices.
     126           0 :     id3 = (abs(id3chi) == 2) ? 1000037 : 1000024;
     127           0 :     if (id3chi < 0)  id3 = -id3;
     128             : 
     129           0 :     id4                  = 1000022;
     130           0 :     if (id4chi == 2) id4 = 1000023;
     131           0 :     if (id4chi == 3) id4 = 1000025;
     132           0 :     if (id4chi == 4) id4 = 1000035;
     133           0 :     if (id4chi == 5) id4 = 1000045;
     134             : 
     135           0 :   }
     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           0 :   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           0 : class Sigma2qqbar2charchar : public Sigma2qqbar2chi0chi0 {
     156             : 
     157             : public:
     158             : 
     159             :   // Constructor.
     160           0 :   Sigma2qqbar2charchar(int id3chiIn, int id4chiIn, int codeIn) {
     161             : 
     162             :     // Save ordering indices and process code
     163           0 :     id3chi   = id3chiIn;
     164           0 :     id4chi   = id4chiIn;
     165           0 :     codeSave = codeIn;
     166             : 
     167             :     // Construct id codes from ordering indices.
     168           0 :     id3 = (abs(id3chi) == 2) ?  1000037 :  1000024;
     169           0 :     id4 = (abs(id4chi) == 2) ? -1000037 : -1000024;
     170             : 
     171           0 :   }
     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           0 : class Sigma2qg2chi0squark : public Sigma2Process {
     186             : 
     187             : public:
     188             : 
     189             :   // Constructor.
     190           0 :   Sigma2qg2chi0squark() { };
     191             : 
     192             :   // Constructor.
     193           0 :   Sigma2qg2chi0squark(int id3chiIn, int id4sqIn, bool isUp, int codeIn) {
     194             : 
     195             :     // Save ordering indices and process code
     196           0 :     id3chi   = id3chiIn;
     197           0 :     id4sq    = id4sqIn;
     198           0 :     codeSave = codeIn;
     199             : 
     200             :     // Construct id codes from ordering indices.
     201           0 :     id3                  = 1000022;
     202           0 :     if (id3chi == 2) id3 = 1000023;
     203           0 :     if (id3chi == 3) id3 = 1000025;
     204           0 :     if (id3chi == 4) id3 = 1000035;
     205           0 :     if (id3chi == 5) id3 = 1000045;
     206           0 :     id4                  = 1000001 + (isUp ? 1 : 0);
     207           0 :     if (id4sq  == 2) id4 = 1000003 + (isUp ? 1 : 0);
     208           0 :     if (id4sq  == 3) id4 = 1000005 + (isUp ? 1 : 0);
     209           0 :     if (id4sq  == 4) id4 = 2000001 + (isUp ? 1 : 0);
     210           0 :     if (id4sq  == 5) id4 = 2000003 + (isUp ? 1 : 0);
     211           0 :     if (id4sq  == 6) id4 = 2000005 + (isUp ? 1 : 0);
     212             : 
     213           0 :   }
     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           0 :   virtual string name()    const {return nameSave;}
     229           0 :   virtual int    code()    const {return codeSave;}
     230           0 :   virtual string inFlux()  const {return "qg";}
     231           0 :   virtual int    id3Mass() const {return abs(id3);}
     232           0 :   virtual int    id4Mass() const {return abs(id4);}
     233           0 :   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           0 : class Sigma2qg2charsquark : public Sigma2qg2chi0squark {
     254             : 
     255             : public:
     256             : 
     257             :   // Constructor.
     258           0 :   Sigma2qg2charsquark(int id3chiIn, int id4sqIn, bool isUp, int codeIn) {
     259             : 
     260             :     // Save ordering indices and process code
     261           0 :     id3chi   = id3chiIn;
     262           0 :     id4sq    = id4sqIn;
     263           0 :     codeSave = codeIn;
     264             : 
     265             :     // Construct id codes from ordering indices.
     266           0 :     id3Sav                       = 1000024;
     267           0 :     if (abs(id3chi) == 2) id3Sav = 1000037;
     268           0 :     if (isUp)             id3Sav = -id3Sav;
     269           0 :     id4Sav                       = 1000001 + (isUp ? 1 : 0);
     270           0 :     if (id4sq  == 2) id4Sav      = 1000003 + (isUp ? 1 : 0);
     271           0 :     if (id4sq  == 3) id4Sav      = 1000005 + (isUp ? 1 : 0);
     272           0 :     if (id4sq  == 4) id4Sav      = 2000001 + (isUp ? 1 : 0);
     273           0 :     if (id4sq  == 5) id4Sav      = 2000003 + (isUp ? 1 : 0);
     274           0 :     if (id4sq  == 6) id4Sav      = 2000005 + (isUp ? 1 : 0);
     275             : 
     276             :     // Initial values, can be swapped to charge conjugates event by event.
     277           0 :     id3 = id3Sav;
     278           0 :     id4 = id4Sav;
     279             : 
     280           0 :   }
     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           0 : class Sigma2qq2squarksquark : public Sigma2Process {
     306             : 
     307             : public:
     308             : 
     309             :   // Constructor.
     310             :   Sigma2qq2squarksquark() {}
     311             : 
     312             :   // Constructor.
     313           0 :   Sigma2qq2squarksquark(int id3In, int id4In, int codeIn) {
     314             : 
     315             :     // Save ordering indices and process code
     316           0 :     id3Sav = id3In;
     317           0 :     id4Sav = id4In;
     318           0 :     codeSave = codeIn;
     319             :     // Initial values (flipped for c.c.)
     320           0 :     id3    = id3Sav;
     321           0 :     id4    = id4Sav;
     322             : 
     323           0 :   }
     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           0 :   virtual string name()    const {return nameSave;}
     339           0 :   virtual int    code()    const {return codeSave;}
     340           0 :   virtual string inFlux()  const {return "qq";}
     341           0 :   virtual int    id3Mass() const {return abs(id3Sav);}
     342           0 :   virtual int    id4Mass() const {return abs(id4Sav);}
     343           0 :   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           0 : class Sigma2qqbar2squarkantisquark : public Sigma2Process {
     375             : 
     376             : public:
     377             : 
     378             :   // Constructor.
     379           0 :   Sigma2qqbar2squarkantisquark() {}
     380             : 
     381             :   // Constructor.
     382           0 :   Sigma2qqbar2squarkantisquark(int id3In, int id4In, int codeIn) {
     383             : 
     384             :     // Save ordering indices and process code
     385             :     // (always store squark first, antisquark second)
     386           0 :     id3Sav = abs(id3In);
     387           0 :     id4Sav = -abs(id4In);
     388           0 :     codeSave = codeIn;
     389             :     // Initial values
     390           0 :     id3    = id3Sav;
     391           0 :     id4    = id4Sav;
     392             : 
     393           0 :   }
     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           0 :   virtual string name()    const {return nameSave;}
     409           0 :   virtual int    code()    const {return codeSave;}
     410           0 :   virtual string inFlux()  const {return "qq";}
     411           0 :   virtual int    id3Mass() const {return abs(id3Sav);}
     412           0 :   virtual int    id4Mass() const {return abs(id4Sav);}
     413           0 :   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           0 : class Sigma2gg2squarkantisquark : public Sigma2Process {
     447             : 
     448             : public:
     449             : 
     450             :   // Constructor.
     451             :   Sigma2gg2squarkantisquark() {
     452             :   }
     453             : 
     454             :   // Constructor.
     455           0 :   Sigma2gg2squarkantisquark(int id34In, int codeIn) {
     456             : 
     457             :     // Save ordering indices and process code
     458             :     // (always store squark first, antisquark second)
     459           0 :     id3Sav = abs(id34In);
     460           0 :     id4Sav = -abs(id34In);
     461           0 :     codeSave = codeIn;
     462             :     // Initial values
     463           0 :     id3    = id3Sav;
     464           0 :     id4    = id4Sav;
     465             : 
     466           0 :   }
     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           0 :   virtual double sigmaHat() {return sigma;}
     476             : 
     477             :   // Select flavour, colour and anticolour.
     478             :   virtual void setIdColAcol();
     479             : 
     480             :   // Info on the subprocess.
     481           0 :   virtual string name()    const {return nameSave;}
     482           0 :   virtual int    code()    const {return codeSave;}
     483           0 :   virtual string inFlux()  const {return "gg";}
     484           0 :   virtual int    id3Mass() const {return abs(id3Sav);}
     485           0 :   virtual int    id4Mass() const {return abs(id4Sav);}
     486           0 :   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           0 : class Sigma2qg2squarkgluino : public Sigma2Process {
     505             : 
     506             : public:
     507             : 
     508             :   // Constructor.
     509             :   Sigma2qg2squarkgluino() {}
     510             : 
     511             :   // Constructor.
     512           0 :   Sigma2qg2squarkgluino(int id3In, int codeIn) {
     513             : 
     514             :     // Save ordering indices and process code
     515           0 :     id3Sav = abs(id3In);
     516           0 :     codeSave = codeIn;
     517             :     // Initial values
     518           0 :     id3    = id3Sav;
     519           0 :     id4    = 1000021;
     520             : 
     521           0 :   }
     522             : 
     523             :   // Initialize process.
     524             :   virtual void initProc();
     525             : 
     526             :   // Calculate flavour-independent parts of cross section.
     527             :   virtual void sigmaKin();
     528             : 
     529             :   // Evaluate d(sigmaHat)/d(tHat).
     530             :   virtual double sigmaHat();
     531             : 
     532             :   // Select flavour, colour and anticolour.
     533             :   virtual void setIdColAcol();
     534             : 
     535             :   // Info on the subprocess.
     536           0 :   virtual string name()    const {return nameSave;}
     537           0 :   virtual int    code()    const {return codeSave;}
     538           0 :   virtual string inFlux()  const {return "qg";}
     539           0 :   virtual int    id3Mass() const {return abs(id3Sav);}
     540           0 :   virtual int    id4Mass() const {return 1000021;}
     541           0 :   virtual bool   isSUSY()  const {return true;}
     542             : 
     543             : private:
     544             : 
     545             :   // Basic process information
     546             :   int     id3Sav, codeSave;
     547             :   string  nameSave;
     548             :   double sigmaA, sigmaB, comFacHat, m2Glu, m2Sq, openFracPair;
     549             : 
     550             :   //SUSY couplings
     551             :   CoupSUSY* coupSUSYPtr;
     552             : 
     553             : };
     554             : 
     555             : //==========================================================================
     556             : 
     557             : // A derived class for g g -> gluino gluino.
     558             : 
     559           0 : class Sigma2gg2gluinogluino : public Sigma2Process {
     560             : 
     561             : public:
     562             : 
     563             :   // Constructor.
     564           0 :   Sigma2gg2gluinogluino() {
     565           0 :   }
     566             : 
     567             :   // Initialize process.
     568             :   virtual void initProc();
     569             : 
     570             :   // Calculate flavour-independent parts of cross section.
     571             :   virtual void sigmaKin();
     572             : 
     573             :   // Evaluate d(sigmaHat)/d(tHat).
     574           0 :   virtual double sigmaHat() {return sigma;}
     575             : 
     576             :   // Select flavour, colour and anticolour.
     577             :   virtual void setIdColAcol();
     578             : 
     579             :   // Info on the subprocess.
     580           0 :   virtual string name()    const {return "g g -> gluino gluino";}
     581           0 :   virtual int    code()    const {return 1201;}
     582           0 :   virtual string inFlux()  const {return "gg";}
     583           0 :   virtual int    id3Mass() const {return 1000021;}
     584           0 :   virtual int    id4Mass() const {return 1000021;}
     585           0 :   virtual bool   isSUSY()  const {return true;}
     586             : 
     587             : private:
     588             : 
     589             :   // Values stored for process type and colour flow selection.
     590             :   double sigTS, sigUS, sigTU, sigSum, sigma, openFracPair;
     591             : 
     592             :   //SUSY couplings
     593             :   CoupSUSY* coupSUSYPtr;
     594             : 
     595             : };
     596             : 
     597             : //==========================================================================
     598             : 
     599             : // A derived class for q qbar -> gluino gluino.
     600             : 
     601           0 : class Sigma2qqbar2gluinogluino : public Sigma2Process {
     602             : 
     603             : public:
     604             : 
     605             :   // Constructor.
     606           0 :   Sigma2qqbar2gluinogluino() {
     607             : 
     608           0 : }
     609             : 
     610             :   // Initialize process.
     611             :   virtual void initProc();
     612             : 
     613             :   // Calculate flavour-independent parts of cross section.
     614             :   virtual void sigmaKin();
     615             : 
     616             :   // Evaluate d(sigmaHat)/d(tHat).
     617             :   virtual double sigmaHat();
     618             : 
     619             :   // Select flavour, colour and anticolour.
     620             :   virtual void setIdColAcol();
     621             : 
     622             :   // Info on the subprocess.
     623           0 :   virtual string name()    const {return "q qbar -> gluino gluino";}
     624           0 :   virtual int    code()    const {return 1202;}
     625           0 :   virtual string inFlux()  const {return "qq";}
     626           0 :   virtual int    id3Mass() const {return 1000021;}
     627           0 :   virtual int    id4Mass() const {return 1000021;}
     628           0 :   virtual bool   isSUSY()  const {return true;}
     629             : 
     630             : private:
     631             : 
     632             :   // Values stored for process type and colour flow selection.
     633             :   double openFracPair, s34Avg, sigS, tHG, uHG, tHG2, uHG2;
     634             : 
     635             :   //SUSY couplings
     636             :   CoupSUSY* coupSUSYPtr;
     637             : 
     638             : };
     639             : 
     640             : //==========================================================================
     641             : 
     642           0 : class Sigma1qq2antisquark : public Sigma1Process {
     643             : public:
     644             : 
     645             :   // Constructor.
     646             :   Sigma1qq2antisquark() {}
     647             : 
     648             : 
     649           0 :   Sigma1qq2antisquark(int id3In) {
     650             : 
     651           0 :     idRes = id3In;
     652             : 
     653           0 :   }
     654             : 
     655             :   // Initialize process.
     656             :   virtual void initProc();
     657             : 
     658             :   // Calculate flavour-independent parts of cross section.
     659             :   virtual void sigmaKin();
     660             : 
     661             :   // Evaluate d(sigmaHat)/d(tHat).
     662             :   virtual double sigmaHat();
     663             : 
     664             :   // Select flavour, colour and anticolour.
     665             :   virtual void setIdColAcol();
     666             : 
     667             :   // Info on the subprocess.
     668           0 :   virtual string name()    const {return nameSave;}
     669           0 :   virtual int    code()    const {return codeSave;}
     670           0 :   virtual string inFlux()  const {return "qq";}
     671           0 :   virtual bool   isSUSY()  const {return true;}
     672           0 :   virtual bool   isRPV()   const {return true;}
     673           0 :   virtual int    resonanceA() const {return idRes;}
     674             : 
     675             : private:
     676             : 
     677             :   // Values stored for process type and colour flow selection.
     678             :   double mRes, GammaRes, m2Res, sigBW, widthOut;
     679             :   int    codeSave, idRes;
     680             :   string nameSave;
     681             : 
     682             :   //SUSY couplings
     683             :   CoupSUSY* coupSUSYPtr;
     684             : 
     685             : };
     686             : 
     687             : 
     688             : //==========================================================================
     689             : 
     690             : // A derived class for q qbar -> neutralino_i gluino.
     691             : 
     692           0 : class Sigma2qqbar2chi0gluino : public Sigma2SUSY {
     693             : 
     694             : public:
     695             : 
     696             :   // Constructor.
     697           0 :   Sigma2qqbar2chi0gluino() {};
     698             : 
     699             :   // Constructor.
     700           0 :   Sigma2qqbar2chi0gluino(int id4chiIn, int codeIn) {
     701             : 
     702             :     // Save ordering indices and process code
     703           0 :     id3   = 1000021;
     704           0 :     id4chi   = id4chiIn;
     705           0 :     codeSave = codeIn;
     706             : 
     707             : 
     708             :     // Construct id codes from ordering indices.
     709           0 :     id4                  = 1000022;
     710           0 :     if (id4chi == 2) id4 = 1000023;
     711           0 :     if (id4chi == 3) id4 = 1000025;
     712           0 :     if (id4chi == 4) id4 = 1000035;
     713           0 :     if (id4chi == 5) id4 = 1000045;
     714             : 
     715           0 :   }
     716             : 
     717             :   // Initialize process.
     718             :   virtual void initProc();
     719             : 
     720             :   // Calculate flavour-independent parts of cross section.
     721             :   virtual void sigmaKin();
     722             : 
     723             :   // Evaluate d(sigmaHat)/d(tHat).
     724             :   virtual double sigmaHat();
     725             : 
     726             :   // Select flavour, colour and anticolour.
     727             :   virtual void setIdColAcol();
     728             : 
     729             :   // Evaluate weight for decay angles.
     730             :   //  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
     731             : 
     732             :   // Info on the subprocess.
     733           0 :   virtual string name()    const {return nameSave;}
     734           0 :   virtual int    code()    const {return codeSave;}
     735           0 :   virtual string inFlux()  const {return "ff";}
     736           0 :   virtual int    id3Mass() const {return abs(id3);}
     737           0 :   virtual int    id4Mass() const {return abs(id4);}
     738           0 :   virtual int    resonanceA() const {return 23;}
     739           0 :   virtual bool   isSUSY()  const {return true;}
     740           0 :   virtual double getSigma0() const {return sigma0;}
     741             : 
     742             :  protected:
     743             : 
     744             :   // Basic process information
     745             :   int     id3chi, id4chi, codeSave;
     746             :   string  nameSave;
     747             : 
     748             :   // Values stored for later use
     749             :   double  sigma0, ui, uj, ti, tj, openFracPair;
     750             : 
     751             :   CoupSUSY* coupSUSYPtr;
     752             : 
     753             : };
     754             : 
     755             : //==========================================================================
     756             : 
     757             : // A derived class for q qbar -> neutralino_i chargino_j.
     758             : 
     759           0 : class Sigma2qqbar2chargluino : public Sigma2qqbar2chi0gluino {
     760             : 
     761             : public:
     762             : 
     763             :   // Constructor.
     764           0 :   Sigma2qqbar2chargluino(int id4chiIn, int codeIn) {
     765             : 
     766             :     // Save ordering indices and process code
     767           0 :     id3   = 1000021;
     768           0 :     id4chi   = id4chiIn;
     769           0 :     codeSave = codeIn;
     770             : 
     771             :     // Construct id codes from ordering indices.
     772           0 :     id4 = (abs(id4chi) == 2) ? 1000037 : 1000024;
     773           0 :     if (id4chi < 0)  id4 = -id4;
     774           0 :   }
     775             : 
     776             :   // Initialize process.
     777             :   virtual void initProc();
     778             : 
     779             :   // Calculate flavour-independent parts of cross section.
     780             :   virtual void sigmaKin();
     781             : 
     782             :   // Evaluate d(sigmaHat)/d(tHat).
     783             :   virtual double sigmaHat();
     784             : 
     785             :   // Select flavour, colour and anticolour.
     786             :   virtual void setIdColAcol();
     787             : 
     788           0 :   virtual int    resonanceA() const {return 24;}
     789             : 
     790             : protected :
     791             : 
     792             :   complex propW;
     793             : 
     794             : };
     795             : 
     796             : //==========================================================================
     797             : 
     798             : // A derived class for q qbar' -> ~q_i ~q*_j
     799             : 
     800           0 : class Sigma2qqbar2sleptonantislepton : public Sigma2qqbar2squarkantisquark {
     801             : 
     802             : public:
     803             : 
     804             :   // Constructor.
     805             :   Sigma2qqbar2sleptonantislepton() {}
     806             : 
     807             :   // Constructor.
     808           0 :   Sigma2qqbar2sleptonantislepton(int id3In, int id4In, int codeIn) {
     809             : 
     810             :     // Save ordering indices and process code
     811             :     // (always store squark first, antisquark second)
     812           0 :     id3Sav = abs(id3In);
     813           0 :     id4Sav = -abs(id4In);
     814           0 :     codeSave = codeIn;
     815             :     // Initial values
     816           0 :     id3    = id3Sav;
     817           0 :     id4    = id4Sav;
     818           0 :   }
     819             : 
     820             :   // Initialize process.
     821             :   virtual void initProc();
     822             : 
     823             :   // Calculate flavour-independent parts of cross section.
     824             :   virtual void sigmaKin();
     825             : 
     826             :   // Evaluate d(sigmaHat)/d(tHat).
     827             :   virtual double sigmaHat();
     828             : 
     829             :   // Select flavour, colour and anticolour.
     830             :   virtual void setIdColAcol();
     831             : 
     832             :   // Info on the subprocess.
     833           0 :   virtual string name()    const {return nameSave;}
     834           0 :   virtual int    code()    const {return codeSave;}
     835           0 :   virtual string inFlux()  const {return "qq";}
     836           0 :   virtual int    id3Mass() const {return abs(id3Sav);}
     837           0 :   virtual int    id4Mass() const {return abs(id4Sav);}
     838           0 :   virtual bool   isSUSY()  const {return true;}
     839             : 
     840             : private:
     841             : 
     842             :   // Basic process information
     843             :   int     id3Sav, id4Sav, codeSave, iGen3, iGen4, nNeut;
     844             :   string  nameSave;
     845             :   bool    isUD;
     846             : 
     847             :   // Storage of mass squares
     848             :   vector<double> m2Neut;
     849             : 
     850             :   // Flavor-independent prefactors: EW, strong, and interference
     851             :   double xW;
     852             :   double openFracPair;
     853             :   double sigmaEW;
     854             : 
     855             :   // Point-by-point info
     856             :   vector<double> tNeut, uNeut;
     857             :   complex propZW;
     858             :   double sumColS, sumColT, sumInterference;
     859             : 
     860             :   //SUSY couplings
     861             :   CoupSUSY* coupSUSYPtr;
     862             : 
     863             : };
     864             : 
     865             : //==========================================================================
     866             : 
     867             : } // end namespace Pythia8
     868             : 
     869             : #endif // Pythia8_SigmaSUSY_H

Generated by: LCOV version 1.11