Low-energy, or soft, protons (< 300 keV) that enter the field
of view of X-ray focusing telescopes can scatter at grazing angles with the surface of Wolter-type mirrors and reach the focal plane, causing unpredictable flares in the background rate
of the instruments ([Marelli et al., 2017](https://ui.adsabs.harvard.edu/abs/2017ExA....44..297M/abstract); [Freyberg et al., 2020](https://ui.adsabs.harvard.edu/abs/2021SPIE11444E..1OF/abstract)).
@@ -380,22 +385,134 @@ Target type: 1 = eRosita
Detector distance (distance from the target center to the detector surface) in mm:
`GEOM.PANEL.DISTANCE = 933.`
</details>
<details><summary> GDML
</summary>
</details>
<imgsrc="images/gdml.png"width="400"height="120">
This example application imports GDML volumes from a file and selects which volumes are sensitive.
To run the example:
`> bogemms -c read_gdml.conf -m visGDML.mac`
###### Configuration file read_gdml.conf:
Selection of output files:
`IO.FILETYPE.FITS = true`
`IO.FILETYPE.FITS.COMPRESS = true`
`IO.FILE.XYZ = true`
IO XYZ file configuration:
`IOXYZ.EVT_ID = true`
`IOXYZ.TRK_ID = true`
`IOXYZ.PARENT_TRK_ID = true`
`IOXYZ.VOLUME_ID = true`
`IOXYZ.VOLUME_NAME = true`
`IOXYZ.MOTHER_ID = true`
`IOXYZ.E_DEP = true`
`IOXYZ.X_ENT = true`
`IOXYZ.Y_ENT = true`
`IOXYZ.Z_ENT = true`
`IOXYZ.X_EXIT = true`
`IOXYZ.Y_EXIT = true`
`IOXYZ.Z_EXIT = true`
`IOXYZ.E_KIN_ENT = true`
`IOXYZ.E_KIN_EXIT = true`
`IOXYZ.MDX_ENT = true`
`IOXYZ.MDY_ENT = true`
`IOXYZ.MDZ_ENT = true`
`IOXYZ.MDX_EXIT = true`
`IOXYZ.MDY_EXIT = true`
`IOXYZ.MDZ_EXIT = true`
`IOXYZ.GTIME_ENT = true`
`IOXYZ.GTIME_EXIT = true`
`IOXYZ.PARTICLE_ID = true`
`IOXYZ.PARTICLE_NAME = false`
`IOXYZ.PROCESS_ID = true`
`IOXYZ.PROCESS_NAME = false`
Volume selection:
`IOXYZ.volumeselection.number = 1`
`IOXYZ.volumeselection.0.start = 0`
`IOXYZ.volumeselection.0.end = 10000000`
Number of rows for each file:
`IOXYZ.NRows = 1000`
Write only volume with energy deposit (this do not exclude the world):
`IOXYZ.writeonlyifenergydeposit = 0`
Exclude the world (NB: the world contains the initial energy and momentum):
`IOXYZ.removeWorldEvent = 0`
We used for this example the Space EM Physics List and the QGSP BIC HP hadronic physics list:
`PHYS.VERSION = AREMBESPhys`
`AREMBESPhys.PHYSLIST = SpacePhysics_QGSP_BIC_HP`
In the geometry configuration, we select first the class GDMLread:
`GEOM.VERSION = GDMLread`
Then we select the path to the GDML file and the name of the file. BoGEMMS-HPC has a dedicated directory for the GDML models but the user can select any path of choice:
The following keywords define the number of sensitive volumes:
`N.SENSITIVE.VOLUMES = 2`
and the name of the sensitive logical volumes:
`NAME.SENSITIVE.VOLUME.0 = vol0`
`NAME.SENSITIVE.VOLUME.1 = vol1`
The macro file opens a VRML2 scene and draws the volumes into a .wrl output files together with the trajectories. The user requires a wrl reader to open and visualize the file.
@@ -21,6 +21,36 @@ To create an independent application, with separated geometry and physics defini
If new files are added to the directory, cmake must be run again.
The user can copy and modify in the user path the geometry and physics classes of the example applications, or starting from the templates provided [here](https://www.ict.inaf.it/gitlab/icsc_g4_hpc/BoGEMMS-HPC/-/tree/main/templates?ref_type=heads).
### Adding a sensitive volume
To built the detector, the user can modify the provided examples or refer to the Geant4 standard documentation. To define a volume as sensitive, i.e. any interaction with that volume is written to the output, the user only needs to use this method, that exploits BoGEMMS global memory functionality:
`gm.AddXYZDetector( < logical volume >);`
For example, `gm.AddXYZDetector( log_erosita_coating)`.
### Defining a custom parameter
Both in the geometry and the physics user classes, the user can define custom parameters that are then set at runtime using the configuration file. The same class can then be used for multiple applications:
`<data_type> par_name = <value> * <unit>;` (initializing the parameter, this can also be moved to the header)
`gm.config->readInto(par_name, "SET.PAR.NAME");` (setting the parameter)