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
G4INCLCoulombNonRelativistic.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// 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 G4INCLCoulombNonRelativistic.hh
40 * \brief Class for non-relativistic Coulomb distortion.
41 *
42 * \date 14 February 2011
43 * \author Davide Mancusi
44 */
45
46#ifndef G4INCLCOULOMBNONRELATIVISTIC_HH_
47#define G4INCLCOULOMBNONRELATIVISTIC_HH_
48
49#include "G4INCLParticle.hh"
50#include "G4INCLNucleus.hh"
51#include "G4INCLICoulomb.hh"
52#include "G4INCLCoulombNone.hh"
53#include "G4INCLGlobals.hh"
54
55namespace G4INCL {
56
58 public:
61
62 /** \brief Modify the momentum of the particle and position it on the
63 * surface of the nucleus.
64 *
65 * This method performs non-relativistic distortion.
66 *
67 * \param p incoming particle
68 * \param n distorting nucleus
69 **/
70 ParticleEntryAvatar *bringToSurface(Particle * const p, Nucleus * const n) const;
71
72 /** \brief Modify the momentum of the incoming cluster and position it on
73 * the surface of the nucleus.
74 *
75 * This method performs non-relativistic distortion. The momenta of the
76 * particles that compose the cluster are also distorted.
77 *
78 * \param c incoming cluster
79 * \param n distorting nucleus
80 **/
81 IAvatarList bringToSurface(Cluster * const c, Nucleus * const n) const;
82
83 /** \brief Modify the momenta of the outgoing particles.
84 *
85 * This method performs non-relativistic distortion.
86 *
87 * \param pL list of outgoing particles
88 * \param n distorting nucleus
89 */
90 void distortOut(ParticleList const &pL, Nucleus const * const n) const;
91
92 /** \brief Return the maximum impact parameter for Coulomb-distorted
93 * trajectories. **/
94 G4double maxImpactParameter(ParticleSpecies const &p, const G4double kinE, Nucleus const *
95 const n) const;
96
97 private:
98 /// \brief Return the maximum impact parameter for Coulomb-distorted trajectories.
99 G4double maxImpactParameterParticle(ParticleSpecies const &p, const G4double kinE, Nucleus const *
100 const n) const;
101
102 /// \brief Return the minimum distance of approach in a head-on collision (b=0).
103 G4double minimumDistance(ParticleSpecies const &p, const G4double kineticEnergy, Nucleus const * const n) const {
104 const G4double particleMass = ParticleTable::getTableSpeciesMass(p);
105 const G4double nucleusMass = n->getTableMass();
106 const G4double reducedMass = particleMass*nucleusMass/(particleMass+nucleusMass);
107 return ParticleTable::eSquared * p.theZ * n->getZ() * particleMass
108 / (kineticEnergy * reducedMass);
109 }
110
111 /// \brief Return the minimum distance of approach in a head-on collision (b=0).
112 G4double minimumDistance(Particle const * const p, Nucleus const * const n) const {
113 return minimumDistance(p->getSpecies(), p->getKineticEnergy(), n);
114 }
115
116 /** \brief Perform Coulomb deviation
117 *
118 * Modifies the entrance angle of the particle and its impact parameter.
119 * Can be applied to Particles and Clusters.
120 *
121 * The trajectory for an asymptotic impact parameter \f$b\f$ is
122 * parametrised as follows:
123 * \f[
124 * r(\theta) = \frac{(1-e^2)r_0/2}{1-e \sin(\theta-\theta_R/2)},
125 * \f]
126 * here \f$e\f$ is the hyperbola eccentricity:
127 * \f[
128 * e = \sqrt{1+4b^2/r_0^2};
129 * \f]
130 * \f$\theta_R\f$ is the Rutherford scattering angle:
131 * \f[
132 * \theta_R = \pi - 2\arctan\left(\frac{2b}{r_0}\right)
133 * \f]
134 * \f$\theta\f$ ranges from \f$\pi\f$ (initial state) to \f$\theta_R\f$
135 * (scattered particle) and \f$r_0\f$ is the minimum distance of approach
136 * in a head-on collision (see the minimumDistance() method).
137 *
138 * \param p pointer to the Particle
139 * \param n pointer to the Nucleus
140 * \return false if below the barrier
141 */
142 G4bool coulombDeviation(Particle * const p, Nucleus const * const n) const;
143
144 /// \brief Internal CoulombNone slave to generate the avatars
145 CoulombNone theCoulombNoneSlave;
146 };
147}
148
149#endif /* G4INCLCOULOMBNONRELATIVISTIC_HH_ */
Placeholder class for no Coulomb distortion.
Abstract interface for Coulomb distortion.
double G4double
Definition: G4Types.hh:64
bool G4bool
Definition: G4Types.hh:67
void distortOut(ParticleList const &pL, Nucleus const *const n) const
Modify the momenta of the outgoing particles.
G4double maxImpactParameter(ParticleSpecies const &p, const G4double kinE, Nucleus const *const n) const
Return the maximum impact parameter for Coulomb-distorted trajectories.
ParticleEntryAvatar * bringToSurface(Particle *const p, Nucleus *const n) const
Modify the momentum of the particle and position it on the surface of the nucleus.
static const G4double eSquared
Coulomb conversion factor, in MeV*fm.
static G4double getTableSpeciesMass(const ParticleSpecies &p)
std::list< IAvatar * > IAvatarList
std::list< G4INCL::Particle * > ParticleList