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

          Line data    Source code
       1             : // SigmaOnia.h is a part of the PYTHIA event generator.
       2             : // Copyright (C) 2015 Torbjorn Sjostrand.
       3             : // PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
       4             : // Please respect the MCnet Guidelines, see GUIDELINES for details.
       5             : 
       6             : // Header file for charmonia/bottomonia process differential cross sections.
       7             : // Contains classes derived from SigmaProcess via Sigma2Process.
       8             : 
       9             : #ifndef Pythia8_SigmaOnia_H
      10             : #define Pythia8_SigmaOnia_H
      11             : 
      12             : #include "Pythia8/SigmaProcess.h"
      13             : 
      14             : namespace Pythia8 {
      15             : 
      16             : //==========================================================================
      17             : 
      18             : // A helper class used to setup the onia processes.
      19             : 
      20           0 : class SigmaOniaSetup {
      21             : 
      22             : public:
      23             : 
      24             :   // Constructors.
      25           0 :   SigmaOniaSetup() {};
      26             :   SigmaOniaSetup(Info* infoPtrIn, Settings* settingsPtrIn,
      27             :     ParticleData* particleDataPtrIn, int flavourIn);
      28             : 
      29             :   // Initialise the SigmaProcesses for gg, qg, or qqbar production.
      30             :   void setupSigma2gg(vector<SigmaProcess*> &procs, bool oniaIn = false);
      31             :   void setupSigma2qg(vector<SigmaProcess*> &procs, bool oniaIn = false);
      32             :   void setupSigma2qq(vector<SigmaProcess*> &procs, bool oniaIn = false);
      33             : 
      34             : private:
      35             : 
      36             :   // Intialise and check settings.
      37             :   void initStates(string wave, const vector<int> &states,
      38             :     vector<int> &jnums, bool &valid);
      39             :   void initSettings(string wave, unsigned int size,
      40             :     const vector<string> &names, vector< vector<double> > &pvecs, bool &valid);
      41             :   void initSettings(string wave, unsigned int size,
      42             :     const vector<string> &names, vector< vector<bool> > &fvecs, bool &valid);
      43             : 
      44             :   // Stored pointers.
      45             :   Info* infoPtr;
      46             :   Settings* settingsPtr;
      47             :   ParticleData* particleDataPtr;
      48             : 
      49             :   // Stored vectors of settings.
      50             :   vector<int> states3S1, states3PJ, states3DJ, spins3S1, spins3PJ, spins3DJ;
      51             :   vector<string> meNames3S1, meNames3PJ, meNames3DJ;
      52             :   vector< vector<double> > mes3S1, mes3PJ, mes3DJ;
      53             :   vector<string> ggNames3S1, qgNames3S1, qqNames3S1,
      54             :     ggNames3PJ, qgNames3PJ, qqNames3PJ, ggNames3DJ, qgNames3DJ, qqNames3DJ;
      55             :   vector< vector<bool> > ggs3S1, qgs3S1, qqs3S1, ggs3PJ, qgs3PJ, qqs3PJ,
      56             :     ggs3DJ, qgs3DJ, qqs3DJ;
      57             : 
      58             :   // Stored validity and production flags.
      59             :   bool onia, onia3S1, onia3PJ, onia3DJ, oniaFlavour;
      60             :   bool valid3S1, valid3PJ, valid3DJ;
      61             :   int flavour;
      62             :   string cat, key;
      63             : 
      64             :   // Stored parameters.
      65             :   double mSplit;
      66             : 
      67             : };
      68             : 
      69             : //==========================================================================
      70             : 
      71             : // A derived class for g g -> QQbar[3S1(1)] g (Q = c or b).
      72             : 
      73           0 : class Sigma2gg2QQbar3S11g : public Sigma2Process {
      74             : 
      75             : public:
      76             : 
      77             :   // Constructor.
      78           0 :   Sigma2gg2QQbar3S11g(int idHadIn, double oniumMEIn, int codeIn) :
      79           0 :     idHad(abs(idHadIn)), codeSave(codeIn), oniumME(oniumMEIn) {}
      80             : 
      81             :   // Initialize process.
      82             :   virtual void initProc();
      83             : 
      84             :   // Calculate flavour-independent parts of cross section.
      85             :   virtual void sigmaKin();
      86             : 
      87             :   // Evaluate d(sigmaHat)/d(tHat).
      88           0 :   virtual double sigmaHat() {return sigma;}
      89             : 
      90             :   // Select flavour, colour and anticolour.
      91             :   virtual void setIdColAcol();
      92             : 
      93             :   // Info on the subprocess.
      94           0 :   virtual string name()    const {return nameSave;}
      95           0 :   virtual int    code()    const {return codeSave;}
      96           0 :   virtual string inFlux()  const {return "gg";}
      97           0 :   virtual int    id3Mass() const {return idHad;}
      98             : 
      99             :  private:
     100             : 
     101             :   // Values stored for process type and colour flow selection.
     102             :   int    idHad, codeSave;
     103             :   string nameSave;
     104             :   double oniumME, sigma;
     105             : 
     106             : };
     107             : 
     108             : //==========================================================================
     109             : 
     110             : // A derived class for g g -> QQbar[3PJ(1)] g (Q = c or b, J = 0, 1 or 2).
     111             : 
     112           0 : class Sigma2gg2QQbar3PJ1g : public Sigma2Process {
     113             : 
     114             : public:
     115             : 
     116             :   // Constructor.
     117           0 :   Sigma2gg2QQbar3PJ1g(int idHadIn, double oniumMEIn, int jIn, int codeIn) :
     118           0 :     idHad(idHadIn), jSave(jIn), codeSave(codeIn), oniumME(oniumMEIn) {}
     119             : 
     120             :   // Initialize process.
     121             :   virtual void initProc();
     122             : 
     123             :   // Calculate flavour-independent parts of cross section.
     124             :   virtual void sigmaKin();
     125             : 
     126             :   // Evaluate d(sigmaHat)/d(tHat).
     127           0 :   virtual double sigmaHat() {return sigma;}
     128             : 
     129             :   // Select flavour, colour and anticolour.
     130             :   virtual void setIdColAcol();
     131             : 
     132             :   // Info on the subprocess.
     133           0 :   virtual string name()    const {return nameSave;}
     134           0 :   virtual int    code()    const {return codeSave;}
     135           0 :   virtual string inFlux()  const {return "gg";}
     136           0 :   virtual int    id3Mass() const {return idHad;}
     137             : 
     138             : protected:
     139             : 
     140             :   // Name pre-, post-, and mid-fix.
     141           0 :   virtual string namePrefix()  const {return "g g";}
     142           0 :   virtual string namePostfix() const {return "g";}
     143           0 :   string nameMidfix() const {return (codeSave - codeSave%100)/100
     144           0 :       == 4 ? "ccbar" : "bbbar";}
     145             : 
     146             :   // Values stored for process type and colour flow selection.
     147             :   int    idHad, jSave, codeSave;
     148             :   string nameSave;
     149             :   double oniumME, sigma;
     150             : 
     151             : };
     152             : 
     153             : //==========================================================================
     154             : 
     155             : // A derived class for q g -> QQbar[3PJ(1)] q (Q = c or b, J = 0, 1 or 2).
     156             : 
     157           0 : class Sigma2qg2QQbar3PJ1q : public Sigma2gg2QQbar3PJ1g {
     158             : 
     159             : public:
     160             : 
     161             :   // Constructor.
     162             :   Sigma2qg2QQbar3PJ1q(int idHadIn, double oniumMEIn, int jIn, int codeIn) :
     163           0 :     Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
     164             : 
     165             :   // Calculate flavour-independent parts of cross section.
     166             :   virtual void sigmaKin();
     167             : 
     168             :   // Select flavour, colour and anticolour.
     169             :   virtual void setIdColAcol();
     170             : 
     171             :   // Info on the subprocess.
     172           0 :   virtual string inFlux()  const {return "qg";}
     173             : 
     174             : protected:
     175             : 
     176             :   // Name pre- and post-fix.
     177           0 :   string namePrefix()  const {return "q g";}
     178           0 :   string namePostfix() const {return "q";}
     179             : 
     180             : };
     181             : 
     182             : //==========================================================================
     183             : 
     184             : // A derived class for q qbar -> QQbar[3PJ(1)] g (Q = c or b, J = 0, 1 or 2).
     185             : 
     186           0 : class Sigma2qqbar2QQbar3PJ1g : public Sigma2gg2QQbar3PJ1g {
     187             : 
     188             : public:
     189             : 
     190             :   // Constructor.
     191             :   Sigma2qqbar2QQbar3PJ1g(int idHadIn, double oniumMEIn, int jIn, int codeIn) :
     192           0 :     Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
     193             : 
     194             :   // Calculate flavour-independent parts of cross section.
     195             :   virtual void sigmaKin();
     196             : 
     197             :   // Select flavour, colour and anticolour.
     198             :   virtual void setIdColAcol();
     199             : 
     200             :   // Info on the subprocess.
     201           0 :   virtual string inFlux()  const {return "qqbarSame";}
     202             : 
     203             : protected:
     204             : 
     205             :   // Name pre- and post-fix.
     206           0 :   string namePrefix()  const {return "q qbar";}
     207           0 :   string namePostfix() const {return "g";}
     208             : 
     209             : };
     210             : 
     211             : //==========================================================================
     212             : 
     213             : // A derived class for g g -> QQbar[3DJ(1)] g (Q = c or b).
     214             : 
     215           0 : class Sigma2gg2QQbar3DJ1g : public Sigma2gg2QQbar3PJ1g {
     216             : 
     217             : public:
     218             : 
     219             :   // Constructor.
     220             :   Sigma2gg2QQbar3DJ1g(int idHadIn, double oniumMEIn, int jIn, int codeIn) :
     221           0 :     Sigma2gg2QQbar3PJ1g(idHadIn, oniumMEIn, jIn, codeIn) {}
     222             : 
     223             :   // Initialize process.
     224             :   virtual void initProc();
     225             : 
     226             :   // Calculate flavour-independent parts of cross section.
     227             :   virtual void sigmaKin();
     228             : 
     229             : };
     230             : 
     231             : //==========================================================================
     232             : 
     233             : // A derived class for g g -> QQbar[X(8)] g (Q = c or b, X = 3S1, 1S0 or 3PJ).
     234             : 
     235           0 : class Sigma2gg2QQbarX8g : public Sigma2Process {
     236             : 
     237             : public:
     238             : 
     239             :   // Constructor.
     240           0 :   Sigma2gg2QQbarX8g(int idHadIn, double oniumMEIn, int stateIn,
     241           0 :     double mSplitIn, int codeIn) : idHad(idHadIn), stateSave(stateIn),
     242           0 :     codeSave(codeIn), oniumME(oniumMEIn), mSplit(mSplitIn) {}
     243             : 
     244             :   // Initialize process.
     245             :   virtual void initProc();
     246             : 
     247             :   // Calculate flavour-independent parts of cross section.
     248             :   virtual void sigmaKin();
     249             : 
     250             :   // Evaluate d(sigmaHat)/d(tHat).
     251           0 :   virtual double sigmaHat() {return sigma;}
     252             : 
     253             :   // Select flavour, colour and anticolour.
     254             :   virtual void setIdColAcol();
     255             : 
     256             :   // Info on the subprocess.
     257           0 :   virtual string name()    const {return nameSave;}
     258           0 :   virtual int    code()    const {return codeSave;}
     259           0 :   virtual string inFlux()  const {return "gg";}
     260           0 :   virtual int    id3Mass() const {return idHad;}
     261             : 
     262             : protected:
     263             : 
     264             :   // Name pre- and post-fix.
     265           0 :   virtual string namePrefix()  const {return "g g";}
     266           0 :   virtual string namePostfix() const {return "g";}
     267             : 
     268             :   // Values stored for process type and colour flow selection.
     269             :   int    idHad, stateSave, codeSave;
     270             :   string nameSave;
     271             :   double oniumME, sigma, mSplit;
     272             : 
     273             : };
     274             : 
     275             : //==========================================================================
     276             : 
     277             : // A derived class for q g -> QQbar[X(8)] q (Q = c or b, X = 3S1, 1S0 or 3PJ).
     278             : 
     279           0 : class Sigma2qg2QQbarX8q : public Sigma2gg2QQbarX8g {
     280             : 
     281             : public:
     282             : 
     283             :   // Constructor.
     284             :   Sigma2qg2QQbarX8q(int idHadIn, double oniumMEIn, int stateIn,
     285             :     double mSplitIn, int codeIn) :
     286           0 :     Sigma2gg2QQbarX8g(idHadIn, oniumMEIn, stateIn, mSplitIn, codeIn) {}
     287             : 
     288             :   // Calculate flavour-independent parts of cross section.
     289             :   virtual void sigmaKin();
     290             : 
     291             :   // Select flavour, colour and anticolour.
     292             :   virtual void setIdColAcol();
     293             : 
     294             :   // Info on the subprocess.
     295           0 :   virtual string inFlux()  const {return "qg";}
     296             : 
     297             : protected:
     298             : 
     299             :   // Name pre- and post-fix.
     300           0 :   virtual string namePrefix()  const {return "q g";}
     301           0 :   virtual string namePostfix() const {return "q";}
     302             : 
     303             : };
     304             : 
     305             : //==========================================================================
     306             : 
     307             : // A derived class for q qbar -> QQbar[X(8)] g (Q = c or b,
     308             : //   X = 3S1, 1S0 or 3PJ).
     309             : 
     310           0 : class Sigma2qqbar2QQbarX8g : public Sigma2gg2QQbarX8g {
     311             : 
     312             : public:
     313             : 
     314             :   // Constructor.
     315             :   Sigma2qqbar2QQbarX8g(int idHadIn, double oniumMEIn, int stateIn,
     316             :     double mSplitIn, int codeIn) :
     317           0 :     Sigma2gg2QQbarX8g(idHadIn, oniumMEIn, stateIn, mSplitIn, codeIn) {}
     318             : 
     319             :   // Calculate flavour-independent parts of cross section.
     320             :   virtual void sigmaKin();
     321             : 
     322             :   // Select flavour, colour and anticolour.
     323             :   virtual void setIdColAcol();
     324             : 
     325             :   // Info on the subprocess.
     326           0 :   virtual string inFlux()  const {return "qqbarSame";}
     327             : 
     328             : protected:
     329             : 
     330             :   // Name pre- and post-fix.
     331           0 :   virtual string namePrefix()  const {return "q qbar";}
     332           0 :   virtual string namePostfix() const {return "g";}
     333             : 
     334             : };
     335             : 
     336             : //==========================================================================
     337             : 
     338             : } // end namespace Pythia8
     339             : 
     340             : #endif // Pythia8_SigmaOnia_H

Generated by: LCOV version 1.11