Geant4  10.02.p03
G4HadronCrossSections Class Reference

#include <G4HadronCrossSections.hh>

Inheritance diagram for G4HadronCrossSections:
Collaboration diagram for G4HadronCrossSections:

Public Member Functions

 G4HadronCrossSections ()
 
 ~G4HadronCrossSections ()
 
G4bool IsApplicable (const G4DynamicParticle *aParticle)
 
G4double GetElasticCrossSection (const G4DynamicParticle *, G4int, G4int)
 
G4double GetInelasticCrossSection (const G4DynamicParticle *, G4int, G4int)
 
G4double GetCaptureCrossSection (const G4DynamicParticle *, G4int)
 
G4double GetFissionCrossSection (const G4DynamicParticle *, G4int, G4int)
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel ()
 

Static Public Member Functions

static G4HadronCrossSectionsInstance ()
 

Private Member Functions

G4int GetParticleCode (const G4DynamicParticle *)
 
void CalcScatteringCrossSections (const G4DynamicParticle *, G4int, G4int)
 

Private Attributes

G4Powg4pow
 
G4double sigelastic
 
G4double siginelastic
 
G4ParticleDefinitionprevParticleDefinition
 
G4int prevZZ
 
G4int prevAA
 
G4double prevKineticEnergy
 
G4double lastEkx
 
G4double lastEkxPower
 
G4bool correctInelasticNearZero
 
G4int verboseLevel
 

Static Private Attributes

static G4ThreadLocal G4HadronCrossSectionstheInstance = 0
 
static const G4float plab [TSIZE]
 
static const G4float csel [NPARTS][TSIZE]
 
static const G4float csin [NPARTS][TSIZE]
 
static const G4float cspiel [3][TSIZE]
 
static const G4float cspiin [3][TSIZE]
 
static const G4float cspnel [3][TSIZE]
 
static const G4float cspnin [3][TSIZE]
 
static const G4float elab [NELAB]
 
static const G4float cnlwat [NCNLW]
 
static const G4float cnlwel [NCNLW][NELAB]
 
static const G4float cnlwin [NCNLW][NELAB]
 
static const G4float cscap [100]
 
static const G4float ekfiss [NFISS]
 
static const G4float csfiss [4][NFISS]
 
static const G4float alpha [NPARTS]
 
static const G4float alphac [TSIZE]
 
static const G4float partel [35]
 
static const G4float partin [35]
 
static const G4int icorr [35]
 
static const G4int intrc [35]
 
static const G4float csa [4] = {1.f, 27.00f, 63.54f, 207.19f}
 
static const G4int ipart2 [7] = {9, 8, 7, 11, 10, 13, 12}
 

Detailed Description

Definition at line 60 of file G4HadronCrossSections.hh.

Constructor & Destructor Documentation

◆ G4HadronCrossSections()

G4HadronCrossSections::G4HadronCrossSections ( )

Definition at line 1214 of file G4HadronCrossSections.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~G4HadronCrossSections()

G4HadronCrossSections::~G4HadronCrossSections ( )

Definition at line 1225 of file G4HadronCrossSections.cc.

1226 {}

Member Function Documentation

◆ CalcScatteringCrossSections()

void G4HadronCrossSections::CalcScatteringCrossSections ( const G4DynamicParticle aParticle,
G4int  ZZ,
G4int  AA 
)
private

Definition at line 1282 of file G4HadronCrossSections.cc.

