This is an old revision of the document!
Table of Contents
Primasoft extension for radiation dose estimations
Introduction
The purpose of this extension is to use the Geant4 package to estimate the radiation dose the various component of the Primakoff experiment setup might absorb during a certain number of hours of operation.
The result of the simulation is a three dimensional radiation map of the whole hall or a selected region. This is subdivided in elementary cubic volumes (or voxels), and a mean radiation dose per beam electron in each voxel is calculated. “Mean” implies here an average over many events and over the volume of the voxel.
For some case (e.g. radiation absorbed by some small compoents), the mean dose can be calculated for full physical volumes without mapping it into voxels.
The followed strategy implies:
- making use of the “parallel world” feature of Geant4 for scoring the dose independently of the “mass geometry”, i.e. the geometry used for simulating the physical processes and doing the tracking;
- simulating events starting with beam electrons directed to the target;
- using one or more sensitive detector classes to gather the radiation dose in every tracking step and to sort it into appropriate data structures;
- summing the energy deposited in every step divided by the density of the material in which the step took place (this is needed in case the voxel includes parts of different physical volumes, i.e. different materials);
- At the end of the simulation, the sum needs to be divided by the voxel volume and the number of simulated events in order to obtain the mean radiation dose absorbed in the voxel per beam electron.
Software Upgrade
Modifications to existing code
- PRIMASimulationConfig
new commanddo-radiation-studies
added to switch on the radiation dosis simulation (referred to asdoRadStudies
in the following).
- PRIMASimInfo:
thedoRadStudies
flag is added to the info class.
- PRIMAPostDetConstruction in method Initialize(), if
doRadStudies
is 1- the
radStudiesPW
parallel world is instantiated and registered; - A step limit of 1 mm is defined for the
DefaultRegionForTheWorld
(entire geometry); - A step limit without restriction is defined for the vacuum in order to subside the 1 mm limit.
- PRIMAPhysicsList: if
doRadStudies
is 1,
theG4ParallelWorldProcess
for theradStudiesPW
parallel world is defined and assigned to all particles.
- PRIMARunAction in method
EndOfRunAction()
, ifdoRadStudies
is 1
the radiation map filled by the parallel world sensitive detector is written to the output file.
- PRIMAPrimaryGeneratorAction:
the classPRIMABeamGenerator
has just been defined but not yet implemented. If the beam is simulated with fixed energy and 0 emittance, it is not needed, since the G4 particle gun is sufficient. (Possibly to be done by Alex).
- primag4simLinkDef.h:
the new classes requiring a dictionary are added to theLinkDef
file.
New files and classes
PRIMARadDosisData.{hh,cc}
struct PRIMARadStudiesVoxelId
represents a voxel by an index triplei,j,k
class PRIMARadStudiesVoxelIdComparator
is used for sorting and distinguishing the voxel objects. It is needed to use them as key for astd::map
.class PRIMARadStudiesMap
is an interface class to be able to write one of its instances to a root file with a given name. It is defined as
class PRIMARadStudiesMap: public std::map<PRIMARadStudiesVoxelId,float,PRIMARadStudiesVoxelIdComparator>, public TNamed
PRIMARadDosisStudies.{hh,cc}
class PRIMARadSudiesParallelWorld
class PRIMARadStudiesSD
rad_studies.C