From 578de782d8217e630b5efa362926e21c2b709ffe Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 21 Oct 2024 20:13:29 +0100 Subject: [PATCH 01/81] basic template for hpge post processing --- pyproject.toml | 1 + src/reboost/__init__.py | 4 +- src/reboost/hpge/cli.py | 68 ++++++++++++++++++++++++++++++++++ src/reboost/hpge/hit.py | 10 +++++ src/reboost/hpge/processors.py | 19 ++++++++++ src/reboost/hpge/utils.py | 60 ++++++++++++++++++++++++++++++ 6 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 src/reboost/hpge/cli.py create mode 100644 src/reboost/hpge/hit.py create mode 100644 src/reboost/hpge/processors.py create mode 100644 src/reboost/hpge/utils.py diff --git a/pyproject.toml b/pyproject.toml index 75976e7..3cde88d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -72,6 +72,7 @@ test = [ [project.scripts] reboost-optical = "reboost.optical.cli:optical_cli" +reboost-hpge = "reboost.hpge.cli:hpge_cli" [tool.setuptools] include-package-data = true diff --git a/src/reboost/__init__.py b/src/reboost/__init__.py index 8e49755..c0d8185 100644 --- a/src/reboost/__init__.py +++ b/src/reboost/__init__.py @@ -1,6 +1,6 @@ from __future__ import annotations -from reboost import optical +from reboost import hpge, optical from reboost._version import version as __version__ -__all__ = ["__version__", "optical"] +__all__ = ["__version__", "optical", "hpge"] diff --git a/src/reboost/hpge/cli.py b/src/reboost/hpge/cli.py new file mode 100644 index 0000000..3938fee --- /dev/null +++ b/src/reboost/hpge/cli.py @@ -0,0 +1,68 @@ +from __future__ import annotations + +import argparse +import json +import logging +from collections.abc import Iterable +from pathlib import Path + +import colorlog + + +def hpge_cli() -> None: + parser = argparse.ArgumentParser( + prog="reboost-hpge", + description="%(prog)s command line interface", + ) + + + parser.add_argument( + "--verbose", + "-v", + action="store_true", + help="""Increase the program verbosity""", + ) + + parser.add_argument( + "--bufsize", + action="store", + type=int, + default=int(5e6), + help="""Row count for input table buffering (only used if applicable). default: %(default)e""", + ) + + # step 1: hit tier + subparsers = parser.add_subparsers(dest="command", required=True) + hit_parser = subparsers.add_parser("hit", help="build hit file from remage raw file") + + hit_parser.add_argument( + "--detectors", + help="file that contains a list of detector ids that are part of the input file", + required=True, + ) + hit_parser.add_argument("input", help="input hit LH5 file", metavar="INPUT_HIT") + hit_parser.add_argument("output", help="output evt LH5 file", metavar="OUTPUT_EVT") + + # parse arguments + args = parser.parse_args() + + + handler = colorlog.StreamHandler() + handler.setFormatter( + colorlog.ColoredFormatter("%(log_color)s%(name)s [%(levelname)s] %(message)s") + ) + logger = logging.getLogger("reboost.hpge") + logger.addHandler(handler) + if args.verbose: + logger.setLevel(logging.DEBUG) + + if args.command=="hit": + # is the import here a good idea? + from reboost.hpge.hit import build_hit + + with Path.open(Path(args.detectors)) as detectors_f: + detectors = json.load(detectors_f) + + build_hit(args.input, args.output, detectors, args.bufsize) + + diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py new file mode 100644 index 0000000..7bb0bf8 --- /dev/null +++ b/src/reboost/hpge/hit.py @@ -0,0 +1,10 @@ +from collections.abc import Iterable +import reboost.hpge.utils as utils +import reboost.hpge.processors as processors + +def build_hit(lh5_in_file: str, lh5_out_file: str, detectors: Iterable[str | int], buffer_len: int = int(5e6))->None: + + for idx,d in enumerate(detectors): + delete_input = True if (idx==0) else False + utils.read_write_incremental(lh5_out_file,f"hit/{d}",processors.group_by_event,f"hit/{d}", + lh5_in_file,buffer_len,delete_input=delete_input) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py new file mode 100644 index 0000000..f604ac4 --- /dev/null +++ b/src/reboost/hpge/processors.py @@ -0,0 +1,19 @@ +import awkward as ak +import numpy as np + + + +def group_by_event(data): + counts = ak.run_lengths(data['evtid']) + + grouped = ak.unflatten(data, counts) + sum_energy = ak.sum(grouped.edep,axis=-1) + + t0 = ak.fill_none(ak.firsts(grouped.time,axis=-1),np.nan) + index = ak.fill_none(ak.firsts(grouped.evtid,axis=-1),np.nan) + + + return ak.zip({"sum_energy":sum_energy,"t0":t0,"evtid":index}) + +def smear_energy(energies,reso_func): + return np.random.normal(energies,reso_func(energies)) \ No newline at end of file diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py new file mode 100644 index 0000000..4bc4649 --- /dev/null +++ b/src/reboost/hpge/utils.py @@ -0,0 +1,60 @@ + +from lgdo import lh5 +import matplotlib.pyplot as plt +import awkward as ak +import numpy as np +from lgdo.lh5 import LH5Iterator +from lgdo.types import Table +from tqdm import tqdm +import copy +from typing import Callable + +def read_write_incremental(file_out:str,name_out:str,func:Callable,field:str,file:str,buffer:int=1000000,delete_input=False)->None: + """ + Read incrementally the files compute something and then write + Parameters + ---------- + file_out (str): output file path + out_name (str): lh5 group name for output + func : function converting into to output + field (str): lh5 field name to read + file (str): file name to read + buffer (int): length of buffer + + """ + + entries = LH5Iterator(file, field, buffer_len=buffer)._get_file_cumentries(0) + + # number of blocks is ceil of entries/buffer, + # shift by 1 since idx starts at 0 + # this is maybe too high if buffer exactly divides idx + max_idx = int(np.ceil(entries/buffer))-1 + buffer_rows=None + + for idx,(lh5_obj, entry, n_rows) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): + + ak_obj = lh5_obj.view_as("ak") + counts = ak.run_lengths(ak_obj.evtid) + rows= ak.num(ak_obj,axis=-1) + end_rows= counts[-1] + + if (idx==0): + mode="of" if (delete_input==True) else "append" + obj = ak_obj[0:rows-end_rows] + buffer_rows= copy.deepcopy(ak_obj[rows-end_rows:]) + elif (idx!=max_idx): + mode="append" + obj = ak.concatenate((buffer_rows,ak_obj[0:rows-end_rows])) + buffer_rows= copy.deepcopy(ak_obj[rows-end_rows:]) + else: + mode="append" + obj = ak.concatenate((buffer_rows,ak_obj)) + + # do stuff + out = func(obj) + + # convert to a table + out_lh5 =Table(out) + + # write lh5 file + lh5.write(out_lh5,name_out,file_out,wo_mode=mode) From a6d3d12b842568b1b3c8175ae669a26baedb1c10 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 19:15:26 +0000 Subject: [PATCH 02/81] style: pre-commit fixes --- src/reboost/hpge/cli.py | 9 ++--- src/reboost/hpge/hit.py | 25 +++++++++---- src/reboost/hpge/processors.py | 21 +++++------ src/reboost/hpge/utils.py | 66 +++++++++++++++++++--------------- 4 files changed, 68 insertions(+), 53 deletions(-) diff --git a/src/reboost/hpge/cli.py b/src/reboost/hpge/cli.py index 3938fee..4ca6909 100644 --- a/src/reboost/hpge/cli.py +++ b/src/reboost/hpge/cli.py @@ -3,7 +3,6 @@ import argparse import json import logging -from collections.abc import Iterable from pathlib import Path import colorlog @@ -15,7 +14,6 @@ def hpge_cli() -> None: description="%(prog)s command line interface", ) - parser.add_argument( "--verbose", "-v", @@ -46,7 +44,6 @@ def hpge_cli() -> None: # parse arguments args = parser.parse_args() - handler = colorlog.StreamHandler() handler.setFormatter( colorlog.ColoredFormatter("%(log_color)s%(name)s [%(levelname)s] %(message)s") @@ -55,8 +52,8 @@ def hpge_cli() -> None: logger.addHandler(handler) if args.verbose: logger.setLevel(logging.DEBUG) - - if args.command=="hit": + + if args.command == "hit": # is the import here a good idea? from reboost.hpge.hit import build_hit @@ -64,5 +61,3 @@ def hpge_cli() -> None: detectors = json.load(detectors_f) build_hit(args.input, args.output, detectors, args.bufsize) - - diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 7bb0bf8..f30259c 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -1,10 +1,21 @@ +from __future__ import annotations + from collections.abc import Iterable -import reboost.hpge.utils as utils -import reboost.hpge.processors as processors -def build_hit(lh5_in_file: str, lh5_out_file: str, detectors: Iterable[str | int], buffer_len: int = int(5e6))->None: +from reboost.hpge import processors, utils + - for idx,d in enumerate(detectors): - delete_input = True if (idx==0) else False - utils.read_write_incremental(lh5_out_file,f"hit/{d}",processors.group_by_event,f"hit/{d}", - lh5_in_file,buffer_len,delete_input=delete_input) +def build_hit( + lh5_in_file: str, lh5_out_file: str, detectors: Iterable[str | int], buffer_len: int = int(5e6) +) -> None: + for idx, d in enumerate(detectors): + delete_input = True if (idx == 0) else False + utils.read_write_incremental( + lh5_out_file, + f"hit/{d}", + processors.group_by_event, + f"hit/{d}", + lh5_in_file, + buffer_len, + delete_input=delete_input, + ) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index f604ac4..86c180f 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -1,19 +1,20 @@ +from __future__ import annotations + import awkward as ak import numpy as np - def group_by_event(data): - counts = ak.run_lengths(data['evtid']) + counts = ak.run_lengths(data["evtid"]) grouped = ak.unflatten(data, counts) - sum_energy = ak.sum(grouped.edep,axis=-1) - - t0 = ak.fill_none(ak.firsts(grouped.time,axis=-1),np.nan) - index = ak.fill_none(ak.firsts(grouped.evtid,axis=-1),np.nan) - + sum_energy = ak.sum(grouped.edep, axis=-1) + + t0 = ak.fill_none(ak.firsts(grouped.time, axis=-1), np.nan) + index = ak.fill_none(ak.firsts(grouped.evtid, axis=-1), np.nan) + + return ak.zip({"sum_energy": sum_energy, "t0": t0, "evtid": index}) - return ak.zip({"sum_energy":sum_energy,"t0":t0,"evtid":index}) -def smear_energy(energies,reso_func): - return np.random.normal(energies,reso_func(energies)) \ No newline at end of file +def smear_energy(energies, reso_func): + return np.random.normal(energies, reso_func(energies)) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 4bc4649..b35be25 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -1,60 +1,68 @@ +from __future__ import annotations + +import copy +from typing import Callable -from lgdo import lh5 -import matplotlib.pyplot as plt import awkward as ak import numpy as np +from lgdo import lh5 from lgdo.lh5 import LH5Iterator from lgdo.types import Table -from tqdm import tqdm -import copy -from typing import Callable -def read_write_incremental(file_out:str,name_out:str,func:Callable,field:str,file:str,buffer:int=1000000,delete_input=False)->None: + +def read_write_incremental( + file_out: str, + name_out: str, + func: Callable, + field: str, + file: str, + buffer: int = 1000000, + delete_input=False, +) -> None: """ Read incrementally the files compute something and then write Parameters ---------- file_out (str): output file path out_name (str): lh5 group name for output - func : function converting into to output + func : function converting into to output field (str): lh5 field name to read file (str): file name to read buffer (int): length of buffer - + """ - + entries = LH5Iterator(file, field, buffer_len=buffer)._get_file_cumentries(0) # number of blocks is ceil of entries/buffer, # shift by 1 since idx starts at 0 # this is maybe too high if buffer exactly divides idx - max_idx = int(np.ceil(entries/buffer))-1 - buffer_rows=None - - for idx,(lh5_obj, entry, n_rows) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): - + max_idx = int(np.ceil(entries / buffer)) - 1 + buffer_rows = None + + for idx, (lh5_obj, entry, n_rows) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): ak_obj = lh5_obj.view_as("ak") counts = ak.run_lengths(ak_obj.evtid) - rows= ak.num(ak_obj,axis=-1) - end_rows= counts[-1] - - if (idx==0): - mode="of" if (delete_input==True) else "append" - obj = ak_obj[0:rows-end_rows] - buffer_rows= copy.deepcopy(ak_obj[rows-end_rows:]) - elif (idx!=max_idx): - mode="append" - obj = ak.concatenate((buffer_rows,ak_obj[0:rows-end_rows])) - buffer_rows= copy.deepcopy(ak_obj[rows-end_rows:]) + rows = ak.num(ak_obj, axis=-1) + end_rows = counts[-1] + + if idx == 0: + mode = "of" if (delete_input == True) else "append" + obj = ak_obj[0 : rows - end_rows] + buffer_rows = copy.deepcopy(ak_obj[rows - end_rows :]) + elif idx != max_idx: + mode = "append" + obj = ak.concatenate((buffer_rows, ak_obj[0 : rows - end_rows])) + buffer_rows = copy.deepcopy(ak_obj[rows - end_rows :]) else: - mode="append" - obj = ak.concatenate((buffer_rows,ak_obj)) + mode = "append" + obj = ak.concatenate((buffer_rows, ak_obj)) # do stuff out = func(obj) # convert to a table - out_lh5 =Table(out) + out_lh5 = Table(out) # write lh5 file - lh5.write(out_lh5,name_out,file_out,wo_mode=mode) + lh5.write(out_lh5, name_out, file_out, wo_mode=mode) From 05b42e6c645773017b30b4eefbf40a32cbf1f664 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 21 Oct 2024 20:15:48 +0100 Subject: [PATCH 03/81] pc fixes --- src/reboost/hpge/cli.py | 9 ++--- src/reboost/hpge/hit.py | 25 +++++++++---- src/reboost/hpge/processors.py | 21 +++++------ src/reboost/hpge/utils.py | 66 +++++++++++++++++++--------------- 4 files changed, 68 insertions(+), 53 deletions(-) diff --git a/src/reboost/hpge/cli.py b/src/reboost/hpge/cli.py index 3938fee..4ca6909 100644 --- a/src/reboost/hpge/cli.py +++ b/src/reboost/hpge/cli.py @@ -3,7 +3,6 @@ import argparse import json import logging -from collections.abc import Iterable from pathlib import Path import colorlog @@ -15,7 +14,6 @@ def hpge_cli() -> None: description="%(prog)s command line interface", ) - parser.add_argument( "--verbose", "-v", @@ -46,7 +44,6 @@ def hpge_cli() -> None: # parse arguments args = parser.parse_args() - handler = colorlog.StreamHandler() handler.setFormatter( colorlog.ColoredFormatter("%(log_color)s%(name)s [%(levelname)s] %(message)s") @@ -55,8 +52,8 @@ def hpge_cli() -> None: logger.addHandler(handler) if args.verbose: logger.setLevel(logging.DEBUG) - - if args.command=="hit": + + if args.command == "hit": # is the import here a good idea? from reboost.hpge.hit import build_hit @@ -64,5 +61,3 @@ def hpge_cli() -> None: detectors = json.load(detectors_f) build_hit(args.input, args.output, detectors, args.bufsize) - - diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 7bb0bf8..f30259c 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -1,10 +1,21 @@ +from __future__ import annotations + from collections.abc import Iterable -import reboost.hpge.utils as utils -import reboost.hpge.processors as processors -def build_hit(lh5_in_file: str, lh5_out_file: str, detectors: Iterable[str | int], buffer_len: int = int(5e6))->None: +from reboost.hpge import processors, utils + - for idx,d in enumerate(detectors): - delete_input = True if (idx==0) else False - utils.read_write_incremental(lh5_out_file,f"hit/{d}",processors.group_by_event,f"hit/{d}", - lh5_in_file,buffer_len,delete_input=delete_input) +def build_hit( + lh5_in_file: str, lh5_out_file: str, detectors: Iterable[str | int], buffer_len: int = int(5e6) +) -> None: + for idx, d in enumerate(detectors): + delete_input = True if (idx == 0) else False + utils.read_write_incremental( + lh5_out_file, + f"hit/{d}", + processors.group_by_event, + f"hit/{d}", + lh5_in_file, + buffer_len, + delete_input=delete_input, + ) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index f604ac4..86c180f 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -1,19 +1,20 @@ +from __future__ import annotations + import awkward as ak import numpy as np - def group_by_event(data): - counts = ak.run_lengths(data['evtid']) + counts = ak.run_lengths(data["evtid"]) grouped = ak.unflatten(data, counts) - sum_energy = ak.sum(grouped.edep,axis=-1) - - t0 = ak.fill_none(ak.firsts(grouped.time,axis=-1),np.nan) - index = ak.fill_none(ak.firsts(grouped.evtid,axis=-1),np.nan) - + sum_energy = ak.sum(grouped.edep, axis=-1) + + t0 = ak.fill_none(ak.firsts(grouped.time, axis=-1), np.nan) + index = ak.fill_none(ak.firsts(grouped.evtid, axis=-1), np.nan) + + return ak.zip({"sum_energy": sum_energy, "t0": t0, "evtid": index}) - return ak.zip({"sum_energy":sum_energy,"t0":t0,"evtid":index}) -def smear_energy(energies,reso_func): - return np.random.normal(energies,reso_func(energies)) \ No newline at end of file +def smear_energy(energies, reso_func): + return np.random.normal(energies, reso_func(energies)) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 4bc4649..b35be25 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -1,60 +1,68 @@ +from __future__ import annotations + +import copy +from typing import Callable -from lgdo import lh5 -import matplotlib.pyplot as plt import awkward as ak import numpy as np +from lgdo import lh5 from lgdo.lh5 import LH5Iterator from lgdo.types import Table -from tqdm import tqdm -import copy -from typing import Callable -def read_write_incremental(file_out:str,name_out:str,func:Callable,field:str,file:str,buffer:int=1000000,delete_input=False)->None: + +def read_write_incremental( + file_out: str, + name_out: str, + func: Callable, + field: str, + file: str, + buffer: int = 1000000, + delete_input=False, +) -> None: """ Read incrementally the files compute something and then write Parameters ---------- file_out (str): output file path out_name (str): lh5 group name for output - func : function converting into to output + func : function converting into to output field (str): lh5 field name to read file (str): file name to read buffer (int): length of buffer - + """ - + entries = LH5Iterator(file, field, buffer_len=buffer)._get_file_cumentries(0) # number of blocks is ceil of entries/buffer, # shift by 1 since idx starts at 0 # this is maybe too high if buffer exactly divides idx - max_idx = int(np.ceil(entries/buffer))-1 - buffer_rows=None - - for idx,(lh5_obj, entry, n_rows) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): - + max_idx = int(np.ceil(entries / buffer)) - 1 + buffer_rows = None + + for idx, (lh5_obj, entry, n_rows) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): ak_obj = lh5_obj.view_as("ak") counts = ak.run_lengths(ak_obj.evtid) - rows= ak.num(ak_obj,axis=-1) - end_rows= counts[-1] - - if (idx==0): - mode="of" if (delete_input==True) else "append" - obj = ak_obj[0:rows-end_rows] - buffer_rows= copy.deepcopy(ak_obj[rows-end_rows:]) - elif (idx!=max_idx): - mode="append" - obj = ak.concatenate((buffer_rows,ak_obj[0:rows-end_rows])) - buffer_rows= copy.deepcopy(ak_obj[rows-end_rows:]) + rows = ak.num(ak_obj, axis=-1) + end_rows = counts[-1] + + if idx == 0: + mode = "of" if (delete_input == True) else "append" + obj = ak_obj[0 : rows - end_rows] + buffer_rows = copy.deepcopy(ak_obj[rows - end_rows :]) + elif idx != max_idx: + mode = "append" + obj = ak.concatenate((buffer_rows, ak_obj[0 : rows - end_rows])) + buffer_rows = copy.deepcopy(ak_obj[rows - end_rows :]) else: - mode="append" - obj = ak.concatenate((buffer_rows,ak_obj)) + mode = "append" + obj = ak.concatenate((buffer_rows, ak_obj)) # do stuff out = func(obj) # convert to a table - out_lh5 =Table(out) + out_lh5 = Table(out) # write lh5 file - lh5.write(out_lh5,name_out,file_out,wo_mode=mode) + lh5.write(out_lh5, name_out, file_out, wo_mode=mode) From 3dfbf23c979ea4854a6e0d0156b33028f407a3aa Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 21 Oct 2024 20:19:55 +0100 Subject: [PATCH 04/81] style improvements --- src/reboost/hpge/hit.py | 2 +- src/reboost/hpge/processors.py | 2 +- src/reboost/hpge/utils.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index f30259c..44c5d09 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -9,7 +9,7 @@ def build_hit( lh5_in_file: str, lh5_out_file: str, detectors: Iterable[str | int], buffer_len: int = int(5e6) ) -> None: for idx, d in enumerate(detectors): - delete_input = True if (idx == 0) else False + delete_input = bool(idx == 0) utils.read_write_incremental( lh5_out_file, f"hit/{d}", diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 86c180f..5ba6a8e 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -17,4 +17,4 @@ def group_by_event(data): def smear_energy(energies, reso_func): - return np.random.normal(energies, reso_func(energies)) + return np.random.Generator.normal(energies, reso_func(energies)) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index b35be25..09c216e 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -40,14 +40,14 @@ def read_write_incremental( max_idx = int(np.ceil(entries / buffer)) - 1 buffer_rows = None - for idx, (lh5_obj, entry, n_rows) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): + for idx, (lh5_obj, _, _) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): ak_obj = lh5_obj.view_as("ak") counts = ak.run_lengths(ak_obj.evtid) rows = ak.num(ak_obj, axis=-1) end_rows = counts[-1] if idx == 0: - mode = "of" if (delete_input == True) else "append" + mode = "of" if (delete_input) else "append" obj = ak_obj[0 : rows - end_rows] buffer_rows = copy.deepcopy(ak_obj[rows - end_rows :]) elif idx != max_idx: From 8b1fd87d5e8fb606dcbc3a28e1a5a15d65998cc4 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Tue, 22 Oct 2024 18:00:00 +0100 Subject: [PATCH 05/81] basic functionality for time-windowing --- src/reboost/hpge/cli.py | 3 +++ src/reboost/hpge/hit.py | 13 ++++++++++- src/reboost/hpge/processors.py | 40 +++++++++++++++++++++++++++++----- src/reboost/hpge/utils.py | 10 +++++++++ 4 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/reboost/hpge/cli.py b/src/reboost/hpge/cli.py index 4ca6909..5379034 100644 --- a/src/reboost/hpge/cli.py +++ b/src/reboost/hpge/cli.py @@ -52,9 +52,12 @@ def hpge_cli() -> None: logger.addHandler(handler) if args.verbose: logger.setLevel(logging.DEBUG) + else: + logger.setLevel(logging.INFO) if args.command == "hit": # is the import here a good idea? + logger.info("...running raw->hit tier") from reboost.hpge.hit import build_hit with Path.open(Path(args.detectors)) as detectors_f: diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 44c5d09..e235d20 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -1,19 +1,30 @@ from __future__ import annotations +import logging from collections.abc import Iterable from reboost.hpge import processors, utils +log = logging.getLogger(__name__) + def build_hit( lh5_in_file: str, lh5_out_file: str, detectors: Iterable[str | int], buffer_len: int = int(5e6) ) -> None: + # build the processing chain + proc = processors.def_chain( + [processors.group_by_time, processors.sum_energy, processors.smear_energy], + [{"window": 10}, {}, {"reso": 2, "energy_name": "summed_energy"}], + ) + for idx, d in enumerate(detectors): + msg = f"...running event grouping for {d}" + log.debug(msg) delete_input = bool(idx == 0) utils.read_write_incremental( lh5_out_file, f"hit/{d}", - processors.group_by_event, + proc, f"hit/{d}", lh5_in_file, buffer_len, diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 5ba6a8e..7d4472e 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -4,17 +4,45 @@ import numpy as np -def group_by_event(data): - counts = ak.run_lengths(data["evtid"]) +def def_chain(funcs, kwargs_list): + def func(data): + tmp = data + for f, kw in zip(funcs, kwargs_list): + tmp = f(tmp, **kw) - grouped = ak.unflatten(data, counts) - sum_energy = ak.sum(grouped.edep, axis=-1) + return tmp + + return func + + +def group_by_evtid(data): + counts = ak.run_lengths(data.evtid) + return ak.unflatten(data, counts) + + +def group_by_time(obj, window=10): + runs = np.array(np.cumsum(ak.run_lengths(obj.evtid))) + counts = ak.run_lengths(obj.evtid) + time_diffs = np.diff(obj.time) + index_diffs = np.diff(obj.evtid) + + change_points = np.array(np.where((time_diffs > window * 1000) & (index_diffs == 0)))[0] + total_change = np.sort(np.concatenate(([0], change_points, runs), axis=0)) + + counts = ak.Array(np.diff(total_change)) + return ak.unflatten(obj, counts) + + +def sum_energy(grouped): + sum_energy = ak.sum(grouped.edep, axis=-1) t0 = ak.fill_none(ak.firsts(grouped.time, axis=-1), np.nan) index = ak.fill_none(ak.firsts(grouped.evtid, axis=-1), np.nan) return ak.zip({"sum_energy": sum_energy, "t0": t0, "evtid": index}) -def smear_energy(energies, reso_func): - return np.random.Generator.normal(energies, reso_func(energies)) +def smear_energy(data, reso=2, energy_name="sum_energy"): + return ak.with_field( + data, np.random.Generator.normal(data[energy_name], reso), "energy_smeared" + ) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 09c216e..65fdd22 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -1,6 +1,7 @@ from __future__ import annotations import copy +import logging from typing import Callable import awkward as ak @@ -9,6 +10,8 @@ from lgdo.lh5 import LH5Iterator from lgdo.types import Table +log = logging.getLogger(__name__) + def read_write_incremental( file_out: str, @@ -32,6 +35,9 @@ def read_write_incremental( """ + msg = f"...begin processing with {file} to {file_out}" + log.info(msg) + entries = LH5Iterator(file, field, buffer_len=buffer)._get_file_cumentries(0) # number of blocks is ceil of entries/buffer, @@ -41,6 +47,9 @@ def read_write_incremental( buffer_rows = None for idx, (lh5_obj, _, _) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): + msg = f"... processed {idx} files out of {max_idx}" + log.debug(msg) + ak_obj = lh5_obj.view_as("ak") counts = ak.run_lengths(ak_obj.evtid) rows = ak.num(ak_obj, axis=-1) @@ -65,4 +74,5 @@ def read_write_incremental( out_lh5 = Table(out) # write lh5 file + log.info("...finished processing and save file") lh5.write(out_lh5, name_out, file_out, wo_mode=mode) From 223a7d0a3f4eab5d7ead17b77d78668270687b23 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Tue, 22 Oct 2024 18:40:36 +0100 Subject: [PATCH 06/81] detectors file to config --- src/reboost/hpge/cli.py | 11 +++++------ src/reboost/hpge/hit.py | 20 +++++++++++--------- src/reboost/hpge/processors.py | 4 +++- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/reboost/hpge/cli.py b/src/reboost/hpge/cli.py index 5379034..d7766d1 100644 --- a/src/reboost/hpge/cli.py +++ b/src/reboost/hpge/cli.py @@ -34,14 +34,13 @@ def hpge_cli() -> None: hit_parser = subparsers.add_parser("hit", help="build hit file from remage raw file") hit_parser.add_argument( - "--detectors", - help="file that contains a list of detector ids that are part of the input file", + "--config", + help="file that contains the configuration", required=True, ) hit_parser.add_argument("input", help="input hit LH5 file", metavar="INPUT_HIT") hit_parser.add_argument("output", help="output evt LH5 file", metavar="OUTPUT_EVT") - # parse arguments args = parser.parse_args() handler = colorlog.StreamHandler() @@ -60,7 +59,7 @@ def hpge_cli() -> None: logger.info("...running raw->hit tier") from reboost.hpge.hit import build_hit - with Path.open(Path(args.detectors)) as detectors_f: - detectors = json.load(detectors_f) + with Path.open(Path(args.config)) as config_f: + config = json.load(config_f) - build_hit(args.input, args.output, detectors, args.bufsize) + build_hit(args.input, args.output, config, args.bufsize) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index e235d20..14f3144 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -1,7 +1,6 @@ from __future__ import annotations import logging -from collections.abc import Iterable from reboost.hpge import processors, utils @@ -9,18 +8,21 @@ def build_hit( - lh5_in_file: str, lh5_out_file: str, detectors: Iterable[str | int], buffer_len: int = int(5e6) + lh5_in_file: str, lh5_out_file: str, config: dict, buffer_len: int = int(5e6) ) -> None: - # build the processing chain - proc = processors.def_chain( - [processors.group_by_time, processors.sum_energy, processors.smear_energy], - [{"window": 10}, {}, {"reso": 2, "energy_name": "summed_energy"}], - ) - - for idx, d in enumerate(detectors): + for idx, d in enumerate(config.keys()): msg = f"...running event grouping for {d}" log.debug(msg) delete_input = bool(idx == 0) + + # build the processing chain + # TODO replace this with a config file similar to pygama.build_evt + + proc = processors.def_chain( + [processors.group_by_time, processors.sum_energy, processors.smear_energy], + [{"window": 10}, {}, {"reso": config[d]["reso"], "energy_name": "sum_energy"}], + ) + utils.read_write_incremental( lh5_out_file, f"hit/{d}", diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 7d4472e..26e8183 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -43,6 +43,8 @@ def sum_energy(grouped): def smear_energy(data, reso=2, energy_name="sum_energy"): + flat_energy = data[energy_name].to_numpy() + rng = np.random.default_rng() return ak.with_field( - data, np.random.Generator.normal(data[energy_name], reso), "energy_smeared" + data, rng.normal(loc=flat_energy, scale=np.ones_like(flat_energy) * reso), "energy_smeared" ) From 5ded4c95d41fdbf911fb291069106fd1cc63f4e9 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Tue, 22 Oct 2024 18:57:43 +0100 Subject: [PATCH 07/81] [fix] sort by time --- src/reboost/hpge/hit.py | 9 +++++++-- src/reboost/hpge/processors.py | 7 +++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 14f3144..9c74798 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -19,8 +19,13 @@ def build_hit( # TODO replace this with a config file similar to pygama.build_evt proc = processors.def_chain( - [processors.group_by_time, processors.sum_energy, processors.smear_energy], - [{"window": 10}, {}, {"reso": config[d]["reso"], "energy_name": "sum_energy"}], + [ + processors.sort_data, + processors.group_by_time, + processors.sum_energy, + processors.smear_energy, + ], + [{}, {"window": 10}, {}, {"reso": config[d]["reso"], "energy_name": "sum_energy"}], ) utils.read_write_incremental( diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 26e8183..9c76cec 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -15,6 +15,13 @@ def func(data): return func +def sort_data(obj): + indexs = np.lexsort((obj.time, obj.evtid)) + obj = obj[indexs] + + return obj + + def group_by_evtid(data): counts = ak.run_lengths(data.evtid) return ak.unflatten(data, counts) From 426134857d9e48e2aea6627e8b7bf9abb120a66d Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Thu, 24 Oct 2024 11:50:52 +0100 Subject: [PATCH 08/81] [wip] adding functions for DL calculations --- src/reboost/hpge/utils.py | 49 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 65fdd22..024b9cd 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -13,6 +13,55 @@ log = logging.getLogger(__name__) +def distance_3d(v1, v2): + return np.sqrt(np.power(v2.x - v1.x, 2) + np.power(v2.y - v1.y, 2) + np.power(v2.z - v1.z, 2)) + + +def distance_2d(v1, v2): + return np.sqrt(np.power(v2.x - v1.x, 2) + np.power(v2.y - v1.y, 2)) + + +def add_ak_3d(a, b): + return ak.zip({"x": a.x + b.x, "y": a.y + b.y, "z": a.z + b.z}) + + +def add_ak_2d(a, b): + return ak.zip({"x": a.x + b.x, "y": a.y + b.y}) + + +def sub_ak_2d(a, b): + return ak.zip({"x": a.x - b.x, "y": a.y - b.y}) + + +def sub_ak_3d(a, b): + return ak.zip({"x": a.x - b.x, "y": a.y - b.y, "z": a.z - b.z}) + + +def prod_ak_2d(a, b): + return a.x * b.x + a.y * b.y + + +def prod_ak_3d(a, b): + return a.x * b.x + a.y * b.y + a.z * b.z + + +def prod(a, b): + return ak.zip({"x": a.x * b, "y": a.y * b}) + + +def proj(s1, s2, v): + dist_one = prod_ak_2d(sub_ak_2d(v, s1), sub_ak_2d(v, s2)) / distance_2d(s1, s2) + dist_one = np.where(dist_one > 1, dist_one, 1) + dist_one = np.where(dist_one > 0, dist_one, 0) + return prod(add_ak_2d(s1, sub_ak_2d(s2, s1)), dist_one) + + +def dist(s1, s2, v): + return distance_2d(proj(s1, s2, v), v) + +def get_detector_origin(name): + raise NotImplementedError + def read_write_incremental( file_out: str, name_out: str, From 2f888fb170eb354a91d2eebd4d4bb566cd08c453 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Thu, 24 Oct 2024 11:52:05 +0100 Subject: [PATCH 09/81] [wip] adding functions for DL calc and __init__ for hpge subpackage --- src/reboost/hpge/__init__.py | 0 src/reboost/hpge/processors.py | 31 ++++++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 src/reboost/hpge/__init__.py diff --git a/src/reboost/hpge/__init__.py b/src/reboost/hpge/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 9c76cec..8154e9f 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -2,7 +2,7 @@ import awkward as ak import numpy as np - +import utils def def_chain(funcs, kwargs_list): def func(data): @@ -16,10 +16,8 @@ def func(data): def sort_data(obj): - indexs = np.lexsort((obj.time, obj.evtid)) - obj = obj[indexs] - - return obj + indices = np.lexsort((obj.time, obj.evtid)) + return obj[indices] def group_by_evtid(data): @@ -55,3 +53,26 @@ def smear_energy(data, reso=2, energy_name="sum_energy"): return ak.with_field( data, rng.normal(loc=flat_energy, scale=np.ones_like(flat_energy) * reso), "energy_smeared" ) + +def distance_to_surface(data,detector="det001"): + + # get detector origin + x,y,z = utils.get_detector_origin(detector) + + # get the r-z points to produce the detector (G4GenericPolyCone) + r,z = utils.get_detector_corners(detector) + + # loop over pairs + dists=[] + for (rtmp,ztmp,rnext_tmp,znext_tmp) in zip(r[:-1],z[:-1],r[1:],z[1:]): + + s1 = ak.zip({"x":rtmp,"y":ztmp}) + s2 = ak.zip({"x":rnext_tmp,"y":znext_tmp}) + v_3d=ak.zip({"x":data.xloc-x,"y":data.yloc-y,"z":data.zloc-z}) + v = ak.zip({"x":np.sqrt(np.power(v_3d.x,2)+np.power(v_3d.y,2)),"y":v_3d.z}) + + dist = utils.dist(s1,s2,v) + dists.append(dist) + + + raise np.min(dists) From ddea2d5aa265e9b27ced219a65eb1387bb420421 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 24 Oct 2024 10:54:03 +0000 Subject: [PATCH 10/81] style: pre-commit fixes --- src/reboost/hpge/processors.py | 27 +++++++++++++-------------- src/reboost/hpge/utils.py | 2 ++ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 8154e9f..b523187 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -4,6 +4,7 @@ import numpy as np import utils + def def_chain(funcs, kwargs_list): def func(data): tmp = data @@ -54,25 +55,23 @@ def smear_energy(data, reso=2, energy_name="sum_energy"): data, rng.normal(loc=flat_energy, scale=np.ones_like(flat_energy) * reso), "energy_smeared" ) -def distance_to_surface(data,detector="det001"): +def distance_to_surface(data, detector="det001"): # get detector origin - x,y,z = utils.get_detector_origin(detector) - + x, y, z = utils.get_detector_origin(detector) + # get the r-z points to produce the detector (G4GenericPolyCone) - r,z = utils.get_detector_corners(detector) + r, z = utils.get_detector_corners(detector) # loop over pairs - dists=[] - for (rtmp,ztmp,rnext_tmp,znext_tmp) in zip(r[:-1],z[:-1],r[1:],z[1:]): - - s1 = ak.zip({"x":rtmp,"y":ztmp}) - s2 = ak.zip({"x":rnext_tmp,"y":znext_tmp}) - v_3d=ak.zip({"x":data.xloc-x,"y":data.yloc-y,"z":data.zloc-z}) - v = ak.zip({"x":np.sqrt(np.power(v_3d.x,2)+np.power(v_3d.y,2)),"y":v_3d.z}) - - dist = utils.dist(s1,s2,v) + dists = [] + for rtmp, ztmp, rnext_tmp, znext_tmp in zip(r[:-1], z[:-1], r[1:], z[1:]): + s1 = ak.zip({"x": rtmp, "y": ztmp}) + s2 = ak.zip({"x": rnext_tmp, "y": znext_tmp}) + v_3d = ak.zip({"x": data.xloc - x, "y": data.yloc - y, "z": data.zloc - z}) + v = ak.zip({"x": np.sqrt(np.power(v_3d.x, 2) + np.power(v_3d.y, 2)), "y": v_3d.z}) + + dist = utils.dist(s1, s2, v) dists.append(dist) - raise np.min(dists) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 024b9cd..bb8ae1e 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -59,9 +59,11 @@ def proj(s1, s2, v): def dist(s1, s2, v): return distance_2d(proj(s1, s2, v), v) + def get_detector_origin(name): raise NotImplementedError + def read_write_incremental( file_out: str, name_out: str, From ca94f10ce60c369b3bd8880728b8563ed2382198 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Thu, 24 Oct 2024 12:08:08 +0100 Subject: [PATCH 11/81] Update __init__.py --- src/reboost/hpge/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/reboost/hpge/__init__.py b/src/reboost/hpge/__init__.py index e69de29..d3f5a12 100644 --- a/src/reboost/hpge/__init__.py +++ b/src/reboost/hpge/__init__.py @@ -0,0 +1 @@ + From adb1f6e9c4fa149fd43b33ca6bd6ff6c73d66494 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 24 Oct 2024 11:08:19 +0000 Subject: [PATCH 12/81] style: pre-commit fixes --- src/reboost/hpge/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/reboost/hpge/__init__.py b/src/reboost/hpge/__init__.py index d3f5a12..e69de29 100644 --- a/src/reboost/hpge/__init__.py +++ b/src/reboost/hpge/__init__.py @@ -1 +0,0 @@ - From 534882c73a9b50c90706c71b9c2feec282f3b787 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 28 Oct 2024 09:45:05 +0000 Subject: [PATCH 13/81] Update src/reboost/hpge/processors.py Co-authored-by: Manuel Huber --- src/reboost/hpge/processors.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index b523187..518a3c9 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -2,7 +2,7 @@ import awkward as ak import numpy as np -import utils +from . import utils def def_chain(funcs, kwargs_list): From 3d5a535a796c3f6a0747172b5062b3d9713ea4a5 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 28 Oct 2024 09:45:12 +0000 Subject: [PATCH 14/81] Update src/reboost/hpge/hit.py Co-authored-by: Manuel Huber --- src/reboost/hpge/hit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 9c74798..e9d4317 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -2,7 +2,7 @@ import logging -from reboost.hpge import processors, utils +from . import processors, utils log = logging.getLogger(__name__) From 39c587c3a4f705757208ba0618092da7c7ae019a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 09:45:15 +0000 Subject: [PATCH 15/81] style: pre-commit fixes --- src/reboost/hpge/processors.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 518a3c9..5634b16 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -2,6 +2,7 @@ import awkward as ak import numpy as np + from . import utils From 78e130a730557e53e560223ad642b92910911662 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 28 Oct 2024 10:12:26 +0000 Subject: [PATCH 16/81] [wip] starting functionality for DLs --- src/reboost/hpge/cli.py | 12 ++++++- src/reboost/hpge/hit.py | 44 +++++++++++++++++++++++- src/reboost/hpge/processors.py | 27 +++++++-------- src/reboost/hpge/utils.py | 63 ++++++++++++++++++++++++++-------- 4 files changed, 116 insertions(+), 30 deletions(-) diff --git a/src/reboost/hpge/cli.py b/src/reboost/hpge/cli.py index d7766d1..a7f14b9 100644 --- a/src/reboost/hpge/cli.py +++ b/src/reboost/hpge/cli.py @@ -38,6 +38,16 @@ def hpge_cli() -> None: help="file that contains the configuration", required=True, ) + hit_parser.add_argument( + "--gdml", + help="GDML file used for Geant4", + required=False, + ) + hit_parser.add_argument( + "--macro", + help="Gean4 macro file used to generate raw tier", + required=False, + ) hit_parser.add_argument("input", help="input hit LH5 file", metavar="INPUT_HIT") hit_parser.add_argument("output", help="output evt LH5 file", metavar="OUTPUT_EVT") @@ -62,4 +72,4 @@ def hpge_cli() -> None: with Path.open(Path(args.config)) as config_f: config = json.load(config_f) - build_hit(args.input, args.output, config, args.bufsize) + build_hit(args.input, args.output, config, args.bufsize, gdml=args.gdml, macro=args.macro) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 9c74798..4eda023 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -8,8 +8,50 @@ def build_hit( - lh5_in_file: str, lh5_out_file: str, config: dict, buffer_len: int = int(5e6) + lh5_in_file: str, + lh5_out_file: str, + config: dict, + buffer_len: int = int(5e6), + gdml: str | None = None, + macro: str | None = None, ) -> None: + """ + Build the hit tier from the raw Geant4 output + + Parameters + ---------- + lh5_in_file + input file containing the raw tier + lh5_out_file + output file + config + dictonary containg the configuration / parameters + should contain one sub-dictonary per detector with a format like: + + .. code-block:: json + + "det001": { + "reso": 1, + ... + } + + This can contain any parameters needed in the processing chain. + buffer_len + number of rows to read at once + gdml + path to the gdml file of the geometry + macro + path to the Geant4 macro used to generate the raw tier + """ + + # get the geant4 gdml and macro + + if gdml is not None: + pass + + if macro is not None: + pass + for idx, d in enumerate(config.keys()): msg = f"...running event grouping for {d}" log.debug(msg) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 8154e9f..b523187 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -4,6 +4,7 @@ import numpy as np import utils + def def_chain(funcs, kwargs_list): def func(data): tmp = data @@ -54,25 +55,23 @@ def smear_energy(data, reso=2, energy_name="sum_energy"): data, rng.normal(loc=flat_energy, scale=np.ones_like(flat_energy) * reso), "energy_smeared" ) -def distance_to_surface(data,detector="det001"): +def distance_to_surface(data, detector="det001"): # get detector origin - x,y,z = utils.get_detector_origin(detector) - + x, y, z = utils.get_detector_origin(detector) + # get the r-z points to produce the detector (G4GenericPolyCone) - r,z = utils.get_detector_corners(detector) + r, z = utils.get_detector_corners(detector) # loop over pairs - dists=[] - for (rtmp,ztmp,rnext_tmp,znext_tmp) in zip(r[:-1],z[:-1],r[1:],z[1:]): - - s1 = ak.zip({"x":rtmp,"y":ztmp}) - s2 = ak.zip({"x":rnext_tmp,"y":znext_tmp}) - v_3d=ak.zip({"x":data.xloc-x,"y":data.yloc-y,"z":data.zloc-z}) - v = ak.zip({"x":np.sqrt(np.power(v_3d.x,2)+np.power(v_3d.y,2)),"y":v_3d.z}) - - dist = utils.dist(s1,s2,v) + dists = [] + for rtmp, ztmp, rnext_tmp, znext_tmp in zip(r[:-1], z[:-1], r[1:], z[1:]): + s1 = ak.zip({"x": rtmp, "y": ztmp}) + s2 = ak.zip({"x": rnext_tmp, "y": znext_tmp}) + v_3d = ak.zip({"x": data.xloc - x, "y": data.yloc - y, "z": data.zloc - z}) + v = ak.zip({"x": np.sqrt(np.power(v_3d.x, 2) + np.power(v_3d.y, 2)), "y": v_3d.z}) + + dist = utils.dist(s1, s2, v) dists.append(dist) - raise np.min(dists) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 024b9cd..fdf8d20 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -13,55 +13,90 @@ log = logging.getLogger(__name__) -def distance_3d(v1, v2): +def _distance_3d(v1, v2): return np.sqrt(np.power(v2.x - v1.x, 2) + np.power(v2.y - v1.y, 2) + np.power(v2.z - v1.z, 2)) -def distance_2d(v1, v2): +def _distance_2d(v1, v2): return np.sqrt(np.power(v2.x - v1.x, 2) + np.power(v2.y - v1.y, 2)) -def add_ak_3d(a, b): +def _add_ak_3d(a, b): return ak.zip({"x": a.x + b.x, "y": a.y + b.y, "z": a.z + b.z}) -def add_ak_2d(a, b): +def _add_ak_2d(a, b): return ak.zip({"x": a.x + b.x, "y": a.y + b.y}) -def sub_ak_2d(a, b): +def _sub_ak_2d(a, b): return ak.zip({"x": a.x - b.x, "y": a.y - b.y}) -def sub_ak_3d(a, b): +def _sub_ak_3d(a, b): return ak.zip({"x": a.x - b.x, "y": a.y - b.y, "z": a.z - b.z}) -def prod_ak_2d(a, b): +def _prod_ak_2d(a, b): return a.x * b.x + a.y * b.y -def prod_ak_3d(a, b): +def _prod_ak_3d(a, b): return a.x * b.x + a.y * b.y + a.z * b.z -def prod(a, b): +def _prod(a, b): return ak.zip({"x": a.x * b, "y": a.y * b}) -def proj(s1, s2, v): - dist_one = prod_ak_2d(sub_ak_2d(v, s1), sub_ak_2d(v, s2)) / distance_2d(s1, s2) +def proj(s1: ak.Array, s2: ak.Array, v: ak.Array) -> ak.Array: + """ + Projection v on the line segment s1 to s2. + All of s1,s2 and v are `ak.Array` of records with two fields `x` and `y` + I.e. they represent lists of 2D cartesian vectors. + Parameters + ---------- + s1 + first points in the line segment + s2 + second points in the line segment + v + points to project onto s1-s2 + Returns + ------- + the coordinates of the projection onto s1-s2 + """ + + dist_one = _prod_ak_2d(_sub_ak_2d(v, s1), _sub_ak_2d(v, s2)) / _distance_2d(s1, s2) dist_one = np.where(dist_one > 1, dist_one, 1) dist_one = np.where(dist_one > 0, dist_one, 0) - return prod(add_ak_2d(s1, sub_ak_2d(s2, s1)), dist_one) + return _prod(_add_ak_2d(s1, _sub_ak_2d(s2, s1)), dist_one) -def dist(s1, s2, v): - return distance_2d(proj(s1, s2, v), v) +def dist(s1: ak.Array, s2: ak.Array, v: ak.Array) -> float: + """ + Shortest distance between a point v and the line segment defined by s1-s2. + All of s1,s2 and v are `ak.Array` of records with two fields `x` and `y` + I.e. they represent lists of 2D cartesian vectors. + Parameters + ---------- + s1 + first points in the line segment + s2 + second points in the line segment + v + points to project onto s1-s2 + Returns + ------- + the shortest distance from the point to the line + """ + return _distance_2d(proj(s1, s2, v), v) + def get_detector_origin(name): raise NotImplementedError + def read_write_incremental( file_out: str, name_out: str, From a2e25990fa85ea33e2e57011f81dc5c6b3e668fc Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 10:12:45 +0000 Subject: [PATCH 17/81] style: pre-commit fixes --- src/reboost/hpge/hit.py | 8 ++++---- src/reboost/hpge/processors.py | 1 - src/reboost/hpge/utils.py | 1 - 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 23d2b3f..c34ec20 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -23,13 +23,13 @@ def build_hit( lh5_in_file input file containing the raw tier lh5_out_file - output file + output file config dictonary containg the configuration / parameters should contain one sub-dictonary per detector with a format like: .. code-block:: json - + "det001": { "reso": 1, ... @@ -42,13 +42,13 @@ def build_hit( path to the gdml file of the geometry macro path to the Geant4 macro used to generate the raw tier - """ + """ # get the geant4 gdml and macro if gdml is not None: pass - + if macro is not None: pass diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 0d53ac1..5634b16 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -6,7 +6,6 @@ from . import utils - def def_chain(funcs, kwargs_list): def func(data): tmp = data diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index f49079c..fdf8d20 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -93,7 +93,6 @@ def dist(s1: ak.Array, s2: ak.Array, v: ak.Array) -> float: return _distance_2d(proj(s1, s2, v), v) - def get_detector_origin(name): raise NotImplementedError From 16550ae49b77e145d47a9e9e79098cf0c1f8d54a Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 28 Oct 2024 10:37:59 +0000 Subject: [PATCH 18/81] fix some parts of the docs --- src/reboost/hpge/hit.py | 5 ++--- src/reboost/hpge/processors.py | 29 ++++++++++++++++++++++++++++- src/reboost/hpge/utils.py | 31 ++++++++++++++++++++++--------- 3 files changed, 52 insertions(+), 13 deletions(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index c34ec20..bf062ad 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -25,14 +25,13 @@ def build_hit( lh5_out_file output file config - dictonary containg the configuration / parameters + dictionary containing the configuration / parameters should contain one sub-dictonary per detector with a format like: .. code-block:: json "det001": { - "reso": 1, - ... + "reso": 1 } This can contain any parameters needed in the processing chain. diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 5634b16..c2725d9 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -7,6 +7,10 @@ def def_chain(funcs, kwargs_list): + """ + Builds the processing chain function from a list of functions + """ + def func(data): tmp = data for f, kw in zip(funcs, kwargs_list): @@ -18,16 +22,27 @@ def func(data): def sort_data(obj): + """ + Sort the data by evtid then time + """ indices = np.lexsort((obj.time, obj.evtid)) return obj[indices] def group_by_evtid(data): + """ + Simple grouping by evtid + """ + counts = ak.run_lengths(data.evtid) return ak.unflatten(data, counts) def group_by_time(obj, window=10): + """ + Grouping by evtid and by time + """ + runs = np.array(np.cumsum(ak.run_lengths(obj.evtid))) counts = ak.run_lengths(obj.evtid) @@ -42,7 +57,11 @@ def group_by_time(obj, window=10): def sum_energy(grouped): - sum_energy = ak.sum(grouped.edep, axis=-1) + """ + Sum the energy deposits per hit + """ + + sum_energy = ak.sum(grouped.ed6ep, axis=-1) t0 = ak.fill_none(ak.firsts(grouped.time, axis=-1), np.nan) index = ak.fill_none(ak.firsts(grouped.evtid, axis=-1), np.nan) @@ -50,6 +69,10 @@ def sum_energy(grouped): def smear_energy(data, reso=2, energy_name="sum_energy"): + """ + Smearing og energies + """ + flat_energy = data[energy_name].to_numpy() rng = np.random.default_rng() return ak.with_field( @@ -58,6 +81,10 @@ def smear_energy(data, reso=2, energy_name="sum_energy"): def distance_to_surface(data, detector="det001"): + """ + [WIP] computes the distance of a point to the detector surface + """ + # get detector origin x, y, z = utils.get_detector_origin(detector) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index fdf8d20..cb31b5e 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -52,8 +52,10 @@ def _prod(a, b): def proj(s1: ak.Array, s2: ak.Array, v: ak.Array) -> ak.Array: """ Projection v on the line segment s1 to s2. + All of s1,s2 and v are `ak.Array` of records with two fields `x` and `y` I.e. they represent lists of 2D cartesian vectors. + Parameters ---------- s1 @@ -76,8 +78,11 @@ def proj(s1: ak.Array, s2: ak.Array, v: ak.Array) -> ak.Array: def dist(s1: ak.Array, s2: ak.Array, v: ak.Array) -> float: """ Shortest distance between a point v and the line segment defined by s1-s2. - All of s1,s2 and v are `ak.Array` of records with two fields `x` and `y` + + All of s1,s2 and v are `ak.Array` of records with two fields `x` and `y`. + I.e. they represent lists of 2D cartesian vectors. + Parameters ---------- s1 @@ -86,10 +91,12 @@ def dist(s1: ak.Array, s2: ak.Array, v: ak.Array) -> float: second points in the line segment v points to project onto s1-s2 + Returns ------- the shortest distance from the point to the line """ + return _distance_2d(proj(s1, s2, v), v) @@ -107,16 +114,22 @@ def read_write_incremental( delete_input=False, ) -> None: """ - Read incrementally the files compute something and then write + Read incrementally the files compute something and then write output + Parameters ---------- - file_out (str): output file path - out_name (str): lh5 group name for output - func : function converting into to output - field (str): lh5 field name to read - file (str): file name to read - buffer (int): length of buffer - + file_out + output file path + name_out + lh5 group name for output + func + function converting into to output + field + lh5 field name to read + file + file name to read + buffer + length of buffer """ msg = f"...begin processing with {file} to {file_out}" From 4c4f60328eff9b3cd2b31aac24e1012d45f31a05 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 10:38:35 +0000 Subject: [PATCH 19/81] style: pre-commit fixes --- src/reboost/hpge/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index cb31b5e..489c35f 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -118,7 +118,7 @@ def read_write_incremental( Parameters ---------- - file_out + file_out output file path name_out lh5 group name for output From f8778cc5770d733dc5e2bf36b64838ff0c07e409 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Thu, 7 Nov 2024 16:59:32 +0100 Subject: [PATCH 20/81] generate proccesing chain from config file --- src/reboost/hpge/cli.py | 34 ++++- src/reboost/hpge/hit.py | 239 ++++++++++++++++++++++++++++++--- src/reboost/hpge/processors.py | 160 ++++++++++++++-------- src/reboost/hpge/utils.py | 202 ++++++++-------------------- 4 files changed, 407 insertions(+), 228 deletions(-) diff --git a/src/reboost/hpge/cli.py b/src/reboost/hpge/cli.py index a7f14b9..a581470 100644 --- a/src/reboost/hpge/cli.py +++ b/src/reboost/hpge/cli.py @@ -1,11 +1,11 @@ from __future__ import annotations import argparse -import json import logging from pathlib import Path import colorlog +import yaml def hpge_cli() -> None: @@ -34,8 +34,13 @@ def hpge_cli() -> None: hit_parser = subparsers.add_parser("hit", help="build hit file from remage raw file") hit_parser.add_argument( - "--config", - help="file that contains the configuration", + "--proc_chain", + help="YAML file that contains the processing chain", + required=True, + ) + hit_parser.add_argument( + "--pars", + help="YAML file that contains the pars", required=True, ) hit_parser.add_argument( @@ -69,7 +74,24 @@ def hpge_cli() -> None: logger.info("...running raw->hit tier") from reboost.hpge.hit import build_hit - with Path.open(Path(args.config)) as config_f: - config = json.load(config_f) + with Path.open(Path(args.pars)) as config_f: + pars = yaml.safe_load(config_f) + + with Path.open(Path(args.proc_chain)) as config_f: + proc_config = yaml.safe_load(config_f) + + # check the processing chain + for req_field in ["channels", "outputs", "step_group", "operations"]: + if req_field not in proc_config: + msg = f"error proc chain config must contain the field {req_field}" + raise ValueError(msg) - build_hit(args.input, args.output, config, args.bufsize, gdml=args.gdml, macro=args.macro) + build_hit( + args.input, + args.output, + proc_config, + pars, + args.bufsize, + gdml=args.gdml, + macro=args.macro, + ) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index bf062ad..87221bb 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -2,15 +2,226 @@ import logging -from . import processors, utils +import numpy as np +from lgdo import Array, ArrayOfEqualSizedArrays, LH5Iterator, Table, VectorOfVectors, lh5 + +from . import utils log = logging.getLogger(__name__) +def eval_expression( + table: Table, info: dict, pars: dict +) -> Array | ArrayOfEqualSizedArrays | VectorOfVectors: + """Evaluate an expression returning an LGDO object. + + Parameters + ---------- + table + hit table, with columns possibly used in the operations. + info + dict containing the information on the expression. Must contain `mode` and `expressions` keys + For example: + + .. code-block:: json + + { + "mode": "eval", + "expression":"ak.sum(hit.edep,axis=-1)" + } + + variables preceded by `hit` will be taken from the supplied table. Mode can be either `eval`, + in which case a simple expression is based (only involving numpy, awkward or inbuilt python functions), + or `function` in which case an arbitrary function is passed (for example defined in processors). + + pars + dict of parameters, can contain any fields passed to the expression prefixed by `pars.`. + + + Returns + ------- + a new column for the hit table either :class:`Array`,:class:`ArrayOfEqualSizedArrays` or :class:` VectorOfVectors`. + """ + + pars_tuple = utils.dict2tuple(pars) + local_dict = {"pars": pars_tuple} + + if info["mode"] == "eval": + # replace hit. + expr = info["expression"].replace("hit.", "") + + msg = f"evaluating table with command {expr} and local_dict {local_dict.keys()}" + log.debug(msg) + + col = table.eval(expr, local_dict) + + elif info["mode"] == "function": + proc_func, globs = utils.get_function_string(info["expression"]) + + # add hit table to locals + local_dict = {"hit": table} | local_dict + + msg = f"evaluating table with command {info['expression']} and local_dict {local_dict.keys()} and global dict {globs.keys()}" + log.debug(msg) + col = eval(proc_func, globs, local_dict) + + else: + msg = "mode is not recognised." + raise ValueError(msg) + return col + + +def read_write_incremental( + file_out: str, + name_out: str, + proc_config: dict, + pars: dict, + field: str, + file: str, + buffer: int = 1000000, + delete_input: bool = False, +) -> None: + """ + Read incrementally the files compute something and then write output + + Parameters + ---------- + file_out + output file path + name_out + lh5 group name for output + proc_config + the configuration file for the processing. Must contain the fields `channels`, `outputs`, `step_group` and operations`. + For example: + + .. code-block:: json + + { + "channels": [ + "det000", + "det001", + "det002", + "det003" + ], + "outputs": [ + "t0", + "truth_energy_sum", + "smeared_energy_sum", + "evtid" + ], + "step_group": { + "description": "group steps by time and evtid.", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)" + }, + "truth_energy_sum": { + "description": "truth summed energy in the hit.", + "mode": "eval", + "expression": "ak.sum(hit.edep,axis=-1)" + }, + "smeared_energy_sum": { + "description": "summed energy after convolution with energy response.", + "mode": "function", + "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" + } + } + } + + pars + a dictionary of parameters, must have a field per channel consisting of a `dict` of parameters. For example: + + .. code-block:: json + { + "det000": { + "reso": 1., + "fccd": 0.1 + } + } + + field + lh5 field name to read. + file + file name to read + buffer + length of buffer + delete_input + flag to delete the input file. + + Note + ---- + The operations can depend on the outputs of previous steps, so operations order is important. + """ + + msg = f"...begin processing with {file} to {file_out}" + log.info(msg) + + entries = LH5Iterator(file, field, buffer_len=buffer)._get_file_cumentries(0) + + # number of blocks is ceil of entries/buffer, + # shift by 1 since idx starts at 0 + # this is maybe too high if buffer exactly divides idx + max_idx = int(np.ceil(entries / buffer)) - 1 + buffer_rows = None + + for idx, (lh5_obj, _, _) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): + msg = f"... processed {idx} files out of {max_idx}" + log.debug(msg) + + # convert to awkward + ak_obj = lh5_obj.view_as("ak") + + # handle the buffers + obj, buffer_rows, mode = utils._merge_arrays( + ak_obj, buffer_rows, idx=idx, max_idx=max_idx, delete_input=delete_input + ) + + # convert back to a table, should work + data = Table(obj) + + # define glob and local dicts for the func cal + group_func, globs = utils.get_function_string( + proc_config["step_group"]["expression"], + ) + locs = {"stp": data} + + msg = f"running step grouping with {group_func} and globals {globs.keys()} and locals {locs.keys()}" + log.debug(msg) + + # group to create hit table + grouped = eval(group_func, globs, locs) + + # processors + for name, info in proc_config["operations"].items(): + msg = f"adding column {name}" + log.debug(msg) + + col = eval_expression(grouped, info, pars) + grouped.add_field(name, col) + + # remove unwanted columns + log.debug("removing unwanted columns") + + existing_cols = list(grouped.keys()) + for col in existing_cols: + if col not in proc_config["outputs"]: + grouped.remove_column(col, delete=True) + + # write lh5 file + msg = f"...finished processing and save file with wo_mode {mode}" + log.debug(msg) + lh5.write(grouped, name_out, file_out, wo_mode=mode) + + def build_hit( lh5_in_file: str, lh5_out_file: str, - config: dict, + proc_config: dict, + pars: dict, buffer_len: int = int(5e6), gdml: str | None = None, macro: str | None = None, @@ -51,28 +262,16 @@ def build_hit( if macro is not None: pass - for idx, d in enumerate(config.keys()): - msg = f"...running event grouping for {d}" - log.debug(msg) + for idx, d in enumerate(proc_config["channels"]): + msg = f"...running hit tier for {d}" + log.info(msg) delete_input = bool(idx == 0) - # build the processing chain - # TODO replace this with a config file similar to pygama.build_evt - - proc = processors.def_chain( - [ - processors.sort_data, - processors.group_by_time, - processors.sum_energy, - processors.smear_energy, - ], - [{}, {"window": 10}, {}, {"reso": config[d]["reso"], "energy_name": "sum_energy"}], - ) - - utils.read_write_incremental( + read_write_incremental( lh5_out_file, f"hit/{d}", - proc, + proc_config, + pars[d], f"hit/{d}", lh5_in_file, buffer_len, diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index c2725d9..1282511 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -1,9 +1,9 @@ from __future__ import annotations import awkward as ak +import lgdo import numpy as np - -from . import utils +from lgdo import Array, Table, VectorOfVectors def def_chain(funcs, kwargs_list): @@ -21,85 +21,133 @@ def func(data): return func -def sort_data(obj): - """ - Sort the data by evtid then time +def sort_data(obj: ak.Array) -> ak.Array: + """Sort the data by evtid then time. + + Parameters + ---------- + obj + array of records containing fields `time` and `evtid` + + Returns + ------- + sorted awkward array """ indices = np.lexsort((obj.time, obj.evtid)) return obj[indices] -def group_by_evtid(data): - """ - Simple grouping by evtid - """ +def group_by_evtid(data: Table) -> Table: + """Simple grouping by evtid. - counts = ak.run_lengths(data.evtid) - return ak.unflatten(data, counts) + Takes the input `stp` :class:`LGOD.Table` from remage and defines groupings of steps (i.e the + `cumulative_length` for a vector of vectors). This then defines the output table (also :class:`LGDO.Table`), + on which processors can add fields. + Parameters + ---------- + data + LGDO Table which must contain the `evtid` field. -def group_by_time(obj, window=10): - """ - Grouping by evtid and by time + Returns + ------- + LGDO table of :class:`VectorOfVector` for each field. + + Note + ---- + The input table must be sorted (by `evtid`). """ - runs = np.array(np.cumsum(ak.run_lengths(obj.evtid))) - counts = ak.run_lengths(obj.evtid) + # convert to awkward + obj_ak = data.view_as("ak") - time_diffs = np.diff(obj.time) - index_diffs = np.diff(obj.evtid) + # sort input + obj_ak = sort_data(obj_ak) - change_points = np.array(np.where((time_diffs > window * 1000) & (index_diffs == 0)))[0] - total_change = np.sort(np.concatenate(([0], change_points, runs), axis=0)) + # extract cumulative lengths + counts = ak.run_lengths(obj_ak.evtid) + cumulative_length = np.cumsum(counts) - counts = ak.Array(np.diff(total_change)) - return ak.unflatten(obj, counts) + # build output table + out_tbl = Table(size=len(cumulative_length)) + for f in obj_ak.fields: + out_tbl.add_field( + f, VectorOfVectors(cumulative_length=cumulative_length, flattened_data=obj_ak[f]) + ) + return out_tbl -def sum_energy(grouped): - """ - Sum the energy deposits per hit - """ - sum_energy = ak.sum(grouped.ed6ep, axis=-1) - t0 = ak.fill_none(ak.firsts(grouped.time, axis=-1), np.nan) - index = ak.fill_none(ak.firsts(grouped.evtid, axis=-1), np.nan) +def group_by_time(data: Table, window: float = 10) -> lgdo.Table: + """Grouping of steps by `evtid` and `time`. - return ak.zip({"sum_energy": sum_energy, "t0": t0, "evtid": index}) + Takes the input `stp` :class:`LGOD.Table` from remage and defines groupings of steps (i.e the + `cumulative_length` for a vector of vectors). This then defines the output table (also :class:`LGDO.Table`), + on which processors can add fields. + The windowing is based on defining a new group when the `evtid` changes or when the time increases by `> window`, + which is in units of us. -def smear_energy(data, reso=2, energy_name="sum_energy"): - """ - Smearing og energies - """ - flat_energy = data[energy_name].to_numpy() - rng = np.random.default_rng() - return ak.with_field( - data, rng.normal(loc=flat_energy, scale=np.ones_like(flat_energy) * reso), "energy_smeared" - ) + Parameters + ---------- + data + LGDO Table which must contain the `evtid`, `time` field. + Returns + ------- + LGDO table of :class:`VectorOfVector` for each field. -def distance_to_surface(data, detector="det001"): - """ - [WIP] computes the distance of a point to the detector surface + Note + ---- + The input table must be sorted (first by `evtid` then `time`). """ - # get detector origin - x, y, z = utils.get_detector_origin(detector) + obj = data.view_as("ak") + + # get difference + time_diffs = np.diff(obj.time) + index_diffs = np.diff(obj.evtid) + + # index of thhe last element in each run + time_change = (time_diffs > window * 1000) & (index_diffs == 0) + index_change = index_diffs > 0 + + # cumulative length is just the index of changes plus 1 + cumulative_length = np.array(np.where(time_change | index_change))[0] + 1 + + # add the las grouping + cumulative_length = np.append(cumulative_length, len(obj.time)) + + # build output table + out_tbl = Table(size=len(cumulative_length)) - # get the r-z points to produce the detector (G4GenericPolyCone) - r, z = utils.get_detector_corners(detector) + for f in obj.fields: + out_tbl.add_field( + f, VectorOfVectors(cumulative_length=cumulative_length, flattened_data=obj[f]) + ) - # loop over pairs - dists = [] - for rtmp, ztmp, rnext_tmp, znext_tmp in zip(r[:-1], z[:-1], r[1:], z[1:]): - s1 = ak.zip({"x": rtmp, "y": ztmp}) - s2 = ak.zip({"x": rnext_tmp, "y": znext_tmp}) - v_3d = ak.zip({"x": data.xloc - x, "y": data.yloc - y, "z": data.zloc - z}) - v = ak.zip({"x": np.sqrt(np.power(v_3d.x, 2) + np.power(v_3d.y, 2)), "y": v_3d.z}) + return out_tbl - dist = utils.dist(s1, s2, v) - dists.append(dist) - raise np.min(dists) +def smear_energies(truth_energy: Array, reso: float = 2) -> Array: + """Smearing of energies. + + Parameters + ---------- + truth_energy + Array of energies to be smeared. + reso + energy resolution (sigma). + + Returns + ------- + New array after sampling from a Gaussian with mean :math:`energy_i` and sigma `reso` for every element of + `truth_array`. + + """ + + flat_energy = truth_energy + rng = np.random.default_rng() + + return Array(rng.normal(loc=flat_energy, scale=np.ones_like(flat_energy) * reso)) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 489c35f..32fc318 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -1,175 +1,85 @@ from __future__ import annotations import copy +import importlib import logging -from typing import Callable +import re +from collections import namedtuple import awkward as ak -import numpy as np -from lgdo import lh5 -from lgdo.lh5 import LH5Iterator -from lgdo.types import Table log = logging.getLogger(__name__) -def _distance_3d(v1, v2): - return np.sqrt(np.power(v2.x - v1.x, 2) + np.power(v2.y - v1.y, 2) + np.power(v2.z - v1.z, 2)) - - -def _distance_2d(v1, v2): - return np.sqrt(np.power(v2.x - v1.x, 2) + np.power(v2.y - v1.y, 2)) - - -def _add_ak_3d(a, b): - return ak.zip({"x": a.x + b.x, "y": a.y + b.y, "z": a.z + b.z}) - - -def _add_ak_2d(a, b): - return ak.zip({"x": a.x + b.x, "y": a.y + b.y}) - +def get_detector_origin(name): + raise NotImplementedError -def _sub_ak_2d(a, b): - return ak.zip({"x": a.x - b.x, "y": a.y - b.y}) +def dict2tuple(dictionary: dict) -> namedtuple: + return namedtuple("parameters", dictionary.keys())(**dictionary) -def _sub_ak_3d(a, b): - return ak.zip({"x": a.x - b.x, "y": a.y - b.y, "z": a.z - b.z}) +def get_function_string(expr: str) -> tuple[str, dict]: + """Get a function call to evaluate.""" -def _prod_ak_2d(a, b): - return a.x * b.x + a.y * b.y + args_str = re.search(r"\((.*)\)$", expr.strip()).group(1) + # get module and function names + func_call = expr.strip().split("(")[0] + subpackage, func = func_call.rsplit(".", 1) + package = subpackage.split(".")[0] + importlib.import_module(subpackage, package=__package__) -def _prod_ak_3d(a, b): - return a.x * b.x + a.y * b.y + a.z * b.z + # declare imported package as globals (see eval() call later) + globs = { + package: importlib.import_module(package), + } + call_str = f"{func_call}({args_str})" -def _prod(a, b): - return ak.zip({"x": a.x * b, "y": a.y * b}) + return call_str, globs -def proj(s1: ak.Array, s2: ak.Array, v: ak.Array) -> ak.Array: - """ - Projection v on the line segment s1 to s2. +def _merge_arrays( + ak_obj: ak.Array, buffer_rows: ak.Array, idx: int, max_idx: int, delete_input: bool = False +) -> tuple[ak.Array, ak.Array, str]: + """Merge awkward arrays with a buffer and simultaneously remove the last rows. - All of s1,s2 and v are `ak.Array` of records with two fields `x` and `y` - I.e. they represent lists of 2D cartesian vectors. + This function is used since when iterating through the rows of an Array it will + sometimes happen to split some events. This concatenates rows in the buffer onto the start of the data. + This also removes the last rows of each chunk and saves them into a buffer. Parameters ---------- - s1 - first points in the line segment - s2 - second points in the line segment - v - points to project onto s1-s2 - Returns - ------- - the coordinates of the projection onto s1-s2 - """ - - dist_one = _prod_ak_2d(_sub_ak_2d(v, s1), _sub_ak_2d(v, s2)) / _distance_2d(s1, s2) - dist_one = np.where(dist_one > 1, dist_one, 1) - dist_one = np.where(dist_one > 0, dist_one, 0) - return _prod(_add_ak_2d(s1, _sub_ak_2d(s2, s1)), dist_one) - - -def dist(s1: ak.Array, s2: ak.Array, v: ak.Array) -> float: - """ - Shortest distance between a point v and the line segment defined by s1-s2. - - All of s1,s2 and v are `ak.Array` of records with two fields `x` and `y`. - - I.e. they represent lists of 2D cartesian vectors. - - Parameters - ---------- - s1 - first points in the line segment - s2 - second points in the line segment - v - points to project onto s1-s2 + obj + array of data + buffer_rows + buffer to concatenate with. + idx + integer index used control the behaviour for the first and last chunk. + max_idx + largest index. + delete_input + flag to delete the input files. Returns ------- - the shortest distance from the point to the line + (obj,buffer,mode) tuple of the data, the buffer for the next chunk and the IO mode for file writing. """ - - return _distance_2d(proj(s1, s2, v), v) - - -def get_detector_origin(name): - raise NotImplementedError - - -def read_write_incremental( - file_out: str, - name_out: str, - func: Callable, - field: str, - file: str, - buffer: int = 1000000, - delete_input=False, -) -> None: - """ - Read incrementally the files compute something and then write output - - Parameters - ---------- - file_out - output file path - name_out - lh5 group name for output - func - function converting into to output - field - lh5 field name to read - file - file name to read - buffer - length of buffer - """ - - msg = f"...begin processing with {file} to {file_out}" - log.info(msg) - - entries = LH5Iterator(file, field, buffer_len=buffer)._get_file_cumentries(0) - - # number of blocks is ceil of entries/buffer, - # shift by 1 since idx starts at 0 - # this is maybe too high if buffer exactly divides idx - max_idx = int(np.ceil(entries / buffer)) - 1 - buffer_rows = None - - for idx, (lh5_obj, _, _) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): - msg = f"... processed {idx} files out of {max_idx}" - log.debug(msg) - - ak_obj = lh5_obj.view_as("ak") - counts = ak.run_lengths(ak_obj.evtid) - rows = ak.num(ak_obj, axis=-1) - end_rows = counts[-1] - - if idx == 0: - mode = "of" if (delete_input) else "append" - obj = ak_obj[0 : rows - end_rows] - buffer_rows = copy.deepcopy(ak_obj[rows - end_rows :]) - elif idx != max_idx: - mode = "append" - obj = ak.concatenate((buffer_rows, ak_obj[0 : rows - end_rows])) - buffer_rows = copy.deepcopy(ak_obj[rows - end_rows :]) - else: - mode = "append" - obj = ak.concatenate((buffer_rows, ak_obj)) - - # do stuff - out = func(obj) - - # convert to a table - out_lh5 = Table(out) - - # write lh5 file - log.info("...finished processing and save file") - lh5.write(out_lh5, name_out, file_out, wo_mode=mode) + counts = ak.run_lengths(ak_obj.evtid) + rows = ak.num(ak_obj, axis=-1) + end_rows = counts[-1] + + if idx == 0: + mode = "of" if (delete_input) else "append" + obj = ak_obj[0 : rows - end_rows] + buffer_rows = copy.deepcopy(ak_obj[rows - end_rows :]) + elif idx != max_idx: + mode = "append" + obj = ak.concatenate((buffer_rows, ak_obj[0 : rows - end_rows])) + buffer_rows = copy.deepcopy(ak_obj[rows - end_rows :]) + else: + mode = "append" + obj = ak.concatenate((buffer_rows, ak_obj)) + + return obj, buffer_rows, mode From 0e7aaf5877048cfd3a1c33eb54633742150a7f56 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Thu, 7 Nov 2024 17:39:13 +0100 Subject: [PATCH 21/81] bit of clean up / improved docs --- src/reboost/hpge/cli.py | 16 +- src/reboost/hpge/hit.py | 282 +++++++++++++++------------------ src/reboost/hpge/processors.py | 3 +- 3 files changed, 144 insertions(+), 157 deletions(-) diff --git a/src/reboost/hpge/cli.py b/src/reboost/hpge/cli.py index a581470..d22be02 100644 --- a/src/reboost/hpge/cli.py +++ b/src/reboost/hpge/cli.py @@ -53,6 +53,12 @@ def hpge_cli() -> None: help="Gean4 macro file used to generate raw tier", required=False, ) + + hit_parser.add_argument("--infield", help="input LH5 field", required=False, default="hit") + hit_parser.add_argument( + "--outfield", help="output LH5 field name", required=False, default="hit" + ) + hit_parser.add_argument("input", help="input hit LH5 file", metavar="INPUT_HIT") hit_parser.add_argument("output", help="output evt LH5 file", metavar="OUTPUT_EVT") @@ -87,11 +93,13 @@ def hpge_cli() -> None: raise ValueError(msg) build_hit( - args.input, args.output, - proc_config, - pars, - args.bufsize, + args.input, + out_field=args.outfield, + in_field=args.infield, + proc_config=proc_config, + pars=pars, + buffer=args.bufsize, gdml=args.gdml, macro=args.macro, ) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 87221bb..9629bb9 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -10,6 +10,40 @@ log = logging.getLogger(__name__) +def step_group(data: Table, group_config: dict) -> Table: + """Performs a grouping of geant4 steps to build the `hit` table. + + Parameters + ---------- + data + `stp` table from remage. + group_config + dict with the configuration describing the step grouping. + For example + + .. code-block:: json + + { + "description": "group steps by time and evtid.", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" + } + + this will then evaluate the function chosen by `expression` resulting in a new Table. + + """ + + # group to create hit table + + group_func, globs = utils.get_function_string( + group_config["expression"], + ) + locs = {"stp": data} + + msg = f"running step grouping with {group_func} and globals {globs.keys()} and locals {locs.keys()}" + log.debug(msg) + return eval(group_func, globs, locs) + + def eval_expression( table: Table, info: dict, pars: dict ) -> Array | ArrayOfEqualSizedArrays | VectorOfVectors: @@ -20,7 +54,7 @@ def eval_expression( table hit table, with columns possibly used in the operations. info - dict containing the information on the expression. Must contain `mode` and `expressions` keys + `dict` containing the information on the expression. Must contain `mode` and `expressions` keys For example: .. code-block:: json @@ -40,7 +74,7 @@ def eval_expression( Returns ------- - a new column for the hit table either :class:`Array`,:class:`ArrayOfEqualSizedArrays` or :class:` VectorOfVectors`. + a new column for the hit table either :class:`Array`, :class:`ArrayOfEqualSizedArrays` or :class:`VectorOfVectors`. """ pars_tuple = utils.dict2tuple(pars) @@ -71,15 +105,16 @@ def eval_expression( return col -def read_write_incremental( +def build_hit( file_out: str, - name_out: str, + file_in: str, + out_field: str, + in_field: str, proc_config: dict, pars: dict, - field: str, - file: str, buffer: int = 1000000, - delete_input: bool = False, + gdml: str | None = None, + macro: str | None = None, ) -> None: """ Read incrementally the files compute something and then write output @@ -88,8 +123,12 @@ def read_write_incremental( ---------- file_out output file path - name_out + file_in + input_file_path + out_field lh5 group name for output + in_field + lh5 group name for input proc_config the configuration file for the processing. Must contain the fields `channels`, `outputs`, `step_group` and operations`. For example: @@ -97,183 +136,124 @@ def read_write_incremental( .. code-block:: json { - "channels": [ - "det000", - "det001", - "det002", - "det003" - ], - "outputs": [ - "t0", - "truth_energy_sum", - "smeared_energy_sum", - "evtid" - ], - "step_group": { - "description": "group steps by time and evtid.", - "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" - }, - "operations": { - "t0": { - "description": "first time in the hit.", - "mode": "eval", - "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)" - }, - "truth_energy_sum": { - "description": "truth summed energy in the hit.", - "mode": "eval", - "expression": "ak.sum(hit.edep,axis=-1)" + "channels": [ + "det000", + "det001", + "det002", + "det003" + ], + "outputs": [ + "t0", + "truth_energy_sum", + "smeared_energy_sum", + "evtid" + ], + "step_group": { + "description": "group steps by time and evtid.", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" }, - "smeared_energy_sum": { - "description": "summed energy after convolution with energy response.", - "mode": "function", - "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)" + }, + "truth_energy_sum": { + "description": "truth summed energy in the hit.", + "mode": "eval", + "expression": "ak.sum(hit.edep,axis=-1)" + }, + "smeared_energy_sum": { + "description": "summed energy after convolution with energy response.", + "mode": "function", + "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" + } + } } - } pars a dictionary of parameters, must have a field per channel consisting of a `dict` of parameters. For example: .. code-block:: json + { "det000": { - "reso": 1., + "reso": 1, "fccd": 0.1 } } - field - lh5 field name to read. - file - file name to read buffer length of buffer - delete_input - flag to delete the input file. + gdml + path to the input gdml file. + macro + path to the macro file. Note ---- The operations can depend on the outputs of previous steps, so operations order is important. """ + if gdml is not None: + pass - msg = f"...begin processing with {file} to {file_out}" - log.info(msg) - - entries = LH5Iterator(file, field, buffer_len=buffer)._get_file_cumentries(0) - - # number of blocks is ceil of entries/buffer, - # shift by 1 since idx starts at 0 - # this is maybe too high if buffer exactly divides idx - max_idx = int(np.ceil(entries / buffer)) - 1 - buffer_rows = None - - for idx, (lh5_obj, _, _) in enumerate(LH5Iterator(file, field, buffer_len=buffer)): - msg = f"... processed {idx} files out of {max_idx}" - log.debug(msg) - - # convert to awkward - ak_obj = lh5_obj.view_as("ak") - - # handle the buffers - obj, buffer_rows, mode = utils._merge_arrays( - ak_obj, buffer_rows, idx=idx, max_idx=max_idx, delete_input=delete_input - ) + if macro is not None: + pass - # convert back to a table, should work - data = Table(obj) + for ch_idx, d in enumerate(proc_config["channels"]): + msg = f"...running hit tier for {d}" + log.info(msg) + delete_input = bool(ch_idx == 0) - # define glob and local dicts for the func cal - group_func, globs = utils.get_function_string( - proc_config["step_group"]["expression"], - ) - locs = {"stp": data} + msg = f"...begin processing with {file_in} to {file_out}" + log.info(msg) - msg = f"running step grouping with {group_func} and globals {globs.keys()} and locals {locs.keys()}" - log.debug(msg) + entries = LH5Iterator(file_in, f"{in_field}/{d}", buffer_len=buffer)._get_file_cumentries(0) - # group to create hit table - grouped = eval(group_func, globs, locs) + # number of blocks is ceil of entries/buffer, + # shift by 1 since idx starts at 0 + # this is maybe too high if buffer exactly divides idx + max_idx = int(np.ceil(entries / buffer)) - 1 + buffer_rows = None - # processors - for name, info in proc_config["operations"].items(): - msg = f"adding column {name}" + for idx, (lh5_obj, _, _) in enumerate( + LH5Iterator(file_in, f"{in_field}/{d}", buffer_len=buffer) + ): + msg = f"... processed {idx} files out of {max_idx}" log.debug(msg) - col = eval_expression(grouped, info, pars) - grouped.add_field(name, col) + # convert to awkward + ak_obj = lh5_obj.view_as("ak") - # remove unwanted columns - log.debug("removing unwanted columns") + # handle the buffers + obj, buffer_rows, mode = utils._merge_arrays( + ak_obj, buffer_rows, idx=idx, max_idx=max_idx, delete_input=delete_input + ) - existing_cols = list(grouped.keys()) - for col in existing_cols: - if col not in proc_config["outputs"]: - grouped.remove_column(col, delete=True) + # convert back to a table, should work + data = Table(obj) - # write lh5 file - msg = f"...finished processing and save file with wo_mode {mode}" - log.debug(msg) - lh5.write(grouped, name_out, file_out, wo_mode=mode) + # group steps into hits + grouped = step_group(data, proc_config["step_group"]) + # processors + for name, info in proc_config["operations"].items(): + msg = f"adding column {name}" + log.debug(msg) -def build_hit( - lh5_in_file: str, - lh5_out_file: str, - proc_config: dict, - pars: dict, - buffer_len: int = int(5e6), - gdml: str | None = None, - macro: str | None = None, -) -> None: - """ - Build the hit tier from the raw Geant4 output + col = eval_expression(grouped, info, pars) + grouped.add_field(name, col) - Parameters - ---------- - lh5_in_file - input file containing the raw tier - lh5_out_file - output file - config - dictionary containing the configuration / parameters - should contain one sub-dictonary per detector with a format like: + # remove unwanted columns + log.debug("removing unwanted columns") - .. code-block:: json - - "det001": { - "reso": 1 - } - - This can contain any parameters needed in the processing chain. - buffer_len - number of rows to read at once - gdml - path to the gdml file of the geometry - macro - path to the Geant4 macro used to generate the raw tier - """ - - # get the geant4 gdml and macro + existing_cols = list(grouped.keys()) + for col in existing_cols: + if col not in proc_config["outputs"]: + grouped.remove_column(col, delete=True) - if gdml is not None: - pass - - if macro is not None: - pass - - for idx, d in enumerate(proc_config["channels"]): - msg = f"...running hit tier for {d}" - log.info(msg) - delete_input = bool(idx == 0) - - read_write_incremental( - lh5_out_file, - f"hit/{d}", - proc_config, - pars[d], - f"hit/{d}", - lh5_in_file, - buffer_len, - delete_input=delete_input, - ) + # write lh5 file + msg = f"...finished processing and save file with wo_mode {mode}" + log.debug(msg) + lh5.write(grouped, f"{out_field}/{d}", file_out, wo_mode=mode) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 1282511..97dfc27 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -142,8 +142,7 @@ def smear_energies(truth_energy: Array, reso: float = 2) -> Array: Returns ------- - New array after sampling from a Gaussian with mean :math:`energy_i` and sigma `reso` for every element of - `truth_array`. + New array after sampling from a Gaussian with mean :math:`energy_i` and sigma `reso` for every element of `truth_array`. """ From 5a9595bab43e49da85e7927a83dffcc45033a8b8 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 8 Nov 2024 00:11:47 +0100 Subject: [PATCH 22/81] [tests] add test for the windowing --- src/reboost/hpge/processors.py | 1 + tests/test_hpge_step_group.py | 38 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 tests/test_hpge_step_group.py diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 97dfc27..15d01eb 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -104,6 +104,7 @@ def group_by_time(data: Table, window: float = 10) -> lgdo.Table: """ obj = data.view_as("ak") + obj = sort_data(obj) # get difference time_diffs = np.diff(obj.time) diff --git a/tests/test_hpge_step_group.py b/tests/test_hpge_step_group.py new file mode 100644 index 0000000..d88ee22 --- /dev/null +++ b/tests/test_hpge_step_group.py @@ -0,0 +1,38 @@ +from __future__ import annotations + +from reboost.hpge import processors +from lgdo import Array,VectorOfVectors,Table +import numpy as np +import awkward as ak + +def test_evtid_group(): + + in_arr_evtid = ak.Array({"evtid":[1,1,1,2,2,10,10,11,12,12,12],"time":np.zeros(11)}) + + in_tab = Table(in_arr_evtid) + + + out = processors.group_by_evtid(in_tab) + out_ak =out.view_as("ak") + assert ak.all(out_ak.evtid==[[1,1,1],[2,2],[10,10],[11],[12,12,12]]) + assert ak.all(out_ak.time==[[0,0,0],[0,0],[0,0],[0],[0,0,0]]) + + + +def test_time_group(): + + # time units are ns + in_arr_evtid = ak.Array({"evtid":[1, 1, 1,2, 2, 2, 2, 2,11,12,12,12,15,15,15,15,15], + "time":[0,-2000,3000,0,100,1200,17000,17010,0,0,0,-5000,150,151,152,3000,3100]}) + + + in_tab = Table(in_arr_evtid) + + + # 1us =1000ns + out = processors.group_by_time(in_tab,window=1) + out_ak =out.view_as("ak") + assert ak.all(out_ak.evtid==[[1],[1],[1],[2,2],[2],[2,2],[11],[12],[12,12],[15,15,15],[15,15]]) + assert ak.all(out_ak.time==[[-2000],[0],[3000],[0,100],[1200],[17000,17010],[0],[-5000],[0,0],[150,151,152],[3000,3100]]) + + From 63ca42b6d2124c212d89f0184cf190ccb601b5e9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2024 23:12:01 +0000 Subject: [PATCH 23/81] style: pre-commit fixes --- tests/test_hpge_step_group.py | 78 +++++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 21 deletions(-) diff --git a/tests/test_hpge_step_group.py b/tests/test_hpge_step_group.py index d88ee22..61829b2 100644 --- a/tests/test_hpge_step_group.py +++ b/tests/test_hpge_step_group.py @@ -1,38 +1,74 @@ from __future__ import annotations -from reboost.hpge import processors -from lgdo import Array,VectorOfVectors,Table -import numpy as np import awkward as ak +import numpy as np +from lgdo import Table -def test_evtid_group(): +from reboost.hpge import processors - in_arr_evtid = ak.Array({"evtid":[1,1,1,2,2,10,10,11,12,12,12],"time":np.zeros(11)}) - in_tab = Table(in_arr_evtid) +def test_evtid_group(): + in_arr_evtid = ak.Array( + {"evtid": [1, 1, 1, 2, 2, 10, 10, 11, 12, 12, 12], "time": np.zeros(11)} + ) + in_tab = Table(in_arr_evtid) out = processors.group_by_evtid(in_tab) - out_ak =out.view_as("ak") - assert ak.all(out_ak.evtid==[[1,1,1],[2,2],[10,10],[11],[12,12,12]]) - assert ak.all(out_ak.time==[[0,0,0],[0,0],[0,0],[0],[0,0,0]]) - + out_ak = out.view_as("ak") + assert ak.all(out_ak.evtid == [[1, 1, 1], [2, 2], [10, 10], [11], [12, 12, 12]]) + assert ak.all(out_ak.time == [[0, 0, 0], [0, 0], [0, 0], [0], [0, 0, 0]]) def test_time_group(): - # time units are ns - in_arr_evtid = ak.Array({"evtid":[1, 1, 1,2, 2, 2, 2, 2,11,12,12,12,15,15,15,15,15], - "time":[0,-2000,3000,0,100,1200,17000,17010,0,0,0,-5000,150,151,152,3000,3100]}) - + in_arr_evtid = ak.Array( + { + "evtid": [1, 1, 1, 2, 2, 2, 2, 2, 11, 12, 12, 12, 15, 15, 15, 15, 15], + "time": [ + 0, + -2000, + 3000, + 0, + 100, + 1200, + 17000, + 17010, + 0, + 0, + 0, + -5000, + 150, + 151, + 152, + 3000, + 3100, + ], + } + ) in_tab = Table(in_arr_evtid) - # 1us =1000ns - out = processors.group_by_time(in_tab,window=1) - out_ak =out.view_as("ak") - assert ak.all(out_ak.evtid==[[1],[1],[1],[2,2],[2],[2,2],[11],[12],[12,12],[15,15,15],[15,15]]) - assert ak.all(out_ak.time==[[-2000],[0],[3000],[0,100],[1200],[17000,17010],[0],[-5000],[0,0],[150,151,152],[3000,3100]]) - - + out = processors.group_by_time(in_tab, window=1) + out_ak = out.view_as("ak") + assert ak.all( + out_ak.evtid + == [[1], [1], [1], [2, 2], [2], [2, 2], [11], [12], [12, 12], [15, 15, 15], [15, 15]] + ) + assert ak.all( + out_ak.time + == [ + [-2000], + [0], + [3000], + [0, 100], + [1200], + [17000, 17010], + [0], + [-5000], + [0, 0], + [150, 151, 152], + [3000, 3100], + ] + ) From d65ffade253719e7f5a70e346582b3b9a64df95d Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 8 Nov 2024 11:27:14 +0100 Subject: [PATCH 24/81] [tests] adding more tests --- src/reboost/hpge/processors.py | 14 ------------- tests/test_hpge_hit.py | 38 ++++++++++++++++++++++++++++++++++ tests/test_hpge_processors.py | 12 +++++++++++ tests/test_hpge_step_group.py | 17 ++++++++++++++- 4 files changed, 66 insertions(+), 15 deletions(-) create mode 100644 tests/test_hpge_hit.py create mode 100644 tests/test_hpge_processors.py diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 15d01eb..6a27306 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -6,20 +6,6 @@ from lgdo import Array, Table, VectorOfVectors -def def_chain(funcs, kwargs_list): - """ - Builds the processing chain function from a list of functions - """ - - def func(data): - tmp = data - for f, kw in zip(funcs, kwargs_list): - tmp = f(tmp, **kw) - - return tmp - - return func - def sort_data(obj: ak.Array) -> ak.Array: """Sort the data by evtid then time. diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py new file mode 100644 index 0000000..9c910e1 --- /dev/null +++ b/tests/test_hpge_hit.py @@ -0,0 +1,38 @@ +from __future__ import annotations + +import awkward as ak +import numpy as np +import pytest +from lgdo import Table + +from reboost.hpge import hit + + +def test_eval(): + in_arr = ak.Array( + { + "evtid": [[1, 1, 1], [2, 2], [10, 10], [11], [12, 12, 12]], + "time": [[0, 0, 0], [0, 0], [0, 0], [0], [0, 0, 0]], + "edep": [[100, 150, 300], [0, 2000], [10, 20], [19], [100, 200, 300]], + } + ) + tab = Table(in_arr) + basic_eval = {"mode": "eval", "expression": "ak.sum(hit.edep,axis=-1)"} + + assert ak.all( + hit.eval_expression(tab, basic_eval, {}).view_as("ak") == [550, 2000, 30, 19, 600] + ) + + tab.add_field("e_sum", hit.eval_expression(tab, basic_eval, {})) + bad_eval = {"mode": "sum", "expression": "ak.sum(hit.edep,axis=-1)"} + + with pytest.raises(ValueError): + hit.eval_expression(tab, bad_eval, {}) + + func_eval = { + "mode": "function", + "expression": "reboost.hpge.processors.smear_energies(hit.e_sum,reso=pars.reso)", + } + pars = {"reso": 2} + + assert np.size(hit.eval_expression(tab, func_eval, pars).view_as("np")) == 5 diff --git a/tests/test_hpge_processors.py b/tests/test_hpge_processors.py new file mode 100644 index 0000000..167912f --- /dev/null +++ b/tests/test_hpge_processors.py @@ -0,0 +1,12 @@ +from __future__ import annotations + +import numpy as np + +from reboost.hpge import processors + + +def test_smear(): + truth = np.array([1, 2, 3, 4, 5]) + smeared = processors.smear_energies(truth, reso=0.01) + + assert np.size(smeared) == 5 diff --git a/tests/test_hpge_step_group.py b/tests/test_hpge_step_group.py index 61829b2..52d9bab 100644 --- a/tests/test_hpge_step_group.py +++ b/tests/test_hpge_step_group.py @@ -4,7 +4,7 @@ import numpy as np from lgdo import Table -from reboost.hpge import processors +from reboost.hpge import hit, processors def test_evtid_group(): @@ -19,6 +19,21 @@ def test_evtid_group(): assert ak.all(out_ak.evtid == [[1, 1, 1], [2, 2], [10, 10], [11], [12, 12, 12]]) assert ak.all(out_ak.time == [[0, 0, 0], [0, 0], [0, 0], [0], [0, 0, 0]]) + # test the eval in build hit also + + out_eval = hit.step_group( + in_tab, + { + "description": "group steps by time and evtid.", + "expression": "reboost.hpge.processors.group_by_evtid(stp)", + }, + ) + + out_eval_ak = out_eval.view_as("ak") + + assert ak.all(out_ak.evtid == out_eval_ak.evtid) + assert ak.all(out_ak.time == out_eval_ak.time) + def test_time_group(): # time units are ns From bfe9782c1f6e5ddaee1cd1e92d877238a3c6f173 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:28:39 +0000 Subject: [PATCH 25/81] style: pre-commit fixes --- src/reboost/hpge/processors.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 6a27306..8c68388 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -6,7 +6,6 @@ from lgdo import Array, Table, VectorOfVectors - def sort_data(obj: ak.Array) -> ak.Array: """Sort the data by evtid then time. From 670f5dfca57fc40ff60085e7a689445d0fdb25ba Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 8 Nov 2024 11:54:23 +0100 Subject: [PATCH 26/81] [tests] test merging arrays --- src/reboost/hpge/processors.py | 1 - src/reboost/hpge/utils.py | 7 ++++- tests/test_hpge_utils.py | 52 ++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 tests/test_hpge_utils.py diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 6a27306..8c68388 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -6,7 +6,6 @@ from lgdo import Array, Table, VectorOfVectors - def sort_data(obj: ak.Array) -> ak.Array: """Sort the data by evtid then time. diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 32fc318..f9048da 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -41,7 +41,11 @@ def get_function_string(expr: str) -> tuple[str, dict]: def _merge_arrays( - ak_obj: ak.Array, buffer_rows: ak.Array, idx: int, max_idx: int, delete_input: bool = False + ak_obj: ak.Array, + buffer_rows: ak.Array | None, + idx: int, + max_idx: int, + delete_input: bool = False, ) -> tuple[ak.Array, ak.Array, str]: """Merge awkward arrays with a buffer and simultaneously remove the last rows. @@ -81,5 +85,6 @@ def _merge_arrays( else: mode = "append" obj = ak.concatenate((buffer_rows, ak_obj)) + buffer_rows = None return obj, buffer_rows, mode diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py new file mode 100644 index 0000000..1e14fcb --- /dev/null +++ b/tests/test_hpge_utils.py @@ -0,0 +1,52 @@ +from __future__ import annotations + +import awkward as ak +import numpy as np +import pytest +from lgdo import Table + +from reboost.hpge.utils import _merge_arrays + + +def test_merge(): + + ak_obj =ak.Array({"evtid":[1,1,1,1,2,2,3],"edep":[100,50,1000,20,100,200,10]}) + bufer_rows = ak.Array({"evtid":[1,1],"edep":[60,50]}) + + + # should only remove te last element + merged_idx_0, buffer_0,mode= _merge_arrays(ak_obj,None,0,100 ,True) + + assert ak.all(merged_idx_0.evtid ==[1,1,1,1,2,2]) + assert ak.all(merged_idx_0.edep ==[100,50,1000,20,100,200] ) + + assert ak.all(buffer_0.evtid ==[3]) + assert ak.all(buffer_0.edep ==[10] ) + + # delete input file + assert mode=="of" + + # if delete input is false it should be appended + _,_,mode= _merge_arrays(ak_obj,None,0,100 ,False) + assert mode=="append" + + # now if idx isnt 0 or the max_idx should add the buffer and remove the end + + merged_idx, buffer,mode= _merge_arrays(ak_obj,bufer_rows,2,100 ,True) + + assert ak.all(merged_idx.evtid ==[1,1,1,1,1,1,2,2]) + assert ak.all(merged_idx.edep ==[60,50,100,50,1000,20,100,200] ) + + assert ak.all(buffer.evtid ==[3]) + assert ak.all(buffer.edep ==[10] ) + + assert mode =="append" + + # now for the final index just adds the buffer + + merged_idx_end, buffer_end,mode= _merge_arrays(ak_obj,bufer_rows,100,100 ,True) + + assert ak.all(merged_idx_end.evtid ==[1,1,1,1,1,1,2,2,3]) + assert ak.all(merged_idx_end.edep ==[60,50,100,50,1000,20,100,200,10] ) + + assert buffer_end is None \ No newline at end of file From cdc8767d069778c932684f2cca855e15a3159f37 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:56:20 +0000 Subject: [PATCH 27/81] style: pre-commit fixes --- tests/test_hpge_utils.py | 45 ++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py index 1e14fcb..93ada87 100644 --- a/tests/test_hpge_utils.py +++ b/tests/test_hpge_utils.py @@ -1,52 +1,47 @@ from __future__ import annotations import awkward as ak -import numpy as np -import pytest -from lgdo import Table from reboost.hpge.utils import _merge_arrays def test_merge(): - - ak_obj =ak.Array({"evtid":[1,1,1,1,2,2,3],"edep":[100,50,1000,20,100,200,10]}) - bufer_rows = ak.Array({"evtid":[1,1],"edep":[60,50]}) - + ak_obj = ak.Array({"evtid": [1, 1, 1, 1, 2, 2, 3], "edep": [100, 50, 1000, 20, 100, 200, 10]}) + bufer_rows = ak.Array({"evtid": [1, 1], "edep": [60, 50]}) # should only remove te last element - merged_idx_0, buffer_0,mode= _merge_arrays(ak_obj,None,0,100 ,True) + merged_idx_0, buffer_0, mode = _merge_arrays(ak_obj, None, 0, 100, True) - assert ak.all(merged_idx_0.evtid ==[1,1,1,1,2,2]) - assert ak.all(merged_idx_0.edep ==[100,50,1000,20,100,200] ) + assert ak.all(merged_idx_0.evtid == [1, 1, 1, 1, 2, 2]) + assert ak.all(merged_idx_0.edep == [100, 50, 1000, 20, 100, 200]) - assert ak.all(buffer_0.evtid ==[3]) - assert ak.all(buffer_0.edep ==[10] ) + assert ak.all(buffer_0.evtid == [3]) + assert ak.all(buffer_0.edep == [10]) # delete input file - assert mode=="of" + assert mode == "of" # if delete input is false it should be appended - _,_,mode= _merge_arrays(ak_obj,None,0,100 ,False) - assert mode=="append" + _, _, mode = _merge_arrays(ak_obj, None, 0, 100, False) + assert mode == "append" # now if idx isnt 0 or the max_idx should add the buffer and remove the end - merged_idx, buffer,mode= _merge_arrays(ak_obj,bufer_rows,2,100 ,True) + merged_idx, buffer, mode = _merge_arrays(ak_obj, bufer_rows, 2, 100, True) - assert ak.all(merged_idx.evtid ==[1,1,1,1,1,1,2,2]) - assert ak.all(merged_idx.edep ==[60,50,100,50,1000,20,100,200] ) + assert ak.all(merged_idx.evtid == [1, 1, 1, 1, 1, 1, 2, 2]) + assert ak.all(merged_idx.edep == [60, 50, 100, 50, 1000, 20, 100, 200]) - assert ak.all(buffer.evtid ==[3]) - assert ak.all(buffer.edep ==[10] ) + assert ak.all(buffer.evtid == [3]) + assert ak.all(buffer.edep == [10]) - assert mode =="append" + assert mode == "append" # now for the final index just adds the buffer - merged_idx_end, buffer_end,mode= _merge_arrays(ak_obj,bufer_rows,100,100 ,True) + merged_idx_end, buffer_end, mode = _merge_arrays(ak_obj, bufer_rows, 100, 100, True) - assert ak.all(merged_idx_end.evtid ==[1,1,1,1,1,1,2,2,3]) - assert ak.all(merged_idx_end.edep ==[60,50,100,50,1000,20,100,200,10] ) + assert ak.all(merged_idx_end.evtid == [1, 1, 1, 1, 1, 1, 2, 2, 3]) + assert ak.all(merged_idx_end.edep == [60, 50, 100, 50, 1000, 20, 100, 200, 10]) - assert buffer_end is None \ No newline at end of file + assert buffer_end is None From 8e8de77b55c7b86a4a427ab4949fb3e4029590c2 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 8 Nov 2024 16:14:09 +0100 Subject: [PATCH 28/81] update to be able to read json or yaml --- src/reboost/hpge/cli.py | 17 ++++---- src/reboost/hpge/utils.py | 29 +++++++++++++ tests/test_hpge_utils.py | 86 +++++++++++++++++++++++++++------------ 3 files changed, 95 insertions(+), 37 deletions(-) diff --git a/src/reboost/hpge/cli.py b/src/reboost/hpge/cli.py index d22be02..001534e 100644 --- a/src/reboost/hpge/cli.py +++ b/src/reboost/hpge/cli.py @@ -2,10 +2,10 @@ import argparse import logging -from pathlib import Path import colorlog -import yaml + +from . import utils def hpge_cli() -> None: @@ -35,12 +35,12 @@ def hpge_cli() -> None: hit_parser.add_argument( "--proc_chain", - help="YAML file that contains the processing chain", + help="JSON or YAML file that contains the processing chain", required=True, ) hit_parser.add_argument( "--pars", - help="YAML file that contains the pars", + help="JSON or YAML file that contains the pars", required=True, ) hit_parser.add_argument( @@ -50,7 +50,7 @@ def hpge_cli() -> None: ) hit_parser.add_argument( "--macro", - help="Gean4 macro file used to generate raw tier", + help="Geant4 macro file used to generate raw tier", required=False, ) @@ -80,11 +80,8 @@ def hpge_cli() -> None: logger.info("...running raw->hit tier") from reboost.hpge.hit import build_hit - with Path.open(Path(args.pars)) as config_f: - pars = yaml.safe_load(config_f) - - with Path.open(Path(args.proc_chain)) as config_f: - proc_config = yaml.safe_load(config_f) + pars = utils.load_dict(args.pars, None) + proc_config = utils.load_dict(args.proc_config, None) # check the processing chain for req_field in ["channels", "outputs", "step_group", "operations"]: diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index f9048da..cbffc35 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -2,11 +2,14 @@ import copy import importlib +import json import logging import re from collections import namedtuple +from pathlib import Path import awkward as ak +import yaml log = logging.getLogger(__name__) @@ -88,3 +91,29 @@ def _merge_arrays( buffer_rows = None return obj, buffer_rows, mode + + +__file_extensions__ = {"json": [".json"], "yaml": [".yaml", ".yml"]} + + +def load_dict(fname: str, ftype: str | None = None) -> dict: + """Load a text file as a Python dict.""" + fname = Path(fname) + + # determine file type from extension + if ftype is None: + for _ftype, exts in __file_extensions__.items(): + if fname.suffix in exts: + ftype = _ftype + + msg = f"loading {ftype} dict from: {fname}" + log.debug(msg) + + with fname.open() as f: + if ftype == "json": + return json.load(f) + if ftype == "yaml": + return yaml.safe_load(f) + + msg = f"unsupported file format {ftype}" + raise NotImplementedError(msg) diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py index 1e14fcb..190884f 100644 --- a/tests/test_hpge_utils.py +++ b/tests/test_hpge_utils.py @@ -1,52 +1,84 @@ from __future__ import annotations +import json +from pathlib import Path + import awkward as ak -import numpy as np import pytest -from lgdo import Table +import yaml -from reboost.hpge.utils import _merge_arrays +from reboost.hpge.utils import _merge_arrays, load_dict def test_merge(): - - ak_obj =ak.Array({"evtid":[1,1,1,1,2,2,3],"edep":[100,50,1000,20,100,200,10]}) - bufer_rows = ak.Array({"evtid":[1,1],"edep":[60,50]}) - + ak_obj = ak.Array({"evtid": [1, 1, 1, 1, 2, 2, 3], "edep": [100, 50, 1000, 20, 100, 200, 10]}) + bufer_rows = ak.Array({"evtid": [1, 1], "edep": [60, 50]}) - # should only remove te last element - merged_idx_0, buffer_0,mode= _merge_arrays(ak_obj,None,0,100 ,True) + # should only remove the last element + merged_idx_0, buffer_0, mode = _merge_arrays(ak_obj, None, 0, 100, True) - assert ak.all(merged_idx_0.evtid ==[1,1,1,1,2,2]) - assert ak.all(merged_idx_0.edep ==[100,50,1000,20,100,200] ) + assert ak.all(merged_idx_0.evtid == [1, 1, 1, 1, 2, 2]) + assert ak.all(merged_idx_0.edep == [100, 50, 1000, 20, 100, 200]) - assert ak.all(buffer_0.evtid ==[3]) - assert ak.all(buffer_0.edep ==[10] ) + assert ak.all(buffer_0.evtid == [3]) + assert ak.all(buffer_0.edep == [10]) # delete input file - assert mode=="of" + assert mode == "of" # if delete input is false it should be appended - _,_,mode= _merge_arrays(ak_obj,None,0,100 ,False) - assert mode=="append" + _, _, mode = _merge_arrays(ak_obj, None, 0, 100, False) + assert mode == "append" - # now if idx isnt 0 or the max_idx should add the buffer and remove the end + # now if idx isn't 0 or the max_idx should add the buffer and remove the end - merged_idx, buffer,mode= _merge_arrays(ak_obj,bufer_rows,2,100 ,True) + merged_idx, buffer, mode = _merge_arrays(ak_obj, bufer_rows, 2, 100, True) - assert ak.all(merged_idx.evtid ==[1,1,1,1,1,1,2,2]) - assert ak.all(merged_idx.edep ==[60,50,100,50,1000,20,100,200] ) + assert ak.all(merged_idx.evtid == [1, 1, 1, 1, 1, 1, 2, 2]) + assert ak.all(merged_idx.edep == [60, 50, 100, 50, 1000, 20, 100, 200]) - assert ak.all(buffer.evtid ==[3]) - assert ak.all(buffer.edep ==[10] ) + assert ak.all(buffer.evtid == [3]) + assert ak.all(buffer.edep == [10]) - assert mode =="append" + assert mode == "append" # now for the final index just adds the buffer - merged_idx_end, buffer_end,mode= _merge_arrays(ak_obj,bufer_rows,100,100 ,True) + merged_idx_end, buffer_end, mode = _merge_arrays(ak_obj, bufer_rows, 100, 100, True) + + assert ak.all(merged_idx_end.evtid == [1, 1, 1, 1, 1, 1, 2, 2, 3]) + assert ak.all(merged_idx_end.edep == [60, 50, 100, 50, 1000, 20, 100, 200, 10]) + + assert buffer_end is None + + +@pytest.fixture +def file_fixture(tmp_path): + # Create a simple YAML file + data = {"det": 1} + yaml_file = tmp_path / "data.yaml" + with Path.open(yaml_file, "w") as yf: + yaml.dump(data, yf) + + json_file = tmp_path / "data.json" + with Path.open(json_file, "w") as jf: + json.dump(data, jf) + + # Create a simple TXT file + txt_file = tmp_path / "data.txt" + with Path.open(txt_file, "w") as tf: + tf.write("Some text.\n") + + # Return paths for the test functions + return {"yaml_file": yaml_file, "json_file": json_file, "txt_file": txt_file} + + +def test_read(file_fixture): + json_dict = load_dict(file_fixture["json_file"], None) + assert json_dict["det"] == 1 - assert ak.all(merged_idx_end.evtid ==[1,1,1,1,1,1,2,2,3]) - assert ak.all(merged_idx_end.edep ==[60,50,100,50,1000,20,100,200,10] ) + yaml_dict = load_dict(file_fixture["yaml_file"], None) + assert yaml_dict["det"] == 1 - assert buffer_end is None \ No newline at end of file + with pytest.raises(NotImplementedError): + load_dict(file_fixture["txt_file"], None) From 3dcc0f65535bb8854355894251224f7bae8c40a6 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Sun, 10 Nov 2024 21:36:26 +0100 Subject: [PATCH 29/81] processor for distance to surface --- src/reboost/hpge/processors.py | 63 ++++++++++++++++++++++++++ tests/test_hpge_distance_to_surface.py | 34 ++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 tests/test_hpge_distance_to_surface.py diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 8c68388..d6a25d6 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -1,9 +1,11 @@ from __future__ import annotations import awkward as ak +import legendhpges import lgdo import numpy as np from lgdo import Array, Table, VectorOfVectors +from numpy.typing import ArrayLike def sort_data(obj: ak.Array) -> ak.Array: @@ -136,3 +138,64 @@ def smear_energies(truth_energy: Array, reso: float = 2) -> Array: rng = np.random.default_rng() return Array(rng.normal(loc=flat_energy, scale=np.ones_like(flat_energy) * reso)) + + +def distance_to_surface( + positions_x: VectorOfVectors, + positions_y: VectorOfVectors, + positions_z: VectorOfVectors, + hpge: legendhpges.base.HPGe, + det_pos: ArrayLike, + surface_type: str | None = None, +) -> Array: + """Computes the distance from each step to the detector surface. + + Parameters + ---------- + positions_x + Global x positions for each step. + positions_y + Global y positions for each step. + positions_z + Global z positions for each step. + hpge + HPGe object. + det_pos + position of the detector origin, must be a 3 component array corresponding to `(x,y,z)`. + surface_type + string of which surface to use, can be `nplus`, `pplus` `passive` or None (in which case the distance to any surface is calculated). + + Returns + ------- + VectorOfVectors with the same shape as `positions_x/y/z` of the distance to the surface. + + Note + ---- + `positions_x/positions_y/positions_z` must all have the same shape. + + """ + + # compute local positions + local_positions_x = positions_x - det_pos[0] + local_positions_y = positions_y - det_pos[1] + local_positions_z = positions_z - det_pos[2] + + # sizes for unflattening the ak.Array + sizes = ak.num(local_positions_x, axis=1) + + local_position_x_flat = ak.flatten(local_positions_x).to_numpy() + local_position_y_flat = ak.flatten(local_positions_y).to_numpy() + local_position_z_flat = ak.flatten(local_positions_z).to_numpy() + + # restructure the positions + local_positions = np.vstack( + [local_position_x_flat, local_position_y_flat, local_position_z_flat] + ).T + + # get indices + surface_indices = np.where(hpge.surfaces == surface_type) if surface_type is not None else None + + # distance calc itself + distances = hpge.distance_to_surface(local_positions, surface_indices=surface_indices) + + return ak.unflatten(distances, sizes) diff --git a/tests/test_hpge_distance_to_surface.py b/tests/test_hpge_distance_to_surface.py new file mode 100644 index 0000000..7b1789c --- /dev/null +++ b/tests/test_hpge_distance_to_surface.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +import awkward as ak +import pytest +from legendhpges import make_hpge +from legendtestdata import LegendTestData + +from reboost.hpge.processors import distance_to_surface + + +@pytest.fixture(scope="session") +def test_data_configs(): + ldata = LegendTestData() + ldata.checkout("5f9b368") + return ldata.get_path("legend/metadata/hardware/detectors/germanium/diodes") + + +def test_distance_to_surface(test_data_configs): + gedet = make_hpge(test_data_configs + "/V99000A.json") + dist = [100, 0, 0] + + pos = ak.Array( + { + "xloc": [[0, 100, 200], [100], [700, 500, 200]], + "yloc": [[100, 0, 0], [200], [100, 300, 200]], + "zloc": [[700, 10, 20], [100], [300, 100, 0]], + } + ) + + # check just the shape + assert ak.all( + ak.num(distance_to_surface(pos.xloc, pos.yloc, pos.zloc, gedet, dist, None), axis=1) + == [3, 1, 3] + ) From 0d22b951591dcef2c9bcc45f792b68631331ca85 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Tue, 12 Nov 2024 16:07:47 +0100 Subject: [PATCH 30/81] [docs] improved documentation --- docs/source/index.rst | 43 ++++++++++- docs/source/manual/hpge.rst | 4 + docs/source/manual/index.rst | 8 ++ docs/source/manual/optical.rst | 4 + src/reboost/hpge/hit.py | 68 +++++++++++++---- src/reboost/hpge/processors.py | 30 ++++---- src/reboost/hpge/utils.py | 52 ++++++++++++- tests/configs/geom.gdml | 132 +++++++++++++++++++++++++++++++++ tests/test_hpge_hit.py | 71 +++++++++++++++++- tests/test_hpge_utils.py | 47 ++++++++++-- 10 files changed, 418 insertions(+), 41 deletions(-) create mode 100644 docs/source/manual/hpge.rst create mode 100644 docs/source/manual/index.rst create mode 100644 docs/source/manual/optical.rst create mode 100644 tests/configs/geom.gdml diff --git a/docs/source/index.rst b/docs/source/index.rst index 7885f27..5981c0f 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,10 +1,49 @@ Welcome to reboost's documentation! ========================================== -Table of Contents ------------------ +*reboost* is a python package for the post-processing of `remage `_ monte-carlo Simulations. + +Getting started +--------------- + +*reboost* can be installed with *pip*: + +.. code-block:: console + + $ git clone git@github.com:legend-exp/reboost.git + $ cd reboost + $ pip install . + +*reboost* is currently divided into two programs: + - *reboost-optical* for processing optical simulations, + - *reboost-hpge* for processing HPGe detector simulations. + +Both can be run on the command line with: + +.. code-block:: console + + $ reboost-optical -h + $ reboost-hpge -h + +Next steps +---------- + +.. toctree:: + :maxdepth: 2 + + User Manual .. toctree:: :maxdepth: 1 Package API reference + + +See also +-------- + - `remage `_: Modern *Geant4* application for HPGe and LAr experiments, + - `legend-pygeom-hpges `_: Package for handling HPGe detector geometry in python, + - `pyg4ometry `_: Package to create simulation geometry in python, + - `legend-pygeom-optics `_: Package to handle optical properties in python, + - `legend-pygeom-l200 `_: Implementation of the LEGEND-200 experiment (**private**), + - `pyvertexgen `_: Generation of vertices for simulations. diff --git a/docs/source/manual/hpge.rst b/docs/source/manual/hpge.rst new file mode 100644 index 0000000..6bfe936 --- /dev/null +++ b/docs/source/manual/hpge.rst @@ -0,0 +1,4 @@ +hpge simulations +================ + +Come back later for more complete documentation. diff --git a/docs/source/manual/index.rst b/docs/source/manual/index.rst new file mode 100644 index 0000000..99ecefb --- /dev/null +++ b/docs/source/manual/index.rst @@ -0,0 +1,8 @@ +User Manual +=========== + +.. toctree:: + :maxdepth: 2 + + optical + hpge diff --git a/docs/source/manual/optical.rst b/docs/source/manual/optical.rst new file mode 100644 index 0000000..2e3ad69 --- /dev/null +++ b/docs/source/manual/optical.rst @@ -0,0 +1,4 @@ +optical simulations +=================== + +Come back later for more complete documentation. diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 9629bb9..60357ca 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -2,7 +2,9 @@ import logging +import legendhpges import numpy as np +import pyg4ometry from lgdo import Array, ArrayOfEqualSizedArrays, LH5Iterator, Table, VectorOfVectors, lh5 from . import utils @@ -45,7 +47,11 @@ def step_group(data: Table, group_config: dict) -> Table: def eval_expression( - table: Table, info: dict, pars: dict + table: Table, + info: dict, + pars: dict | None = None, + hpge: legendhpges.HPGe | None = None, + phy_vol: pyg4ometry.geant4.PhysicalVolume | None = None, ) -> Array | ArrayOfEqualSizedArrays | VectorOfVectors: """Evaluate an expression returning an LGDO object. @@ -54,8 +60,7 @@ def eval_expression( table hit table, with columns possibly used in the operations. info - `dict` containing the information on the expression. Must contain `mode` and `expressions` keys - For example: + `dict` containing the information on the expression. Must contain `mode` and `expressions` keys. For example: .. code-block:: json @@ -64,21 +69,39 @@ def eval_expression( "expression":"ak.sum(hit.edep,axis=-1)" } - variables preceded by `hit` will be taken from the supplied table. Mode can be either `eval`, + Variables preceded by `hit` will be taken from the supplied table. Mode can be either `eval`, in which case a simple expression is based (only involving numpy, awkward or inbuilt python functions), or `function` in which case an arbitrary function is passed (for example defined in processors). + There are several objects passed to the evaluation as 'locals' which can be references by the expression. + - `pars`: dictionary of parameters (converted to namedtuple) (see `pars` argument), + - `hpge`: the legendhpges object for this detector (see `hpge` argument), + - `phy_vol`: the physical volume of the detector (see `phy` argument). + pars dict of parameters, can contain any fields passed to the expression prefixed by `pars.`. - + hpge + `legendhpges` object with the information on the HPGe detector. + phy_vol + `pyg4ometry.geant4.PhysicalVolume` object from GDML, Returns ------- a new column for the hit table either :class:`Array`, :class:`ArrayOfEqualSizedArrays` or :class:`VectorOfVectors`. + + Note + ---- + In future the passing of local variables (pars,hpge,reg) to the evaluation should be make more generic. """ + local_dict = {} - pars_tuple = utils.dict2tuple(pars) - local_dict = {"pars": pars_tuple} + if pars is not None: + pars_tuple = utils.dict2tuple(pars) + local_dict = {"pars": pars_tuple} + if phy_vol is not None: + local_dict |= {"phy_vol": phy_vol} + if hpge is not None: + local_dict |= {"hpge": hpge} if info["mode"] == "eval": # replace hit. @@ -114,7 +137,7 @@ def build_hit( pars: dict, buffer: int = 1000000, gdml: str | None = None, - macro: str | None = None, + metadata_path: str | None = None, ) -> None: """ Read incrementally the files compute something and then write output @@ -180,30 +203,43 @@ def build_hit( { "det000": { "reso": 1, - "fccd": 0.1 + "fccd": 0.1, + "phy_vol_name":"det_phy", + "meta_name": "icpc.json" } } + this should also contain the channel mappings needed by reboost. These are: + - `phy_vol_name`: is the name of the physical volume, + - `meta_name` : is the name of the JSON file with the metadata. + + If these keys are not present both will be set to the remage output table name. + buffer length of buffer gdml path to the input gdml file. macro path to the macro file. + metadata_path + path to the folder with the metadata (i.e. the `hardware.detectors.germanium.diodes` folder of `legend-metadata`) Note ---- - The operations can depend on the outputs of previous steps, so operations order is important. + - The operations can depend on the outputs of previous steps, so operations order is important. + - It would be better to have a cleaner way to supply metadata and detector maps. """ - if gdml is not None: - pass - - if macro is not None: - pass + # get the gdml file + reg = pyg4ometry.gdml.Reader(gdml).getRegistry() if gdml is not None else None for ch_idx, d in enumerate(proc_config["channels"]): msg = f"...running hit tier for {d}" log.info(msg) + + # get HPGe and phy_vol object to pass to build_hit + hpge = utils.get_hpge(metadata_path, pars=pars, detector=d) + phy_vol = utils.get_phy_vol(reg, pars=pars, detector=d) + delete_input = bool(ch_idx == 0) msg = f"...begin processing with {file_in} to {file_out}" @@ -242,7 +278,7 @@ def build_hit( msg = f"adding column {name}" log.debug(msg) - col = eval_expression(grouped, info, pars) + col = eval_expression(grouped, info, pars=pars, phy=phy_vol, hpge=hpge) grouped.add_field(name, col) # remove unwanted columns diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index d6a25d6..bdc17ea 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -176,21 +176,21 @@ def distance_to_surface( """ # compute local positions - local_positions_x = positions_x - det_pos[0] - local_positions_y = positions_y - det_pos[1] - local_positions_z = positions_z - det_pos[2] - - # sizes for unflattening the ak.Array - sizes = ak.num(local_positions_x, axis=1) - - local_position_x_flat = ak.flatten(local_positions_x).to_numpy() - local_position_y_flat = ak.flatten(local_positions_y).to_numpy() - local_position_z_flat = ak.flatten(local_positions_z).to_numpy() - + pos = [] + sizes = [] + for idx, pos_tmp in enumerate([positions_x, positions_y, positions_z]): + local_pos_tmp = ak.Array(pos_tmp) - det_pos[idx] + local_pos_flat_tmp = ak.flatten(local_pos_tmp).to_numpy() + pos.append(local_pos_flat_tmp) + sizes.append(ak.num(local_pos_tmp, axis=1)) + + if not ak.all(sizes[0] == sizes[1]) or not ak.all(sizes[0] == sizes[2]): + msg = "all position vector of vector must have the same shape" + raise ValueError(msg) + + size = sizes[0] # restructure the positions - local_positions = np.vstack( - [local_position_x_flat, local_position_y_flat, local_position_z_flat] - ).T + local_positions = np.vstack(pos).T # get indices surface_indices = np.where(hpge.surfaces == surface_type) if surface_type is not None else None @@ -198,4 +198,4 @@ def distance_to_surface( # distance calc itself distances = hpge.distance_to_surface(local_positions, surface_indices=surface_indices) - return ak.unflatten(distances, sizes) + return ak.unflatten(distances, size) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index cbffc35..d80df9a 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -9,13 +9,61 @@ from pathlib import Path import awkward as ak +import legendhpges +import pyg4ometry import yaml log = logging.getLogger(__name__) +reg = pyg4ometry.geant4.Registry() -def get_detector_origin(name): - raise NotImplementedError + +def get_hpge(meta_path: str, pars: dict, detector: str) -> legendhpges.HPGe: + """Extract the :class:`legendhpges.HPGe` object from metadata. + + Parameters + ---------- + meta_path + path to the folder with the `diodes` metadata. + pars + dictionary of parameters. + detector + remage output name for the detector + + Returns + ------- + hpge + the `legendhpges` object for the detector. + """ + + meta_name = pars.get("meta_name", f"{detector}.json") + meta_dict = Path(meta_path) / Path(meta_name) + return legendhpges.make_hpge(meta_dict, registry=reg) + + +def get_phy_vol( + reg: pyg4ometry.geant4.Registry | None, pars: dict, detector: str +) -> pyg4ometry.geant4.PhysicalVolume: + """Extract the :class:`pyg4ometry.geant4.PhysicalVolume` object from GDML + + Parameters + ---------- + reg + Geant4 registry from GDML + pars + dictionary of parameters. + detector + remage output name for the detector. + + Returns + ------- + phy_vol + the `pyg4ometry.geant4.PhysicalVolume` object for the detector + """ + if reg is not None: + phy_name = pars.get("phy_vol_name", f"{detector}") + return reg.physicalVolumeDict[phy_name] + return None def dict2tuple(dictionary: dict) -> namedtuple: diff --git a/tests/configs/geom.gdml b/tests/configs/geom.gdml new file mode 100644 index 0000000..62ebc8d --- /dev/null +++ b/tests/configs/geom.gdml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py index 9c910e1..5dff6c4 100644 --- a/tests/test_hpge_hit.py +++ b/tests/test_hpge_hit.py @@ -1,11 +1,26 @@ from __future__ import annotations +import pathlib + import awkward as ak import numpy as np +import pyg4ometry import pytest +from legendhpges import make_hpge +from legendtestdata import LegendTestData from lgdo import Table +from pyg4ometry import geant4 + +from reboost.hpge import hit, utils + +configs = pathlib.Path(__file__).parent.resolve() / pathlib.Path("configs") + -from reboost.hpge import hit +@pytest.fixture(scope="session") +def test_data_configs(): + ldata = LegendTestData() + ldata.checkout("5f9b368") + return ldata.get_path("legend/metadata/hardware/detectors/germanium/diodes") def test_eval(): @@ -36,3 +51,57 @@ def test_eval(): pars = {"reso": 2} assert np.size(hit.eval_expression(tab, func_eval, pars).view_as("np")) == 5 + + +def test_eval_with_hpge(test_data_configs): + reg = geant4.Registry() + gedet = make_hpge(test_data_configs + "/V99000A.json", registry=reg) + + pos = ak.Array( + { + "xloc": [[0, 100, 200], [100], [700, 500, 200]], + "yloc": [[100, 0, 0], [200], [100, 300, 200]], + "zloc": [[700, 10, 20], [100], [300, 100, 0]], + } + ) + tab = Table(pos) + + func_eval = { + "mode": "function", + "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, [0,0,0], None)", + } + + assert ak.all( + ak.num(hit.eval_expression(tab, func_eval, {}, hpge=gedet, phy_vol=None), axis=1) + == [3, 1, 3] + ) + + +def test_eval_with_hpge_and_phy_vol(test_data_configs): + reg = geant4.Registry() + gedet = make_hpge(test_data_configs + "/V99000A.json", registry=reg) + + pos = ak.Array( + { + "xloc": [[0, 100, 200], [100], [700, 500, 200]], + "yloc": [[100, 0, 0], [200], [100, 300, 200]], + "zloc": [[700, 10, 20], [100], [300, 100, 0]], + } + ) + tab = Table(pos) + + func_eval = { + "mode": "function", + "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), None)", + } + gdml_path = configs / pathlib.Path("geom.gdml") + + gdml = pyg4ometry.gdml.Reader(gdml_path).getRegistry() + + # read with the det_phy_vol_name + phy = utils.get_phy_vol(gdml, {"phy_vol_name": "det_phy_1"}, "det001") + + assert ak.all( + ak.num(hit.eval_expression(tab, func_eval, {}, hpge=gedet, phy_vol=phy), axis=1) + == [3, 1, 3] + ) diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py index 190884f..4200a50 100644 --- a/tests/test_hpge_utils.py +++ b/tests/test_hpge_utils.py @@ -1,13 +1,18 @@ from __future__ import annotations import json -from pathlib import Path +import pathlib import awkward as ak +import pyg4ometry import pytest import yaml +from legendhpges.base import HPGe +from legendtestdata import LegendTestData -from reboost.hpge.utils import _merge_arrays, load_dict +from reboost.hpge.utils import _merge_arrays, get_hpge, get_phy_vol, load_dict + +configs = pathlib.Path(__file__).parent.resolve() / pathlib.Path("configs") def test_merge(): @@ -57,16 +62,16 @@ def file_fixture(tmp_path): # Create a simple YAML file data = {"det": 1} yaml_file = tmp_path / "data.yaml" - with Path.open(yaml_file, "w") as yf: + with pathlib.Path.open(yaml_file, "w") as yf: yaml.dump(data, yf) json_file = tmp_path / "data.json" - with Path.open(json_file, "w") as jf: + with pathlib.Path.open(json_file, "w") as jf: json.dump(data, jf) # Create a simple TXT file txt_file = tmp_path / "data.txt" - with Path.open(txt_file, "w") as tf: + with pathlib.Path.open(txt_file, "w") as tf: tf.write("Some text.\n") # Return paths for the test functions @@ -82,3 +87,35 @@ def test_read(file_fixture): with pytest.raises(NotImplementedError): load_dict(file_fixture["txt_file"], None) + + +@pytest.fixture(scope="session") +def test_data_configs(): + ldata = LegendTestData() + ldata.checkout("5f9b368") + return ldata.get_path("legend/metadata/hardware/detectors/germanium/diodes") + + +def test_get_hpge(test_data_configs): + # specify name in pars + hpge = get_hpge(str(test_data_configs), {"meta_name": "C99000A.json"}, "det001") + assert isinstance(hpge, HPGe) + + # now read without metaname + hpge_ic = get_hpge(str(test_data_configs), {}, "V99000A") + assert isinstance(hpge_ic, HPGe) + + +def test_get_phy_vol(): + gdml_path = configs / pathlib.Path("geom.gdml") + + gdml = pyg4ometry.gdml.Reader(gdml_path).getRegistry() + + # read with the det_phy_vol_name + phy = get_phy_vol(gdml, {"phy_vol_name": "det_phy_1"}, "det001") + + assert isinstance(phy, pyg4ometry.geant4.PhysicalVolume) + + # read without + phy = get_phy_vol(gdml, {}, "det_phy_0") + assert isinstance(phy, pyg4ometry.geant4.PhysicalVolume) From 83be05d203bb169d721d88f51ca5d1c9f7743b44 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Tue, 12 Nov 2024 16:26:38 +0100 Subject: [PATCH 31/81] add hpges and pyg4ometry to the dependencies --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 3cde88d..1697de4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,7 @@ dependencies = [ "numba", "legend-pydataobj>=1.9.0", "legend-pygeom-optics>=0.6.5", + "legend-pygeom-hpges", "hist", "particle", "pandas", From a2e8d4ac4227e62d973805fd60ebff97e8857059 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Tue, 12 Nov 2024 16:26:46 +0100 Subject: [PATCH 32/81] add pyg4ometry --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 1697de4..4b979ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,6 +35,7 @@ dependencies = [ "scipy", "numba", "legend-pydataobj>=1.9.0", + "pyg4ometry", "legend-pygeom-optics>=0.6.5", "legend-pygeom-hpges", "hist", From 58e6f36b94e5052d20781ff0b44990d9e09d84dc Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Tue, 12 Nov 2024 16:30:01 +0100 Subject: [PATCH 33/81] [docs] add legendtestdata to deps --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 4b979ac..196246f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,7 @@ dependencies = [ "numba", "legend-pydataobj>=1.9.0", "pyg4ometry", + "legendtestdata", "legend-pygeom-optics>=0.6.5", "legend-pygeom-hpges", "hist", From 8ec0df60d45d836e30cb011003a78c86b3407817 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Wed, 13 Nov 2024 00:03:29 +0100 Subject: [PATCH 34/81] [tests] test on the whole of build_hit (IO) --- src/reboost/hpge/cli.py | 58 +++++++++++++++-- src/reboost/hpge/hit.py | 133 ++++++++++++++++++++++++-------------- src/reboost/hpge/utils.py | 53 +++++++++++++++ tests/test_hpge_hit.py | 119 +++++++++++++++++++++++++++++++++- tests/test_hpge_utils.py | 85 +++++++++++++++++++++++- 5 files changed, 390 insertions(+), 58 deletions(-) diff --git a/src/reboost/hpge/cli.py b/src/reboost/hpge/cli.py index 001534e..03ba0c0 100644 --- a/src/reboost/hpge/cli.py +++ b/src/reboost/hpge/cli.py @@ -33,6 +33,24 @@ def hpge_cli() -> None: subparsers = parser.add_subparsers(dest="command", required=True) hit_parser = subparsers.add_parser("hit", help="build hit file from remage raw file") + hit_parser.add_argument( + "--num", + "-n", + help="Number of events to process, if not set process all", + default=None, + type=int, + required=False, + ) + + hit_parser.add_argument( + "--start", + "-s", + help="First event to process (default 0)", + default=0, + type=int, + required=False, + ) + hit_parser.add_argument( "--proc_chain", help="JSON or YAML file that contains the processing chain", @@ -46,20 +64,30 @@ def hpge_cli() -> None: hit_parser.add_argument( "--gdml", help="GDML file used for Geant4", + default=None, required=False, ) + hit_parser.add_argument( - "--macro", - help="Geant4 macro file used to generate raw tier", + "--meta_path", + help="Path to metadata (diodes folder)", + default=None, required=False, ) - hit_parser.add_argument("--infield", help="input LH5 field", required=False, default="hit") hit_parser.add_argument( "--outfield", help="output LH5 field name", required=False, default="hit" ) - - hit_parser.add_argument("input", help="input hit LH5 file", metavar="INPUT_HIT") + parser.add_argument( + "--merge_input", + "-m", + action="store_true", + default=True, + help="""Merge input lh5 files into a single output""", + ) + hit_parser.add_argument( + "input", help="input hit LH5 files (can include wildcars) ", nargs="+", metavar="INPUT_HIT" + ) hit_parser.add_argument("output", help="output evt LH5 file", metavar="OUTPUT_EVT") args = parser.parse_args() @@ -70,6 +98,7 @@ def hpge_cli() -> None: ) logger = logging.getLogger("reboost.hpge") logger.addHandler(handler) + if args.verbose: logger.setLevel(logging.DEBUG) else: @@ -89,6 +118,22 @@ def hpge_cli() -> None: msg = f"error proc chain config must contain the field {req_field}" raise ValueError(msg) + msg = f""" + Running build_hit with: + - output file :{args.output} + - input_file(s) :{args.input} + - output field :{args.outfield} + - input field :{args.infield} + - proc_config :{args.proc_config} + - pars :{args.pars} + - buffer :{args.bufsize} + - gdml file :{args.gdml} + - metadata_path :{args.meta_path} + - merge input :{args.merge_input} + """ + + logger.info(msg) + build_hit( args.output, args.input, @@ -98,5 +143,6 @@ def hpge_cli() -> None: pars=pars, buffer=args.bufsize, gdml=args.gdml, - macro=args.macro, + metadata_path=args.meta_path, + merge_input=args.merge_input, ) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 60357ca..f501a24 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -5,7 +5,8 @@ import legendhpges import numpy as np import pyg4ometry -from lgdo import Array, ArrayOfEqualSizedArrays, LH5Iterator, Table, VectorOfVectors, lh5 +from lgdo import Array, ArrayOfEqualSizedArrays, Table, VectorOfVectors, lh5 +from lgdo.lh5 import LH5Iterator from . import utils @@ -130,7 +131,7 @@ def eval_expression( def build_hit( file_out: str, - file_in: str, + list_file_in: list, out_field: str, in_field: str, proc_config: dict, @@ -138,6 +139,7 @@ def build_hit( buffer: int = 1000000, gdml: str | None = None, metadata_path: str | None = None, + merge_input_files: bool = True, ) -> None: """ Read incrementally the files compute something and then write output @@ -146,8 +148,8 @@ def build_hit( ---------- file_out output file path - file_in - input_file_path + list_file_in + list of input files out_field lh5 group name for output in_field @@ -223,73 +225,104 @@ def build_hit( path to the macro file. metadata_path path to the folder with the metadata (i.e. the `hardware.detectors.germanium.diodes` folder of `legend-metadata`) + merge_input_files + boolean flag to merge all input files into a single output. Note ---- - The operations can depend on the outputs of previous steps, so operations order is important. - It would be better to have a cleaner way to supply metadata and detector maps. """ + # expand wildcards + expanded_list_file_in = utils.get_file_list(list_file_in) + # get the gdml file reg = pyg4ometry.gdml.Reader(gdml).getRegistry() if gdml is not None else None - for ch_idx, d in enumerate(proc_config["channels"]): - msg = f"...running hit tier for {d}" - log.info(msg) + # loop over input files + for file_idx, file_in in enumerate(expanded_list_file_in): + for ch_idx, d in enumerate(proc_config["channels"]): + msg = f"...running hit tier for {d}" + log.info(msg) - # get HPGe and phy_vol object to pass to build_hit - hpge = utils.get_hpge(metadata_path, pars=pars, detector=d) - phy_vol = utils.get_phy_vol(reg, pars=pars, detector=d) + # get HPGe and phy_vol object to pass to build_hit - delete_input = bool(ch_idx == 0) + hpge = ( + utils.get_hpge(metadata_path, pars=pars, detector=d) + if (metadata_path is not None) + else None + ) + phy_vol = utils.get_phy_vol(reg, pars=pars, detector=d) - msg = f"...begin processing with {file_in} to {file_out}" - log.info(msg) + is_first_chan = bool(ch_idx == 0) + is_first_file = bool(file_idx == 0) - entries = LH5Iterator(file_in, f"{in_field}/{d}", buffer_len=buffer)._get_file_cumentries(0) + # flag to overwrite input file + delete_input = (is_first_chan & merge_input_files is False) | ( + is_first_chan & is_first_file + ) - # number of blocks is ceil of entries/buffer, - # shift by 1 since idx starts at 0 - # this is maybe too high if buffer exactly divides idx - max_idx = int(np.ceil(entries / buffer)) - 1 - buffer_rows = None + msg = f"...begin processing with {file_in} to {file_out}" + log.info(msg) - for idx, (lh5_obj, _, _) in enumerate( - LH5Iterator(file_in, f"{in_field}/{d}", buffer_len=buffer) - ): - msg = f"... processed {idx} files out of {max_idx}" - log.debug(msg) + entries = LH5Iterator( + file_in, f"{in_field}/{d}", buffer_len=buffer + )._get_file_cumentries(0) - # convert to awkward - ak_obj = lh5_obj.view_as("ak") + # number of blocks is ceil of entries/buffer, + # shift by 1 since idx starts at 0 - # handle the buffers - obj, buffer_rows, mode = utils._merge_arrays( - ak_obj, buffer_rows, idx=idx, max_idx=max_idx, delete_input=delete_input - ) + max_idx = int(np.ceil(entries / buffer)) - 1 + remainder = entries % buffer + buffer_rows = None - # convert back to a table, should work - data = Table(obj) + for idx, (lh5_obj, _, _) in enumerate( + LH5Iterator(file_in, f"{in_field}/{d}", buffer_len=buffer) + ): + msg = f"... processed {idx} chunks out of {max_idx}" + log.debug(msg) - # group steps into hits - grouped = step_group(data, proc_config["step_group"]) + # convert to awkward + ak_obj = lh5_obj.view_as("ak") - # processors - for name, info in proc_config["operations"].items(): - msg = f"adding column {name}" - log.debug(msg) + # fix for a bug in lh5 iterator + if idx == max_idx & remainder != 0: + ak_obj = ak_obj[:remainder] - col = eval_expression(grouped, info, pars=pars, phy=phy_vol, hpge=hpge) - grouped.add_field(name, col) + # handle the buffers + obj, buffer_rows, mode = utils._merge_arrays( + ak_obj, buffer_rows, idx=idx, max_idx=max_idx, delete_input=delete_input + ) - # remove unwanted columns - log.debug("removing unwanted columns") + # convert back to a table, should work + data = Table(obj) - existing_cols = list(grouped.keys()) - for col in existing_cols: - if col not in proc_config["outputs"]: - grouped.remove_column(col, delete=True) + # group steps into hits + grouped = step_group(data, proc_config["step_group"]) + + # processors + for name, info in proc_config["operations"].items(): + msg = f"adding column {name}" + log.debug(msg) + + col = eval_expression(grouped, info, pars=pars, phy_vol=phy_vol, hpge=hpge) + grouped.add_field(name, col) + + # remove unwanted columns + log.debug("removing unwanted columns") + + existing_cols = list(grouped.keys()) + for col in existing_cols: + if col not in proc_config["outputs"]: + grouped.remove_column(col, delete=True) + + # write lh5 file + msg = f"...finished processing and save file with wo_mode {mode}" + log.debug(msg) - # write lh5 file - msg = f"...finished processing and save file with wo_mode {mode}" - log.debug(msg) - lh5.write(grouped, f"{out_field}/{d}", file_out, wo_mode=mode) + file_out_tmp = ( + f"{file_out.split('.')[0]}_{file_idx}.lh5" + if (merge_input_files is False) + else file_out + ) + lh5.write(grouped, f"{out_field}/{d}", file_out_tmp, wo_mode=mode) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index d80df9a..b7c2044 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -10,14 +10,67 @@ import awkward as ak import legendhpges +import numpy as np import pyg4ometry import yaml +from lgdo import lh5 log = logging.getLogger(__name__) reg = pyg4ometry.geant4.Registry() +def get_num_simulated(file_list: list, table: str = "hit") -> int: + """Loop over a list of files and extract the number of simulated events. + + Based on the size of the `vertices` tables. + + Parameters + ---------- + file_list + list of input files (each must contain the vertices table) + table + name of the lh5 input table. + """ + n = 0 + for file in file_list: + it = lh5.LH5Iterator(file, f"{table}/vertices", buffer_len=int(5e6)) + n += it._get_file_cumlen(0) + + msg = f"files contain {n} events" + log.info(msg) + return n + + +def get_file_list(path: str | list[str]) -> list[str]: + """Get list of files to read. + + Parameters + ---------- + path + either a string or a list of strings containing files paths to process. May contain wildcards which are expanded. + + Returns + ------- + sorted list of files, after expanding wildcards, removing duplicates and sorting. + + """ + + if isinstance(path, str): + path = [path] + + path_out_list = [] + + for ptmp in path: + ptmp_path = Path(ptmp) + dir_tmp = ptmp_path.parent + pattern_tmp = ptmp_path.name + + path_out_list.extend(dir_tmp.glob(pattern_tmp)) + path_out_list_str = [str(ptmp) for ptmp in path_out_list] + return list(np.sort(np.unique(path_out_list_str))) + + def get_hpge(meta_path: str, pars: dict, detector: str) -> legendhpges.HPGe: """Extract the :class:`legendhpges.HPGe` object from metadata. diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py index 5dff6c4..2589793 100644 --- a/tests/test_hpge_hit.py +++ b/tests/test_hpge_hit.py @@ -8,7 +8,7 @@ import pytest from legendhpges import make_hpge from legendtestdata import LegendTestData -from lgdo import Table +from lgdo import Table, lh5 from pyg4ometry import geant4 from reboost.hpge import hit, utils @@ -105,3 +105,120 @@ def test_eval_with_hpge_and_phy_vol(test_data_configs): ak.num(hit.eval_expression(tab, func_eval, {}, hpge=gedet, phy_vol=phy), axis=1) == [3, 1, 3] ) + + +# test the full processing chain +@pytest.fixture +def test_reboost_input_file(tmp_path): + # make it large enough to be multiple groups + rng = np.random.default_rng() + evtid_1 = np.sort(rng.integers(int(1e5), size=(int(1e6)))) + time_1 = rng.uniform(low=0, high=1, size=(int(1e6))) + edep_1 = rng.uniform(low=0, high=1000, size=(int(1e6))) + + # make it not divide by the buffer len + evtid_2 = np.sort(rng.integers(int(1e5), size=(30040))) + time_2 = rng.uniform(low=0, high=1, size=(30040)) + edep_2 = rng.uniform(low=0, high=1000, size=(30040)) + + vertices_1 = ak.Array({"evtid": np.arange(int(1e5))}) + vertices_2 = ak.Array({"evtid": np.arange(30040)}) + + arr_1 = ak.Array({"evtid": evtid_1, "time": time_1, "edep": edep_1}) + arr_2 = ak.Array({"evtid": evtid_2, "time": time_2, "edep": edep_2}) + + lh5.write(Table(vertices_1), "hit/vertices", tmp_path / "file1.lh5", wo_mode="of") + lh5.write(Table(vertices_2), "hit/vertices", tmp_path / "file2.lh5", wo_mode="of") + + lh5.write(Table(arr_1), "hit/det001", tmp_path / "file1.lh5", wo_mode="append") + lh5.write(Table(arr_2), "hit/det001", tmp_path / "file2.lh5", wo_mode="append") + + return tmp_path + + +def test_build_hit(test_reboost_input_file): + # first just one file no pars + + proc_config = { + "channels": [ + "det001", + ], + "outputs": ["t0", "evtid"], + "step_group": { + "description": "group steps by time and evtid.", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)", + }, + "truth_energy_sum": { + "description": "truth summed energy in the hit.", + "mode": "eval", + "expression": "ak.sum(hit.edep,axis=-1)", + }, + }, + } + + hit.build_hit( + str(test_reboost_input_file / "out.lh5"), + [str(test_reboost_input_file / "file1.lh5")], + "hit", + "hit", + proc_config, + {}, + buffer=100000, + ) + hit.build_hit( + str(test_reboost_input_file / "out_rem.lh5"), + [str(test_reboost_input_file / "file2.lh5")], + "hit", + "hit", + proc_config, + {}, + buffer=10000, + ) + + # now with wildcard + hit.build_hit( + str(test_reboost_input_file / "out_merge.lh5"), + [str(test_reboost_input_file / "file*.lh5")], + "hit", + "hit", + proc_config, + {}, + buffer=100000, + merge_input_files=True, + ) + hit.build_hit( + str(test_reboost_input_file / "out.lh5"), + [str(test_reboost_input_file / "file*.lh5")], + "hit", + "hit", + proc_config, + {}, + buffer=100000, + merge_input_files=False, + ) + + # read back in the data and check this works (no errors) + + tab = lh5.read("hit/det001",str(test_reboost_input_file / "out.lh5")).view_as("ak") + tab_merge = lh5.read("hit/det001",str(test_reboost_input_file / "out_merge.lh5")).view_as("ak") + tab_0 = lh5.read("hit/det001",str(test_reboost_input_file / "out_0.lh5")).view_as("ak") + tab_1 = lh5.read("hit/det001",str(test_reboost_input_file / "out_1.lh5")).view_as("ak") + + # check size of the output + assert len(ak.flatten(tab.evtid,axis=-1))==int(1e6) + assert len(ak.flatten(tab_merge.evtid,axis=-1))==int(1e6+30040) + assert len(ak.flatten(tab_0.evtid,axis=-1))==int(1e6) + assert len(ak.flatten(tab_1.evtid,axis=-1))==int(30040) + + # check on evtid + + assert ak.all(ak.all(tab.evtid == ak.firsts(tab.evtid,axis=-1), axis=1)) + assert ak.all(ak.all(tab_merge.evtid == ak.firsts(tab_merge.evtid,axis=-1), axis=1)) + assert ak.all(ak.all(tab_0.evtid == ak.firsts(tab_0.evtid,axis=-1), axis=1)) + assert ak.all(ak.all(tab_1.evtid == ak.firsts(tab_1.evtid,axis=-1), axis=1)) \ No newline at end of file diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py index 4200a50..7051456 100644 --- a/tests/test_hpge_utils.py +++ b/tests/test_hpge_utils.py @@ -4,13 +4,22 @@ import pathlib import awkward as ak +import numpy as np import pyg4ometry import pytest import yaml from legendhpges.base import HPGe from legendtestdata import LegendTestData +from lgdo import Array, Table, lh5 -from reboost.hpge.utils import _merge_arrays, get_hpge, get_phy_vol, load_dict +from reboost.hpge.utils import ( + _merge_arrays, + get_file_list, + get_hpge, + get_num_simulated, + get_phy_vol, + load_dict, +) configs = pathlib.Path(__file__).parent.resolve() / pathlib.Path("configs") @@ -89,6 +98,38 @@ def test_read(file_fixture): load_dict(file_fixture["txt_file"], None) +@pytest.fixture +def file_list(tmp_path): + # make a list of files + for i in range(5): + data = {"det": i} + + # make a json file + json_file = tmp_path / f"data_{i}.json" + with pathlib.Path.open(json_file, "w") as jf: + json.dump(data, jf) + + # and a text file + txt_file = tmp_path / f"data_{i}.txt" + with pathlib.Path.open(txt_file, "w") as tf: + tf.write("Some text.\n") + return pathlib.Path(tmp_path) + + +def test_get_file_list(file_list): + first_file_list = get_file_list(str(pathlib.Path(file_list) / "data_0.json")) + assert len(first_file_list) == 1 + + json_file_list = get_file_list(str(pathlib.Path(file_list) / "data*.json")) + assert len(json_file_list) == 5 + json_file_list_repeat = get_file_list( + [str(pathlib.Path(file_list) / "data*.json"), str(pathlib.Path(file_list) / "data*.json")] + ) + assert len(json_file_list_repeat) == 5 + all_file_list = get_file_list([str(pathlib.Path(file_list) / "data*")]) + assert len(all_file_list) == 10 + + @pytest.fixture(scope="session") def test_data_configs(): ldata = LegendTestData() @@ -119,3 +160,45 @@ def test_get_phy_vol(): # read without phy = get_phy_vol(gdml, {}, "det_phy_0") assert isinstance(phy, pyg4ometry.geant4.PhysicalVolume) + + +@pytest.fixture +def test_lh5_files(tmp_path): + n1 = 14002 + tab1 = Table(size=n1) + tab1.add_field("a", Array(np.ones(n1))) + lh5.write(tab1, "hit/vertices", tmp_path / "file1.lh5", wo_mode="of") + + n2 = 25156 + tab2 = Table(size=n2) + tab2.add_field("a", Array(np.ones(n2))) + + lh5.write(tab2, "hit/vertices", tmp_path / "file2.lh5", wo_mode="of") + + n3 = int(1e7) + tab3 = Table(size=n3) + tab3.add_field("a", Array(np.ones(n3))) + + lh5.write(tab3, "hit/vertices", tmp_path / "file3.lh5", wo_mode="of") + + return tmp_path + + +def test_get_n_sim(test_lh5_files): + # single file + n1 = get_num_simulated([str(test_lh5_files / "file1.lh5")]) + assert n1 == 14002 + + # two files + n12 = get_num_simulated([str(test_lh5_files / "file1.lh5"), str(test_lh5_files / "file2.lh5")]) + assert n12 == 14002 + 25156 + + # length > buffer + n123 = get_num_simulated( + [ + str(test_lh5_files / "file1.lh5"), + str(test_lh5_files / "file2.lh5"), + str(test_lh5_files / "file3.lh5"), + ] + ) + assert n123 == 14002 + 25156 + int(1e7) From ee048fada05f3e2b7f2660052d7dc8b3d25dddce Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Wed, 13 Nov 2024 00:03:50 +0100 Subject: [PATCH 35/81] precommit --- tests/test_hpge_hit.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py index 2589793..21d5e5b 100644 --- a/tests/test_hpge_hit.py +++ b/tests/test_hpge_hit.py @@ -205,20 +205,20 @@ def test_build_hit(test_reboost_input_file): # read back in the data and check this works (no errors) - tab = lh5.read("hit/det001",str(test_reboost_input_file / "out.lh5")).view_as("ak") - tab_merge = lh5.read("hit/det001",str(test_reboost_input_file / "out_merge.lh5")).view_as("ak") - tab_0 = lh5.read("hit/det001",str(test_reboost_input_file / "out_0.lh5")).view_as("ak") - tab_1 = lh5.read("hit/det001",str(test_reboost_input_file / "out_1.lh5")).view_as("ak") + tab = lh5.read("hit/det001", str(test_reboost_input_file / "out.lh5")).view_as("ak") + tab_merge = lh5.read("hit/det001", str(test_reboost_input_file / "out_merge.lh5")).view_as("ak") + tab_0 = lh5.read("hit/det001", str(test_reboost_input_file / "out_0.lh5")).view_as("ak") + tab_1 = lh5.read("hit/det001", str(test_reboost_input_file / "out_1.lh5")).view_as("ak") # check size of the output - assert len(ak.flatten(tab.evtid,axis=-1))==int(1e6) - assert len(ak.flatten(tab_merge.evtid,axis=-1))==int(1e6+30040) - assert len(ak.flatten(tab_0.evtid,axis=-1))==int(1e6) - assert len(ak.flatten(tab_1.evtid,axis=-1))==int(30040) + assert len(ak.flatten(tab.evtid, axis=-1)) == int(1e6) + assert len(ak.flatten(tab_merge.evtid, axis=-1)) == int(1e6 + 30040) + assert len(ak.flatten(tab_0.evtid, axis=-1)) == int(1e6) + assert len(ak.flatten(tab_1.evtid, axis=-1)) == 30040 # check on evtid - assert ak.all(ak.all(tab.evtid == ak.firsts(tab.evtid,axis=-1), axis=1)) - assert ak.all(ak.all(tab_merge.evtid == ak.firsts(tab_merge.evtid,axis=-1), axis=1)) - assert ak.all(ak.all(tab_0.evtid == ak.firsts(tab_0.evtid,axis=-1), axis=1)) - assert ak.all(ak.all(tab_1.evtid == ak.firsts(tab_1.evtid,axis=-1), axis=1)) \ No newline at end of file + assert ak.all(ak.all(tab.evtid == ak.firsts(tab.evtid, axis=-1), axis=1)) + assert ak.all(ak.all(tab_merge.evtid == ak.firsts(tab_merge.evtid, axis=-1), axis=1)) + assert ak.all(ak.all(tab_0.evtid == ak.firsts(tab_0.evtid, axis=-1), axis=1)) + assert ak.all(ak.all(tab_1.evtid == ak.firsts(tab_1.evtid, axis=-1), axis=1)) From 410bb227e38c9eb9cc64703bc8919c1896324a74 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Wed, 13 Nov 2024 00:06:55 +0100 Subject: [PATCH 36/81] remove dependency --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 196246f..4b979ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,6 @@ dependencies = [ "numba", "legend-pydataobj>=1.9.0", "pyg4ometry", - "legendtestdata", "legend-pygeom-optics>=0.6.5", "legend-pygeom-hpges", "hist", From a4140bfc217febe5a30caca2c6d29760b9b8d3ab Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Wed, 13 Nov 2024 00:16:27 +0100 Subject: [PATCH 37/81] [tests] fix the test data --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 4b979ac..03d2463 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,7 @@ dependencies = [ "numba", "legend-pydataobj>=1.9.0", "pyg4ometry", + "pylegendtestdata", "legend-pygeom-optics>=0.6.5", "legend-pygeom-hpges", "hist", From b615949058b8707fa3fc69504f68b55cb17348ce Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Thu, 14 Nov 2024 18:54:20 +0100 Subject: [PATCH 38/81] add the option to just read n evtid starting at a particular index. --- src/reboost/hpge/hit.py | 40 +++++++++-- src/reboost/hpge/utils.py | 145 ++++++++++++++++++++++++++++++++++++-- tests/test_hpge_hit.py | 136 ++++++++++++++++++++++++++++++----- tests/test_hpge_utils.py | 52 +++++++++++++- 4 files changed, 344 insertions(+), 29 deletions(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index f501a24..f772394 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -2,6 +2,7 @@ import logging +import awkward as ak import legendhpges import numpy as np import pyg4ometry @@ -136,6 +137,8 @@ def build_hit( in_field: str, proc_config: dict, pars: dict, + n_evtid: int | None = None, + start_evtid: int = 0, buffer: int = 1000000, gdml: str | None = None, metadata_path: str | None = None, @@ -217,6 +220,10 @@ def build_hit( If these keys are not present both will be set to the remage output table name. + start_evtid + first `evtid` to read, defaults to 0. + n_evtid + number of `evtid` to read, if `None` all steps are read (the default). buffer length of buffer gdml @@ -233,20 +240,27 @@ def build_hit( - The operations can depend on the outputs of previous steps, so operations order is important. - It would be better to have a cleaner way to supply metadata and detector maps. """ - # expand wildcards - expanded_list_file_in = utils.get_file_list(list_file_in) # get the gdml file reg = pyg4ometry.gdml.Reader(gdml).getRegistry() if gdml is not None else None + # get info on the files to read in a nice named tuple + file_info = utils.get_selected_files( + table=in_field, + file_list=list_file_in, + n_evtid=n_evtid, + start_evtid=start_evtid, + ) + # loop over input files - for file_idx, file_in in enumerate(expanded_list_file_in): + for first_evtid, file_idx, file_in in zip( + file_info.file_start_global_evtids, file_info.file_indices, file_info.file_list + ): for ch_idx, d in enumerate(proc_config["channels"]): msg = f"...running hit tier for {d}" log.info(msg) # get HPGe and phy_vol object to pass to build_hit - hpge = ( utils.get_hpge(metadata_path, pars=pars, detector=d) if (metadata_path is not None) @@ -294,6 +308,24 @@ def build_hit( ak_obj, buffer_rows, idx=idx, max_idx=max_idx, delete_input=delete_input ) + # add global evtid + obj = ak.with_field(obj, first_evtid + obj.evtid, "global_evtid") + + # check if the chunk can be skipped + + if not utils.get_include_chunk( + obj.global_evtid, + start_glob_evtid=file_info.first_global_evtid, + end_glob_evtid=file_info.last_global_evtid, + ): + continue + + # select just the correct global evtid objects + obj = obj[ + (obj.global_evtid >= file_info.first_global_evtid) + & (obj.global_evtid <= file_info.last_global_evtid) + ] + # convert back to a table, should work data = Table(obj) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index b7c2044..ce5a75e 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -14,12 +14,80 @@ import pyg4ometry import yaml from lgdo import lh5 +from numpy.typing import ArrayLike, NDArray log = logging.getLogger(__name__) reg = pyg4ometry.geant4.Registry() +FileInfo = namedtuple( + "FileInfo", + [ + "file_list", + "file_indices", + "file_start_global_evtids", + "first_global_evtid", + "last_global_evtid", + ], +) + + +def get_selected_files( + file_list: list[str], table: str, n_evtid: int | None, start_evtid: int +) -> tuple[list, list, list]: + """Get the files to read based on removing those with global evtid out of the selected range. + + - expands wildcards, + - extracts number of evtid per file, + - removes files outside of the range `low_evtid` to `high_evtid`. + + Parameters + ---------- + file_list + list of files to process (can include wildcards) + table + lh5 input field + n_evtid + number of simulation events to process. + high_global_evtid + start_evtid: first (global) simulation event to process. + + Returns + ------- + `FileInfo` named tuple with fields: + - `file_list`:list of files. + - `file_indices`: indices of selected files. + - `file_start_global_evtids`: first global `evtid` in each file. + - `first_global_evtid`: first global evtid to process + - `last_global_evtid`: last global evtid to process. + """ + # expand wildcards + expanded_list_file_in = get_file_list(path=file_list) + + n_sim = get_num_simulated(expanded_list_file_in, table=table) + + # first global index of each file + cum_nsim = np.concatenate([[0], np.cumsum(n_sim)]) + + low_global_evtid, high_global_evtid = get_global_evtid_range( + start_evtid=start_evtid, n_evtid=n_evtid, n_tot_sim=cum_nsim[-1] + ) + file_indices = np.array( + get_files_to_read( + cum_nsim, start_glob_evtid=low_global_evtid, end_glob_evtid=high_global_evtid + ) + ) + + # select just the necessary files + file_list_sel = np.array(expanded_list_file_in)[file_indices] + start_evtid_sel = cum_nsim[file_indices] + + return FileInfo( + file_list_sel, file_indices, start_evtid_sel, low_global_evtid, high_global_evtid + ) + + def get_num_simulated(file_list: list, table: str = "hit") -> int: """Loop over a list of files and extract the number of simulated events. @@ -32,17 +100,17 @@ def get_num_simulated(file_list: list, table: str = "hit") -> int: table name of the lh5 input table. """ - n = 0 + n = [] for file in file_list: it = lh5.LH5Iterator(file, f"{table}/vertices", buffer_len=int(5e6)) - n += it._get_file_cumlen(0) + n.append(it._get_file_cumlen(0)) msg = f"files contain {n} events" log.info(msg) return n -def get_file_list(path: str | list[str]) -> list[str]: +def get_file_list(path: str | list[str]) -> NDArray: """Get list of files to read. Parameters @@ -52,7 +120,7 @@ def get_file_list(path: str | list[str]) -> list[str]: Returns ------- - sorted list of files, after expanding wildcards, removing duplicates and sorting. + sorted array of files, after expanding wildcards, removing duplicates and sorting. """ @@ -68,7 +136,74 @@ def get_file_list(path: str | list[str]) -> list[str]: path_out_list.extend(dir_tmp.glob(pattern_tmp)) path_out_list_str = [str(ptmp) for ptmp in path_out_list] - return list(np.sort(np.unique(path_out_list_str))) + return np.array(np.sort(np.unique(path_out_list_str))) + + +def get_global_evtid_range( + start_evtid: int, n_evtid: int | None, n_tot_sim: int +) -> tuple[int, int]: + """Get the global evtid range""" + + # some checks + if (n_evtid is not None) and (start_evtid + n_evtid > n_tot_sim): + msg = "Index are out of the range of the simulation." + raise ValueError(msg) + + start_glob_index = start_evtid + end_glob_index = start_evtid + n_evtid - 1 if (n_evtid is not None) else n_tot_sim - 1 + return start_glob_index, end_glob_index + + +def get_files_to_read(cum_n_sim: ArrayLike, start_glob_evtid: int, end_glob_evtid: int) -> NDArray: + """Get the index of files to read based on the number of evtid to read and the start evtid. + + Parameters + ---------- + cum_n_sim + cumulative list of the number of evtid per file. + start_glob_evtid + first global evtid to include. + end_glob_evtid + last global evtid to process. + + Returns + ------- + array of the indices of files to process. + """ + # find which files to read + + file_indices = [] + cum_n_sim = np.array(cum_n_sim) + + for i, (low, high) in enumerate(zip(cum_n_sim, cum_n_sim[1:] - 1)): + if (high >= start_glob_evtid) & (low <= end_glob_evtid): + file_indices.append(i) + return np.array(file_indices) + + +def get_include_chunk( + global_evtid: ak.Array, + start_glob_evtid: int, + end_glob_evtid: int, +) -> bool: + """Check if a chunk can be skipped based on evtid range. + + Parameters + ---------- + global_evtid + awkward array of the (local) evtid in the chunk + start_glob_evtid + first global evtid to include. + end_glob_evtid + last global evtid to process. + Returns + ------- + boolean flag of whether to include in the chunk. + + """ + low = ak.min(global_evtid) + high = ak.max(global_evtid) + return (high >= start_glob_evtid) & (low <= end_glob_evtid) def get_hpge(meta_path: str, pars: dict, detector: str) -> legendhpges.HPGe: diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py index 21d5e5b..401b6c4 100644 --- a/tests/test_hpge_hit.py +++ b/tests/test_hpge_hit.py @@ -122,7 +122,7 @@ def test_reboost_input_file(tmp_path): edep_2 = rng.uniform(low=0, high=1000, size=(30040)) vertices_1 = ak.Array({"evtid": np.arange(int(1e5))}) - vertices_2 = ak.Array({"evtid": np.arange(30040)}) + vertices_2 = ak.Array({"evtid": np.arange(int(1e5))}) arr_1 = ak.Array({"evtid": evtid_1, "time": time_1, "edep": edep_1}) arr_2 = ak.Array({"evtid": evtid_2, "time": time_2, "edep": edep_2}) @@ -165,19 +165,19 @@ def test_build_hit(test_reboost_input_file): hit.build_hit( str(test_reboost_input_file / "out.lh5"), [str(test_reboost_input_file / "file1.lh5")], - "hit", - "hit", - proc_config, - {}, + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, buffer=100000, ) hit.build_hit( str(test_reboost_input_file / "out_rem.lh5"), [str(test_reboost_input_file / "file2.lh5")], - "hit", - "hit", - proc_config, - {}, + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, buffer=10000, ) @@ -185,20 +185,20 @@ def test_build_hit(test_reboost_input_file): hit.build_hit( str(test_reboost_input_file / "out_merge.lh5"), [str(test_reboost_input_file / "file*.lh5")], - "hit", - "hit", - proc_config, - {}, + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, buffer=100000, merge_input_files=True, ) hit.build_hit( str(test_reboost_input_file / "out.lh5"), [str(test_reboost_input_file / "file*.lh5")], - "hit", - "hit", - proc_config, - {}, + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, buffer=100000, merge_input_files=False, ) @@ -222,3 +222,105 @@ def test_build_hit(test_reboost_input_file): assert ak.all(ak.all(tab_merge.evtid == ak.firsts(tab_merge.evtid, axis=-1), axis=1)) assert ak.all(ak.all(tab_0.evtid == ak.firsts(tab_0.evtid, axis=-1), axis=1)) assert ak.all(ak.all(tab_1.evtid == ak.firsts(tab_1.evtid, axis=-1), axis=1)) + + +def test_build_hit_some_row(test_reboost_input_file): + proc_config = { + "channels": [ + "det001", + ], + "outputs": ["t0", "evtid"], + "step_group": { + "description": "group steps by time and evtid.", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)", + }, + "truth_energy_sum": { + "description": "truth summed energy in the hit.", + "mode": "eval", + "expression": "ak.sum(hit.edep,axis=-1)", + }, + }, + } + + # test asking to read too many rows + with pytest.raises(ValueError): + hit.build_hit( + str(test_reboost_input_file / "out.lh5"), + [str(test_reboost_input_file / "file1.lh5")], + n_evtid=int(1e7), + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, + buffer=100000, + ) + + # test read only some events + hit.build_hit( + str(test_reboost_input_file / "out_some_rows.lh5"), + [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], + n_evtid=int(1e4), + start_evtid=0, + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, + buffer=100000, + ) + + hit.build_hit( + str(test_reboost_input_file / "out_rest_rows.lh5"), + [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], + n_evtid=int(1e5 - 1e4), + start_evtid=int(1e4), + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, + buffer=100000, + ) + # read all of file 1 + hit.build_hit( + str(test_reboost_input_file / "out_all_file_one.lh5"), + [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], + n_evtid=int(1e5), + start_evtid=0, + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, + buffer=100000, + ) + + # read a mix of the two files + hit.build_hit( + str(test_reboost_input_file / "out_mix.lh5"), + [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], + n_evtid=int(1e5), + start_evtid=1000, + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, + buffer=100000, + ) + + tab_some = lh5.read("hit/det001", str(test_reboost_input_file / "out_some_rows.lh5")).view_as( + "ak" + ) + tab_rest = lh5.read("hit/det001", str(test_reboost_input_file / "out_rest_rows.lh5")).view_as( + "ak" + ) + + tab_1 = lh5.read("hit/det001", str(test_reboost_input_file / "out_all_file_one.lh5")).view_as( + "ak" + ) + + tab_merge = ak.concatenate((tab_some, tab_rest)) + assert ak.all(ak.all(tab_merge.evtid == tab_1.evtid, axis=-1)) diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py index 7051456..3855b4f 100644 --- a/tests/test_hpge_utils.py +++ b/tests/test_hpge_utils.py @@ -15,7 +15,10 @@ from reboost.hpge.utils import ( _merge_arrays, get_file_list, + get_files_to_read, + get_global_evtid_range, get_hpge, + get_include_chunk, get_num_simulated, get_phy_vol, load_dict, @@ -187,11 +190,11 @@ def test_lh5_files(tmp_path): def test_get_n_sim(test_lh5_files): # single file n1 = get_num_simulated([str(test_lh5_files / "file1.lh5")]) - assert n1 == 14002 + assert n1 == [14002] # two files n12 = get_num_simulated([str(test_lh5_files / "file1.lh5"), str(test_lh5_files / "file2.lh5")]) - assert n12 == 14002 + 25156 + assert n12 == [14002, 25156] # length > buffer n123 = get_num_simulated( @@ -201,4 +204,47 @@ def test_get_n_sim(test_lh5_files): str(test_lh5_files / "file3.lh5"), ] ) - assert n123 == 14002 + 25156 + int(1e7) + assert n123 == [14002, 25156, int(1e7)] + + +def test_global_evtid_range(): + # raise exception if n_evtid is too large + with pytest.raises(ValueError): + get_global_evtid_range(100, 1000, 200) + + # test that we get the right ranges + assert get_global_evtid_range(200, 5, 2000) == (200, 204) + assert get_global_evtid_range(200, None, 2000) == (200, 1999) + + +def test_get_files_to_read(): + n_sim = [1000, 1200, 200, 5000] + n_sim = np.concatenate([[0], np.cumsum(n_sim)]) + + # read all evtid and thus all files + assert np.all(get_files_to_read(n_sim, start_glob_evtid=0, end_glob_evtid=7399) == [0, 1, 2, 3]) + + # all of file 0 + assert np.all(get_files_to_read(n_sim, start_glob_evtid=0, end_glob_evtid=999) == [0]) + + # and some of file 1 + assert np.all(get_files_to_read(n_sim, start_glob_evtid=0, end_glob_evtid=1000) == [0, 1]) + + # some of file 0, 1 and 2 + assert np.all(get_files_to_read(n_sim, start_glob_evtid=0, end_glob_evtid=2200) == [0, 1, 2]) + + # only file 1 and 2 + assert np.all(get_files_to_read(n_sim, start_glob_evtid=1000, end_glob_evtid=2300) == [1, 2]) + + # only file 3 + assert np.all(get_files_to_read(n_sim, start_glob_evtid=2400, end_glob_evtid=5000) == [3]) + + +def test_skip_chunk(): + evtid = ak.Array([4, 5, 10, 30]) + + assert get_include_chunk(evtid, start_glob_evtid=0, end_glob_evtid=35) + assert get_include_chunk(evtid, start_glob_evtid=0, end_glob_evtid=4) + assert get_include_chunk(evtid, start_glob_evtid=30, end_glob_evtid=33) + assert not get_include_chunk(evtid, start_glob_evtid=0, end_glob_evtid=3) + assert not get_include_chunk(evtid, start_glob_evtid=31, end_glob_evtid=100) From 42390b8cc4681a88e0c4e17fdfbb3f3189a0ac30 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Thu, 14 Nov 2024 19:07:20 +0100 Subject: [PATCH 39/81] trying to fix tests --- src/reboost/hpge/utils.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index ce5a75e..4218de9 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -31,6 +31,14 @@ "last_global_evtid", ], ) +FileInfo.__doc__ = "NamedTuple storing the information on the input files" +FileInfo.file_list.__doc__ = "list of strings of the selected files." +FileInfo.file_indices.__doc__ = "list of integers of the indices of the files." +FileInfo.file_start_global_evtids.__doc__ = ( + "list of integers of the first global evtid for each file." +) +FileInfo.first_global_evtid.__doc__ = "first global evtid to process." +FileInfo.last_global_evtid.__doc__ = "Last global evtid to process." def get_selected_files( @@ -201,8 +209,8 @@ def get_include_chunk( boolean flag of whether to include in the chunk. """ - low = ak.min(global_evtid) - high = ak.max(global_evtid) + low = ak.min(global_evtid,axis=0) + high = ak.max(global_evtid,axis=0) return (high >= start_glob_evtid) & (low <= end_glob_evtid) From 40329f51dd8d698543e310c67d81aaea225e7d0d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 18:07:42 +0000 Subject: [PATCH 40/81] style: pre-commit fixes --- src/reboost/hpge/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 4218de9..c941602 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -209,8 +209,8 @@ def get_include_chunk( boolean flag of whether to include in the chunk. """ - low = ak.min(global_evtid,axis=0) - high = ak.max(global_evtid,axis=0) + low = ak.min(global_evtid, axis=0) + high = ak.max(global_evtid, axis=0) return (high >= start_glob_evtid) & (low <= end_glob_evtid) From 432bd702908dd990524fd7f7ac9e792b8d494cbb Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Thu, 14 Nov 2024 19:11:59 +0100 Subject: [PATCH 41/81] add awkward to dependencies --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 03d2463..d2dccf9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ classifiers = [ ] requires-python = ">=3.9" dependencies = [ + "awkward", "colorlog", "numpy", "scipy", From dea22dda5e6e06313ebe13de4dadb8cb799a6dd9 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 15 Nov 2024 00:43:49 +0100 Subject: [PATCH 42/81] update main.yaml --- .github/workflows/main.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2c81d69..acb382e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -31,6 +31,10 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + - name: Install non-python (homebrew) dependencies + if: ${{ matrix.os == 'macOS-latest' }} + run: | + brew install opencascade cgal gmp mpfr boost - name: Get dependencies and install reboost run: | python -m pip install --upgrade pip wheel setuptools From 623768194247534463fbfce923904f4f4f7251cc Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 15 Nov 2024 00:44:08 +0100 Subject: [PATCH 43/81] improving documentation --- docs/source/manual/hpge.rst | 216 ++++++++++++++++++++++++++++++++- docs/source/manual/optical.rst | 4 +- 2 files changed, 215 insertions(+), 5 deletions(-) diff --git a/docs/source/manual/hpge.rst b/docs/source/manual/hpge.rst index 6bfe936..4198fac 100644 --- a/docs/source/manual/hpge.rst +++ b/docs/source/manual/hpge.rst @@ -1,4 +1,214 @@ -hpge simulations -================ +HPGe detector simulations +========================= -Come back later for more complete documentation. +*reboost-hpge* is a sub-package for post-processing the high purity Germanium detector (HPGe) part of *remage* simulations. +It provides a flexible framework to implement a user customised post-processing. + +Command line interface +---------------------- + +A command line tool *reboost-hpge* is created to run the processing. + +.. code-block:: console + + $ reboost-hpge -h + +Different modes are implemented to run the tiers. For example to run the **hit** tier processing (more details in the next section). + +.. code-block:: console + + $ reboost-hpge hit -h + + +*remage* lh5 output format +-------------------------- + +The output simulations from *remage* are described in `remage-docs `_. +By default two ``lgdo.Table`` `docs `_ are stored with the +following format: + +.. code-block:: console + + / + └── hit · HDF5 group + ├── det000 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det001 · table{evtid,particle,edep,time,xloc,yloc,zloc} + | .... + | .... + └── vertices · table{evtid,time,xloc,yloc,zloc,n_part} + ├── evtid · array<1>{real} + ├── n_part · array<1>{real} + ├── time · array<1>{real} + ├── xloc · array<1>{real} + ├── yloc · array<1>{real} + └── zloc · array<1>{real} + + + +One table is stored per sensitive Germanium detector and a Table of the vertices is also stored. +All the data is stored as (flat) 1D arrays. + +- *edep*: energy deposited in Germanium (in keV). +- *evtid*: index of the simulated event, +- *particle*: Geant4 code for the particle type, +- *time*: time of the event relative to the start of the event, +- *xloc/yloc/xzloc*: Position of the interaction / vertex, +- *n_part*: Number of particles emitted. + +However, this format is not directly comparable to experimental data. + + +Data tiers +---------- + +The processing is defined in terms of several *tiers*: + +- **stp** or "step" the raw *remage* outputs corresponding to Geant4 steps, +- **hit** the data from each channel independently after grouping in discrete physical interactions in the detector. +- **evt** or "event" the data combining the information from various detectors. + +The processing is divided into two steps :func:`build_hit` ``build_evt`` [WIP]. + +Hit tier processing +------------------- + +The processing is based on a YAML or JSON configuration file. For example: + +.. code-block:: json + + { + "channels": [ + "det000", + "det001", + "det002", + "det003" + ], + "outputs": [ + "t0", + "truth_energy_sum", + "smeared_energy_sum", + "evtid" + ], + "step_group": { + "description": "group steps by time and evtid.", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" + }, + "locals": { + "hpge": "reboost.hpge.utils.get_hpge()" + + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)" + }, + "truth_energy_sum": { + "description": "truth summed energy in the hit.", + "mode": "eval", + "expression": "ak.sum(hit.edep,axis=-1)" + }, + "smeared_energy_sum": { + "description": "summed energy after convolution with energy response.", + "mode": "function", + "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" + } + + } + } + +It is necessary to provide several sub-dictionaries: + +- **channels**: list of HPGe channels to process. +- **outputs**: list of fields for the output file. +- **locals**: get objects used by the processors (passed as ``locals`` to ``LGDO.Table.eval``) +- **step_group**: this should describe the function that groups the Geant4 steps into physical *hits*. +- **operations**: further computations / manipulations to apply. + +The **step_group** block sets the structure of the output file, this function reformats the flat input table into a table +with a jagged structure where each row corresponds to a physical hit in the detector. For example: + +.. code-block:: console + + evtid: [0 , 0, 1, ... ] + edep: [101.2, 201.2, 303.7, ... ] + time: [0 , 0.1 , 0, ... ] + .... + +Becomes a Table of ``VectorOfVectors`` with a jagged structure. For example: + +.. code-block:: console + + evtid: [[0 , 0], [ 1],[...],... ] + edep: [[101.2, 201.2], [303.7],[...],... ] + time: [[0 , 0.1], [ 0],[...],... ] + .... + +The recommended tool to manipulate jagged arrays is awkward `[docs] `_ and much of *reboost* is based on this. + + +It is necessary to chose a function to perform this step grouping, this function must take in the *remage* output table and return +a table where all the input arrays are converted to ``LGDO.VectorOfVectors`` with a jagged structure. In the expression of the function *stp* is an alias +for the input *remage* Table. This then must return the original LH5 table with the same fields as above restructured so each field is a ``VectorOfVectors``. +In addition a ``global_evtid`` field is adding which represents the index of the event over all input files. + +Next a set of operations can be specified, these can perform any operation that doesn't change the length of the data. They can be either basic numerical operations +(including awkward or numpy) or be specified by a function. The functions can reference several variables: + +- **hit** the output table of step grouping (note that the table is constantly updated so the order of operations is important), +- **pars** a named tuple of parameters (more details later) for this detector, +- **hpge** the ``legendhpges.HPGe`` object for this detector, +- **phy_vol** the ``pygometry`` physical volume for the detector. + +Finally the outputs field specifies the columns of the Table to include in the output table. + +lh5 i/o operations +------------------ + +:func:`build_hit` contains several options to handle i/o of lh5 files. + +Typically raw geant4 output files can be very large (many GB) so it is not desirable or feasible to read the full file into memory. +Instead the :class:`lgdo.lh5.LH5Ierator` is used to handle iteration over chunks of files keeping memory use reasonable. The *buffer* keyword argument +to :func:`build_hit` controls the size of the buffer. + +It is possible to specify a list of files of use wildcards, the *merge_input_files* argument controls whether the outputs are merged or kept as separate files. + +Finally, it is sometimes desirable to process a subset of the simulated events, for example to split the simulation by run or period. The *n_evtid* and *start_evtid* +keywords arguments control the first simulation index to process and the number of events. Note that the indices refer to the *global* evtid when multiple files are used. + +parameters and other *local* variables +-------------------------------------- + +Often it is neccesary to include processors that depend on parameters (which) may vary by detector. To enable this the user can specify a dictonary of +parameters with the *pars* keyword, this should contain a sub-dictionary per detector for example: + +.. code-block:: json + + { + "det000": { + "reso": 1, + "fccd": 0.1, + "phy_vol_name":"det_phy", + "meta_name": "icpc.json" + } + } + +This dictionary is internally converted into a python ``NamedTuple`` to make cleaner syntax. The named tuple for each detector is then passed as a +``local`` dictonary to the evaulation of the operations with name "pars". + +In addition, for many post-processing applications it is neccesary for the processor functions to know the geometry. This is made possible +by passing the path to the GDML file and the path to the metadata ("diodes" folder) with the *gdml* and *meta_path* arguments to build_hit. + + + +adding new processors +--------------------- + +Any python function diff --git a/docs/source/manual/optical.rst b/docs/source/manual/optical.rst index 2e3ad69..caf38b7 100644 --- a/docs/source/manual/optical.rst +++ b/docs/source/manual/optical.rst @@ -1,4 +1,4 @@ -optical simulations -=================== +Optical (SiPM) simulations processing +===================================== Come back later for more complete documentation. From 1370087a87b1087c7109a3c0f67844377b03a7f7 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 15 Nov 2024 00:44:25 +0100 Subject: [PATCH 44/81] change FileInfo into class (cleaner) --- src/reboost/hpge/utils.py | 56 ++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index c941602..d51559c 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -7,6 +7,7 @@ import re from collections import namedtuple from pathlib import Path +from typing import NamedTuple import awkward as ak import legendhpges @@ -21,29 +22,28 @@ reg = pyg4ometry.geant4.Registry() -FileInfo = namedtuple( - "FileInfo", - [ - "file_list", - "file_indices", - "file_start_global_evtids", - "first_global_evtid", - "last_global_evtid", - ], -) -FileInfo.__doc__ = "NamedTuple storing the information on the input files" -FileInfo.file_list.__doc__ = "list of strings of the selected files." -FileInfo.file_indices.__doc__ = "list of integers of the indices of the files." -FileInfo.file_start_global_evtids.__doc__ = ( - "list of integers of the first global evtid for each file." -) -FileInfo.first_global_evtid.__doc__ = "first global evtid to process." -FileInfo.last_global_evtid.__doc__ = "Last global evtid to process." +class FileInfo(NamedTuple): + """NamedTuple storing the information on the input files""" + + file_list: list[str] + """list of strings of the selected files.""" + + file_indices: list[int] + """list of integers of the indices of the files.""" + + file_start_global_evtids: list[int] + """list of integers of the first global evtid for each file.""" + + first_global_evtid: int + """first global evtid to process.""" + + last_global_evtid: int + """Last global evtid to process.""" def get_selected_files( file_list: list[str], table: str, n_evtid: int | None, start_evtid: int -) -> tuple[list, list, list]: +) -> FileInfo: """Get the files to read based on removing those with global evtid out of the selected range. - expands wildcards, @@ -63,12 +63,7 @@ def get_selected_files( Returns ------- - `FileInfo` named tuple with fields: - - `file_list`:list of files. - - `file_indices`: indices of selected files. - - `file_start_global_evtids`: first global `evtid` in each file. - - `first_global_evtid`: first global evtid to process - - `last_global_evtid`: last global evtid to process. + `FileInfo` object with information on the files. """ # expand wildcards expanded_list_file_in = get_file_list(path=file_list) @@ -214,7 +209,7 @@ def get_include_chunk( return (high >= start_glob_evtid) & (low <= end_glob_evtid) -def get_hpge(meta_path: str, pars: dict, detector: str) -> legendhpges.HPGe: +def get_hpge(meta_path: str | None, pars: dict, detector: str) -> legendhpges.HPGe: """Extract the :class:`legendhpges.HPGe` object from metadata. Parameters @@ -231,10 +226,11 @@ def get_hpge(meta_path: str, pars: dict, detector: str) -> legendhpges.HPGe: hpge the `legendhpges` object for the detector. """ - - meta_name = pars.get("meta_name", f"{detector}.json") - meta_dict = Path(meta_path) / Path(meta_name) - return legendhpges.make_hpge(meta_dict, registry=reg) + if metadata_path is not None: + meta_name = pars.get("meta_name", f"{detector}.json") + meta_dict = Path(meta_path) / Path(meta_name) + return legendhpges.make_hpge(meta_dict, registry=reg) + None def get_phy_vol( From 54663e07735dbcaeb5bceb66559bfd24b46c786c Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 15 Nov 2024 00:49:44 +0100 Subject: [PATCH 45/81] [docs] improve documentation and start working on locals option --- docs/source/manual/hpge.rst | 8 ++++---- src/reboost/hpge/hit.py | 13 ++++++++----- src/reboost/hpge/utils.py | 4 ++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/docs/source/manual/hpge.rst b/docs/source/manual/hpge.rst index 4198fac..b49d183 100644 --- a/docs/source/manual/hpge.rst +++ b/docs/source/manual/hpge.rst @@ -186,7 +186,7 @@ keywords arguments control the first simulation index to process and the number parameters and other *local* variables -------------------------------------- -Often it is neccesary to include processors that depend on parameters (which) may vary by detector. To enable this the user can specify a dictonary of +Often it is necessary to include processors that depend on parameters (which) may vary by detector. To enable this the user can specify a dictionary of parameters with the *pars* keyword, this should contain a sub-dictionary per detector for example: .. code-block:: json @@ -200,10 +200,10 @@ parameters with the *pars* keyword, this should contain a sub-dictionary per det } } -This dictionary is internally converted into a python ``NamedTuple`` to make cleaner syntax. The named tuple for each detector is then passed as a -``local`` dictonary to the evaulation of the operations with name "pars". +This dictionary is internally converted into a python ``NamedTuple`` to make cleaner syntax. The named tuple for each detector is then passed as a +``local`` dictionary to the evaluation of the operations with name "pars". -In addition, for many post-processing applications it is neccesary for the processor functions to know the geometry. This is made possible +In addition, for many post-processing applications it is necessary for the processor functions to know the geometry. This is made possible by passing the path to the GDML file and the path to the metadata ("diodes" folder) with the *gdml* and *meta_path* arguments to build_hit. diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index f772394..c2ac7af 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -1,6 +1,7 @@ from __future__ import annotations import logging +from typing import NamedTuple import awkward as ak import legendhpges @@ -48,6 +49,11 @@ def step_group(data: Table, group_config: dict) -> Table: return eval(group_func, globs, locs) +def get_locals(local_dict: dict, pars: NamedTuple, detector: str, meta_path: str) -> dict: + """Compute any local variables needed for processing""" + raise NotImplementedError + + def eval_expression( table: Table, info: dict, @@ -261,11 +267,8 @@ def build_hit( log.info(msg) # get HPGe and phy_vol object to pass to build_hit - hpge = ( - utils.get_hpge(metadata_path, pars=pars, detector=d) - if (metadata_path is not None) - else None - ) + hpge = utils.get_hpge(metadata_path, pars=pars, detector=d) + phy_vol = utils.get_phy_vol(reg, pars=pars, detector=d) is_first_chan = bool(ch_idx == 0) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index d51559c..5f4e0cf 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -226,11 +226,11 @@ def get_hpge(meta_path: str | None, pars: dict, detector: str) -> legendhpges.HP hpge the `legendhpges` object for the detector. """ - if metadata_path is not None: + if meta_path is not None: meta_name = pars.get("meta_name", f"{detector}.json") meta_dict = Path(meta_path) / Path(meta_name) return legendhpges.make_hpge(meta_dict, registry=reg) - None + return None def get_phy_vol( From 097b9e6c9cc0d21849275a173ed808356db9281f Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 15 Nov 2024 15:32:15 +0100 Subject: [PATCH 46/81] add option to specify local objects in config --- docs/source/manual/hpge.rst | 32 +++- src/reboost/hpge/hit.py | 98 ++++++----- src/reboost/hpge/processors.py | 2 +- src/reboost/hpge/utils.py | 13 +- tests/test_hpge_distance_to_surface.py | 6 +- tests/test_hpge_hit.py | 215 ++++++++++++++----------- tests/test_hpge_utils.py | 9 +- 7 files changed, 228 insertions(+), 147 deletions(-) diff --git a/docs/source/manual/hpge.rst b/docs/source/manual/hpge.rst index b49d183..207f709 100644 --- a/docs/source/manual/hpge.rst +++ b/docs/source/manual/hpge.rst @@ -13,7 +13,7 @@ A command line tool *reboost-hpge* is created to run the processing. $ reboost-hpge -h -Different modes are implemented to run the tiers. For example to run the **hit** tier processing (more details in the next section). +Different modes are implemented to run the tiers. For example to run the *hit* tier processing (more details in the next section). .. code-block:: console @@ -101,8 +101,7 @@ The processing is based on a YAML or JSON configuration file. For example: "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" }, "locals": { - "hpge": "reboost.hpge.utils.get_hpge()" - + "hpge": "reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)" }, "operations": { "t0": { @@ -205,10 +204,35 @@ This dictionary is internally converted into a python ``NamedTuple`` to make cle In addition, for many post-processing applications it is necessary for the processor functions to know the geometry. This is made possible by passing the path to the GDML file and the path to the metadata ("diodes" folder) with the *gdml* and *meta_path* arguments to build_hit. +From the GDML file the ``pyg4ometry.geant4.Registry`` is extracted. + +To allow the flexibility to write processors depending on arbitrary (more complicated python objects), it is possible to add the *locals* dictionary +to the config file. The code will then evaluate the supplied expression for each sub-dictionary. These expressions can depend on: + +- the *remage* detector name: "detector", +- the path to the metadata: "meta", +- the geant4 registry: "reg", +- the parameters for this detector: "pars". + +These expressions are then evaluated (once per detector) and added to the *locals* dictionary of ``Table.eval``, so can be references in the expressions. + +For example one useful object for post-processing is the `legendhpges.base.HPGe `_ object for the detector. +This can be constructed from the metadata using. + +.. code-block:: json + + {"hpge": "reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)"} + +This will then create the hpge object for each detector and add it to the "locals" mapping of "eval" so it can be used. +Possible intended use case of this functionality are: + - extracting detector mappings (eg drift time maps), + - extracting the kernel of a machine learning model. + - any more complicated (non-JSON serialisable objects). adding new processors --------------------- -Any python function +Any python function can be a ``reboost.hit`` processor. The only requirement is that it should return a :class:`VectorOfVectors`, :class:`Array`` or :class:`ArrayOfEqualSizedArrays` +with the same length as the hit table. This means processors can act on subarrays (``axis=-1`` in awkward syntax) but should not combine multiple rows of the hit table. diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index c2ac7af..62e982a 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -1,10 +1,8 @@ from __future__ import annotations import logging -from typing import NamedTuple import awkward as ak -import legendhpges import numpy as np import pyg4ometry from lgdo import Array, ArrayOfEqualSizedArrays, Table, VectorOfVectors, lh5 @@ -49,17 +47,58 @@ def step_group(data: Table, group_config: dict) -> Table: return eval(group_func, globs, locs) -def get_locals(local_dict: dict, pars: NamedTuple, detector: str, meta_path: str) -> dict: - """Compute any local variables needed for processing""" - raise NotImplementedError +def get_locals( + local_info: dict, + pars_dict: dict | None, + detector: str|None=None, + meta_path: str|None=None, + reg: pyg4ometry.geant4.Registry|None =None, +) -> dict: + """Compute any local variables needed for processing. + + Parameters + ---------- + local_info + config file block of the local objects to compute. For example: + + ..code-block:: + + {"hpge": "reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)"} + + pars_dict + dictionary of parameters + detector + remage name for the dete + meta_path + path to thhe diodes folder of the metadata + reg + geant4 registry of the experiment + + Returns + ------- + dictionary of local variables to pass to eval + """ + local_dict = {} + + # get parameters named tuple + if pars_dict is not None: + pars_tuple = utils.dict2tuple(pars_dict) + local_dict = {"pars": pars_tuple} + + objs = {"pars": pars_tuple, "detector": detector, "meta": meta_path, "reg": reg} + + for name, eval_str in local_info.items(): + proc_func, globs = utils.get_function_string(eval_str) + + msg = f"extracting local object with {eval_str} " + log.debug(msg) + obj = eval(proc_func, globs, objs) + local_dict = local_dict | {name: obj} + return local_dict def eval_expression( - table: Table, - info: dict, - pars: dict | None = None, - hpge: legendhpges.HPGe | None = None, - phy_vol: pyg4ometry.geant4.PhysicalVolume | None = None, + table: Table, info: dict, local_dict: dict | None ) -> Array | ArrayOfEqualSizedArrays | VectorOfVectors: """Evaluate an expression returning an LGDO object. @@ -81,17 +120,10 @@ def eval_expression( in which case a simple expression is based (only involving numpy, awkward or inbuilt python functions), or `function` in which case an arbitrary function is passed (for example defined in processors). - There are several objects passed to the evaluation as 'locals' which can be references by the expression. - - `pars`: dictionary of parameters (converted to namedtuple) (see `pars` argument), - - `hpge`: the legendhpges object for this detector (see `hpge` argument), - - `phy_vol`: the physical volume of the detector (see `phy` argument). + There are several objects passed to the evaluation as 'locals' determined by the `local_dict` - pars - dict of parameters, can contain any fields passed to the expression prefixed by `pars.`. - hpge - `legendhpges` object with the information on the HPGe detector. - phy_vol - `pyg4ometry.geant4.PhysicalVolume` object from GDML, + local_dict + mapping of local variables for the evaluation Returns ------- @@ -101,15 +133,8 @@ def eval_expression( ---- In future the passing of local variables (pars,hpge,reg) to the evaluation should be make more generic. """ - local_dict = {} - - if pars is not None: - pars_tuple = utils.dict2tuple(pars) - local_dict = {"pars": pars_tuple} - if phy_vol is not None: - local_dict |= {"phy_vol": phy_vol} - if hpge is not None: - local_dict |= {"hpge": hpge} + if local_dict is None: + local_dict = {} if info["mode"] == "eval": # replace hit. @@ -165,6 +190,7 @@ def build_hit( lh5 group name for input proc_config the configuration file for the processing. Must contain the fields `channels`, `outputs`, `step_group` and operations`. + Optionally can also contain the `locals` field to extract other non-JSON serializable objects used by the processors. For example: .. code-block:: json @@ -186,6 +212,9 @@ def build_hit( "description": "group steps by time and evtid.", "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" }, + "locals": { + "hpge": "reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)" + }, "operations": { "t0": { "description": "first time in the hit.", @@ -234,8 +263,6 @@ def build_hit( length of buffer gdml path to the input gdml file. - macro - path to the macro file. metadata_path path to the folder with the metadata (i.e. the `hardware.detectors.germanium.diodes` folder of `legend-metadata`) merge_input_files @@ -266,10 +293,9 @@ def build_hit( msg = f"...running hit tier for {d}" log.info(msg) - # get HPGe and phy_vol object to pass to build_hit - hpge = utils.get_hpge(metadata_path, pars=pars, detector=d) - - phy_vol = utils.get_phy_vol(reg, pars=pars, detector=d) + # get local variables + local_info = proc_config.get("locals",{}) + local_dict = get_locals(local_info,pars_dict=pars.get(d,{}), meta_path=metadata_path, detector=d, reg=reg) is_first_chan = bool(ch_idx == 0) is_first_file = bool(file_idx == 0) @@ -340,7 +366,7 @@ def build_hit( msg = f"adding column {name}" log.debug(msg) - col = eval_expression(grouped, info, pars=pars, phy_vol=phy_vol, hpge=hpge) + col = eval_expression(grouped, info, local_dict=local_dict) grouped.add_field(name, col) # remove unwanted columns diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index bdc17ea..f0c9e1d 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -198,4 +198,4 @@ def distance_to_surface( # distance calc itself distances = hpge.distance_to_surface(local_positions, surface_indices=surface_indices) - return ak.unflatten(distances, size) + return VectorOfVectors(ak.unflatten(distances, size)) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 5f4e0cf..df35c76 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -209,7 +209,7 @@ def get_include_chunk( return (high >= start_glob_evtid) & (low <= end_glob_evtid) -def get_hpge(meta_path: str | None, pars: dict, detector: str) -> legendhpges.HPGe: +def get_hpge(meta_path: str | None, pars: NamedTuple, detector: str) -> legendhpges.HPGe: """Extract the :class:`legendhpges.HPGe` object from metadata. Parameters @@ -217,7 +217,7 @@ def get_hpge(meta_path: str | None, pars: dict, detector: str) -> legendhpges.HP meta_path path to the folder with the `diodes` metadata. pars - dictionary of parameters. + named tuple of parameters. detector remage output name for the detector @@ -226,15 +226,16 @@ def get_hpge(meta_path: str | None, pars: dict, detector: str) -> legendhpges.HP hpge the `legendhpges` object for the detector. """ + reg = pyg4ometry.geant4.Registry() if meta_path is not None: - meta_name = pars.get("meta_name", f"{detector}.json") + meta_name = pars.meta_name if ("meta_name" in pars._fields) else f"{detector}.json" meta_dict = Path(meta_path) / Path(meta_name) return legendhpges.make_hpge(meta_dict, registry=reg) return None def get_phy_vol( - reg: pyg4ometry.geant4.Registry | None, pars: dict, detector: str + reg: pyg4ometry.geant4.Registry | None, pars: NamedTuple, detector: str ) -> pyg4ometry.geant4.PhysicalVolume: """Extract the :class:`pyg4ometry.geant4.PhysicalVolume` object from GDML @@ -243,7 +244,7 @@ def get_phy_vol( reg Geant4 registry from GDML pars - dictionary of parameters. + named tuple of parameters. detector remage output name for the detector. @@ -253,7 +254,7 @@ def get_phy_vol( the `pyg4ometry.geant4.PhysicalVolume` object for the detector """ if reg is not None: - phy_name = pars.get("phy_vol_name", f"{detector}") + phy_name = pars.phy_vol_name if ("phy_vol_name" in pars._fields) else f"{detector}" return reg.physicalVolumeDict[phy_name] return None diff --git a/tests/test_hpge_distance_to_surface.py b/tests/test_hpge_distance_to_surface.py index 7b1789c..3e77b86 100644 --- a/tests/test_hpge_distance_to_surface.py +++ b/tests/test_hpge_distance_to_surface.py @@ -4,7 +4,7 @@ import pytest from legendhpges import make_hpge from legendtestdata import LegendTestData - +from lgdo import types from reboost.hpge.processors import distance_to_surface @@ -32,3 +32,7 @@ def test_distance_to_surface(test_data_configs): ak.num(distance_to_surface(pos.xloc, pos.yloc, pos.zloc, gedet, dist, None), axis=1) == [3, 1, 3] ) + + # check it can be written + + assert isinstance(distance_to_surface(pos.xloc, pos.yloc, pos.zloc, gedet, dist, None),types.LGDO) \ No newline at end of file diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py index 401b6c4..6701ba5 100644 --- a/tests/test_hpge_hit.py +++ b/tests/test_hpge_hit.py @@ -7,6 +7,7 @@ import pyg4ometry import pytest from legendhpges import make_hpge +from legendhpges.base import HPGe from legendtestdata import LegendTestData from lgdo import Table, lh5 from pyg4ometry import geant4 @@ -22,6 +23,13 @@ def test_data_configs(): ldata.checkout("5f9b368") return ldata.get_path("legend/metadata/hardware/detectors/germanium/diodes") +def test_get_locals(test_data_configs): + + local_info = {"hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)"} + + local_dict = hit.get_locals(local_info,pars_dict={"meta_name":"V99000A.json"},detector="det001",meta_path=test_data_configs) + + assert isinstance(local_dict["hpge"],HPGe) def test_eval(): in_arr = ak.Array( @@ -49,13 +57,15 @@ def test_eval(): "expression": "reboost.hpge.processors.smear_energies(hit.e_sum,reso=pars.reso)", } pars = {"reso": 2} - - assert np.size(hit.eval_expression(tab, func_eval, pars).view_as("np")) == 5 + # test get locals + local_dict = hit.get_locals({},pars_dict=pars) + assert np.size(hit.eval_expression(tab, func_eval, local_dict).view_as("np")) == 5 def test_eval_with_hpge(test_data_configs): - reg = geant4.Registry() - gedet = make_hpge(test_data_configs + "/V99000A.json", registry=reg) + + local_info = {"hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)"} + local_dict = hit.get_locals(local_info,pars_dict={"meta_name":"V99000A.json"},detector="det001",meta_path=test_data_configs) pos = ak.Array( { @@ -72,14 +82,20 @@ def test_eval_with_hpge(test_data_configs): } assert ak.all( - ak.num(hit.eval_expression(tab, func_eval, {}, hpge=gedet, phy_vol=None), axis=1) + ak.num(hit.eval_expression(tab, func_eval, local_dict), axis=1) == [3, 1, 3] ) def test_eval_with_hpge_and_phy_vol(test_data_configs): - reg = geant4.Registry() - gedet = make_hpge(test_data_configs + "/V99000A.json", registry=reg) + gdml_path = configs / pathlib.Path("geom.gdml") + + gdml = pyg4ometry.gdml.Reader(gdml_path).getRegistry() + + local_info = {"hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", + "phy_vol":"reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)" + } + local_dict = hit.get_locals(local_info,pars_dict={"meta_name":"V99000A.json","phy_vol_name":"det_phy_1"},detector="det001",meta_path=test_data_configs,reg=gdml) pos = ak.Array( { @@ -94,15 +110,9 @@ def test_eval_with_hpge_and_phy_vol(test_data_configs): "mode": "function", "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), None)", } - gdml_path = configs / pathlib.Path("geom.gdml") - - gdml = pyg4ometry.gdml.Reader(gdml_path).getRegistry() - - # read with the det_phy_vol_name - phy = utils.get_phy_vol(gdml, {"phy_vol_name": "det_phy_1"}, "det001") assert ak.all( - ak.num(hit.eval_expression(tab, func_eval, {}, hpge=gedet, phy_vol=phy), axis=1) + ak.num(hit.eval_expression(tab, func_eval, local_dict), axis=1) == [3, 1, 3] ) @@ -115,17 +125,24 @@ def test_reboost_input_file(tmp_path): evtid_1 = np.sort(rng.integers(int(1e5), size=(int(1e6)))) time_1 = rng.uniform(low=0, high=1, size=(int(1e6))) edep_1 = rng.uniform(low=0, high=1000, size=(int(1e6))) + pos_x_1 = rng.uniform(low=-50,high=50,size=(int(1e6))) + pos_y_1 = rng.uniform(low=-50,high=50,size=(int(1e6))) + pos_z_1 = rng.uniform(low=-50,high=50,size=(int(1e6))) + # make it not divide by the buffer len evtid_2 = np.sort(rng.integers(int(1e5), size=(30040))) time_2 = rng.uniform(low=0, high=1, size=(30040)) edep_2 = rng.uniform(low=0, high=1000, size=(30040)) + pos_x_2 = rng.uniform(low=-50,high=50,size=(30040)) + pos_y_2 = rng.uniform(low=-50,high=50,size=(30040)) + pos_z_2 = rng.uniform(low=-50,high=50,size=(30040)) vertices_1 = ak.Array({"evtid": np.arange(int(1e5))}) vertices_2 = ak.Array({"evtid": np.arange(int(1e5))}) - arr_1 = ak.Array({"evtid": evtid_1, "time": time_1, "edep": edep_1}) - arr_2 = ak.Array({"evtid": evtid_2, "time": time_2, "edep": edep_2}) + arr_1 = ak.Array({"evtid": evtid_1, "time": time_1, "edep": edep_1, "xloc":pos_x_1,"yloc":pos_y_1,"zloc":pos_z_1}) + arr_2 = ak.Array({"evtid": evtid_2, "time": time_2, "edep": edep_2, "xloc":pos_x_2,"yloc":pos_y_2,"zloc":pos_z_2}) lh5.write(Table(vertices_1), "hit/vertices", tmp_path / "file1.lh5", wo_mode="of") lh5.write(Table(vertices_2), "hit/vertices", tmp_path / "file2.lh5", wo_mode="of") @@ -162,36 +179,18 @@ def test_build_hit(test_reboost_input_file): }, } - hit.build_hit( - str(test_reboost_input_file / "out.lh5"), - [str(test_reboost_input_file / "file1.lh5")], - in_field="hit", - out_field="hit", - proc_config=proc_config, - pars={}, - buffer=100000, - ) - hit.build_hit( - str(test_reboost_input_file / "out_rem.lh5"), - [str(test_reboost_input_file / "file2.lh5")], - in_field="hit", - out_field="hit", - proc_config=proc_config, - pars={}, - buffer=10000, - ) - - # now with wildcard - hit.build_hit( - str(test_reboost_input_file / "out_merge.lh5"), - [str(test_reboost_input_file / "file*.lh5")], - in_field="hit", - out_field="hit", - proc_config=proc_config, - pars={}, - buffer=100000, - merge_input_files=True, - ) + for output_file,input_file in zip(["out.lh5","out_rem.lh5","out_merge.lh5"], + ["file1.lh5","file2.lh5","file*.lh5"]): + hit.build_hit( + str(test_reboost_input_file / output_file), + [str(test_reboost_input_file / input_file)], + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, + buffer=100000, + ) + hit.build_hit( str(test_reboost_input_file / "out.lh5"), [str(test_reboost_input_file / "file*.lh5")], @@ -261,56 +260,23 @@ def test_build_hit_some_row(test_reboost_input_file): buffer=100000, ) - # test read only some events - hit.build_hit( - str(test_reboost_input_file / "out_some_rows.lh5"), - [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], - n_evtid=int(1e4), - start_evtid=0, - in_field="hit", - out_field="hit", - proc_config=proc_config, - pars={}, - buffer=100000, - ) - - hit.build_hit( - str(test_reboost_input_file / "out_rest_rows.lh5"), - [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], - n_evtid=int(1e5 - 1e4), - start_evtid=int(1e4), - in_field="hit", - out_field="hit", - proc_config=proc_config, - pars={}, - buffer=100000, - ) - # read all of file 1 - hit.build_hit( - str(test_reboost_input_file / "out_all_file_one.lh5"), - [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], - n_evtid=int(1e5), - start_evtid=0, - in_field="hit", - out_field="hit", - proc_config=proc_config, - pars={}, - buffer=100000, - ) - - # read a mix of the two files - hit.build_hit( - str(test_reboost_input_file / "out_mix.lh5"), - [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], - n_evtid=int(1e5), - start_evtid=1000, - in_field="hit", - out_field="hit", - proc_config=proc_config, - pars={}, - buffer=100000, - ) + for n_ev,s_ev,out in zip([int(1e4),int(1e5-1e4),int(1e5),int(1e5)], + [0,int(1e4),0,1000],["out_some_rows.lh5","out_rest_rows.lh5","out_all_file_one.lh5","out_mix.lh5"]): + + # test read only some events + hit.build_hit( + str(test_reboost_input_file / out), + [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], + n_evtid=n_ev, + start_evtid=s_ev, + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, + buffer=100000, + ) + tab_some = lh5.read("hit/det001", str(test_reboost_input_file / "out_some_rows.lh5")).view_as( "ak" ) @@ -324,3 +290,62 @@ def test_build_hit_some_row(test_reboost_input_file): tab_merge = ak.concatenate((tab_some, tab_rest)) assert ak.all(ak.all(tab_merge.evtid == tab_1.evtid, axis=-1)) + + + +def test_build_hit_with_locals(test_reboost_input_file,test_data_configs): + + + proc_config = { + "channels": [ + "det001", + ], + "outputs": ["t0", "evtid","distance_to_surface"], + + "step_group": { + "description": "group steps by time and evtid.", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", + }, + "locals":{ + "hpge":"reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", + "phy_vol":"reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)" + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)", + }, + "truth_energy_sum": { + "description": "truth summed energy in the hit.", + "mode": "eval", + "expression": "ak.sum(hit.edep,axis=-1)", + }, + "smear_energy_sum":{ + "description": "summed energy after convolution with energy response.", + "mode": "function", + "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" + }, + "distance_to_surface":{ + "description":"distance to the nplus surface", + "mode":"function", + "expression":"reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), None)" + } + } + } + gdml_path = configs / pathlib.Path("geom.gdml") + meta_path = test_data_configs + # complete check on the processing chain including parameters / local variables + + hit.build_hit( + str(test_reboost_input_file / "out.lh5"), + [str(test_reboost_input_file / "file*.lh5")], + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={"det001":{"reso":1,"meta_name":"V99000A.json","phy_vol_name":"det_phy_1"}}, + buffer=100000, + merge_input_files=False, + metadata_path = meta_path, + gdml =gdml_path + ) \ No newline at end of file diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py index 3855b4f..6f4a04c 100644 --- a/tests/test_hpge_utils.py +++ b/tests/test_hpge_utils.py @@ -22,6 +22,7 @@ get_num_simulated, get_phy_vol, load_dict, + dict2tuple ) configs = pathlib.Path(__file__).parent.resolve() / pathlib.Path("configs") @@ -142,11 +143,11 @@ def test_data_configs(): def test_get_hpge(test_data_configs): # specify name in pars - hpge = get_hpge(str(test_data_configs), {"meta_name": "C99000A.json"}, "det001") + hpge = get_hpge(str(test_data_configs), dict2tuple({"meta_name": "C99000A.json"}), "det001") assert isinstance(hpge, HPGe) # now read without metaname - hpge_ic = get_hpge(str(test_data_configs), {}, "V99000A") + hpge_ic = get_hpge(str(test_data_configs), dict2tuple({}), "V99000A") assert isinstance(hpge_ic, HPGe) @@ -156,12 +157,12 @@ def test_get_phy_vol(): gdml = pyg4ometry.gdml.Reader(gdml_path).getRegistry() # read with the det_phy_vol_name - phy = get_phy_vol(gdml, {"phy_vol_name": "det_phy_1"}, "det001") + phy = get_phy_vol(gdml, dict2tuple({"phy_vol_name": "det_phy_1"}), "det001") assert isinstance(phy, pyg4ometry.geant4.PhysicalVolume) # read without - phy = get_phy_vol(gdml, {}, "det_phy_0") + phy = get_phy_vol(gdml, dict2tuple({}), "det_phy_0") assert isinstance(phy, pyg4ometry.geant4.PhysicalVolume) From 133da5ef76ea3bbfc225bf14b502e743cf3f6f6e Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 15 Nov 2024 15:33:43 +0100 Subject: [PATCH 47/81] ak.min to np.min for 1D array --- src/reboost/hpge/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index df35c76..087a227 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -204,8 +204,8 @@ def get_include_chunk( boolean flag of whether to include in the chunk. """ - low = ak.min(global_evtid, axis=0) - high = ak.max(global_evtid, axis=0) + low = np.min(global_evtid) + high = np.max(global_evtid) return (high >= start_glob_evtid) & (low <= end_glob_evtid) From 9f0a9ba8f419521661749f27d9e16c91a8b2d738 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 14:34:34 +0000 Subject: [PATCH 48/81] style: pre-commit fixes --- src/reboost/hpge/hit.py | 14 +-- tests/test_hpge_distance_to_surface.py | 5 +- tests/test_hpge_hit.py | 143 +++++++++++++++---------- tests/test_hpge_utils.py | 2 +- 4 files changed, 98 insertions(+), 66 deletions(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 62e982a..c7f0de6 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -50,9 +50,9 @@ def step_group(data: Table, group_config: dict) -> Table: def get_locals( local_info: dict, pars_dict: dict | None, - detector: str|None=None, - meta_path: str|None=None, - reg: pyg4ometry.geant4.Registry|None =None, + detector: str | None = None, + meta_path: str | None = None, + reg: pyg4ometry.geant4.Registry | None = None, ) -> dict: """Compute any local variables needed for processing. @@ -60,7 +60,7 @@ def get_locals( ---------- local_info config file block of the local objects to compute. For example: - + ..code-block:: {"hpge": "reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)"} @@ -294,8 +294,10 @@ def build_hit( log.info(msg) # get local variables - local_info = proc_config.get("locals",{}) - local_dict = get_locals(local_info,pars_dict=pars.get(d,{}), meta_path=metadata_path, detector=d, reg=reg) + local_info = proc_config.get("locals", {}) + local_dict = get_locals( + local_info, pars_dict=pars.get(d, {}), meta_path=metadata_path, detector=d, reg=reg + ) is_first_chan = bool(ch_idx == 0) is_first_file = bool(file_idx == 0) diff --git a/tests/test_hpge_distance_to_surface.py b/tests/test_hpge_distance_to_surface.py index 3e77b86..1114903 100644 --- a/tests/test_hpge_distance_to_surface.py +++ b/tests/test_hpge_distance_to_surface.py @@ -5,6 +5,7 @@ from legendhpges import make_hpge from legendtestdata import LegendTestData from lgdo import types + from reboost.hpge.processors import distance_to_surface @@ -35,4 +36,6 @@ def test_distance_to_surface(test_data_configs): # check it can be written - assert isinstance(distance_to_surface(pos.xloc, pos.yloc, pos.zloc, gedet, dist, None),types.LGDO) \ No newline at end of file + assert isinstance( + distance_to_surface(pos.xloc, pos.yloc, pos.zloc, gedet, dist, None), types.LGDO + ) diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py index 6701ba5..f0b4e8e 100644 --- a/tests/test_hpge_hit.py +++ b/tests/test_hpge_hit.py @@ -6,13 +6,11 @@ import numpy as np import pyg4ometry import pytest -from legendhpges import make_hpge from legendhpges.base import HPGe from legendtestdata import LegendTestData from lgdo import Table, lh5 -from pyg4ometry import geant4 -from reboost.hpge import hit, utils +from reboost.hpge import hit configs = pathlib.Path(__file__).parent.resolve() / pathlib.Path("configs") @@ -23,13 +21,19 @@ def test_data_configs(): ldata.checkout("5f9b368") return ldata.get_path("legend/metadata/hardware/detectors/germanium/diodes") -def test_get_locals(test_data_configs): +def test_get_locals(test_data_configs): local_info = {"hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)"} - local_dict = hit.get_locals(local_info,pars_dict={"meta_name":"V99000A.json"},detector="det001",meta_path=test_data_configs) + local_dict = hit.get_locals( + local_info, + pars_dict={"meta_name": "V99000A.json"}, + detector="det001", + meta_path=test_data_configs, + ) + + assert isinstance(local_dict["hpge"], HPGe) - assert isinstance(local_dict["hpge"],HPGe) def test_eval(): in_arr = ak.Array( @@ -58,14 +62,18 @@ def test_eval(): } pars = {"reso": 2} # test get locals - local_dict = hit.get_locals({},pars_dict=pars) + local_dict = hit.get_locals({}, pars_dict=pars) assert np.size(hit.eval_expression(tab, func_eval, local_dict).view_as("np")) == 5 def test_eval_with_hpge(test_data_configs): - local_info = {"hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)"} - local_dict = hit.get_locals(local_info,pars_dict={"meta_name":"V99000A.json"},detector="det001",meta_path=test_data_configs) + local_dict = hit.get_locals( + local_info, + pars_dict={"meta_name": "V99000A.json"}, + detector="det001", + meta_path=test_data_configs, + ) pos = ak.Array( { @@ -81,10 +89,7 @@ def test_eval_with_hpge(test_data_configs): "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, [0,0,0], None)", } - assert ak.all( - ak.num(hit.eval_expression(tab, func_eval, local_dict), axis=1) - == [3, 1, 3] - ) + assert ak.all(ak.num(hit.eval_expression(tab, func_eval, local_dict), axis=1) == [3, 1, 3]) def test_eval_with_hpge_and_phy_vol(test_data_configs): @@ -92,10 +97,17 @@ def test_eval_with_hpge_and_phy_vol(test_data_configs): gdml = pyg4ometry.gdml.Reader(gdml_path).getRegistry() - local_info = {"hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", - "phy_vol":"reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)" + local_info = { + "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", + "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)", } - local_dict = hit.get_locals(local_info,pars_dict={"meta_name":"V99000A.json","phy_vol_name":"det_phy_1"},detector="det001",meta_path=test_data_configs,reg=gdml) + local_dict = hit.get_locals( + local_info, + pars_dict={"meta_name": "V99000A.json", "phy_vol_name": "det_phy_1"}, + detector="det001", + meta_path=test_data_configs, + reg=gdml, + ) pos = ak.Array( { @@ -111,10 +123,7 @@ def test_eval_with_hpge_and_phy_vol(test_data_configs): "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), None)", } - assert ak.all( - ak.num(hit.eval_expression(tab, func_eval, local_dict), axis=1) - == [3, 1, 3] - ) + assert ak.all(ak.num(hit.eval_expression(tab, func_eval, local_dict), axis=1) == [3, 1, 3]) # test the full processing chain @@ -125,24 +134,41 @@ def test_reboost_input_file(tmp_path): evtid_1 = np.sort(rng.integers(int(1e5), size=(int(1e6)))) time_1 = rng.uniform(low=0, high=1, size=(int(1e6))) edep_1 = rng.uniform(low=0, high=1000, size=(int(1e6))) - pos_x_1 = rng.uniform(low=-50,high=50,size=(int(1e6))) - pos_y_1 = rng.uniform(low=-50,high=50,size=(int(1e6))) - pos_z_1 = rng.uniform(low=-50,high=50,size=(int(1e6))) - + pos_x_1 = rng.uniform(low=-50, high=50, size=(int(1e6))) + pos_y_1 = rng.uniform(low=-50, high=50, size=(int(1e6))) + pos_z_1 = rng.uniform(low=-50, high=50, size=(int(1e6))) # make it not divide by the buffer len evtid_2 = np.sort(rng.integers(int(1e5), size=(30040))) time_2 = rng.uniform(low=0, high=1, size=(30040)) edep_2 = rng.uniform(low=0, high=1000, size=(30040)) - pos_x_2 = rng.uniform(low=-50,high=50,size=(30040)) - pos_y_2 = rng.uniform(low=-50,high=50,size=(30040)) - pos_z_2 = rng.uniform(low=-50,high=50,size=(30040)) + pos_x_2 = rng.uniform(low=-50, high=50, size=(30040)) + pos_y_2 = rng.uniform(low=-50, high=50, size=(30040)) + pos_z_2 = rng.uniform(low=-50, high=50, size=(30040)) vertices_1 = ak.Array({"evtid": np.arange(int(1e5))}) vertices_2 = ak.Array({"evtid": np.arange(int(1e5))}) - arr_1 = ak.Array({"evtid": evtid_1, "time": time_1, "edep": edep_1, "xloc":pos_x_1,"yloc":pos_y_1,"zloc":pos_z_1}) - arr_2 = ak.Array({"evtid": evtid_2, "time": time_2, "edep": edep_2, "xloc":pos_x_2,"yloc":pos_y_2,"zloc":pos_z_2}) + arr_1 = ak.Array( + { + "evtid": evtid_1, + "time": time_1, + "edep": edep_1, + "xloc": pos_x_1, + "yloc": pos_y_1, + "zloc": pos_z_1, + } + ) + arr_2 = ak.Array( + { + "evtid": evtid_2, + "time": time_2, + "edep": edep_2, + "xloc": pos_x_2, + "yloc": pos_y_2, + "zloc": pos_z_2, + } + ) lh5.write(Table(vertices_1), "hit/vertices", tmp_path / "file1.lh5", wo_mode="of") lh5.write(Table(vertices_2), "hit/vertices", tmp_path / "file2.lh5", wo_mode="of") @@ -179,8 +205,9 @@ def test_build_hit(test_reboost_input_file): }, } - for output_file,input_file in zip(["out.lh5","out_rem.lh5","out_merge.lh5"], - ["file1.lh5","file2.lh5","file*.lh5"]): + for output_file, input_file in zip( + ["out.lh5", "out_rem.lh5", "out_merge.lh5"], ["file1.lh5", "file2.lh5", "file*.lh5"] + ): hit.build_hit( str(test_reboost_input_file / output_file), [str(test_reboost_input_file / input_file)], @@ -190,7 +217,7 @@ def test_build_hit(test_reboost_input_file): pars={}, buffer=100000, ) - + hit.build_hit( str(test_reboost_input_file / "out.lh5"), [str(test_reboost_input_file / "file*.lh5")], @@ -260,13 +287,18 @@ def test_build_hit_some_row(test_reboost_input_file): buffer=100000, ) - for n_ev,s_ev,out in zip([int(1e4),int(1e5-1e4),int(1e5),int(1e5)], - [0,int(1e4),0,1000],["out_some_rows.lh5","out_rest_rows.lh5","out_all_file_one.lh5","out_mix.lh5"]): - + for n_ev, s_ev, out in zip( + [int(1e4), int(1e5 - 1e4), int(1e5), int(1e5)], + [0, int(1e4), 0, 1000], + ["out_some_rows.lh5", "out_rest_rows.lh5", "out_all_file_one.lh5", "out_mix.lh5"], + ): # test read only some events hit.build_hit( str(test_reboost_input_file / out), - [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], + [ + str(test_reboost_input_file / "file1.lh5"), + str(test_reboost_input_file / "file2.lh5"), + ], n_evtid=n_ev, start_evtid=s_ev, in_field="hit", @@ -276,7 +308,6 @@ def test_build_hit_some_row(test_reboost_input_file): buffer=100000, ) - tab_some = lh5.read("hit/det001", str(test_reboost_input_file / "out_some_rows.lh5")).view_as( "ak" ) @@ -292,23 +323,19 @@ def test_build_hit_some_row(test_reboost_input_file): assert ak.all(ak.all(tab_merge.evtid == tab_1.evtid, axis=-1)) - -def test_build_hit_with_locals(test_reboost_input_file,test_data_configs): - - +def test_build_hit_with_locals(test_reboost_input_file, test_data_configs): proc_config = { "channels": [ "det001", ], - "outputs": ["t0", "evtid","distance_to_surface"], - + "outputs": ["t0", "evtid", "distance_to_surface"], "step_group": { "description": "group steps by time and evtid.", "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", }, - "locals":{ - "hpge":"reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", - "phy_vol":"reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)" + "locals": { + "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", + "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)", }, "operations": { "t0": { @@ -321,17 +348,17 @@ def test_build_hit_with_locals(test_reboost_input_file,test_data_configs): "mode": "eval", "expression": "ak.sum(hit.edep,axis=-1)", }, - "smear_energy_sum":{ + "smear_energy_sum": { "description": "summed energy after convolution with energy response.", "mode": "function", - "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" + "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)", }, - "distance_to_surface":{ - "description":"distance to the nplus surface", - "mode":"function", - "expression":"reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), None)" - } - } + "distance_to_surface": { + "description": "distance to the nplus surface", + "mode": "function", + "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), None)", + }, + }, } gdml_path = configs / pathlib.Path("geom.gdml") meta_path = test_data_configs @@ -343,9 +370,9 @@ def test_build_hit_with_locals(test_reboost_input_file,test_data_configs): in_field="hit", out_field="hit", proc_config=proc_config, - pars={"det001":{"reso":1,"meta_name":"V99000A.json","phy_vol_name":"det_phy_1"}}, + pars={"det001": {"reso": 1, "meta_name": "V99000A.json", "phy_vol_name": "det_phy_1"}}, buffer=100000, merge_input_files=False, - metadata_path = meta_path, - gdml =gdml_path - ) \ No newline at end of file + metadata_path=meta_path, + gdml=gdml_path, + ) diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py index 6f4a04c..5126277 100644 --- a/tests/test_hpge_utils.py +++ b/tests/test_hpge_utils.py @@ -14,6 +14,7 @@ from reboost.hpge.utils import ( _merge_arrays, + dict2tuple, get_file_list, get_files_to_read, get_global_evtid_range, @@ -22,7 +23,6 @@ get_num_simulated, get_phy_vol, load_dict, - dict2tuple ) configs = pathlib.Path(__file__).parent.resolve() / pathlib.Path("configs") From f07559448ec41c6cda0cc688ac0820d063486bfd Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 15 Nov 2024 15:34:55 +0100 Subject: [PATCH 49/81] style fixes --- src/reboost/hpge/hit.py | 14 +-- tests/test_hpge_distance_to_surface.py | 5 +- tests/test_hpge_hit.py | 143 +++++++++++++++---------- tests/test_hpge_utils.py | 2 +- 4 files changed, 98 insertions(+), 66 deletions(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 62e982a..c7f0de6 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -50,9 +50,9 @@ def step_group(data: Table, group_config: dict) -> Table: def get_locals( local_info: dict, pars_dict: dict | None, - detector: str|None=None, - meta_path: str|None=None, - reg: pyg4ometry.geant4.Registry|None =None, + detector: str | None = None, + meta_path: str | None = None, + reg: pyg4ometry.geant4.Registry | None = None, ) -> dict: """Compute any local variables needed for processing. @@ -60,7 +60,7 @@ def get_locals( ---------- local_info config file block of the local objects to compute. For example: - + ..code-block:: {"hpge": "reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)"} @@ -294,8 +294,10 @@ def build_hit( log.info(msg) # get local variables - local_info = proc_config.get("locals",{}) - local_dict = get_locals(local_info,pars_dict=pars.get(d,{}), meta_path=metadata_path, detector=d, reg=reg) + local_info = proc_config.get("locals", {}) + local_dict = get_locals( + local_info, pars_dict=pars.get(d, {}), meta_path=metadata_path, detector=d, reg=reg + ) is_first_chan = bool(ch_idx == 0) is_first_file = bool(file_idx == 0) diff --git a/tests/test_hpge_distance_to_surface.py b/tests/test_hpge_distance_to_surface.py index 3e77b86..1114903 100644 --- a/tests/test_hpge_distance_to_surface.py +++ b/tests/test_hpge_distance_to_surface.py @@ -5,6 +5,7 @@ from legendhpges import make_hpge from legendtestdata import LegendTestData from lgdo import types + from reboost.hpge.processors import distance_to_surface @@ -35,4 +36,6 @@ def test_distance_to_surface(test_data_configs): # check it can be written - assert isinstance(distance_to_surface(pos.xloc, pos.yloc, pos.zloc, gedet, dist, None),types.LGDO) \ No newline at end of file + assert isinstance( + distance_to_surface(pos.xloc, pos.yloc, pos.zloc, gedet, dist, None), types.LGDO + ) diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py index 6701ba5..f0b4e8e 100644 --- a/tests/test_hpge_hit.py +++ b/tests/test_hpge_hit.py @@ -6,13 +6,11 @@ import numpy as np import pyg4ometry import pytest -from legendhpges import make_hpge from legendhpges.base import HPGe from legendtestdata import LegendTestData from lgdo import Table, lh5 -from pyg4ometry import geant4 -from reboost.hpge import hit, utils +from reboost.hpge import hit configs = pathlib.Path(__file__).parent.resolve() / pathlib.Path("configs") @@ -23,13 +21,19 @@ def test_data_configs(): ldata.checkout("5f9b368") return ldata.get_path("legend/metadata/hardware/detectors/germanium/diodes") -def test_get_locals(test_data_configs): +def test_get_locals(test_data_configs): local_info = {"hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)"} - local_dict = hit.get_locals(local_info,pars_dict={"meta_name":"V99000A.json"},detector="det001",meta_path=test_data_configs) + local_dict = hit.get_locals( + local_info, + pars_dict={"meta_name": "V99000A.json"}, + detector="det001", + meta_path=test_data_configs, + ) + + assert isinstance(local_dict["hpge"], HPGe) - assert isinstance(local_dict["hpge"],HPGe) def test_eval(): in_arr = ak.Array( @@ -58,14 +62,18 @@ def test_eval(): } pars = {"reso": 2} # test get locals - local_dict = hit.get_locals({},pars_dict=pars) + local_dict = hit.get_locals({}, pars_dict=pars) assert np.size(hit.eval_expression(tab, func_eval, local_dict).view_as("np")) == 5 def test_eval_with_hpge(test_data_configs): - local_info = {"hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)"} - local_dict = hit.get_locals(local_info,pars_dict={"meta_name":"V99000A.json"},detector="det001",meta_path=test_data_configs) + local_dict = hit.get_locals( + local_info, + pars_dict={"meta_name": "V99000A.json"}, + detector="det001", + meta_path=test_data_configs, + ) pos = ak.Array( { @@ -81,10 +89,7 @@ def test_eval_with_hpge(test_data_configs): "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, [0,0,0], None)", } - assert ak.all( - ak.num(hit.eval_expression(tab, func_eval, local_dict), axis=1) - == [3, 1, 3] - ) + assert ak.all(ak.num(hit.eval_expression(tab, func_eval, local_dict), axis=1) == [3, 1, 3]) def test_eval_with_hpge_and_phy_vol(test_data_configs): @@ -92,10 +97,17 @@ def test_eval_with_hpge_and_phy_vol(test_data_configs): gdml = pyg4ometry.gdml.Reader(gdml_path).getRegistry() - local_info = {"hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", - "phy_vol":"reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)" + local_info = { + "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", + "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)", } - local_dict = hit.get_locals(local_info,pars_dict={"meta_name":"V99000A.json","phy_vol_name":"det_phy_1"},detector="det001",meta_path=test_data_configs,reg=gdml) + local_dict = hit.get_locals( + local_info, + pars_dict={"meta_name": "V99000A.json", "phy_vol_name": "det_phy_1"}, + detector="det001", + meta_path=test_data_configs, + reg=gdml, + ) pos = ak.Array( { @@ -111,10 +123,7 @@ def test_eval_with_hpge_and_phy_vol(test_data_configs): "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), None)", } - assert ak.all( - ak.num(hit.eval_expression(tab, func_eval, local_dict), axis=1) - == [3, 1, 3] - ) + assert ak.all(ak.num(hit.eval_expression(tab, func_eval, local_dict), axis=1) == [3, 1, 3]) # test the full processing chain @@ -125,24 +134,41 @@ def test_reboost_input_file(tmp_path): evtid_1 = np.sort(rng.integers(int(1e5), size=(int(1e6)))) time_1 = rng.uniform(low=0, high=1, size=(int(1e6))) edep_1 = rng.uniform(low=0, high=1000, size=(int(1e6))) - pos_x_1 = rng.uniform(low=-50,high=50,size=(int(1e6))) - pos_y_1 = rng.uniform(low=-50,high=50,size=(int(1e6))) - pos_z_1 = rng.uniform(low=-50,high=50,size=(int(1e6))) - + pos_x_1 = rng.uniform(low=-50, high=50, size=(int(1e6))) + pos_y_1 = rng.uniform(low=-50, high=50, size=(int(1e6))) + pos_z_1 = rng.uniform(low=-50, high=50, size=(int(1e6))) # make it not divide by the buffer len evtid_2 = np.sort(rng.integers(int(1e5), size=(30040))) time_2 = rng.uniform(low=0, high=1, size=(30040)) edep_2 = rng.uniform(low=0, high=1000, size=(30040)) - pos_x_2 = rng.uniform(low=-50,high=50,size=(30040)) - pos_y_2 = rng.uniform(low=-50,high=50,size=(30040)) - pos_z_2 = rng.uniform(low=-50,high=50,size=(30040)) + pos_x_2 = rng.uniform(low=-50, high=50, size=(30040)) + pos_y_2 = rng.uniform(low=-50, high=50, size=(30040)) + pos_z_2 = rng.uniform(low=-50, high=50, size=(30040)) vertices_1 = ak.Array({"evtid": np.arange(int(1e5))}) vertices_2 = ak.Array({"evtid": np.arange(int(1e5))}) - arr_1 = ak.Array({"evtid": evtid_1, "time": time_1, "edep": edep_1, "xloc":pos_x_1,"yloc":pos_y_1,"zloc":pos_z_1}) - arr_2 = ak.Array({"evtid": evtid_2, "time": time_2, "edep": edep_2, "xloc":pos_x_2,"yloc":pos_y_2,"zloc":pos_z_2}) + arr_1 = ak.Array( + { + "evtid": evtid_1, + "time": time_1, + "edep": edep_1, + "xloc": pos_x_1, + "yloc": pos_y_1, + "zloc": pos_z_1, + } + ) + arr_2 = ak.Array( + { + "evtid": evtid_2, + "time": time_2, + "edep": edep_2, + "xloc": pos_x_2, + "yloc": pos_y_2, + "zloc": pos_z_2, + } + ) lh5.write(Table(vertices_1), "hit/vertices", tmp_path / "file1.lh5", wo_mode="of") lh5.write(Table(vertices_2), "hit/vertices", tmp_path / "file2.lh5", wo_mode="of") @@ -179,8 +205,9 @@ def test_build_hit(test_reboost_input_file): }, } - for output_file,input_file in zip(["out.lh5","out_rem.lh5","out_merge.lh5"], - ["file1.lh5","file2.lh5","file*.lh5"]): + for output_file, input_file in zip( + ["out.lh5", "out_rem.lh5", "out_merge.lh5"], ["file1.lh5", "file2.lh5", "file*.lh5"] + ): hit.build_hit( str(test_reboost_input_file / output_file), [str(test_reboost_input_file / input_file)], @@ -190,7 +217,7 @@ def test_build_hit(test_reboost_input_file): pars={}, buffer=100000, ) - + hit.build_hit( str(test_reboost_input_file / "out.lh5"), [str(test_reboost_input_file / "file*.lh5")], @@ -260,13 +287,18 @@ def test_build_hit_some_row(test_reboost_input_file): buffer=100000, ) - for n_ev,s_ev,out in zip([int(1e4),int(1e5-1e4),int(1e5),int(1e5)], - [0,int(1e4),0,1000],["out_some_rows.lh5","out_rest_rows.lh5","out_all_file_one.lh5","out_mix.lh5"]): - + for n_ev, s_ev, out in zip( + [int(1e4), int(1e5 - 1e4), int(1e5), int(1e5)], + [0, int(1e4), 0, 1000], + ["out_some_rows.lh5", "out_rest_rows.lh5", "out_all_file_one.lh5", "out_mix.lh5"], + ): # test read only some events hit.build_hit( str(test_reboost_input_file / out), - [str(test_reboost_input_file / "file1.lh5"), str(test_reboost_input_file / "file2.lh5")], + [ + str(test_reboost_input_file / "file1.lh5"), + str(test_reboost_input_file / "file2.lh5"), + ], n_evtid=n_ev, start_evtid=s_ev, in_field="hit", @@ -276,7 +308,6 @@ def test_build_hit_some_row(test_reboost_input_file): buffer=100000, ) - tab_some = lh5.read("hit/det001", str(test_reboost_input_file / "out_some_rows.lh5")).view_as( "ak" ) @@ -292,23 +323,19 @@ def test_build_hit_some_row(test_reboost_input_file): assert ak.all(ak.all(tab_merge.evtid == tab_1.evtid, axis=-1)) - -def test_build_hit_with_locals(test_reboost_input_file,test_data_configs): - - +def test_build_hit_with_locals(test_reboost_input_file, test_data_configs): proc_config = { "channels": [ "det001", ], - "outputs": ["t0", "evtid","distance_to_surface"], - + "outputs": ["t0", "evtid", "distance_to_surface"], "step_group": { "description": "group steps by time and evtid.", "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", }, - "locals":{ - "hpge":"reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", - "phy_vol":"reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)" + "locals": { + "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", + "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)", }, "operations": { "t0": { @@ -321,17 +348,17 @@ def test_build_hit_with_locals(test_reboost_input_file,test_data_configs): "mode": "eval", "expression": "ak.sum(hit.edep,axis=-1)", }, - "smear_energy_sum":{ + "smear_energy_sum": { "description": "summed energy after convolution with energy response.", "mode": "function", - "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" + "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)", }, - "distance_to_surface":{ - "description":"distance to the nplus surface", - "mode":"function", - "expression":"reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), None)" - } - } + "distance_to_surface": { + "description": "distance to the nplus surface", + "mode": "function", + "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), None)", + }, + }, } gdml_path = configs / pathlib.Path("geom.gdml") meta_path = test_data_configs @@ -343,9 +370,9 @@ def test_build_hit_with_locals(test_reboost_input_file,test_data_configs): in_field="hit", out_field="hit", proc_config=proc_config, - pars={"det001":{"reso":1,"meta_name":"V99000A.json","phy_vol_name":"det_phy_1"}}, + pars={"det001": {"reso": 1, "meta_name": "V99000A.json", "phy_vol_name": "det_phy_1"}}, buffer=100000, merge_input_files=False, - metadata_path = meta_path, - gdml =gdml_path - ) \ No newline at end of file + metadata_path=meta_path, + gdml=gdml_path, + ) diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py index 6f4a04c..5126277 100644 --- a/tests/test_hpge_utils.py +++ b/tests/test_hpge_utils.py @@ -14,6 +14,7 @@ from reboost.hpge.utils import ( _merge_arrays, + dict2tuple, get_file_list, get_files_to_read, get_global_evtid_range, @@ -22,7 +23,6 @@ get_num_simulated, get_phy_vol, load_dict, - dict2tuple ) configs = pathlib.Path(__file__).parent.resolve() / pathlib.Path("configs") From cd16454a4386c9cdb768665883c7b8f349c6ce51 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 15 Nov 2024 16:33:41 +0100 Subject: [PATCH 50/81] ak -> np to fix CI failures --- docs/source/manual/hpge.rst | 63 ++++++++++++++++++++++++++++++------- src/reboost/hpge/utils.py | 4 +-- 2 files changed, 54 insertions(+), 13 deletions(-) diff --git a/docs/source/manual/hpge.rst b/docs/source/manual/hpge.rst index 207f709..3925a62 100644 --- a/docs/source/manual/hpge.rst +++ b/docs/source/manual/hpge.rst @@ -68,7 +68,7 @@ However, this format is not directly comparable to experimental data. Data tiers ---------- -The processing is defined in terms of several *tiers*: +The processing is defined in terms of several *tiers*, mirroring the logic of the `pygama `_ data processing software used for LEGEND. - **stp** or "step" the raw *remage* outputs corresponding to Geant4 steps, - **hit** the data from each channel independently after grouping in discrete physical interactions in the detector. @@ -79,6 +79,8 @@ The processing is divided into two steps :func:`build_hit` ``build_evt`` [WIP]. Hit tier processing ------------------- +The hit tier converts the raw remage file based on Geant4 steps to a file corresponding to the physical interactions in the detectors. +Only steps corresponding to individual detectors are performed in this step. The processing is based on a YAML or JSON configuration file. For example: .. code-block:: json @@ -127,7 +129,7 @@ It is necessary to provide several sub-dictionaries: - **channels**: list of HPGe channels to process. - **outputs**: list of fields for the output file. -- **locals**: get objects used by the processors (passed as ``locals`` to ``LGDO.Table.eval``) +- **locals**: get objects used by the processors (passed as ``locals`` to ``LGDO.Table.eval``), more details below. - **step_group**: this should describe the function that groups the Geant4 steps into physical *hits*. - **operations**: further computations / manipulations to apply. @@ -169,7 +171,7 @@ Next a set of operations can be specified, these can perform any operation that Finally the outputs field specifies the columns of the Table to include in the output table. lh5 i/o operations ------------------- +^^^^^^^^^^^^^^^^^^ :func:`build_hit` contains several options to handle i/o of lh5 files. @@ -183,7 +185,7 @@ Finally, it is sometimes desirable to process a subset of the simulated events, keywords arguments control the first simulation index to process and the number of events. Note that the indices refer to the *global* evtid when multiple files are used. parameters and other *local* variables --------------------------------------- +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Often it is necessary to include processors that depend on parameters (which) may vary by detector. To enable this the user can specify a dictionary of parameters with the *pars* keyword, this should contain a sub-dictionary per detector for example: @@ -209,10 +211,10 @@ From the GDML file the ``pyg4ometry.geant4.Registry`` is extracted. To allow the flexibility to write processors depending on arbitrary (more complicated python objects), it is possible to add the *locals* dictionary to the config file. The code will then evaluate the supplied expression for each sub-dictionary. These expressions can depend on: -- the *remage* detector name: "detector", -- the path to the metadata: "meta", -- the geant4 registry: "reg", -- the parameters for this detector: "pars". +- **detector**: the *remage* detector name, +- **meta**: the path to the metadata, +- **reg**: the geant4 registry, +- **pars**: the parameters for this detector. These expressions are then evaluated (once per detector) and added to the *locals* dictionary of ``Table.eval``, so can be references in the expressions. @@ -231,8 +233,47 @@ Possible intended use case of this functionality are: - extracting the kernel of a machine learning model. - any more complicated (non-JSON serialisable objects). -adding new processors ---------------------- +Adding new processors +^^^^^^^^^^^^^^^^^^^^^ + +Any python function can be a ``reboost.hit`` processor. The only requirement is that it should return a: + +- :class:`VectorOfVectors`, +- :class:`Array`` or +- :class:`ArrayOfEqualSizedArrays` -Any python function can be a ``reboost.hit`` processor. The only requirement is that it should return a :class:`VectorOfVectors`, :class:`Array`` or :class:`ArrayOfEqualSizedArrays` with the same length as the hit table. This means processors can act on subarrays (``axis=-1`` in awkward syntax) but should not combine multiple rows of the hit table. + +Event tier processing (work in progress) +---------------------------------------- + +The event tier combines the information from various detector systems. Including in future the optical detector channels. This step is thus only necessary for experiments with +many output channels. + +The processing is again based on a YAML or JSON configuration file. For example: + +.. code-block:: json + + { + + "channels":{ + "geds_usable":[ + "det000", + "det001", + "det002" + ], + "geds_ac":[ + "det003" + ] + }, + "outputs": [ + "energy", + "detector", + "is_good_hit", + "multiplicity" + ], + "event_group": { + "description": "group hits by time and evtid.", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" + } + } diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 087a227..1750b3b 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -204,8 +204,8 @@ def get_include_chunk( boolean flag of whether to include in the chunk. """ - low = np.min(global_evtid) - high = np.max(global_evtid) + low = np.min(np.array(global_evtid)) + high = np.max(np.array(global_evtid)) return (high >= start_glob_evtid) & (low <= end_glob_evtid) From a28d1a4f6ff05f2a131657ede7f1091ae0c710c5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 15:33:57 +0000 Subject: [PATCH 51/81] style: pre-commit fixes --- docs/source/manual/hpge.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/manual/hpge.rst b/docs/source/manual/hpge.rst index 3925a62..df91b98 100644 --- a/docs/source/manual/hpge.rst +++ b/docs/source/manual/hpge.rst @@ -255,7 +255,7 @@ The processing is again based on a YAML or JSON configuration file. For example: .. code-block:: json { - + "channels":{ "geds_usable":[ "det000", From b9bc3a4fb66fe71f74a800d2af65497efb316531 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Sat, 16 Nov 2024 23:41:48 +0100 Subject: [PATCH 52/81] [docs] adding a basic tutorial --- docs/source/conf.py | 3 + docs/source/index.rst | 5 + docs/source/manual/hpge.rst | 2 +- docs/source/notebooks/images/output_20_1.png | Bin 0 -> 19028 bytes docs/source/notebooks/images/output_24_0.png | Bin 0 -> 18905 bytes docs/source/notebooks/images/output_27_1.png | Bin 0 -> 93413 bytes docs/source/notebooks/images/output_28_1.png | Bin 0 -> 76691 bytes docs/source/notebooks/images/output_31_0.png | Bin 0 -> 17749 bytes docs/source/notebooks/images/output_34_0.png | Bin 0 -> 32931 bytes docs/source/notebooks/images/output_35_0.png | Bin 0 -> 33451 bytes docs/source/notebooks/images/output_37_0.png | Bin 0 -> 20548 bytes .../notebooks/reboost_hpge_tutorial.rst | 680 ++++++++++++++++++ docs/source/tutorial.rst | 9 + src/reboost/hpge/hit.py | 98 ++- src/reboost/hpge/processors.py | 11 +- src/reboost/hpge/utils.py | 36 +- 16 files changed, 818 insertions(+), 26 deletions(-) create mode 100644 docs/source/notebooks/images/output_20_1.png create mode 100644 docs/source/notebooks/images/output_24_0.png create mode 100644 docs/source/notebooks/images/output_27_1.png create mode 100644 docs/source/notebooks/images/output_28_1.png create mode 100644 docs/source/notebooks/images/output_31_0.png create mode 100644 docs/source/notebooks/images/output_34_0.png create mode 100644 docs/source/notebooks/images/output_35_0.png create mode 100644 docs/source/notebooks/images/output_37_0.png create mode 100644 docs/source/notebooks/reboost_hpge_tutorial.rst create mode 100644 docs/source/tutorial.rst diff --git a/docs/source/conf.py b/docs/source/conf.py index e8e0ac8..f3fbd16 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -19,9 +19,12 @@ "sphinx.ext.napoleon", "sphinx.ext.intersphinx", "sphinx_copybutton", + "nbsphinx", + "IPython.sphinxext.ipython_console_highlighting", "myst_parser", ] + source_suffix = { ".rst": "restructuredtext", ".md": "markdown", diff --git a/docs/source/index.rst b/docs/source/index.rst index 5981c0f..9965e25 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -33,6 +33,11 @@ Next steps User Manual +.. toctree:: + :maxdepth: 1 + + tutorial + .. toctree:: :maxdepth: 1 diff --git a/docs/source/manual/hpge.rst b/docs/source/manual/hpge.rst index 3925a62..df91b98 100644 --- a/docs/source/manual/hpge.rst +++ b/docs/source/manual/hpge.rst @@ -255,7 +255,7 @@ The processing is again based on a YAML or JSON configuration file. For example: .. code-block:: json { - + "channels":{ "geds_usable":[ "det000", diff --git a/docs/source/notebooks/images/output_20_1.png b/docs/source/notebooks/images/output_20_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c30246d4469c99f4f0bbb2d416dab9d15991b57 GIT binary patch literal 19028 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 literal 0 HcmV?d00001 diff --git a/docs/source/notebooks/images/output_24_0.png b/docs/source/notebooks/images/output_24_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8b4207aa7e87cf56078ca111af6befe188e31e76 GIT binary patch literal 18905 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 V=I`#w2`2qCc5Clq?l|`I{{aq66o>!- literal 0 HcmV?d00001 diff --git a/docs/source/notebooks/images/output_27_1.png b/docs/source/notebooks/images/output_27_1.png new file mode 100644 index 0000000000000000000000000000000000000000..32a072f83cf6a41e27655cc60492ea252d4ecf63 GIT binary patch literal 93413 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%0A6N@}x9T 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
{edep: [0.0826, 0.00863, 0.0171, 0.0175, 0.224, ..., 34.1, 28.9, 34.1, 32.3],
+     time: [1.32e+15, 1.32e+15, 1.32e+15, ..., 1.32e+15, 1.32e+15, 1.32e+15],
+     t0: 1.32e+15,
+     hit_evtid: 9.49e+03,
+     hit_global_evtid: 9.49e+03,
+     distance_to_nplus_surface_mm: [1e-11, 0.654, 0.654, ..., 0.617, 0.614, 0.614],
+     activeness: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+     rpos_loc: [21, 36.3, 36.3, 36.3, 36.3, ..., 36.3, 36.4, 36.4, 36.4, 36.4],
+     zpos_loc: [29.5, 21.1, 21.1, 21.1, 21.1, ..., 21.1, 21.1, 21.1, 21.1, 21.1],
+     energy_sum: 203,
+     energy_sum_deadlayer: 0,
+     energy_sum_smeared: -0.44}
+    -------------------------------------------------------------------------------
+    type: {
+        edep: var * float64,
+        time: var * float64,
+        t0: float64,
+        hit_evtid: float64,
+        hit_global_evtid: float64,
+        distance_to_nplus_surface_mm: var * float64,
+        activeness: var * int64,
+        rpos_loc: var * float64,
+        zpos_loc: var * float64,
+        energy_sum: float64,
+        energy_sum_deadlayer: float64,
+        energy_sum_smeared: float64
+    }
+ + + +Part 4) Steps in a standard processing chain +-------------------------------------------- + +The next part of the tutorial gives more details on each step of the +processing chain. + +4.1) Windowing +~~~~~~~~~~~~~~ + +We can compare the decay index (“evtid” in the “stp” file) to the index +of the “hit”, the row of the hit table. We see that only some decays +correspond to “hits” in the detector, as we expect. We also see that a +single decay does not often produce multiple hits. This is also expected +since the probability of detection is fairly low. + +.. code:: ipython3 + + plt.scatter(np.sort(data_det001.hit_global_evtid),np.arange(len(data_det001)),marker=".",alpha=1) + plt.xlabel("Decay index (evtid)") + plt.ylabel("Hit Index") + plt.grid() + plt.xlim(0,1000) + plt.ylim(0,100) + + + + +.. parsed-literal:: + + (0.0, 100.0) + + + + +.. image:: images/output_20_1.png + + +However, we can use some array manipulation to extract decay index with +multiple hits, by plotting the times we see the effect of the windowing. + +.. code:: ipython3 + + def plot_times(times:ak.Array,xrange=None,sub_zero=False,**kwargs): + fig,ax = plt.subplots() + for idx,_time in enumerate(times): + if (sub_zero): + _time=_time-ak.min(_time) + h=hist.new.Reg(100,(ak.min(times)/1e9),(ak.max(times)/1e9)+1, name="Time since event start [s]").Double() + h.fill(_time/1e9) + h.plot(**kwargs,label=f"Hit {idx}") + ax.legend() + ax.set_yscale("log") + if xrange is not None: + ax.set_xlim(*xrange) + + +.. code:: ipython3 + + unique,counts = np.unique(data_det001.hit_global_evtid,return_counts=True) + +.. code:: ipython3 + + plot_times(data_det001[data_det001.hit_global_evtid==unique[counts>1][1]].time,histtype="step",yerr=False) + + + + +.. image:: images/output_24_0.png + + +4.2) Distance to surface and dead layer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +One of the important step in the post-processing of HPGe detector +simulations is the detector activeness mapping. Energy deposited close +to the surface of the Germanium detector will result in incomplete +charge collection and a degraded signal. To account for this we added a +processor to compute the distance to the detector surface (based on +``legendhpges.base.HPGe.distance_to_surface()``) + +For the steps in the detector we extracted in the processing chain the +local r and z coordinates and we can plot maps of the distance to the +detector surface and the activeness for each step. We select only events +within 5 mm of the surface for the first plots. We can see that the +processor works as expected. + +.. code:: ipython3 + + def plot_map(field,scale="BuPu",clab="Distance [mm]"): + fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True) + n=100000 + for idx, (data,config) in enumerate(zip([data_det001,data_det002],["cfg/metadata/BEGe.json","cfg/metadata/Coax.json"])): + + reg=pg4.geant4.Registry() + hpge = legendhpges.make_hpge(config,registry=reg) + + legendhpges.draw.plot_profile(hpge, split_by_type=True,axes=axs[idx]) + r = np.random.choice([-1,1],p=[0.5,0.5],size=len(ak.flatten(data.rpos_loc)))*ak.flatten(data.rpos_loc) + z = ak.flatten(data.zpos_loc) + c=ak.flatten(data[field]) + cut = c<5 + + s=axs[idx].scatter(r[cut][0:n],z[cut][0:n], c= c[cut][0:n],marker=".", label="gen. points",cmap=scale) + #axs[idx].axis("equal") + + if idx == 0: + axs[idx].set_ylabel("Height [mm]") + c=plt.colorbar(s) + c.set_label(clab) + + axs[idx].set_xlabel("Radius [mm]") + + +.. code:: ipython3 + + plot_map("distance_to_nplus_surface_mm") + + +.. image:: images/output_27_1.png + + +.. code:: ipython3 + + plot_map("activeness",clab="Activeness",scale="viridis") + + +.. image:: images/output_28_1.png + + +We can also plot a histogram of the distance to the surface. + +.. code:: ipython3 + + def plot_distances(axes,distances,xrange=None,label=" ",**kwargs): + + h=hist.new.Reg(100,*xrange, name="Distance to n+ surface [mm]").Double() + h.fill(distances) + h.plot(**kwargs,label=label) + ax.legend() + ax.set_yscale("log") + if xrange is not None: + ax.set_xlim(*xrange) + + +.. code:: ipython3 + + fig,ax = plt.subplots() + plot_distances(ax,ak.flatten(data_det001.distance_to_nplus_surface_mm),xrange=(0,35),label="BEGe",histtype="step",yerr=False) + plot_distances(ax,ak.flatten(data_det002.distance_to_nplus_surface_mm),xrange=(0,35),label="Coax",histtype="step",yerr=False) + + + + +.. image:: images/output_31_0.png + + +4.3) Summed energies +~~~~~~~~~~~~~~~~~~~~ + +Our processing chain also sums the energies of the hits, both before and +after weighting by the activeness. + +.. code:: ipython3 + + def plot_energy(axes,energy,bins=400,xrange=None,label=" ",log_y=True,**kwargs): + + h=hist.new.Reg(bins,*xrange, name="energy [keV]").Double() + h.fill(energy) + h.plot(**kwargs,label=label) + axes.legend() + if (log_y): + axes.set_yscale("log") + if xrange is not None: + axes.set_xlim(*xrange) + +.. code:: ipython3 + + fig, ax = plt.subplots() + ax.set_title("BEGe energy spectrum") + plot_energy(ax,data_det001.energy_sum,yerr=False,label="True energy",xrange=(0,4000)) + plot_energy(ax,data_det001.energy_sum_deadlayer,yerr=False,label="Energy after dead layer",xrange=(0,4000)) + + + +.. image:: images/output_34_0.png + + +.. code:: ipython3 + + fig, ax = plt.subplots() + ax.set_title("COAX energy spectrum") + plot_energy(ax,data_det002.energy_sum,yerr=False,label="True energy",xrange=(0,4000)) + plot_energy(ax,data_det002.energy_sum_deadlayer,yerr=False,label="Energy after dead layer",xrange=(0,4000)) + + + +.. image:: images/output_35_0.png + + +4.4) Smearing +~~~~~~~~~~~~~ + +The final step in the processing chain smeared the energies by the +energy resolution. This represents a general class of processors based +on ‘’heuristic’’ models. Other similar processors could be implemented +in a similar way. It would also be simple to use insted an energy +dependent resolution curve. To see the effect we have to zoom into the +2615 keV peak. + +.. code:: ipython3 + + fig, axs = plt.subplots() + plot_energy(axs,data_det001.energy_sum_smeared,yerr=False,label="BEGe",xrange=(2600,2630),log_y=False,bins=150,density=True) + plot_energy(axs,data_det002.energy_sum_smeared,yerr=False,label="COAX",xrange=(2600,2630),log_y=False,bins=150,density=True) + + + +.. image:: images/output_37_0.png + + +We see clearly the worse energy resolution for the COAX detector. > **To +Do**: add a gaussian fit of this. + +Part 5) Adding a new processor +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The next part of the tutorial describes how to add a new processor to +the chain. We use as an example spatial *clustering* of steps. This will +be added later. + diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst new file mode 100644 index 0000000..cc078dd --- /dev/null +++ b/docs/source/tutorial.rst @@ -0,0 +1,9 @@ +Basic Tutorial +============== + + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + notebooks/reboost_hpge_tutorial \ No newline at end of file diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index c7f0de6..7956fe2 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -1,12 +1,14 @@ from __future__ import annotations import logging +import time import awkward as ak import numpy as np import pyg4ometry from lgdo import Array, ArrayOfEqualSizedArrays, Table, VectorOfVectors, lh5 from lgdo.lh5 import LH5Iterator +from tqdm import tqdm from . import utils @@ -174,6 +176,7 @@ def build_hit( gdml: str | None = None, metadata_path: str | None = None, merge_input_files: bool = True, + has_global_evtid: bool = False, ) -> None: """ Read incrementally the files compute something and then write output @@ -267,6 +270,8 @@ def build_hit( path to the folder with the metadata (i.e. the `hardware.detectors.germanium.diodes` folder of `legend-metadata`) merge_input_files boolean flag to merge all input files into a single output. + has_global_evtid + boolean flag to indicate the evtid are already global Note ---- @@ -274,8 +279,21 @@ def build_hit( - It would be better to have a cleaner way to supply metadata and detector maps. """ + time_dict = { + "setup": 0, + "read": 0, + "write": 0, + "locals": 0, + "step_group": 0, + "proc": {}, + } + + time_start = time.time() + # get the gdml file - reg = pyg4ometry.gdml.Reader(gdml).getRegistry() if gdml is not None else None + + with utils.debug_logging(logging.CRITICAL): + reg = pyg4ometry.gdml.Reader(gdml).getRegistry() if gdml is not None else None # get info on the files to read in a nice named tuple file_info = utils.get_selected_files( @@ -285,30 +303,46 @@ def build_hit( start_evtid=start_evtid, ) + time_end = time.time() + + time_dict["setup"] += time_end - time_start + + # initialise timing object + time_start = time.time() + time_end = time.time() + # loop over input files - for first_evtid, file_idx, file_in in zip( - file_info.file_start_global_evtids, file_info.file_indices, file_info.file_list + for first_evtid, file_idx, file_in in tqdm( + zip(file_info.file_start_global_evtids, file_info.file_indices, file_info.file_list) ): for ch_idx, d in enumerate(proc_config["channels"]): msg = f"...running hit tier for {d}" - log.info(msg) + log.debug(msg) # get local variables + time_start = time.time() + local_info = proc_config.get("locals", {}) local_dict = get_locals( local_info, pars_dict=pars.get(d, {}), meta_path=metadata_path, detector=d, reg=reg ) + time_end = time.time() + + time_dict["locals"] += time_end - time_start + is_first_chan = bool(ch_idx == 0) is_first_file = bool(file_idx == 0) # flag to overwrite input file - delete_input = (is_first_chan & merge_input_files is False) | ( + delete_input = (is_first_chan & (merge_input_files is False)) | ( is_first_chan & is_first_file ) - msg = f"...begin processing with {file_in} to {file_out}" - log.info(msg) + msg = ( + f"...begin processing with {file_in} to {file_out} and delete input {delete_input}" + ) + log.debug(msg) entries = LH5Iterator( file_in, f"{in_field}/{d}", buffer_len=buffer @@ -340,9 +374,15 @@ def build_hit( ) # add global evtid - obj = ak.with_field(obj, first_evtid + obj.evtid, "global_evtid") + if has_global_evtid is False: + obj = ak.with_field(obj, first_evtid + obj.evtid, "global_evtid") + else: + obj = ak.with_field(obj, obj.evtid, "global_evtid") + + time_end = time.time() + time_dict["read"] += time_end - time_start - # check if the chunk can be skipped + # check if the chunk can be skipped, does lack of sorting break this? if not utils.get_include_chunk( obj.global_evtid, @@ -361,18 +401,32 @@ def build_hit( data = Table(obj) # group steps into hits + time_start = time.time() grouped = step_group(data, proc_config["step_group"]) + time_end = time.time() + + time_dict["step_group"] += time_end - time_start # processors for name, info in proc_config["operations"].items(): - msg = f"adding column {name}" + msg = f"... adding column {name}" log.debug(msg) + time_start = time.time() + col = eval_expression(grouped, info, local_dict=local_dict) grouped.add_field(name, col) + time_end = time.time() + + if name in time_dict["proc"]: + time_dict["proc"][name] += time_end - time_start + else: + time_dict["proc"][name] = 0 + # remove unwanted columns - log.debug("removing unwanted columns") + log.debug("... removing unwanted columns") + time_start = time.time() existing_cols = list(grouped.keys()) for col in existing_cols: @@ -380,8 +434,6 @@ def build_hit( grouped.remove_column(col, delete=True) # write lh5 file - msg = f"...finished processing and save file with wo_mode {mode}" - log.debug(msg) file_out_tmp = ( f"{file_out.split('.')[0]}_{file_idx}.lh5" @@ -389,3 +441,23 @@ def build_hit( else file_out ) lh5.write(grouped, f"{out_field}/{d}", file_out_tmp, wo_mode=mode) + time_end = time.time() + + time_dict["write"] += time_end - time_start + + # start timing read + time_start = time.time() + + # print timing info + + for step, time_val in time_dict.items(): + if isinstance(time_val, dict): + msg = "Time for processors:" + log.info(msg) + + for name, t in time_val.items(): + msg = f" {name} elapsed time: {t:.1f} s" + log.info(msg) + else: + msg = f"{step} elapsed time: {time_val:.1f} s" + log.info(msg) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index f0c9e1d..fca94b4 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -147,6 +147,7 @@ def distance_to_surface( hpge: legendhpges.base.HPGe, det_pos: ArrayLike, surface_type: str | None = None, + unit: str = "mm", ) -> Array: """Computes the distance from each step to the detector surface. @@ -164,6 +165,8 @@ def distance_to_surface( position of the detector origin, must be a 3 component array corresponding to `(x,y,z)`. surface_type string of which surface to use, can be `nplus`, `pplus` `passive` or None (in which case the distance to any surface is calculated). + unit + unit for the hit tier positions table. Returns ------- @@ -174,12 +177,13 @@ def distance_to_surface( `positions_x/positions_y/positions_z` must all have the same shape. """ + factor = np.array([1, 100, 1000])[unit == np.array(["mm", "cm", "m"])][0] # compute local positions pos = [] sizes = [] for idx, pos_tmp in enumerate([positions_x, positions_y, positions_z]): - local_pos_tmp = ak.Array(pos_tmp) - det_pos[idx] + local_pos_tmp = ak.Array(pos_tmp) * factor - det_pos[idx] local_pos_flat_tmp = ak.flatten(local_pos_tmp).to_numpy() pos.append(local_pos_flat_tmp) sizes.append(ak.num(local_pos_tmp, axis=1)) @@ -193,7 +197,10 @@ def distance_to_surface( local_positions = np.vstack(pos).T # get indices - surface_indices = np.where(hpge.surfaces == surface_type) if surface_type is not None else None + + surface_indices = ( + np.where(np.array(hpge.surfaces) == surface_type) if surface_type is not None else None + ) # distance calc itself distances = hpge.distance_to_surface(local_positions, surface_indices=surface_indices) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 1750b3b..414fad0 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -6,6 +6,7 @@ import logging import re from collections import namedtuple +from contextlib import contextmanager from pathlib import Path from typing import NamedTuple @@ -226,12 +227,13 @@ def get_hpge(meta_path: str | None, pars: NamedTuple, detector: str) -> legendhp hpge the `legendhpges` object for the detector. """ - reg = pyg4ometry.geant4.Registry() - if meta_path is not None: - meta_name = pars.meta_name if ("meta_name" in pars._fields) else f"{detector}.json" - meta_dict = Path(meta_path) / Path(meta_name) - return legendhpges.make_hpge(meta_dict, registry=reg) - return None + with debug_logging(logging.CRITICAL): + reg = pyg4ometry.geant4.Registry() + if meta_path is not None: + meta_name = pars.meta_name if ("meta_name" in pars._fields) else f"{detector}.json" + meta_dict = Path(meta_path) / Path(meta_name) + return legendhpges.make_hpge(meta_dict, registry=reg) + return None def get_phy_vol( @@ -253,10 +255,24 @@ def get_phy_vol( phy_vol the `pyg4ometry.geant4.PhysicalVolume` object for the detector """ - if reg is not None: - phy_name = pars.phy_vol_name if ("phy_vol_name" in pars._fields) else f"{detector}" - return reg.physicalVolumeDict[phy_name] - return None + + with debug_logging(logging.CRITICAL): + if reg is not None: + phy_name = pars.phy_vol_name if ("phy_vol_name" in pars._fields) else f"{detector}" + return reg.physicalVolumeDict[phy_name] + + return None + + +@contextmanager +def debug_logging(level): + logger = logging.getLogger("root") + old_level = logger.getEffectiveLevel() + logger.setLevel(level) + try: + yield + finally: + logger.setLevel(old_level) def dict2tuple(dictionary: dict) -> namedtuple: From 50017cc3baf93a04aff165d23f81044fba26871b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 16 Nov 2024 22:42:04 +0000 Subject: [PATCH 53/81] style: pre-commit fixes --- .../notebooks/reboost_hpge_tutorial.rst | 231 +++++++++--------- docs/source/tutorial.rst | 2 +- 2 files changed, 116 insertions(+), 117 deletions(-) diff --git a/docs/source/notebooks/reboost_hpge_tutorial.rst b/docs/source/notebooks/reboost_hpge_tutorial.rst index 8ca1605..23d44ea 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial.rst +++ b/docs/source/notebooks/reboost_hpge_tutorial.rst @@ -13,13 +13,13 @@ tutorial directory structure to organise the outputs and config inputs. - ├── cfg - │   └── metadata - ├── output - │   - ├── stp - │   - └── hit + ├── cfg + │   └── metadata + ├── output + │   + ├── stp + │   + └── hit └── reboost_hpge_tutorial.ipynb .. @@ -83,43 +83,43 @@ We can use ``lh5.show()`` to check the output files. .. code:: text / - └── stp · struct{det001,det002,det003,vertices} - ├── det001 · table{evtid,particle,edep,time,xloc,yloc,zloc} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── xloc · array<1>{real} - │ ├── yloc · array<1>{real} - │ └── zloc · array<1>{real} - ├── det002 · table{evtid,particle,edep,time,xloc,yloc,zloc} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── xloc · array<1>{real} - │ ├── yloc · array<1>{real} - │ └── zloc · array<1>{real} - ├── det003 · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── v_post · array<1>{real} - │ ├── v_pre · array<1>{real} - │ ├── xloc_post · array<1>{real} - │ ├── xloc_pre · array<1>{real} - │ ├── yloc_post · array<1>{real} - │ ├── yloc_pre · array<1>{real} - │ ├── zloc_post · array<1>{real} - │ └── zloc_pre · array<1>{real} - └── vertices · table{evtid,time,xloc,yloc,zloc,n_part} - ├── evtid · array<1>{real} - ├── n_part · array<1>{real} - ├── time · array<1>{real} - ├── xloc · array<1>{real} - ├── yloc · array<1>{real} - └── zloc · array<1>{real} + └── stp · struct{det001,det002,det003,vertices} + ├── det001 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det002 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det003 · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── v_post · array<1>{real} + │ ├── v_pre · array<1>{real} + │ ├── xloc_post · array<1>{real} + │ ├── xloc_pre · array<1>{real} + │ ├── yloc_post · array<1>{real} + │ ├── yloc_pre · array<1>{real} + │ ├── zloc_post · array<1>{real} + │ └── zloc_pre · array<1>{real} + └── vertices · table{evtid,time,xloc,yloc,zloc,n_part} + ├── evtid · array<1>{real} + ├── n_part · array<1>{real} + ├── time · array<1>{real} + ├── xloc · array<1>{real} + ├── yloc · array<1>{real} + └── zloc · array<1>{real} Part 2) reboost config files ---------------------------- @@ -144,14 +144,14 @@ First we set up the python enviroment. import colorlog import hist import numpy as np - - + + plt.rcParams['figure.figsize'] = [12, 4] plt.rcParams['axes.titlesize'] =12 plt.rcParams['axes.labelsize'] = 12 plt.rcParams['legend.fontsize'] = 12 - - + + handler = colorlog.StreamHandler() handler.setFormatter( colorlog.ColoredFormatter("%(log_color)s%(name)s [%(levelname)s] %(message)s") @@ -161,7 +161,7 @@ First we set up the python enviroment. logger.addHandler(handler) logger.setLevel(logging.INFO) logger.info("test") - + @@ -203,7 +203,7 @@ effect of the processors. "energy_sum_deadlayer", # energy sum after dead layers "energy_sum_smeared" # energy sum after smearing with resolution ], - "step_group": { + "step_group": { "description": "group steps by time and evtid with 10us window", "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", }, @@ -262,7 +262,7 @@ effect of the processors. "mode": "function", "expression": "reboost.hpge.processors.smear_energies(hit.energy_sum_deadlayer,reso=pars.fwhm_in_keV/2.355)" } - + } } @@ -274,16 +274,16 @@ We also create our parameters file. "det001": { "meta_name":"BEGe.json", "phy_vol_name":"BEGe", - "fwhm_in_keV":2.69, - "fccd_in_mm":1.42, # dead layer in mm + "fwhm_in_keV":2.69, + "fccd_in_mm":1.42, # dead layer in mm }, "det002": { "meta_name":"Coax.json", "phy_vol_name":"Coax", - "fwhm_in_keV":4.42, - "fccd_in_mm":2.19, + "fwhm_in_keV":4.42, + "fccd_in_mm":2.19, } - + } Part 3) Running the processing @@ -345,57 +345,57 @@ distance to the detector surface. .. parsed-literal:: / - └── hit · HDF5 group - ├── det001 · table{edep,time,t0,hit_evtid,hit_global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} - │ ├── activeness · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── edep · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── energy_sum · array<1>{real} - │ ├── energy_sum_deadlayer · array<1>{real} - │ ├── energy_sum_smeared · array<1>{real} - │ ├── hit_evtid · array<1>{real} - │ ├── hit_global_evtid · array<1>{real} - │ ├── rpos_loc · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── t0 · array<1>{real} - │ ├── time · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ └── zpos_loc · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - └── det002 · table{edep,time,t0,hit_evtid,hit_global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} - ├── activeness · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── edep · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── energy_sum · array<1>{real} - ├── energy_sum_deadlayer · array<1>{real} - ├── energy_sum_smeared · array<1>{real} - ├── hit_evtid · array<1>{real} - ├── hit_global_evtid · array<1>{real} - ├── rpos_loc · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── t0 · array<1>{real} - ├── time · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - └── zpos_loc · array<1>{array<1>{real}} - ├── cumulative_length · array<1>{real} - └── flattened_data · array<1>{real} + └── hit · HDF5 group + ├── det001 · table{edep,time,t0,hit_evtid,hit_global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} + │ ├── activeness · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── edep · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── energy_sum · array<1>{real} + │ ├── energy_sum_deadlayer · array<1>{real} + │ ├── energy_sum_smeared · array<1>{real} + │ ├── hit_evtid · array<1>{real} + │ ├── hit_global_evtid · array<1>{real} + │ ├── rpos_loc · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── t0 · array<1>{real} + │ ├── time · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ └── zpos_loc · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + └── det002 · table{edep,time,t0,hit_evtid,hit_global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} + ├── activeness · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── edep · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── energy_sum · array<1>{real} + ├── energy_sum_deadlayer · array<1>{real} + ├── energy_sum_smeared · array<1>{real} + ├── hit_evtid · array<1>{real} + ├── hit_global_evtid · array<1>{real} + ├── rpos_loc · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── t0 · array<1>{real} + ├── time · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + └── zpos_loc · array<1>{array<1>{real}} + ├── cumulative_length · array<1>{real} + └── flattened_data · array<1>{real} The new format is a factor of x17 times smaller than the input file due @@ -540,24 +540,24 @@ processor works as expected. fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True) n=100000 for idx, (data,config) in enumerate(zip([data_det001,data_det002],["cfg/metadata/BEGe.json","cfg/metadata/Coax.json"])): - + reg=pg4.geant4.Registry() hpge = legendhpges.make_hpge(config,registry=reg) - + legendhpges.draw.plot_profile(hpge, split_by_type=True,axes=axs[idx]) r = np.random.choice([-1,1],p=[0.5,0.5],size=len(ak.flatten(data.rpos_loc)))*ak.flatten(data.rpos_loc) z = ak.flatten(data.zpos_loc) c=ak.flatten(data[field]) cut = c<5 - + s=axs[idx].scatter(r[cut][0:n],z[cut][0:n], c= c[cut][0:n],marker=".", label="gen. points",cmap=scale) #axs[idx].axis("equal") - + if idx == 0: axs[idx].set_ylabel("Height [mm]") c=plt.colorbar(s) c.set_label(clab) - + axs[idx].set_xlabel("Radius [mm]") @@ -582,7 +582,7 @@ We can also plot a histogram of the distance to the surface. .. code:: ipython3 def plot_distances(axes,distances,xrange=None,label=" ",**kwargs): - + h=hist.new.Reg(100,*xrange, name="Distance to n+ surface [mm]").Double() h.fill(distances) h.plot(**kwargs,label=label) @@ -590,7 +590,7 @@ We can also plot a histogram of the distance to the surface. ax.set_yscale("log") if xrange is not None: ax.set_xlim(*xrange) - + .. code:: ipython3 @@ -613,7 +613,7 @@ after weighting by the activeness. .. code:: ipython3 def plot_energy(axes,energy,bins=400,xrange=None,label=" ",log_y=True,**kwargs): - + h=hist.new.Reg(bins,*xrange, name="energy [keV]").Double() h.fill(energy) h.plot(**kwargs,label=label) @@ -677,4 +677,3 @@ Part 5) Adding a new processor The next part of the tutorial describes how to add a new processor to the chain. We use as an example spatial *clustering* of steps. This will be added later. - diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst index cc078dd..85e317a 100644 --- a/docs/source/tutorial.rst +++ b/docs/source/tutorial.rst @@ -6,4 +6,4 @@ Basic Tutorial :maxdepth: 2 :caption: Contents: - notebooks/reboost_hpge_tutorial \ No newline at end of file + notebooks/reboost_hpge_tutorial From e301bd7f6477102d1e8dbda2856457e29a392c69 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Sat, 16 Nov 2024 23:44:20 +0100 Subject: [PATCH 54/81] [docs] fix spelling --- .../notebooks/reboost_hpge_tutorial.rst | 245 +++++++++--------- docs/source/tutorial.rst | 2 +- 2 files changed, 123 insertions(+), 124 deletions(-) diff --git a/docs/source/notebooks/reboost_hpge_tutorial.rst b/docs/source/notebooks/reboost_hpge_tutorial.rst index 8ca1605..b312c0b 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial.rst +++ b/docs/source/notebooks/reboost_hpge_tutorial.rst @@ -2,7 +2,7 @@ Basic HPGe simulation processing ================================ This tutorial describes how to process the HPGe detector simulations -from **remage** with **reboost**. It buils on the offical **remage** +from **remage** with **reboost**. It buils on the official **remage** tutorial `[link] `__ @@ -13,13 +13,13 @@ tutorial directory structure to organise the outputs and config inputs. - ├── cfg - │   └── metadata - ├── output - │   - ├── stp - │   - └── hit + ├── cfg + │   └── metadata + ├── output + │   + ├── stp + │   + └── hit └── reboost_hpge_tutorial.ipynb .. @@ -30,7 +30,7 @@ Part 1) Running the remage simulation Before we can run any post-processing we need to run the Geant4 simulation. For this we follow the remage tutorial to generate the GDML geometry. We save this into the GDML file *cfg/geom.gdml* for use by -remage. We also need to save the metadata dictonaries into json files +remage. We also need to save the metadata dictionaries into json files (in the *cfg/metadata* folder as *BEGe.json* and *Coax.json* We use a slightly modified Geant4 macro to demonstrate some features of @@ -59,7 +59,7 @@ command line). /run/beamOn 10000000 -We then use the remage exectuable (see +We then use the remage executable (see `[remage-docs] `__ for installation instructions) to run the simulation: > #### *Note* > Both of *cfg/th228.mac* and *cfg/geometry.gdml* are needed to run remage @@ -83,43 +83,43 @@ We can use ``lh5.show()`` to check the output files. .. code:: text / - └── stp · struct{det001,det002,det003,vertices} - ├── det001 · table{evtid,particle,edep,time,xloc,yloc,zloc} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── xloc · array<1>{real} - │ ├── yloc · array<1>{real} - │ └── zloc · array<1>{real} - ├── det002 · table{evtid,particle,edep,time,xloc,yloc,zloc} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── xloc · array<1>{real} - │ ├── yloc · array<1>{real} - │ └── zloc · array<1>{real} - ├── det003 · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── v_post · array<1>{real} - │ ├── v_pre · array<1>{real} - │ ├── xloc_post · array<1>{real} - │ ├── xloc_pre · array<1>{real} - │ ├── yloc_post · array<1>{real} - │ ├── yloc_pre · array<1>{real} - │ ├── zloc_post · array<1>{real} - │ └── zloc_pre · array<1>{real} - └── vertices · table{evtid,time,xloc,yloc,zloc,n_part} - ├── evtid · array<1>{real} - ├── n_part · array<1>{real} - ├── time · array<1>{real} - ├── xloc · array<1>{real} - ├── yloc · array<1>{real} - └── zloc · array<1>{real} + └── stp · struct{det001,det002,det003,vertices} + ├── det001 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det002 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det003 · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── v_post · array<1>{real} + │ ├── v_pre · array<1>{real} + │ ├── xloc_post · array<1>{real} + │ ├── xloc_pre · array<1>{real} + │ ├── yloc_post · array<1>{real} + │ ├── yloc_pre · array<1>{real} + │ ├── zloc_post · array<1>{real} + │ └── zloc_pre · array<1>{real} + └── vertices · table{evtid,time,xloc,yloc,zloc,n_part} + ├── evtid · array<1>{real} + ├── n_part · array<1>{real} + ├── time · array<1>{real} + ├── xloc · array<1>{real} + ├── yloc · array<1>{real} + └── zloc · array<1>{real} Part 2) reboost config files ---------------------------- @@ -127,10 +127,10 @@ Part 2) reboost config files For this tutorial we perform a basic post-processing of the *hit* tier for the two Germanium channels. -2.1) Setup the enviroment +2.1) Setup the environment ~~~~~~~~~~~~~~~~~~~~~~~~~ -First we set up the python enviroment. +First we set up the python environment. .. code:: ipython3 @@ -144,14 +144,14 @@ First we set up the python enviroment. import colorlog import hist import numpy as np - - + + plt.rcParams['figure.figsize'] = [12, 4] plt.rcParams['axes.titlesize'] =12 plt.rcParams['axes.labelsize'] = 12 plt.rcParams['legend.fontsize'] = 12 - - + + handler = colorlog.StreamHandler() handler.setFormatter( colorlog.ColoredFormatter("%(log_color)s%(name)s [%(levelname)s] %(message)s") @@ -161,7 +161,7 @@ First we set up the python enviroment. logger.addHandler(handler) logger.setLevel(logging.INFO) logger.info("test") - + @@ -203,7 +203,7 @@ effect of the processors. "energy_sum_deadlayer", # energy sum after dead layers "energy_sum_smeared" # energy sum after smearing with resolution ], - "step_group": { + "step_group": { "description": "group steps by time and evtid with 10us window", "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", }, @@ -262,7 +262,7 @@ effect of the processors. "mode": "function", "expression": "reboost.hpge.processors.smear_energies(hit.energy_sum_deadlayer,reso=pars.fwhm_in_keV/2.355)" } - + } } @@ -274,16 +274,16 @@ We also create our parameters file. "det001": { "meta_name":"BEGe.json", "phy_vol_name":"BEGe", - "fwhm_in_keV":2.69, - "fccd_in_mm":1.42, # dead layer in mm + "fwhm_in_keV":2.69, + "fccd_in_mm":1.42, # dead layer in mm }, "det002": { "meta_name":"Coax.json", "phy_vol_name":"Coax", - "fwhm_in_keV":4.42, - "fccd_in_mm":2.19, + "fwhm_in_keV":4.42, + "fccd_in_mm":2.19, } - + } Part 3) Running the processing @@ -345,61 +345,61 @@ distance to the detector surface. .. parsed-literal:: / - └── hit · HDF5 group - ├── det001 · table{edep,time,t0,hit_evtid,hit_global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} - │ ├── activeness · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── edep · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── energy_sum · array<1>{real} - │ ├── energy_sum_deadlayer · array<1>{real} - │ ├── energy_sum_smeared · array<1>{real} - │ ├── hit_evtid · array<1>{real} - │ ├── hit_global_evtid · array<1>{real} - │ ├── rpos_loc · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── t0 · array<1>{real} - │ ├── time · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ └── zpos_loc · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - └── det002 · table{edep,time,t0,hit_evtid,hit_global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} - ├── activeness · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── edep · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── energy_sum · array<1>{real} - ├── energy_sum_deadlayer · array<1>{real} - ├── energy_sum_smeared · array<1>{real} - ├── hit_evtid · array<1>{real} - ├── hit_global_evtid · array<1>{real} - ├── rpos_loc · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── t0 · array<1>{real} - ├── time · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - └── zpos_loc · array<1>{array<1>{real}} - ├── cumulative_length · array<1>{real} - └── flattened_data · array<1>{real} + └── hit · HDF5 group + ├── det001 · table{edep,time,t0,hit_evtid,hit_global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} + │ ├── activeness · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── edep · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── energy_sum · array<1>{real} + │ ├── energy_sum_deadlayer · array<1>{real} + │ ├── energy_sum_smeared · array<1>{real} + │ ├── hit_evtid · array<1>{real} + │ ├── hit_global_evtid · array<1>{real} + │ ├── rpos_loc · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── t0 · array<1>{real} + │ ├── time · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ └── zpos_loc · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + └── det002 · table{edep,time,t0,hit_evtid,hit_global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} + ├── activeness · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── edep · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── energy_sum · array<1>{real} + ├── energy_sum_deadlayer · array<1>{real} + ├── energy_sum_smeared · array<1>{real} + ├── hit_evtid · array<1>{real} + ├── hit_global_evtid · array<1>{real} + ├── rpos_loc · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── t0 · array<1>{real} + ├── time · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + └── zpos_loc · array<1>{array<1>{real}} + ├── cumulative_length · array<1>{real} + └── flattened_data · array<1>{real} The new format is a factor of x17 times smaller than the input file due -to the removal of many *step* based fields which use alot of memory and +to the removal of many *step* based fields which use a lot of memory and due to the removal of the *vertices* table and the LAr hits. So we can easily read the whole file into memory. We use *awkward* to analyse the output files. @@ -540,24 +540,24 @@ processor works as expected. fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True) n=100000 for idx, (data,config) in enumerate(zip([data_det001,data_det002],["cfg/metadata/BEGe.json","cfg/metadata/Coax.json"])): - + reg=pg4.geant4.Registry() hpge = legendhpges.make_hpge(config,registry=reg) - + legendhpges.draw.plot_profile(hpge, split_by_type=True,axes=axs[idx]) r = np.random.choice([-1,1],p=[0.5,0.5],size=len(ak.flatten(data.rpos_loc)))*ak.flatten(data.rpos_loc) z = ak.flatten(data.zpos_loc) c=ak.flatten(data[field]) cut = c<5 - + s=axs[idx].scatter(r[cut][0:n],z[cut][0:n], c= c[cut][0:n],marker=".", label="gen. points",cmap=scale) #axs[idx].axis("equal") - + if idx == 0: axs[idx].set_ylabel("Height [mm]") c=plt.colorbar(s) c.set_label(clab) - + axs[idx].set_xlabel("Radius [mm]") @@ -582,7 +582,7 @@ We can also plot a histogram of the distance to the surface. .. code:: ipython3 def plot_distances(axes,distances,xrange=None,label=" ",**kwargs): - + h=hist.new.Reg(100,*xrange, name="Distance to n+ surface [mm]").Double() h.fill(distances) h.plot(**kwargs,label=label) @@ -590,7 +590,7 @@ We can also plot a histogram of the distance to the surface. ax.set_yscale("log") if xrange is not None: ax.set_xlim(*xrange) - + .. code:: ipython3 @@ -613,7 +613,7 @@ after weighting by the activeness. .. code:: ipython3 def plot_energy(axes,energy,bins=400,xrange=None,label=" ",log_y=True,**kwargs): - + h=hist.new.Reg(bins,*xrange, name="energy [keV]").Double() h.fill(energy) h.plot(**kwargs,label=label) @@ -653,7 +653,7 @@ after weighting by the activeness. The final step in the processing chain smeared the energies by the energy resolution. This represents a general class of processors based on ‘’heuristic’’ models. Other similar processors could be implemented -in a similar way. It would also be simple to use insted an energy +in a similar way. It would also be simple to use instead an energy dependent resolution curve. To see the effect we have to zoom into the 2615 keV peak. @@ -677,4 +677,3 @@ Part 5) Adding a new processor The next part of the tutorial describes how to add a new processor to the chain. We use as an example spatial *clustering* of steps. This will be added later. - diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst index cc078dd..85e317a 100644 --- a/docs/source/tutorial.rst +++ b/docs/source/tutorial.rst @@ -6,4 +6,4 @@ Basic Tutorial :maxdepth: 2 :caption: Contents: - notebooks/reboost_hpge_tutorial \ No newline at end of file + notebooks/reboost_hpge_tutorial From 03e60889b9009457602ee9c4dc4035a33a7f89c9 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Sat, 16 Nov 2024 23:52:04 +0100 Subject: [PATCH 55/81] [docs] fix --- docs/source/manual/hpge.rst | 6 ++++++ docs/source/notebooks/reboost_hpge_tutorial.rst | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/source/manual/hpge.rst b/docs/source/manual/hpge.rst index df91b98..395319a 100644 --- a/docs/source/manual/hpge.rst +++ b/docs/source/manual/hpge.rst @@ -244,6 +244,12 @@ Any python function can be a ``reboost.hit`` processor. The only requirement is with the same length as the hit table. This means processors can act on subarrays (``axis=-1`` in awkward syntax) but should not combine multiple rows of the hit table. +It is simple to accommodate most of the current and future envisiged post-processing in this framework. For example: + +- clustering hits would result in a new VectorOfVectors with the same number of rows but fewer entries per vector, +- pulse shape simulations to produce waveforms (or ML emmulation of this) would give an ArrayOfEqualSizedArrays, +- processing in parallel many parameters (eg for systematic) studies would give a nested VectorOfVectors. + Event tier processing (work in progress) ---------------------------------------- diff --git a/docs/source/notebooks/reboost_hpge_tutorial.rst b/docs/source/notebooks/reboost_hpge_tutorial.rst index b312c0b..8ecc0bf 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial.rst +++ b/docs/source/notebooks/reboost_hpge_tutorial.rst @@ -128,7 +128,7 @@ For this tutorial we perform a basic post-processing of the *hit* tier for the two Germanium channels. 2.1) Setup the environment -~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~ First we set up the python environment. From 90112a24c2bc661be2b14881b2ec1a5f535f7d5f Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Sat, 16 Nov 2024 23:57:30 +0100 Subject: [PATCH 56/81] [docs] remove nbspinx --- docs/source/conf.py | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index f3fbd16..4a4730d 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -19,7 +19,6 @@ "sphinx.ext.napoleon", "sphinx.ext.intersphinx", "sphinx_copybutton", - "nbsphinx", "IPython.sphinxext.ipython_console_highlighting", "myst_parser", ] From e4feb8f3150c9232814351fb2b0cc0b60e29ef33 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Sun, 17 Nov 2024 00:00:15 +0100 Subject: [PATCH 57/81] [docs] update conf.p --- docs/source/conf.py | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 4a4730d..239cfe9 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -19,7 +19,6 @@ "sphinx.ext.napoleon", "sphinx.ext.intersphinx", "sphinx_copybutton", - "IPython.sphinxext.ipython_console_highlighting", "myst_parser", ] From 66c63fc2614d159823fdb055612817d182db70d0 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Sun, 17 Nov 2024 14:16:28 +0100 Subject: [PATCH 58/81] Update pyproject.toml --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index d2dccf9..25f75e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,6 +32,7 @@ requires-python = ">=3.9" dependencies = [ "awkward", "colorlog", + "tqdm", "numpy", "scipy", "numba", From 22c4b78fd66d84b4bc949674767f770ad53f9539 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Sun, 17 Nov 2024 14:27:15 +0100 Subject: [PATCH 59/81] [docs] fix tutorial --- docs/source/notebooks/reboost_hpge_tutorial.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/source/notebooks/reboost_hpge_tutorial.rst b/docs/source/notebooks/reboost_hpge_tutorial.rst index 8ecc0bf..7d06c6a 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial.rst +++ b/docs/source/notebooks/reboost_hpge_tutorial.rst @@ -14,11 +14,11 @@ tutorial ├── cfg - │   └── metadata + │ └── metadata ├── output - │   + │ ├── stp - │   + │ └── hit └── reboost_hpge_tutorial.ipynb @@ -268,7 +268,7 @@ effect of the processors. We also create our parameters file. -.. code:: ipython3 +.. code:: python pars = { "det001": { From c2bc9634e1945bc4cc38f4432f1f3fb00696566b Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Sun, 17 Nov 2024 14:27:26 +0100 Subject: [PATCH 60/81] [docs] fix --- .../notebooks/reboost_hpge_tutorial.rst | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/source/notebooks/reboost_hpge_tutorial.rst b/docs/source/notebooks/reboost_hpge_tutorial.rst index 7d06c6a..06d90a5 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial.rst +++ b/docs/source/notebooks/reboost_hpge_tutorial.rst @@ -72,11 +72,11 @@ You can lower the number of simulated events to speed up the simulation. We can use ``lh5.show()`` to check the output files. -.. code:: ipython3 +.. code:: python from lgdo import lh5 -.. code:: ipython3 +.. code:: python lh5.show("output/stp/output_t0.lh5") @@ -132,7 +132,7 @@ for the two Germanium channels. First we set up the python environment. -.. code:: ipython3 +.. code:: python from reboost.hpge import hit import matplotlib.pyplot as plt @@ -182,7 +182,7 @@ response model (gaussian energy resolution). We also include some step based quantities in the output to show the effect of the processors. -.. code:: ipython3 +.. code:: python chain = { "channels": [ @@ -291,7 +291,7 @@ Part 3) Running the processing Now we can run our post-processing -.. code:: ipython3 +.. code:: python %%time hit.build_hit(file_out="output/hit/output.lh5",list_file_in="output/stp/*.lh5", out_field="hit",in_field="stp", @@ -337,7 +337,7 @@ fraction of the time spent on the geant4 simulation (around 30 mins). The most time consuming steps are writing the file and computing the distance to the detector surface. -.. code:: ipython3 +.. code:: python lh5.show("output/hit/output.lh5") @@ -404,12 +404,12 @@ due to the removal of the *vertices* table and the LAr hits. So we can easily read the whole file into memory. We use *awkward* to analyse the output files. -.. code:: ipython3 +.. code:: python data_det001 = lh5.read_as("hit/det001","output/hit/output.lh5","ak") data_det002 = lh5.read_as("hit/det002","output/hit/output.lh5","ak") -.. code:: ipython3 +.. code:: python data_det001[0] @@ -463,7 +463,7 @@ correspond to “hits” in the detector, as we expect. We also see that a single decay does not often produce multiple hits. This is also expected since the probability of detection is fairly low. -.. code:: ipython3 +.. code:: python plt.scatter(np.sort(data_det001.hit_global_evtid),np.arange(len(data_det001)),marker=".",alpha=1) plt.xlabel("Decay index (evtid)") @@ -488,7 +488,7 @@ since the probability of detection is fairly low. However, we can use some array manipulation to extract decay index with multiple hits, by plotting the times we see the effect of the windowing. -.. code:: ipython3 +.. code:: python def plot_times(times:ak.Array,xrange=None,sub_zero=False,**kwargs): fig,ax = plt.subplots() @@ -504,11 +504,11 @@ multiple hits, by plotting the times we see the effect of the windowing. ax.set_xlim(*xrange) -.. code:: ipython3 +.. code:: python unique,counts = np.unique(data_det001.hit_global_evtid,return_counts=True) -.. code:: ipython3 +.. code:: python plot_times(data_det001[data_det001.hit_global_evtid==unique[counts>1][1]].time,histtype="step",yerr=False) @@ -534,7 +534,7 @@ detector surface and the activeness for each step. We select only events within 5 mm of the surface for the first plots. We can see that the processor works as expected. -.. code:: ipython3 +.. code:: python def plot_map(field,scale="BuPu",clab="Distance [mm]"): fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True) @@ -561,7 +561,7 @@ processor works as expected. axs[idx].set_xlabel("Radius [mm]") -.. code:: ipython3 +.. code:: python plot_map("distance_to_nplus_surface_mm") @@ -569,7 +569,7 @@ processor works as expected. .. image:: images/output_27_1.png -.. code:: ipython3 +.. code:: python plot_map("activeness",clab="Activeness",scale="viridis") @@ -579,7 +579,7 @@ processor works as expected. We can also plot a histogram of the distance to the surface. -.. code:: ipython3 +.. code:: python def plot_distances(axes,distances,xrange=None,label=" ",**kwargs): @@ -592,7 +592,7 @@ We can also plot a histogram of the distance to the surface. ax.set_xlim(*xrange) -.. code:: ipython3 +.. code:: python fig,ax = plt.subplots() plot_distances(ax,ak.flatten(data_det001.distance_to_nplus_surface_mm),xrange=(0,35),label="BEGe",histtype="step",yerr=False) @@ -610,7 +610,7 @@ We can also plot a histogram of the distance to the surface. Our processing chain also sums the energies of the hits, both before and after weighting by the activeness. -.. code:: ipython3 +.. code:: python def plot_energy(axes,energy,bins=400,xrange=None,label=" ",log_y=True,**kwargs): @@ -623,7 +623,7 @@ after weighting by the activeness. if xrange is not None: axes.set_xlim(*xrange) -.. code:: ipython3 +.. code:: python fig, ax = plt.subplots() ax.set_title("BEGe energy spectrum") @@ -635,7 +635,7 @@ after weighting by the activeness. .. image:: images/output_34_0.png -.. code:: ipython3 +.. code:: python fig, ax = plt.subplots() ax.set_title("COAX energy spectrum") @@ -657,7 +657,7 @@ in a similar way. It would also be simple to use instead an energy dependent resolution curve. To see the effect we have to zoom into the 2615 keV peak. -.. code:: ipython3 +.. code:: python fig, axs = plt.subplots() plot_energy(axs,data_det001.energy_sum_smeared,yerr=False,label="BEGe",xrange=(2600,2630),log_y=False,bins=150,density=True) From 387ac50e002c9a1104288e3a573e913be8fdcf72 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Sun, 17 Nov 2024 14:30:12 +0100 Subject: [PATCH 61/81] [docs] more format fixes --- docs/source/notebooks/reboost_hpge_tutorial.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/source/notebooks/reboost_hpge_tutorial.rst b/docs/source/notebooks/reboost_hpge_tutorial.rst index 06d90a5..796a4d7 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial.rst +++ b/docs/source/notebooks/reboost_hpge_tutorial.rst @@ -12,6 +12,7 @@ tutorial To run this tutorial it is recommended to create the following directory structure to organise the outputs and config inputs. +.. code:: text ├── cfg │ └── metadata @@ -22,6 +23,7 @@ tutorial └── hit └── reboost_hpge_tutorial.ipynb + .. Part 1) Running the remage simulation From e78e90e5485a7d2ec1a5c57771f2cbb33939276a Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 18 Nov 2024 19:47:43 +0100 Subject: [PATCH 62/81] clean up build hit --- src/reboost/hpge/hit.py | 255 ++++++++++++++++----------------- src/reboost/hpge/processors.py | 26 ++-- src/reboost/hpge/utils.py | 50 ++++++- tests/test_hpge_hit.py | 49 ++++--- tests/test_hpge_utils.py | 18 +++ 5 files changed, 237 insertions(+), 161 deletions(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 7956fe2..8b49c9c 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -3,12 +3,8 @@ import logging import time -import awkward as ak -import numpy as np import pyg4ometry from lgdo import Array, ArrayOfEqualSizedArrays, Table, VectorOfVectors, lh5 -from lgdo.lh5 import LH5Iterator -from tqdm import tqdm from . import utils @@ -65,7 +61,7 @@ def get_locals( ..code-block:: - {"hpge": "reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)"} + {"hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)"} pars_dict dictionary of parameters @@ -176,107 +172,102 @@ def build_hit( gdml: str | None = None, metadata_path: str | None = None, merge_input_files: bool = True, - has_global_evtid: bool = False, ) -> None: """ - Read incrementally the files compute something and then write output - - Parameters - ---------- - file_out - output file path - list_file_in - list of input files - out_field - lh5 group name for output - in_field - lh5 group name for input - proc_config - the configuration file for the processing. Must contain the fields `channels`, `outputs`, `step_group` and operations`. - Optionally can also contain the `locals` field to extract other non-JSON serializable objects used by the processors. - For example: - - .. code-block:: json - - { - "channels": [ - "det000", - "det001", - "det002", - "det003" - ], - "outputs": [ - "t0", - "truth_energy_sum", - "smeared_energy_sum", - "evtid" - ], - "step_group": { - "description": "group steps by time and evtid.", - "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" - }, - "locals": { - "hpge": "reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)" - }, - "operations": { - "t0": { - "description": "first time in the hit.", - "mode": "eval", - "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)" - }, - "truth_energy_sum": { - "description": "truth summed energy in the hit.", - "mode": "eval", - "expression": "ak.sum(hit.edep,axis=-1)" - }, - "smeared_energy_sum": { - "description": "summed energy after convolution with energy response.", - "mode": "function", - "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" - } - - } - } - - pars - a dictionary of parameters, must have a field per channel consisting of a `dict` of parameters. For example: - - .. code-block:: json - - { - "det000": { - "reso": 1, - "fccd": 0.1, - "phy_vol_name":"det_phy", - "meta_name": "icpc.json" - } - } - - this should also contain the channel mappings needed by reboost. These are: - - `phy_vol_name`: is the name of the physical volume, - - `meta_name` : is the name of the JSON file with the metadata. - - If these keys are not present both will be set to the remage output table name. - - start_evtid - first `evtid` to read, defaults to 0. - n_evtid - number of `evtid` to read, if `None` all steps are read (the default). - buffer - length of buffer - gdml - path to the input gdml file. - metadata_path - path to the folder with the metadata (i.e. the `hardware.detectors.germanium.diodes` folder of `legend-metadata`) - merge_input_files - boolean flag to merge all input files into a single output. - has_global_evtid - boolean flag to indicate the evtid are already global - - Note - ---- - - The operations can depend on the outputs of previous steps, so operations order is important. - - It would be better to have a cleaner way to supply metadata and detector maps. + Read incrementally the files compute something and then write output + + Parameters + ---------- + file_out + output file path + list_file_in + list of input files + out_field + lh5 group name for output + in_field + lh5 group name for input + proc_config + the configuration file for the processing. Must contain the fields `channels`, `outputs`, `step_group` and operations`. + Optionally can also contain the `locals` field to extract other non-JSON serializable objects used by the processors. + For example: + + .. code-block:: json + + { + "channels": [ + "det000", + has_global_evtid: bool = False, + ], + "outputs": [ + "t0", + "truth_energy_sum", + "smeared_energy_sum", + "evtid" + ], + "step_group": { + "description": "group steps by time and evtid.", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" + }, + "locals": { + "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)" + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)" + }, + "truth_energy_sum": { + "description": "truth summed energy in the hit.", + "mode": "eval", + "expression": "ak.sum(hit.edep,axis=-1)" + }, + "smeared_energy_sum": { + "description": "summed energy after convolution with energy response.", + "mode": "function", + "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" + } + + } + } + + pars + a dictionary of parameters, must have a field per channel consisting of a `dict` of parameters. For example: + + .. code-block:: json + + { + "det000": { + "reso": 1, + "fccd": 0.1, + "phy_vol_name":"det_phy", + "meta_name": "icpc.json" + } + } + + this should also contain the channel mappings needed by reboost. These are: + - `phy_vol_name`: is the name of the physical volume, + - `meta_name` : is the name of the JSON file with the metadata. + + If these keys are not present both will be set to the remage output table name. + + start_evtid + first `evtid` to read, defaults to 0. + n_evtid + number of `evtid` to read, if `None` all steps are read (the default). + buffer + length of buffer + gdml + path to the input gdml file. + metadata_path + path to the folder with the metadata (i.e. the `hardware.detectors.germanium.diodes` folder of `legend-metadata`) + merge_input_files + boolean flag to merge all input files into a single output. + + Note + ---- + - The operations can depend on the outputs of previous steps, so operations order is important. + - It would be better to have a cleaner way to supply metadata and detector maps. """ time_dict = { @@ -291,12 +282,11 @@ def build_hit( time_start = time.time() # get the gdml file - with utils.debug_logging(logging.CRITICAL): reg = pyg4ometry.gdml.Reader(gdml).getRegistry() if gdml is not None else None # get info on the files to read in a nice named tuple - file_info = utils.get_selected_files( + finfo = utils.get_selected_files( table=in_field, file_list=list_file_in, n_evtid=n_evtid, @@ -304,7 +294,6 @@ def build_hit( ) time_end = time.time() - time_dict["setup"] += time_end - time_start # initialise timing object @@ -312,9 +301,12 @@ def build_hit( time_end = time.time() # loop over input files - for first_evtid, file_idx, file_in in tqdm( - zip(file_info.file_start_global_evtids, file_info.file_indices, file_info.file_list) + for first_evtid, file_idx, file_in in zip( + finfo.file_start_global_evtids, finfo.file_indices, finfo.file_list ): + # get the evtids in the file: may use a lot of memory + vertices = lh5.read_as(f"{in_field}/vertices/evtid", file_in, "np") + for ch_idx, d in enumerate(proc_config["channels"]): msg = f"...running hit tier for {d}" log.debug(msg) @@ -322,13 +314,15 @@ def build_hit( # get local variables time_start = time.time() - local_info = proc_config.get("locals", {}) local_dict = get_locals( - local_info, pars_dict=pars.get(d, {}), meta_path=metadata_path, detector=d, reg=reg + proc_config.get("locals", {}), + pars_dict=pars.get(d, {}), + meta_path=metadata_path, + detector=d, + reg=reg, ) time_end = time.time() - time_dict["locals"] += time_end - time_start is_first_chan = bool(ch_idx == 0) @@ -344,29 +338,23 @@ def build_hit( ) log.debug(msg) - entries = LH5Iterator( - file_in, f"{in_field}/{d}", buffer_len=buffer - )._get_file_cumentries(0) - - # number of blocks is ceil of entries/buffer, - # shift by 1 since idx starts at 0 - - max_idx = int(np.ceil(entries / buffer)) - 1 - remainder = entries % buffer + # number of iterations (used to handle last iteration) + it, entries, max_idx = utils.get_iterator( + file=file_in, field=in_field, detector=d, buffer=buffer + ) buffer_rows = None - for idx, (lh5_obj, _, _) in enumerate( - LH5Iterator(file_in, f"{in_field}/{d}", buffer_len=buffer) - ): + # iterate over the LH5 file + for idx, (lh5_obj, _, n_rows) in enumerate(it): msg = f"... processed {idx} chunks out of {max_idx}" - log.debug(msg) + log.info(msg) # convert to awkward ak_obj = lh5_obj.view_as("ak") # fix for a bug in lh5 iterator - if idx == max_idx & remainder != 0: - ak_obj = ak_obj[:remainder] + if idx == max_idx: + ak_obj = ak_obj[:n_rows] # handle the buffers obj, buffer_rows, mode = utils._merge_arrays( @@ -374,10 +362,7 @@ def build_hit( ) # add global evtid - if has_global_evtid is False: - obj = ak.with_field(obj, first_evtid + obj.evtid, "global_evtid") - else: - obj = ak.with_field(obj, obj.evtid, "global_evtid") + obj = utils.get_global_evtid(first_evtid, obj, vertices) time_end = time.time() time_dict["read"] += time_end - time_start @@ -386,15 +371,15 @@ def build_hit( if not utils.get_include_chunk( obj.global_evtid, - start_glob_evtid=file_info.first_global_evtid, - end_glob_evtid=file_info.last_global_evtid, + start_glob_evtid=finfo.first_global_evtid, + end_glob_evtid=finfo.last_global_evtid, ): continue # select just the correct global evtid objects obj = obj[ - (obj.global_evtid >= file_info.first_global_evtid) - & (obj.global_evtid <= file_info.last_global_evtid) + (obj.global_evtid >= finfo.first_global_evtid) + & (obj.global_evtid <= finfo.last_global_evtid) ] # convert back to a table, should work diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index fca94b4..79f01b9 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -8,7 +8,7 @@ from numpy.typing import ArrayLike -def sort_data(obj: ak.Array) -> ak.Array: +def sort_data(obj: ak.Array, *, time_name: str = "time", evtid_name: str = "evtid") -> ak.Array: """Sort the data by evtid then time. Parameters @@ -20,7 +20,7 @@ def sort_data(obj: ak.Array) -> ak.Array: ------- sorted awkward array """ - indices = np.lexsort((obj.time, obj.evtid)) + indices = np.lexsort((obj[time_name], obj[evtid_name])) return obj[indices] @@ -65,7 +65,9 @@ def group_by_evtid(data: Table) -> Table: return out_tbl -def group_by_time(data: Table, window: float = 10) -> lgdo.Table: +def group_by_time( + data: Table | ak.Array, window: float = 10, time_name: str = "time", evtid_name: str = "evtid" +) -> lgdo.Table: """Grouping of steps by `evtid` and `time`. Takes the input `stp` :class:`LGOD.Table` from remage and defines groupings of steps (i.e the @@ -79,7 +81,13 @@ def group_by_time(data: Table, window: float = 10) -> lgdo.Table: Parameters ---------- data - LGDO Table which must contain the `evtid`, `time` field. + LGDO Table or ak.Array which must contain the time_name and evtid_name fields + window + time window in us used to search for coincident hits + time_name + name of the timing field + evtid_name + name of the evtid field Returns ------- @@ -90,12 +98,12 @@ def group_by_time(data: Table, window: float = 10) -> lgdo.Table: The input table must be sorted (first by `evtid` then `time`). """ - obj = data.view_as("ak") - obj = sort_data(obj) + obj = data.view_as("ak") if isinstance(data, Table) else data + obj = sort_data(obj, time_name=time_name, evtid_name=evtid_name) # get difference - time_diffs = np.diff(obj.time) - index_diffs = np.diff(obj.evtid) + time_diffs = np.diff(obj[time_name]) + index_diffs = np.diff(obj[evtid_name]) # index of thhe last element in each run time_change = (time_diffs > window * 1000) & (index_diffs == 0) @@ -105,7 +113,7 @@ def group_by_time(data: Table, window: float = 10) -> lgdo.Table: cumulative_length = np.array(np.where(time_change | index_change))[0] + 1 # add the las grouping - cumulative_length = np.append(cumulative_length, len(obj.time)) + cumulative_length = np.append(cumulative_length, len(obj[time_name])) # build output table out_tbl = Table(size=len(cumulative_length)) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 414fad0..09fb666 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -16,6 +16,7 @@ import pyg4ometry import yaml from lgdo import lh5 +from lgdo.lh5 import LH5Iterator from numpy.typing import ArrayLike, NDArray log = logging.getLogger(__name__) @@ -185,6 +186,37 @@ def get_files_to_read(cum_n_sim: ArrayLike, start_glob_evtid: int, end_glob_evti return np.array(file_indices) +def get_global_evtid(first_evtid: int, obj: ak.Array, vertices: ArrayLike) -> ak.Array: + """Adds a global evtid field to the array. + + The global evtid is the index of the decay in the order the files are read in. This is obtained + from the first_evtid, defined as the number of decays in the previous files, plus the row of the + vertices array corresponding to this evtid. In this way we obtain an index both sorted and unique + over all the input files, this enables easy selection of some chunks. + + Parameters + ---------- + first_evtid + number of decays in the previous files + obj + awkward array of the input data + vertices + array of the vertex evtids + + Returns + ------- + the obj with the global_evtid field added + """ + vertices = np.array(vertices) + indices = np.searchsorted(vertices, np.array(obj.evtid)) + + if np.any(vertices[indices] != np.array(obj.evtid)): + msg = "Some of the evtids in the obj do not correspond to rows in the input" + raise ValueError(msg) + + return ak.with_field(obj, first_evtid + indices, "global_evtid") + + def get_include_chunk( global_evtid: ak.Array, start_glob_evtid: int, @@ -334,7 +366,10 @@ def _merge_arrays( rows = ak.num(ak_obj, axis=-1) end_rows = counts[-1] - if idx == 0: + if max_idx == 0: + mode = "of" if (delete_input) else "append" + obj = ak_obj + elif idx == 0: mode = "of" if (delete_input) else "append" obj = ak_obj[0 : rows - end_rows] buffer_rows = copy.deepcopy(ak_obj[rows - end_rows :]) @@ -350,6 +385,19 @@ def _merge_arrays( return obj, buffer_rows, mode +def get_iterator(file: str, field: str, detector: str, buffer: int): + """Get information on the iterator (number of index and entries).""" + + it = LH5Iterator(file, f"{field}/{detector}", buffer_len=buffer) + entries = it._get_file_cumentries(0) + + # number of blocks is ceil of entries/buffer, + # shift by 1 since idx starts at 0 + max_idx = int(np.ceil(entries / buffer)) - 1 + + return it, entries, max_idx + + __file_extensions__ = {"json": [".json"], "yaml": [".yaml", ".yml"]} diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py index f0b4e8e..da557ce 100644 --- a/tests/test_hpge_hit.py +++ b/tests/test_hpge_hit.py @@ -205,8 +205,9 @@ def test_build_hit(test_reboost_input_file): }, } + # build hit for file 1 and 2 separately and then also merging them for output_file, input_file in zip( - ["out.lh5", "out_rem.lh5", "out_merge.lh5"], ["file1.lh5", "file2.lh5", "file*.lh5"] + ["out_1.lh5", "out_2.lh5", "out_merge.lh5"], ["file1.lh5", "file2.lh5", "file*.lh5"] ): hit.build_hit( str(test_reboost_input_file / output_file), @@ -218,6 +219,16 @@ def test_build_hit(test_reboost_input_file): buffer=100000, ) + tab_1 = lh5.read("hit/det001", str(test_reboost_input_file / "out_1.lh5")).view_as("ak") + tab_2 = lh5.read("hit/det001", str(test_reboost_input_file / "out_2.lh5")).view_as("ak") + tab_merge = lh5.read("hit/det001", str(test_reboost_input_file / "out_merge.lh5")).view_as("ak") + + # check lengths + assert len(ak.flatten(tab_1.evtid, axis=-1)) == int(1e6) + assert len(ak.flatten(tab_2.evtid, axis=-1)) == 30040 + assert len(ak.flatten(tab_merge.evtid, axis=-1)) == 30040 + int(1e6) + + # one call but write both files hit.build_hit( str(test_reboost_input_file / "out.lh5"), [str(test_reboost_input_file / "file*.lh5")], @@ -229,25 +240,30 @@ def test_build_hit(test_reboost_input_file): merge_input_files=False, ) - # read back in the data and check this works (no errors) + tab_1 = lh5.read("hit/det001", str(test_reboost_input_file / "out_0.lh5")).view_as("ak") + tab_2 = lh5.read("hit/det001", str(test_reboost_input_file / "out_1.lh5")).view_as("ak") - tab = lh5.read("hit/det001", str(test_reboost_input_file / "out.lh5")).view_as("ak") - tab_merge = lh5.read("hit/det001", str(test_reboost_input_file / "out_merge.lh5")).view_as("ak") - tab_0 = lh5.read("hit/det001", str(test_reboost_input_file / "out_0.lh5")).view_as("ak") - tab_1 = lh5.read("hit/det001", str(test_reboost_input_file / "out_1.lh5")).view_as("ak") + # check lengths + assert len(ak.flatten(tab_1.evtid, axis=-1)) == int(1e6) + assert len(ak.flatten(tab_2.evtid, axis=-1)) == 30040 - # check size of the output - assert len(ak.flatten(tab.evtid, axis=-1)) == int(1e6) - assert len(ak.flatten(tab_merge.evtid, axis=-1)) == int(1e6 + 30040) - assert len(ak.flatten(tab_0.evtid, axis=-1)) == int(1e6) - assert len(ak.flatten(tab_1.evtid, axis=-1)) == 30040 + # test with a smaller buffer + hit.build_hit( + str(test_reboost_input_file / "out_small_buffer.lh5"), + [str(test_reboost_input_file / "file*.lh5")], + in_field="hit", + out_field="hit", + proc_config=proc_config, + pars={}, + buffer=10000, + ) - # check on evtid + tab_small = lh5.read( + "hit/det001", str(test_reboost_input_file / "out_small_buffer.lh5") + ).view_as("ak") - assert ak.all(ak.all(tab.evtid == ak.firsts(tab.evtid, axis=-1), axis=1)) - assert ak.all(ak.all(tab_merge.evtid == ak.firsts(tab_merge.evtid, axis=-1), axis=1)) - assert ak.all(ak.all(tab_0.evtid == ak.firsts(tab_0.evtid, axis=-1), axis=1)) - assert ak.all(ak.all(tab_1.evtid == ak.firsts(tab_1.evtid, axis=-1), axis=1)) + # buffer does not affect results + assert ak.all(ak.flatten(tab_merge.evtid) == ak.flatten(tab_small.evtid)) def test_build_hit_some_row(test_reboost_input_file): @@ -362,6 +378,7 @@ def test_build_hit_with_locals(test_reboost_input_file, test_data_configs): } gdml_path = configs / pathlib.Path("geom.gdml") meta_path = test_data_configs + # complete check on the processing chain including parameters / local variables hit.build_hit( diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py index 5126277..850bd90 100644 --- a/tests/test_hpge_utils.py +++ b/tests/test_hpge_utils.py @@ -17,6 +17,7 @@ dict2tuple, get_file_list, get_files_to_read, + get_global_evtid, get_global_evtid_range, get_hpge, get_include_chunk, @@ -218,6 +219,23 @@ def test_global_evtid_range(): assert get_global_evtid_range(200, None, 2000) == (200, 1999) +def test_get_global_evtid(): + # single file + first_evtid = 0 + vertices = [0, 1, 2, 3, 4, 5] + input_evtid = [2, 3, 4, 5, 5, 5] + obj = ak.Array({"evtid": input_evtid}) + assert np.all(get_global_evtid(first_evtid, obj, vertices).global_evtid == input_evtid) + + # now if we only have some vertices + vertices = [0, 2, 4, 6, 8, 10] + input_evtid = [4, 6, 8, 10, 10, 10] + obj = ak.Array({"evtid": input_evtid}) + assert np.all( + get_global_evtid(first_evtid, obj, vertices).global_evtid == np.array(input_evtid) / 2.0 + ) + + def test_get_files_to_read(): n_sim = [1000, 1200, 200, 5000] n_sim = np.concatenate([[0], np.cumsum(n_sim)]) From 9530b6502f91df5ae82e7dab7109776611f321cf Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 18 Nov 2024 19:47:57 +0100 Subject: [PATCH 63/81] first version of building tcm --- src/reboost/hpge/evt.py | 61 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/reboost/hpge/evt.py diff --git a/src/reboost/hpge/evt.py b/src/reboost/hpge/evt.py new file mode 100644 index 0000000..2ccb3ef --- /dev/null +++ b/src/reboost/hpge/evt.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +import logging + +import awkward as ak +from lgdo import Table + +from . import processors + +log = logging.getLogger(__name__) + + +def build_tcm( + hit_data: list[ak.Array], + channels: list[int], + *, + window: float = 10, + time_name: str = "t0", + idx_name: str = "hit_global_evtid", +) -> Table: + """Builds a time-coincidence map from a hit of hit data Tables. + + - build an ak.Array of the data merging channels with fields base on "time_name", and "idx_name" and adding a field `rawid` from the channel idx, also add the row (`hit_idx`) + - sorts this array by "idx_name" then "time_name" fields + - group by "idx_name" and "time_name" based on the window parameter + + Parameters + ---------- + hit_data + list of hit tier data for each channel + channels + list of channel indices + window + time window for selecting coincidences (in us) + time_name + name of the field for time information + idx_name + name of the decay index field + + Returns + ------- + an LGDO.VectorOfVectors containing the time-coincidence map + """ + # build ak_obj for sorting + sort_objs = [] + for ch_idx, data_tmp in zip(channels, hit_data): + obj_tmp = ak.copy(data_tmp) + obj_tmp = obj_tmp[[time_name, idx_name]] + hit_idx = ak.local_index(obj_tmp) + + obj_tmp = ak.with_field(obj_tmp, hit_idx, "hit_idx") + + obj_tmp["rawid"] = ch_idx + + sort_objs.append(obj_tmp) + + obj_tot = ak.concatenate(sort_objs) + + return processors.group_by_time( + obj_tot, time_name=time_name, evtid_name=idx_name, window=window + ) From 78116a438d134f3ac5aef3c73f34e97420005c00 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 18 Nov 2024 19:51:05 +0100 Subject: [PATCH 64/81] remove timing debug (cleanup) --- src/reboost/hpge/hit.py | 65 +++-------------------------------------- tests/test_hpge_hit.py | 1 + 2 files changed, 5 insertions(+), 61 deletions(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 8b49c9c..c83a4c6 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -270,16 +270,6 @@ def build_hit( - It would be better to have a cleaner way to supply metadata and detector maps. """ - time_dict = { - "setup": 0, - "read": 0, - "write": 0, - "locals": 0, - "step_group": 0, - "proc": {}, - } - - time_start = time.time() # get the gdml file with utils.debug_logging(logging.CRITICAL): @@ -293,13 +283,6 @@ def build_hit( start_evtid=start_evtid, ) - time_end = time.time() - time_dict["setup"] += time_end - time_start - - # initialise timing object - time_start = time.time() - time_end = time.time() - # loop over input files for first_evtid, file_idx, file_in in zip( finfo.file_start_global_evtids, finfo.file_indices, finfo.file_list @@ -312,8 +295,7 @@ def build_hit( log.debug(msg) # get local variables - time_start = time.time() - + local_dict = get_locals( proc_config.get("locals", {}), pars_dict=pars.get(d, {}), @@ -322,9 +304,6 @@ def build_hit( reg=reg, ) - time_end = time.time() - time_dict["locals"] += time_end - time_start - is_first_chan = bool(ch_idx == 0) is_first_file = bool(file_idx == 0) @@ -364,9 +343,6 @@ def build_hit( # add global evtid obj = utils.get_global_evtid(first_evtid, obj, vertices) - time_end = time.time() - time_dict["read"] += time_end - time_start - # check if the chunk can be skipped, does lack of sorting break this? if not utils.get_include_chunk( @@ -386,33 +362,19 @@ def build_hit( data = Table(obj) # group steps into hits - time_start = time.time() grouped = step_group(data, proc_config["step_group"]) - time_end = time.time() - - time_dict["step_group"] += time_end - time_start - + # processors for name, info in proc_config["operations"].items(): msg = f"... adding column {name}" log.debug(msg) - time_start = time.time() - col = eval_expression(grouped, info, local_dict=local_dict) grouped.add_field(name, col) - time_end = time.time() - - if name in time_dict["proc"]: - time_dict["proc"][name] += time_end - time_start - else: - time_dict["proc"][name] = 0 - # remove unwanted columns log.debug("... removing unwanted columns") - time_start = time.time() - + existing_cols = list(grouped.keys()) for col in existing_cols: if col not in proc_config["outputs"]: @@ -426,23 +388,4 @@ def build_hit( else file_out ) lh5.write(grouped, f"{out_field}/{d}", file_out_tmp, wo_mode=mode) - time_end = time.time() - - time_dict["write"] += time_end - time_start - - # start timing read - time_start = time.time() - - # print timing info - - for step, time_val in time_dict.items(): - if isinstance(time_val, dict): - msg = "Time for processors:" - log.info(msg) - - for name, t in time_val.items(): - msg = f" {name} elapsed time: {t:.1f} s" - log.info(msg) - else: - msg = f"{step} elapsed time: {time_val:.1f} s" - log.info(msg) + \ No newline at end of file diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py index da557ce..c0517bf 100644 --- a/tests/test_hpge_hit.py +++ b/tests/test_hpge_hit.py @@ -303,6 +303,7 @@ def test_build_hit_some_row(test_reboost_input_file): buffer=100000, ) + # test reading the data in two goes gives the same result for n_ev, s_ev, out in zip( [int(1e4), int(1e5 - 1e4), int(1e5), int(1e5)], [0, int(1e4), 0, 1000], From 0abd90fe1fc261e9c34cac3d5a428283a97d8d9c Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 18 Nov 2024 19:58:33 +0100 Subject: [PATCH 65/81] [evt] first version of build_tcm code --- src/reboost/hpge/evt.py | 6 +++++- src/reboost/hpge/hit.py | 9 +++------ src/reboost/hpge/processors.py | 9 ++++++++- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/reboost/hpge/evt.py b/src/reboost/hpge/evt.py index 2ccb3ef..aed3694 100644 --- a/src/reboost/hpge/evt.py +++ b/src/reboost/hpge/evt.py @@ -57,5 +57,9 @@ def build_tcm( obj_tot = ak.concatenate(sort_objs) return processors.group_by_time( - obj_tot, time_name=time_name, evtid_name=idx_name, window=window + obj_tot, + time_name=time_name, + evtid_name=idx_name, + window=window, + fields=["rawid", "hit_idx"], ) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index c83a4c6..f16f736 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -1,7 +1,6 @@ from __future__ import annotations import logging -import time import pyg4ometry from lgdo import Array, ArrayOfEqualSizedArrays, Table, VectorOfVectors, lh5 @@ -270,7 +269,6 @@ def build_hit( - It would be better to have a cleaner way to supply metadata and detector maps. """ - # get the gdml file with utils.debug_logging(logging.CRITICAL): reg = pyg4ometry.gdml.Reader(gdml).getRegistry() if gdml is not None else None @@ -295,7 +293,7 @@ def build_hit( log.debug(msg) # get local variables - + local_dict = get_locals( proc_config.get("locals", {}), pars_dict=pars.get(d, {}), @@ -363,7 +361,7 @@ def build_hit( # group steps into hits grouped = step_group(data, proc_config["step_group"]) - + # processors for name, info in proc_config["operations"].items(): msg = f"... adding column {name}" @@ -374,7 +372,7 @@ def build_hit( # remove unwanted columns log.debug("... removing unwanted columns") - + existing_cols = list(grouped.keys()) for col in existing_cols: if col not in proc_config["outputs"]: @@ -388,4 +386,3 @@ def build_hit( else file_out ) lh5.write(grouped, f"{out_field}/{d}", file_out_tmp, wo_mode=mode) - \ No newline at end of file diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index 79f01b9..aba0704 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -66,7 +66,11 @@ def group_by_evtid(data: Table) -> Table: def group_by_time( - data: Table | ak.Array, window: float = 10, time_name: str = "time", evtid_name: str = "evtid" + data: Table | ak.Array, + window: float = 10, + time_name: str = "time", + evtid_name: str = "evtid", + fields: list | None = None, ) -> lgdo.Table: """Grouping of steps by `evtid` and `time`. @@ -88,6 +92,8 @@ def group_by_time( name of the timing field evtid_name name of the evtid field + fields + names of fields to include in the output table, if None includes all Returns ------- @@ -118,6 +124,7 @@ def group_by_time( # build output table out_tbl = Table(size=len(cumulative_length)) + fields = obj.fields if fields is None else fields for f in obj.fields: out_tbl.add_field( f, VectorOfVectors(cumulative_length=cumulative_length, flattened_data=obj[f]) From d9509bc5707afd5b8d03729076dc922d11a4b130 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 18 Nov 2024 19:59:22 +0100 Subject: [PATCH 66/81] [docs] small fix --- docs/source/notebooks/reboost_hpge_tutorial.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/source/notebooks/reboost_hpge_tutorial.rst b/docs/source/notebooks/reboost_hpge_tutorial.rst index 796a4d7..7a71e6b 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial.rst +++ b/docs/source/notebooks/reboost_hpge_tutorial.rst @@ -295,7 +295,6 @@ Now we can run our post-processing .. code:: python - %%time hit.build_hit(file_out="output/hit/output.lh5",list_file_in="output/stp/*.lh5", out_field="hit",in_field="stp", proc_config=chain,pars=pars,gdml="cfg/geom.gdml",metadata_path="cfg/metadata/",merge_input_files=True,has_global_evtid=True) From abd94507dbbe34f1eb9943f7d23064091aacba1d Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Mon, 18 Nov 2024 19:59:39 +0100 Subject: [PATCH 67/81] pre-commit --- .../notebooks/reboost_hpge_tutorial.rst | 362 +++++++++++------- 1 file changed, 220 insertions(+), 142 deletions(-) diff --git a/docs/source/notebooks/reboost_hpge_tutorial.rst b/docs/source/notebooks/reboost_hpge_tutorial.rst index 7a71e6b..012c5e9 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial.rst +++ b/docs/source/notebooks/reboost_hpge_tutorial.rst @@ -148,10 +148,10 @@ First we set up the python environment. import numpy as np - plt.rcParams['figure.figsize'] = [12, 4] - plt.rcParams['axes.titlesize'] =12 - plt.rcParams['axes.labelsize'] = 12 - plt.rcParams['legend.fontsize'] = 12 + plt.rcParams["figure.figsize"] = [12, 4] + plt.rcParams["axes.titlesize"] = 12 + plt.rcParams["axes.labelsize"] = 12 + plt.rcParams["legend.fontsize"] = 12 handler = colorlog.StreamHandler() @@ -187,85 +187,81 @@ effect of the processors. .. code:: python chain = { - "channels": [ - "det001", - "det002" - ], - "outputs": [ - "t0", # first timestamp - "time", # time of each step - "edep", # energy deposited in each step - "hit_evtid", # id of the hit - "hit_global_evtid", # global id of the hit - "distance_to_nplus_surface_mm", # distance to detector nplus surface - "activeness", # activeness for the step - "rpos_loc", # radius of step - "zpos_loc", # z position - "energy_sum", # true summed energy before dead layer or smearing - "energy_sum_deadlayer", # energy sum after dead layers - "energy_sum_smeared" # energy sum after smearing with resolution - ], - "step_group": { - "description": "group steps by time and evtid with 10us window", - "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", + "channels": ["det001", "det002"], + "outputs": [ + "t0", # first timestamp + "time", # time of each step + "edep", # energy deposited in each step + "hit_evtid", # id of the hit + "hit_global_evtid", # global id of the hit + "distance_to_nplus_surface_mm", # distance to detector nplus surface + "activeness", # activeness for the step + "rpos_loc", # radius of step + "zpos_loc", # z position + "energy_sum", # true summed energy before dead layer or smearing + "energy_sum_deadlayer", # energy sum after dead layers + "energy_sum_smeared", # energy sum after smearing with resolution + ], + "step_group": { + "description": "group steps by time and evtid with 10us window", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", + }, + "locals": { + "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", + "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)", + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)", + }, + "hit_evtid": { + "description": "global evtid of the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.evtid,axis=-1),np.nan)", + }, + "hit_global_evtid": { + "description": "global evtid of the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.global_evtid,axis=-1),np.nan)", + }, + "distance_to_nplus_surface_mm": { + "description": "distance to the nplus surface in mm", + "mode": "function", + "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')", + }, + "activeness": { + "description": "activness based on FCCD (no TL)", + "mode": "eval", + "expression": "ak.where(hit.distance_to_nplus_surface_mm1][1]].time,histtype="step",yerr=False) + plot_times( + data_det001[data_det001.hit_global_evtid == unique[counts > 1][1]].time, + histtype="step", + yerr=False, + ) @@ -537,26 +556,39 @@ processor works as expected. .. code:: python - def plot_map(field,scale="BuPu",clab="Distance [mm]"): + def plot_map(field, scale="BuPu", clab="Distance [mm]"): fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True) - n=100000 - for idx, (data,config) in enumerate(zip([data_det001,data_det002],["cfg/metadata/BEGe.json","cfg/metadata/Coax.json"])): - - reg=pg4.geant4.Registry() - hpge = legendhpges.make_hpge(config,registry=reg) - - legendhpges.draw.plot_profile(hpge, split_by_type=True,axes=axs[idx]) - r = np.random.choice([-1,1],p=[0.5,0.5],size=len(ak.flatten(data.rpos_loc)))*ak.flatten(data.rpos_loc) + n = 100000 + for idx, (data, config) in enumerate( + zip( + [data_det001, data_det002], + ["cfg/metadata/BEGe.json", "cfg/metadata/Coax.json"], + ) + ): + reg = pg4.geant4.Registry() + hpge = legendhpges.make_hpge(config, registry=reg) + + legendhpges.draw.plot_profile(hpge, split_by_type=True, axes=axs[idx]) + r = np.random.choice( + [-1, 1], p=[0.5, 0.5], size=len(ak.flatten(data.rpos_loc)) + ) * ak.flatten(data.rpos_loc) z = ak.flatten(data.zpos_loc) - c=ak.flatten(data[field]) - cut = c<5 - - s=axs[idx].scatter(r[cut][0:n],z[cut][0:n], c= c[cut][0:n],marker=".", label="gen. points",cmap=scale) - #axs[idx].axis("equal") + c = ak.flatten(data[field]) + cut = c < 5 + + s = axs[idx].scatter( + r[cut][0:n], + z[cut][0:n], + c=c[cut][0:n], + marker=".", + label="gen. points", + cmap=scale, + ) + # axs[idx].axis("equal") if idx == 0: axs[idx].set_ylabel("Height [mm]") - c=plt.colorbar(s) + c = plt.colorbar(s) c.set_label(clab) axs[idx].set_xlabel("Radius [mm]") @@ -572,7 +604,7 @@ processor works as expected. .. code:: python - plot_map("activeness",clab="Activeness",scale="viridis") + plot_map("activeness", clab="Activeness", scale="viridis") .. image:: images/output_28_1.png @@ -582,11 +614,10 @@ We can also plot a histogram of the distance to the surface. .. code:: python - def plot_distances(axes,distances,xrange=None,label=" ",**kwargs): - - h=hist.new.Reg(100,*xrange, name="Distance to n+ surface [mm]").Double() + def plot_distances(axes, distances, xrange=None, label=" ", **kwargs): + h = hist.new.Reg(100, *xrange, name="Distance to n+ surface [mm]").Double() h.fill(distances) - h.plot(**kwargs,label=label) + h.plot(**kwargs, label=label) ax.legend() ax.set_yscale("log") if xrange is not None: @@ -595,9 +626,23 @@ We can also plot a histogram of the distance to the surface. .. code:: python - fig,ax = plt.subplots() - plot_distances(ax,ak.flatten(data_det001.distance_to_nplus_surface_mm),xrange=(0,35),label="BEGe",histtype="step",yerr=False) - plot_distances(ax,ak.flatten(data_det002.distance_to_nplus_surface_mm),xrange=(0,35),label="Coax",histtype="step",yerr=False) + fig, ax = plt.subplots() + plot_distances( + ax, + ak.flatten(data_det001.distance_to_nplus_surface_mm), + xrange=(0, 35), + label="BEGe", + histtype="step", + yerr=False, + ) + plot_distances( + ax, + ak.flatten(data_det002.distance_to_nplus_surface_mm), + xrange=(0, 35), + label="Coax", + histtype="step", + yerr=False, + ) @@ -613,13 +658,12 @@ after weighting by the activeness. .. code:: python - def plot_energy(axes,energy,bins=400,xrange=None,label=" ",log_y=True,**kwargs): - - h=hist.new.Reg(bins,*xrange, name="energy [keV]").Double() + def plot_energy(axes, energy, bins=400, xrange=None, label=" ", log_y=True, **kwargs): + h = hist.new.Reg(bins, *xrange, name="energy [keV]").Double() h.fill(energy) - h.plot(**kwargs,label=label) + h.plot(**kwargs, label=label) axes.legend() - if (log_y): + if log_y: axes.set_yscale("log") if xrange is not None: axes.set_xlim(*xrange) @@ -628,8 +672,16 @@ after weighting by the activeness. fig, ax = plt.subplots() ax.set_title("BEGe energy spectrum") - plot_energy(ax,data_det001.energy_sum,yerr=False,label="True energy",xrange=(0,4000)) - plot_energy(ax,data_det001.energy_sum_deadlayer,yerr=False,label="Energy after dead layer",xrange=(0,4000)) + plot_energy( + ax, data_det001.energy_sum, yerr=False, label="True energy", xrange=(0, 4000) + ) + plot_energy( + ax, + data_det001.energy_sum_deadlayer, + yerr=False, + label="Energy after dead layer", + xrange=(0, 4000), + ) @@ -640,8 +692,16 @@ after weighting by the activeness. fig, ax = plt.subplots() ax.set_title("COAX energy spectrum") - plot_energy(ax,data_det002.energy_sum,yerr=False,label="True energy",xrange=(0,4000)) - plot_energy(ax,data_det002.energy_sum_deadlayer,yerr=False,label="Energy after dead layer",xrange=(0,4000)) + plot_energy( + ax, data_det002.energy_sum, yerr=False, label="True energy", xrange=(0, 4000) + ) + plot_energy( + ax, + data_det002.energy_sum_deadlayer, + yerr=False, + label="Energy after dead layer", + xrange=(0, 4000), + ) @@ -661,8 +721,26 @@ dependent resolution curve. To see the effect we have to zoom into the .. code:: python fig, axs = plt.subplots() - plot_energy(axs,data_det001.energy_sum_smeared,yerr=False,label="BEGe",xrange=(2600,2630),log_y=False,bins=150,density=True) - plot_energy(axs,data_det002.energy_sum_smeared,yerr=False,label="COAX",xrange=(2600,2630),log_y=False,bins=150,density=True) + plot_energy( + axs, + data_det001.energy_sum_smeared, + yerr=False, + label="BEGe", + xrange=(2600, 2630), + log_y=False, + bins=150, + density=True, + ) + plot_energy( + axs, + data_det002.energy_sum_smeared, + yerr=False, + label="COAX", + xrange=(2600, 2630), + log_y=False, + bins=150, + density=True, + ) From 01cc0007e5e30aba52dbb16d191172e0c2520acd Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Tue, 19 Nov 2024 12:42:52 +0100 Subject: [PATCH 68/81] [docs] fix build-hit docsring --- src/reboost/hpge/hit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index f16f736..1aee644 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -195,8 +195,8 @@ def build_hit( { "channels": [ "det000", - has_global_evtid: bool = False, - ], + "det001" + ], "outputs": [ "t0", "truth_energy_sum", From f0d13cbae12e687fb7ec4c4bc0ff000a721180d2 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Wed, 20 Nov 2024 16:10:16 +0100 Subject: [PATCH 69/81] change evtid to _evtid and global_evtid to _global_evtid since its not intended to be outputed --- src/reboost/hpge/evt.py | 65 ---------- src/reboost/hpge/hit.py | 213 +++++++++++++++++---------------- src/reboost/hpge/processors.py | 8 +- src/reboost/hpge/tcm.py | 139 +++++++++++++++++++++ src/reboost/hpge/utils.py | 115 +++++++++++++++++- tests/test_hpge_hit.py | 78 ++++++------ tests/test_hpge_step_group.py | 10 +- tests/test_hpge_utils.py | 32 ++++- 8 files changed, 440 insertions(+), 220 deletions(-) delete mode 100644 src/reboost/hpge/evt.py create mode 100644 src/reboost/hpge/tcm.py diff --git a/src/reboost/hpge/evt.py b/src/reboost/hpge/evt.py deleted file mode 100644 index aed3694..0000000 --- a/src/reboost/hpge/evt.py +++ /dev/null @@ -1,65 +0,0 @@ -from __future__ import annotations - -import logging - -import awkward as ak -from lgdo import Table - -from . import processors - -log = logging.getLogger(__name__) - - -def build_tcm( - hit_data: list[ak.Array], - channels: list[int], - *, - window: float = 10, - time_name: str = "t0", - idx_name: str = "hit_global_evtid", -) -> Table: - """Builds a time-coincidence map from a hit of hit data Tables. - - - build an ak.Array of the data merging channels with fields base on "time_name", and "idx_name" and adding a field `rawid` from the channel idx, also add the row (`hit_idx`) - - sorts this array by "idx_name" then "time_name" fields - - group by "idx_name" and "time_name" based on the window parameter - - Parameters - ---------- - hit_data - list of hit tier data for each channel - channels - list of channel indices - window - time window for selecting coincidences (in us) - time_name - name of the field for time information - idx_name - name of the decay index field - - Returns - ------- - an LGDO.VectorOfVectors containing the time-coincidence map - """ - # build ak_obj for sorting - sort_objs = [] - for ch_idx, data_tmp in zip(channels, hit_data): - obj_tmp = ak.copy(data_tmp) - obj_tmp = obj_tmp[[time_name, idx_name]] - hit_idx = ak.local_index(obj_tmp) - - obj_tmp = ak.with_field(obj_tmp, hit_idx, "hit_idx") - - obj_tmp["rawid"] = ch_idx - - sort_objs.append(obj_tmp) - - obj_tot = ak.concatenate(sort_objs) - - return processors.group_by_time( - obj_tot, - time_name=time_name, - evtid_name=idx_name, - window=window, - fields=["rawid", "hit_idx"], - ) diff --git a/src/reboost/hpge/hit.py b/src/reboost/hpge/hit.py index 1aee644..b17104b 100644 --- a/src/reboost/hpge/hit.py +++ b/src/reboost/hpge/hit.py @@ -2,6 +2,7 @@ import logging +import awkward as ak import pyg4ometry from lgdo import Array, ArrayOfEqualSizedArrays, Table, VectorOfVectors, lh5 @@ -173,100 +174,100 @@ def build_hit( merge_input_files: bool = True, ) -> None: """ - Read incrementally the files compute something and then write output - - Parameters - ---------- - file_out - output file path - list_file_in - list of input files - out_field - lh5 group name for output - in_field - lh5 group name for input - proc_config - the configuration file for the processing. Must contain the fields `channels`, `outputs`, `step_group` and operations`. - Optionally can also contain the `locals` field to extract other non-JSON serializable objects used by the processors. - For example: - - .. code-block:: json - - { - "channels": [ - "det000", - "det001" - ], - "outputs": [ - "t0", - "truth_energy_sum", - "smeared_energy_sum", - "evtid" - ], - "step_group": { - "description": "group steps by time and evtid.", - "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" - }, - "locals": { - "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)" - }, - "operations": { - "t0": { - "description": "first time in the hit.", - "mode": "eval", - "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)" - }, - "truth_energy_sum": { - "description": "truth summed energy in the hit.", - "mode": "eval", - "expression": "ak.sum(hit.edep,axis=-1)" - }, - "smeared_energy_sum": { - "description": "summed energy after convolution with energy response.", - "mode": "function", - "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" - } - - } - } - - pars - a dictionary of parameters, must have a field per channel consisting of a `dict` of parameters. For example: - - .. code-block:: json - - { - "det000": { - "reso": 1, - "fccd": 0.1, - "phy_vol_name":"det_phy", - "meta_name": "icpc.json" - } - } - - this should also contain the channel mappings needed by reboost. These are: - - `phy_vol_name`: is the name of the physical volume, - - `meta_name` : is the name of the JSON file with the metadata. - - If these keys are not present both will be set to the remage output table name. - - start_evtid - first `evtid` to read, defaults to 0. - n_evtid - number of `evtid` to read, if `None` all steps are read (the default). - buffer - length of buffer - gdml - path to the input gdml file. - metadata_path - path to the folder with the metadata (i.e. the `hardware.detectors.germanium.diodes` folder of `legend-metadata`) - merge_input_files - boolean flag to merge all input files into a single output. - - Note - ---- - - The operations can depend on the outputs of previous steps, so operations order is important. - - It would be better to have a cleaner way to supply metadata and detector maps. + Read incrementally the files compute something and then write output + + Parameters + ---------- + file_out + output file path + list_file_in + list of input files + out_field + lh5 group name for output + in_field + lh5 group name for input + proc_config + the configuration file for the processing. Must contain the fields `channels`, `outputs`, `step_group` and operations`. + Optionally can also contain the `locals` field to extract other non-JSON serializable objects used by the processors. + For example: + + .. code-block:: json + + { + "channels": [ + "det000", + "det001" + ], + "outputs": [ + "t0", + "truth_energy_sum", + "smeared_energy_sum", + "evtid" + ], + "step_group": { + "description": "group steps by time and evtid.", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" + }, + "locals": { + "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)" + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)" + }, + "truth_energy_sum": { + "description": "truth summed energy in the hit.", + "mode": "eval", + "expression": "ak.sum(hit.edep,axis=-1)" + }, + "smeared_energy_sum": { + "description": "summed energy after convolution with energy response.", + "mode": "function", + "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" + } + + } + } + + pars + a dictionary of parameters, must have a field per channel consisting of a `dict` of parameters. For example: + + .. code-block:: json + + { + "det000": { + "reso": 1, + "fccd": 0.1, + "phy_vol_name":"det_phy", + "meta_name": "icpc.json" + } + } + + this should also contain the channel mappings needed by reboost. These are: + - `phy_vol_name`: is the name of the physical volume, + - `meta_name` : is the name of the JSON file with the metadata. + + If these keys are not present both will be set to the remage output table name. + + start_evtid + first `evtid` to read, defaults to 0. + n_evtid + number of `evtid` to read, if `None` all steps are read (the default). + buffer + length of buffer + gdml + path to the input gdml file. + metadata_path + path to the folder with the metadata (i.e. the `hardware.detectors.germanium.diodes` folder of `legend-metadata`) + merge_input_files + boolean flag to merge all input files into a single output. + + Note + ---- + - The operations can depend on the outputs of previous steps, so operations order is important. + - It would be better to have a cleaner way to supply metadata and detector maps. """ # get the gdml file @@ -289,8 +290,8 @@ def build_hit( vertices = lh5.read_as(f"{in_field}/vertices/evtid", file_in, "np") for ch_idx, d in enumerate(proc_config["channels"]): - msg = f"...running hit tier for {d}" - log.debug(msg) + msg = f"...running hit tier for {file_in} and {d}" + log.info(msg) # get local variables @@ -317,14 +318,14 @@ def build_hit( # number of iterations (used to handle last iteration) it, entries, max_idx = utils.get_iterator( - file=file_in, field=in_field, detector=d, buffer=buffer + file=file_in, lh5_table=f"{in_field}/{d}", buffer=buffer ) buffer_rows = None # iterate over the LH5 file for idx, (lh5_obj, _, n_rows) in enumerate(it): msg = f"... processed {idx} chunks out of {max_idx}" - log.info(msg) + log.debug(msg) # convert to awkward ak_obj = lh5_obj.view_as("ak") @@ -344,7 +345,7 @@ def build_hit( # check if the chunk can be skipped, does lack of sorting break this? if not utils.get_include_chunk( - obj.global_evtid, + obj._global_evtid, start_glob_evtid=finfo.first_global_evtid, end_glob_evtid=finfo.last_global_evtid, ): @@ -352,10 +353,18 @@ def build_hit( # select just the correct global evtid objects obj = obj[ - (obj.global_evtid >= finfo.first_global_evtid) - & (obj.global_evtid <= finfo.last_global_evtid) + (obj._global_evtid >= finfo.first_global_evtid) + & (obj._global_evtid <= finfo.last_global_evtid) ] + # rename the fields + obj = ak.with_field( + obj, + obj["evtid"], + "_evtid", + ) + obj = ak.without_field(obj, "evtid") + # convert back to a table, should work data = Table(obj) @@ -385,4 +394,4 @@ def build_hit( if (merge_input_files is False) else file_out ) - lh5.write(grouped, f"{out_field}/{d}", file_out_tmp, wo_mode=mode) + lh5.write(grouped, f"{d}/{out_field}", file_out_tmp, wo_mode=mode) diff --git a/src/reboost/hpge/processors.py b/src/reboost/hpge/processors.py index aba0704..d390364 100644 --- a/src/reboost/hpge/processors.py +++ b/src/reboost/hpge/processors.py @@ -8,7 +8,7 @@ from numpy.typing import ArrayLike -def sort_data(obj: ak.Array, *, time_name: str = "time", evtid_name: str = "evtid") -> ak.Array: +def sort_data(obj: ak.Array, *, time_name: str = "time", evtid_name: str = "_evtid") -> ak.Array: """Sort the data by evtid then time. Parameters @@ -52,7 +52,7 @@ def group_by_evtid(data: Table) -> Table: obj_ak = sort_data(obj_ak) # extract cumulative lengths - counts = ak.run_lengths(obj_ak.evtid) + counts = ak.run_lengths(obj_ak._evtid) cumulative_length = np.cumsum(counts) # build output table @@ -69,7 +69,7 @@ def group_by_time( data: Table | ak.Array, window: float = 10, time_name: str = "time", - evtid_name: str = "evtid", + evtid_name: str = "_evtid", fields: list | None = None, ) -> lgdo.Table: """Grouping of steps by `evtid` and `time`. @@ -125,7 +125,7 @@ def group_by_time( out_tbl = Table(size=len(cumulative_length)) fields = obj.fields if fields is None else fields - for f in obj.fields: + for f in fields: out_tbl.add_field( f, VectorOfVectors(cumulative_length=cumulative_length, flattened_data=obj[f]) ) diff --git a/src/reboost/hpge/tcm.py b/src/reboost/hpge/tcm.py new file mode 100644 index 0000000..c14ef11 --- /dev/null +++ b/src/reboost/hpge/tcm.py @@ -0,0 +1,139 @@ +from __future__ import annotations + +import logging +import re + +import awkward as ak +from lgdo import Table, lh5 + +from . import processors, utils + +log = logging.getLogger(__name__) + + +def build_tcm( + hit_file: str, + out_file: str, + channels: list[str], + time_name: str = "t0", + idx_name: str = "hit_global_evtid", + time_window_in_us: float = 10, + idx_buffer: int = int(1e7), +) -> None: + """Build the (Time Coincidence Map) TCM from the hit tier. + + Parameters + ---------- + hit_file + path to hit tier file. + out_file + output path for tcm. + channels + list of channel names to include. + time_name + name of the hit tier field used for time grouping. + idx_name + name of the hit tier field used for index grouping. + time_window_in_us + time window used to define the grouping. + idx_buffer + number of evtid to read in simultaneously. + + + Notes + ----- + This function avoids excessive memory usage by iterating over the files select sets of evtid, + as such it may be a bit wasteful of IO, since the same block may need to be read multiple times. + Since only a few fields are read a high value of idx_buffer can be used. + + """ + + hash_func = r"\d+" + + # get number of evtids + n_evtid = utils.get_num_evtid_hit_tier(hit_file, channels, idx_name) + + # not iterate over evtid + n_evtid_read = 0 + mode = "of" + msg = "start building time-coincidence map" + log.info(msg) + + chan_ids = [re.search(hash_func, channel).group() for channel in channels] + + while n_evtid_read < n_evtid: + # object for the data + + msg = f"... iterating: selecting evtid {n_evtid_read} to {n_evtid_read+idx_buffer}" + log.debug(msg) + + hit_data, n_evtid_read = utils.read_some_idx_as_ak( + channels=channels, + file=hit_file, + n_idx_read=n_evtid_read, + idx_buffer=idx_buffer, + idx_name=idx_name, + field_mask=[idx_name, time_name], + ) + + tcm = get_tcm_from_ak( + hit_data, chan_ids, window=time_window_in_us, time_name=time_name, idx_name=idx_name + ) + if tcm is not None: + lh5.write(tcm, "tcm", out_file, wo_mode=mode) + mode = "append" + + +def get_tcm_from_ak( + hit_data: list[ak.Array], + channels: list[int], + *, + window: float = 10, + time_name: str = "t0", + idx_name: str = "hit_global_evtid", +) -> Table: + """Builds a time-coincidence map from a hit of hit data Tables. + + - build an ak.Array of the data merging channels with fields base on "time_name", and "idx_name" and adding a field `rawid` from the channel idx, also add the row (`hit_idx`) + - sorts this array by "idx_name" then "time_name" fields + - group by "idx_name" and "time_name" based on the window parameter + + Parameters + ---------- + hit_data + list of hit tier data for each channel + channels + list of channel indices + window + time window for selecting coincidences (in us) + time_name + name of the field for time information + idx_name + name of the decay index field + + Returns + ------- + an LGDO.VectorOfVectors containing the time-coincidence map + """ + # build ak_obj for sorting + sort_objs = [] + + for ch_idx, data_tmp in zip(channels, hit_data): + obj_tmp = ak.copy(data_tmp) + obj_tmp = obj_tmp[[time_name, idx_name]] + hit_idx = ak.local_index(obj_tmp) + + obj_tmp = ak.with_field(obj_tmp, hit_idx, "hit_idx") + + obj_tmp["channel_id"] = int(ch_idx) + sort_objs.append(obj_tmp) + + obj_tot = ak.concatenate(sort_objs) + + return processors.group_by_time( + obj_tot, + time_name=time_name, + evtid_name=idx_name, + window=window, + fields=["channel_id", "hit_idx"], + ) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index 09fb666..bc71f8c 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -115,6 +115,42 @@ def get_num_simulated(file_list: list, table: str = "hit") -> int: return n +def get_num_evtid_hit_tier(hit_file: str, channels: list[str], idx_name: str) -> int: + """Get the number of evtid in the hit file. + + Parameters + ---------- + hit_file + path to the hit file + channels + list of channel names + idx_name + name of the index field + + Returns + ------- + largest evtid in the files. + + Note + ---- + To avoid reading the full file into memory we assume the hit tier files are sorted by "idx_name". This should always be the case. + """ + + n_max = 0 + for channel in channels: + # use the iterator to get the file size + it = lh5.LH5Iterator(hit_file, f"{channel}/hit/", buffer_len=int(5e6)) + entries = it._get_file_cumentries(0) + + ob_ak = lh5.read(f"{channel}/hit/", hit_file, idx=[entries - 1]).view_as("ak") + + max_evtid = ob_ak[idx_name][0] + + n_max = max_evtid if (max_evtid > n_max) else n_max + + return n_max + + def get_file_list(path: str | list[str]) -> NDArray: """Get list of files to read. @@ -214,7 +250,7 @@ def get_global_evtid(first_evtid: int, obj: ak.Array, vertices: ArrayLike) -> ak msg = "Some of the evtids in the obj do not correspond to rows in the input" raise ValueError(msg) - return ak.with_field(obj, first_evtid + indices, "global_evtid") + return ak.with_field(obj, first_evtid + indices, "_global_evtid") def get_include_chunk( @@ -385,10 +421,10 @@ def _merge_arrays( return obj, buffer_rows, mode -def get_iterator(file: str, field: str, detector: str, buffer: int): +def get_iterator(file: str, buffer: int, lh5_table: str, **kwargs) -> tuple[LH5Iterator, int, int]: """Get information on the iterator (number of index and entries).""" - it = LH5Iterator(file, f"{field}/{detector}", buffer_len=buffer) + it = LH5Iterator(file, lh5_table, buffer_len=buffer, **kwargs) entries = it._get_file_cumentries(0) # number of blocks is ceil of entries/buffer, @@ -398,6 +434,79 @@ def get_iterator(file: str, field: str, detector: str, buffer: int): return it, entries, max_idx +def read_some_idx_as_ak( + channels: list, + file: str, + n_idx_read: int, + idx_buffer: int, + idx_name: str, + field_mask: list[str], + it_buffer: int = 100000, +) -> tuple[list[ak.Array], int]: + """Read just rows corresponding to a idx_name field in the range n_idx_read to n_idx_read + idx_buffer. + + Works by iterating over the file only selecting entries in the desired range, also converting to awkward + + Parameters + ---------- + channels + list of channels to read + file + path to hit tier file to read + n_idx_read + first index to read + idx_buffer + number of indices to read. + idx_name + name of the field containing the index. + field_mask + fields to read + it_buffer + buffer for the iterator + + Returns + ------- + tuple of a list of the data per channel and the updated number of index read. + """ + + hit_data = [] + + # loop over channels + for channel in channels: + data_tmp = [] + # iteration over the file + it, entries, max_idx = get_iterator( + file=file, buffer=it_buffer, lh5_table=f"{channel}/hit", field_mask=field_mask + ) + + for idx, (lh5_obj, _, n_rows) in enumerate(it): + ak_obj = lh5_obj.view_as("ak") + + if idx == max_idx: + ak_obj = ak_obj[:n_rows] + + # assumes index are sorted + low_idx = ak_obj[idx_name][0] + + # check if the chunk contains evtid low_evtid + if not ((low_idx >= n_idx_read) & (low_idx < n_idx_read + idx_buffer)): + continue + + # slice and select just the needed cols + condition = (ak_obj[idx_name] >= n_idx_read) & ( + ak_obj[idx_name] < n_idx_read + idx_buffer + ) + ak_obj_sel = ak_obj[condition] + + data_tmp.append(ak_obj_sel) + + hit_data.append(ak.concatenate(data_tmp)) + + n_idx_read += idx_buffer + + return hit_data, n_idx_read + + __file_extensions__ = {"json": [".json"], "yaml": [".yaml", ".yml"]} diff --git a/tests/test_hpge_hit.py b/tests/test_hpge_hit.py index c0517bf..806c6da 100644 --- a/tests/test_hpge_hit.py +++ b/tests/test_hpge_hit.py @@ -131,23 +131,23 @@ def test_eval_with_hpge_and_phy_vol(test_data_configs): def test_reboost_input_file(tmp_path): # make it large enough to be multiple groups rng = np.random.default_rng() - evtid_1 = np.sort(rng.integers(int(1e5), size=(int(1e6)))) - time_1 = rng.uniform(low=0, high=1, size=(int(1e6))) - edep_1 = rng.uniform(low=0, high=1000, size=(int(1e6))) - pos_x_1 = rng.uniform(low=-50, high=50, size=(int(1e6))) - pos_y_1 = rng.uniform(low=-50, high=50, size=(int(1e6))) - pos_z_1 = rng.uniform(low=-50, high=50, size=(int(1e6))) + evtid_1 = np.sort(rng.integers(int(1e4), size=(int(1e5)))) + time_1 = rng.uniform(low=0, high=1, size=(int(1e5))) + edep_1 = rng.uniform(low=0, high=1000, size=(int(1e5))) + pos_x_1 = rng.uniform(low=-50, high=50, size=(int(1e5))) + pos_y_1 = rng.uniform(low=-50, high=50, size=(int(1e5))) + pos_z_1 = rng.uniform(low=-50, high=50, size=(int(1e5))) # make it not divide by the buffer len - evtid_2 = np.sort(rng.integers(int(1e5), size=(30040))) - time_2 = rng.uniform(low=0, high=1, size=(30040)) - edep_2 = rng.uniform(low=0, high=1000, size=(30040)) - pos_x_2 = rng.uniform(low=-50, high=50, size=(30040)) - pos_y_2 = rng.uniform(low=-50, high=50, size=(30040)) - pos_z_2 = rng.uniform(low=-50, high=50, size=(30040)) + evtid_2 = np.sort(rng.integers(int(1e4), size=(3004))) + time_2 = rng.uniform(low=0, high=1, size=(3004)) + edep_2 = rng.uniform(low=0, high=1000, size=(3004)) + pos_x_2 = rng.uniform(low=-50, high=50, size=(3004)) + pos_y_2 = rng.uniform(low=-50, high=50, size=(3004)) + pos_z_2 = rng.uniform(low=-50, high=50, size=(3004)) - vertices_1 = ak.Array({"evtid": np.arange(int(1e5))}) - vertices_2 = ak.Array({"evtid": np.arange(int(1e5))}) + vertices_1 = ak.Array({"evtid": np.arange(int(1e4))}) + vertices_2 = ak.Array({"evtid": np.arange(int(1e4))}) arr_1 = ak.Array( { @@ -186,7 +186,7 @@ def test_build_hit(test_reboost_input_file): "channels": [ "det001", ], - "outputs": ["t0", "evtid"], + "outputs": ["t0", "_evtid"], "step_group": { "description": "group steps by time and evtid.", "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", @@ -216,17 +216,17 @@ def test_build_hit(test_reboost_input_file): out_field="hit", proc_config=proc_config, pars={}, - buffer=100000, + buffer=10000, ) - tab_1 = lh5.read("hit/det001", str(test_reboost_input_file / "out_1.lh5")).view_as("ak") - tab_2 = lh5.read("hit/det001", str(test_reboost_input_file / "out_2.lh5")).view_as("ak") - tab_merge = lh5.read("hit/det001", str(test_reboost_input_file / "out_merge.lh5")).view_as("ak") + tab_1 = lh5.read("det001/hit", str(test_reboost_input_file / "out_1.lh5")).view_as("ak") + tab_2 = lh5.read("det001/hit", str(test_reboost_input_file / "out_2.lh5")).view_as("ak") + tab_merge = lh5.read("det001/hit", str(test_reboost_input_file / "out_merge.lh5")).view_as("ak") # check lengths - assert len(ak.flatten(tab_1.evtid, axis=-1)) == int(1e6) - assert len(ak.flatten(tab_2.evtid, axis=-1)) == 30040 - assert len(ak.flatten(tab_merge.evtid, axis=-1)) == 30040 + int(1e6) + assert len(ak.flatten(tab_1._evtid, axis=-1)) == int(1e5) + assert len(ak.flatten(tab_2._evtid, axis=-1)) == 3004 + assert len(ak.flatten(tab_merge._evtid, axis=-1)) == 3004 + int(1e5) # one call but write both files hit.build_hit( @@ -236,16 +236,16 @@ def test_build_hit(test_reboost_input_file): out_field="hit", proc_config=proc_config, pars={}, - buffer=100000, + buffer=10000, merge_input_files=False, ) - tab_1 = lh5.read("hit/det001", str(test_reboost_input_file / "out_0.lh5")).view_as("ak") - tab_2 = lh5.read("hit/det001", str(test_reboost_input_file / "out_1.lh5")).view_as("ak") + tab_1 = lh5.read("det001/hit", str(test_reboost_input_file / "out_0.lh5")).view_as("ak") + tab_2 = lh5.read("det001/hit", str(test_reboost_input_file / "out_1.lh5")).view_as("ak") # check lengths - assert len(ak.flatten(tab_1.evtid, axis=-1)) == int(1e6) - assert len(ak.flatten(tab_2.evtid, axis=-1)) == 30040 + assert len(ak.flatten(tab_1._evtid, axis=-1)) == int(1e5) + assert len(ak.flatten(tab_2._evtid, axis=-1)) == 3004 # test with a smaller buffer hit.build_hit( @@ -255,15 +255,15 @@ def test_build_hit(test_reboost_input_file): out_field="hit", proc_config=proc_config, pars={}, - buffer=10000, + buffer=1000, ) tab_small = lh5.read( - "hit/det001", str(test_reboost_input_file / "out_small_buffer.lh5") + "det001/hit", str(test_reboost_input_file / "out_small_buffer.lh5") ).view_as("ak") # buffer does not affect results - assert ak.all(ak.flatten(tab_merge.evtid) == ak.flatten(tab_small.evtid)) + assert ak.all(ak.flatten(tab_merge._evtid) == ak.flatten(tab_small._evtid)) def test_build_hit_some_row(test_reboost_input_file): @@ -271,7 +271,7 @@ def test_build_hit_some_row(test_reboost_input_file): "channels": [ "det001", ], - "outputs": ["t0", "evtid"], + "outputs": ["t0", "_evtid"], "step_group": { "description": "group steps by time and evtid.", "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", @@ -300,13 +300,13 @@ def test_build_hit_some_row(test_reboost_input_file): out_field="hit", proc_config=proc_config, pars={}, - buffer=100000, + buffer=10000, ) # test reading the data in two goes gives the same result for n_ev, s_ev, out in zip( - [int(1e4), int(1e5 - 1e4), int(1e5), int(1e5)], - [0, int(1e4), 0, 1000], + [int(1e3), int(1e4 - 1e3), int(1e4), int(1e4)], + [0, int(1e3), 0, 100], ["out_some_rows.lh5", "out_rest_rows.lh5", "out_all_file_one.lh5", "out_mix.lh5"], ): # test read only some events @@ -325,19 +325,19 @@ def test_build_hit_some_row(test_reboost_input_file): buffer=100000, ) - tab_some = lh5.read("hit/det001", str(test_reboost_input_file / "out_some_rows.lh5")).view_as( + tab_some = lh5.read("det001/hit", str(test_reboost_input_file / "out_some_rows.lh5")).view_as( "ak" ) - tab_rest = lh5.read("hit/det001", str(test_reboost_input_file / "out_rest_rows.lh5")).view_as( + tab_rest = lh5.read("det001/hit", str(test_reboost_input_file / "out_rest_rows.lh5")).view_as( "ak" ) - tab_1 = lh5.read("hit/det001", str(test_reboost_input_file / "out_all_file_one.lh5")).view_as( + tab_1 = lh5.read("det001/hit", str(test_reboost_input_file / "out_all_file_one.lh5")).view_as( "ak" ) tab_merge = ak.concatenate((tab_some, tab_rest)) - assert ak.all(ak.all(tab_merge.evtid == tab_1.evtid, axis=-1)) + assert ak.all(ak.all(tab_merge._evtid == tab_1._evtid, axis=-1)) def test_build_hit_with_locals(test_reboost_input_file, test_data_configs): @@ -345,7 +345,7 @@ def test_build_hit_with_locals(test_reboost_input_file, test_data_configs): "channels": [ "det001", ], - "outputs": ["t0", "evtid", "distance_to_surface"], + "outputs": ["t0", "_evtid", "distance_to_surface"], "step_group": { "description": "group steps by time and evtid.", "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", diff --git a/tests/test_hpge_step_group.py b/tests/test_hpge_step_group.py index 52d9bab..69141cd 100644 --- a/tests/test_hpge_step_group.py +++ b/tests/test_hpge_step_group.py @@ -9,14 +9,14 @@ def test_evtid_group(): in_arr_evtid = ak.Array( - {"evtid": [1, 1, 1, 2, 2, 10, 10, 11, 12, 12, 12], "time": np.zeros(11)} + {"_evtid": [1, 1, 1, 2, 2, 10, 10, 11, 12, 12, 12], "time": np.zeros(11)} ) in_tab = Table(in_arr_evtid) out = processors.group_by_evtid(in_tab) out_ak = out.view_as("ak") - assert ak.all(out_ak.evtid == [[1, 1, 1], [2, 2], [10, 10], [11], [12, 12, 12]]) + assert ak.all(out_ak._evtid == [[1, 1, 1], [2, 2], [10, 10], [11], [12, 12, 12]]) assert ak.all(out_ak.time == [[0, 0, 0], [0, 0], [0, 0], [0], [0, 0, 0]]) # test the eval in build hit also @@ -31,7 +31,7 @@ def test_evtid_group(): out_eval_ak = out_eval.view_as("ak") - assert ak.all(out_ak.evtid == out_eval_ak.evtid) + assert ak.all(out_ak._evtid == out_eval_ak._evtid) assert ak.all(out_ak.time == out_eval_ak.time) @@ -39,7 +39,7 @@ def test_time_group(): # time units are ns in_arr_evtid = ak.Array( { - "evtid": [1, 1, 1, 2, 2, 2, 2, 2, 11, 12, 12, 12, 15, 15, 15, 15, 15], + "_evtid": [1, 1, 1, 2, 2, 2, 2, 2, 11, 12, 12, 12, 15, 15, 15, 15, 15], "time": [ 0, -2000, @@ -68,7 +68,7 @@ def test_time_group(): out = processors.group_by_time(in_tab, window=1) out_ak = out.view_as("ak") assert ak.all( - out_ak.evtid + out_ak._evtid == [[1], [1], [1], [2, 2], [2], [2, 2], [11], [12], [12, 12], [15, 15, 15], [15, 15]] ) assert ak.all( diff --git a/tests/test_hpge_utils.py b/tests/test_hpge_utils.py index 850bd90..cd1f2fd 100644 --- a/tests/test_hpge_utils.py +++ b/tests/test_hpge_utils.py @@ -21,6 +21,7 @@ get_global_evtid_range, get_hpge, get_include_chunk, + get_num_evtid_hit_tier, get_num_simulated, get_phy_vol, load_dict, @@ -209,6 +210,33 @@ def test_get_n_sim(test_lh5_files): assert n123 == [14002, 25156, int(1e7)] +@pytest.fixture +def test_hit_file(tmp_path): + n1 = 10 + tab_ch1 = Table(size=n1) + tab_ch1.add_field("global_evtid", Array(np.array([1, 4, 5, 6, 7, 9, 11, 12, 15, 17]))) + lh5.write(tab_ch1, "det001/hit", tmp_path / "file1.lh5", wo_mode="of") + + n2 = 5 + tab_ch2 = Table(size=n2) + tab_ch2.add_field("global_evtid", Array(np.array([7, 8, 12, 13, 14]))) + lh5.write(tab_ch2, "det002/hit", tmp_path / "file1.lh5", wo_mode="append") + return tmp_path / "file1.lh5" + + +def test_num_evtid_hit_tier(test_hit_file): + # both channels + assert get_num_evtid_hit_tier(str(test_hit_file), ["det001", "det002"], "global_evtid") == 17 + + # one at a time + assert get_num_evtid_hit_tier(str(test_hit_file), ["det001"], "global_evtid") == 17 + assert get_num_evtid_hit_tier(str(test_hit_file), ["det002"], "global_evtid") == 14 + + +def test_read_some_index(test_hit_file): + pass + + def test_global_evtid_range(): # raise exception if n_evtid is too large with pytest.raises(ValueError): @@ -225,14 +253,14 @@ def test_get_global_evtid(): vertices = [0, 1, 2, 3, 4, 5] input_evtid = [2, 3, 4, 5, 5, 5] obj = ak.Array({"evtid": input_evtid}) - assert np.all(get_global_evtid(first_evtid, obj, vertices).global_evtid == input_evtid) + assert np.all(get_global_evtid(first_evtid, obj, vertices)._global_evtid == input_evtid) # now if we only have some vertices vertices = [0, 2, 4, 6, 8, 10] input_evtid = [4, 6, 8, 10, 10, 10] obj = ak.Array({"evtid": input_evtid}) assert np.all( - get_global_evtid(first_evtid, obj, vertices).global_evtid == np.array(input_evtid) / 2.0 + get_global_evtid(first_evtid, obj, vertices)._global_evtid == np.array(input_evtid) / 2.0 ) From f59423198aa728a97c1ce9e26634a83543f4b821 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Wed, 20 Nov 2024 16:10:27 +0100 Subject: [PATCH 70/81] additions to documentation --- docs/source/conf.py | 2 + docs/source/manual/hpge.rst | 217 +++++++++++------- .../notebooks/reboost_hpge_evt_tutorial.rst | 2 + ...rial.rst => reboost_hpge_hit_tutorial.rst} | 4 +- docs/source/tutorial.rst | 3 +- 5 files changed, 137 insertions(+), 91 deletions(-) create mode 100644 docs/source/notebooks/reboost_hpge_evt_tutorial.rst rename docs/source/notebooks/{reboost_hpge_tutorial.rst => reboost_hpge_hit_tutorial.rst} (99%) diff --git a/docs/source/conf.py b/docs/source/conf.py index 239cfe9..b422399 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -54,6 +54,8 @@ "scipy": ("http://docs.scipy.org/doc/scipy/reference", None), "pandas": ("https://pandas.pydata.org/docs", None), "matplotlib": ("http://matplotlib.org/stable", None), + "pygama": ("https://pygama.readthedocs.io/en/stable/", None), + "legendhpges": ("https://legend-pygeom-hpges.readthedocs.io/en/latest/", None), } # add new intersphinx mappings here # sphinx-autodoc diff --git a/docs/source/manual/hpge.rst b/docs/source/manual/hpge.rst index 395319a..681aef5 100644 --- a/docs/source/manual/hpge.rst +++ b/docs/source/manual/hpge.rst @@ -72,7 +72,7 @@ The processing is defined in terms of several *tiers*, mirroring the logic of th - **stp** or "step" the raw *remage* outputs corresponding to Geant4 steps, - **hit** the data from each channel independently after grouping in discrete physical interactions in the detector. -- **evt** or "event" the data combining the information from various detectors. +- **evt** or "event" the data combining the information from various detectors (includes generating the **tcm** or time-coincidence map). The processing is divided into two steps :func:`build_hit` ``build_evt`` [WIP]. @@ -83,47 +83,40 @@ The hit tier converts the raw remage file based on Geant4 steps to a file corres Only steps corresponding to individual detectors are performed in this step. The processing is based on a YAML or JSON configuration file. For example: -.. code-block:: json - - { - "channels": [ - "det000", - "det001", - "det002", - "det003" - ], - "outputs": [ - "t0", - "truth_energy_sum", - "smeared_energy_sum", - "evtid" - ], - "step_group": { - "description": "group steps by time and evtid.", - "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" - }, - "locals": { - "hpge": "reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)" - }, - "operations": { - "t0": { - "description": "first time in the hit.", - "mode": "eval", - "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)" - }, - "truth_energy_sum": { - "description": "truth summed energy in the hit.", - "mode": "eval", - "expression": "ak.sum(hit.edep,axis=-1)" - }, - "smeared_energy_sum": { - "description": "summed energy after convolution with energy response.", - "mode": "function", - "expression": "reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso)" - } - - } - } +.. code-block:: yaml + + channels: + - det000 + - det001 + - det002 + - det003 + + outputs: + - t0 + - truth_energy_sum + - smeared_energy_sum + - evtid + + step_group: + description: group steps by time and evtid. + expression: 'reboost.hpge.processors.group_by_time(stp,window=10)' + locals: + hpge: 'reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)' + + operations: + t0: + description: first time in the hit. + mode: eval + expression: 'ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)' + truth_energy_sum: + description: truth summed energy in the hit. + mode: eval + expression: 'ak.sum(hit.edep,axis=-1)' + smeared_energy_sum: + description: summed energy after convolution with energy response. + mode: function + expression: | + reboost.hpge.processors.smear_energies(hit.truth_energy_sum,reso=pars.reso) It is necessary to provide several sub-dictionaries: @@ -143,7 +136,7 @@ with a jagged structure where each row corresponds to a physical hit in the dete time: [0 , 0.1 , 0, ... ] .... -Becomes a Table of ``VectorOfVectors`` with a jagged structure. For example: +Becomes a :class:`Table`` of :class:`VectorOfVectors` with a jagged structure. For example: .. code-block:: console @@ -156,8 +149,8 @@ The recommended tool to manipulate jagged arrays is awkward `[docs] `_ object for the detector. +For example one useful object for post-processing is the :class:`legendhpges.base.HPGe` object for the detector. This can be constructed from the metadata using. -.. code-block:: json +.. code-block:: yaml - {"hpge": "reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)"} + hpge: 'reboost.hpge.utils(meta_path=meta,pars=pars,detector=detector)' This will then create the hpge object for each detector and add it to the "locals" mapping of "eval" so it can be used. @@ -246,40 +237,90 @@ with the same length as the hit table. This means processors can act on subarray It is simple to accommodate most of the current and future envisiged post-processing in this framework. For example: -- clustering hits would result in a new VectorOfVectors with the same number of rows but fewer entries per vector, -- pulse shape simulations to produce waveforms (or ML emmulation of this) would give an ArrayOfEqualSizedArrays, -- processing in parallel many parameters (eg for systematic) studies would give a nested VectorOfVectors. +- clustering hits would result in a new :class:`VectorOfVectors` with the same number of rows but fewer entries per vector, +- pulse shape simulations to produce waveforms (or ML emmulation of this) would give an :class:`ArrayOfEqualSizedArrays`, +- processing in parallel many parameters (eg. for systematic) studies would give a nested :class:`VectorOfVectors`. + +Time coincidence map (TCM) +-------------------------- + +The next step in the processing chain is the **event** tier, this combines the information from the various sub-systems to produce detector wide events. +However, before we can generate the *evt* tier we need to generate the "time-coincidence-map". This determines which of the hits in the various detectors +are occurring *simultaneously* (actually within some coincidence time window) and should be part of the same event. +Some information on the TCM in data is given in `[pygama-evt-docs] `_. The *reboost* TCM is fairly similar. + +The generation of the TCM is performed by :func:`reboost.hpge.tcm.build_tcm` which generates and stores the TCM on disk. + +.. warning:: + The generation of the TCM from the times of hits is slightly different to the "hardware-tcm" used for LEGEND physics data. In the experimental data, a signal on one channel, triggers + the readout of the full array. Care should be taken for deecays or interactions with ~ :math:`10-100 \mu s` time differences between hits. + However, in practice for most cases the time differences are very small and the two TCM should be equivalent after removing hits below threshold. + +Before explaining how the TCM is constructed we make a detour to explain the different indices present in the reboost and remage files. + +- **stp.evtid**: in the remage output files we have a variable called evtid. This is the index of the decay, so as explained earlier a single evtid can result in multiple hits in the detector. +- **hit.global_evtid**: However, when multiple files are read the evtid are now no longer necessarily sorted or unique and so we define a new index in the hit tier. This is extracted from the vertices table as + the sum of the number of evtid in the previous files plus the row in the vertex table of the evtid. A vector of vectors called "hit._global_evtid" is added to the hit table. We can also extract + a flat array of indices (for easier use in the evt tier) with a simple processor: + + .. code:: yaml + + global_evtid: + description: global evtid of the hit. + mode: eval + expression: 'ak.fill_none(,axis=-1),np.nan)' + + + This field is mandatory to generate the TCM, and the name of the field is an argument to "build_tcm". +- **hit idx**: Multiple rows in the hit table may contain the same "global_evtid" while many "global_evtid" do not result in a hit. The hit idx is just the row of the hit table a hit corresponds to. +- **channel_id**: When we combine multiple channels we assign them an index, this is set in the original remage macro file. + +:func:`build_tcm` saves two VectorOfVectors (with the same shape) to the output file, corresponding to the **channel_id** and the **hit_idx** of each event. + +.. note:: + - This storage is slightly different to the TCM in data, but is chosen to allow easy iteration through the TCM. + - We do not currently support merging multiple **hit** tier files, this is since then the TCM would need to know which file each hit corresponded to. Event tier processing (work in progress) ---------------------------------------- + + The event tier combines the information from various detector systems. Including in future the optical detector channels. This step is thus only necessary for experiments with many output channels. -The processing is again based on a YAML or JSON configuration file. For example: - -.. code-block:: json - - { - - "channels":{ - "geds_usable":[ - "det000", - "det001", - "det002" - ], - "geds_ac":[ - "det003" - ] - }, - "outputs": [ - "energy", - "detector", - "is_good_hit", - "multiplicity" - ], - "event_group": { - "description": "group hits by time and evtid.", - "expression": "reboost.hpge.processors.group_by_time(stp,window=10)" - } - } +The processing is again based on a YAML or JSON configuration file. Most of the work to evaluate each expression is done by the :func:`pygama.evt.build_evt.evaluate_expression`. + +The input configuration file is identical to a pygama evt tier configuration file (see an example in :func:`pygama.evt.build_evt.build_evt`). + +For example: + +.. code-block:: yaml + + channels: + geds_on: + - det000 + - det001 + - det002 + geds_ac: + - det003 + + outputs: + - energy + - multiplicity + + energy_id: + channels: geds_on + aggregation_mode: gather + query: hit.energy > 25 + expression: tcm.channel_id + energy: + aggregation_mode: 'keep_at_ch:evt.energy_id' + expression: hit.energy > 25 + multiplicity: + channels: + - geds_on + - geds_ac + aggregation_mode: sum + expression: hit.energy > 25 + initial: 0 diff --git a/docs/source/notebooks/reboost_hpge_evt_tutorial.rst b/docs/source/notebooks/reboost_hpge_evt_tutorial.rst new file mode 100644 index 0000000..efe47ab --- /dev/null +++ b/docs/source/notebooks/reboost_hpge_evt_tutorial.rst @@ -0,0 +1,2 @@ +Event tier simulation processing +================================ diff --git a/docs/source/notebooks/reboost_hpge_tutorial.rst b/docs/source/notebooks/reboost_hpge_hit_tutorial.rst similarity index 99% rename from docs/source/notebooks/reboost_hpge_tutorial.rst rename to docs/source/notebooks/reboost_hpge_hit_tutorial.rst index 012c5e9..c0d1427 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial.rst +++ b/docs/source/notebooks/reboost_hpge_hit_tutorial.rst @@ -1,5 +1,5 @@ -Basic HPGe simulation processing -================================ +Hit tier simulation processing +============================== This tutorial describes how to process the HPGe detector simulations from **remage** with **reboost**. It buils on the official **remage** diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst index 85e317a..bf2ffdb 100644 --- a/docs/source/tutorial.rst +++ b/docs/source/tutorial.rst @@ -6,4 +6,5 @@ Basic Tutorial :maxdepth: 2 :caption: Contents: - notebooks/reboost_hpge_tutorial + notebooks/reboost_hpge_hit_tutorial + notebooks/reboost_hpge_evt_tutorial From 9509c2a25bbf7343b3a7ad9bc4383c57aff84dbb Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Wed, 20 Nov 2024 17:06:59 +0100 Subject: [PATCH 71/81] [docs] switch tutorials from rst to ipynb (easier to mantain) --- docs/source/conf.py | 11 +- .../notebooks/reboost_hpge_hit_tutorial.rst | 758 -------------- .../notebooks/reboost_hpge_tutorial.ipynb | 952 ++++++++++++++++++ docs/source/tutorial.rst | 2 +- 4 files changed, 963 insertions(+), 760 deletions(-) delete mode 100644 docs/source/notebooks/reboost_hpge_hit_tutorial.rst create mode 100644 docs/source/notebooks/reboost_hpge_tutorial.ipynb diff --git a/docs/source/conf.py b/docs/source/conf.py index b422399..f93dc26 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -20,6 +20,8 @@ "sphinx.ext.intersphinx", "sphinx_copybutton", "myst_parser", + "nbsphinx", + "IPython.sphinxext.ipython_console_highlighting", ] @@ -28,7 +30,7 @@ ".md": "markdown", } master_doc = "index" -language = "python" +# language = "python" # Furo theme html_theme = "furo" @@ -58,6 +60,13 @@ "legendhpges": ("https://legend-pygeom-hpges.readthedocs.io/en/latest/", None), } # add new intersphinx mappings here + +suppress_warnings = [ + # "histogram" is defined both in pygama.dsp.processors.histogram.histogram + # and in pygama.math.histogram, leading to a Sphinx cross-referencing + # warning. I don't know how to fix this properly + "ref.python", +] # sphinx-autodoc # Include __init__() docstring in class docstring autoclass_content = "both" diff --git a/docs/source/notebooks/reboost_hpge_hit_tutorial.rst b/docs/source/notebooks/reboost_hpge_hit_tutorial.rst deleted file mode 100644 index c0d1427..0000000 --- a/docs/source/notebooks/reboost_hpge_hit_tutorial.rst +++ /dev/null @@ -1,758 +0,0 @@ -Hit tier simulation processing -============================== - -This tutorial describes how to process the HPGe detector simulations -from **remage** with **reboost**. It buils on the official **remage** -tutorial -`[link] `__ - - .. rubric:: *Note* - :name: note - - To run this tutorial it is recommended to create the following - directory structure to organise the outputs and config inputs. - -.. code:: text - - ├── cfg - │ └── metadata - ├── output - │ - ├── stp - │ - └── hit - └── reboost_hpge_tutorial.ipynb - - -.. - -Part 1) Running the remage simulation -------------------------------------- - -Before we can run any post-processing we need to run the Geant4 -simulation. For this we follow the remage tutorial to generate the GDML -geometry. We save this into the GDML file *cfg/geom.gdml* for use by -remage. We also need to save the metadata dictionaries into json files -(in the *cfg/metadata* folder as *BEGe.json* and *Coax.json* - -We use a slightly modified Geant4 macro to demonstrate some features of -reboost (this should be saved as *cfg/th228.mac* to run remage on the -command line). - -.. code:: text - - /RMG/Manager/Logging/LogLevel detail - - /RMG/Geometry/RegisterDetector Germanium BEGe 001 - /RMG/Geometry/RegisterDetector Germanium Coax 002 - /RMG/Geometry/RegisterDetector Scintillator LAr 003 - - /run/initialize - - /RMG/Generator/Confine Volume - /RMG/Generator/Confinement/Physical/AddVolume Source - - /RMG/Generator/Select GPS - /gps/particle ion - /gps/energy 0 eV - /gps/ion 88 224 # 224-Ra - /process/had/rdm/nucleusLimits 208 224 81 88 #Ra-224 to 208-Pb - - - /run/beamOn 10000000 - -We then use the remage executable (see -`[remage-docs] `__ for -installation instructions) to run the simulation: > #### *Note* > Both -of *cfg/th228.mac* and *cfg/geometry.gdml* are needed to run remage - -.. code:: console - - $ remage --threads 8 --gdml-files cfg/geom.gdml --output-file output/stp/output.lh5 -- cfg/th228.mac - -You can lower the number of simulated events to speed up the simulation. - -We can use ``lh5.show()`` to check the output files. - -.. code:: python - - from lgdo import lh5 - -.. code:: python - - lh5.show("output/stp/output_t0.lh5") - -.. code:: text - - / - └── stp · struct{det001,det002,det003,vertices} - ├── det001 · table{evtid,particle,edep,time,xloc,yloc,zloc} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── xloc · array<1>{real} - │ ├── yloc · array<1>{real} - │ └── zloc · array<1>{real} - ├── det002 · table{evtid,particle,edep,time,xloc,yloc,zloc} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── xloc · array<1>{real} - │ ├── yloc · array<1>{real} - │ └── zloc · array<1>{real} - ├── det003 · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── v_post · array<1>{real} - │ ├── v_pre · array<1>{real} - │ ├── xloc_post · array<1>{real} - │ ├── xloc_pre · array<1>{real} - │ ├── yloc_post · array<1>{real} - │ ├── yloc_pre · array<1>{real} - │ ├── zloc_post · array<1>{real} - │ └── zloc_pre · array<1>{real} - └── vertices · table{evtid,time,xloc,yloc,zloc,n_part} - ├── evtid · array<1>{real} - ├── n_part · array<1>{real} - ├── time · array<1>{real} - ├── xloc · array<1>{real} - ├── yloc · array<1>{real} - └── zloc · array<1>{real} - -Part 2) reboost config files ----------------------------- - -For this tutorial we perform a basic post-processing of the *hit* tier -for the two Germanium channels. - -2.1) Setup the environment -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -First we set up the python environment. - -.. code:: python - - from reboost.hpge import hit - import matplotlib.pyplot as plt - import pyg4ometry as pg4 - import legendhpges - from legendhpges import draw - import awkward as ak - import logging - import colorlog - import hist - import numpy as np - - - plt.rcParams["figure.figsize"] = [12, 4] - plt.rcParams["axes.titlesize"] = 12 - plt.rcParams["axes.labelsize"] = 12 - plt.rcParams["legend.fontsize"] = 12 - - - handler = colorlog.StreamHandler() - handler.setFormatter( - colorlog.ColoredFormatter("%(log_color)s%(name)s [%(levelname)s] %(message)s") - ) - logger = logging.getLogger() - logger.handlers.clear() - logger.addHandler(handler) - logger.setLevel(logging.INFO) - logger.info("test") - - - - -2.2) Processing chain and parameters -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Next we need to make the processing chain config file. - -The processing chain below gives a standard set of steps for a HPGe -simulation. 1. first the steps are windowed into hits, 2. the first -timestamp and index of each hit is computed (for use in event building), -3. the distance to the detector n+ surface is computed and from this the -activeness is calculated (based on the FCCD) 4. the energy in each step -is summed to extract the deposited energy (both with and without -deadlayer correction), 5. the energy is convolved with the detector -response model (gaussian energy resolution). - -We also include some step based quantities in the output to show the -effect of the processors. - -.. code:: python - - chain = { - "channels": ["det001", "det002"], - "outputs": [ - "t0", # first timestamp - "time", # time of each step - "edep", # energy deposited in each step - "hit_evtid", # id of the hit - "hit_global_evtid", # global id of the hit - "distance_to_nplus_surface_mm", # distance to detector nplus surface - "activeness", # activeness for the step - "rpos_loc", # radius of step - "zpos_loc", # z position - "energy_sum", # true summed energy before dead layer or smearing - "energy_sum_deadlayer", # energy sum after dead layers - "energy_sum_smeared", # energy sum after smearing with resolution - ], - "step_group": { - "description": "group steps by time and evtid with 10us window", - "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", - }, - "locals": { - "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", - "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)", - }, - "operations": { - "t0": { - "description": "first time in the hit.", - "mode": "eval", - "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)", - }, - "hit_evtid": { - "description": "global evtid of the hit.", - "mode": "eval", - "expression": "ak.fill_none(ak.firsts(hit.evtid,axis=-1),np.nan)", - }, - "hit_global_evtid": { - "description": "global evtid of the hit.", - "mode": "eval", - "expression": "ak.fill_none(ak.firsts(hit.global_evtid,axis=-1),np.nan)", - }, - "distance_to_nplus_surface_mm": { - "description": "distance to the nplus surface in mm", - "mode": "function", - "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')", - }, - "activeness": { - "description": "activness based on FCCD (no TL)", - "mode": "eval", - "expression": "ak.where(hit.distance_to_nplus_surface_mm{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── edep · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── energy_sum · array<1>{real} - │ ├── energy_sum_deadlayer · array<1>{real} - │ ├── energy_sum_smeared · array<1>{real} - │ ├── hit_evtid · array<1>{real} - │ ├── hit_global_evtid · array<1>{real} - │ ├── rpos_loc · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── t0 · array<1>{real} - │ ├── time · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ └── zpos_loc · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - └── det002 · table{edep,time,t0,hit_evtid,hit_global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} - ├── activeness · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── edep · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── energy_sum · array<1>{real} - ├── energy_sum_deadlayer · array<1>{real} - ├── energy_sum_smeared · array<1>{real} - ├── hit_evtid · array<1>{real} - ├── hit_global_evtid · array<1>{real} - ├── rpos_loc · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── t0 · array<1>{real} - ├── time · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - └── zpos_loc · array<1>{array<1>{real}} - ├── cumulative_length · array<1>{real} - └── flattened_data · array<1>{real} - - -The new format is a factor of x17 times smaller than the input file due -to the removal of many *step* based fields which use a lot of memory and -due to the removal of the *vertices* table and the LAr hits. So we can -easily read the whole file into memory. We use *awkward* to analyse the -output files. - -.. code:: python - - data_det001 = lh5.read_as("hit/det001", "output/hit/output.lh5", "ak") - data_det002 = lh5.read_as("hit/det002", "output/hit/output.lh5", "ak") - -.. code:: python - - data_det001[0] - - - - -.. raw:: html - -
{edep: [0.0826, 0.00863, 0.0171, 0.0175, 0.224, ..., 34.1, 28.9, 34.1, 32.3],
-     time: [1.32e+15, 1.32e+15, 1.32e+15, ..., 1.32e+15, 1.32e+15, 1.32e+15],
-     t0: 1.32e+15,
-     hit_evtid: 9.49e+03,
-     hit_global_evtid: 9.49e+03,
-     distance_to_nplus_surface_mm: [1e-11, 0.654, 0.654, ..., 0.617, 0.614, 0.614],
-     activeness: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-     rpos_loc: [21, 36.3, 36.3, 36.3, 36.3, ..., 36.3, 36.4, 36.4, 36.4, 36.4],
-     zpos_loc: [29.5, 21.1, 21.1, 21.1, 21.1, ..., 21.1, 21.1, 21.1, 21.1, 21.1],
-     energy_sum: 203,
-     energy_sum_deadlayer: 0,
-     energy_sum_smeared: -0.44}
-    -------------------------------------------------------------------------------
-    type: {
-        edep: var * float64,
-        time: var * float64,
-        t0: float64,
-        hit_evtid: float64,
-        hit_global_evtid: float64,
-        distance_to_nplus_surface_mm: var * float64,
-        activeness: var * int64,
-        rpos_loc: var * float64,
-        zpos_loc: var * float64,
-        energy_sum: float64,
-        energy_sum_deadlayer: float64,
-        energy_sum_smeared: float64
-    }
- - - -Part 4) Steps in a standard processing chain --------------------------------------------- - -The next part of the tutorial gives more details on each step of the -processing chain. - -4.1) Windowing -~~~~~~~~~~~~~~ - -We can compare the decay index (“evtid” in the “stp” file) to the index -of the “hit”, the row of the hit table. We see that only some decays -correspond to “hits” in the detector, as we expect. We also see that a -single decay does not often produce multiple hits. This is also expected -since the probability of detection is fairly low. - -.. code:: python - - plt.scatter( - np.sort(data_det001.hit_global_evtid), - np.arange(len(data_det001)), - marker=".", - alpha=1, - ) - plt.xlabel("Decay index (evtid)") - plt.ylabel("Hit Index") - plt.grid() - plt.xlim(0, 1000) - plt.ylim(0, 100) - - - - -.. parsed-literal:: - - (0.0, 100.0) - - - - -.. image:: images/output_20_1.png - - -However, we can use some array manipulation to extract decay index with -multiple hits, by plotting the times we see the effect of the windowing. - -.. code:: python - - def plot_times(times: ak.Array, xrange=None, sub_zero=False, **kwargs): - fig, ax = plt.subplots() - for idx, _time in enumerate(times): - if sub_zero: - _time = _time - ak.min(_time) - h = hist.new.Reg( - 100, - (ak.min(times) / 1e9), - (ak.max(times) / 1e9) + 1, - name="Time since event start [s]", - ).Double() - h.fill(_time / 1e9) - h.plot(**kwargs, label=f"Hit {idx}") - ax.legend() - ax.set_yscale("log") - if xrange is not None: - ax.set_xlim(*xrange) - - -.. code:: python - - unique, counts = np.unique(data_det001.hit_global_evtid, return_counts=True) - -.. code:: python - - plot_times( - data_det001[data_det001.hit_global_evtid == unique[counts > 1][1]].time, - histtype="step", - yerr=False, - ) - - - - -.. image:: images/output_24_0.png - - -4.2) Distance to surface and dead layer -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -One of the important step in the post-processing of HPGe detector -simulations is the detector activeness mapping. Energy deposited close -to the surface of the Germanium detector will result in incomplete -charge collection and a degraded signal. To account for this we added a -processor to compute the distance to the detector surface (based on -``legendhpges.base.HPGe.distance_to_surface()``) - -For the steps in the detector we extracted in the processing chain the -local r and z coordinates and we can plot maps of the distance to the -detector surface and the activeness for each step. We select only events -within 5 mm of the surface for the first plots. We can see that the -processor works as expected. - -.. code:: python - - def plot_map(field, scale="BuPu", clab="Distance [mm]"): - fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True) - n = 100000 - for idx, (data, config) in enumerate( - zip( - [data_det001, data_det002], - ["cfg/metadata/BEGe.json", "cfg/metadata/Coax.json"], - ) - ): - reg = pg4.geant4.Registry() - hpge = legendhpges.make_hpge(config, registry=reg) - - legendhpges.draw.plot_profile(hpge, split_by_type=True, axes=axs[idx]) - r = np.random.choice( - [-1, 1], p=[0.5, 0.5], size=len(ak.flatten(data.rpos_loc)) - ) * ak.flatten(data.rpos_loc) - z = ak.flatten(data.zpos_loc) - c = ak.flatten(data[field]) - cut = c < 5 - - s = axs[idx].scatter( - r[cut][0:n], - z[cut][0:n], - c=c[cut][0:n], - marker=".", - label="gen. points", - cmap=scale, - ) - # axs[idx].axis("equal") - - if idx == 0: - axs[idx].set_ylabel("Height [mm]") - c = plt.colorbar(s) - c.set_label(clab) - - axs[idx].set_xlabel("Radius [mm]") - - -.. code:: python - - plot_map("distance_to_nplus_surface_mm") - - -.. image:: images/output_27_1.png - - -.. code:: python - - plot_map("activeness", clab="Activeness", scale="viridis") - - -.. image:: images/output_28_1.png - - -We can also plot a histogram of the distance to the surface. - -.. code:: python - - def plot_distances(axes, distances, xrange=None, label=" ", **kwargs): - h = hist.new.Reg(100, *xrange, name="Distance to n+ surface [mm]").Double() - h.fill(distances) - h.plot(**kwargs, label=label) - ax.legend() - ax.set_yscale("log") - if xrange is not None: - ax.set_xlim(*xrange) - - -.. code:: python - - fig, ax = plt.subplots() - plot_distances( - ax, - ak.flatten(data_det001.distance_to_nplus_surface_mm), - xrange=(0, 35), - label="BEGe", - histtype="step", - yerr=False, - ) - plot_distances( - ax, - ak.flatten(data_det002.distance_to_nplus_surface_mm), - xrange=(0, 35), - label="Coax", - histtype="step", - yerr=False, - ) - - - - -.. image:: images/output_31_0.png - - -4.3) Summed energies -~~~~~~~~~~~~~~~~~~~~ - -Our processing chain also sums the energies of the hits, both before and -after weighting by the activeness. - -.. code:: python - - def plot_energy(axes, energy, bins=400, xrange=None, label=" ", log_y=True, **kwargs): - h = hist.new.Reg(bins, *xrange, name="energy [keV]").Double() - h.fill(energy) - h.plot(**kwargs, label=label) - axes.legend() - if log_y: - axes.set_yscale("log") - if xrange is not None: - axes.set_xlim(*xrange) - -.. code:: python - - fig, ax = plt.subplots() - ax.set_title("BEGe energy spectrum") - plot_energy( - ax, data_det001.energy_sum, yerr=False, label="True energy", xrange=(0, 4000) - ) - plot_energy( - ax, - data_det001.energy_sum_deadlayer, - yerr=False, - label="Energy after dead layer", - xrange=(0, 4000), - ) - - - -.. image:: images/output_34_0.png - - -.. code:: python - - fig, ax = plt.subplots() - ax.set_title("COAX energy spectrum") - plot_energy( - ax, data_det002.energy_sum, yerr=False, label="True energy", xrange=(0, 4000) - ) - plot_energy( - ax, - data_det002.energy_sum_deadlayer, - yerr=False, - label="Energy after dead layer", - xrange=(0, 4000), - ) - - - -.. image:: images/output_35_0.png - - -4.4) Smearing -~~~~~~~~~~~~~ - -The final step in the processing chain smeared the energies by the -energy resolution. This represents a general class of processors based -on ‘’heuristic’’ models. Other similar processors could be implemented -in a similar way. It would also be simple to use instead an energy -dependent resolution curve. To see the effect we have to zoom into the -2615 keV peak. - -.. code:: python - - fig, axs = plt.subplots() - plot_energy( - axs, - data_det001.energy_sum_smeared, - yerr=False, - label="BEGe", - xrange=(2600, 2630), - log_y=False, - bins=150, - density=True, - ) - plot_energy( - axs, - data_det002.energy_sum_smeared, - yerr=False, - label="COAX", - xrange=(2600, 2630), - log_y=False, - bins=150, - density=True, - ) - - - -.. image:: images/output_37_0.png - - -We see clearly the worse energy resolution for the COAX detector. > **To -Do**: add a gaussian fit of this. - -Part 5) Adding a new processor -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The next part of the tutorial describes how to add a new processor to -the chain. We use as an example spatial *clustering* of steps. This will -be added later. diff --git a/docs/source/notebooks/reboost_hpge_tutorial.ipynb b/docs/source/notebooks/reboost_hpge_tutorial.ipynb new file mode 100644 index 0000000..25b6db8 --- /dev/null +++ b/docs/source/notebooks/reboost_hpge_tutorial.ipynb @@ -0,0 +1,952 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Hit Tier HPGe simulation processing\n", + "This tutorial describes how to process the HPGe detector simulations from **remage** with **reboost**. It buils on the offical **remage** tutorial [[link]](https://remage.readthedocs.io/en/stable/tutorial.html)\n", + "\n", + "> #### *Note*\n", + ">\n", + "> To run this tutorial it is recommended to create the following directory structure to organise the outputs and config inputs.\n", + "> \n", + "> \n", + "\n", + "\n", + "```text\n", + "├── cfg\n", + "│   └── metadata\n", + "├── output\n", + "│   ├── stp\n", + "│   └── hit\n", + "└── reboost_hpge_tutorial.ipynb\n", + "\n", + "> " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 1) Running the remage simulation\n", + "Before we can run any post-processing we need to run the Geant4 simulation. For this we follow the remage tutorial to generate the GDML geometry. We save this into the GDML file *cfg/geom.gdml* for use by remage. We also need to save the metadata dictonaries into json files (in the *cfg/metadata* folder as *BEGe.json* and *Coax.json*\n", + "\n", + "We use a slightly modified Geant4 macro to demonstrate some features of reboost (this should be saved as *cfg/th228.mac* to run remage on the command line).\n", + "\n", + "```text\n", + "/RMG/Manager/Logging/LogLevel detail\n", + "\n", + "/RMG/Geometry/RegisterDetector Germanium BEGe 001\n", + "/RMG/Geometry/RegisterDetector Germanium Coax 002\n", + "/RMG/Geometry/RegisterDetector Scintillator LAr 003\n", + "\n", + "/run/initialize\n", + "\n", + "/RMG/Generator/Confine Volume\n", + "/RMG/Generator/Confinement/Physical/AddVolume Source\n", + "\n", + "/RMG/Generator/Select GPS\n", + "/gps/particle ion\n", + "/gps/energy 0 eV\n", + "/gps/ion 88 224 # 224-Ra\n", + "/process/had/rdm/nucleusLimits 208 224 81 88 #Ra-224 to 208-Pb\n", + "\n", + "\n", + "/run/beamOn 1000000\n", + "```\n", + "\n", + "We then use the remage exectuable (see [[remage-docs]](https://remage.readthedocs.io/en/stable/) for installation instructions) to run the simulation:\n", + "> #### *Note*\n", + "> Both of *cfg/th228.mac* and *cfg/geometry.gdml* are needed to run remage\n", + "\n", + "```console\n", + "$ remage --threads 8 --gdml-files cfg/geom.gdml --output-file output/stp/output.lh5 -- cfg/th228.mac\n", + "```\n", + "\n", + "You can lower the number of simulated events to speed up the simulation.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use `lh5.show()` to check the output files." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from lgdo import lh5" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m/\u001b[0m\n", + "└── \u001b[1mstp\u001b[0m · struct{det001,det002,det003,vertices} \n", + " ├── \u001b[1mdet001\u001b[0m · table{evtid,particle,edep,time,xloc,yloc,zloc} \n", + " │ ├── \u001b[1medep\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mparticle\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mtime\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mxloc\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1myloc\u001b[0m · array<1>{real} \n", + " │ └── \u001b[1mzloc\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mdet002\u001b[0m · table{evtid,particle,edep,time,xloc,yloc,zloc} \n", + " │ ├── \u001b[1medep\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mparticle\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mtime\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mxloc\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1myloc\u001b[0m · array<1>{real} \n", + " │ └── \u001b[1mzloc\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mdet003\u001b[0m · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} \n", + " │ ├── \u001b[1medep\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mparticle\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mtime\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mv_post\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mv_pre\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mxloc_post\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mxloc_pre\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1myloc_post\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1myloc_pre\u001b[0m · array<1>{real} \n", + " │ ├── \u001b[1mzloc_post\u001b[0m · array<1>{real} \n", + " │ └── \u001b[1mzloc_pre\u001b[0m · array<1>{real} \n", + " └── \u001b[1mvertices\u001b[0m · table{evtid,time,xloc,yloc,zloc,n_part} \n", + " ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mn_part\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mtime\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mxloc\u001b[0m · array<1>{real} \n", + " ├── \u001b[1myloc\u001b[0m · array<1>{real} \n", + " └── \u001b[1mzloc\u001b[0m · array<1>{real} \n" + ] + } + ], + "source": [ + "lh5.show(\"output/stp/output_t0.lh5\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 2) reboost config files\n", + "For this tutorial we perform a basic post-processing of the *hit* tier for the two Germanium channels.\n", + "\n", + "### 2.1) Setup the enviroment\n", + "First we set up the python enviroment." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[32mroot [INFO] test\u001b[0m\n" + ] + } + ], + "source": [ + "from reboost.hpge import hit\n", + "import matplotlib.pyplot as plt\n", + "import pyg4ometry as pg4\n", + "import legendhpges\n", + "from legendhpges import draw\n", + "import awkward as ak\n", + "import logging\n", + "import colorlog\n", + "import hist\n", + "import numpy as np\n", + "\n", + "\n", + "plt.rcParams['figure.figsize'] = [12, 4]\n", + "plt.rcParams['axes.titlesize'] =12\n", + "plt.rcParams['axes.labelsize'] = 12\n", + "plt.rcParams['legend.fontsize'] = 12\n", + "\n", + "\n", + "handler = colorlog.StreamHandler()\n", + "handler.setFormatter(\n", + " colorlog.ColoredFormatter(\"%(log_color)s%(name)s [%(levelname)s] %(message)s\")\n", + ")\n", + "logger = logging.getLogger()\n", + "logger.handlers.clear()\n", + "logger.addHandler(handler)\n", + "logger.setLevel(logging.INFO)\n", + "logger.info(\"test\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2) Processing chain and parameters\n", + "Next we need to make the processing chain config file.\n", + "\n", + "The processing chain below gives a standard set of steps for a HPGe simulation.\n", + "1. first the steps are windowed into hits,\n", + "2. the first timestamp and index of each hit is computed (for use in event building),\n", + "3. the distance to the detector n+ surface is computed and from this the activeness is calculated (based on the FCCD)\n", + "4. the energy in each step is summed to extract the deposited energy (both with and without deadlayer correction),\n", + "5. the energy is convolved with the detector response model (gaussian energy resolution).\n", + "\n", + "We also include some step based quantities in the output to show the effect of the processors.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "chain = {\n", + " \"channels\": [\n", + " \"det001\",\n", + " \"det002\"\n", + " ],\n", + " \"outputs\": [\n", + " \"t0\", # first timestamp\n", + " \"time\", # time of each step\n", + " \"edep\", # energy deposited in each step\n", + " \"evtid\", # id of the hit\n", + " \"global_evtid\", # global id of the hit\n", + " \"distance_to_nplus_surface_mm\", # distance to detector nplus surface\n", + " \"activeness\", # activeness for the step\n", + " \"rpos_loc\", # radius of step\n", + " \"zpos_loc\", # z position\n", + " \"energy_sum\", # true summed energy before dead layer or smearing\n", + " \"energy_sum_deadlayer\", # energy sum after dead layers\n", + " \"energy_sum_smeared\" # energy sum after smearing with resolution\n", + " ],\n", + " \"step_group\": { \n", + " \"description\": \"group steps by time and evtid with 10us window\",\n", + " \"expression\": \"reboost.hpge.processors.group_by_time(stp,window=10)\",\n", + " },\n", + " \"locals\": {\n", + " \"hpge\": \"reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)\",\n", + " \"phy_vol\": \"reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)\",\n", + " },\n", + " \"operations\": {\n", + " \"t0\": {\n", + " \"description\": \"first time in the hit.\",\n", + " \"mode\": \"eval\",\n", + " \"expression\": \"ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)\",\n", + " },\n", + " \"evtid\": {\n", + " \"description\": \"global evtid of the hit.\",\n", + " \"mode\": \"eval\",\n", + " \"expression\": \"ak.fill_none(ak.firsts(hit._evtid,axis=-1),np.nan)\",\n", + " },\n", + " \"global_evtid\": {\n", + " \"description\": \"global evtid of the hit.\",\n", + " \"mode\": \"eval\",\n", + " \"expression\": \"ak.fill_none(ak.firsts(hit._global_evtid,axis=-1),np.nan)\",\n", + " },\n", + " \"distance_to_nplus_surface_mm\": {\n", + " \"description\": \"distance to the nplus surface in mm\",\n", + " \"mode\": \"function\",\n", + " \"expression\": \"reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')\",\n", + " },\n", + " \"activeness\": {\n", + " \"description\": \"activness based on FCCD (no TL)\",\n", + " \"mode\": \"eval\",\n", + " \"expression\": \"ak.where(hit.distance_to_nplus_surface_mm{array<1>{real}} \n", + "│ │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + "│ │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + "│ ├── \u001b[1mdistance_to_nplus_surface_mm\u001b[0m · array<1>{array<1>{real}} \n", + "│ │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + "│ │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + "│ ├── \u001b[1medep\u001b[0m · array<1>{array<1>{real}} \n", + "│ │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + "│ │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + "│ ├── \u001b[1menergy_sum\u001b[0m · array<1>{real} \n", + "│ ├── \u001b[1menergy_sum_deadlayer\u001b[0m · array<1>{real} \n", + "│ ├── \u001b[1menergy_sum_smeared\u001b[0m · array<1>{real} \n", + "│ ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", + "│ ├── \u001b[1mglobal_evtid\u001b[0m · array<1>{real} \n", + "│ ├── \u001b[1mrpos_loc\u001b[0m · array<1>{array<1>{real}} \n", + "│ │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + "│ │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + "│ ├── \u001b[1mt0\u001b[0m · array<1>{real} \n", + "│ ├── \u001b[1mtime\u001b[0m · array<1>{array<1>{real}} \n", + "│ │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + "│ │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + "│ └── \u001b[1mzpos_loc\u001b[0m · array<1>{array<1>{real}} \n", + "│ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + "│ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + "└── \u001b[1mdet002\u001b[0m · HDF5 group \n", + " └── \u001b[1mhit\u001b[0m · table{edep,time,t0,evtid,global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} \n", + " ├── \u001b[1mactiveness\u001b[0m · array<1>{array<1>{real}} \n", + " │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + " │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mdistance_to_nplus_surface_mm\u001b[0m · array<1>{array<1>{real}} \n", + " │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + " │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + " ├── \u001b[1medep\u001b[0m · array<1>{array<1>{real}} \n", + " │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + " │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + " ├── \u001b[1menergy_sum\u001b[0m · array<1>{real} \n", + " ├── \u001b[1menergy_sum_deadlayer\u001b[0m · array<1>{real} \n", + " ├── \u001b[1menergy_sum_smeared\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mglobal_evtid\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mrpos_loc\u001b[0m · array<1>{array<1>{real}} \n", + " │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + " │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mt0\u001b[0m · array<1>{real} \n", + " ├── \u001b[1mtime\u001b[0m · array<1>{array<1>{real}} \n", + " │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + " │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", + " └── \u001b[1mzpos_loc\u001b[0m · array<1>{array<1>{real}} \n", + " ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", + " └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n" + ] + } + ], + "source": [ + "lh5.show(\"output/hit/output.lh5\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The new format is a factor of x17 times smaller than the input file due to the removal of many *step* based fields which use alot of memory and due to the removal of the *vertices* table and the LAr hits. So we can easily read the whole file into memory.\n", + "We use *awkward* to analyse the output files." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "data_det001 = lh5.read_as(\"det001/hit\",\"output/hit/output.lh5\",\"ak\")\n", + "data_det002 = lh5.read_as(\"det002/hit\",\"output/hit/output.lh5\",\"ak\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
[{edep: [0.0826, 0.00863, ..., 32.3], time: [1.32e+15, ...], t0: 1.32e+15, ...},\n",
+       " {edep: [0.103, 0.0256, ..., 37.6, 6.44], time: [...], t0: 1.24e+15, ...},\n",
+       " {edep: [0.0824, 0.00863, ..., 16.8], time: [2.21e+14, ...], t0: 2.21e+14, ...},\n",
+       " {edep: [0.101, 0.0802, ..., 20.9], time: [9.09e+14, ...], t0: 9.09e+14, ...},\n",
+       " {edep: [0.00332, 0.0171, ..., 45, 27.7], time: [...], t0: 4.26e+13, ...},\n",
+       " {edep: [0.0845, 0.00863, ..., 27.9], time: [6.86e+14, ...], t0: 6.86e+14, ...},\n",
+       " {edep: [0.0065, 0.255, ..., 41.5, 2.69], time: [...], t0: 1.24e+14, ...},\n",
+       " {edep: [0.0388, 0.188, ..., 1.1, 41.5], time: [...], t0: 6.48e+14, ...},\n",
+       " {edep: [0.00332, 0.116, ..., 16.2], time: [4.39e+14, ...], t0: 4.39e+14, ...},\n",
+       " {edep: [0.00615, 0.0204, ..., 22.1], time: [7.11e+14, ...], t0: 7.11e+14, ...},\n",
+       " ...,\n",
+       " {edep: [0.19, 0.0171, ..., 42.2, 10.9], time: [...], t0: 1.1e+15, ...},\n",
+       " {edep: [0.0118, 0.0303, ..., 34.5, 21.4], time: [...], t0: 1.51e+15, ...},\n",
+       " {edep: [0.0204, 0.152, ..., 2.79, 51.9], time: [...], t0: 9.73e+14, ...},\n",
+       " {edep: [0.118, 0.0254, ..., 41.2, 38.6], time: [...], t0: 9.67e+14, ...},\n",
+       " {edep: [0.0824, 0.0254, ..., 34.6, 18.9], time: [...], t0: 6.64e+14, ...},\n",
+       " {edep: [0.148, 0.0802, ..., 40.9, 24], time: [...], t0: 5.56e+14, ...},\n",
+       " {edep: [0.022, 0.0148, ..., 34.8, 11.9], time: [...], t0: 6.52e+14, ...},\n",
+       " {edep: [0.0155, 0.118, ..., 0.458, 9.65], time: [...], t0: 3.97e+14, ...},\n",
+       " {edep: [0.0065, 0.00615, ..., 13.7], time: [3.98e+14, ...], t0: 3.98e+14, ...}]\n",
+       "--------------------------------------------------------------------------------\n",
+       "type: 835793 * {\n",
+       "    edep: var * float64,\n",
+       "    time: var * float64,\n",
+       "    t0: float64,\n",
+       "    evtid: float64,\n",
+       "    global_evtid: float64,\n",
+       "    distance_to_nplus_surface_mm: var * float64,\n",
+       "    activeness: var * int64,\n",
+       "    rpos_loc: var * float64,\n",
+       "    zpos_loc: var * float64,\n",
+       "    energy_sum: float64,\n",
+       "    energy_sum_deadlayer: float64,\n",
+       "    energy_sum_smeared: float64\n",
+       "}
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_det001" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 4) Steps in a standard processing chain" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next part of the tutorial gives more details on each step of the processing chain.\n", + "\n", + "### 4.1) Windowing\n", + "We can compare the decay index (\"evtid\" in the \"stp\" file) to the index of the \"hit\", the row of the hit table.\n", + "We see that only some decays correspond to \"hits\" in the detector, as we expect. We also see that a single decay does not often produce multiple hits. This is also expected since the probability of detection is fairly low." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0, 100.0)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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X7OiPvvsM/n7++uHH36o8XsfOXJENptNK1asuOS5d955p1q1amV/ffz4cYWEhOi9996rvgABAHCCZAAAACWsWLFCNpvN/hMYGKiYmBglJiZq0aJFOnnypKdDhBN/+ctfdOutt6ply5bVdo/Vq1fr6aefdus1w8PD9f/+3//TrFmz3HpdAAAupZ6nAwAAoDaaP3++4uLiVFBQoPT0dH300UeaMmWKnnrqKb399tvq3Lmzp0OskoMHD8rHp258J7Bnzx59+OGH2rFjR7XeZ/Xq1dq/f7+mTJniMN6yZUudOXNGfn5+Ll33vvvu06JFi7RlyxYNHDjQDZECAHBpJAMAAHDihhtuUI8ePeyvZ8yYoS1btmjo0KH67W9/q6+//lpBQUEejLBqAgICPB2C2yxfvlyxsbG65pprPHL/4goSV7Vv314dO3bUihUrSAYAAGpM3fhKAACAGjBw4EDNmjVLP/zwg1auXOlw7JtvvtHvfvc7hYWFKTAwUD169NDbb79d5hrZ2dmaOnWqWrVqpYCAADVv3lx33HGHMjMzJUnnzp3T7Nmz1b17d4WGhiokJER9+/bV1q1b7dcwxqhVq1YaPnx4meufPXtWoaGh+v3vf3/RZynd31/cHvHJJ59o2rRpatKkiUJCQnTTTTfp119/dXivMUaPPvqomjdvruDgYA0YMEBfffWV0/tkZ2drypQpatGihQICAnTZZZdpwYIFKioqsl9rwIABatKkiY4dO2Z/37lz59SpUye1adNGp0+fvuizrF+/XgMHDpTNZitzbOPGjerbt69CQkLUoEEDDRkyxCHWv/3tb7LZbE7XGpgxY4b8/f114sQJ9e/fX++++65++OEHewtJce9/eWsGrF+/Xh07dlRgYKA6duyoN998s9xnGDRokN555x0ZYy76rAAAuAvJAAAAKmHcuHGSpA8++MA+9tVXX+maa67R119/renTp+vvf/+7QkJCNGLECIcPgKdOnVLfvn21ePFiDR48WM8884zuu+8+ffPNN/rpp58kSbm5ufqf//kf9e/fXwsWLNDcuXP166+/KjExUXv27JF04Zvo22+/XRs3blRWVpZDfO+8845yc3N1++23u/R8kydP1t69ezVnzhz94Q9/0DvvvKNJkyY5nDN79mzNmjVLXbp00ZNPPqnWrVtr8ODBZT605+Xl6brrrtPKlSt1xx13aNGiRerdu7dmzJihadOm2Z/ln//8p86ePav77rvP/t45c+boq6++0vLlyxUSElJuvD///LPS0tJ01VVXlTn28ssva8iQIapfv74WLFigWbNm6cCBA+rTp4+OHDkiSbrllltks9n02muvlXn/a6+9psGDB6tx48b6y1/+oq5duyoiIkIvv/yyXn755YuuH/DBBx9o1KhRstlsSkpK0ogRI3TXXXfp888/d3p+9+7dlZ2dXW5SBQAAtzMAAMBu+fLlRpJJSUkp95zQ0FDTrVs3++vrr7/edOrUyZw9e9Y+VlRUZK699lpz+eWX28dmz55tJJl169aVuWZRUZExxpjz58+b/Px8h2MnTpwwkZGR5u6777aPHTx40Egyzz//vMO5v/3tb02rVq3s1ytPy5Ytzfjx48s8d0JCgsN7p06danx9fU12drYxxphjx44Zf39/M2TIEIfzZs6caSQ5XPORRx4xISEh5ttvv3W49/Tp042vr69JS0uzjy1btsxIMitXrjSffvqp8fX1NVOmTLnoMxhjzIcffmgkmXfeecdh/OTJk6ZRo0bm3nvvdRhPT083oaGhDuPx8fGme/fuDud99tlnRpL597//bR8bMmSIadmyZZkYDh8+bCSZ5cuX28e6du1qoqOj7X9uxhjzwQcfGElOr7Fjxw4jyaxZs+aSzwwAgDtQGQAAQCXVr1/fvqtAVlaWtmzZoltuuUUnT55UZmamMjMzdfz4cSUmJurQoUP6+eefJUlvvPGGunTpoptuuqnMNYtL3H19feXv7y9JKioqUlZWls6fP68ePXpo9+7d9vPbtm2rXr16adWqVfaxrKwsbdy4UWPHjnVaMl8REyZMcHhv3759VVhYaC+j//DDD3Xu3DlNnjzZ4bzSi+pJ0tq1a9W3b181btzY/ueSmZmphIQEFRYWatu2bQ73TUxM1OTJkzVu3Di1adNGjz/++CXjPX78uCSpcePGDuPJycnKzs7Wrbfe6nBvX19f9erVy6HtYvTo0UpNTdV3331nH1uzZo0CAgKctmJcytGjR7Vnzx6NHz9eoaGh9vFBgwbpyiuvdPqe4viL20UAAKhuJAMAAKikU6dOqUGDBpKk//u//5MxRrNmzVKTJk0cfubMmSNJ9l747777Th07drzk9f/1r3+pc+fOCgwMVHh4uJo0aaJ3331XOTk5Dufdcccd+uSTT+wf1NeuXauCggJ7K4MrYmNjHV4Xf0g9ceKEJNnvdfnllzuc16RJkzIfyA8dOqRNmzaV+XNJSEiQJIc1AiTppZdeUl5eng4dOqQVK1ZUaoFGU6rX/tChQ5IurPNQ+v4ffPCBw71vvvlm+fj4aM2aNfZrrV27VjfccIMaNmxY4RiKlfdnJElXXHHFReN3NYkDAEBlsZsAAACV8NNPPyknJ0eXXXaZJNkXwvvzn/+sxMREp+8pPrciVq5cqTvvvFMjRozQgw8+qKZNm8rX11dJSUkO31xL0pgxYzR16lStWrVKM2fO1MqVK9WjR49yP3BWhK+vr9Px0h+2K6KoqEiDBg3SQw895PR427ZtHV5/9NFHys/PlyTt27dP8fHxl7xHeHi4pP8mK0reW7qwbkBUVFSZ99Wr999/AsXExKhv37567bXXNHPmTH366adKS0vTggULLnl/dymOPyIiosbuCQCwNpIBAABUwssvvyxJ9g/+rVu3liT5+fnZv/EuT5s2bbR///6LnvP666+rdevWWrduncO3xMVVBiWFhYVpyJAhWrVqlcaOHatPPvnkoovauUPLli0lXfjmvfjZJenXX38t84G8TZs2OnXq1CX/XKQLpfWTJ0/W4MGD5e/vb0+uFN+vPO3atZMkHT58uMy9Jalp06YVuv/o0aN1//336+DBg1qzZo2Cg4M1bNgwh3Mq+q19yT+j0g4ePOj0PcXxt2/fvkL3AACgqmgTAACggrZs2aJHHnlEcXFxGjt2rKQLHzb79++vZcuW6ejRo2XeU3JbvlGjRmnv3r1Ot5gr/ua9+Jv5kt/E79q1Szt37nQa07hx43TgwAE9+OCD8vX11ZgxY1x/wApISEiQn5+fFi9e7BCjsyTELbfcop07d+r9998vcyw7O1vnz5+3v7733ntVVFSkl156SS+88ILq1aune+6555IVCc2aNVOLFi3KrNKfmJiohg0b6vHHH1dBQUGZ95XeLnHUqFHy9fXVK6+8orVr12ro0KFldjEICQkp06rhTHR0tLp27ap//etfDucnJyfrwIEDTt+Tmpqq0NBQdejQ4ZLXBwDAHagMAADAiY0bN+qbb77R+fPnlZGRoS1btig5OVktW7bU22+/rcDAQPu5S5YsUZ8+fdSpUyfde++9at26tTIyMrRz50799NNP2rt3ryTpwQcf1Ouvv66bb75Zd999t7p3766srCy9/fbbWrp0qbp06aKhQ4dq3bp1uummmzRkyBAdPnxYS5cu1ZVXXqlTp06ViXPIkCEKDw+397g3bdq0Wv9cmjRpoj//+c9KSkrS0KFDdeONN+qLL77Qxo0by5S4P/jgg3r77bc1dOhQ3XnnnerevbtOnz6tffv26fXXX9eRI0cUERGh5cuX691339WKFSvUvHlzSdLixYt1++236/nnn9f9999/0ZiGDx+uN998U8YY+7f3DRs21PPPP69x48bpqquu0pgxY9SkSROlpaXp3XffVe/evfXss8/ar9G0aVMNGDBATz31lE6ePKnRo0eXuU/37t21Zs0aTZs2TT179lT9+vXLVA8US0pK0pAhQ9SnTx/dfffdysrK0uLFi9WhQwenf4/JyckaNmwYawYAAGqOp7YxAACgNireYq/4x9/f30RFRZlBgwaZZ555xuTm5jp933fffWfuuOMOExUVZfz8/EyzZs3M0KFDzeuvv+5w3vHjx82kSZNMs2bNjL+/v2nevLkZP368yczMNMZc2GLw8ccfNy1btjQBAQGmW7duZsOGDWb8+PFOt6Qzxpj777/fSDKrV6+u8HOWt7Vg6S0Vt27daiSZrVu32scKCwvNvHnzTHR0tAkKCjL9+/c3+/fvL3NNYy5s8Tdjxgxz2WWXGX9/fxMREWGuvfZa87e//c2cO3fO/PjjjyY0NNQMGzasTIw33XSTCQkJMd9///1Fn2X37t1Gkvnf//3fMse2bt1qEhMTTWhoqAkMDDRt2rQxd955p/n888/LnPviiy8aSaZBgwbmzJkzZY6fOnXK3HbbbaZRo0YOWwQ621rQGGPeeOMN0759exMQEGCuvPJKs27dOqd/j19//bWRZD788MOLPicAAO5kM8aFFYEAAECtMXXqVL300ktKT09XcHCwp8PxiOuvv14xMTH2NR28yZQpU7Rt2zalpqZSGQAAqDEkAwAA8GJnz55VixYtNHToUC1fvtzT4XjMrl271LdvXx06dOiSiw7WJsePH1fLli312muv6cYbb/R0OAAACyEZAACAFzp27Jg+/PBDvf7661q/fr12796trl27ejosAADgJVhAEAAAL3TgwAGNHTtWTZs21aJFi0gEAACASqEyAAAAAAAAi/HxdAAAAAAAAKBmkQwAAAAAAMBiSAYAAAAAAGAxJAMAAAAAALAYkgEAAAAAAFgMyQAAAAAAACyGZAAAAAAAABZDMgAAAAAAAIv5/4CyRXsT+mUiAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(np.sort(data_det001.global_evtid),np.arange(len(data_det001)),marker=\".\",alpha=1)\n", + "plt.xlabel(\"Decay index (evtid)\")\n", + "plt.ylabel(\"Hit Index\")\n", + "plt.grid()\n", + "plt.xlim(0,1000)\n", + "plt.ylim(0,100)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "However, we can use some array manipulation to extract decay index with multiple hits, by plotting the times we see the effect of the windowing." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_times(times:ak.Array,xrange=None,sub_zero=False,**kwargs):\n", + " fig,ax = plt.subplots()\n", + " for idx,_time in enumerate(times):\n", + " if (sub_zero):\n", + " _time=_time-ak.min(_time)\n", + " h=hist.new.Reg(100,(ak.min(times)/1e9),(ak.max(times)/1e9)+1, name=\"Time since event start [s]\").Double()\n", + " h.fill(_time/1e9)\n", + " h.plot(**kwargs,label=f\"Hit {idx}\")\n", + " ax.legend()\n", + " ax.set_yscale(\"log\")\n", + " if xrange is not None:\n", + " ax.set_xlim(*xrange)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "unique,counts = np.unique(data_det001.global_evtid,return_counts=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABAIAAAF3CAYAAAA/9+lgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIB0lEQVR4nO3de1yVZb7///cCXAIGiAcgRBRLS9TB8sB2HBRxJbEdJi0PZSVSqbNb5oFRx9qlHTGnxnykpFOjkk6OZKN2MhrE06iYiofJKEyzbaOCUgkJJci6f3/0Zf1CQDmD3q/n48Fjd1/3dV33Zy2u7az15j5YDMMwBAAAAAAATMGlqQsAAAAAAACNhyAAAAAAAAATIQgAAAAAAMBECAIAAAAAADARggAAAAAAAEyEIAAAAAAAABMhCAAAAAAAwEQIAgAAAAAAMBG3pi7geuBwOHT69Gl5eXnJYrE0dTkAAAAAgOucYRj64YcfFBgYKBeXmv2NnyCgHpw+fVodO3Zs6jIAAAAAACbzzTffKCgoqEZjCALqgZeXl6SffwHe3t5NXA0AAAAA4HpXUFCgjh07Or+P1gRBQD0ouxzA29ubIAAAAAAA0Ghqc3k6NwsEAAAAAMBECAIAAAAAADARggAAAAAAAEyEIAAAAAAAABPhZoEAAAAAgHJKS0tVUlLS1GWYUosWLeTq6tqgxyAIAAAAAABIkgzDUE5Ojs6fP9/UpZha69atFRAQUKsnAlQHQQAAAAAAQJKcIYCfn588PT0b7IsoKmcYhoqKinT27FlJ0o033tggxyEIAAAAAACotLTUGQK0bdu2qcsxLQ8PD0nS2bNn5efn1yCXCXCzQAAAAACA854Anp6eTVwJyn4HDXWfBs4IMAnDMPRjSWm1+nq0cOUUIAAAAMCk+C7Q9Br6d0AQYBI/lpQqdO7H1eqb9Wy0PK0sDQAAAAC4HnFpAAAAAAAAJsKffU1o/5M2eVrL33CiqLhUfZ/f3EQVAQAAAEDz0rlzZ0VGRio5ObmpS6l3nBFgQp5WV3la3S77qf87UQIAAABAc5CcnCyLxaL9+/dXuj8yMlI9e/a84hxZWVl6+umn9fXXX1f7uOfPn9ekSZPUvn17tWrVSkOGDNGBAwdqUnqD4IwAAAAAAAAuk52dLReX//9v51lZWXrmmWcUGRmpzp07X3W8w+HQ8OHDdfjwYc2aNUvt2rXTa6+9psjISGVmZqpr164NWP2VEQQAAAAAAHCZli1b1mn8O++8o927d2vdunUaNWqUJGnMmDHq1q2b5s2bpzVr1tRHmbXCpQEAAAAAAFymc+fOmjBhgqSfLy0YPXq0JGnIkCGyWCyyWCzatm1blePfeecd+fv76+6773a2tW/fXmPGjNG7776rixcvNmT5V0QQAAAAAAAwhfz8fOXl5VX4KSkpueK4QYMGaerUqZKkJ554QqtXr9bq1avVvXv3KsccPHhQt99+e7nLCySpf//+Kioq0tGjR+v+gmqJSwMAAAAAAJUyDEM/lpQ2dRnleLRwlcViqdVYm81W5b4ePXpUua9Lly6KiIjQq6++qjvuuEORkZFXPdaZM2c0aNCgCu033nijJOn06dPq1avX1YtuAAQBAAAAAIBK/VhSqtC5Hzd1GeVkPRstT2vtvsomJSWpW7duFdr/8Ic/qLS0fgOPH3/8sdL7DLi7uzv3NxWCAAAAAACAKfTv3199+/at0O7r66u8vLx6PZaHh0el9wH46aefnPubCkHAZUaOHKlt27Zp6NCheuedd5q6HAAAAABoMh4tXJX1bHRTl1GORwvXpi6hWm688UadOXOmQntZW2BgYGOX5EQQcJlp06bpoYce0ptvvtnUpQAAAABAk7JYLLU+Df96U9P7EvTu3Vv/+te/5HA4yt0w8JNPPpGnp2ellyg0Fp4acJnIyEh5eXk1dRkAAAAAgGakVatWkqTz589Xq/+oUaOUm5ur9evXO9vy8vK0bt06xcbGVnr/gMZS4yBg/vz56tevn7y8vOTn56cRI0YoOzu7yv6lpaV66qmnFBISIg8PD91000167rnnZBhGnQq/3I4dOxQbG6vAwEBZLBZt3Lix0n5JSUnq3Lmz3N3dFR4err1799ZrHQAAAACA60/v3r3l6uqqBQsW6M0339TatWt19uzZKvuPGjVK//Vf/6X4+Hg9++yzeu211xQZGanS0lI988wzjVh5RTUOArZv3y673a49e/YoLS1NJSUlGjZsmAoLCyvtv2DBAi1dulRLlizR559/rgULFuhPf/qTFi9eXOUxdu3aVelzHLOyspSbm1vpmMLCQoWFhSkpKanKeVNSUpSQkKB58+bpwIEDCgsLU3R09BV/eQAAAAAABAQEaNmyZTp79qwefvhh3XfffcrKyqqyv6urqzZt2qSxY8fq1Vdf1axZs9SuXTtt2bJFt9xySyNWXpHFqOOf5s+dOyc/Pz9t37690mck/va3v5W/v7+WL1/ubLvnnnvk4eGhv/3tbxX6OxwO3X777eratavWrl0rV9efbwSRnZ2twYMHKyEhQbNnz77yi7JYtGHDBo0YMaJce3h4uPr166clS5Y4j9WxY0c99thjmjNnjrPftm3btGTJkmrfLLCgoEA+Pj7Kz8+Xt7d3tcY0tqLiS87HflT2uI2r7QcAAABwffvpp5904sQJhYSEOB9xh6ZRnd9FXb6H1vkeAfn5+ZKkNm3aVLr/17/+tdLT03X06FFJ0uHDh7Vz507FxMRUXpCLizZt2qSDBw9q/PjxcjgcOn78uKKiojRixIirhgBVKS4uVmZmpmw2W7lj2Ww2ZWRk1GrOpKQkhYaGql+/frUaDwAAAABAY6vTn30dDoemT5+ugQMHqmfPnpX2mTNnjgoKCnTrrbfK1dVVpaWleuGFF3T//fdXOW9gYKC2bNmiiIgIjRs3ThkZGbLZbFq6dGmta83Ly1Npaan8/f3Ltfv7++uLL75wbttsNh0+fFiFhYUKCgrSunXrNGDAgErntNvtstvtziQGAAAAAIDmrk5BgN1u15EjR7Rz584q+7z99tt66623tGbNGvXo0UOHDh3S9OnTFRgYqLi4uCrHBQcHa/Xq1Ro8eLC6dOmi5cuX1/hxDbWxefPmBj8GAAAAAABNpdaXBkyZMkUffPCBtm7dqqCgoCr7zZo1S3PmzNG9996rXr166cEHH9SMGTM0f/78K86fm5urSZMmKTY2VkVFRZoxY0ZtS5UktWvXTq6urhVuNpibm6uAgIA6zQ0AAAAAwLWixkGAYRiaMmWKNmzYoC1btigkJOSK/YuKiuTiUv4wrq6ucjgcVY7Jy8vT0KFD1b17d61fv17p6elKSUnRzJkza1quk9VqVZ8+fZSenu5sczgcSk9Pr/LUfwAAAAAArjc1vjTAbrdrzZo1evfdd+Xl5aWcnBxJko+Pjzw8PLRkyRJt2LDB+YU7NjZWL7zwgoKDg9WjRw8dPHhQCxcu1EMPPVTp/A6HQzExMerUqZNSUlLk5uam0NBQpaWlKSoqSh06dKj07IALFy7o2LFjzu0TJ07o0KFDatOmjYKDgyVJCQkJiouLU9++fdW/f38tWrRIhYWFio+Pr+nbAAAAAADANanGQUDZDfsiIyPLta9cuVITJkxQXl6ejh8/7mxfvHixnnrqKT366KM6e/asAgMDNXnyZM2dO7fS+V1cXJSYmKiIiAhZrVZne1hYmDZv3qz27dtXOm7//v0aMmSIczshIUGSFBcXp+TkZEnS2LFjde7cOc2dO1c5OTnq3bu3UlNTK9xAEAAAAACA65XFMAyjqYu41tXl+Y2Npaj4kkLnfixJyno2Wp5WtxrtBwAAAHB9q86z69E4qvO7qMv30FrfLBAAAAAAAFx7CAIAAAAAADARggAAAAAAAEyEIAAAAAAAgMt07txZEyZMaOoyGgRBAAAAAADgupacnCyLxaL9+/dXuj8yMlI9e/a84hxZWVl6+umn9fXXX1frmGfOnNGcOXM0ZMgQeXl5yWKxaNu2bTWsvGEQBAAAAAAAcJns7Gy98cYbzu2srCw988wz1Q4CsrOztWDBAp06dUq9evVqoCprhyAAAAAAAIDLtGzZUi1atKj1+D59+ujbb7/V0aNHlZCQUI+V1R1BAAAAAAAAl/nlPQKSk5M1evRoSdKQIUNksViueqq/l5eX2rRp0wiV1pxbUxcAAAAAAEBjyM/PV15eXoX2kpKSK44bNGiQpk6dqldffVVPPPGEunfvLknO/3utIQgAAAAAAFTOMKSSoqauorwWnpLFUquhNputyn09evSocl+XLl0UERGhV199VXfccYciIyNrdfzmgiAAAAAAAFC5kiIpMbCpqyjvidOStVWthiYlJalbt24V2v/whz+otLS0rpVdMwgCAAAAAACm0L9/f/Xt27dCu6+vb6WXDFyvCAIAAAAAAJVr4fnzX+CbkxaeTV3BNY8gAAAAAABQOYul1qfhX28stbwvQXPE4wMBAAAAALiKVq1+DkTOnz/ftIXUA84IAAAAAADgKnr37i1XV1ctWLBA+fn5atmypaKiouTn51flmOeff16S9Nlnn0mSVq9erZ07d0qSnnzyyYYvugoEAQAAAAAAXEVAQICWLVum+fPn6+GHH1Zpaam2bt16xSDgqaeeKre9YsUK538TBAAAAAAA0EAmTJigCRMmVLl/27ZtFdq+/vrrCm2PPPKIHnnkkWof1zCMavdtTNwjAAAAAAAAEyEIAAAAAADARAgCAAAAAAAwEYKAy4wcOVK+vr4aNWpUU5cCAAAAAEC9Iwi4zLRp07Rq1aqmLgMAAAAAgAZBEHCZyMhIeXl5NXUZAAAAAAA0iBoHAfPnz1e/fv3k5eUlPz8/jRgxQtnZ2Vcdd+rUKT3wwANq27atPDw81KtXL+3fv79WRVdlx44dio2NVWBgoCwWizZu3FihT1JSkjp37ix3d3eFh4dr79699VoDAAAAAFzLmusj78ykoX8HNQ4Ctm/fLrvdrj179igtLU0lJSUaNmyYCgsLqxzz/fffa+DAgWrRooU++ugjZWVl6c9//rN8fX0r7b9r1y6VlJRUaM/KylJubm6VxyksLFRYWJiSkpIq3Z+SkqKEhATNmzdPBw4cUFhYmKKjo3X27NmrvGoAAAAAuL65ublJki5dutTElaDsd1D2O6lvNZ41NTW13HZycrL8/PyUmZmpQYMGVTpmwYIF6tixo1auXOlsCwkJqbSvw+GQ3W5X165dtXbtWrm6ukqSsrOzFRUVpYSEBM2ePbvSsTExMYqJiamy9oULF2rixImKj4+XJC1btkwffvihVqxYoTlz5lT9ogEAAADgOufq6ipXV1cVFBRwuXQTKygocP4+GkKd44X8/HxJUps2bars89577yk6OlqjR4/W9u3b1aFDBz366KOaOHFihb4uLi7atGmTBg0apPHjx2v16tU6ceKEoqKiNGLEiCpDgKspLi5WZmamHn/88XLHstlsysjIqNWcSUlJSkpKUmlpaa3GAwAAAEBzYbFY5OfnpzNnzqhly5Zq1aqVLBZLU5dlKoZhqLCwUAUFBbrxxhsb7P2vUxDgcDg0ffp0DRw4UD179qyy31dffaWlS5cqISFBTzzxhPbt26epU6fKarUqLi6uQv/AwEBt2bJFERERGjdunDIyMmSz2bR06dJa15qXl6fS0lL5+/uXa/f399cXX3zh3LbZbDp8+LAKCwsVFBSkdevWacCAAZXOabfbZbfbVVBQIB8fn1rXBgAAAADNgY+Pj3788Ufl5eXp3LlzTV2OKVksFrVu3bpBv2PWKQiw2+06cuSIdu7cecV+DodDffv2VWJioiTptttu05EjR7Rs2bJKgwBJCg4O1urVqzV48GB16dJFy5cvb5Q0avPmzQ1+DAAAAABojiwWi2688Ub5+flVet82NLwWLVo02CUBZWodBEyZMkUffPCBduzYoaCgoCv2vfHGGxUaGlqurXv37vrHP/5R5Zjc3FxNmjRJsbGx2rdvn2bMmKHFixfXtly1a9dOrq6uFW42mJubq4CAgFrPCwAAAADXm4a8Ph1Nr8ZPDTAMQ1OmTNGGDRu0ZcuWKm/690sDBw6s8IjBo0ePqlOnTpX2z8vL09ChQ9W9e3etX79e6enpSklJ0cyZM2tarpPValWfPn2Unp7ubHM4HEpPT6/y1H8AAAAAAK43NT4jwG63a82aNXr33Xfl5eWlnJwcST9fS+Lh4aElS5Zow4YN5b5wz5gxQ7/+9a+VmJioMWPGaO/evXr99df1+uuvV5jf4XAoJiZGnTp1UkpKitzc3BQaGqq0tDRFRUWpQ4cOmjFjRqW1XbhwQceOHXNunzhxQocOHVKbNm0UHByshIQExcXFqW/fvurfv78WLVqkwsJC51MEAAAAAAC43tU4CCi7YV9kZGS59pUrV2rChAnKy8vT8ePHy+3r16+fNmzYoMcff1zPPvusQkJCtGjRIt1///0V5ndxcVFiYqIiIiJktVqd7WFhYdq8ebPat29fZW379+/XkCFDnNsJCQmSpLi4OCUnJ2vs2LE6d+6c5s6dq5ycHPXu3VupqakVbiAIAAAAAMD1ymIYhtHURVzryp4akJ+fL29v76Yup1JFxZcUOvdjSVLWs9HytLrVaD8AAAAAoPmoy/fQGt8jAAAAAAAAXLsIAgAAAAAAMBGCAAAAAAAATIQgAAAAAAAAEyEIAAAAAADARAgCAAAAAAAwEYIAAAAAAABMhCAAAAAAAAATIQgAAAAAAMBECAIAAAAAADARggAAAAAAAEyEIAAAAAAAABMhCAAAAAAAwEQIAgAAAAAAMBGCAAAAAAAATIQgAAAAAAAAEyEIAAAAAADARAgCAAAAAAAwEYIAAAAAAABMhCAAAAAAAAATIQgAAAAAAMBECAIAAAAAADARggAAAAAAAEyEIAAAAAAAABMhCLjMyJEj5evrq1GjRjV1KQAAAAAA1DuCgMtMmzZNq1atauoyAAAAAABoEAQBl4mMjJSXl1dTlwEAAAAAQIOocRAwf/589evXT15eXvLz89OIESOUnZ1d7fEvvviiLBaLpk+fXtNDX9WOHTsUGxurwMBAWSwWbdy4sUKfpKQkde7cWe7u7goPD9fevXvrvQ4AAAAAAJqrGgcB27dvl91u1549e5SWlqaSkhINGzZMhYWFVx27b98+/eUvf9GvfvWrK/bbtWuXSkpKKrRnZWUpNze3ynGFhYUKCwtTUlJSpftTUlKUkJCgefPm6cCBAwoLC1N0dLTOnj171doBAAAAALge1DgISE1N1YQJE9SjRw+FhYUpOTlZJ0+eVGZm5hXHXbhwQffff7/eeOMN+fr6VtnP4XDIbrdr3LhxKi0tdbZnZ2crKipKb775ZpVjY2Ji9Pzzz2vkyJGV7l+4cKEmTpyo+Ph4hYaGatmyZfL09NSKFSuu8qoBAAAAALg+1PkeAfn5+ZKkNm3aXLGf3W7X8OHDZbPZrlyQi4s2bdqkgwcPavz48XI4HDp+/LiioqI0YsQIzZ49u1Z1FhcXKzMzs9zxXVxcZLPZlJGRUas5k5KSFBoaqn79+tVqPAAAAAAAjc2tLoMdDoemT5+ugQMHqmfPnlX2W7t2rQ4cOKB9+/ZVa97AwEBt2bJFERERGjdunDIyMmSz2bR06dJa15qXl6fS0lL5+/uXa/f399cXX3zh3LbZbDp8+LAKCwsVFBSkdevWacCAAZXOabfbZbfbVVBQIB8fn1rXBgAAAABAY6lTEGC323XkyBHt3Lmzyj7ffPONpk2bprS0NLm7u1d77uDgYK1evVqDBw9Wly5dtHz5clkslrqUWy2bN29u8GMAAAAAANBUan1pwJQpU/TBBx9o69atCgoKqrJfZmamzp49q9tvv11ubm5yc3PT9u3b9eqrr8rNza3cfQB+KTc3V5MmTVJsbKyKioo0Y8aM2pYqSWrXrp1cXV0r3GwwNzdXAQEBdZobAAAAAIBrRY2DAMMwNGXKFG3YsEFbtmxRSEjIFfsPHTpUn376qQ4dOuT86du3r+6//34dOnRIrq6uFcbk5eVp6NCh6t69u9avX6/09HSlpKRo5syZNS3XyWq1qk+fPkpPT3e2ORwOpaenV3nqPwAAAAAA15saXxpgt9u1Zs0avfvuu/Ly8lJOTo4kycfHRx4eHlqyZIk2bNjg/MLt5eVV4f4BrVq1Utu2bSu9r4DD4VBMTIw6deqklJQUubm5KTQ0VGlpaYqKilKHDh2qPDvgwoULOnbsmHP7xIkTOnTokNq0aaPg4GAlJCQoLi5Offv2Vf/+/bVo0SIVFhYqPj6+pm8DAAAAAADXpBoHAWU37IuMjCzXvnLlSk2YMEF5eXk6fvx4rQtycXFRYmKiIiIiZLVane1hYWHavHmz2rdvX+XY/fv3a8iQIc7thIQESVJcXJySk5M1duxYnTt3TnPnzlVOTo569+6t1NTUCjcQBAAAAADgemUxDMNo6iKudWVPDcjPz5e3t3dTl1OpouJLCp37sSQp69loeVrdarQfAAAAANB81OV7aK1vFggAAAAAAK49BAEAAAAAAJgIQQAAAAAAACZCEAAAAAAAgIkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAEAAAAAAJgIQQAAAAAAACZCEAAAAAAAgIkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAEAAAAAAJgIQQAAAAAAACZCEFCJkSNHytfXV6NGjWrqUgAAAAAAqFcEAZWYNm2aVq1a1dRlAAAAAABQ7wgCKhEZGSkvL6+mLgMAAAAAgHpXqyBg/vz56tevn7y8vOTn56cRI0YoOzu73vrX1o4dOxQbG6vAwEBZLBZt3Lix0n5JSUnq3Lmz3N3dFR4err1799Z7LQAAAAAANEe1CgK2b98uu92uPXv2KC0tTSUlJRo2bJgKCwvrpb8k7dq1SyUlJRXas7KylJubW+mYwsJChYWFKSkpqcp5U1JSlJCQoHnz5unAgQMKCwtTdHS0zp49e5VXDQAAAADAtc+tNoNSU1PLbScnJ8vPz0+ZmZkaNGhQnfs7HA7Z7XZ17dpVa9eulaurqyQpOztbUVFRSkhI0OzZsyuMi4mJUUxMzBVrX7hwoSZOnKj4+HhJ0rJly/Thhx9qxYoVmjNnzpVfOAAAAAAA17h6uUdAfn6+JKlNmzb10t/FxUWbNm3SwYMHNX78eDkcDh0/flxRUVEaMWJEpSFAdRQXFyszM1M2m63csWw2mzIyMmo8X1JSkkJDQ9WvX79a1QMAAAAAQGOrcxDgcDg0ffp0DRw4UD179qy3/oGBgdqyZYt27typcePGKSoqSjabTUuXLq11rXl5eSotLZW/v3+5dn9/f+Xk5Di3bTabRo8erU2bNikoKKjKkMButysrK0v79u2rdU0AAAAAADSmWl0a8Et2u11HjhzRzp07671/cHCwVq9ercGDB6tLly5avny5LBZLXUu+qs2bNzf4MQAAAAAAaAp1OiNgypQp+uCDD7R161YFBQXVe//c3FxNmjRJsbGxKioq0owZM+pSrtq1aydXV9cKNxvMzc1VQEBAneYGAAAAAOBaUKsgwDAMTZkyRRs2bNCWLVsUEhJSr/2ln0/jHzp0qLp3767169crPT1dKSkpmjlzZm1KliRZrVb16dNH6enpzjaHw6H09HQNGDCg1vMCAAAAAHCtqNWlAXa7XWvWrNG7774rLy8v5/X1Pj4+8vDw0JIlS7RhwwbnF+6r9b+cw+FQTEyMOnXqpJSUFLm5uSk0NFRpaWmKiopShw4dKj074MKFCzp27Jhz+8SJEzp06JDatGmj4OBgSVJCQoLi4uLUt29f9e/fX4sWLVJhYaHzKQIAAAAAAFzPahUElN2wLzIyslz7ypUrNWHCBOXl5en48ePV7n85FxcXJSYmKiIiQlar1dkeFhamzZs3q3379pXWtX//fg0ZMsS5nZCQIEmKi4tTcnKyJGns2LE6d+6c5s6dq5ycHPXu3VupqakVbiAIAAAAAMD1yGIYhtHURVzrCgoK5OPjo/z8fHl7ezd1OZUqKr6k0LkfS5Kyno2Wp9WtRvsBAAAAAM1HXb6H1vnxgQAAAAAA4NpBEAAAAAAAgIkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAEAAAAAAJgIQQAAAAAAACZCEAAAAAAAgIkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAEAAAAAAJgIQQAAAAAAACZCEAAAAAAAgIkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBlxk5cqR8fX01atSopi4FAAAAAIB6RxBwmWnTpmnVqlVNXQYAAAAAAA2CIOAykZGR8vLyauoyAAAAAABoEI0SBMyfP1/9+vWTl5eX/Pz8NGLECGVnZ9frMXbs2KHY2FgFBgbKYrFo48aNlfZLSkpS586d5e7urvDwcO3du7de6wAAAAAAoDlrlCBg+/btstvt2rNnj9LS0lRSUqJhw4apsLCw0v67du1SSUlJhfasrCzl5uZWOqawsFBhYWFKSkqqso6UlBQlJCRo3rx5OnDggMLCwhQdHa2zZ8/W7oUBAAAAAHCNaZQgIDU1VRMmTFCPHj0UFham5ORknTx5UpmZmRX6OhwO2e12jRs3TqWlpc727OxsRUVF6c0336z0GDExMXr++ec1cuTIKutYuHChJk6cqPj4eIWGhmrZsmXy9PTUihUr6v4iAQAAAAC4BjTJPQLy8/MlSW3atKmwz8XFRZs2bdLBgwc1fvx4ORwOHT9+XFFRURoxYoRmz55dq2MWFxcrMzNTNput3LFsNpsyMjJqNWdSUpJCQ0PVr1+/Wo0HAAAAAKCxNXoQ4HA4NH36dA0cOFA9e/astE9gYKC2bNminTt3aty4cYqKipLNZtPSpUtrfdy8vDyVlpbK39+/XLu/v79ycnKc2zabTaNHj9amTZsUFBR0xZDAbrcrKytL+/btq3VdAAAAAAA0JrfGPqDdbteRI0e0c+fOK/YLDg7W6tWrNXjwYHXp0kXLly+XxWJp8Po2b97c4McAAAAAAKCpNOoZAVOmTNEHH3ygrVu3Kigo6Ip9c3NzNWnSJMXGxqqoqEgzZsyo07HbtWsnV1fXCjcbzM3NVUBAQJ3mBgAAAADgWtEoQYBhGJoyZYo2bNigLVu2KCQk5Ir98/LyNHToUHXv3l3r169Xenq6UlJSNHPmzFrXYLVa1adPH6WnpzvbHA6H0tPTNWDAgFrPCwAAAADAtaRRLg2w2+1as2aN3n33XXl5eTmvyffx8ZGHh0e5vg6HQzExMerUqZNSUlLk5uam0NBQpaWlKSoqSh06dKj07IALFy7o2LFjzu0TJ07o0KFDatOmjYKDgyVJCQkJiouLU9++fdW/f38tWrRIhYWFio+Pb8BXDwAAAABA89EoQUDZTf4iIyPLta9cuVITJkwo1+bi4qLExERFRETIarU628PCwrR582a1b9++0mPs379fQ4YMcW4nJCRIkuLi4pScnCxJGjt2rM6dO6e5c+cqJydHvXv3VmpqaoUbCAIAAAAAcL1qlCDAMIwa9b/jjjsqbb/tttuqHBMZGVmt40yZMkVTpkypUT0AAAAAAFwvGv3xgQAAAAAAoOkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAEAAAAAAJgIQQAAAAAAACZCEAAAAAAAgIkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAEAAAAAAJgIQQAAAAAAACZCEAAAAAAAgIkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAEAAAAAAJgIQcBlRo4cKV9fX40aNaqpSwEAAAAAoN4RBFxm2rRpWrVqVVOXAQAAAABAgyAIuExkZKS8vLyaugwAAAAAABpEjYOAHTt2KDY2VoGBgbJYLNq4ceMV+5eWluqpp55SSEiIPDw8dNNNN+m5556TYRi1rblOdSUlJalz585yd3dXeHi49u7dW691AAAAAADQnNU4CCgsLFRYWJiSkpKq1X/BggVaunSplixZos8//1wLFizQn/70Jy1evLjKMbt27VJJSUmF9qysLOXm5ta6rpSUFCUkJGjevHk6cOCAwsLCFB0drbNnz1brtQAAAAAAcK1zq+mAmJgYxcTEVLv/7t27ddddd2n48OGSpM6dO+vvf/97lX+Jdzgcstvt6tq1q9auXStXV1dJUnZ2tqKiopSQkKDZs2fXqq6FCxdq4sSJio+PlyQtW7ZMH374oVasWKE5c+ZU+zUBAAAAAHCtavB7BPz6179Wenq6jh49Kkk6fPiwdu7cWeWXdhcXF23atEkHDx7U+PHj5XA4dPz4cUVFRWnEiBGVhgDVUVxcrMzMTNlstnLHstlsysjIqNWcSUlJCg0NVb9+/Wo1HgAAAACAxlbjMwJqas6cOSooKNCtt94qV1dXlZaW6oUXXtD9999f5ZjAwEBt2bJFERERGjdunDIyMmSz2bR06dJa15GXl6fS0lL5+/uXa/f399cXX3zh3LbZbDp8+LAKCwsVFBSkdevWacCAAZXOabfbZbfbVVBQIB8fn1rXBgAAAABAY2nwIODtt9/WW2+9pTVr1qhHjx46dOiQpk+frsDAQMXFxVU5Ljg4WKtXr9bgwYPVpUsXLV++XBaLpaHL1ebNmxv8GAAAAAAANJUGvzRg1qxZmjNnju6991716tVLDz74oGbMmKH58+dfcVxubq4mTZqk2NhYFRUVacaMGXWqo127dnJ1da1ws8Hc3FwFBATUaW4AAAAAAK4VDR4EFBUVycWl/GFcXV3lcDiqHJOXl6ehQ4eqe/fuWr9+vdLT05WSkqKZM2fWug6r1ao+ffooPT3d2eZwOJSenl7lqf8AAAAAAFxvanxpwIULF3Ts2DHn9okTJ3To0CG1adNGwcHBWrJkiTZs2OD8wh0bG6sXXnhBwcHB6tGjhw4ePKiFCxfqoYceqnR+h8OhmJgYderUSSkpKXJzc1NoaKjS0tIUFRWlDh06VHp2wNXqkqSEhATFxcWpb9++6t+/vxYtWqTCwkLnUwQAAAAAALje1TgI2L9/v4YMGeLcTkhIkCTFxcUpOTlZeXl5On78uHP/4sWL9dRTT+nRRx/V2bNnFRgYqMmTJ2vu3LmVzu/i4qLExERFRETIarU628PCwrR582a1b9++VnVJ0tixY3Xu3DnNnTtXOTk56t27t1JTUyvcQBAAAAAAgOuVxTAMo6mLuNaVPTUgPz9f3t7eTV1OpYqKLyl07seSpKxno+VpdavRfgAAAABA81GX76ENfo8AAAAAAADQfBAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAEAAAAAAJgIQQAAAAAAACZCEAAAAAAAgIkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAEAAAAAAJgIQQAAAAAAACZCEAAAAAAAgIkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAEAAAAAAJgIQQAAAAAAACZCEAAAAAAAgIkQBAAAAAAAYCIEAQAAAAAAmAhBAAAAAAAAJkIQAAAAAACAiRAEAAAAAABgIgQBAAAAAACYCEEAAAAAAAAmQhAAAAAAAICJEAQAAAAAAGAiBAGXGTlypHx9fTVq1KimLgUAAAAAgHpHEHCZadOmadWqVU1dBgAAAAAADYIg4DKRkZHy8vJq6jIAAAAAAGgQNQ4CduzYodjYWAUGBspisWjjxo3VGnfq1Ck98MADatu2rTw8PNSrVy/t37+/poevc21JSUnq3Lmz3N3dFR4err1799ZrDQAAAAAANGc1DgIKCwsVFhampKSkao/5/vvvNXDgQLVo0UIfffSRsrKy9Oc//1m+vr6V9t+1a5dKSkoqtGdlZSk3N7fWtaWkpCghIUHz5s3TgQMHFBYWpujoaJ09e7barwUAAAAAcA0yDKm4sHo/htHU1TYot5oOiImJUUxMTI3GLFiwQB07dtTKlSudbSEhIZX2dTgcstvt6tq1q9auXStXV1dJUnZ2tqKiopSQkKDZs2fXqraFCxdq4sSJio+PlyQtW7ZMH374oVasWKE5c+bU6DUBAAAAAK4hJUVSYmD1+j5xWrK2ath6mlCj3CPgvffeU9++fTV69Gj5+fnptttu0xtvvFF5QS4u2rRpkw4ePKjx48fL4XDo+PHjioqK0ogRI6oMAa6muLhYmZmZstls5Y5ls9mUkZFRqzmTkpIUGhqqfv361Wo8AAAAAACNrcZnBNTGV199paVLlyohIUFPPPGE9u3bp6lTp8pqtSouLq5C/8DAQG3ZskUREREaN26cMjIyZLPZtHTp0lrXkJeXp9LSUvn7+5dr9/f31xdffOHcttlsOnz4sAoLCxUUFKR169ZpwIABlc5pt9tlt9tVUFAgHx+fWtcGAAAAAGhEM49JVs/ybcVF0ss3N009jaxRggCHw6G+ffsqMTFRknTbbbfpyJEjWrZsWaVBgCQFBwdr9erVGjx4sLp06aLly5fLYrE0eK2bN29u8GMAAAAAAJqQ1fO6PvX/ahrl0oAbb7xRoaGh5dq6d++ukydPVjkmNzdXkyZNUmxsrIqKijRjxow61dCuXTu5urpWuNlgbm6uAgIC6jQ3AAAAAADXikYJAgYOHKjs7OxybUePHlWnTp0q7Z+Xl6ehQ4eqe/fuWr9+vdLT05WSkqKZM2fWugar1ao+ffooPT3d2eZwOJSenl7lqf8AAAAAAFxvanxpwIULF3Ts2DHn9okTJ3To0CG1adNGwcHBWrJkiTZs2FDuC/eMGTP061//WomJiRozZoz27t2r119/Xa+//nqF+R0Oh2JiYtSpUyelpKTIzc1NoaGhSktLU1RUlDp06FDl2QFXqy0hIUFxcXHq27ev+vfvr0WLFqmwsND5FAEAAAAAAK53NQ4C9u/fryFDhji3ExISJElxcXFKTk5WXl6ejh8/Xm5Mv379tGHDBj3++ON69tlnFRISokWLFun++++vML+Li4sSExMVEREhq9XqbA8LC9PmzZvVvn37Wtc2duxYnTt3TnPnzlVOTo569+6t1NTUCjcQBAAAAADgemUxDMNo6iKudWVPDcjPz5e3t3dTl1OpouJLCp37sSQp69loeVrdarQfAAAAAK5pxYVSYuDP//3E6Yo3C7za/mamLt9DG+UeAQAAAAAAoHkgCAAAAAAAwEQIAgAAAAAAMBGCAAAAAAAATIQgAAAAAAAAE+HW8PWg7MELBQUFTVxJ1YqKL8lxsUjSz3VequSpAVfaDwAAAADXtOJC6eL/e2heQYFkLa3Z/mam7PtnbR4EyOMD68F//vMfdezYsanLAAAAAACYzDfffKOgoKAajSEIqAcOh0OnT5+Wl5eXLBZLU5fTaAoKCtSxY0d98803NX5uJdAYWKO4FrBO0dyxRtHcsUbR3DXUGjUMQz/88IMCAwPl4lKzq/45/7seuLi41DiBuZ54e3vzjy6aNdYorgWsUzR3rFE0d6xRNHcNsUZ9fHxqNY6bBQIAAAAAYCIEAQAAAAAAmAhBAGqtZcuWmjdvnlq2bNnUpQCVYo3iWsA6RXPHGkVzxxpFc9cc1yg3CwQAAAAAwEQ4IwAAAAAAABMhCAAAAAAAwEQIAgAAAAAAMBGCAAAAAAAATIQg4Dq2Y8cOxcbGKjAwUBaLRRs3bqzQ5/PPP9fvfvc7+fj4qFWrVurXr59Onjzp3P/TTz/Jbrerbdu2uuGGG3TPPfcoNze33BwnT57U8OHD5enpKT8/P82aNUuXLl0q12fbtm26/fbb1bJlS918881KTk6uUEtSUpI6d+4sd3d3hYeHa+/evfXyPqB5a6x1arFYKvysXbu2XB/WKSpTH2v09ddfV2RkpLy9vWWxWHT+/PkKc3z33Xe6//775e3trdatW+vhhx/WhQsXyvX597//rYiICLm7u6tjx47605/+VGGedevW6dZbb5W7u7t69eqlTZs21fk9QPPWWGu0c+fOFf4dffHFF8v1YY2iMnVdo999950ee+wx3XLLLfLw8FBwcLCmTp2q/Pz8cnPwmRS11VhrtDl9HiUIuI4VFhYqLCxMSUlJle4/fvy4fvOb3+jWW2/Vtm3b9O9//1tPPfWU3N3dnX1mzJih999/X+vWrdP27dt1+vRp3X333c79paWlGj58uIqLi7V79269+eabSk5O1ty5c519Tpw4oeHDh2vIkCE6dOiQpk+frkceeUQff/yxs09KSooSEhI0b948HThwQGFhYYqOjtbZs2cb4J1Bc9IY67TMypUrdebMGefPiBEjnPtYp6hKfazRoqIi3XnnnXriiSeqPM7999+vzz77TGlpafrggw+0Y8cOTZo0ybm/oKBAw4YNU6dOnZSZmamXXnpJTz/9tF5//XVnn927d+u+++7Tww8/rIMHD2rEiBEaMWKEjhw5Ug/vBJqrxlqjkvTss8+W+3f0sccec+5jjaIqdV2jp0+f1unTp/Xyyy/ryJEjSk5OVmpqqh5++GHnHHwmRV00xhot02w+jxowBUnGhg0byrWNHTvWeOCBB6occ/78eaNFixbGunXrnG2ff/65IcnIyMgwDMMwNm3aZLi4uBg5OTnOPkuXLjW8vb2NixcvGoZhGLNnzzZ69OhR4djR0dHO7f79+xt2u925XVpaagQGBhrz58+v+YvFNauh1mlVc/8S6xTVUZs1+ktbt241JBnff/99ufasrCxDkrFv3z5n20cffWRYLBbj1KlThmEYxmuvvWb4+vo6/201DMP44x//aNxyyy3O7TFjxhjDhw8vN3d4eLgxefLkatWHa19DrVHDMIxOnToZr7zySpVjWaOojrqu0TJvv/22YbVajZKSEsMw+EyK+tNQa7SquX+pMdcoZwSYlMPh0Icffqhu3bopOjpafn5+Cg8PL3caTGZmpkpKSmSz2Zxtt956q4KDg5WRkSFJysjIUK9eveTv7+/sEx0drYKCAn322WfOPr+co6xP2RzFxcXKzMws18fFxUU2m83ZB+ZUX+u0jN1uV7t27dS/f3+tWLFCP/97/DPWKWqjOmu0OjIyMtS6dWv17dvX2Waz2eTi4qJPPvnE2WfQoEGyWq3OPtHR0crOztb333/v7HOldQzzqa81WubFF19U27Ztddttt+mll14qd9o1axS1Uds1mp+fL29vb7m5uUniMykaTn2t0TLN5fMoQYBJnT17VhcuXNCLL76oO++8U//85z81cuRI3X333dq+fbskKScnR1arVa1bty431t/fXzk5Oc4+v/wHt2x/2b4r9SkoKNCPP/6ovLw8lZaWVtqnbA6YU32tU+nn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ueeeU1BQkDw8PHTXXXfpu+++qzDvRx99pIiICLVq1UpeXl4aPny4Pvvss6vWU1JSomeeeUZdu3aVu7u72rZtq9/85jdKS0tz9qnsHgFl13Nv3LhRPXv2VMuWLdWjRw+lpqZWOMapU6f08MMPKzAwUC1btlRISIj+53/+R8XFxc4+58+f1/Tp09WxY0e1bNlSN998sxYsWCCHw1Gdt/Wqr//ll1+WxWLR//3f/1UY+/jjj8tqter77793tn3yySe688475ePjI09PTw0ePFi7du0qN67sfTl27JgmTJig1q1by8fHR/Hx8SoqKir3XhUWFurNN990XiYyYcKEK76exYsXq0ePHvL09JSvr6/69u2rNWvWOI87a9YsSVJISIhzzq+//lqStHLlSkVFRcnPz08tW7ZUaGioli5dWuEYnTt31m9/+1t9/PHH6tu3rzw8PPSXv/ylVvVW5csvv9Q999yjgIAAubu7KygoSPfee6/y8/NrNR8A4NrDnxIAAKjCW2+9peLiYj322GP67rvv9Kc//UljxoxRVFSUtm3bpj/+8Y86duyYFi9erJkzZ2rFihXOsatXr1ZcXJyio6O1YMECFRUVaenSpfrNb36jgwcPXvF07aefflrz58/XI488ov79+6ugoED79+/XgQMHdMcdd1yx5p07d2r9+vV69NFH5eXlpVdffVX33HOPTp48qbZt20qSTp8+rf79++v8+fOaNGmSbr31Vp06dUrvvPOOioqKZLVaVVRUpMGDB+vUqVOaPHmygoODtXv3bj3++OM6c+aMFi1adMU6qvP6x4wZo9mzZ+vtt992foku8/bbb2vYsGHy9fWVJG3ZskUxMTHq06eP5s2bJxcXF+eX63/961/q379/ufFjxoxRSEiI5s+frwMHDuivf/2r/Pz8tGDBAmd9Ze/vpEmTJEk33XRTla/njTfe0NSpUzVq1ChNmzZNP/30k/7973/rk08+0bhx43T33Xfr6NGj+vvf/65XXnlF7dq1kyS1b99ekrR06VL16NFDv/vd7+Tm5qb3339fjz76qBwOh+x2e7ljZWdn67777tPkyZM1ceJE3XLLLTWutyrFxcWKjo7WxYsX9dhjjykgIECnTp3SBx98oPPnz8vHx6fGcwIArkEGAAAmYLfbjar+Zy8uLs7o1KmTc/vEiROGJKN9+/bG+fPnne2PP/64IckICwszSkpKnO333XefYbVajZ9++skwDMP44YcfjNatWxsTJ04sd5ycnBzDx8enQvvlwsLCjOHDh1+xz7x58yq8HkmG1Wo1jh075mw7fPiwIclYvHixs238+PGGi4uLsW/fvgrzOhwOwzAM47nnnjNatWplHD16tNz+OXPmGK6ursbJkyerrK0mr3/AgAFGnz59yvXbu3evIclYtWqVs6auXbsa0dHRzvoMwzCKioqMkJAQ44477qjwvjz00EPl5hw5cqTRtm3bcm2tWrUy4uLiqnwdv3TXXXcZPXr0uGKfl156yZBknDhxosK+oqKiCm3R0dFGly5dyrV16tTJkGSkpqZW6F+TeleuXFlpLQcPHjQkGevWravWPJIMu91erb4AgGsHlwYAAFCF0aNHl/sLaXh4uKSf7z/wy+vzw8PDVVxcrFOnTkmS0tLSdP78ed13333Ky8tz/ri6uio8PFxbt2694nFbt26tzz77TF9++WWNa7bZbOX+UvyrX/1K3t7e+uqrryRJDodDGzduVGxsrPr27VthfNnlBuvWrVNERIR8fX3LvQabzabS0lLt2LGjyhpq8vrHjh2rzMxMHT9+3NmWkpKili1b6q677pIkHTp0SF9++aXGjRunb7/91jlfYWGhhg4dqh07dlS4XOH3v/99ue2IiAh9++23KigoqO5bWU7r1q31n//8R/v27avV+F9e45+fn6+8vDwNHjxYX331VYVT8kNCQhQdHV2r41xN2Xr++OOPy10qAQAwFy4NAACgCsHBweW2y75EdezYsdL2suvZy77AR0VFVTqvt7f3FY/77LPP6q677lK3bt3Us2dP3XnnnXrwwQf1q1/9qsY1S5Kvr6+ztnPnzqmgoEA9e/a84jxffvml/v3vfztPbb/c2bNnrzhWqt7rHz16tBISEpSSkqInnnhChmFo3bp1iomJcfYrmy8uLq7KY+bn5zsvI5Aqvg9l+77//vurvv+V+eMf/6jNmzerf//+uvnmmzVs2DCNGzdOAwcOrNb4Xbt2ad68ecrIyKjwBTw/P79c4BQSElLj+qorJCRECQkJWrhwod566y1FRETod7/7nR544AEuCwAAEyEIAACgCq6urjVqN/7fE3nL/jq9evVqBQQEVOh3tbv9Dxo0SMePH9e7776rf/7zn/rrX/+qV155RcuWLdMjjzxSq5qNGj4t2OFw6I477tDs2bMr3d+tW7crjpWq9/oDAwMVERGht99+W0888YT27NmjkydPOq/l/+V8L730knr37l3pMW+44YZy2/X1PpTp3r27srOz9cEHHyg1NVX/+Mc/9Nprr2nu3Ll65plnrjj2+PHjGjp0qG699VYtXLhQHTt2lNVq1aZNm/TKK69UOJuhoZ8Q8Oc//1kTJkxwrq+pU6dq/vz52rNnj4KCghr02ACA5oEgAACAelZ2ar6fn59sNlut5mjTpo3i4+MVHx+vCxcuaNCgQXr66aevGgRcTfv27eXt7a0jR45csd9NN92kCxcu1Kr+mr7+sWPH6tFHH1V2drZSUlLk6emp2NjYCvN5e3vX+v2szOVPXbiaVq1aaezYsRo7dqyKi4t1991364UXXtDjjz8ud3f3Kud7//33dfHiRb333nvlzlS42iUida33Snr16qVevXrpySef1O7duzVw4EAtW7ZMzz//fL0dAwDQfHGPAAAA6ll0dLS8vb2VmJiokpKSCvvPnTt3xfHffvttue0bbrhBN998sy5evFjn2lxcXDRixAi9//772r9/f4X9ZX8xHzNmjDIyMvTxxx9X6HP+/HldunSpymPU9PXfc889cnV11d///netW7dOv/3tb9WqVSvn/j59+uimm27Syy+/rAsXLlx1vupq1aqVzp8/X62+l/9OrFarQkNDZRiG8zWW1Xz5nGVnJ/zybIT8/HytXLmyweqtSkFBQYXfXa9eveTi4lIv6wsAcG3gjAAAAOqZt7e3li5dqgcffFC333677r33XrVv314nT57Uhx9+qIEDB2rJkiVVjg8NDVVkZKT69OmjNm3aaP/+/XrnnXc0ZcqUeqkvMTFR//znPzV48GBNmjRJ3bt315kzZ7Ru3Trt3LlTrVu31qxZs/Tee+/pt7/9rSZMmKA+ffqosLBQn376qd555x19/fXXzkfk1fX1+/n5aciQIVq4cKF++OEHjR07ttx8Li4u+utf/6qYmBj16NFD8fHx6tChg06dOqWtW7fK29tb77//fo3fhz59+mjz5s1auHChAgMDFRIS4rwh5OWGDRumgIAADRw4UP7+/vr888+1ZMkSDR8+XF5eXs75JOl///d/de+996pFixaKjY3VsGHDZLVaFRsbq8mTJ+vChQt644035OfnpzNnzjRIvVXZsmWLpkyZotGjR6tbt266dOmSVq9eLVdXV91zzz01mgsAcO0iCAAAoAGMGzdOgYGBevHFF/XSSy/p4sWL6tChgyIiIhQfH3/FsVOnTtV7772nf/7zn7p48aI6deqk559/XrNmzaqX2jp06KBPPvlETz31lN566y0VFBSoQ4cOiomJkaenpyTJ09NT27dvV2JiotatW6dVq1bJ29tb3bp10zPPPHPVG8vV9PWPHTtWmzdvlpeXl/77v/+7wv7IyEhlZGToueee05IlS3ThwgUFBAQoPDxckydPrtX7sHDhQk2aNElPPvmkfvzxR8XFxVX5xXry5Ml66623tHDhQl24cEFBQUGaOnWqnnzySWeffv366bnnntOyZcuUmpoqh8OhEydO6JZbbtE777yjJ598UjNnzlRAQID+53/+R+3bt9dDDz3UIPVWJSwsTNHR0Xr//fd16tQpeXp6KiwsTB999JH+67/+q0ZzAQCuXRajtnfNAQAAQLOUnJys+Ph4HThwQB07dlTbtm1rdI+B7777Tg6HQ+3bt5fdbr/iGSwAgGsPZwQAAABcp26//XZJP99HoapLOSrTpUsX5efnN1RZAIAmRhAAAABwnYmOjlZaWppz+2qXclzu3Xffdd4EsWPHjvVaGwCg6XFpAAAAAAAAJsLjAwEAAAAAMBGCAAAAAAAATIQgAAAAAAAAEyEIAAAAAADARAgCAAAAAAAwEYIAAAAAAABMhCAAAAAAAAATIQgAAAAAAMBECAIAAAAAADCR/w/ZFHzxSwQrRQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_times(data_det001[data_det001.global_evtid==unique[counts>1][1]].time,histtype=\"step\",yerr=False)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.2) Distance to surface and dead layer\n", + "One of the important step in the post-processing of HPGe detector simulations is the detector activeness mapping. Energy deposited close to the surface of the Germanium detector will result in incomplete charge collection and a degraded signal.\n", + "To account for this we added a processor to compute the distance to the detector surface (based on `legendhpges.base.HPGe.distance_to_surface()`)\n", + "\n", + "For the steps in the detector we extracted in the processing chain the local r and z coordinates and we can plot maps of the distance to the detector surface and the activeness for each step. We select only events within 5 mm of the surface for the first plots. We can see that the processor works as expected." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_map(field,scale=\"BuPu\",clab=\"Distance [mm]\"):\n", + " fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True)\n", + " n=100000\n", + " for idx, (data,config) in enumerate(zip([data_det001,data_det002],[\"cfg/metadata/BEGe.json\",\"cfg/metadata/Coax.json\"])):\n", + "\n", + " reg=pg4.geant4.Registry()\n", + " hpge = legendhpges.make_hpge(config,registry=reg)\n", + "\n", + " legendhpges.draw.plot_profile(hpge, split_by_type=True,axes=axs[idx])\n", + " r = np.random.choice([-1,1],p=[0.5,0.5],size=len(ak.flatten(data.rpos_loc)))*ak.flatten(data.rpos_loc)\n", + " z = ak.flatten(data.zpos_loc)\n", + " c=ak.flatten(data[field])\n", + " cut = c<5\n", + "\n", + " s=axs[idx].scatter(r[cut][0:n],z[cut][0:n], c= c[cut][0:n],marker=\".\", label=\"gen. points\",cmap=scale)\n", + " #axs[idx].axis(\"equal\")\n", + "\n", + " if idx == 0:\n", + " axs[idx].set_ylabel(\"Height [mm]\")\n", + " c=plt.colorbar(s)\n", + " c.set_label(clab)\n", + "\n", + " axs[idx].set_xlabel(\"Radius [mm]\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[32mroot [INFO] genericpolycone.antlr>\u001b[0m\n", + "\u001b[32mroot [INFO] genericpolyhedra.antlr>\u001b[0m\n", + "\u001b[32mroot [INFO] visualisation.Mesh.getBoundingBox> [-36.98, -36.98, 0.0] [36.98, 36.98, 29.46]\u001b[0m\n", + "\u001b[32mroot [INFO] box.pycsgmesh> getBoundingBoxMesh\u001b[0m\n", + "\u001b[32mroot [INFO] genericpolycone.antlr>\u001b[0m\n", + "\u001b[32mroot [INFO] genericpolyhedra.antlr>\u001b[0m\n", + "\u001b[32mroot [INFO] visualisation.Mesh.getBoundingBox> [-38.25, -38.25, 0.0] [38.25, 38.25, 84.0]\u001b[0m\n", + "\u001b[32mroot [INFO] box.pycsgmesh> getBoundingBoxMesh\u001b[0m\n" + ] + }, + { + "data": { + "image/png": "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87zSwKXaruI/D74w7OchxHCQun7zvF9df/+99/PbB3/HHb+5k8svvpyTjj+xqJt6toy5/w8y/WJ2heA4xmCXe50odX2eBONCiM22OV3F4ABYtCPW8n/AjAM5fJTHkS1evJiZM2fmny9ZsgStNTNmzChZp7933nmHiooKmpqaNrjv+vp6urq6SpZlMhnWrl07YN2GhgbOPvtszj77bPr6+jj44INZsGDB1h+My91yMVoMoMCySiNr3w/m7+3sTVNXG6GrK5UPxP2MT2p9b/Hmwf+zr0ej0ZIMzWNn3iEhBpK6fvjq+oN2OYhEIs4p553Kj3/+4yAY3xAF2tdYdmke7nA2v4WlguVlHbdKXZ8n2dSFEKNvh2Ph6KtGPaELwE9/+tOS5zfddBMAxxxzTH7Zc889V5LZfNWqVTz44IN85CMfed8xZLNmzRowLcptt9024G55e3t7yfOqqiq233570umhdQ8cU9RmPITYAopbyILGG8Mr77bTm9JUxsJMmlhN87gYvW+3kVjWCWmDqR/YSmdcl+133a/fQjj2/I8O9ykIUZ6kri9ZVlrXGyorKpk+dTqZTHZcvjZBMsiStQxUhjCuxk95+CmPUMgmHLLBQCqjcT0/6K1TztG41PV50jIuhBBFli1bxic+8QmOPvponnvuOe6++25OPfVUdt21MEXRzjvvzFFHHcWFF15IJBLh5ptvBuCyyy57332fe+65/O///i8nnHACRx55JK+++iqPP/4448aNK1lv3rx5HHrooey55540NDTw4osv8vvf/54LLrhgy59wuZGua2K0bOAjtGxd34BlIccJ5vtNu+hMcOFLIoOJhYIVUi54ZtDP5fKFy7ZgoYUQQ1Fudb3X47HwrYU89tRjnHHi6YWVfIOxKB007huwg+eR6siAry7XN0TLPWqVuj5PgnEhhChy3333cemll3LxxRfjOA4XXHAB3//+90vWOeSQQ9hvv/247LLLWLlyJfPmzePOO+/8wARrn/vc51i2bBm33347jz32GAcddBBPPvkkhx9+eMl6F154IQ899BBPPPEE6XSa6dOnc8UVV/D1r399i5+vECLL9G+DCqYL6upLZ7ug5ycWAgX1M2rpfO49LAMkNFoDcTe/rVKKTCpZtLNg2+7VPcN9JkKID1BudX0qmWLyxMl89Qtf5XNnnIuiMIUixVnSLQVpD0I2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_map(\"distance_to_nplus_surface_mm\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[32mroot [INFO] genericpolycone.antlr>\u001b[0m\n", + "\u001b[32mroot [INFO] genericpolyhedra.antlr>\u001b[0m\n", + "\u001b[32mroot [INFO] visualisation.Mesh.getBoundingBox> [-36.98, -36.98, 0.0] [36.98, 36.98, 29.46]\u001b[0m\n", + "\u001b[32mroot [INFO] box.pycsgmesh> getBoundingBoxMesh\u001b[0m\n", + "\u001b[32mroot [INFO] genericpolycone.antlr>\u001b[0m\n", + "\u001b[32mroot [INFO] genericpolyhedra.antlr>\u001b[0m\n", + "\u001b[32mroot [INFO] visualisation.Mesh.getBoundingBox> [-38.25, -38.25, 0.0] [38.25, 38.25, 84.0]\u001b[0m\n", + "\u001b[32mroot [INFO] box.pycsgmesh> getBoundingBoxMesh\u001b[0m\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_map(\"activeness\",clab=\"Activeness\",scale=\"viridis\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also plot a histogram of the distance to the surface.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_distances(axes,distances,xrange=None,label=\" \",**kwargs):\n", + " \n", + " h=hist.new.Reg(100,*xrange, name=\"Distance to n+ surface [mm]\").Double()\n", + " h.fill(distances)\n", + " h.plot(**kwargs,label=label)\n", + " ax.legend()\n", + " ax.set_yscale(\"log\")\n", + " if xrange is not None:\n", + " ax.set_xlim(*xrange)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig,ax = plt.subplots()\n", + "plot_distances(ax,ak.flatten(data_det001.distance_to_nplus_surface_mm),xrange=(0,35),label=\"BEGe\",histtype=\"step\",yerr=False)\n", + "plot_distances(ax,ak.flatten(data_det002.distance_to_nplus_surface_mm),xrange=(0,35),label=\"Coax\",histtype=\"step\",yerr=False)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.3) Summed energies\n", + "Our processing chain also sums the energies of the hits, both before and after weighting by the activeness.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_energy(axes,energy,bins=400,xrange=None,label=\" \",log_y=True,**kwargs):\n", + " \n", + " h=hist.new.Reg(bins,*xrange, name=\"energy [keV]\").Double()\n", + " h.fill(energy)\n", + " h.plot(**kwargs,label=label)\n", + " axes.legend()\n", + " if (log_y):\n", + " axes.set_yscale(\"log\")\n", + " if xrange is not None:\n", + " axes.set_xlim(*xrange)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ZcsWrFixwq1lytq2bQvAEnS66q13tX9eXl6F9lXSpk0bAEBoaGiFj9myZUsAlt5567QAwPK+njlzBl26dJHV79SpE2688UasX78ezZo1w9mzZ/Hqq6+6dS61Wo3hw4dj+PDhKCkpwSOPPIK1a9di3rx5shsKp06dkrUlLy8P58+fx2233QbA/etgfX/sb8bY82QYvJV1dIN9UjnrCAUiIqLqxDnqRETkN0wmE7766iuo1WrccMMNHu+/cOFCZGVlITk5GSaTyWG7fa9mUlISIiMj8fzzzyvWv3z5ssvzjR49Gvv378f27dsdtl29elW66eCuRo0aoX///li7di3Onz/vcXsAID4+Hg0aNMC//vUv2fnXr1/vdPj1+PHj8dVXX2HFihVo0KABhg4dWu55rly5InseFBQk3QQoKiqSbXvjjTdk7+/q1atRXFwsncfd69CwYUPccsstWLduHc6ePSurY3ttrTdpPMnk3rJlSwQHBzvkFXj99dfdPgYREZG3sEediIh8ZuvWrTh58iQAy9zrDRs24NSpU5g9e7bD/PBff/0V7733nsMxYmJiMHjwYADAfffdh2PHjmHJkiU4cOAA7r33XrRu3Rr5+fk4duwYNm7ciDp16ki9p5GRkVi9ejXGjx+Pm266Cffeey8aNmyIs2fP4ssvv8TNN9+M1157zWn7n3jiCXz22We4/fbbMWnSJHTv3h35+fk4evQoPvroI5w5c0ZaHsxder0effv2RefOnZGcnIw2bdrg4sWL2L9/P/78808cOXLE5f5qtRoLFy7Eo48+ioEDB2L06NE4c+YM0tLS0LZtW8Xe5vvuuw+zZs3C5s2bMXXqVFniN2cefPBBZGdnY+DAgWjWrBn++OMPvPrqq+jWrZvDTRaj0YhBgwZh9OjR+OWXX/D666+jb9++GDFiBADPrsOqVavQt29f3HTTTXjooYfQunVrnDlzBl9++aWUJLB79+4AgKeffhr33nsvQkNDMXz4cJejLKKionDPPffg1VdfhUqlQtu2bfHFF1845BkgIiKqFj7NOU9ERLWS0vJsYWFholu3bmL16tWypbaEcL08m9IyYt988424++67RZMmTURoaKiIjIwU8fHxYsGCBeL8+fMO9Xfv3i2SkpJEVFSUCAsLE23bthWTJk0Shw4dKve1XLt2TcyZM0e0a9dOqNVqER0dLfr06SOWL18uLUlmXeJr2bJlDvtDYemu3377TUyYMEE0btxYhIaGitjYWHH77beLjz76yOE9PHjwoGK7Vq1aJVq2bCk0Go3o2bOn+O6770T37t3FkCFDFOvfdtttAoD4/vvvy33NQgjx0UcfiVtvvVU0atRIqNVq0aJFCzFlyhTZ+2tt4549e8RDDz0k6tWrJyIiIsS4cePElStXHI7p7nU4duyYGDVqlKhbt64ICwsTHTp0EPPmzZPVeeaZZ0RsbKwICgqSLdUGQKSkpCi+psuXL4u77rpL6HQ6Ua9ePTFlyhRx7NgxxeXZwsPDHfbv16+f6Nixo0N5y5YtxbBhw5y+l0RERPZUQjC7CRERUU1XUlKChg0b4s4778S//vUvh+2jRo3C0aNHcfr0aa+dMy0tDZMnT8bBgwdl2f2JiIjINc5RJyIiqmEKCwsd5uP/+9//RnZ2Nvr37+9Q//z58/jyyy8xfvz4amohERERucI56kRERDXMDz/8gOnTp+Oee+5BgwYN8OOPP+Ktt95Cp06dZOujZ2Zm4rvvvsObb76J0NBQTJkyxYetJiIiIisG6kRERDVMq1at0Lx5c6xatQrZ2dmoX78+JkyYgBdeeAFqtVqqt2fPHkyePBktWrTAO++8o7iGOREREVU/zlEnIiIiIiIi8iOco05ERERERETkRxioExEREREREfmRgJujXlJSgr/++gt16tSBSqXydXOIiIiIiIiohhNC4Nq1a2jatCmCgqq+vzvgAvW//voLzZs393UziIiIiIiIqJb53//+h2bNmlX5eQIuUK9Tpw4AyxsUGRnp49YQERERERFRTZebm4vmzZtL8WhVC7hA3TrcPTIykoE6ERERERERVZvqmn7NZHJEREREREREfoSBOhEREREREZEfCZhAXa/XIy4uDj169PB1U4iIiIiIiIiqjEoIIXzdCE/k5uYiKioKOTk5nKNOREREREREVa6649CASyZHRERERFSVhBAwm80oLi72dVOIqIqFhIQgODi42pLEuYuBOhERERERLAH61atXcfnyZZjNZl83h4iqSXBwMBo1aoSoqCi/CdgZqBMRERERAbhw4QKuXr0qLQMcEhLiNz/aicj7hBAoLi5Gbm4uzp8/j4KCAjRp0sTXzQLAQJ2IiIiICGazGTk5OWjYsCGio6N93RwiqkZ16tSBRqNBVlYWGjVqhODgYF83KXCyvhMRERERVRWTyQQhBMLDw33dFCLygfDwcAghYDKZfN0UAIEcqBvzLY/ASlpPRERERH6MQ92Jaid/++wHbqD+Ugfg+aaAyeDrlhARERERERF5TcAE6nq9HnFxcejRo4evm0JERERERERUZQImUE9JSUFGRgYOHjzo66YQERERERERVZmACdSJiIiIiMhzKpXKrcc333zj66YSUSkuz0ZEREREVIO9++67suf//ve/sWPHDofyG264oTqbRUQuMFAnIiIiIqrB7r//ftnzH374ATt27HAot2cwGKDT6aqyaX5LCIHCwkJotVpfN4VqKQ59JyIiIiKq5fr3749OnTohPT0dt9xyC3Q6HZ566ikAlqHzCxcudNinVatWmDRpkqzs6tWrePzxx9G8eXNoNBq0a9cOL774IkpKStxqx9atW5GQkIDw8HDUqVMHw4YNw/Hjx2V1Jk2ahIiICJw7dw4jR45EREQEGjZsiJkzZ8JsNsvqlpSUYMWKFejYsSPCwsIQExODKVOm4O+//3Z4Lbfffju2b9+O+Ph4aLVarF27FgDwxx9/YMSIEQgPD0ejRo0wffp0bN++XTZdYMGCBQgNDcXly5cdXtNDDz2EunXrorCw0K33gAhgoE5ERERERACuXLmCoUOHolu3blixYgUGDBjg0f4GgwH9+vXDe++9hwkTJmDVqlW4+eabMWfOHMyYMaPc/d99910MGzYMERERePHFFzFv3jxkZGSgb9++OHPmjKyu2WxGUlISGjRogOXLl6Nfv3546aWX8MYbb8jqTZkyBU888QRuvvlmrFy5EpMnT8b69euRlJQEk8kkq/vLL79g7NixGDx4MFauXIlu3bohPz8fAwcOxM6dO/HYY4/h6aefxvfff48nn3xStu/48eNRXFyMDz74QFZuNBrx0Ucf4a677kJYWJgH7ybVdhz6TkRERETkhBACBSZz+RWriTY0GCqVqkqOfeHCBaxZswZTpkyp0P4vv/wyfvvtN/z0009o3749AEug3LRpUyxbtgz/93//h+bNmyvum5eXh8ceewwPPvigLNieOHEiOnTogOeff15WXlhYiDFjxmDevHkAgIcffhg33XQT3nrrLUydOhUA8O233+LNN9/E+vXrcd9990n7DhgwAEOGDMGmTZtk5adPn8a2bduQlJQke02///47tmzZgjvuuEN6TTfeeKOs/e3atUPv3r3x3nvvITU1VSr/8ssv8ffff2P8+PGevZlU6zFQJyIiIiJyosBkRtz87b5uhiRjcRJ06qr5Ca/RaDB58uQK779p0yYkJCSgXr16yMrKksoTExPxwgsvYO/evRg3bpzivjt27MDVq1cxduxY2b7BwcHo1asXdu/e7bDPww8/LHuekJAgS5C3adMmREVFYfDgwbJjdu/eHREREdi9e7csUG/durUsSAeAbdu2ITY2FiNGjJDKwsLCkJycjP/7v/+T1Z0wYQKmTp2K3377DW3btgUArF+/Hs2bN0e/fv0UXzeRMwzUiYiIiIgIsbGxUKvVFd7/1KlT+Pnnn9GwYUPF7ZcuXXK5LwAMHDhQcXtkZKTseVhYmMN56tWrJ5t7furUKeTk5KBRo0Zutad169YOdf744w+0bdvWYRRDu3btHOqOGTMGjz/+ONavX4/58+cjJycHX3zxBaZPn15loyCo5vJJoN6qVStERkYiKCgI9erVU7xDRkRERETka9rQYGQsTiq/YjXRhgZX3bE9zHCulLht8ODBmDVrlmL96667zumxrMnm3n33XTRu3Nhhe0iIPGwJDi7/fSgpKUGjRo2wfv16xe32gX5lM7zXq1cPt99+uxSof/TRRygqKio3uz6REp/1qH///feIiIjw1emJiIiIiMqlUqmqbKh5oKhXrx6uXr0qKzMajTh//rysrG3btsjLy0NiYqLH57AOFW/UqFGF9nd2zJ07d+Lmm2+ucBDesmVLZGRkQAgh6xU/ffq0Yv0JEybgjjvuwMGDB7F+/XrceOON6NixY4XOTbUbs74TEREREZFTbdu2xd69e2Vlb7zxhkOP+ujRo7F//35s3+44p//q1asoLi52eo6kpCRERkbi+eefd8jGDkBx2bPyjB49GmazGc8884zDtuLiYoebD87ade7cOXz22WdSWWFhIf71r38p1h86dCiio6Px4osvYs+ePexNpwrzOFDfu3cvhg8fjqZNm0KlUmHLli0OdfR6PVq1aoWwsDD06tULBw4ckG1XqVTo168fevTo4XQoChERERER+d6DDz6In376CXfddRfWrFmDqVOn4uWXX0Z0dLSs3hNPPIGbbroJt99+O5KTk7FmzRq89NJLmDRpEpo1a+YyMI6MjMTq1auxb98+3HTTTXjuuefwxhtvYO7cubjxxhuxaNEij9vdr18/TJkyBUuWLMFtt92GFStWQK/X4/HHH0fLli2xc+fOco8xZcoUtGrVCmPHjsWcOXOwatUq9OvXT1pqzX7ueWhoKO699158/PHHUKlUGDt2rMftJgIqMPQ9Pz8fXbt2xQMPPIA777zTYfsHH3yAGTNmYM2aNejVqxdWrFiBpKQk/PLLL1Iih2+//RaxsbE4f/48EhMT0blzZ3Tp0qXyr4aIiIiIiLwqOTkZmZmZeOutt7Bt2zYkJCRgx44dGDRokKyeTqfDnj178Pzzz2PTpk3497//jcjISFx33XVYtGgRoqKiXJ7nvvvuQ9OmTfHCCy9g2bJlKCoqQmxsLBISEiqcjX7NmjXo3r071q5di6eeegohISFo1aoV7r//ftx8883l7h8REYGvv/4ajz76KFauXImIiAhMmDABffr0cbo2+oQJE/Daa69h0KBBaNKkSYXaTaQSQogK76xSYfPmzRg5cqRU1qtXL/To0QOvvfYaAEsSh+bNm+PRRx/F7NmzHY7xxBNPoGPHjpg0aZLiOYqKilBUVCQ9z83NRfPmzZEzuw4iNSrgqb8AdXhFXwIREREREQoLC5GZmYnWrVsrBl9EtlasWIHp06fjzz//RGxsrGzbkSNH0K1bN/z73//m+ukBpLzvgNzcXERFRSEnJ8dhFYKq4NU56kajEenp6bIEEEFBQUhMTMT+/fsBWHrkr127BgDIy8vD119/7TLBwpIlSxAVFSU9mjdv7s0mExEREREROVVQUCB7XlhYiLVr16J9+/YOQToA/Otf/0JERITi6GMid3k1hWVWVhbMZjNiYmJk5TExMTh58iQA4OLFixg1ahQAy5IOycnJ6NGjh9NjzpkzBzNmzJCeW3vUiYiIiIiIqtqdd96JFi1aoFu3bsjJycF7772HkydPOuTa+vzzz5GRkYE33ngDqampCA/nqF+quGpfa6JNmzY4cuSI2/U1Gg00Gg30ej30er1DdsmaQAiBApP8dWlDgx2SUxARERERUfVKSkrCm2++ifXr18NsNiMuLg7vv/8+xowZI6v36KOP4uLFi7jtttsqlPyOyJZXA/Xo6GgEBwfj4sWLsvKLFy+icePGlTp2SkoKUlJSpLkBNUmByYy4+fJlLDIWJ9X6NTuJiIiIiHzt8ccfx+OPP15uvTNnzlR5W6j28OocdbVaje7du2PXrl1SWUlJCXbt2oXevXt781RERERERERENZLHXbZ5eXk4ffq09DwzMxOHDx9G/fr10aJFC8yYMQMTJ05EfHw8evbsiRUrViA/P7/CSypY1eSh70RERERERERWHgfqhw4dwoABA6Tn1kRvEydORFpaGsaMGYPLly9j/vz5uHDhArp164Zt27Y5JJjzVE0e+k5ERERERERk5XGg3r9/f5S39HpqaipSU1Mr3CgiIiIiIiKi2sqrc9Srkl6vR1xcnMul3IiIiIiIiIgCXcAE6ikpKcjIyMDBgwd93RTvEwJaFMoeKGfUAhEREREREdVMXP/LH5gMOBH2gKzIYDoLaDgXn4iIiIiIqLYJmB51IiIiIiIiotogYAJ1zlEnIiIiIqKqVFxcjFmzZqF58+YICgrCyJEjfd0kmYULF0KlUvnk3JMmTUKrVq3Krde/f3/079+/yttT0wVMoF6j56gTEREREVWhtLQ0qFQqp48ffvjB1030C+vWrcOyZctw991345133sH06dORkZGBhQsX4syZM75uHtUinKNORERERFRLLF68GK1bt3Yob9eunQ9a43++/vprxMbG4pVXXpHKPvroIyxatAj9+/d3q0eZyBsYqBMRERER1RJDhw5FfHy8r5uB/Px8hIeH+7oZDi5duoS6detWy7n89T2oyUpKSmA0GhEWFubrppQrYIa+c446EREREVHVOnPmDFQqFZYvX4433ngDbdu2hUajQY8ePRSnoJ48eRJ333036tevj7CwMMTHx+Ozzz6T1bEOu9+zZw8eeeQRNGrUCM2aNZO26/V6tGnTBlqtFj179sS+fftk85zz8vIQHh6OadOmOZz/zz//RHBwMJYsWeLydS1fvhx9+vRBgwYNoNVq0b17d3z00UcOr3v37t04fvy4NCUgLS0N99xzDwBgwIABUvk333wj7bt161YkJCQgPDwcderUwbBhw3D8+HHZ+SdNmoSIiAj89ttvuO2221CnTh2MGzfOZZu//fZb9OjRA2FhYWjbti3Wrl3rtO57772H7t27Q6vVon79+rj33nvxv//9T1Zn3759uOeee9CiRQtoNBo0b94c06dPR0FBgcPxtmzZgk6dOiEsLAydOnXC5s2bXbbVFaPRiPnz56N79+6IiopCeHg4EhISsHv3bqmOEAKtWrXCHXfc4bB/YWEhoqKiMGXKFKmsqKgI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3h0dO3ZEUFBQlQTAsbGx2LlzJ4qKijB48GBkZWUhLi4Ohw4dwrBhw5CWloaUlBSsWbMGQUFBmD9/vuJxrG1r0qRJpZPdERERBSqVsGa3ISIiooB29epV1KtXD88++yyefvpph+033ngj6tevj127drl1vLS0NEyePBk//vgjmjdvjgYNGij21le37OxslJSUoGHDhkhJSXE65J+IiChQsUediIgoABUUFDiUrVixAoClx97eoUOHcPjwYUyYMMHjc910001o2LAhrly54vG+VaFNmzZo2LChr5tBRERUZdijTkREFIDS0tKQlpaG2267DREREfj222+xceNG3Hrrrdi+fbtU79ixY0hPT8dLL72ErKws/P77724naDt//jyOHz8uPe/Xrx9CQ0O9/lo8tWfPHphMJgBA8+bN0aFDBx+3iIiIyLuYTI6IiCgAdenSBSEhIVi6dClyc3OlBHPPPvusrN5HH32ExYsXo0OHDti4caNHWdSt66T7m379+vm6CURERFWKPepEREREREREfoRz1ImIiIiIiIj8CAN1IiIiIiIiIj/CQJ2IiIiIiIjIjzBQJyIiIiIiIvIjDNSJiIiIiIiI/AgDdSIiIiIiIiI/wkCdiIiIiIiIyI8wUCciIiIiIiLyI/8P1cSqIx/0Q2wAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.set_title(\"BEGe energy spectrum\")\n", + "plot_energy(ax,data_det001.energy_sum,yerr=False,label=\"True energy\",xrange=(0,4000))\n", + "plot_energy(ax,data_det001.energy_sum_deadlayer,yerr=False,label=\"Energy after dead layer\",xrange=(0,4000))" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+oAAAGNCAYAAACG8IsZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACC7ElEQVR4nO3deXgTVdsG8DtdkiaFlqVQFtlB9kVb4GWTrVgqgojKIktBrahFUd6KggjCp4KAyGIEFREXUAEFF15AlrKIKIuCQAEpFlGEQkFaaNomTc/3R5tpJpmkSbck7f27rlw0M2fOnHSakGfOOc9RCSEEiIiIiIiIiMgr+Hm6AURERERERERUiIE6ERERERERkRdhoE5ERERERETkRRioExEREREREXkRBupEREREREREXoSBOhEREREREZEXYaBORERERERE5EUYqBMRERERERF5EQbqRERERERERF6EgToRERERERGRF2GgTkREHnHu3DlMnDgRTZs2RVBQEEJCQtCjRw8sWbIEWVlZsrImkwlLly5F586dUbVqVVSpUgWdO3fG0qVLYTKZHJ7j1KlTUKlUCAoKwo0bN+z2X7lyBTVq1EC/fv3s9plMJrRv3x6NGzdGZmZmiV8vla+kpCS88sorOH/+vKebQkRE5DYG6kREVO42b96M9u3bY926dRg8eDCWLVuGuXPnomHDhnj++ecxefJkqWxmZiYGDBiAyZMno06dOpg3bx4WLFiAevXqYfLkyRgwYIDDQPrTTz9FnTp1AAAbNmyw21+7dm288cYbSExMxEcffSTb9+abb+LEiRN4++23ERwcXIqvnspDUlISZs+ezUCdiIh8kkoIITzdCCIiqjxSUlLQoUMH3Hbbbdi1axfq1q0r25+cnIzNmzdLwfrEiRPx3nvvYdmyZZg0aZKsrF6vx6RJk/DEE09g+fLlsn1CCDRt2hTDhg1DSkoK/v33XyQmJtq1RwiBu+66C6dPn8bp06dRs2ZNpKSkoG3btoiJicGXX35Zyr+BspWdnQ21Wg0/v8p9L37Dhg146KGHkJiYiD59+jgtK4RAdnY2tFpt+TSOiIioCJX7f3EiIip38+fPx61bt/DBBx/YBekA0Lx5cylI//vvv/HBBx+gX79+dkE6AMTHx6Nv375YuXIl/v77b9m+/fv34/z58xg5ciRGjhyJvXv32pUBAJVKhRUrViA9PR0JCQkAgKeeegoBAQFYunSpS68pJycHs2bNQvPmzaHRaNCgQQNMnToVOTk5dueaNGkSNm3ahHbt2kGj0aBt27bYunWrXZ0XL17EI488gvDwcKncqlWrZGV2794NlUqFzz//HDNmzED9+vWh0+mQkZEBAFi/fj3atGmDoKAgtGvXDhs3bsT48ePRuHFjAPkBauPGjXHffffZnT87OxuhoaGYOHGi09e+fft29OzZE9WqVUOVKlXQsmVLTJ8+3a6NX3zxBaZPn446deogODgYQ4YMwV9//WVX388//4yBAwciNDQUOp0OvXv3xv79+xV/P48++ijq1asHjUaDJk2a4Mknn4TRaMTq1avx0EMPAQD69u0LlUoFlUqF3bt3AwAaN26Me++9F9u2bUNkZCS0Wi3effddnD9/HiqVCqtXr7Y7n0qlwiuvvCI9f+WVV6BSqfD7779jzJgxCA0NRa1atfDyyy9DCIG//voL9913H0JCQlCnTh28+eabTn+PRERE1gI83QAiIqpcvv32WzRt2hTdu3cvsuyWLVtgNpsxbtw4h2XGjRuHxMREbN26FY899pi0fc2aNWjWrBk6d+6Mdu3aQafT4bPPPsPzzz9vV0fbtm2RkJCAuXPnomrVqti6dSuWLFmC+vXrF9nGvLw8DBkyBD/88AMef/xxtG7dGsePH8dbb72F33//HZs2bZKV/+GHH/DVV1/hqaeeQtWqVbF06VI88MADuHDhAmrWrAkASE1NxX/+8x8psK9Vqxa2bNmCRx99FBkZGXj22Wdldf7f//0f1Go1EhISkJOTA7Vajc2bN2PEiBFo37495s6di3///RePPvqo7DWpVCqMGTMG8+fPx/Xr11GjRg1p37fffouMjAyMGTPG4Ws/efIk7r33XnTo0AFz5syBRqNBcnKyYmD92muvQaVS4YUXXsCVK1ewePFiREVF4ejRo1JP9q5duxATE4OIiAjMmjULfn5++PDDD9GvXz/s27cPXbp0AQD8888/6NKlC27cuIHHH38crVq1wsWLF7FhwwYYDAbcddddeOaZZ7B06VJMnz4drVu3BgDpXwA4c+YMRo0ahYkTJyIuLg4tW7Ys8lorGTFiBFq3bo158+Zh8+bNePXVV1GjRg28++676NevH9544w2sWbMGCQkJ6Ny5M+66665inYeIiCoZQUREVE7S09MFAHHfffe5VP7ZZ58VAMSvv/7qsMwvv/wiAIgpU6ZI24xGo6hZs6Z46aWXpG0PP/yw6Nixo8N6DAaDaNq0qQAgIiIiRG5urktt/OSTT4Sfn5/Yt2+fbPuKFSsEALF//35pGwChVqtFcnKytO3YsWMCgFi2bJm07dFHHxV169YVaWlpsjpHjhwpQkNDhcFgEEIIkZiYKACIpk2bStss2rdvL2677TZx8+ZNadvu3bsFANGoUSNp25kzZwQAsXz5ctnxQ4YMEY0bNxZ5eXkOX/tbb70lAIirV686LGNpY/369UVGRoa0fd26dQKAWLJkiRBCiLy8PNGiRQsRHR0tO6fBYBBNmjQRAwYMkLaNGzdO+Pn5iUOHDtmdz3Ls+vXrBQCRmJhoV6ZRo0YCgNi6datse0pKigAgPvzwQ7tjAIhZs2ZJz2fNmiUAiMcff1zalpubK2677TahUqnEvHnzpO3//vuv0Gq1IjY2VvmXREREZIND34mIqNxYhmRXrVrVpfI3b94ssrxln6VuIL8n/tq1axg1apS0bdSoUTh27BhOnjypWI9arUZoaCgAoH///vD393epjevXr0fr1q3RqlUrpKWlSQ9LJnnbefFRUVFo1qyZ9LxDhw4ICQnBH3/8ASB/OPqXX36JwYMHQwghqzM6Ohrp6en45ZdfZHXGxsbK5lf/888/OH78OMaNG4cqVapI23v37o327dvLjr399tvRtWtXrFmzRtp2/fp1bNmyBaNHj4ZKpXL42qtVqwYA+Prrr5GXl+f09zRu3DjZdXzwwQdRt25d/O9//wMAHD16FGfPnsXDDz+Ma9euSa85MzMT/fv3x969e5GXl4e8vDxs2rQJgwcPRmRkpN15nLXXWpMmTRAdHe1SWWesR3H4+/sjMjISQgg8+uij0vZq1aqhZcuW0jUmIiIqCgN1IiIqNyEhIQAKA/CiWAI7Z+WVgvlPP/0UTZo0kYZiJycno1mzZtDpdLKA1NqSJUvw66+/ol27dli6dCmSk5NdauPZs2dx8uRJ1KpVS/a4/fbbAeQvAWetYcOGdnVUr14d//77LwDg6tWruHHjBt577z27OidMmKBYZ5MmTWTP//zzTwD58/1tKW0bN24c9u/fLx23fv16mEwmjB071ulrHzFiBHr06IHHHnsM4eHhGDlyJNatW6cYtLdo0UL2XKVSoXnz5lJW9rNnzwLIv+lg+7pXrlyJnJwcpKen4+rVq8jIyEC7du2ctq0otr+z4rK9nqGhoQgKCkJYWJjddss1JiIiKgrnqBMRUbkJCQlBvXr1cOLECZfKW+YU//bbb+jUqZNimd9++w0A0KZNGwD5PevffvstsrOz7YJDAFi7dq00X9rir7/+wqxZszB06FC88847aNWqFeLj47Ft27Yi25iXl4f27dtj0aJFivsbNGgge+6op14ULMJiCXLHjBmD2NhYxbIdOnSQPS9ptvKRI0fiueeew5o1azB9+nR8+umniIyMLHLetlarxd69e5GYmIjNmzdj69at+OKLL9CvXz98//33Lo9KAApf94IFCxxe6ypVquD69esu1+mM0u/MUW+82Wx2WI/SayzqGhMRERWFgToREZWre++9F++99x4OHDiAbt26OS0bExMDf39/fPLJJw4Tyn388ccICAjAwIEDAQBfffUVsrOzsXz5crtezTNnzmDGjBnYv38/evbsKW23ZJRfunQp6tati9deew1PP/00Pv/8c4wcOdJpG5s1a4Zjx46hf//+Lg+7dqZWrVqoWrUqzGYzoqKiilVHo0aNAEBxVIDStho1amDQoEFYs2YNRo8ejf3792Px4sUuncvPzw/9+/dH//79sWjRIrz++ut46aWXkJiYKGu/pcfcQgiB5ORk6aaDZTpASEiI09ddq1YthISEFHmzpzjXonr16gCAGzduyLZbRhoQERGVFw59JyKicjV16lQEBwfjscceQ2pqqt3+c+fOYcmSJQDye6MnTJiAHTt22K2TDgArVqzArl278Oijj+K2224DkD/svWnTpnjiiSfw4IMPyh4JCQmoUqWKbPj7xo0b8c0332DOnDlS7/dTTz2FiIgITJkyRTb3Xcnw4cNx8eJFvP/++3b7srKykJmZ6fovB/m9sQ888AC+/PJLxWD06tWrRdZRr149tGvXDh9//DFu3bolbd+zZw+OHz+ueMzYsWORlJSE559/Hv7+/kXeoACg2Ltt6Q23XZru448/lk1h2LBhAy5duoSYmBgAQEREBJo1a4aFCxfK2mxhed1+fn4YOnQovv32Wxw+fNiunKXXOjg4GIB90O1MSEgIwsLCsHfvXtn2d955x+U6iIiISgN71ImIqFw1a9YMa9eulZa1GjduHNq1awej0Ygff/wR69evx/jx46Xyb731Fk6fPo2nnnoKW7dulXrOt23bhq+//hq9e/eW1qj+559/kJiYiGeeeUbx3BqNBtHR0Vi/fj2WLl2K7OxsPPPMM7jjjjtkx/j5+WHFihXo2rUrXnrpJSxbtszh6xk7dizWrVuHJ554AomJiejRowfMZjNOnz6NdevWSWt1u2PevHlITExE165dERcXhzZt2uD69ev45ZdfsGPHDpeGf7/++uu477770KNHD0yYMAH//vsv3n77bbRr104xEB40aBBq1qyJ9evXIyYmBrVr1y7yHHPmzMHevXsxaNAgNGrUCFeuXME777yD2267TTZiAcjvte/ZsycmTJiA1NRULF68GM2bN0dcXByA/N/5ypUrERMTg7Zt22LChAmoX78+Ll68iMTERISEhODbb7+VXtv333+P3r17S0viXbp0CevXr8cPP/yAatWqoVOnTvD398cbb7yB9PR0aDQa9OvXr8jX9dhjj2HevHl47LHHEBkZib179+L3338v8ndBRERUqjyYcZ6IiCqx33//XcTFxYnGjRsLtVotqlatKnr06CGWLVsmsrOzZWVzcnLEW2+9JSIiIkRwcLDQ6XTizjvvFIsXLxZGo1Eq9+abbwoAYufOnQ7Pu3r1agFAfP3112Ly5MnCz89PHDx4ULHspEmThJ+fnzh8+LDT12I0GsUbb7wh2rZtKzQajahevbqIiIgQs2fPFunp6VI5ACI+Pt7u+EaNGtkt3ZWamiri4+NFgwYNRGBgoKhTp47o37+/eO+996QylqXP1q9fr9iuzz//XLRq1UpoNBrRrl078c0334gHHnhAtGrVSrH8U089JQCItWvXOn29Fjt37hT33XefqFevnlCr1aJevXpi1KhR4vfff7dr42effSamTZsmateuLbRarRg0aJD4888/7er89ddfxbBhw0TNmjWFRqMRjRo1EsOHD7e7pn/++acYN26cqFWrltBoNKJp06YiPj5e5OTkSGXef/990bRpU+Hv7y9bqq1Ro0Zi0KBBiq/JYDCIRx99VISGhoqqVauK4cOHiytXrjhcns12abrY2FgRHBxsV2/v3r1F27Zti/ydEhERCSGESghmNiEiIqosOnXqhFq1amH79u12+5577jl88MEHuHz5MnQ6Xamcb/fu3ejbty/Wr1+PBx98sFTqJCIiqug4R52IiKgCMplMyM3NlW3bvXs3jh07hj59+tiVz87OxqeffooHHnig1IJ0IiIiKh7OUSciIqqALl68iKioKIwZMwb16tXD6dOnsWLFCtSpUwdPPPGEVO7KlSvYsWMHNmzYgGvXrmHy5MkebDUREREBDNSJiIgqpOrVqyMiIgIrV67E1atXERwcjEGDBmHevHmoWbOmVC4pKQmjR49G7dq1sXTpUodrmBMREVH54Rx1IiIiIiIiIi/COepEREREREREXoSBOhEREREREZEX8bk56nl5efjnn39QtWpVqFQqTzeHiIiIiIiIKjghBG7evIl69erBz6/s+7t9JlDX6/XQ6/UwGo04d+6cp5tDRERERERElcxff/2F2267rczP43PJ5NLT01GtWjX89ddfCAkJ8XRziIiIiIiIqILLyMhAgwYNcOPGDYSGhpb5+XymR93CMtw9JCSEgToRERERERGVm/Kafu0zyeT0ej3atGmDzp07e7opRERERERERGXG54a+Z2RkIDQ0FOnp6exRJyIiIiIiojJX3nGoz/SoExEREREREVUGPhOoc+g7ERERERERVQYc+k5EREREZEUIAbPZjNzcXE83hYjKWEBAAPz9/YtMElfecajPZX0nIiIiIioLQgjcuHEDV69ehdls9nRziKic+Pv7o3bt2ggNDS23rO5F8ZlAXa/XQ6/X80OTiIiIiMrE5cuXcePGDWkZ4ICAAK/50k5EpU8IgdzcXGRkZODSpUvIyspC3bp1Pd0sABz6TkREREQEs9mMs2fPIiwsDGFhYZ5uDhGVs7S0NKSlpaFFixbw9/e328+s70RERERE5cxkMkEIgeDgYE83hYg8IDg4GEIImEwmTzcFgC8H6sbM/IdvDQggIiIiIi/Goe5ElZO3vfd9JlC3W57tzZbA6/UAk8GzDSMiIiIiIiIqRT4TqMfHxyMpKQmHDh3ydFOIiIiIiIiIyozPBOpERERERERElQEDdSIiIiKiCkylUrn02L17t6ebSkQFfGYddSIiIiIict8nn3wie/7xxx9j+/btdttbt25dns0iIid8JlDX6/XQ6/Uwm82ebgoRERERkc8YM2aM7PlPP/2E7du32223ZTAYoNPpyrJpXksIgezsbGi1Wk83hSopnxn6zmRyRERERERlo0+fPmjXrh2OHDmCu+66CzqdDtOnTweQP3T+lVdesTumcePGGD9+vGzbjRs38Oyzz6JB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X1+279ixY+jUqRM+/vhjrp/uQ4r6DJDi0PR0u1UIygLnqBMRERERETmQlZUle56dnY13330XLVq0sAvSAeD9999HlSpVMGzYsPJqIlVA7LIlIiIiIiJyYNiwYWjYsCE6deqE9PR0fPrppzh9+rTdsm/ffvstkpKS8N5772HSpEkIDvbtUb/kWQzUiYiIiIiIHIiOjsbKlSuxZs0amM1mtGnTBp9//jlGjBghK/f0008jNTUV99xzD2bPnu2h1lJF4TOBul6vh16vt1sGgoiIiIiIqKw8++yzePbZZ4ssd/78+TJvC1UePjNHPT4+HklJSTh06JCnm0JERERERERUZnymR71CEwJaZNttIyIiIiIiosqHgbo3MBlwKugR2SaD6QKgcb7WJBEREREREVU8PjP0nYiIiIiIiKgyYKBORERERERE5EUYqBMRERERERF5EQbqRERERERERF6EgToRERERERGRF/FIoN64cWN06NABnTp1Qt++fT3RBCIiIiIiIpnc3FxMnToVDRo0gJ+fH4YOHerpJsm88sorUKlUHjn3+PHj0bhx4yLL9enTB3369Cnz9lR0HutR//HHH3H06FEkJiZ6qglERERERJXC6tWroVKpHD5++uknTzfRK6xatQoLFizAgw8+iI8++gjPPfcckpKS8Morr+D8+fOebh5VIlxHnYiIiIiokpgzZw6aNGlit7158+YeaI332bVrF+rXr4+33npL2rZhwwbMnj0bffr0calHmag0uN2jvnfvXgwePBj16tWDSqXCpk2b7Mro9Xo0btwYQUFB6Nq1Kw4ePCjbr1Kp0Lt3b3Tu3Blr1qwpduOJiIiIiMh1MTExGDNmjN0jLCysXNuRmZlZrudz1ZUrV1CtWrVyOZe3/g4qsry8PGRnZ3u6GS5xO1DPzMxEx44dodfrFfd/8cUXmDJlCmbNmoVffvkFHTt2RHR0NK5cuSKV+eGHH3DkyBF88803eP311/Hbb785PF9OTg4yMjJkDyIiIiIiKn3nz5+HSqXCwoUL8d5776FZs2bQaDTo3LkzDh06ZFf+9OnTePDBB1GjRg0EBQUhMjIS33zzjayMZdj9nj178NRTT6F27dq47bbbpP16vR5NmzaFVqtFly5dsG/fPtk851u3biE4OBiTJ0+2O//ff/8Nf39/zJ071+nrWrhwIbp3746aNWtCq9UiIiICGzZssHvdiYmJOHnypDQlYPXq1XjooYcAAH379pW27969Wzp2y5Yt6NWrF4KDg1G1alUMGjQIJ0+elJ1//PjxqFKlCs6dO4d77rkHVatWxejRo522+YcffkDnzp0RFBSEZs2a4d1333VY9tNPP0VERAS0Wi1q1KiBkSNH4q+//pKV2bdvHx566CE0bNgQGo0GDRo0wHPPPYesrCy7+jZt2oR27dohKCgI7dq1w8aNG5221Rmj0YiZM2ciIiICoaGhCA4ORq9evWRToIUQaNy4Me677z6747OzsxEaGoqJEydK23JycjBr1iw0b95cei1Tp05FTk6O7FiVSoVJkyZhzZo1aNu2LTQaDbZu3Vrs11Ke3B76HhMTg5iYGIf7Fy1ahLi4OEyYMAEAsGLFCmzevBmrVq3Ciy++CACoX78+AKBu3bq455578Msvv6BDhw6K9c2dOxezZ892t5lERERERCUnBGAyeLoVhQJ1QAmSiaWnpyMtLU22TaVSoWbNmrJta9euxc2bNzFx4kSoVCrMnz8fw4YNwx9//IHAwEAAwMmTJ9GjRw/Ur18fL774IoKDg7Fu3ToMHToUX375Je6//35ZnU899RRq1aqFmTNnSr3Jy5cvx6RJk9CrVy8899xzOH/+PIYOHYrq1atLwXyVKlVw//3344svvsCiRYvg7+8v1fnZZ59BCFFk0LtkyRIMGTIEo0ePhtFoxOeff46HHnoI3333HQYNGoRatWrhk08+wWuvvYZbt25JgX+LFi3wzDPPYOnSpZg+fTpat24NANK/n3zyCWJjYxEdHY033ngDBoMBy5cvR8+ePfHrr7/Khsrn5uYiOjoaPXv2xMKFC6HT6Ry29/jx47j77rtRq1YtvPLKK8jNzcWsWbMQHh5uV/a1117Dyy+/jOHDh+Oxxx7D1atXsWzZMtx111349ddfpREC69evh8FgwJNPPomaNWvi4MGDWLZsGf7++2+sX79equ/777/HAw88gDZt2mDu3Lm4du0aJkyYILu54o6MjAysXLkSo0aNQlxcHG7evIkPPvgA0dHROHjwIDp16gSVSoUxY8Zg/vz5uH79OmrUqCEd/+233yIjIwNjxowBkN8rPmTIEPzwww94/PHH0bp1axw/fhxvvfUWfv/9d7sR37t27cK6deswadIkhIWF+c70BVECAMTGjRul5zk5OcLf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Et98843suNGjR+P06dP45Zdf7Opcu3YtVCoVRo0aVWrtJCIi8nYM1ImIiJxITU3Ff/7zH+zYsQOTJk3CkiVL0Lx5czz66KNYvHixXfl58+Zh48aNSEhIwLRp0/DTTz/Z9Qbv2rULd911FzIyMjBr1iy8/vrruHHjBvr164eDBw/a1fnQQw/BYDDg9ddfR1xcHABg2rRpmD17NiIjI7FgwQK0aNEC0dHRsh73pk2bokePHlizZo1dnWvWrEHVqlVx3333lfA3lO+7777DkCFD8NBDD+HTTz9FQEAATp48if/85z84deoUXnzxRbz55psIDg7G0KFDsXHjRulYR8PfzWYz1q1bh169eqFhw4al0k4iIiKfIIiIiMihRx99VNStW1ekpaXJto8cOVKEhoYKg8EghBAiMTFRABCtW7cWOTk5UrklS5YIAOL48eNCCCHy8vJEixYtRHR0tMjLy5PKGQwG0aRJEzFgwABp26xZswQAMWrUKNm5L1++LAICAsTQoUNl21955RUBQMTGxkrb3n33XQFAnDp1StpmNBpFWFiYrJySDz/8UAAQKSkpdvt69+4t2rZtK4QQ4ssvvxSBgYEiLi5OmM1mqUz//v1F+/btRXZ2trQtLy9PdO/eXbRo0UJWX+fOncVtt90mO37r1q0CgHj33XcV2wdAxMfHO30NREREvog96kRERA4IIfDll19i8ODBEEIgLS1NekRHRyM9Pd1uuPaECROgVqul57169QKQPwwdAI4ePYqzZ8/i4YcfxrVr16T6MjMz0b9/f+zduxd5eXmyOp944gnZ8507dyI3NxdPPfWUbPvTTz9t9xqGDx+OoKAgWa/6tm3bkJaWVioJ2T777DOMGDECEydOxLvvvgs/v/yvFtevX8euXbswfPhw3Lx5U3qd165dQ3R0NM6ePYuLFy9K9YwZMwZ///039u7dK21bu3Yt1Go1HnrooRK3k4iIyJcEeLoBRERE3urq1au4ceMG3nvvPbz33nuKZa5cuSJ7bjtEu3r16gCAf//9FwBw9uxZAEBsbKzD86anp0vHAUCTJk1k+//8808AQPPmzWXba9SoITsOyF9zfPDgwVi7di3+7//+D0D+sPf69eujX79+DtvgipSUFIwZMwYPPfQQli1bJtuXnJwMIQRefvllvPzyy4rHX7lyBfXr1wcAjBw5ElOmTMHatWvRp08fZGdnY+PGjYiJibF7TURERBUdA3UiIiIHLD3bY8aMcRhYW5YMs/D391csJ4SQ1blgwQJ06tRJsWyVKlVkz7VarcttVjJu3DisX78eP/74I9q3b49vvvkGTz31lNT7XVx169ZF3bp18b///Q+HDx9GZGSktM/yOhMSEhAdHa14vPWNhtq1a2PAgAH48ssvodfr8e233+LmzZvM9k5ERJUSA3UiIiIHatWqhapVq8JsNiMqKqpU6mzWrBkAICQkpNh1NmrUCEB+r7V1b/u1a9eknntrAwcORK1atbBmzRp07doVBoMBY8eOLda5rQUFBeG7775Dv379MHDgQOzZswdt27YFkJ/IDgACAwNdfp2jR4/G1q1bsWXLFqxduxYhISEYPHhwidtJRETkazhHnYiIyAF/f3888MAD+PLLL3HixAm7/VevXnW7zoiICDRr1gwLFy7ErVu3ilVn//79ERAQgOXLl8u2v/3224rlAwICMGrUKKxbtw6rV69G+/bt7UYCFFdoaCi2bdsm9YifO3cOQH4PeZ8+ffDuu+/i0qVLdscpvc6hQ4dCp9PhnXfewZYtWzBs2DAEBQWVSjuJiIh8CXvUiYiInJg3bx4SExPRtWtXxMXFoU2bNrh+/Tp++eUX7NixA9evX3erPj8/P6xcuRIxMTFo27YtJkyYgPr16+PixYtITExESEgIvv32W6d1hIeHY/LkyXjzzTcxZMgQDBw4EMeOHcOWLVsQFhYGlUpld8y4ceOwdOlSJCYm4o033nCrzUUJCwvD9u3b0bNnT0RFReGHH35A/fr1odfr0bNnT7Rv3x5xcXFo2rQpUlNTceDAAfz99984duyYrJ4qVapg6NCh0jJtHPZORESVFXvUiYiInAgPD8fBgwcxYcIEfPXVV9Ja6tevXy92wNunTx8cOHAAkZGRePvtt/H0009j9erVqFOnDp577jmX6njjjTfw8ssv49ChQ0hISEBycjK+//57CCEUe6EjIiLQtm1b+Pn5lUkAXL9+fezYsQM5OTkYMGAA0tLS0KZNGxw+fBiDBg3C6tWrER8fjxUrVsDPzw8zZ85UrMfStrp165Y42R0REZGvUglLdhsiIiLyaTdu3ED16tXx6quv4qWXXrLbf8cdd6BGjRrYuXOnS/WtXr0aEyZMwC+//IIGDRqgZs2air315e369evIy8tDrVq1EB8f73DIPxERka9ijzoREZEPysrKstu2ePFiAPk99rYOHz6Mo0ePYty4cW6f684770StWrVw7do1t48tC02bNkWtWrU83QwiIqIywx51IiIiH7R69WqsXr0a99xzD6pUqYIffvgBn332Ge6++25s27ZNKnfixAkcOXIEb775JtLS0vDHH3+4nKDt0qVLOHnypPS8d+/eCAwMLPXX4q49e/bAZDIBABo0aICWLVt6uEVERESli8nkiIiIfFCHDh0QEBCA+fPnIyMjQ0ow9+qrr8rKbdiwAXPmzEHLli3x2WefuZVF3bJOurfp3bu3p5tARERUptijTkRERERERORFOEediIiIiIiIyIswUCciIiIiIiLyIgzUiYiIiIiIiLwIA3UiIiIiIiIiL8JAnYiIiIiIiMiLMFAnIiIiIiIi8iIM1ImIiIiIiIi8CAN1IiIiIiIiIi/y/7Me1pQZV73SAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.set_title(\"COAX energy spectrum\")\n", + "plot_energy(ax,data_det002.energy_sum,yerr=False,label=\"True energy\",xrange=(0,4000))\n", + "plot_energy(ax,data_det002.energy_sum_deadlayer,yerr=False,label=\"Energy after dead layer\",xrange=(0,4000))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4.4) Smearing\n", + "The final step in the processing chain smeared the energies by the energy resolution. This represents a general class of processors based on ''heuristic'' models.\n", + "Other similar processors could be implemented in a similar way. It would also be simple to use insted an energy dependent resolution curve.\n", + "To see the effect we have to zoom into the 2615 keV peak." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/AAAAF3CAYAAAACdaBHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPn0lEQVR4nO3de1yUZf7/8feADDAqqCEgZuGpTNMoUVazPJHgluV3O6hbqazrVsZmP9baLMVj4rE8ZFptph20w3Y+iClpbRtlaq7rqVXX1tTAQ6skKINw//5gGRlnBhkc5gCv5+NxP5q57uu+5rrxaub+3Nd1X5fJMAxDAAAAAADArwX5ugIAAAAAAODCCOABAAAAAAgABPAAAAAAAAQAAngAAAAAAAIAATwAAAAAAAGAAB4AAAAAgABAAA8AAAAAQAAggAcAAAAAIAA08HUFPKGsrEyHDx9W48aNZTKZfF0dAAAAAEAdZxiGfvnlF8XFxSkoyDt943UigD98+LBatWrl62oAAAAAAOqZH3/8UZdeeqlXPqtOBPCNGzeWVP6Hi4iI8HFtAAAAAAB1XUFBgVq1amWLR72hTgTwFcPmIyIiCOABAAAAAF7jzce4mcQOAAAAAIAAQAAPAAAAAEAAIIAHAAAAACAAEMADAAAAABAA6sQkdgAAAAAQaEpLS1VSUuLrasCJkJAQBQcH+7oaDgjgAQAAAMCLDMNQXl6eTpw44euqoApNmjRRbGysV2eZvxACeAAAAADwoorgPTo6WhaLxa8CRJTfYCkqKtKRI0ckSS1atPBxjc4hgAcAAAAALyktLbUF75dccomvqwMXwsPDJUlHjhxRdHS03wynZxI7AAAAAPCSimfeLRaLj2uCC6n4N/KneQrogQcAIMAYhqHTJaVV5gkPCWZIJgD4Mb6j/Z8//hsRwAMAEGBOl5SqY+aaKvPsnJoii5mfeQAA6hKG0AMAAAAAEABqFMAvXrxY8fHxCgsLU1JSkjZu3Ogy7zvvvKPExEQ1adJEDRs2VEJCgl555RW7PCNHjpTJZLLbUlNTa1I1AADqlU0TkrVzaop2Tk3RpgnJvq4OAACoRW4H8G+88YYyMjI0adIkbdmyRddcc41SUlJsU+yfr1mzZnriiSeUm5urbdu2KS0tTWlpaVqzxn7oX2pqqn766SfbtmrVqpqdEQAA9YjFHCyLucH/Nv+YIRcAUH8tX77coXM2Ojpaffv21erVq+3ynp+v8nb//fc7lP23v/1Nd911l1q2bCmz2azIyEglJSVp6tSpys/P99Yp+pTbD8c99dRTGj16tNLS0iRJS5cu1ccff6xly5bpsccec8jfp08fu/djx47VihUr9OWXXyolJcWWHhoaqtjYWHerAwAAAADwM1OnTlXr1q1lGIby8/O1fPly/frXv9aHH36oW265xZbvpptu0vDhwx2Ov+KKK+zeZ2Zmatq0aWrTpo1GjhypNm3a6MyZM9q8ebPmzZunFStWaN++fbV+Xr7mVgBvtVq1efNmjR8/3pYWFBSk5ORk5ebmXvB4wzD02Wef6fvvv9esWbPs9m3YsEHR0dFq2rSp+vXrp+nTp7tcF7G4uFjFxcW29wUFBe6cBgAAAACgFg0cOFCJiYm296NGjVJMTIxWrVplF8BfccUVuueee6os64033tC0adN011136ZVXXpHZbLbb//TTT+vpp5/27An4KbeG0B87dkylpaWKiYmxS4+JiVFeXp7L406ePKlGjRrJbDbr5ptv1qJFi3TTTTfZ9qempurll19WTk6OZs2apc8//1wDBw5UaanzJXKysrIUGRlp21q1auXOaQAAAAAAvKhJkyYKDw9Xgwbur5CSmZmpqKgovfjiiw7BuyRFRkZq8uTJDumrV6/WDTfcoIYNG6px48a6+eabtWPHjppU3294ZX2Zxo0ba+vWrTp16pRycnKUkZGhNm3a2IbXDx061Ja3c+fO6tKli9q2basNGzaof//+DuWNHz9eGRkZtvcFBQUE8QAAAADgJ06ePKljx47JMAwdOXJEixYt0qlTpxx628+cOaNjx445HB8RESGz2ax//etf+te//qXf//73atSoUbU//5VXXtGIESOUkpKiWbNmqaioSEuWLFGvXr303XffKT4+/mJP0SfcCuCjoqIUHBzsMEFAfn5+lc+vBwUFqV27dpKkhIQE7dq1S1lZWQ7Px1do06aNoqKitHfvXqcBfGhoqEJDQ92pOgAAAAD4LcMwdLrE+QhkXwgPCZbJZKrx8cnJ9iujhIaGatmyZXYjsSXpxRdf1Isvvuhw/KpVqzR06FDt3r1bknT11Vfb7TcMQ8ePH7dLa9KkiRo0aKBTp07poYce0u9//3s9//zztv0jRozQlVdeqRkzZtilBxK3Aniz2ayu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7t27NXnyZG3atEnp6emSJJPJpIcffljTp0/XBx98oH/+858aPny44uLi7CbKI5AHAAAAAPgbbwTuFdx+Bn7IkCE6evSoMjMzlZeXp4SEBGVnZysmJkaSdODAAQVVWh+7Z8+eWrlypSZMmKDHH39c7du313vvvWdbA16SHn30URUWFuoPf/iDTpw4oV69eik7O9u2BnxlFYF8xbrwEydOVHBw+VT+ISEhbv8BAHeEhoZq0qRJCg11nMEc8CTaGryFtgZvoa3BW2hr8JaK+HPAgAEqLS2tlXXfz+f2OvD+piKQ3717tzZt2qQuXbr4ukoAAAAAgDpu27ZtSkxMVIcOHWo9cK8Q8AE8AAAAAAD1gdvPwAMAAAAAAO8jgAcAAAAAIAAQwAMAAAAAEAD8JoDPyspSt27d1LhxY0VHR2vw4MH6/vvvHfLl5uaqX79+atiwoSIiInTjjTfq9OnTtv0///yz7r77bkVERKhJkyYaNWqUTp06ZVfGtm3bdMMNNygsLEytWrXS7Nmza/384D+81dZ++OEHmUwmh+3rr7/2ynnC9zzV1p588kn17NlTFotFTZo0cfpZBw4c0M033yyLxaLo6Gg98sgjOnv2bG2dGvyMN9uas++1119/vbZODX7GE23thx9+0KhRo9S6dWuFh4erbdu2mjRpkqxWq10ZXK/Vb95qa1yvwVO/obfeeqsuu+wyhYWFqUWLFrr33nt1+PBhuzI88b3mNwH8559/rgcffFBff/211q5dq5KSEg0YMECFhYW2PLm5uUpNTdWAAQO0ceNGffvtt0pPT7dbtu7uu+/Wjh07tHbtWn300Uf64osv9Ic//MG2v6CgQAMGDNDll1+uzZs3a86cOZo8ebKef/55r54vfMdbba3CunXr9NNPP9m2rl27euU84XueamtWq1V33nmnHnjgAaefU1paqptvvllWq1VfffWVVqxYoeXLlyszM7PWzxH+wVttrcJLL71k9702ePDg2jo1+BlPtLXdu3errKxMzz33nHbs2KGnn35aS5cu1eOPP24rg+s1eKutVeB6rf7y1G9o37599eabb+r777/X22+/rX379umOO+6w7ffY95rhp44cOWJIMj7//HNbWlJSkjFhwgSXx+zcudOQZHz77be2tNWrVxsmk8k4dOiQYRiG8eyzzxpNmzY1iouLbXn+/Oc/G1deeWUtnAUCQW21tf379xuSjO+++67W6o7AUpO2VtlLL71kREZGOqR/8sknRlBQkJGXl2dLW7JkiREREWH3XYf6o7bammEYhiTj3Xff9UAtURdcbFurMHv2bKN169a291yv4Xy11da4XsP5PNXW3n//fcNkMhlWq9UwDM99r/lND/z5Tp48KUlq1qyZJOnIkSP65ptvFB0drZ49eyomJka9e/fWl19+aTsmNzdXTZo0UWJioi0tOTlZQUFB+uabb2x5brzxRpnNZluelJQUff/99/rvf//rjVODn6mttlbh1ltvVXR0tHr16qUPPvjAC2cEf1WTtlYdubm56ty5s2JiYmxpKSkpKigo0I4dOzx3AggYtdXWKjz44IOKiopS9+7dtWzZMhmsSFtveaqtnTx50laGxPUaHNVWW6vA9RoqeKKt/fzzz3rttdfUs2dPhYSESPLc95pfBvBlZWV6+OGHdf311+vqq6+WJP373/+WJE2ePFmjR49Wdna2rrvuOvXv31979uyRJOXl5Sk6OtqurAYNGqhZs2bKy8uz5al8kSvJ9r4iD+qP2mxrjRo10rx58/TWW2/p448/Vq9evTR48GB+FOqpmra16uB7DZXVZluTpKlTp+rNN9/U2rVrdfvtt2vMmDFatGiRx88D/s9TbW3v3r1atGiR7rvvPlsa32uorDbbGtdrqOxi29qf//xnNWzYUJdccokOHDig999/37bPU99rDWp0ZrXswQcf1Pbt2+3uapSVlUmS7rvvPqWlpUmSrr32WuXk5GjZsmXKysrySV0R2GqzrUVFRSkjI8P2vlu3bjp8+LDmzJmjW2+91YNngUDA9xq8pbbb2sSJE22vr732WhUWFmrOnDl66KGHPHQGCBSeaGuHDh1Samqq7rzzTo0ePdp7lUdAqc22xvUaKrvYtvbII49o1KhR+s9//qMpU6Zo+PDh+uijj2QymTxWR7/rgU9PT9dHH32k9evX69JLL7Wlt2jRQpLUsWNHu/xXXXWVDhw4IEmKjY3VkSNH7PafPXtWP//8s2JjY2158vPz7fJUvK/Ig/qhttuaM0lJSdq7d6+nTgEB4mLaWnXwvYYKtd3WnElKStLBgwdVXFx8UeUgsHiirR0+fFh9+/ZVz549HSZx4nsNFWq7rTnD9Vr95Im2FhUVpSuuuEI33XSTXn/9dX3yySe2FQ089b3mNwG8YRhKT0/Xu+++q88++0ytW7e22x8fH6+4uDiHKf3/9a9/6fLLL5ck9ejRQydOnNDmzZtt+z/77DOVlZUpKSnJlueLL75QSUmJLc/atWt15ZVXqmnTprV1evAj3mprzmzdutX2JYC6zxNtrTp69Oihf/7zn3Y3ldauXauIiAiHHxvUTd5qa85s3bpVTZs2VWho6EWVg8DgqbZ26NAh9enTR127dtVLL71kN5OzxPUavNfWnOF6rX6prd/Qip77ihvcHvtec2vKu1r0wAMPGJGRkcaGDRuMn376ybYVFRXZ8jz99NNGRESE8dZbbxl79uwxJkyYYISFhRl79+615UlNTTWuvfZa45tvvjG+/PJLo3379sawYcNs+0+cOGHExMQY9957r7F9+3bj9ddfNywWi/Hcc8959XzhO95qa8uXLzdWrlxp7Nq1y9i1a5fx5JNPGkFBQcayZcu8er7wHU+1tf/85z/Gd999Z0yZMsVo1KiR8d133xnfffed8csvvxiGYRhnz541rr76amPAgAHG1q1bjezsbKN58+bG+PHjvX7O8A1vtbUPPvjAeOGFF4x//vOfxp49e4xnn33WsFgsRmZmptfPGb7hibZ28OBBo127dkb//v2NgwcP2pVTges1eKutcb0GT7S1r7/+2li0aJHx3XffGT/88IORk5Nj9OzZ02jbtq1x5swZwzA8973mNwG8JKfbSy+9ZJcvKyvLuPTSSw2LxWL06NHD+Nvf/ma3//jx48awYcOMRo0aGREREUZaWprtwqPCP/7xD6NXr15GaGio0bJlS2PmzJm1fXrwI95qa8uXLzeuuuoqw2KxGBEREUb37t2Nt956yxunCD/hqbY2YsQIp+WsX7/elueHH34wBg4caISHhxtRUVHGn/70J6OkpMQLZwl/4K22tnr1aiMhIcFo1KiR0bBhQ+Oaa64xli5dapSWlnrpTOFrnmhrL730kstyKuN6rX7zVlvjeg2eaGvbtm0z+vbtazRr1swIDQ014uPjjfvvv984ePCgXRme+F4z/a/SAAAAAADAj/nNM/AAAAAAAMA1AngAAAAAAAIAATwAAAAAAAGAAB4AAAAAgABAAA8AAAAAQAAggAcAAAAAIAAQwAMAAAAAEAAI4AEAQLUtX75cJpPJth07dsy2r0+fPrr66qt9Uq8mTZrY6pSenu6TOgAAUNsI4AEAgNuefvppvfLKK2rcuLHHy37ooYdkMpm0d+9el3meeOIJmUwmbdu2TZL0/PPP65VXXvF4XQAA8CcE8AAAwG2DBw/WPffco9DQUI+Xfffdd0uSVq5c6TLPqlWr1LlzZ3Xp0kWSdNddd+mee+7xeF0AAPAnBPAAAAS4wsJCX1fBo5KSktSuXTutWrXK6f7c3Fzt37/fFugDAFBfEMADAFADhw4d0u9+9zvFxMQoNDRUnTp10rJly+zybNiwQSaTSW+++aaefPJJXXrppQoLC1P//v2dDg//5ptvlJqaqsjISFksFvXu3Vt///vf7fJMnjxZJpNJO3fu1G9/+1s1bdpUvXr1kiSVlZVp8uTJiouLk8ViUd++fbVz507Fx8dr5MiRkqR///vfMplMevrppx0+/6uvvpLJZHIZONfEp59+KovFomHDhuns2bOSpN27d+uOO+5Qs2bNFBYWpsTERH3wwQd2x919993avXu3tmzZ4lDmypUrZTKZNGzYMI/VEwCAQEAADwCAm/Lz8/WrX/1K69atU3p6uhYsWKB27dpp1KhRmj9/vkP+mTNn6t1339W4ceM0fvx4ff311w69x5999pluvPFGFRQUaNKkSZoxY4ZOnDihfv36aePGjQ5l3nnnnSoqKtKMGTM0evRoSdL48eM1ZcoUJSYmas6cOWrfvr1SUlLseujbtGmj66+/Xq+99ppDma+99poaN26s22677SL/QuU++ugj3Xrrrbrzzjv16quvqkGDBtqxY4d+9atfadeuXXrsscc0b948NWzYUIMHD9a7775rO9bVMPrS0lK9+eabuuGGG3TZZZd5pJ4AAAQMAwAAuGXUqFFGixYtjGPHjtmlDx061IiMjDSKiooMwzCM9evXG5KMq666yiguLrblW7BggSHJ+Oc//2kYhmGUlZUZ7du3N1JSUoyysjJbvqKiIqN169bGTTfdZEubNGmSIckYNmyY3Wfn5eUZDRo0MAYPHmyXPnnyZEOSMWLECFvac889Z0gydu3aZUuzWq1GVFSUXT5nXnrpJUOSsX//fod9vXv3Njp16mQYhmG8/fbbRkhIiDF69GijtLTUlqd///5G586djTNnztjSysrKjJ49exrt27e3K69bt27GpZdeand8dna2Icl47rnnnNZPkvHggw9WeQ4AAAQqeuABAHCDYRh6++23NWjQIBmGoWPHjtm2lJQUnTx50mHYd1pamsxms+39DTfcIKl8OLskbd26VXv27NFvf/tbHT9+3FZeYWGh+vfvry+++EJlZWV2Zd5///1273NycnT27FmNGTPGLv2Pf/yjwzncddddCgsLs+uFX7NmjY4dO+aRieBWrVqlIUOG6L777tNzzz2noKDyy42ff/5Zn332me666y798ssvtvM8fvy4UlJStGfPHh06dMhWzj333KODBw/qiy++sKWtXLlSZrNZd95550XXEwCAQNPA1xUAACCQHD16VCdOnNDzzz+v559/3mmeI0eO2L0/f6h306ZNJUn//e9/JUl79uyRJI0YMcLl5548edJ2nCS1bt3abv9//vMfSVK7du3s0ps1a2Z3nFS+ZvqgQYO0cuVKTZs2TVL58PmWLVuqX79+LutQHfv379c999yjO++8U4sWLbLbt3fvXhmGoYkTJ2rixIlOjz9y5IhatmwpSRo6dKgyMjK0cuVK9enTR2fOnNG7776rgQMHOpwTAAD1AQE8AABuqOgJv+eee1wG3BVLm1UIDg52ms8wDLsy58yZo4SEBKd5GzVqZPc+PDy82nV2Zvjw4Xrrrbf01VdfqXPnzvrggw80ZswYW295TbVo0UItWrTQJ598ok2bNikxMdG2r+I8x40bp5SUFKfHV74BER0drZtuuklvv/22Fi9erA8//FC//PILs88DAOotAngAANzQvHlzNW7cWKWlpUpOTvZImW3btpUkRURE1LjMyy+/XFJ5L3fl3vnjx4/bevorS01NVfPmzfXaa68pKSlJRUVFuvfee2v02ZWFhYXpo48+Ur9+/ZSamqrPP/9cnTp1klQ+gZ4khYSEVPs87777bmVnZ2v16tVauXKlIiIiNGjQoIuuJwAAgYhn4AEAcENwcLBuv/12vf3229q+fbvD/qNHj7pdZteuXdW2bVvNnTtXp06dqlGZ/fv3V4MGDbRkyRK79GeeecZp/gYNGmjYsGF68803tXz5cnXu3Nlh5EBNRUZGas2aNbYe9H379kkq71Hv06ePnnvuOf30008Oxzk7z8GDB8tisejZZ5/V6tWr9Zvf/EZhYWEeqScAAIGGHngAANw0c+ZMrV+/XklJSRo9erQ6duyon3/+WVu2bNG6dev0888/u1VeUFCQ/vKXv2jgwIHq1KmT0tLS1LJlSx06dEjr169XRESEPvzwwyrLiImJ0dixYzVv3jzdeuutSk1N1T/+8Q+tXr1aUVFRMplMDscMHz5cCxcu1Pr16zVr1iy36nwhUVFRWrt2rXr16qXk5GR9+eWXatmypRYvXqxevXqpc+fOGj16tNq0aaP8/Hzl5ubq4MGD+sc//mFXTqNGjTR48GDbcnIMnwcA1Gf0wAMA4KaYmBht3LhRaWlpeuedd2xrwf/88881DoT79Omj3NxcJSYm6plnntEf//hHLV++XLGxsfp//+//VauMWbNmaeLEifr22281btw47d27V59++qkMw3Daa921a1d16tRJQUFBtRIYt2zZUuvWrVNxcbFuuukmHTt2TB07dtSmTZt08803a/ny5XrwwQe1dOlSBQUFKTMz02k5FXVr0aLFRU+yBwBAIDMZFTPoAACAOufEiRNq2rSppk+frieeeMJh/7XXXqtmzZopJyenWuUtX75caWlp2rJli1q1aqVLLrnEae++t/38888qKytT8+bN9eCDD7p8dAAAgEBGDzwAAHXE6dOnHdLmz58vqbyH/3ybNm3S1q1bNXz4cLc/67rrrlPz5s11/Phxt4+tDW3atFHz5s19XQ0AAGoVPfAAANQRy5cv1/Lly/XrX/9ajRo10pdffqlVq1ZpwIABWrNmjS3f9u3btXnzZs2bN0/Hjh3Tv//972pPDPfTTz9px44dtve9e/dWSEiIx8/FXZ9//rlKSkokSa1atdKVV17p4xoBAOB5TGIHAEAd0aVLFzVo0ECzZ89WQUGBbWK76dOn2+X761//qqlTp+rKK6/UqlWr3JrVvWKdd3/Tu3dvX1cBAIBaRw88AAAAAAABgGfgAQAAAAAIAATwAAAAAAAEAAJ4AAAAAAACAAE8AAAAAAABgAAeAAAAAIAAQAAPAAAAAEAAIIAHAAAAACAAEMADAAAAABAACOABAAAAAAgA/x/IGLeF3okAAAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axs = plt.subplots()\n", + "plot_energy(axs,data_det001.energy_sum_smeared,yerr=False,label=\"BEGe\",xrange=(2600,2630),log_y=False,bins=150,density=True)\n", + "plot_energy(axs,data_det002.energy_sum_smeared,yerr=False,label=\"COAX\",xrange=(2600,2630),log_y=False,bins=150,density=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see clearly the worse energy resolution for the COAX detector.\n", + "> **To Do**: add a gaussian fit of this." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Part 5) Adding a new processor" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next part of the tutorial describes how to add a new processor to the chain. We use as an example spatial *clustering* of steps.\n", + "This will be added later. " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "sims", + "language": "python", + "name": "sims" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst index bf2ffdb..0ed19e2 100644 --- a/docs/source/tutorial.rst +++ b/docs/source/tutorial.rst @@ -6,5 +6,5 @@ Basic Tutorial :maxdepth: 2 :caption: Contents: - notebooks/reboost_hpge_hit_tutorial + notebooks/reboost_hpge_tutorial.ipynb notebooks/reboost_hpge_evt_tutorial From df7e6d909848911c709cb84f57579afb6377729a Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Wed, 20 Nov 2024 17:38:14 +0100 Subject: [PATCH 72/81] change to notebook for docs --- .../notebooks/reboost_hpge_tutorial.ipynb | 402 ++++++++++-------- 1 file changed, 228 insertions(+), 174 deletions(-) diff --git a/docs/source/notebooks/reboost_hpge_tutorial.ipynb b/docs/source/notebooks/reboost_hpge_tutorial.ipynb index 25b6db8..616c6ec 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial.ipynb +++ b/docs/source/notebooks/reboost_hpge_tutorial.ipynb @@ -4,8 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Hit Tier HPGe simulation processing\n", - "This tutorial describes how to process the HPGe detector simulations from **remage** with **reboost**. It buils on the offical **remage** tutorial [[link]](https://remage.readthedocs.io/en/stable/tutorial.html)\n", + "# Hit tier hpge simulation processing\n", + "This tutorial describes how to process the HPGe detector simulations from **remage** with **reboost**. It buils on the official **remage** tutorial [[link]](https://remage.readthedocs.io/en/stable/tutorial.html)\n", "\n", "> #### *Note*\n", ">\n", @@ -22,7 +22,7 @@ "│   └── hit\n", "└── reboost_hpge_tutorial.ipynb\n", "\n", - "> " + "```" ] }, { @@ -30,7 +30,7 @@ "metadata": {}, "source": [ "## Part 1) Running the remage simulation\n", - "Before we can run any post-processing we need to run the Geant4 simulation. For this we follow the remage tutorial to generate the GDML geometry. We save this into the GDML file *cfg/geom.gdml* for use by remage. We also need to save the metadata dictonaries into json files (in the *cfg/metadata* folder as *BEGe.json* and *Coax.json*\n", + "Before we can run any post-processing we need to run the Geant4 simulation. For this we follow the remage tutorial to generate the GDML geometry. We save this into the GDML file *cfg/geom.gdml* for use by remage. We also need to save the metadata dictionaries into json files (in the *cfg/metadata* folder as *BEGe.json* and *Coax.json*\n", "\n", "We use a slightly modified Geant4 macro to demonstrate some features of reboost (this should be saved as *cfg/th228.mac* to run remage on the command line).\n", "\n", @@ -56,7 +56,7 @@ "/run/beamOn 1000000\n", "```\n", "\n", - "We then use the remage exectuable (see [[remage-docs]](https://remage.readthedocs.io/en/stable/) for installation instructions) to run the simulation:\n", + "We then use the remage executable (see [[remage-docs]](https://remage.readthedocs.io/en/stable/) for installation instructions) to run the simulation:\n", "> #### *Note*\n", "> Both of *cfg/th228.mac* and *cfg/geometry.gdml* are needed to run remage\n", "\n", @@ -81,6 +81,8 @@ "metadata": {}, "outputs": [], "source": [ + "from __future__ import annotations\n", + "\n", "from lgdo import lh5" ] }, @@ -145,8 +147,8 @@ "## Part 2) reboost config files\n", "For this tutorial we perform a basic post-processing of the *hit* tier for the two Germanium channels.\n", "\n", - "### 2.1) Setup the enviroment\n", - "First we set up the python enviroment." + "### 2.1) Setup the environment\n", + "First we set up the python environment." ] }, { @@ -163,34 +165,31 @@ } ], "source": [ - "from reboost.hpge import hit\n", - "import matplotlib.pyplot as plt\n", - "import pyg4ometry as pg4\n", - "import legendhpges\n", - "from legendhpges import draw\n", - "import awkward as ak\n", "import logging\n", + "\n", + "import awkward as ak\n", "import colorlog\n", "import hist\n", + "import legendhpges\n", + "import matplotlib.pyplot as plt\n", "import numpy as np\n", + "import pyg4ometry as pg4\n", "\n", + "from reboost.hpge import hit\n", "\n", - "plt.rcParams['figure.figsize'] = [12, 4]\n", - "plt.rcParams['axes.titlesize'] =12\n", - "plt.rcParams['axes.labelsize'] = 12\n", - "plt.rcParams['legend.fontsize'] = 12\n", + "plt.rcParams[\"figure.figsize\"] = [12, 4]\n", + "plt.rcParams[\"axes.titlesize\"] = 12\n", + "plt.rcParams[\"axes.labelsize\"] = 12\n", + "plt.rcParams[\"legend.fontsize\"] = 12\n", "\n", "\n", "handler = colorlog.StreamHandler()\n", - "handler.setFormatter(\n", - " colorlog.ColoredFormatter(\"%(log_color)s%(name)s [%(levelname)s] %(message)s\")\n", - ")\n", + "handler.setFormatter(colorlog.ColoredFormatter(\"%(log_color)s%(name)s [%(levelname)s] %(message)s\"))\n", "logger = logging.getLogger()\n", "logger.handlers.clear()\n", "logger.addHandler(handler)\n", "logger.setLevel(logging.INFO)\n", - "logger.info(\"test\")\n", - "\n" + "logger.info(\"test\")" ] }, { @@ -218,85 +217,81 @@ "outputs": [], "source": [ "chain = {\n", - " \"channels\": [\n", - " \"det001\",\n", - " \"det002\"\n", - " ],\n", - " \"outputs\": [\n", - " \"t0\", # first timestamp\n", - " \"time\", # time of each step\n", - " \"edep\", # energy deposited in each step\n", - " \"evtid\", # id of the hit\n", - " \"global_evtid\", # global id of the hit\n", - " \"distance_to_nplus_surface_mm\", # distance to detector nplus surface\n", - " \"activeness\", # activeness for the step\n", - " \"rpos_loc\", # radius of step\n", - " \"zpos_loc\", # z position\n", - " \"energy_sum\", # true summed energy before dead layer or smearing\n", - " \"energy_sum_deadlayer\", # energy sum after dead layers\n", - " \"energy_sum_smeared\" # energy sum after smearing with resolution\n", - " ],\n", - " \"step_group\": { \n", - " \"description\": \"group steps by time and evtid with 10us window\",\n", - " \"expression\": \"reboost.hpge.processors.group_by_time(stp,window=10)\",\n", + " \"channels\": [\"det001\", \"det002\"],\n", + " \"outputs\": [\n", + " \"t0\", # first timestamp\n", + " \"time\", # time of each step\n", + " \"edep\", # energy deposited in each step\n", + " \"evtid\", # id of the hit\n", + " \"global_evtid\", # global id of the hit\n", + " \"distance_to_nplus_surface_mm\", # distance to detector nplus surface\n", + " \"activeness\", # activeness for the step\n", + " \"rpos_loc\", # radius of step\n", + " \"zpos_loc\", # z position\n", + " \"energy_sum\", # true summed energy before dead layer or smearing\n", + " \"energy_sum_deadlayer\", # energy sum after dead layers\n", + " \"energy_sum_smeared\", # energy sum after smearing with resolution\n", + " ],\n", + " \"step_group\": {\n", + " \"description\": \"group steps by time and evtid with 10us window\",\n", + " \"expression\": \"reboost.hpge.processors.group_by_time(stp,window=10)\",\n", + " },\n", + " \"locals\": {\n", + " \"hpge\": \"reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)\",\n", + " \"phy_vol\": \"reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)\",\n", + " },\n", + " \"operations\": {\n", + " \"t0\": {\n", + " \"description\": \"first time in the hit.\",\n", + " \"mode\": \"eval\",\n", + " \"expression\": \"ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)\",\n", " },\n", - " \"locals\": {\n", - " \"hpge\": \"reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)\",\n", - " \"phy_vol\": \"reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)\",\n", + " \"evtid\": {\n", + " \"description\": \"global evtid of the hit.\",\n", + " \"mode\": \"eval\",\n", + " \"expression\": \"ak.fill_none(ak.firsts(hit._evtid,axis=-1),np.nan)\",\n", " },\n", - " \"operations\": {\n", - " \"t0\": {\n", - " \"description\": \"first time in the hit.\",\n", - " \"mode\": \"eval\",\n", - " \"expression\": \"ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)\",\n", - " },\n", - " \"evtid\": {\n", - " \"description\": \"global evtid of the hit.\",\n", - " \"mode\": \"eval\",\n", - " \"expression\": \"ak.fill_none(ak.firsts(hit._evtid,axis=-1),np.nan)\",\n", - " },\n", - " \"global_evtid\": {\n", - " \"description\": \"global evtid of the hit.\",\n", - " \"mode\": \"eval\",\n", - " \"expression\": \"ak.fill_none(ak.firsts(hit._global_evtid,axis=-1),np.nan)\",\n", - " },\n", - " \"distance_to_nplus_surface_mm\": {\n", - " \"description\": \"distance to the nplus surface in mm\",\n", - " \"mode\": \"function\",\n", - " \"expression\": \"reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')\",\n", - " },\n", - " \"activeness\": {\n", - " \"description\": \"activness based on FCCD (no TL)\",\n", - " \"mode\": \"eval\",\n", - " \"expression\": \"ak.where(hit.distance_to_nplus_surface_mm1][1]].time,histtype=\"step\",yerr=False)\n" + "plot_times(\n", + " data_det001[data_det001.global_evtid == unique[counts > 1][1]].time, histtype=\"step\", yerr=False\n", + ")" ] }, { @@ -656,38 +663,44 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ - "def plot_map(field,scale=\"BuPu\",clab=\"Distance [mm]\"):\n", + "def plot_map(field, scale=\"BuPu\", clab=\"Distance [mm]\"):\n", " fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True)\n", - " n=100000\n", - " for idx, (data,config) in enumerate(zip([data_det001,data_det002],[\"cfg/metadata/BEGe.json\",\"cfg/metadata/Coax.json\"])):\n", + " n = 100000\n", + " for idx, (data, config) in enumerate(\n", + " zip([data_det001, data_det002], [\"cfg/metadata/BEGe.json\", \"cfg/metadata/Coax.json\"])\n", + " ):\n", + " reg = pg4.geant4.Registry()\n", + " hpge = legendhpges.make_hpge(config, registry=reg)\n", "\n", - " reg=pg4.geant4.Registry()\n", - " hpge = legendhpges.make_hpge(config,registry=reg)\n", - "\n", - " legendhpges.draw.plot_profile(hpge, split_by_type=True,axes=axs[idx])\n", - " r = np.random.choice([-1,1],p=[0.5,0.5],size=len(ak.flatten(data.rpos_loc)))*ak.flatten(data.rpos_loc)\n", + " legendhpges.draw.plot_profile(hpge, split_by_type=True, axes=axs[idx])\n", + " rng = np.random.default_rng()\n", + " r = rng.choice([-1, 1], p=[0.5, 0.5], size=len(ak.flatten(data.rpos_loc))) * ak.flatten(\n", + " data.rpos_loc\n", + " )\n", " z = ak.flatten(data.zpos_loc)\n", - " c=ak.flatten(data[field])\n", - " cut = c<5\n", + " c = ak.flatten(data[field])\n", + " cut = c < 5\n", "\n", - " s=axs[idx].scatter(r[cut][0:n],z[cut][0:n], c= c[cut][0:n],marker=\".\", label=\"gen. points\",cmap=scale)\n", - " #axs[idx].axis(\"equal\")\n", + " s = axs[idx].scatter(\n", + " r[cut][0:n], z[cut][0:n], c=c[cut][0:n], marker=\".\", label=\"gen. points\", cmap=scale\n", + " )\n", + " # axs[idx].axis(\"equal\")\n", "\n", " if idx == 0:\n", " axs[idx].set_ylabel(\"Height [mm]\")\n", - " c=plt.colorbar(s)\n", + " c = plt.colorbar(s)\n", " c.set_label(clab)\n", "\n", - " axs[idx].set_xlabel(\"Radius [mm]\")\n" + " axs[idx].set_xlabel(\"Radius [mm]\")" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -706,7 +719,7 @@ }, { "data": { - "image/png": "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87zSwKXaruI/D74w7OchxHCQun7zvF9df/+99/PbB3/HHb+5k8svvpyTjj+xqJt6toy5/w8y/WJ2heA4xmCXe50odX2eBONCiM22OV3F4ABYtCPW8n/AjAM5fJTHkS1evJiZM2fmny9ZsgStNTNmzChZp7933nmHiooKmpqaNrjv+vp6urq6SpZlMhnWrl07YN2GhgbOPvtszj77bPr6+jj44INZsGDB1h+My91yMVoMoMCySiNr3w/m7+3sTVNXG6GrK5UPxP2MT2p9b/Hmwf+zr0ej0ZIMzWNn3iEhBpK6fvjq+oN2OYhEIs4p553Kj3/+4yAY3xAF2tdYdmke7nA2v4WlguVlHbdKXZ8n2dSFEKNvh2Ph6KtGPaELwE9/+tOS5zfddBMAxxxzTH7Zc889V5LZfNWqVTz44IN85CMfed8xZLNmzRowLcptt9024G55e3t7yfOqqiq233570umhdQ8cU9RmPITYAopbyILGG8Mr77bTm9JUxsJMmlhN87gYvW+3kVjWCWmDqR/YSmdcl+133a/fQjj2/I8O9ykIUZ6kri9ZVlrXGyorKpk+dTqZTHZcvjZBMsiStQxUhjCuxk95+CmPUMgmHLLBQCqjcT0/6K1TztG41PV50jIuhBBFli1bxic+8QmOPvponnvuOe6++25OPfVUdt21MEXRzjvvzFFHHcWFF15IJBLh5ptvBuCyyy57332fe+65/O///i8nnHACRx55JK+++iqPP/4448aNK1lv3rx5HHrooey55540NDTw4osv8vvf/54LLrhgy59wuZGua2K0bOAjtGxd34BlIccJ5vtNu+hMcOFLIoOJhYIVUi54ZtDP5fKFy7ZgoYUQQ1Fudb3X47HwrYU89tRjnHHi6YWVfIOxKB007huwg+eR6siAry7XN0TLPWqVuj5PgnEhhChy3333cemll3LxxRfjOA4XXHAB3//+90vWOeSQQ9hvv/247LLLWLlyJfPmzePOO+/8wARrn/vc51i2bBm33347jz32GAcddBBPPvkkhx9+eMl6F154IQ899BBPPPEE6XSa6dOnc8UVV/D1r399i5+vECLL9G+DCqYL6upLZ7ug5ycWAgX1M2rpfO49LAMkNFoDcTe/rVKKTCpZtLNg2+7VPcN9JkKID1BudX0qmWLyxMl89Qtf5XNnnIuiMIUixVnSLQVpD0I22BbKUiVDZIpjdjE2SDAuhBBFmpqa+N3vfveB65122mmcdtppG3z9rLPO4qyzzipZZlkW11xzDddcc03J8uLsrQCXXHIJl1xyyUaXeWuiLIUawpiwoWwjRH/9u3V6vsbQbz5fDBjoS3rBVW+FgzW9Gt2dBDe4DDbGYIzhnZeey4/fRIHWmt2PGb0M0kKIQLnV9UteXIJF4bsCA8b1UMoKnjsWKAvlKHCyXeQtA7mAPcuU/K9860Wp6wtkzLgQQojyIePIxGjZQPfHqgil4zYN+FoTrotRcegMGF+Jxseqr8BqroTmSlS9w6v/ejJYPRuYG2NImzTh6JbNAi2E2DoUf89EIzEsZQVLDOBqsLNdux0LqyqMFQ3hev6AlvDsZA7lTer6PAnGhRBClBFVGEu2KY+tsYYWo04pRXNDFbMmVtNcF8H3feLxNGveK3Q11/UhWFXojm4BKhxl7q77kjbpkgfAuy8tHenTEEKMAQaDRmMpq2hYTBHXD7qsp738C8aAm/HQxqAwREIWYcfC8zUZbwNToJUFqetzJBgXQghRPnLTnQzlIcQwyHUBjYYUEduiN+UTqgxjRx201vDYivy6Op5Bd6cw8QzR5gbmztsHW9koFCFC+Gj2OEq6qQshSoUiwchhRdDNvUTYDh651m5t8r3QlWWBZeH5BsfJjjPPbTdIHoyyIXV9nowZF0IIYMGCBSxYsOAD1zNl3/drjBvqje+tr34Wo6j4z7wnkSGe9AAIRxya66Os60jQt7QDndGQbXzSnUXziWeChV2Ll+EoB4MhZsVwLY9Pfv1TI3UaQoh+yrWunzh7Eu8tXIUBPM/DscOgFCpUNIWarTCeQTkqmMUBsEIGK2QTdiz8bKI3H4NtKaxyzjwudX2etIwLIYQQYps3+LW3yQfiOVWxEJWWKiRNCit0PF2yjtvZh7+ylVBjJa528YxHr9/Lrge9fxZmIcS2yXbsfCu2weD5mSBZme/zfvnRtasJOwPDOV9Lw8FYIS3jQgghyofMPSpGTSH7cO7jNFiArpSiYVwlrmXR+XY7pj6CXVFIypZavB5agjHljVYDVU0VLG5bhDGG1//6+nCfhBBiDFr5+sr8/xUEPWq8oPUbT2PVRChtFi7Nlr6hKrBsa0ap6/OkZVwIsUmkm/bWb1R/x9ZmPITYwqwNjE/0jQFLoVt7IV3692K7puRCMxyKUhmuyreku5nM8BZaiC1A6vqRpf1CsrVIKDow6Ozf0p3yS54O5dcldX15KLtTWr16NaeffjqNjY3EYjF22WUXXnzxxfzrxhguvfRSJk6cSCwW44gjjmDx4sWjWGIhtg2hUAiARCIxyiURwy0ej6OUyv/OR5RiaBlWt76b5aIM2JYimh2zWTxFWXtPEFDrNX0l63vrevFXdZUsU0BDRZMEN2JMkLp+9KlBKjQdH+wmngE1eCBuW4pw8XjzQeR+x1LXj66y6qbe2dnJAQccwIc//GH+/Oc/09TUxOLFi6mvr8+vc9111/HjH/+Yu+66i5kzZ/Ld736Xo446ijfffJNoNDqKpRdi62bbNnV1dbS0tABQUVFRGDMpxjxjDJ7n0dPTQ09PD3V1ddj2+1fkw0EpNaTPlXwWxXCZ2lzJ8vV9uJ7G9XzWdqbobenDT/uE9p2Ku7gN2oKpzXRrb+nG2c9lIh0E7RqNm/IIhWWucVGepK4fHcY2aN8HFB7ewGHiBpRf1IYaslHGoIwilTI4RdW1UgpjWSR9F53RaKPRSpNKpbCUwhhDIpGgpaVF6voyUFbB+LXXXsvUqVO544478stmzpyZ/78xhhtuuIHvfOc7HHfccQD88pe/ZPz48fzxj3/k5JNPHvEyC7EtmTBhAkC+khZbH9u2mThxIrW1taNTAMmwKsqOorEmikKzaGUn3Wt6MH5wpawci9AOTbjLOqEzhYoNbGEyxtCWakWj8YzP2iVrmbXHrJE+CSE2mtT1I6+1pTUfgDuWg1LWgGpN9Wa/X0LBdGYlr1kQCQfTKBoKjchtqVa08bGVjekwJcFsXV1d/nc94qSuzyurYPyhhx7iqKOO4jOf+QzPPPMMkydP5otf/CKf+9znAFi2bBnr1q3jiCOOyG9TW1vLPvvsw3PPPTdoMJ5Op0mnC1lOe3p6hv9EhNhKKaWYOHEizc3NuK472sURW5jjONi2vVXeeRZbt+Gs67vjGTJeMJ5z/fpEPhDPUUoRmlaH270ee/7EoJt6xg/m+1UKozXzqnekLdFKm9tO4+TGLVY2IYaD1PUj75ZTf0o0HqHWqiUajaGioeD7wwRd0e3pDYSm1gHg7DEJpXTJ9spR1DWGmTWt0JvYthS3vHM5XelOGmIN/OyI24lmm9BDodCotIiLgcoqGF+6dCm33HILX/3qV/n2t7/Nf/7zHy688ELC4TBnnnkm69atA2D8+PEl240fPz7/Wn9XX301l1122bCXXYhtiW3b8iUuhoelgsdQthtGHR0dm7V9bW2t/M0Moy1T1w/8DPna5ANxeJ8JhlQQwFiWRejI2aQfWAhKYXwNvqYl3crq9GocHPo6eqkbX7eZZRVi+EldP3Ic4/BONgfW7g27B99GYRtQ4PlEdp2G51lgK0LuwO8qpcHv9tneLgyB0UCL20p7phXf8YlEo/lgfNRJXZ9XVsG41pq99tqLq666CoDdd9+dhQsX8rOf/YwzzzxzSPv81re+xVe/+tX8856eHqZOnbpFyiuEEGILK9PpTsaNG7dZPQaefPJJDjvssC1YIlFsuOp6rT94HQDdG7TKe2+2YDpTOFMbQRu8Va0AjIuMY3ViNR4ei55bxJQd5TpECFGw7LVlAFTZVfnbgqo6hl1bAYD/37UwfzxOTRTja5Rd2k3dDtljqwe31PV5ZRWMT5w4kXnz5pUs23HHHbn//vuBwhiW9evXM3HixPw669evZ7fddht0n5FIhEgkMjwFFkIIsWWV8Tiy448/nvnz52/SNvF4nB/+8IfDVCKRs2Xq+qJ5ezfQBO7YClUXIdObQee6q2uNXt6Nu7QD05kCcgmUwJnahLe8FWMKUf1Td/6FI845cjPLKoTYmuRmWwjZ2XHhlZF8IJ7rrq5fb4GDZuAt7SA0Z1z+eypWH8VYhkkNFQP2W7bDzqSuzyurYPyAAw7g7bffLln2zjvvMH36dCBI5jZhwgSeeuqpfPDd09PDv//9b77whS+MdHGFEEJsaWXadQ3ghBNO4NRTT92kbdrb2/nBD34wTCUSW1p++rHsx6k4R1JrV5JIVQRQVNRE8VxN3/IO0m+1B13SW+Ml+8oF5AApL5Vf7qdL5wcWQoiczkwnM8x0nKJAvPin35vGJoL7Zis1B04hVhkl94XVlTaMd938VGWVEbswh7UZOFX5qJK6Pq+s5hn/yle+wvPPP89VV13FkiVLuOeee7jttts4//zzgeCDeNFFF3HFFVfw0EMP8frrr/PZz36WSZMmcfzxx49u4YUQQmw+tRmPYXT99dez1157bfJ2VVVVXH/99cydO3cYSiW2pNxUO8UtSbZSjK+L4rou67tSFD5oCidkEyoeG9jvIjEX2Lu+izIQJWi5v/Cei4bxLIQQY9mciu1JuSnQevBW7VA2dMtoYhUDp3RevKYPx4LmuihTmqpK6sYRiGM3ntT1eWXVMr733nvzwAMP8K1vfYvLL7+cmTNncsMNN3Daaafl1/nGN75BPB7nvPPOo6uriwMPPJDHHntM5hgXQggxbL785S8PabtIJDLkbcXo87ShL+XhDJr0yBAZV0Ff9oLZ3r4R/43CVFBKKbxkCtfP4Hkek2ITWZpczpRZU0ao9EKIscJRDp7x0FpjjEvv6vXUzJ4GFHU1D1vY0Ww39myW9f7RqTYQCTvEUx7xlDdyJ7CVGI26vqyCcYCPfexjfOxjH9vg60opLr/8ci6//PIRLJUQQogRUaZJXcS2oTAdWWl/zmhosI6ECi9RmPbJbqiAec34i9vA17iJFG+++TxpU5hyzVKKd199l1m7yjzjQogCjY9C8W46SOSmUjBjcYamHecEEXZ1BGvnpsIGG6jz+rd+e35h6I0pp27qUtfnlV0wLoQQYtullEINoS/daCSpicfj3H///SxdupTOzs7CeOOiMt14440jXi4xdPlESf0uWh3Hob4qTEdvIbA22tD9nzUl61mNFahEHQArnv5HSSAOoI3B86W1SghRyhTlj4QgN9vynmWMn7AnyrFRNWGU7RSnmSTV0ke0uapkw3nZucgHU05xrNT1BRKMCyGEKB9lnGG12FNPPcVnPvMZurq6NriOBONjTPYqVyk16OdpfH2M9lwwbgza01hNMXRbEkw2sXEYTPZJe9vaAftQSnHTGT/mJ2/8dDjPRAgx1ihKJnSA4Lsk3dJJbHITOBaqwoGMH6wTsel+q41UR5K6HZoB2Hm7WipChdCuMupgl9VA8SJS1+dtVDD+0ksvDfkAAHPnzqWysnKz9iGEEGIbMEa6rp1//vlUVlZy3333sc8++1BTUzOixxdbnsGgsld6Vr/PkzGGFS19hQVKoRyL2JRa4tns6GZ9H3R6KBR9y1ZjKwtvkG6h8c6+gQuFENs0gxm01bf7lcXEpjRBXwZdF0VF7JI5xt3OJCEnSDwZc5z8PiqjDg3V0bJqDS8hdX3eRgXje+2114hPgC6EEGIbVMbTnRRbuXIl1157LUceKfNFb41ylzy5ViWlFOlMvynJFFiOhXZdWNxdsrxyu0lMbdmBJe+9VrqNgV0O37T5a4UQWz9lKdCly6rtamp3nwtO9rWVPRhLwdQaVMwBY6jdeTwQ3DB8ZWkHu27XgG1ZVEScAd2py4rU9Xkb3U39vPPOY999992knff29koWWSGEEFud+fPn093d/cErijFjsEYHpaCxJkpf0qUi4tCdyJTM+5tpj8OK3pJtTHbDhjkzqXhvMQmSwfooIirMZ687c7hPRQgxxoTsEI52SJPCABEVprK+nkhddWmQrg1mdS9Mr6Fyt4l4KJJ9KZrGVaGU4r22OHOn1BN2ymr26jFrJOr6jQ7GDzrooCFNgH7hhRducqGEEEJso8bIOLJrr72WU045haOPPnpIc5KKsSPXI7SuKkxXvJCQTWtD+t0uyOiSoZ7FP+dO2YWl6xYVbaP5zwP/5pgvfnQESi6EGCu8jEcsFCVMNQCT6qdROX0iZJNKltws9DSmJY4dcQiFoLmpOv+S6xnae5LUVYRwHJW9O0jhZ7mQuj5vo4LxBx54gL333nuTd15TU8MDDzzArrvuusnbCiGE2AaNkXFkhxxyCDfccAP77bcfO+64I1OnTsW2S+eiVkrx4IMPjmi5xJbla0NPwsWxoLM3jdZgTNBMpZQiMruB5NpeVFHLVe6aV6/txquOwbrCa5ayePL2JyUYF0KUKM5ZAbCmcyVzJo5Ht8dxquoL6xmDshSqKgxAU2MVUOjZ41gwriZKVzyDbauyi8HzpK7P26hg/LjjjhvSzkOh0JC3FUIIsQ2yso+hbDeC7r//fk4//XR83+e9996jt7d3wDqjMQWLGLri1qfioZbGgGdg2vgqkpkuunsSkGsgr4tCjYXp0iUNNrovWCGCYmLtVNZ2rwLANR6NUxpH4GyEEGOJKQqbHWUzffpO4PqY7iS6I4LVUAFk6xVbQRjcZIZVK7qwLJg2owGA7SfX5adm9HyDLtdx41LX58nUZkIIIcrHGLlbfvHFFzN37lzuv/9+5syZM6LHFsNHa4NSDHoB21AdCaLyNPnESHbIpuLDc0j8cRFuxsNyNbqtF3oyQNCjsnJcI5NTPqvTa7CVxclXbNqQPyHEtiOiwoyPNGPlpihTCn91N35bHypk48xqRNVEqdhzan4brWH50g5222XChqcyK7d7w1LX5w05GF+xYgV33XXX+06ALt3zhBBCbAql1JDuMo90K/SaNWv4/ve/L4H4ViT47IHn68FfR9HdmezXgm5QtkKFbFjXhW5NlmyTziRYsXoxOuPi42MrC50afP9CiG2XJuhdU2lX0u52UhuPUFVVV1gh5WHSPsqyiB00bdA6z1Hv891SZg3kUtcXDCkY/81vfsOZZ56J53nU1dVRW1s7YB3pnieEEGJrtffee7Ny5crRLobYgvKNCmbwC9pUxgNKr29UNrmS8TTOhDqYUIfxDf6b6+jsaeO9tUtK9pH0Evzxxw/w9V99Y1jOQQgxdmW0y9rMegA63uuktrqRaZPnQF0UZ0odAMbTYDEwqRvQ2pmkuaF0DHmehGVDMhJ1/ZB63n/rW99ihx12YNGiRXR0dLBs2bIBj6VLl27psgohhNjaWZvxGEE33XQT9957L7/97W9H9sBiWBlj0CVplIKu64mUS2dfJp9ZPRe4F/cKzF38Wo6FvfOEAYE4QNgK86/7/jls5RdCjE0WFrpf83V3bzuJiJsPxHNfTH5b0AOnf6/kutoKWrpS+NlB48FU3tmNyqxlXOr6giG1jLe1tfGNb3xDuucJIYTYssbIOLLTTjsNz/M45ZRT+NznPseUKVMGzbD66quvjmi5xOaxLAvb+PnnWhvWdiQwxpB2NdNnNrL03fZ8izhA/JW1+fWL5yDfkJqmgb0JhRDbNht70OXVs6YApd8p6b+vxP7k3JJlDQ1RlFJ4vmZ9Z5J50+qJhO1C1VhuLeNS1+cNKRjfZ599pHueEEKILW+MVNANDQ00NjYye/bsET2uGE7BZ8i2bfpfwSbSPvF00E190rQ6MpkMqUSG7vYULO3eqL3ngvf/d9f/27LFFkKMeT7+oF3PNxREJ5a2E5vRQNOkSiqiERprovntg5/9Ws7LrWVc6vq8IQXjN9xwA8cccwx77bUXn/70p7d0mYQQQmyrxsh0J08//fTIHlCMAEPuyjeXkNi2FSGbfCCeEwqFsKsdWpf1QEiBa/Jb5y6AZ+2zL+/++/n8NkopXD/D/CN2HYFzEUKMJdXRKtLpDLYqtLrWObXgeRAKDQjU7fpKMt1pIjMb8A30JF1qYqHCEBr69dApt5ZxqevzhhSM77LLLlx55ZWcfPLJVFZWSvc8IYQQW8YYuVsutkYDP0MKaKyNsbojVbpcKYzRhKvD6I9sR/rRd8EUjSVPusTq6hinGug1fRgMMaKspxWtNZY1wleUQoiyttdJH+Lt37xF2HJwtY9tWcSsGDqjsWyNsqxCQD6jmnB1OPh/9i5gKuOTygRDbGJhB23MgDHlZUXq+rwhBeM333wzX/rSl4hGo8yaNWvQbOpCCCHE1m7lypUbnOIT4FOf+tQolEoMTaFlPEcpiIQcbAuKZzwzxtC2phcIxplbB03Bf3wZAH4qg/viCowxjKtuosE00pFuRxmF8Q1P/+ppDjvzsBE6JyHEWPDXXz7FlNAkjIJYOEp1qCboTfOvpdjTGghNbwTAWFCxy4T8dj1dSWrqYyX7mjmpul8aSrG5hrOuH1IwftVVV7H//vvzyCOPSCAuhBBiCxri3fIRvvBYuXIl55xzDn/729+AgVltIWg99X1/wHIxtjiWYsdpDby7pptE2kNrQ8f6XjzXz3cDDVVF8C0w2uC+tDJowUKBAlvZ1IXr6Mp0AbDmndWjeDZCiHJkjKEt08aE2ASqQzUly/2VHVjVEVRDFdb04LXcd09vZ5JUPEN1fYzq6jA7TqvHtm1sa2jzeI8cqetzhhSMd3d3c9ppp0kgLoQQYssagXFkt9xyC7fccgvLly8HYKedduLSSy/lmGOO2eh9nHnmmTz33HNcfPHF7LPPPlIfbgWKM6Tnkx0ZsGyFUjB7ci2PPr0Y45kBrU7GN1iHzCB98/Pgl75ujMG2CpdbOx2+83CfihBijHFCIaImRsgKlQTRuf+777Zht8UJfXgGUDrPeCbt0bG+j3g8zE4zGtHGYKlgNoj8V1q59VgfoTHjm1vfj0RdP6Rg/JBDDuH111/f0mURQgixrRuBcWRTpkzhmmuuYfbs2RhjuOuuuzjuuON4+eWX2WmnnTZqH88//zzf/OY3ueyyyza9rGJMMVpjjKE7nqa+qRrt+SR7M2RSQVI3Ywxedzq7Mvllpa1ShSvhO//fHez+8u4jVHohxFhgWxaJdBI/NHhWdWVZ4AffI27KJRQNBcsVVNXFcMI2tm3hZ3NSDNYqXlYB+QiNGd/c+n4k6vohZRC55ZZbeOaZZ7juuutob2/f0mUSQgixrcpV0EN5bKSPf/zjHHvsscyePZs5c+Zw5ZVXUlVVxfPPP//BG2dNmTKF+vr6oZyhKFMbSnZUkb3ora6MEA7bRCvC1I+vIhSx8V2fdGsiWNHNBD0ow3Z+f7l99qR70ToYdP7em6uG90SEEGOOm3ZxcUnrNK52gdLvEGMrsBQG0L0u6d4EWmvqx1dRWRslEgsxbWLN2EkOOQJ1PWx+fT8Sdf2QfmPz5s1j2bJlfOtb36K5uZnKykpqampKHtJlTwghxCazNuMB9PT0lDzS6fT7Hs73fe69917i8Tj77bffRhfza1/7GrfffjuJRGLTzk+MOYqgq6ilFCG7MA6zrrkK7XpF6zkYz8eKRlCxMMq2UJZFZ6qDtJ8irTMANE5pHI3TEEKUMcd2CBPCNR5dbhcZpVGOjQo7UBXFUhbqoOmoUHaDFNRNqiEcDbq1K6WoKprarOyNcF0PQ6vvR6KuH1I39RNOOKHMkwIIIYTYFk2dOrXk+fe+9z0WLFgwYL3XX3+d/fbbj1QqRVVVFQ888ADz5s3b6ON8/vOfx/d9Zs+ezac//ekNTvH5la98ZUjnIUZeyZjxIomUSyxkkcj4eLr0tYaZjXQs68Rog+5J5xOyW9EwRMMoYFz1VFasfRulFJVUctU/rhmR8xFCjB3Nk5px1wc37JrGTcG2ndJWYGPQyztRe01BhRSxcRUDYrG061MZdaiM2Aw2O8TWZGPreti8+n4k6vohBeN33nnnkA8ohBBCbNBmjiNbtWoVNTWFTLSRSGTQ1efOncsrr7xCd3c3v//97znzzDN55plnNrqCXrhwIddddx1r167lpptu2kCRJBgfUwYJxA2wtjOYY1xnx45D8Lv1fA0owrUR0p2pYO4zBfRP76bIZ1YP2yHGTRw3zCcihBhrdjhoR17//avBzTzLHtjoqRRmWSemN4VVW4HlWBgTJGkLqk1FKuOSSNkkUh5hxyYS6h80juAJfZARquth8+r7kajrhxSMCyGEEMMi6BM8tO0gP1Tqg4TDYbbffnsA9txzT/7zn/9w4403cuutt27U4c477zy6u7u59dZbJZv6VkQpRXc8g87G5b4uBOi2bTN7ci1L1vQABl8btPaDMZwdCYh7qFgYqyICGFLtXSTXt4FS2Fh4+GRMhnQyTSS24QtHIcS2579PvEgIB4Ui2dONn0mD41AzYwpW2AFf43cnYH0S37HQugKAVCZoDa+KOtRVRvP7y3g+0bCdr07LKQ4HRqyuh82r70eirt+sYPzZZ5/d4ATo0iIghBBik43QdCf9aa03asxZziuvvMJll13G5z73uc07sCgbuU6d/S8Pcy1UxhgspXDsYC2/p4/2N1qDDY3B70piVceyLeyKWHMjKEiua6PaqaLT6wYLHrz+QU789okjem5CiPLW195Hg1NPlV0ZBOJA3ewZkJ0v3CiFM6kOUxVC9brEX19PsjLMzP2mYFmK5vpYSWt6e0+GaKgQ5pXdSPJRquth0+r7kajrhxSMv/LKK5x00kksWbJkg4kCJBgXQgixyUZgupNvfetbHHPMMUybNo3e3l7uuecenn76aR5//PGN3sfMmTM3vYxiTKiM2h+whkJrHQTi2uQ/e1ZzJXpcDNqSQBC8h2qreXv5KwBUU4VlLB6+UYJxIUQpbTSOckj6Sbq8bpqaJqPsQuSplMLedypYhTpSJ1xa3mxl4i4TBtmfYVVbHN/PDa0ZmfPYaCM0tdnm1vcjUdcPKRg/99xzaWlp4Wc/+5l0zxNCCLHlDNY0ubHbbaSWlhY++9nPsnbtWmpra5k/fz6PP/44Rx555Ebv47LLLuNrX/saJ5988oBEMmLsMsZg2zbFswMVjxPPTU+W7s4la8v1AQ3GiVuTatDZYBwgnS5k4O2lD4Nh+qwZw3wWQoixxmDo8rsw2TbsuE7S0G8dVRUuHUtuDMmuNK7ns66zj8mNQbft4mSUZTvT2QjU9bD59f1I1PVDCsbfeOMNLr/8cumeJ4QQYsy5/fbbN3sfzz77LHV1dcydO5cjjjiCqVOnDpph9cYbb9zsY4mRUdwdPae475/WmpffaSGV8sFA1fzx+BmP5KL2wkpJN9jGGJRStLetKT0GipMXnDp8JyGEGJNCIQdTlKOis30tk6fNyU9bBoCvMcoKnkdtquaOQ/uatvYkKMikfWZMqs8noxxX7fRPJ7nN2dz6fiTq+iEF47Nnz5apzYQQQmx5lgoeQ9luBP3kJz/J//+RRx4ZdB0JxscWY3I9J1U+sbqloK4qguu6vPDmWtIZjc5ocmG6QuFMqcBbFQcDpi+DssBPe6x971062taWHkTBy39+iT0+ssfInpwQorz5lLT6aq15+40X2G72roSjMVTEQvemseuDvBQVMxrQ6WAj3/PAUqxrT2FUN5ZlccguEwk5VhlmbsuSuj5vSJ0XFixYwE9/+lNWr1495AMLIYQQA+TGkQ3lMYK01h/48H1/RMskNteGUxyFQiFcX1FfG6WxubKktSpcVQEpHzpT2NPqoKmCNa+/Tlf7+gH7USiqG6uH6wSEEGOUbwbWF+lUnKWvv0hyXSv2zk3YGuhJY9UFMzbkVNdFaWquoqY6QjoT7MdxrPJuOJW6Pm9ILeOf+tSnSKVSzJ07l8MPP3yDE6BLi4AQQohNMkLjyIR4P7mPk5W98HtzeTvV1YVpg8ZPqqG9pQfPy47NTHtgK5RjYc9qwFcay1hYWGh0dp+KlE4zYdb4kT4dIUSZG+xWoIWFAVw/g4pFMJ5GuZpQfQW5b6mmCVU4TtC26jgWGPB8U/5VotT1eUMKxp955hm+8IUvkEgkePjhhwddR4JxIYQQm0wNsetaObcAiLGnkJcNx4Kkq0tfVtDQVM36NT3BAkvlr6a1bzAYUiaNrWzCKoQ2hrgOkrllkt5InYUQYgxJ6wwRFcZWNhaKtM5gWzZOVUXw/eJYoBTGL3wfOXa/Ts4q6Pbsa0PJS+U2t5nU9XlD6qb+pS99iZqaGh5//HG6urqke54QQogto0y7rs2fP59HH310k7fr7u5m/vz5vPDCC8NQKjESXF8Pujz3kdNJFwCDxkuk8Z9cwrTtdmLXufvRUD+eXj+eD8QBDjjxgGEvsxBibKlpCjKhp02GhE7Sp5PsOGsvdpizFzEVJfPCKjAGE7LILOkIxo1XhQZtKTZAX/Z7qWxJXZ83pGB8yZIlfP3rX+fII4+kpqZmKLsQQgghxoyFCxfS3d29ydt5nsfChQvp6+sbhlKJLc0YU5JNHQOx8AbmHTfgdiRJ/WctpHxU2uA/swzIZWZXTGqaQUN1U36TSquCWFVsGM9ACDEWffGW80ue77b9foRDkSChJEB7Am9RG6rPhe4MiZfX0teZHHRfloKaivDwF3orNBp1/ZC6qe+0005DKqgQQgjxvsp4HNlFF13EJZdcsknbaK3LO4mOKDHgd6UgHHIIO4qMV9rPc8U/luG3pqAiBBkfP+GCLt2XMYYZ4+eQiPeCMfT4vbz78rvM2n3WCJyNEGKsuOGs64kSwbKCDOiOE8p/H+W+lfTqbpjVCONiYClSb7XiTarBiZSGc7tvPy4/M0ReuVVDUtfnDSkY/8EPfsBpp53GUUcdxYc+9KEhHVgIIYQYoEynOznzzDM3a/tJkyZtoZKI4bKhCyljIBq26E2kCTlBQqVEysd3gXEVhZVa4oPv17IYb49jnddKhVXB7678LRf//lvDcxJCiDEp2Zukwo4RwmHmhB0GX0kBk6oKXbUdixV/X8GUQ2YQdiy0NiQzPtGwnZ2esbSXT1mRuj5vSMH4D3/4Q6qrq9lvv/2YN28e06ZNGzSb+oMPPjiU3QshhNhWDXVM2DC3Pt9xxx3Dun9RvuJpl+nNNaxpb82PH890pYJkSkXs5kq8kA2uX9rVPZXBi0AlMeJeknA0NJLFF0KMAWGClvDmSBOWsjDaoOzsbA1KoQB7j8kDNwzZuJ7B9YLvndrKML1Jj76kR2NNpLBe/5by0SZ1fd6QgvHXXnsNpRTTpk2jr6+PN998c8A6ZfULF0IIMTaUcdc1sW3SGlCK7SZWsXRtH8YY/Ey/JLXZax77oOn4/1yBSvsYrTHJDEZDTIdJYHCwOOv754z8SQghypplWzjKJmNcDAbiKXRFGMtxQCmsSTXY2zeWbpT93snd/FNKsdOM+mAZ0Nqdwtfl1iSeJXV93pCC8eXLl2/hYgghhBCUbdc1sY0y5KcHGl9fwbI1PbganMYYlbYivrQzWM0Y8DRWewo1qwk8jc54eK+9h9GaylAlru/SaXXRMLFhFE9ICFGOjvnqx3j0B48QDochnoZYGBIZnL2Cbs9KKUzSRVUWErNZYZuKKTXBvOIKDty5GYCQRTD2vJ+SHjujTer6vCFlUxdCCCGE2OqpYB7faMhGKcXUpiqMMSiliNTHqN4pmynd1ZjlXWAprKiDsVU+ircsC+0oUNDt9YzeuQghytYzd/+VmBXFsixUpHQoS7638dsdhRkfLEXtzs2E6qKgQGe/l8K2Khk6vPWFrlsfCcaFEEKUjzKde1Rs/TbUapTxNGnXRxmfaMQuGYbnhB1MZxze7URl/HwGdStkoftS+fVsp9AR8fav/Hz4TkIIMSZ1ruuiz4+T8lID6rN8N/TtqqE9gepJUrtTE0qpQsb17HeP1pp4KoPv+6VDhsuoURyQur7IRgXjNTU1/O53v9vknXd0dFBTU8Ozzz67ydsKIYTYBlmb8RBiS8leuGoN7T0pepMuPUmfnqIA2xiD151EpTWqLoJqiEFdBK+lD291D3pxS74Vy/iahJsA4JW/vDoaZySEKGPGGDw8UGB0YY7EzKoO/NXd+LUhVFyj0hr6fLr/umzAPuIpj66ERyLt0xl3ae0umoe83GJYqevzNmrMeF9fH57nbfLOjTFD3lYIIcQ2qEwzrIptQVEypOzHSfdrLW9qqKKlL0UqHbRE9b6wuqTFSTkW9rgK/CUdWBPq6Gpfz+pV7xTtHVYtXDncJyKEGIMspWjLtNPa1oalLHbc9YB867ZTE8VgULlvkoym98XVVO0ZjCnfeXrNoPvMf4WVa8v4ULbbymz0/YXTTz8d27Y36dHc3CxZ1YUQQmy8MdR1raenh2uuuYajjjqK3XffnRdeeAEIeoX96Ec/YsmSJSNeJrFl2ZbC7pcwaNq4GjCQ6kxCVRjqo8GjOhyMJ68qJFiqaxyf/78BYlZwQS2EEP1Fi74f5u60TyGGqg6jUKiQgsZo/uGmXIw2TGmMEQ4NPmViuSZTl7q+YKNaxr/3ve9t1kG22267zdpeCCGEKCfvvfcehxxyCKtWrWL27NksWrSIvr4+ABoaGrj11ltZsWIFN9544yiXVGwqpVT+AtYYGFcTZX1XsmQd7WkSb7XmNghWDNkQczDZdVVueb99N07pNz2REGKbZ2OVNGAq284ni6QvEwTpNbGgXTy3nlL0LFxP7OjZJftqrArhZPNU9L+ZKDbNSNT1IxKMCyGEEBtlqGPCRngc2de//nV6e3t55ZVXaG5uprm5ueT1448/nkceeWRkCyU2kwEUiZQ7oEtnc12MlqKA3A4VLobzP42BiIP/Tkewtw0khPv/Vt25hcsthBjrPnzO4Tz3y3/mnxttsJxsxWbA9KVRjbEBLcM67gKQynjEIiHqYlY+EC/r3slS1+dthcPghRBCjFljpOvaE088wYUXXsi8efMGveDZbrvtWLVq1YiWSWwZrj+wNTv3G+5LuhhjSqYOyjGA6cuAV0i+1NfTOXAlIYToZ78T9it5/tbr/yy5oee9tj74T/+bfJZibUsczzekXS+Yp5yBgXjZdVeXuj5PgnEhhBDlY4xU0Mlkkqampg2+3tvbO4KlESOhN5HB83yWrY8D4FQXxobnLpq9rgRGG7y+JMl319CzcjUVdgU2NhYWCZ2ku617VMovhChfPzrxhyS8BJ72iKooFXYF6958Cy+Twfh+kJPC15CdwiyneodxpAysa+8jnfFH8Qw2kdT1eRKMCyGEKB+KoU11MsK98ebNm/e+03b+8Y9/ZPfddx/BEoktJRIaeGmkjWF5Sx8rWuL56crq5k/AGRcDx8K4Gtb2YhsLbIP3XjutifWkTTrYpx0hakUAuOfSu0f0fIQQ5S8ejxMiRE2oBsuycJwwNQ3jMD1JTNrDqo/Bmj5Myg1aaBVUzm4g2lCBMYZ4xrBsfZx4PMFgFWLZDR2Xuj5PgnEhhBDlY4zcLb/ooou49957ufbaa+nuDlo6tdYsWbKEM844g+eee46vfOUrI1omsWVEw06/j5NmXWeC2RMr8byg5SmVShHvSBAaV0ls+wbU+jjGNXivriWztJUerxcfXbpjpXBweOLWJ0bsXIQQY0dtuBYApSwmNE8jGqnAth1MysV7fR26LQGtSSLTa4nNHYe2LPpa42hP47s+tSHoyUA6nRq487ILxqWuz9moBG5CCCGEKDj99NNZsWIF3/nOd7jkkksAOProozHGYFkWV111Fccff/zoFlIMWe56z7IgZNtMbKjglXc7cDT0tSVKx35nu4yaziQmnsF4PimdHnS/YTtE0oyhrqRCiJGT/d6JhKM4dmGqstzMDP7KTuymSrxVPYRnN+a3SXYFwbdVHyWZ8ok2VhIJ2UTDdvm1iI8xI1HXDykYv/zyy/nUpz7FzjvvPOjrb7zxBvfffz+XXnrpZhVOCCHENmaod75HIWvsJZdcwhlnnMH999/PkiVL0Foza9YsPvWpT8mUnlsR34Clgo6E6bTXLwmbwSjAGIzrZ7teKkLYeHgD9pX2M3z9gW+MRLGFEGNIRW0FJAG14ZkY0GC0xp5VN2hLt+M4bDexGqUUjp0dW55br1wTuA1luxE23HX9kILxBQsWsP32228wGF+4cCGXXXaZBONCCCE2zRiZ7iRn2rRp0h19a1Q0z3juwjgWAjfdv1U7m2m9KYqVcFGREHZllEg6Stpz0UVd1Y1vqJ9Yz/7HHzAip/D/s/fe8ZId9YHvt07oePvmMDloNJJGOSBARJEEPKKl9TqBBWbXfrbABnbXXhmDbRaQ93kNxhgZre0nGds8bECAkVgRhIJBEqBRmpE0Od2cO3efVPX+OB1v95VGdzR3+kr11ac1t0+oU3X6nPrVr36/+v00Gs3a4Svpr3KteDcD0X58z8FN5zCVANPA6IohIhaiJ4YQAsMw6jnIIVS4K31WU65yndrseeN0yvrT0qSFhYVaaH2NRqPRaE4WIcSKP6vJI488ws0337zs/ptvvpnHHnts9SqkeX6pjnEFGJVnq+TR1hqlUDBRQFgm1tY+rKEeEn19dJlJokSwsTAxCETA1b/8utVrg0ajWVMMxQfpM3oZig5h+CrMR+YFyFwJMdCFtaEbnKDVct7wtex5LdnPgI5bM65lfZ2Ttozff//93HvvvbXvt99+O4cOHWo5Lp1O8y//8i9cdNFFp1SxP/uzP+PGG2/k937v9/jLv/xLIAyY8l/+y3/hq1/9Ko7j8OY3v5mbb76ZkZGRU7qWRqPRaDqENeK69rGPfYx4PM7v/M7vtN3/ox/9iO9+97vccccdq1ovzcpZbpBnGoKjE2kA1m9MMjlaaNqvlEL1xaHgIeI29vnDmDsHMB+NoVyP8YkjuMpFKcUdf/Ud3vPZ957upmg0mjWG67pMlqboS/ZiG3bzTl9i9kRAgQok5X0zxHdVdJ8GxVspxdMnslxyVj9mpy8W17K+xkkr4/fccw9/+qd/CoQC6/bbb+f2229ve+z555/PF77whRVX6uc//zm33HILF198cdP2j3zkI9x555187Wtfo6enhw9+8INce+21/OQnP1nxtTQajUbTOawR+czu3bu58cYbl93/6le/mptuumkVa6Q5VZRa5jkSCjtqEmQcIpEIfSM+izP1AG2lR6Zgqq6gq7JP/vtP1KxTw9FBFrw0xaCIlJJ/velf+Y83/sfT3BqNRrOW+I/x/wA8kyyr7JCg9qUpSUXigvW1vVvP6qu4rkPENk9vZZ8HtKyvc9Ju6r//+7/P7OwsMzMzKKX40pe+xOzsbNNnbm6OYrHI3r17ednLXraiCuXzeX7t136Nv/3bv6Wvr6+2PZPJ8Pd///d89rOf5fWvfz1XXHEFt956Kw888AAPPfTQiq6l0Wg0Gs1KyOVyWNby89mGYdTSoGjWNkpC1LKYzznMZR08ZdE1lCQ5mCA5mIDJfNPxuZ/sW+ImKui3w/GMJ12+8nGdZ1yj0TQjZT2+hFQy9LipfKSS0BVtOj55wQhdQ8naZz7nMp9zSWed5QPAaZ4zqyHrT1oZj8fjDAwMMDg4yNGjR3nPe97DwMBA06e/v59YLHZKFbrhhht429vexhvf+Mam7bt378bzvKbt5513Hlu2bOHBBx9ctjzHcchms00fjUaj0XQm4Wz5StaRrW49d+7cyfe/v3y+6LvuuktHVF9FTpeslwoCKVnIhpbwtq7s3pJ84nm37TMaVTYBEhnI1jI0Go0G8FWAH3hIFaCURFa+C9msYMuy1/b84f4404tFZEWRr9Fh+rmW9XVWFMBt69atJBKJU7pwO7761a/yyCOPtDX3T01NEYlE6O3tbdo+MjLC1NTUsmXedNNN9PT01D6bN29+vqut0Wg0mucL4xQ+q8gHPvAB7rzzTj760Y+STqdr29PpNB/5yEe46667+MAHPrC6lXoR83zL+pqRSoEXKEb642wd6mJ9XzzcrMKBpPRlm8BIy609N4kTw4x2vgupRqNZfQbsPpQKO59ABvjSJ5ABCIGwwn5DVbRqR9Yt5wA9SZMLtvYykIrR1xWj6FRSK3aYEl5Dy/oaK2qSUopbbrmFl770pQwODmKaZsvnmUz67RgdHeX3fu/3+Od//udTtq43cuONN5LJZGqf0dHR561sjUaj0Ty/rJUIq7/7u7/L9ddfz1/+5V8yODjIli1b2LJlC4ODg3z+85/nPe95j055too8n7LecZvTlwkhSEQt4lGTqG2yZTAJKKSUlDNl2N5bO1ahECPdTYPkmqspirgV443vu2bFddNoNC9sYkarDmRvGaj1JwIBBsTiMcr50GMnGTXZNJgCoC8VRQjwA0XJ9TtWF9eyvs6K8oz//u//Pp/97Ge59NJLec973tO0tnul7N69m5mZGS6//PLatiAIuP/++/nrv/5rvve97+G6Lul0usk6Pj09zbp165YtNxqNEo1Gl92v0Wg0mg5ijUR1EUJw66238uu//ut84xvf4MiRIwC8613v4rrrruPqq69e1fq82Hk+Zb0XLM0lHv7eXTEbx3MwDEF/l8VC3kNJiF8whDOSwL8/nACIbxuiOJtDSdkwgAbLsEDC9X92/fNST41G88LBqNhHlQI7HiXwA1AKMxLBCAyUL1GGQEYNktfsCM8xBbYBg92hAi+EwDRDWWiZgnjE6rSMZnW0rK+xImX8H/7hH7juuuv413/911OuQJU3vOEN7Nmzp2nb+9//fs477zz+4A/+gM2bN2PbNnfffTfXXXcdAPv37+fEiRNcddVVz1s9NBqNRnPmWCPyucbrXvc6Xvc6nTv6hYFCKbDMZqfBqkKdL/sNWw1MQ1A6Mg++AgNk0SXYNw0Kon09TWV4C1mKsoivArp6u053QzQazRojlegCDwwhMJMJmtToko+3exQMiP/6FXhH03gCSpYgftW22mFKKYJAYViCmF1R8arFdJhWrmV9nRUp46VSqSXA2qmSSqW48MILm7Ylk0kGBgZq2z/wgQ/w0Y9+lP7+frq7u/nQhz7EVVddxctf/vLntS4ajUaj0WhefAghiEVah0aFso/jhRZzpRSZos/0T8eg6IdR3gD7svXI+RxqpthyvlKSJElc0qe1/hqNZm3yf996A3/3ni8BleUubbTn6C9dAk5QV6xjBnN7Jxl51XYKJZ9k3GIx5zDUG8a2aHLp7lR/dc3K1oy/4Q1v4Oc///nzXZdn5XOf+xxvf/vbue6663jNa17DunXrls11rtFoNJo1SHW6fCWfVeR0xE7RnGnqz5Bh1DdNL5SYnK8r2F4gKS8WIV+JZmwIMATCEETfsHPZYmNWFBHtMPOURqPpCC5+w8UESFzlotpESjdfuRXDEGCKWp+DIwmyLtPpMgCFkk/Z8xmdzTGfLTUXIKCjMp5pWV9jRWfffPPNvPnNb+Yzn/kMv/Vbv8XAwMApVWI57r333qbvsViML37xi3zxi188LdfTaDQazRmmotSs5LzV5HTETtF0HoaAiG0Sl/VgbOPzBcpzrdZvAEwDLAFBJeKx77Bn9OHabtvQEzQajaaVvffuJevlyHo5KEBvdICz159X229t6WlVRIWAUrh8xjAgatf7l7mMQ29XrG4RVyA7SRvXsr7GSUmFVCrVEr3O930+/vGP8/GPf5xYLIZpNqfqEEKcchJ0jUaj0bwIWQPGw9MRO0XTmURsQdkTGALKriSQYHdHcNocKwD76h3IPdNkD43x9Pzepv2e9Dm+9zhbL9y6KnXXaDRrg8/+2v9q+p525nn42ANcee6rEanYs0YRPzqV58KtvfiVtIwbh5JEbaNJnnacaO24CrWyGrL+pJTx6667btVDyWs0Go3mxcdKU5estow6HbFTNGcaBQh836/lGZcSuhMRhAj91h2vhFIKL1jewiRtA+fIDDHP4LLuiwmU5Mnc0wSEa87v/Kvv8Dv/+4OnuzEajWYN4Tl11/QN0XWMRIcB8CfT2L3rIQhQhtFWf/U8D8uy6EpEgNB4bBoGuVK9L0MQurl3CFrW1zkpZfy22247rZXQaDQajQbWToTVauyU3/zN31zdC2tOO0VXNUUgNgyDVNwiV/LJpgssTmTwci50Afnmc+VCCXnPUeyhMJq6zBQg73B+6lz25J4CYHZ8dvUao9Fo1hRJM8FIdDhMU7axHwCVc3HvPEjkXbtQYklot40pFo4s0reuu7YpVVHKG+kkD3XQsr6RFQVw02g0Go3mxczNN9/MQw89xGc+8xnm5+fPdHU0zzdLBq5Va0yAiXQrech7UrAuATahaaMLvJ8cD9dCVo43epKIqBXmGK/w5L1PrUIDNBrNWmQoMtikiNcswQrc7x1ARCsHxoGNqdq+shewmCnQFTNp5//dacr4WmE1ZP2KIol8+ctffsb9QghisRibNm3i8ssvJxqNPuPxGo1Go9EAa2a6/Nxzz0VKqWOnvAioDmItUzA9V8CMWARORSE3TRgOB8TuVA58WRs8CyFQSmEkYwSOj4GBRBLpbrVaaTSaFzcWFgqJQV2ONPYlAJQCGOiq7gz/VQoqLt9Tc2U2j3SzJtCyvsaKlPH3ve99tQdDLZlqadwuhKC7u5sbb7yR3//9319xJTUajUbz4mCtrCPTsVReuAhB3bBUGeIopTAFCARWzMbNO+G+ykDY9zz48Vj7AqVCCEhZXSileMcH37UKrdBoNGsKAV1mFz5+bVNVl2rEv+8E1mu31GcJhcBOVtaKGyCVwKzEv2gqvsPElZb1dVakjD/22GNcf/31DAwMcMMNN3D22WcDcPDgQb74xS+STqf567/+a6anp/nCF77AjTfeSCqV4rd/+7ef18prNBqN5gWGwcoWUK3yoisdS+WFSypu17LnVMdgUwslxueLJLoiFEseicEuypkS0gvADeD7xzAMg8A2wQuaypPFErLB733bpdtWqSUajWatIAkjrWX9LAOJ/tCrxlgi2GI2LJRRJ9KIzT1gGUSSMaxYqM4ZEZt9o2l2bkgRizZ74HSaMq5lfZ0VNelzn/scIyMj/PCHP+QXfuEXuOiii7jooou49tpr+eEPf8jQ0BB///d/z7vf/W5+8IMf8PKXv5ybb775+a67RqPRaF5gVGfLV/LRaJ5vhAClJOPzYV7xZDJC/0AcwxBEu2PEeuPYvXGo5CEXA0lIRMAywDYJAh/pBRzNHwPACVx+/C8/PlPN0Wg0HYpUoTKulGKqMEUwl2k2bsdszP4kAOaOQezuGPH+ZE0RX78hAYDjSfaNZknFLboTNkv1+U5By/o6K7KMf+tb3+Izn/lM231CCN75znfyR3/0R/zd3/0dhmFw3XXX8bGPfeyUKqrRaDSaFwFrZB1ZlbGxMR599FEymQyylkOmzq//+q+fgVppnk+8oPl3TaVipFIxjhyYRQUKJSX0xWGmiGEYeLO52rEGiiP5cQD8wMcXPjPHp1e1/hqNpvMxMfADH8u0KPolHFNi5p36AYlIbTV58LMxzFdvJSj7bD6rHztiNimpvlwD0dq0rK+xImVcSsn+/fuX3b9v376mikajUWKx2EoupdFoNBpNx1Eul7n++uv5xje+gZSyFqwLmte0aWV87dDW4qLArbidl9z6Ws4gCHBmsuBIQGBeOEjw0ATenvGlpXL2xnN5evwxMMGUBm/4DZ2fXqPRtMEAH59zhs7HXBr8ejZHkIpiXjIC65J4kzlAMWYp1m3pr/VfJhCJhOrd0rhemufOasj6FTkvvPOd7+Tmm2/mr//6rymXy00V/sIXvsCXvvQl3vGOd9S2P/jgg7V15RqNRqPRLEd1snwln9XkD//wD7n99tv59Kc/zb333otSin/4h3/g+9//Pm9961u55JJLePzxx1e3UprnHwG9yWhNEVdKhcHcTJPNl22i6kcqDBPrFRtr7urNZQjOGTgPAFvYfPN/3r5atddoNGsEwzRqbumGbbc9Ro7YmOu6qGcaN1i3pZKLvNI3BcBwj0XQ4dZxLevrrEgZ//znP89LXvISfvd3f5fe3l62b9/O9u3b6e3t5fd+7/e4/PLL+fznPw+ECno8HuejH/3oKVVUo9FoNC981so6sq9//eu8//3v5w/+4A+44IILANi4cSNvfOMbueOOO+jt7eWLX/ziqtZJc2osZ0UyzOYsMbWUZZZBOHqu7EeEa8XbMJ4ZDY8SUMqVnv/KazSaNY0pQid0G7u2fnwpsYs2VxTx8DN80XBbOZgpBhXFtXPXV2tZX2dFynh/fz8/+clP+PrXv87111/Pueeey7nnnsv111/P17/+dR544AH6+8OZmlgsxt/+7d/yK7/yK6dUUY1Go9G8CDBO4bOKzMzM8NKXvhSAeDwOQKFQqO2/7rrruP12bQF9IdE4CGw3IBQI6GrNIa6kxJceEREBCf/5r37ztNZTo9GsPba/7CxsbAxDMJuebH+QIVANmRkMo71i6gf1YHA1Os1QrmV9jRU3SQjBtddeyy233MJdd93FXXfdxS233MK1117bGopfo9FoNJqTYDVmy2+66SauvPJKUqkUw8PDvPvd737GOCjtGBkZYX5+HoBEIkFfX19TGdlstmkZl2Yt0P4ZkkF9FNs4uG36u/KflUyALcIcwEqBDDg+c7BWvG3YXPULrzg91ddoNGuWP/7hn2JU5FjRyaIiEGrQlX5mKEmQKVcs4+G2uYNzNfd0qPRJSnH2hh5gyaRhhxnJV8syfqryfjVkvdaaNRqNRtM5rMJCsvvuu48bbriBhx56iB/84Ad4nsc111zTNNv9bLzsZS/jxz+up6h6xzvewZ//+Z/zz//8z/zjP/4jn/vc53j5y1/+nJquOdMsYzoSELVELTCtUgopJSceGAUUyinD0TTq8CJiRy/WcC/Wpn6sTf0EA3Gk9NuXq9FoNBW+9vF/aVKYT0wcxtzQh7mhD2tjH1ZvHGO2iDy8iBoPMzb4RZ/0RAaoTw4GMoymLhCdbRlfpUXjpyrvV0PWn1Q09e3bt2MYBvv27cO2bbZv3/6sMxNCCA4fPnxKldNoNBqN5vnmrrvuavp+2223MTw8zO7du3nNa15zUmX87u/+Ll/72tdwHIdoNMr/+B//gwcffJD3vve9AOzYsYO/+qu/et7rrll9LCEIFKSzDtINatu7zhmgVCzh37sIEij7GBLY3od/ZAHfdTj+5KNNZfnK5/je42y9cOvqNkKj0XQ0d/7VncRlDFExkwZumfmx4wxs2goDccyoDRm3YkaNwmiG7rfsRAGLi6FlVilFT2+8EvW7sy3jq8WpyvvVkPUnpYy/9rWvRQhRcz+vftdoNBqN5vlkpdFST0UkZTKhZaEa6+RkeNWrXsWrXvWq2vfNmzfz9NNPs2fPHkzT5LzzzsOyVpQ9VHPGaP8QmaZg15Ze5haLLA2rFPxsGhSonNsUSd3a1MPC4wdbryAEB3cf1Mq4RqNpwvM8EnZzGuiFqTEGL9+F2RhdXYJKO9AbrQWVBBrSbcFwT3zV6r1SzoSsh+cu71dD1p/U2bfddtszftdoNBqN5nnhFCV0Nptt2hyNRokuzdfagJSSD3/4w7zyla/kwgsvPOnLffnLX+Y1r3kN27Ztq20zDINLLrkEgOPHj3PffffpPOMvAKSURG2LC7b18/i+2eadTgCebE1ppqB7ZJju+QCiFvOLUwDMOwv09HevUs01Gs1aIipiRM0IdixBT6IHtaUfw26jqlW6m0ZlHCAWNzlvUzcFJyARs9ue0zGssqyHlcn71ZD1es24RqPRaDoGYYgVfyCcte7p6al9brrppme83g033MDevXv56le/+pzq+f73v58HHnhg2f0PPfQQ73//+59TmZrOxKl4po/0J7j0/CFiiTAFkZMvowRN0Y0bEZW1nDj1HOUo2H75Wae9zhqNZm1hWAaedFFKYUuBKntwcOYZlej8gWnKxRK2odi6oZvzt/bT0xVDAV4gl03X2AmstqyHlcn71ZD1K7arZ7NZbr75Zu655x5mZma45ZZbeOlLX8rCwgK33XYb73znOzn77LNPqXIajUajeXEhWOFkeeXf0dFRurvrlsdnmin/4Ac/yB133MH999/Ppk2bntP1nm2QUygUtJv6mkPRzlXdDxSmIVBK4PmK7Rt62fvYGN6hBUR3FOUGNAQ4DuOq5x2EBLoTqFyJnmgvR3JHCFTA4MbB1WyURqNZA/xfH3kb9372R6S9DAPJIYhYGLEIwWIRsy/Ruv47LmDORfb5bN/VixCCrkRoDTcNQckJsBNG51nEK6ymrIeVy/vVkPUrOntsbIzXvva1jI6OsnPnTvbt20c+nwdCH/xbbrmF48eP8/nPf/6UKqfRaDSaFxmn6LrW3d3dJKDboZTiQx/6EN/85je599572b59+0ld4oknnuCxxx6rff/3f/93fL81UnY6neZLX/oS55xzzsnXX9OZqLoraGiQEfi+h+cLKIeDNGMwgYwJ1HgBApC5MsHYIuHRQDyCWZAoFIapHRI1Gk0rD972AF7g0WP3IEwDIxYBQB6dD793h+vJhSFgcxJRWUcuTIPHd09w6Us2YpkGZsVy7EtFpujVdfFOC/W1CrIeVibvV1vWr0gZ/2//7b+Ry+V47LHHGB4eZnh4uGn/u9/9bu64445TqphGo9FoNKeDG264ga985St8+9vfJpVKMTUVruft6ekhHl8+8M03v/lN/vRP/xQIA3Hdcsst3HLLLW2P7e3t5ctf/vLzX3nNaaTNwFBAxDIpe0HNMmXbNrYNjUMzoyuONzmNzJVQJa+5DNOoDSA72W1Uo9GcOWZnZ+kykxRlkcrMX43g0CwBYAx0YV25EaMhoJtSiosu24BpGJTKPrGIVe+r9OTfiuT9asv6FSnj3//+9/nIRz7C+eefX0uE3shZZ53F6OjoKVVMo9FoNC8+hBArytbxXM75m7/5GwCuvvrqpu233nor73vf+5Y97zd/8zd5+9vfjlKKl770pXzyk5/krW99a0s9kskkO3bs0G7qLxCkCtde+n5AKm6RK/msG0lx9MgCFGTdud0yQsV7KSL0FE0YCYqyyF++7y/58G0fXtU2aDSazsYmVLBjZqw1IGTtIAMRt0Cp2gSfXyxhmgaWKYhGQpmjlCIetUhGrSVTjJ1jHl8NWQ8rk/erLetXdHapVGJoaGjZ/blcbsUV0mg0Gs2LGMHKxgvP4ZyVWifXr1/P+vXrAbjnnnvYtWtXi2eY5oWFUuB4EiklvgTbMggCyeixNAymoJxBVFOPv2w9/Hg0DNjmhRsVgBAs5tPhIFLB4997dJmraTSaFyseHj1GN31WH8Ttlv0iFUPs7EdYlQk/KSFQIMOAklWpVnJ84lGLuG2Gsq4qGzvNKWcVZD2sTN6vtqxfkTJ+/vnnc//99/Nbv/Vbbfd/61vf4rLLLjulimk0Go3mxUdjtNTnet5q8trXvrZlm1KKe+65B8dxeNWrXkUqlVrVOmlOD1JKHC/MMF5yfXKZMoFfSSm0ubd2nHH/cYL5AhgqHF1V47oJQZlCaAmSgnf+l3edkXZoNJrORgiBKQRKiNBVvapIGgJVcJBHFiDVkIt8KE73UBzH8SuGcoVSgpLjo7oiiA6yhC9Fy/o6K1LGP/zhD3P99ddz8cUX84u/+ItAKKwOHTrEn/7pn/Lggw/yjW9845Qq1omU/HqaANHwjjT+Xf1eZemEjBCiVobR8EBVt9XLbN1X36aWXE8sc1x4bHWbbHB7MYQIXetE++sv15Z2bTMM0XLtpdeSDfet1jmI5nLaXbN+reb6GW1exnb3CcK6VetuCoGk9fdqCIQbBushPLa6PaA9BmAbova7Vt0V6/dBIivbjAaXnHIgm8qJPcu6nmc7XkpJoNpHp6y2Xarl22GL+jPiV9vRUJAtwG2oQv0WK6SqLG8S9bsY3l/RfGytQtTvVeXet/vRn/G5qDSq8ZjG2c/q89H4TFSfyZN5poVo3l9/x1qvFz7/y8++ikrQp6X7l7631XIqpbc9Vkq17DvYyNL6LNdfCQFxy2xb7zPFKk2WnzIf+9jHeOCBB7jnnnuA8H5fc801/OhHP0IpxZYtW7j77rvZsWPHKtdM83wiBFiGgRNKDtLZMpPzBRIjSQACN8BZLIfHdtuwPgVTuebA7EqRMlNk/SzSkPzCf732jLRFo9F0Lhe/5iLGHhjDUR5GJofR3wvVcagCkYogNnYjXRcRiWAOxIhftA5pCI6OZejtiWEJwWBfIixQLVFcO0wv17K+zopW9r/nPe/hk5/8JH/0R39UiyD3lre8hXPPPZevfvWrfOYzn+Hd7373iivViRS8AAgHwo0D33Bgq5BKIZXE8wOCoK4ANA6cDUPUzm9UFlzPp+wGuL5EKlXZpwiCcKZLygBfBrieh+cHeEE4KKiWUw1IaBgCKcM6eL7EDyRS1Qfy1eO9QOL4YXuqSKkIGj6qUo9Ghaz6vf4Jtwey3t5GxaL6USi8QFJyA0pOQMHxKXkBjhdUotTS9FmK78uma7YqHqoW7RaotDtUwH3fb4qA6EnZck0qd0JKWW8HoeLqKbWsAgsgAUcq8mWPrOOTq3wKZQ9fSlwFvgJPhccppSi3yf24VNl+pn3VMqo4QXidgDCgkCsVJV9ScAMKbkDRC/CeQRFXSuGp8Dw/vAG1exlUruNKRSAlgZT4QVB5xgIQ1d+4qvyF3Wv1t2q7tEeEAsLzAspuUHku/JZ7olT4nFfLqU/I1DXo+jVUy3MZ7g8VXClblVshRNMzXv0O4PoS15OVdyE8x/Xq7XYr72H92aP27nh+gB9IXM9HyqDpuW18910/wPM9gko7K60GwnLaraeSqv6MVuvbbmKqer2wXgGO6zcdV92ngGLlPewUqpMfz/2zuvX8xje+wUtf+tLa969//evcfffdfOpTn+KOO+4gCAL+5E/+ZHUrpTktmAaYQjE6W+D4RL4mV4UQWFGLSHcElXch4xHZ2Id9+WZkTxRZcpBll9zMHIYvMITRcQNijUbTGVhWBIUiImz8soufK6JypTAo5I5u7HNGsDAhG6AWSsQvWd/Un6QzZabSJYQKxxDtxgad5KuuZX2dFa84/9jHPsZ73/tevvGNb3Do0CGklOzYsYNrr72Ws84665Qq1WmUA4khwLrnU5iHf0iw440Er/84oPB8iVtRWKo6gt1wV0XFWlhVCBqtbFVsyyRwA1AKQwjmM6WKsIeovdSaJ7EtAy9Q2EjKZZeiB+YSS2nEDAfpJga+H9SCOjiVdWy2aZAr1ZXUeMSkUHJxK0pLzBIkY5GWcpciBOQKDgro7Yq1tA2oTAxUFKnKNt8P8ANFyQDLNEhETAyj9VpKKSzLaNm2XAAHIQSu7+IsCWZrmz6mgHisdR3OM5VZnWB4poARUjYr7IpQKVZegFWxOgZBQN4JqOj7xGyDeLQeaKOp/Ls/CQd/ADvfBG/4RMv1io6P61cmPQQko0ZT8AghBKbRrIAu1wbHC4g03N+lx5mmgef5tXQ8Uik8T9Z+R6kUUoYTRoZhEouYz3ivatd1fJaffgipPg9BEJAvB6FwEZCKW5jmyqy57YVT/Z0MAslC3q1Y6wEFiYiJZRuUK+9OtHq/GpR5xw3fJdcPPRRquq2nAJdASpI2xOOx6qk1bwYCGfYdBJRcv9aPpKKCWKzBHQ2wTPM5Kc5CCCzTxPE9PD/sO6rnW/d8CvPQDwjOfhPO6z9OzNRawnNhfHycs88+u/b99ttv5/zzz+fGG28E4Ld/+7drgWM0axgFgQQ3gHjUwvOapzWVUpi2iXxiGulLgqkcciKNYZnkpMvozEFkpbcTCnzVmh5Ho9Foekd6WfTTFGUJAOFAlCg7BnfCY9M4g2mi52xCRC2MwWR7d+1A4j/LmFXz3FgNWX9K4d+2bNnCRz7ykVOqwFpASoV976ewf/JZAsCeeoI/Pfp1Hugdrg+6l3iCLH0Pam6hS45t3F913V2KQLSUH55TdYteTsFo/btaj6Vu2nKZAb65jPLSSKNlvN3hoVJYdWFu8jWu1gCFql2r0RppGqLlnqkGZWep9bVxXxMVP5/llLGTZmkTKtvqbvj1nVXrvBDtf6OmulfKvWpxhk9NnCAAzKkn+Kenv8Ktwxtr11yufW3mMZBS1SZ1TCHa1rvqKv5M7VXNX5c9rnaJZcpTjfeJ9rObdfd1gUHoWq9Q1BcMhGcbbfyblGp//eWWkLQjkO1baAjRthzxLL9LUz0IJxOq1nrVvJN2b79B3c1sqUv9c0HK6vXD+974nNnTe8KD3vTHKyv8eWZZj4qTOG81sSwLx3GA8Lm9++67+fVf//Xa/pGREebm5la3UprnHwGJmEW25NHXFcUQrYGOVckP1/HMFZHTWYRlEgRBkyIOoASYyqKUKxJPJVa5IRqNppO571/uJWpEgXCMpFCUcTgyd5izBnfAnIPsLWCMdMHS9IkVEhWD01pQxbWsb7jGKZ39IsI89INQQSK0ep6TX+Tb0TNcKc0LjnPzi/jUYv9weXaO/5lqb83XaFbK0ufMPPxDrYw/Ry688EL+6Z/+iV/7tV/jm9/8JvPz87ztbW+r7T9+/DiDg4OrWynNaUEIQdwW5Ms+60e6GJsMM8YEQYBf8PAPLCB9WZmUDL1lMpkZABJmHIHAlS6e8sGAb332W/zKH//qmWySRqPpMAxpNFm7q0acAL/mtahcH1X2kWWP0mQOuyeKWYm8bhiCTSNJhBAM98aRUmF2sMeblvV1TloZv/jii59TwUIIHn/88edcoU5ECAjOfhP29B4Cwpt2oKuPvkj7m191TbdMo8myWF3D0WScVeDLcM35clbopZZxKi9lo5VxuXpXDq+tD/W8AAUV1+SKxe0Z1pAYDU/9UituaBGuruGttE8Iguraa0RTcLdGTCOsf9V93VyyPn0pVqVDqVp7W/Yb4T0KL91qvg4qdTCFaGtFbrESN7SxcbsfqNo66meyslcD5DV+b3ucQc2ybhiC/Q5Y2Vxt4ueR7kEGY0Ph+bX2tau+qlu/FZW4Au2R4QJvIHxWbctoeVZq5armu9nOE0TJuktUY+faWFb1d26pd1OQsXqhSy8TPlOi6Xe2TNF0LT9QTR4eVQ8V0zCa2tTyG1f+VizvIRKWV39fPF/WyjYra+ZPZilW1QNEytYbvdzp4TsVts0Q9XvQVK5act+rN0BRO7eKbRktz5m3440rCyByGhCV/1Zy3mryiU98gne84x01IfzKV76S173udbX9d955J1deeeWq1klz6lSXw1RRFTkXjdg8eniekqfoGUiipGL24Bx+2Yd1XZiDcYJvH6ycoxCupD/SWysnbsbI+nlc6VJ2y6vcKo1G0/nU5fS22OYwxkQFt1wmGo+Hcn17D+LcAQJfEsyX6N5k0zUQBpR86kSGVCLCSG8cL1AYhmpXfEegZX2dk1bG+/v7mwbLnufxwAMPcPHFF9PX13dKleh0lAL/dX/Ev+z//7g8O8cj3YN87Dce453HFlqOFUCuGLqPxG04d1Mf/753mmzZRwCWqdgwkGTTUAqUYjHv4vqh4rR+IIFpNK/fBYhHrAalRrLn6AJnb+jGNI3KmtA2PruE65I9X+JLxb/vnaqUZdbKeum5Yc68ouMhhNG0nr22rtQQ+EGoKFQHKIEMJxr8QNbceotln8V8iZLbqgQO98ab7iVAueSyUPSaricEbB1pnx5g82ASgWAhV6bkBk3PYhBILMvA9yWxiFF30xH1iYC5rFM7PmqbJKImrh+Qitpkyx6JiIFtW7X7L5UknS2zkPcIpEQoRcmV5Ms+tikwDAMpJSP9ibb+QEGgiEUspJRMLBQpOuE6w96uCOds6MYwDGK2IGqbLOQ9bBPW9VTcFu/+JObBH8LON/KeN3yC1y0WUUBf0qbkBrh+GDRscqHE1GIRgO5EhKGeKBHbJFdwUe36KgUT80Vs0yAIAsqeRAAxC9YNdaOkJBIRbOhPYRgVJU5CoeSyfyzLri29OF5ATzJSu79lN2Ah7zDYXXUTCderCyFIFxwcV9IVs1p+s+rvUnLD+xIq1q2u61MLBcpLnqmNA3GoCKl41EQQpvFYyDlNkxACSERN+rvj9CRsuuI2SkG+5IIQ+FIRtQxMI1wPXnWEb5kUUgpfKrqiFgr42f6Z2q6SExCPWlyxc7BJKW8n8/xAhkHpFOwfy7Bray+xSiwHKVUtnkPjAyWlZCZdxm9ol2UKLAG+lJRcFd5nz+eskRS5UoBUip6kTTxm43pBrX+pcsHWPgwh+KcvXVDrz669+o/oGP+LFc6Wr7Zf3pve9CYeeeQRfvCDH9Db28sv/dIv1fYtLi7ymte8hne9612rWynNKaJallpVp+COTWcoeQ2TfYZg6JxBJp8IZauwTIzXboFv5AiyRZTXGjIzYcRwA4dvfuZ23v/p3zh9zdBoNGuOsnJIYLI1uhnTqMfFUSiUCvsTEYtgnjtQ29e9IUWyv77kJVCQK7oA2B1sFQe0rG/gpJXxe++9t+n73Nwcw8PDfPazn+X1r3/9KVWi81EIYXDryEb+Z8pmODHMLyxjQWsczM8XPO58eLzmtqaUwvHh8GSeQxN5dm3pbTp3dDzN1k19TcpA0XFZyJboSUYpuwFjcwUA9o2mWcyWedXFG/ADCOOEhepEEASYhknJDfB9n0cPLOD7PpYVKkWJaPiSP3Zkhku2D7H3yAIX7hhomW1yPQ9pmggRmm+fPDzPxGweyzC47PxhErFI/Vg/aKuIA7VrN7JQbF3vspxR0nEDphaKpOIRZjNlUolIwzmqEoU+4OdPz6EUvObSdXTFIzWFL1+uX2shXeTERA7LlPR0x4lEIwz0xCg5BvGITyoRBRSTM3lylfYEMlR8qxMPpiHoS0Zq3gntrN7V4GlTi6WaIg6Qzrscnsxx1vpuCo6i4ITXWNeTqFhLwXjDJ+ANnwitmVKxsS/B6EKRhXy9HbOZEidm87Xvc9kyhgG9ySiOL4nY7c3/liHwfMlioV5W3gE7Ug7PKUOhvMCWwW4Qgqn5PLNZFyHCZ075PovpMn3dcZJxi1RPONGSzjr0pKIIoQgkTM7lefTgPPGowaXnDIfuUkb93RBC4Hj1QEZShXWr/67hv0sVcYDx+RIbB8NZ4FLl3iqlWrwBFKHXSbHsEbVNyl44IVMsuzz61Ay+VGwcSnLu9gFExaNDSoVtm02TRIFUPH18gSt2DvHYwdla+SUn9DLJ5Ev87KlpLtvZj23bNW+HkPCd9INwAuWexybZMBAHBE8fTzPUGyMWMcnmXXq7osRj9fdEKcWx8QyRJUEH9xxdRIhKdHZR9yh5ajTLQCpCPGqTLfq0c0aoWvOBpv6skxItrRXXNYDzzz+f888/v2V7X18fn/vc51a/QppTpmUyruKIcmK22PbY1LouclP50GOtP461rpvyxExbjzNTmLWMCBqNRrMUCxPLMJuC6VbXj1s710F/pKmPSvQnWvqsQMHB8TQXbhto3tdhurmW9XVWvGb8xR6pbzm342LR4emn5poDUZmCRH8cwzDCnNuVdE3js2k2DvUCsO/QLNm5Ek/smeQVL99KLGZz4OgCEzNFdpzVx2zGabqOH0hcCfc8Psml23uJ2CaZoku55LL3yYrCYIBh1hULyzborriyADgu3PnQCQAe3T/Ljo3ddMUjIBRPPjXLiYksAK986QYeeXquNrgPAslDj09x5fkjpLpsyp6k5DxzhNhGRbs6a9f4DFUnK4pFl8QSZXvPscXa97NGujANQTxqIYRgbr7I3qemMaIWdsIGAfc/HloqLAG7zuoP26QkP398Cs+XtXLTmSzRmI1pCPq7Y5Q9QTnjML+Qx7CtWmeYKbhNgb0CqciVPbrjNuMLBTYPdjW3VcqaK3yxzX3JFl3itgFK0h2zcBX8zdcef0YPove97RyCIIzaHolEODKZaTkmV/LoTUYxRVgHscQff3SuQNQMn5OlTKdLbB5KhhNGruDHj46T6ok1Rbg/dmIR3wvdxRezbs01+qorNqBMkxMzeY6MpilVLbECyp7i53snEI7k0ovXE4lYNcU5nXPpSoSKZhCAIZoD7OXyzc98I4EMmmaOlyO0hHskohbRiEU25/DzJ6dq+49P5piaK/DSC9fxox8fB+AlF48wPJxCACXXZ/+JNAs5lzvnTzDc3+DlAaRn88hAkaPM5EQ2TKMXhM/zZZcME49HsEyDQtnnwHgOBTieJGqHdZ9Nlyv1VOzeM82G4Tjn7xgkX/D48UPHUQh6BmKcs2MIgLGZdE0QVfsgz/MozoflZCbrT9H5uwbpSjVHY68Ginyx998aTXvavxdzmdLyARobPX4cHyMVQ8Qi2I6Fp5onnYUKJ89i8djSUjQajYaY2do3VCf2zMEkYijRHMEY2kZ3ncs6SKUQHeaarmmPDuB2UrQKaCEEPVHIlOu7y2WPvXtnw/XZlRdAoZABZMaymJZB94buyjpqyJYUG1EUiw7ZmWLoOusL7v/xCaSUxHrCl9Lzgpq1rmrtLZTrbr+PHU0D4Lou5flybc26sST9k+9JyiWvZhmvoiru8g/vn6uVX14oVa7tce89x0gMJ1nKT/dOUpzJM3T2ABgGwz2xtgplmB4ttAzOZctMLZQZ6I42KQXV6+5+bIr+vhhbNnWTzbocGUsT70vUjskVQkXypz8fRcnQAu3lXZSTD7WjhjRd0Y0JxiYyDA+lmJ3L4/myebZRCJySx1M/HcW2DbZfPMzMTIlMuszFF6/jsfuO4BV9es8ZJNrd3EFWc8n7PozO5Nk0mESIcN3yQs5hJlPmvI3dtXo3trNU8jnwxCSveOV2AG79xhPPupTntjsP8Du/eAkAs7N50oslKqbmWrlSKnKlMocm8qzvi9GTjGKZ4bM2NlfAl2AZ7dfcB4Hi5987QPdggnOv2MT0dIGyIxkeCX/3QtHFc4IWBV8peHL/HOtGEszMlljMFnEmCvWd1RkcA+7PuViWQW9fjA0be5iazeMKyTkb+zANg2LZZ342T1dXlJm5AnPzJTZt721RHKWUPHksw9kbuohH7co21RRvvYpAMTpXYnQ6z9zheRLDXYiGOAahhV7yve8dxIiZmKbJw09ME+vP1vYv/Q2rFPMOssH8rJTCNMMoygCPPDZNYiiB2TAhJkQYBKqaTq76TrtumOt7fLrIkQMHaqnkQJGeKZJf59CVjJAr13OEA5TTZZyq50dD44WAp56e4+KLRojF65b1VKTzJ1Lb5Vc/2fNOJ4ZhYBgGxWKRSCSCYRjPek0hRDhBo1nT9HRF2TQQ58Rcqb6xMuGeqwRzUwr42QQA8fM3Ezy0n5iI4aow9aeFRUZliYgI0Q3xlmtoNBqNUgoncIia0XpMHdEg3g2B8iWiMoYopUuhdbyhDEPAxWcNkC/5dCc7ZgFaC1rW19HK+CnQ1ZXkybEZpAIZSGbHMrVBcqNCDmBETMqzxXAd67pwXfTiw6M88MAJiJpY65rXShtC4LoekUiEE6NZNm1M1ayKUxMZSERbHg4359a3LRMQzSm60FtVLFXb4GruQhHn8GLYAFPAQALP8XAONKyRF4L4rgGUhNxsgdRIiplMmZ6Ejd2gEBdKHnOZcIKgqgwv/GwUd6SL9Revb7puNh0OdBYWy8zPl/DnCsiiR9BVIL6tFyNqMTGdJ5kwCSp5tt28C1VlxBRNM4TOeJFp36C/P8Fiplyptmj6V6GQJuTnS+y55zjxTT3IssfPvvMUVCYz/JJHJBXeb3exiDtfIjGQoBgJXYky8yUOPnCC/nMHMWNWreynxzKYQhBryCcOsHg8zeh0nuPH0/zKr162bDqtdjz99DTfvXMf0e4o6y9cB5V0VQpYzJWZz4b3enKxzERlQmX28SkGdvSTGkzieLLl2VRKIQOJChSZ6QI/u/1RiIdW8q6UTSIRoVQOWtb3VP/O5l2GBqMszOVxGger1d8kUCDBXShAf5K52SKOUriuxIxZ/PR7B/Hn6i6g5vZeIvHQOyI9X6R3oO6GpZTiyL1HkGWJ97IN2LZdy53dkwyXJkRsk2oUhdFKfbJz+bDNAgoH5lFVjwVTED9nAOl4yIkc1a40GIiTPLu+Lqt6bd8LsCpWbXfJUovas2WIWlRlt+CS6Ek0lVF2AybHMoxs6EaIMOf6+ESu1pm3BgYUPPHDI1D0iF8wRKI/gVJQzpTIjmaJDiWaJuoa+6An9kwzsLEL2w49QK48p/Oje1d/u5Wcdzr5xCc+EcboqCy5qX7XvDg4a0Mv6YJPtuSBCic1548tIuzq5LZCVuJ5GBEbEbOJOoIoEaSSTLuzlaNg7vDsstfRaDQvToxKGNXFIEM/vUTMSEURVxjbhpC+xFgsIzyJqHiQZqcLCNMg3hOjml74ql0jmIZBLGp2mmd6E1rW19HK+EqouHruOTqPYYgm61jbwxs0n9JcEdOX5H0X3Mrg2WrjbisE+AoqHttj45VUKr6Pm3bo2xGpDcCr/0pX1h+YZZallTMlMpaB53gsnMjSfe4ghmHU6ujnHEoHG5RuX8FsAaeqLDW4xZT2L0BfjNJimeRQEsMwyFQUFCklc0/NgikY3N6PWVkLmz+yAL4iN54jN55n++u2IYTgyOEx4rGe8JK+j/v4NHgSkhay6OEtlui+YgOYofJXb1CDIt5Yv+r9ns8zv5ggP50n2t9q3QfwjixCXwKKLqWHRus7bAOGkxTGs9jJCKWji5RHQ4tpgXny67pIntfPXGWSInsiQ++OfoQV1kEGlcBfMUGxUuf009MUnpqFkQQTE+1/o2fiB98/iBpdoLzgMz66QOqyzXQlI3hRA9dVWHZz+/MVq8384QVUIOkeSWGb4C6ZwFt8uhKUrPKcIXI4Y1kOPzlD/KJ1lH42SvyqzW3r5GQdFhZtSuklinhV629QyKu4XvilPJGtKeLK9yHn4S+UMF6+EcuyyGdd5kenWbdpGOlLph6brs0kZH82wcArt6KkInt4nmk3AKkYumCYxjDpSimcdOjyXjqyGCri1eckUOHz7jQHW/LnS5S7csQqk2RCCALP58jPxkj2x7HsMACgFY/QQkN34GccVHe8SVlWSjE/niVX9DCXvPtusYwlWmeyRcRA5RWlPTPYV22ktHsSL2ZB5OS7cCHg8ESGwZ7Otsp16mz5n/zJnzzjd80LB1VNI0E1UwOAYH1fjEzRZXEsg5NrXu4jEMidvfDAGCjoOmcLKpB4R2dBSuJBnpJfIi/zYQoDjUajWUJJloibcTwzoDueRPQnMfu7Qvm2UESWLMzu5rzKmYkcmYkc63YNIREVg1gYh6eTJ4y1rK9z0iO5Rx55pOl7JhOuWT148CC9vb1tz7n88stXXrMOo1E4hwgk1NMUmQaGKWoW2/qJoaXML3mVMhS5e48jNndBZdZFllwMGa9YHkXtWiLrQCLaVFjpW/sBmLv3GP3vv7QW1dudL1H64WGYL4d6yOu207Ux1aKwewtlJr57CBwJBiyWHPou3oioKLPOZK7VJVcSDh6WvgANAbNmvrOf7svWE13XhbdYIjNTCMsIAqa/sx9miwhDIM7tRzS4zx+951j4hy1Q2xXBQhH3pw1a6gKoDeGa7NJYhmAiT/TCoZP5yULmHSYPp/GnCti98aY10Eopgkw5vGdOEE48NOJJyJRRPTEW904j981BKailxCqUHEpBAHbdgj7/9Ax2IkKkP46djNKXtLjm/BFu/t8/RT1Rj8LNkSzKChXf7Ru7OTqefcZm9HaFSp/78GS4QYB7rMD8sX14r9jEupxL+twuYqRwM0UMA4qzBYJyXclcOJ5m7r5jMFGo6armlh7UcMVyO55r/Y0LHqV/PwaBIsg4iN5Y07MhpcSfyDJZ9mDegZ5mIdEWAb7jkf/2AcwdfQCosg9Thdoh7vePwss3YfbFkGnFxNRkw/nVCSfJ7D8/EeYdGoxjnBWWNfP4BL2be7G6Y7izeTIPT2KcE1q5ZdFvbqMQ4LfOXCmlcMayNWU8KHuk903Dw9NkAwVxC/PKDZgb7ZZ3rLxQQt57NHxvhhJYQhDdEL6LMpAs/MPj4WQWkLzu/OZ37al51PkjlarVFXiZd2rTC5m7DkPWhV2DoausVLX3N6x7g2eOoBZUzjKr3ilLG/vsP9lqspaCumheeFS9V1Tte31ftpIBxMm3xt0AMNanmpcBGQJrUz/+iTkGE0OM5sIYLet2rjs9lddoNGsWgSBiRBAI+mL9YBmY/fWYREopRGl5V+i6B2EoDwOpMI0OE/ANaFlf56SV8Ze85CVtZyN+53d+p2VbdWBaXTv5wkRhVxRx2wqfqFjMIp91QjdVqOX79YseXnUWvZJiq7oPgNEsQcbF3DUYWhE9SfDENDJbxnl8Cvn0XG19mojZoVtcl838rY9hbgrXJQeHF6CadkUBdx8lf+kgiQvXIZRA+j7OVJ7gJ2P1JkjgZ9NkjoZKoXeiYiF8yTCRriUdAM0u4NU2+F97ElWxhi/8fAJ7xwBBpojK1TsMAVCZyROBam8VMATlJ2dQJ9oopVMF2NJN6SdjqHQZzwsQKZPIhr5wcYyqtMWgqY5KKWTOofgvJzAvHqF4YJ7oxhRmMoIMAoITOfwjleBweS/M8bWUko9MSji6AMWAiv9xeJ3pMnLQw+gJ1wnLbx8AN8C1DV77yddz15/cw2wswkFDYGxoY5X3FeMHZnnrK7bz74+O8dSR0MJ+8TlDTM/lmahYjDcMJXj31Tv55ud/3Hx+5afIPDBGeq6I+pEiHwRc8oErePTmh0NrtG0g3noWlmUh3QAmK4p4pQ3+iQwqXYQtvWFn0PgbN1iPAdyHJ5DnDWCtSyHM8P12DqdRUuF/Yx/s7MHsHq73E9VRbFC/ZzKQeJMLqJxC5VykF2BYZpMiXsX96Rhic3e40LkNClCL5VBhHcsiH52u7ZvvtzETcbz5LCx68NNxRG8U6xVbEI1tXCYqU+AHyP0zzD46iV0NetgYTbnoE9x/gtIrNoWKtmkglaS0fw71cD1AHOM5cnfup7g1nCgIxrLg+ChPIkyD7Jd+CoUATIF18QhETIJ9c5jn1d3J5YkMjGVhfarpd2euCBtTOHNFogOJUCFX4Z2pzPthCEE0YrB1KFVLH1dNI9hpSniVTnVda8RxHP7pn/6J73//+xw+fJhcLkcqleLss8/mLW95C7/6q79KJNL+udV0NkIIhGqdtFJKMVkJuGjHLLw2g2I51xxxXQhRm6w1hIFt2ESJkpnInJ7KazSatYsAS1iYIkzZKpYsRz1Zi/BsushwX4KSG2CbxrOfcIbQsr7OSSvjt9566ylfbG3Tuo7zkrP6+NmBhYqeocIHvysKCpy8g192oRSuk1aeh3AUHA2FsPezE9iv2B6W6gaomQL+bCEU3F5ofVVegNw/X7+kIcJj3QAKLippY2ysDNA9VTXYAhVL/qOz5CYK2OcPI4BgplXhAfCyWTiQrSsod4/iDsSwX7ktLKvgoaIGRsxucrn3jy4gKxHXEUAqird/BiMZrkmvDvwVEBybD6103RGMijU0PK2iOOfaWxoAkArlBaicE5Y5mSPYV8afPw6A+ZazEFELAmrrxpVSeP/4BKInjiEEwZMzmFdtwh3Pw1QuVIYaLtEQhqteJ6WQ0wW8f3sa6+INoVW9KSgAyKfmcZ+aBMeHqI2ZiBIsFvnOb/9b/b5s6CbixnF3j4bWdoAd/USHu3n0R4fZeM4Qr75sE6++bNPy9wA4vHsytIjP5VGH5sJKx0zsSzfheR5MZEDCw39yN0QtzO44/uQi/M3P8ABjez/2UHe9QCEQSqHmHfx/fwzjzeeEA9HqnahFIax7Svj75vH2zYfHbA6XFchK9Ppg/wL+z04Qee8VtQmpqiKvpCT4t4N4gDQl1uYwMJucyCI297ZvcGU5CFkHETEB0fT8ybKPd2wehMDsS1aaVJkoWfDwZovIvAMFv7ItD1ED6/KNNSVcAMF8EaM7Wvttvf2zcGCh/v1YGi4YaJ1DUhDMFXAqa/a9n41hFPx6Pag4URSDWr2D2TyiVLG6VSzyAkAqvN2T2FdtQk3m8afzkIhA0a1NNKnKb+E9MYG9dTCcHLAM1EAMZ66IsA1EzMSyLayYBYZAegHDPTGsiuU8aj17IBLNM7Nnzx7e9a53cfz48TBWQU8PXV1dzMzM8Mgjj/C1r32NT3/60/zbv/0bu3btOtPV1TwHqq9GJGI3yQcpJePzxXBZmlQMbu9n8qmZ5pOlhJ9NtMhhVfEg8wI39MYSPuWsDuqn0WiaMZRAKokpTNzAIVKuZ/VpRC4UMQeaDTxGpK507x/P0hWz6e6KNk+8d+gEfKeymrL+pJXx66+//pQu9ELEMkwuOWuAA+PznBgrYkXrymqsJ0bBCQiemkJV0pIpgJIHCRPmHNxjc0S2hpHIkTI8wK17EwRjufqAQFBXcCqovIt/bBFrW1/1kFYen0alXcS2XpjKtW/I/myo6DcyXw4V/6yD/9gkSBAXDGJt6gEF3t4p1JOzLExNgedgJFP0qn7UQFeo5FWrXelEjJ4EcnwR58dHiMhtGNt6Q2ti2cX5933EXncBQbrc1miuAOfrj+PN51FCgWVgpbqIbApzKHp3HCQ4XLeKYtYVDjWVRnk+xlA3QTnA6LcR8QhmIlJLPaeUQhVcVLaEMdSFotL5KfAeGa9Uon0v5h+bQ5Uq69ZLLoHjQWPEcQVqNI17It184uEFHFOw8/IN7X+TNvRtSDL9xDTq4Fx9YznA++nxUF9rvK7j408tgGqYQPCCFu8GIHz2AoX7wHGi1QkYVVeiBXVvl5rbdMSAvIP3+AzM5ZCz2Zqbv/MX/x4e15j3ezhFpL87jBx+eJbSw0fDZ9oyib12J5FkgnYEWQezO0pp7yTR80YQphFa2Ase3neegkBhbOprFlbV396VkPcoF4u42Sx2PE78KZB5F/vyjWAIvH0zMFUksMB61bZQ6W8MVFgt78l52NJHCxN58EAdS8PxRVgSiLE6ORDkSrh37sPaMtjkGt/4SwjAWyxiY4QKeKMrrCFASryfj0PGQ7ouZP2wPzkCSoB5zgBiUzeR7mitr7CiFvMLZVIbK7lJW4LDdR6duo4MIJ/P8853vpOZmRk+/elP8973vpeNGzfW9o+Pj/PlL3+ZT33qU7zjHe/g8ccfJ5lsH6tC05lIWfEcWfI4xSMmIz1RphbLFHNlot1RnGw9/aIq+phXrCf48YmmQe/xA3soFsNJawODGDFkpLwKLdFoNGsJBbVo6sdzx7ELNtv64tipZD1A7EAcY2nnZIAdsymXy0QiUc4aiWOaBrFqcMnagHzVmnJSaFlfRwdwO2laF1oGCCKWYH1fF4ePhYpuUyqkiSxk6jm1lVIQt2ExFOBizzzennnElh7MZKTp3CBbblLM2yGEwHlkDOn4WJi4hQKThw5i2RGGzj67FglQSkmQL2F0CVSRmqWzpnAJml13qy7M94WWZ4FAofDv2l+LNk3MJj05XquLLORYKOTo719+dqiq0PlPTKDuPdS0r3j3YY4/8vNQEQZSG0fY9Oorw/V7Dx/HncmgZEWB8QReaRGzO47Vk8Q7PIVQlXvfxiVHWBbB6DxqKkP1jtoXrMM6ZxglQOXKOA8dB19injeMtbkX6fh4u8eonuCfWMTePhB6qSOoRrhUC6Wm361p+UGt4eA6ZRZmJ/CVjxCC3p4hkgfg5qv/JwCXXHsZv/FP/6ntfbvl2i/y1PeeAgXDm7axOD9NpjCPAmwsBoc2Eo236QRUPX0WgJzOo9b1VmZKVe2J9o9XlM90Gee+Q0ResyM8vuzhfXcfJGxirz27lutSZss4P9hfu4z0fIxUvOlaQEWBrETsn85Cfzfu9CLBQiUVkAytRoUfPE2weZDY5VsQQjD58F4WDx1DIRHKYMeFV6BmszgPnqj/ppt6UdW13svM9iovID0+jlLhjxjkXMq5LL1K4Txdn7wxNw8gAkFwXzj72TJZUblXjenQqsc5+TLO1BTdyf7Koc2z2OESD3C/uw+1JJhKW3GybwF/Ry+mZTVZ1/wnZ+GJhgmnBbe2Pr8WwPHAAtZgIozN0HCd8dk82ypp9hy3stSi06RyA528juzWW2/lxIkT3H333Vx99dUt+zdu3MiNN97Iy172Mt70pjdx2223ccMNN5z+immeF6qvfzhIDLdVv/enojiux3DK5umx0MMtWll+pQDPEgTZIrI/BrMFCjNzjE8cJvDrWRckYayWV1z3itVumkaj6XACAvz6KBtPehzct5uRgc30bdmMEY9iDIaGC7vLbjbAAIU5B9lv0t+dJFJRxJvGZB1mGdeyvo5Wxk+KcPDa6OlRrlgZhRAUyu1dzvzjmdD6Vxn41pS2qFFzORVCoE5k8A2FsaEHYZvIxSIU/YYrU50ya7LmIhVCKR7/7h30DK4nPVcPcjVz7DC7dl2JHUtw+P/cU9s+dOn5dK8LA0QVMoscfOgBfNfBNC22b7uQ7lR/TYGotb4leB1NingjJx59lG1XvSxsL/XT5HyhVu9gNlfLgZ4rZ5nIjmFMGpjVjkUIsmNTHL7jHjakNkLZR0nJZGGSLA3W/cf2c9bWi0gqk+VmyoQQNSWyUVHynpzCezJ0rxbxMCXWbH6axfuf4tzNl7SWlykTzOUxB0PLuZIK/8h8k6VZCNG2rys7RRZmximrijVEwcziOMMVC75SisdvfxS35NZSelVxSy5P3fVUrfx0eo7FwlylGIWDy9TsCTZtPAer3UREQzty2QUW7jvC2a95FUKE0Ta9yUyzBTbv4353fzgJks8Rs2NQ9Cj/n6dRpdalBI3tbblnFf+oahsXT4wyc+IIuaD+G26KbiRpJWGuQPn+g4wXJ3HT2UpZ4fkHnvgpJVUmbifYOXQuAMGRWYxUmNJLLhYRg2GMg8ZnbmLfU8TV0sjkiuzUJN3d/c1bK89G49IKIQSZ7DzHju0lCHysp6Oc87JXkawErFwcH2fhiXBSYiLwOOeSl6Gm80zmJ5g6dBClJNFEguHtO+nxK/fBD2oTRsuqxMcyBAkbozeG8iVyIgOyPuEDwBJ38+rfwVQetvYuadvSO1CZCGl37Q6gk2fL77zzTq655pq2wrmR17/+9bzpTW/iO9/5jlbG1xStLqHVAaPnK/pSMZ7aN9dylgCYyMLuWSxhwGCK7oEuTpzY11x65WX85T/5ldPVAI1Gs0bp6uqCNk4z9ro+7OFwWSAzJYKZ8dDbdQkCiEUNbNPA8QJMQ9BjRZoP6CC0rK/TuSv7OwqBlM3PccQM3X+VUqTzLobR4NpbHf2ayzwwgUQsufMqAP/gHP7TM8icW1EGlhzTGKZVKoKFPPlyFgVNijhAgGTfvt2MjR0i69WDop3YvZu9d36Xo/c9yNP334Pvhlb6IPA5dPgxXLeuMDZSnKwPQJYbxAdBAEoytmdv03HZ6Rkou7Vo8lXtoOyVObZwBMd3aop440vm5PJQ9sk6WYrFYrMiXuHY8SfDazWsb266Zw3Xa0vlclO5CUYzx8m7uebyGstaKOHtm8F7ehp/3wwyV26xgi69lpQBEzNHcJTTvB3J3PxErc1CCH7w599ruea/feybTR3WQma6NrlQneSRBLhuqX2dG7aNzR6hOL/AE9/8Nx6//Vs8fvu3Ofb4Iy3Hqsqa+8Nz+wlkw0TTs/R/Lddf8j5MnTjUpIgDjDnhpE4ul4Oyj5PONFwuvKBphBM3Ja/IeLqSek6qutW96JCbng2XBFSue/ynP2uySDUig6DpGXanl7ilV/a6bpnDhx8jCMJ74DsOT91/N4fv/yl77ryTsUcfrZ1RlmWmp04wPz/F5MH9KBVa7Z1ikdEnHw8ncJTCn86E779lNHknVK8qKmvDZd7B3zeLf3AOtdRBRhAuLWjXNrNZaVdKkUratesIQMnmvqXTlHJxCp/TzZ49e55VOFd5/etfz549e05vhTSrgm2Ek7oK6BpIsH5bH30jXU3HqFLzO1n1KGvXL2/cubFlm0ajeXETLGPYc91S2+2NrN/ay4btfYz0J0CAYQhKrk++7NWHpR0m7LWsr6OV8ZNAqvDBbkQIgYmquH3ChuFkXTlQ4GTKcHGYgivU0RoUHR8OHN/HsdGn8X0Xxynz8GP3M70wThAETDzxBHMHD1NIZ5g+sJ/8/DyB4yMLDnIujz+dQc7mKBayjM4dXbbegQqYmx1FtnkDS9l023Pm5idxnDL+YgF/Oo03vYg3vsjR8SfrBy2j3FZVCz+X49gDD9Y+i0eO1NrvLGZra6rzTpZGdaTdbJcCXM8hrdrXVyLJFBcr1aoHy2k6pujU9teOU+HQSkUtFDCTr0fAfuTw7qbjJOCbklIuQ+D7BIHPwswEwXw2tDCq+oCrd0svXSN1l3HPc3B9l3Z2SLlEyzrr1We3HLPtFdvatruKqHhsiFyzsj9y/jDd62NN7WhHuVyAuB26T1aPRfHE0YfwpUfBydcPjkVq7tqNa8oBZLHNdK6sH+d6DqWg2HoMUPALFGUhtPbS+p41slgKFWdhmXgLWZBhgMTFo0c59mDlmXvwIdSzZXJouB8HT+zBG1/Em1nEn07jzxdwsnlmZ8banlrOzLdsE0IwM3WMibFDbc6gPong+vij87jHZvDn88hcmcD1yM7NkR4bwys5ZCYmmXj8CWQQUCjlefixH+N5LkHgc2J0P5lSGiWpuelXLfnYBqzvojRfQroB0g8whaKvN0Y6VyZmC4Z67FVx8ToVqpbIlXxONwsLC6xbd3JpqUZGRlhYWDrRo1lzKHArcsUyDapxPOMJm96hZPUQ1GAc4laYlSNmgQCpGt7RSp/jKY9/+MPbzkRLNBpNByMDSVAZF9bGn0rieS5EzbB/qXxkw4T8hu19tTgx20dStXGTbRokovUlb51nGdeyvop2U18BgnDwHbFNMosl1g0kmF4osmN7H3t+NhZasIXAtG2CK9ehHppAGCKMCJ73wJMszobrX+dmx2rK8ujUQVgsggAnn8PJ5xBCMDd2jDl3AaNiTo8Iu7Zuucly2YblJsJc1d5qODZ5kNHJg9giwvrujRSLOcqqhEIh/TBHs+t5nCiNsyW2senltkwLglZX5igRvNl0GLzL9HEKPslEkqU9Q6MbuRBhVMlcfpGEkWCBVgWoSskt4Ac+3fHQjSebW8QUNlErRlSGVlVPeVhEamUHKuB47gSZ+QyWYRHIuvKmKLH78I+JiAhxM1bbHmv4G8Aa7KXXi+IVPBDw8t++imv+x1uajlkYm+N3tv02MaI1hXe5Nu96Xet6+5f8h5fxT9f/Y+1YGqK9h3UNv2/YtYHfuv+3MSPNbtl//7a/ZXz3xLK9l5KSQ08/jFSSomydffXKZSacUWaLM/jSpzfSy5bkZkxhhsJAKgp+kZiK4mdyuJYiCDwcr8xAagiEoOQUyJbSlWgArU9kzs0RtxLk04soJIaoh/FbOokgCFOqLRbmMJRBci7AEAZxIhRoN3u85JoKjpdH2Rqx6I51EwQSheLAxBN0W910dfVzdP4gnnIxEDWrfNM9UX7tXWyspxACKdtPAqTdNO6Cy/rUBpRSzOSnyPmhl4BUioQZp9fuobBQf87njh1l0p0mkGUeeeKeSvUVc4uT9G/YiMpXBLRtooIAcdUWDMNAegGl+SKmbXD2FaEFrrsrSt4JGOqJt62fXK6j0DThOA62vXTpQ3ssy8J1nyFLhGZtIGhaHiYwKpOringywuJsAelL7KEkgVRhrBelwpUlsQhB2cGkLocA/u1/fZvrP/O+M9UijUbTgQRKIlTQNC6USNadfR6q4IUjPwGkDJCCQMgWr9JGA0YyZtfPgY6zjHcyqy3rtTJ+kjQqBVXroN8wMzXSF2d6scSFV25kbCpLbrqAXw4QlomaL0PMwJsvwmQGBVyx9RXMpyfJFtMoJcn5eXwC8iqPLW1sM3wInMBh3ltsqkOgAkwjzENoYeLTXgEwEAQoorTmwGtS6Ja0DcAWJouF2dr2KBHm0tM4vsuMP4tt2Jwoj7MpsiEMyhb4+EZAlAhl5dTXx0tFVuUoBMUmZXS+BMpXFdfiUKFLWomm+rzrT97NuZedy4Ef7efOL8xS9lqtr9f/5ft57B8fYfyJMebzFZd7X1JggYgRwRLhI25SX2P7jj9+Fz+6/UdkHg5dov1lJjQiRv1F9PCIUVfGzajJ/xz987bnNdK/aZC3fPCtfP+v7yJuxmsWcjsaIR7Ewk7XFPxF+vPLlvHZ3F/x0e7fRSCIE6dEuaaEC+Dq33od7/2r69ue+4E7/3Pt76/893/izr+4o2l/XMQpUCCCjYlJ0PAsxaJRRq5Zx0+/+dPatrSbJqdy/MYf/wZ3/I/vAKH1J+1nwplcR1GWZaJECCrpe5RS+EHAtgu3cXTvkZY6Cstg55U7Oe/Nu9jz2F6e/LcngLprfsEv1toLitH5o7V9WZVBCIEnPWIiVvP1UUoRFREKfgEhBTErSqAkE27oAXFocT8j1jBRK0qMGA4OOT9HLp3DFiaeAonCaHg3asKO+r9VV9QqJkbbSRcAz3cZy5wIJ6Vks7dEMSghlaLHTCGFxJMeSigc6WBg0G2lMISgO9HHYO8G3IPT4fzKll6sVLwSP6JSL1PRv62X9f2hG+1Ifz1SfSAVRof7QwlWuI5slab9jx07xiOPPPKsxx09urzXkmZtYZsGnu8jpUIuXQpVTd9Y8qHo1ZaTGUJw0aWvYvrIQaZmjgNU+iqfaCy6ug3QaDQdT3VZizKqi2IEF1zyKsxKnxJuEZCtjDECCJZ4g2aLLr1dYf8SevE0yMVOs4xrWV9DK+MngSEqruYN25SC0bkGt9uGByqWjGFuspg7tIBCYg7GcQp1RbxqqxvoXU/RzRMEASmri0U/Q9bNhy7xFf0wjL4djp6lChDCwMfHkz4RYdM91E12MYvvB0siQqlQsVJQVg6u6wEqtIgLiBMLrZsolAhQipp7jECgRPhdEQ4qSqbDXLnBDUOCbdiMeRNsu2Qbf7H780wdn+JDO29AVtxn120dYfbELDY2vvCRSiIwEIbgMz/9M/rX93P33/yQ//N332VxapEFbxELk56BHv731N9jWqE1YddbL+Bdf34tN77y9zn0UN0N+G0ffTtv/9A7ePuH3oHruryn+1dxHRfbsBlY389/v+NjbLpgE/PH5kj0JUkN1tNOveHDb+JTb/sk+x/ajx2z+eVP/DIHHjrAnnv3EE/F+cDn/xP/30f/mYUTC2y6cjMf+offZWjr8Iqen+s/9352vvwcDv7sAF7e45rfeTNbL9120ucbhsFf5v+6adu++57m4AMHuOajbyEaPbmB3a/+2Xs499W7+P4X/g9dAyne/4UP0NXfxfTRaf7ug/+byScmSAwmWHfOeobPGuEX/vu1JHuSfOzqP+Sp+8NlCnbM5v+dvJWunhT/1x++veUaj3/vUT73S58jnyswW56ny0oyvHmYt/3ONbz9v76DJ370BH/29k/jOaGF6KpffAUf/ep/rZ1/DW8hPZXmv178EXJzuXCmWAhMy+Sd//XdvOv338Wh3Qf59DWfAggt6RhYWBQp0tPTQyafJQgCunq7+Py+L9A71Mt/u/S/ML73eBjZXLpIFJP+NPiQiqfAU+G1ACUgnkpQyhXxVYApzNo7a2GilKIYlECFSrRAhIqwUJiYCFFdu173XDCFgRkz8UoeHl6l7tAYALAYFCnLMkZl6YFSAQLotlKYhoFpRhnsDVPhieqpx9P4l8SxEzGUGfZQXX1JIpFIW8E7Oldg+0h3i6NEJ2U8W+masNVqwsc//nE+/vGPP+tx7fLDatYmgnAi6+nji5UtFZdzN7RiBUGA/8hE5XWu/+ZGMsrQ4GYinkW5lOdY4RgCwR/+6x+tfiM0Gk1Ho1CUlUMiiLOuaz2DW7Zh9YeZUJbKkvJUhti6nvq5FXlzbDrPBTEb2zJwPYndJrBvp6BlfR2tjJ8k5pJgbO3WAJcdn3zRZX4yj5MuhxbepxbDnMH750E05N+u/LtxcDvHpw7WFO6vq9tPXyNOM+u2ruNr7jee0zn/4ZO/yH/45C+e1LE3/eT/WXZfJBLhX8tfb7tvZGfruo9ILMIn7/5U88bfa/56xVtfclL1ejaEELzyl1/FK3/5Vc9LeQDnvXYX5712+TRyy3HF267girdd0bRtZPsIH7tz+Q7n0/d+5qTLv+TNl3Fb+svL7r/49RfzleK/PGMZvet6+buZW5e/xhsu5V+D9r/1cvz5Y3/xnI7vFH5BvBOj4h67oX9LcwT16h8n0hg7R+D+cYI3b8EPAgI/YDHrkIw1d/HV9VZqybZOYqVrwlajHbfeuvxzqXnhYgrFXLpIV9wmW3QIJPi+ZPpEmsANkI9MQS50I/UdB2YKtXMFkOrrR5Q9NkbXM+5Mkp5On6mmaDSaDqXqmbgluYlkvAeBQE6km46xNlcywRxexJt1sC8aZvToPJu3DwDQm7SZTRexTAPRl6ArfnKu1mcCLevraGX8OdD4ADx1fLFpQFt2HKYXSnglj8DxMaMm0pfIC4ZQuyefIaJ3w+C600bFGo3mjGIZDV30ct1Dg5eaKQ2cnIuTczGjJomBJKmESazBe0KI0NulU7ubTk53cv317ZeDaF4YLPcM5coBCkEsYuK4JuPzYfaK+ECC3I9CF0WRtFELpSZFvIofSCCMDQHwnS98mzdc/4bT1g6NRrO2KZaydNPTst0fXcDa3I9hWlD0MKQkkkqSy7sM9yeI2uGYIZAwMV9kqCfWUkanoGV9nc71X+gwVNPa0aUu64poJMJA0qS8WKqvGbMMzKgJfTE4a7AprVc1UuLE3DE85YUBxpSeG9FoNA0Iga8CfBUwuXCiOTJ+tT+p5BW3rtmO0eCSFjgBlusRjUSa+q/Dk1ma6LCgLp0cYVXzwma5rBPJaCibc0WX8fkwUKQQAtM2Sb16S+imaJv4yfYy3I7YOIGHE4RxTY49dvw01F6j0bxQsEVrrKcamysR0y2D2GASK2rhq1D5nsuEsZW2DCU4a303uZK/XCbUM46W9XW0Mn6SPNNMTHXf/HSb1E0G4CuiPQkYDAMqVQV+prBI0Qtn0aWSTcGzNBqNRgay1l+U3AILuRmg0ocIYGtfPRhUmy5qca6uOFQpLM1l+gIUbBrN84kwBNvWdTMx35qxwWh0A40uP6E+5U4x481hYmBGWrM0aDSaFzdVUWyJZ3YtNyMWSikiG1OIJX3JbKbMQHcUywr7okbZv6yDruaMo02xJ0VTZLTnzmyocEfOGkRu6ePJ79zZcohAaGVco9E0IZf0CXPZKeayUxgY7HrrNRixZ5g9X6NUo9Sv5DyN5nRgCFENq/iMx0V74zgN36tHz8yPVcoxiBgRPvSPv9dyrkajeXEjMACFIYxwwr0hwGuNRt072n5SLxEx2xoQO00Z17K+jlbGT4pn/uGrlquR9SlyWad5e8FD+QFqvozzxPFnlOWNqbQ0Go2mac14AwqF+5PDAEQv3Yqxoe510yiE+/pjbbcvKayj6OSgLpoXOuFDpBrTpyhq6cyGe+NMLtSt41XZrxZLqKgZpiXotiHr1Y4p5/N42Tx9Vm8lhanPq6579eo0R6PRrBkMIei3BygGRRzpkDuaY3j72RiNgVvPHUA6PpRcIpvCDEGN8j0RtRAN+UvNRnnaYTJSy/o62k19hfTGDWxTYJsCUwiklMyVfWJ99cGvcnyCPTNhnvFnoL5O7QX4hGk0mlNm6VrWlJVq2Alytkjw04mmYw3bQKViSCkxhaj1V70xo7m8Tut2VrqGrNPaoVmTSKlYoovjB4ogkGwd7iJiNQ+bVCARvRHwJP7RBURgIJJRSEQwklFiQ32si6/DwiZldSGE4MBPD6x6uzQaTWdjYGAgKAUleiO9DPQMYHbFEMlo7cPxPORcMEH6EiVVmCJMQDxqMtAdraRGVURMQbxh6Uw1JWrHoGV9Da2MnySNM+VSKopeuI5MGALLMohGLHriNsXZEtJXqACUacIV6+uFxELL987unS3lO8pp2abRaDRL+4aoEWUkMRJ+qfQp+AouHan1PdJX+KWA7rhNNGJhWQZCCAzDoOhDNpdb5VacPAZixR+N5tRoP1I1DYEvJVOLJTYMJNg20sWmwQQqUGTuOYJIxTE2dkOhHo9BVFISVi1W/bE+BAYWFtsu27YajdFoNGsIYYSapk2EiBHB2jjS9jjfkBjreig+PIVTLCMDxdbhLkZ645iG4NhUGi+Q2FZnq3ha1tfpqF/qpptu4sorrySVSjE8PMy73/1u9u/f33RMuVzmhhtuYGBggK6uLq677jqmp6dPe90CqWqzMdW/G9c7GEJQWmwN4CaEgEsHAYieswEqeX93du9kR/cOyrIcDrZV6/pQjUajgVAhL8syZ3efzZauLeHGiEn03A3h3xcNIszW7twKvJqLW6Ob+ni6oa/ppJlyjaYDKZQ9Do03ZyEwDUHm4TGeaRglGt49Q4THSSGJRF54sR40Gs2p8ZbffisCQdyOPXPar7xXzVFKefc0tus17XY9ODqZ1emS1xAdpYzfd9993HDDDTz00EP84Ac/wPM8rrnmGgqFet7Oj3zkI3znO9/ha1/7Gvfddx8TExNce+21p71u1tKBbqOXpxAgoKc33nRI9WUSOwZq6c4i52wgcsEmgnUpnko/VT0ShEB0+CyWRqNZXSKpaNP3vekn8Ue6iJy7gch5GwFQfoDY0N1WeCfj7YW6WPbLmUenO9F0GlIqDAMMQ1Q+lR3FJZkJ7IY150v+ldVBg55z12g0bdj12vMBKPsOSin8fJsMTQDbu+t/+4q5gwsATX1UIOWyqRo7BS3r63RUALe77rqr6fttt93G8PAwu3fv5jWveQ2ZTIa///u/5ytf+Qqvf/3rAbj11lvZtWsXDz30EC9/+ctPU83UknUWzYPb6gM/ejzdeqZSmHmHwPNQDSmFYrEY53fvYrY8B4AnPZwe93RUXqPRrFFMYdJn9mGboTv6UHSQSCyGcjxwvHB4LwRMZFHd0Rale3Q8S/9AkvCwRgt5vUPrNHmtg7poziRCtL4T04tFmmetBL7nhwHbgvrBkVduw73vKCBq4wL3xCSe9Mg6OZRSuHi4ZYdIrHmiTaPRvLj57K/+BX2il7IsM1OageOzrD93F2akIbjzuiSReLPhz4pZGG1seY4bEFuSbrGT5KSW9XU62hSbyWQA6O/vB2D37t14nscb3/jG2jHnnXceW7Zs4cEHH2xbhuM4ZLPZps9zp1n5tkxRCzxgGOE+Bew4f7j1VKVQhzPYu4bDNASV4APKEjVFHMK1E6n+7tbzNRrNi5ZSoVRzbwWYdeYY3/90rR8hYmIOdcG+hbaz4Ou39DR5oSulkEqxdTjVcUp4lZpH0Qo+mhcvz6esrzi7AaFVvOzJliOtiEHi/IHa9+rrZL9mG3I+i3dwksWnDzGaHmOqPE1RFSnJEhLJgYd0ADeNRtNM4Adk3Sw+PuXK0rSjTz/K4t5DuAcmIBXBPm+4WdZ32YxcNFKR580Thm7Q3G91moTUsr5OxyrjUko+/OEP88pXvpILL7wQgKmpKSKRCL29vU3HjoyMMDU11bacm266iZ6entpn8+bNp1w3pVSYd7RmaQonyA88OdNyrDAErEvgH10ABEQslG0y9uRTtbKUUpQDh8XJ+VOum0ajeeHg+z6udFGV/wCUDHA8F2FbCCGQpTJiZy+G0Sqg9j8xGZ5DmJ5JAdtHUk3HdJpcE6fw0bx4eX5kffiOiUZtXEAyZpBKWCSiVa8SRakcEFvXAyN27Vj/yRmCR6ewtg9jXbKZBT/dVLohwmjJQ9vaTNxrNJoXNYYwSNrJlu3zwQLRl5yFEAbBo1ME+TLKFNBl0/2SDZR8VUm/GPZfXXGTVMJiYqHYNLEIEASdMwuvZX2djlXGb7jhBvbu3ctXv/rVUyrnxhtvJJPJ1D6jo6OnXLelFiUhBIEEp+C1OVoQpCJQ9BGK8IOgf9PGhvPBEx75bP6U66bRaF44SCVxcGh0K9948cVEk4lwBlAIcBXy7D7aiSjfCVMyNVJ0fOJRq+OU8Cp6tlyzEk6HrIfqenELIQwsyyaVsFFK4VVeyf5LtqAG4gQLBXDDleFCCLxyuWWwIIQgbsQZ2dY+SrJGo3nxcsk1lyy7r0nGHUyjYibRLSlM2yRqQ67kYwlIJWwMw0QIA0MIXF82DQ3aubOfKbSsr9NRa8arfPCDH+SOO+7g/vvvZ9OmTbXt69atw3Vd0ul0k3V8enqadevWtS0rGo0SjT7Pa7OWPAdV10/DBNkmOIsaDd3tMURlUl2R7OtHlXwMD/xcjrSf0UGNNRpNEwqFQOCresdimGb4h1lRxr0ANZ6FHUNtyzg6nWfHuhTJmEkiFqE7YVcL12heMDyfsn7pko/GsV91kJtLl1C+xDcU6tFpmCtW9ocH27FY27JfiANJjUZz6gTV1IiKZzX/qr2zxK7YiO/6lB0wpCA+1GxVH+mLE1kSGFr3P51JB82RhALwgx/8IN/85jf50Y9+xPbt25v2X3HFFdi2zd13313btn//fk6cOMFVV121avU0hMA0RM3FXCkoljx2XjjY/oS9cxCzEVEbEbMREQsBxBNJTNdHKUWgdIhVjUbTiinM2t9WJB7ODEdthGUhTBOiNjww3vbc3q0JAJIxC8MwKbsBZjUzRIfKZB1hVXPmaAxy2IpSioNjGSYXyxgRA6ccEBQl5lm9LcdakQjDO3e2nK/0LJhGo2lDueQQELTI5oHtZ7UcG3rf+ASlANcLCIBDE1kWck7tmKhtNvdlHSYjtayv01GW8RtuuIGvfOUrfPvb3yaVStXWgff09BCPx+np6eEDH/gAH/3oR+nv76e7u5sPfehDXHXVVacxknorQsCWoSQHxjI4XuVFkIpINMbA9i7mj+abjhWmifIbXEUNgTIF+w/tBiCQAUVZWrX6azSatYMn/fogvlRC2WarTLVCt/NGg17PljhdXV0MpKIYFd+0RNSs5R3vVFYqbDu8WZo1TPheKQ425Bq3LIueQYPMXInYZevxDs7Aol85XuGmC8TGy2yObsQJHKRQZPwsMmgNBqfRaDTpiTQGBv30kibLsD2IbUUwCkborSNEKPttg8iVG1BKEY0aJHrCSXqlYD7rUHJ8Ng11UXYD4pH6ZH6nzQNqWV+no5Txv/mbvwHg6quvbtp+66238r73vQ+Az33ucxiGwXXXXYfjOLz5zW/m5ptvPu11W+q2Zlsm6weSzKZL4UDZl8wuFpnbn24+r/I/EbfB9aEih/O5+nGmYZKii5zUa8Y1Gk0zQoES9f6naabbAGGY4Euk05zzOH0oR+zCGD3JMGBbaB038HwZZoToUETlv5Wcp9GcKl4gsU2jZeB6ZKI1OrthGEQTgnJBYcRiyH4HFjzcyTRqfCF8kg2DmIjhK5+AAKm0Mq7RaFrJ53PERAzbttlkbqjJepUr4+w+SvTy7ZCwMPsTWCNJhBAkeuIt5RSd0NNWKdXZlnEt62t0nJt6u09VEYcwP/cXv/hFFhYWKBQK3H777cuuF38+aXqgVf0hH+qNM9gbp+T6BKplMXl47jt2YHRFEH1x6AvXtOXmZ1vKjxA5rW3QaDRriwh2i8usDCpLWip9itEbQ7zr7PYFCJPFbOi2Vi3H9SUNgVc7drZcu65pVhshwmjDjhdU580xDMFIb4yX72ofAd2O2pVzBWYshrkhhRpfaDnOMkLbRzrI8KErPnha6q/RaNYuuWy+tmS1Ue4LBEiFe2wGsz9cehZknLZlAAylogz3hDEr5rNlZIfO/2lZX6ejlPG1hu97HBpLMzlXJGIaZGcLzQeIcF151UVUiHCW3DU8FqcnWsrTa8k0Gs2z8fSD90LURETr68EMw2ibZzw7W8AwYWK+wKHxNEr6xCJGKMw6VKDpCKuaM0X1HZIVQwDUXxMhBFedN1SbZK8aC/I5F+/oYhjItVRCZluXnAkRBm8VQIIYxx85tgqt0Wg0aw3bsGsTd40IIcAQSNcFwPn5RK0PajoOOHdL75KzO1O30LK+jlbGT5KmB15AyfU5NJEnUOFjbpom553bPppxI+Hsub3cVZ6Xumo0mhc2vilPSiCdd+4gZmUyUCo4MJ5rXTP+wpNrGs2KidoGttHsClmf9Go2y0gpsSIm3kwWJQOwIxUx3vxSVccPJiZFynrkpdFo2iKlpOw7TcEeVeU/Y1MflBWy4IEAO2ZSWGIhv2BrL6Cjpq81tEg4SZa6qR+spitbjoYZK+X6S3a2zvBIKTH0z6HRaBoQCDzphX839BmmbO4rVLkeOKoxittSgRzqEqKlP+sktOua5kwihMCyrFo+3qXvUJdV324aBoYwEAWJ2R3H7IlhrE8hXtsa/TjtZmopCl/2ztULOKvRaNYO894COZkLY0s02gCTUaIb+zA3pDBHkoi4jXskTaSrHqAVwLYq68zbeMp1GlrW19Ha3wrxl1mEsXHnAFTWdAoqivhPp2r7lVLs/8HdLeeZpomDe1rqqtFo1iYOLhGzNZbE6COPoBqjMv98CuUFdXtcELDryo0t50nV7IILdJxlXLuuac4crc9QxTsUgEAqhga7GOqJEfiS9EyW9PcOoQCZLSHnSqj5MvFonPirz4WtA5RxOFo6zmKQrq0H/e9fv3EV26TRaNYKA3Y/JVnmeHmU8dIEqieGefl2YledDW6AnC0i54soJSnvn2PxwAxOKdQdNg8lSRf8uiGwwxVyLevraGX8OVB9riXQn4q2PWbm6CJ4CpwAnABDCVifBAF+poD32FjLOTUXOP1zaDSaNiwVPl6+iPfEOP5MFmIGnNOLIan1O3iKiYPzLeUYAowOF2biFD4azanRfvBqCPADyXS6DEAuXWL6wBzFBQd8icqXwQ3PrpUQt4huGSAxMszwwCYAJJKkkcA0zbbX0Wg0L17OueicMM94hS3bz8fqiRHpjiKMBgkngUUHEATlgLkji8yeWKzJwIV8iUAqQNS84ToRLevraO3vJGmcYRLAYG+CrlhzkIVSyWkR5UopjE0p/IU88khrhFWNRqN5JtoFdoxFw4iqcjyDXCwhemIts+DZ+SKBHzRti9qdrwRo1zXNmaLtoFVBwQlwfUlv0kZKxehohmhvjGhPjNirtmC/blt4Pg0B3xBIP1w+0t09UCvONpaLGaPRaF7MXPN/X1P7u6urN/zDBWyzdRQgIPqqzcTWpYj2xDBMk0cfm0AA8UgE15fEoya9XdG6bOwwQ7mW9XU6Ks945xLOMNWFLMQjJlvXpVAKDk9mODKZQynoP3eI4nSO/Fg2TH8GyEwBuVislbZt3S6OTT3ddAUhhI6mrtFoWgiUxBCNa8KiDPfVXdCDhSJGroBIJWspF/vOH8aO20wslkHA5sE4527uw6xEXe/sNeMrs9x36uy/Zm0TKFWxMoXP2JNPTWFYlQwphHLbTkTxRiIw3bzUzDAMgiXlCQSu6xKJ6FSmGo2mTmwgUZPPXfG+Z5RpsXeeU8uiIoSoTMYLuuJ1tc4yjeYyOkxEallfR1vGTwrR9A8CTCN8iKSSHJ0KFfHq/sRIivj6LoQTIB+dRh1IY/R3YZ41iLFtgGg0yrlbL6W3axCj9p+plXGNRtOCABLEGYkMs2XdTs7auAvDMDA29WFuH8RIxlD7M6hHp0EqUmf3Ycft+skKRudKiErgSNevrDXX3Y1GsyxVBbzqcFIdODquCt+lisCv/m1fubn2StXc1SUNA+XQUy7v5/n4G/5oVdui0Wg6n//94S/VgjxOzR6tRFQH5QdVUQ6Vf40lE+vVf8en8rW/XS/o+HXjmhCtjJ8iJcdHNijiNYV8qAtzfQoVM1BZH9M0EYaBaZmYZw2igOGBTUSNKFEjihs4bXMLajSaFy+mMFESIlaELitJzIqHqRS3D2LGIwjTwLBMVMZDddtYw13EuuPhyUv6pEw+zH/s+hLHC+q6eAdOMq+G29r999/PO97xDjZs2IAQgm9961vPezs0axfxHF4MhUJ5svJ3ZVshTDkkpeTYsScJZEBZlrEMi6cffOr5rq5Go1njlKZKBPi40sXCwikXESMpVN5DBo39S6uCXVW6LbM++ZcpuJTdpb45nYWW9SFaGX8uNDz/Uip8X1ZSCS1zqCFQZb/28NTGxoaBuakPDMH61EYc6VCUJeQyEdo1Gs2LE6UUJVXC9R1ExALbxBzpRpgVN9nqrLghUM/UfaiwLN+XRG2DqG3WVY0OmzgXp/Dfc6FQKHDJJZfwxS9+8TS1RLPWaLQi1VObNe9fNxKp5f2tebMpcO84hMqWUTkHlXPCIEuB4vjCYQqygIdXd6/s7PGxRqM5A1SXo0kkeZnn4PgezEjFyy3notLlysfB88KUp6qSHUUIAUqRSNRjUihgLlumU43jWtbX0abY50JDEITJxSKOFyrjtiXwgmalvDBfDF+OQqvUFVDLlWIYBn1WL2kvo93UNRpNE4rQJTZpJ0OtQAH2knVgVfLhYL+YKZPsjdf7o0pUqUAZLOQderoi9e2N/3YIK539fq7nvPWtb+Wtb33rc7+Q5kVFmH0AHNdnPusyNNTP1OQEStSXqgVlH3wZKuBL5LiU9e9VZb8pMrJGo9EAUoUZmKryvdZftBNunsJTHnZFWVdScvFF6/CkYiFXojsRJR616OuOrkiergZa1tfRlvGTZOnLMNKbqG0/f0sv8Ui45ltKSXYmR+BU1mpsSjSlO6n+HZQ8UAphGhSDYmWfVsY1Gk2dap9Q8kthH+R4BDmnNhsO9Zlxa0sPSimcjEMpV66VIYALNqdAhPPJxlJJ1mHdzqnmHs1ms00fx3HOcIs0a4V2g14hwDYFjq/oSth0JWwCx8cruHgFF7/ooaRCXD7Scm5+fh6VL5Iw48SNGLZh40iHl77jpavRHI1Gs4bw8JFKETdiJMw4CTPOgfvvwXXdlmOFEIgA/JIXfso+vi9JxGwitk3Zk/QkIkQ7OI2ilvV1tDK+EgTYVv3WmabJeZt72dQfJz2axS/VreGGJ2Cp+7kvYToDBQepJB4+/WYvWy/atkoN0Gg0a4Ff+uNfod/spYyLK13wA5jOQrCkTxEKOV+qfS0tlFk4nmZdT4RLd4RBIyHUu0uO3xzUpcNShZxqupPNmzfT09NT+9x0001ntkGaNUM7d06lwFhqyW7zwthbemBdovY98H3G9z7epODbwsIWNkcePvK81Vmj0bwwMDDosup9SLXvOPHznzYf+NbNbc8PGsYFAsiXOls51bK+jnZTXwkK/CWDYaUgErEYPquPYrpM9tA8cqYACyWMVBQVBCg3zDmq4iaUPRSwWKjkHjcEx/ccW912aDSajuaOz/0bcSNUpGfzM2zs24KQEhU1K0mVQu8aYZqwUCI4OI8YSpLc2kNqIEE8HkGpZt1hOl1iuDfWcRbx54vR0VG6u7tr36sTERrNs9MYjTUkkIqyK+mKWQRSkS95JHpi5BdKTWmFVCAxUxFk1MT5wX7cYrGpnOpxESNC70jv6jVJo9GsKZZ66AS+h7t3FPOyjUTW98CUg+qpu7ArpRCGQJogUCRiNoYQOD6MzRU6ds34qfJCkvXaMn4StPPqnF4sNW0rOqEbiWEYJHpjqJQFEQsilUBLloWIRyEWwd99AoBMcYGckznt9ddoNGuTQrZAVTnwApep7DhYBv7eCbAtRMQOFXGAuAlSoWIG3YNJzMr2ktPs4hZIFfZfHWQNb+RUZ8u7u7ubPmtZQGvOHO0GsKYhiEUM+td1k+iONijiCpV1kUUfdSJH5NwNzGVmWs6vrjHv3zSwCi3QaDRrCaMqlNv0PcHZg1iBSTCWR0VMgkyZMJWTwoqYrNveR29XlHjUbhLtSilktTPrMKVcy/o6Whk/SZbm6gsaXM8DGeD5irG5IoEfMLFnApX3oSeK8YoNqGELdy6Pd2gCb+8kIhWHrhi9QxuAMKKgzgWo0WjaIRvCpK/fsANiEUTUxntyEu/QNO5MFrUzgXHlehhKQjFg4vFxPMdnfL6E6ytQ9aUztinYOtx1JppyUoTx5k53fFWNpj31WAzN26trFS3TJGrB4KZeNu8aRi6UURkHeXQBcg502QghMA2j9u42xneQYfLxVW2TRqNZCwgkMvR5U/UPCrIHjoTBW7ts5JNzKNcnWCxhOD7rdwxgRSxs08AQzZb1MMp6+HenaRla1tfRbuorQADr+5N4gcRxfQ5NZPF9n5GeCI8/dALKDY+8A6zrxXgygxjqR3kBciobzqhXU6MomPcXzlRzNBpNB7PgLzIYGagFc6sKWnNTX5jiTCkwI+A3nOTC9N5Jrnj9Dnw/YCEHO9bHiUUtEtEl3X6HSejVirCaz+c5dOhQ7fvRo0d57LHH6O/vZ8uWLc+9Apo1T/XdKpS9ZT1HXNfHqbxrbtGFxTKq6MJ8GSGM8DlMRUhs30D20P4wQnJlwl2isIXN+//X+1alPRqNZu0QKuIQIGtWclkR0COvuARRybcoDIHaOwsbu3HTDuKShiDRCkA1u7pX/uy0OUAt6+toy/hJUJshbxi0GkY4yz2XzjO1WGA26zKbddlw/jqGLl/fcK6CBycx4xEM08SMRbC29Nf294geFrzFVWqJRqNZi2TdHBvsdbXv1pYBTNvCMAyEYaAenkEWvNr+gUtG2HzFJmYyDjMZh7lsmYVMuMZVStUSwK2THHNONcLqyfLwww9z2WWXcdlllwHw0Y9+lMsuu4xPfOITp6NZmjVEImrRLvuYlIq8E9AbD5eAiEg4saWm8i25wwcv2FkbPEtUbVAthODAQwdOX+U1Gs3apKHPaewzzr3mDRiNUdGFgFIAWRcUZDJ5TAG5ok+22Bp5vSWDSoegZX0dbRk/KRRCGE15eU3DQEqPI9MlwKjN1CiliNkmA5eOkD6Rxf3xEbCM2lSOUgqV9aAvDvNFJrwJokYEgcBrMm1pNBoNxIwYAAdKh7mYIRhKgR+gEhGEEbpsKamQT05hv+UcejamiEfD3KNVoeUHiuNzRUYGEjieTyzSuV3/as2WX3311Xp5kOZZUUrheQG+VBTKPoIwqUGmEnfBsA3UcBeqWIRMczTj/u1bmT98tKkspRR3fvG7XP2e161+YzQaTeei2ucWt2MxlkZiFRtSYScTKBZ+Ps22d/djmgIvUCzkHRIRC6Vg27pkx1nEq2hZX0dbxldC5YXZP5rB82XTj1x9gQzDCP+e9Vq8QEV3FEMY7Dn8UO14hcIUnZsPUKPRrD4xK9b0/YlDD4WddsxqdqMVYHTHw7WqtlkRcvUDlFK4XsC+0QyWqbt9jeaZaH53IF1wKZTDyfJcweXo8TRu2ccpesQvXoeIqCZFvFYORssgsBgUWZzQy9I0Gk0rgWx2sVlOiVSTeYQCXJ/IhhSWadT6LSkhX/YpOD5zmYb0Zp2tj76o0aOyk2JpjlHIFl0GeqJ0x5sV6GebfakJealqUZBrbhf6RdFoNI0sTScuBHgBNAjeyg7UTCWVUjVYy5K+qCdhMdwTxbbM5+zmtZqsLKDLCzWsi+ZMY5rNz9XsXD1lmRACBEQ39i89DYDEyCBlWcYPfLzAoyzLmIbJ0Nah01pnjUaz9jAx8PBqfYYbuJRlGQDVTmYLAVJhdkdZToFwfVlfhtZhIlLL+jpaGT9JGge2gVTkyz4R2+Ksjb3s2tpbj3pIGGm9XCrj3X9s2XKEEFhGs6uoWjry1mg0L2oC1TxLLqoeN0vXfRO6sHn3HCM/X8QP6lGclVJcuK2XLeu6se3OdU+vcqrpTjSalbJcOrPGoIeBbHdQ+4cvGo8D4OHhNyxD+09f+M+nVlGNRvOCwzDqKpmHR7A0EMUyCCGYmMqFHVgtjVn474b+RMfKRi3r63T+yKxDWJoqoFR0KHh1oZyMKfIl8ANJoVCmNOuEAV1sEF59vTiAdHwKuTyGBEtZeISBl2SHr2nQaDSrjFK1KOpRESViRnGKRSK2gdETR6kwaqpAQDJcJ+4VPNIzBVJDCWzDIBkzyJWCMOALsL4/0dGWcUOIFQWc6dQgNZo1SoM4tiwD3PD96e2OMlWuK9ZCCPypXOvpSjH15NNti/ZLOj6MRqNpRiBq8r4RpVR7+aZUbSJwYaFMIm4z0JeoFCYYTNlYpmgbhLoT0LK+jraMnySNVigD6O9NNO0f7Olm81AXC5M5SnNOPZVAMgpRUDJcW67yZfLjE4weeAwDA8u0iBkxDGXQcW+KRqM5swiwsEiYcSzTRAY+R55+hPJCFpUuo1w/7GtSNqLBOucVPBbHs2wd6WK4r55TfOla8k5Ez5ZrzjS+H9SksZTQk4yQjIVpAbesTyKr8lwpnNkMQd5rLUQIRiLDWIbdtNmTPoGvlXGNRtNM/9aBFjUgYkZpm9qhW4AhiL9ic21TNusw2BNjuCfKpoE4fd1xCo5Ph+riWtY3oJXxlSCgryvastkQYNkWkWSESDICSiEAIx7F7I9j9ccxN/cydrB1tjxiRmppDDQajaZKxLRbth0/+DjG9l6skS6MniiGWclKqhSRrgiRrgh21G5ZWaUU+EuCTnZat6MFtOZMIpWi7NXXWSoUKOjtiuIFEqUMVBAgA4kMJGZPEuvSkTBrilXJumIZYAlMy+aCs67krPW7WBcdqcWAOPLokTPWPo1G05nMjs3iKZ8hY4iElWLHul2cv/2KsE+xwz4FS4R/J+PYV6xHSRVmUwkkmzf2kC16ZIselmURBAopWSLjO0dQallfRyvjzyNCCCw7DMrmzeQhvnRNOKg2OQCrlqoXYlACjUZz6iy1ZiulEKqNQ5uAIB9GT40l7Np5lmlgmQYRy8CyjJbyNBpNiAwkUqomd1FFqKQn4xaBUnR1RfFLPn7JJ3AChGVivXxjeIZp4Hke7iMnCIplZMmhK9FLSiv/DwAAa5lJREFUzi9gYyGRPPr9R89U8zQaTYfie37Y75iK/kgfcSuOXyzj/ew4ztFZFKEmqhREX7IJFAROgF/2QQVEImH2hoFUDF8q3CD8NGvjHTb7rgG0Mr5igiDANMAyRc2DJJCKRG+Mrv4Y3uF0yzMvAGGbLWtCqlaqdmtFNBrNi5nmeBO1rbUJvCUocJ6eo6svRrQrQiAVpiEq5ysCqTo+NoWOsKo5UwgR/i+QrcFUDcMgHrEQQnDO2YNsPmegeX9PDEYSuJ5H8PMT4AS1FKdyIU/Wy5InjMS++7sPr0ZzNBrNGkOhGHMmiBHBwMCsZF1SE1nch4+jFBgXNWdjGNjQxYZtA5iVAHBiSfrSjnVT17K+hlbGV4BSsH88hxAGIDBNA9MQHJrMEUiFEpXbarfmDZd5h80bdrVsdwKHS9946emtuEajWVN0r++mHDgt27dtvgBoI1xNAb5CGQZ+oJiYLzatExdCMJcJU6V0nGSuoF3XNGcSs836zDD1aBhEyfGC2ju1aWc9pZlSEtVtoh4da/I8eXL8MZ5OP0XEtImLMLq61JlTNBrNEhQKE5OEGedo6ShPjj9KtpSp73d9SJihm3oDiYZls6pNtoeq8tppIlLL+jpaGX8uVJ7xQKqWh8IwBH3JSO3Avtdvg6gJifp6T2UK3CfGibmK9fFNAHgqTHlimiZ779mzem3RaDQdT24qh2Wa+Pj4yidixdjStwPLCXD2TNCiUXdH6Hnlptr2vu4IdREc/jubKTM2V1itJjx3hAgjxD/HzwtSQmtWHSEEEeuZn6WyE6BUw/IRpXD2zcBD001pB/eOPUrjOyoMiIs4lqkT2Wg0mlaiRqTp+4n5w/i+X+9rZkrI+0eRbhgE0oxQk4GuL5vykQugLxmhmjGt4ySklvU1tDJ+UrR3K1/KUE99dsqqrNcUyQgMJqA/TvmnxzCSMUQqTjKZZMfgOWzrPQsAAwPp69lyjUZTRykZZl0QJtt6z2Jz31ailg2JKMKVOLvHoceGvihiKImwLCK98dr5yUirdw5AtuB0qmFcz5ZrzjjJeHOA1qrMd/0wvZllGZXtIP0Ab74Ae+bDoULUarCMt7FSVQK9ajQaTSNRIm015rn8dF3vqPQt7vcPExRc/GKoN/RWUpv6gSSoZHtIxiwss3MFo5b1dbQyfpKEszH170pRj7Za+bvlARmMgSUQtoFz3xHM2P/f3pnH21VVh/+7z3jne988Zw4ZCIQhJCAEUAKoqGVwoE7gQItCf1rUKlaFWi0KVWmpCtUKFmxR0VrqhIBMKpOMIZBABpKX4c3Dfe/d8Zyzf3+cO777EkISkvfC/vIJyT33nH322ffsvfZae621bUTARI8E0JvjAATMIPV6HRYmQv0cCoWiAg0dTQrqjDosw/Z3Z2iKoUcCiICJZhtkH9qGiAcgZmEsrKsap3yloDKBi0QISWt9qPZm04R9sZSXLOYKxX5QlOme59XsZZvNufSNZKrfMyFxh9JUep2bXY1+Arg95Gb46xs/diCrrVAoDgd2owLk837iZ2EXjHhCQMbFm8ghk2nAD68pysHewRR5x8PQJ8nFaSYilawvo7S/vULgurIkqA1dIxIqJlYqn+WHavgH3LyHaAgj5tfjtYRqXiKhawxr47zY/wIj7igjThKHKfYqVSgUr1tc4TLupRjMD/HSwHqGtYlScpbSWKIJvPog5rw69FgAN+/hS11ZZTQs0tEQIRaq3ZpRoVCA63q4Fcq1JgQj4xn6k36uhXLCVXByHvSMwY4xf2/TwhzRXtRGOiSZcvYrBHfd9JvX9iEUCsWMI+vV7rYEkM9lyVsC68h2f2uzIjuTyGS2Js+FB/SNpNGFYDpvY6ooo5TxvUTTqiMvuxrihALl7z3PI5V18BV3j6FNg8hkBjmeRQ6naiw5Ukosq1xAyAiy6oITX/PnUCgUM4dT33saIb3sdm5adpVwLRr45OA43ngWZyTNWM84ruMCgomMgy+BfaEcCgjCgep9y6ebfBb78Ueh2F+m6g9dTdGqz67rYeqQHMsSWT0HbyKLCJmImO0nV9IFmm0S0gNUv5kCU+h0P9f9Wj6CQqGYoZhUhrAITAw0TRA6ehbC0H1jfECHiIkesAgf204mk2dkIl81NwhaOkKb5ivj+/HncEMp43tB6fWu0MaFgM6GGJ7n4TgO2VweKaGtLsDQc70wkIa0AxN5KG5NULSoF/5OJoeq7vP4/zx+EJ5GoVDMFB760YNVn8cKY8bksQRNxx1I4w6myW8dIfnyCG11ASQwkcnjug5SSjobYkBtSM0UCVgPGcp1TXHokDWeJEBpe8Bif3OlpKd3wt9mSNcIHNFYsHkJtIiNiNrEFnaBhKBmE9KDBLUAQc1m3EkRa4wd3MdSKBQzAg9ZNV4YmkHTskVomubrIqKwuZcDgSObARgZzZJK+7uuFMcp09AKnnHTd2VcyfoyShnfT0bGs4ylHTJ5WRbWYxXu5q6LNpZGW1Rffd1QL2Ojg1XHptqSQKFQvH7xZHVSx+TIAKPDfVXHtEX1aOMZcJzSMWdgojQe5R1JMuUwMl67Rdp0RCV1URw6/E2AJsd7e1IStHQCpk4oYOA4Ho2N5bwLWsCsDkMr/Lt9wSIolCeRJPPjuLh86r8+fdCeSKFQzBzG3HEybhaJ9BVzEaRu3hyAKiVUSokW8cedeMzGti0Clk7Q1glaRiFVTK1OsYdUFgcdJevLqJSee0Uh9ktWfISCW7pP3nHp3p5EAuGjmvGyLqn7tpQSu+iRIN7yFpy7X2RgtJehTLUiDiDFNOolCoXikCPxFepKIbxz+yb0pEMwEMY88wh0y4QxFzmWAg2sY9uwmkJs2TZKJGzS1BBGK8SUTaTyRMJ2jUCeYmvlQ8a+uqFNo0dQzFCE3+OmOA6m6Xu4eZ5kcCyLBtTXBxkaSpN7eWTK8qxYlKgRRUqP8VyKfCEvzM4Xd3LEykWv0VMoFIqZzIQ7Qdxo8416FHPETDpJCCjkjzFMjWzOYTydpi4aBqC1Lli7ijzNFFkl68uolfG9QEz+R+HvpzYN4kpwXZfuHcmSCBdCkNkxWpVhFcA0TfTjumgINRK3E1XfZd1szSqYQqFQTHgpwF+zMzSTruhsgmYQ49h2DKs6/hsP3HS2lORtfCJP3+A4juPgSnjmZd/NfToJ5Fr21VQ+rR9KMUOYauVICIFe+jc4LuRcSOc8EOBsHa3ZYsXJ5uhd+zyOdHCkS9AKUGckAPiPT33/oDyLQqGYWZjotNttAIXVcY+tdz3EZPkmgNSfd6DpkMp65F2Ih8vJon03dVnjpr6nXR4OPkrWF1HK+F4xdYyCAFxPkvdqBbi3ZWTKkozmCEIXtMRaOaJtKe12K212i3+Pw/AFUygU+05x3GmzW2izW5jXMJ+g5Sd001viU17jbh2t+pzJeDhS4Lj+IKVrxW1QCvd4jequUMw4RLlfVCKlxN3NJYalV1u3CpOB4fWbkJ5XKLaQQLGQjDFd2I5IoVAoKmmymoBCqEtBOsu8M+W5ztZR7KBV+lyphriexC1uC1HxxeEYb304oJTxfUHCWDq/RwuTiE+9dZB0PbRw0P9j25jhMAKBi4su9CmvUSgUr08CEX/HBYHAjIT9cSPq/yE/tXogEoGqz1qFD3pRIZ/OqAyrikPJVCEb4xmnNmliASHBWDPbV8i1wh8hcLPV2xQVV6w0BJqtpl4KhaKW3SnLuXyuWtA1BDBWz6o6Z3vfWGk1fMdQCgnkHW9yhO20Qcn6MipmfB/RBVimTjrnIoQgFDJJpfx4MCkl4RUdjP96Y9U1EonzYj8Auwa7GUj2lL4TCILRIAqFQlFk5dtX8dB/P8i2zA7IAAPQVj+LhngzTvcw1sImJoum8FGtVZ/j8fL2SpP3I52O7GuCFmXwVxwIdF2HinXwYow4gOt5PLdlhOTQBM54vrQKLgwdY81snHu2lrpjqK2RdO8gEokobC0okWhoyMkxbAqF4nWPhUXey2PpVu13llVKX4UA84R20ARD20ZBgGbp5OpsQgGTpkQQKWHnUJqOhnKiyekmI5WsL6OU8X3AlZJUzmNhR5yRsSzbBiaorw+h6xnGx7O4WZfs1iF/v6CiGUeCs20ETWhkDI+BZA8mOiDI42AIg4mxCc7XzsXWbZacsYQd63YwNjiGbmrMPnoOLz37Usm9TTd13vuF95FoSTDcN8SdX7uTeFOM1R88jf/91i/ITWRBCGYtmcWxbzmOd33p3XxiyeX07fCNAQiINcUIhoOEE2E+edsV3Hvj7xjcMcz5X7iAn1x1Oxsf34jrOQz3jQB+zHt9cz2jPf5nITSyThYHB01oJbPbslOPon1+O8e8+Vi+ceF1eHhoaLzv6x/g/M+cP2WbDuwc4NKuvyolq5p73FyyE1lAMNDd7/9bwGd/cSVuzuXhn/yJecfN49zPnldVTiqZ4rbP3kpqNMXJ7zuFE845oeZeUkpG+0fRDZ1ofbTme8W+c92F17Hu92uJJCL8w33/SENHQ9X3/3H593nhwed500fOYMEbFnL1G7+Ik3OItyRK73b74nY2Pb6pdM2/7/g+DW3V5RR58PYH+Jf3Xg+AHbK5YcO/cd8P7ueB/76P7hfKe/l6eOjohMJBNKmRz+YJRIOkU2myOX+ibRkWSEl9VwMfvPZi/vvzP6KuJcF7vv5evvmefyabyhJriTPWn2R8aBxNCurbG/h///n/ePGRl/j9LffSu6kXgHBjmGPedCwvP/0ynuvy7i+/h/xEjmw2x02fvBHP8SfjnUtmcdl3P86Pv3A7PZt78FwP0zYZ2TlCxs34zyV8LxsDHYlk19A2ovVNBNBwd42jt0ZKYwzAxLM9WLMS1M+KEwrbpcRTs5pD1EWC/mmVq3vTTLCppC6KQ42u66UJn64LGiIWT23sI5n2GBtK+Yp4BZqu+ep14RqJRyTWQLa1hbFdPfj5XyWj+SS60HnHZefyl7H3kB5LF1bL/ZXyUCLEF393FXVNdTTNbmJiZIKf/dMdbH5qE33b+vDyHvNXLOCTt/0t5uR8EVPwo8/fxkP/+SDL3nQUl//n3wCQy+T41Q2/5KHbH6RnUw+RRIQPf+sjnHjeSXss64lfPUHfpl7e8JcnE28qh8h856++zcZHX+KYs4/lg9detHcNrFDsB9l0lrX3PIuTczjy9GVEG8rzuD/95E/c84O70W2N5jnNnPvp82nqaqopI5/L8/enfZ6Xn9mC67g0zmrk3E+dx1s+9lYAMqkMf/7F42i6zsrzVmJYr6wuffdj3+F3/34XnudhhwPEm2KcdP4b+PA3PsL42Dj/+clbeOSXjzDWP1YwypUTRp596dmgwaibpEHUVyVfi8/pwhvJIOoDCA2002YhdK28ii7xk0aPZNllZegfzXBkV4zZbXWFciidN51Qsr6MkNMrmv81J5lMEo/HGR0dJRbbu70+U3kXIeCcn59Ff7qPhkATt575y8K3ki09SZKpPEIIdm3oZ3TLCHIiA32Z0luTf7anqiM4+RwvP/+U76IuXSQCA42cl0eKwpZEMl+6JONlpqxbWA9Xfc55uZpz6vUEeRxyXo68lyePH3+iFyb3jWYD/c4ABjq6VsgYW/FaSDyCIkCOSRMQNGzNRiAKSWocJKALrRTrIiREiCA1iabpdK3s4nMP/n2pjIf/80/81ydvIzk2SspLF1YPatHQ/MKkbwQoEmuO8f1dPwBg23Pb+OyxnwEJNhYBI4BuaHQe2cUpH1rNrONnI2zBV976j/Tv7C8XLsEwdf6j52Zi9VPH4b5eSQ6NcnHTReCB0ASf+9mVPPmTJ8iOZzn3H88jGA7x0gMbuO+7v2f7um6khIyTIUsOieSrj1/D/GPnI6XkvYELcZ0K12oJUnhV71olAt9lK6pHCQdDvPnTb+WcL7699P33L7qRP//4CTzPxcIiKZN4xVUoJK700BDYmu0bi4CMm8FhUvyVBBeXyrwNQvifHM/BxaNJbyTpjpGV2ZLwDBMiqAXxNA9d6Aw5w5PqLzC16gnzhDsxxXP6dSw+sykK2yRJ/3oXD4HEEAYSSdeio7ACFV40poa5tLn8Oawj2uJ0Hd9OKBEEJOGAwYL2BABNcd+N/Zyfn0lfqo/mYDP/d97vCJl7HyazL+Po3pb5wtYeovtQ5lgyyZLZrQe0ToqZy768o2nHLU1wS/0j1MxP3vprBpNZnt08SH/POPniNoGlybA/KmTuehE54H/n5V3k0AQbX17L+PhQ1X0iepgJJ0XUjJbGq4yTISOzBLUACLCFhSMdPCQZL4MjXTQ0XOmiazpxPVaasJ/4jhPZ9PAmkn2jpKSf8DHj5TAxiBjh0jzjjEvX8OcHHmPDsxvL85HCWHfRP13MireewBM/epTlFxzHnJVzAT9B7aUdf834wFip/u+/7oOc87fn8P7YX5KdyBLQqkNjEPD2z76Dd//jhXv5a00fbvncH5kYyRJO2Fz8tZMPdXUOGDP5ufLZPD+7+qf86hu/rJpHW8KCevjyA1+lY1EHF8c+yNj4GHnpz1WFEMSa4vzrszcgNMEdH7sdK2Tz1q++nf+37HLSY+mqsBOJ5JTzTqEl3szDP34YzRNkvRxpkUF3NTRNQ0OjoaWeNZefxc+/8jOcnD+fSObGyJPHwiRD9TailrAwhIEnPSzNJO1liBux0rzE81xSbhpX1IaeHbnoJKygjVYXAc2foxindWF2JWobSoNQIsAxRzbSEAnRkgihaaJqLPvleb8jaChZP91QyvheMJF30TXBW+5Yw0Cmf5Iy7gurjbuSZHMuwzuS9D7X5ydu2ZoEIL99BIbKyrTneSQ3bcUrJGWQUpYUBCkl4+4EWdfvzDmZp8VqYmumvMpXyWy7iwGnLOinUsYNYTAvOgensA+xJz00oaEVkso40h8AdqV7WBQ7opRsZiQ3zM5sLxKJjlZ2v9NDxAMJXMch5aRKk5eIHiZqRBnNjzKcH6HFrlAQJORkzt8bUQhaG9vIJX3FZiw7RlbkcDyHgfzgbpWz9nAHvamemuMJI06z3Ui/NsT42Bh1Vh3epHQ7GhqWMNmV6yXjZSd9J9CEhic9/jvzE98dSEEul+MvA+8uCQxbswlqwaqYprAIkSePN8nt0tZsBjNDaGGdTtFOd2o76SkMSu3hTrrHt055f00Imq0mNKERwCZs+ZPKhiMa2bRuM67nIITAEmaV31JPtpdGs4GQHqQ/P1COl5KSmBXDMgMMpQdJ5kcLx/2Vc4Fglt1JxIoghMDzPDaMvUR70Hf7dqVLQLdxpVcwChUVd8H29E6yXu0+3pZWfpfqzATbMzumfNbZgS56c/3+swAB3Sash0v3MDDK7S4E8SPmFtxpC201K45e5yvoImpDS5g5J3VhBX3FfnFnHLtg2W+M+Yr/2/7nrJKAvvPc3xGeJsr4+v0Q0IsPMwGt2Hf25R3NuOVxrHICe8c5v+Hep3cykcmTGs74yvikpG0SyPz3c1XlSVfi9iXZvvEFBjJ9FV9A3PQNv0V5C5DMj2Fpfp+NGTE86RISId9rp0AqnyKmR/GEhyMcNMr91sMlpIXwpGTMGycc8J/bkJDKVRsCXddlU+blQvUlnYF2Ano5103d7AbMvMGGl18iVdjRoZLGunp6hnppMBuYcCeqnqOILnTMoMX3Rv9jd00+7ZjJSuuemInP9dy9z/HPb/k6UsqaOQaUDdmB1gDpwQzj6fEp39UT37iKoccGSp+llHSndpIXvtIeIUx7uLXmuqAI4tog8hKBhpASV7rkZbVB31+wCpLy0mhopTmTRLJu/AXA7wthzXcZtzULTdNL/UUIgeM6IGDcHS+Ve/SSU9ACOsbkRaKGAMG3LKxtMAFWzCJRF+C4eTE6WxqntTKuZH0Z5aa+Fwio2utXE6LSKxQhBG11QboHUkRbI/Su60NoGlLD395solpBnti+q6SIF9HRC6tzvlJbVKp1dCxt9+5obkGJkEiCBMlRq4wLIQiH4/6A5nmMj49UfW8IHUe6tAVb0TQNURdBeJIGIjTILsBX4F/Y8RSd0VnErBiiPowwdDzXpXvz8wCMuxPE9CgJM4GlWVihEIGYP4g42SwMD5HzcsSNOLlkFgIGWihAbFQHU4dYgCZvDrppoQmddHqcDVufKtVTem7pWSspKkGNRjOdC44g7+QY6NsBTrmNPTyyMk/eq81KWSxPExp/d8Knuf6Zf91te7+euGzBpSWhAhDUanMaZGXO91ioRAhEwGRBfDG51AQIwby2xaWyBsf72TniG5e0SZO3I+euwLRtHMdBei6GZiKTafA8RF0EOTrB4IsDhPUQY3IMS7OINjWjGf5QlpkYpzUJlmaieVrVmzJ7wTK/X+ZdQsMhsm4zm0ZeYnHHcgzNKNcdkKZADIzTGWzHw8MQOkYhwaLwl5IIBMJYlo0QAiPXN6UyHhIhUjJFRIT3uFuCpZnEjATZwkSi0uPFmDxMS8nYlm4SC+aUD03koC4IlgBDw24KYdh+fWe3hDH08u9YkyBGHp5uXwrFgSKXzyFERXRH8UPF396gr+yWMiAj/RS5jkdHx3zac7PpGewmn8/T0NhKwArhOHn6BrbjFeRSwk4wq20hrusgsi7J9AimVxh3ihnZzRCj7hhBzS4p4sXvNHQc6Ye91cUaJz3EBIFIHMMuK9yz+ly2ZbpJWPU0tHQAguxYEiebZXjrICbmlOMawNBokoSRKLvmV8yRpJTo6ET1CFpe4xOxy/nm8L9UGRAVij3x3G+e4/sX3EjCiON6LqNesuYcf3FHY6hnGOHtXooNPtpfejfNYAjdNJkXCrJhcD0Ac5sXYpa8zSTjQwOEQjE0rdDDTP9eMpUjJ/M1slygkZVZhBRoulaK7RZScGRkCa4Jfal+FrQvAeDlHetL/aWtdR6W6ffJbDZNT9/LdLYvQNcMRNaFwBSLQ4OZUi6KSjRTQ7M0ci48uy1Ne7NEU9J9RqCU8VdB5VZA8YjFyHgOkKSzTsGylWfr5iEIG5ByYFYcdiUhFoChNBQyGTvp7KRyRUmzLwrVosWsNdSB8Ha3qYp/vikM7FiUOhFndGi05px4rBxvq2kagUCITCZVvjeU7m/MbUYIgTs4XlI6wLfqLek4Fi3rIJpjaIXMC5quM+eIoxka6qWxvat0n/yWHQTjidJnKxhEaI0Es3nMzno0F9D8mBdZF8bL5BASdNMu1Slsxjlu0Sms715HOjUCUtIQamQgVeFiDoS0AEYshFkX9/eDTdh0zT4egOSOXYxu2+Y/WySElvPd/KrasGKwGtg2gMIn2V8t/KbK8mlEQjgT/iS08cilBONR3/18fBwyoLthvPFM6XopJQ2RJjK5CfK5HBEjAkAoGGPxrKPB8leAdcvy+0DOgbY6NE3zO2AkCJ5E18HZvItwXRxNL1uYA+EIeJJQVwsAs712dm3eQPusI8r11zS8ljiBviSL24/B0GuHQaMhCk1x5NOjUz67YVhYVnlSG4vUMzFcvfKkIWiKtzDkjaKNT701SWXb1kXq2TU6UXVsd21fMuZJCUED0RyCoI4wDWgIkk3l2fJcHwuXNyEQZHIO4aAJhURS03l7E5XURTHd2DFQsRWZDWQBh5J27uUdcndtqbpGIPCGJ/wxDD/JW1vzbDz8kC0AXTfobF/Atu2+UlCKUzcMPKERI0Em5a+UmfUxAu2NIAQxKZGeZPz58j2LfdrDQwvX7uYSidZBIc68OBY3Nncy2DfCwjlH+8cjAQItxfmCZGj9i1hWgHSuNrxm7vylhOvK5255/hkyqTEs3aIt1IFu6GhCByRj6VGubPsM1/Z985WaWqFg7S+f5T/e8++EAhEsw0YiCWSCWFaA7qTvSdc2ZxGJFn81O5/OsGXdU7h5t2phq0hs7mysSDmRmZfOIRyPJdEQgwO7MIPBinmgIBJJ1NRJCAGmQGRrBY3dXE+gpb7UgaWUjL+wGVwwzQABQ2dBR2Oh9PL17W3zMSu8Xmw7yOzOxdWFj6ZxDB0jVr0Ykl3bS6AiWaswBNKUe/bsnGZ+0ErWl1HK+F5RTGFYQIBRmZVYCDzXoy4SorEuza7BDMQMyOTB0zBbY9Aaw+0fx+sZRxg60i0PFlUxK5PiVyLxBKmhAeYFZ7M5Xe3O20A9AHVGgpYFSxnbtotWu4WebG/pnHA8wfwTT/Jj0F/YCXkXw7CAsivP3kQqSEDXdGRELynipcfXNBrqWgpN4Qv5YMF1pNJSblgWuWzej/+etLOLFrCQU23VZBksnr+cl59/loAZoq6rk86uExhLjRCMx+l55nnqhw3MujhaRwLNlVU/V7yrHTsWYeCFDQQbEkSSg4zkR2lo6WL+ouWluj3x0K8BeMenz33Ftni98MaLz+Cem34HwPGr34IQGlJKdm1YT2ZkBIBAQ4JUJkPb8cegm2ZZyYvFIOZPDOXGsvFJCIEEOtsWoNWFcTb20aDXM3vuMn8D7MmYuq+IV6IJ9KJ7V+G7yvcsEI2WjmmaTnvHwhrlUwiBDBnoUp/cu/3vdR1so+SJMVmBNU2zdJ65uI1Z5iyyT0uGerb7xxG0B9rQLJO5nUexfe0zSCT11DFEdWz5gtBcf8UrHIFkeflt8kpT1TMU3deXNCOK7uUTLrIzhIj4ieia26MkIiG/f1d4OKSyDuGAOe0EcxmV1kUxvehqCbOlz1dIDaGjBW2klKR6xpDD4zAhEcc2w5YRGPG90yQSb9RX4gVAYezThVYtP4UgGq0nZ7g0z5mLGMqB46HrOtrcOEbzHFKPbiTQ0VRVFhpEl81j7LnNVXXdkwdO8X6Vf89t8Sf/Imz7sr2ARFC/eBHhnUNs2PVsVRmdcxYTXTLH9zSSHl7POHOXHsMLf36IrugshKYVvvNH12goQXJsmGfufJqhviEGtvYz57i5rDj3hGltGFQcHNb9/jluufxm8tkcp3/0DB665j6iAT+krDg/jQbj5PN5GoPNiIYQdbM7ESETYeroRDii9TTW3n0XtrTJeTl/u2BNZ8mc40uKeMmDJGghxzJEgjHMhP6KfaaEYTApHBwjFi4p4iV1XggiS+aRmRjHTObQWhLQ7xvVRFecltaj6Hv6+ZIiXinnK8spMTwBk5RxvSFAftD3PAy0RNBtX53zPI+A6cv7YihqJdNL7CtZX0Qp46+C4jstC/Gifv8RWLpkaKzgZtYUZdfmEci6sHkUcmUFU2+KIF2PiNFF8tlytmiEwJHl5GhJZwxNM1g07xgAMmOjkId5oTlk3VyV63BYCxKsSyAQhDtayI+PM0+fQ2zlEnTDwDDKP7G5uI382u1I6RWeQ1bFeQWa6hGzE+gtYdzfvlj17KVX366Ozy2xvA0RMGBt35TCtXgfy7LAkyUlqvgd1A4SpbpJiAQixEIJRF0Qc1499eMRcGDuKatwAXfbsO8e5ExW6AWBeIyON5yAEQ2QHk8SzjfQsWhp6QxN01hx6jmsf/5B3v337659ttcpl373Y9z/w/s4ZuVZpd9CCEH74iXsXLsWYRs0HrkAb/5syHllgaYJsHVwJJrQcevCvjApIAARNNFnxXA29dEcaPZ3HtCnWH2fbDot/tuTRCKR3da9NOFc0gipPGwcqvzSr2nAQqSn9jrRlrcgR1KYsQjZZBJP+knain3F8zzfPX1+Exj+u7zwmBNw3eNwRsdJPrcZBITbWxBC0NjQwcDgTkKBEGHCvgurlNiahUCg6QZ2KMyS+cezbeeLJDPjxApeA05ht4VKIkfOQZ/XUFbEi2wfg0QALJ1Es3/9WNqhNVHOvJrOuVhG2YV/eglnZS1XHDr87j2pR0gIWpavNIdMBpL+bDzdN44c9RVxAF3TkPPqcTM5xPNDfjGTDd27eUkbFs3DmttYTj7ZM4a7eRAtEUbYOpGls/w5RVVR1V50JRmr166K7/55JXbAfzahaVWGyWIonq7rLOpYzqAxgt1YR8vihf6YWqqIht4ew9uVJFrXhKBsbKhUMsKhGD9+74+wdAvXdbkz+78c85Zj+dSdn9nr+ioOPx7/xaP867v+BRubrlAHz3z9z7iuixksJDWtDH3QdSJ6hEBXFyJsIQytJM+NoM2x5/8FY339dP/pSerCDdRHm9AaolN6mUnLgJyDaVklr9VXxKuNWw+2FVe8qxFCEFnaiTeUwZ1Ig6FhnTDLz3NDPYm5nWQf2/qqBbB2VBPC0iHpAA5ETDK94wQ7fbd64XoYhs2JSxqn9ILzvOkj8ZWsL6OU8b1C1MhUz5P0D6cZGq82kzmOA5mC0MzUuqYas+vQFzRiLm4mtXYbuB7BJZ3kd43i9I9jRcO0GiZeX9lFuGH5YlK9A2SHRonEwsi+cbyQjpaTCMcjuHwORC3suXW0nLkA6Xp4L/Qj3OoByJ8bSOzzjybSHAMkma39jN7xZyJHzSN66hGIjItwCrFuk8edkIneHEYOZcodPATWqnnlAe4NXTi7knjJFLrj1Sj8RAKv2JPEgjpEUwT3xX4YSIOpUR9tRNSHsI5pR5gG0jKQhkCYOob0Y3w1D7zxHCTLcfPFkD494q9kdK46DmcoVWsJFYKlp6/h4Z8/y4nnHcXj33uU5372LGbI5ORPrGbe6Qv2WOeZzq3n38yW3/srLNGOGH/zzN+y+YmdnPrud5PcWuuq3Xb0URj1/qqrFjDxcjlfGgUN9DlxRGGV2xvOoDcGMNujIATu9hHyD27BPKELPRpAnjofHn4ZCpZcGTTQWyLIZBY5mAJ9D+9KxIb8FO+YJqAjgjmnvvxediXI/WkzZMueIHrQwAtafghJJaaGrglkS4z6C09k9DfPkNs+SN1FqzESvoU935sk/6sXELZZ1S66riMaI7RcfnZJOjvdowQbQ9T9MQ1Rm3xER9+VIu9kkHhowiA+uwsKniGz2o9AhCwcEzLDo5jNMazWOBNPbQFDJ7JqAWZ9FDFWmx/Cf1gg65LP58nkfGV9S68DpEiETBbPqpvWq1HKVq44lNQaBP1366g5CdZuHvQnkJZOZFaC5HAGrdWEnIs3nEEAesDCnRNBbE+hNYTxBipDTwr/mzSfMNvrqmSS3hrF7U2iz45BxMIbz9co40WKsaOe9DCLRruQWa0wAw4SA6qUdyEEejSMTE09lgjAOKkTuzFGeCANll6jkJSU94YQXZ0ryd+/cUoZLwQE53XgbRtANwwacvU8+5tn+Pzyz/JPz3x9yvsrDm/GBsb4zl9+G13odAba/b6WCKIPjk95vqZp6JEgmm1WKeIlHEm0o5XFHz8PLRrEzTrw4NbauSyU3+PmGOwarfpKmgbknVqZ0holtM0j5ZbnDLsL+xKA1hFF64iiT+RhNDvJu612rBHFCevksurD/vlHNqAVVsCxNLS6AHhgNofQDT8kxDZ0HNcjYhtT1kubRrJfyfoyShnfCzw5tf44WREHyIxUHDM1yE8aBYRAmAIjHiK+2k/mIKXErIvgvjTkC3Un7yc0CxoYx7WDaRBepxM+chbasiaEZSC0glV8WxJSeURH2TUXXUNf1oL7dG+1+wtgfuB4jJBVOh6Y24J12ZloURuR96AQ2xp88xLSv9sAhf2QiZgE3+y7s2Xv3lgagMzC9ieVGG0x5JZRPCfvK1XFwcUQmC1xPNdFTuSqVlslIJY1Yy5u8le4hcDojOP2juH9aTvG6rnorWUlD1v3B2MATWDO8xUMDfB2jeO9VFgJrRjXSgn4pujKApCjeR784TM8+MNn8AZSeOkszpZutjywmQ/95hK6Vs2que5w4KcX/zebf+97apiLO8joGt+44L/9L9O5KQe+YhtWKcES9FkxXxkunlcXwLT1kgu6PqsO8a4oemFeac6ux+isI//0TkRTCOO4jpJAcvsmkANpvPV9ZatK8e+QiRkPkd8x7GcyLk4wTQ0tFsKcU19TZ/OkueTv92MshZTYbzoCgMx9m3zFHyBgEFyzEOI2ImgigMR7VyHTDppR9uYwW+OIdy6Hl4Zr3MmNo9qq2sboiiN1nfjlp/tudaU2k+Tv3YKxpAmpaeT/uAUm/Am0zDlY8Rh2Ioq+sB5MjcCsxtI90IXfznuwcudGsxCq3nJopLAF42SmkbFcWcsV046B0TRDySztDWFkMRHlziRGW6QsV+I2zsujfu6TaBBvZQxT68B5eifeliGwdIzFzQhTI/dot2+sN3XMRU3lCTZlN3P7hE6IFFatZyeQz/bW1EvoGk2fPwd3xwhaWwwCBmIiDyGT1N0bYG3hmuPbCS1oAd1X9BHg9U+Q29CPaI7A8/2+TDbNmrAds6sBmXX8bZWEnyF+SoRAN3Sc5giyf9wvp0I+uIaGreuwsJ3cSzuJ2VFGsqPsfGEnf7j1D5zygVP26zdSzDzu+OJPSu+T0ASabWLUxWhIRMnu6PeTmFW8Q0IIjOVd5TwMU5QphEBPuYioRHMhv6wJnvF3Mqh6c10P/ZRZGD1p3DlxtLCFiNt4Q2loiyLyDrlfrodkGkIWob86Eel4gCRU6K/5njG0nId8bOcUFalwi49YeJOM5wKBOKYN+UxPWQDrAv2Mhbj3vFRardeWNKEf044WMmE06/ersInRUV7x9/KSWNzGCpgkQhaRoMFLO8eZ1xYiHAhU1Wk6abJK1pdRyvheMvm3z7lTW6ljDeUkEXREYetoeQTQBebKdpzn+qoKFEIgDc1fGbN19M4I5qrO6vsvbvRXq5PZkpVPCIFYVO9vm1YhIMur1gYU3HAFoC9vhmBtZnYtZPnVmTQjD561yP9HQK9SsKy3LSK3fRSe6y1Z16ueRUrEqjYCYRvn+QGoNFDooKHjhUxk2vF7VcjAmt8IbX6G9kr0lijavHpoi1S7thcVIyF8N+GKOmhtEYwj6jCa/IzU+cEUzgPbKhqTqV2DAmUjBfUB5HND6HF/9fdnl/+cTz7+ySkumvms/80GtGgQYWh4w+PoRzSXlcspwrgBqPyZBOiL6rCPawNDxxtK4fZMYC2sB13gDGfwhgvbmknpxzalCl4jQiA0sI7tQDZX9B0h/BVyQFvWivNCLziylLBMM03QwCzsnQ1AxMI4uglPCEg5k6zQRdd0HXFcO1Z7DEb99zLwxvmlupF1IWD4f4qXav47NtmF04wH0c+sI3fPy+X7RI2a/gAgOqPQGIK0U3FcYJ2/GISG9CT2EfWl/uM9uh1MHdkzAYZWW6YQiCX1eOsGq3+X+rLgjTWEmQrHcarCVxQKxR6QMDyRL+Wu6GoMs2VXksx4rrpfWgZa3EY0BP2xIutP3M03zQdvHmwdQkpfXgbOOqJc/FgWJiZvlSQRkXIyUyNi4SxtRD5fkWDU1DAvPgrbtvFmx8gNZ3xvmZAv40NnLYazCvHgMRtvMOUbsQuX661RAo1h9JCJduIsEODuGiP3iw3+CRqYq+f4/7b0QmgN/thfvejue91FdXDBXtZB5pltiKE0SOnfzzII1fsLBu7AGFpdlNxYklZaSGVTrLt3rVLGX4ds+uMmGvUGDMMga+uEQgE810PTNczWety+ZHmlWAiMN8zHCBjIiIEcdxCTPeeKH00d8oUFqHiI/JIGeGHQnwcvrsc6bV5pHpjdOowZtQvGJoHeEfPn06aGccmq8rxYSj8sLOciAwaYHpG2NoQLGVPH+WP19sPayvZCtSsXnaozoFuWhTh3aY2bvPm2JRC2kM3hUhkARkcE5/lBjNbaEL3h3nGWH9OOqZfnC5t3pWhtqBhb1M4p0xY1I9tHdrdBh1epFIct5II6X/EYzhB4QyeapuGaOtItd5DiSpfx5gV449mSIlCzguVR5W6jNwUwY0EyQ7X7NwMIU0AGCOjoK9uwZ9eR3TBYpbiW/iVEyVW4tqBJzx4yfav9oibor93TUQiB2RABx6Ph0hX+M3qS4e896bsGCYHmGbA0ii6E79YvZZUCVPn8YlUb9ExATTi48LdymmJ40QJl92GrMYzx9iPI/mYTOB4iEUAOT2ozo7q9NV2vGh/H+lJ8KnYFnnC4/Nf/j/knz2y39Z984nb++L2H0DSNuvrW8upOIoRWsf2MCNhIL1sz+RKxgtInIPjm+YhQOYOn1hLBaCmvGFltJqIzRnp9H+Rr3bBEwkbUBfAmasM6CBgIkcVc2gKmwHU9GCyESXgehDTqPnhc6V6jf+r2V7AnxYILACGwLz4OXImF9FeOK8+xdKKnz2V8fT9eZYjJZFe4CoyOKLx9Ic66frwdYwh790NqoC2Kk8zgVGZmrthFoaoui5vAk2iLGqFvAunJSRN/Hbs9jlMXJP/oTt99tC6AiJeVcW9v4+CYbpZm5bymmD44niTvVHu4zWmN0rtluOZcvT2CpmlkSwZoUf6rOQK9tVnJmR2F58tlSSTS8RCFfYiL/V6PB5DLWzCOafXDswJGWbEWGsH6EJlkBkTt7ERO5BBBo8bNTxiav+JGYUWxLYr9weV4W6vddvW6AM5EDjnhIHQdaQG5cpuIOhvT0JGaQOuIYrWG8e7fMqXR21jYzMjD6wB/y7i85vDU7U/yxzc+xMkXra69QHHY4Xke3zj1WkZfGsES/tzBS02QFoKgAURC6IaB3l7h4RYzCRzbiha28DJ5nJeHYTRXnhMLwCrMYRuC/nxy0J/nmU1RaIqCrWPMr/NPLyjHVlcct3LVWgjfi7MuSL5yflv0yjM17HgA3dT9vmlAcEU7+SObwIN8XxLRXzsnl0EBqUnacLSYg6k6ibMAaA6XkzUW2y3jYR/VjJt1a2PBHQ9ziiS4PYO5cmTJtBORStYXUcr4XjBVGEdNhucCo+OTOqGpQ0Ai5pZdSqyF9WTX9lWUL6CuMIl2PbREYK+SOpiF7IpGRxRnWznGvCjA9aXNmHPraJoVR9c1PCnZsWGw7O5bvqAQWK35K2vDGd+CFjQwmsPk+/0JRNPq2VgJP+Y7k81jaIKRtb1kt07a/9EQxBY3EmguK2SO41D/18czunkY+iZ85UEXsDNZMEYUPAMqV8aLsb2NYfSuGLmHd5brXUi0Ez66nYl1fTWWRWH5A6VmaJw8/AM6Rv9E95tO4qHIReRe6MfdMOSvtFralLF4p7beydx3rWPj9nnc//AbAAiFIoyNDXHDWddz3ci3Shm1ZxpDvUP88XsPAWCaduldNmY3curiu5kfW8fm5JE81PMOAESokBDIKO6fKRCdESKnzcYMmCx/6d+Y3f8IW8Mn8ljTR6eMoZKuJLK8nfHHd1RXRkpCx7SSn8iTmxitfTezru+VoRfex46476LmSGgNE59Th6FrGJY/lFmnzmH4mV1Iz8Mdq7YgRI5qIjArDoBtmXBUG7nhNP1/2ApAcHETmqkTaI+Rqpxo72G3geaOGFpXAu+oZnq2jJDfMgwZt6YN9Hbfkm3EAtXK+BQyRQiB1hBEDqT8tkgU+mTFNdYCfxXdCFo4bWGwDL9PVTA8lqZlCk+Yqfb6nU6iTbmuKQ4lnpQMZ4Y4rr+bozMpng+/sjAu5aHQdBo7Y+izNTxPksu69L3oG8D1eAC3z5/cF0sUukDYNvLoJtg6giY1tI4IojGIrmkF47l/gRG2qD9rPkiYGM/g5WrrpTdHcUemNs77N6ztJMHGEJnBQtZ3IdDCJl6lfiDA7ooTWNLIxNO7oH8CMQEYOic3/Q/zEi/wcnAlfxw41w+pAeyWMNn1g3i7qucGq0//E/P1p3lBa+aX9y9nnAlynq8Ife+Sf+d/v/4Lrn3+G6/Y3oqZi+u4XBL7MF7BwGVrNra0CBkh3IlxTjvlMRbOeZmNOxbw0Poz/Ys6ooTecgRaPADCdxLVm8J4umBV3/eYl3yEzamj+OPEOxFHN8NIlsCCOjJDu6rm0npzqNqorQuskE1qd/lXdoM+KXGqpmlYAYu61ghDQQMnP4gzWpm7SKC/oQOR9nDX9vteoc1hREsEXBf6UtXn1gVwK+rZfmQTZsEbNDmaYXwohXQm7fBi72YRD1g1vJMjU2NsqI2sPaQoWV9GKeN7xRRB40KwbE6CZzYNoRXitwfHcmAaNB/TzPDmYeREHmckDeiYFfEdWsjCPrYVt3cCT0q8vFfKyJw4aTaZ0TS5qQSqLiBsluJK/WoIoh0hjJBJ//rB8rGTuhh7rofWeXXoBWVLB6JzE4xtGaku1/XA1El0xAjFA+RyDrmwiWb6LreZHaM0L2zAto2SYcJx/ZjXxPJ2JhIBxgsxOXZHhLY3zMZxPfJOeRQ0DAPp5dECum/INIW/0t0Vp3lFB/3P9oLjQNajSjUwNcKRAHbYIvPGuaSe2oU7kUOrs5BpP3mX1RYlt3Os5E5kNIbQgyZCE6weu4VlO29BetAw8SJtG3/Nzg0tFXHGArLVK7L17SPMae1FetC6aDtogvv/eFIpCz3AUz/+Myvff9Ju3pfpza0fuKX071K8dyLAaYvv5qTWu5AetIS207b5aYZ2JsoXFt5RYemIbuBhaF3YS+uCfqQHzdmNADzW9NGpbywE6BpGvY3Xn0GPWQQWNxGwdLIeuAm7ZiIp5iYwggZ1Cxvo//MO/50JmuBKzJCJpomSIg6gmTodb/Azlvat7SH14hAISKxsJ9AcKe2EEC54YYSDUey3L2KkdwIj5hsdzPog5miGfDGxmy5qjQRA2+rZJXdvTdPoWNBA92CKwFEJJh4vx5DVza/DrbPJ5/1Vr3J7CtD1KTO5WlEbqz3O2Pp+sA1oDKFpoBk6eksYzSoLXr0hjNs/4RuWhEAP6tQvrEeYJkOjGRJRC00TeJ5k2dza5G3TTa4pW7niUJJzszz2ozdzXV8vDmAkx9j51DfYceynAL/PeZ5HvDnMaGG7MyEERsikqT2GXnB3RQdD12icX8fApmHseIDA6lkMP7Ldz8Vi6VBf2HJJ19GOaGTeiX5eknzeJee4ZBtC5AZSaKZOsCuGZuo0RC1oCpNNO3RvGyEUMojGg0Rj/jZQu17sZ7R3nLnHd2LaBk7WYfOWQSJhm9HuSSveQb3KE6poRLQWN+IOpZm/enbJWJt3XDat7Udf4YfQnTT8A1aN/RKZgxZnE7O23U3P3S1V5cu8Uxo76ztGmRPvQXrQduJO0m6Gnz5wRNX5vS/18sUT/55/fOSrB+jXVEwn8vk8HwlfjJDl8MaslwUNAl6AN69+gtXLni7MvXbQObyBoV11iB3ALbVG5NYjemhbOIA0oCWxDa0rxp/si4kvi9DS1QCzGwDIJNNsfXArWqw6h4odD6LpAt3ScSt2PrIiFpHmMLGuBJGCt1k6mWXTn7cz74QOghEbz5P09o6Sz4Pr+iveuqHR2BnHbY8x+lwvmV3jCFMjflwbsfoQuq4hju8il86z7YnCHEHXoTkEwxk0QyPQFiW6pJneF/pAQsdRzViGXmqvRF0IISRj/emSoUE3BA2FvFGVCwGe9Jh48CK+1rOzNJbl7/sKnHnVAfk99xcl68soZXwvEBRWxwufJZDJOSAFwxO50sJZczzg79+LZDgRJmTrpQIG+sfp6amwfpk6RmeMfDoP/SmEqRFd2EhdIkDr/HoMTeA4Hju3DbH95VFaZsXo6U5iRSw6ljSRzzoMpPI0NgRoaorCHEHXsR2AJJPK0TOep2VVV0kRL9KwsBG90WZ80ygNzWEWHd8JSHr7J7CDVkk5yzkefYXVuFhXDLvkEicQopxMAyAyp55IIWFWKVebruF6blXiVdMymb+kCX1ZM+sf3QF5l0hXjJZEkM5T5/DUgy+DLn3lWEL7oiZa5zdgFjNtS9heb2EIg3TGwQNyEzm8gIE9J+G79ukCoWtICXbQpL37j0gPhAbSg1j9MENje17RjjaMV12zoGMT93e9hUA32KEIg33bCSZCeyxjOhNt9gfthqYOf6J1RBNmwGJebF3Vc0frx0lvqxCARZtFhb4crx+uumb2xKM82viRKa2zAmg4dQ420NQYZGQ8TWshjhAgt6CB1GiG7S/0MTGeA0MjHLU5amUnGccjM7+OsS0jiIDB7GPayWWzYJi4le9YRbhBbFETsUVN1XUQlf/2jWihoEk6bpd0YiEEobl1xBc14TkuVtigoyWCQGNiJMPWrcMYDQECAXtS2YLW49pI5yWzzl1EMGhRFhuS7m3DjI3nWXbqbEzb4MX1/f4ktTnMri3DNDSHaGqNIRGMux7JiTzRxU2Mbej348ajJkZd7Xt35Bu6CAZNXMdDaIJU1qUu4t97IpOnb9T/wXRNoCEK1mgx2bYwfVASWnGI0IDeiR6WDe3AxZ8guYDZ/SsoKOMAnU0RdF3jafwQLM3Q0HWtrIgXy9M0gmETM2QSbfHHuuazFiKlZOD5PryCV5YwBXNXdpWuMwwNoQka59YRWdIMQN5xyDkSo3CfoG3SUB/EtvxV+FTGJe9KOhY307awyc91AeiGxZz5DWQ8f6I+tmsMJATiAWKzYmQyXlWCLDSBZhvMWd3sb5VUGCct02DumXPZtn4AJMzJPF419icaRhgZL4crTSZaP1Z1/tGLBnxlfFLGuG1PbOVvj/0E33rqX/b1Z1RMQzKZDB8IvpeQEaqZH2S9LK7msmhud/UcJDFG+uXdJa7x37nK8+dkHmf9kZ+gsdH3RCu+u4FYkNZTuhjonfC96igqrSA0jcYjGknuTOJmXcywSbQtim7oRMLl9zkYsznqjPmlMsNBg/ojWpBSkst7bNs2UrpnR32Q2W+aX7q2d2QcTZRjua2gSduyZnY9V/CQNXTiJ3YSqNhLvG5WguGtI1hGrREingjjanohnEVDNzWOnF2P63qkC+EjGTfN9178J67sfbxqLNM33TttlHEl68soZXyv8Ce45U8+hqFxwsJGXto5SsgysQtuogFdEGm0yeQFmbyLlNDSEqO3N1WRi8IvpWVBA3VHNTM2mkXYJl0tYQxdwzZ1NCGILG6ha14D6axL56w6opFykrEFUjI6hXtNIGRxfFsc2ygqsZJNO5NkCm5B4UiI5W9tq7CeSeygVVUv29QJWjrpnEskak/aCmz3MbQl1UMWE1VUr/q1NoUwDZPWcyK88NIAxx3Ziq5rOK7HsW+ct/tfoBBX01kfJRb2jQajEzk2bBpCDxq4acffexEwLEE+67ve72w4hfrxDaUBOzlURyZaD0hKC91SlrPGSxgbdGlYNFG6ZvPoUsz6CPkdSTQhqG/qYNk5R++2rtOdD978If7x/q+iG4afyT/g//abk0fSEtpeeu6x4QhpK+ZfpBf8iQrCq7jV/ehQnmB9f+mareGV6LpA6AI3X/7t9aDvVXH03ERpgheoWN0tTgZD8QBHnFidtT4asanTNRpjAf5s6Cxf2oyu6+TzeTZPisGsTJayJ0r5CAp/B4MG4ymn6vuW1gjRkFllUIrWhziyLsiWnrL7paFrLGyPohXunck7DE9ykQdBZ1cdiWi5/648OUQ6k8OTgiMWNiAR6IUJdN7x2NE/waCAtqWN1LWEGUl7jPaN41V4nESjFuFwMYxAEDB1mmIm+bwk40IkaPqGMSmZ3RTGKGx7YuhaVdecRsnU/Syz+yBt9+UahaIS29CYHZtDdvlF6I/d6E9egf8Rw/Tv/C8uWPA+osEgUkra6kOss/TS+DBZES+iCY262YnS5+JYF+7yQ2YMXdDaGiU/KQlrOKARCZTjufOuv5e5P0YIQgGtNJbqOsQMnZHxLK4r0CYlthKFrUqjLdGSUaC8R7mHaem4jufnZyu44BbLLt5fSoltmjTPq2dw6wja0rMQz2wsjf0jgwkykbqq+0rHK1nox4Y8GrQKuTpxZKFyFfUs3GfT05v24tdSzCQu6foItrB3K5t1obMpdzQd2n3lOchIlLQd9+cdpZxG5XllctL8o6fpZCIVMhYqjPPxEMMDGVzpgAuaJnAyDlZER7d06ufW7sDiX1pb33DQJGiXV6stUzJ7dh0T2RzxcKDKuCWlpCURYSBZ7SMeTgRZsLKT3iF/kU7Y1fexwhZNixurnqFUKSn9hZRCjPys5gjRoImuawR0yYaB7fzz2s+yObmRB4MBluTypbEsP/8Mdm/eOLgoWV9GKeN7jaxWRwudIxwwmN8eZ6jQ0VrqguUVYykZGp8gVVhJPProVkZHJ9i1awIrKDBC/ipXXTzEgq56+oZTGLpGImxjGhqmXpyYu2zuGScarl7R1UqrW9WKsr/XYEXmcSFY0BFnc0+SI2fXldzOPM+jfzS725l40bLuebImY51tVG+jXnRfD9rlE71Jsba6gPZGX7nL5RxOOLq9/J0Gi7oSCAGO6+F5EtvSyVUoHgOjGdLZspKTiNjM6oqzbfuon9TD8wiHLZoawzTFgwwOT7Cu4XKiP/sNkcgo4+NxHvzEL0gOpMhO5JBZt+QiHIvajD64FakL5ECKD7zwRRItSUZ6Y/wh+xdQyCQrpUQTGh8OXcRbP3UO7/rKe6ZuvGnKL//5l/zvl3/O7IZFSK968vdQzzuYM/x46bl/0vQPaHODdJ46m6GhNGnX8xOqBQR2yMIwDXTL4MzvnF9q361XfppjGoKMpFwGhyYYH8+haRqaLuhoi6HrelUItmXqNCdCpVXaTM5hdDxHR2PZej6RdvAKWdhPXtGFbQhM0wCCdA+kcD1ZKtP1ZGkiGrB0MrnafADmFOO4N2kngeMWNpKI2oxMVAvQprgfY99aH8JxPZ54aYBFHbGqdgxaJsOTM95RXI2uvnkwYGHqOgFLK3jVQDrrkBIubY0hZrdEqIsG2DEwxkg6Rbw5goWD8HQSCZtAoGy5j4cFsVCgtPwfl5Le4TRBS6cuZhMJmoVJvUTiVXn6HH6iTaHYN0wBnPVPpHWLgWd/xK+NHP9Wn4At36M3183fHvN5LN03gIUsg/GCIHRdWb3CXELWKAeGBqefMqfg1SPpGUrTO1KRSwKqFPHStVAIi6vNWyOEIBayGJ7CQB8M2KQrtmIt1jOddggG4IjlbSzoiDOWyrK9bwLD0JjXHq86f20hj0ZLXYhVS1oYE39P9ub/JRgaIZ1KcNdH/4vxwfK4Z2ogdo6T2p4sKeXvW/8pEs2+fLmv7yzg0ZqtISvv+UpGVcXMYXRgFBODiCyvWkP5d47+xfE8pp3CwvXP+O9IX4yfLfkGgTcEsBtCjOkCPWyVFNzjjm1lojnG9o+uKr2D9iVX424eAaC93qYhXvYkcxyXsG0QsAVdTVE0TeOP63pJpXJTvmvaFIp48ZTApPwsQkDA1glYQXKOV/I+q3zO2qUpOGJuHccUPF80AQ8821P1vVUwjFXVb3ICXAGzCjsHRQIm6waf5u8euYLhrN9fb2np4ozOpcwbfJH8/DWY02VVXFHFjFTGv/3tb3PdddfR09PD8uXLueGGG1i5cuUhqYvn+THOuiZojNnYhc6TL1iZ6yNhJtITxEIGQctASojHwyTCJtGgzVgmg2WYWIaGZWgETJ1wQKe09AhYlsb89hj9o+mp3X+FRMqyO2xjPFBznq4Jjp7XWD4g/UROTXGbvpEMuiZwq5QzmNcaJhAw0KTHlr50lVurbZs4bp4KXblq2HIcWTVmCODUo/39l3VdIxC2EQKyeY+JTJ5IIEDQ1hAIUgUFStcEsaC/GlCsWndfvlC/gkXS0JjVWZ40VJKIBTAsh+RgI6mN4NQ10tUW5bQ1R0wt5D+0ghv/7jckB1LsWtfEyDMB0kYUOb968POkh3Qlv7r2lzz2s8e47oWZkXDmiyf8Pd3P+Fu8Td5iozjYVz63fkaUT/3L26Ysy3E97lu7C6CqfdvqQwVF2aWhPkxDfXl7reJiTWXTNydCxEN+bgLX8whaOrFCZvaIXc4mnM3miYbLbuFSSrJ5jxOXtPKHdT0YQpBzfYPZniZxGhAImFWTPoDjj2gkVNj2Jxy0yeZdRismrwJojNsFY4J/rWnorFjYSDZfnWkZIBGxGBnfc1IYUbBgxUImdkXcezhoYegOjuPR2RBiIufR3hAhFjBorouwa3iCscIWaZbhJ2bMOx6xkN/WOhAqJG4TUjIwlgX89jUKVjW3YhVuOq2KA/4qiHJdUxwidF3Dcz2cM66m4U1X4az7PjzzbQDu2/FbdqW6+eKKr1MfaOTIucXwLIknYefAGKlseTzwPI/57TG6miIVRnBJOudUycemRJBkKke6IPtMXWDqWpVM1rWqXZ584x4V4XMVaS2OnldfSvgE8MKWAbSIYGC8wlggXeIxm3jIZFkhzCwQDxGyNIRulrdjKqzCLZuTYGA0QyJanl+MDTcx9qKEpiZOXzmP+a1lw2Ql1/3VzxBZya51zYw8HSBtxkCk0RC4k0agYWekXEfFYYOmaeQ9B8/zSn2h6J3RFGshGPZdtHc9X3hHrBiz3lDHu/7fyTVlSSnZ3D8OVL+Dtmly0tIWnt0yVFLEi++wYegs7IoTqpC1b1zexn3P7KrqZ+D3tXjIpqUuSEeTn9XcdSUbukfI5N0qZbtIcUFq8ncCf2Gq+H2RsK0TClQvsJ11XFvVtqP5fJ51WwcZmaiYYwhBR2OQBR1x3xsHf6lQCMFvXr6Tax77RxzPnx90Rbv459P+lbbobHK6TmCKbOuHFCXrS8w4ZfzHP/4xV1xxBTfeeCOrVq3i+uuv5+yzz2bDhg00Nze/hncWVStJllGI27KC6Ok846ksiWigFKMtpcTQ/Wsa4wG0gnLd0RiheyBJ2NKJhS1iIYPRlEMsZJHLO/55orbDVO4dWHls+bwGQgETx/XYvCvJYDIzpQuHNSn7I4KSkBVCEA1ZTGTyJRfWpkSQoG2ga4L6iE1LfYRHN5T3OBUCjltQT3tTOebX8/w410BAx9A0crkcI+Mu4ZBJNGhiGv7kIud4JUFvmxpCmMSC5a3IYrpGNp9HIDF0/xXVBdRHLHoKITYtiSDxsAUdcR5f30uqQiGa1xwkmfGVtQXtcTKmjgvYhbgax3ELCmMtb3j7En77vYdrjrt9ftb34bF+Rsb7Sy7J/Zv6pihl+pFNZeh+ZhtSSiKBWNU74uYcdGtSe7zCmK1rgsVdcV7cPloaGIXmCwUpJQuabTb2lZVZQ4cVC5vY1l92Kzd14ScjKpWpk8852KbAMIyK90FSdAqvnBxaBoRsg784aQ5QUNBzeRAaOdcll5NEg3pV9vC1mwfoT+bwQyMFkYDBkll1REN+6EPe9fxd9iyDQL3ByHiWSNAkHDAZHMvWKPqGoU+pjGtTCAtjimOWqVcp4kVsy8DQc9i2iWlKRlN5OppimIZGImKgCUFHY6Tk6t83kgYklqERCZbd9OpiwcLKnSSV87BMia5phX5XaNPaah1SBCqMTHFoMXUN4XrkpOTipR+hKzKHLz/yRbJuhvXD6/jEQx/m66u/yZEty+gdTjFRWB1f1FVP0NYZHM0SsnTGMnk6GkLlVWwh0DV/BStg6aSyDmNpB12DBR1xDB0aIgF0XaNnOMXOgYmS8c82DVJZB9eV1Edt5rbFMHTNV2jwPcf6RiZY1BnHMvUqZXrJ3EZe2jFKpGAb9TyP3uEMrYkgi2Ylqsa0SChIJufgFrPEVIy589sTDI7tJlv7VINe8auwjTTdcifVINDZSHN3Kz3JXeS9PBIYZ7zw9TRTGhT7zfuueh+3XnUro14Sw9MJihBZmaU50ET9rFm+K8UkWRprnDo3j+vJ3Y73lqlz7LwE3hSu6qHCinbxsy4Epx/VyoPregmbGolCgjchBGFb0NZQ3udb12HJ7Dqe2jhQUKonGf2L8xL8hQFNE8xrjRILWUgJeddja+8YY6k8c9tihbwukM65jKXz6EKUFPGiod40TboaI4QDeZJpB01AQ9RG03VCtkFrXRBD10hls3zrz9/iF1v+u1SdE1pX8U+nXEvMiqEJbfop4ihZX8mMU8a/+c1vcskll/ChD30IgBtvvJFf/epX/OAHP+Bzn/vca3bfkK1z8kgfi8aH2RCpjg+LhSxoiKBN6vyeB5oGYpJy3dUYK7jWFpXhQtxYfZix1G5W04SgJRGscmXrbIxgF+JodE2wsCOO47h4lN29yq4ye34+TRMkIhb1UZvKLVUboja6JoiGbNYc24GUku0DEziupL0pPKkMjUTULlkZbdsmIh1CtoFp+Eq/VwjUrnThiQamUEZM01fIJ1V8QVcd6ZxDPFwRe7uktbQy4RSyeY10D1MftamPBhit6yfQMUompRGwDLw9LAUKDTTTou3Ift9duydD/tk+yDqMp0cZGe+vPn/Pzbpv3PtleOluWHgmnPGlA1LkzX93c3nLO6PaGuut78NrCWM0RcvP3bfnPTA8KQkHLY5Z0Ei6aZDg7FHSKUHG1Mh7Hs2N9bQ0VbfO5NXoeW2+R0PlO+oCtmFUv7CFdyTnVsdhGbqGNmkCaFsmOccjbFuErNof+qh5jXQXDAKdDYEqKzT4k/CiVwtAcyJY9f0rrdaU+p2mYRqQd/x3JGDCrOYovRVxY0LA7OYI45laV3qAtkKm5eIzmob/vM2JKE3xas+T5kSQ0YlsjaUdoKs5Sn8yjZQwPJ6lvTDBOGm4PJ5NK8Q+msvVSpriAGLoGoaukXE9zpxzJh2RDj7z4N/Sn+5lINPH7Xe+m79xQnQtOpcXl3zCl+F1/niRCNtIKanLu2V5U7J++RNtPy7cxPUkqayLLgRNFdmewwGT1vogvYVEqoYuOKqtjt7hCeZ3xEuyp7hC3pzwlehw0KwyGlbm5CjSELVoa4gU5ie1/SZgGUxkq3No2KZOwNIxBDhF1+K6foKdo6QnBFZg95N9oWsQ0Hz50jTKSH8WjQCmNOgMd9CT6WUgP4hW+K+l4bVcWNkzx+o/pK3hMXaxEqhdlZ2pHOrnOv/v38nPrr6DjMziIZmQEwSETR4HOZZF5j2EpdO2tK/gpp6h6/T5U5alaaIUXlX5DhZnz0LTdx9+WfG+SynRdY3jFjRiGRp9IymyeX+xKBIMVJ1fTHranAiSd70qcSOlbwg3dR0pdMJCkAhbxEJW6Tpb0zmiM1EzNw9auh9eN3m1vdCv62IhkplxGmKFhSldQ9cF7Q0hBDCeG+cnP30bRwxu5vSAzf3hEO864j1cseIzGJo/H5iOijigZH0FM0oZz+VyPPHEE1x55ZWlY5qmsWbNGh5+uHY1EyCbzZLNlifAyWRyyvNeCeO+r/CVndtK2wPcduOR3NzS4X8pd+/qKaYIFJl87uTVNrmbwrSCm1oxFlufbImW4BaU0smvqrabl1ci8TyJJgS67hsQKrdfqrkHvpudJ6f+rqZ8Wd3fJj/bvsarTvU4U7Xbh/t28P5jdxUSfEyQfeCr6G/6wm7LtWyDk2M/o61rCE9qtNUPcXzTOBsnVhHxXFpl7SroLZ/74z48wdR0yQc5I/gNPKmh9TzLM7/fzlPuRftdbma8i2MuLMe3G3qt0rYg+hhtDcXnHuR0+TNgajf1YvMHH7qGhmN3lNr3/t+u5gfNHfD01PUoGmqk9CeXk8vcW5fp4nuzu/dgT2W5nm+1nvL1ndSXK8v3an/60jmT3dyKaMVKFjqCoHyub9Dbc7nlZ5IloV6s56RqT7X7WhWelIXwFMGHenfwlYFd5e1O7lfbnShmNgdK1k8mUEgwurhhKbecfRuf+8Onadj6MN/sG/D7z8A3eeKF/+IHLR3oQtS8iLuT58W5gcTvm5qo3uGgZkipdFF/fIoCi3ODovJQfVlFfaqP7G5uMDnni1YYvxC+y+6H+3bwweN6SmM/j39jt8bjYNjimNx/0rZosCRfjhp8iZfecQoAlaq3Jz3MoHlA5ere4svfH+NJjWaxBe7tPGAG8UPKvV9muVl+rns/O5ducepBr8aq932w5lhpLuLAgtDjtC0uz7144Xpor21/TQhCAgIPf52648rzj/+8fQU3t3T6cnWKjrend10I4ftj7GauCoW+WtExi3OIyvh3T5bzOVXdrjhpmTzpLYwBu5sLV96zch6gF7ZUPql/G1/t78cBPpAc4/5l53Diys/jeR4GvlFxuqJkfZkZpYwPDAzgui4tLdV7Wba0tLB+/fopr7nmmmv4h3/4h/26rxACfePdVdsDHJcc4OvRPW+RpTj0HJ8cqNr6wth0D9qZuxeui1Z00vuztb4yLDxfKIReYrO7ereOcxMje15FfjU0RNdV35vH+cPIhftdrhl45a3Y2gIvVt376MYXd3tu0e3S2nxPVfuqfjEzOD45MG23O1HGcsW+cCBk/e7wJ7QeTeEmvnvm91h747G+Io4/WV4xPsh18d1v63U4csL4YNXYL166Z7eK64rT5jDr989Uy7bAi2zOn1JzbjGo6EDK1b1lsvzV9vBMM4qX7q56rgZvHevHVh30aljh8B6/b7M27HX7tzVFyXffV/UOvh774V8kk1Vj0akD3aRdj/AU4W/TDSXry0z/X2s/ufLKK7niiitKn5PJJF1dXXu4YmrcBWdi9q4tbQ/wZKyR5mDZnuuncatl8rFXs/JXaQkvlVdhWSsZweXuy96dpa303aTypqLynvuyHVLVfV7Fdbsrq2RB3E19it9JCU/E8izJ7SoN2O78M/zViz1gLHsz2kv/XhIKuzJH4Lku0vNw8/mqhoo2RjHsA6d8Dsoj0cT/le/NCYQT9itf+Ao4uTyj/UnfPbKQ7MOw7PJLpAl2ZY/gmHD53trSs/dYZsDUyM1bQ6hvbal9n4w10hxq3q23yGRPkcnnvJrV8dI7UCyoYqVpj9ftZR+ayqtlbypZmVtiyjFhivtLWZ2caXe33N2b+2r71BOxPEsGdk3L7U4Uin3hQMn63WEUQlgszWLVkgsx/vitUp+cPB+YauWrkt2OOcX/FQqevDpeXImrGrdehWzd2/F18nlTjTuTZSsL1+y2vGNXz+WZ+46lRbxcJVfdVLbqThJASOJt8d3c9bVlsvzd0zPNKBaeidbzbOm5BrUjD8i84tWSHc+QHvVDLTVdr85vpAl684teVfubi8+G/ueq5x8V/XBv3/XKcycvZu/2ut3MmSv7zpRv8G68ZV+pb04uszhWvBjNszK7q1RGfv6aGaGIK6qZUb9YY2Mjuq7T29tbdby3t5fW1tYpr7FtG9vev0EnaGik3/hFfw/OjfeQX3AG55/+Bc6fdJ4QGtLzSpugCVF2+fZdZ/04l1rvclnIuFgoh6K7mizFnUM5RsYfBGThfP9craIsKsoqu+XI0v91TQNPlspzC19I/CRTxS3N3Ar/2dK2TIVRTy9c57usy9K9igNGpfuOrEi2IQqxPsWyTQSGoZGpiNMFP2GbLgS6gJzj+ZY/XUNQftbJkbZFlxcNyHm+44+UkLv/K+ib7sVbsAZrL1b/Gt53He7dEXJrf8NT6zp5dscsSG8lELe45ObzeOynj5JL5Tj6LctpX9LxiuW9Ok6Ge/O+RXjhGpaf8SWWH6CSd760g0fvfBTTNln9nlOJN8X5l3NvJTOShajFs3IuS+a/j9n2c74QfIUVgZBpkDnzS+R10Dbeizv/DM5/4xe4oPCuVCp3uzNWScB1i3kEKPwtaiahuiZwXOn3AkEpUWKVy5hWjo0shmr47ttlMWboZfHvup6fOVmWz/H7B6XaOqU49YqwDM/Dw3/fvYqyi09UWXXNHwRwK6R2sRwpKwWsLEywRan+RX/70m1ltZtdscblosWkCYIstJOc5JoqkEhy9/n9Ir9gem13olzXFPvCgZD1r0SwkKE8/cYvAQJt4z14C9Zwwelf4J01cS9+B3dcia6Xc8xM3kZxspltch4M1/VKx4rytCDdfHlX2He8so87rsTQBJPvpAuQk6x9JSVAlmviSg/PK9ppq+tW7J8CcO/7CtrGe15RXhimzvIv/QdbbooSHfgDOzmWbNMptBopxjf30fPcDnIyx9HvWc65Xz2/Ztu2g0e1/D0sVsWh9BzF5zrjjCtf4YLXjs2PbuRnn/sZQ5sGaWppJ9rZwKxVXRxzwVG0LDwb7pV73/6F78VL9yAXruHc1Z/nfFHcgaf89hdDw/z+Un63JidV1QTkXYmLL0fL89hCOa5EVPQBTRN+/DiU5jy65s8LPFnOol79PkukVzkjn9QfK8JVHMdDL4TzFct2K+YNXmGem7//K2gb936OO11Qsr6MkJMDiKY5q1atYuXKldxwww2AnxV01qxZXH755XuVwC2ZTBKPxxkdHSUWm3obDoVCoVDsntdiHC2W2d03uE9lJpNJupob1NiuAJSsVygUiv1FyfqDw4xaGQe44ooruOiii1ixYgUrV67k+uuvZ2JiopRdXaFQKBQzF2UtVygUCoXi8EbJ+jIzThl/z3veQ39/P1/60pfo6enhmGOO4be//W1NUjeFQqFQzDxUUheFQqFQKA5vlKwvM+OUcYDLL7+cyy+//FBXQ6FQKBQKhUKhUCgUin1iRirjCoVCoThcUc5rCoVCoVAc3ihZX0Qp4wqFQqGYNijXNYVCoVAoDm+UrC+jlHGFQqFQTBuUrVyhUCgUisMbJevLHKrNHBUKhUKhqKFoLd+XP6+Wb3/728yZM4dAIMCqVat47LHHDvwDKRQKhUKhqELJ+jJKGVcoFArFNELsx5+958c//jFXXHEFV111FU8++STLly/n7LPPpq+v74A9iUKhUCgUiqlQsr6IUsYVCoVC8brjm9/8Jpdccgkf+tCHWLp0KTfeeCOhUIgf/OAHh7pqCoVCoVAoDgAzQda/7mLGpZQAJJPJQ1wThUKhmJkUx8/ieHogGRtL7pMb2tiYX6fJY7tt29i2XXUsl8vxxBNPcOWVV5aOaZrGmjVrePjhh1/9zRXTDiXrFQqFYv9Qsv7g8LpTxsfGxgDo6uo6xDVRKBSKmc3Y2BjxePyAlGVZFq2trSycM3ufy4hEIjVj+1VXXcXVV19ddWxgYADXdWlpaak63tLSwvr16/f5/orpg5L1CoVCcWBQsv615XWnjLe3t9Pd3U00GmVsbIyuri66u7uJxWKHumozmmQyqdryAKHa8sCh2vLAUdmWxfGzvb39gJUfCATYsmULuVxun8uQUiImmdonW8oVrw8qZf3kd6KIGh/2D9V++4dqv/1HteH+8UrtJ6VUsv4g8LpTxjVNo7OzE6D0Q8ZiMdWJDxCqLQ8cqi0PHKotDxzFtjxQVvJKAoEAgUDggJc7mcbGRnRdp7e3t+p4b28vra2tr/n9Fa89lbL+lVDjw/6h2m//UO23/6g23D/21H5K1r/2qARuCoVCoXhdYVkWxx9/PPfee2/pmOd53HvvvZx00kmHsGYKhUKhUCgOBDNF1r/uVsYVCoVCobjiiiu46KKLWLFiBStXruT6669nYmKCD33oQ4e6agqFQqFQKA4AM0HWv66Vcdu2ueqqq2Z0nMF0QbXlgUO15YFDteWB43Bry/e85z309/fzpS99iZ6eHo455hh++9vf1iR6URy+HG7v9MFGtd/+odpv/1FtuH+8HtpvJsh6IV+LfPUKhUKhUCgUCoVCoVAodouKGVcoFAqFQqFQKBQKheIgo5RxhUKhUCgUCoVCoVAoDjJKGVcoFAqFQqFQKBQKheIgo5RxhUKhUCgUCoVCoVAoDjKve2U8m81yzDHHIITg6aefrvru2WefZfXq1QQCAbq6urj22msPTSWnMS+//DIf+chHmDt3LsFgkPnz53PVVVeRy+WqzlNtuXd8+9vfZs6cOQQCAVatWsVjjz12qKs07bnmmms44YQTiEajNDc3c+6557Jhw4aqczKZDJdddhkNDQ1EIhEuuOACent7D1GNZw5f+9rXEELwyU9+snRMtaXicEHJ/31Dyf0Dg5L3e4eS8QcWJdenH697Zfzv/u7vaG9vrzmeTCY566yzmD17Nk888QTXXXcdV199Nf/+7/9+CGo5fVm/fj2e53HTTTexbt06vvWtb3HjjTfy+c9/vnSOasu948c//jFXXHEFV111FU8++STLly/n7LPPpq+v71BXbVrzwAMPcNlll/HII49w9913k8/nOeuss5iYmCid87d/+7f83//9Hz/96U954IEH2LlzJ+eff/4hrPX05/HHH+emm27i6KOPrjqu2lJxuKDk/76h5P7+o+T93qNk/IFDyfVpinwd8+tf/1ouXrxYrlu3TgLyqaeeKn33ne98R9bV1clsNls69tnPflYuWrToENR0ZnHttdfKuXPnlj6rttw7Vq5cKS+77LLSZ9d1ZXt7u7zmmmsOYa1mHn19fRKQDzzwgJRSypGREWmapvzpT39aOueFF16QgHz44YcPVTWnNWNjY3LhwoXy7rvvlqeddpr8xCc+IaVUbak4fFDy/8Ci5P6rQ8n7fUfJ+H1DyfXpy+t2Zby3t5dLLrmEW2+9lVAoVPP9ww8/zKmnnoplWaVjZ599Nhs2bGB4ePhgVnXGMTo6Sn19femzastXJpfL8cQTT7BmzZrSMU3TWLNmDQ8//PAhrNnMY3R0FKD0Dj7xxBPk8/mqtl28eDGzZs1SbbsbLrvsMs4555yqNgPVlorDAyX/DzxK7u89St7vH0rG7xtKrk9fXpfKuJSSiy++mEsvvZQVK1ZMeU5PTw8tLS1Vx4qfe3p6XvM6zlQ2btzIDTfcwF//9V+Xjqm2fGUGBgZwXXfKdlJttPd4nscnP/lJTj75ZJYtWwb475hlWSQSiapzVdtOze23386TTz7JNddcU/OdakvFTEfJ/wOPkvuvDiXv9x0l4/cNJdenN4eVMv65z30OIcQe/6xfv54bbriBsbExrrzyykNd5WnL3rZlJTt27ODNb34z73rXu7jkkksOUc0Vr2cuu+wynnvuOW6//fZDXZUZSXd3N5/4xCf40Y9+RCAQONTVUSj2GiX/9x8l9xXTHSXjXz1Krk9/jENdgQPJpz71KS6++OI9njNv3jx+//vf8/DDD2PbdtV3K1as4H3vex8//OEPaW1trckkWPzc2tp6QOs9Hdnbtiyyc+dO3vjGN/KGN7yhJkHL670t94bGxkZ0XZ+ynVQb7R2XX345v/zlL3nwwQfp7OwsHW9tbSWXyzEyMlJl+VVtW8sTTzxBX18fxx13XOmY67o8+OCD/Nu//Rt33XWXakvFtETJ//1Hyf2Dg5L3+4aS8fuGkuszgEMdtH4o2Lp1q1y7dm3pz1133SUBeccdd8ju7m4pZTn5SC6XK1135ZVXquQjU7B9+3a5cOFCeeGFF0rHcWq+V225d6xcuVJefvnlpc+u68qOjg6V0OUV8DxPXnbZZbK9vV2++OKLNd8Xk5PccccdpWPr169XyUmmIJlMVo2Na9eulStWrJDvf//75dq1a1VbKmY8Sv4fGJTc3z+UvN97lIzfP5Rcn/68LpXxyWzZsqUmm+rIyIhsaWmRH/jAB+Rzzz0nb7/9dhkKheRNN9106Co6Ddm+fbtcsGCBPOOMM+T27dvlrl27Sn+KqLbcO26//XZp27a85ZZb5PPPPy//6q/+SiYSCdnT03Ooqzat+djHPibj8bi8//77q96/VCpVOufSSy+Vs2bNkr///e/ln//8Z3nSSSfJk0466RDWeuZQmXVVStWWisMLJf9fPUru7z9K3u89SsYfeJRcn14oZVxOLYyllPKZZ56Rp5xyirRtW3Z0dMivfe1rh6aC05ibb75ZAlP+qUS15d5xww03yFmzZknLsuTKlSvlI488cqirNO3Z3ft38803l85Jp9Py4x//uKyrq5OhUEied955VRNHxe6ZLLRVWyoOJ5T8f/UouX9gUPJ+71Ay/sCj5Pr0Qkgp5WvtCq9QKBQKhUKhUCgUCoWizGGVTV2hUCgUCoVCoVAoFIqZgFLGFQqFQqFQKBQKhUKhOMgoZVyhUCgUCoVCoVAoFIqDjFLGFQqFQqFQKBQKhUKhOMgoZVyhUCgUCoVCoVAoFIqDjFLGFQqFQqFQKBQKhUKhOMgoZVyhUCgUCoVCoVAoFIqDjFLGFQqFQqFQKBQKhUKhOMgoZVyheJW8/PLLCCG45ZZbSseuvvpqhBAHtR4XX3wxQgiEECxbtuyg3vuVuP7660t1E0IwMDBwqKukUCgUCsVeo2T9K6NkvUKx/yhlXHFYcMstt1QJBMMw6Ojo4OKLL2bHjh2HunqvGY2Njdx666187WtfO9RVqeLNb34zt956K+edd96hropCoVAoDhOUrFeyXqE43DAOdQUUigPJl7/8ZebOnUsmk+GRRx7hlltu4Q9/+APPPfccgUDgNbvvF77wBT73uc+9ZuXvjnA4zPvf//6Dft9XYvHixSxevJiNGzfyP//zP4e6OgqFQqE4jFCyfnqgZL1Csf8oZVxxWPGWt7yFFStWAPDRj36UxsZGvv71r3PnnXfy7ne/+zW7r2EYGIbqTgqFQqFQvNYoWa9QKA4XlJu64rBm9erVAGzatKl0LJfL8aUvfYnjjz+eeDxOOBxm9erV3HfffTXXj4yMcPHFFxOPx0kkElx00UWMjIzUnDc5jmyqWLMiQgiuvvrq0uexsTE++clPMmfOHGzbprm5mTPPPJMnn3xyn59bCMHll1/OT3/6U5YuXUowGOSkk05i7dq1ANx0000sWLCAQCDA6aefzssvv1x1/emnn86yZct49tlnOe200wiFQixYsIA77rgDgAceeIBVq1YRDAZZtGgR99xzzz7XVaFQKBSK/UHJeiXrFYqZilLGFYc1RcFTV1dXOpZMJvn+97/P6aefzte//nWuvvpq+vv7Ofvss3n66adL50kp+Yu/+AtuvfVW3v/+9/OVr3yF7du3c9FFFx3QOl566aV897vf5YILLuA73/kOn/70pwkGg7zwwgv7Ve5DDz3Epz71KS666CKuvvpqXnjhBd72trfx7W9/m3/913/l4x//OJ/5zGd4+OGH+fCHP1xz/fDwMG9729tYtWoV1157LbZtc+GFF/LjH/+YCy+8kLe+9a187WtfY2Jigne+852MjY3tV30VCoVCodgXlKxXsl6hmLFIheIw4Oabb5aAvOeee2R/f7/s7u6Wd9xxh2xqapK2bcvu7u7SuY7jyGw2W3X98PCwbGlpkR/+8IdLx37xi19IQF577bVV165evVoC8uabby4dv+qqq2Rld9qyZUvNOUUAedVVV5U+x+Nxedlll73qZ77ooovk7Nmzp/wOkLZtyy1btpSO3XTTTRKQra2tMplMlo5feeWVEqg697TTTpOA/K//+q/SsfXr10tAapomH3nkkdLxu+66a7fPWmyX/v7+V/18CoVCoVBUomR97T2UrFcoZjYq8EVxWLFmzZqqz3PmzOG2226js7OzdEzXdXRdB8DzPEZGRvA8jxUrVlS5i/3617/GMAw+9rGPVV37N3/zNzz00EMHrM6JRIJHH32UnTt30t7efsDKPeOMM5gzZ07p86pVqwC44IILiEajNcc3b95cdX4kEuHCCy8sfV60aBGJRIKOjo7SNZOvVygUCoXitUbJ+jJK1isUMxvlpq44rPj2t7/N3XffzR133MFb3/pWBgYGsG275rwf/vCHHH300QQCARoaGmhqauJXv/oVo6OjpXO2bt1KW1sbkUik6tpFixYd0Dpfe+21PPfcc3R1dbFy5UquvvrqAyLsZs2aVfU5Ho8D0NXVNeXx4eHhquOdnZ01+6nG4/G9vl6hUCgUitcCJevLKFmvUMxslDKuOKxYuXIla9as4YILLuDOO+9k2bJlvPe972V8fLx0zm233cbFF1/M/Pnz+Y//+A9++9vfcvfdd/OmN70Jz/MOSD0mC7YiruvWHHv3u9/N5s2bueGGG2hvb+e6667jyCOP5De/+c1+1aG4IrC3x6WUB/R6hUKhUCheC5SsL6NkvUIxs1HKuOKwRdd1rrnmGnbu3Mm//du/lY7fcccdzJs3j5///Od84AMf4Oyzz2bNmjVkMpmq62fPns2uXbuqhDvAhg0bXvHexSQyk7Oxbt26dcrz29ra+PjHP84vfvELtmzZQkNDA1/96lf35jEVCoVCoXjdomS9QqGYyShlXHFYc/rpp7Ny5Uquv/76kgAuWnsrrbuPPvooDz/8cNW1b33rW3Ech+9+97ulY67rcsMNN7zifWOxGI2NjTz44INVx7/zne9UfXZdt8pdDqC5uZn29nay2exePKFCoVAoFK9vlKxXKBQzFZXATXHY85nPfIZ3vetd3HLLLVx66aW87W1v4+c//znnnXce55xzDlu2bOHGG29k6dKlVZbxt7/97Zx88sl87nOf4+WXX2bp0qX8/Oc/rxGou+OjH/0oX/va1/joRz/KihUrePDBB3nxxRerzhkbG6Ozs5N3vvOdLF++nEgkwj333MPjjz/ON77xjQPaDgqFQqFQHK4oWa9QKGYiShlXHPacf/75zJ8/n3/+53/mkksu4eKLL6anp4ebbrqJu+66i6VLl3Lbbbfx05/+lPvvv790naZp3HnnnXzyk5/ktttuQwjBO97xDr7xjW9w7LHHvuJ9v/SlL9Hf388dd9zBT37yE97ylrfwm9/8hubm5tI5oVCIj3/84/zud7/j5z//OZ7nsWDBAr7zne9UZXZVKBQKhUKxe5SsVygUMxEhVSYGhWJGcvHFF/P73/+eJ598EsMwSCQSh7pKJTKZDOPj41x77bVcd9119Pf309jYeKirpVAoFArFjELJeoXi8EbFjCsUM5ju7m6ampo45ZRTDnVVqrjxxhtpamriuuuuO9RVUSgUCoViRqNkvUJx+KJWxhWKGcrzzz/Pzp07AYhEIpx44omHuEZluru7qzLRnnbaaZimeQhrpFAoFArFzEPJeoXi8EYp4wqFQqFQKBQKhUKhUBxklJu6QqFQKBQKhUKhUCgUBxmljCsUCoVCoVAoFAqFQnGQUcq4QqFQKBQKhUKhUCgUBxmljCsUCoVCoVAoFAqFQnGQUcq4QqFQKBQKhUKhUCgUBxmljCsUCoVCoVAoFAqFQnGQUcq4QqFQKBQKhUKhUCgUBxmljCsUCoVCoVAoFAqFQnGQUcq4QqFQKBQKhUKhUCgUB5n/D9ENnKVbTs6rAAAAAElFTkSuQmCC", + "image/png": "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Y3s/qqElGVbFCNlUpuFo2CRkKgwF0ybU9wvEAczqMF7W7ve+MgxyXg4bh5x28LRMaybESKrUun7G/rvxzxf/iYfL127/GvscPY9MNlN+sKzLpz51MfvsPbOsrn/6qSf5wEnzaR5TT0tTIx8+9UO89eab/aZprChS1wckGBdCiBJnnnkmmUyGW265hVNOOYVvf/vbXHbZZcHye+65h2nTpvHlL3+Zb3zjG0yZMoVPf/rTfPe73w3WaW1t5X3vex8rVqzg6quv5q677uK8887j+eefD9Z56qmnOOecc2hsbOS2227j1ltv5bjjjuMf//jHJst21llnkUwm+eMf/1j2fiqV4tFHH+WjH/0opuk/Rf/Zz37G+9//fmpra7ntttv46le/yptvvslRRx3FihUrdtCnJcTOzzIUtVWhzbY4GWEDptSXvae1ZtWat8veUyi6NnQNRTGFENugkuv6U044hVQ6xZ+efLRsaEsqneLJJx/nAx88Lajrf/PrX3H+uadTW1vL/950M9dcey2LF7/F/Pccy6qVK3fkRyaGiHRTF0KMvMWPwYq/wfSjYY9TRrQoM2bM4OGHHwbg8ssvJxaLcffdd/OFL3yBefPm8eyzz1JVMofwFVdcwUknncQ3v/lNLr/8cgD++c9/0tXVxZNPPslBBx0UrHvjjTcGv//xj38kFovxxBNPBJXqlhx11FFMmjSJBx54gDPOOKNsX8lkkrPOOguARCLBlVdeySWXXMK9994brHfhhRcyZ84cbr755rL3K4lSg0vQsjMmdRHDr28WYq3B9TRKKUKWQTo7cDdzhYINieC1B7z0xKP+FEP576afrV2z/JV3aTzpwCE8CyEqlNT1W1W2g/Y7iHEt4/jD44/y4VNOxwyHAHj6madIpZKcetrpACQTCb7y5S9y3vkX8u3v3kM0YmEaigsu+Bj77DWX2269hS/c9oXt+6CGiNT1RRKMCyG22/LTP4rT3j6obWuaepg47120B+r5u1n32m4kO+q3vOEmWGPHMuO3Dw56+0IlW/CZz3yGu+++m8cee4x58+aVVc49PT3Yts2xxx7LE088QU9PD/X19TQ0NADwhz/8gX333ZdQKNTvOA0NDSSTSZ566ilOOumkrSqbUoozzjiD73//+yQSCWprawF44IEHmDRpEkcddRTgP4nv7u7mnHPOob3k72KaJoceeih//etft+kzGVYyjkyMkMI9Xn54N+AH44XQ3HU1yWRuwG0dx8HoSEFLNSpk4rQnMAwTXI2p/E6Ijuei0YyZ1DS0JyIG7+kbYOlTMOsEmH+dHKsPqeuHvq43MEApTpl/Cr/63a/o7eqiYfJ4QPPwn37PhPETOfTwIwB49tm/0NPTzWkfOYMN61upqQljmQrTNDnkkEN55pln+AKVGYxLXV8kwbgQYrs57e04GzcOatvIxB6/cjZAexAJb6RnY2bLGw6RWbNmlb2eOXMmhmEEXbv/8Y9/8LWvfY2FCxf2G7tdqKCPPfZYTj/9dK6//nq+9a1vcdxxx3Haaadx7rnnEolEAPj0pz/Nr3/9a04++WQmTZrE+973Ps4888wtVtZnnXUWd9xxB4888gjnnnsuiUSCxx57jE984hPBE+OlS5cC8N73vnfAfcRisW3+XIbNYOcR3QmflouRoRTB/Z5Sfndzz9O0daV44+12lGmgS6YVcuIZvJc25FcGnXXgnU6a6luI93QE85aHDIusm+Wh2x/icz/73Aicmdisp2+Av30DTxsYG17j1b+s4WX3wiE51BT9HPOrhudY+5v3sW/ogeBYwKADcqnrfUNV1ysMChef95/wfn78qx/z1HN/5qNnnUsqneTpZ/7MBedcCAkbVRfm3XffAeCjH37/gOcodf3oIMG4EGK7WWPHDnrbbDaKMt4NKulsbhzWuO17Wr4jlXaJeuedd5g/fz577LEH3/zmN5kyZQrhcJjHHnuMb33rW/6URvltHnzwQZ5//nkeffRRnnjiCT7+8Y/zjW98g+eff57a2lpaWlp45ZVXeOKJJ/jTn/7En/70J3784x/zsY99jPvuu2+T5TnssMOYPn06v/71rzn33HN59NFHSafTQRd1ICjHz372M8aPH99vH5ZVwZd+eVouRljpv3mlwHU9/vlWGwD1zbV02HHcfAO51hrvpZLgJD9djzW3hd43/0XWy5V9M5Vh0LlmcC2LYogtfcoPWJWHpw0m8G/+3n32kByqqe6NYTvWhKYXyo5lLP3zoINxqeuHtq7X+f8A9ttnPyZPnMyjTz7KGeecx5NPP0Emk+bUD3wYNHgpG51PCPnde37IuAnjg3OIhExMQxEO92+prxhS1wcq+I5MCDFabE9XMQAWP4Za8XeYfhQTF4zsOLKlS5cyY8aM4PWyZcvwPI/p06fz6KOPks1meeSRR5g6dWqwzqa6fR922GEcdthh3HTTTfzyl7/kvPPO4/777+eSSy4BIBwO88EPfpAPfvCDeJ7Hpz/9ab7//e/z1a9+ld13332TZTzzzDO58847icfjPPDAA0yfPp3DDjssWD5z5kwAWlpaOP7447fr8xh2yvB/BrOdEEMgErI4ePZYkmmbt1d1YYZNf3ohDW7Gzt8b+jeIruOiEzkwFRk3i5EfJ14YL66AIy84agTPRmzSrBMwNrwWBK7rOZiahsiQHKpD74WhHh2WY63nEFrU8uBYzBp8nSB1/fDW9accfwo/uf8+4p3dPPzoQ0yZPJUD9z8Y/+ID02fsBsDY5maOOfa9RCMmpmFgGgpDKUxTsbRryQ74tIaA1PUBCcaFECNvj1NGPJlLwXe/+13e9773Ba/vuusuAE4++WSee+45gKDbKfjd1X784x+X7aOrq4uGhoayJ+377bcfANlsFoCOjg6amopjRw3DYN68eWXrbMpZZ53F7bffzn333cfjjz/OZz/72bLlJ554IrFYjJtvvpn3vOc9/caxtbW10dzcvNljCCF8Xv7fe01ViIktdYRDJus35pO1KfKDyjVOPAttxe6s+x42n9eef7pfAremcTu2RU/sIPOv4+knQzR5b9Bh7MX8265h3yE72JHwtO23Us86nn3nXzekx3r6SzOK5zX/miE70hZJXb9Ndf2HP3g69/70Xn790AM887e/8F8XXFpcqBTvnX8CdXUx7vzW/3HCCcf7AXhh/nGtadvYBuGt+jjECJJgXAghSixfvpwPfehDnHTSSSxcuJCf//znnHvuuey7775Eo9HgCfcnPvEJEokEP/jBD2hpaWH9+vXBPu677z7uvvtuPvzhDzNz5kx6e3v5wQ9+QCwW45RT/BuRSy65hM7OTt773vcyefJkVq5cyV133cV+++3HnnvuudkyHnDAAey+++5ce+21ZLPZsi7q4I8Tu+eee7jgggs44IADOPvss2lubmbVqlX88Y9/5Mgjj+Q73/nOjv/wdgBlKNQguq6pnbDrmqgAGrK2W3az3dRQFQTjpmlCtQUpuywQ95dZzNn3cJa85k9zVLix33f+0IVdYvusVsewuPfQIWulLjP/uqFP3JY3rOc1SoyGun7fvfdnxtQZ3HbHzWRzWT508mnorIOKWBi1IerMCLd/404u/+R/cdQRh3DGGWfR3NLM6lWrePxPf+LwI47gqhuvHNLPcbCkri+SYFwIIUo88MADXHfddVx99dVYlsUVV1zB17/+dQDmzJnDgw8+yFe+8hW+8IUvMH78eD71qU/R3NzMxz/+8WAfxx57LC+88AL3338/GzdupL6+nkMOOYRf/OIXQbe4888/n3vvvZe7776b7u5uxo8fz1lnncWCBQswjC13wzrrrLO46aab2H333TnggAP6LT/33HOZOHEit956K1//+tfJZrNMmjSJo48+mosvvngHfVpDQMaRiUqQbxDztP9T2kJWvpqm9vjdSDzavyuo1ppIVXXZtsowCEelqUqIkVbpdb2RnwbtQyefxp3f/xYzps5g3l5+izoWQT15+hlnMXXqZL71ja9zx7e+QTabZeKkSRx55FF87MKhSQq4Q0hdH5BgXAghSjQ3N/Ob3/xmk8sL4776Kg1w999/f375y19u9jinn346p59++mbXOe644zYZBNx4441lc5luavvjjjtus+tUnkFmWN0JK2gxvLQu+eqVZFPPTz6O63kDbpd9txMV6T9/sFIK7Xpoir3Z7373nh1dbCHEIFRiXb/8P+8Gw2J0/nrzpauu4UtX9Rla0OdSdNTRx3DMsccCYBnl83ev6F222WOPHKnrC3a+UfBCCCFGr8LT8sH8CLGDKQUhyyCddWjr8cd3rt0Q97MZex7Z9b04y7r8levKczNorVFdaebNPIxaq5Y6q5b7//sXw30KQohRQqEwlUHYDFMVrh54pYgfunnxbPCwPptzC88McTyN42lcT2OZFVwvSl0fkGBcCCFExVBKDfpnsG699VaUUlx11VU77kTETsNQkM45gMsbS1rp6smC8hMxRSbUwYRaAEJTG1DjayBk4NkOXncKLL/F3DL8jojZVG6kTkMIMUoYhuk3ALte0DMHgIiByndtN2KRsnovk3WwHdd/oTXhkLFd9eJQk7q+SIJxIYQQu6x///vffP/73w+y24pd16bu8XKuJhoOsWxdgr491ZVS1MwbB9UhCJtYU2JYuzVCMuffOJoGtmcTz8VJOym6e7qH/DyEEKOPnbPRgKc9sk66eEHyNCpsoqosVMgC04DowKOMHUdjOx5GfmozUVTJdb0E40IIASxYsACtNWPHyrRDI2oYu64lEgnOO+88fvCDH9DY2DgEJyNGI611kMANDbGqEHVV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ixcv5v777z/gsmo0Go1GczBoWa9lvUZztKKVcc0xTUnw1NXVla+lUin+/d//nXPPPZcvfelLXH/99QwMDHDRRRfxpz/9qZxOKcWb3/xmvvOd7/De976XL3zhC+zcuZNLL730kJbxwx/+MN/4xje45JJL+PrXv87f/M3fEAqFeP755w8q39/+9rd86lOf4tJLL+X666/n+eef5w1veAO33nor//qv/8pHP/pRPv3pT/PII4/wgQ98YNr9IyMjvOENb2D16tXcdNNNBAIB3vWud3HXXXfxrne9i9e97nXceOONTExM8La3vY10On1Q5dVoNBqN5kDQsl7Leo3mqEVpNMcAd9xxhwLU/fffrwYGBtSOHTvU3XffrZqamlQgEFA7duwop3UcR+VyuZr7R0ZGVEtLi/rABz5QvvbjH/9YAeqmm26qufess85SgLrjjjvK16+77jpV3Z22bNkyLU0JQF133XXlz4lEQl155ZUv+Z0vvfRSNWfOnBm/A1QgEFBbtmwpX7v99tsVoFpbW1UqlSpfv+aaaxRQk/acc85RgPr+979fvrZu3ToFKCmlevTRR8vX77333r2+a6leBgYGXvL7aTQajUZTjZb105+hZb1Gc3SjN75ojinWrFlT87mnp4fvfve7dHZ2lq8ZhoFhGAB4nsfo6Cie57Fy5coad7Gf//znmKbJRz7ykZp7P/axj/Hb3/72kJU5mUzy2GOPsXv3btrb2w9Zvueffz49PT3lz6tXrwbgkksuIRaLTbu+efPmmvTRaJR3vetd5c+LFy8mmUzS0dFRvmfq/RqNRqPRvNxoWV9By3qN5uhGu6lrjiluvfVW7rvvPu6++25e97rXMTg4SCAQmJbuW9/6FieccALBYJCGhgaampr42c9+xtjYWDnNtm3baGtrIxqN1ty7ePHiQ1rmm266ibVr19LV1cWqVau4/vrrD4mw6+7urvmcSCQA6OrqmvH6yMhIzfXOzs5p56kmEon9vl+j0Wg0mpcDLesraFmv0RzdaGVcc0yxatUq1qxZwyWXXMJPfvITli9fzrvf/W7Gx8fLab773e9y2WWXMX/+fP7jP/6DX/7yl9x3332cd955eJ53SMoxVbCVcF132rV3vOMdbN68mVtuuYX29nZuvvlmli1bxi9+8YuDKkNpRWB/ryulDun9Go1Go9G8HGhZX0HLeo3m6EYr45pjFsMwuOGGG9i9ezdf+9rXytfvvvtu5s2bxz333MP73vc+LrroItasWUM2m625f86cOezZs6dGuAOsX79+n88uBZGZGo1127ZtM6Zva2vjox/9KD/+8Y/ZsmULDQ0NfPGLX9yf19RoNBqN5hWLlvUajeZoRivjmmOac889l1WrVvHVr361LIBL1t5q6+5jjz3GI488UnPv6173OhzH4Rvf+Eb5muu63HLLLft8bjwep7GxkYcffrjm+te//vWaz67r1rjLATQ3N9Pe3k4ul9uPN9RoNBqN5pWNlvUajeZoRQdw0xzzfPrTn+btb387d955Jx/+8Id5wxvewD333MNb3/pWXv/617NlyxZuu+02li5dWmMZf+Mb38gZZ5zBZz7zGbZu3crSpUu55557pgnUvfHBD36QG2+8kQ9+8IOsXLmShx9+mA0bNtSkSafTdHZ28ra3vY0VK1YQjUa5//77eeKJJ/jyl798SOtBo9FoNJpjFS3rNRrN0YhWxjXHPBdffDHz58/nn//5n7niiiu47LLL6O3t5fbbb+fee+9l6dKlfPe73+VHP/oRDz74YPk+KSU/+clP+MQnPsF3v/tdhBC86U1v4stf/jInnXTSPp977bXXMjAwwN13380Pf/hDXvva1/KLX/yC5ubmcppwOMxHP/pRfvWrX3HPPffgeR4LFizg61//ek1kV41Go9FoNHtHy3qNRnM0IpSOxKDRHJVcdtll/PrXv+app57CNE2SyeSRLlKZbDbL+Pg4N910EzfffDMDAwM0NjYe6WJpNBqNRnNUoWW9RnNso/eMazRHMTt27KCpqYkzzzzzSBelhttuu42mpiZuvvnmI10UjUaj0WiOarSs12iOXfTKuEZzlPLcc8+xe/duAKLRKK961auOcIkq7NixoyYS7TnnnINlWUewRBqNRqPRHH1oWa/RHNtoZVyj0Wg0Go1Go9FoNJrDjHZT12g0Go1Go9FoNBqN5jCjlXGNRqPRaDQajUaj0WgOM1oZ12g0Go1Go9FoNBqN5jCjlXGNRqPRaDQajUaj0WgOM1oZ12g0Go1Go9FoNBqN5jCjlXGNRqPRaDQajUaj0WgOM1oZ12g0Go1Go9FoNBqN5jCjlXGNRqPRaDQajUaj0WgOM1oZ12g0Go1Go9FoNBqN5jDz/wMaQTm/gfXW1AAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -721,7 +734,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -740,7 +753,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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OvlSXl4uAIiysjLR3NwshLhzApaenh55v82bN/MELIO4du2amDFjhli1apXo6+sbcD17OTRarVakp6fL20ajUQQEBPCkNg9gMplEWlqa8Pf3F59//vmA6/tP0FJWViaPNTQ08AQtg9Dr9WbPjXV1dSI6OlqsXr1a1NXVsZekeMx/62DuW4Z5P3TMeMsw1+2TQy7g79XY2DjgLLQdHR3C19dXvPTSS6K+vl6UlJQId3d3UVBQYLtCx6Br166J0NBQMX/+fHHt2jXxzTffyJd+7OXQlJSUCJVKJYqKisTFixfFr371K+Hl5SV0Op2tSxvTXn31VaHRaMSpU6fMHn/ffvutPGfdunUiODhYnDx5Upw7d07ExsaK2NhYG1atHHefrVYI9pLsC/N/+Jj7lmPeDx0z3vqY68rHBbwYPMCFEOJf//qXmDt3rlCpVCIgIEDk5OTYpsAxrLCwUAAY9HI39nJo8vPzRXBwsHB1dRVarVZUV1fbuqQx736Pv8LCQnnOd999J1JTU8XEiROFu7u7WLZsmdkfm3R/9wY9e0n2hPk/fMx962DeDw0z3vqY68onCSHEaH9Mn4iIiIiIiIgsY1dnoSciIiIiIiKyV1zAExERERERESkAF/BERERERERECsAFPBEREREREZECcAFPREREREREpABcwBMREREREREpABfwRERERERERArABTwRERERERGRAnABTzRMTU1NkCQJRUVF8lhWVhYkSXqodaSkpECSJEiShMjIyId62w+yfft2uTZJktDe3m7rkoiIiIaMWf9gzHoi2+ACnuxCUVGRWYi4uLggICAAKSkp+Prrr21d3qjx9vbGvn37kJOTY+tSzCxcuBD79u3DsmXLbF0KERHZCWY9s56IABdbF0BkTW+//TamTZuGW7duobq6GkVFRfjwww9RX18PtVo9are7ZcsWbNq0adSOfz/jx4/H6tWrH/rtPkh4eDjCw8PxxRdf4L333rN1OUREZEeY9WMDs57INriAJ7vyzDPPIDo6GgCwZs0aeHt745133sHhw4fx/PPPj9rturi4wMWF/52IiIhGG7OeiBwZP0JPdm3evHkAgC+//FIe6+npwdatWzFr1ixoNBqMHz8e8+bNwz//+c8B+3d0dCAlJQUajQZeXl5ITk5GR0fHgHn3fi9usO/O9ZMkCVlZWfK2wWDAhg0bEBIS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", "text/plain": [ "
" ] @@ -750,7 +763,7 @@ } ], "source": [ - "plot_map(\"activeness\",clab=\"Activeness\",scale=\"viridis\")" + "plot_map(\"activeness\", clab=\"Activeness\", scale=\"viridis\")" ] }, { @@ -762,25 +775,23 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ - "def plot_distances(axes,distances,xrange=None,label=\" \",**kwargs):\n", - " \n", - " h=hist.new.Reg(100,*xrange, name=\"Distance to n+ surface [mm]\").Double()\n", + "def plot_distances(axes, distances, xrange=None, label=\" \", **kwargs):\n", + " h = hist.new.Reg(100, *xrange, name=\"Distance to n+ surface [mm]\").Double()\n", " h.fill(distances)\n", - " h.plot(**kwargs,label=label)\n", - " ax.legend()\n", - " ax.set_yscale(\"log\")\n", + " h.plot(**kwargs, label=label)\n", + " axes.legend()\n", + " axes.set_yscale(\"log\")\n", " if xrange is not None:\n", - " ax.set_xlim(*xrange)\n", - " " + " ax.set_xlim(*xrange)" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -795,9 +806,23 @@ } ], "source": [ - "fig,ax = plt.subplots()\n", - "plot_distances(ax,ak.flatten(data_det001.distance_to_nplus_surface_mm),xrange=(0,35),label=\"BEGe\",histtype=\"step\",yerr=False)\n", - "plot_distances(ax,ak.flatten(data_det002.distance_to_nplus_surface_mm),xrange=(0,35),label=\"Coax\",histtype=\"step\",yerr=False)\n" + "fig, ax = plt.subplots()\n", + "plot_distances(\n", + " ax,\n", + " ak.flatten(data_det001.distance_to_nplus_surface_mm),\n", + " xrange=(0, 35),\n", + " label=\"BEGe\",\n", + " histtype=\"step\",\n", + " yerr=False,\n", + ")\n", + "plot_distances(\n", + " ax,\n", + " ak.flatten(data_det002.distance_to_nplus_surface_mm),\n", + " xrange=(0, 35),\n", + " label=\"Coax\",\n", + " histtype=\"step\",\n", + " yerr=False,\n", + ")" ] }, { @@ -810,17 +835,16 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 46, "metadata": {}, "outputs": [], "source": [ - "def plot_energy(axes,energy,bins=400,xrange=None,label=\" \",log_y=True,**kwargs):\n", - " \n", - " h=hist.new.Reg(bins,*xrange, name=\"energy [keV]\").Double()\n", + "def plot_energy(axes, energy, bins=400, xrange=None, label=\" \", log_y=True, **kwargs):\n", + " h = hist.new.Reg(bins, *xrange, name=\"energy [keV]\").Double()\n", " h.fill(energy)\n", - " h.plot(**kwargs,label=label)\n", + " h.plot(**kwargs, label=label)\n", " axes.legend()\n", - " if (log_y):\n", + " if log_y:\n", " axes.set_yscale(\"log\")\n", " if xrange is not None:\n", " axes.set_xlim(*xrange)" @@ -828,7 +852,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -845,8 +869,14 @@ "source": [ "fig, ax = plt.subplots()\n", "ax.set_title(\"BEGe energy spectrum\")\n", - "plot_energy(ax,data_det001.energy_sum,yerr=False,label=\"True energy\",xrange=(0,4000))\n", - "plot_energy(ax,data_det001.energy_sum_deadlayer,yerr=False,label=\"Energy after dead layer\",xrange=(0,4000))" + "plot_energy(ax, data_det001.energy_sum, yerr=False, label=\"True energy\", xrange=(0, 4000))\n", + "plot_energy(\n", + " ax,\n", + " data_det001.energy_sum_deadlayer,\n", + " yerr=False,\n", + " label=\"Energy after dead layer\",\n", + " xrange=(0, 4000),\n", + ")" ] }, { @@ -868,8 +898,14 @@ "source": [ "fig, ax = plt.subplots()\n", "ax.set_title(\"COAX energy spectrum\")\n", - "plot_energy(ax,data_det002.energy_sum,yerr=False,label=\"True energy\",xrange=(0,4000))\n", - "plot_energy(ax,data_det002.energy_sum_deadlayer,yerr=False,label=\"Energy after dead layer\",xrange=(0,4000))" + "plot_energy(ax, data_det002.energy_sum, yerr=False, label=\"True energy\", xrange=(0, 4000))\n", + "plot_energy(\n", + " ax,\n", + " data_det002.energy_sum_deadlayer,\n", + " yerr=False,\n", + " label=\"Energy after dead layer\",\n", + " xrange=(0, 4000),\n", + ")" ] }, { @@ -900,8 +936,26 @@ ], "source": [ "fig, axs = plt.subplots()\n", - "plot_energy(axs,data_det001.energy_sum_smeared,yerr=False,label=\"BEGe\",xrange=(2600,2630),log_y=False,bins=150,density=True)\n", - "plot_energy(axs,data_det002.energy_sum_smeared,yerr=False,label=\"COAX\",xrange=(2600,2630),log_y=False,bins=150,density=True)" + "plot_energy(\n", + " axs,\n", + " data_det001.energy_sum_smeared,\n", + " yerr=False,\n", + " label=\"BEGe\",\n", + " xrange=(2600, 2630),\n", + " log_y=False,\n", + " bins=150,\n", + " density=True,\n", + ")\n", + "plot_energy(\n", + " axs,\n", + " data_det002.energy_sum_smeared,\n", + " yerr=False,\n", + " label=\"COAX\",\n", + " xrange=(2600, 2630),\n", + " log_y=False,\n", + " bins=150,\n", + " density=True,\n", + ")" ] }, { From ae1cea597e252f6383b1f49134874e55431131d2 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Wed, 20 Nov 2024 17:55:27 +0100 Subject: [PATCH 73/81] [docs] switch back to rst (dont want to run the notebooks) --- .pre-commit-config.yaml | 11 + .../notebooks/reboost_hpge_tutorial.ipynb | 1006 ----------------- .../notebooks/reboost_hpge_tutorial_hit.rst | 712 ++++++++++++ docs/source/tutorial.rst | 2 +- 4 files changed, 724 insertions(+), 1007 deletions(-) delete mode 100644 docs/source/notebooks/reboost_hpge_tutorial.ipynb create mode 100644 docs/source/notebooks/reboost_hpge_tutorial_hit.rst diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 498eb1c..17754b4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -57,6 +57,17 @@ repos: additional_dependencies: - pytest + - repo: https://github.com/kynan/nbstripout + rev: "0.7.1" + hooks: + - id: nbstripout + args: + [ + "--drop-empty-cells", + "--extra-keys", + "metadata.kernelspec metadata.language_info", + ] + - repo: https://github.com/codespell-project/codespell rev: "v2.3.0" hooks: diff --git a/docs/source/notebooks/reboost_hpge_tutorial.ipynb b/docs/source/notebooks/reboost_hpge_tutorial.ipynb deleted file mode 100644 index 616c6ec..0000000 --- a/docs/source/notebooks/reboost_hpge_tutorial.ipynb +++ /dev/null @@ -1,1006 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Hit tier hpge simulation processing\n", - "This tutorial describes how to process the HPGe detector simulations from **remage** with **reboost**. It buils on the official **remage** tutorial [[link]](https://remage.readthedocs.io/en/stable/tutorial.html)\n", - "\n", - "> #### *Note*\n", - ">\n", - "> To run this tutorial it is recommended to create the following directory structure to organise the outputs and config inputs.\n", - "> \n", - "> \n", - "\n", - "\n", - "```text\n", - "├── cfg\n", - "│   └── metadata\n", - "├── output\n", - "│   ├── stp\n", - "│   └── hit\n", - "└── reboost_hpge_tutorial.ipynb\n", - "\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Part 1) Running the remage simulation\n", - "Before we can run any post-processing we need to run the Geant4 simulation. For this we follow the remage tutorial to generate the GDML geometry. We save this into the GDML file *cfg/geom.gdml* for use by remage. We also need to save the metadata dictionaries into json files (in the *cfg/metadata* folder as *BEGe.json* and *Coax.json*\n", - "\n", - "We use a slightly modified Geant4 macro to demonstrate some features of reboost (this should be saved as *cfg/th228.mac* to run remage on the command line).\n", - "\n", - "```text\n", - "/RMG/Manager/Logging/LogLevel detail\n", - "\n", - "/RMG/Geometry/RegisterDetector Germanium BEGe 001\n", - "/RMG/Geometry/RegisterDetector Germanium Coax 002\n", - "/RMG/Geometry/RegisterDetector Scintillator LAr 003\n", - "\n", - "/run/initialize\n", - "\n", - "/RMG/Generator/Confine Volume\n", - "/RMG/Generator/Confinement/Physical/AddVolume Source\n", - "\n", - "/RMG/Generator/Select GPS\n", - "/gps/particle ion\n", - "/gps/energy 0 eV\n", - "/gps/ion 88 224 # 224-Ra\n", - "/process/had/rdm/nucleusLimits 208 224 81 88 #Ra-224 to 208-Pb\n", - "\n", - "\n", - "/run/beamOn 1000000\n", - "```\n", - "\n", - "We then use the remage executable (see [[remage-docs]](https://remage.readthedocs.io/en/stable/) for installation instructions) to run the simulation:\n", - "> #### *Note*\n", - "> Both of *cfg/th228.mac* and *cfg/geometry.gdml* are needed to run remage\n", - "\n", - "```console\n", - "$ remage --threads 8 --gdml-files cfg/geom.gdml --output-file output/stp/output.lh5 -- cfg/th228.mac\n", - "```\n", - "\n", - "You can lower the number of simulated events to speed up the simulation.\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can use `lh5.show()` to check the output files." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "from __future__ import annotations\n", - "\n", - "from lgdo import lh5" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[1m/\u001b[0m\n", - "└── \u001b[1mstp\u001b[0m · struct{det001,det002,det003,vertices} \n", - " ├── \u001b[1mdet001\u001b[0m · table{evtid,particle,edep,time,xloc,yloc,zloc} \n", - " │ ├── \u001b[1medep\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mparticle\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mtime\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mxloc\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1myloc\u001b[0m · array<1>{real} \n", - " │ └── \u001b[1mzloc\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mdet002\u001b[0m · table{evtid,particle,edep,time,xloc,yloc,zloc} \n", - " │ ├── \u001b[1medep\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mparticle\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mtime\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mxloc\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1myloc\u001b[0m · array<1>{real} \n", - " │ └── \u001b[1mzloc\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mdet003\u001b[0m · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} \n", - " │ ├── \u001b[1medep\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mparticle\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mtime\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mv_post\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mv_pre\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mxloc_post\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mxloc_pre\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1myloc_post\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1myloc_pre\u001b[0m · array<1>{real} \n", - " │ ├── \u001b[1mzloc_post\u001b[0m · array<1>{real} \n", - " │ └── \u001b[1mzloc_pre\u001b[0m · array<1>{real} \n", - " └── \u001b[1mvertices\u001b[0m · table{evtid,time,xloc,yloc,zloc,n_part} \n", - " ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mn_part\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mtime\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mxloc\u001b[0m · array<1>{real} \n", - " ├── \u001b[1myloc\u001b[0m · array<1>{real} \n", - " └── \u001b[1mzloc\u001b[0m · array<1>{real} \n" - ] - } - ], - "source": [ - "lh5.show(\"output/stp/output_t0.lh5\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Part 2) reboost config files\n", - "For this tutorial we perform a basic post-processing of the *hit* tier for the two Germanium channels.\n", - "\n", - "### 2.1) Setup the environment\n", - "First we set up the python environment." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[32mroot [INFO] test\u001b[0m\n" - ] - } - ], - "source": [ - "import logging\n", - "\n", - "import awkward as ak\n", - "import colorlog\n", - "import hist\n", - "import legendhpges\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pyg4ometry as pg4\n", - "\n", - "from reboost.hpge import hit\n", - "\n", - "plt.rcParams[\"figure.figsize\"] = [12, 4]\n", - "plt.rcParams[\"axes.titlesize\"] = 12\n", - "plt.rcParams[\"axes.labelsize\"] = 12\n", - "plt.rcParams[\"legend.fontsize\"] = 12\n", - "\n", - "\n", - "handler = colorlog.StreamHandler()\n", - "handler.setFormatter(colorlog.ColoredFormatter(\"%(log_color)s%(name)s [%(levelname)s] %(message)s\"))\n", - "logger = logging.getLogger()\n", - "logger.handlers.clear()\n", - "logger.addHandler(handler)\n", - "logger.setLevel(logging.INFO)\n", - "logger.info(\"test\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.2) Processing chain and parameters\n", - "Next we need to make the processing chain config file.\n", - "\n", - "The processing chain below gives a standard set of steps for a HPGe simulation.\n", - "1. first the steps are windowed into hits,\n", - "2. the first timestamp and index of each hit is computed (for use in event building),\n", - "3. the distance to the detector n+ surface is computed and from this the activeness is calculated (based on the FCCD)\n", - "4. the energy in each step is summed to extract the deposited energy (both with and without deadlayer correction),\n", - "5. the energy is convolved with the detector response model (gaussian energy resolution).\n", - "\n", - "We also include some step based quantities in the output to show the effect of the processors.\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "chain = {\n", - " \"channels\": [\"det001\", \"det002\"],\n", - " \"outputs\": [\n", - " \"t0\", # first timestamp\n", - " \"time\", # time of each step\n", - " \"edep\", # energy deposited in each step\n", - " \"evtid\", # id of the hit\n", - " \"global_evtid\", # global id of the hit\n", - " \"distance_to_nplus_surface_mm\", # distance to detector nplus surface\n", - " \"activeness\", # activeness for the step\n", - " \"rpos_loc\", # radius of step\n", - " \"zpos_loc\", # z position\n", - " \"energy_sum\", # true summed energy before dead layer or smearing\n", - " \"energy_sum_deadlayer\", # energy sum after dead layers\n", - " \"energy_sum_smeared\", # energy sum after smearing with resolution\n", - " ],\n", - " \"step_group\": {\n", - " \"description\": \"group steps by time and evtid with 10us window\",\n", - " \"expression\": \"reboost.hpge.processors.group_by_time(stp,window=10)\",\n", - " },\n", - " \"locals\": {\n", - " \"hpge\": \"reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)\",\n", - " \"phy_vol\": \"reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)\",\n", - " },\n", - " \"operations\": {\n", - " \"t0\": {\n", - " \"description\": \"first time in the hit.\",\n", - " \"mode\": \"eval\",\n", - " \"expression\": \"ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)\",\n", - " },\n", - " \"evtid\": {\n", - " \"description\": \"global evtid of the hit.\",\n", - " \"mode\": \"eval\",\n", - " \"expression\": \"ak.fill_none(ak.firsts(hit._evtid,axis=-1),np.nan)\",\n", - " },\n", - " \"global_evtid\": {\n", - " \"description\": \"global evtid of the hit.\",\n", - " \"mode\": \"eval\",\n", - " \"expression\": \"ak.fill_none(ak.firsts(hit._global_evtid,axis=-1),np.nan)\",\n", - " },\n", - " \"distance_to_nplus_surface_mm\": {\n", - " \"description\": \"distance to the nplus surface in mm\",\n", - " \"mode\": \"function\",\n", - " \"expression\": \"reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')\",\n", - " },\n", - " \"activeness\": {\n", - " \"description\": \"activness based on FCCD (no TL)\",\n", - " \"mode\": \"eval\",\n", - " \"expression\": \"ak.where(hit.distance_to_nplus_surface_mm{array<1>{real}} \n", - "│ │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - "│ │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - "│ ├── \u001b[1mdistance_to_nplus_surface_mm\u001b[0m · array<1>{array<1>{real}} \n", - "│ │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - "│ │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - "│ ├── \u001b[1medep\u001b[0m · array<1>{array<1>{real}} \n", - "│ │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - "│ │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - "│ ├── \u001b[1menergy_sum\u001b[0m · array<1>{real} \n", - "│ ├── \u001b[1menergy_sum_deadlayer\u001b[0m · array<1>{real} \n", - "│ ├── \u001b[1menergy_sum_smeared\u001b[0m · array<1>{real} \n", - "│ ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", - "│ ├── \u001b[1mglobal_evtid\u001b[0m · array<1>{real} \n", - "│ ├── \u001b[1mrpos_loc\u001b[0m · array<1>{array<1>{real}} \n", - "│ │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - "│ │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - "│ ├── \u001b[1mt0\u001b[0m · array<1>{real} \n", - "│ ├── \u001b[1mtime\u001b[0m · array<1>{array<1>{real}} \n", - "│ │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - "│ │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - "│ └── \u001b[1mzpos_loc\u001b[0m · array<1>{array<1>{real}} \n", - "│ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - "│ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - "└── \u001b[1mdet002\u001b[0m · HDF5 group \n", - " └── \u001b[1mhit\u001b[0m · table{edep,time,t0,evtid,global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} \n", - " ├── \u001b[1mactiveness\u001b[0m · array<1>{array<1>{real}} \n", - " │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - " │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mdistance_to_nplus_surface_mm\u001b[0m · array<1>{array<1>{real}} \n", - " │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - " │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - " ├── \u001b[1medep\u001b[0m · array<1>{array<1>{real}} \n", - " │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - " │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - " ├── \u001b[1menergy_sum\u001b[0m · array<1>{real} \n", - " ├── \u001b[1menergy_sum_deadlayer\u001b[0m · array<1>{real} \n", - " ├── \u001b[1menergy_sum_smeared\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mevtid\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mglobal_evtid\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mrpos_loc\u001b[0m · array<1>{array<1>{real}} \n", - " │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - " │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mt0\u001b[0m · array<1>{real} \n", - " ├── \u001b[1mtime\u001b[0m · array<1>{array<1>{real}} \n", - " │ ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - " │ └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n", - " └── \u001b[1mzpos_loc\u001b[0m · array<1>{array<1>{real}} \n", - " ├── \u001b[1mcumulative_length\u001b[0m · array<1>{real} \n", - " └── \u001b[1mflattened_data\u001b[0m · array<1>{real} \n" - ] - } - ], - "source": [ - "lh5.show(\"output/hit/output.lh5\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The new format is a factor of x17 times smaller than the input file due to the removal of many *step* based fields which use a lot of memory and due to the removal of the *vertices* table and the LAr hits. So we can easily read the whole file into memory.\n", - "We use *awkward* to analyse the output files." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "data_det001 = lh5.read_as(\"det001/hit\", \"output/hit/output.lh5\", \"ak\")\n", - "data_det002 = lh5.read_as(\"det002/hit\", \"output/hit/output.lh5\", \"ak\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
[{edep: [0.0826, 0.00863, ..., 32.3], time: [1.32e+15, ...], t0: 1.32e+15, ...},\n",
-       " {edep: [0.103, 0.0256, ..., 37.6, 6.44], time: [...], t0: 1.24e+15, ...},\n",
-       " {edep: [0.0824, 0.00863, ..., 16.8], time: [2.21e+14, ...], t0: 2.21e+14, ...},\n",
-       " {edep: [0.101, 0.0802, ..., 20.9], time: [9.09e+14, ...], t0: 9.09e+14, ...},\n",
-       " {edep: [0.00332, 0.0171, ..., 45, 27.7], time: [...], t0: 4.26e+13, ...},\n",
-       " {edep: [0.0845, 0.00863, ..., 27.9], time: [6.86e+14, ...], t0: 6.86e+14, ...},\n",
-       " {edep: [0.0065, 0.255, ..., 41.5, 2.69], time: [...], t0: 1.24e+14, ...},\n",
-       " {edep: [0.0388, 0.188, ..., 1.1, 41.5], time: [...], t0: 6.48e+14, ...},\n",
-       " {edep: [0.00332, 0.116, ..., 16.2], time: [4.39e+14, ...], t0: 4.39e+14, ...},\n",
-       " {edep: [0.00615, 0.0204, ..., 22.1], time: [7.11e+14, ...], t0: 7.11e+14, ...},\n",
-       " ...,\n",
-       " {edep: [0.19, 0.0171, ..., 42.2, 10.9], time: [...], t0: 1.1e+15, ...},\n",
-       " {edep: [0.0118, 0.0303, ..., 34.5, 21.4], time: [...], t0: 1.51e+15, ...},\n",
-       " {edep: [0.0204, 0.152, ..., 2.79, 51.9], time: [...], t0: 9.73e+14, ...},\n",
-       " {edep: [0.118, 0.0254, ..., 41.2, 38.6], time: [...], t0: 9.67e+14, ...},\n",
-       " {edep: [0.0824, 0.0254, ..., 34.6, 18.9], time: [...], t0: 6.64e+14, ...},\n",
-       " {edep: [0.148, 0.0802, ..., 40.9, 24], time: [...], t0: 5.56e+14, ...},\n",
-       " {edep: [0.022, 0.0148, ..., 34.8, 11.9], time: [...], t0: 6.52e+14, ...},\n",
-       " {edep: [0.0155, 0.118, ..., 0.458, 9.65], time: [...], t0: 3.97e+14, ...},\n",
-       " {edep: [0.0065, 0.00615, ..., 13.7], time: [3.98e+14, ...], t0: 3.98e+14, ...}]\n",
-       "--------------------------------------------------------------------------------\n",
-       "type: 835793 * {\n",
-       "    edep: var * float64,\n",
-       "    time: var * float64,\n",
-       "    t0: float64,\n",
-       "    evtid: float64,\n",
-       "    global_evtid: float64,\n",
-       "    distance_to_nplus_surface_mm: var * float64,\n",
-       "    activeness: var * int64,\n",
-       "    rpos_loc: var * float64,\n",
-       "    zpos_loc: var * float64,\n",
-       "    energy_sum: float64,\n",
-       "    energy_sum_deadlayer: float64,\n",
-       "    energy_sum_smeared: float64\n",
-       "}
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_det001" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Part 4) Steps in a standard processing chain" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The next part of the tutorial gives more details on each step of the processing chain.\n", - "\n", - "### 4.1) Windowing\n", - "We can compare the decay index (\"evtid\" in the \"stp\" file) to the index of the \"hit\", the row of the hit table.\n", - "We see that only some decays correspond to \"hits\" in the detector, as we expect. We also see that a single decay does not often produce multiple hits. This is also expected since the probability of detection is fairly low." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(0.0, 100.0)" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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X7OiPvvsM/n7++uHH36o8XsfOXJENptNK1asuOS5d955p1q1amV/ffz4cYWEhOi9996rvgABAHCCZAAAACWsWLFCNpvN/hMYGKiYmBglJiZq0aJFOnnypKdDhBN/+ctfdOutt6ply5bVdo/Vq1fr6aefdus1w8PD9f/+3//TrFmz3HpdAAAupZ6nAwAAoDaaP3++4uLiVFBQoPT0dH300UeaMmWKnnrqKb399tvq3Lmzp0OskoMHD8rHp258J7Bnzx59+OGH2rFjR7XeZ/Xq1dq/f7+mTJniMN6yZUudOXNGfn5+Ll33vvvu06JFi7RlyxYNHDjQDZECAHBpJAMAAHDihhtuUI8ePeyvZ8yYoS1btmjo0KH67W9/q6+//lpBQUEejLBqAgICPB2C2yxfvlyxsbG65pprPHL/4goSV7Vv314dO3bUihUrSAYAAGpM3fhKAACAGjBw4EDNmjVLP/zwg1auXOlw7JtvvtHvfvc7hYWFKTAwUD169NDbb79d5hrZ2dmaOnWqWrVqpYCAADVv3lx33HGHMjMzJUnnzp3T7Nmz1b17d4WGhiokJER9+/bV1q1b7dcwxqhVq1YaPnx4meufPXtWoaGh+v3vf3/RZynd31/cHvHJJ59o2rRpatKkiUJCQnTTTTfp119/dXivMUaPPvqomjdvruDgYA0YMEBfffWV0/tkZ2drypQpatGihQICAnTZZZdpwYIFKioqsl9rwIABatKkiY4dO2Z/37lz59SpUye1adNGp0+fvuizrF+/XgMHDpTNZitzbOPGjerbt69CQkLUoEEDDRkyxCHWv/3tb7LZbE7XGpgxY4b8/f114sQJ9e/fX++++65++OEHewtJce9/eWsGrF+/Xh07dlRgYKA6duyoN998s9xnGDRokN555x0ZYy76rAAAuAvJAAAAKmHcuHGSpA8++MA+9tVXX+maa67R119/renTp+vvf/+7QkJCNGLECIcPgKdOnVLfvn21ePFiDR48WM8884zuu+8+ffPNN/rpp58kSbm5ufqf//kf9e/fXwsWLNDcuXP166+/KjExUXv27JF04Zvo22+/XRs3blRWVpZDfO+8845yc3N1++23u/R8kydP1t69ezVnzhz94Q9/0DvvvKNJkyY5nDN79mzNmjVLXbp00ZNPPqnWrVtr8ODBZT605+Xl6brrrtPKlSt1xx13aNGiRerdu7dmzJihadOm2Z/ln//8p86ePav77rvP/t45c+boq6++0vLlyxUSElJuvD///LPS0tJ01VVXlTn28ssva8iQIapfv74WLFigWbNm6cCBA+rTp4+OHDkiSbrllltks9n02muvlXn/a6+9psGDB6tx48b6y1/+oq5duyoiIkIvv/yyXn755YuuH/DBBx9o1KhRstlsSkpK0ogRI3TXXXfp888/d3p+9+7dlZ2dXW5SBQAAtzMAAMBu+fLlRpJJSUkp95zQ0FDTrVs3++vrr7/edOrUyZw9e9Y+VlRUZK699lpz+eWX28dmz55tJJl169aVuWZRUZExxpjz58+b/Px8h2MnTpwwkZGR5u6777aPHTx40Egyzz//vMO5v/3tb02rVq3s1ytPy5Ytzfjx48s8d0JCgsN7p06danx9fU12drYxxphjx44Zf39/M2TIEIfzZs6caSQ5XPORRx4xISEh5ttvv3W49/Tp042vr69JS0uzjy1btsxIMitXrjSffvqp8fX1NVOmTLnoMxhjzIcffmgkmXfeecdh/OTJk6ZRo0bm3nvvdRhPT083oaGhDuPx8fGme/fuDud99tlnRpL597//bR8bMmSIadmyZZkYDh8+bCSZ5cuX28e6du1qoqOj7X9uxhjzwQcfGElOr7Fjxw4jyaxZs+aSzwwAgDtQGQAAQCXVr1/fvqtAVlaWtmzZoltuuUUnT55UZmamMjMzdfz4cSUmJurQoUP6+eefJUlvvPGGunTpoptuuqnMNYtL3H19feXv7y9JKioqUlZWls6fP68ePXpo9+7d9vPbtm2rXr16adWqVfaxrKwsbdy4UWPHjnVaMl8REyZMcHhv3759VVhYaC+j//DDD3Xu3DlNnjzZ4bzSi+pJ0tq1a9W3b181btzY/ueSmZmphIQEFRYWatu2bQ73TUxM1OTJkzVu3Di1adNGjz/++CXjPX78uCSpcePGDuPJycnKzs7Wrbfe6nBvX19f9erVy6HtYvTo0UpNTdV3331nH1uzZo0CAgKctmJcytGjR7Vnzx6NHz9eoaGh9vFBgwbpyiuvdPqe4viL20UAAKhuJAMAAKikU6dOqUGDBpKk//u//5MxRrNmzVKTJk0cfubMmSNJ9l747777Th07drzk9f/1r3+pc+fOCgwMVHh4uJo0aaJ3331XOTk5Dufdcccd+uSTT+wf1NeuXauCggJ7K4MrYmNjHV4Xf0g9ceKEJNnvdfnllzuc16RJkzIfyA8dOqRNmzaV+XNJSEiQJIc1AiTppZdeUl5eng4dOqQVK1ZUaoFGU6rX/tChQ5IurPNQ+v4ffPCBw71vvvlm+fj4aM2aNfZrrV27VjfccIMaNmxY4RiKlfdnJElXXHHFReN3NYkDAEBlsZsAAACV8NNPPyknJ0eXXXaZJNkXwvvzn/+sxMREp+8pPrciVq5cqTvvvFMjRozQgw8+qKZNm8rX11dJSUkO31xL0pgxYzR16lStWrVKM2fO1MqVK9WjR49yP3BWhK+vr9Px0h+2K6KoqEiDBg3SQw895PR427ZtHV5/9NFHys/PlyTt27dP8fHxl7xHeHi4pP8mK0reW7qwbkBUVFSZ99Wr999/AsXExKhv37567bXXNHPmTH366adKS0vTggULLnl/dymOPyIiosbuCQCwNpIBAABUwssvvyxJ9g/+rVu3liT5+fnZv/EuT5s2bbR///6LnvP666+rdevWWrduncO3xMVVBiWFhYVpyJAhWrVqlcaOHatPPvnkoovauUPLli0lXfjmvfjZJenXX38t84G8TZs2OnXq1CX/XKQLpfWTJ0/W4MGD5e/vb0+uFN+vPO3atZMkHT58uMy9Jalp06YVuv/o0aN1//336+DBg1qzZo2Cg4M1bNgwh3Mq+q19yT+j0g4ePOj0PcXxt2/fvkL3AACgqmgTAACggrZs2aJHHnlEcXFxGjt2rKQLHzb79++vZcuW6ejRo2XeU3JbvlGjRmnv3r1Ot5gr/ua9+Jv5kt/E79q1Szt37nQa07hx43TgwAE9+OCD8vX11ZgxY1x/wApISEiQn5+fFi9e7BCjsyTELbfcop07d+r9998vcyw7O1vnz5+3v7733ntVVFSkl156SS+88ILq1aune+6555IVCc2aNVOLFi3KrNKfmJiohg0b6vHHH1dBQUGZ95XeLnHUqFHy9fXVK6+8orVr12ro0KFldjEICQkp06rhTHR0tLp27ap//etfDucnJyfrwIEDTt+Tmpqq0NBQdejQ4ZLXBwDAHagMAADAiY0bN+qbb77R+fPnlZGRoS1btig5OVktW7bU22+/rcDAQPu5S5YsUZ8+fdSpUyfde++9at26tTIyMrRz50799NNP2rt3ryTpwQcf1Ouvv66bb75Zd999t7p3766srCy9/fbbWrp0qbp06aKhQ4dq3bp1uummmzRkyBAdPnxYS5cu1ZVXXqlTp06ViXPIkCEKDw+397g3bdq0Wv9cmjRpoj//+c9KSkrS0KFDdeONN+qLL77Qxo0by5S4P/jgg3r77bc1dOhQ3XnnnerevbtOnz6tffv26fXXX9eRI0cUERGh5cuX691339WKFSvUvHlzSdLixYt1++236/nnn9f9999/0ZiGDx+uN998U8YY+7f3DRs21PPPP69x48bpqquu0pgxY9SkSROlpaXp3XffVe/evfXss8/ar9G0aVMNGDBATz31lE6ePKnRo0eXuU/37t21Zs0aTZs2TT179lT9+vXLVA8US0pK0pAhQ9SnTx/dfffdysrK0uLFi9WhQwenf4/JyckaNmwYawYAAGqOp7YxAACgNireYq/4x9/f30RFRZlBgwaZZ555xuTm5jp933fffWfuuOMOExUVZfz8/EyzZs3M0KFDzeuvv+5w3vHjx82kSZNMs2bNjL+/v2nevLkZP368yczMNMZc2GLw8ccfNy1btjQBAQGmW7duZsOGDWb8+PFOt6Qzxpj777/fSDKrV6+u8HOWt7Vg6S0Vt27daiSZrVu32scKCwvNvHnzTHR0tAkKCjL9+/c3+/fvL3NNYy5s8Tdjxgxz2WWXGX9/fxMREWGuvfZa87e//c2cO3fO/PjjjyY0NNQMGzasTIw33XSTCQkJMd9///1Fn2X37t1Gkvnf//3fMse2bt1qEhMTTWhoqAkMDDRt2rQxd955p/n888/LnPviiy8aSaZBgwbmzJkzZY6fOnXK3HbbbaZRo0YOWwQ621rQGGPeeOMN0759exMQEGCuvPJKs27dOqd/j19//bWRZD788MOLPicAAO5kM8aFFYEAAECtMXXqVL300ktKT09XcHCwp8PxiOuvv14xMTH2NR28yZQpU7Rt2zalpqZSGQAAqDEkAwAA8GJnz55VixYtNHToUC1fvtzT4XjMrl271LdvXx06dOiSiw7WJsePH1fLli312muv6cYbb/R0OAAACyEZAACAFzp27Jg+/PBDvf7661q/fr12796trl27ejosAADgJVhAEAAAL3TgwAGNHTtWTZs21aJFi0gEAACASqEyAAAAAAAAi/HxdAAAAAAAAKBmkQwAAAAAAMBiSAYAAAAAAGAxJAMAAAAAALAYkgEAAAAAAFgMyQAAAAAAACyGZAAAAAAAABZDMgAAAAAAAIv5/4CyRXsT+mUiAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.scatter(np.sort(data_det001.global_evtid), np.arange(len(data_det001)), marker=\".\", alpha=1)\n", - "plt.xlabel(\"Decay index (evtid)\")\n", - "plt.ylabel(\"Hit Index\")\n", - "plt.grid()\n", - "plt.xlim(0, 1000)\n", - "plt.ylim(0, 100)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, we can use some array manipulation to extract decay index with multiple hits, by plotting the times we see the effect of the windowing." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "def plot_times(times: ak.Array, xrange=None, sub_zero=False, **kwargs):\n", - " fig, ax = plt.subplots()\n", - " for idx, _time in enumerate(times):\n", - " if sub_zero:\n", - " _time = _time - ak.min(_time)\n", - " h = hist.new.Reg(\n", - " 100, (ak.min(times) / 1e9), (ak.max(times) / 1e9) + 1, name=\"Time since event start [s]\"\n", - " ).Double()\n", - " h.fill(_time / 1e9)\n", - " h.plot(**kwargs, label=f\"Hit {idx}\")\n", - " ax.legend()\n", - " ax.set_yscale(\"log\")\n", - " if xrange is not None:\n", - " ax.set_xlim(*xrange)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "unique, counts = np.unique(data_det001.global_evtid, return_counts=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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3N3dnX1mzJih999/X+vWrdP27dt1+vRp3X333c79paWlGj58uIqLi7V79269+eabSk5O1ty5c519Tpw4oeHDh2vIkCE6dOiQpk+frkceeUQff/yxs09KSooSEhI0b948HThwQGFhYYqOjtbZs2cb4J1Bc9IY67TMypUrdebMGefPiBEjnPtYp6hKfazRoqIi3XnnnXriiSeqPM7999+vzz77TGlpafrggw+0Y8cOTZo0ybm/oKBAw4YNU6dOnZSZmamXXnpJTz/9tF5//XVnn927d+u+++7Tww8/rIMHD2rEiBEaMWKEjhw5Ug/vBJqrxlqjkvTss8+W+3f0sccec+5jjaIqdV2jp0+f1unTp/Xyyy/ryJEjSk5OVmpqqh5++GHnHHwmRV00xhot02w+jxowBUnGhg0byrWNHTvWeOCBB6occ/78eaNFixbGunXrnG2ff/65IcnIyMgwDMMwNm3aZLi4uBg5OTnOPkuXLjW8vb2NixcvGoZhGLNnzzZ69OhR4djR0dHO7f79+xt2u925XVpaagQGBhrz58+v+YvFNauh1mlVc/8S6xTVUZs1+ktbt241JBnff/99ufasrCxDkrFv3z5n20cffWRYLBbj1KlThmEYxmuvvWb4+vo6/201DMP44x//aNxyyy3O7TFjxhjDhw8vN3d4eLgxefLkatWHa19DrVHDMIxOnToZr7zySpVjWaOojrqu0TJvv/22YbVajZKSEsMw+EyK+tNQa7SquX+pMdcoZwSYlMPh0Icffqhu3bopOjpafn5+Cg8PL3caTGZmpkpKSmSz2Zxtt956q4KDg5WRkSFJysjIUK9eveTv7+/sEx0drYKCAn322WfOPr+co6xP2RzFxcXKzMws18fFxUU2m83ZB+ZUX+u0jN1uV7t27dS/f3+tWLFCP/97/DPWKWqjOmu0OjIyMtS6dWv17dvX2Waz2eTi4qJPPvnE2WfQoEGyWq3OPtHR0crOztb333/v7HOldQzzqa81WubFF19U27Ztddttt+mll14qd9o1axS1Uds1mp+fL29vb7m5uUniMykaTn2t0TLN5fMoQYBJnT17VhcuXNCLL76oO++8U//85z81cuRI3X333dq+fbskKScnR1arVa1bty431t/fXzk5Oc4+v/wHt2x/2b4r9SkoKNCPP/6ovLw8lZaWVtqnbA6YU32tU+nn01nffvttpaWl6Z577tGjjz6qxYsXO/ezTlEb1Vmj1ZGTkyM/P79ybW5ubmrTpk29/HvLGjWv+lqjkjR16lStXbtWW7du1eTJk5WYmKjZs2c797NGURu1WaN5eXl67rnnyl0+xWdSNJT6WqNS8/o86nb1LrgeORwOSdJdd92lGTNmSJJ69+6t3bt3a9myZRo8eHBTlgdIqt91+tRTTzn/+7bbblNhYaFeeuklTZ06tX6Lhqnwbymau/pcowkJCc7//tWvfiWr1arJkydr/vz5atmyZf0WDtOo6RotKCjQ8OHDFRoaqqeffrqxy4UJ1ecabU6fRzkjwKTatWsnNzc3hYaGlmvv3r278+6XAQEBKi4urnDn4NzcXAUEBDj7XH539rLtq/Xx9vaWh4eH2rVrJ1dX10r7lM0Bc6qvdVqZ8PBw/ec//9HFixed87BOUVPVWaPVERAQUOEmP5cuXdJ3331XL//eskbNq77WaGXCw8N16dIlff3115JYo6idmqzRH374QXfeeae8vLy0YcMGtWjRwrmPz6RoKPW1RivTlJ9HCQJMymq1ql+/fsrOzi7XfvToUXXq1EmS1KdPH7Vo0ULp6enO/dnZ2Tp58qQGDBggSRowYIA+/fTTch9g09LS5O3t7fx/lgEDBpSbo6xP2RxWq1V9+vQp18fhcCg9Pd3ZB+ZUX+u0MocOHZKvr6/zr1isU9RGddZodQwYMEDnz59XZmams23Lli1yOBwKDw939tmxY4dKSkqcfdLS0nTLLbfI19fX2edK6xjmU19rtDKHDh2Si4uL87IW1ihqo7prtOypFFarVe+99165p15IfCZFw6mvNVqZJv08WqNbC+Ka8sMPPxgHDx40Dh48aEgyFi5caBw8eND4v//7P8MwDGP9+vVGixYtjNdff9348ssvjcWLFxuurq7Gv/71L+ccv//9743g4GBjy5Ytxv79+40BAwYYAwYMcO6/dOmS0bNnT2PYsGHGoUOHjNTUVKN9+/bG448/7uzz1VdfGZ6ensasWbOMzz//3EhKSjJcXV2N1NRUZ5+1a9caLVu2NJKTk42srCxj0qRJRuvWrcvd+RXXp8ZYp++9957xxhtvGJ9++qnx5ZdfGq+99prh6elpzJ0719mHdYqq1McaPXPmjHHw4EHjjTfeMCQZO3bsMA4ePGh8++23zj533nmncdtttxmffPKJsXPnTqNr167Gfffd59x//vx5w9/f33jwwQeNI0eOGGvXrjU8PT2Nv/zlL84+u3btMtzc3IyXX37Z+Pzzz4158+YZLVq0MD799NNGeKfQVBpjje7evdt45ZVXjEOHDhnHjx83/va3vxnt27c3xo8f75yDNYqq1HWN5ufnG+Hh4UavXr2MY8eOGWfOnHH+XLp0yTAMPpOibhpjjTa3z6MEAdexskcAXf4TFxfn7LN8+XLj5ptvNtzd3Y2wsDBj48aN5eb48ccfjUcffdTw9fU1PD09jZEjRxpnzpwp1+frr782YmJiDA8PD6Ndu3bGH/7wh3KPySirpXfv3obVajW6dOlirFy5skK9ixcvNoKDgw2r1Wr079/f2LNnT729F2i+GmOdfvTRR0bv3r2NG264wWjVqpURFhZmLFu2zCgtLa1QC+sUl6uPNTpv3rxK5/jlGvv222+N++67z7jhhhsMb29vIz4+3vjhhx/KzXP48GHjN7/5jdGyZUujQ4cOxosvvlih3rffftvo1q2bYbVajR49ehgffvhhvb4faH4aY41mZmYa4eHhho+Pj+Hu7m50797dSExMNH766ady87BGUZm6rtGqxksyTpw44ezHZ1LUVmOs0eb2edRiGL94XgEAAAAAALiucY8AAAAAAABMhCAAAAAAAAATIQgAAAAAAMBECAIAAAAAADARggAAAAAAAEyEIAAAAAAAABMhCAAAAAAAwEQIAgAAAAAAMBGCAACA6U2YMEGdO3du6jJq5Omnn5bFYmnqMtBMJScny2KxOH/y8vJqNL5169bOsVOmTGmgKgEATYUgAABwXfrll6Ar/Wzbtq2pS0UTSUxM1MaNG+ttvt27d+vpp5/W+fPn623OX6pNva+88opWr14tLy+vGo17/fXXtXr16hqNAQBcOyyGYRhNXQQAAPXtb3/7W7ntVatWKS0trcKXmzvuuENt2rSRw+FQy5YtG7PEOrl06ZIuXbokd3f3pi7lmnXDDTdo1KhRSk5Orpf5Xn75Zc2aNUsnTpxokDNMalJvcnKy4uPj61yLxWKR3W7XkiVLaj0HAKD5cWvqAgAAaAgPPPBAue09e/YoLS2tQvu1ys3NTW5u/M/49c4wDP3000/y8PBo6lIAANcRLg0AAJje5fcI+Prrr2WxWPTyyy8rKSlJXbp0kaenp4YNG6ZvvvlGhmHoueeeU1BQkDw8PHTXXXfpu+++qzDvRx99pIiICLVq1UpeXl4aPny4Pvvss6vWU1JSomeeeUZdu3aVu7u72rZtq9/85jdKS0tz9qnsHgFl13Nv3LhRPXv2VMuWLdWjRw+lpqZWOMapU6f08MMPKzAwUC1btlRISIj+53/+R8XFxc4+58+f1/Tp09WxY0e1bNlSN998sxYsWCCHw1Gdt/Wqr//ll1+WxWLR//3f/1UY+/jjj8tqter77793tn3yySe688475ePjI09PTw0ePFi7du0qN67sfTl27JgmTJig1q1by8fHR/Hx8SoqKir3XhUWFurNN990XiYyYcKEK76exYsXq0ePHvL09JSvr6/69u2rNWvWOI87a9YsSVJISIhzzq+//lqStHLlSkVFRcnPz08tW7ZUaGioli5dWuEYnTt31m9/+1t9/PHH6tu3rzw8PPSXv/ylVvVW5csvv9Q999yjgIAAubu7KygoSPfee6/y8/NrNR8A4NrDnxIAAKjCW2+9peLiYj322GP67rvv9Kc//UljxoxRVFSUtm3bpj/+8Y86duyYFi9erJkzZ2rFihXOsatXr1ZcXJyio6O1YMECFRUVaenSpfrNb36jgwcPXvF07aefflrz58/XI488ov79+6ugoED79+/XgQMHdMcdd1yx5p07d2r9+vV69NFH5eXlpVdffVX33HOPTp48qbZt20qSTp8+rf79++v8+fOaNGmSbr31Vp06dUrvvPOOioqKZLVaVVRUpMGDB+vUqVOaPHmygoODtXv3bj3++OM6c+aMFi1adMU6qvP6x4wZo9mzZ+vtt992foku8/bbb2vYsGHy9fWVJG3ZskUxMTHq06eP5s2bJxcXF+eX63/961/q379/ufFjxoxRSEiI5s+frwMHDuivf/2r/Pz8tGDBAmd9Ze/vpEmTJEk33XRTla/njTfe0NSpUzVq1ChNmzZNP/30k/7973/rk08+0bhx43T33Xfr6NGj+vvf/65XXnlF7dq1kyS1b99ekrR06VL16NFDv/vd7+Tm5qb3339fjz76qBwOh+x2e7ljZWdn67777tPkyZM1ceJE3XLLLTWutyrFxcWKjo7WxYsX9dhjjykgIECnTp3SBx98oPPnz8vHx6fGcwIArkEGAAAmYLfbjar+Zy8uLs7o1KmTc/vEiROGJKN9+/bG+fPnne2PP/64IckICwszSkpKnO333XefYbVajZ9++skwDMP44YcfjNatWxsTJ04sd5ycnBzDx8enQvvlwsLCjOHDh1+xz7x58yq8HkmG1Wo1jh075mw7fPiwIclYvHixs238+PGGi4uLsW/fvgrzOhwOwzAM47nnnjNatWplHD16tNz+OXPmGK6ursbJkyerrK0mr3/AgAFGnz59yvXbu3evIclYtWqVs6auXbsa0dHRzvoMwzCKioqMkJAQ44477qjwvjz00EPl5hw5cqTRtm3bcm2tWrUy4uLiqnwdv3TXXXcZPXr0uGKfl156yZBknDhxosK+oqKiCm3R0dFGly5dyrV16tTJkGSkpqZW6F+TeleuXFlpLQcPHjQkGevWravWPJIMu91erb4AgGsHlwYAAFCF0aNHl/sLaXh4uKSf7z/wy+vzw8PDVVxcrFOnTkmS0tLSdP78ed13333Ky8tz/ri6uio8PFxbt2694nFbt26tzz77TF9++WWNa7bZbOX+UvyrX/1K3t7e+uqrryRJDodDGzduVGxsrPr27VthfNnlBuvWrVNERIR8fX3LvQabzabS0lLt2LGjyhpq8vrHjh2rzMxMHT9+3NmWkpKili1b6q677pIkHTp0SF9++aXGjRunb7/91jlfYWGhhg4dqh07dlS4XOH3v/99ue2IiAh9++23KigoqO5bWU7r1q31n//8R/v27avV+F9e45+fn6+8vDwNHjxYX331VYVT8kNCQhQdHV2r41xN2Xr++OOPy10qAQAwFy4NAACgCsHBweW2y75EdezYsdL2suvZy77AR0VFVTqvt7f3FY/77LPP6q677lK3bt3Us2dP3XnnnXrwwQf1q1/9qsY1S5Kvr6+ztnPnzqmgoEA9e/a84jxffvml/v3vfztPbb/c2bNnrzhWqt7rHz16tBISEpSSkqInnnhChmFo3bp1iomJcfYrmy8uLq7KY+bn5zsvI5Aqvg9l+77//vurvv+V+eMf/6jNmzerf//+uvnmmzVs2DCNGzdOAwcOrNb4Xbt2ad68ecrIyKjwBTw/P79c4BQSElLj+qorJCRECQkJWrhwod566y1FRETod7/7nR544AEuCwAAEyEIAACgCq6urjVqN/7fE3nL/jq9evVqBQQEVOh3tbv9Dxo0SMePH9e7776rf/7zn/rrX/+qV155RcuWLdMjjzxSq5qNGj4t2OFw6I477tDs2bMr3d+tW7crjpWq9/oDAwMVERGht99+W0888YT27NmjkydPOq/l/+V8L730knr37l3pMW+44YZy2/X1PpTp3r27srOz9cEHHyg1NVX/+Mc/9Nprr2nu3Ll65plnrjj2+PHjGjp0qG699VYtXLhQHTt2lNVq1aZNm/TKK69UOJuhoZ8Q8Oc//1kTJkxwrq+pU6dq/vz52rNnj4KCghr02ACA5oEgAACAelZ2ar6fn59sNlut5mjTpo3i4+MVHx+vCxcuaNCgQXr66aevGgRcTfv27eXt7a0jR45csd9NN92kCxcu1Kr+mr7+sWPH6tFHH1V2drZSUlLk6emp2NjYCvN5e3vX+v2szOVPXbiaVq1aaezYsRo7dqyKi4t1991364UXXtDjjz8ud3f3Kud7//33dfHiRb333nvlzlS42iUida33Snr16qVevXrpySef1O7duzVw4EAtW7ZMzz//fL0dAwDQfHGPAAAA6ll0dLS8vb2VmJiokpKSCvvPnTt3xfHffvttue0bbrhBN998sy5evFjn2lxcXDRixAi9//772r9/f4X9ZX8xHzNmjDIyMvTxxx9X6HP+/HldunSpymPU9PXfc889cnV11d///netW7dOv/3tb9WqVSvn/j59+uimm27Syy+/rAsXLlx1vupq1aqVzp8/X62+l/9OrFarQkNDZRiG8zWW1Xz5nGVnJ/zybIT8/HytXLmyweqtSkFBQYXfXa9eveTi4lIv6wsAcG3gjAAAAOqZt7e3li5dqgcffFC333677r33XrVv314nT57Uhx9+qIEDB2rJkiVVjg8NDVVkZKT69OmjNm3aaP/+/XrnnXc0ZcqUeqkvMTFR//znPzV48GBNmjRJ3bt315kzZ7Ru3Trt3LlTrVu31qxZs/Tee+/pt7/9rSZMmKA+ffqosLBQn376qd555x19/fXXzkfk1fX1+/n5aciQIVq4cKF++OEHjR07ttx8Li4u+utf/6qYmBj16NFD8fHx6tChg06dOqWtW7fK29tb77//fo3fhz59+mjz5s1auHChAgMDFRIS4rwh5OWGDRumgIAADRw4UP7+/vr888+1ZMkSDR8+XF5eXs75JOl///d/de+996pFixaKjY3VsGHDZLVaFRsbq8mTJ+vChQt644035OfnpzNnzjRIvVXZsmWLpkyZotGjR6tbt266dOmSVq9eLVdXV91zzz01mgsAcO0iCAAAoAGMGzdOgYGBevHFF/XSSy/p4sWL6tChgyIiIhQfH3/FsVOnTtV7772nf/7zn7p48aI6deqk559/XrNmzaqX2jp06KBPPvlETz31lN566y0VFBSoQ4cOiomJkaenpyTJ09NT27dvV2JiotatW6dVq1bJ29tb3bp10zPPPHPVG8vV9PWPHTtWmzdvlpeXl/77v/+7wv7IyEhlZGToueee05IlS3ThwgUFBAQoPDxckydPrtX7sHDhQk2aNElPPvmkfvzxR8XFxVX5xXry5Ml66623tHDhQl24cEFBQUGaOnWqnnzySWeffv366bnnntOyZcuUmpoqh8OhEydO6JZbbtE777yjJ598UjNnzlRAQID+53/+R+3bt9dDDz3UIPVWJSwsTNHR0Xr//fd16tQpeXp6KiwsTB999JH+67/+q0ZzAQCuXRajtnfNAQAAQLOUnJys+Ph4HThwQB07dlTbtm1rdI+B7777Tg6HQ+3bt5fdbr/iGSwAgGsPZwQAAABcp26//XZJP99HoapLOSrTpUsX5efnN1RZAIAmRhAAAABwnYmOjlZaWppz+2qXclzu3Xffdd4EsWPHjvVaGwCg6XFpAAAAAAAAJsLjAwEAAAAAMBGCAAAAAAAATIQgAAAAAAAAEyEIAAAAAADARAgCAAAAAAAwEYIAAAAAAABMhCAAAAAAAAATIQgAAAAAAMBECAIAAAAAADCR/w/ZFHzxSwQrRQAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_times(\n", - " data_det001[data_det001.global_evtid == unique[counts > 1][1]].time, histtype=\"step\", yerr=False\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.2) Distance to surface and dead layer\n", - "One of the important step in the post-processing of HPGe detector simulations is the detector activeness mapping. Energy deposited close to the surface of the Germanium detector will result in incomplete charge collection and a degraded signal.\n", - "To account for this we added a processor to compute the distance to the detector surface (based on `legendhpges.base.HPGe.distance_to_surface()`)\n", - "\n", - "For the steps in the detector we extracted in the processing chain the local r and z coordinates and we can plot maps of the distance to the detector surface and the activeness for each step. We select only events within 5 mm of the surface for the first plots. We can see that the processor works as expected." - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "def plot_map(field, scale=\"BuPu\", clab=\"Distance [mm]\"):\n", - " fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True)\n", - " n = 100000\n", - " for idx, (data, config) in enumerate(\n", - " zip([data_det001, data_det002], [\"cfg/metadata/BEGe.json\", \"cfg/metadata/Coax.json\"])\n", - " ):\n", - " reg = pg4.geant4.Registry()\n", - " hpge = legendhpges.make_hpge(config, registry=reg)\n", - "\n", - " legendhpges.draw.plot_profile(hpge, split_by_type=True, axes=axs[idx])\n", - " rng = np.random.default_rng()\n", - " r = rng.choice([-1, 1], p=[0.5, 0.5], size=len(ak.flatten(data.rpos_loc))) * ak.flatten(\n", - " data.rpos_loc\n", - " )\n", - " z = ak.flatten(data.zpos_loc)\n", - " c = ak.flatten(data[field])\n", - " cut = c < 5\n", - "\n", - " s = axs[idx].scatter(\n", - " r[cut][0:n], z[cut][0:n], c=c[cut][0:n], marker=\".\", label=\"gen. points\", cmap=scale\n", - " )\n", - " # axs[idx].axis(\"equal\")\n", - "\n", - " if idx == 0:\n", - " axs[idx].set_ylabel(\"Height [mm]\")\n", - " c = plt.colorbar(s)\n", - " c.set_label(clab)\n", - "\n", - " axs[idx].set_xlabel(\"Radius [mm]\")" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[32mroot [INFO] genericpolycone.antlr>\u001b[0m\n", - "\u001b[32mroot [INFO] genericpolyhedra.antlr>\u001b[0m\n", - "\u001b[32mroot [INFO] visualisation.Mesh.getBoundingBox> [-36.98, -36.98, 0.0] [36.98, 36.98, 29.46]\u001b[0m\n", - "\u001b[32mroot [INFO] box.pycsgmesh> getBoundingBoxMesh\u001b[0m\n", - "\u001b[32mroot [INFO] genericpolycone.antlr>\u001b[0m\n", - "\u001b[32mroot [INFO] genericpolyhedra.antlr>\u001b[0m\n", - "\u001b[32mroot [INFO] visualisation.Mesh.getBoundingBox> [-38.25, -38.25, 0.0] [38.25, 38.25, 84.0]\u001b[0m\n", - "\u001b[32mroot [INFO] box.pycsgmesh> getBoundingBoxMesh\u001b[0m\n" - ] - }, - { - "data": { - "image/png": "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Y3s/qqElGVbFCNlUpuFo2CRkKgwF0ybU9wvEAczqMF7W7ve+MgxyXg4bh5x28LRMaybESKrUun7G/rvxzxf/iYfL127/GvscPY9MNlN+sKzLpz51MfvsPbOsrn/6qSf5wEnzaR5TT0tTIx8+9UO89eab/aZprChS1wckGBdCiBJnnnkmmUyGW265hVNOOYVvf/vbXHbZZcHye+65h2nTpvHlL3+Zb3zjG0yZMoVPf/rTfPe73w3WaW1t5X3vex8rVqzg6quv5q677uK8887j+eefD9Z56qmnOOecc2hsbOS2227j1ltv5bjjjuMf//jHJst21llnkUwm+eMf/1j2fiqV4tFHH+WjH/0opuk/Rf/Zz37G+9//fmpra7ntttv46le/yptvvslRRx3FihUrdtCnJcTOzzIUtVWhzbY4GWEDptSXvae1ZtWat8veUyi6NnQNRTGFENugkuv6U044hVQ6xZ+efLRsaEsqneLJJx/nAx88Lajrf/PrX3H+uadTW1vL/950M9dcey2LF7/F/Pccy6qVK3fkRyaGiHRTF0KMvMWPwYq/wfSjYY9TRrQoM2bM4OGHHwbg8ssvJxaLcffdd/OFL3yBefPm8eyzz1JVMofwFVdcwUknncQ3v/lNLr/8cgD++c9/0tXVxZNPPslBBx0UrHvjjTcGv//xj38kFovxxBNPBJXqlhx11FFMmjSJBx54gDPOOKNsX8lkkrPOOguARCLBlVdeySWXXMK9994brHfhhRcyZ84cbr755rL3K4lSg0vQsjMmdRHDr28WYq3B9TRKKUKWQTo7cDdzhYINieC1B7z0xKP+FEP576afrV2z/JV3aTzpwCE8CyEqlNT1W1W2g/Y7iHEt4/jD44/y4VNOxwyHAHj6madIpZKcetrpACQTCb7y5S9y3vkX8u3v3kM0YmEaigsu+Bj77DWX2269hS/c9oXt+6CGiNT1RRKMCyG22/LTP4rT3j6obWuaepg47120B+r5u1n32m4kO+q3vOEmWGPHMuO3Dw56+0IlW/CZz3yGu+++m8cee4x58+aVVc49PT3Yts2xxx7LE088QU9PD/X19TQ0NADwhz/8gX333ZdQKNTvOA0NDSSTSZ566ilOOumkrSqbUoozzjiD73//+yQSCWprawF44IEHmDRpEkcddRTgP4nv7u7mnHPOob3k72KaJoceeih//etft+kzGVYyjkyMkMI9Xn54N+AH44XQ3HU1yWRuwG0dx8HoSEFLNSpk4rQnMAwTXI2p/E6Ijuei0YyZ1DS0JyIG7+kbYOlTMOsEmH+dHKsPqeuHvq43MEApTpl/Cr/63a/o7eqiYfJ4QPPwn37PhPETOfTwIwB49tm/0NPTzWkfOYMN61upqQljmQrTNDnkkEN55pln+AKVGYxLXV8kwbgQYrs57e04GzcOatvIxB6/cjZAexAJb6RnY2bLGw6RWbNmlb2eOXMmhmEEXbv/8Y9/8LWvfY2FCxf2G7tdqKCPPfZYTj/9dK6//nq+9a1vcdxxx3Haaadx7rnnEolEAPj0pz/Nr3/9a04++WQmTZrE+973Ps4888wtVtZnnXUWd9xxB4888gjnnnsuiUSCxx57jE984hPBE+OlS5cC8N73vnfAfcRisW3+XIbNYOcR3QmflouRoRTB/Z5Sfndzz9O0daV44+12lGmgS6YVcuIZvJc25FcGnXXgnU6a6luI93QE85aHDIusm+Wh2x/icz/73Aicmdisp2+Av30DTxsYG17j1b+s4WX3wiE51BT9HPOrhudY+5v3sW/ogeBYwKADcqnrfUNV1ysMChef95/wfn78qx/z1HN/5qNnnUsqneTpZ/7MBedcCAkbVRfm3XffAeCjH37/gOcodf3oIMG4EGK7WWPHDnrbbDaKMt4NKulsbhzWuO17Wr4jlXaJeuedd5g/fz577LEH3/zmN5kyZQrhcJjHHnuMb33rW/6URvltHnzwQZ5//nkeffRRnnjiCT7+8Y/zjW98g+eff57a2lpaWlp45ZVXeOKJJ/jTn/7En/70J3784x/zsY99jPvuu2+T5TnssMOYPn06v/71rzn33HN59NFHSafTQRd1ICjHz372M8aPH99vH5ZVwZd+eVouRljpv3mlwHU9/vlWGwD1zbV02HHcfAO51hrvpZLgJD9djzW3hd43/0XWy5V9M5Vh0LlmcC2LYogtfcoPWJWHpw0m8G/+3n32kByqqe6NYTvWhKYXyo5lLP3zoINxqeuHtq7X+f8A9ttnPyZPnMyjTz7KGeecx5NPP0Emk+bUD3wYNHgpG51PCPnde37IuAnjg3OIhExMQxEO92+prxhS1wcq+I5MCDFabE9XMQAWP4Za8XeYfhQTF4zsOLKlS5cyY8aM4PWyZcvwPI/p06fz6KOPks1meeSRR5g6dWqwzqa6fR922GEcdthh3HTTTfzyl7/kvPPO4/777+eSSy4BIBwO88EPfpAPfvCDeJ7Hpz/9ab7//e/z1a9+ld13332TZTzzzDO58847icfjPPDAA0yfPp3DDjssWD5z5kwAWlpaOP7447fr8xh2yvB/BrOdEEMgErI4ePZYkmmbt1d1YYZNf3ohDW7Gzt8b+jeIruOiEzkwFRk3i5EfJ14YL66AIy84agTPRmzSrBMwNrwWBK7rOZiahsiQHKpD74WhHh2WY63nEFrU8uBYzBp8nSB1/fDW9accfwo/uf8+4p3dPPzoQ0yZPJUD9z8Y/+ID02fsBsDY5maOOfa9RCMmpmFgGgpDKUxTsbRryQ74tIaA1PUBCcaFECNvj1NGPJlLwXe/+13e9773Ba/vuusuAE4++WSee+45gKDbKfjd1X784x+X7aOrq4uGhoayJ+377bcfANlsFoCOjg6amopjRw3DYN68eWXrbMpZZ53F7bffzn333cfjjz/OZz/72bLlJ554IrFYjJtvvpn3vOc9/caxtbW10dzcvNljCCF8Xv7fe01ViIktdYRDJus35pO1KfKDyjVOPAttxe6s+x42n9eef7pfAremcTu2RU/sIPOv4+knQzR5b9Bh7MX8265h3yE72JHwtO23Us86nn3nXzekx3r6SzOK5zX/miE70hZJXb9Ndf2HP3g69/70Xn790AM887e/8F8XXFpcqBTvnX8CdXUx7vzW/3HCCcf7AXhh/nGtadvYBuGt+jjECJJgXAghSixfvpwPfehDnHTSSSxcuJCf//znnHvuuey7775Eo9HgCfcnPvEJEokEP/jBD2hpaWH9+vXBPu677z7uvvtuPvzhDzNz5kx6e3v5wQ9+QCwW45RT/BuRSy65hM7OTt773vcyefJkVq5cyV133cV+++3HnnvuudkyHnDAAey+++5ce+21ZLPZsi7q4I8Tu+eee7jgggs44IADOPvss2lubmbVqlX88Y9/5Mgjj+Q73/nOjv/wdgBlKNQguq6pnbDrmqgAGrK2W3az3dRQFQTjpmlCtQUpuywQ95dZzNn3cJa85k9zVLix33f+0IVdYvusVsewuPfQIWulLjP/uqFP3JY3rOc1SoyGun7fvfdnxtQZ3HbHzWRzWT508mnorIOKWBi1IerMCLd/404u/+R/cdQRh3DGGWfR3NLM6lWrePxPf+LwI47gqhuvHNLPcbCkri+SYFwIIUo88MADXHfddVx99dVYlsUVV1zB17/+dQDmzJnDgw8+yFe+8hW+8IUvMH78eD71qU/R3NzMxz/+8WAfxx57LC+88AL3338/GzdupL6+nkMOOYRf/OIXQbe4888/n3vvvZe7776b7u5uxo8fz1lnncWCBQswjC13wzrrrLO46aab2H333TnggAP6LT/33HOZOHEit956K1//+tfJZrNMmjSJo48+mosvvngHfVpDQMaRiUqQbxDztP9T2kJWvpqm9vjdSDzavyuo1ppIVXXZtsowCEelqUqIkVbpdb2RnwbtQyefxp3f/xYzps5g3l5+izoWQT15+hlnMXXqZL71ja9zx7e+QTabZeKkSRx55FF87MKhSQq4Q0hdH5BgXAghSjQ3N/Ob3/xmk8sL4776Kg1w999/f375y19u9jinn346p59++mbXOe644zYZBNx4441lc5luavvjjjtus+tUnkFmWN0JK2gxvLQu+eqVZFPPTz6O63kDbpd9txMV6T9/sFIK7Xpoir3Z7373nh1dbCHEIFRiXb/8P+8Gw2J0/nrzpauu4UtX9Rla0OdSdNTRx3DMsccCYBnl83ev6F222WOPHKnrC3a+UfBCCCFGr8LT8sH8CLGDKQUhyyCddWjr8cd3rt0Q97MZex7Z9b04y7r8levKczNorVFdaebNPIxaq5Y6q5b7//sXw30KQohRQqEwlUHYDFMVrh54pYgfunnxbPCwPptzC88McTyN42lcT2OZFVwvSl0fkGBcCCFExVBKDfpnsG699VaUUlx11VU77kTETsNQkM45gMsbS1rp6smC8hMxRSbUwYRaAEJTG1DjayBk4NkOXncKLL/F3DL8jojZVG6kTkMIMUoYhuk3ALte0DMHgIiByndtN2KRsnovk3WwHdd/oTXhkLFd9eJQk7q+SIJxIYQQu6x///vffP/73w+y24pd16bu8XKuJhoOsWxdgr491ZVS1MwbB9UhCJtYU2JYuzVCMuffOJoGtmcTz8VJOym6e7qH/DyEEKOPnbPRgKc9sk66eEHyNCpsoqosVMgC04DowKOMHUdjOx5GfmozUVTJdb0E40IIASxYsACtNWPHyrRDI2oYu64lEgnOO+88fvCDH9DY2DgEJyNGI611kMANDbGqEHVV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ixcv5v777z/gsmo0Go1GczBoWa9lvUZztKKVcc0xTUnw1NXVla+lUin+/d//nXPPPZcvfelLXH/99QwMDHDRRRfxpz/9qZxOKcWb3/xmvvOd7/De976XL3zhC+zcuZNLL730kJbxwx/+MN/4xje45JJL+PrXv87f/M3fEAqFeP755w8q39/+9rd86lOf4tJLL+X666/n+eef5w1veAO33nor//qv/8pHP/pRPv3pT/PII4/wgQ98YNr9IyMjvOENb2D16tXcdNNNBAIB3vWud3HXXXfxrne9i9e97nXceOONTExM8La3vY10On1Q5dVoNBqN5kDQsl7Leo3mqEVpNMcAd9xxhwLU/fffrwYGBtSOHTvU3XffrZqamlQgEFA7duwop3UcR+VyuZr7R0ZGVEtLi/rABz5QvvbjH/9YAeqmm26qufess85SgLrjjjvK16+77jpV3Z22bNkyLU0JQF133XXlz4lEQl155ZUv+Z0vvfRSNWfOnBm/A1QgEFBbtmwpX7v99tsVoFpbW1UqlSpfv+aaaxRQk/acc85RgPr+979fvrZu3ToFKCmlevTRR8vX77333r2+a6leBgYGXvL7aTQajUZTjZb105+hZb1Gc3SjN75ojinWrFlT87mnp4fvfve7dHZ2lq8ZhoFhGAB4nsfo6Cie57Fy5coad7Gf//znmKbJRz7ykZp7P/axj/Hb3/72kJU5mUzy2GOPsXv3btrb2w9Zvueffz49PT3lz6tXrwbgkksuIRaLTbu+efPmmvTRaJR3vetd5c+LFy8mmUzS0dFRvmfq/RqNRqPRvNxoWV9By3qN5uhGu6lrjiluvfVW7rvvPu6++25e97rXMTg4SCAQmJbuW9/6FieccALBYJCGhgaampr42c9+xtjYWDnNtm3baGtrIxqN1ty7ePHiQ1rmm266ibVr19LV1cWqVau4/vrrD4mw6+7urvmcSCQA6OrqmvH6yMhIzfXOzs5p56kmEon9vl+j0Wg0mpcDLesraFmv0RzdaGVcc0yxatUq1qxZwyWXXMJPfvITli9fzrvf/W7Gx8fLab773e9y2WWXMX/+fP7jP/6DX/7yl9x3332cd955eJ53SMoxVbCVcF132rV3vOMdbN68mVtuuYX29nZuvvlmli1bxi9+8YuDKkNpRWB/ryulDun9Go1Go9G8HGhZX0HLeo3m6EYr45pjFsMwuOGGG9i9ezdf+9rXytfvvvtu5s2bxz333MP73vc+LrroItasWUM2m625f86cOezZs6dGuAOsX79+n88uBZGZGo1127ZtM6Zva2vjox/9KD/+8Y/ZsmULDQ0NfPGLX9yf19RoNBqN5hWLlvUajeZoRivjmmOac889l1WrVvHVr361LIBL1t5q6+5jjz3GI488UnPv6173OhzH4Rvf+Eb5muu63HLLLft8bjwep7GxkYcffrjm+te//vWaz67r1rjLATQ3N9Pe3k4ul9uPN9RoNBqN5pWNlvUajeZoRQdw0xzzfPrTn+btb387d955Jx/+8Id5wxvewD333MNb3/pWXv/617NlyxZuu+02li5dWmMZf+Mb38gZZ5zBZz7zGbZu3crSpUu55557pgnUvfHBD36QG2+8kQ9+8IOsXLmShx9+mA0bNtSkSafTdHZ28ra3vY0VK1YQjUa5//77eeKJJ/jyl798SOtBo9FoNJpjFS3rNRrN0YhWxjXHPBdffDHz58/nn//5n7niiiu47LLL6O3t5fbbb+fee+9l6dKlfPe73+VHP/oRDz74YPk+KSU/+clP+MQnPsF3v/tdhBC86U1v4stf/jInnXTSPp977bXXMjAwwN13380Pf/hDXvva1/KLX/yC5ubmcppwOMxHP/pRfvWrX3HPPffgeR4LFizg61//ek1kV41Go9FoNHtHy3qNRnM0IpSOxKDRHJVcdtll/PrXv+app57CNE2SyeSRLlKZbDbL+Pg4N910EzfffDMDAwM0NjYe6WJpNBqNRnNUoWW9RnNso/eMazRHMTt27KCpqYkzzzzzSBelhttuu42mpiZuvvnmI10UjUaj0WiOarSs12iOXfTKuEZzlPLcc8+xe/duAKLRKK961auOcIkq7NixoyYS7TnnnINlWUewRBqNRqPRHH1oWa/RHNtoZVyj0Wg0Go1Go9FoNJrDjHZT12g0Go1Go9FoNBqN5jCjlXGNRqPRaDQajUaj0WgOM1oZ12g0Go1Go9FoNBqN5jCjlXGNRqPRaDQajUaj0WgOM1oZ12g0Go1Go9FoNBqN5jCjlXGNRqPRaDQajUaj0WgOM1oZ12g0Go1Go9FoNBqN5jCjlXGNRqPRaDQajUaj0WgOM1oZ12g0Go1Go9FoNBqN5jDz/wMaQTm/gfXW1AAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_map(\"distance_to_nplus_surface_mm\")" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[32mroot [INFO] genericpolycone.antlr>\u001b[0m\n", - "\u001b[32mroot [INFO] genericpolyhedra.antlr>\u001b[0m\n", - "\u001b[32mroot [INFO] visualisation.Mesh.getBoundingBox> [-36.98, -36.98, 0.0] [36.98, 36.98, 29.46]\u001b[0m\n", - "\u001b[32mroot [INFO] box.pycsgmesh> getBoundingBoxMesh\u001b[0m\n", - "\u001b[32mroot [INFO] genericpolycone.antlr>\u001b[0m\n", - "\u001b[32mroot [INFO] genericpolyhedra.antlr>\u001b[0m\n", - "\u001b[32mroot [INFO] visualisation.Mesh.getBoundingBox> [-38.25, -38.25, 0.0] [38.25, 38.25, 84.0]\u001b[0m\n", - "\u001b[32mroot [INFO] box.pycsgmesh> getBoundingBoxMesh\u001b[0m\n" - ] - }, - { - "data": { - "image/png": "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OvlSXl4uAIiysjLR3NwshLhzApaenh55v82bN/MELIO4du2amDFjhli1apXo6+sbcD17OTRarVakp6fL20ajUQQEBPCkNg9gMplEWlqa8Pf3F59//vmA6/tP0FJWViaPNTQ08AQtg9Dr9WbPjXV1dSI6OlqsXr1a1NXVsZekeMx/62DuW4Z5P3TMeMsw1+2TQy7g79XY2DjgLLQdHR3C19dXvPTSS6K+vl6UlJQId3d3UVBQYLtCx6Br166J0NBQMX/+fHHt2jXxzTffyJd+7OXQlJSUCJVKJYqKisTFixfFr371K+Hl5SV0Op2tSxvTXn31VaHRaMSpU6fMHn/ffvutPGfdunUiODhYnDx5Upw7d07ExsaK2NhYG1atHHefrVYI9pLsC/N/+Jj7lmPeDx0z3vqY68rHBbwYPMCFEOJf//qXmDt3rlCpVCIgIEDk5OTYpsAxrLCwUAAY9HI39nJo8vPzRXBwsHB1dRVarVZUV1fbuqQx736Pv8LCQnnOd999J1JTU8XEiROFu7u7WLZsmdkfm3R/9wY9e0n2hPk/fMx962DeDw0z3vqY68onCSHEaH9Mn4iIiIiIiIgsY1dnoSciIiIiIiKyV1zAExERERERESkAF/BERERERERECsAFPBEREREREZECcAFPREREREREpABcwBMREREREREpABfwRERERERERArABTwRERERERGRAnABTzRMTU1NkCQJRUVF8lhWVhYkSXqodaSkpECSJEiShMjIyId62w+yfft2uTZJktDe3m7rkoiIiIaMWf9gzHoi2+ACnuxCUVGRWYi4uLggICAAKSkp+Prrr21d3qjx9vbGvn37kJOTY+tSzCxcuBD79u3DsmXLbF0KERHZCWY9s56IABdbF0BkTW+//TamTZuGW7duobq6GkVFRfjwww9RX18PtVo9are7ZcsWbNq0adSOfz/jx4/H6tWrH/rtPkh4eDjCw8PxxRdf4L333rN1OUREZEeY9WMDs57INriAJ7vyzDPPIDo6GgCwZs0aeHt745133sHhw4fx/PPPj9rturi4wMWF/52IiIhGG7OeiBwZP0JPdm3evHkAgC+//FIe6+npwdatWzFr1ixoNBqMHz8e8+bNwz//+c8B+3d0dCAlJQUajQZeXl5ITk5GR0fHgHn3fi9usO/O9ZMkCVlZWfK2wWDAhg0bEBIS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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_map(\"activeness\", clab=\"Activeness\", scale=\"viridis\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also plot a histogram of the distance to the surface.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [], - "source": [ - "def plot_distances(axes, distances, xrange=None, label=\" \", **kwargs):\n", - " h = hist.new.Reg(100, *xrange, name=\"Distance to n+ surface [mm]\").Double()\n", - " h.fill(distances)\n", - " h.plot(**kwargs, label=label)\n", - " axes.legend()\n", - " axes.set_yscale(\"log\")\n", - " if xrange is not None:\n", - " ax.set_xlim(*xrange)" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots()\n", - "plot_distances(\n", - " ax,\n", - " ak.flatten(data_det001.distance_to_nplus_surface_mm),\n", - " xrange=(0, 35),\n", - " label=\"BEGe\",\n", - " histtype=\"step\",\n", - " yerr=False,\n", - ")\n", - "plot_distances(\n", - " ax,\n", - " ak.flatten(data_det002.distance_to_nplus_surface_mm),\n", - " xrange=(0, 35),\n", - " label=\"Coax\",\n", - " histtype=\"step\",\n", - " yerr=False,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.3) Summed energies\n", - "Our processing chain also sums the energies of the hits, both before and after weighting by the activeness.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [], - "source": [ - "def plot_energy(axes, energy, bins=400, xrange=None, label=\" \", log_y=True, **kwargs):\n", - " h = hist.new.Reg(bins, *xrange, name=\"energy [keV]\").Double()\n", - " h.fill(energy)\n", - " h.plot(**kwargs, label=label)\n", - " axes.legend()\n", - " if log_y:\n", - " axes.set_yscale(\"log\")\n", - " if xrange is not None:\n", - " axes.set_xlim(*xrange)" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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ZcsWrFixwq1lytq2bQvAEnS66q13tX9eXl6F9lXSpk0bAEBoaGiFj9myZUsAlt5567QAwPK+njlzBl26dJHV79SpE2688UasX78ezZo1w9mzZ/Hqq6+6dS61Wo3hw4dj+PDhKCkpwSOPPIK1a9di3rx5shsKp06dkrUlLy8P58+fx2233QbA/etgfX/sb8bY82QYvJV1dIN9UjnrCAUiIqLqxDnqRETkN0wmE7766iuo1WrccMMNHu+/cOFCZGVlITk5GSaTyWG7fa9mUlISIiMj8fzzzyvWv3z5ssvzjR49Gvv378f27dsdtl29elW66eCuRo0aoX///li7di3Onz/vcXsAID4+Hg0aNMC//vUv2fnXr1/vdPj1+PHj8dVXX2HFihVo0KABhg4dWu55rly5InseFBQk3QQoKiqSbXvjjTdk7+/q1atRXFwsncfd69CwYUPccsstWLduHc6ePSurY3ttrTdpPMnk3rJlSwQHBzvkFXj99dfdPgYREZG3sEediIh8ZuvWrTh58iQAy9zrDRs24NSpU5g9e7bD/PBff/0V7733nsMxYmJiMHjwYADAfffdh2PHjmHJkiU4cOAA7r33XrRu3Rr5+fk4duwYNm7ciDp16ki9p5GRkVi9ejXGjx+Pm266Cffeey8aNmyIs2fP4ssvv8TNN9+M1157zWn7n3jiCXz22We4/fbbMWnSJHTv3h35+fk4evQoPvroI5w5c0ZaHsxder0effv2RefOnZGcnIw2bdrg4sWL2L9/P/78808cOXLE5f5qtRoLFy7Eo48+ioEDB2L06NE4c+YM0tLS0LZtW8Xe5vvuuw+zZs3C5s2bMXXqVFniN2cefPBBZGdnY+DAgWjWrBn++OMPvPrqq+jWrZvDTRaj0YhBgwZh9OjR+OWXX/D666+jb9++GDFiBADPrsOqVavQt29f3HTTTXjooYfQunVrnDlzBl9++aWUJLB79+4AgKeffhr33nsvQkNDMXz4cJejLKKionDPPffg1VdfhUqlQtu2bfHFF1845BkgIiKqFj7NOU9ERLWS0vJsYWFholu3bmL16tWypbaEcL08m9IyYt988424++67RZMmTURoaKiIjIwU8fHxYsGCBeL8+fMO9Xfv3i2SkpJEVFSUCAsLE23bthWTJk0Shw4dKve1XLt2TcyZM0e0a9dOqNVqER0dLfr06SOWL18uLUlmXeJr2bJlDvtDYemu3377TUyYMEE0btxYhIaGitjYWHH77beLjz76yOE9PHjwoGK7Vq1aJVq2bCk0Go3o2bOn+O6770T37t3FkCFDFOvfdtttAoD4/vvvy33NQgjx0UcfiVtvvVU0atRIqNVq0aJFCzFlyhTZ+2tt4549e8RDDz0k6tWrJyIiIsS4cePElStXHI7p7nU4duyYGDVqlKhbt64ICwsTHTp0EPPmzZPVeeaZZ0RsbKwICgqSLdUGQKSkpCi+psuXL4u77rpL6HQ6Ua9ePTFlyhRx7NgxxeXZwsPDHfbv16+f6Nixo0N5y5YtxbBhw5y+l0RERPZUQjC7CRERUU1XUlKChg0b4s4778S//vUvh+2jRo3C0aNHcfr0aa+dMy0tDZMnT8bBgwdl2f2JiIjINc5RJyIiqmEKCwsd5uP/+9//RnZ2Nvr37+9Q//z58/jyyy8xfvz4amohERERucI56kRERDXMDz/8gOnTp+Oee+5BgwYN8OOPP+Ktt95Cp06dZOujZ2Zm4rvvvsObb76J0NBQTJkyxYetJiIiIisG6kRERDVMq1at0Lx5c6xatQrZ2dmoX78+JkyYgBdeeAFqtVqqt2fPHkyePBktWrTAO++8o7iGOREREVU/zlEnIiIiIiIi8iOco05ERERERETkRxioExEREREREfmRgJujXlJSgr/++gt16tSBSqXydXOIiIiIiIiohhNC4Nq1a2jatCmCgqq+vzvgAvW//voLzZs393UziIiIiIiIqJb53//+h2bNmlX5eQIuUK9Tpw4AyxsUGRnp49YQERERERFRTZebm4vmzZtL8WhVC7hA3TrcPTIykoE6ERERERERVZvqmn7NZHJEREREREREfoSBOhEREREREZEfCZhAXa/XIy4uDj169PB1U4iIiIiIiIiqjEoIIXzdCE/k5uYiKioKOTk5nKNOREREREREVa6649CASyZHRERERFSVhBAwm80oLi72dVOIqIqFhIQgODi42pLEuYuBOhERERERLAH61atXcfnyZZjNZl83h4iqSXBwMBo1aoSoqCi/CdgZqBMRERERAbhw4QKuXr0qLQMcEhLiNz/aicj7hBAoLi5Gbm4uzp8/j4KCAjRp0sTXzQLAQJ2IiIiICGazGTk5OWjYsCGio6N93RwiqkZ16tSBRqNBVlYWGjVqhODgYF83KXCyvhMRERERVRWTyQQhBMLDw33dFCLygfDwcAghYDKZfN0UAIEcqBvzLY/ASlpPRERERH6MQ92Jaid/++wHbqD+Ugfg+aaAyeDrlhARERERERF5TcAE6nq9HnFxcejRo4evm0JERERERERUZQImUE9JSUFGRgYOHjzo66YQERERERERVZmACdSJiIiIiMhzKpXKrcc333zj66YSUSkuz0ZEREREVIO9++67suf//ve/sWPHDofyG264oTqbRUQuMFAnIiIiIqrB7r//ftnzH374ATt27HAot2cwGKDT6aqyaX5LCIHCwkJotVpfN4VqKQ59JyIiIiKq5fr3749OnTohPT0dt9xyC3Q6HZ566ikAlqHzCxcudNinVatWmDRpkqzs6tWrePzxx9G8eXNoNBq0a9cOL774IkpKStxqx9atW5GQkIDw8HDUqVMHw4YNw/Hjx2V1Jk2ahIiICJw7dw4jR45EREQEGjZsiJkzZ8JsNsvqlpSUYMWKFejYsSPCwsIQExODKVOm4O+//3Z4Lbfffju2b9+O+Ph4aLVarF27FgDwxx9/YMSIEQgPD0ejRo0wffp0bN++XTZdYMGCBQgNDcXly5cdXtNDDz2EunXrorCw0K33gAhgoE5ERERERACuXLmCoUOHolu3blixYgUGDBjg0f4GgwH9+vXDe++9hwkTJmDVqlW4+eabMWfOHMyYMaPc/d99910MGzYMERERePHFFzFv3jxkZGSgb9++OHPmjKyu2WxGUlISGjRogOXLl6Nfv3546aWX8MYbb8jqTZkyBU888QRuvvlmrFy5EpMnT8b69euRlJQEk8kkq/vLL79g7NixGDx4MFauXIlu3bohPz8fAwcOxM6dO/HYY4/h6aefxvfff48nn3xStu/48eNRXFyMDz74QFZuNBrx0Ucf4a677kJYWJgH7ybVdhz6TkRERETkhBACBSZz+RWriTY0GCqVqkqOfeHCBaxZswZTpkyp0P4vv/wyfvvtN/z0009o3749AEug3LRpUyxbtgz/93//h+bNmyvum5eXh8ceewwPPvigLNieOHEiOnTogOeff15WXlhYiDFjxmDevHkAgIcffhg33XQT3nrrLUydOhUA8O233+LNN9/E+vXrcd9990n7DhgwAEOGDMGmTZtk5adPn8a2bduQlJQke02///47tmzZgjvuuEN6TTfeeKOs/e3atUPv3r3x3nvvITU1VSr/8ssv8ffff2P8+PGevZlU6zFQJyIiIiJyosBkRtz87b5uhiRjcRJ06qr5Ca/RaDB58uQK779p0yYkJCSgXr16yMrKksoTExPxwgsvYO/evRg3bpzivjt27MDVq1cxduxY2b7BwcHo1asXdu/e7bDPww8/LHuekJAgS5C3adMmREVFYfDgwbJjdu/eHREREdi9e7csUG/durUsSAeAbdu2ITY2FiNGjJDKwsLCkJycjP/7v/+T1Z0wYQKmTp2K3377DW3btgUArF+/Hs2bN0e/fv0UXzeRMwzUiYiIiIgIsbGxUKvVFd7/1KlT+Pnnn9GwYUPF7ZcuXXK5LwAMHDhQcXtkZKTseVhYmMN56tWrJ5t7furUKeTk5KBRo0Zutad169YOdf744w+0bdvWYRRDu3btHOqOGTMGjz/+ONavX4/58+cjJycHX3zxBaZPn15loyCo5vJJoN6qVStERkYiKCgI9erVU7xDRkRERETka9rQYGQsTiq/YjXRhgZX3bE9zHCulLht8ODBmDVrlmL96667zumxrMnm3n33XTRu3Nhhe0iIPGwJDi7/fSgpKUGjRo2wfv16xe32gX5lM7zXq1cPt99+uxSof/TRRygqKio3uz6REp/1qH///feIiIjw1emJiIiIiMqlUqmqbKh5oKhXrx6uXr0qKzMajTh//rysrG3btsjLy0NiYqLH57AOFW/UqFGF9nd2zJ07d+Lmm2+ucBDesmVLZGRkQAgh6xU/ffq0Yv0JEybgjjvuwMGDB7F+/XrceOON6NixY4XOTbUbs74TEREREZFTbdu2xd69e2Vlb7zxhkOP+ujRo7F//35s3+44p//q1asoLi52eo6kpCRERkbi+eefd8jGDkBx2bPyjB49GmazGc8884zDtuLiYoebD87ade7cOXz22WdSWWFhIf71r38p1h86dCiio6Px4osvYs+ePexNpwrzOFDfu3cvhg8fjqZNm0KlUmHLli0OdfR6PVq1aoWwsDD06tULBw4ckG1XqVTo168fevTo4XQoChERERER+d6DDz6In376CXfddRfWrFmDqVOn4uWXX0Z0dLSs3hNPPIGbbroJt99+O5KTk7FmzRq89NJLmDRpEpo1a+YyMI6MjMTq1auxb98+3HTTTXjuuefwxhtvYO7cubjxxhuxaNEij9vdr18/TJkyBUuWLMFtt92GFStWQK/X4/HHH0fLli2xc+fOco8xZcoUtGrVCmPHjsWcOXOwatUq9OvXT1pqzX7ueWhoKO699158/PHHUKlUGDt2rMftJgIqMPQ9Pz8fXbt2xQMPPIA777zTYfsHH3yAGTNmYM2aNejVqxdWrFiBpKQk/PLLL1Iih2+//RaxsbE4f/48EhMT0blzZ3Tp0qXyr4aIiIiIiLwqOTkZmZmZeOutt7Bt2zYkJCRgx44dGDRokKyeTqfDnj178Pzzz2PTpk3497//jcjISFx33XVYtGgRoqKiXJ7nvvvuQ9OmTfHCCy9g2bJlKCoqQmxsLBISEiqcjX7NmjXo3r071q5di6eeegohISFo1aoV7r//ftx8883l7h8REYGvv/4ajz76KFauXImIiAhMmDABffr0cbo2+oQJE/Daa69h0KBBaNKkSYXaTaQSQogK76xSYfPmzRg5cqRU1qtXL/To0QOvvfYaAEsSh+bNm+PRRx/F7NmzHY7xxBNPoGPHjpg0aZLiOYqKilBUVCQ9z83NRfPmzZEzuw4iNSrgqb8AdXhFXwIREREREQoLC5GZmYnWrVsrBl9EtlasWIHp06fjzz//RGxsrGzbkSNH0K1bN/z73//m+ukBpLzvgNzcXERFRSEnJ8dhFYKq4NU56kajEenp6bIEEEFBQUhMTMT+/fsBWHrkr127BgDIy8vD119/7TLBwpIlSxAVFSU9mjdv7s0mExEREREROVVQUCB7XlhYiLVr16J9+/YOQToA/Otf/0JERITi6GMid3k1hWVWVhbMZjNiYmJk5TExMTh58iQA4OLFixg1ahQAy5IOycnJ6NGjh9NjzpkzBzNmzJCeW3vUiYiIiIiIqtqdd96JFi1aoFu3bsjJycF7772HkydPOuTa+vzzz5GRkYE33ngDqampCA/nqF+quGpfa6JNmzY4cuSI2/U1Gg00Gg30ej30er1DdsmaQAiBApP8dWlDgx2SUxARERERUfVKSkrCm2++ifXr18NsNiMuLg7vv/8+xowZI6v36KOP4uLFi7jtttsqlPyOyJZXA/Xo6GgEBwfj4sWLsvKLFy+icePGlTp2SkoKUlJSpLkBNUmByYy4+fJlLDIWJ9X6NTuJiIiIiHzt8ccfx+OPP15uvTNnzlR5W6j28OocdbVaje7du2PXrl1SWUlJCXbt2oXevXt781RERERERERENZLHXbZ5eXk4ffq09DwzMxOHDx9G/fr10aJFC8yYMQMTJ05EfHw8evbsiRUrViA/P7/CSypY1eSh70RERERERERWHgfqhw4dwoABA6Tn1kRvEydORFpaGsaMGYPLly9j/vz5uHDhArp164Zt27Y5JJjzVE0e+k5ERERERERk5XGg3r9/f5S39HpqaipSU1Mr3CgiIiIiIiKi2sqrc9Srkl6vR1xcnMul3IiIiIiIiIgCXcAE6ikpKcjIyMDBgwd93RTvEwJaFMoeKGfUAhEREREREdVMXP/LH5gMOBH2gKzIYDoLaDgXn4iIiIiIqLYJmB51IiIiIiIiotogYAJ1zlEnIiIiIqKqVFxcjFmzZqF58+YICgrCyJEjfd0kmYULF0KlUvnk3JMmTUKrVq3Krde/f3/079+/yttT0wVMoF6j56gTEREREVWhtLQ0qFQqp48ffvjB1030C+vWrcOyZctw991345133sH06dORkZGBhQsX4syZM75uHtUinKNORERERFRLLF68GK1bt3Yob9eunQ9a43++/vprxMbG4pVXXpHKPvroIyxatAj9+/d3q0eZyBsYqBMRERER1RJDhw5FfHy8r5uB/Px8hIeH+7oZDi5duoS6detWy7n89T2oyUpKSmA0GhEWFubrppQrYIa+c446EREREVHVOnPmDFQqFZYvX4433ngDbdu2hUajQY8ePRSnoJ48eRJ333036tevj7CwMMTHx+Ozzz6T1bEOu9+zZw8eeeQRNGrUCM2aNZO26/V6tGnTBlqtFj179sS+fftk85zz8vIQHh6OadOmOZz/zz//RHBwMJYsWeLydS1fvhx9+vRBgwYNoNVq0b17d3z00UcOr3v37t04fvy4NCUgLS0N99xzDwBgwIABUvk333wj7bt161YkJCQgPDwcderUwbBhw3D8+HHZ+SdNmoSIiAj89ttvuO2221CnTh2MGzfOZZu//fZb9OjRA2FhYWjbti3Wrl3rtO57772H7t27Q6vVon79+rj33nvxv//9T1Zn3759uOeee9CiRQtoNBo0b94c06dPR0FBgcPxtmzZgk6dOiEsLAydOnXC5s2bXbbVFaPRiPnz56N79+6IiopCeHg4EhISsHv3bqmOEAKtWrXCHXfc4bB/YWEhoqKiMGXKFKmsqKgI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3h0dO3ZEUFBQlQTAsbGx2LlzJ4qKijB48GBkZWUhLi4Ohw4dwrBhw5CWloaUlBSsWbMGQUFBmD9/vuJxrG1r0qRJpZPdERERBSqVsGa3ISIiooB29epV1KtXD88++yyefvpph+033ngj6tevj127drl1vLS0NEyePBk//vgjmjdvjgYNGij21le37OxslJSUoGHDhkhJSXE65J+IiChQsUediIgoABUUFDiUrVixAoClx97eoUOHcPjwYUyYMMHjc910001o2LAhrly54vG+VaFNmzZo2LChr5tBRERUZdijTkREFIDS0tKQlpaG2267DREREfj222+xceNG3Hrrrdi+fbtU79ixY0hPT8dLL72ErKws/P77724naDt//jyOHz8uPe/Xrx9CQ0O9/lo8tWfPHphMJgBA8+bN0aFDBx+3iIiIyLuYTI6IiCgAdenSBSEhIVi6dClyc3OlBHPPPvusrN5HH32ExYsXo0OHDti4caNHWdSt66T7m379+vm6CURERFWKPepEREREREREfoRz1ImIiIiIiIj8CAN1IiIiIiIiIj/CQJ2IiIiIiIjIjzBQJyIiIiIiIvIjDNSJiIiIiIiI/AgDdSIiIiIiIiI/wkCdiIiIiIiIyI8wUCciIiIiIiLyI/8P1cSqIx/0Q2wAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots()\n", - "ax.set_title(\"BEGe energy spectrum\")\n", - "plot_energy(ax, data_det001.energy_sum, yerr=False, label=\"True energy\", xrange=(0, 4000))\n", - "plot_energy(\n", - " ax,\n", - " data_det001.energy_sum_deadlayer,\n", - " yerr=False,\n", - " label=\"Energy after dead layer\",\n", - " xrange=(0, 4000),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+oAAAGNCAYAAACG8IsZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACC7ElEQVR4nO3deXgTVdsG8DtdkiaFlqVQFtlB9kVb4GWTrVgqgojKIktBrahFUd6KggjCp4KAyGIEFREXUAEFF15AlrKIKIuCQAEpFlGEQkFaaNomTc/3R5tpJpmkSbck7f27rlw0M2fOnHSakGfOOc9RCSEEiIiIiIiIiMgr+Hm6AURERERERERUiIE6ERERERERkRdhoE5ERERERETkRRioExEREREREXkRBupEREREREREXoSBOhEREREREZEXYaBORERERERE5EUYqBMRERERERF5EQbqRERERERERF6EgToRERERERGRF2GgTkREHnHu3DlMnDgRTZs2RVBQEEJCQtCjRw8sWbIEWVlZsrImkwlLly5F586dUbVqVVSpUgWdO3fG0qVLYTKZHJ7j1KlTUKlUCAoKwo0bN+z2X7lyBTVq1EC/fv3s9plMJrRv3x6NGzdGZmZmiV8vla+kpCS88sorOH/+vKebQkRE5DYG6kREVO42b96M9u3bY926dRg8eDCWLVuGuXPnomHDhnj++ecxefJkqWxmZiYGDBiAyZMno06dOpg3bx4WLFiAevXqYfLkyRgwYIDDQPrTTz9FnTp1AAAbNmyw21+7dm288cYbSExMxEcffSTb9+abb+LEiRN4++23ERwcXIqvnspDUlISZs+ezUCdiIh8kkoIITzdCCIiqjxSUlLQoUMH3Hbbbdi1axfq1q0r25+cnIzNmzdLwfrEiRPx3nvvYdmyZZg0aZKsrF6vx6RJk/DEE09g+fLlsn1CCDRt2hTDhg1DSkoK/v33XyQmJtq1RwiBu+66C6dPn8bp06dRs2ZNpKSkoG3btoiJicGXX35Zyr+BspWdnQ21Wg0/v8p9L37Dhg146KGHkJiYiD59+jgtK4RAdnY2tFpt+TSOiIioCJX7f3EiIip38+fPx61bt/DBBx/YBekA0Lx5cylI//vvv/HBBx+gX79+dkE6AMTHx6Nv375YuXIl/v77b9m+/fv34/z58xg5ciRGjhyJvXv32pUBAJVKhRUrViA9PR0JCQkAgKeeegoBAQFYunSpS68pJycHs2bNQvPmzaHRaNCgQQNMnToVOTk5dueaNGkSNm3ahHbt2kGj0aBt27bYunWrXZ0XL17EI488gvDwcKncqlWrZGV2794NlUqFzz//HDNmzED9+vWh0+mQkZEBAFi/fj3atGmDoKAgtGvXDhs3bsT48ePRuHFjAPkBauPGjXHffffZnT87OxuhoaGYOHGi09e+fft29OzZE9WqVUOVKlXQsmVLTJ8+3a6NX3zxBaZPn446deogODgYQ4YMwV9//WVX388//4yBAwciNDQUOp0OvXv3xv79+xV/P48++ijq1asHjUaDJk2a4Mknn4TRaMTq1avx0EMPAQD69u0LlUoFlUqF3bt3AwAaN26Me++9F9u2bUNkZCS0Wi3effddnD9/HiqVCqtXr7Y7n0qlwiuvvCI9f+WVV6BSqfD7779jzJgxCA0NRa1atfDyyy9DCIG//voL9913H0JCQlCnTh28+eabTn+PRERE1gI83QAiIqpcvv32WzRt2hTdu3cvsuyWLVtgNpsxbtw4h2XGjRuHxMREbN26FY899pi0fc2aNWjWrBk6d+6Mdu3aQafT4bPPPsPzzz9vV0fbtm2RkJCAuXPnomrVqti6dSuWLFmC+vXrF9nGvLw8DBkyBD/88AMef/xxtG7dGsePH8dbb72F33//HZs2bZKV/+GHH/DVV1/hqaeeQtWqVbF06VI88MADuHDhAmrWrAkASE1NxX/+8x8psK9Vqxa2bNmCRx99FBkZGXj22Wdldf7f//0f1Go1EhISkJOTA7Vajc2bN2PEiBFo37495s6di3///RePPvqo7DWpVCqMGTMG8+fPx/Xr11GjRg1p37fffouMjAyMGTPG4Ws/efIk7r33XnTo0AFz5syBRqNBcnKyYmD92muvQaVS4YUXXsCVK1ewePFiREVF4ejRo1JP9q5duxATE4OIiAjMmjULfn5++PDDD9GvXz/s27cPXbp0AQD8888/6NKlC27cuIHHH38crVq1wsWLF7FhwwYYDAbcddddeOaZZ7B06VJMnz4drVu3BgDpXwA4c+YMRo0ahYkTJyIuLg4tW7Ys8lorGTFiBFq3bo158+Zh8+bNePXVV1GjRg28++676NevH9544w2sWbMGCQkJ6Ny5M+66665inYeIiCoZQUREVE7S09MFAHHfffe5VP7ZZ58VAMSvv/7qsMwvv/wiAIgpU6ZI24xGo6hZs6Z46aWXpG0PP/yw6Nixo8N6DAaDaNq0qQAgIiIiRG5urktt/OSTT4Sfn5/Yt2+fbPuKFSsEALF//35pGwChVqtFcnKytO3YsWMCgFi2bJm07dFHHxV169YVaWlpsjpHjhwpQkNDhcFgEEIIkZiYKACIpk2bStss2rdvL2677TZx8+ZNadvu3bsFANGoUSNp25kzZwQAsXz5ctnxQ4YMEY0bNxZ5eXkOX/tbb70lAIirV686LGNpY/369UVGRoa0fd26dQKAWLJkiRBCiLy8PNGiRQsRHR0tO6fBYBBNmjQRAwYMkLaNGzdO+Pn5iUOHDtmdz3Ls+vXrBQCRmJhoV6ZRo0YCgNi6datse0pKigAgPvzwQ7tjAIhZs2ZJz2fNmiUAiMcff1zalpubK2677TahUqnEvHnzpO3//vuv0Gq1IjY2VvmXREREZIND34mIqNxYhmRXrVrVpfI3b94ssrxln6VuIL8n/tq1axg1apS0bdSoUTh27BhOnjypWI9arUZoaCgAoH///vD393epjevXr0fr1q3RqlUrpKWlSQ9LJnnbefFRUVFo1qyZ9LxDhw4ICQnBH3/8ASB/OPqXX36JwYMHQwghqzM6Ohrp6en45ZdfZHXGxsbK5lf/888/OH78OMaNG4cqVapI23v37o327dvLjr399tvRtWtXrFmzRtp2/fp1bNmyBaNHj4ZKpXL42qtVqwYA+Prrr5GXl+f09zRu3DjZdXzwwQdRt25d/O9//wMAHD16FGfPnsXDDz+Ma9euSa85MzMT/fv3x969e5GXl4e8vDxs2rQJgwcPRmRkpN15nLXXWpMmTRAdHe1SWWesR3H4+/sjMjISQgg8+uij0vZq1aqhZcuW0jUmIiIqCgN1IiIqNyEhIQAKA/CiWAI7Z+WVgvlPP/0UTZo0kYZiJycno1mzZtDpdLKA1NqSJUvw66+/ol27dli6dCmSk5NdauPZs2dx8uRJ1KpVS/a4/fbbAeQvAWetYcOGdnVUr14d//77LwDg6tWruHHjBt577z27OidMmKBYZ5MmTWTP//zzTwD58/1tKW0bN24c9u/fLx23fv16mEwmjB071ulrHzFiBHr06IHHHnsM4eHhGDlyJNatW6cYtLdo0UL2XKVSoXnz5lJW9rNnzwLIv+lg+7pXrlyJnJwcpKen4+rVq8jIyEC7du2ctq0otr+z4rK9nqGhoQgKCkJYWJjddss1JiIiKgrnqBMRUbkJCQlBvXr1cOLECZfKW+YU//bbb+jUqZNimd9++w0A0KZNGwD5PevffvstsrOz7YJDAFi7dq00X9rir7/+wqxZszB06FC88847aNWqFeLj47Ft27Yi25iXl4f27dtj0aJFivsbNGgge+6op14ULMJiCXLHjBmD2NhYxbIdOnSQPS9ptvKRI0fiueeew5o1azB9+nR8+umniIyMLHLetlarxd69e5GYmIjNmzdj69at+OKLL9CvXz98//33Lo9KAApf94IFCxxe6ypVquD69esu1+mM0u/MUW+82Wx2WI/SayzqGhMRERWFgToREZWre++9F++99x4OHDiAbt26OS0bExMDf39/fPLJJw4Tyn388ccICAjAwIEDAQBfffUVsrOzsXz5crtezTNnzmDGjBnYv38/evbsKW23ZJRfunQp6tati9deew1PP/00Pv/8c4wcOdJpG5s1a4Zjx46hf//+Lg+7dqZWrVqoWrUqzGYzoqKiilVHo0aNAEBxVIDStho1amDQoEFYs2YNRo8ejf3792Px4sUuncvPzw/9+/dH//79sWjRIrz++ut46aWXkJiYKGu/pcfcQgiB5ORk6aaDZTpASEiI09ddq1YthISEFHmzpzjXonr16gCAGzduyLZbRhoQERGVFw59JyKicjV16lQEBwfjscceQ2pqqt3+c+fOYcmSJQDye6MnTJiAHTt22K2TDgArVqzArl278Oijj+K2224DkD/svWnTpnjiiSfw4IMPyh4JCQmoUqWKbPj7xo0b8c0332DOnDlS7/dTTz2FiIgITJkyRTb3Xcnw4cNx8eJFvP/++3b7srKykJmZ6fovB/m9sQ888AC+/PJLxWD06tWrRdZRr149tGvXDh9//DFu3bolbd+zZw+OHz+ueMzYsWORlJSE559/Hv7+/kXeoACg2Ltt6Q23XZru448/lk1h2LBhAy5duoSYmBgAQEREBJo1a4aFCxfK2mxhed1+fn4YOnQovv32Wxw+fNiunKXXOjg4GIB90O1MSEgIwsLCsHfvXtn2d955x+U6iIiISgN71ImIqFw1a9YMa9eulZa1GjduHNq1awej0Ygff/wR69evx/jx46Xyb731Fk6fPo2nnnoKW7dulXrOt23bhq+//hq9e/eW1qj+559/kJiYiGeeeUbx3BqNBtHR0Vi/fj2WLl2K7OxsPPPMM7jjjjtkx/j5+WHFihXo2rUrXnrpJSxbtszh6xk7dizWrVuHJ554AomJiejRowfMZjNOnz6NdevWSWt1u2PevHlITExE165dERcXhzZt2uD69ev45ZdfsGPHDpeGf7/++uu477770KNHD0yYMAH//vsv3n77bbRr104xEB40aBBq1qyJ9evXIyYmBrVr1y7yHHPmzMHevXsxaNAgNGrUCFeuXME777yD2267TTZiAcjvte/ZsycmTJiA1NRULF68GM2bN0dcXByA/N/5ypUrERMTg7Zt22LChAmoX78+Ll68iMTERISEhODbb7+VXtv333+P3r17S0viXbp0CevXr8cPP/yAatWqoVOnTvD398cbb7yB9PR0aDQa9OvXr8jX9dhjj2HevHl47LHHEBkZib179+L3338v8ndBRERUqjyYcZ6IiCqx33//XcTFxYnGjRsLtVotqlatKnr06CGWLVsmsrOzZWVzcnLEW2+9JSIiIkRwcLDQ6XTizjvvFIsXLxZGo1Eq9+abbwoAYufOnQ7Pu3r1agFAfP3112Ly5MnCz89PHDx4ULHspEmThJ+fnzh8+LDT12I0GsUbb7wh2rZtKzQajahevbqIiIgQs2fPFunp6VI5ACI+Pt7u+EaNGtkt3ZWamiri4+NFgwYNRGBgoKhTp47o37+/eO+996QylqXP1q9fr9iuzz//XLRq1UpoNBrRrl078c0334gHHnhAtGrVSrH8U089JQCItWvXOn29Fjt37hT33XefqFevnlCr1aJevXpi1KhR4vfff7dr42effSamTZsmateuLbRarRg0aJD4888/7er89ddfxbBhw0TNmjWFRqMRjRo1EsOHD7e7pn/++acYN26cqFWrltBoNKJp06YiPj5e5OTkSGXef/990bRpU+Hv7y9bqq1Ro0Zi0KBBiq/JYDCIRx99VISGhoqqVauK4cOHiytXrjhcns12abrY2FgRHBxsV2/v3r1F27Zti/ydEhERCSGESghmNiEiIqosOnXqhFq1amH79u12+5577jl88MEHuHz5MnQ6Xamcb/fu3ejbty/Wr1+PBx98sFTqJCIiqug4R52IiKgCMplMyM3NlW3bvXs3jh07hj59+tiVz87OxqeffooHHnig1IJ0IiIiKh7OUSciIqqALl68iKioKIwZMwb16tXD6dOnsWLFCtSpUwdPPPGEVO7KlSvYsWMHNmzYgGvXrmHy5MkebDUREREBDNSJiIgqpOrVqyMiIgIrV67E1atXERwcjEGDBmHevHmoWbOmVC4pKQmjR49G7dq1sXTpUodrmBMREVH54Rx1IiIiIiIiIi/COepEREREREREXoSBOhEREREREZEX8bk56nl5efjnn39QtWpVqFQqTzeHiIiIiIiIKjghBG7evIl69erBz6/s+7t9JlDX6/XQ6/UwGo04d+6cp5tDRERERERElcxff/2F2267rczP43PJ5NLT01GtWjX89ddfCAkJ8XRziIiIiIiIqILLyMhAgwYNcOPGDYSGhpb5+XymR93CMtw9JCSEgToRERERERGVm/Kafu0zyeT0ej3atGmDzp07e7opRERERERERGXG54a+Z2RkIDQ0FOnp6exRJyIiIiIiojJX3nGoz/SoExEREREREVUGPhOoc+g7ERERERERVQYc+k5EREREZEUIAbPZjNzcXE83hYjKWEBAAPz9/YtMElfecajPZX0nIiIiIioLQgjcuHEDV69ehdls9nRziKic+Pv7o3bt2ggNDS23rO5F8ZlAXa/XQ6/X80OTiIiIiMrE5cuXcePGDWkZ4ICAAK/50k5EpU8IgdzcXGRkZODSpUvIyspC3bp1Pd0sABz6TkREREQEs9mMs2fPIiwsDGFhYZ5uDhGVs7S0NKSlpaFFixbw9/e328+s70RERERE5cxkMkEIgeDgYE83hYg8IDg4GEIImEwmTzcFgC8H6sbM/IdvDQggIiIiIi/Goe5ElZO3vfd9JlC3W57tzZbA6/UAk8GzDSMiIiIiIiIqRT4TqMfHxyMpKQmHDh3ydFOIiIiIiIiIyozPBOpERERERERElQEDdSIiIiKiCkylUrn02L17t6ebSkQFfGYddSIiIiIict8nn3wie/7xxx9j+/btdttbt25dns0iIid8JlDX6/XQ6/Uwm82ebgoRERERkc8YM2aM7PlPP/2E7du32223ZTAYoNPpyrJpXksIgezsbGi1Wk83hSopnxn6zmRyRERERERlo0+fPmjXrh2OHDmCu+66CzqdDtOnTweQP3T+lVdesTumcePGGD9+vGzbjRs38Oyzz6JB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X1+279ixY+jUqRM+/vhjrp/uQ4r6DJDi0PR0u1UIygLnqBMRERERETmQlZUle56dnY13330XLVq0sAvSAeD9999HlSpVMGzYsPJqIlVA7LIlIiIiIiJyYNiwYWjYsCE6deqE9PR0fPrppzh9+rTdsm/ffvstkpKS8N5772HSpEkIDvbtUb/kWQzUiYiIiIiIHIiOjsbKlSuxZs0amM1mtGnTBp9//jlGjBghK/f0008jNTUV99xzD2bPnu2h1lJF4TOBul6vh16vt1sGgoiIiIiIqKw8++yzePbZZ4ssd/78+TJvC1UePjNHPT4+HklJSTh06JCnm0JERERERERUZnymR71CEwJaZNttIyIiIiIiosqHgbo3MBlwKugR2SaD6QKgcb7WJBEREREREVU8PjP0nYiIiIiIiKgyYKBORERERERE5EUYqBMRERERERF5EQbqRERERERERF6EgToRERERERGRF/FIoN64cWN06NABnTp1Qt++fT3RBCIiIiIiIpnc3FxMnToVDRo0gJ+fH4YOHerpJsm88sorUKlUHjn3+PHj0bhx4yLL9enTB3369Cnz9lR0HutR//HHH3H06FEkJiZ6qglERERERJXC6tWroVKpHD5++uknTzfRK6xatQoLFizAgw8+iI8++gjPPfcckpKS8Morr+D8+fOebh5VIlxHnYiIiIiokpgzZw6aNGlit7158+YeaI332bVrF+rXr4+33npL2rZhwwbMnj0bffr0calHmag0uN2jvnfvXgwePBj16tWDSqXCpk2b7Mro9Xo0btwYQUFB6Nq1Kw4ePCjbr1Kp0Lt3b3Tu3Blr1qwpduOJiIiIiMh1MTExGDNmjN0jLCysXNuRmZlZrudz1ZUrV1CtWrVyOZe3/g4qsry8PGRnZ3u6GS5xO1DPzMxEx44dodfrFfd/8cUXmDJlCmbNmoVffvkFHTt2RHR0NK5cuSKV+eGHH3DkyBF88803eP311/Hbb785PF9OTg4yMjJkDyIiIiIiKn3nz5+HSqXCwoUL8d5776FZs2bQaDTo3LkzDh06ZFf+9OnTePDBB1GjRg0EBQUhMjIS33zzjayMZdj9nj178NRTT6F27dq47bbbpP16vR5NmzaFVqtFly5dsG/fPtk851u3biE4OBiTJ0+2O//ff/8Nf39/zJ071+nrWrhwIbp3746aNWtCq9UiIiICGzZssHvdiYmJOHnypDQlYPXq1XjooYcAAH379pW27969Wzp2y5Yt6NWrF4KDg1G1alUMGjQIJ0+elJ1//PjxqFKlCs6dO4d77rkHVatWxejRo522+YcffkDnzp0RFBSEZs2a4d1333VY9tNPP0VERAS0Wi1q1KiBkSNH4q+//pKV2bdvHx566CE0bNgQGo0GDRo0wHPPPYesrCy7+jZt2oR27dohKCgI7dq1w8aNG5221Rmj0YiZM2ciIiICoaGhCA4ORq9evWRToIUQaNy4Me677z6747OzsxEaGoqJEydK23JycjBr1iw0b95cei1Tp05FTk6O7FiVSoVJkyZhzZo1aNu2LTQaDbZu3Vrs11Ke3B76HhMTg5iYGIf7Fy1ahLi4OEyYMAEAsGLFCmzevBmrVq3Ciy++CACoX78+AKBu3bq455578Msvv6BDhw6K9c2dOxezZ892t5lERERERCUnBGAyeLoVhQJ1QAmSiaWnpyMtLU22TaVSoWbNmrJta9euxc2bNzFx4kSoVCrMnz8fw4YNwx9//IHAwEAAwMmTJ9GjRw/Ur18fL774IoKDg7Fu3ToMHToUX375Je6//35ZnU899RRq1aqFmTNnSr3Jy5cvx6RJk9CrVy8899xzOH/+PIYOHYrq1atLwXyVKlVw//3344svvsCiRYvg7+8v1fnZZ59BCFFk0LtkyRIMGTIEo0ePhtFoxOeff46HHnoI3333HQYNGoRatWrhk08+wWuvvYZbt25JgX+LFi3wzDPPYOnSpZg+fTpat24NANK/n3zyCWJjYxEdHY033ngDBoMBy5cvR8+ePfHrr7/Khsrn5uYiOjoaPXv2xMKFC6HT6Ry29/jx47j77rtRq1YtvPLKK8jNzcWsWbMQHh5uV/a1117Dyy+/jOHDh+Oxxx7D1atXsWzZMtx111349ddfpREC69evh8FgwJNPPomaNWvi4MGDWLZsGf7++2+sX79equ/777/HAw88gDZt2mDu3Lm4du0aJkyYILu54o6MjAysXLkSo0aNQlxcHG7evIkPPvgA0dHROHjwIDp16gSVSoUxY8Zg/vz5uH79OmrUqCEd/+233yIjIwNjxowBkN8rPmTIEPzwww94/PHH0bp1axw/fhxvvfUWfv/9d7sR37t27cK6deswadIkhIWF+c70BVECAMTGjRul5zk5OcLf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Et98843suNGjR+P06dP45Zdf7Opcu3YtVCoVRo0aVWrtJCIi8nYM1ImIiJxITU3Ff/7zH+zYsQOTJk3CkiVL0Lx5czz66KNYvHixXfl58+Zh48aNSEhIwLRp0/DTTz/Z9Qbv2rULd911FzIyMjBr1iy8/vrruHHjBvr164eDBw/a1fnQQw/BYDDg9ddfR1xcHABg2rRpmD17NiIjI7FgwQK0aNEC0dHRsh73pk2bokePHlizZo1dnWvWrEHVqlVx3333lfA3lO+7777DkCFD8NBDD+HTTz9FQEAATp48if/85z84deoUXnzxRbz55psIDg7G0KFDsXHjRulYR8PfzWYz1q1bh169eqFhw4al0k4iIiKfIIiIiMihRx99VNStW1ekpaXJto8cOVKEhoYKg8EghBAiMTFRABCtW7cWOTk5UrklS5YIAOL48eNCCCHy8vJEixYtRHR0tMjLy5PKGQwG0aRJEzFgwABp26xZswQAMWrUKNm5L1++LAICAsTQoUNl21955RUBQMTGxkrb3n33XQFAnDp1StpmNBpFWFiYrJySDz/8UAAQKSkpdvt69+4t2rZtK4QQ4ssvvxSBgYEiLi5OmM1mqUz//v1F+/btRXZ2trQtLy9PdO/eXbRo0UJWX+fOncVtt90mO37r1q0CgHj33XcV2wdAxMfHO30NREREvog96kRERA4IIfDll19i8ODBEEIgLS1NekRHRyM9Pd1uuPaECROgVqul57169QKQPwwdAI4ePYqzZ8/i4YcfxrVr16T6MjMz0b9/f+zduxd5eXmyOp944gnZ8507dyI3NxdPPfWUbPvTTz9t9xqGDx+OoKAgWa/6tm3bkJaWVioJ2T777DOMGDECEydOxLvvvgs/v/yvFtevX8euXbswfPhw3Lx5U3qd165dQ3R0NM6ePYuLFy9K9YwZMwZ///039u7dK21bu3Yt1Go1HnrooRK3k4iIyJcEeLoBRERE3urq1au4ceMG3nvvPbz33nuKZa5cuSJ7bjtEu3r16gCAf//9FwBw9uxZAEBsbKzD86anp0vHAUCTJk1k+//8808AQPPmzWXba9SoITsOyF9zfPDgwVi7di3+7//+D0D+sPf69eujX79+DtvgipSUFIwZMwYPPfQQli1bJtuXnJwMIQRefvllvPzyy4rHX7lyBfXr1wcAjBw5ElOmTMHatWvRp08fZGdnY+PGjYiJibF7TURERBUdA3UiIiIHLD3bY8aMcRhYW5YMs/D391csJ4SQ1blgwQJ06tRJsWyVKlVkz7VarcttVjJu3DisX78eP/74I9q3b49vvvkGTz31lNT7XVx169ZF3bp18b///Q+HDx9GZGSktM/yOhMSEhAdHa14vPWNhtq1a2PAgAH48ssvodfr8e233+LmzZvM9k5ERJUSA3UiIiIHatWqhapVq8JsNiMqKqpU6mzWrBkAICQkpNh1NmrUCEB+r7V1b/u1a9eknntrAwcORK1atbBmzRp07doVBoMBY8eOLda5rQUFBeG7775Dv379MHDgQOzZswdt27YFkJ/IDgACAwNdfp2jR4/G1q1bsWXLFqxduxYhISEYPHhwidtJRETkazhHnYiIyAF/f3888MAD+PLLL3HixAm7/VevXnW7zoiICDRr1gwLFy7ErVu3ilVn//79ERAQgOXLl8u2v/3224rlAwICMGrUKKxbtw6rV69G+/bt7UYCFFdoaCi2bdsm9YifO3cOQH4PeZ8+ffDuu+/i0qVLdscpvc6hQ4dCp9PhnXfewZYtWzBs2DAEBQWVSjuJiIh8CXvUiYiInJg3bx4SExPRtWtXxMXFoU2bNrh+/Tp++eUX7NixA9evX3erPj8/P6xcuRIxMTFo27YtJkyYgPr16+PixYtITExESEgIvv32W6d1hIeHY/LkyXjzzTcxZMgQDBw4EMeOHcOWLVsQFhYGlUpld8y4ceOwdOlSJCYm4o033nCrzUUJCwvD9u3b0bNnT0RFReGHH35A/fr1odfr0bNnT7Rv3x5xcXFo2rQpUlNTceDAAfz99984duyYrJ4qVapg6NCh0jJtHPZORESVFXvUiYiInAgPD8fBgwcxYcIEfPXVV9Ja6tevXy92wNunTx8cOHAAkZGRePvtt/H0009j9erVqFOnDp577jmX6njjjTfw8ssv49ChQ0hISEBycjK+//57CCEUe6EjIiLQtm1b+Pn5lUkAXL9+fezYsQM5OTkYMGAA0tLS0KZNGxw+fBiDBg3C6tWrER8fjxUrVsDPzw8zZ85UrMfStrp165Y42R0REZGvUglLdhsiIiLyaTdu3ED16tXx6quv4qWXXrLbf8cdd6BGjRrYuXOnS/WtXr0aEyZMwC+//IIGDRqgZs2air315e369evIy8tDrVq1EB8f73DIPxERka9ijzoREZEPysrKstu2ePFiAPk99rYOHz6Mo0ePYty4cW6f684770StWrVw7do1t48tC02bNkWtWrU83QwiIqIywx51IiIiH7R69WqsXr0a99xzD6pUqYIffvgBn332Ge6++25s27ZNKnfixAkcOXIEb775JtLS0vDHH3+4nKDt0qVLOHnypPS8d+/eCAwMLPXX4q49e/bAZDIBABo0aICWLVt6uEVERESli8nkiIiIfFCHDh0QEBCA+fPnIyMjQ0ow9+qrr8rKbdiwAXPmzEHLli3x2WefuZVF3bJOurfp3bu3p5tARERUptijTkRERERERORFOEediIiIiIiIyIswUCciIiIiIiLyIgzUiYiIiIiIiLwIA3UiIiIiIiIiL8JAnYiIiIiIiMiLMFAnIiIiIiIi8iIM1ImIiIiIiIi8CAN1IiIiIiIiIi/y/7Me1pQZV73SAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots()\n", - "ax.set_title(\"COAX energy spectrum\")\n", - "plot_energy(ax, data_det002.energy_sum, yerr=False, label=\"True energy\", xrange=(0, 4000))\n", - "plot_energy(\n", - " ax,\n", - " data_det002.energy_sum_deadlayer,\n", - " yerr=False,\n", - " label=\"Energy after dead layer\",\n", - " xrange=(0, 4000),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 4.4) Smearing\n", - "The final step in the processing chain smeared the energies by the energy resolution. This represents a general class of processors based on ''heuristic'' models.\n", - "Other similar processors could be implemented in a similar way. It would also be simple to use insted an energy dependent resolution curve.\n", - "To see the effect we have to zoom into the 2615 keV peak." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/AAAAF3CAYAAAACdaBHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPn0lEQVR4nO3de1yUZf7/8feADDAqqCEgZuGpTNMoUVazPJHgluV3O6hbqazrVsZmP9baLMVj4rE8ZFptph20w3Y+iClpbRtlaq7rqVXX1tTAQ6skKINw//5gGRlnBhkc5gCv5+NxP5q57uu+5rrxaub+3Nd1X5fJMAxDAAAAAADArwX5ugIAAAAAAODCCOABAAAAAAgABPAAAAAAAAQAAngAAAAAAAIAATwAAAAAAAGAAB4AAAAAgABAAA8AAAAAQAAggAcAAAAAIAA08HUFPKGsrEyHDx9W48aNZTKZfF0dAAAAAEAdZxiGfvnlF8XFxSkoyDt943UigD98+LBatWrl62oAAAAAAOqZH3/8UZdeeqlXPqtOBPCNGzeWVP6Hi4iI8HFtAAAAAAB1XUFBgVq1amWLR72hTgTwFcPmIyIiCOABAAAAAF7jzce4mcQOAAAAAIAAQAAPAAAAAEAAIIAHAAAAACAAEMADAAAAABAA6sQkdgAAAAAQaEpLS1VSUuLrasCJkJAQBQcH+7oaDgjgAQAAAMCLDMNQXl6eTpw44euqoApNmjRRbGysV2eZvxACeAAAAADwoorgPTo6WhaLxa8CRJTfYCkqKtKRI0ckSS1atPBxjc4hgAcAAAAALyktLbUF75dccomvqwMXwsPDJUlHjhxRdHS03wynZxI7AAAAAPCSimfeLRaLj2uCC6n4N/KneQrogQcAIMAYhqHTJaVV5gkPCWZIJgD4Mb6j/Z8//hsRwAMAEGBOl5SqY+aaKvPsnJoii5mfeQAA6hKG0AMAAAAAEABqFMAvXrxY8fHxCgsLU1JSkjZu3Ogy7zvvvKPExEQ1adJEDRs2VEJCgl555RW7PCNHjpTJZLLbUlNTa1I1AADqlU0TkrVzaop2Tk3RpgnJvq4OAACoRW4H8G+88YYyMjI0adIkbdmyRddcc41SUlJsU+yfr1mzZnriiSeUm5urbdu2KS0tTWlpaVqzxn7oX2pqqn766SfbtmrVqpqdEQAA9YjFHCyLucH/Nv+YIRcAUH8tX77coXM2Ojpaffv21erVq+3ynp+v8nb//fc7lP23v/1Nd911l1q2bCmz2azIyEglJSVp6tSpys/P99Yp+pTbD8c99dRTGj16tNLS0iRJS5cu1ccff6xly5bpsccec8jfp08fu/djx47VihUr9OWXXyolJcWWHhoaqtjYWHerAwAAAADwM1OnTlXr1q1lGIby8/O1fPly/frXv9aHH36oW265xZbvpptu0vDhwx2Ov+KKK+zeZ2Zmatq0aWrTpo1GjhypNm3a6MyZM9q8ebPmzZunFStWaN++fbV+Xr7mVgBvtVq1efNmjR8/3pYWFBSk5ORk5ebmXvB4wzD02Wef6fvvv9esWbPs9m3YsEHR0dFq2rSp+vXrp+nTp7tcF7G4uFjFxcW29wUFBe6cBgAAAACgFg0cOFCJiYm296NGjVJMTIxWrVplF8BfccUVuueee6os64033tC0adN011136ZVXXpHZbLbb//TTT+vpp5/27An4KbeG0B87dkylpaWKiYmxS4+JiVFeXp7L406ePKlGjRrJbDbr5ptv1qJFi3TTTTfZ9qempurll19WTk6OZs2apc8//1wDBw5UaanzJXKysrIUGRlp21q1auXOaQAAAAAAvKhJkyYKDw9Xgwbur5CSmZmpqKgovfjiiw7BuyRFRkZq8uTJDumrV6/WDTfcoIYNG6px48a6+eabtWPHjppU3294ZX2Zxo0ba+vWrTp16pRycnKUkZGhNm3a2IbXDx061Ja3c+fO6tKli9q2basNGzaof//+DuWNHz9eGRkZtvcFBQUE8QAAAADgJ06ePKljx47JMAwdOXJEixYt0qlTpxx628+cOaNjx445HB8RESGz2ax//etf+te//qXf//73atSoUbU//5VXXtGIESOUkpKiWbNmqaioSEuWLFGvXr303XffKT4+/mJP0SfcCuCjoqIUHBzsMEFAfn5+lc+vBwUFqV27dpKkhIQE7dq1S1lZWQ7Px1do06aNoqKitHfvXqcBfGhoqEJDQ92pOgAAAAD4LcMwdLrE+QhkXwgPCZbJZKrx8cnJ9iujhIaGatmyZXYjsSXpxRdf1Isvvuhw/KpVqzR06FDt3r1bknT11Vfb7TcMQ8ePH7dLa9KkiRo0aKBTp07poYce0u9//3s9//zztv0jRozQlVdeqRkzZtilBxK3Aniz2ayu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7t27NXnyZG3atEnp6emSJJPJpIcffljTp0/XBx98oH/+858aPny44uLi7CbKI5AHAAAAAPgbbwTuFdx+Bn7IkCE6evSoMjMzlZeXp4SEBGVnZysmJkaSdODAAQVVWh+7Z8+eWrlypSZMmKDHH39c7du313vvvWdbA16SHn30URUWFuoPf/iDTpw4oV69eik7O9u2BnxlFYF8xbrwEydOVHBw+VT+ISEhbv8BAHeEhoZq0qRJCg11nMEc8CTaGryFtgZvoa3BW2hr8JaK+HPAgAEqLS2tlXXfz+f2OvD+piKQ3717tzZt2qQuXbr4ukoAAAAAgDpu27ZtSkxMVIcOHWo9cK8Q8AE8AAAAAAD1gdvPwAMAAAAAAO8jgAcAAAAAIAAQwAMAAAAAEAD8JoDPyspSt27d1LhxY0VHR2vw4MH6/vvvHfLl5uaqX79+atiwoSIiInTjjTfq9OnTtv0///yz7r77bkVERKhJkyYaNWqUTp06ZVfGtm3bdMMNNygsLEytWrXS7Nmza/384D+81dZ++OEHmUwmh+3rr7/2ynnC9zzV1p588kn17NlTFotFTZo0cfpZBw4c0M033yyLxaLo6Gg98sgjOnv2bG2dGvyMN9uas++1119/vbZODX7GE23thx9+0KhRo9S6dWuFh4erbdu2mjRpkqxWq10ZXK/Vb95qa1yvwVO/obfeeqsuu+wyhYWFqUWLFrr33nt1+PBhuzI88b3mNwH8559/rgcffFBff/211q5dq5KSEg0YMECFhYW2PLm5uUpNTdWAAQO0ceNGffvtt0pPT7dbtu7uu+/Wjh07tHbtWn300Uf64osv9Ic//MG2v6CgQAMGDNDll1+uzZs3a86cOZo8ebKef/55r54vfMdbba3CunXr9NNPP9m2rl27euU84XueamtWq1V33nmnHnjgAaefU1paqptvvllWq1VfffWVVqxYoeXLlyszM7PWzxH+wVttrcJLL71k9702ePDg2jo1+BlPtLXdu3errKxMzz33nHbs2KGnn35aS5cu1eOPP24rg+s1eKutVeB6rf7y1G9o37599eabb+r777/X22+/rX379umOO+6w7ffY95rhp44cOWJIMj7//HNbWlJSkjFhwgSXx+zcudOQZHz77be2tNWrVxsmk8k4dOiQYRiG8eyzzxpNmzY1iouLbXn+/Oc/G1deeWUtnAUCQW21tf379xuSjO+++67W6o7AUpO2VtlLL71kREZGOqR/8sknRlBQkJGXl2dLW7JkiREREWH3XYf6o7bammEYhiTj3Xff9UAtURdcbFurMHv2bKN169a291yv4Xy11da4XsP5PNXW3n//fcNkMhlWq9UwDM99r/lND/z5Tp48KUlq1qyZJOnIkSP65ptvFB0drZ49eyomJka9e/fWl19+aTsmNzdXTZo0UWJioi0tOTlZQUFB+uabb2x5brzxRpnNZluelJQUff/99/rvf//rjVODn6mttlbh1ltvVXR0tHr16qUPPvjAC2cEf1WTtlYdubm56ty5s2JiYmxpKSkpKigo0I4dOzx3AggYtdXWKjz44IOKiopS9+7dtWzZMhmsSFtveaqtnTx50laGxPUaHNVWW6vA9RoqeKKt/fzzz3rttdfUs2dPhYSESPLc95pfBvBlZWV6+OGHdf311+vqq6+WJP373/+WJE2ePFmjR49Wdna2rrvuOvXv31979uyRJOXl5Sk6OtqurAYNGqhZs2bKy8uz5al8kSvJ9r4iD+qP2mxrjRo10rx58/TWW2/p448/Vq9evTR48GB+FOqpmra16uB7DZXVZluTpKlTp+rNN9/U2rVrdfvtt2vMmDFatGiRx88D/s9TbW3v3r1atGiR7rvvPlsa32uorDbbGtdrqOxi29qf//xnNWzYUJdccokOHDig999/37bPU99rDWp0ZrXswQcf1Pbt2+3uapSVlUmS7rvvPqWlpUmSrr32WuXk5GjZsmXKysrySV0R2GqzrUVFRSkjI8P2vlu3bjp8+LDmzJmjW2+91YNngUDA9xq8pbbb2sSJE22vr732WhUWFmrOnDl66KGHPHQGCBSeaGuHDh1Samqq7rzzTo0ePdp7lUdAqc22xvUaKrvYtvbII49o1KhR+s9//qMpU6Zo+PDh+uijj2QymTxWR7/rgU9PT9dHH32k9evX69JLL7Wlt2jRQpLUsWNHu/xXXXWVDhw4IEmKjY3VkSNH7PafPXtWP//8s2JjY2158vPz7fJUvK/Ig/qhttuaM0lJSdq7d6+nTgEB4mLaWnXwvYYKtd3WnElKStLBgwdVXFx8UeUgsHiirR0+fFh9+/ZVz549HSZx4nsNFWq7rTnD9Vr95Im2FhUVpSuuuEI33XSTXn/9dX3yySe2FQ089b3mNwG8YRhKT0/Xu+++q88++0ytW7e22x8fH6+4uDiHKf3/9a9/6fLLL5ck9ejRQydOnNDmzZtt+z/77DOVlZUpKSnJlueLL75QSUmJLc/atWt15ZVXqmnTprV1evAj3mprzmzdutX2JYC6zxNtrTp69Oihf/7zn3Y3ldauXauIiAiHHxvUTd5qa85s3bpVTZs2VWho6EWVg8DgqbZ26NAh9enTR127dtVLL71kN5OzxPUavNfWnOF6rX6prd/Qip77ihvcHvtec2vKu1r0wAMPGJGRkcaGDRuMn376ybYVFRXZ8jz99NNGRESE8dZbbxl79uwxJkyYYISFhRl79+615UlNTTWuvfZa45tvvjG+/PJLo3379sawYcNs+0+cOGHExMQY9957r7F9+3bj9ddfNywWi/Hcc8959XzhO95qa8uXLzdWrlxp7Nq1y9i1a5fx5JNPGkFBQcayZcu8er7wHU+1tf/85z/Gd999Z0yZMsVo1KiR8d133xnfffed8csvvxiGYRhnz541rr76amPAgAHG1q1bjezsbKN58+bG+PHjvX7O8A1vtbUPPvjAeOGFF4x//vOfxp49e4xnn33WsFgsRmZmptfPGb7hibZ28OBBo127dkb//v2NgwcP2pVTges1eKutcb0GT7S1r7/+2li0aJHx3XffGT/88IORk5Nj9OzZ02jbtq1x5swZwzA8973mNwG8JKfbSy+9ZJcvKyvLuPTSSw2LxWL06NHD+Nvf/ma3//jx48awYcOMRo0aGREREUZaWprtwqPCP/7xD6NXr15GaGio0bJlS2PmzJm1fXrwI95qa8uXLzeuuuoqw2KxGBEREUb37t2Nt956yxunCD/hqbY2YsQIp+WsX7/elueHH34wBg4caISHhxtRUVHGn/70J6OkpMQLZwl/4K22tnr1aiMhIcFo1KiR0bBhQ+Oaa64xli5dapSWlnrpTOFrnmhrL730kstyKuN6rX7zVlvjeg2eaGvbtm0z+vbtazRr1swIDQ014uPjjfvvv984ePCgXRme+F4z/a/SAAAAAADAj/nNM/AAAAAAAMA1AngAAAAAAAIAATwAAAAAAAGAAB4AAAAAgABAAA8AAAAAQAAggAcAAAAAIAAQwAMAAAAAEAAI4AEAQLUtX75cJpPJth07dsy2r0+fPrr66qt9Uq8mTZrY6pSenu6TOgAAUNsI4AEAgNuefvppvfLKK2rcuLHHy37ooYdkMpm0d+9el3meeOIJmUwmbdu2TZL0/PPP65VXXvF4XQAA8CcE8AAAwG2DBw/WPffco9DQUI+Xfffdd0uSVq5c6TLPqlWr1LlzZ3Xp0kWSdNddd+mee+7xeF0AAPAnBPAAAAS4wsJCX1fBo5KSktSuXTutWrXK6f7c3Fzt37/fFugDAFBfEMADAFADhw4d0u9+9zvFxMQoNDRUnTp10rJly+zybNiwQSaTSW+++aaefPJJXXrppQoLC1P//v2dDg//5ptvlJqaqsjISFksFvXu3Vt///vf7fJMnjxZJpNJO3fu1G9/+1s1bdpUvXr1kiSVlZVp8uTJiouLk8ViUd++fbVz507Fx8dr5MiRkqR///vfMplMevrppx0+/6uvvpLJZHIZONfEp59+KovFomHDhuns2bOSpN27d+uOO+5Qs2bNFBYWpsTERH3wwQd2x919993avXu3tmzZ4lDmypUrZTKZNGzYMI/VEwCAQEAADwCAm/Lz8/WrX/1K69atU3p6uhYsWKB27dpp1KhRmj9/vkP+mTNn6t1339W4ceM0fvx4ff311w69x5999pluvPFGFRQUaNKkSZoxY4ZOnDihfv36aePGjQ5l3nnnnSoqKtKMGTM0evRoSdL48eM1ZcoUJSYmas6cOWrfvr1SUlLseujbtGmj66+/Xq+99ppDma+99poaN26s22677SL/QuU++ugj3Xrrrbrzzjv16quvqkGDBtqxY4d+9atfadeuXXrsscc0b948NWzYUIMHD9a7775rO9bVMPrS0lK9+eabuuGGG3TZZZd5pJ4AAAQMAwAAuGXUqFFGixYtjGPHjtmlDx061IiMjDSKiooMwzCM9evXG5KMq666yiguLrblW7BggSHJ+Oc//2kYhmGUlZUZ7du3N1JSUoyysjJbvqKiIqN169bGTTfdZEubNGmSIckYNmyY3Wfn5eUZDRo0MAYPHmyXPnnyZEOSMWLECFvac889Z0gydu3aZUuzWq1GVFSUXT5nXnrpJUOSsX//fod9vXv3Njp16mQYhmG8/fbbRkhIiDF69GijtLTUlqd///5G586djTNnztjSysrKjJ49exrt27e3K69bt27GpZdeand8dna2Icl47rnnnNZPkvHggw9WeQ4AAAQqeuABAHCDYRh6++23NWjQIBmGoWPHjtm2lJQUnTx50mHYd1pamsxms+39DTfcIKl8OLskbd26VXv27NFvf/tbHT9+3FZeYWGh+vfvry+++EJlZWV2Zd5///1273NycnT27FmNGTPGLv2Pf/yjwzncddddCgsLs+uFX7NmjY4dO+aRieBWrVqlIUOG6L777tNzzz2noKDyy42ff/5Zn332me666y798ssvtvM8fvy4UlJStGfPHh06dMhWzj333KODBw/qiy++sKWtXLlSZrNZd95550XXEwCAQNPA1xUAACCQHD16VCdOnNDzzz+v559/3mmeI0eO2L0/f6h306ZNJUn//e9/JUl79uyRJI0YMcLl5548edJ2nCS1bt3abv9//vMfSVK7du3s0ps1a2Z3nFS+ZvqgQYO0cuVKTZs2TVL58PmWLVuqX79+LutQHfv379c999yjO++8U4sWLbLbt3fvXhmGoYkTJ2rixIlOjz9y5IhatmwpSRo6dKgyMjK0cuVK9enTR2fOnNG7776rgQMHOpwTAAD1AQE8AABuqOgJv+eee1wG3BVLm1UIDg52ms8wDLsy58yZo4SEBKd5GzVqZPc+PDy82nV2Zvjw4Xrrrbf01VdfqXPnzvrggw80ZswYW295TbVo0UItWrTQJ598ok2bNikxMdG2r+I8x40bp5SUFKfHV74BER0drZtuuklvv/22Fi9erA8//FC//PILs88DAOotAngAANzQvHlzNW7cWKWlpUpOTvZImW3btpUkRURE1LjMyy+/XFJ5L3fl3vnjx4/bevorS01NVfPmzfXaa68pKSlJRUVFuvfee2v02ZWFhYXpo48+Ur9+/ZSamqrPP/9cnTp1klQ+gZ4khYSEVPs87777bmVnZ2v16tVauXKlIiIiNGjQoIuuJwAAgYhn4AEAcENwcLBuv/12vf3229q+fbvD/qNHj7pdZteuXdW2bVvNnTtXp06dqlGZ/fv3V4MGDbRkyRK79GeeecZp/gYNGmjYsGF68803tXz5cnXu3Nlh5EBNRUZGas2aNbYe9H379kkq71Hv06ePnnvuOf30008Oxzk7z8GDB8tisejZZ5/V6tWr9Zvf/EZhYWEeqScAAIGGHngAANw0c+ZMrV+/XklJSRo9erQ6duyon3/+WVu2bNG6dev0888/u1VeUFCQ/vKXv2jgwIHq1KmT0tLS1LJlSx06dEjr169XRESEPvzwwyrLiImJ0dixYzVv3jzdeuutSk1N1T/+8Q+tXr1aUVFRMplMDscMHz5cCxcu1Pr16zVr1iy36nwhUVFRWrt2rXr16qXk5GR9+eWXatmypRYvXqxevXqpc+fOGj16tNq0aaP8/Hzl5ubq4MGD+sc//mFXTqNGjTR48GDbcnIMnwcA1Gf0wAMA4KaYmBht3LhRaWlpeuedd2xrwf/88881DoT79Omj3NxcJSYm6plnntEf//hHLV++XLGxsfp//+//VauMWbNmaeLEifr22281btw47d27V59++qkMw3Daa921a1d16tRJQUFBtRIYt2zZUuvWrVNxcbFuuukmHTt2TB07dtSmTZt08803a/ny5XrwwQe1dOlSBQUFKTMz02k5FXVr0aLFRU+yBwBAIDMZFTPoAACAOufEiRNq2rSppk+frieeeMJh/7XXXqtmzZopJyenWuUtX75caWlp2rJli1q1aqVLLrnEae++t/38888qKytT8+bN9eCDD7p8dAAAgEBGDzwAAHXE6dOnHdLmz58vqbyH/3ybNm3S1q1bNXz4cLc/67rrrlPz5s11/Phxt4+tDW3atFHz5s19XQ0AAGoVPfAAANQRy5cv1/Lly/XrX/9ajRo10pdffqlVq1ZpwIABWrNmjS3f9u3btXnzZs2bN0/Hjh3Tv//972pPDPfTTz9px44dtve9e/dWSEiIx8/FXZ9//rlKSkokSa1atdKVV17p4xoBAOB5TGIHAEAd0aVLFzVo0ECzZ89WQUGBbWK76dOn2+X761//qqlTp+rKK6/UqlWr3JrVvWKdd3/Tu3dvX1cBAIBaRw88AAAAAAABgGfgAQAAAAAIAATwAAAAAAAEAAJ4AAAAAAACAAE8AAAAAAABgAAeAAAAAIAAQAAPAAAAAEAAIIAHAAAAACAAEMADAAAAABAACOABAAAAAAgA/x/IGLeF3okAAAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, axs = plt.subplots()\n", - "plot_energy(\n", - " axs,\n", - " data_det001.energy_sum_smeared,\n", - " yerr=False,\n", - " label=\"BEGe\",\n", - " xrange=(2600, 2630),\n", - " log_y=False,\n", - " bins=150,\n", - " density=True,\n", - ")\n", - "plot_energy(\n", - " axs,\n", - " data_det002.energy_sum_smeared,\n", - " yerr=False,\n", - " label=\"COAX\",\n", - " xrange=(2600, 2630),\n", - " log_y=False,\n", - " bins=150,\n", - " density=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We see clearly the worse energy resolution for the COAX detector.\n", - "> **To Do**: add a gaussian fit of this." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Part 5) Adding a new processor" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The next part of the tutorial describes how to add a new processor to the chain. We use as an example spatial *clustering* of steps.\n", - "This will be added later. " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "sims", - "language": "python", - "name": "sims" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.10" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/source/notebooks/reboost_hpge_tutorial_hit.rst b/docs/source/notebooks/reboost_hpge_tutorial_hit.rst new file mode 100644 index 0000000..36d71fa --- /dev/null +++ b/docs/source/notebooks/reboost_hpge_tutorial_hit.rst @@ -0,0 +1,712 @@ +Hit tier hpge simulation processing +=================================== + +This tutorial describes how to process the HPGe detector simulations +from **remage** with **reboost**. It buils on the official **remage** +tutorial +`[link] `__ + + .. rubric:: *Note* + :name: note + + To run this tutorial it is recommended to create the following + directory structure to organise the outputs and config inputs. + +.. code:: text + + ├── cfg + │   └── metadata + ├── output + │   ├── stp + │   └── hit + └── reboost_hpge_tutorial.ipynb + +Part 1) Running the remage simulation +------------------------------------- + +Before we can run any post-processing we need to run the Geant4 +simulation. For this we follow the remage tutorial to generate the GDML +geometry. We save this into the GDML file *cfg/geom.gdml* for use by +remage. We also need to save the metadata dictionaries into json files +(in the *cfg/metadata* folder as *BEGe.json* and *Coax.json* + +We use a slightly modified Geant4 macro to demonstrate some features of +reboost (this should be saved as *cfg/th228.mac* to run remage on the +command line). + +.. code:: text + + /RMG/Manager/Logging/LogLevel detail + + /RMG/Geometry/RegisterDetector Germanium BEGe 001 + /RMG/Geometry/RegisterDetector Germanium Coax 002 + /RMG/Geometry/RegisterDetector Scintillator LAr 003 + + /run/initialize + + /RMG/Generator/Confine Volume + /RMG/Generator/Confinement/Physical/AddVolume Source + + /RMG/Generator/Select GPS + /gps/particle ion + /gps/energy 0 eV + /gps/ion 88 224 # 224-Ra + /process/had/rdm/nucleusLimits 208 224 81 88 #Ra-224 to 208-Pb + + + /run/beamOn 1000000 + +We then use the remage executable (see +`[remage-docs] `__ for +installation instructions) to run the simulation: > #### *Note* > Both +of *cfg/th228.mac* and *cfg/geometry.gdml* are needed to run remage + +.. code:: console + + $ remage --threads 8 --gdml-files cfg/geom.gdml --output-file output/stp/output.lh5 -- cfg/th228.mac + +You can lower the number of simulated events to speed up the simulation. + +We can use ``lh5.show()`` to check the output files. + +.. code:: ipython3 + + from lgdo import lh5 + +.. code:: ipython3 + + lh5.show("output/stp/output_t0.lh5") + + +.. parsed-literal:: + + / + └── stp · struct{det001,det002,det003,vertices} + ├── det001 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det002 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det003 · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── v_post · array<1>{real} + │ ├── v_pre · array<1>{real} + │ ├── xloc_post · array<1>{real} + │ ├── xloc_pre · array<1>{real} + │ ├── yloc_post · array<1>{real} + │ ├── yloc_pre · array<1>{real} + │ ├── zloc_post · array<1>{real} + │ └── zloc_pre · array<1>{real} + └── vertices · table{evtid,time,xloc,yloc,zloc,n_part} + ├── evtid · array<1>{real} + ├── n_part · array<1>{real} + ├── time · array<1>{real} + ├── xloc · array<1>{real} + ├── yloc · array<1>{real} + └── zloc · array<1>{real} + + +Part 2) reboost config files +---------------------------- + +For this tutorial we perform a basic post-processing of the *hit* tier +for the two Germanium channels. + +2.1) Setup the environment +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +First we set up the python environment. + +.. code:: ipython3 + + from reboost.hpge import hit + import matplotlib.pyplot as plt + import pyg4ometry as pg4 + import legendhpges + from legendhpges import draw + import awkward as ak + import logging + import colorlog + import hist + import numpy as np + + + plt.rcParams['figure.figsize'] = [12, 4] + plt.rcParams['axes.titlesize'] =12 + plt.rcParams['axes.labelsize'] = 12 + plt.rcParams['legend.fontsize'] = 12 + + + handler = colorlog.StreamHandler() + handler.setFormatter( + colorlog.ColoredFormatter("%(log_color)s%(name)s [%(levelname)s] %(message)s") + ) + logger = logging.getLogger() + logger.handlers.clear() + logger.addHandler(handler) + logger.setLevel(logging.INFO) + logger.info("test") + + + + +.. parsed-literal:: + + root [INFO] test + + +2.2) Processing chain and parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Next we need to make the processing chain config file. + +The processing chain below gives a standard set of steps for a HPGe +simulation. 1. first the steps are windowed into hits, 2. the first +timestamp and index of each hit is computed (for use in event building), +3. the distance to the detector n+ surface is computed and from this the +activeness is calculated (based on the FCCD) 4. the energy in each step +is summed to extract the deposited energy (both with and without +deadlayer correction), 5. the energy is convolved with the detector +response model (gaussian energy resolution). + +We also include some step based quantities in the output to show the +effect of the processors. + +.. code:: ipython3 + + chain = { + "channels": [ + "det001", + "det002" + ], + "outputs": [ + "t0", # first timestamp + "time", # time of each step + "edep", # energy deposited in each step + "evtid", # id of the hit + "global_evtid", # global id of the hit + "distance_to_nplus_surface_mm", # distance to detector nplus surface + "activeness", # activeness for the step + "rpos_loc", # radius of step + "zpos_loc", # z position + "energy_sum", # true summed energy before dead layer or smearing + "energy_sum_deadlayer", # energy sum after dead layers + "energy_sum_smeared" # energy sum after smearing with resolution + ], + "step_group": { + "description": "group steps by time and evtid with 10us window", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", + }, + "locals": { + "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", + "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)", + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)", + }, + "evtid": { + "description": "global evtid of the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit._evtid,axis=-1),np.nan)", + }, + "global_evtid": { + "description": "global evtid of the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit._global_evtid,axis=-1),np.nan)", + }, + "distance_to_nplus_surface_mm": { + "description": "distance to the nplus surface in mm", + "mode": "function", + "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')", + }, + "activeness": { + "description": "activness based on FCCD (no TL)", + "mode": "eval", + "expression": "ak.where(hit.distance_to_nplus_surface_mm{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── edep · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── energy_sum · array<1>{real} + │ ├── energy_sum_deadlayer · array<1>{real} + │ ├── energy_sum_smeared · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── global_evtid · array<1>{real} + │ ├── rpos_loc · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── t0 · array<1>{real} + │ ├── time · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ └── zpos_loc · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + └── det002 · HDF5 group + └── hit · table{edep,time,t0,evtid,global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} + ├── activeness · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── edep · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── energy_sum · array<1>{real} + ├── energy_sum_deadlayer · array<1>{real} + ├── energy_sum_smeared · array<1>{real} + ├── evtid · array<1>{real} + ├── global_evtid · array<1>{real} + ├── rpos_loc · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── t0 · array<1>{real} + ├── time · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + └── zpos_loc · array<1>{array<1>{real}} + ├── cumulative_length · array<1>{real} + └── flattened_data · array<1>{real} + + +The new format is a factor of x17 times smaller than the input file due +to the removal of many *step* based fields which use a lot of memory and +due to the removal of the *vertices* table and the LAr hits. So we can +easily read the whole file into memory. We use *awkward* to analyse the +output files. + +.. code:: ipython3 + + data_det001 = lh5.read_as("det001/hit","output/hit/output.lh5","ak") + data_det002 = lh5.read_as("det002/hit","output/hit/output.lh5","ak") + +.. code:: ipython3 + + data_det001 + + + + +.. raw:: html + +
[{edep: [0.0826, 0.00863, ..., 32.3], time: [1.32e+15, ...], t0: 1.32e+15, ...},
+     {edep: [0.103, 0.0256, ..., 37.6, 6.44], time: [...], t0: 1.24e+15, ...},
+     {edep: [0.0824, 0.00863, ..., 16.8], time: [2.21e+14, ...], t0: 2.21e+14, ...},
+     {edep: [0.101, 0.0802, ..., 20.9], time: [9.09e+14, ...], t0: 9.09e+14, ...},
+     {edep: [0.00332, 0.0171, ..., 45, 27.7], time: [...], t0: 4.26e+13, ...},
+     {edep: [0.0845, 0.00863, ..., 27.9], time: [6.86e+14, ...], t0: 6.86e+14, ...},
+     {edep: [0.0065, 0.255, ..., 41.5, 2.69], time: [...], t0: 1.24e+14, ...},
+     {edep: [0.0388, 0.188, ..., 1.1, 41.5], time: [...], t0: 6.48e+14, ...},
+     {edep: [0.00332, 0.116, ..., 16.2], time: [4.39e+14, ...], t0: 4.39e+14, ...},
+     {edep: [0.00615, 0.0204, ..., 22.1], time: [7.11e+14, ...], t0: 7.11e+14, ...},
+     ...,
+     {edep: [0.19, 0.0171, ..., 42.2, 10.9], time: [...], t0: 1.1e+15, ...},
+     {edep: [0.0118, 0.0303, ..., 34.5, 21.4], time: [...], t0: 1.51e+15, ...},
+     {edep: [0.0204, 0.152, ..., 2.79, 51.9], time: [...], t0: 9.73e+14, ...},
+     {edep: [0.118, 0.0254, ..., 41.2, 38.6], time: [...], t0: 9.67e+14, ...},
+     {edep: [0.0824, 0.0254, ..., 34.6, 18.9], time: [...], t0: 6.64e+14, ...},
+     {edep: [0.148, 0.0802, ..., 40.9, 24], time: [...], t0: 5.56e+14, ...},
+     {edep: [0.022, 0.0148, ..., 34.8, 11.9], time: [...], t0: 6.52e+14, ...},
+     {edep: [0.0155, 0.118, ..., 0.458, 9.65], time: [...], t0: 3.97e+14, ...},
+     {edep: [0.0065, 0.00615, ..., 13.7], time: [3.98e+14, ...], t0: 3.98e+14, ...}]
+    --------------------------------------------------------------------------------
+    type: 835793 * {
+        edep: var * float64,
+        time: var * float64,
+        t0: float64,
+        evtid: float64,
+        global_evtid: float64,
+        distance_to_nplus_surface_mm: var * float64,
+        activeness: var * int64,
+        rpos_loc: var * float64,
+        zpos_loc: var * float64,
+        energy_sum: float64,
+        energy_sum_deadlayer: float64,
+        energy_sum_smeared: float64
+    }
+ + + +Part 4) Steps in a standard processing chain +-------------------------------------------- + +The next part of the tutorial gives more details on each step of the +processing chain. + +4.1) Windowing +~~~~~~~~~~~~~~ + +We can compare the decay index (“evtid” in the “stp” file) to the index +of the “hit”, the row of the hit table. We see that only some decays +correspond to “hits” in the detector, as we expect. We also see that a +single decay does not often produce multiple hits. This is also expected +since the probability of detection is fairly low. + +.. code:: ipython3 + + plt.scatter(np.sort(data_det001.global_evtid),np.arange(len(data_det001)),marker=".",alpha=1) + plt.xlabel("Decay index (evtid)") + plt.ylabel("Hit Index") + plt.grid() + plt.xlim(0,1000) + plt.ylim(0,100) + + + + +.. parsed-literal:: + + (0.0, 100.0) + + + + +.. image:: images/output_20_1.png + + +However, we can use some array manipulation to extract decay index with +multiple hits, by plotting the times we see the effect of the windowing. + +.. code:: ipython3 + + def plot_times(times:ak.Array,xrange=None,sub_zero=False,**kwargs): + fig,ax = plt.subplots() + for idx,_time in enumerate(times): + if (sub_zero): + _time=_time-ak.min(_time) + h=hist.new.Reg(100,(ak.min(times)/1e9),(ak.max(times)/1e9)+1, name="Time since event start [s]").Double() + h.fill(_time/1e9) + h.plot(**kwargs,label=f"Hit {idx}") + ax.legend() + ax.set_yscale("log") + if xrange is not None: + ax.set_xlim(*xrange) + + +.. code:: ipython3 + + unique,counts = np.unique(data_det001.global_evtid,return_counts=True) + +.. code:: ipython3 + + plot_times(data_det001[data_det001.global_evtid==unique[counts>1][1]].time,histtype="step",yerr=False) + + + + +.. image:: images/output_24_0.png + + +4.2) Distance to surface and dead layer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +One of the important step in the post-processing of HPGe detector +simulations is the detector activeness mapping. Energy deposited close +to the surface of the Germanium detector will result in incomplete +charge collection and a degraded signal. To account for this we added a +processor to compute the distance to the detector surface (based on +``legendhpges.base.HPGe.distance_to_surface()``) + +For the steps in the detector we extracted in the processing chain the +local r and z coordinates and we can plot maps of the distance to the +detector surface and the activeness for each step. We select only events +within 5 mm of the surface for the first plots. We can see that the +processor works as expected. + +.. code:: ipython3 + + def plot_map(field,scale="BuPu",clab="Distance [mm]"): + fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True) + n=100000 + for idx, (data,config) in enumerate(zip([data_det001,data_det002],["cfg/metadata/BEGe.json","cfg/metadata/Coax.json"])): + + reg=pg4.geant4.Registry() + hpge = legendhpges.make_hpge(config,registry=reg) + + legendhpges.draw.plot_profile(hpge, split_by_type=True,axes=axs[idx]) + rng = np.random.default_rng() + r = rng.choice([-1,1],p=[0.5,0.5],size=len(ak.flatten(data.rpos_loc)))*ak.flatten(data.rpos_loc) + z = ak.flatten(data.zpos_loc) + c=ak.flatten(data[field]) + cut = c<5 + + s=axs[idx].scatter(r[cut][0:n],z[cut][0:n], c= c[cut][0:n],marker=".", label="gen. points",cmap=scale) + #axs[idx].axis("equal") + + if idx == 0: + axs[idx].set_ylabel("Height [mm]") + c=plt.colorbar(s) + c.set_label(clab) + + axs[idx].set_xlabel("Radius [mm]") + + +.. code:: ipython3 + + plot_map("distance_to_nplus_surface_mm") + + +.. parsed-literal:: + + root [INFO] genericpolycone.antlr> + root [INFO] genericpolyhedra.antlr> + root [INFO] visualisation.Mesh.getBoundingBox> [-36.98, -36.98, 0.0] [36.98, 36.98, 29.46] + root [INFO] box.pycsgmesh> getBoundingBoxMesh + root [INFO] genericpolycone.antlr> + root [INFO] genericpolyhedra.antlr> + root [INFO] visualisation.Mesh.getBoundingBox> [-38.25, -38.25, 0.0] [38.25, 38.25, 84.0] + root [INFO] box.pycsgmesh> getBoundingBoxMesh + + + +.. image:: images/output_27_1.png + + +.. code:: ipython3 + + plot_map("activeness",clab="Activeness",scale="viridis") + + +.. parsed-literal:: + + root [INFO] genericpolycone.antlr> + root [INFO] genericpolyhedra.antlr> + root [INFO] visualisation.Mesh.getBoundingBox> [-36.98, -36.98, 0.0] [36.98, 36.98, 29.46] + root [INFO] box.pycsgmesh> getBoundingBoxMesh + root [INFO] genericpolycone.antlr> + root [INFO] genericpolyhedra.antlr> + root [INFO] visualisation.Mesh.getBoundingBox> [-38.25, -38.25, 0.0] [38.25, 38.25, 84.0] + root [INFO] box.pycsgmesh> getBoundingBoxMesh + + + +.. image:: images/output_28_1.png + + +We can also plot a histogram of the distance to the surface. + +.. code:: ipython3 + + def plot_distances(axes,distances,xrange=None,label=" ",**kwargs): + + h=hist.new.Reg(100,*xrange, name="Distance to n+ surface [mm]").Double() + h.fill(distances) + h.plot(**kwargs,label=label) + axes.legend() + axes.set_yscale("log") + if xrange is not None: + ax.set_xlim(*xrange) + + +.. code:: ipython3 + + fig,ax = plt.subplots() + plot_distances(ax,ak.flatten(data_det001.distance_to_nplus_surface_mm),xrange=(0,35),label="BEGe",histtype="step",yerr=False) + plot_distances(ax,ak.flatten(data_det002.distance_to_nplus_surface_mm),xrange=(0,35),label="Coax",histtype="step",yerr=False) + + + + +.. image:: images/output_31_0.png + + +4.3) Summed energies +~~~~~~~~~~~~~~~~~~~~ + +Our processing chain also sums the energies of the hits, both before and +after weighting by the activeness. + +.. code:: ipython3 + + def plot_energy(axes,energy,bins=400,xrange=None,label=" ",log_y=True,**kwargs): + + h=hist.new.Reg(bins,*xrange, name="energy [keV]").Double() + h.fill(energy) + h.plot(**kwargs,label=label) + axes.legend() + if (log_y): + axes.set_yscale("log") + if xrange is not None: + axes.set_xlim(*xrange) + +.. code:: ipython3 + + fig, ax = plt.subplots() + ax.set_title("BEGe energy spectrum") + plot_energy(ax,data_det001.energy_sum,yerr=False,label="True energy",xrange=(0,4000)) + plot_energy(ax,data_det001.energy_sum_deadlayer,yerr=False,label="Energy after dead layer",xrange=(0,4000)) + + + +.. image:: images/output_34_0.png + + +.. code:: ipython3 + + fig, ax = plt.subplots() + ax.set_title("COAX energy spectrum") + plot_energy(ax,data_det002.energy_sum,yerr=False,label="True energy",xrange=(0,4000)) + plot_energy(ax,data_det002.energy_sum_deadlayer,yerr=False,label="Energy after dead layer",xrange=(0,4000)) + + + +.. image:: images/output_35_0.png + + +4.4) Smearing +~~~~~~~~~~~~~ + +The final step in the processing chain smeared the energies by the +energy resolution. This represents a general class of processors based +on ‘’heuristic’’ models. Other similar processors could be implemented +in a similar way. It would also be simple to use insted an energy +dependent resolution curve. To see the effect we have to zoom into the +2615 keV peak. + +.. code:: ipython3 + + fig, axs = plt.subplots() + plot_energy(axs,data_det001.energy_sum_smeared,yerr=False,label="BEGe",xrange=(2600,2630),log_y=False,bins=150,density=True) + plot_energy(axs,data_det002.energy_sum_smeared,yerr=False,label="COAX",xrange=(2600,2630),log_y=False,bins=150,density=True) + + + +.. image:: images/output_37_0.png + + +We see clearly the worse energy resolution for the COAX detector. > **To +Do**: add a gaussian fit of this. + +Part 5) Adding a new processor +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The next part of the tutorial describes how to add a new processor to +the chain. We use as an example spatial *clustering* of steps. This will +be added later. diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst index 0ed19e2..a535497 100644 --- a/docs/source/tutorial.rst +++ b/docs/source/tutorial.rst @@ -6,5 +6,5 @@ Basic Tutorial :maxdepth: 2 :caption: Contents: - notebooks/reboost_hpge_tutorial.ipynb + notebooks/reboost_hpge_tutorial_hit notebooks/reboost_hpge_evt_tutorial From ecd90e724f85e330df6ae87d5dcc3f5f6255e6a7 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Thu, 21 Nov 2024 23:59:16 +0100 Subject: [PATCH 74/81] [evt] adding build_tcm functionality --- .../notebooks/reboost_hpge_tutorial_hit.rst | 220 +++++++++--------- src/reboost/hpge/evt.py | 152 ++++++++++++ src/reboost/hpge/tcm.py | 56 ++--- src/reboost/hpge/utils.py | 73 ------ 4 files changed, 277 insertions(+), 224 deletions(-) create mode 100644 src/reboost/hpge/evt.py diff --git a/docs/source/notebooks/reboost_hpge_tutorial_hit.rst b/docs/source/notebooks/reboost_hpge_tutorial_hit.rst index 36d71fa..91d4836 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial_hit.rst +++ b/docs/source/notebooks/reboost_hpge_tutorial_hit.rst @@ -81,43 +81,43 @@ We can use ``lh5.show()`` to check the output files. .. parsed-literal:: / - └── stp · struct{det001,det002,det003,vertices} - ├── det001 · table{evtid,particle,edep,time,xloc,yloc,zloc} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── xloc · array<1>{real} - │ ├── yloc · array<1>{real} - │ └── zloc · array<1>{real} - ├── det002 · table{evtid,particle,edep,time,xloc,yloc,zloc} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── xloc · array<1>{real} - │ ├── yloc · array<1>{real} - │ └── zloc · array<1>{real} - ├── det003 · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} - │ ├── edep · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── particle · array<1>{real} - │ ├── time · array<1>{real} - │ ├── v_post · array<1>{real} - │ ├── v_pre · array<1>{real} - │ ├── xloc_post · array<1>{real} - │ ├── xloc_pre · array<1>{real} - │ ├── yloc_post · array<1>{real} - │ ├── yloc_pre · array<1>{real} - │ ├── zloc_post · array<1>{real} - │ └── zloc_pre · array<1>{real} - └── vertices · table{evtid,time,xloc,yloc,zloc,n_part} - ├── evtid · array<1>{real} - ├── n_part · array<1>{real} - ├── time · array<1>{real} - ├── xloc · array<1>{real} - ├── yloc · array<1>{real} - └── zloc · array<1>{real} + └── stp · struct{det001,det002,det003,vertices} + ├── det001 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det002 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det003 · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── v_post · array<1>{real} + │ ├── v_pre · array<1>{real} + │ ├── xloc_post · array<1>{real} + │ ├── xloc_pre · array<1>{real} + │ ├── yloc_post · array<1>{real} + │ ├── yloc_pre · array<1>{real} + │ ├── zloc_post · array<1>{real} + │ └── zloc_pre · array<1>{real} + └── vertices · table{evtid,time,xloc,yloc,zloc,n_part} + ├── evtid · array<1>{real} + ├── n_part · array<1>{real} + ├── time · array<1>{real} + ├── xloc · array<1>{real} + ├── yloc · array<1>{real} + └── zloc · array<1>{real} Part 2) reboost config files @@ -143,14 +143,14 @@ First we set up the python environment. import colorlog import hist import numpy as np - - + + plt.rcParams['figure.figsize'] = [12, 4] plt.rcParams['axes.titlesize'] =12 plt.rcParams['axes.labelsize'] = 12 plt.rcParams['legend.fontsize'] = 12 - - + + handler = colorlog.StreamHandler() handler.setFormatter( colorlog.ColoredFormatter("%(log_color)s%(name)s [%(levelname)s] %(message)s") @@ -160,7 +160,7 @@ First we set up the python environment. logger.addHandler(handler) logger.setLevel(logging.INFO) logger.info("test") - + @@ -207,7 +207,7 @@ effect of the processors. "energy_sum_deadlayer", # energy sum after dead layers "energy_sum_smeared" # energy sum after smearing with resolution ], - "step_group": { + "step_group": { "description": "group steps by time and evtid with 10us window", "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", }, @@ -266,7 +266,7 @@ effect of the processors. "mode": "function", "expression": "reboost.hpge.processors.smear_energies(hit.energy_sum_deadlayer,reso=pars.fwhm_in_keV/2.355)" } - + } } @@ -278,16 +278,16 @@ We also create our parameters file. "det001": { "meta_name":"BEGe.json", "phy_vol_name":"BEGe", - "fwhm_in_keV":2.69, - "fccd_in_mm":1.420, # dead layer in mm + "fwhm_in_keV":2.69, + "fccd_in_mm":1.420, # dead layer in mm }, "det002": { "meta_name":"Coax.json", "phy_vol_name":"Coax", - "fwhm_in_keV":4.420, - "fccd_in_mm":2.69, + "fwhm_in_keV":4.420, + "fccd_in_mm":2.69, } - + } Part 3) Running the processing @@ -342,58 +342,58 @@ file structure showing the new *hit* oriented data format. .. parsed-literal:: / - ├── det001 · HDF5 group - │ └── hit · table{edep,time,t0,evtid,global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} - │ ├── activeness · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── edep · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── energy_sum · array<1>{real} - │ ├── energy_sum_deadlayer · array<1>{real} - │ ├── energy_sum_smeared · array<1>{real} - │ ├── evtid · array<1>{real} - │ ├── global_evtid · array<1>{real} - │ ├── rpos_loc · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ ├── t0 · array<1>{real} - │ ├── time · array<1>{array<1>{real}} - │ │ ├── cumulative_length · array<1>{real} - │ │ └── flattened_data · array<1>{real} - │ └── zpos_loc · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - └── det002 · HDF5 group - └── hit · table{edep,time,t0,evtid,global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} - ├── activeness · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── edep · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── energy_sum · array<1>{real} - ├── energy_sum_deadlayer · array<1>{real} - ├── energy_sum_smeared · array<1>{real} - ├── evtid · array<1>{real} - ├── global_evtid · array<1>{real} - ├── rpos_loc · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - ├── t0 · array<1>{real} - ├── time · array<1>{array<1>{real}} - │ ├── cumulative_length · array<1>{real} - │ └── flattened_data · array<1>{real} - └── zpos_loc · array<1>{array<1>{real}} - ├── cumulative_length · array<1>{real} - └── flattened_data · array<1>{real} + ├── det001 · HDF5 group + │ └── hit · table{edep,time,t0,evtid,global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} + │ ├── activeness · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── edep · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── energy_sum · array<1>{real} + │ ├── energy_sum_deadlayer · array<1>{real} + │ ├── energy_sum_smeared · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── global_evtid · array<1>{real} + │ ├── rpos_loc · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── t0 · array<1>{real} + │ ├── time · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ └── zpos_loc · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + └── det002 · HDF5 group + └── hit · table{edep,time,t0,evtid,global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} + ├── activeness · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── edep · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── energy_sum · array<1>{real} + ├── energy_sum_deadlayer · array<1>{real} + ├── energy_sum_smeared · array<1>{real} + ├── evtid · array<1>{real} + ├── global_evtid · array<1>{real} + ├── rpos_loc · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── t0 · array<1>{real} + ├── time · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + └── zpos_loc · array<1>{array<1>{real}} + ├── cumulative_length · array<1>{real} + └── flattened_data · array<1>{real} The new format is a factor of x17 times smaller than the input file due @@ -546,25 +546,25 @@ processor works as expected. fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True) n=100000 for idx, (data,config) in enumerate(zip([data_det001,data_det002],["cfg/metadata/BEGe.json","cfg/metadata/Coax.json"])): - + reg=pg4.geant4.Registry() hpge = legendhpges.make_hpge(config,registry=reg) - + legendhpges.draw.plot_profile(hpge, split_by_type=True,axes=axs[idx]) rng = np.random.default_rng() r = rng.choice([-1,1],p=[0.5,0.5],size=len(ak.flatten(data.rpos_loc)))*ak.flatten(data.rpos_loc) z = ak.flatten(data.zpos_loc) c=ak.flatten(data[field]) cut = c<5 - + s=axs[idx].scatter(r[cut][0:n],z[cut][0:n], c= c[cut][0:n],marker=".", label="gen. points",cmap=scale) #axs[idx].axis("equal") - + if idx == 0: axs[idx].set_ylabel("Height [mm]") c=plt.colorbar(s) c.set_label(clab) - + axs[idx].set_xlabel("Radius [mm]") @@ -615,7 +615,7 @@ We can also plot a histogram of the distance to the surface. .. code:: ipython3 def plot_distances(axes,distances,xrange=None,label=" ",**kwargs): - + h=hist.new.Reg(100,*xrange, name="Distance to n+ surface [mm]").Double() h.fill(distances) h.plot(**kwargs,label=label) @@ -623,7 +623,7 @@ We can also plot a histogram of the distance to the surface. axes.set_yscale("log") if xrange is not None: ax.set_xlim(*xrange) - + .. code:: ipython3 @@ -646,7 +646,7 @@ after weighting by the activeness. .. code:: ipython3 def plot_energy(axes,energy,bins=400,xrange=None,label=" ",log_y=True,**kwargs): - + h=hist.new.Reg(bins,*xrange, name="energy [keV]").Double() h.fill(energy) h.plot(**kwargs,label=label) @@ -686,7 +686,7 @@ after weighting by the activeness. The final step in the processing chain smeared the energies by the energy resolution. This represents a general class of processors based on ‘’heuristic’’ models. Other similar processors could be implemented -in a similar way. It would also be simple to use insted an energy +in a similar way. It would also be simple to use instead an energy dependent resolution curve. To see the effect we have to zoom into the 2615 keV peak. diff --git a/src/reboost/hpge/evt.py b/src/reboost/hpge/evt.py new file mode 100644 index 0000000..f0ef72e --- /dev/null +++ b/src/reboost/hpge/evt.py @@ -0,0 +1,152 @@ +from __future__ import annotations + +import logging + +import awkward as ak +import numpy as np +from lgdo import Table +from lgdo.lh5 import LH5Iterator, write +from pygama.evt.build_evt import evaluate_expression +from pygama.evt.utils import TCMData + +log = logging.getLogger(__name__) + + +def build_evt( + hit_file: str, tcm_file: str, evt_file: str | None, config: dict, buffer: int = int(5e6) +) -> ak.Array | None: + """Generates the event tier from the hit and tcm. + + + Parameters + ---------- + hit_file + path to the hit tier file + tcm_file + path to the tcm tier file + evt_file + path to the evt tier (output) file, if `None` the :class:`Table` is returned in memory + config + dictionary of the configuration. For example: + + .. code-block:: json + + { + "channels": [ "det001", "det002"] + }, + "outputs": [ + "energy", + "multiplicity" + ], + "operations": { + "energy_id": { + "channels": "geds_on", + "aggregation_mode": "gather", + "query": "hit.energy > 25", + "expression": "tcm.channel_id" + }, + "energy": { + "aggregation_mode": "keep_at_ch:evt.energy_id", + "expression": "hit.energy > 25" + }, + "multiplicity": { + "channels": [ + "geds_on", + "geds_ac" + ], + "aggregation_mode": "sum", + "expression": "hit.energy > 25", + "initial": 0 + } + } + } + + Must contain: + - "channels": list of channel groupings + - "outputs": fields for the output file + - "operations": operations to perform see :func:`pygama.evt.build_evt.evaluate_expression` for more details. + + buffer + number of events to process simultaneously + + Returns + ------- + ak.Array of the evt tier data (if the data is not saved to disk) + """ + + msg = "... beginning the evt tier processing" + log.info(msg) + + # create the objects needed for evaluate expression + + file_info = { + "hit": (hit_file, "hit", "det{:03}"), + "tcm": (tcm_file, "tcm", "tcm"), + "evt": (evt_file, "evt"), + } + + # iterate through the TCM + + out_ak = ak.Array([]) + mode = "of" + + for tcm_lh5, _, n_rows_read in LH5Iterator(tcm_file, "tcm", buffer_len=buffer): + tcm_lh5_sel = tcm_lh5 + tcm_ak = tcm_lh5_sel.view_as("ak")[:n_rows_read] + + tcm = TCMData( + id=np.array(ak.flatten(tcm_ak.array_id)), + idx=np.array(ak.flatten(tcm_ak.array_idx)), + cumulative_length=np.array(np.cumsum(ak.num(tcm_ak.array_id, axis=-1))), + ) + + n_rows = len(tcm.cumulative_length) + out_tab = Table(size=n_rows) + + for name, info in config["operations"].items(): + msg = f"computing field {name}" + log.debug(msg) + + defaultv = info.get("initial", np.nan) + if isinstance(defaultv, str) and (defaultv in ["np.nan", "np.inf", "-np.inf"]): + defaultv = eval(defaultv) + + channels = info["channels"] if ("channels" in info) else config["channels"] + + if "aggregation_mode" not in info: + field = out_tab.eval( + info["expression"].replace("evt.", ""), info.get("parameters", {}) + ) + else: + + field = evaluate_expression( + file_info, + tcm, + channels, + table=out_tab, + mode=info["aggregation_mode"], + expr=info["expression"], + query=info.get("query", None), + sorter=info.get("sort", None), + channels_skip=info.get("exclude_channels", []), + default_value=defaultv, + n_rows=n_rows, + ) + out_tab.add_field(name, field) + + # remove fields if necessary + existing_cols = list(out_tab.keys()) + for col in existing_cols: + if col not in config["outputs"]: + out_tab.remove_column(col, delete=True) + + # write + if evt_file is not None: + write(out_tab, "evt", evt_file, wo_mode=mode) + mode = "append" + else: + out_ak = ak.concatenate((out_ak, out_tab.view_as("ak"))) + + if evt_file is None: + return out_ak + return None diff --git a/src/reboost/hpge/tcm.py b/src/reboost/hpge/tcm.py index c14ef11..99b951c 100644 --- a/src/reboost/hpge/tcm.py +++ b/src/reboost/hpge/tcm.py @@ -6,7 +6,7 @@ import awkward as ak from lgdo import Table, lh5 -from . import processors, utils +from . import processors log = logging.getLogger(__name__) @@ -16,9 +16,8 @@ def build_tcm( out_file: str, channels: list[str], time_name: str = "t0", - idx_name: str = "hit_global_evtid", + idx_name: str = "global_evtid", time_window_in_us: float = 10, - idx_buffer: int = int(1e7), ) -> None: """Build the (Time Coincidence Map) TCM from the hit tier. @@ -36,52 +35,27 @@ def build_tcm( name of the hit tier field used for index grouping. time_window_in_us time window used to define the grouping. - idx_buffer - number of evtid to read in simultaneously. - - - Notes - ----- - This function avoids excessive memory usage by iterating over the files select sets of evtid, - as such it may be a bit wasteful of IO, since the same block may need to be read multiple times. - Since only a few fields are read a high value of idx_buffer can be used. """ hash_func = r"\d+" - # get number of evtids - n_evtid = utils.get_num_evtid_hit_tier(hit_file, channels, idx_name) - - # not iterate over evtid - n_evtid_read = 0 - mode = "of" msg = "start building time-coincidence map" log.info(msg) chan_ids = [re.search(hash_func, channel).group() for channel in channels] - while n_evtid_read < n_evtid: - # object for the data - - msg = f"... iterating: selecting evtid {n_evtid_read} to {n_evtid_read+idx_buffer}" - log.debug(msg) - - hit_data, n_evtid_read = utils.read_some_idx_as_ak( - channels=channels, - file=hit_file, - n_idx_read=n_evtid_read, - idx_buffer=idx_buffer, - idx_name=idx_name, - field_mask=[idx_name, time_name], + hit_data = [] + for channel in channels: + hit_data.append( + lh5.read(f"{channel}/hit", hit_file, field_mask=[idx_name, time_name]).view_as("ak") ) + tcm = get_tcm_from_ak( + hit_data, chan_ids, window=time_window_in_us, time_name=time_name, idx_name=idx_name + ) - tcm = get_tcm_from_ak( - hit_data, chan_ids, window=time_window_in_us, time_name=time_name, idx_name=idx_name - ) - if tcm is not None: - lh5.write(tcm, "tcm", out_file, wo_mode=mode) - mode = "append" + if tcm is not None: + lh5.write(tcm, "tcm", out_file, wo_mode="of") def get_tcm_from_ak( @@ -90,7 +64,7 @@ def get_tcm_from_ak( *, window: float = 10, time_name: str = "t0", - idx_name: str = "hit_global_evtid", + idx_name: str = "global_evtid", ) -> Table: """Builds a time-coincidence map from a hit of hit data Tables. @@ -123,9 +97,9 @@ def get_tcm_from_ak( obj_tmp = obj_tmp[[time_name, idx_name]] hit_idx = ak.local_index(obj_tmp) - obj_tmp = ak.with_field(obj_tmp, hit_idx, "hit_idx") + obj_tmp = ak.with_field(obj_tmp, hit_idx, "array_idx") - obj_tmp["channel_id"] = int(ch_idx) + obj_tmp["array_id"] = int(ch_idx) sort_objs.append(obj_tmp) obj_tot = ak.concatenate(sort_objs) @@ -135,5 +109,5 @@ def get_tcm_from_ak( time_name=time_name, evtid_name=idx_name, window=window, - fields=["channel_id", "hit_idx"], + fields=["array_id", "array_idx"], ) diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index bc71f8c..c1c4835 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -434,79 +434,6 @@ def get_iterator(file: str, buffer: int, lh5_table: str, **kwargs) -> tuple[LH5I return it, entries, max_idx -def read_some_idx_as_ak( - channels: list, - file: str, - n_idx_read: int, - idx_buffer: int, - idx_name: str, - field_mask: list[str], - it_buffer: int = 100000, -) -> tuple[list[ak.Array], int]: - """Read just rows corresponding to a idx_name field in the range n_idx_read to n_idx_read + idx_buffer. - - Works by iterating over the file only selecting entries in the desired range, also converting to awkward - - Parameters - ---------- - channels - list of channels to read - file - path to hit tier file to read - n_idx_read - first index to read - idx_buffer - number of indices to read. - idx_name - name of the field containing the index. - field_mask - fields to read - it_buffer - buffer for the iterator - - Returns - ------- - tuple of a list of the data per channel and the updated number of index read. - """ - - hit_data = [] - - # loop over channels - for channel in channels: - data_tmp = [] - # iteration over the file - it, entries, max_idx = get_iterator( - file=file, buffer=it_buffer, lh5_table=f"{channel}/hit", field_mask=field_mask - ) - - for idx, (lh5_obj, _, n_rows) in enumerate(it): - ak_obj = lh5_obj.view_as("ak") - - if idx == max_idx: - ak_obj = ak_obj[:n_rows] - - # assumes index are sorted - low_idx = ak_obj[idx_name][0] - - # check if the chunk contains evtid low_evtid - if not ((low_idx >= n_idx_read) & (low_idx < n_idx_read + idx_buffer)): - continue - - # slice and select just the needed cols - condition = (ak_obj[idx_name] >= n_idx_read) & ( - ak_obj[idx_name] < n_idx_read + idx_buffer - ) - ak_obj_sel = ak_obj[condition] - - data_tmp.append(ak_obj_sel) - - hit_data.append(ak.concatenate(data_tmp)) - - n_idx_read += idx_buffer - - return hit_data, n_idx_read - - __file_extensions__ = {"json": [".json"], "yaml": [".yaml", ".yml"]} From d6b6d27c9376ae964a9cc11832f54f247a9708c8 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 22 Nov 2024 18:58:09 +0100 Subject: [PATCH 75/81] [docs] documentation for event tier --- docs/source/manual/hpge.rst | 120 ++- docs/source/notebooks/images/output_17_1.png | Bin 0 -> 53031 bytes docs/source/notebooks/images/output_30_1.png | Bin 0 -> 12961 bytes docs/source/notebooks/images/output_54_1.png | Bin 0 -> 29182 bytes docs/source/notebooks/images/output_58_1.png | Bin 0 -> 47718 bytes .../notebooks/reboost_hpge_evt_tutorial.rst | 2 - .../notebooks/reboost_hpge_tutorial_evt.rst | 834 ++++++++++++++++++ docs/source/tutorial.rst | 2 +- src/reboost/hpge/evt.py | 89 +- src/reboost/hpge/utils.py | 17 + 10 files changed, 1003 insertions(+), 61 deletions(-) create mode 100644 docs/source/notebooks/images/output_17_1.png create mode 100644 docs/source/notebooks/images/output_30_1.png create mode 100644 docs/source/notebooks/images/output_54_1.png create mode 100644 docs/source/notebooks/images/output_58_1.png delete mode 100644 docs/source/notebooks/reboost_hpge_evt_tutorial.rst create mode 100644 docs/source/notebooks/reboost_hpge_tutorial_evt.rst diff --git a/docs/source/manual/hpge.rst b/docs/source/manual/hpge.rst index 681aef5..d0012b8 100644 --- a/docs/source/manual/hpge.rst +++ b/docs/source/manual/hpge.rst @@ -230,7 +230,7 @@ Adding new processors Any python function can be a ``reboost.hit`` processor. The only requirement is that it should return a: - :class:`VectorOfVectors`, -- :class:`Array`` or +- :class:`Array` or - :class:`ArrayOfEqualSizedArrays` with the same length as the hit table. This means processors can act on subarrays (``axis=-1`` in awkward syntax) but should not combine multiple rows of the hit table. @@ -268,7 +268,7 @@ Before explaining how the TCM is constructed we make a detour to explain the dif global_evtid: description: global evtid of the hit. mode: eval - expression: 'ak.fill_none(,axis=-1),np.nan)' + expression: 'ak.fill_none(hit._global_evtid,axis=-1),np.nan)' This field is mandatory to generate the TCM, and the name of the field is an argument to "build_tcm". @@ -281,16 +281,14 @@ Before explaining how the TCM is constructed we make a detour to explain the dif - This storage is slightly different to the TCM in data, but is chosen to allow easy iteration through the TCM. - We do not currently support merging multiple **hit** tier files, this is since then the TCM would need to know which file each hit corresponded to. -Event tier processing (work in progress) ----------------------------------------- - - +Event tier processing +--------------------- The event tier combines the information from various detector systems. Including in future the optical detector channels. This step is thus only necessary for experiments with many output channels. -The processing is again based on a YAML or JSON configuration file. Most of the work to evaluate each expression is done by the :func:`pygama.evt.build_evt.evaluate_expression`. - +The processing is again based on a YAML or JSON configuration file. Most of the work to evaluate each expression is done by the :func:`pygama.evt.build_evt.evaluate_expression` and our conventions for processors +follow those for pygama. The input configuration file is identical to a pygama evt tier configuration file (see an example in :func:`pygama.evt.build_evt.build_evt`). For example: @@ -306,21 +304,101 @@ For example: - det003 outputs: - - energy - - multiplicity + - energy + - multiplicity + + operations: + energy_id: + channels: geds_on + aggregation_mode: gather + query: hit.energy > 25 + expression: tcm.channel_id + energy: + aggregation_mode: 'keep_at_ch:evt.energy_id' + channels: geds_on + expression: hit.energy + multiplicity: + channels: + - geds_on + - geds_ac + aggregation_mode: sum + expression: hit.energy > 25 + initial: 0 + +- **channels** : defines a set of groups of channel names which the operations will be applied to. +- **outputs** : defines the fields to include in the output file. +- **operations**: a list of operations to perform. + +The type of operations is based on the "evaluation modes of" :func:`pygama.evt.build_evt.build_evt`. +Each operation is defined by a configuration block which can have the following keys: + +- **channels**: list of channels to perform the operation on, +- **exlude_channels**: channels to set to the default value, +- **initial**: initial value of the aggregator, +- **aggregation_mode**: how to combine the channels (more information below), +- **expression**: expression to evaluate, +- **query**: logical statement to only select some channels, +- **sort**: expression used for sorting the output, format of "ascend_by:field" or "descend_by:field". + + - energy_id: +Aggregation modes +^^^^^^^^^^^^^^^^^ + +There are several different ways to aggregate the data from different detectors / channels. + +- *"no aggregator supplied"* : then the code will perform a simple evaluation of quantities in the ``evt`` tier data for example: + + .. code-block:: yaml + + energy_sum: + expression: ak.sum(evt.energies,axis=-1) + +- *"first_at:sorter"* picks the value corresponding to the channel (TCM ID) with the lowest value of the "sorter" field. For example: + + .. code-block:: yaml + + first_time: + channels: geds_on + aggregation_mode: first_at:hit.timestamp + expression: hit.timestamp + +- *"last_at:sorter"* similar for the highest value, +- *"gather"*: combines the fields into a :class:`VectorOfVectors`, sorted by the "sort" keys. For example the the following processor is used to extract the channel id (`tcm.array_id`) for every hit above a 25 keV energy threshold. + + .. code-block:: yaml + + channel_id: channels: geds_on aggregation_mode: gather query: hit.energy > 25 - expression: tcm.channel_id + expression: tcm.array_id + sort: descend_by:hit.energy + +- *"keep_at_channel:channel_id_field"*: similarly combines into a :class:`VectorOfVectors`, however uses only the ids from the "channel_id_field" and preserves the order of the subvectors. + For example we can make a processor to extract the energy of each hit from the previous part. + + .. code-block:: yaml + energy: - aggregation_mode: 'keep_at_ch:evt.energy_id' - expression: hit.energy > 25 - multiplicity: - channels: - - geds_on - - geds_ac - aggregation_mode: sum - expression: hit.energy > 25 - initial: 0 + channels: geds_on + aggregation_mode: keep_at_channel:evt.array_id + expression: hit.energy + +- *"keep_at_idx:tcm_index_field"* similar but instead preserves the shape of the tcm, first we need to generate a tcm index field. + + .. code-block:: yaml + + tcm_idx: + channels: geds_on + aggregation_mode: gather + query: hit.energy > 25 + expression: tcm.index + sort: descend_by:hit.energy + + this says for every element in the :class:`VectorOfVectors` which index in the flattened data of the tcm to extract the value from. So to find the value to fill a row in the output the code will search for the + tcm `idx`` and `id` corresponding to the supplied index. + +- *"all"*, *"any"*, *"sum"* aggregates by the operation. + +There is also a function mode, but this is not currently used in reboost, and is not expected to be needed. diff --git a/docs/source/notebooks/images/output_17_1.png b/docs/source/notebooks/images/output_17_1.png new file mode 100644 index 0000000000000000000000000000000000000000..374c960ec253b2aa22b47f70336d5549592305a6 GIT binary patch literal 53031 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 literal 0 HcmV?d00001 diff --git a/docs/source/notebooks/images/output_30_1.png b/docs/source/notebooks/images/output_30_1.png new file mode 100644 index 0000000000000000000000000000000000000000..240b0299ae7e7ad7eb96813fa38432887533d9e1 GIT binary patch literal 12961 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 literal 0 HcmV?d00001 diff --git a/docs/source/notebooks/images/output_54_1.png b/docs/source/notebooks/images/output_54_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2f3f13ded55c22a4bec484d11b3dbd93476594e7 GIT binary patch literal 29182 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%0Awh1v4dgx68#24<5jP|#5mUc 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 literal 0 HcmV?d00001 diff --git a/docs/source/notebooks/reboost_hpge_evt_tutorial.rst b/docs/source/notebooks/reboost_hpge_evt_tutorial.rst deleted file mode 100644 index efe47ab..0000000 --- a/docs/source/notebooks/reboost_hpge_evt_tutorial.rst +++ /dev/null @@ -1,2 +0,0 @@ -Event tier simulation processing -================================ diff --git a/docs/source/notebooks/reboost_hpge_tutorial_evt.rst b/docs/source/notebooks/reboost_hpge_tutorial_evt.rst new file mode 100644 index 0000000..c84d65e --- /dev/null +++ b/docs/source/notebooks/reboost_hpge_tutorial_evt.rst @@ -0,0 +1,834 @@ +Event tier simulation processing +================================ + +The next tutorial describes how to combine the information from multiple +detectors, i.e. to create detector-wide “events”, stored in the **evt** +tier. + +To demonstrate the power of multi-detector event building we need a +detector system with a large number of detectors. We chose an array of +20 detectors emersed in liquid argon + +0) Setting up the python environment +------------------------------------ + +.. code:: ipython3 + + from lgdo import lh5 + from reboost.hpge import hit, tcm + %load_ext memory_profiler + import matplotlib.pyplot as plt + import pyg4ometry as pg4 + import legendhpges + from legendhpges import draw, make_hpge + import awkward as ak + import logging + import colorlog + import hist + import numpy as np + + + plt.rcParams['figure.figsize'] = [12, 4] + plt.rcParams['axes.titlesize'] =12 + plt.rcParams['axes.labelsize'] = 12 + plt.rcParams['legend.fontsize'] = 12 + + + handler = colorlog.StreamHandler() + handler.setFormatter( + colorlog.ColoredFormatter("%(log_color)s%(name)s [%(levelname)s] %(message)s") + ) + logger = logging.getLogger() + logger.handlers.clear() + logger.addHandler(handler) + logger.setLevel(logging.INFO) + logger.info("test") + + + + +.. parsed-literal:: + + The memory_profiler extension is already loaded. To reload it, use: + %reload_ext memory_profiler + + +1) Running the simulation +------------------------- + +First we generate a geometry and run the simulation. We use similar BeGe +detectors as in the part before + +.. code:: ipython3 + + + reg = pg4.geant4.Registry() + + bege_meta = { + "name": "B00000B", + "type": "bege", + "production": { + "enrichment": {"val": 0.874, "unc": 0.003}, + "mass_in_g": 697.0, + }, + "geometry": { + "height_in_mm": 29.46, + "radius_in_mm": 36.98, + "groove": {"depth_in_mm": 2.0, "radius_in_mm": {"outer": 10.5, "inner": 7.5}}, + "pp_contact": {"radius_in_mm": 7.5, "depth_in_mm": 0}, + "taper": { + "top": {"angle_in_deg": 0.0, "height_in_mm": 0.0}, + "bottom": {"angle_in_deg": 0.0, "height_in_mm": 0.0}, + }, + }, + } + + # make a detector + bege_l = make_hpge(bege_meta, name="BEGe_L", registry=reg) + + + # create a world volume + world_s = pg4.geant4.solid.Tubs("World_s", 0,60,100,0,2*np.pi, registry=reg, lunit="cm") + world_l = pg4.geant4.LogicalVolume(world_s, "G4_Galactic", "World", registry=reg) + reg.setWorld(world_l) + + # let's make a liquid argon balloon + lar_s = pg4.geant4.solid.Tubs("LAr_s", 0, 20, 40, 0, 2*np.pi, registry=reg, lunit="cm") + lar_l = pg4.geant4.LogicalVolume(lar_s, "G4_lAr", "LAr_l", registry=reg) + pg4.geant4.PhysicalVolume([0, 0, 0], [0, 0, 0], lar_l, "LAr", world_l, registry=reg) + + # lets make 4 strings of 5 detectors + + det_count = 0 + for x in [-50,50]: + for y in [-50,50]: + for z in [-100,-50,0,50,100]: + + pg4.geant4.PhysicalVolume([0, 0, 0], [x, y,z, "mm"], bege_l, f"BEGe_{det_count}", lar_l, registry=reg) + det_count+=1 + + w = pg4.gdml.Writer() + w.addDetector(reg) + w.write("cfg/geom.gdml") + + +Uncomment the next block to visualise +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code:: ipython3 + + + viewer = pg4.visualisation.VtkViewerColoured(materialVisOptions={"G4_lAr": [0, 0, 1, 0.1]}) + viewer.addLogicalVolume(reg.getWorldVolume()) + viewer.view() + +.. figure:: images/det.png + :alt: image.png + + image.png + +We create our remage macro, this time for K42 in the LAr, a critical +background source in LEGEND! + +.. code:: text + + /RMG/Manager/Logging/LogLevel detail + + /RMG/Geometry/RegisterDetector Germanium BEGe_0 000 + /RMG/Geometry/RegisterDetector Germanium BEGe_1 001 + /RMG/Geometry/RegisterDetector Germanium BEGe_2 002 + /RMG/Geometry/RegisterDetector Germanium BEGe_3 003 + /RMG/Geometry/RegisterDetector Germanium BEGe_4 004 + /RMG/Geometry/RegisterDetector Germanium BEGe_5 005 + /RMG/Geometry/RegisterDetector Germanium BEGe_6 006 + /RMG/Geometry/RegisterDetector Germanium BEGe_7 007 + /RMG/Geometry/RegisterDetector Germanium BEGe_8 008 + /RMG/Geometry/RegisterDetector Germanium BEGe_9 009 + /RMG/Geometry/RegisterDetector Germanium BEGe_10 010 + /RMG/Geometry/RegisterDetector Germanium BEGe_11 011 + /RMG/Geometry/RegisterDetector Germanium BEGe_12 012 + /RMG/Geometry/RegisterDetector Germanium BEGe_13 013 + /RMG/Geometry/RegisterDetector Germanium BEGe_14 014 + /RMG/Geometry/RegisterDetector Germanium BEGe_15 015 + /RMG/Geometry/RegisterDetector Germanium BEGe_16 016 + /RMG/Geometry/RegisterDetector Germanium BEGe_17 017 + /RMG/Geometry/RegisterDetector Germanium BEGe_18 018 + /RMG/Geometry/RegisterDetector Germanium BEGe_19 019 + + + /run/initialize + + /RMG/Generator/Confine Volume + /RMG/Generator/Confinement/Physical/AddVolume LAr + + /RMG/Generator/Select GPS + /gps/particle ion + /gps/energy 0 eV + /gps/ion 19 42 # 42-K + + + /run/beamOn 10000000 + +2) Remage + hit tier files +-------------------------- + +For this tutorial we use the same remage simulation as for the hit tier +simulation. See the previous tutorial for how to generate them. + +We can check these files. + +We run a simplified reboost hit tier processing, unlike that in the +previous tutorial which deliberately included many outputs to show the +effect of processors. + +First we define the config file and parameters. + +.. code:: ipython3 + + chans = [f"det{num:03}" for num in range(20)] + + +.. code:: ipython3 + + chain = { + "channels": chans, + "outputs": [ + "t0", # first timestamp + "evtid", # id of the hit + "global_evtid", # global id of the hit + "energy_sum_no_deadlyer", + "energy_sum" # true summed energy before dead layer or smearing + ], + "step_group": { + "description": "group steps by time and evtid with 10us window", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", + }, + "locals": { + "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", + "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)", + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)", + }, + "evtid": { + "description": "global evtid of the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit._evtid,axis=-1),np.nan)", + }, + "global_evtid": { + "description": "global evtid of the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit._global_evtid,axis=-1),np.nan)", + }, + "distance_to_nplus_surface_mm": { + "description": "distance to the nplus surface in mm", + "mode": "function", + "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')", + }, + "activeness": { + "description": "activness based on FCCD (no TL)", + "mode": "eval", + "expression": "ak.where(hit.distance_to_nplus_surface_mm + + + + +.. image:: images/output_17_1.png + + +We see that the local index varies between 0 and 1e7 per file while the +global index increases constantly. We can even check this (as it must +from our hit tier processing). + +.. code:: ipython3 + + evtid_change = np.diff(data_det001.global_evtid) + +.. code:: ipython3 + + print(f"evtid change = {evtid_change}, increasing? {np.all(evtid_change>=0)}") + + +.. parsed-literal:: + + evtid change = [843. 153. 313. ... 27. 500. 345.], increasing? True + + +Now we can build the time-coincidence map and save to a new file. + +.. code:: ipython3 + + %%memit + tcm.build_tcm("output/hit/output.lh5","output/tcm/test_tcm.lh5",chans,time_name="t0",idx_name="global_evtid") + + + +.. parsed-literal:: + + peak memory: 690.61 MiB, increment: 0.27 MiB + + +We see that building the TCM was fast only taking around 1s. However +since building the TCM requires reading all the files simultaneously we +should be careful about the memory usage. Here using around 1 GB is +still quite significant. + + **Technical note**: - The code reads all the hit files in + simultaneously, this could cause a memory issue if the file is very + large - In this case the user must break the hit tier file into more + chunks (see build_hit) options + +Now we can look at our TCM. + +.. code:: ipython3 + + tcm_ak = lh5.read("tcm","output/tcm/test_tcm.lh5").view_as("ak") + +.. code:: ipython3 + + lh5.show("output/tcm/test_tcm.lh5") + + +.. code:: ipython3 + + tcm_ak + + + + +.. raw:: html + +

[{array_id: [11], array_idx: [0]},
+     {array_id: [2], array_idx: [0]},
+     {array_id: [11], array_idx: [1]},
+     {array_id: [8], array_idx: [0]},
+     {array_id: [3], array_idx: [0]},
+     {array_id: [5, 16], array_idx: [0, 0]},
+     {array_id: [0], array_idx: [0]},
+     {array_id: [13], array_idx: [0]},
+     {array_id: [18], array_idx: [0]},
+     {array_id: [7], array_idx: [0]},
+     ...,
+     {array_id: [9, 8], array_idx: [25998, 26398]},
+     {array_id: [17], array_idx: [27265]},
+     {array_id: [17], array_idx: [27266]},
+     {array_id: [3, 4], array_idx: [26889, 26009]},
+     {array_id: [15], array_idx: [27763]},
+     {array_id: [12], array_idx: [27111]},
+     {array_id: [13], array_idx: [26832]},
+     {array_id: [17], array_idx: [27267]},
+     {array_id: [19], array_idx: [25884]}]
+    -----------------------------------------------
+    type: 458647 * {
+        array_id: var * int64,
+        array_idx: var * int64
+    }
+ + + +We see that almost all of the events have only trigger in a single +channel. We can also extract easily the multiplicity of the events or +the number of triggers in the TCM. + +More sophisticated calcations can be performed by also grabbing +information from the hit tier files. This is done by ``build_evt``. + +.. code:: ipython3 + + plt.hist(ak.num(tcm_ak.array_id,axis=-1),range=(.5,20.5),bins=20,alpha=0.3,density=True) + plt.yscale("log") + plt.xlim(0.5,10) + plt.xlabel("Multiplicity") + plt.ylabel("Probability ") + + + + +.. parsed-literal:: + + Text(0, 0.5, 'Probability ') + + + + +.. image:: images/output_30_1.png + + +3.1) TCM ``id``,\ ``idx`` and ``index`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Internally we have three different TCM attributes. \* ``tcm.idx`` : the +row of the hit table \* ``tcm.id`` : the channel number \* +``tcm.index``: the row of the flattened tcm the hit corresponds to + +This names are surely very confusing but are inherited from pygama and +will be updated in future. + +These are computed with the following block of code: + +.. code:: python + + idx_ch = tcm.idx[tcm.id == table_id] + outsize = len(idx_ch) + + if expr == "tcm.array_id": + res = np.full(outsize, table_id, dtype=int) + elif expr == "tcm.array_idx": + res = idx_ch + elif expr == "tcm.index": + res = np.where(tcm.id == table_id)[0] + +4) Generating the event tier +---------------------------- + +Next we can use our time-coincidence-map to generate files containing +information on each event. Similar to the ``hit`` tier the processing is +based on a YAML or JSON configuration file. + +This config file must contain a key with lists of different groups of +channels. It must define the output fields and then finally a block of +operations to perform. Similar to our hit tier processing the idea is +that each operation / processor computes an LGDO object +(``VectorOfVectors``, ``Array`` or ``ArrayOfEqualSizedArrays``) with the +same length as the TCM. + +We can define some groups of channels for our processing chain. Lets set +some channels off and some to ac (this means the channel is used for +anticoincidence but is not fully usable). + +.. code:: ipython3 + + chans_off = ["det003","det007"] + chans_ac = ["det013","det016"] + chans_on = [chan for chan in chans if (chan not in chans_off) and (chan not in chans_ac) ] + chans_on + + + + +.. parsed-literal:: + + ['det000', + 'det001', + 'det002', + 'det004', + 'det005', + 'det006', + 'det008', + 'det009', + 'det010', + 'det011', + 'det012', + 'det014', + 'det015', + 'det017', + 'det018', + 'det019'] + + + +We create a simple event tier processing config demonstrating the +different possible aggregation modes. + + **Note**: this processing chain deliberately includes some additional + operations to show the effect of each aggregation mode. It: 1. finds + the channel ids with energy above threshold 2. finds the TCM + “index’s” or the index of the TCM VoV 3. computes a vector of vector + of the energies (ordered by channel) 4. computes a boolean flag of + whether each channel is ON (and not AC) 5. computes another flag + checking if each hit is above threshold 6. checks if the event + contains any AC hits 7. computes the summed energy, the first + timestamp and the multiplicity + +.. code:: ipython3 + + evt_config = { + "channels": { + "geds_on":chans_on, + "geds_ac":chans_ac + }, + "outputs": [ + "channel_id", + "all_channel_id", + "tcm_index", + "is_good_channels", + "energy_sum", + "energy_vector", + "energy_no_threshold", + "is_all_above_threshold", + "t0", + "is_good_event", + "multiplicity" + ], + "operations": { + "channel_id": { + "channels":["geds_on","geds_ac"], + "aggregation_mode": "gather", + "query": "hit.energy_sum > 25", + "expression": "tcm.array_id", + "sort":"descend_by:hit.energy_sum" + }, + "all_channel_id": { + "channels":["geds_on","geds_ac"], + "aggregation_mode": "gather", + "expression": "tcm.array_id", + "sort":"descend_by:hit.energy_sum" + }, + "tcm_index": { + "channels":["geds_on","geds_ac"], + "aggregation_mode": "gather", + "query": "hit.energy_sum > 25", + "expression": "tcm.index" + }, + "energy_no_threshold": { + "channels":["geds_on"], + "aggregation_mode": "keep_at_ch:evt.all_channel_id", + "expression": "hit.energy_sum" + }, + "energy_vector": { + "channels":["geds_on"], + "aggregation_mode": "keep_at_ch:evt.channel_id", + "expression": "hit.energy_sum" + }, + "is_good_channels":{ + "channels":["geds_on","geds_ac"], + "aggregation_mode":"keep_at_idx:evt.tcm_index", + "expression":"True", + "initial":False, + "exclude_channels":"geds_ac" + }, + "is_all_above_threshold" :{ + "channels":["geds_on","geds_ac"], + "aggregation_mode":"all", + "expression":"hit.energy_sum>25", + "initial":True + }, + "is_good_event" :{ + "expression":"ak.all(evt.is_good_channels,axis=-1)" + }, + + "energy_sum": { + "channels":["geds_on"], + "aggregation_mode": "sum", + "query":"hit.energy_sum > 25", + "expression": "hit.energy_sum", + "initial":0 + }, + "t0": { + "channels":["geds_on"], + "aggregation_mode": "first_at:hit.t0", + "expression": "hit.t0" + }, + "multiplicity": { + "channels": ["geds_on"], + "aggregation_mode": "sum", + "expression": "hit.energy_sum > 25", + "initial": 0 + } + } + } + +.. code:: ipython3 + + from reboost.hpge import evt + logger.setLevel(logging.INFO) + +.. code:: ipython3 + + %%time + evt_ak = evt.build_evt(hit_file="output/hit/output.lh5",tcm_file = "output/tcm/test_tcm.lh5",evt_file=None,config = evt_config) + + + +.. parsed-literal:: + + CPU times: user 5.21 s, sys: 530 ms, total: 5.74 s + Wall time: 5.74 s + + +4.1) “Gather” aggregation mode +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The gather mode is used by the ``channel_id`` and ``tcm_index`` +processors. It returns a VectorOfVector of the expression evaluated for +each hit in the event. \* the “query” removes some hits below the energy +threshold. \* “channels” defines the channels to include \* “sort”, +controls which order the values are in. + +For example we see that the “channel_id” is just a subset of the +original ``tcm_id`` removing some hits (below 25 keV) and changing the +order in some cases. These fields are then useful to extract values from +other fields keeping the correspondence with channel or tcm index. + +.. code:: ipython3 + + print("tcm.array_id ",tcm_ak.array_id) + print("evt.all_channel_id ",evt_ak.all_channel_id) + print("evt.channel_id ",evt_ak.channel_id) + print("evt.tcm_index ",evt_ak.tcm_index) + + +.. parsed-literal:: + + tcm.array_id [[11], [2], [11], [8], [3], [5, 16], ..., [...], [15], [12], [13], [17], [19]] + evt.all_channel_id [[11], [2], [11], [8], [], [16, 5], [0], ..., [4], [15], [12], [13], [17], [19]] + evt.channel_id [[11], [], [11], [], [], [16, 5], [0], ..., [4], [15], [], [13], [17], [19]] + evt.tcm_index [[0], [], [2], [], [], [...], ..., [540269], [], [540271], [540272], [540273]] + + +4.2) “keep_at_ch” and “keep_at_idx” +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +These modes are similar but order the results according to either the +TCM index or the channel id fields. In our processing chain we used this +to extract the energies preserving the order with respect to the +channel_id. We see in both cases there are some “nan” values +(corresponding to the “geds_ac” channels) and some elements are removed +by the energy threshold. + +.. code:: ipython3 + + print("evt.energy_vector ",evt_ak.energy_vector) + print("evt.energy_no_threshold ",evt_ak.energy_no_threshold) + + +.. parsed-literal:: + + evt.energy_vector [[894], [], [125], [], [], [nan, ...], ..., [784], [], [nan], [1.36e+03], [258]] + evt.energy_no_threshold [[894], [0.761], [125], [-1.65], [], ..., [-0.79], [nan], [1.36e+03], [258]] + + +Or we can check if each channel is in AC mode. + +.. code:: ipython3 + + print("evt.is_good_channels ",evt_ak.is_good_channels) + + +.. parsed-literal:: + + evt.is_good_channels [[True], [], [True], [], [], [...], ..., [True], [], [False], [True], [True]] + + +4.3) “all” or “sum” mode +^^^^^^^^^^^^^^^^^^^^^^^^ + + +These modes aggregate the data from each channel by either summation or +all. Thus we get out a 1D vector. + +For example we checked if every hit is above threshold (compare to the +energy vectors), compute the total energy and check the number of +channels above threshold (multiplicity). + +.. code:: ipython3 + + print("evt_ak.is_all_above_threshold ",evt_ak.is_all_above_threshold) + print("evt_ak.energy_sum ",evt_ak.energy_sum) + print("evt_ak.energy_sum ",evt_ak.energy_sum) + print("evt_ak.multiplicity ",evt_ak.multiplicity) + + +.. parsed-literal:: + + evt_ak.is_all_above_threshold [True, False, True, False, True, True, ..., True, True, False, True, True, True] + evt_ak.energy_sum [894, 0, 125, 0, 0, 437, 147, 0, ..., 1.22e+03, 218, 784, 0, 0, 1.36e+03, 258] + evt_ak.energy_sum [894, 0, 125, 0, 0, 437, 147, 0, ..., 1.22e+03, 218, 784, 0, 0, 1.36e+03, 258] + evt_ak.multiplicity [1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, ..., 1, 1, 0, 2, 0, 1, 1, 1, 0, 0, 1, 1] + + +4.4) No aggregation mode +^^^^^^^^^^^^^^^^^^^^^^^^ + +Finally, we can perform some basic operations on evt tier variables, eg. +first checking if any above threshold channel is in AC mode. + +.. code:: ipython3 + + print("evt_ak.is_good_event ",evt_ak.is_good_event) + + +.. parsed-literal:: + + evt_ak.is_good_event [True, True, True, True, True, False, ..., True, True, True, False, True, True] + + +5) Analysis on the event tier data +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + +Finally with our new evt files we can make some plots of experiment wide +quantities. + +.. code:: ipython3 + + def plot_energy(axes,energy,bins=400,xrange=None,label=" ",log_y=True,**kwargs): + + h=hist.new.Reg(bins,*xrange, name="energy [keV]").Double() + h.fill(energy) + h.plot(**kwargs,label=label) + axes.legend() + if (log_y): + axes.set_yscale("log") + if xrange is not None: + axes.set_xlim(*xrange) + +.. code:: ipython3 + + fig, ax = plt.subplots() + plot_energy(ax,evt_ak.energy_sum[evt_ak.multiplicity>0],yerr=False,label="Summed energies",xrange=(0,4000)) + plot_energy(ax,ak.flatten(evt_ak[evt_ak.multiplicity==1].energy_vector),yerr=False,label="M1 energies",xrange=(0,4000)) + + ax.set_title("summed event energy") + + + + +.. parsed-literal:: + + Text(0.5, 1.0, 'summed event energy') + + + + +.. image:: images/output_54_1.png + + +Or we can select multiplicity two (M2) events and plot the 2D energy +spectra. + +.. code:: ipython3 + + import matplotlib as mpl + +.. code:: ipython3 + + def plot_energy_2D(axes,energy_1,energy_2,bins=400,xrange=None,yrange=None,label=" ",**kwargs): + + x_axis = hist.axis.Regular(bins, *xrange, name="Energy 2 [keV]") + y_axis = hist.axis.Regular(bins, *yrange, name="Energy 1 [keV]") + h = hist.Hist(x_axis, y_axis) + h.fill(energy_2,energy_1) + cmap = mpl.colormaps["BuPu"].copy() + cmap.set_under(color="white") + + + w, x, y = h.to_numpy() + mesh = ax.pcolormesh(x, y, w.T, cmap=cmap,vmin=0.5) + ax.set_xlabel("Energy 2 [keV]") + ax.set_ylabel("Energy 1 [keV]") + fig.colorbar(mesh) + + if xrange is not None: + axes.set_xlim(*xrange) + +.. code:: ipython3 + + fig, ax = plt.subplots() + + energy_1 = np.array(evt_ak[(evt_ak.multiplicity==2)&(evt_ak.is_good_event)].energy_vector[:,1]) + energy_2 = np.array(evt_ak[(evt_ak.multiplicity==2)&(evt_ak.is_good_event)].energy_vector[:,0]) + plot_energy_2D(ax,energy_2,energy_1,label=None,xrange=(0,1000),yrange=(0,1600),bins=200,vmin=0.5) + ax.set_title("summed event energy") + + + + +.. parsed-literal:: + + Text(0.5, 1.0, 'summed event energy') + + + + +.. image:: images/output_58_1.png + + +Many more things are possible via manipulation of our event tier files, +the recommended tool is awkward (see +`[docs] `__). diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst index a535497..45c8065 100644 --- a/docs/source/tutorial.rst +++ b/docs/source/tutorial.rst @@ -7,4 +7,4 @@ Basic Tutorial :caption: Contents: notebooks/reboost_hpge_tutorial_hit - notebooks/reboost_hpge_evt_tutorial + notebooks/reboost_hpge_tutorial_evt diff --git a/src/reboost/hpge/evt.py b/src/reboost/hpge/evt.py index f0ef72e..17ebbc4 100644 --- a/src/reboost/hpge/evt.py +++ b/src/reboost/hpge/evt.py @@ -9,6 +9,8 @@ from pygama.evt.build_evt import evaluate_expression from pygama.evt.utils import TCMData +from . import utils + log = logging.getLogger(__name__) @@ -29,42 +31,42 @@ def build_evt( config dictionary of the configuration. For example: - .. code-block:: json - - { - "channels": [ "det001", "det002"] - }, - "outputs": [ - "energy", - "multiplicity" - ], - "operations": { - "energy_id": { - "channels": "geds_on", - "aggregation_mode": "gather", - "query": "hit.energy > 25", - "expression": "tcm.channel_id" - }, - "energy": { - "aggregation_mode": "keep_at_ch:evt.energy_id", - "expression": "hit.energy > 25" + .. code-block:: json + + { + "channels": { + "geds_on":[ "det001", "det002"], + "geds_ac":["det003"] }, - "multiplicity": { - "channels": [ - "geds_on", - "geds_ac" - ], - "aggregation_mode": "sum", - "expression": "hit.energy > 25", - "initial": 0 + "outputs": [ + "energy", + "multiplicity" + ], + "operations": { + "energy_id": { + "channels": "geds_on", + "aggregation_mode": "gather", + "query": "hit.energy > 25", + "expression": "tcm.channel_id" + }, + "energy": { + "aggregation_mode": "keep_at_ch:evt.energy_id", + "expression": "hit.energy > 25", + "channels": "geds_on" + }, + "multiplicity": { + "channels": "geds_on", + "aggregation_mode": "sum", + "expression": "hit.energy > 25", + "initial": 0 + } } } - } - Must contain: - - "channels": list of channel groupings - - "outputs": fields for the output file - - "operations": operations to perform see :func:`pygama.evt.build_evt.evaluate_expression` for more details. + Must contain: + - "channels": dictionary of channel groupings + - "outputs": fields for the output file + - "operations": operations to perform see :func:`pygama.evt.build_evt.evaluate_expression` for more details. buffer number of events to process simultaneously @@ -81,7 +83,6 @@ def build_evt( file_info = { "hit": (hit_file, "hit", "det{:03}"), - "tcm": (tcm_file, "tcm", "tcm"), "evt": (evt_file, "evt"), } @@ -90,6 +91,15 @@ def build_evt( out_ak = ak.Array([]) mode = "of" + # get channel groupings + channels = {} + for group, info in config["channels"].items(): + if isinstance(info, str): + channels[group] = [info] + + elif isinstance(info, list): + channels[group] = info + for tcm_lh5, _, n_rows_read in LH5Iterator(tcm_file, "tcm", buffer_len=buffer): tcm_lh5_sel = tcm_lh5 tcm_ak = tcm_lh5_sel.view_as("ak")[:n_rows_read] @@ -111,27 +121,32 @@ def build_evt( if isinstance(defaultv, str) and (defaultv in ["np.nan", "np.inf", "-np.inf"]): defaultv = eval(defaultv) - channels = info["channels"] if ("channels" in info) else config["channels"] + channels_use = utils.get_channels_from_groups(info.get("channels", []), channels) + channels_exclude = utils.get_channels_from_groups( + info.get("exclude_channels", []), channels + ) if "aggregation_mode" not in info: field = out_tab.eval( info["expression"].replace("evt.", ""), info.get("parameters", {}) ) else: - field = evaluate_expression( file_info, tcm, - channels, + channels_use, table=out_tab, mode=info["aggregation_mode"], expr=info["expression"], query=info.get("query", None), sorter=info.get("sort", None), - channels_skip=info.get("exclude_channels", []), + channels_skip=channels_exclude, default_value=defaultv, n_rows=n_rows, ) + + msg = f"field {field}" + log.debug(msg) out_tab.add_field(name, field) # remove fields if necessary diff --git a/src/reboost/hpge/utils.py b/src/reboost/hpge/utils.py index c1c4835..4cb4265 100644 --- a/src/reboost/hpge/utils.py +++ b/src/reboost/hpge/utils.py @@ -2,6 +2,7 @@ import copy import importlib +import itertools import json import logging import re @@ -43,6 +44,22 @@ class FileInfo(NamedTuple): """Last global evtid to process.""" +def get_channels_from_groups(names: list | str | None, groupings: dict | None = None) -> list: + """Get a list of channels from a list of groups""" + + if names is None: + channels_e = [] + elif isinstance(names, str): + channels_e = groupings[names] + elif isinstance(names, list): + channels_e = list(itertools.chain.from_iterable([groupings[e] for e in names])) + else: + msg = f"names {names} must be list or str or `None`" + raise ValueError(msg) + + return channels_e + + def get_selected_files( file_list: list[str], table: str, n_evtid: int | None, start_evtid: int ) -> FileInfo: From 235aefb9f7655fac84be284c317b2bc0eff1a1ea Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 22 Nov 2024 18:58:21 +0100 Subject: [PATCH 76/81] [docs] documentation for event tier --- docs/source/notebooks/images/det.png | Bin 0 -> 58412 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/source/notebooks/images/det.png diff --git a/docs/source/notebooks/images/det.png b/docs/source/notebooks/images/det.png new file mode 100644 index 0000000000000000000000000000000000000000..4ffbf69861ba6e2576a6ea820ed644cdd93239cd GIT binary patch literal 58412 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 Date: Fri, 22 Nov 2024 19:00:36 +0100 Subject: [PATCH 77/81] [docs] remove nbsphinx --- docs/source/conf.py | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index f93dc26..19c7625 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -20,7 +20,6 @@ "sphinx.ext.intersphinx", "sphinx_copybutton", "myst_parser", - "nbsphinx", "IPython.sphinxext.ipython_console_highlighting", ] From 2d8c6348c1e50f323f5936435324b9c86d28c5b2 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 22 Nov 2024 19:06:50 +0100 Subject: [PATCH 78/81] [docs] fix --- docs/source/conf.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 19c7625..3059b38 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -19,9 +19,8 @@ "sphinx.ext.napoleon", "sphinx.ext.intersphinx", "sphinx_copybutton", - "myst_parser", - "IPython.sphinxext.ipython_console_highlighting", -] + "myst_parser" + ] source_suffix = { From 0a97068b669367f92f2f4795a3af6c94b9953020 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 18:07:03 +0000 Subject: [PATCH 79/81] style: pre-commit fixes --- docs/source/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 3059b38..3cf5f89 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -19,8 +19,8 @@ "sphinx.ext.napoleon", "sphinx.ext.intersphinx", "sphinx_copybutton", - "myst_parser" - ] + "myst_parser", +] source_suffix = { From 5790828f743449c2a2db056a68e8f643f7fea581 Mon Sep 17 00:00:00 2001 From: Toby Dixon Date: Fri, 22 Nov 2024 19:14:16 +0100 Subject: [PATCH 80/81] [docs] ipython --> python --- .../notebooks/reboost_hpge_tutorial_evt.rst | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/docs/source/notebooks/reboost_hpge_tutorial_evt.rst b/docs/source/notebooks/reboost_hpge_tutorial_evt.rst index c84d65e..d917589 100644 --- a/docs/source/notebooks/reboost_hpge_tutorial_evt.rst +++ b/docs/source/notebooks/reboost_hpge_tutorial_evt.rst @@ -12,7 +12,7 @@ detector system with a large number of detectors. We chose an array of 0) Setting up the python environment ------------------------------------ -.. code:: ipython3 +.. code:: python from lgdo import lh5 from reboost.hpge import hit, tcm @@ -59,7 +59,7 @@ detector system with a large number of detectors. We chose an array of First we generate a geometry and run the simulation. We use similar BeGe detectors as in the part before -.. code:: ipython3 +.. code:: python reg = pg4.geant4.Registry() @@ -115,7 +115,7 @@ detectors as in the part before Uncomment the next block to visualise ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. code:: ipython3 +.. code:: python viewer = pg4.visualisation.VtkViewerColoured(materialVisOptions={"G4_lAr": [0, 0, 1, 0.1]}) @@ -183,12 +183,12 @@ effect of processors. First we define the config file and parameters. -.. code:: ipython3 +.. code:: python chans = [f"det{num:03}" for num in range(20)] -.. code:: ipython3 +.. code:: python chain = { "channels": chans, @@ -252,7 +252,7 @@ First we define the config file and parameters. } } -.. code:: ipython3 +.. code:: python ## all detectors have the same performance pars = { @@ -266,7 +266,7 @@ First we define the config file and parameters. } -.. code:: ipython3 +.. code:: python %%time logger.setLevel(logging.CRITICAL) @@ -289,12 +289,12 @@ In our processing chain we saved both the “local” and “global” evtid, and we can extract the “hit_idx” as the row of the output table. We can compare these indices. -.. code:: ipython3 +.. code:: python data_det001 = lh5.read("det001/hit","output/hit/output.lh5") -.. code:: ipython3 +.. code:: python fig,ax = plt.subplots() ax.plot(data_det001.evtid,np.arange(len(data_det001.evtid)),label="Local") @@ -324,11 +324,11 @@ We see that the local index varies between 0 and 1e7 per file while the global index increases constantly. We can even check this (as it must from our hit tier processing). -.. code:: ipython3 +.. code:: python evtid_change = np.diff(data_det001.global_evtid) -.. code:: ipython3 +.. code:: python print(f"evtid change = {evtid_change}, increasing? {np.all(evtid_change>=0)}") @@ -340,7 +340,7 @@ from our hit tier processing). Now we can build the time-coincidence map and save to a new file. -.. code:: ipython3 +.. code:: python %%memit tcm.build_tcm("output/hit/output.lh5","output/tcm/test_tcm.lh5",chans,time_name="t0",idx_name="global_evtid") @@ -364,16 +364,16 @@ still quite significant. Now we can look at our TCM. -.. code:: ipython3 +.. code:: python tcm_ak = lh5.read("tcm","output/tcm/test_tcm.lh5").view_as("ak") -.. code:: ipython3 +.. code:: python lh5.show("output/tcm/test_tcm.lh5") -.. code:: ipython3 +.. code:: python tcm_ak @@ -382,7 +382,7 @@ Now we can look at our TCM. .. raw:: html -

[{array_id: [11], array_idx: [0]},
+    0],yerr=False,label="Summed energies",xrange=(0,4000))
@@ -782,11 +782,11 @@ quantities.
 Or we can select multiplicity two (M2) events and plot the 2D energy
 spectra.
 
-.. code:: ipython3
+.. code:: python
 
     import matplotlib as mpl
 
-.. code:: ipython3
+.. code:: python
 
     def plot_energy_2D(axes,energy_1,energy_2,bins=400,xrange=None,yrange=None,label=" ",**kwargs):
 
@@ -807,7 +807,7 @@ spectra.
         if xrange is not None:
             axes.set_xlim(*xrange)
 
-.. code:: ipython3
+.. code:: python
 
     fig, ax = plt.subplots()
 

From b779c4d66f7a5b3c8fa4de6e0e933889d0890c1c Mon Sep 17 00:00:00 2001
From: Toby Dixon 
Date: Fri, 22 Nov 2024 19:49:32 +0100
Subject: [PATCH 81/81] [docs] small fixes

---
 .../notebooks/reboost_hpge_tutorial_evt.rst   | 371 +++++++++-------
 .../notebooks/reboost_hpge_tutorial_hit.rst   | 407 +++++++++++-------
 2 files changed, 453 insertions(+), 325 deletions(-)

diff --git a/docs/source/notebooks/reboost_hpge_tutorial_evt.rst b/docs/source/notebooks/reboost_hpge_tutorial_evt.rst
index d917589..055f279 100644
--- a/docs/source/notebooks/reboost_hpge_tutorial_evt.rst
+++ b/docs/source/notebooks/reboost_hpge_tutorial_evt.rst
@@ -16,7 +16,6 @@ detector system with a large number of detectors. We chose an array of
 
     from lgdo import lh5
     from reboost.hpge import hit, tcm
-    %load_ext memory_profiler
     import matplotlib.pyplot as plt
     import pyg4ometry as pg4
     import legendhpges
@@ -28,10 +27,10 @@ detector system with a large number of detectors. We chose an array of
     import numpy as np
 
 
-    plt.rcParams['figure.figsize'] = [12, 4]
-    plt.rcParams['axes.titlesize'] =12
-    plt.rcParams['axes.labelsize'] = 12
-    plt.rcParams['legend.fontsize'] = 12
+    plt.rcParams["figure.figsize"] = [12, 4]
+    plt.rcParams["axes.titlesize"] = 12
+    plt.rcParams["axes.labelsize"] = 12
+    plt.rcParams["legend.fontsize"] = 12
 
 
     handler = colorlog.StreamHandler()
@@ -88,24 +87,34 @@ detectors as in the part before
 
 
     # create a world volume
-    world_s = pg4.geant4.solid.Tubs("World_s", 0,60,100,0,2*np.pi, registry=reg, lunit="cm")
+    world_s = pg4.geant4.solid.Tubs(
+        "World_s", 0, 60, 100, 0, 2 * np.pi, registry=reg, lunit="cm"
+    )
     world_l = pg4.geant4.LogicalVolume(world_s, "G4_Galactic", "World", registry=reg)
     reg.setWorld(world_l)
 
     # let's make a liquid argon balloon
-    lar_s = pg4.geant4.solid.Tubs("LAr_s",  0, 20, 40, 0, 2*np.pi, registry=reg, lunit="cm")
+    lar_s = pg4.geant4.solid.Tubs(
+        "LAr_s", 0, 20, 40, 0, 2 * np.pi, registry=reg, lunit="cm"
+    )
     lar_l = pg4.geant4.LogicalVolume(lar_s, "G4_lAr", "LAr_l", registry=reg)
     pg4.geant4.PhysicalVolume([0, 0, 0], [0, 0, 0], lar_l, "LAr", world_l, registry=reg)
 
     # lets make 4 strings of 5 detectors
 
     det_count = 0
-    for x in [-50,50]:
-        for y in [-50,50]:
-            for z in [-100,-50,0,50,100]:
-
-                pg4.geant4.PhysicalVolume([0, 0, 0], [x, y,z, "mm"], bege_l, f"BEGe_{det_count}", lar_l, registry=reg)
-                det_count+=1
+    for x in [-50, 50]:
+        for y in [-50, 50]:
+            for z in [-100, -50, 0, 50, 100]:
+                pg4.geant4.PhysicalVolume(
+                    [0, 0, 0],
+                    [x, y, z, "mm"],
+                    bege_l,
+                    f"BEGe_{det_count}",
+                    lar_l,
+                    registry=reg,
+                )
+                det_count += 1
 
     w = pg4.gdml.Writer()
     w.addDetector(reg)
@@ -118,7 +127,9 @@ Uncomment the next block to visualise
 .. code:: python
 
 
-    viewer = pg4.visualisation.VtkViewerColoured(materialVisOptions={"G4_lAr": [0, 0, 1, 0.1]})
+    viewer = pg4.visualisation.VtkViewerColoured(
+        materialVisOptions={"G4_lAr": [0, 0, 1, 0.1]}
+    )
     viewer.addLogicalVolume(reg.getWorldVolume())
     viewer.view()
 
@@ -191,65 +202,64 @@ First we define the config file and parameters.
 .. code:: python
 
     chain = {
-            "channels": chans,
-            "outputs": [
-                "t0",                           # first timestamp
-                "evtid",                        # id of the hit
-                "global_evtid",                 # global id of the hit
-                "energy_sum_no_deadlyer",
-                "energy_sum"                   # true summed energy before dead layer or smearing
-            ],
-            "step_group": {
-                "description": "group steps by time and evtid with 10us window",
-                "expression": "reboost.hpge.processors.group_by_time(stp,window=10)",
+        "channels": chans,
+        "outputs": [
+            "t0",  # first timestamp
+            "evtid",  # id of the hit
+            "global_evtid",  # global id of the hit
+            "energy_sum_no_deadlyer",
+            "energy_sum",  # true summed energy before dead layer or smearing
+        ],
+        "step_group": {
+            "description": "group steps by time and evtid with 10us window",
+            "expression": "reboost.hpge.processors.group_by_time(stp,window=10)",
+        },
+        "locals": {
+            "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)",
+            "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)",
+        },
+        "operations": {
+            "t0": {
+                "description": "first time in the hit.",
+                "mode": "eval",
+                "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)",
+            },
+            "evtid": {
+                "description": "global evtid of the hit.",
+                "mode": "eval",
+                "expression": "ak.fill_none(ak.firsts(hit._evtid,axis=-1),np.nan)",
+            },
+            "global_evtid": {
+                "description": "global evtid of the hit.",
+                "mode": "eval",
+                "expression": "ak.fill_none(ak.firsts(hit._global_evtid,axis=-1),np.nan)",
             },
-            "locals": {
-                "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)",
-                "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)",
+            "distance_to_nplus_surface_mm": {
+                "description": "distance to the nplus surface in mm",
+                "mode": "function",
+                "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')",
             },
-            "operations": {
-                "t0": {
-                    "description": "first time in the hit.",
-                    "mode": "eval",
-                    "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)",
-                },
-                "evtid": {
-                    "description": "global evtid of the hit.",
-                    "mode": "eval",
-                    "expression": "ak.fill_none(ak.firsts(hit._evtid,axis=-1),np.nan)",
-                },
-                "global_evtid": {
-                    "description": "global evtid of the hit.",
-                    "mode": "eval",
-                    "expression": "ak.fill_none(ak.firsts(hit._global_evtid,axis=-1),np.nan)",
-                },
-                "distance_to_nplus_surface_mm": {
-                    "description": "distance to the nplus surface in mm",
-                    "mode": "function",
-                    "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')",
-                },
-                "activeness": {
-                    "description": "activness based on FCCD (no TL)",
-                    "mode": "eval",
-                    "expression": "ak.where(hit.distance_to_nplus_surface_mm 25",
                 "expression": "tcm.array_id",
-                "sort":"descend_by:hit.energy_sum"
+                "sort": "descend_by:hit.energy_sum",
             },
             "all_channel_id": {
-                "channels":["geds_on","geds_ac"],
+                "channels": ["geds_on", "geds_ac"],
                 "aggregation_mode": "gather",
                 "expression": "tcm.array_id",
-                "sort":"descend_by:hit.energy_sum"
+                "sort": "descend_by:hit.energy_sum",
             },
             "tcm_index": {
-                "channels":["geds_on","geds_ac"],
+                "channels": ["geds_on", "geds_ac"],
                 "aggregation_mode": "gather",
                 "query": "hit.energy_sum > 25",
-                "expression": "tcm.index"
+                "expression": "tcm.index",
             },
             "energy_no_threshold": {
-                "channels":["geds_on"],
+                "channels": ["geds_on"],
                 "aggregation_mode": "keep_at_ch:evt.all_channel_id",
-                "expression": "hit.energy_sum"
+                "expression": "hit.energy_sum",
             },
             "energy_vector": {
-                "channels":["geds_on"],
+                "channels": ["geds_on"],
                 "aggregation_mode": "keep_at_ch:evt.channel_id",
-                "expression": "hit.energy_sum"
-            },
-            "is_good_channels":{
-                "channels":["geds_on","geds_ac"],
-                "aggregation_mode":"keep_at_idx:evt.tcm_index",
-                "expression":"True",
-                "initial":False,
-                "exclude_channels":"geds_ac"
+                "expression": "hit.energy_sum",
             },
-            "is_all_above_threshold" :{
-                "channels":["geds_on","geds_ac"],
-                "aggregation_mode":"all",
-                "expression":"hit.energy_sum>25",
-                "initial":True
+            "is_good_channels": {
+                "channels": ["geds_on", "geds_ac"],
+                "aggregation_mode": "keep_at_idx:evt.tcm_index",
+                "expression": "True",
+                "initial": False,
+                "exclude_channels": "geds_ac",
             },
-            "is_good_event" :{
-                "expression":"ak.all(evt.is_good_channels,axis=-1)"
+            "is_all_above_threshold": {
+                "channels": ["geds_on", "geds_ac"],
+                "aggregation_mode": "all",
+                "expression": "hit.energy_sum>25",
+                "initial": True,
             },
-
+            "is_good_event": {"expression": "ak.all(evt.is_good_channels,axis=-1)"},
             "energy_sum": {
-                "channels":["geds_on"],
+                "channels": ["geds_on"],
                 "aggregation_mode": "sum",
-                "query":"hit.energy_sum > 25",
+                "query": "hit.energy_sum > 25",
                 "expression": "hit.energy_sum",
-                "initial":0
+                "initial": 0,
             },
             "t0": {
-                "channels":["geds_on"],
+                "channels": ["geds_on"],
                 "aggregation_mode": "first_at:hit.t0",
-                "expression": "hit.t0"
+                "expression": "hit.t0",
             },
             "multiplicity": {
                 "channels": ["geds_on"],
                 "aggregation_mode": "sum",
                 "expression": "hit.energy_sum > 25",
-                "initial": 0
-            }
-        }
+                "initial": 0,
+            },
+        },
     }
 
 .. code:: python
 
     from reboost.hpge import evt
+
     logger.setLevel(logging.INFO)
 
 .. code:: python
 
-    %%time
-    evt_ak = evt.build_evt(hit_file="output/hit/output.lh5",tcm_file = "output/tcm/test_tcm.lh5",evt_file=None,config = evt_config)
+    evt_ak = evt.build_evt(
+        hit_file="output/hit/output.lh5",
+        tcm_file="output/tcm/test_tcm.lh5",
+        evt_file=None,
+        config=evt_config,
+    )
 
 
 
@@ -646,10 +677,10 @@ other fields keeping the correspondence with channel or tcm index.
 
 .. code:: python
 
-    print("tcm.array_id       ",tcm_ak.array_id)
-    print("evt.all_channel_id ",evt_ak.all_channel_id)
-    print("evt.channel_id     ",evt_ak.channel_id)
-    print("evt.tcm_index      ",evt_ak.tcm_index)
+    print("tcm.array_id       ", tcm_ak.array_id)
+    print("evt.all_channel_id ", evt_ak.all_channel_id)
+    print("evt.channel_id     ", evt_ak.channel_id)
+    print("evt.tcm_index      ", evt_ak.tcm_index)
 
 
 .. parsed-literal::
@@ -673,8 +704,8 @@ by the energy threshold.
 
 .. code:: python
 
-    print("evt.energy_vector        ",evt_ak.energy_vector)
-    print("evt.energy_no_threshold  ",evt_ak.energy_no_threshold)
+    print("evt.energy_vector        ", evt_ak.energy_vector)
+    print("evt.energy_no_threshold  ", evt_ak.energy_no_threshold)
 
 
 .. parsed-literal::
@@ -687,7 +718,7 @@ Or we can check if each channel is in AC mode.
 
 .. code:: python
 
-    print("evt.is_good_channels ",evt_ak.is_good_channels)
+    print("evt.is_good_channels ", evt_ak.is_good_channels)
 
 
 .. parsed-literal::
@@ -708,10 +739,10 @@ channels above threshold (multiplicity).
 
 .. code:: python
 
-    print("evt_ak.is_all_above_threshold ",evt_ak.is_all_above_threshold)
-    print("evt_ak.energy_sum             ",evt_ak.energy_sum)
-    print("evt_ak.energy_sum             ",evt_ak.energy_sum)
-    print("evt_ak.multiplicity           ",evt_ak.multiplicity)
+    print("evt_ak.is_all_above_threshold ", evt_ak.is_all_above_threshold)
+    print("evt_ak.energy_sum             ", evt_ak.energy_sum)
+    print("evt_ak.energy_sum             ", evt_ak.energy_sum)
+    print("evt_ak.multiplicity           ", evt_ak.multiplicity)
 
 
 .. parsed-literal::
@@ -730,7 +761,7 @@ first checking if any above threshold channel is in AC mode.
 
 .. code:: python
 
-    print("evt_ak.is_good_event           ",evt_ak.is_good_event)
+    print("evt_ak.is_good_event           ", evt_ak.is_good_event)
 
 
 .. parsed-literal::
@@ -747,13 +778,12 @@ quantities.
 
 .. code:: python
 
-    def plot_energy(axes,energy,bins=400,xrange=None,label=" ",log_y=True,**kwargs):
-
-        h=hist.new.Reg(bins,*xrange, name="energy [keV]").Double()
+    def plot_energy(axes, energy, bins=400, xrange=None, label=" ", log_y=True, **kwargs):
+        h = hist.new.Reg(bins, *xrange, name="energy [keV]").Double()
         h.fill(energy)
-        h.plot(**kwargs,label=label)
+        h.plot(**kwargs, label=label)
         axes.legend()
-        if (log_y):
+        if log_y:
             axes.set_yscale("log")
         if xrange is not None:
             axes.set_xlim(*xrange)
@@ -761,8 +791,20 @@ quantities.
 .. code:: python
 
     fig, ax = plt.subplots()
-    plot_energy(ax,evt_ak.energy_sum[evt_ak.multiplicity>0],yerr=False,label="Summed energies",xrange=(0,4000))
-    plot_energy(ax,ak.flatten(evt_ak[evt_ak.multiplicity==1].energy_vector),yerr=False,label="M1 energies",xrange=(0,4000))
+    plot_energy(
+        ax,
+        evt_ak.energy_sum[evt_ak.multiplicity > 0],
+        yerr=False,
+        label="Summed energies",
+        xrange=(0, 4000),
+    )
+    plot_energy(
+        ax,
+        ak.flatten(evt_ak[evt_ak.multiplicity == 1].energy_vector),
+        yerr=False,
+        label="M1 energies",
+        xrange=(0, 4000),
+    )
 
     ax.set_title("summed event energy")
 
@@ -788,18 +830,18 @@ spectra.
 
 .. code:: python
 
-    def plot_energy_2D(axes,energy_1,energy_2,bins=400,xrange=None,yrange=None,label=" ",**kwargs):
-
+    def plot_energy_2D(
+        axes, energy_1, energy_2, bins=400, xrange=None, yrange=None, label=" ", **kwargs
+    ):
         x_axis = hist.axis.Regular(bins, *xrange, name="Energy 2 [keV]")
         y_axis = hist.axis.Regular(bins, *yrange, name="Energy 1 [keV]")
         h = hist.Hist(x_axis, y_axis)
-        h.fill(energy_2,energy_1)
+        h.fill(energy_2, energy_1)
         cmap = mpl.colormaps["BuPu"].copy()
         cmap.set_under(color="white")
 
-
         w, x, y = h.to_numpy()
-        mesh = ax.pcolormesh(x, y, w.T, cmap=cmap,vmin=0.5)
+        mesh = ax.pcolormesh(x, y, w.T, cmap=cmap, vmin=0.5)
         ax.set_xlabel("Energy 2 [keV]")
         ax.set_ylabel("Energy 1 [keV]")
         fig.colorbar(mesh)
@@ -811,9 +853,22 @@ spectra.
 
     fig, ax = plt.subplots()
 
-    energy_1 = np.array(evt_ak[(evt_ak.multiplicity==2)&(evt_ak.is_good_event)].energy_vector[:,1])
-    energy_2 = np.array(evt_ak[(evt_ak.multiplicity==2)&(evt_ak.is_good_event)].energy_vector[:,0])
-    plot_energy_2D(ax,energy_2,energy_1,label=None,xrange=(0,1000),yrange=(0,1600),bins=200,vmin=0.5)
+    energy_1 = np.array(
+        evt_ak[(evt_ak.multiplicity == 2) & (evt_ak.is_good_event)].energy_vector[:, 1]
+    )
+    energy_2 = np.array(
+        evt_ak[(evt_ak.multiplicity == 2) & (evt_ak.is_good_event)].energy_vector[:, 0]
+    )
+    plot_energy_2D(
+        ax,
+        energy_2,
+        energy_1,
+        label=None,
+        xrange=(0, 1000),
+        yrange=(0, 1600),
+        bins=200,
+        vmin=0.5,
+    )
     ax.set_title("summed event energy")
 
 
diff --git a/docs/source/notebooks/reboost_hpge_tutorial_hit.rst b/docs/source/notebooks/reboost_hpge_tutorial_hit.rst
index 91d4836..2b7d096 100644
--- a/docs/source/notebooks/reboost_hpge_tutorial_hit.rst
+++ b/docs/source/notebooks/reboost_hpge_tutorial_hit.rst
@@ -69,11 +69,11 @@ You can lower the number of simulated events to speed up the simulation.
 
 We can use ``lh5.show()`` to check the output files.
 
-.. code:: ipython3
+.. code:: python
 
     from lgdo import lh5
 
-.. code:: ipython3
+.. code:: python
 
     lh5.show("output/stp/output_t0.lh5")
 
@@ -131,7 +131,7 @@ for the two Germanium channels.
 
 First we set up the python environment.
 
-.. code:: ipython3
+.. code:: python
 
     from reboost.hpge import hit
     import matplotlib.pyplot as plt
@@ -145,10 +145,10 @@ First we set up the python environment.
     import numpy as np
 
 
-    plt.rcParams['figure.figsize'] = [12, 4]
-    plt.rcParams['axes.titlesize'] =12
-    plt.rcParams['axes.labelsize'] = 12
-    plt.rcParams['legend.fontsize'] = 12
+    plt.rcParams["figure.figsize"] = [12, 4]
+    plt.rcParams["axes.titlesize"] = 12
+    plt.rcParams["axes.labelsize"] = 12
+    plt.rcParams["legend.fontsize"] = 12
 
 
     handler = colorlog.StreamHandler()
@@ -186,108 +186,103 @@ response model (gaussian energy resolution).
 We also include some step based quantities in the output to show the
 effect of the processors.
 
-.. code:: ipython3
+.. code:: python
 
     chain = {
-            "channels": [
-                "det001",
-                "det002"
-            ],
-            "outputs": [
-                "t0",                           # first timestamp
-                "time",                         # time of each step
-                "edep",                         # energy deposited in each step
-                "evtid",                    # id of the hit
-                "global_evtid",             # global id of the hit
-                "distance_to_nplus_surface_mm", # distance to detector nplus surface
-                "activeness",                   # activeness for the step
-                "rpos_loc",                     # radius of step
-                "zpos_loc",                     # z position
-                "energy_sum",                   # true summed energy before dead layer or smearing
-                "energy_sum_deadlayer",         # energy sum after dead layers
-                "energy_sum_smeared"            # energy sum after smearing with resolution
-            ],
-            "step_group": {
-                "description": "group steps by time and evtid with 10us window",
-                "expression": "reboost.hpge.processors.group_by_time(stp,window=10)",
+        "channels": ["det001", "det002"],
+        "outputs": [
+            "t0",  # first timestamp
+            "time",  # time of each step
+            "edep",  # energy deposited in each step
+            "evtid",  # id of the hit
+            "global_evtid",  # global id of the hit
+            "distance_to_nplus_surface_mm",  # distance to detector nplus surface
+            "activeness",  # activeness for the step
+            "rpos_loc",  # radius of step
+            "zpos_loc",  # z position
+            "energy_sum",  # true summed energy before dead layer or smearing
+            "energy_sum_deadlayer",  # energy sum after dead layers
+            "energy_sum_smeared",  # energy sum after smearing with resolution
+        ],
+        "step_group": {
+            "description": "group steps by time and evtid with 10us window",
+            "expression": "reboost.hpge.processors.group_by_time(stp,window=10)",
+        },
+        "locals": {
+            "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)",
+            "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)",
+        },
+        "operations": {
+            "t0": {
+                "description": "first time in the hit.",
+                "mode": "eval",
+                "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)",
+            },
+            "evtid": {
+                "description": "global evtid of the hit.",
+                "mode": "eval",
+                "expression": "ak.fill_none(ak.firsts(hit._evtid,axis=-1),np.nan)",
+            },
+            "global_evtid": {
+                "description": "global evtid of the hit.",
+                "mode": "eval",
+                "expression": "ak.fill_none(ak.firsts(hit._global_evtid,axis=-1),np.nan)",
+            },
+            "distance_to_nplus_surface_mm": {
+                "description": "distance to the nplus surface in mm",
+                "mode": "function",
+                "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')",
+            },
+            "activeness": {
+                "description": "activness based on FCCD (no TL)",
+                "mode": "eval",
+                "expression": "ak.where(hit.distance_to_nplus_surface_mm1][1]].time,histtype="step",yerr=False)
+    plot_times(
+        data_det001[data_det001.global_evtid == unique[counts > 1][1]].time,
+        histtype="step",
+        yerr=False,
+    )
 
 
 
@@ -540,35 +554,48 @@ detector surface and the activeness for each step. We select only events
 within 5 mm of the surface for the first plots. We can see that the
 processor works as expected.
 
-.. code:: ipython3
+.. code:: python
 
-    def plot_map(field,scale="BuPu",clab="Distance [mm]"):
+    def plot_map(field, scale="BuPu", clab="Distance [mm]"):
         fig, axs = plt.subplots(1, 2, figsize=(12, 4), sharey=True)
-        n=100000
-        for idx, (data,config) in enumerate(zip([data_det001,data_det002],["cfg/metadata/BEGe.json","cfg/metadata/Coax.json"])):
-
-            reg=pg4.geant4.Registry()
-            hpge = legendhpges.make_hpge(config,registry=reg)
-
-            legendhpges.draw.plot_profile(hpge, split_by_type=True,axes=axs[idx])
+        n = 100000
+        for idx, (data, config) in enumerate(
+            zip(
+                [data_det001, data_det002],
+                ["cfg/metadata/BEGe.json", "cfg/metadata/Coax.json"],
+            )
+        ):
+            reg = pg4.geant4.Registry()
+            hpge = legendhpges.make_hpge(config, registry=reg)
+
+            legendhpges.draw.plot_profile(hpge, split_by_type=True, axes=axs[idx])
             rng = np.random.default_rng()
-            r = rng.choice([-1,1],p=[0.5,0.5],size=len(ak.flatten(data.rpos_loc)))*ak.flatten(data.rpos_loc)
+            r = rng.choice(
+                [-1, 1], p=[0.5, 0.5], size=len(ak.flatten(data.rpos_loc))
+            ) * ak.flatten(data.rpos_loc)
             z = ak.flatten(data.zpos_loc)
-            c=ak.flatten(data[field])
-            cut = c<5
-
-            s=axs[idx].scatter(r[cut][0:n],z[cut][0:n], c= c[cut][0:n],marker=".", label="gen. points",cmap=scale)
-            #axs[idx].axis("equal")
+            c = ak.flatten(data[field])
+            cut = c < 5
+
+            s = axs[idx].scatter(
+                r[cut][0:n],
+                z[cut][0:n],
+                c=c[cut][0:n],
+                marker=".",
+                label="gen. points",
+                cmap=scale,
+            )
+            # axs[idx].axis("equal")
 
             if idx == 0:
                 axs[idx].set_ylabel("Height [mm]")
-            c=plt.colorbar(s)
+            c = plt.colorbar(s)
             c.set_label(clab)
 
             axs[idx].set_xlabel("Radius [mm]")
 
 
-.. code:: ipython3
+.. code:: python
 
     plot_map("distance_to_nplus_surface_mm")
 
@@ -589,9 +616,9 @@ processor works as expected.
 .. image:: images/output_27_1.png
 
 
-.. code:: ipython3
+.. code:: python
 
-    plot_map("activeness",clab="Activeness",scale="viridis")
+    plot_map("activeness", clab="Activeness", scale="viridis")
 
 
 .. parsed-literal::
@@ -612,24 +639,37 @@ processor works as expected.
 
 We can also plot a histogram of the distance to the surface.
 
-.. code:: ipython3
-
-    def plot_distances(axes,distances,xrange=None,label=" ",**kwargs):
+.. code:: python
 
-        h=hist.new.Reg(100,*xrange, name="Distance to n+ surface [mm]").Double()
+    def plot_distances(axes, distances, xrange=None, label=" ", **kwargs):
+        h = hist.new.Reg(100, *xrange, name="Distance to n+ surface [mm]").Double()
         h.fill(distances)
-        h.plot(**kwargs,label=label)
+        h.plot(**kwargs, label=label)
         axes.legend()
         axes.set_yscale("log")
         if xrange is not None:
             ax.set_xlim(*xrange)
 
 
-.. code:: ipython3
+.. code:: python
 
-    fig,ax = plt.subplots()
-    plot_distances(ax,ak.flatten(data_det001.distance_to_nplus_surface_mm),xrange=(0,35),label="BEGe",histtype="step",yerr=False)
-    plot_distances(ax,ak.flatten(data_det002.distance_to_nplus_surface_mm),xrange=(0,35),label="Coax",histtype="step",yerr=False)
+    fig, ax = plt.subplots()
+    plot_distances(
+        ax,
+        ak.flatten(data_det001.distance_to_nplus_surface_mm),
+        xrange=(0, 35),
+        label="BEGe",
+        histtype="step",
+        yerr=False,
+    )
+    plot_distances(
+        ax,
+        ak.flatten(data_det002.distance_to_nplus_surface_mm),
+        xrange=(0, 35),
+        label="Coax",
+        histtype="step",
+        yerr=False,
+    )
 
 
 
@@ -643,37 +683,52 @@ We can also plot a histogram of the distance to the surface.
 Our processing chain also sums the energies of the hits, both before and
 after weighting by the activeness.
 
-.. code:: ipython3
-
-    def plot_energy(axes,energy,bins=400,xrange=None,label=" ",log_y=True,**kwargs):
+.. code:: python
 
-        h=hist.new.Reg(bins,*xrange, name="energy [keV]").Double()
+    def plot_energy(axes, energy, bins=400, xrange=None, label=" ", log_y=True, **kwargs):
+        h = hist.new.Reg(bins, *xrange, name="energy [keV]").Double()
         h.fill(energy)
-        h.plot(**kwargs,label=label)
+        h.plot(**kwargs, label=label)
         axes.legend()
-        if (log_y):
+        if log_y:
             axes.set_yscale("log")
         if xrange is not None:
             axes.set_xlim(*xrange)
 
-.. code:: ipython3
+.. code:: python
 
     fig, ax = plt.subplots()
     ax.set_title("BEGe energy spectrum")
-    plot_energy(ax,data_det001.energy_sum,yerr=False,label="True energy",xrange=(0,4000))
-    plot_energy(ax,data_det001.energy_sum_deadlayer,yerr=False,label="Energy after dead layer",xrange=(0,4000))
+    plot_energy(
+        ax, data_det001.energy_sum, yerr=False, label="True energy", xrange=(0, 4000)
+    )
+    plot_energy(
+        ax,
+        data_det001.energy_sum_deadlayer,
+        yerr=False,
+        label="Energy after dead layer",
+        xrange=(0, 4000),
+    )
 
 
 
 .. image:: images/output_34_0.png
 
 
-.. code:: ipython3
+.. code:: python
 
     fig, ax = plt.subplots()
     ax.set_title("COAX energy spectrum")
-    plot_energy(ax,data_det002.energy_sum,yerr=False,label="True energy",xrange=(0,4000))
-    plot_energy(ax,data_det002.energy_sum_deadlayer,yerr=False,label="Energy after dead layer",xrange=(0,4000))
+    plot_energy(
+        ax, data_det002.energy_sum, yerr=False, label="True energy", xrange=(0, 4000)
+    )
+    plot_energy(
+        ax,
+        data_det002.energy_sum_deadlayer,
+        yerr=False,
+        label="Energy after dead layer",
+        xrange=(0, 4000),
+    )
 
 
 
@@ -690,11 +745,29 @@ in a similar way. It would also be simple to use instead an energy
 dependent resolution curve. To see the effect we have to zoom into the
 2615 keV peak.
 
-.. code:: ipython3
+.. code:: python
 
     fig, axs = plt.subplots()
-    plot_energy(axs,data_det001.energy_sum_smeared,yerr=False,label="BEGe",xrange=(2600,2630),log_y=False,bins=150,density=True)
-    plot_energy(axs,data_det002.energy_sum_smeared,yerr=False,label="COAX",xrange=(2600,2630),log_y=False,bins=150,density=True)
+    plot_energy(
+        axs,
+        data_det001.energy_sum_smeared,
+        yerr=False,
+        label="BEGe",
+        xrange=(2600, 2630),
+        log_y=False,
+        bins=150,
+        density=True,
+    )
+    plot_energy(
+        axs,
+        data_det002.energy_sum_smeared,
+        yerr=False,
+        label="COAX",
+        xrange=(2600, 2630),
+        log_y=False,
+        bins=150,
+        density=True,
+    )
 
 
 

$8iPDlkesWEp@DGv3o$Gc#B2 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 H*#-R<3&=Kw literal 0 HcmV?d00001 diff --git a/docs/source/notebooks/images/output_35_0.png b/docs/source/notebooks/images/output_35_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6e15606bfd941de38cbb29be244b11545d635584 GIT binary patch literal 33451 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 JPS()v{{S*bzR&;w literal 0 HcmV?d00001 diff --git a/docs/source/notebooks/images/output_37_0.png b/docs/source/notebooks/images/output_37_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ea77b1f72e013e741e33826da2df608224045722 GIT binary patch literal 20548 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 literal 0 HcmV?d00001 diff --git a/docs/source/notebooks/reboost_hpge_tutorial.rst b/docs/source/notebooks/reboost_hpge_tutorial.rst new file mode 100644 index 0000000..8ca1605 --- /dev/null +++ b/docs/source/notebooks/reboost_hpge_tutorial.rst @@ -0,0 +1,680 @@ +Basic HPGe simulation processing +================================ + +This tutorial describes how to process the HPGe detector simulations +from **remage** with **reboost**. It buils on the offical **remage** +tutorial +`[link] `__ + + .. rubric:: *Note* + :name: note + + To run this tutorial it is recommended to create the following + directory structure to organise the outputs and config inputs. + + + ├── cfg + │   └── metadata + ├── output + │   + ├── stp + │   + └── hit + └── reboost_hpge_tutorial.ipynb + +.. + +Part 1) Running the remage simulation +------------------------------------- + +Before we can run any post-processing we need to run the Geant4 +simulation. For this we follow the remage tutorial to generate the GDML +geometry. We save this into the GDML file *cfg/geom.gdml* for use by +remage. We also need to save the metadata dictonaries into json files +(in the *cfg/metadata* folder as *BEGe.json* and *Coax.json* + +We use a slightly modified Geant4 macro to demonstrate some features of +reboost (this should be saved as *cfg/th228.mac* to run remage on the +command line). + +.. code:: text + + /RMG/Manager/Logging/LogLevel detail + + /RMG/Geometry/RegisterDetector Germanium BEGe 001 + /RMG/Geometry/RegisterDetector Germanium Coax 002 + /RMG/Geometry/RegisterDetector Scintillator LAr 003 + + /run/initialize + + /RMG/Generator/Confine Volume + /RMG/Generator/Confinement/Physical/AddVolume Source + + /RMG/Generator/Select GPS + /gps/particle ion + /gps/energy 0 eV + /gps/ion 88 224 # 224-Ra + /process/had/rdm/nucleusLimits 208 224 81 88 #Ra-224 to 208-Pb + + + /run/beamOn 10000000 + +We then use the remage exectuable (see +`[remage-docs] `__ for +installation instructions) to run the simulation: > #### *Note* > Both +of *cfg/th228.mac* and *cfg/geometry.gdml* are needed to run remage + +.. code:: console + + $ remage --threads 8 --gdml-files cfg/geom.gdml --output-file output/stp/output.lh5 -- cfg/th228.mac + +You can lower the number of simulated events to speed up the simulation. + +We can use ``lh5.show()`` to check the output files. + +.. code:: ipython3 + + from lgdo import lh5 + +.. code:: ipython3 + + lh5.show("output/stp/output_t0.lh5") + +.. code:: text + + / + └── stp · struct{det001,det002,det003,vertices} + ├── det001 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det002 · table{evtid,particle,edep,time,xloc,yloc,zloc} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── xloc · array<1>{real} + │ ├── yloc · array<1>{real} + │ └── zloc · array<1>{real} + ├── det003 · table{evtid,particle,edep,time,xloc_pre,yloc_pre,zloc_pre,xloc_post,yloc_post,zloc_post,v_pre,v_post} + │ ├── edep · array<1>{real} + │ ├── evtid · array<1>{real} + │ ├── particle · array<1>{real} + │ ├── time · array<1>{real} + │ ├── v_post · array<1>{real} + │ ├── v_pre · array<1>{real} + │ ├── xloc_post · array<1>{real} + │ ├── xloc_pre · array<1>{real} + │ ├── yloc_post · array<1>{real} + │ ├── yloc_pre · array<1>{real} + │ ├── zloc_post · array<1>{real} + │ └── zloc_pre · array<1>{real} + └── vertices · table{evtid,time,xloc,yloc,zloc,n_part} + ├── evtid · array<1>{real} + ├── n_part · array<1>{real} + ├── time · array<1>{real} + ├── xloc · array<1>{real} + ├── yloc · array<1>{real} + └── zloc · array<1>{real} + +Part 2) reboost config files +---------------------------- + +For this tutorial we perform a basic post-processing of the *hit* tier +for the two Germanium channels. + +2.1) Setup the enviroment +~~~~~~~~~~~~~~~~~~~~~~~~~ + +First we set up the python enviroment. + +.. code:: ipython3 + + from reboost.hpge import hit + import matplotlib.pyplot as plt + import pyg4ometry as pg4 + import legendhpges + from legendhpges import draw + import awkward as ak + import logging + import colorlog + import hist + import numpy as np + + + plt.rcParams['figure.figsize'] = [12, 4] + plt.rcParams['axes.titlesize'] =12 + plt.rcParams['axes.labelsize'] = 12 + plt.rcParams['legend.fontsize'] = 12 + + + handler = colorlog.StreamHandler() + handler.setFormatter( + colorlog.ColoredFormatter("%(log_color)s%(name)s [%(levelname)s] %(message)s") + ) + logger = logging.getLogger() + logger.handlers.clear() + logger.addHandler(handler) + logger.setLevel(logging.INFO) + logger.info("test") + + + + +2.2) Processing chain and parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Next we need to make the processing chain config file. + +The processing chain below gives a standard set of steps for a HPGe +simulation. 1. first the steps are windowed into hits, 2. the first +timestamp and index of each hit is computed (for use in event building), +3. the distance to the detector n+ surface is computed and from this the +activeness is calculated (based on the FCCD) 4. the energy in each step +is summed to extract the deposited energy (both with and without +deadlayer correction), 5. the energy is convolved with the detector +response model (gaussian energy resolution). + +We also include some step based quantities in the output to show the +effect of the processors. + +.. code:: ipython3 + + chain = { + "channels": [ + "det001", + "det002" + ], + "outputs": [ + "t0", # first timestamp + "time", # time of each step + "edep", # energy deposited in each step + "hit_evtid", # id of the hit + "hit_global_evtid", # global id of the hit + "distance_to_nplus_surface_mm", # distance to detector nplus surface + "activeness", # activeness for the step + "rpos_loc", # radius of step + "zpos_loc", # z position + "energy_sum", # true summed energy before dead layer or smearing + "energy_sum_deadlayer", # energy sum after dead layers + "energy_sum_smeared" # energy sum after smearing with resolution + ], + "step_group": { + "description": "group steps by time and evtid with 10us window", + "expression": "reboost.hpge.processors.group_by_time(stp,window=10)", + }, + "locals": { + "hpge": "reboost.hpge.utils.get_hpge(meta_path=meta,pars=pars,detector=detector)", + "phy_vol": "reboost.hpge.utils.get_phy_vol(reg=reg,pars=pars,detector=detector)", + }, + "operations": { + "t0": { + "description": "first time in the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.time,axis=-1),np.nan)", + }, + "hit_evtid": { + "description": "global evtid of the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.evtid,axis=-1),np.nan)", + }, + "hit_global_evtid": { + "description": "global evtid of the hit.", + "mode": "eval", + "expression": "ak.fill_none(ak.firsts(hit.global_evtid,axis=-1),np.nan)", + }, + "distance_to_nplus_surface_mm": { + "description": "distance to the nplus surface in mm", + "mode": "function", + "expression": "reboost.hpge.processors.distance_to_surface(hit.xloc, hit.yloc, hit.zloc, hpge, phy_vol.position.eval(), surface_type='nplus',unit='m')", + }, + "activeness": { + "description": "activness based on FCCD (no TL)", + "mode": "eval", + "expression": "ak.where(hit.distance_to_nplus_surface_mm{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── edep · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── energy_sum · array<1>{real} + │ ├── energy_sum_deadlayer · array<1>{real} + │ ├── energy_sum_smeared · array<1>{real} + │ ├── hit_evtid · array<1>{real} + │ ├── hit_global_evtid · array<1>{real} + │ ├── rpos_loc · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ ├── t0 · array<1>{real} + │ ├── time · array<1>{array<1>{real}} + │ │ ├── cumulative_length · array<1>{real} + │ │ └── flattened_data · array<1>{real} + │ └── zpos_loc · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + └── det002 · table{edep,time,t0,hit_evtid,hit_global_evtid,distance_to_nplus_surface_mm,activeness,rpos_loc,zpos_loc,energy_sum,energy_sum_deadlayer,energy_sum_smeared} + ├── activeness · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── distance_to_nplus_surface_mm · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── edep · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── energy_sum · array<1>{real} + ├── energy_sum_deadlayer · array<1>{real} + ├── energy_sum_smeared · array<1>{real} + ├── hit_evtid · array<1>{real} + ├── hit_global_evtid · array<1>{real} + ├── rpos_loc · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + ├── t0 · array<1>{real} + ├── time · array<1>{array<1>{real}} + │ ├── cumulative_length · array<1>{real} + │ └── flattened_data · array<1>{real} + └── zpos_loc · array<1>{array<1>{real}} + ├── cumulative_length · array<1>{real} + └── flattened_data · array<1>{real} + + +The new format is a factor of x17 times smaller than the input file due +to the removal of many *step* based fields which use alot of memory and +due to the removal of the *vertices* table and the LAr hits. So we can +easily read the whole file into memory. We use *awkward* to analyse the +output files. + +.. code:: ipython3 + + data_det001 = lh5.read_as("hit/det001","output/hit/output.lh5","ak") + data_det002 = lh5.read_as("hit/det002","output/hit/output.lh5","ak") + +.. code:: ipython3 + + data_det001[0] + + + + +.. raw:: html + +