Skip to content

Commit

Permalink
Interpolate in HDF5EventSource
Browse files Browse the repository at this point in the history
  • Loading branch information
maxnoe committed Oct 19, 2023
1 parent a872749 commit 8eb4cf1
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 18 deletions.
51 changes: 37 additions & 14 deletions ctapipe/io/hdf5eventsource.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
SimulatedShowerContainer,
SimulationConfigContainer,
TelescopeImpactParameterContainer,
TelescopePointingContainer,
TelescopeTriggerContainer,
TelEventIndexContainer,
TimingParametersContainer,
Expand All @@ -51,7 +52,8 @@
from .datalevels import DataLevel
from .eventsource import EventSource
from .hdf5tableio import HDF5TableReader, get_column_attrs
from .tableloader import DL2_SUBARRAY_GROUP, DL2_TELESCOPE_GROUP
from .pointing import PointingInterpolator
from .tableloader import DL2_SUBARRAY_GROUP, DL2_TELESCOPE_GROUP, POINTING_GROUP

__all__ = ["HDF5EventSource"]

Expand Down Expand Up @@ -570,10 +572,17 @@ def _generator(self):
self.file_.root.dl1.monitoring.subarray.pointing.col("time")
)

tel_pointing_finder = {
table.name: IndexFinder(table.col("time"))
for table in self.file_.root.dl1.monitoring.telescope.pointing
}
if POINTING_GROUP in self.file_.root:
pointing_interpolator = PointingInterpolator(
h5file=self.file_,
parent=self,
)
else:
pointing_interpolator = None
tel_pointing_finder = {
table.name: IndexFinder(table.col("time"))
for table in self.file_.root.dl1.monitoring.telescope.pointing
}

counter = 0
for trigger, index in events:
Expand Down Expand Up @@ -624,7 +633,9 @@ def _generator(self):
continue

self._fill_array_pointing(data, array_pointing_finder)
self._fill_telescope_pointing(data, tel_pointing_finder)
self._fill_telescope_pointing(
data, tel_pointing_finder, pointing_interpolator
)

for tel_id in data.trigger.tel.keys():
key = f"tel_{tel_id:03d}"
Expand Down Expand Up @@ -730,10 +741,21 @@ def _fill_array_pointing(self, data, array_pointing_finder):
self._subarray_pointing_attrs["array_dec"]["UNIT"],
)

def _fill_telescope_pointing(self, data, tel_pointing_finder):
def _fill_telescope_pointing(
self, data, tel_pointing_finder, tel_pointing_interpolator=None
):
"""
Fill the telescope pointing information of a given event
"""
if tel_pointing_interpolator is not None:
for tel_id, trigger in data.trigger.tel.items():
alt, az = tel_pointing_interpolator(tel_id, trigger.time)
data.pointing.tel[tel_id] = TelescopePointingContainer(
altitude=alt,
azimuth=az,
)
return

# Same comments as to _fill_array_pointing apply
pointing_group = self.file_.root.dl1.monitoring.telescope.pointing
for tel_id in data.trigger.tel.keys():
Expand All @@ -749,11 +771,12 @@ def _fill_telescope_pointing(self, data, tel_pointing_finder):

pointing_telescope = tel_pointing_table[closest_time_index]
attrs = self._telescope_pointing_attrs(tel_id)
data.pointing.tel[tel_id].azimuth = u.Quantity(
pointing_telescope["azimuth"],
attrs["azimuth"]["UNIT"],
)
data.pointing.tel[tel_id].altitude = u.Quantity(
pointing_telescope["altitude"],
attrs["altitude"]["UNIT"],
data.pointing.tel[tel_id] = TelescopePointingContainer(
azimuth=u.Quantity(
pointing_telescope["azimuth"], attrs["azimuth"]["UNIT"]
),
altitude=u.Quantity(
pointing_telescope["altitude"],
attrs["altitude"]["UNIT"],
),
)
6 changes: 2 additions & 4 deletions ctapipe/io/tableloader.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,10 @@
from astropy.table import Table, hstack, vstack
from astropy.utils.decorators import lazyproperty

from ctapipe.instrument.optics import FocalLengthKind
from ctapipe.io.pointing import PointingInterpolator

from ..core import Component, Provenance, traits
from ..instrument import SubarrayDescription
from ..instrument import FocalLengthKind, SubarrayDescription
from .astropy_helpers import join_allow_empty, read_table
from .pointing import PointingInterpolator

__all__ = ["TableLoader"]

Expand Down

0 comments on commit 8eb4cf1

Please sign in to comment.