4@begin_doc_example{python}
5@file iguana_ex_python_01_action_functions.py
6@brief Python version of `iguana_ex_cpp_01_action_functions.cc` (for more details, see this `.cc` file)
17 'iguana/algorithms/clas12/EventBuilderFilter/Algorithm.h',
18 'iguana/algorithms/clas12/MomentumCorrection/Algorithm.h',
21from cppyy.gbl
import hipo, iguana
24inFile = sys.argv[1]
if len(sys.argv)>1
else 'data.hipo'
25numEvents = int(sys.argv[2])
if len(sys.argv)>2
else 3
27reader = hipo.reader(inFile)
28banks = reader.getBanks([
"REC::Particle",
"RUN::config"]);
30b_particle = hipo.getBanklistIndex(banks,
"REC::Particle")
31b_config = hipo.getBanklistIndex(banks,
"RUN::config")
36algo_eventbuilder_filter.SetOption(
'log',
'debug')
37algo_momentum_correction.SetOption(
'log',
'debug')
38algo_eventbuilder_filter.SetOption(
'pids', [11, 211, -211])
40algo_eventbuilder_filter.Start()
41algo_momentum_correction.Start()
44while(reader.next(banks)
and (numEvents==0
or iEvent < numEvents)):
47 particleBank = banks[b_particle]
48 configBank = banks[b_config]
51 for row
in particleBank.getRowList():
53 pid = particleBank.getInt(
'pid', row)
54 if(algo_eventbuilder_filter.Filter(pid)):
60 p_corrected = algo_momentum_correction.Transform(
61 particleBank.getFloat(
"px", row),
62 particleBank.getFloat(
"py", row),
63 particleBank.getFloat(
"pz", row),
66 configBank.getFloat(
"torus", 0)
69 print(f
'Accepted PID {pid}:')
70 print(f
' p_old = ({particleBank.getFloat("px", row)}, {particleBank.getFloat("py", row)}, {particleBank.getFloat("pz", row)})')
71 print(f
' p_new = ({p_corrected.px}, {p_corrected.py}, {p_corrected.pz})')
73algo_eventbuilder_filter.Stop()
74algo_momentum_correction.Stop()
Algorithm: Filter the REC::Particle (or similar) bank by PID from the Event Builder
Algorithm: Momentum Corrections