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
G4INCLNuclearPotentialIsospin.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 G4INCLNuclearPotentialIsospin.cc
40 * \brief Isospin-dependent nuclear potential.
41 *
42 * Provides an isospin-dependent nuclear potential.
43 *
44 * \date 28 February 2011
45 * \author Davide Mancusi
46 */
47
51#include "G4INCLGlobals.hh"
52
53namespace G4INCL {
54
55 namespace NuclearPotential {
56
57 // Constructors
59 : INuclearPotential(A, Z, aPionPotential)
60 {
61 initialize();
62 }
63
64 // Destructor
66
67 void NuclearPotentialIsospin::initialize() {
68 const G4double ZOverA = ((G4double) theZ) / ((G4double) theA);
69
72
73 G4double theFermiMomentum;
75 // Use momentum RMS from tables to define the Fermi momentum for light
76 // nuclei
78 else
79 theFermiMomentum = PhysicalConstants::Pf;
80
81 fermiMomentum[Proton] = theFermiMomentum * Math::pow13(2.*ZOverA);
82 const G4double theProtonFermiEnergy = std::sqrt(fermiMomentum[Proton]*fermiMomentum[Proton] + mp*mp) - mp;
83 fermiEnergy[Proton] = theProtonFermiEnergy;
84 // Use separation energies from the ParticleTable
85 const G4double theProtonSeparationEnergy = ParticleTable::getSeparationEnergy(Proton,theA,theZ);
86 separationEnergy[Proton] = theProtonSeparationEnergy;
87 vProton = theProtonFermiEnergy + theProtonSeparationEnergy;
88
89 fermiMomentum[Neutron] = theFermiMomentum * Math::pow13(2.*(1.-ZOverA));
90 const G4double theNeutronFermiEnergy = std::sqrt(fermiMomentum[Neutron]*fermiMomentum[Neutron] + mn*mn) - mn;
91 fermiEnergy[Neutron] = theNeutronFermiEnergy;
92 // Use separation energies from the ParticleTable
93 const G4double theNeutronSeparationEnergy = ParticleTable::getSeparationEnergy(Neutron,theA,theZ);
94 separationEnergy[Neutron] = theNeutronSeparationEnergy;
95 vNeutron = theNeutronFermiEnergy + theNeutronSeparationEnergy;
96
97 vDeltaPlus = vProton;
98 vDeltaZero = vNeutron;
99 vDeltaPlusPlus = 2.*vDeltaPlus - vDeltaZero;
100 vDeltaMinus = 2.*vDeltaZero - vDeltaPlus;
101
102 separationEnergy[DeltaPlusPlus] = 2.*theProtonSeparationEnergy - theNeutronSeparationEnergy;
103 separationEnergy[DeltaPlus] = theProtonSeparationEnergy;
104 separationEnergy[DeltaZero] = theNeutronSeparationEnergy;
105 separationEnergy[DeltaMinus] = 2.*theNeutronSeparationEnergy - theProtonSeparationEnergy;
106
111 }
112
114
115 switch( particle->getType() )
116 {
117 case Proton:
118 return vProton;
119 break;
120 case Neutron:
121 return vNeutron;
122 break;
123
124 case PiPlus:
125 case PiZero:
126 case PiMinus:
127 return computePionPotentialEnergy(particle);
128 break;
129
130 case DeltaPlusPlus:
131 return vDeltaPlusPlus;
132 break;
133 case DeltaPlus:
134 return vDeltaPlus;
135 break;
136 case DeltaZero:
137 return vDeltaZero;
138 break;
139 case DeltaMinus:
140 return vDeltaMinus;
141 break;
142 case Composite:
143 ERROR("No potential computed for particle of type Cluster.");
144 return 0.0;
145 break;
146 case UnknownParticle:
147 ERROR("Trying to compute potential energy for an unknown particle.");
148 return 0.0;
149 break;
150 }
151
152 ERROR("There is no potential for this type of particle.");
153 return 0.0;
154 }
155
156 }
157}
158
#define ERROR(x)
Isospin- and energy-independent nuclear potential.
Isospin-dependent 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.
NuclearPotentialIsospin(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
G4double pow13(G4double x)
const G4double Pf
Fermi momentum [MeV/c].