-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add electron/positron Single (Coulomb) Scattering Model #801
Comments
For G4NucleiProperties I think we should extend the |
That would be great as G4NucleiProperties will be used in many other places (in hadronic physics models including photo- and eletro-nuclear interactions). So, should we open another issue for extending MaterialParams to cover G4NucleiProperties and related classes? |
I think that the Nuclide upgrade would make a good first pull request: it's small enough and self contained. Then after that, based on a quick review of the Geant4 classes, I'd refactor the
And since a lot of these are tied to the |
Yes, we do not need to implement G4eCoulombScatteringModel::ComputeCrossSectionPerAtom as the lambda table for the CoulombScattering process will be imported from Geant4 (and do not need G4WentzelOKandVIxSection::ComputeTransportCrossSectionPerAtom either), but excerpt only relevant parts of G4WentzelOKandVIxSection that need for an Interactor associated with the model. So, can @stognini help for extending |
Add |
Starting point for material data: //---------------------------------------------------------------------------//
/*!
* Fundamental, invariant properties of a nuclide.
*/
struct NuclideRecord
{
AtomicNumber atomic_number; //!< Z number
AtomicNumber atomic_mass; //!< A number (TODO: fix type?)
units::AmuMass atomic_mass; //!< Isotope-weighted average atomic mass
};
//---------------------------------------------------------------------------//
/*!
* Fractional element component of a material.
*
* This represents, e.g., the fraction of hydrogen in water.
*/
struct ElNuclideComponent
{
NuclideId nuclide; //!< Index in MaterialParams elements
real_type fraction; //!< Fraction of number density
};
//---------------------------------------------------------------------------//
/*!
* Fundamental, invariant properties of an element.
*
* Add elemental properties as needed if they apply to more than one physics
* model. (When nuclear physics is implemented, add isotopes.)
*
* Note that more than one "element def" can exist for a single atomic number:
* there might be different enrichments of an element in the problem.
*/
struct ElementRecord
{
AtomicNumber atomic_number; //!< Z number
units::AmuMass atomic_mass; //!< Isotope-weighted average atomic mass
ItemRange<ElNuclideComponent> nuclides; //!< Nuclide components |
The single elastic scattering is an alternative to the multiple scattering process when the average number of collisions per charged track is relatively small or in low-density gaseous media. It can be also used in mixed simulation algorithms to describe charged particle transport more accurately in physical content, but still in a computationally efficient way. We implement an electron/positron Coulomb Scattering model of Wenzel [ref: G. Wentzel, Z. Phys. 40 (1927) 590] based on G4CoulombScattering process and G4eCoulombScatteringModel. For details, refer to the section, 8.2 of the Geant4 physics manual, Release 10.7 or
the paper by J.M. Fernández-Varea, R. Mayol, J. Baró and F. Salvat, On the theory and simulation of multiple elastic scattering of electrons. Nucl. Instrum. and Meth. in Phys. Research B, 73 (1993) 447–473, doi:10.1016/0168-583X(93)95827-R. The following is a list of related sub-tasks:
nuclear_mass
inElementRecord
equivalent to G4NucleiProperties::GetNuclearMass and an associated accessor inMaterialParams
, and a unit testThe text was updated successfully, but these errors were encountered: