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
G4INCLCoulombDistortion.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 G4INCLCoulombDistortion.hh
40 * \brief Static class for selecting Coulomb distortion.
41 *
42 * \date 14 February 2011
43 * \author Davide Mancusi
44 */
45
46#ifndef G4INCLCOULOMBDISTORTION_HH_
47#define G4INCLCOULOMBDISTORTION_HH_
48
49#include "G4INCLParticle.hh"
50#include "G4INCLNucleus.hh"
51#include "G4INCLICoulomb.hh"
52
53namespace G4INCL {
54
55 /**
56 * Coulomb distortion
57 */
59 public:
60 /** \brief Modify the momentum of an incoming particle and position it on
61 * the surface of the nucleus.
62 *
63 * This method places Particle p on the surface of Nucleus n and modifies
64 * the direction of its momentum to be tangent to the Coulomb trajectory in
65 * that point.
66 *
67 * The input particle has to be prepared with its asymptotic momentum. Its
68 * position is used only for the purpose of computing the asymptotic impact
69 * parameter; in other words, this method only uses the components of the
70 * position that are perpendicular to the momentum. The remaining component
71 * is not used, and can be set to any value.
72 *
73 * This method returns a ParticleEntry avatar for the projectile.
74 *
75 * \param p incoming particle
76 * \param n distorting nucleus
77 * \return the ParticleEntryAvatar for the projectile particle
78 **/
80 return theCoulomb->bringToSurface(p, n);
81 }
82
83 /** \brief Modify the momentum of an incoming cluster and position it on
84 * the surface of the target.
85 *
86 * Same as the Particle-based bringToSurface method, but for incoming heavy
87 * ions.
88 *
89 * This method returns a list of ParticleEntry avatars for the participant
90 * nucleons
91 *
92 * \param c incoming heavy ion
93 * \param n distorting nucleus
94 * \return a list of ParticleEntryAvatars
95 **/
96 static IAvatarList bringToSurface(Cluster * const c, Nucleus * const n) {
97 return theCoulomb->bringToSurface(c, n);
98 }
99
100 /** \brief Modify the momentum of an outgoing particle. */
101 static void distortOut(ParticleList const &pL, Nucleus const * const n) {
102 theCoulomb->distortOut(pL, n);
103 }
104
105 /** \brief Return the maximum impact parameter for Coulomb-distorted
106 * trajectories. **/
107 static G4double maxImpactParameter(ParticleSpecies const &p, const G4double kinE, Nucleus const * const n) {
108 return theCoulomb->maxImpactParameter(p, kinE, n);
109 }
110
111 /** \brief Return the maximum impact parameter for Coulomb-distorted
112 * trajectories. **/
113 static G4double maxImpactParameter(Particle const * const p, Nucleus const * const n) {
114 return maxImpactParameter(p->getSpecies(), p->getKineticEnergy(), n);
115 }
116
117 /** \brief Set the Coulomb-distortion algorithm. */
118 static void setCoulomb(ICoulomb * const coulomb) { theCoulomb = coulomb; }
119
120 /** \brief Delete the Coulomb-distortion object. */
121 static void deleteCoulomb() {
122 delete theCoulomb;
123 theCoulomb = 0;
124 }
125
126 protected:
129
130 private:
131 static ICoulomb *theCoulomb;
132
133 };
134}
135
136#endif /* G4INCLCOULOMBDISTORTION_HH_ */
Abstract interface for Coulomb distortion.
double G4double
Definition: G4Types.hh:64
static ParticleEntryAvatar * bringToSurface(Particle *p, Nucleus *const n)
Modify the momentum of an incoming particle and position it on the surface of the nucleus.
static G4double maxImpactParameter(ParticleSpecies const &p, const G4double kinE, Nucleus const *const n)
Return the maximum impact parameter for Coulomb-distorted trajectories.
static void distortOut(ParticleList const &pL, Nucleus const *const n)
Modify the momentum of an outgoing particle.
static void deleteCoulomb()
Delete the Coulomb-distortion object.
static G4double maxImpactParameter(Particle const *const p, Nucleus const *const n)
Return the maximum impact parameter for Coulomb-distorted trajectories.
static void setCoulomb(ICoulomb *const coulomb)
Set the Coulomb-distortion algorithm.
static IAvatarList bringToSurface(Cluster *const c, Nucleus *const n)
Modify the momentum of an incoming cluster and position it on the surface of the target.
virtual ParticleEntryAvatar * bringToSurface(Particle *const p, Nucleus *const n) const =0
Modify the momentum of an incoming particle and position it on the surface of the nucleus.
virtual void distortOut(ParticleList const &pL, Nucleus const *const n) const =0
Modify the momenta of the outgoing particles.
virtual G4double maxImpactParameter(ParticleSpecies const &p, const G4double kinE, Nucleus const *const n) const =0
Return the maximum impact parameter for Coulomb-distorted trajectories.
virtual G4INCL::ParticleSpecies getSpecies() const
Get the particle species.
G4double getKineticEnergy() const
Get the particle kinetic energy.
std::list< IAvatar * > IAvatarList
std::list< G4INCL::Particle * > ParticleList