1285 {
1286  G4double sigel, sigin, sigtot;
1287  G4double xsecel, xsecin=0;
1288  xsecel = 0;
1289  G4double dx, dy, rc, rca, b;
1290  G4double crel, crin;
1291  G4double xspiel, xspiin;
1292 
1293  G4int ipart = GetParticleCode(aParticle);
1294  prevAA = AA;
1295  prevZZ = ZZ;
1296  prevParticleDefinition = aParticle->GetDefinition();
1297  prevKineticEnergy = aParticle->GetKineticEnergy();
1298 
1299  if (verboseLevel > 1) {
1300  G4cout << "G4HadronCrossSections::ScatteringCrossSections: "
1301  << aParticle->GetDefinition()->GetParticleName()
1302  << " E(MeV)= " << aParticle->GetKineticEnergy()/MeV
1303  << " Z= " << ZZ << " A= " << AA << G4endl;
1304  }
1305 
1306  // Ions...
1307 
1308  if (ipart >= 30 && ipart <= 32) {
1309 
1310  G4double apart=0;
1311  if (ipart == 30) apart = g4pow->Z13(2);
1312  else if (ipart == 31) apart = g4pow->Z13(3);
1313  else if (ipart == 32) apart = g4pow->Z13(4);
1314 
1315  G4double term = apart + g4pow->Z13(AA);
1316  sigin = 49.*term*term;
1317  // Convert cross section from mb to default units
1318  siginelastic = sigin*millibarn;
1319  if(prevKineticEnergy < 6*MeV) siginelastic = 0;
1320  sigelastic = 0.;
1321  return;
1322  }
1323 
1325 
1326 // Low energy neutrons...
1327 
1328  if (ipart == 16 && ek <= 0.0327) {
1329 
1330  // G4int je2 = NELAB;
1331  // for (G4int j = 2; j <= NELAB; j++) {
1332  // if (ek < elab[j - 1]) {
1333  // je2 = j;
1334  // break;
1335  // }
1336  // }
1337  // G4int je1 = je2 -1;
1338  // je1 = je1 - 1; // For array indexing
1339  // je2 = je2 - 1; // For array indexing
1340 
1341  G4int je1 = 0;
1342  G4int je2 = NELAB - 1;
1343  do {
1344  G4int midBin = (je1 + je2)/2;
1345  if (ek < elab[midBin])
1346  je2 = midBin;
1347  else
1348  je1 = midBin;
1349  } while (je2 - je1 > 1);
1350 
1351  G4double delab = elab[je2] - elab[je1];
1352 
1353  // G4int ja2 = NCNLW;
1354  // for (G4int jj = 2; jj <= NCNLW; jj++) {
1355  // if (a < cnlwat[jj - 1]) {
1356  // ja2 = jj;
1357  // break;
1358  // }
1359  // }
1360  // G4int ja1 = ja2 - 1;
1361  // ja1 = ja1 - 1; // For array indexing
1362  // ja2 = ja2 - 1; // For array indexing
1363 
1364  G4int ja1 = 0;
1365  G4int ja2 = NCNLW - 1;
1366  do {
1367  G4int midBin = (ja1 + ja2)/2;
1368  if (AA < cnlwat[midBin])
1369  ja2 = midBin;
1370  else
1371  ja1 = midBin;
1372  } while (ja2 - ja1 > 1);
1373 
1374  G4double dnlwat = cnlwat[ja2] - cnlwat[ja1];
1375 
1376 // Elastic cross section:
1377  // E interpolation or extrapolation at JA1
1378  dy = cnlwel[ja1][je2] - cnlwel[ja1][je1];
1379  G4double rce = dy/delab;
1380  // A interpolation or extrapolation at JE1
1381  dy = cnlwel[ja2][je1] - cnlwel[ja1][je1];
1382  rca = dy/dnlwat;
1383  b = cnlwel[ja1][je1] - rce*elab[je1] - rca*cnlwat[ja1];
1384  sigelastic = rce*ek + rca*AA + b;
1385 // Inelastic cross section:
1386  // E interpolation or extrapolation at JA1
1387  dy = cnlwin[ja1][je2] - cnlwin[ja1][je1];
1388  rce = dy/delab;
1389  // A interpolation or extrapolation at JE1
1390  dy = cnlwin[ja2][je1] - cnlwin[ja1][je1];
1391  rca = dy/dnlwat;
1392  b = cnlwin[ja1][je1] - rce*elab[je1] - rca*cnlwat[ja1];
1393  siginelastic = rce*ek + rca*AA + b;
1394  // Convert cross sections from mb to default units
1397  return;
1398  }
1399 
1400 // Remaining particles...
1401 
1402 // Get momentum bin
1403  G4double p = aParticle->GetTotalMomentum()/GeV;
1404 
1405  // G4int j = TSIZE - 1;
1406  // for (G4int i = 2; i <= TSIZE; i++) {
1407  // if (p < plab[i]) {
1408  // j = i - 1;
1409  // break;
1410  // }
1411  // }
1412  // j = j - 1; // For array indexing
1413 
1414  G4int je1 = 0;
1415  G4int je2 = TSIZE - 1;
1416  do {
1417  G4int midBin = (je1 + je2)/2;
1418  if (p < plab[midBin])
1419  je2 = midBin;
1420  else
1421  je1 = midBin;
1422  } while (je2 - je1 > 1);
1423 
1424  G4int ipart1 = ipart - 1; // For array indexing
1425 
1426 // Get cross sections for scattering on free protons
1427  dx = plab[je2] - plab[je1];
1428 // Elastic cross section
1429  dy = csel[ipart1][je2] - csel[ipart1][je1];
1430  rc = dy/dx;
1431  b = csel[ipart1][je1] - rc*plab[je1];
1432  sigel = rc*p + b;
1433 // Inelastic cross section
1434  dy = csin[ipart1][je2] - csin[ipart1][je1];
1435  rc = dy/dx;
1436  b = csin[ipart1][je1] - rc*plab[je1];
1437  sigin = rc*p + b;
1438  if (verboseLevel > 1) {
1439  G4cout << "sigel " << sigel << G4endl;
1440  G4cout << "sigin " << sigin << G4endl;
1441  }
1442  G4double alph = alpha[ipart1];
1443  if (ipart < 14) {
1444  dy = alphac[je2] - alphac[je1];
1445  rc = dy/dx;
1446  b = alphac[je1] - rc*plab[je1];
1447  G4double corfac = rc*p + b;
1448  alph = alph*corfac;
1449  G4int ipart3 = ipart2[ipart - 7];
1450  ipart3 = ipart3 - 1; // For array indexing
1451  // Elastic cross section
1452  dy = csel[ipart3][je2] - csel[ipart3][je1];
1453  rc = dy/dx;
1454  b = csel[ipart3][je1] - rc*plab[je1];
1455  xsecel = rc*p + b;
1456  // Inelastic cross section
1457  dy = csin[ipart3][je2] - csin[ipart3][je1];
1458  rc = dy/dx;
1459  b = csin[ipart3][je1] - rc*plab[je1];
1460  xsecin = rc*p + b;
1461  }
1462 
1463 // A-dependence from parameterization...
1464 
1465  if (AA >= 2) {
1466 
1467  crel = 1.;
1468  crin = 1.;
1469 
1470  G4int i = 2;
1471  if (AA < 50) i = 1;
1472  else if (AA > 100) i = 3;
1473 
1474 // Protons and neutrons
1475  if (ipart == 14 || ipart == 16) {
1476  dy = cspnel[i - 1][je2] - cspnel[i - 1][je1];
1477  rc = dy/dx;
1478  b = cspnel[i - 1][je1] - rc*plab[je1];
1479  xsecel = rc*p + b;
1480  dy = cspnin[i - 1][je2] - cspnin[i - 1][je1];
1481  rc = dy/dx;
1482  b = cspnin[i - 1][je1] - rc*plab[je1];
1483  xsecin = rc*p + b;
1484  // The following is a first-order correction to Gheisha (GHESIG)
1485  // behaviour, where for the lighter elements the inelastic cross
1486  // section is not realistic for particles in the first momentum
1487  // bin. In the first momentum bin, it better to interpolate
1488  // in K.E. Subject to further improvements.
1489  if (correctInelasticNearZero && je1 == 0 && i <= 3) {
1490  G4double m0 = aParticle->GetMass()/GeV;
1491  G4double T = std::sqrt(m0*m0 + p*p) - m0;
1492  dx = std::sqrt(m0*m0 + plab[1]*plab[1]) - m0;
1493  rc = dy/dx;
1494  xsecin = rc*T + b;
1495  }
1496 
1497  if (sigel >= 0.001)
1498  crel = xsecel/(0.36*sigel*G4Pow::GetInstance()->powA(G4double(csa[i]), 1.17));
1499  sigtot = sigel + sigin;
1500  if (sigtot >= 0.001)
1501  crin = xsecin/(sigtot*G4Pow::GetInstance()->powA(G4double(csa[i]), alph));
1502  }
1503 
1504  else if (ipart < 15) {
1505 // Calculate correction factors (crel, crin) from values
1506 // on Al, Cu, Pb. Note that data is only available for pions and protons.
1507  G4double wgch = 0.5;
1508  if (AA < 20) { wgch = 0.5 + 0.5*G4Exp(-G4double(AA - 1)); }
1509  sigel = wgch*sigel + (1. - wgch)*xsecel;
1510  sigin = wgch*sigin + (1. - wgch)*xsecin;
1511 
1512 // This section not for kaons
1513  if (ipart < 10) {
1514  dy = cspiel[i - 1][je2] - cspiel[i - 1][je1];
1515  rc = dy/dx;
1516  b = cspiel[i - 1][je1] - rc*plab[je1];
1517  xspiel = rc*p + b;
1518  dy = cspiin[i - 1][je2] - cspiin[i - 1][je1];
1519  rc = dy/dx;
1520  b = cspiin[i - 1][je1] - rc*plab[je1];
1521  xspiin = rc*p + b;
1522  if (verboseLevel > 1) {
1523  G4cout << "xspiel " << xspiel << G4endl;
1524  G4cout << "xspiin " << xspiin << G4endl;
1525  }
1526  if (sigel >= 0.001)
1527  crel = xspiel/(0.36*sigel*G4Pow::GetInstance()->powA(G4double(csa[i]),1.17));
1528  sigtot = sigel + sigin;
1529  if (sigtot >= 0.001)
1530  crin = xspiin/(sigtot*G4Pow::GetInstance()->powA(G4double(csa[i]), alph));
1531  }
1532  }
1533 
1534 // Apply correction factors
1535  sigin = crin*(sigin + sigel)*g4pow->powZ(AA, alph);
1536  sigel = crel*0.36*sigel*g4pow->powZ(AA, 1.17);
1537  sigel = sigel*partel[ipart1];
1538  sigin = sigin*partin[ipart1];
1539  }
1540 
1541 // Correction factor for high (p > 100 GeV/c) energies:
1542  G4double corh = 1.;
1543  if (p > 100.) corh = 0.1085736156*G4Log(p) + 0.5;
1544 
1545  sigel = corh*sigel;
1546  sigin = corh*sigin;
1547  // Convert cross section from mb to default units
1548  sigelastic = sigel*millibarn;
1549  siginelastic = sigin*millibarn;
1550 
1551  return;
1552 }
G4int GetParticleCode(const G4DynamicParticle *)
G4ParticleDefinition * prevParticleDefinition
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
static const G4float cspiin[3][TSIZE]
G4double GetMass() const
static const G4float cnlwat[NCNLW]
static const G4float partel[35]
static const double MeV
Definition: G4SIunits.hh:211
static const G4float partin[35]
static const G4float csin[NPARTS][TSIZE]
static const G4float csel[NPARTS][TSIZE]
static const G4float cspnel[3][TSIZE]
static const G4float cspiel[3][TSIZE]
Int_t ipart
static const G4float cnlwel[NCNLW][NELAB]
G4double GetTotalMomentum() const
static const G4float plab[TSIZE]
int G4int
Definition: G4Types.hh:78
G4double powZ(G4int Z, G4double y) const
Definition: G4Pow.hh:254
G4double GetKineticEnergy() const
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
static const G4float alpha[NPARTS]
static const G4float alphac[TSIZE]
static const double GeV
Definition: G4SIunits.hh:214
G4double G4Log(G4double x)
Definition: G4Log.hh:230
G4double Z13(G4int Z) const
Definition: G4Pow.hh:127
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
static const G4float elab[NELAB]
static const G4float cnlwin[NCNLW][NELAB]
static const double millibarn
Definition: G4SIunits.hh:105
static const G4float csa[4]
G4ParticleDefinition * GetDefinition() const
#define G4endl
Definition: G4ios.hh:61
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
static const G4int ipart2[7]
double G4double
Definition: G4Types.hh:76
static const G4float cspnin[3][TSIZE]
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetCaptureCrossSection()

