This file is indexed.

/usr/include/Pythia8/Pythia8/SigmaTotal.h is in libpythia8-dev 8.1.86-1.2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// SigmaTotal.h is a part of the PYTHIA event generator.
// Copyright (C) 2014 Torbjorn Sjostrand.
// PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
// Please respect the MCnet Guidelines, see GUIDELINES for details.

// This file contains the class for cross section parametrizations.
// SigmaTotal: total and partial cross section in hadron-hadron collisions.

#ifndef Pythia8_SigmaTotal_H
#define Pythia8_SigmaTotal_H

#include "Pythia8/Info.h"
#include "Pythia8/ParticleData.h"
#include "Pythia8/PythiaStdlib.h"
#include "Pythia8/Settings.h"

namespace Pythia8 {
 
//==========================================================================

// The SigmaTotal class contains parametrizations of total, elastic and
// diffractive cross sections, and of the respective slope parameter.

class SigmaTotal {

public:

  // Constructor.
  SigmaTotal() : isCalc(false) {};

  // Store pointers and initialize data members.
  void init(Info* infoPtrIn, Settings& settings,
    ParticleData* particleDataPtrIn );

  // Calculate, or recalculate for new beams or new energy.
  bool calc(int idA, int idB, double eCM);

  // Confirm that initialization worked.
  bool   hasSigmaTot() const {return isCalc;}

  // Read out total and partial cross sections.
  double sigmaTot() const {return sigTot;}
  double sigmaEl()  const {return sigEl;}
  double sigmaXB()  const {return sigXB;}
  double sigmaAX()  const {return sigAX;}
  double sigmaXX()  const {return sigXX;}
  double sigmaAXB() const {return sigAXB;}
  double sigmaND()  const {return sigND;}

  // Calculate cross sections in MBR model.
  bool calcMBRxsecs(int idA, int idB, double eCM);
  
  // Get maximum of xi,dy distribution in MBR model (for event generation).
  double ddpMax()  const {return ddpmax;}
  double sdpMax()  const {return sdpmax;}
  double dpepMax() const {return dpepmax;}

  // Read out slope b in exp(b*t) dependence.
  double bSlopeEl()          const {return bEl;}
  double bSlopeXB(double sX) const { return 2.*bB + alP2 * log(s/sX) ;}
  double bSlopeAX(double sX) const { return 2.*bA + alP2 * log(s/sX) ;}
  double bSlopeXX(double sX1, double sX2) const {
    return alP2 * log( exp(4.) + s * s0 / (sX1 * sX2) ) ;}

  // Read out parameters of diffractive mass spectra.
  double mMinXB()  const {return mMinXBsave;}
  double mMinAX()  const {return mMinAXsave;}
  double mMinAXB() const {return mMinAXBsave;}
  double cRes()    const {return CRES;}
  double mResXB()  const {return mResXBsave;}
  double mResAX()  const {return mResAXsave;}
  double sProton() const {return SPROTON;}

  // Read out parameters of trial t spectra.
  double bMinSlopeXB() const { return max(2., 2. * bB);}
  double bMinSlopeAX() const { return max(2., 2. * bA);}
  double bMinSlopeXX() const { return alP2 * 4.;}

private:

  // Decide whether default or MBR diffractive cross sections.
  int    PomFlux;
  
  // Constants: could only be changed in the code itself.
  static const int    IHADATABLE[], IHADBTABLE[], ISDTABLE[], IDDTABLE[];
  static const double MMIN, EPSILON, ETA, X[], Y[], BETA0[], BHAD[],
                      ALPHAPRIME, CONVERTEL, CONVERTSD, CONVERTDD, MMIN0,
                      CRES, MRES0, CSD[10][8], CDD[10][9], SPROTON;
  
  // Integration of MBR cross sections and form factor approximation.
  static const int    NINTEG, NINTEG2;
  static const double HBARC2, FFA1, FFA2,FFB1, FFB2;

  // Initialization data, normally only set once.
  bool   isCalc, setTotal, zeroAXB, doDampen, setElastic;
  double sigAXB2TeV, sigTotOwn, sigElOwn, sigXBOwn, sigAXOwn, sigXXOwn,
         sigAXBOwn, maxXBOwn, maxAXOwn, maxXXOwn, maxAXBOwn, bSlope, rho,
         lambda, tAbsMin, alphaEM0, sigmaPomP, mPomP, pPomP;
  
  // Parameters of MBR model.
  double MBReps, MBRalpha, MBRbeta0, MBRsigma0, m2min, dyminSDflux,
         dyminDDflux, dyminCDflux, dyminSD, dyminDD, dyminCD,
         dyminSigSD, dyminSigDD, dyminSigCD, sdpmax, ddpmax, dpepmax;

  // Pointer to various information on the generation.
  Info*         infoPtr;

  // Pointer to the particle data table.
  ParticleData* particleDataPtr;

  // Store values found by calc.
  double sigTot, sigEl, sigXB, sigAX, sigXX, sigAXB, sigND, bEl, s, bA, bB,
         alP2, s0, mMinXBsave, mMinAXsave, mMinAXBsave, mResXBsave,
         mResAXsave;

  // The error function erf(x) should normally be in your math library,
  // but if not uncomment this simple parametrization by Sergei Winitzki.
  //double erf(double x) { double x2 = x * x; double kx2 = 0.147 * x2;
  //  double tmp = sqrt(1. - exp(-x2 * (4./M_PI + kx2) / (1. + kx2)));
  //  return ((x >= 0.) ? tmp : -tmp); }

};
 
//==========================================================================

} // end namespace Pythia8

#endif // Pythia8_SigmaTotal_H