import numpy as np import astropy.time as astrotime from _paths import PATHS from _loader import runlist_loader src_path = os.path.join(PATHS.local, "hese_scan_maps_truncated") runlist_path = os.path.join(PATHS.local, "runlists") outpath = os.path.join(PATHS.local, "source_list") if not os.path.isdir(outpath): os.makedirs(outpath) # Load runlists runlists = runlist_loader("all") # Load sources up to HESE 6yr, list from: # https://wiki.icecube.wisc.edu/index.php/Analysis_of_pre-public_alert_HESE/EHE_events#HESE # Last Run ID is 127853 from late 86V (2015) run, next from 7yr is 128290 src_files = sorted(glob(os.path.join(src_path, "*.json.gz"))) sources = [] for src_file in src_files: with gzip.open(src_file) as _f: src_dict = json.load(_f) # Build a compact version with all relevant infos src_i = {} for key in ["run_id", "event_id", "mjd"]: src_i[key] = src_dict[key] # Store best fit from direct local trafo and map maximum
hor = np.sin(np.deg2rad(30)) sd_lo, sd_hi = -1., 1. sindec_bins = np.unique( np.concatenate([ np.linspace(sd_lo, -hor, 3 + 1), # south np.linspace(-hor, +hor, 14 + 1), # horizon np.linspace(+hor, sd_hi, 3 + 1), # north ])) # Make settings for each module per sample sample_names = source_list_loader() for key in sample_names: print("Building settings file for sample '{}'".format(key)) # Load data that settings depend on srcs = source_list_loader(key)[key] runlist = runlist_loader(key)[key] exp_off = off_data_loader(key)[key] exp_on = on_data_loader(key)[key] mc = mc_loader(key)[key] # :: BG injector :: # Rebinning for the rate model fits, use monthly bins if key == "IC86_2012-2014": n_rate_bins = 36 else: n_rate_bins = 12 rate_rebins = np.linspace(np.amin(exp_off["time"]), np.amax(exp_off["time"]), n_rate_bins) # We want the parameter spline to stick a little bit to the points spl_s = len(sindec_bins) / 2 bg_inj_opts = {
# Load files and build the models one after another to save memory bg_injs = {} sig_injs = {} llhs = {} # Load files and build the models one after another to save memory sample_names = _loader.source_list_loader() for key in sample_names: print("\n" + 80 * "#") print("# :: Setup for sample {} ::".format(key)) opts = _loader.settings_loader(key)[key].copy() exp_off = _loader.off_data_loader(key)[key] mc = _loader.mc_loader(key)[key] srcs = _loader.source_list_loader(key)[key] runlist = _loader.runlist_loader(key)[key] # Process to tdepps format srcs_rec = make_src_records(srcs, dt0=dt0, dt1=dt1) # Setup BG injector bg_inj_i = TimeDecDependentBGDataInjector(inj_opts=opts["bg_inj_opts"], random_state=rndgen) bg_inj_i.fit(X=exp_off, srcs=srcs_rec, run_list=runlist) bg_injs[key] = bg_inj_i # Setup LLH model and LLH fmod = opts["model_energy_opts"].pop("flux_model") flux_model = flux_model_factory(fmod["model"], **fmod["args"]) opts["model_energy_opts"]["flux_model"] = flux_model llhmod = GRBModel(X=exp_off, MC=mc,