Using reboost processors

A processor in reboost is a function computing a new quantity of interest. For example, the energy deposited after correction for the HPGe surface responses.

A special set of processors handles grouping of the “steps” from remage, i.e. discrete energy depositions into the detectors into “hits”. A hit corresponds to a physical interaction in the detector, related to the time-resolution of the detector.

Step-grouping

A special class of processors implements the conversion of steps into the basic hit tier output. These processors convert the “regular” structure of the remage output into a jagged structure, where each row corresponds to a “hit” and the fields are variable length vectors containing information on the steps in each hit.

Note

This is only relevant if the “flat” output structure of remage files is used.

Currently two step-grouping options are implemented. Once the remage output is loaded as an awkward array, we can either group by Geant4 event id or by time and event id.

# read the data with awkward
data = lh5.read(f"stp/{det_name}", file_path).view_as("ak")

# group by evtid
hits_by_evtid = group_by_evtid(data)

# group also by time
hits_by_time = group_by_time(data, window=10)  # unit is us

Other processors

Additional reboost processors compute further quantities of interest. This can consist of:

  • reduction (e.g. summing over steps),

  • clustering (e.g. grouping steps within one hit into various clusters thus adding a dimension),

  • computing other quantities (eg. PSD heuristics etc.).

The only prescription for a reboost processor is that the function should return an awkward.Array. These processors should not change the length of the object, i.e. they should only act on axes more than 1.

The input parameters for processors should also be accepted as lgdo.LGDO objects, or as awkward.Array instances.

Physical units can be attached to the attributes of the awkward.Array or lgdo.LGDO following the LEGEND dataformat specification link.

The reboost.units module contains various functionalities to extract, set and manipulate these units.

Documentation describing the various processors is contained in the API documentation. You can then import these functions and use them in your python scripts for simple post-processing!