Skip to content

How a calculation fits together

A HERMES product is assembled in four layers:

physical ingredients  ->  process integrator  ->  skymap  ->  output writer
CR, gas, fields, xsec     line of sight           HEALPix     FITS/CTA

Physical ingredients

Ingredients answer local questions such as:

  • What is the cosmic-ray density at this energy and Galactic position?
  • What is the gas or free-electron density here?
  • What is the magnetic or radiation field?
  • What is the differential cross section for this primary and secondary energy?
  • What is the dark-matter density and particle yield?

Models are independent objects. Replacing Kamae06Gamma with AAfragGamma, for example, changes the interaction model without changing the map or FITS code.

Process integrator

An integrator combines the ingredients into an emissivity or propagation quantity and integrates it from the observer to the Galactic boundary. Its observer position defaults to (8.5 kpc, 0, 0); set it explicitly in reproducible work:

integrator.setObsPosition(
    hermes.Vector3QLength(8.0 * units.kpc, 0.0 * units.kpc, 0.0 * units.kpc)
)

Several emission integrators can precompute a three-dimensional cache for the current map energy or frequency. The cache trades initialization time and memory for faster repeated line-of-sight evaluation.

Skymap

The skymap supplies the HEALPix NSIDE, energy or frequency, and optional sky mask. compute() distributes unmasked pixels over worker threads and asks the integrator to evaluate each direction.

Use the map type that matches the integrator output:

Product Map class
Differential gamma/neutrino intensity GammaSkymap
Energy range of differential intensities GammaSkymapRange
Brightness temperature RadioSkymap (RadioSkymapRange is currently C++ only)
Dispersion measure DispersionMeasureSkymap
Rotation measure RotationMeasureSkymap

Output writer

outputs.HEALPixFormat writes a FITS binary table with RING ordering, Galactic coordinates, physical units, the map parameter, process description, and the HERMES Git description. outputs.CTAFormat is available for CTA-oriented products.

Treat the output file, command line, code revision, data version, and model choices as one reproducibility record.