Commit eb54f85c authored by Ambra Di Piano's avatar Ambra Di Piano
Browse files

fix irf adjustment

parent fb1a62e3
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -33,8 +33,7 @@ def base_simulator(configuration_file):
        # check pointing option
        simulator, point = set_pointing(simulator, configuration['simulator'], log)
        # complete configuration
        simulator = configure_simulator_no_visibility(simulator, configuration['simulator'])
        log.debug(f"IRF [{configuration['simulator']['irf']}] > energy range: {simulator.e} TeV")
        simulator = configure_simulator_no_visibility(simulator, configuration['simulator'], log)
        simulator.run_simulation()
        log.info(f"Simulation (seed = {configuration['simulator']['seed']}) complete, took {time() - clock_sim} s")
        configuration['simulator']['seed'] += 1
+6 −2
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
# *****************************************************************************

import pytest
from os.path import isdir
from astrort.utils.utils import *

@pytest.mark.test_tmp_folder
@@ -64,6 +65,9 @@ def test_get_instrument_tev_range(array):

@pytest.mark.parametrize('array', ['lst', 'mst', 'sst', 'north', 'south'])
def test_select_irf(array):
    irf = select_random_irf(array, 'prod5-v0.1')
    prod = 'prod5-v0.1'
    path = join(expandvars('$CALDB'), f'data/cta/{prod}/bcf')
    irf = select_random_irf(array, prod)
    assert array in irf.lower()
    assert 'share/caldb/data/cta' in irf.lower()
    assert 'share/caldb/data/cta' in join(path, irf).lower()
    assert isdir(join(path, irf)) is True
+11 −1
Original line number Diff line number Diff line
@@ -54,8 +54,18 @@ def get_instrument_tev_range(array):
        erange = [0.03, 150]
    return erange

def adjust_tev_range_to_irf(erange, irf):
    # minimum energy
    if "z60" in irf and erange[0] < 0.11:
        erange[0] = 0.11
    elif "z40" in irf and erange[0] < 0.04:
        erange[0] = 0.04
    elif "z20" in irf and erange[0] < 0.03:
        erange[0] = 0.03
    return erange

def select_random_irf(array, prod):
    path = join(expandvars('$CALDB'), f'data/cta/{prod}/bcf')
    irfs = listdir(path)
    irf = random.choice([i for i in irfs if array in i.lower()])
    return join(path, irf)
 No newline at end of file
    return irf
 No newline at end of file
+5 −4
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ def load_yaml_conf(yamlfile):
        CheckConfiguration(configuration=configuration)
    return configuration

def configure_simulator_no_visibility(simulator, configuration):
def configure_simulator_no_visibility(simulator, configuration, log):
    if '$TEMPLATES$' in configuration['model']:
        configuration['model'] = join(dirname(abspath(__file__)).replace('utils', 'templates'), basename(configuration['model']))
    simulator.model = configuration['model']
@@ -30,21 +30,22 @@ def configure_simulator_no_visibility(simulator, configuration):
    simulator.caldb = configuration['prod']
    if configuration['irf'] == 'random':
        simulator.irf = select_random_irf(configuration['array'], configuration['prod'])
        log.info(f"Randomising instrument response function [{simulator.irf}]")
    else:
        simulator.irf = configuration['irf']
    simulator.fov = get_instrument_fov(configuration['array'])
    simulator.t = [0, configuration['duration']]
    simulator.e = check_energy_thresholds(get_instrument_tev_range(configuration['array']), configuration['irf'])
    simulator.e = adjust_tev_range_to_irf(get_instrument_tev_range(configuration['array']), simulator.irf)
    log.info(f"Verified energy range {simulator.e}")
    simulator.seed = configuration['seed']
    simulator.set_log = False
    return simulator

def set_pointing(simulator, configuration, log):
    if configuration['pointing'] == 'random':
        log.info(f"Randomising pointing coordinates")
        point = randomise_pointing_sim(configuration)
        log.info(f"Randomising pointing coordinates [{point['point_ra']}, {point['point_dec']}]")
    else:
        log.info(f"Using fixed pointing coordinates")
        point = get_point_source_info(configuration)
    simulator.ra = point['point_ra']
    simulator.dec = point['point_dec']