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

          Line data    Source code
       1             : // SigmaTotal.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 contains the class for cross section parametrizations.
       7             : // SigmaTotal: total and partial cross section in hadron-hadron collisions.
       8             : 
       9             : #ifndef Pythia8_SigmaTotal_H
      10             : #define Pythia8_SigmaTotal_H
      11             : 
      12             : #include "Pythia8/Info.h"
      13             : #include "Pythia8/ParticleData.h"
      14             : #include "Pythia8/PythiaStdlib.h"
      15             : #include "Pythia8/Settings.h"
      16             : 
      17             : namespace Pythia8 {
      18             : 
      19             : //==========================================================================
      20             : 
      21             : // The SigmaTotal class contains parametrizations of total, elastic and
      22             : // diffractive cross sections, and of the respective slope parameter.
      23             : 
      24             : class SigmaTotal {
      25             : 
      26             : public:
      27             : 
      28             :   // Constructor.
      29           0 :   SigmaTotal() : isCalc(false) {};
      30             : 
      31             :   // Store pointers and initialize data members.
      32             :   void init(Info* infoPtrIn, Settings& settings,
      33             :     ParticleData* particleDataPtrIn );
      34             : 
      35             :   // Calculate, or recalculate for new beams or new energy.
      36             :   bool calc(int idA, int idB, double eCM);
      37             : 
      38             :   // Confirm that initialization worked.
      39           0 :   bool   hasSigmaTot() const {return isCalc;}
      40             : 
      41             :   // Read out total and partial cross sections.
      42           0 :   double sigmaTot() const {return sigTot;}
      43           0 :   double sigmaEl()  const {return sigEl;}
      44           0 :   double sigmaXB()  const {return sigXB;}
      45           0 :   double sigmaAX()  const {return sigAX;}
      46           0 :   double sigmaXX()  const {return sigXX;}
      47           0 :   double sigmaAXB() const {return sigAXB;}
      48           0 :   double sigmaND()  const {return sigND;}
      49             : 
      50             :   // Calculate cross sections in MBR model.
      51             :   bool calcMBRxsecs(int idA, int idB, double eCM);
      52             : 
      53             :   // Get maximum of xi,dy distribution in MBR model (for event generation).
      54           0 :   double ddpMax()  const {return ddpmax;}
      55           0 :   double sdpMax()  const {return sdpmax;}
      56           0 :   double dpepMax() const {return dpepmax;}
      57             : 
      58             :   // Read out slope b in exp(b*t) dependence.
      59           0 :   double bSlopeEl()          const {return bEl;}
      60           0 :   double bSlopeXB(double sX) const { return 2.*bB + alP2 * log(s/sX) ;}
      61           0 :   double bSlopeAX(double sX) const { return 2.*bA + alP2 * log(s/sX) ;}
      62             :   double bSlopeXX(double sX1, double sX2) const {
      63           0 :     return alP2 * log( exp(4.) + s * s0 / (sX1 * sX2) ) ;}
      64             : 
      65             :   // Read out parameters of diffractive mass spectra.
      66           0 :   double mMinXB()  const {return mMinXBsave;}
      67           0 :   double mMinAX()  const {return mMinAXsave;}
      68           0 :   double mMinAXB() const {return mMinAXBsave;}
      69           0 :   double cRes()    const {return CRES;}
      70           0 :   double mResXB()  const {return mResXBsave;}
      71           0 :   double mResAX()  const {return mResAXsave;}
      72           0 :   double sProton() const {return SPROTON;}
      73             : 
      74             :   // Read out parameters of trial t spectra.
      75           0 :   double bMinSlopeXB() const { return max(2., 2. * bB);}
      76           0 :   double bMinSlopeAX() const { return max(2., 2. * bA);}
      77           0 :   double bMinSlopeXX() const { return alP2 * 4.;}
      78             : 
      79             : private:
      80             : 
      81             :   // Decide whether default or MBR diffractive cross sections.
      82             :   int    PomFlux;
      83             : 
      84             :   // Constants: could only be changed in the code itself.
      85             :   static const int    IHADATABLE[], IHADBTABLE[], ISDTABLE[], IDDTABLE[];
      86             :   static const double MMIN, EPSILON, ETA, X[], Y[], BETA0[], BHAD[],
      87             :                       ALPHAPRIME, CONVERTEL, CONVERTSD, CONVERTDD, MMIN0,
      88             :                       CRES, MRES0, CSD[10][8], CDD[10][9], SPROTON;
      89             : 
      90             :   // Integration of MBR cross sections and form factor approximation.
      91             :   static const int    NINTEG, NINTEG2;
      92             :   static const double HBARC2, FFA1, FFA2,FFB1, FFB2;
      93             : 
      94             :   // Initialization data, normally only set once.
      95             :   bool   isCalc, setTotal, zeroAXB, doDampen, setElastic;
      96             :   double sigAXB2TeV, sigTotOwn, sigElOwn, sigXBOwn, sigAXOwn, sigXXOwn,
      97             :          sigAXBOwn, maxXBOwn, maxAXOwn, maxXXOwn, maxAXBOwn, bSlope, rho,
      98             :          lambda, tAbsMin, alphaEM0, sigmaPomP, mPomP, pPomP;
      99             : 
     100             :   // Parameters of MBR model.
     101             :   double MBReps, MBRalpha, MBRbeta0, MBRsigma0, m2min, dyminSDflux,
     102             :          dyminDDflux, dyminCDflux, dyminSD, dyminDD, dyminCD,
     103             :          dyminSigSD, dyminSigDD, dyminSigCD, sdpmax, ddpmax, dpepmax;
     104             : 
     105             :   // Pointer to various information on the generation.
     106             :   Info*         infoPtr;
     107             : 
     108             :   // Pointer to the particle data table.
     109             :   ParticleData* particleDataPtr;
     110             : 
     111             :   // Store values found by calc.
     112             :   double sigTot, sigEl, sigXB, sigAX, sigXX, sigAXB, sigND, bEl, s, bA, bB,
     113             :          alP2, s0, mMinXBsave, mMinAXsave, mMinAXBsave, mResXBsave,
     114             :          mResAXsave;
     115             : 
     116             :   // The error function erf(x) should normally be in your math library,
     117             :   // but if not uncomment this simple parametrization by Sergei Winitzki.
     118             :   //double erf(double x) { double x2 = x * x; double kx2 = 0.147 * x2;
     119             :   //  double tmp = sqrt(1. - exp(-x2 * (4./M_PI + kx2) / (1. + kx2)));
     120             :   //  return ((x >= 0.) ? tmp : -tmp); }
     121             : 
     122             : };
     123             : 
     124             : //==========================================================================
     125             : 
     126             : } // end namespace Pythia8
     127             : 
     128             : #endif // Pythia8_SigmaTotal_H

Generated by: LCOV version 1.11