Package: ctapipe-io-magic
ctapipe_io_magicctapipeMAGIC event sourceEventSource plugin forctapipe, needed to read the calibrated data of the MAGIC telescope system. It requiresctapipe(v0.19.x) anduproot(>=5) packages to run.InstallationIfctapipeis already installed, the installation can be done viapip(the module is available in PyPI):pipinstallctapipe_io_magicAlternatively, you can always clone the repository and install like in the following:gitclonehttps://github.com/cta-observatory/ctapipe_io_magic.gitcdctapipe_io_magic
condaenvcreate-nctapipe-io_magic-fenvironment.yml
condaactivatectapipe-io_magic
pipinstall.Test DataTo run the tests, a set of non-public files is needed. If you are a member of MAGIC, ask one of the project maintainers for the credentials and then run:./download_test_data.shUsageimportctapipefromctapipe_io_magicimportMAGICEventSourcewithMAGICEventSource(input_url=file_name)asevent_source:foreventinevent_source:...someprocessing...With more recent versions ofctapipe, only one file at a time can be read. However, by default if a subrun of calibrated data is given as input,MAGICEventSourcewill read the events from all the subruns from the run to which the data file belongs. To suppress this behavior, setprocess_run=FalseNo matching of the events is performed at this level (if stereo data).Starting from v0.4.7,MAGICEventSourcewill automatically recognize the type of data contained in the calibrated ROOT files (stereo or mono; std trigger or SumT). For MC data, in the case stereo MC data are to be used for mono analysis, one can set to True theuse_mc_mono_eventsoption of theMAGICEventSourceto use also mono triggered events.Pedestal events (trigger pattern = 8) can be generated as well.The reader is able to handle real data or Monte Carlo files, which are automatically recognized. Note that the names of input files have to follow the convention:*_M[1-2]_RUNNUMBER.SUBRUNNR_Y_*.rootfor real data*_M[1-2]_za??to??_?_RUNNUMBER_Y_*.rootfor simulated data.However, the information which can be extracted from the file names is read directly from within the ROOT files.More usageSelect a single run:run=event_source._set_active_run(event_source.run_numbers[0])# run is an object of type MarsCalibratedRun# assuming we are reading data from a file from M1forninrange(run['data'].n_mono_events_m1):run['data'].get_mono_event_data(n,'M1')forninrange(run['data'].n_pedestal_events_m1):run['data'].get_pedestal_event_data(n,'M1')Select events triggering in stereo and pedestal events from a single telescope (recognized automatically) over event generator:# select (stereo) cosmic events from all subruns of a given run (the one to which file_name belongs)event_generator=MAGICEventSource(input_url=file_name)forcosmic_eventinevent_generator:...someprocessing...# select (stereo) cosmic events from a single subrunevent_generator=MAGICEventSource(input_url=file_name,process_run=False)forcosmic_eventinevent_generator:...someprocessing...# select pedestal eventspedestal_event_generator=MAGICEventSource(input_url=file_name,use_pedestals=True)forpedestal_eventinpedestal_event_generator:...someprocessing...FeaturesDrive reports interpolationBy default, when all subruns from a given run are processed, the drive reports are collected from all subruns so that the telescope pointing position for each event can be computed. Also in the case that only one subrun is processed (process_run=False), all drive reports from the subruns belonging to the same run will be used. This ensures that interpolation is performed correctly.Monitoring dataMonitoring data are saved inrun['data'].monitoring_dataand can also accessed event-wise via theevent.moncontainer. Available information is:dead pixels:event.mon.tel[tel_id].pixel_status.hardware_failing_pixels[0]hot pixels:event.mon.tel[tel_id].pixel_status.pedestal_failing_pixels[i_ped_type], wherei_ped_typeis an index indicating which pedestal type to use (0 isPedestalFundamental, 1 isPedestalFromExtractorand 2 isPedestalFromExtractorRndm)Dead and hot pixels are used inmagic-cta-pipefor the MAGIC cleaning.Simulation Configuration DataSome general information about the simulated data, useful for IRF calculation, are read from the root files and stored in data.simulation container.Changelogv0.1: Initial versionv0.2.0: Unification of data and MC readingv0.2.1: Monitoring data (Dead pixel and pedestal information)v0.2.2: Added MC Header infov0.2.3: Solve issue when interpolating information from drive reports, causing crashes when using pointing information in astropy SkyCoord objects. Make the reader faster when searching for ids of mono and stereo eventsv0.2.4: fixes in mono_event_generator; fix to allow the use of relative paths asinput_urlv0.3.0: update uproot to v4, since v3 is deprecatedv0.4.0: version compatible with ctapipe v0.12v0.4.1: added CI, refactoring of code, added tests, extract drive information oncev0.4.2: added more tests, refactored code, allow the processing of all subruns from the same run at the same time (including drive information), correct de-rotation of quantities from the CORSIKA frame to the geographical frame, computation of bad pixels, modification of focal length to take into account the coma aberration, fix dowload of test data setv0.4.3: difference of arrival times between events read from ROOT files, used for effective observation time calculationv0.4.4: changed units of peak_time from time slices (as stored in MARS) to nanosecondsv0.4.5: fixed automatic tests, add possibility to choose between effective and nominal focal lengthv0.4.6: add support to read in data taken in mono mode (full for real data, partial for MCs). Fixed bug in recognition of mono/stereo or standard trigger/SumT data (added also for MC)v0.4.7: add full support to read in real and MC data taken in mono mode, and with SumT. Added treatment of unsuitable pixels for MC data. Added readout of true XMax value from MC data (usually not available, filled with 0 otherwise)v0.5.0: release compatible with ctapipe 0.17. Also, the equivalent focal length is set to the
correct value used in MAGIC simulations (i.e. 16.97 meters)v0.5.1: release compatible with ctapipe 0.19v0.5.2: introduce capability of reading data taken with the Hardware Stereo Trigger (HaST) between MAGIC and LST-1. Also, fixed bug when getting the time difference between events for mono datav0.5.3: support for python 3.11v0.5.4: change license to BSD-3, add badges in README, do not use default channel in environment