Import Geant4 11.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2023-12-08 10:43:34 +01:00
parent dd1f179cda
commit 860a2b92bf
3962 changed files with 139318 additions and 164259 deletions
@@ -50,6 +50,7 @@
#include "G4INCLFinalState.hh"
#include "G4INCLInteractionAvatar.hh"
#include "G4INCLAllocationPool.hh"
#include "G4INCLConfig.hh"
namespace G4INCL {
@@ -89,11 +90,11 @@ namespace G4INCL {
static G4ThreadLocal G4double cutNN;
static G4ThreadLocal G4double cutNNSquared;
static G4ThreadLocal G4double bias;
G4double theCrossSection;
G4bool isParticle1Spectator;
G4bool isParticle2Spectator;
G4bool isElastic;
G4bool isStrangeProduction;
INCL_DECLARE_ALLOCATION_POOL(BinaryCollisionAvatar)
@@ -47,6 +47,9 @@
#include "G4INCLLogger.hh"
#include "G4INCLConfig.hh"
#include "G4INCLRootFinder.hh"
#ifndef INCLXX_IN_GEANT4_MODE
#include "G4INCLGeant4Compat.hh"
#endif
namespace G4INCL {
@@ -255,11 +255,10 @@ namespace G4INCL {
// First compute the current CM position and total momentum
ThreeVector theCMPosition, theTotalMomentum;
// G4double theTotalEnergy = 0.0;
for(ParticleIter p=particles.begin(), e=particles.end(); p!=e; ++p) {
theCMPosition += (*p)->getPosition();
theTotalMomentum += (*p)->getMomentum();
// theTotalEnergy += (*p)->getEnergy();
//theTotalEnergy += (*p)->getEnergy();
}
theCMPosition /= theA;
// assert((unsigned int)theA==particles.size());
@@ -101,8 +101,8 @@ namespace G4INCL {
const G4double reducedMass = particleMass*nucleusMass/(particleMass+nucleusMass);
const G4double kineticEnergyInCM = kineticEnergy * reducedMass / particleMass;
const G4double theMinimumDistance = ( kineticEnergyInCM <= 0.0 ? 0.0 :
PhysicalConstants::eSquared * p.theZ * n->getZ() * particleMass
/ (kineticEnergyInCM * reducedMass) );
PhysicalConstants::eSquared * p.theZ * n->getZ() * particleMass
/ (kineticEnergyInCM * reducedMass) );
INCL_DEBUG("Minimum distance of approach due to Coulomb = " << theMinimumDistance << '\n');
return theMinimumDistance;
}
@@ -54,8 +54,8 @@ namespace G4INCL {
G4double piNToEtaN(Particle const * const p1, Particle const * const p2);
G4double piNToOmegaN(Particle const * const p1, Particle const * const p2);
G4double piNToEtaPrimeN(Particle const * const p1, Particle const * const p2);
G4double etaNToPiN(Particle const * const p1, Particle const * const p2);
G4double etaNToPiPiN(Particle const * const p1, Particle const * const p2);
G4double etaNToPiN(Particle const * const p1, Particle const * const p2);
G4double etaNToPiPiN(Particle const * const p1, Particle const * const p2);
G4double omegaNToPiN(Particle const * const p1, Particle const * const p2);
G4double omegaNToPiPiN(Particle const * const p1, Particle const * const p2);
G4double etaPrimeNToPiN(Particle const * const p1, Particle const * const p2);
@@ -78,39 +78,54 @@ namespace G4INCL {
G4double NNToNSK2pi(Particle const * const p1, Particle const * const p2);
G4double NNToNNKKb(Particle const * const p1, Particle const * const p2);
G4double NNToMissingStrangeness(Particle const * const p1, Particle const * const p2);
G4double NDeltaToNLK(Particle const * const p1, Particle const * const p2);
G4double NDeltaToNSK(Particle const * const p1, Particle const * const p2);
G4double NDeltaToDeltaLK(Particle const * const p1, Particle const * const p2);
G4double NDeltaToDeltaSK(Particle const * const p1, Particle const * const p2);
G4double NDeltaToNNKKb(Particle const * const p1, Particle const * const p2);
G4double NDeltaToNLK(Particle const * const p1, Particle const * const p2);
G4double NDeltaToNSK(Particle const * const p1, Particle const * const p2);
G4double NDeltaToDeltaLK(Particle const * const p1, Particle const * const p2);
G4double NDeltaToDeltaSK(Particle const * const p1, Particle const * const p2);
G4double NDeltaToNNKKb(Particle const * const p1, Particle const * const p2);
G4double NpiToLK(Particle const * const p1, Particle const * const p2);
G4double NpiToSK(Particle const * const p1, Particle const * const p2);
G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2);
G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2);
G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2);
G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2);
G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2);
G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2);
G4double NpiToLKpi(Particle const * const p1, Particle const * const p2);
G4double NpiToSKpi(Particle const * const p1, Particle const * const p2);
G4double NpiToLK2pi(Particle const * const p1, Particle const * const p2);
G4double NpiToSK2pi(Particle const * const p1, Particle const * const p2);
G4double NpiToNKKb(Particle const * const p1, Particle const * const p2);
G4double NpiToMissingStrangeness(Particle const * const p1, Particle const * const p2);
G4double NLToNS(Particle const * const p1, Particle const * const p2);
G4double NSToNL(Particle const * const p1, Particle const * const p2);
G4double NSToNS(Particle const * const p1, Particle const * const p2);
G4double NLToNS(Particle const * const p1, Particle const * const p2);
G4double NSToNL(Particle const * const p1, Particle const * const p2);
G4double NSToNS(Particle const * const p1, Particle const * const p2);
G4double NKToNK(Particle const * const p1, Particle const * const p2);
G4double NKToNKpi(Particle const * const p1, Particle const * const p2);
G4double NKToNK2pi(Particle const * const p1, Particle const * const p2);
G4double NKbToNKb(Particle const * const p1, Particle const * const p2);
G4double NKbToSpi(Particle const * const p1, Particle const * const p2);
G4double NKbToLpi(Particle const * const p1, Particle const * const p2);
G4double NKbToS2pi(Particle const * const p1, Particle const * const p2);
G4double NKbToL2pi(Particle const * const p1, Particle const * const p2);
G4double NKbToNKbpi(Particle const * const p1, Particle const * const p2);
G4double NKbToNKb2pi(Particle const * const p1, Particle const * const p2);
G4double NKbToNKb(Particle const * const p1, Particle const * const p2);
G4double NKbToSpi(Particle const * const p1, Particle const * const p2);
G4double NKbToLpi(Particle const * const p1, Particle const * const p2);
G4double NKbToS2pi(Particle const * const p1, Particle const * const p2);
G4double NKbToL2pi(Particle const * const p1, Particle const * const p2);
G4double NKbToNKbpi(Particle const * const p1, Particle const * const p2);
G4double NKbToNKb2pi(Particle const * const p1, Particle const * const p2);
G4double NYelastic(Particle const * const p1, Particle const * const p2);
G4double NKbelastic(Particle const * const p1, Particle const * const p2);
G4double NKelastic(Particle const * const p1, Particle const * const p2);
/// \brief antiparticle cross sections
/// \brief Nucleon-AntiNucleon to Baryon-AntiBaryon cross sections
G4double NNbarElastic(Particle const* const p1, Particle const* const p2);
G4double NNbarCEX(Particle const* const p1, Particle const* const p2);
G4double NNbarToLLbar(Particle const * const p1, Particle const * const p2);
/// \brief Nucleon-AntiNucleon to Nucleon-AntiNucleon + pions cross sections
G4double NNbarToNNbarpi(Particle const* const p1, Particle const* const p2);
G4double NNbarToNNbar2pi(Particle const* const p1, Particle const* const p2);
G4double NNbarToNNbar3pi(Particle const* const p1, Particle const* const p2);
/// \brief Nucleon-AntiNucleon total annihilation cross sections
G4double NNbarToAnnihilation(Particle const* const p1, Particle const* const p2);
/** \brief Calculate the slope of the NN DDXS.
*
* \param energyCM energy in the CM frame, in MeV
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// INCL++ intra-nuclear cascade model
// Alain Boudard, CEA-Saclay, France
// Joseph Cugnon, University of Liege, Belgium
// Jean-Christophe David, CEA-Saclay, France
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
// Sylvie Leray, CEA-Saclay, France
// Davide Mancusi, CEA-Saclay, France
//
#define INCLXX_IN_GEANT4_MODE 1
#include "globals.hh"
/** \file G4INCLCrossSectionsAntiparticles.hh
* \brief Multipion, mesonic Resonances, strange cross sections and antinucleon as projectile
*
* \date 31st March 2023
* \author Demid Zharenov
*/
#ifndef G4INCLCROSSSECTIONSANTIPARTICLES_HH
#define G4INCLCROSSSECTIONSANTIPARTICLES_HH
#include "G4INCLCrossSectionsStrangeness.hh"
#include "G4INCLConfig.hh"
//#include <limits>
namespace G4INCL {
/// \brief Multipion, mesonic Resonances and strange cross sections
// class CrossSectionsAntiparticles : public CrossSectionsMultiPionsAndResonances {
class CrossSectionsAntiparticles : public CrossSectionsStrangeness {
public:
CrossSectionsAntiparticles();
/// \brief second new total particle-particle cross section
virtual G4double total(Particle const * const p1, Particle const * const p2);
/// \brief old elastic particle-particle cross section
virtual G4double elastic(Particle const * const p1, Particle const * const p2);
/// \brief Nucleon-AntiNucleon to Nucleon-AntiNucleon cross sections
virtual G4double NNbarElastic(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarCEX(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarToLLbar(Particle const * const p1, Particle const * const p2);
/// \brief Nucleon-AntiNucleon to Nucleon-AntiNucleon + pions cross sections
virtual G4double NNbarToNNbarpi(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarToNNbar2pi(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarToNNbar3pi(Particle const* const p1, Particle const* const p2);
/// \brief Nucleon-AntiNucleon total annihilation cross sections
virtual G4double NNbarToAnnihilation(Particle const* const p1, Particle const* const p2);
protected:
/// \brief Maximum number of outgoing pions in NN collisions
static const G4int nMaxPiNN;
/// \brief Maximum number of outgoing pions in piN collisions
static const G4int nMaxPiPiN;
/// \brief Horner coefficients for s11pz
const HornerC7 s11pzHC;
/// \brief Horner coefficients for s01pp
const HornerC8 s01ppHC;
/// \brief Horner coefficients for s01pz
const HornerC4 s01pzHC;
/// \brief Horner coefficients for s11pm
const HornerC4 s11pmHC;
/// \brief Horner coefficients for s12pm
const HornerC5 s12pmHC;
/// \brief Horner coefficients for s12pp
const HornerC3 s12ppHC;
/// \brief Horner coefficients for s12zz
const HornerC4 s12zzHC;
/// \brief Horner coefficients for s02pz
const HornerC4 s02pzHC;
/// \brief Horner coefficients for s02pm
const HornerC6 s02pmHC;
/// \brief Horner coefficients for s12mz
const HornerC4 s12mzHC;
};
}
#endif
@@ -84,21 +84,21 @@ namespace G4INCL {
virtual G4double omegaNToPiN(Particle const * const p1, Particle const * const p2);
virtual G4double etaPrimeNToPiN(Particle const * const p1, Particle const * const p2);
/// \brief Cross sections for mesonic resonance absorption on nucleon - pipiN Channel
/// \brief Cross sections for mesonic resonance absorption on nucleon - pipiN Channel
virtual G4double etaNToPiPiN(Particle const * const p1, Particle const * const p2);
virtual G4double omegaNToPiPiN(Particle const * const p1, Particle const * const p2);
/// \brief Cross section for Eta production - NN entrance channel
virtual G4double NNToNNEta(Particle const * const p1, Particle const * const p2);
/// \brief Cross section for Eta production (exclusive) - NN entrance channel
virtual G4double NNToNNEtaExclu(Particle const * const p1, Particle const * const p2);
/// \brief Cross section for Eta production (exclusive) - NN entrance channel
virtual G4double NNToNNEtaExclu(Particle const * const p1, Particle const * const p2);
/// \brief Cross section for X pion production - NNEta Channel
virtual G4double NNToNNEtaxPi(const G4int xpi, Particle const * const p1, Particle const * const p2);
/// \brief Cross section for X pion production - NNEta Channel
virtual G4double NNToNNEtaxPi(const G4int xpi, Particle const * const p1, Particle const * const p2);
/// \brief Cross section for N-Delta-Eta production - NNEta Channel
virtual G4double NNToNDeltaEta(Particle const * const p1, Particle const * const p2);
/// \brief Cross section for N-Delta-Eta production - NNEta Channel
virtual G4double NNToNDeltaEta(Particle const * const p1, Particle const * const p2);
/// \brief elastic scattering for Nucleon-Strange Particles cross sections
@@ -127,9 +127,9 @@ namespace G4INCL {
/// \brief Nucleon-Pion to Stange particles cross sections
virtual G4double NpiToLK(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToSK(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2);
virtual G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2);
virtual G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToLKpi(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToSKpi(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToLK2pi(Particle const * const p1, Particle const * const p2);
@@ -167,6 +167,21 @@ namespace G4INCL {
/// \brief Cross section for N-Delta-Eta production - NNEta Channel
virtual G4double NNToNDeltaOmega(Particle const * const p1, Particle const * const p2);
/// \brief antiparticle cross sections
/// \brief Nucleon-AntiNucleon to Baryon-AntiBaryon cross sections
virtual G4double NNbarElastic(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarCEX(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarToLLbar(Particle const * const p1, Particle const * const p2);
/// \brief Nucleon-AntiNucleon to Nucleon-AntiNucleon + pions cross sections
virtual G4double NNbarToNNbarpi(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarToNNbar2pi(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarToNNbar3pi(Particle const* const p1, Particle const* const p2);
/// \brief Nucleon-AntiNucleon total annihilation cross sections
virtual G4double NNbarToAnnihilation(Particle const* const p1, Particle const* const p2);
/** \brief Calculate the slope of the NN DDXS.
*
@@ -90,7 +90,7 @@ namespace G4INCL {
virtual G4double piNToOmegaN(Particle const * const p1, Particle const * const p2);
virtual G4double piNToEtaPrimeN(Particle const * const p1, Particle const * const p2);
/// \brief Cross sections for mesonic resonance absorption on nucleon - pipiN Channel
/// \brief Cross sections for mesonic resonance absorption on nucleon - pipiN Channel
virtual G4double etaNToPiPiN(Particle const * const p1, Particle const * const p2);
virtual G4double omegaNToPiPiN(Particle const * const p1, Particle const * const p2);
@@ -99,17 +99,17 @@ namespace G4INCL {
virtual G4double omegaNToPiN(Particle const * const p1, Particle const * const p2);
virtual G4double etaPrimeNToPiN(Particle const * const p1, Particle const * const p2);
/// \brief Cross section for Eta production - NN entrance channel
/// \brief Cross section for Eta production - NN entrance channel
virtual G4double NNToNNEta(Particle const * const particle1, Particle const * const particle2);
/// \brief Cross section for Eta production (exclusive) - NN entrance channel
virtual G4double NNToNNEtaExclu(Particle const * const particle1, Particle const * const particle2);
/// \brief Cross section for Eta production (exclusive) - NN entrance channel
virtual G4double NNToNNEtaExclu(Particle const * const particle1, Particle const * const particle2);
/// \brief Cross section for X pion production - NNEta Channel
virtual G4double NNToNNEtaxPi(const G4int xpi, Particle const * const p1, Particle const * const p2);
/// \brief Cross section for X pion production - NNEta Channel
virtual G4double NNToNNEtaxPi(const G4int xpi, Particle const * const p1, Particle const * const p2);
/// \brief Cross section for N-Delta-Eta production - NNEta Channel
virtual G4double NNToNDeltaEta(Particle const * const p1, Particle const * const p2);
/// \brief Cross section for N-Delta-Eta production - NNEta Channel
virtual G4double NNToNDeltaEta(Particle const * const p1, Particle const * const p2);
/// \brief Cross section for Eta production - NN entrance channel
virtual G4double NNToNNOmega(Particle const * const particle1, Particle const * const particle2);
@@ -151,9 +151,9 @@ namespace G4INCL {
/// \brief Nucleon-Pion to Stange particles cross sections
virtual G4double NpiToLK(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToSK(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2);
virtual G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2);
virtual G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToLKpi(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToSKpi(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToLK2pi(Particle const * const p1, Particle const * const p2);
@@ -180,7 +180,21 @@ namespace G4INCL {
virtual G4double NKbToL2pi(Particle const * const p1, Particle const * const p2);
virtual G4double NKbToNKbpi(Particle const * const p1, Particle const * const p2);
virtual G4double NKbToNKb2pi(Particle const * const p1, Particle const * const p2);
/// \brief antiparticle cross sections
/// \brief Nucleon-AntiNucleon to Baryon-AntiBaryon cross sections
virtual G4double NNbarElastic(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarCEX(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarToLLbar(Particle const * const p1, Particle const * const p2);
/// \brief Nucleon-AntiNucleon to Nucleon-AntiNucleon + pions cross sections
virtual G4double NNbarToNNbarpi(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarToNNbar2pi(Particle const* const p1, Particle const* const p2);
virtual G4double NNbarToNNbar3pi(Particle const* const p1, Particle const* const p2);
/// \brief Nucleon-AntiNucleon total annihilation cross sections
virtual G4double NNbarToAnnihilation(Particle const* const p1, Particle const* const p2);
protected:
/// \brief Maximum number of outgoing pions in NN collisions
@@ -92,12 +92,12 @@ namespace G4INCL {
/// \brief Nucleon-Pion to Stange particles cross sections
virtual G4double NpiToLK(Particle const * const p1, Particle const * const p2);
G4double p_pimToLK0(Particle const * const p1, Particle const * const p2);
G4double p_pimToLK0(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToSK(Particle const * const p1, Particle const * const p2);
G4double p_pipToSpKp(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2);
virtual G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2);
G4double p_pipToSpKp(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2);
virtual G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2);
virtual G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToLKpi(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToSKpi(Particle const * const p1, Particle const * const p2);
virtual G4double NpiToLK2pi(Particle const * const p1, Particle const * const p2);
@@ -120,14 +120,13 @@ namespace G4INCL {
virtual G4double NKbToNKb(Particle const * const p1, Particle const * const p2);
virtual G4double NKbToSpi(Particle const * const p1, Particle const * const p2);
virtual G4double NKbToLpi(Particle const * const p1, Particle const * const p2);
virtual G4double p_kmToL_pz(Particle const * const p1, Particle const * const p2);
virtual G4double p_kmToL_pz(Particle const * const p1, Particle const * const p2);
virtual G4double NKbToS2pi(Particle const * const p1, Particle const * const p2);
virtual G4double NKbToL2pi(Particle const * const p1, Particle const * const p2);
virtual G4double p_kmToL_pp_pm(Particle const * const p1, Particle const * const p2);
virtual G4double p_kmToL_pp_pm(Particle const * const p1, Particle const * const p2);
virtual G4double NKbToNKbpi(Particle const * const p1, Particle const * const p2);
virtual G4double NKbToNKb2pi(Particle const * const p1, Particle const * const p2);
protected:
/// \brief Maximum number of outgoing pions in NN collisions
static const G4int nMaxPiNN;
@@ -75,22 +75,22 @@ namespace G4INCL {
/// \brief Cross section for piN->piNpi
virtual G4double piNToxPiN(const G4int xpi, Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for PiN->EtaN
virtual G4double piNToEtaN(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for PiN->OmegaN
virtual G4double piNToOmegaN(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for PiN->EtaPrimeN
virtual G4double piNToEtaPrimeN(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for EtaN->PiN
virtual G4double etaNToPiN(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for EtaN->PiPiN
virtual G4double etaNToPiPiN(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for EtaN->PiN
virtual G4double etaNToPiN(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for EtaN->PiPiN
virtual G4double etaNToPiPiN(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for OmegaN->PiN
virtual G4double omegaNToPiN(Particle const * const p1, Particle const * const p2) = 0;
@@ -99,28 +99,28 @@ namespace G4INCL {
/// \brief Cross section for EtaPrimeN->PiN
virtual G4double etaPrimeNToPiN(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for NN->NNEta (inclusive)
virtual G4double NNToNNEta(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for NN->NNEta (exclusive)
virtual G4double NNToNNEtaExclu(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for NN->NNEtaxPi
virtual G4double NNToNNEtaxPi(const G4int xpi, Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for N-Delta-Eta production - NNEta Channel
virtual G4double NNToNDeltaEta(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for NN->NNEta (inclusive)
virtual G4double NNToNNEta(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for NN->NNEta (exclusive)
virtual G4double NNToNNEtaExclu(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for NN->NNEtaxPi
virtual G4double NNToNNEtaxPi(const G4int xpi, Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for N-Delta-Eta production - NNEta Channel
virtual G4double NNToNDeltaEta(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for NN->NNEta (inclusive)
virtual G4double NNToNNOmega(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for NN->NNEta (exclusive)
virtual G4double NNToNNOmegaExclu(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for NN->NNEtaxPi
virtual G4double NNToNNOmegaxPi(const G4int xpi, Particle const * const p1, Particle const * const p2) = 0;
/// \brief Cross section for N-Delta-Eta production - NNEta Channel
virtual G4double NNToNDeltaOmega(Particle const * const p1, Particle const * const p2) = 0;
@@ -148,28 +148,28 @@ namespace G4INCL {
virtual G4double NDeltaToNNKKb(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Nucleon-Pion to Stange particles cross sections
virtual G4double NpiToLK(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToSK(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToLKpi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToSKpi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToLK2pi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToSK2pi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToNKKb(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToMissingStrangeness(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Nucleon-Pion to Stange particles cross sections
virtual G4double NpiToLK(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToSK(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToLKpi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToSKpi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToLK2pi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToSK2pi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToNKKb(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NpiToMissingStrangeness(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Nucleon-Hyperon cross sections
virtual G4double NLToNS(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NSToNL(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NSToNS(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Nucleon-Kaon inelastic cross sections
virtual G4double NKToNK(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NKToNKpi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NKToNK2pi(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Nucleon-Kaon inelastic cross sections
virtual G4double NKToNK(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NKToNKpi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NKToNK2pi(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Nucleon-antiKaon inelastic cross sections
virtual G4double NKbToNKb(Particle const * const p1, Particle const * const p2) = 0;
@@ -179,7 +179,21 @@ namespace G4INCL {
virtual G4double NKbToL2pi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NKbToNKbpi(Particle const * const p1, Particle const * const p2) = 0;
virtual G4double NKbToNKb2pi(Particle const * const p1, Particle const * const p2) = 0;
/// \brief NNbar Particles cross sections
/// \brief Nucleon-AntiNucleon to Baryon-AntiBaryon cross sections
virtual G4double NNbarElastic(Particle const* const p1, Particle const* const p2) = 0;
virtual G4double NNbarCEX(Particle const* const p1, Particle const* const p2) = 0;
virtual G4double NNbarToLLbar(Particle const * const p1, Particle const * const p2) = 0;
/// \brief Nucleon-AntiNucleon to Nucleon-AntiNucleon + pions cross sections
virtual G4double NNbarToNNbarpi(Particle const* const p1, Particle const* const p2) = 0;
virtual G4double NNbarToNNbar2pi(Particle const* const p1, Particle const* const p2) = 0;
virtual G4double NNbarToNNbar3pi(Particle const* const p1, Particle const* const p2) = 0;
/// \brief Nucleon-AntiNucleon total annihilation cross sections
virtual G4double NNbarToAnnihilation(Particle const* const p1, Particle const* const p2) = 0;
/** \brief Calculate the slope of the NN DDXS.
*
@@ -47,6 +47,9 @@ namespace G4INCL {
namespace KinematicsUtils {
G4double fiveParFit(const G4double a, const G4double b, const G4double c, const G4double d, const G4double e, const G4double x);
G4double compute_xs(const std::vector<G4double> coefficients, const G4double pLab);
void transformToLocalEnergyFrame(Nucleus const * const n, Particle * const p);
G4double getLocalEnergy(Nucleus const * const n, Particle * const p);
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// INCL++ intra-nuclear cascade model
// Alain Boudard, CEA-Saclay, France
// Joseph Cugnon, University of Liege, Belgium
// Jean-Christophe David, CEA-Saclay, France
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
// Sylvie Leray, CEA-Saclay, France
// Davide Mancusi, CEA-Saclay, France
//
#define INCLXX_IN_GEANT4_MODE 1
#include "globals.hh"
#ifndef G4INCLNNbarCEXChannel_hh
#define G4INCLNNbarCEXChannel_hh 1
#include "G4INCLParticle.hh"
#include "G4INCLIChannel.hh"
#include "G4INCLFinalState.hh"
#include "G4INCLAllocationPool.hh"
namespace G4INCL {
class NNbarCEXChannel : public IChannel {
public:
NNbarCEXChannel(Particle *, Particle *);
virtual ~NNbarCEXChannel();
void fillFinalState(FinalState *fs);
private:
Particle *particle1, *particle2;
INCL_DECLARE_ALLOCATION_POOL(NNbarCEXChannel);
};
}
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// INCL++ intra-nuclear cascade model
// Alain Boudard, CEA-Saclay, France
// Joseph Cugnon, University of Liege, Belgium
// Jean-Christophe David, CEA-Saclay, France
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
// Sylvie Leray, CEA-Saclay, France
// Davide Mancusi, CEA-Saclay, France
//
#define INCLXX_IN_GEANT4_MODE 1
#include "globals.hh"
#ifndef G4INCLNNbarElasticChannel_hh
#define G4INCLNNbarElasticChannel_hh 1
#include "G4INCLParticle.hh"
#include "G4INCLIChannel.hh"
#include "G4INCLFinalState.hh"
#include "G4INCLAllocationPool.hh"
namespace G4INCL {
class NNbarElasticChannel : public IChannel {
public:
NNbarElasticChannel(Particle *, Particle *);
virtual ~NNbarElasticChannel();
void fillFinalState(FinalState *fs);
private:
Particle *particle1, *particle2;
INCL_DECLARE_ALLOCATION_POOL(NNbarElasticChannel);
};
}
#endif
@@ -0,0 +1,67 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// INCL++ intra-nuclear cascade model
// Alain Boudard, CEA-Saclay, France
// Joseph Cugnon, University of Liege, Belgium
// Jean-Christophe David, CEA-Saclay, France
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
// Sylvie Leray, CEA-Saclay, France
// Davide Mancusi, CEA-Saclay, France
//
#define INCLXX_IN_GEANT4_MODE 1
#include "globals.hh"
#ifndef G4INCLNNbarToAnnihilationChannel_hh
#define G4INCLNNbarToAnnihilationChannel_hh 1
#include "G4INCLParticle.hh"
#include "G4INCLIChannel.hh"
#include "G4INCLFinalState.hh"
#include "G4INCLAllocationPool.hh"
#include "G4INCLNucleus.hh"
namespace G4INCL {
class NNbarToAnnihilationChannel : public IChannel {
public:
NNbarToAnnihilationChannel(Nucleus *, Particle *, Particle *);
virtual ~NNbarToAnnihilationChannel();
G4double read_file(std::string filename, std::vector<G4double>& probabilities, std::vector<std::vector<std::string>>& particle_types);
G4int findStringNumber(G4double rdm, std::vector<G4double> yields);
void fillFinalState(FinalState *fs);
Nucleus *theNucleus;
private:
//Nucleus *theNucleus;
Particle *particle1, *particle2;
INCL_DECLARE_ALLOCATION_POOL(NNbarToAnnihilationChannel);
};
}
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// INCL++ intra-nuclear cascade model
// Alain Boudard, CEA-Saclay, France
// Joseph Cugnon, University of Liege, Belgium
// Jean-Christophe David, CEA-Saclay, France
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
// Sylvie Leray, CEA-Saclay, France
// Davide Mancusi, CEA-Saclay, France
//
#define INCLXX_IN_GEANT4_MODE 1
#include "globals.hh"
#ifndef G4INCLNNbarToLLbarChannel_hh
#define G4INCLNNbarToLLbarChannel_hh 1
#include "G4INCLParticle.hh"
#include "G4INCLIChannel.hh"
#include "G4INCLFinalState.hh"
#include "G4INCLAllocationPool.hh"
namespace G4INCL {
class NNbarToLLbarChannel : public IChannel {
public:
NNbarToLLbarChannel(Particle *, Particle *);
virtual ~NNbarToLLbarChannel();
void fillFinalState(FinalState *fs);
private:
Particle *particle1, *particle2;
INCL_DECLARE_ALLOCATION_POOL(NNbarToLLbarChannel);
};
}
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// INCL++ intra-nuclear cascade model
// Alain Boudard, CEA-Saclay, France
// Joseph Cugnon, University of Liege, Belgium
// Jean-Christophe David, CEA-Saclay, France
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
// Sylvie Leray, CEA-Saclay, France
// Davide Mancusi, CEA-Saclay, France
//
#define INCLXX_IN_GEANT4_MODE 1
#include "globals.hh"
#ifndef G4INCLNNbarToNNbar2piChannel_hh
#define G4INCLNNbarToNNbar2piChannel_hh 1
#include "G4INCLParticle.hh"
#include "G4INCLIChannel.hh"
#include "G4INCLFinalState.hh"
#include "G4INCLAllocationPool.hh"
namespace G4INCL {
class NNbarToNNbar2piChannel : public IChannel {
public:
NNbarToNNbar2piChannel(Particle *, Particle *);
virtual ~NNbarToNNbar2piChannel();
void fillFinalState(FinalState *fs);
private:
Particle *particle1, *particle2;
INCL_DECLARE_ALLOCATION_POOL(NNbarToNNbar2piChannel);
};
}
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// INCL++ intra-nuclear cascade model
// Alain Boudard, CEA-Saclay, France
// Joseph Cugnon, University of Liege, Belgium
// Jean-Christophe David, CEA-Saclay, France
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
// Sylvie Leray, CEA-Saclay, France
// Davide Mancusi, CEA-Saclay, France
//
#define INCLXX_IN_GEANT4_MODE 1
#include "globals.hh"
#ifndef G4INCLNNbarToNNbar3piChannel_hh
#define G4INCLNNbarToNNbar3piChannel_hh 1
#include "G4INCLParticle.hh"
#include "G4INCLIChannel.hh"
#include "G4INCLFinalState.hh"
#include "G4INCLAllocationPool.hh"
namespace G4INCL {
class NNbarToNNbar3piChannel : public IChannel {
public:
NNbarToNNbar3piChannel(Particle *, Particle *);
virtual ~NNbarToNNbar3piChannel();
void fillFinalState(FinalState *fs);
private:
Particle *particle1, *particle2;
INCL_DECLARE_ALLOCATION_POOL(NNbarToNNbar3piChannel);
};
}
#endif
@@ -0,0 +1,61 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// INCL++ intra-nuclear cascade model
// Alain Boudard, CEA-Saclay, France
// Joseph Cugnon, University of Liege, Belgium
// Jean-Christophe David, CEA-Saclay, France
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
// Sylvie Leray, CEA-Saclay, France
// Davide Mancusi, CEA-Saclay, France
//
#define INCLXX_IN_GEANT4_MODE 1
#include "globals.hh"
#ifndef G4INCLNNbarToNNbarpiChannel_hh
#define G4INCLNNbarToNNbarpiChannel_hh 1
#include "G4INCLParticle.hh"
#include "G4INCLIChannel.hh"
#include "G4INCLFinalState.hh"
#include "G4INCLAllocationPool.hh"
namespace G4INCL {
class NNbarToNNbarpiChannel : public IChannel {
public:
NNbarToNNbarpiChannel(Particle *, Particle *);
virtual ~NNbarToNNbarpiChannel();
void fillFinalState(FinalState *fs);
private:
Particle *particle1, *particle2;
INCL_DECLARE_ALLOCATION_POOL(NNbarToNNbarpiChannel);
};
}
#endif
@@ -83,7 +83,7 @@ namespace G4INCL {
*/
G4double getTransmissionRadius(Particle const * const p) const {
const ParticleType t = p->getType();
// assert(t!=Neutron && t!=PiZero && t!=DeltaZero && t!=Eta && t!=Omega && t!=EtaPrime && t!=Photon && t!= Lambda && t!=SigmaZero && t!=KZero && t!=KZeroBar && t!=KShort && t!=KLong); // no neutral particles here
// assert(t!= antiLambda && t!=antiNeutron && t!=Neutron && t!=PiZero && t!=DeltaZero && t!=Eta && t!=Omega && t!=EtaPrime && t!=Photon && t!= Lambda && t!=SigmaZero && t!=KZero && t!=KZeroBar && t!=KShort && t!=KLong); // no neutral particles here
if(t==Composite) {
return transmissionRadius[t] +
ParticleTable::getNuclearRadius(t, p->getA(), p->getZ());
@@ -65,6 +65,7 @@ namespace G4INCL {
G4double vProton, vNeutron;
G4double vDeltaPlusPlus, vDeltaPlus, vDeltaZero, vDeltaMinus;
G4double vSigmaPlus, vSigmaZero, vSigmaMinus, vLambda;
G4double vantiProton;
void initialize();
@@ -62,7 +62,7 @@
namespace G4INCL {
enum AnnihilationType {Def=0, PType, NType}; //D
enum AnnihilationType {Def=0, PType, NType, PTypeInFlight, NTypeInFlight, NbarPTypeInFlight, NbarNTypeInFlight};
class Nucleus : public Cluster {
public:
@@ -75,6 +75,9 @@ namespace G4INCL {
/// \brief Dummy assignment operator to silence Coverity warning
Nucleus &operator=(const Nucleus &rhs);
AnnihilationType getAType() const;
void setAType(AnnihilationType type);
/**
* Call the Cluster method to generate the initial distribution of
* particles. At the beginning all particles are assigned as spectators.
@@ -99,6 +102,9 @@ namespace G4INCL {
theNkaonplusInitial += Math::heaviside(ParticleTable::getIsospin(p->getType()));
theNkaonminusInitial += Math::heaviside(-ParticleTable::getIsospin(p->getType()));
}
if(p->isAntiNucleon()) {
theNantiprotonInitial += Math::heaviside(ParticleTable::getIsospin(p->getType()));
}
if(!p->isTargetSpectator()) theStore->getBook().incrementCascading();
};
@@ -122,6 +128,7 @@ namespace G4INCL {
G4int getNumberOfEnteringNeutrons() const { return theNnInitial; };
G4int getNumberOfEnteringPions() const { return theNpionplusInitial+theNpionminusInitial; };
G4int getNumberOfEnteringKaons() const { return theNkaonplusInitial+theNkaonminusInitial; };
G4int getNumberOfEnteringantiProtons() const { return theNantiprotonInitial; };
/** \brief Outgoing - incoming separation energies.
*
@@ -151,7 +158,9 @@ namespace G4INCL {
case SigmaPlus:
case SigmaZero:
case SigmaMinus:
case antiProton:
case antiProton:
//case antiNeutron:
//case antiLambda:
S += thePotential->getSeparationEnergy(*i);
break;
case Composite:
@@ -170,6 +179,7 @@ namespace G4INCL {
S -= theNkaonplusInitial*thePotential->getSeparationEnergy(KPlus);
S -= theNpionminusInitial*thePotential->getSeparationEnergy(PiMinus);
S -= theNkaonminusInitial*thePotential->getSeparationEnergy(KMinus);
S -= theNantiprotonInitial*thePotential->getSeparationEnergy(antiProton);
return S;
}
@@ -505,6 +515,8 @@ namespace G4INCL {
/// \brief The number of entering kaons
G4int theNkaonplusInitial;
G4int theNkaonminusInitial;
/// \brief The number of entering antiprotons
G4int theNantiprotonInitial;
G4double initialInternalEnergy;
ThreeVector incomingAngularMomentum, incomingMomentum;
@@ -514,14 +526,7 @@ namespace G4INCL {
G4double initialEnergy;
Store *theStore;
G4bool tryCN;
/// \brief The charge number of the projectile
G4int projectileZ;
/// \brief The mass number of the projectile
G4int projectileA;
/// \brief The strangeness number of the projectile
G4int projectileS;
/// \brief The radius of the universe
G4double theUniverseRadius;