From 65fd3710d46e59e14147324df0fe28dda9a4dda5 Mon Sep 17 00:00:00 2001 From: Daniil Zubchenko <daniilzubcenko73@gmail.com> Date: Sat, 15 Feb 2025 00:00:26 +0300 Subject: [PATCH 1/3] Feature: H5Writer Added function, which deletes "event" in file --- ntsim/IO/H5Writer.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ntsim/IO/H5Writer.py b/ntsim/IO/H5Writer.py index 294ec16..ed74dd3 100644 --- a/ntsim/IO/H5Writer.py +++ b/ntsim/IO/H5Writer.py @@ -59,6 +59,11 @@ class H5Writer(WriterBase): else: self.event_folder = self.h5_file[event_folder] + def delete_event(self, event_id): + event_folder = f'event_{event_id}' + if event_folder in self.h5_file.keys(): + del self.h5_file[event_folder] + @report_timing def write_data(self, data_list, folder_name): if len(data_list) == 0: -- GitLab From c668dc062988826ae68d5d542cdfb5c2b8c5fcb1 Mon Sep 17 00:00:00 2001 From: Daniil Zubchenko <daniilzubcenko73@gmail.com> Date: Sat, 15 Feb 2025 00:02:00 +0300 Subject: [PATCH 2/3] Feature: main If there are no hits in event after trigger, whole event is not writen --- ntsim/__main__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ntsim/__main__.py b/ntsim/__main__.py index 9bd5403..82ee7da 100644 --- a/ntsim/__main__.py +++ b/ntsim/__main__.py @@ -134,7 +134,9 @@ class NTSim: if not opts.trigger_name is None: self.Trigger.apply_trigger_conditions(self.event.hits[0]) # [0] is for gHits object in list self.event.hits[0] = self.Trigger.trigger_hits # gHits object of "orig" hits is always the only one - + if not self.event.hits[0].has_hits(): + self.Writer.delete_event(event_id) # after trigger will be reworked, apply it on cloner_hits and update this 'if' + continue if not opts.analysis_name is None: self.Analysis.analysis(self.event) ################### -- GitLab From e25ee53d830fa014b9748e6a38235859f952f875 Mon Sep 17 00:00:00 2001 From: Daniil Zubchenko <daniilzubcenko73@gmail.com> Date: Tue, 4 Mar 2025 15:45:33 +0300 Subject: [PATCH 3/3] Feature: deleting events without hits by option If you don't want to save events without hits, use `--H5Writer.no_h5_save_event without_hits` --- ntsim/IO/H5Writer.py | 11 ++++++----- ntsim/__main__.py | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/ntsim/IO/H5Writer.py b/ntsim/IO/H5Writer.py index ed74dd3..27d4efc 100644 --- a/ntsim/IO/H5Writer.py +++ b/ntsim/IO/H5Writer.py @@ -12,7 +12,7 @@ class H5Writer(WriterBase): 'h5_output_dir': {'type': str, 'default': 'h5_output', 'help': 'output directory name'}, 'h5_save_event': {'type': str, 'nargs': '+', 'choices': ['geometry','tracks','particles','photons','hits','clones'], 'default': ['geometry','tracks','particles','photons','hits','clones'], 'help': 'By default, all information about the event and geometry is recorded. When pointing specific values from choices, they and only they will be recorded'}, - 'no_h5_save_event': {'type': str, 'nargs': '+', 'choices': ['geometry','tracks','particles','photons','hits','clones'], 'default': [], + 'no_h5_save_event': {'type': str, 'nargs': '+', 'choices': ['geometry','tracks','particles','photons','hits','clones', 'without_hits'], 'default': [], 'help': 'When pointing specific values from choices, they will not be written to the event or geometry'}, 'h5_save_header': {'type': str, 'nargs': '+', 'choices': ['prod_header','primary_header','event_header'], 'default': ['prod_header','primary_header','event_header'], 'help': 'By default, all information about the header is recorded. When pointing specific values from choices, they and only they will be recorded'}, @@ -59,10 +59,11 @@ class H5Writer(WriterBase): else: self.event_folder = self.h5_file[event_folder] - def delete_event(self, event_id): - event_folder = f'event_{event_id}' - if event_folder in self.h5_file.keys(): - del self.h5_file[event_folder] + def delete_event(self, event_id, condition): + if condition in self.no_h5_save_event: + event_folder = f'event_{event_id}' + if event_folder in self.h5_file.keys(): + del self.h5_file[event_folder] @report_timing def write_data(self, data_list, folder_name): diff --git a/ntsim/__main__.py b/ntsim/__main__.py index 82ee7da..39a1bea 100644 --- a/ntsim/__main__.py +++ b/ntsim/__main__.py @@ -134,9 +134,9 @@ class NTSim: if not opts.trigger_name is None: self.Trigger.apply_trigger_conditions(self.event.hits[0]) # [0] is for gHits object in list self.event.hits[0] = self.Trigger.trigger_hits # gHits object of "orig" hits is always the only one - if not self.event.hits[0].has_hits(): - self.Writer.delete_event(event_id) # after trigger will be reworked, apply it on cloner_hits and update this 'if' - continue + if not len(self.event.hits) or not self.event.hits[0].has_hits(): + self.Writer.delete_event(event_id, 'without_hits') # after trigger will be reworked, apply it on cloner_hits and update this 'if' + continue if not opts.analysis_name is None: self.Analysis.analysis(self.event) ################### -- GitLab