G4double G4HadronCrossSections::GetCaptureCrossSection ( const G4DynamicParticle aParticle,
G4int  ZZ 
)

Definition at line 1556 of file G4HadronCrossSections.cc.

1558 {
1559  if (GetParticleCode(aParticle) != 16) return 0.;
1560  G4double ek = aParticle->GetKineticEnergy()/GeV;
1561  if (ek > 0.0327) { return 0.; }
1562 
1563  G4double ekx = std::max(ek, 1.e-9);
1564  if (ekx != lastEkx) {
1565  lastEkx = ekx;
1566  lastEkxPower = G4Pow::GetInstance()->powA(ekx*1.e6, 0.577);
1567  }
1568 
1569  G4int izno = ZZ;
1570  if (izno > 100) izno = 100; // Not in GHESIG
1571  izno = izno - 1; // For array indexing
1572  G4double sigcap = 11.12*cscap[izno]/lastEkxPower;
1573 
1574  // Convert cross section from mb to default units
1575  sigcap = sigcap*millibarn;
1576  return sigcap;
1577 }
G4int GetParticleCode(const G4DynamicParticle *)
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
int G4int
Definition: G4Types.hh:78
G4double GetKineticEnergy() const
static const double GeV
Definition: G4SIunits.hh:214
static const G4float cscap[100]
static const double millibarn
Definition: G4SIunits.hh:105
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetElasticCrossSection()

