PyLamarr
Pythonizations for the ultra-fast simulation option for the LHCb experiment
 
Loading...
Searching...
No Matches
configure_pipeline.py
1from PyLamarr.Concatenate import Concatenate
2
3
4from .GanPipeline import GanPipeline
5from .IsMuonEfficiency import IsMuonEfficiency as IsMuonEff
6from .AssignIsMuon import AssignIsMuon
7
8
9def concat_outputs (name, algos):
10 output_tabs = [p.output_table for p in algos]
11
12 columns = set.intersection(*[
13 set(alg.output_columns).union(set(alg.references))
14 for alg in algos])
15
16 return f"Concat{name.capitalize()}", Concatenate(name, output_tabs, columns)
17
18
19def configure_pipeline(library: str):
20 ismuon_pipeline = [
21 ('MuIsMuonEff', IsMuonEff(library, 'isMuon_muon_pipe', 'tmp_ismuon_mu', 13)),
22 ('PiIsMuonEff', IsMuonEff(library, 'isMuon_pion_pipe', 'tmp_ismuon_pi', 211)),
23 ('KIsMuonEff', IsMuonEff(library, 'isMuon_kaon_pipe', 'tmp_ismuon_k', 321)),
24 ('PIsMuonEff', IsMuonEff(library, 'isMuon_proton_pipe', 'tmp_ismuon_p', 2212)),
25 ]
26 ismuon_pipeline.append(concat_outputs('ismuoneff', [a for _, a in ismuon_pipeline]))
27 ismuon_pipeline.append(('AssignIsMuon', AssignIsMuon('ismuoneff')))
28 ismuon_tab = ismuon_pipeline[-1][1].output_table
29
30 gan_pipeline = [
31 ("MuonPidPipe",
32 GanPipeline(library, "full_muon_pipe", "tmp_pid_mu", 13, ismuon_tab)),
33 ("PionPidPipe",
34 GanPipeline(library, "full_pion_pipe", "tmp_pid_pi", 211, ismuon_tab)),
35 ("KaonPidPipe",
36 GanPipeline(library, "full_kaon_pipe", "tmp_pid_k", 321, ismuon_tab)),
37 ("ProtonPidPipe",
38 GanPipeline(library, "full_proton_pipe", "tmp_pid_p", 2212, ismuon_tab)),
39 ]
40 gan_pipeline.append(concat_outputs('pid', [a for _, a in gan_pipeline]))
41
42 return ismuon_pipeline + gan_pipeline
43
44
Concatenate multiple tables.