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:
do-radiation-studies
added to switch on the radiation dosis simulation (referred to as doRadStudies
in the following).doRadStudies
flag is added to the info class.doRadStudies
is 1radStudiesPW
parallel world is instantiated and registered;DefaultRegionForTheWorld
(entire geometry);doRadStudies
is 1,G4ParallelWorldProcess
for the radStudiesPW
parallel world is defined and assigned to all particles.EndOfRunAction()
, if doRadStudies
is 1PRIMABeamGenerator
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).LinkDef
file.PRIMARadDosisData.{hh,cc}
struct PRIMARadStudiesVoxelId
represents a voxel by an index triple i,j,k
class PRIMARadStudiesVoxelIdComparator
is used for sorting and distinguishing the voxel objects. It is needed to use them as key for a std::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 asclass PRIMARadStudiesMap: public std::map<PRIMARadStudiesVoxelId,float,PRIMARadStudiesVoxelIdComparator>, public TNamed
PRIMARadDosisStudies.{hh,cc}
class PRIMARadSudiesParallelWorld
G4VUserParallelWorld
class PRIMARadStudiesSD
G4VSensitiveDetector
) holding the radiation map (PRIMARadStudiesMap
object). ProcessHit
functioning:WriteTextFile
is provided to dump the map into a ASCII file for testing purposes. Activation and output file name are hard coded so far. Dynamical settings could be added to PRIMASimulationConfig
if needed.In the example a geometry containing only the target, the vacuum volume and parts of the beam pipe downstream of the scattering chamber is defined. The radiation dose is scored over the full hall subdivided in voxels of 1 cm side length.
geometry/PRIMABeamPipe.{hh,cc}
TGeoVolume* ConstructVacuumVolume()
TGeoVolume
from a composite shape. This is important to ensure that the beam electrons inside the vacuum can travel until the end of the hall without unwanted material layers.TGeoVolumeAssembly* ConstructBeamPipe()
TGeoVolumeAssembly
geometry/build_beam_pipe.cxx
for generating the root file with the geometry, containing the assembly described above and the tantalum target inside the hall.
In order to analyse the output map from the geant4 simulation the example macro rootmacros/rad_studies.C
has been introduced. It shows:
A guide to the FLUKA simulations using Flair can be found here