Comments (7)
For G4NucleiProperties I think we should extend the MaterialParams
to have nuclides as well as elements; the nuclide data would include binding energies imported from Geant4 via GeantImporter
and associated classes.
from celeritas.
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?
from celeritas.
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 G4WentzelOKandVIxSection
, G4eCoulombScatteringModel
, and G4CoulombScattering
into several classes:
- CoulombScatteringData and a corresponding
Model
class to manage the data - CoulombScatteringView which would take a material and energy and have the helper functions like
calc_nuclear_xs
,calc_electron_xs
- I don't think it need to calculate cross sections on the fly , but if it does make a CoulombScatteringXsCalculator for
G4eCoulombScatteringModel::ComputeCrossSectionPerAtom
-
G4WentzelOKandVIxSection::SampleSingleScattering
becomes aDistribution
that samples polar angle -
G4eCoulombScatteringModel::SampleSecondaries
becomes anInteractor
- Create the
Process
and add the interfaces to move the data fromGeantImporter
And since a lot of these are tied to the WentzelOKandVI
model which is abbreviated wokvi
maybe some of these classes should have a Wokvi
or WOI
prefix instead of CoulombScattering
?
from celeritas.
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 MaterialParams
while Hayden reviews other relevant classes and start to implement them as parallel?
from celeritas.
Add G4ScreeningMottCrossSections
from celeritas.
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
from celeritas.
Related Issues (20)
- Move reusable components into `accel`
- Improve CI infrastructure HOT 2
- Standardize nomenclature HOT 1
- Extend GeantGeoConverter for G4ReflectedSolid HOT 2
- Use safety distance more wisely and improve cacheing of next step/safety HOT 2
- Polish rasterizer geo-check into "celer-geo" verification app
- Add energy deposition and path length scoring with batch statistics HOT 1
- Ensure CMS works for Run3 and HL-LHC, through GMDL and CMSSW HOT 10
- Add "fast simulation" interface to accel HOT 3
- Compile error with G4 10.6.3 HOT 1
- Extend celer-g4 for detailed Geant4/Celeritas comparisons HOT 1
- CUDA link issue with incremental build HOT 13
- Investigate physics setup differences between CMSSW and Celeritas HOT 1
- Add optical photon simulation HOT 1
- Fix or output "lost energy" warnings on boundaries HOT 3
- Investigate a rare crash from SBEnergyDistribution HOT 2
- Refactor physics tables for correct material-dependent bounds HOT 5
- Improve performance scaling with host threads HOT 2
- Crash in TrackSort test with VecGeom: illegal memory access HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from celeritas.