From e1adc3cca0023422e6774c30fd6af17902fdf659 Mon Sep 17 00:00:00 2001 From: YoshikiOhtani Date: Wed, 27 Apr 2022 10:04:27 +0000 Subject: [PATCH 01/10] Added units to "time_sec" and "time_nanosec" parameters --- magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py b/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py index 87d9d5cd9..516491e92 100644 --- a/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py +++ b/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py @@ -76,8 +76,9 @@ class EventInfoContainer(Container): tel_id = Field(-1, 'Telescope ID') pointing_alt = Field(-1, 'Telescope pointing altitude', u.rad) pointing_az = Field(-1, 'Telescope pointing azimuth', u.rad) - time_sec = Field(-1, 'Event trigger time second') - time_nanosec = Field(-1, 'Event trigger time nanosecond') + time_sec = Field(-1, 'Event trigger time second', u.s) + time_nanosec = Field(-1, 'Event trigger time nanosecond', u.ns) + time_diff = Field(-1, 'Event trigger time difference from the previous event', u.s) n_pixels = Field(-1, 'Number of pixels of a cleaned image') n_islands = Field(-1, 'Number of islands of a cleaned image') @@ -311,8 +312,8 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): # here we set the integral and fractional parts separately as "time_sec" and "time_nanosec": fractional, integral = np.modf(timestamp) - time_sec = int(np.round(integral)) - time_nanosec = int(np.round(fractional * sec2nsec)) + time_sec = u.Quantity(np.round(integral), u.s) + time_nanosec = u.Quantity(np.round(fractional * sec2nsec), u.ns) # Set the event information to the container: event_info = EventInfoContainer( From a0a3e174c7d50a3fa6f37d1b5bb8d14faf97e51b Mon Sep 17 00:00:00 2001 From: YoshikiOhtani Date: Wed, 27 Apr 2022 13:39:27 +0000 Subject: [PATCH 02/10] Added event time differences in the event container --- .../scripts/lst1_magic/magic_calib_to_dl1.py | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py b/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py index 516491e92..5dae63339 100644 --- a/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py +++ b/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py @@ -146,8 +146,6 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): logger.warning('\nHot pixels do not exist in a simulation. Setting the "find_hotpixels" option to False...') config_cleaning.update({'find_hotpixels': False}) - unsuitable_mask = None - tel_position = subarray.positions[tel_id] focal_length = subarray.tel[tel_id].optics.equivalent_focal_length @@ -157,13 +155,6 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): ) else: - pedestal_type = config_cleaning.pop('pedestal_type') - - if pedestal_type not in pedestal_types: - raise KeyError(f'Unknown pedestal type "{pedestal_type}".') - - i_ped_type = np.where(np.array(pedestal_types) == pedestal_type)[0][0] - if config_cleaning['find_hotpixels'] == 'auto': logger.info('\nSetting the "find_hotpixels" option to True...') config_cleaning.update({'find_hotpixels': True}) @@ -173,9 +164,25 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): for root_file in event_source.file_list: logger.info(root_file) + time_diffs = event_source.event_time_diffs + # Configure the MAGIC image cleaning: magic_clean = MAGICClean(camera_geom, config_cleaning) + find_hotpixels = config_cleaning['find_hotpixels'] + + if find_hotpixels: + + pedestal_type = config_cleaning.pop('pedestal_type') + + if pedestal_type not in pedestal_types: + raise KeyError(f'Unknown pedestal type "{pedestal_type}".') + + i_ped_type = np.where(np.array(pedestal_types) == pedestal_type)[0][0] + + else: + unsuitable_mask = None + # Prepare for saving data to an output file: Path(output_dir).mkdir(exist_ok=True, parents=True) @@ -205,7 +212,7 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): if event.count % 100 == 0: logger.info(f'{event.count} events') - if not is_simulation: + if find_hotpixels: dead_pixels = event.mon.tel[tel_id].pixel_status.hardware_failing_pixels[0] badrms_pixels = event.mon.tel[tel_id].pixel_status.pedestal_failing_pixels[i_ped_type] unsuitable_mask = np.logical_or(dead_pixels, badrms_pixels) @@ -312,8 +319,10 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): # here we set the integral and fractional parts separately as "time_sec" and "time_nanosec": fractional, integral = np.modf(timestamp) - time_sec = u.Quantity(np.round(integral), u.s) - time_nanosec = u.Quantity(np.round(fractional * sec2nsec), u.ns) + time_sec = u.Quantity(int(np.round(integral)), u.s) + time_nanosec = u.Quantity(int(np.round(fractional * sec2nsec)), u.ns) + + time_diff = time_diffs[event.count] # Set the event information to the container: event_info = EventInfoContainer( @@ -323,6 +332,7 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): pointing_az=event.pointing.tel[tel_id].azimuth, time_sec=time_sec, time_nanosec=time_nanosec, + time_diff=time_diff, n_pixels=n_pixels, n_islands=n_islands, ) From 6cb413b0c54616bf3b95de9d63406babe4c0531f Mon Sep 17 00:00:00 2001 From: YoshikiOhtani Date: Wed, 27 Apr 2022 13:40:58 +0000 Subject: [PATCH 03/10] Changed the required version of ctapipe_io_magic to get the time differences --- environment.yml | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/environment.yml b/environment.yml index 8eb552b53..76df72b57 100644 --- a/environment.yml +++ b/environment.yml @@ -49,7 +49,7 @@ dependencies: - conda-forge::corsikaio - pip: - lstchain~=0.9.0 - - ctapipe_io_magic~=0.4.1 + - ctapipe_io_magic~=0.4.3 - uproot~=4.1 - ctaplot~=0.5.5 - pyirf~=0.6.0 diff --git a/setup.py b/setup.py index 3eebedd1e..dc2c1b75e 100644 --- a/setup.py +++ b/setup.py @@ -36,7 +36,7 @@ 'astropy>=4.0.5,<5', 'lstchain~=0.9.0', 'ctapipe~=0.12.0', - 'ctapipe_io_magic~=0.4.2', + 'ctapipe_io_magic~=0.4.3', 'ctaplot~=0.5.5', 'eventio>=1.5.1,<2.0.0a0', # at least 1.1.1, but not 2 'gammapy~=0.19.0', From cfc47099aec72f5890d9e50ca03bc7c2407a3e59 Mon Sep 17 00:00:00 2001 From: YoshikiOhtani Date: Wed, 27 Apr 2022 13:46:41 +0000 Subject: [PATCH 04/10] Added time differences to the LST-1 data frame --- .../scripts/lst1_magic/lst1_magic_event_coincidence.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/magicctapipe/scripts/lst1_magic/lst1_magic_event_coincidence.py b/magicctapipe/scripts/lst1_magic/lst1_magic_event_coincidence.py index e7f363a1c..fab5288da 100644 --- a/magicctapipe/scripts/lst1_magic/lst1_magic_event_coincidence.py +++ b/magicctapipe/scripts/lst1_magic/lst1_magic_event_coincidence.py @@ -41,6 +41,7 @@ from astropy.time import Time from ctapipe.containers import EventType from ctapipe.instrument import SubarrayDescription +from lstchain.reco.utils import add_delta_t_key from magicctapipe.utils import ( check_tel_combination, save_pandas_to_table, @@ -105,6 +106,9 @@ def load_lst_data_file(input_file): event_data.set_index(['obs_id', 'event_id', 'tel_id'], inplace=True) event_data.sort_index(inplace=True) + # Add the arrival time differences of consecutive events: + event_data = add_delta_t_key(event_data) + # Exclude non-reconstructed events: event_data.dropna(subset=['intensity', 'time_gradient', 'alt_tel', 'az_tel'], inplace=True) @@ -128,7 +132,8 @@ def load_lst_data_file(input_file): # Rename the column names: event_data.rename( - columns={'alt_tel': 'pointing_alt', + columns={'delta_t': 'time_diff', + 'alt_tel': 'pointing_alt', 'az_tel': 'pointing_az', 'leakage_pixels_width_1': 'pixels_width_1', 'leakage_pixels_width_2': 'pixels_width_2', From f311573d0987aae084fdbcd3f9f666b1336211b6 Mon Sep 17 00:00:00 2001 From: YoshikiOhtani Date: Mon, 16 May 2022 13:28:49 +0000 Subject: [PATCH 05/10] Added a function to calculate the dead time correction factor --- .../lst1_magic/lst1_magic_dl2_to_dl3.py | 75 ++++++++++++++----- 1 file changed, 58 insertions(+), 17 deletions(-) diff --git a/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py b/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py index 302fd2939..6976911a7 100644 --- a/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py +++ b/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py @@ -44,9 +44,13 @@ ORM_LON = -17.89064 # unit: [deg] ORM_HEIGHT = 2199.835 # unit: [m] +dead_time_lst = 7.6e-6 # unit: [sec] +dead_time_magic = 26e-6 # unit: [sec] + MJDREF = Time(0, format='unix', scale='utc').mjd __all__ = [ + 'calculate_deadc', 'load_dl2_data_file', 'create_event_list', 'create_gti_table', @@ -54,6 +58,28 @@ 'dl2_to_dl3', ] +def calculate_deadc(time_diffs, dead_time): + """ + Calculates the dead time correction factor. + + Parameters + ---------- + time_diffs: np.ndarray + Time differences of event arrival times + dead_time: float + Dead time due to the read out + + Returns + ------- + deadc: float + Dead time correction factor + """ + + rate = 1 / (time_diffs.mean() - dead_time) + deadc = 1 / (1 + rate * dead_time) + + return deadc + def load_dl2_data_file(input_file, quality_cuts, irf_type): """ @@ -72,6 +98,8 @@ def load_dl2_data_file(input_file, quality_cuts, irf_type): ------- event_table: astropy.table.table.QTable Astropy table of DL2 events + deadc: float + Dead time correction factor for the input data """ df_events = pd.read_hdf(input_file, key='events/parameters') @@ -108,6 +136,27 @@ def load_dl2_data_file(input_file, quality_cuts, irf_type): n_events = len(df_events.groupby(['obs_id', 'event_id']).size()) logger.info(f'--> {n_events} stereo events') + # Calculate the dead time correction factor: + logger.info('\nCalculating the dead time correction factor...') + + condition = '(time_diff > 0) & (time_diff < 0.1)' + + time_diffs_lst = df_events.query(f'(tel_id == 1) & {condition}')['time_diff'].to_numpy() + time_diffs_magic = df_events.query(f'(tel_id == 2) & {condition}')['time_diff'].to_numpy() + + deadc = 1 + + if len(time_diffs_lst) > 0: + deadc_lst = calculate_deadc(time_diffs_lst, dead_time_lst) + deadc *= deadc_lst + + if len(time_diffs_magic) > 0: + deadc_magic = calculate_deadc(time_diffs_magic, dead_time_magic) + deadc *= deadc_magic + + dead_time_fraction = 100 * (1 - deadc) + logger.info(f'--> Dead time fraction: {dead_time_fraction:.2f}%') + # Compute the mean of the DL2 parameters: df_dl2_mean = get_dl2_mean(df_events) df_dl2_mean.reset_index(inplace=True) @@ -125,10 +174,10 @@ def load_dl2_data_file(input_file, quality_cuts, irf_type): event_table['reco_dec'] *= u.deg event_table['reco_energy'] *= u.TeV - return event_table + return event_table, deadc -def create_event_list(event_table, effective_time, elapsed_time, +def create_event_list(event_table, deadc, source_name=None, source_ra=None, source_dec=None): """ Creates an event list and its header. @@ -137,10 +186,8 @@ def create_event_list(event_table, effective_time, elapsed_time, ---------- event_table: astropy.table.table.QTable Astropy table of the DL2 events surviving gammaness cuts - effective_time: float - Effective time of the input data - elapsed_time: float - Elapsed time of the input data + deadc: float: + Dead time correction factor source_name: str Name of the observed source source_ra: @@ -159,9 +206,8 @@ def create_event_list(event_table, effective_time, elapsed_time, time_start = Time(event_table['timestamp'][0], format='unix', scale='utc') time_end = Time(event_table['timestamp'][-1], format='unix', scale='utc') - delta_time = time_end.value - time_start.value - - deadc = effective_time / elapsed_time + elapsed_time = time_end.value - time_start.value + effective_time = elapsed_time * deadc event_coords = SkyCoord(ra=event_table['reco_ra'], dec=event_table['reco_dec'], frame='icrs') @@ -203,7 +249,7 @@ def create_event_list(event_table, effective_time, elapsed_time, event_header['TIMESYS'] = 'UTC' event_header['TIMEREF'] = 'TOPOCENTER' event_header['ONTIME'] = elapsed_time - event_header['TELAPSE'] = delta_time + event_header['TELAPSE'] = elapsed_time event_header['DEADC'] = deadc event_header['LIVETIME'] = effective_time event_header['OBJECT'] = source_name @@ -340,12 +386,7 @@ def dl2_to_dl3(input_file_dl2, input_file_irf, output_dir, config): logger.info('\nLoading the input DL2 data file:') logger.info(input_file_dl2) - event_table = load_dl2_data_file(input_file_dl2, quality_cuts, irf_type) - - # ToBeUpdated: how to compute the effective time for the software coincidence? - # At the moment it does not consider any dead times, which slightly underestimates a source flux. - elapsed_time = event_table['timestamp'][-1] - event_table['timestamp'][0] - effective_time = elapsed_time + event_table, deadc = load_dl2_data_file(input_file_dl2, quality_cuts, irf_type) # Apply gammaness cuts: if 'GH_CUT' in header: @@ -371,7 +412,7 @@ def dl2_to_dl3(input_file_dl2, input_file_irf, output_dir, config): # Create a event list HDU: logger.info('\nCreating an event list HDU...') - event_list, event_header = create_event_list(event_table, effective_time, elapsed_time, **config_dl3) + event_list, event_header = create_event_list(event_table, deadc, **config_dl3) hdu_event = fits.BinTableHDU(event_list, header=event_header, name='EVENTS') hdus.append(hdu_event) From d2ce1f2931d7f9c6cfc30f821e3b09696c08faf6 Mon Sep 17 00:00:00 2001 From: YoshikiOhtani Date: Thu, 26 May 2022 18:14:05 +0000 Subject: [PATCH 06/10] Removed the changes unrelated to this pull request --- .../scripts/lst1_magic/magic_calib_to_dl1.py | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py b/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py index 5dae63339..2f470832d 100644 --- a/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py +++ b/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py @@ -146,6 +146,8 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): logger.warning('\nHot pixels do not exist in a simulation. Setting the "find_hotpixels" option to False...') config_cleaning.update({'find_hotpixels': False}) + unsuitable_mask = None + tel_position = subarray.positions[tel_id] focal_length = subarray.tel[tel_id].optics.equivalent_focal_length @@ -155,6 +157,13 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): ) else: + pedestal_type = config_cleaning.pop('pedestal_type') + + if pedestal_type not in pedestal_types: + raise KeyError(f'Unknown pedestal type "{pedestal_type}".') + + i_ped_type = np.where(np.array(pedestal_types) == pedestal_type)[0][0] + if config_cleaning['find_hotpixels'] == 'auto': logger.info('\nSetting the "find_hotpixels" option to True...') config_cleaning.update({'find_hotpixels': True}) @@ -169,20 +178,6 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): # Configure the MAGIC image cleaning: magic_clean = MAGICClean(camera_geom, config_cleaning) - find_hotpixels = config_cleaning['find_hotpixels'] - - if find_hotpixels: - - pedestal_type = config_cleaning.pop('pedestal_type') - - if pedestal_type not in pedestal_types: - raise KeyError(f'Unknown pedestal type "{pedestal_type}".') - - i_ped_type = np.where(np.array(pedestal_types) == pedestal_type)[0][0] - - else: - unsuitable_mask = None - # Prepare for saving data to an output file: Path(output_dir).mkdir(exist_ok=True, parents=True) @@ -212,7 +207,7 @@ def magic_calib_to_dl1(input_file, output_dir, config, process_run=False): if event.count % 100 == 0: logger.info(f'{event.count} events') - if find_hotpixels: + if not is_simulation: dead_pixels = event.mon.tel[tel_id].pixel_status.hardware_failing_pixels[0] badrms_pixels = event.mon.tel[tel_id].pixel_status.pedestal_failing_pixels[i_ped_type] unsuitable_mask = np.logical_or(dead_pixels, badrms_pixels) @@ -416,4 +411,4 @@ def main(): if __name__ == '__main__': - main() + main() \ No newline at end of file From 789e10578de650e980d9d16425ee53c8849fc51d Mon Sep 17 00:00:00 2001 From: YoshikiOhtani Date: Thu, 26 May 2022 19:00:59 +0000 Subject: [PATCH 07/10] Select M1 or M2 when calculating the deadtime correction based on the number of events --- .../lst1_magic/lst1_magic_dl2_to_dl3.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py b/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py index 6976911a7..ca637b2ed 100644 --- a/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py +++ b/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py @@ -136,23 +136,28 @@ def load_dl2_data_file(input_file, quality_cuts, irf_type): n_events = len(df_events.groupby(['obs_id', 'event_id']).size()) logger.info(f'--> {n_events} stereo events') - # Calculate the dead time correction factor: + # Calculate the dead time correction factor. + # For MAGIC we select one telescope which has more number of events than the other: logger.info('\nCalculating the dead time correction factor...') + deadc = 1 condition = '(time_diff > 0) & (time_diff < 0.1)' time_diffs_lst = df_events.query(f'(tel_id == 1) & {condition}')['time_diff'].to_numpy() - time_diffs_magic = df_events.query(f'(tel_id == 2) & {condition}')['time_diff'].to_numpy() - - deadc = 1 if len(time_diffs_lst) > 0: deadc_lst = calculate_deadc(time_diffs_lst, dead_time_lst) deadc *= deadc_lst - if len(time_diffs_magic) > 0: - deadc_magic = calculate_deadc(time_diffs_magic, dead_time_magic) - deadc *= deadc_magic + time_diffs_m1 = df_events.query(f'(tel_id == 2) & {condition}')['time_diff'].to_numpy() + time_diffs_m2 = df_events.query(f'(tel_id == 3) & {condition}')['time_diff'].to_numpy() + + if len(time_diffs_m1) >= len(time_diffs_m2): + deadc_magic = calculate_deadc(time_diffs_m1, dead_time_magic) + else: + deadc_magic = calculate_deadc(time_diffs_m2, dead_time_magic) + + deadc *= deadc_magic dead_time_fraction = 100 * (1 - deadc) logger.info(f'--> Dead time fraction: {dead_time_fraction:.2f}%') From 6795afc4d64cce51a1344fffee21f3e549cc2140 Mon Sep 17 00:00:00 2001 From: YoshikiOhtani Date: Thu, 26 May 2022 19:11:51 +0000 Subject: [PATCH 08/10] Show the results of tel-wise deadtime calculations --- magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py b/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py index ca637b2ed..db38fc623 100644 --- a/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py +++ b/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py @@ -147,6 +147,7 @@ def load_dl2_data_file(input_file, quality_cuts, irf_type): if len(time_diffs_lst) > 0: deadc_lst = calculate_deadc(time_diffs_lst, dead_time_lst) + logger.info(f'LST-1: {deadc_lst}') deadc *= deadc_lst time_diffs_m1 = df_events.query(f'(tel_id == 2) & {condition}')['time_diff'].to_numpy() @@ -154,13 +155,15 @@ def load_dl2_data_file(input_file, quality_cuts, irf_type): if len(time_diffs_m1) >= len(time_diffs_m2): deadc_magic = calculate_deadc(time_diffs_m1, dead_time_magic) + logger.info(f'MAGIC-I: {deadc_magic}') else: deadc_magic = calculate_deadc(time_diffs_m2, dead_time_magic) + logger.info(f'MAGIC-II: {deadc_magic}') deadc *= deadc_magic dead_time_fraction = 100 * (1 - deadc) - logger.info(f'--> Dead time fraction: {dead_time_fraction:.2f}%') + logger.info(f'--> Total dead time fraction: {dead_time_fraction:.2f}%') # Compute the mean of the DL2 parameters: df_dl2_mean = get_dl2_mean(df_events) From 40fe2a100e5a77748313e213894f62d9d717176a Mon Sep 17 00:00:00 2001 From: YoshikiOhtani Date: Thu, 26 May 2022 19:38:48 +0000 Subject: [PATCH 09/10] Calculate the sum of time differences for estimating the elapsed time --- magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py b/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py index db38fc623..209a0e2e6 100644 --- a/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py +++ b/magicctapipe/scripts/lst1_magic/lst1_magic_dl2_to_dl3.py @@ -213,8 +213,9 @@ def create_event_list(event_table, deadc, time_start = Time(event_table['timestamp'][0], format='unix', scale='utc') time_end = Time(event_table['timestamp'][-1], format='unix', scale='utc') + time_diffs = np.diff(event_table['timestamp']) - elapsed_time = time_end.value - time_start.value + elapsed_time = np.sum(time_diffs) effective_time = elapsed_time * deadc event_coords = SkyCoord(ra=event_table['reco_ra'], dec=event_table['reco_dec'], frame='icrs') From 141a9927b92d94468b2654148222e5491dd946fc Mon Sep 17 00:00:00 2001 From: YoshikiOhtani Date: Sat, 4 Jun 2022 07:57:18 +0000 Subject: [PATCH 10/10] Added a new line at the end of fiile --- magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py b/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py index 2f470832d..0cc912097 100644 --- a/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py +++ b/magicctapipe/scripts/lst1_magic/magic_calib_to_dl1.py @@ -411,4 +411,5 @@ def main(): if __name__ == '__main__': - main() \ No newline at end of file + main() +