Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4INCLNuclearPotentialConstant.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// INCL++ intra-nuclear cascade model
27// Pekka Kaitaniemi, CEA and Helsinki Institute of Physics
28// Davide Mancusi, CEA
29// Alain Boudard, CEA
30// Sylvie Leray, CEA
31// Joseph Cugnon, University of Liege
32//
33// INCL++ revision: v5.1.8
34//
35#define INCLXX_IN_GEANT4_MODE 1
36
37#include "globals.hh"
38
39/** \file G4INCLNuclearPotentialConstant.cc
40 * \brief Isospin- and energy-independent nuclear potential.
41 *
42 * Provides a constant nuclear potential (V0).
43 *
44 * \date 17 January 2011
45 * \author Davide Mancusi
46 */
47
50
51namespace G4INCL {
52
53 namespace NuclearPotential {
54
55 // Constructors
57 : INuclearPotential(A, Z, aPionPotential)
58 {
59 initialize();
60 }
61
62 // Destructor
64 }
65
66 void NuclearPotentialConstant::initialize() {
69
70 G4double theFermiMomentum;
72 // Use momentum RMS from tables to define the Fermi momentum for light
73 // nuclei
75 else
76 theFermiMomentum = PhysicalConstants::Pf;
77
78 fermiMomentum[Proton] = theFermiMomentum;
79 const G4double theProtonFermiEnergy = std::sqrt(theFermiMomentum*theFermiMomentum + mp*mp) - mp;
80 fermiEnergy[Proton] = theProtonFermiEnergy;
81
82 fermiMomentum[Neutron] = theFermiMomentum;
83 const G4double theNeutronFermiEnergy = std::sqrt(theFermiMomentum*theFermiMomentum + mn*mn) - mn;
84 fermiEnergy[Neutron] = theNeutronFermiEnergy;
85
87 fermiEnergy[DeltaPlus] = fermiEnergy.find(Proton)->second;
90
92 separationEnergy[Proton] = theAverageSeparationEnergy;
93 separationEnergy[Neutron] = theAverageSeparationEnergy;
94
95 // Use separation energies from the ParticleTable
96 vNucleon = 0.5*(theProtonFermiEnergy + theNeutronFermiEnergy) + theAverageSeparationEnergy;
97 vDelta = vNucleon;
99 separationEnergy[DeltaPlus] = vDelta - fermiEnergy.find(DeltaPlus)->second;
100 separationEnergy[DeltaZero] = vDelta - fermiEnergy.find(DeltaZero)->second;
101 separationEnergy[DeltaMinus] = vDelta - fermiEnergy.find(DeltaMinus)->second;
102 }
103
105
106 switch( particle->getType() )
107 {
108 case Proton:
109 case Neutron:
110 return vNucleon;
111 break;
112
113 case PiPlus:
114 case PiZero:
115 case PiMinus:
116 return computePionPotentialEnergy(particle);
117 break;
118
119 case DeltaPlusPlus:
120 case DeltaPlus:
121 case DeltaZero:
122 case DeltaMinus:
123 return vDelta;
124 break;
125 case UnknownParticle:
126 ERROR("Trying to compute potential energy of an unknown particle.");
127 return 0.0;
128 break;
129 default:
130 ERROR("Trying to compute potential energy of a malformed particle.");
131 return 0.0;
132 break;
133 }
134 }
135
136 }
137}
138
#define ERROR(x)
Isospin- and energy-independent nuclear potential.
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
G4double computePionPotentialEnergy(const Particle *const p) const
Compute the potential energy for the given pion.
std::map< ParticleType, G4double > fermiMomentum
const G4int theA
The mass number of the nucleus.
std::map< ParticleType, G4double > separationEnergy
std::map< ParticleType, G4double > fermiEnergy
const G4int theZ
The charge number of the nucleus.
NuclearPotentialConstant(const G4int A, const G4int Z, const G4bool pionPotential)
virtual G4double computePotentialEnergy(const Particle *const p) const
static G4double getINCLMass(const G4int A, const G4int Z)
Get INCL nuclear mass (in MeV/c^2)
static G4double getMomentumRMS(const G4int A, const G4int Z)
Return the RMS of the momentum distribution (light clusters)
static SeparationEnergyFn getSeparationEnergy
Static pointer to the separation-energy function.
static const G4int clusterTableZSize
static const G4int clusterTableASize
G4INCL::ParticleType getType() const
const G4double sqrtFiveThirds
const G4double Pf
Fermi momentum [MeV/c].