Bug #1962
No delta electrons when using gdml
Added by Rogers, Chris over 5 years ago.
Updated over 5 years ago.
Description
When doing tracking using the gdml geometry, no delta electrons are produced. This is not the case when doing tracking using MiceModules geometry.
I am running two geometries; both are 2 mm thick plastic disks, one defined in gdml and the other using MiceModules. I get a nice distribution of secondary electrons with the MiceModules, but nothing with the gdml. A few observations:
- The code at
src/common_cpp/Simulation/MAUSGeant4Manager.hh,cc
does not set the user limits correctly. The SetVolumeInformation function doesn't work. I fixed this, and manually set the Min Kinetic Energy to be low (1 keV). Still no deltas
- The ProductionThreshold is set to be "very high" during the cavity phasing part of the G4 setup - see Simulation/MAUSPhysicsList.hh,cc. I can't see at the moment how it is set back to something sensible. Presumably it is somewhere...
Continuing to dig.
This patch seems to have fixed things:
=== modified file 'src/common_cpp/Simulation/MAUSPhysicsList.cc'
--- src/common_cpp/Simulation/MAUSPhysicsList.cc 2016-08-31 11:59:03 +0000
+++ src/common_cpp/Simulation/MAUSPhysicsList.cc 2018-03-23 18:32:42 +0000
@@ -181,8 +181,7 @@
break;
}
std::vector<std::string> uiCommand;
- if (eLossModel != energyStraggling)
- uiCommand.push_back("/run/setCut "+STLUtils::ToString(cutDouble));
+ uiCommand.push_back("/run/setCut "+STLUtils::ToString(cutDouble));
uiCommand.push_back("/process/eLoss/fluct "+flucActive);
for (int i = 0; i < _nELossNames; i++)
uiCommand.push_back("/process/"+elossActive+" "+_eLossNames[i]);
This is the patch to get proper propagation of user limits
=== modified file 'src/common_cpp/Simulation/MAUSGeant4Manager.cc'
--- src/common_cpp/Simulation/MAUSGeant4Manager.cc 2016-08-31 11:59:03 +0000
+++ src/common_cpp/Simulation/MAUSGeant4Manager.cc 2018-03-26 08:44:54 +0000
@@ -240,7 +240,8 @@
}
void MAUSGeant4Manager::SetVolumeInformation(MiceModule& module, G4LogicalVolume* base) {
-
+ G4UserLimits* limits = new G4UserLimits(_stepMax, _trackMax, _timeMax, _keThreshold);
+ base->SetUserLimits(limits);
// G4VPhysicalVolume* world = _parser.GetWorldVolume();
G4int nDaughters = base->GetNoDaughters();
for ( int i = 0; i < nDaughters; i++ ) {
@@ -255,15 +256,8 @@
// Set auxiliary information
SetAuxInformation(module, myvol, auxlist);
}
- // else {
- // _detector->GetUserLimits().push_back(new G4UserLimits(_stepMax, _trackMax,
- // _timeMax, _keThreshold));
- // myvol->SetUserLimits(_detector->GetUserLimits().back());
- // }
- if ( myvol->GetNoDaughters() > 0 ) {
- // Consider adding information to the daughter volumes
- SetVolumeInformation(module, myvol);
- }
+ // Consider adding information to the daughter volumes
+ SetVolumeInformation(module, myvol);
}
}
- Status changed from Open to Closed
- % Done changed from 0 to 100
Also available in: Atom
PDF