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

          Line data    Source code
       1             : // StandardModel.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             : // This file gives access to some Standard Model parameters.
       7             : // AlphaStrong: fix or first- or second-order running alpha_strong.
       8             : 
       9             : #ifndef Pythia8_StandardModel_H
      10             : #define Pythia8_StandardModel_H
      11             : 
      12             : #include "Pythia8/Basics.h"
      13             : #include "Pythia8/PythiaStdlib.h"
      14             : #include "Pythia8/Settings.h"
      15             : 
      16             : namespace Pythia8 {
      17             : 
      18             : //==========================================================================
      19             : 
      20             : // The AlphaStrong class calculates the alpha_strong value at an arbitrary
      21             : // scale, given the value at m_Z, to zeroth, first or second order.
      22             : 
      23             : class AlphaStrong {
      24             : 
      25             : public:
      26             : 
      27             :   // Constructors.
      28           0 :   AlphaStrong() : isInit(false), order(0),
      29           0 :     Lambda3Save(0.), Lambda4Save(0.), Lambda5Save(0.), Lambda6Save(0.),
      30           0 :     Lambda3Save2(0.), Lambda4Save2(0.), Lambda5Save2(0.), Lambda6Save2(0.),
      31           0 :     scale2Min(0.), mc(0.), mb(0.), mt(0.), mc2(0.), mb2(0.), mt2(0.),
      32           0 :     lastCallToFull(false), valueRef(0.), valueNow(0.), scale2Now(0.) {}
      33             : 
      34             :   // Destructor.
      35           0 :   virtual ~AlphaStrong() {}
      36             : 
      37             :   // Initialization for given value at M_Z and given order.
      38             :   virtual void init(double valueIn = 0.12, int orderIn = 1, int nfmaxIn = 6,
      39             :     bool useCMWIn = false);
      40             : 
      41             :   // Set flavour threshold values: m_c, m_b, m_t.
      42             :   virtual void setThresholds(double mcIn, double mbIn, double mtIn) {
      43           0 :     mt=mtIn; mb=min(mt,mbIn); mc=min(mb,mcIn);}
      44             : 
      45             :   // alpha_S value and Lambda values.
      46             :   double alphaS(double scale2);
      47             :   double alphaS1Ord(double scale2);
      48             :   double alphaS2OrdCorr(double scale2);
      49           0 :   double Lambda3() const { return Lambda3Save; }
      50           0 :   double Lambda4() const { return Lambda4Save; }
      51           0 :   double Lambda5() const { return Lambda5Save; }
      52             :   double Lambda6() const { return (nfmax >= 6) ? Lambda6Save : Lambda5Save; }
      53             : 
      54             :   // Info: tell which scales we use for flavour thresholds.
      55             :   double muThres(int idQ);
      56             :   double muThres2(int idQ);
      57             : 
      58             :   // Return the CMW factor (for nF between 3 and 6).
      59             :   double facCMW( int nFin);
      60             : 
      61             : // Protected data members: accessible to derived classes.
      62             : protected:
      63             : 
      64             :   // Initialization data member.
      65             :   bool   isInit;
      66             : 
      67             :   // Running order and max number of flavours to use in running.
      68             :   int    order, nfmax;
      69             : 
      70             :   // Lambda values.
      71             :   double Lambda3Save, Lambda4Save, Lambda5Save, Lambda6Save;
      72             :   double Lambda3Save2, Lambda4Save2, Lambda5Save2, Lambda6Save2;
      73             : 
      74             :   // Smallest allowed renormalization scale.
      75             :   double scale2Min;
      76             : 
      77             :   // Flavour thresholds.
      78             :   static const double MZ;
      79             :   double mc, mb, mt;
      80             :   double mc2, mb2, mt2;
      81             : 
      82             :   // CMW rescaling factors.
      83             :   bool useCMW;
      84             :   static const double FACCMW3, FACCMW4, FACCMW5, FACCMW6;
      85             : 
      86             :   // Safety margins to avoid getting too close to LambdaQCD.
      87             :   static const double SAFETYMARGIN1, SAFETYMARGIN2;
      88             : 
      89             : // Private data members: not accessible to derived classes.
      90             : private:
      91             : 
      92             :   // Private constants: could only be changed in the code itself.
      93             :   static const int    NITER;
      94             : 
      95             :   // Private data members.
      96             :   bool   lastCallToFull;
      97             :   double valueRef, valueNow, scale2Now;
      98             : 
      99             : };
     100             : 
     101             : //==========================================================================
     102             : 
     103             : // The AlphaEM class calculates the alpha_electromagnetic value at an
     104             : // arbitrary scale, given the value at 0 and m_Z, to zeroth or first order.
     105             : 
     106             : class AlphaEM {
     107             : 
     108             : public:
     109             : 
     110             :   // Constructors.
     111           0 :   AlphaEM() {}
     112             : 
     113             :   // Initialization for a given order.
     114             :   void init(int orderIn, Settings* settingsPtr);
     115             : 
     116             :   // alpha_EM value.
     117             :   double alphaEM(double scale2);
     118             : 
     119             : private:
     120             : 
     121             :   // Constants: could only be changed in the code itself.
     122             :   static const double MZ, Q2STEP[5], BRUNDEF[5];
     123             : 
     124             :   // Data members.
     125             :   int    order;
     126             :   double alpEM0, alpEMmZ, mZ2, bRun[5], alpEMstep[5];
     127             : 
     128             : };
     129             : 
     130             : //==========================================================================
     131             : 
     132             : // The CoupSM class stores and returns electroweak couplings,
     133             : // including Cabibbo-Kobayashi-Maskawa mass mixing matrix elements.
     134             : 
     135           0 : class CoupSM {
     136             : 
     137             : public:
     138             : 
     139             :   // Constructor.
     140           0 :   CoupSM() {}
     141             : 
     142             :   // Initialize, normally from Pythia::init().
     143             :   void init(Settings& settings, Rndm* rndmPtrIn);
     144             : 
     145             :   // alpha_S value and Lambda values.
     146           0 :   double alphaS(double scale2) {return alphaSlocal.alphaS(scale2);}
     147             :   double alphaS1Ord(double scale2) {return alphaSlocal.alphaS1Ord(scale2);}
     148             :   double alphaS2OrdCorr(double scale2) {
     149             :     return alphaSlocal.alphaS2OrdCorr(scale2);}
     150             :   double Lambda3() const {return alphaSlocal.Lambda3();}
     151             :   double Lambda4() const {return alphaSlocal.Lambda4();}
     152             :   double Lambda5() const {return alphaSlocal.Lambda5();}
     153             : 
     154             :   // Return alpha_EM value.
     155           0 :   double alphaEM(double scale2) {return alphaEMlocal.alphaEM(scale2);}
     156             : 
     157             :   // Return electroweak mixing angle and Fermi constant.
     158           0 :   double sin2thetaW() {return s2tW;}
     159           0 :   double cos2thetaW() {return c2tW;}
     160             :   double sin2thetaWbar() {return s2tWbar;}
     161           0 :   double GF() {return GFermi;}
     162             : 
     163             :   // Return electroweak couplings of quarks and leptons.
     164           0 :   double ef(int idAbs) {return efSave[idAbs];}
     165           0 :   double vf(int idAbs) {return vfSave[idAbs];}
     166           0 :   double af(int idAbs) {return afSave[idAbs];}
     167           0 :   double t3f(int idAbs) {return 0.5*afSave[idAbs];}
     168           0 :   double lf(int idAbs) {return lfSave[idAbs];}
     169           0 :   double rf(int idAbs) {return rfSave[idAbs];}
     170             : 
     171             :   // Return some squared couplings and other combinations.
     172           0 :   double ef2(int idAbs) {return ef2Save[idAbs];}
     173           0 :   double vf2(int idAbs) {return vf2Save[idAbs];}
     174           0 :   double af2(int idAbs) {return af2Save[idAbs];}
     175           0 :   double efvf(int idAbs) {return efvfSave[idAbs];}
     176           0 :   double vf2af2(int idAbs) {return vf2af2Save[idAbs];}
     177             : 
     178             :   // Return CKM value or square:
     179             :   // first index 1/2/3/4 = u/c/t/t', second 1/2/3/4 = d/s/b/b'.
     180           0 :   double VCKMgen(int genU, int genD) {return VCKMsave[genU][genD];}
     181             :   double V2CKMgen(int genU, int genD) {return V2CKMsave[genU][genD];}
     182             : 
     183             :   // Return CKM value or square for incoming flavours (sign irrelevant).
     184             :   double VCKMid(int id1, int id2);
     185             :   double V2CKMid(int id1, int id2);
     186             : 
     187             :   // Return CKM sum of squares for given inflavour, or random outflavour.
     188           0 :   double V2CKMsum(int id) {return V2CKMout[abs(id)];}
     189             :   int    V2CKMpick(int id);
     190             : 
     191             : protected:
     192             : 
     193             :   // Constants: could only be changed in the code itself.
     194             :   static const double efSave[20], afSave[20];
     195             : 
     196             :   // Couplings and VCKM matrix (index 0 not used).
     197             :   double s2tW, c2tW, s2tWbar, GFermi, vfSave[20], lfSave[20], rfSave[20],
     198             :          ef2Save[20], vf2Save[20], af2Save[20], efvfSave[20],
     199             :          vf2af2Save[20], VCKMsave[5][5], V2CKMsave[5][5], V2CKMout[20];
     200             : 
     201             :   // Pointer to the random number generator.
     202             :   Rndm*       rndmPtr;
     203             : 
     204             :   // An AlphaStrong instance for general use (but not MPI, ISR, FSR).
     205             :   AlphaStrong alphaSlocal;
     206             : 
     207             :   // An AlphaEM instance for general use (but not MPI, ISR, FSR).
     208             :   AlphaEM     alphaEMlocal;
     209             : 
     210             : };
     211             : 
     212             : //==========================================================================
     213             : 
     214             : // Generic couplings class
     215             : 
     216           0 : class Couplings : public CoupSM {
     217             : 
     218             : public:
     219             : 
     220           0 :  Couplings() : isSUSY(false) {}
     221             :   bool isSUSY;
     222             : 
     223             : };
     224             : 
     225             : //==========================================================================
     226             : 
     227             : } // end namespace Pythia8
     228             : 
     229             : #endif // Pythia8_StandardModel_H

Generated by: LCOV version 1.11