Initial lbexec support
When reviewing this merge request the individual commits likely make the most sense. In summary:
-
6843d61b Adds the two needed parts for lbexec, more specifically:
- A
DaVinci.Options
class which is used internally bylbexec
to parse the YAML - A
DaVinci.make_config
function which is the nominal way people should be using DaVinci
- A
-
931f5149 makes it so that the global
DaVinci.options
object is never relied upon (as it will be removed once the transition to lbexec is complete) -
7d2f007b contains an example of porting to lbexec with the
test_davinci_tupling_All
test. If everyone is happy with it I'll port the remaining tests and start cleaning up.
To see how this might actually look in reality, make a yaml file named options.yaml
containing (most of these keys probably aren't needed):
input_files:
- root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/tests/spruce_all_lines_realtimereco_newPacking.dst'
annsvc_config: 'root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/tests/spruce_all_lines_realtime_newPacking.tck.json'
data_type: Upgrade
input_type: ROOT
simulation: true
conddb_tag: sim-20171127-vc-md100
dddb_tag: dddb-20171126
histo_file: 'sprucing_histos.root'
input_raw_format: 0.3
lumi: false
ntuple_file: 'sprucing_tuple.root'
print_freq: 1
process: 'Spruce'
stream: 'default'
You can then run davinci using: lbexec DaVinciExamples.tupling.AllFunctors:alg_config options.yaml
I think it would be good to sit down and discuss what should be stored in the options.yaml
and what the arguments to DaVinci.make_config
should be. In particular I think things like process
/stream
/lumi
/evt_pre_filters
might be worth moving to the Python side.
Work towards DPA grand task https://gitlab.cern.ch/lhcb-dpa/project/-/issues/180 on configuration. Necessary for lhcb-dpa/analysis-productions/LbAnalysisProductions#68 (closed).