Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4INCLNuclearDensity.hh
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// Alain Boudard, CEA-Saclay, France
28// Joseph Cugnon, University of Liege, Belgium
29// Jean-Christophe David, CEA-Saclay, France
30// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
31// Sylvie Leray, CEA-Saclay, France
32// Davide Mancusi, CEA-Saclay, France
33//
34#define INCLXX_IN_GEANT4_MODE 1
35
36#include "globals.hh"
37
38#ifndef G4INCLNuclearDensity_hh
39#define G4INCLNuclearDensity_hh 1
40
41#include <vector>
42#include <map>
43// #include <cassert>
44#include "G4INCLThreeVector.hh"
45#include "G4INCLIFunction1D.hh"
46#include "G4INCLParticle.hh"
47#include "G4INCLGlobals.hh"
48#include "G4INCLRandom.hh"
51
52namespace G4INCL {
53
55 public:
56 NuclearDensity(const G4int A, const G4int Z, const G4int S, InterpolationTable const * const rpCorrelationTableProton, InterpolationTable const * const rpCorrelationTableNeutron, InterpolationTable const * const rpCorrelationTableLambda);
58
59 /// \brief Copy constructor
61
62 /// \brief Assignment operator
64
65 /// \brief Helper method for the assignment operator
66 void swap(NuclearDensity &rhs);
67
68 /** \brief Get the maximum allowed radius for a given momentum.
69 * \param t type of the particle
70 * \param p absolute value of the particle momentum, divided by the
71 * relevant Fermi momentum.
72 * \return maximum allowed radius.
73 */
74 G4double getMaxRFromP(const ParticleType t, const G4double p) const;
75
76 G4double getMinPFromR(const ParticleType t, const G4double r) const;
77
78 G4double getMaximumRadius() const { return theMaximumRadius; };
79
80 /** \brief The radius used for calculating the transmission coefficient.
81 *
82 * \return the radius
83 */
84 G4double getTransmissionRadius(Particle const * const p) const {
85 const ParticleType t = p->getType();
86// 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
87 if(t==Composite) {
88 return transmissionRadius[t] +
90 } else
91 return transmissionRadius[t];
92 };
93
94 /** \brief The radius used for calculating the transmission coefficient.
95 *
96 * \return the radius
97 */
99// assert(type!=Composite);
100 return transmissionRadius[type];
101 };
102
103 /// \brief Get the mass number.
104 G4int getA() const { return theA; }
105
106 /// \brief Get the charge number.
107 G4int getZ() const { return theZ; }
108
109 /// \brief Get the strange number.
110 G4int getS() const { return theS; }
111
112 G4double getProtonNuclearRadius() const { return theProtonNuclearRadius; }
113 void setProtonNuclearRadius(const G4double r) { theProtonNuclearRadius = r; }
114
115 private:
116
117 /** \brief Initialize the transmission radius. */
118 void initializeTransmissionRadii();
119
120 G4int theA, theZ, theS;
121 G4double theMaximumRadius;
122 /// \brief Represents INCL4.5's R0 variable
123 G4double theProtonNuclearRadius;
124
125 /* \brief map of transmission radii per particle type */
126 G4double transmissionRadius[UnknownParticle];
127
128 InterpolationTable const *rFromP[UnknownParticle];
129 InterpolationTable const *pFromR[UnknownParticle];
130 };
131
132}
133
134#endif
double S(double temp)
double A(double temperature)
Functor for 1-dimensional mathematical functions.
Abstract interface to the nuclear potential.
Simple interpolation table.
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
Class for interpolating the of a 1-dimensional function.
G4double getProtonNuclearRadius() const
G4double getTransmissionRadius(ParticleType type) const
The radius used for calculating the transmission coefficient.
G4double getTransmissionRadius(Particle const *const p) const
The radius used for calculating the transmission coefficient.
void setProtonNuclearRadius(const G4double r)
G4int getZ() const
Get the charge number.
void swap(NuclearDensity &rhs)
Helper method for the assignment operator.
NuclearDensity & operator=(const NuclearDensity &rhs)
Assignment operator.
G4double getMaximumRadius() const
G4int getA() const
Get the mass number.
G4double getMinPFromR(const ParticleType t, const G4double r) const
G4double getMaxRFromP(const ParticleType t, const G4double p) const
Get the maximum allowed radius for a given momentum.
G4int getS() const
Get the strange number.
G4int getZ() const
Returns the charge number.
G4INCL::ParticleType getType() const
G4int getA() const
Returns the baryon number.
G4double getNuclearRadius(const ParticleType t, const G4int A, const G4int Z)