G4double G4HadronCrossSections::GetElasticCrossSection ( const G4DynamicParticle particle,
G4int  ZZ,
G4int  AA 
)

Definition at line 1260 of file G4HadronCrossSections.cc.

1262 {
1263  if (particle->GetDefinition() != prevParticleDefinition ||
1264  particle->GetKineticEnergy() != prevKineticEnergy ||
1265  ZZ != prevZZ || AA != prevAA)
1266  { CalcScatteringCrossSections(particle, ZZ, AA); }
1267 
1268  if (verboseLevel > 1) {
1269  G4cout << " x-section elastic(mb)= "
1270  << sigelastic/millibarn << G4endl;
1271  }
1272  return sigelastic;
1273 }
G4ParticleDefinition * prevParticleDefinition
void CalcScatteringCrossSections(const G4DynamicParticle *, G4int, G4int)
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
static const double millibarn
Definition: G4SIunits.hh:105
G4ParticleDefinition * GetDefinition() const
#define G4endl
Definition: G4ios.hh:61
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetFissionCrossSection()

G4double G4HadronCrossSections::GetFissionCrossSection ( const G4DynamicParticle aParticle,
G4int  ZZ,
G4int  AA 
)

Definition at line 1581 of file G4HadronCrossSections.cc.

1583 {
1584  if (AA < 230) return 0;
1585 
1586  G4double ek = aParticle->GetKineticEnergy()/GeV;
1587 
1588  G4int ie1 = 0;
1589  G4int ie2 = NFISS - 1;
1590  do {
1591  G4int midBin = (ie1 + ie2)/2;
1592  if (ek < ekfiss[midBin])
1593  ie2 = midBin;
1594  else
1595  ie1 = midBin;
1596  } while (ie2 - ie1 > 1);
1597  G4int i = ie2;
1598  if (ek < ekfiss[0]) i = 0;
1599 
1600  G4int j = 4;
1601  if (ek <= 0.01) {
1602  if (ZZ == 92 && AA == 233) j = 1;
1603  else if (ZZ == 92 && AA == 235) j = 2;
1604  else if (ZZ == 94 && AA == 239) j = 3;
1605  }
1606 
1607  G4double z43ba;
1608  if (j == 4) {
1609  z43ba = ZZ*g4pow->Z13(ZZ)/G4double(AA);
1610  z43ba = std::max(-67. + 38.7*z43ba, 0.);
1611  } else {
1612  z43ba = 1.;
1613  }
1614  j = j - 1; // For array indexing
1615 
1616  G4double sigfiss = csfiss[j][i]*z43ba;
1617  sigfiss = sigfiss*millibarn;
1618  return sigfiss;
1619 }
static const G4float csfiss[4][NFISS]
int G4int
Definition: G4Types.hh:78
G4double GetKineticEnergy() const
static const double GeV
Definition: G4SIunits.hh:214
G4double Z13(G4int Z) const
Definition: G4Pow.hh:127
static const double millibarn
Definition: G4SIunits.hh:105
static const G4float ekfiss[NFISS]
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:

