120 likes | 153 Views
Status of particle_hp Pedro Arce Emilio Mendoza Daniel Cano-Ott (CIEMAT, Madrid). What is particle_hp?. neutron_hp package uses evaluated nuclear data bases for neutron interactions: Total cross sections Inelastic channel cross sections
E N D
Status of particle_hp Pedro Arce Emilio Mendoza Daniel Cano-Ott (CIEMAT, Madrid)
What is particle_hp? neutron_hp package uses evaluated nuclear data bases for neutron interactions: • Total cross sections • Inelastic channel cross sections • Double differential spectra of outgoing particles • Gamma emission because of nuclear level transitions particle_hp: do the same for (inelastic) interactions of other particles (p, d, t, He3, ) Inelastic interactions of p/d/t/He3/ particles E < 200 MeV
Why particle_hp? Theory models or semi-empirical models sometimes cannot reproduce experimental data at low (10-100 MeV), specially for low Z elements (J.M. Quesada agrees): p + 18O n + 18F (barns) IAEA medical DB (exper.) Geant4.9.5.p01 (QGSP_BIC_HP) p Energy (MeV)
What nuclear DBs are there? ENDF-VII: • Uses experimental data + thorough evaluations • Only a few isotopes (p:48, d:5, t:3, He3:2) • Only p X reactions (MT=5) • double differential spectra of resulting particles (n,p,d,…), without channel information (n,nn,np,nna,...) • Up to 150 MeV for p (d: 50 MeV, t: 20 MeV, He3: 20 MeV) • ENDF-6 format TENDL: • Uses some experimental data + TALYS calculations • All isotopes (2400) • Only p X reactions (MT=5) • All channels done in 2009, but not repeated • Up to 200 MeV • ENDF-6 format
What nuclear DBs are there? IAEA medical database: • Only experimental data • Only a few reaction channels of a few isotopes • Only channel cross sections • Simple text format IBANDL database: • Only experimental data • Not all isotopes • Many experimental measurements channel by channel • Low energy (up to a few MeV) • Own format
Code changes PHYSICS LIST: G4NeutronHPInelastic* theParticleModel=new G4NeutronHPInelastic(); G4ParticleHPInelastic* theParticleModel=new G4ParticleHPInelastic(G4Proton::Proton()); • (default G4Neutron::Neutron() for backwards compatibility) G4NeutronHPInelasticData* theNeutronHPInelasticData=new G4NeutronHPInelasticData(); G4ParticleHPInelasticData* theProtonHPInelasticData= new G4ParticleHPInelasticData(G4Proton::Proton()); (default G4Neutron::Neutron() for backwards compatibility) theProtonHPInelasticData->SetMaxKinEnergy(200.); • Looking at the particle type, G4ParticleHPInelastic & G4ParticleHPInelasticData set the name of the environmental variable: "G4NEUTRONHPDATA“, "G4PROTONHPDATA“, • "G4DEUTERONHPDATA“, "G4TRITONHPDATA“, "G4HE3HPDATA“,"G4ALPHAHPDATA" particle_hp compiled with geant4.10.00.ref04
Code changes neutron_hp CODE CHANGES: • No new classes: only modify neutron_hp package • Rename G4NeutronHP* → G4ParticleHP* • Thermal scattering only for neutrons • Eliminate assumptions that projectile is neutron and enviromental variable is “G4NEUTRONHPDATA” G4ParticleHPChannel G4ParticleHPChannelList G4ParticleNames G4ParticleHPEnAngCorrelation G4ParticleHPContAngularPar G4ParticleHPContEnergyAngular G4ParticleHPInelastic G4ParticleHPInelasticData G4ParticleHPorLEInelastic G4ParticleHP*InelasticFS G4ParticleHPInelasticBaseFS G4ParticleHPInelasticCompFS G4ParticleHPFinalState And add G4He3InelasticProcess
Code changes PARTICLE YIELD CORRECTIONS: • Number of particles of a type produced in an interaction is not sampled in neutron_hp (except for gammas): • Integer value is taken 2.43 → 2 • Most charged particle data base isotopes do not have channel by channel cross sections, only particle yields (F02) • Also several dozens isotopes in most neutron data bases (46 in G4NDL 4.4) • Apply Poisson statistics for all particles • SOME ENVIROMENTAL VARIABLE RENAMING: • InelasticCompFSLogging >>> G4PARTICLEHP_InelasticCompFSLogging • G4NEUTRONHP_NEGLECT_DOPPLER >>> G4PARTICLEHP_NEGLECT_DOPPLER • G4NEUTRONHP_DO_NOT_ADJUST_FINAL_STATE >>> G4PARTICLEHP_DO_NOT_ADJUST_FINAL_STATE • G4NEUTRONHP_USE_ONLY_PHOTONEVAPORATION >>> G4PARTICLEHP_USE_ONLY_PHOTONEVAPORATION • G4NEUTRONHP_SKIP_MISSING_ISOTOPES >>> G4PARTICLEHP_SKIP_MISSING_ISOTOPES • AllowForHeavyElements >>> G4PARTICLEHP_AllowForHeavyElements • CaptureDataIndexDebug >>> G4PARTICLEHP_CaptureDataIndexDebug • InelasticCompFSLogging >>> G4PARTICLEHP_InelasticCompFSLogging • ParticleHPNamesLogging >>> G4ParticleHPDebug_NAMESLogging • ParticleHPNames >>> G4ParticleHPDebug_NAMES • HTOKEN >>> G4ParticleHPDebug_HTOKEN
Tests: compare with MCNP Secondary energy spectra (neutrons and gammas) at fixed energy • Send protons of fixed energy and force them to interact inelastically before losing energy • Score neutrons/gammas as they reach a sphere: do not let them interact n from p 22 MeV on Al27 from p 22 MeV on Al27 n from p 100 MeV on Pb208 from p 100 MeV on Pb208
Tests: compare with MCNP Secondary energy spectra (neutrons and gammas) losing energy • Send protons of fixed energy and let them interact until they lose all energy • Score neutrons/gammas as they reach a sphere: do not let them interact • Can’t do that in MCNP: solution of building a minimal volume does not work because protons have to interact • Use “ptrac” dump (/tracking/verbose 1) and read it with GAMOS to create G4Track/G4Step n from p 50 MeV on Fe56 n from p 149 MeV on Pb208 from p 50 MeV on Fe56 from p 149 MeV on Pb208
Tests: compare with MCNP Secondary angle spectra (neutrons) • Send protons of fixed energy and let them interact until they lose all energy • All start along X axis • Score neutrons/gammas as they reach a sphere: do not let them interact n from p 50 MeV on Al27 n from p 100 MeV on Pb208
Conclusions • Geant4 (and other MC) theoretical models do not work well for charged particle (p, d, t, He3, ) inelastic interactions at E < 200 MeV • Alternative implemented: use evaluated data bases • Several available (ENDF, TENDL, IAEA medical, IBANDL) • particle_hp has been ported to geant4.10.00.ref04 • particle_hp is begin tested (geant4.9.6.p02) • Total cross sections and secondary production cross sections • Secondary energy spectra • Secondary angle spectra • NEXT: check neutron_hp = particle_hp for neutrons (wait for a geant4.10 release including particle_hp) Agreed that particle_hp will replace neutron_hp when tests are finished