icecube.tpx.segments module

icecube.tpx.segments.CalibrateSLCs(tray, name, Launches='IceTopRawData', SLCVEMPulses='OfflineIceTopSLCVEMPulses', SLCTankPulses='OfflineIceTopSLCTankPulses', VEMalready=True)

This extracts and calibrates SLC pulses. The current implementation MAY need to know the ATWD channel used and therefore needs access to the waveforms generated by I3WaveformSplitter. Since these are discarded, they have to be produced again (hence this segment).

If waveforms (launches) are not available, the calibrator module will make an educated guess about which p0/p1 to use, based on the pulse’s charge.

It draws its calibration constants from the “I3IceTopSLCCalibrationCollection” object that lives in the C-frame.

The current implementation of SLC calibration is done after VEM calibration. The proper place to do it would be in level2_CalibrateAndExtractPulses.CalibrateAndExtractIceTop.

This segment also includes ‘merging’ the SLC pulses into the tank pulses container.

icecube.tpx.segments.CalibrateSLCs_Legacy(tray, name, Config=None, Launches='IceTopRawData', SLCVEMPulses='OfflineIceTopSLCVEMPulses', SLCTankPulses='OfflineIceTopSLCTankPulses')

Similar to the above, except that this version REQUIRES the waveforms, and will not calibrate pulses at all (or run TankPulseMerger to produce TankPulses) without them.

Also, this version uses a PICKLE FILE as an input to the old calibrator module.

If we achieve success with the modified version above, then this version can be removed.