◆ GetInelasticCrossSection()

G4double G4HadronCrossSections::GetInelasticCrossSection ( const G4DynamicParticle particle,
G4int  ZZ,
G4int  AA 
)

Definition at line 1243 of file G4HadronCrossSections.cc.

1245 {
1246  if (particle->GetDefinition() != prevParticleDefinition ||
1247  particle->GetKineticEnergy() != prevKineticEnergy ||
1248  ZZ != prevZZ || AA != prevAA)
1249  { CalcScatteringCrossSections(particle, ZZ, AA); }
1250  if (verboseLevel > 1) {
1251  G4cout << " x-section inelastic(mb)= "
1252  << siginelastic/millibarn << G4endl;
1253  }
1254 
1255  return siginelastic;
1256 }
G4ParticleDefinition * prevParticleDefinition
void CalcScatteringCrossSections(const G4DynamicParticle *, G4int, G4int)
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
static const double millibarn
Definition: G4SIunits.hh:105
G4ParticleDefinition * GetDefinition() const
#define G4endl
Definition: G4ios.hh:61
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetParticleCode()

G4int G4HadronCrossSections::GetParticleCode ( const G4DynamicParticle aParticle)
private

Definition at line 1623 of file G4HadronCrossSections.cc.

1624 {
1625  // Returns GHEISHA code for particle
1626  // Case entries ordered by estimated frequency
1627 
1628  G4int ipart = 0;
1629 
1630  switch( aParticle->GetPDGcode()) {
1631  case 111:
1632  ipart = 8; // pi0
1633  break;
1634  case 211:
1635  ipart = 7; // pi+
1636  break;
1637  case -211:
1638  ipart = 9; // pi-
1639  break;
1640  case 2112:
1641  ipart = 16; // neutron
1642  break;
1643  case 2212:
1644  ipart = 14; // proton
1645  break;
1646  case 321:
1647  ipart = 10; // K+
1648  break;
1649  case -321:
1650  ipart = 13; // K-
1651  break;
1652  case 130:
1653  ipart = 12; // K0L
1654  break;
1655  case 310:
1656  ipart = 11; // K0S
1657  break;
1658  case 1000010020:
1659  ipart = 30; // deuteron
1660  break;
1661  case 1000010030:
1662  ipart = 31; // triton
1663  break;
1664  case 1000020040:
1665  ipart = 32; // alpha
1666  break;
1667  case 3122:
1668  ipart = 18; // lambda
1669  break;
1670  case -2112:
1671  ipart = 17; // anti-neutron
1672  break;
1673  case -2212:
1674  ipart = 15; // anti-proton
1675  break;
1676  case -3122:
1677  ipart = 19; // anti-lambda
1678  break;
1679  case 3222:
1680  ipart = 20; // sigma+
1681  break;
1682  case 3212:
1683  ipart = 21; // sigma0
1684  break;
1685  case 3112:
1686  ipart = 22; // sigma-
1687  break;
1688  case 3322:
1689  ipart = 26; // xi0
1690  break;
1691  case 3312:
1692  ipart = 27; // xi-
1693  break;
1694  case 3334:
1695  ipart = 33; // omega-
1696  break;
1697  case -3222:
1698  ipart = 23; // anti-sigma+
1699  break;
1700  case -3212:
1701  ipart = 24; // anti-sigma0
1702  break;
1703  case -3112:
1704  ipart = 25; // anti-sigma-
1705  break;
1706  case -3322:
1707  ipart = 28; // anti-xi0
1708  break;
1709  case -3312:
1710  ipart = 29; // anti-xi-
1711  break;
1712  case -3334:
1713  ipart = 34; // anti-omega-
1714  break;
1715  /*
1716  default:
1717  throw G4HadronicException(__FILE__, __LINE__,
1718  "G4HadronCrossSections::GetParticleCode: unsupported particle "
1719  + aParticle->GetDefinition()->GetParticleName());
1720  return 0;
1721  */
1722  }
1723 
1724  return ipart;
1725 }
Int_t ipart
int G4int
Definition: G4Types.hh:78
G4int GetPDGcode() const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetVerboseLevel()

G4int G4HadronCrossSections::GetVerboseLevel ( )
inline

Definition at line 93 of file G4HadronCrossSections.hh.

Here is the call graph for this function:

◆ Instance()

G4HadronCrossSections * G4HadronCrossSections::Instance ( void  )
static

Definition at line 1228 of file G4HadronCrossSections.cc.

1229 {
1230  if (!theInstance) {
1231  static G4ThreadLocal G4HadronCrossSections *xsection_G4MT_TLS_ = 0 ; if (!xsection_G4MT_TLS_) xsection_G4MT_TLS_ = new G4HadronCrossSections ; G4HadronCrossSections &xsection = *xsection_G4MT_TLS_;
1232  theInstance = &xsection;
1233  }
1234  return theInstance;
1235 }
#define G4ThreadLocal
Definition: tls.hh:89
static G4ThreadLocal G4HadronCrossSections * theInstance
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsApplicable()

G4bool G4HadronCrossSections::IsApplicable ( const G4DynamicParticle aParticle)

Definition at line 1237 of file G4HadronCrossSections.cc.

1238 {
1239  return (GetParticleCode(aParticle) > 0);
1240 }
G4int GetParticleCode(const G4DynamicParticle *)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetVerboseLevel()

void G4HadronCrossSections::SetVerboseLevel ( G4int  value)
inline

Definition at line 91 of file G4HadronCrossSections.hh.

Member Data Documentation

◆ alpha

const G4float G4HadronCrossSections::alpha
staticprivate
Initial value:
= {
0.7f,0.7f,0.7f,0.7f,0.7f,0.7f,
0.75f,0.75f,0.75f,
0.76f,0.76f,0.76f,0.76f,
0.685f,0.63f,0.685f,0.63f,0.685f,0.63f,
0.685f,0.685f,0.685f,0.63f,0.63f,0.63f,0.685f,0.685f,0.63f,0.63f,
0.7f,0.7f,0.7f,0.685f,0.63f,0.7f
}

Definition at line 140 of file G4HadronCrossSections.hh.

◆ alphac

const G4float G4HadronCrossSections::alphac
staticprivate
Initial value:
= {
1.2f,1.2f,1.2f,1.15f,0.90f,0.91f,0.98f,1.06f,1.10f,1.11f,
1.10f,1.08f,1.05f,1.01f,0.985f,0.962f,0.945f,0.932f,
0.925f,0.920f,0.920f,0.921f,0.922f,0.923f,0.928f,0.931f,
0.940f,0.945f,0.950f,0.955f,0.958f,0.962f,0.965f,0.976f,
0.982f,0.988f,0.992f,1.010f,1.020f,1.030f,1.040f
}

Definition at line 140 of file G4HadronCrossSections.hh.

◆ cnlwat

const G4float G4HadronCrossSections::cnlwat
staticprivate
Initial value:
= {
1.0000f , 16.000f , 27.000f , 56.000f , 59.000f ,
64.000f , 91.000f , 112.00f , 119.00f , 127.00f ,
137.00f , 181.00f , 207.00f , 209.00f , 238.00f
}

Definition at line 134 of file G4HadronCrossSections.hh.

◆ cnlwel

const G4float G4HadronCrossSections::cnlwel
staticprivate

Definition at line 134 of file G4HadronCrossSections.hh.

◆ cnlwin

const G4float G4HadronCrossSections::cnlwin
staticprivate

Definition at line 134 of file G4HadronCrossSections.hh.

◆ correctInelasticNearZero

G4bool G4HadronCrossSections::correctInelasticNearZero
private

Definition at line 115 of file G4HadronCrossSections.hh.

◆ csa

const G4float G4HadronCrossSections::csa = {1.f, 27.00f, 63.54f, 207.19f}
staticprivate

Definition at line 145 of file G4HadronCrossSections.hh.

◆ cscap

