import numpy as np import sapphire from sapphire import Station detectors = Station(501).info['scintillators'] for detector in detectors: print(detector) def afstand(detector_1, detector_2): '''Bepaal de afstand tussen twee detectoren''' c = detector_2['radius'] b = detector_1['radius'] alpha = np.radians(detector_2['alpha'] - detector_1['alpha']) return (b ** 2 + c ** 2 - 2 * b * c * np.cos(alpha)) ** .5 print(afstand(detectors[0], detectors[3])) import tables data = tables.open_file('data.h5', 'a') if '/s501/events' not in data: data = sapphire.quick_download(501) else: print(data.root.s501.events) events = data.root.s501.events.read() event = events[0] print(event) tijdkolommen = ['t1', 't2', 't3', 't4'] for kolom in tijdkolommen: print(event[kolom]) from itertools import combinations def zenithoeken(event, detectors): ''' De zenithoek is de hoek tussen het golf-front en de horizon, of ook tussen de as naar het zenith en de as van de deeltjeslawine. parameters event: een enkel event uit de opgehaalde data detectors: de detectorinformatie uit de API returns een array met de hoek tussen de as door twee detectors en het deeltjes front. ''' c = 0.2998 # in m/ns tijden = [event['t1'], event['t2'], event['t3'], event['t4']] detector_tijd_paren = zip(detectors, tijden) zenith = [] for paar1, paar2 in combinations(detector_tijd_paren, 2): detector1, t1 = paar1 detector2, t2 = paar2 if t1 < 0. or t2 < 0.: continue schuine = afstand(detector1, detector2) overstaande = c * (t1 - t2) angle = np.degrees(np.arcsin(overstaande / schuine)) zenith.append(angle) return zenith print(zenithoeken(event, detectors)) for event in events[0:10]: print(zenithoeken(event, detectors))