default range cut does not overwrite other production cuts (when not set)

Issue #209 resolved
Jochem Snuverink created an issue

From email conversation with @nevay.

If one sets

option, defaultRangeCut  = 10*um;

I had expected that all production cuts are set to this value. Unfortunately this is not the case, the others always take precedent (even if not explicitly set), from BDSModularPhysicsList::SetCuts() :

SetDefaultCutValue(globals->DefaultRangeCut());

G4double prodCutPhotons   = globals->ProdCutPhotons();
G4double prodCutElectrons = globals->ProdCutElectrons();
G4double prodCutPositrons = globals->ProdCutPositrons();
G4double prodCutProtons   = globals->ProdCutProtons();

SetCutValue(prodCutPhotons,  "gamma");
SetCutValue(prodCutElectrons,"e-");
SetCutValue(prodCutPositrons,"e+");
SetCutValue(prodCutProtons,  "proton");

Response from @nevay:

If we could detect whether these were set or not, we could set them individually and therefore the default would pervade.

I think setting only the default should apply to the others and we need to change the logic in BDSModularPhysicsList.cc. We should also update the manual to be explicit about the behaviour.

Comments (1)

  1. Log in to comment