Skip to content

Commit 8c8097b

Browse files
committed
add chmap conversion func
1 parent 6b8e830 commit 8c8097b

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

src/pygama/evt/modules/legend.py

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@
22
Module provides LEGEND internal functions
33
"""
44

5+
from __future__ import annotations
6+
7+
from collections.abc import Sequence
58
from importlib import import_module
69

7-
from lgdo.lh5 import utils
10+
import numpy as np
11+
from lgdo import types
12+
13+
from .. import utils
814

915

1016
def metadata(params: dict) -> list:
@@ -34,3 +40,37 @@ def metadata(params: dict) -> list:
3440
== params["selectors"][k]
3541
]
3642
return tmp
43+
44+
45+
def convert_rawid(
46+
datainfo: utils.DataInfo,
47+
tcm: utils.TCMData,
48+
table_names: Sequence[str],
49+
channel_mapping: dict,
50+
*,
51+
rawid_obj: types.VectorOfVectors | types.Array,
52+
):
53+
"""Convert rawid to channel number."""
54+
55+
if isinstance(rawid_obj, types.VectorOfVectors):
56+
rawids = rawid_obj.flattened_data.nda
57+
detector = np.array(
58+
[
59+
channel_mapping[datainfo.hit.table_fmt.replace("{}", str(rawid))]
60+
for rawid in rawids
61+
]
62+
)
63+
return types.VectorOfVectors(
64+
flattened_data=detector, cumulative_length=rawid_obj.cumulative_length
65+
)
66+
elif isinstance(rawid_obj, types.Array):
67+
rawids = rawid_obj.nda
68+
detector = np.array(
69+
[
70+
channel_mapping[datainfo.hit.table_fmt.replace("{}", str(rawid))]
71+
for rawid in rawids
72+
]
73+
)
74+
return types.Array(detector)
75+
else:
76+
raise TypeError("rawid_obj must be a VectorOfVectors or Array")

0 commit comments

Comments
 (0)