const G4float G4HadronCrossSections::cscap
staticprivate
Initial value:
= {
6.0000f , 5.7000f , 5.5000f , 5.3000f , 5.2000f ,
5.1000f , 5.0000f , 4.9000f , 4.8000f , 4.8000f ,
4.8000f , 4.8000f , 4.8000f , 4.8000f , 4.8000f ,
4.8000f , 4.9000f , 5.0000f , 5.2000f , 5.5000f ,
6.0000f , 6.7000f , 7.5000f , 8.5000f , 10.000f ,
12.000f , 14.500f , 19.000f , 26.500f , 40.000f ,
75.000f , 120.00f , 180.00f , 260.00f , 360.00f ,
330.00f , 60.000f , 7.0000f , 9.5000f , 20.000f ,
75.000f , 140.00f , 250.00f , 360.00f , 480.00f ,
580.00f , 590.00f , 500.00f , 300.00f , 100.00f ,
200.00f , 300.00f , 400.00f , 470.00f , 500.00f ,
430.00f , 100.00f , 20.000f , 22.000f , 40.000f ,
560.00f , 950.00f , 1000.0f , 1000.0f , 1000.0f ,
990.00f , 920.00f , 860.00f , 790.00f , 740.00f ,
650.00f , 600.00f , 540.00f , 470.00f , 440.00f ,
390.00f , 360.00f , 340.00f , 320.00f , 310.00f ,
280.00f , 2.0000f , 2.5000f , 6.0000f , 13.000f ,
38.000f , 65.000f , 140.00f , 280.00f , 300.00f ,
430.00f , 580.00f , 650.00f , 800.00f , 920.00f ,
1100.0f , 1250.0f , 1400.0f , 1550.0f , 1700.0f
}

Definition at line 136 of file G4HadronCrossSections.hh.

◆ csel

const G4float G4HadronCrossSections::csel
staticprivate

Definition at line 124 of file G4HadronCrossSections.hh.

◆ csfiss

const G4float G4HadronCrossSections::csfiss
staticprivate
Initial value:
= {
{2600.0f , 2300.0f , 2300.0f , 2100.0f , 2000.0f ,
1950.0f , 1930.0f , 1900.0f , 1800.0f , 1600.0f ,
2100.0f , 2300.0f , 0.00000f , 0.00000f , 0.00000f ,
0.00000f , 0.00000f , 0.00000f , 0.00000f , 0.00000f ,
0.00000f },
{1850.0f , 1400.0f , 1300.0f , 1150.0f , 1100.0f ,
1200.0f , 1250.0f , 1300.0f , 1250.0f , 1150.0f ,
1600.0f , 1900.0f , 0.00000f , 0.00000f , 0.00000f ,
0.00000f , 0.00000f , 0.00000f , 0.00000f , 0.00000f ,
0.00000f },
{1700.0f , 1650.0f , 1650.0f , 1700.0f , 1700.0f ,
1800.0f , 1900.0f , 2000.0f , 1950.0f , 1800.0f ,
2150.0f , 2450.0f , 0.00000f , 0.00000f , 0.00000f ,
0.00000f , 0.00000f , 0.00000f , 0.00000f , 0.00000f ,
0.00000f },
{0.00000f , 0.00000f , 0.00000f , 0.00000f , 0.00000f ,
0.00000f , 250.00f , 550.00f , 550.00f , 550.00f ,
550.00f , 550.00f , 1000.0f , 1400.0f , 1600.0f ,
1500.0f , 1400.0f , 1300.0f , 1200.0f , 1100.0f ,
1000.0f}
}

Definition at line 138 of file G4HadronCrossSections.hh.

◆ csin

const G4float G4HadronCrossSections::csin
staticprivate

Definition at line 125 of file G4HadronCrossSections.hh.

◆ cspiel

const G4float G4HadronCrossSections::cspiel
staticprivate

Definition at line 127 of file G4HadronCrossSections.hh.

◆ cspiin

const G4float G4HadronCrossSections::cspiin
staticprivate

Definition at line 128 of file G4HadronCrossSections.hh.

◆ cspnel

const G4float G4HadronCrossSections::cspnel
staticprivate

Definition at line 130 of file G4HadronCrossSections.hh.

◆ cspnin

const G4float G4HadronCrossSections::cspnin
staticprivate

Definition at line 131 of file G4HadronCrossSections.hh.

◆ ekfiss

const G4float G4HadronCrossSections::ekfiss
staticprivate
Initial value:
= {
0.10000E-03f, 0.20000E-03f, 0.30000E-03f, 0.50000E-03f, 0.70000E-03f,
0.10000E-02f, 0.15000E-02f, 0.20000E-02f, 0.30000E-02f, 0.50000E-02f,
0.70000E-02f, 0.10000E-01f, 0.15000E-01f, 0.20000E-01f, 0.50000E-01f,
0.10000f , 0.20000f , 0.30000f , 0.40000f , 0.50000f ,
1000.0f
}

