DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
tdemodules
scripts
tde_create_pinning_template.py
Go to the documentation of this file.
1
#!/usr/bin/env python3
2
import
click
3
4
import
json
5
6
import
pandas
as
pd
7
8
from
rich
import
print
9
10
from
tde_stream_db_gen
import
get_mapping_from_channel_map, get_mapping
11
12
13
@click.command
14
@click.option("-c", "--channel_map", type = str, help = "ProtoDUNE channel map to infer the Crate/AMC mapping.")
15
def
main
(channel_map):
16
if
channel_map:
17
mapping = get_mapping_from_channel_map(channel_map)
18
else
:
19
mapping = get_mapping(11, 2)
20
21
thread_name_prefix_ru = [
22
"rawproc-0"
,
23
"cleanup"
,
24
"consumer"
,
25
"recording"
,
26
"periodic"
27
]
28
thread_name_prefix_tpg = [
29
"tpproc-0"
,
30
"cleanup"
,
31
"consumer"
,
32
"periodic"
33
]
34
35
crate_group = [[0, 1, 2, 6, 7], [3, 4, 5, 8, 9]]
36
37
sids = {i : []
for
i
in
range(len(crate_group))}
38
sid_counters = {i : i * 100
for
i
in
pd.unique(mapping[
"CRP"
])}
39
40
for
cg
in
crate_group:
41
for
crate
in
cg:
42
crate_map = mapping[mapping[
"Crate"
] == crate]
43
amcs = pd.unique(crate_map[
"AMC"
])
44
for
amc
in
amcs:
45
base_sid = pd.unique(crate_map[crate_map[
"AMC"
] == amc][
"CRP"
])[0]
46
sid_counters[base_sid] += 1
47
48
index = [crate
in
i
for
i
in
crate_group][0]
49
sids[index].append(str(sid_counters[base_sid]))
50
51
template = {
"thread_group"
: []}
52
for
(n, v), s
in
zip(enumerate(sids.values()), pd.unique(mapping[
"CRP"
])):
53
tg = {
"numa"
: n,
"threads"
: []}
54
for
t
in
thread_name_prefix_ru:
55
tg[
"threads"
].append(f
"{t}-({'|'.join(v)})"
)
56
57
for
t
in
thread_name_prefix_tpg:
58
tg[
"threads"
].append(f
"{t}-({'|'.join([str((10 * s) + j) for j in range(3)])})"
)
59
60
template[
"thread_group"
].append(tg)
61
62
file =
"pin_template_tde.json"
63
with
open(file,
"w"
)
as
f:
64
json.dump({
"daq_application"
: {
"runp02srv004tde"
: template}}, f, indent = 4)
65
print(f
"pinning template written to {file}"
)
66
67
return
68
69
if
__name__ ==
"__main__"
:
70
main
()
tde_create_pinning_template.main
main(channel_map)
Definition
tde_create_pinning_template.py:15
Generated on
for DUNE-DAQ by
1.17.0