NuRadioReco.modules.voltageToEfieldConverter module

NuRadioReco.modules.voltageToEfieldConverter.get_array_of_channels(station, use_channels, det, zenith, azimuth, antenna_pattern_provider, time_domain=False, efield_position=None)[source]

Get the voltage traces and antenna factors for the electric field reconstruction.

Parameters:
stationNuRadioReco.framework.station.Station

The station object containing the channels and their parameters.

use_channelslist of int

The channel ids to use for the electric field reconstruction.

detNuRadioReco.detector.Detector

The detector object containing the site and antenna information.

zenithfloat

The zenith angle of the incoming signal in radians.

azimuthfloat

The azimuth angle of the incoming signal in radians.

antenna_pattern_providerNuRadioReco.detector.antennapattern.AntennaPatternProvider

The antenna pattern provider to get the antenna response functions.

efield_positionnumpy array, optional

The position where the electric field is calculated - determines time shift of the voltage traces. If None, it raises an error.

time_domainbool, optional

If True, returns the time domain traces as well. Default is False.

Returns:
timesnumpy array

The time array of the traces.

efield_antenna_factornumpy array

The antenna factor for the electric field at the given position.

Vnumpy array

The frequency spectrum of the voltage traces for the selected channels.

V_timedomainnumpy array, optional

The time domain traces for the selected channels, if time_domain is True.

NuRadioReco.modules.voltageToEfieldConverter.stacked_lstsq(L, b, rcond=1e-10)[source]

Solve L x = b, via SVD least squares cutting of small singular values L is an array of shape (…, M, N) and b of shape (…, M). Returns x of shape (…, N)

Note that if L is symmetric, it is inverted analytically instead.

class NuRadioReco.modules.voltageToEfieldConverter.voltageToEfieldConverter[source]

Bases: object

Unfold the electric field from the channel voltages

This module reconstructs the electric field by solving the system of equation that relate the incident electric field via the antenna response functions to the measured voltages (see Eq. 4 of the NuRadioReco paper https://link.springer.com/article/10.1140/epjc/s10052-019-6971-5). The module assumed that the electric field is identical at the antennas/channels that are used for the reconstruction. Furthermore, at least two antennas with orthogonal polarization response are needed to reconstruct the 3dim electric field. Alternatively, the polarization of the resulting efield could be forced to a single polarization component. In that case, a single antenna is sufficient.

Methods

run(evt, station, det[, use_channels, ...])

run method.

begin

end

begin()[source]
run(evt, station, det, use_channels=None, use_MC_direction=False, force_Polarization='')[source]

run method. This function is executed for each event

Parameters:
evtNuRadioReco.framework.event.Event
stationNuRadioReco.framework.base_station.BaseStation
detDetector object
use_channels: array of ints (default: [0, 1, 2, 3])

the channel ids to use for the electric field reconstruction

use_MC_direction: bool, default: False

If True uses zenith and azimuth direction from simulated station. Otherwise, uses reconstructed direction from station parameters.

force_Polarization: str, optional

If eTheta or ePhi, then only reconstructs chosen polarization of electric field, assuming the other is 0. Otherwise (default), reconstructs electric field for both eTheta and ePhi

end()[source]