NuRadioReco.modules.phasedarray package

Submodules

NuRadioReco.modules.phasedarray.triggerSimulator module

class NuRadioReco.modules.phasedarray.triggerSimulator.triggerSimulator

Bases: object

Calculates the trigger for a phased array with a primary and a secondary beam. The channels that participate in both beams and the pointing angle for each subbeam can be specified.

See https://arxiv.org/pdf/1809.04573.pdf

begin(debug=False, pre_trigger_time=100)
check_vertical_string(station, det, triggered_channels)

Checks if the triggering antennas lie in a straight vertical line

end()
get_antenna_positions(station, det, triggered_channels=None, component=2)

Calculates the vertical coordinates of the antennas of the detector

get_beam_rolls(station, det, triggered_channels, phasing_angles=array([-0.9250245, -0.76059219, -0.61880925, -0.49017544, -0.36987162, -0.25496423, -0.14341699, -0.03364725, 0.07571637, 0.1859996, 0.29863294, 0.41533762, 0.53842424, 0.67138216, 0.82030475]), ref_index=1.55, trigger_adc=False, upsampling_factor=None)

Calculates the delays needed for phasing the array.

get_channel_trace_start_time(station, triggered_channels)
phased_trigger(station, det, beam_rolls, sec_beam_rolls, triggered_channels, threshold, window_time=10.67, cut_times=(None, None), trigger_adc=False, upsampling_factor=None, nyquist_zone=None, bandwidth_edge=0.02)

Calculates the trigger for a certain phasing configuration. Beams are formed. A set of overlapping time windows is created and the square of the voltage is averaged within each window. If the average surpasses the given threshold squared times the number of antennas in any of these windows, a trigger is created. This is an ARA-like power trigger.

station: Station object

Description of the current station

det: Detector object

Description of the current detector

beam_rolls: array of ints

Contains the integers for rolling the voltage traces (delays)

sec_beam_rolls: array of ints

Contains the secondary beam integers for rolling the voltage traces (delays)

triggered_channels: array of ints

Ids of the triggering channels

threshold: float

Voltage threshold for a SINGLE antenna. It will be rescaled with the square root of the number of antennas.

window_time: float

Width of the time window used in the power integration

cut_times: (float, float) tuple

Times for cutting the trace. This helps reducing the number of noise-induced triggers.

trigger_adc: bool

If True, analog to digital conversion is performed. It must be specified in the detector file. See analogToDigitalConverter module for information

upsampling_factor: integer

Upsampling factor. The trace will be a upsampled to a sampling frequency int_factor times higher than the original one before conversion to digital

nyquist_zone: integer

To be used with the trigger_adc function If None, the trace is not filtered If n, it uses the n-th Nyquist zone by applying an 8th-order Butterworth filter with critical frequencies: (n-1) * adc_sampling_frequency/2 + bandwidth_edge and n * adc_sampling_frequency/2 - bandwidth_edge

bandwidth_edge: float

Frequency interval used for filtering the chosen Nyquist zone. See above

is_triggered: bool

True if the triggering condition is met

trigger_delays: dictionary

the delays for the primary channels that have caused a trigger. If there is no trigger, it’s an empty dictionary

sec_trigger_delays: dictionary

the delays for the secondary channels that have caused a trigger. If there is no trigger or no secondary channels, it’s an empty dictionary

run(evt, station, det, threshold=0.06, triggered_channels=None, secondary_channels=None, trigger_name='simple_phased_threshold', phasing_angles=array([-0.9250245, -0.76059219, -0.61880925, -0.49017544, -0.36987162, -0.25496423, -0.14341699, -0.03364725, 0.07571637, 0.1859996, 0.29863294, 0.41533762, 0.53842424, 0.67138216, 0.82030475]), secondary_phasing_angles=array([-0.84280835, -0.68970072, -0.55449235, -0.43002353, -0.31241792, -0.19919061, -0.08853212, 0.02103456, 0.13085798, 0.24231627, 0.35698528, 0.47688093, 0.6049032, 0.74584345, 0.88139127]), set_not_triggered=False, window_time=10.67, coupled=True, ref_index=1.75, cut_times=(None, None), trigger_adc=False, upsampling_factor=None, nyquist_zone=None, bandwidth_edge=0.02)

simulates phased array trigger for each event

Several channels are phased by delaying their signals by an amount given by a pointing angle. Several pointing angles are possible in order to cover the sky. The array triggered_channels controls the channels that are phased, according to the angles phasing_angles. A secondary phasing that is added to this primary phasing is possible, and it is controlled by the parametres secondary_channels and secondary_phasing_angles.

evt: Event object

Description of the current event

station: Station object

Description of the current station

det: Detector object

Description of the current detector

threshold: float

threshold above (or below) a trigger is issued, absolute amplitude

triggered_channels: array of ints

channels ids of the channels that form the primary phasing array if None, all channels are taken

secondary_channels: array of int

channel ids of the channels that form the secondary phasing array if None, no channels are taken

trigger_name: string

name for the trigger

phasing_angles: array of float

pointing angles for the primary beam

secondary_phasing_angles: array of float

pointing angles for the secondary beam

set_not_triggered: bool (default: False)

if True not trigger simulation will be performed and this trigger will be set to not_triggered

window_time: float

Width of the time window used in the power integration

coupled: bool

if True, the primary sub-beams are paired to the secondary sub-beams. if False, the primary sub-beams and the secondary sub-beams specify independent beams.

ref_index: float

refractive index for beam forming

cut_times: (float, float) tuple

Times for cutting the trace. This helps reducing the number of noise-induced triggers.

trigger_adc: bool

If True, analog to digital conversion is performed. It must be specified in the detector file. See analogToDigitalConverter module for information

upsampling_factor: integer

Upsampling factor. The trace will be a upsampled to a sampling frequency int_factor times higher than the original one before conversion to digital

nyquist_zone: integer

To be used with the trigger_adc function If None, the trace is not filtered If n, it uses the n-th Nyquist zone by applying an 8th-order Butterworth filter with critical frequencies: (n-1) * adc_sampling_frequency/2 + bandwidth_edge and n * adc_sampling_frequency/2 - bandwidth_edge

bandwidth_edge: float

Frequency interval used for filtering the chosen Nyquist zone. See above

is_triggered: bool

True if the triggering condition is met

Module contents