I’m using geant 10.5.p01. I am trying to set up an application with multiple regions, with strict production cuts far from the sensitive region. This is mostly straightforward, but I cannot seem to configure atomic deexcitation to obey these cuts. I’m doing the following:
- In my main:
fPhysList = fFactory->GetReferencePhysList("Shielding");
G4EmParameters* params = G4EmParameters::Instance();
params->SetFluo(true);
params->SetAugerCascade(false);
params->SetAuger(false);
params->SetPixe(false);
//params->SetDeexActiveRegion("World", true, false, false);
//just tune your cuts, rather than the heavy-handed stuff
params->SetDeexcitationIgnoreCut(false);
//make gammas follow cuts
params->SetApplyCuts(true);
params->Dump();
//update the run manager
fRunManager->SetUserInitialization(fPhysList);
- In my
UserDetectorConstruction::Construct()
:
G4EmParameters* params = G4EmParameters::Instance();
params->SetDeexActiveRegion("wallregion", true, false, false);
params->AddPhysics("wallregion", "G4EmStandard");
params->SetDeexActiveRegion("Hires", true, true, true);
params->SetLowestMuHadEnergy(0);
params->SetLowestElectronEnergy(10*eV);
params->AddPhysics("Hires", "G4EmStandard_opt4");
params->Dump();
Both of the Dump
calls give the same output:
=======================================================================
====== Atomic Deexcitation Parameters ========
=======================================================================
Fluorescence enabled 1
Fluorescence Bearden data files enabled 0
Auger electron production enabled 0
Auger cascade enabled 0
PIXE atomic de-excitation enabled 0
De-excitation module ignores cuts 0
Type of PIXE cross section for hadrons Empirical
Type of PIXE cross section for e+- Livermore
That’s what I expect. Great! But a few lines later in the output from initializing the run, I get
### === Deexcitation model UAtomDeexcitation is activated for 4 regions:
DefaultRegionForTheWorld 0 0 0
Hires 1 0 0
cryoregion 0 0 0
wallregion 1 0 0
### === Auger cascade flag: 1
### === Ignore cuts flag: 1
So something has turned on Auger cascades and set deexcitation to ignore cuts! AND the flags I gave to enable Auger and PIXE in the Hires region were apparently lost somewhere. Further down, I get
=======================================================================
====== Radioactive Decay Physics Parameters ========
=======================================================================
Max life time 1.4427e+06 ps
Internal e- conversion flag 1
Stored internal conversion coefficients 1
Enable correlated gamma emission 0
Max 2J for sampling of angular correlations 10
Atomic de-excitation enabled 1
Auger electron emission enabled 1
Auger cascade enabled 1
Check EM cuts disabled for atomic de-excitation 1
Use Bearden atomic level energies 0
=======================================================================
further confirming that my settings have been overridden. And to confirm again, I put /process/em/printParameters
right before /run/beamOn
, and I get
=======================================================================
====== Atomic Deexcitation Parameters ========
=======================================================================
Fluorescence enabled 1
Fluorescence Bearden data files enabled 0
Auger electron production enabled 1
Auger cascade enabled 1
PIXE atomic de-excitation enabled 0
De-excitation module ignores cuts 1
Type of PIXE cross section for hadrons Empirical
Type of PIXE cross section for e+- Livermore
And unsurprisingly if I put Pb210 primaries in the wallregion
, I get a bunch of Auger particles:
:----- List of secondaries ----------------
G4WT1 > Bi210: energy =0.1158 eV time =3.26e+08 s
G4WT1 > e-: energy = 373.1 eV time =3.26e+08 s
G4WT1 > e-: energy = 55.57 eV time =3.26e+08 s
G4WT1 > e-: energy = 29.92 eV time =3.26e+08 s
G4WT1 > e-: energy = 12.88 eV time =3.26e+08 s
G4WT1 > e-: energy = 29.92 eV time =3.26e+08 s
G4WT1 > e-: energy = 52.38 eV time =3.26e+08 s
G4WT1 > e-: energy = 106.3 eV time =3.26e+08 s
G4WT1 > e-: energy = 175 eV time =3.26e+08 s
G4WT1 > e-: energy = 244.4 eV time =3.26e+08 s
G4WT1 > e-: energy = 309 eV time =3.26e+08 s
G4WT1 > e-: energy = 2.586 keV time =3.26e+08 s
G4WT1 > e-: energy = 42.53 keV time =3.26e+08 s
G4WT1 > :------------------------------------------
Even worse, if I call /process/em/deexcitationIgnoreCut false
in my macro after initialization, I still get these. I have to explicitly say /process/em/auger false
. I can’t find any command to make the radioactive decay emissions obey cuts.
Summary
- How do I prevent my options from being overriden? If there’s no way to set an option before initialization that will stick, is there a hook somewhere that I can add code to be called post-initialization? I really don’t want to tell my users “you have to add these 5 lines to every macro that you run after /run/initialize to make it work”.
- Is deexcitation control by region actually possible? What is the correct recipe?