Definition at line 138 of file G4HadronCrossSections.hh.

◆ elab

const G4float G4HadronCrossSections::elab
staticprivate
Initial value:
= {
0.10000E-03f, 0.20000E-03f, 0.30000E-03f, 0.40000E-03f, 0.50000E-03f,
0.70000E-03f, 0.10000E-02f, 0.20000E-02f, 0.30000E-02f, 0.40000E-02f,
0.50000E-02f, 0.70000E-02f, 0.10000E-01f, 0.15000E-01f, 0.20000E-01f,
0.25000E-01f, 0.32700E-01f
}

Definition at line 133 of file G4HadronCrossSections.hh.

◆ g4pow

G4Pow* G4HadronCrossSections::g4pow
private

Definition at line 104 of file G4HadronCrossSections.hh.

◆ icorr

const G4int G4HadronCrossSections::icorr
staticprivate
Initial value:
= {
1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,0,1,0,1,1,1,0,0,0,1,1,0,0,1,1,1,1,0,0
}

Definition at line 143 of file G4HadronCrossSections.hh.

◆ intrc

const G4int G4HadronCrossSections::intrc
staticprivate
Initial value:
= {
0,0,0,0,0,0,
1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,0,
1,1,1,1,1,1,1,1,1,1,0
}

Definition at line 143 of file G4HadronCrossSections.hh.

◆ ipart2

const G4int G4HadronCrossSections::ipart2 = {9, 8, 7, 11, 10, 13, 12}
staticprivate

Definition at line 146 of file G4HadronCrossSections.hh.

◆ lastEkx

G4double G4HadronCrossSections::lastEkx
private

Definition at line 113 of file G4HadronCrossSections.hh.

◆ lastEkxPower

G4double G4HadronCrossSections::lastEkxPower
private

Definition at line 113 of file G4HadronCrossSections.hh.

◆ partel

const G4float G4HadronCrossSections::partel
staticprivate
Initial value:
= {
0.f,0.f,0.f,0.f,0.f,0.f,
1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,
1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,
1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f
}

Definition at line 142 of file G4HadronCrossSections.hh.

◆ partin

const G4float G4HadronCrossSections::partin
staticprivate
Initial value:
= {
0.f,0.f,0.f,0.f,0.f,0.f,
1.00f,0.00f,1.05f,1.20f,1.35f,1.30f,1.20f,1.00f,1.30f,
1.00f,1.30f,1.00f,1.30f,1.00f,1.00f,1.00f,1.30f,1.30f,1.30f,
1.00f,1.00f,1.30f,1.30f,1.00f,1.f,1.f,1.f,1.3f,1.f
}

Definition at line 142 of file G4HadronCrossSections.hh.

◆ plab

const G4float G4HadronCrossSections::plab
staticprivate
Initial value:
= {
0.00000f , 0.10000f , 0.15000f , 0.20000f , 0.25000f ,
0.30000f , 0.35000f , 0.40000f , 0.45000f , 0.50000f ,
0.55000f , 0.60000f , 0.65000f , 0.70000f , 0.75000f ,
0.80000f , 0.85000f , 0.90000f , 0.95000f , 1.0000f ,
1.1000f , 1.2000f , 1.3000f , 1.4000f , 1.5000f ,
1.6000f , 1.8000f , 2.0000f , 2.2000f , 2.4000f ,
2.6000f , 2.8000f , 3.0000f , 4.0000f , 5.0000f ,
6.0000f , 8.0000f , 10.000f , 20.000f , 100.00f ,
1000.0f
}

Definition at line 123 of file G4HadronCrossSections.hh.

◆ prevAA

G4int G4HadronCrossSections::prevAA
private

Definition at line 111 of file G4HadronCrossSections.hh.

◆ prevKineticEnergy

G4double G4HadronCrossSections::prevKineticEnergy
private

Definition at line 112 of file G4HadronCrossSections.hh.

◆ prevParticleDefinition

G4ParticleDefinition* G4HadronCrossSections::prevParticleDefinition
private

Definition at line 108 of file G4HadronCrossSections.hh.

◆ prevZZ

G4int G4HadronCrossSections::prevZZ
private

Definition at line 110 of file G4HadronCrossSections.hh.

◆ sigelastic

G4double G4HadronCrossSections::sigelastic
private

Definition at line 106 of file G4HadronCrossSections.hh.

◆ siginelastic

G4double G4HadronCrossSections::siginelastic
private

Definition at line 107 of file G4HadronCrossSections.hh.

◆ theInstance

G4ThreadLocal G4HadronCrossSections * G4HadronCrossSections::theInstance = 0
staticprivate

Definition at line 102 of file G4HadronCrossSections.hh.

◆ verboseLevel

G4int G4HadronCrossSections::verboseLevel
private

Definition at line 117 of file G4HadronCrossSections.hh.


The documentation for this class was generated from the following files: