Is your feature request related to a problem? Please describe.
I3TruthExtractor only supports in-ice data, making it impossible to extract truth-level information from IceTop frames without a separate extractor.
Describe the solution you'd like
Add an ice_top boolean toggle to I3TruthExtractor that, when set to True, switches to IceTop-specific frame keys (e.g. "MCPrimary") and skips in-ice-only computations such as dbang_decay_length.
Describe alternatives you've considered
I3IceTopTruthExtractor class, but this would duplicate significant amounts of logic that is shared between in-ice and IceTop truth extraction.
Additional context
The changes affect I3TruthExtractor, frame_is_montecarlo, and frame_is_noise, with the toggle defaulting to False to preserve all existing in-ice behavior.
If the existing I3TruthExtractor is used on IceTop data, all extracted truth values are returned as padding values in addition to misidentifying the simulated IceTop data as real data as shown below:

Is your feature request related to a problem? Please describe.
I3TruthExtractor only supports in-ice data, making it impossible to extract truth-level information from IceTop frames without a separate extractor.
Describe the solution you'd like
Add an ice_top boolean toggle to I3TruthExtractor that, when set to True, switches to IceTop-specific frame keys (e.g. "MCPrimary") and skips in-ice-only computations such as dbang_decay_length.
Describe alternatives you've considered
I3IceTopTruthExtractor class, but this would duplicate significant amounts of logic that is shared between in-ice and IceTop truth extraction.
Additional context
The changes affect I3TruthExtractor, frame_is_montecarlo, and frame_is_noise, with the toggle defaulting to False to preserve all existing in-ice behavior.
If the existing I3TruthExtractor is used on IceTop data, all extracted truth values are returned as padding values in addition to misidentifying the simulated IceTop data as real data as shown below: