Source code for NuRadioMC.SignalProp.propagation

from __future__ import absolute_import, division, print_function

solution_types = {1: 'direct',
                      2: 'refracted',
                      3: 'reflected'}
solution_types_revert = {v:k for k, v in solution_types.items()}

available_modules = ['analytic',
                     'radiopropa',
                     'direct_ray']

reflection_case = {1: 'upwards launch vector',
                   2: 'downward launch vector'}

[docs]def get_propagation_module(name=None): """ wrapper around all propagation modules The function returns the python class of the respective propagation module Parameters ---------- name: string Which ray tracing module to use. Options are: * "analytic" : analytic ray tracer. Requires that the index of refraction is of an exponential form. * "radiopropa" : the RadioPropa numerical ray tracer. Supports an arbitrary index of refraction, but requires that RadioPropa is installed. * "direct_ray" : a dummy ray tracer that draws straight lines and ignores refraction. Useful for debugging. """ if name is None: from NuRadioMC.SignalProp.propagation_base_class import ray_tracing_base return ray_tracing_base elif(name==available_modules[0]): from NuRadioMC.SignalProp.analyticraytracing import ray_tracing return ray_tracing elif(name==available_modules[2]): from NuRadioMC.SignalProp.directRayTracing import direct_ray_tracing return direct_ray_tracing elif(name==available_modules[1]): from NuRadioMC.SignalProp.radioproparaytracing import radiopropa_ray_tracing return radiopropa_ray_tracing else: msg = "Module \'{}\' not implemented. Available modules: {}".format( name, str(available_modules)) raise NotImplementedError(msg)