From 435eb8655a85d3271ad3a15f1f91baea0a6ea400 Mon Sep 17 00:00:00 2001 From: Abhijit Mathad <abhijit.mathad@cern.ch> Date: Fri, 3 Jun 2022 13:57:30 +0200 Subject: [PATCH] Introduce DaVinci tutorials --- .gitignore | 1 + CMakeLists.txt | 1 + .../tupling/example-tupling-AllFunctors.py | 3 +- .../tupling/example-tupling-DTF-filtered.py | 2 +- .../option_davinci_tupling_array_taggers.py | 5 +- ...option_davinci_tupling_from_collections.py | 9 +- .../option_davinci_tupling_from_hlt2.py | 24 +- ...tion_davinci_tupling_from_hlt2_gaudirun.py | 7 +- ...option_davinci_tupling_from_passthrough.py | 2 +- .../option_davinci_tupling_from_spruce.py | 17 +- .../option_davinci_tupling_from_spruce_mc.py | 6 +- DaVinciTutorials/CMakeLists.txt | 18 + DaVinciTutorials/README.md | 189 ++++ DaVinciTutorials/python/dataprops.yaml | 20 + DaVinciTutorials/python/jobopts.yaml | 20 + .../python/tutorial0_basic_DVjob.py | 59 ++ .../python/tutorial1_functors_specialfield.py | 100 +++ DaVinciTutorials/python/tutorial2_LoKi.py | 101 +++ .../python/tutorial3_ThOrfunctors.py | 125 +++ .../python/tutorial4_trigger_eventinfo.py | 127 +++ DaVinciTutorials/python/tutorial5_MCTruth.py | 120 +++ .../python/tutorial6_DecayTreeFit.py | 128 +++ .../python/tutorial7_multiple_sel_lines.py | 78 ++ .../qmtest/test_tutorial0_basic_DVjob.qmt | 45 + .../test_tutorial1_functors_specialfield.qmt | 61 ++ .../tests/qmtest/test_tutorial2_LoKi.qmt | 61 ++ .../qmtest/test_tutorial3_ThOrfunctors.qmt | 61 ++ .../test_tutorial4_trigger_eventinfo.qmt | 62 ++ .../tests/qmtest/test_tutorial5_MCTruth.qmt | 61 ++ .../qmtest/test_tutorial6_DecayTreeFit.qmt | 62 ++ .../test_tutorial7_multiple_sel_lines.qmt | 64 ++ DaVinciTutorials/tests/refs/empty.ref | 0 .../tests/refs/test_tutorial0_basic_DVjob.ref | 819 ++++++++++++++++++ .../test_tutorial1_Functors_specialfield.ref | 275 ++++++ .../tests/refs/test_tutorial2_LoKi.ref | 276 ++++++ .../refs/test_tutorial3_ThOrfunctors.ref | 267 ++++++ .../refs/test_tutorial4_trigger_eventinfo.ref | 411 +++++++++ .../tests/refs/test_tutorial5_MCTruth.ref | 309 +++++++ .../refs/test_tutorial6_DecayTreeFit.ref | 286 ++++++ .../test_tutorial7_multiple_sel_lines.ref | 396 +++++++++ Phys/DaVinci/python/DaVinci/algorithms.py | 25 +- 41 files changed, 4657 insertions(+), 46 deletions(-) create mode 100644 DaVinciTutorials/CMakeLists.txt create mode 100644 DaVinciTutorials/README.md create mode 100644 DaVinciTutorials/python/dataprops.yaml create mode 100644 DaVinciTutorials/python/jobopts.yaml create mode 100644 DaVinciTutorials/python/tutorial0_basic_DVjob.py create mode 100644 DaVinciTutorials/python/tutorial1_functors_specialfield.py create mode 100644 DaVinciTutorials/python/tutorial2_LoKi.py create mode 100644 DaVinciTutorials/python/tutorial3_ThOrfunctors.py create mode 100644 DaVinciTutorials/python/tutorial4_trigger_eventinfo.py create mode 100644 DaVinciTutorials/python/tutorial5_MCTruth.py create mode 100644 DaVinciTutorials/python/tutorial6_DecayTreeFit.py create mode 100644 DaVinciTutorials/python/tutorial7_multiple_sel_lines.py create mode 100644 DaVinciTutorials/tests/qmtest/test_tutorial0_basic_DVjob.qmt create mode 100644 DaVinciTutorials/tests/qmtest/test_tutorial1_functors_specialfield.qmt create mode 100644 DaVinciTutorials/tests/qmtest/test_tutorial2_LoKi.qmt create mode 100644 DaVinciTutorials/tests/qmtest/test_tutorial3_ThOrfunctors.qmt create mode 100644 DaVinciTutorials/tests/qmtest/test_tutorial4_trigger_eventinfo.qmt create mode 100644 DaVinciTutorials/tests/qmtest/test_tutorial5_MCTruth.qmt create mode 100644 DaVinciTutorials/tests/qmtest/test_tutorial6_DecayTreeFit.qmt create mode 100644 DaVinciTutorials/tests/qmtest/test_tutorial7_multiple_sel_lines.qmt create mode 100644 DaVinciTutorials/tests/refs/empty.ref create mode 100644 DaVinciTutorials/tests/refs/test_tutorial0_basic_DVjob.ref create mode 100644 DaVinciTutorials/tests/refs/test_tutorial1_Functors_specialfield.ref create mode 100644 DaVinciTutorials/tests/refs/test_tutorial2_LoKi.ref create mode 100644 DaVinciTutorials/tests/refs/test_tutorial3_ThOrfunctors.ref create mode 100644 DaVinciTutorials/tests/refs/test_tutorial4_trigger_eventinfo.ref create mode 100644 DaVinciTutorials/tests/refs/test_tutorial5_MCTruth.ref create mode 100644 DaVinciTutorials/tests/refs/test_tutorial6_DecayTreeFit.ref create mode 100644 DaVinciTutorials/tests/refs/test_tutorial7_multiple_sel_lines.ref diff --git a/.gitignore b/.gitignore index 0ba24220a..a35b6f001 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # backup files *~ .*.swp +*.root # build products InstallArea/ diff --git a/CMakeLists.txt b/CMakeLists.txt index d5868e06a..496d178dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,6 +28,7 @@ include(DaVinciDependencies) # -- Subdirectories lhcb_add_subdirectories( DaVinciExamples + DaVinciTutorials DaVinciSys DaVinciTests Phys/DaVinci diff --git a/DaVinciExamples/python/DaVinciExamples/tupling/example-tupling-AllFunctors.py b/DaVinciExamples/python/DaVinciExamples/tupling/example-tupling-AllFunctors.py index be2012447..6c62d8476 100644 --- a/DaVinciExamples/python/DaVinciExamples/tupling/example-tupling-AllFunctors.py +++ b/DaVinciExamples/python/DaVinciExamples/tupling/example-tupling-AllFunctors.py @@ -312,8 +312,7 @@ def alg_config(): # # Sprucing filter # - my_filter = add_filter("HDRFilter_B0DsK", - f"HLT_PASS('{bd2dsk_line}Decision')") + my_filter = add_filter("HDRFilter_B0DsK", f"HLT_PASS('{bd2dsk_line}')") # # FunTuple diff --git a/DaVinciExamples/python/DaVinciExamples/tupling/example-tupling-DTF-filtered.py b/DaVinciExamples/python/DaVinciExamples/tupling/example-tupling-DTF-filtered.py index e89c9fa8c..cd6109fa8 100644 --- a/DaVinciExamples/python/DaVinciExamples/tupling/example-tupling-DTF-filtered.py +++ b/DaVinciExamples/python/DaVinciExamples/tupling/example-tupling-DTF-filtered.py @@ -59,7 +59,7 @@ variables_ds = FunctorCollection({ #associate FunctorCollection to field (branch) name variables = {'ALL': variables_all, 'Ds': variables_ds} -filter_data = add_filter("SpruceFilter", f"HLT_PASS('{spruce_line}Decision')") +filter_data = add_filter("SpruceFilter", f"HLT_PASS('{spruce_line}')") #Configure Funtuple algorithm tuple_data = Funtuple( diff --git a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_array_taggers.py b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_array_taggers.py index 290867b90..2baf3e4a3 100644 --- a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_array_taggers.py +++ b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_array_taggers.py @@ -12,7 +12,7 @@ Option file for testing the ParticleTaggerAlg algorithm and the related ThOr functors MAP_ARRAY and MAP_RANGE. The job runs over a spruced sample and retrieves a set of B0 -> Ds K+ candidates. For each candidate the ParticleTaggerAlg looks at the TES location defined via the 'make_long_pions_from_spruce' function and creates a 'one-to-many' relation map - relating all the available tracks to the B candidate of the events. + relating all the available tracks to the B candidate of the events. Then the MAP_ARRAY functor takes in input this relation map and for each entry stores the output of an external functor (i.e F.P, F.PT) in a vector via the MAP_RANGE functor. @@ -81,8 +81,7 @@ tuple_B0DsK = Funtuple( variables=variables, inputs=bd2dsk_data) -filter_B0DsK = add_filter("HDRFilter_B0DsK", - f"HLT_PASS('{bd2dsk_line}Decision')") +filter_B0DsK = add_filter("HDRFilter_B0DsK", f"HLT_PASS('{bd2dsk_line}')") options.annsvc_config = 'root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/tests/spruce_all_lines_realtime_newPacking.tck.json' options.histo_file = 'DV-example-tagger-his.root' diff --git a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_collections.py b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_collections.py index af60c97d4..d5f5156e4 100644 --- a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_collections.py +++ b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_collections.py @@ -20,7 +20,8 @@ from DaVinci import options from DaVinci.truth_matching import configured_MCTruthAndBkgCatAlg from DaVinci.algorithms import get_odin, get_decreports -d02kpi_data = force_location("/Event/HLT2/Hlt2CharmD0ToKmPipLine/Particles") +line_name = 'Hlt2CharmD0ToKmPipLine' +d02kpi_data = force_location(f"/Event/HLT2/{line_name}/Particles") #get configured "MCTruthAndBkgCatAlg" algorithm for HLT2 output mctruth = configured_MCTruthAndBkgCatAlg( @@ -40,10 +41,9 @@ collections = [ functorcollections.MCVertexInfo(mctruth) ] -hlt2_line_names = ['Hlt2CharmD0ToKmPipLineDecision'] evt_collections = [ functorcollections.EventInfo(odin), - functorcollections.SelectionInfo("Hlt2", dec, hlt2_line_names) + functorcollections.SelectionInfo("Hlt2", dec, [line_name]) ] assert len(collections) + len(evt_collections) == len( @@ -84,7 +84,6 @@ my_tuple = Funtuple( def main(): - my_filter = add_filter("HDRFilter_D0Kpi", - "HLT_PASS('Hlt2CharmD0ToKmPipLineDecision')") + my_filter = add_filter("HDRFilter_D0Kpi", f"HLT_PASS('{line_name}')") return {"UserAlgs": [my_filter, my_tuple]}, [] diff --git a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_hlt2.py b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_hlt2.py index ea3d66dc4..d426b375e 100644 --- a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_hlt2.py +++ b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_hlt2.py @@ -20,6 +20,7 @@ from DaVinci.algorithms import add_filter from DaVinci import options from DaVinci.truth_matching import configured_MCTruthAndBkgCatAlg from DaVinci.algorithms import get_odin, get_decreports +from FunTuple.functorcollections import SelectionInfo options.process = 'Hlt2' @@ -66,11 +67,10 @@ variables = { def main(): - d02kpi_data = force_location( - "/Event/HLT2/Hlt2CharmD0ToKmPipLine/Particles") + line_name = 'Hlt2CharmD0ToKmPipLine' + d02kpi_data = force_location(f"/Event/HLT2/{line_name}/Particles") - my_filter = add_filter("HDRFilter_D0Kpi", - "HLT_PASS('Hlt2CharmD0ToKmPipLineDecision')") + my_filter = add_filter("HDRFilter_D0Kpi", f"HLT_PASS('{line_name}')") #get configured "MCTruthAndBkgCatAlg" algorithm for HLT2 output mctruth = configured_MCTruthAndBkgCatAlg( @@ -105,23 +105,15 @@ def main(): odin = get_odin(options) hlt2_dec = get_decreports("Hlt2", options) - #Since input is from this line should return 1 for decisions - hlt2_lines = ['Hlt2CharmD0ToKmPipLineDecision'] - #define event level variables evt_variables = FunctorCollection({ - "RUNNUMBER": - F.RUNNUMBER(odin), - "EVENTNUMBER": - F.EVENTNUMBER(odin), - "Hlt2_TCK": - F.TCK(hlt2_dec), - "Sel": - F.DECISIONS(Lines=hlt2_lines, DecReports=hlt2_dec), + "RUNNUMBER": F.RUNNUMBER(odin), + "EVENTNUMBER": F.EVENTNUMBER(odin) }) + evt_variables += SelectionInfo("Hlt2", hlt2_dec, [line_name]) #For now remove: The 'Hlt2' line decision tuples fine but breaks unit test with an error. (Why?) #see linked issue here: https://gitlab.cern.ch/lhcb/DaVinci/-/merge_requests/654#note_5320732 - evt_variables.pop('Sel') + evt_variables.pop('Hlt2') #define FunTuple instance my_tuple = Funtuple( diff --git a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_hlt2_gaudirun.py b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_hlt2_gaudirun.py index c35bee677..c18f7cad0 100644 --- a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_hlt2_gaudirun.py +++ b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_hlt2_gaudirun.py @@ -50,11 +50,10 @@ variables = { def main(): - d02kpi_data = force_location( - "/Event/HLT2/Hlt2CharmD0ToKmPipLine/Particles") + line_name = 'Hlt2CharmD0ToKmPipLine' + d02kpi_data = force_location(f"/Event/HLT2/{line_name}/Particles") - my_filter = add_filter("HDRFilter_D0Kpi", - "HLT_PASS('Hlt2CharmD0ToKmPipLineDecision')") + my_filter = add_filter("HDRFilter_D0Kpi", f"HLT_PASS('{line_name}')") my_tuple = Funtuple( name="Tuple", tuple_name="DecayTree", diff --git a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_passthrough.py b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_passthrough.py index 90b97f4ca..787740868 100644 --- a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_passthrough.py +++ b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_passthrough.py @@ -34,7 +34,7 @@ variables = { def main(): filter_bs = add_filter("HDRFilter_Bs2JpsiPhi", - f"HLT_PASS('{bs2jpsiphi_line}Decision')") + f"HLT_PASS('{bs2jpsiphi_line}')") tuple_bs = Funtuple( name="Bs2JpsiPhi_Tuple", diff --git a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_spruce.py b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_spruce.py index 33056b000..4bd35aca0 100644 --- a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_spruce.py +++ b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_spruce.py @@ -18,10 +18,10 @@ from PyConf.components import force_location from DaVinci.algorithms import add_filter from DaVinci import options -bd2dsk_line = force_location( - "/Event/Spruce/SpruceB2OC_BdToDsmK_DsmToHHH_FEST_Line/Particles") -bd2dspi_line = force_location( - "/Event/Spruce/SpruceB2OC_BdToDsmPi_DsmToKpKmPim_Line/Particles") +line_B0DsK = 'SpruceB2OC_BdToDsmK_DsmToHHH_FEST_Line' +line_B0Dspi = 'SpruceB2OC_BdToDsmPi_DsmToKpKmPim_Line' +bd2dsk_line = force_location(f"/Event/Spruce/{line_B0DsK}/Particles") +bd2dspi_line = force_location(f"/Event/Spruce/{line_B0Dspi}/Particles") fields_dsk = { 'B0': "[B0 -> D_s- K+]CC", @@ -91,12 +91,9 @@ def main(): options.ntuple_file = "DV_example_sprucing_ntp.root" options.histo_file = "DV_example_sprucing_his.root" - filter_B0DsK = add_filter( - "HDRFilter_B0DsK", - "HLT_PASS('SpruceB2OC_BdToDsmK_DsmToHHH_FEST_LineDecision')") - filter_B0Dspi = add_filter( - "HDRFilter_B0Dspi", - "HLT_PASS('SpruceB2OC_BdToDsmPi_DsmToKpKmPim_LineDecision')") + filter_B0DsK = add_filter("HDRFilter_B0DsK", f"HLT_PASS('{line_B0DsK}')") + filter_B0Dspi = add_filter("HDRFilter_B0Dspi", + f"HLT_PASS('{line_B0Dspi}')") tools = [] algs = { diff --git a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_spruce_mc.py b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_spruce_mc.py index a4a51c13f..001ba01be 100644 --- a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_spruce_mc.py +++ b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_spruce_mc.py @@ -34,10 +34,10 @@ variables = { def main(): - B_data = force_location("/Event/Spruce/Spruce_Test_line/Particles") + line_name = 'Spruce_Test_line' + B_data = force_location(f"/Event/Spruce/{line_name}/Particles") - my_filter = add_filter("HDRFilter_B", - "HLT_PASS('Spruce_Test_lineDecision')") + my_filter = add_filter("HDRFilter_B", f"HLT_PASS('{line_name}')") #get configured "MCTruthAndBkgCatAlg" algorithm for HLT2 output mctruth = configured_MCTruthAndBkgCatAlg(inputs=B_data) diff --git a/DaVinciTutorials/CMakeLists.txt b/DaVinciTutorials/CMakeLists.txt new file mode 100644 index 000000000..95fd1863c --- /dev/null +++ b/DaVinciTutorials/CMakeLists.txt @@ -0,0 +1,18 @@ +############################################################################### +# (c) Copyright 2001-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +#[=======================================================================[.rst: +DaVinciTutorials +---------------- +#]=======================================================================] + +gaudi_install(PYTHON) + +gaudi_add_tests(QMTest) diff --git a/DaVinciTutorials/README.md b/DaVinciTutorials/README.md new file mode 100644 index 000000000..4a9f3cea6 --- /dev/null +++ b/DaVinciTutorials/README.md @@ -0,0 +1,189 @@ +# About + +The tutorials have originally been developed for the LHCb [starter-kit](https://indico.cern.ch/event/1124730/timetable/#20220316) that took place in March 2022. +The tutorials are accompanied by [slides](https://indico.cern.ch/event/1124730/timetable/#20220316) and [recordings](https://videos.cern.ch/record/2295643). +Note that in the slides and recordings, the tutorials have been labelled differently to what is present here (the slides and recordings will be updated for the next `starterkit` lesson). + +# Setup + +To setup, either build your own [stack](https://gitlab.cern.ch/rmatev/lb-stack-setup) for DaVinci (WARNING: Takes a very long time to build. Only recommended if you are doing development work) + +```bash +#Go to home or any directory of your choice +cd $HOME +#set up the stack +curl https://gitlab.cern.ch/rmatev/lb-stack-setup/raw/master/setup.py | python3 - stack +#compile DaVinci (DV) master +cd stack && make DaVinci +``` + +or use the `lb-dev` command i.e. + +```bash +#Go to home or any directory of your choice +cd $HOME +#Note that you might run into trouble if DaVinci hasn't yet been built in the latest lhcb-head slot. +# You can check if it has been built or not here: https://lhcb-nightlies.web.cern.ch/nightly/ +# In which case you can simply use the previous slot number e.g. "--nightly lhcb-head/3270". +lb-dev -c x86_64_v2-centos7-gcc11-opt --nightly lhcb-head DaVinci/HEAD --name DV +cd DV +git lb-use DaVinci +git lb-checkout DaVinci/master DaVinciTutorials +make +``` + +Let us setup the required paths to the DaVinci tutorials directory using the `stack` method (for `lb-dev` method change `DVPATH` accordingly) + +```bash +#path to DaVinci (using stack method, for lb-dev method DVPATH="$HOME/DV") +DVPATH="$HOME/stack/DaVinci" +#path to starterkit examples +TUTORIALSPATH="$DVPATH/DaVinciTutorials/python" +``` + +In the lesson, we will be using the `Turbo` upgrade simulation sample analysing the decays of `Bs0->J/psi (-> mu+ mu-) phi (-> K+ K-)`. +The simulation samples can either be in the local directory or at CERN EOS. +Here our example DST file (`hlt2_passthrough_thor_lines.dst`) and accompanying configuration file (`hlt2_passthrough_thor_lines.tck.json`) are both at CERN EOS (see `jobopts.yaml` file). + +<!--For the hands-on session, we will be using a 'Spruce' upgrade simulation sample analysing the decays of `Bc -> Bs0 pi+`. Simulation sample obtained from Spruce line output (`spruce_exclusive_BcToBspi.dst`) and configuration file (`spruce_exclusive.tck.json`) are also at CERN EOS (see `jobopts_spruce.yaml` file).--> + +# Tutorial0: Running a simple DaVinci job + +Objectives: + +- Running the basic example using the [`click`](https://click.palletsprojects.com/en/8.0.x/) based DaVinci configuration. +- Creating templates for `jobopts.yaml` and `dataprops.yaml`. +- Configuring DV job with `jobopts.yaml` and data properties using `dataprops.yaml`. +- Function that returns a sequence of user defined algorithms. + +Command to run the tutorial: + +```bash +cd $TUTORIALSPATH +$DVPATH/run davinci run-mc -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial0_basic_DVjob:main +``` + +# Tutorial1: FunTuple basic ThOr functors and special field name + +Objectives: + +- Basic configuration of `FunTuple`. +- Defining a collection of `ThOr` functors (`FunctorCollection`). +- Configuring the `fields` attribute of `FunTuple`. +- Usage of special field name `ALL`. +- Inspecting C++ string representation of `ThOr` functors. +- Loading particles in the event from `.dst` onto Transient Event Store (TES) location. +- Usage of event filter (mainly to get over a technical hurdle). + +Command to run the tutorial: + +```bash +cd $TUTORIALSPATH + +#see particle properties (for names, properties, etc) +$DVPATH/run dump_ParticleProperties -t Upgrade | tee ParticleTable.txt + +#run example +$DVPATH/run davinci -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial1_functors_specialfield:main +``` + +External links: +- Decay descriptors: https://twiki.cern.ch/twiki/bin/view/LHCb/FAQ/LoKiNewDecayFinders +- `ThOr` documentation: https://lhcbdoc.web.cern.ch/lhcbdoc/moore/master/selection/thor_functors.html +- [List](https://gitlab.cern.ch/lhcb/Rec/-/blob/master/Phys/FunctorCore/python/Functors/__init__.py) of available `ThOr` functors. + +# Tutorial2: LoKi functors + +Objectives: +- Defining a collection of `LoKi` functors together with `ThOr` functors. +- Defining a LoKi preamble for a complex LoKi functor to be used in `FunctorCollection`. + +Command to run the tutorial: +```bash +#run example +$DVPATH/run davinci -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial2_LoKi:main +``` + +External links: +- `LoKi` official page: http://lhcb-comp.web.cern.ch/Analysis/Loki/index.html +- `LoKi` starter-kit page: https://lhcb.github.io/starterkit-lessons/first-analysis-steps/loki-functors.html + +# Tutorial3: ThOr functors (Data dependence, arguments and return types) + +Objectives: + +- Loading primary vertices (PVs) onto TES, which is passed to data dependent `ThOr` functors in `FunTuple` e.g. `F.BPVIPCHI2(pvs)`. +- Functors returning three and four vectors e.g. `F.BPVFDVEC(pvs)` that returns `3-vector`. +- Usage of functors taking other arguments such as other functors `func` e.g. `F.CHILD(1,func)`, `F.SUM(func)`, `F.SUMCOMB(func,Indices)`, `F.MASSWITHHYPOTHESES(('K+', 'K-')`. +- Basic maths operators with functor returning scalars e.g. `CHILD_2(F.END_VZ) - F.END_VZ`, which returns difference in end vertex of child and mother. + +Command to run the tutorial: +```bash +#run example +$DVPATH/run davinci -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial3_ThOrfunctors:main +``` + +# Tutorial4: Usage of pre-defined `functorcollections`, storing trigger and event-level information + + +Objectives: +- Usage of pre-defined `functorcollections`, inspecting and manipulating them before loading it onto `FunTuple`. +- Exploring few simple methods of `FunctorCollection` class. +- Storing event-level information with `functorcollection` e.g. RunNumber, EventNumber, etc. +- Storing trigger (`Hlt1`, `Hlt2` and `Sprucing`) information with `functorcollection` e.g. line decisions, Trigger Configuration Key (TCK). + +Command to run the tutorial: +```bash +#run example +$DVPATH/run davinci -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial4_trigger_eventinfo:main +``` + +External links: + +- The `Hlt1` decisions can be stored in similar way to `Hlt2` and `Spruce` (see example `option_trigger_decisions` in `DaVinciExamples` folder). For details, can also refer to the [talk](https://indico.cern.ch/event/1164051/#5-accessing-hlt1-decisions-usi) (The talk mentions that to persist Hlt1 decisions, one needs to add few options to the Moore script). +- List of currently available `functorcollections` are [here](https://gitlab.cern.ch/lhcb/Analysis/-/blob/master/Phys/FunTuple/python/FunTuple/functorcollections.py) and the planned ones are [here](https://gitlab.cern.ch/lhcb-dpa/project/-/issues/178). + + +# Tutorial5: MC truth association and background category algorithm + +Objectives: +- Configuring the MC association and background category algorithm (`MCTruthAndBkgCatAlg`) to build a relation table. For MC association, the table is essentially a map between reconstructed particles and "truth" particles (MCParticle). +- Usage of the relations table and `ThOr` functor handling such table (e.g. `F.MAP_INPUT(func, RelTable`) to get truth information and background category. +- Also explore `functorcollections` such as `MCKinematics`, `MCHierarchy`, etc. + +Command to run the tutorial: +```bash +#run example +$DVPATH/run davinci -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial5_MCTruth:main +``` + +# Tutorial6: Decay Tree Fitter (DTF) algorithm + +Objectives: +- Configuring the Decay Tree Fitter algorithm (`DecayTreeFitterAlg`) to build a relation table i.e. map between the candidate and the refitted candidate. +- Usage of the relations table and `ThOr` functor (e.g. `F.MAP_INPUT(func, RelTable`) to get refitted information of the candidate. +- Defining different instances of DTF algorithm with mass constraints, primary vertex constraint. + +Command to run the tutorial: +```bash +#run example +$DVPATH/run davinci -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial6_DecayTreeFit:main +``` + +External links on decay tree fitter: + - Paper: https://inspirehep.net/literature/679286 + - Twiki : https://twiki.cern.ch/twiki/bin/view/LHCb/DecayTreeFitter + - Starter-kit: https://lhcb.github.io/starterkit-lessons/first-analysis-steps/decay-tree-fitter.html + - Slides by Wouter: https://www.nikhef.nl/~wouterh/topicallectures/TrackingAndVertexing/part6.pdf + +# Tutorial7: Defining different instances of FunTuple when analysing outputs of multiple selection lines + +Objectives: +- Defining different instances of FunTuple to return different `TDirectory` in the output ROOT file. +- Changes to the function returning user algorithm "sequence" to allow for this. + +Command to run the tutorial: +```bash +#run example Turbo but with two decays +$DVPATH/run davinci -i bs2jpsiphi_turbo dataprops.yaml -j jobopts_turbo.yaml --user_algorithms tutorial7_multiple_sel_lines:main +``` \ No newline at end of file diff --git a/DaVinciTutorials/python/dataprops.yaml b/DaVinciTutorials/python/dataprops.yaml new file mode 100644 index 000000000..165ed2569 --- /dev/null +++ b/DaVinciTutorials/python/dataprops.yaml @@ -0,0 +1,20 @@ +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### + +bs2jpsiphi_turbo: + filenames: + - 'root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/tests/hlt2_passthrough_thor_lines.dst' + qualifiers: + data_type: Upgrade + input_type: DST + simulation: true + conddb_tag: sim-20180530-vc-md100 + dddb_tag: dddb-20180815 \ No newline at end of file diff --git a/DaVinciTutorials/python/jobopts.yaml b/DaVinciTutorials/python/jobopts.yaml new file mode 100644 index 000000000..42ad169c2 --- /dev/null +++ b/DaVinciTutorials/python/jobopts.yaml @@ -0,0 +1,20 @@ +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### + +# Template job option YAML file. +# Best guesses are provided below for various options. Please adapt as per your needs. + +annsvc_config: 'root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/tests/hlt2_passthrough_thor_lines.tck.json' +evt_max: -1 +ntuple_file: 'ntuple_turbo.root' +enable_unpack: True +process: 'Turbo' +print_freq: 1 \ No newline at end of file diff --git a/DaVinciTutorials/python/tutorial0_basic_DVjob.py b/DaVinciTutorials/python/tutorial0_basic_DVjob.py new file mode 100644 index 000000000..f52e8899e --- /dev/null +++ b/DaVinciTutorials/python/tutorial0_basic_DVjob.py @@ -0,0 +1,59 @@ +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### + +#### +# tutorial0_basic_DVjob: Running simple example of a DaVinci job. +# +# Run this with (assumes TUTORIALSPATH and DVPATH are already set, see README.md): +# - cd $TUTORIALSPATH +# - $DVPATH/run davinci run-mc -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial0_basic_DVjob:main +##### + +from PyConf.Algorithms import PrintDecayTree +from PyConf.components import force_location +from DaVinci.algorithms import add_filter + +#Import davinci options and overwrite "ntuple_file" option in "jobopts.yaml" +from DaVinci import options +options.ntuple_file = '' #no tuple written out +options.evt_max = 100 + +#Load data from dst onto a "temporary" TES (Transient Event Store) location for a given event cycle. +# We loop over the algorithms event-by-event, so for given event cycle, TES maps "path" to an "object". +# For the TES path checkout spruce_passthrough.tck.json or you can do a dst dump +# (see https://lhcb.github.io/starterkit-lessons/first-analysis-steps/interactive-dst.html) +# +# The TES location input to the algorithms must of type "PyConf.DataHandle" and not pure strings. +# Therefore we wrap the TES location string below with "force_location" wrapper class. +turbo_line = "Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line" +input_data = force_location(f"/Event/HLT2/{turbo_line}/Particles") + +#Add a filter: We are not really filtering over particles, we are getting over a technical hurdle here. +# The hurdle being that if the event hasn't fired a HLT2 line then no TES location exists +# and therefore if any algorithm tries to look for this location, we run into a problem. +# Side step this issue with a filter, where: +# - 1st argument is a user defined name. +# - 2nd argument is the line decision (simply append "Decision" to your HLT2 line name (or inspect hlt2_starterkit.tck.json)) +my_filter = add_filter("HDRFilter_SeeNoEvil", f"HLT_PASS('{turbo_line}')") + +# Defining an algorithm. The alorithm here prints the decaytree +pdt = PrintDecayTree(name="PrintBsToJpsiPhi", Input=input_data) + + +def main(): + #Define tools (no tools used here) + tools = [] + + #Define dictionary of algorithms: "algorithm sequence name" -> list of algorithms run sequentially. By default an algorithm is only run if the previous in sequence finds something. + algs = {"Alg": [my_filter, pdt]} + + #Return them + return algs, tools diff --git a/DaVinciTutorials/python/tutorial1_functors_specialfield.py b/DaVinciTutorials/python/tutorial1_functors_specialfield.py new file mode 100644 index 000000000..03c6ee32c --- /dev/null +++ b/DaVinciTutorials/python/tutorial1_functors_specialfield.py @@ -0,0 +1,100 @@ +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### + +##### +# tutorial1_functors_specialfield: Tupling with LoKi and ThOr functors +# +# Run this with (assumes TUTORIALSPATH and DVPATH are already set, see README.md): +# - cd $TUTORIALSPATH +# - $DVPATH/run davinci run-mc -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial1_functors_specialfield:main +##### + +#Import necessary packages and functions +from FunTuple import FunTuple_Particles as Funtuple +from FunTuple import FunctorCollection as FC +import Functors as F +from DaVinci.algorithms import add_filter +from PyConf.application import force_location + +#Import davinci options and overwrite "ntuple_file" option in "jobopts.yaml" +from DaVinci import options +options.ntuple_file = 'tutorial1_functors_specialfield.root' +options.evt_max = 100 + +#Define a dictionary of "field name" -> "decay descriptor component". +# - For particle properties, names, etc checkout "ParticleTable.txt" +# that can be obtained via command "$DVPATH/run dump_ParticleProperties -t Upgrade | tee ParticleTable.txt". +# - For decay descriptor info see for example https://twiki.cern.ch/twiki/bin/view/LHCb/FAQ/LoKiNewDecayFinders +# If your decay is self-tagged (which is the most common case) then you will need "[<decay-descriptor>]CC" +fields = { + "Bs": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)", + "Jpsi": "B_s0 -> ^(J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)", + "Phi": "B_s0 -> (J/psi(1S) -> mu+ mu-) ^(phi(1020) ->K+ K-)", + "Mup": "B_s0 -> (J/psi(1S) ->^mu+ mu-) (phi(1020) ->K+ K-)", + "Mum": "B_s0 -> (J/psi(1S) -> mu+ ^mu-) (phi(1020) ->K+ K-)", + "Kp": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->^K+ K-)", + "Km": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ ^K-)", +} + +#Define a collection of functors called FunctorCollection, which takes dictionary of "variable name" -> "ThOr" functor +# (Can also be a "LoKi" functor see next tutorial). +# For more info on ThOr see https://lhcbdoc.web.cern.ch/lhcbdoc/moore/master/selection/thor_functors.html#functor-cache +# For list of ThOr functors see https://lhcbdoc.web.cern.ch/lhcbdoc/moore/master/selection/thor_functors_reference.html +# Here we define functor collection to be added to "ALL" fields (Bs, Jpsi, Phi, etc) +all_vars = FC({ + "THOR_P": F.P, #ThOr momentum functor + "ID": F. + PARTICLE_ID, #Refer to "ParticleTable.txt" for particle ID (see above on how to get this file) +}) + +#define functors to be added only to Bs and Jpsi fields +bs_jpsi_fun = FC({"PT_THOR": F.PT, "PX": F.PX, "PY": F.PY}) + +#Define variables dictionary "field name" -> Collections of functor. +# "ALL" is a special field name that adds PT to all the fields defined above (i.e. Bs,Jpsi,Mup,Mum,Kp,Km) +variables = { + "ALL": all_vars, + "Bs": bs_jpsi_fun, + "Jpsi": bs_jpsi_fun, +} + +#Inspect string representation of ThOr Functor +# This string representation is converted to C++ object +# using gcc or FunctorCache see https://lhcbdoc.web.cern.ch/lhcbdoc/moore/master/selection/thor_functors.html#functors-in-a-selection-framework +print(F.PT.code()) +#print(F.PT.headers()) +print(F.PT.code_repr()) + +#Define the TES location (see previous example for explanation) +turbo_line = "Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line" +input_data = force_location(f"/Event/HLT2/{turbo_line}/Particles") + +#Define a filter (see previous example for explaination) +my_filter = add_filter("HDRFilter_SeeNoEvil", f"HLT_PASS('{turbo_line}')") + +#Define instance of FunTuple +mytuple = Funtuple( + "TDirectoryName", # name of directory in ROOT file + "TTreeName", # name of TTree + fields=fields, # dictionary of particle : decay descriptor + variables=variables, # dictionary of particle : variables to insert in TTree + inputs=input_data) # input data + + +def main(): + #Define tools (no tools used here) + tools = [] + + #Define dictionary of algorithms: "algorithm sequence name" -> list of algorithms run sequentially + algs = {"Alg": [my_filter, mytuple]} + + #Return them + return algs, tools diff --git a/DaVinciTutorials/python/tutorial2_LoKi.py b/DaVinciTutorials/python/tutorial2_LoKi.py new file mode 100644 index 000000000..0601c9cf5 --- /dev/null +++ b/DaVinciTutorials/python/tutorial2_LoKi.py @@ -0,0 +1,101 @@ +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### + +##### +# tutorial2_LoKi: Usage of LoKi functors together with ThOr +# +# Run this with (assumes TUTORIALSPATH and DVPATH are already set, see README.md): +# - cd $TUTORIALSPATH +# - $DVPATH/run davinci run-mc -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial2_LoKi:main +##### + +from FunTuple import FunTuple_Particles as Funtuple +from FunTuple import FunctorCollection as FC +import Functors as F +from DaVinci.algorithms import add_filter +from PyConf.application import force_location + +#Import davinci options and overwrite "ntuple_file" option in "jobopts.yaml" +from DaVinci import options +options.ntuple_file = 'tutorial2_LoKi.root' +options.evt_max = 100 + +#Define a dictionary of "field name" -> "decay descriptor component". +fields = { + "Bs": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)", + "Jpsi": "B_s0 -> ^(J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)", + "Phi": "B_s0 -> (J/psi(1S) -> mu+ mu-) ^(phi(1020) ->K+ K-)", + "Mup": "B_s0 -> (J/psi(1S) ->^mu+ mu-) (phi(1020) ->K+ K-)", + "Mum": "B_s0 -> (J/psi(1S) -> mu+ ^mu-) (phi(1020) ->K+ K-)", + "Kp": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->^K+ K-)", + "Km": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ ^K-)", +} + +#Define a collection of functors called FunctorCollection, which takes dictionary of "variable name" -> "LoKi" or "ThOr" functor +# For more info on ThOr see https://lhcbdoc.web.cern.ch/lhcbdoc/moore/master/selection/thor_functors.html#functor-cache +# For list of ThOr functors see https://lhcbdoc.web.cern.ch/lhcbdoc/moore/master/selection/thor_functors_reference.html +# For information on LoKi functor see https://lhcb.github.io/starterkit-lessons/first-analysis-steps/loki-functors.html +mom_fun = FC({ + "THOR_PT": F.PT, + "THOR_PX": F.PX, + "THOR_PY": F.PY, + "LOKI_PT": 'PT', #LoKi functor code is represented in a string + "LOKI_PX": 'PX', + "LOKI_PY": 'PY' +}) + +#Define a LoKi preamble (Note that one can define preambles in ThOr using python lambda function see next tutorial or via FunctorComposition) +# i.e. rename a complex LoKi functor to a user deinfed name (e.g. TRACK_MAX_PT) +# This helps us to use "TRACK_MAX_PT" when constructing FunctorCollection +loki_preamble = ['TRACK_MAX_PT = MAXTREE(ISBASIC & HASTRACK, PT, -1)'] + +#define collections to be added to fields +max_pt_fun = FC({ + "MAX_PT_LOKI": "TRACK_MAX_PT", #LoKi + "MAX_PT_THOR": F.MAX( + F.PT + ) #ThOr (not equivalent, sum of pT of composites not basic). MAXTREE ThOr doesn't exist yet. +}) + +#Define variables dictionary "field name" -> Collections of functor. +variables = { + "ALL": mom_fun, + "Bs": max_pt_fun, + "Jpsi": max_pt_fun, + "Phi": max_pt_fun, +} + +#Load data from dst onto a TES +turbo_line = "Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line" +input_data = force_location(f"/Event/HLT2/{turbo_line}/Particles") + +#Add a filter +my_filter = add_filter("HDRFilter_SeeNoEvil", f"HLT_PASS('{turbo_line}')") + +#Define instance of FunTuple +mytuple = Funtuple( + "TDirectoryName", + "TTreeName", + fields=fields, + variables=variables, + loki_preamble=loki_preamble, #optional argument + inputs=input_data) + + +def main(): + #Define tools (no tools used here) + tools = [] + + #Define dictionary of algorithms: "algorithm sequence name" -> list of algorithms run sequentially + algs = {"Alg": [my_filter, mytuple]} + + #Return them + return algs, tools diff --git a/DaVinciTutorials/python/tutorial3_ThOrfunctors.py b/DaVinciTutorials/python/tutorial3_ThOrfunctors.py new file mode 100644 index 000000000..422050472 --- /dev/null +++ b/DaVinciTutorials/python/tutorial3_ThOrfunctors.py @@ -0,0 +1,125 @@ +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### + +##### +# tutorial3_ThOrfunctors: Usange of data dependent ThOr functors, arguments to ThOr functors and vector functors +# +# Run this with (assumes TUTORIALSPATH and DVPATH are already set, see README.md): +# - cd $TUTORIALSPATH +# - $DVPATH/run davinci run-mc -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial3_ThOrfunctors:main +##### + +from FunTuple import FunTuple_Particles as Funtuple +from FunTuple import FunctorCollection as FC +import Functors as F +from DaVinci.algorithms import add_filter +from PyConf.application import force_location +from DaVinci.reco_objects import make_pvs_v2 + +#Import davinci options and overwrite "ntuple_file" option in "jobopts.yaml" +from DaVinci import options +options.ntuple_file = 'tutorial3_ThOrfunctors.root' +options.evt_max = 100 + +#Define a dictionary of "field name" -> "decay descriptor component". +# Can get daughter information from the head of the decay using F.CHILD functors see below. +fields = { + "Bs": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)", + "Phi": "B_s0 -> (J/psi(1S) -> mu+ mu-) ^(phi(1020) ->K+ K-)", + "Kp": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->^K+ K-)", + "Km": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ ^K-)", +} + +#Load PVs onto TES from data, like we did with input_data below +# Creating v2 reconstructed vertices to be used in the following functor +# For the time being there's a mix of legacy and v2 event classes. That will eventually be cleaned once the +# event model is fixed. In the meantime there are helper functions in DaVinci. +pvs = make_pvs_v2(process=options.process) + +#Evaluate the impact parameter +all_vars = {} +#The ThOr functor F.BPVIPCHI2 is data dependent. It takes as input list of pvs. +#It calculates impact parameter chisq wrt best PV. +# - best PV is the PV which fits best the FD of the B candidate. +# - impact parameter chisq is the difference in the vertex-fit chisq of a given PV reconstructed with and w/o the track under consideration. +all_vars['BPVIPCHI2'] = F.BPVIPCHI2(pvs) + +#define dictionary +bs_vars = {} + +#Tupling vector functors +# Some functors could also return std::map<std::string, std::any> (e.g. F.DECISIONS(Lines=line_names, DecReports=dec_report)) +bs_vars['BPVFDVEC_'] = F.BPVFDVEC(pvs) #Returns 3-vector +bs_vars['FOURMOM_P'] = F.FOURMOMENTUM #Returns 4-vector + +#define some helpful lambda function to simplify syntax +# This is bit like LoKi preamble of renaming functors that we encountred in previous tutorial. +CHILD_1 = lambda func: F.CHILD(1, func) +CHILD_2 = lambda func: F.CHILD(2, func) +SUBCOMB_12 = lambda func: F.SUBCOMB(Functor=func, Indices=(1, 2)) + +#Store the ID of the two daughters of B_s0 +bs_vars['jpsi_ID'] = CHILD_1(F.PARTICLE_ID) +bs_vars['phi_ID'] = CHILD_2(F.PARTICLE_ID) +bs_vars['Kp_ID'] = CHILD_2(CHILD_1(F.PARTICLE_ID)) + +#Calculate sum of pT of jpsi daughter tracks +bs_vars['jpsi_TRACKSUMPT'] = CHILD_1(F.SUM(F.PT)) + +#Calculate impact parameter of K+ +bs_vars['Kp_BPVIP'] = CHILD_2(CHILD_1(F.BPVIP(pvs))) + +#Calculate invariant mass of K+ and K- combination +bs_vars['phi_M_comb'] = CHILD_2(SUBCOMB_12(F.MASS)) + +#Calculate the difference in end vertex between phi and Bs +bs_vars['Delta_END_VZ_PhiBs0'] = CHILD_2(F.END_VZ) - F.END_VZ + +#Calculate inv mass of K+pi- where the K- is given the mass hypothesis of pi- +bs_vars['phi_mass_kpi'] = CHILD_2(F.MASSWITHHYPOTHESES(('K+', 'pi-'))) + +#Calculate inv mass of K+K- +# There three functors for computing this i.e. F.MASS, CHILD_2(SUBCOMB_12(F.MASS)) and CHILD_2(F.MASSWITHHYPOTHESES(('K+', 'K-'))) but why? +# (see issue: https://gitlab.cern.ch/lhcb/Rec/-/issues/307) +bs_vars['phi_mass_kk'] = CHILD_2(F.MASSWITHHYPOTHESES(('K+', 'K-'))) +all_vars['M'] = F.MASS + +#Define variables dictionary "field name" -> Collections of functor +variables = { + "ALL": FC(all_vars), + "Bs": FC(bs_vars), +} + +#Load data from dst onto a TES +turbo_line = "Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line" +input_data = force_location(f"/Event/HLT2/{turbo_line}/Particles") + +#Add a filter +my_filter = add_filter("HDRFilter_SeeNoEvil", f"HLT_PASS('{turbo_line}')") + +#Define instance of FunTuple +mytuple = Funtuple( + "TDirectoryName", + "TTreeName", + fields=fields, + variables=variables, + inputs=input_data) + + +def main(): + #Define tools (no tools used here) + tools = [] + + #Define dictionary of algorithms: "algorithm sequence name" -> list of algorithms run sequentially + algs = {"Alg": [my_filter, mytuple]} + + #Return them + return algs, tools diff --git a/DaVinciTutorials/python/tutorial4_trigger_eventinfo.py b/DaVinciTutorials/python/tutorial4_trigger_eventinfo.py new file mode 100644 index 000000000..bf7c8357c --- /dev/null +++ b/DaVinciTutorials/python/tutorial4_trigger_eventinfo.py @@ -0,0 +1,127 @@ +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### + +##### +# tutorial4_trigger_eventinfo: Usage of pre-defined FunctorCollection, storing trigger and event level information +# +# Run this with (assumes TUTORIALSPATH and DVPATH are already set, see README.md): +# - cd $TUTORIALSPATH +# - $DVPATH/run davinci run-mc -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial4_trigger_eventinfo:main +##### + +from FunTuple import FunTuple_Particles as Funtuple +from FunTuple import FunctorCollection as FC +import Functors as F +from DaVinci.algorithms import add_filter +from PyConf.application import force_location + +#Import davinci options and overwrite "ntuple_file" option in "jobopts.yaml" +from DaVinci import options +options.ntuple_file = 'tutorial4_trigger_eventinfo.root' +options.evt_max = 100 + +#Define a dictionary of "field name" -> "decay descriptor component". +fields = {"Bs": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)"} + +#To help users, there are pre-defined FunctorCollections (Tuple-tool like objects for Run1/2 veterans) that you can import and inspect. +# Here we import a pre-defined FunctorCollection "Kinematics". +# One can call "print(help(Kinematics))" (you have to press "q" to exit after calling) to check the usage and their arguments. +# Functors that have data dependency will naturally induce data dependency on the functorcollections. +# +# To see what functor collections are available see: https://gitlab.cern.ch/lhcb/Analysis/-/blob/master/Phys/FunTuple/python/FunTuple/functorcollections.py +from FunTuple.functorcollections import Kinematics + +#Inspect whats in the collection by printing +kin = Kinematics() +print(kin) + +#Define new collection +coll = FC({"ID": F.PARTICLE_ID}) + +#Add to existing collections (can also subtract two collections) +kin += coll + +#Remove from collections +kin.pop(['PX', 'PT', 'PZ', 'PY', 'ENERGY']) +print(kin) + +#Can also obtain a pure dictionary from collections via +# - kin.functor_dict (Contains both LoKi and ThOr) +# - kin.get_thor_functors() +# - kin.get_loki_functors() +print(kin.functor_dict) +print(kin.get_thor_functors()) +print(kin.get_loki_functors() + ) #empty dictionary since we have no LoKi functors in the collection + +#Now import two other pre-defined FunctorCollections: SelectionInfo and EventInfo +# - SelectionInfo: Contains functors related to storing Hlt1, Hlt2 or Sprucing trigger line decision and Trigger Configuration Key (TCK). +# - EventInfo: Contains functors related to storing event information EVENTNUMBER, RUNNUMBER, GPSTIME, etc. +# +#As before you can call help with "print(help(EventInfo))" or "print(help(SelectionInfo))" (you have to press "q" to exit after calling) +from FunTuple.functorcollections import SelectionInfo, EventInfo + +#Get event information like RUNNUMBER, EVENTNUMBER. +# These are stored in "LHCb::ODIN" C++ object which the ThOr functors take as input (like PVs in Example7), load it onto TES using "get_odin". +# The attribute extra_info is False by default, if set to "True" you get info on +# bunchcrossing id, ODIN TCK, GPS Time, etc +from DaVinci.algorithms import get_odin +odin = get_odin(options) +evtinfo = EventInfo(odin, extra_info=False) +print(evtinfo) + +#Get selection line decision and HlT2 TCK. +# These decisions are stored in "LHCb::HltDecReports" object, which the ThOr functors take as input (like PVs in Example7), load it onto TES using "get_decreports". +# The function "get_decreports" takes as input: +# - sel_type: Type of selection "Hlt2" or "Spruce" +# - line_names: list of line decision in this instance HLT2 line. Should return True for all since we are using the output of this line. +# +# The `Hlt1` decisions can be stored in similar way to `Hlt2` and `Spruce` +# (see example `option_trigger_decisions` in `DaVinciExamples` folder). +# For details, can also refer to the [talk](https://indico.cern.ch/event/1164051/#5-accessing-hlt1-decisions-usi) +# (The talk mentions that to persist Hlt1 decisions, one needs to add few options to the Moore script). +from DaVinci.algorithms import get_decreports +sel_type = "Hlt2" #User defined and will be used as prefix for TBranch in the root file +dec_report = get_decreports(sel_type, options) +turbo_line = "Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line" +turbo_line2 = "Hlt2BsToJpsiPhi_JPsi2ee_PhiToKK_Line" +line_names = [f'{turbo_line}Decision', f'{turbo_line2}'] +selinfo = SelectionInfo(sel_type, dec_report, line_names) +print(selinfo) + +#Define variables dictionary "field name" -> Collections of functor +variables = {"ALL": kin} + +#Load data from dst onto a TES +input_data = force_location(f"/Event/HLT2/{turbo_line}/Particles") + +#Add a filter +my_filter = add_filter("HDRFilter_SeeNoEvil", f"HLT_PASS('{turbo_line}')") + +#Define instance of FunTuple +mytuple = Funtuple( + "TDirectoryName", + "TTreeName", + fields=fields, + variables=variables, + event_variables=evtinfo + selinfo, + inputs=input_data) + + +def main(): + #Define tools (no tools used here) + tools = [] + + #Define dictionary of algorithms: "algorithm sequence name" -> list of algorithms run sequentially + algs = {"Alg": [my_filter, mytuple]} + + #Return them + return algs, tools diff --git a/DaVinciTutorials/python/tutorial5_MCTruth.py b/DaVinciTutorials/python/tutorial5_MCTruth.py new file mode 100644 index 000000000..0bb78981a --- /dev/null +++ b/DaVinciTutorials/python/tutorial5_MCTruth.py @@ -0,0 +1,120 @@ +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### + +##### +# tutorial5_MCTruth: MC truth association example +# +# Run this with (assumes TUTORIALSPATH and DVPATH are already set, see README.md): +# - cd $TUTORIALSPATH +# - $DVPATH/run davinci run-mc -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial5_MCTruth:main +##### + +from FunTuple import FunTuple_Particles as Funtuple +from FunTuple import FunctorCollection as FC +import Functors as F +from DaVinci.algorithms import add_filter +from PyConf.application import force_location + +#Import davinci options and overwrite "ntuple_file" option in "jobopts.yaml" +from DaVinci import options +options.ntuple_file = 'tutorial5_MCTruth.root' +options.evt_max = 100 + +#Define a dictionary of "field name" -> "decay descriptor component". +fields = { + "Bs": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)", + "Jpsi": "B_s0 ->^(J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)", + "Phi": "B_s0 -> (J/psi(1S) -> mu+ mu-) ^(phi(1020) ->K+ K-)", + "Mup": "B_s0 -> (J/psi(1S) ->^mu+ mu-) (phi(1020) ->K+ K-)", + "Mum": "B_s0 -> (J/psi(1S) -> mu+ ^mu-) (phi(1020) ->K+ K-)", + "Kp": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->^K+ K-)", + "Km": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ ^K-)", +} + +#Import FunctorCollections Kinematics, MCKinematics, MCHierarchy +# There is also "MCVertexInfo" but we won't import it here. +# +# See whats available at: https://gitlab.cern.ch/lhcb/Analysis/-/blob/master/Phys/FunTuple/python/FunTuple/functorcollections.py +from FunTuple.functorcollections import Kinematics, MCKinematics, MCHierarchy + +#We can seek help on these functorcollections using following commands (if you run these commmands, press "q" to exit and continue). +# - print(help(MCKinematics)) +# - print(help(MCHierarchy)) +# +# We see that it takes an input an algorithm configured_MCTruthAndBkgCatAlg(inputdata), so lets import that. +from DaVinci.truth_matching import configured_MCTruthAndBkgCatAlg + +#Load data from dst onto a TES +turbo_line = "Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line" +input_data = force_location(f"/Event/HLT2/{turbo_line}/Particles") +#Define an algorithm that builds a map i.e. one-to-one relation b/w Reco Particle -> Truth MC Particle. +mctruth = configured_MCTruthAndBkgCatAlg(inputs=input_data) +print(mctruth.MCAssocTable) + +#Pass it to collections +kin = Kinematics() +mckin = MCKinematics(mctruth) +mchierarchy = MCHierarchy(mctruth) +print(mckin) +print(mchierarchy) + +#Loop over and keep only whats required +kin = FC( + {k: v + for k, v in kin.get_thor_functors().items() if k == 'P' or k == 'M'}) +mckin = FC( + {k: v + for k, v in mckin.get_thor_functors().items() if k == 'TRUEP'}) +mchierarchy = FC({ + k: v + for k, v in mchierarchy.get_thor_functors().items() if k == 'TRUEID' +}) +print(kin) +print(mckin) +print(mchierarchy) + +#To get truth information with a functor that is not present in the collections +# - The 1st argument is the functor that returns the relevant information +# - The 2nd argument is relation table i.e. a one-to-one map b/w Reco Particle -> Truth MC Particle. +extra_info = { + "TRUEEID": F.MAP_INPUT(F.PARTICLE_ID, mctruth.MCAssocTable), + "TRUEEPHI": F.MAP_INPUT(F.PHI, mctruth.MCAssocTable) +} +extra_info = FC(extra_info) + +#The algorithm mctruth also outputs a map b/w particle and bkg category which can be obtained using the functor +# For more info on background category see: https://twiki.cern.ch/twiki/bin/view/LHCb/TupleToolMCBackgroundInfo +bkg_cat = FC({"BKGCAT": F.BKGCAT(Relations=mctruth.BkgCatTable)}) + +#Define variables dictionary "field name" -> Collections of functor +variables = {"ALL": kin + mckin + mchierarchy + bkg_cat, "Kp": extra_info} + +#Add a filter +my_filter = add_filter("HDRFilter_SeeNoEvil", f"HLT_PASS('{turbo_line}')") + +#Define instance of FunTuple +mytuple = Funtuple( + "TDirectoryName", + "TTreeName", + fields=fields, + variables=variables, + inputs=input_data) + + +def main(): + #Define tools (no tools used here) + tools = [] + + #Define dictionary of algorithms: "algorithm sequence name" -> list of algorithms run sequentially + algs = {"Alg": [my_filter, mytuple]} + + #Return them + return algs, tools diff --git a/DaVinciTutorials/python/tutorial6_DecayTreeFit.py b/DaVinciTutorials/python/tutorial6_DecayTreeFit.py new file mode 100644 index 000000000..3662dda5a --- /dev/null +++ b/DaVinciTutorials/python/tutorial6_DecayTreeFit.py @@ -0,0 +1,128 @@ +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### + +##### +# tutorial6_DecayTreeFit: Decay Tree Fitting +# +# Run this with (assumes TUTORIALSPATH and DVPATH are already set, see README.md): +# - cd $TUTORIALSPATH +# - $DVPATH/run davinci run-mc -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial6_DecayTreeFit:main +##### + +from FunTuple import FunTuple_Particles as Funtuple +from FunTuple import FunctorCollection as FC +import Functors as F +from DaVinci.algorithms import add_filter +from PyConf.application import force_location +from FunTuple.functorcollections import Kinematics + +#Import DecayTreeFitter algorithm +# For more information of DTF see +# - https://inspirehep.net/literature/679286 +# - https://twiki.cern.ch/twiki/bin/view/LHCb/DecayTreeFitter +# - https://www.nikhef.nl/~wouterh/topicallectures/TrackingAndVertexing/part6.pdf +from DecayTreeFitter import DTFAlg + +#Import davinci options and overwrite "ntuple_file" option in "jobopts.yaml" +from DaVinci import options +options.ntuple_file = 'tutorial6_DecayTreeFit.root' +options.evt_max = 100 + +#Define a dictionary of "field name" -> "decay descriptor component". +fields = { + "Bs": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)", + "Jpsi": "B_s0 ->^(J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)", + "Phi": "B_s0 -> (J/psi(1S) -> mu+ mu-) ^(phi(1020) ->K+ K-)", +} + +#Load data from dst onto a TES (See Example7) +turbo_line = "Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line" +input_data = force_location(f"/Event/HLT2/{turbo_line}/Particles") + +#get kinematic functors +kin = Kinematics() + +####### Mass constraint +#For DTFAlg, as with MC Truth algorithm (previous example), this algorithm builds a relation +# table i.e. one-to-one map b/w B candidate -> Refitted B candidate. +# The relation table is output to the TES location "DTF.OutputRelations" +# Note: the Jpsi constraint is applied but the phi constraint seems not to be applied (see issue: https://gitlab.cern.ch/lhcb/Rec/-/issues/309) +DTF = DTFAlg(MassConstraints=["J/psi(1S)"], Input=input_data) + +#Define a helper lambda function that takes variable name (k) prepends it with "DTF_" and functor (v) which is functor +DTFMAP = lambda func: F.MAP_INPUT(func, DTF.OutputRelations) + +#Loop over the functors in kinematics function and create a new functor collection +dtf_kin = FC( + {'DTF_' + k: DTFMAP(v) + for k, v in kin.get_thor_functors().items()}) +print(dtf_kin) +######### + +####### Mass constraint + primary vertex constraint +#Load PVs onto TES from data. Note here that we call "make_pvs()" to pass to DTF algorithm and "make_pvs_v2()" is passed to ThOr functors. +# The function "make_pvs_v2()" returns v2 vertices whereas "make_pvs()" returns v1 verticies. +# The PV constraint in the Decay tree fitter currently only works with v1 +# (see https://gitlab.cern.ch/lhcb/Rec/-/issues/318 and https://gitlab.cern.ch/lhcb/Rec/-/issues/309) +from DaVinci.reco_objects import make_pvs, make_pvs_v2 +pvs = make_pvs(process=options.process) +pvs_v2 = make_pvs_v2(process=options.process) + +#Add not only mass but also constrain Bs to be coming from primary vertex +DTFpv = DTFAlg( + InputPVs=pvs, MassConstraints=["J/psi(1S)", "phi(1020)"], Input=input_data) + +#Helper function for decay tree fitting with PV constaint. +# We make here a lambda function that takes as input a functor +# the lambda function loads this functor into MAP_INPUT functor +# which we encountered previously and returns it. +DTFPV_MAP = lambda func: F.MAP_INPUT(func, DTFpv.OutputRelations) + +#define the functors +pv_fun = {} +pv_fun['BPVLTIME'] = F.BPVLTIME(pvs_v2) +pv_fun['BPVIPCHI2'] = F.BPVIPCHI2(pvs_v2) +pv_coll = FC(pv_fun) + +#We now take the pre-defined functor collection ("pv_fun") and add same variables to it +# but using the result of the decay tree fit (DTF). These variables will have the prefix ("DTFPV_"). +# The resolution on the B candidate lifetime post-DTF ("DTFPV_BPVLTIME") +# should have improved compared to lifetime variable pre-DTF ("BPVLTIME"). +# Below we make use of the helper function ("DTFPV_MAP") defined previously. +pv_coll += FC({ + 'DTFPV_' + k: DTFPV_MAP(v) + for k, v in pv_coll.get_thor_functors().items() +}) + +#Define variables dictionary "field name" -> Collections of functor +variables = {"ALL": kin + dtf_kin, "Bs": pv_coll} + +#Add a filter (See Example7) +my_filter = add_filter("HDRFilter_SeeNoEvil", f"HLT_PASS('{turbo_line}')") + +#Define instance of FunTuple +mytuple = Funtuple( + "TDirectoryName", + "TTreeName", + fields=fields, + variables=variables, + inputs=input_data) + + +def main(): + #Define tools (no tools used here) + tools = [] + + #Define dictionary of algorithms: "algorithm sequence name" -> list of algorithms run sequentially + algs = {"Alg": [my_filter, mytuple]} + + #Return them + return algs, tools diff --git a/DaVinciTutorials/python/tutorial7_multiple_sel_lines.py b/DaVinciTutorials/python/tutorial7_multiple_sel_lines.py new file mode 100644 index 000000000..d000c66b7 --- /dev/null +++ b/DaVinciTutorials/python/tutorial7_multiple_sel_lines.py @@ -0,0 +1,78 @@ +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### + +##### +# tutorial7_multiple_sel_lines: Multiple instances of FunTuple algorithms when running over +# ouput of two selection (Sprucing or Hlt2) lines with Bs decays +# +# Run this with (assumes TUTORIALSPATH and DVPATH are already set, see README.md): +# - cd $TUTORIALSPATH +# - $DVPATH/run davinci run-mc -i bs2jpsiphi_turbo dataprops.yaml -j jobopts.yaml --user_algorithms tutorial7_multiple_sel_lines:main +##### + +from FunTuple import FunTuple_Particles as Funtuple +from DaVinci.algorithms import add_filter +from PyConf.application import force_location +from FunTuple.functorcollections import Kinematics + +#Import davinci options and overwrite "ntuple_file" option in "jobopts.yaml" +from DaVinci import options +options.ntuple_file = 'tutorial7_multiple_sel_lines.root' +options.evt_max = 100 + +#Example1_tafa +#Define a dictionary of "field name" -> "decay descriptor component". +fields1 = { + "Bs": "B_s0 -> (J/psi(1S) -> mu+ mu-) (phi(1020) ->K+ K-)", + "mup": "B_s0 -> (J/psi(1S) -> ^mu+ mu-) (phi(1020) ->K+ K-)", + "mum": "B_s0 -> (J/psi(1S) -> mu+ ^mu-) (phi(1020) ->K+ K-)", +} +fields2 = { + "Bs": "B_s0 -> (J/psi(1S) -> e+ e-) (phi(1020) ->K+ K-)", + "ep": "B_s0 -> (J/psi(1S) -> ^e+ e-) (phi(1020) ->K+ K-)", + "em": "B_s0 -> (J/psi(1S) -> e+ ^e-) (phi(1020) ->K+ K-)" +} + +#Define variables dictionary "field name" -> Collections of functor +variables = {"ALL": Kinematics()} + +#Load data from dst onto a TES +turbo_line1 = "Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line" +input_data1 = force_location(f"/Event/HLT2/{turbo_line1}/Particles") +my_filter1 = add_filter("HDRFilter_SeeNoEvil1", f"HLT_PASS('{turbo_line1}')") +mytuple1 = Funtuple( + "TDirectoryName1", + "TTreeName1", + fields=fields1, + variables=variables, + inputs=input_data1) + +# If running over several sprucing lines (e.g. for calibration) one can define multiple instances of FunTuple +turbo_line2 = "Hlt2BsToJpsiPhi_JPsi2ee_PhiToKK_Line" +input_data2 = force_location(f"/Event/HLT2/{turbo_line2}/Particles") +my_filter2 = add_filter("HDRFilter_SeeNoEvil2", f"HLT_PASS('{turbo_line2}')") +mytuple2 = Funtuple( + "TDirectoryName2", + "TTreeName2", + fields=fields2, + variables=variables, + inputs=input_data2) + + +def main(): + #Define tools (no tools used here) + tools = [] + + #Define dictionary of algorithms: "algorithm sequence name" -> list of algorithms run sequentially + algs = {"Alg1": [my_filter1, mytuple1], "Alg2": [my_filter2, mytuple2]} + + #Return them + return algs, tools diff --git a/DaVinciTutorials/tests/qmtest/test_tutorial0_basic_DVjob.qmt b/DaVinciTutorials/tests/qmtest/test_tutorial0_basic_DVjob.qmt new file mode 100644 index 000000000..9b2d9f3f2 --- /dev/null +++ b/DaVinciTutorials/tests/qmtest/test_tutorial0_basic_DVjob.qmt @@ -0,0 +1,45 @@ +<?xml version="1.0" ?> +<!-- +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +--> +<!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> +<!-- +####################################################### +# SUMMARY OF THIS TEST +# ................... +# Author: Abhijit Mathad +# Purpose: Test tutorial0_basic_DVjob of DV Tutorial +# Prerequisites: None +# inputfiledb bs2jpsiphi_turbo $DAVINCITUTORIALSROOT/python/dataprops.yaml +# joboptfile $DAVINCITUTORIALSROOT/python/jobopts.yaml +# user_algorithms $DAVINCITUTORIALSROOT/python/tutorial0_basic_DVjob:main +####################################################### +--> +<extension class="GaudiTest.GaudiExeTest" kind="test"> + <argument name="program"><text>davinci</text></argument> + <argument name="args"><set> + <text>--inputfiledb</text> + <text>bs2jpsiphi_turbo</text> + <text>$DAVINCITUTORIALSROOT/python/dataprops.yaml</text> + <text>--joboptfile</text> + <text>$DAVINCITUTORIALSROOT/python/jobopts.yaml</text> + <text>--user_algorithms</text> + <text>$DAVINCITUTORIALSROOT/python/tutorial0_basic_DVjob:main</text> + </set></argument> + <argument name="reference"><text>../refs/test_tutorial0_basic_DVjob.ref</text></argument> + <argument name="error_reference"><text>../refs/empty.ref</text></argument> + <argument name="validator"><text> +from DaVinciTests.QMTest.DaVinciExclusions import preprocessor +validateWithReference(preproc = preprocessor) +countErrorLines({"FATAL":0, "ERROR":0}) + </text></argument> +</extension> \ No newline at end of file diff --git a/DaVinciTutorials/tests/qmtest/test_tutorial1_functors_specialfield.qmt b/DaVinciTutorials/tests/qmtest/test_tutorial1_functors_specialfield.qmt new file mode 100644 index 000000000..69d917044 --- /dev/null +++ b/DaVinciTutorials/tests/qmtest/test_tutorial1_functors_specialfield.qmt @@ -0,0 +1,61 @@ +<?xml version="1.0" ?> +<!-- +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +--> +<!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> +<!-- +####################################################### +# SUMMARY OF THIS TEST +# ................... +# Author: Abhijit Mathad +# Purpose: Test tutorial1_functors_specialfield of DV Tutorial +# Prerequisites: None +# inputfiledb bs2jpsiphi_turbo $DAVINCITUTORIALSROOT/python/dataprops.yaml +# joboptfile $DAVINCITUTORIALSROOT/python/jobopts.yaml +# user_algorithms $DAVINCITUTORIALSROOT/python/tutorial1_functors_specialfield:main +####################################################### +--> +<extension class="GaudiTest.GaudiExeTest" kind="test"> + <argument name="program"><text>davinci</text></argument> + <argument name="args"><set> + <text>--inputfiledb</text> + <text>bs2jpsiphi_turbo</text> + <text>$DAVINCITUTORIALSROOT/python/dataprops.yaml</text> + <text>--joboptfile</text> + <text>$DAVINCITUTORIALSROOT/python/jobopts.yaml</text> + <text>--user_algorithms</text> + <text>$DAVINCITUTORIALSROOT/python/tutorial1_functors_specialfield:main</text> + </set></argument> + <argument name="reference"><text>../refs/test_tutorial1_Functors_specialfield.ref</text></argument> + <argument name="error_reference"><text>../refs/empty.ref</text></argument> + <argument name="validator"><text> +from DaVinciTests.QMTest.DaVinciExclusions import preprocessor +validateWithReference(preproc = preprocessor) + +import os +from ROOT import TFile +ntuple = './tutorial1_functors_specialfield.root' +#this file should be disabled +ntuple_new = './tutorial1_Functors_specialfield_new.root' +if not os.path.isfile(ntuple): raise Exception(f"File: {ntuple} does not exist!") +f = TFile.Open(ntuple) +t_B = f.Get('TDirectoryName/TTreeName') +b_names= [b.GetName() for b in t_B.GetListOfLeaves()] +if not b_names: raise Exception(f"File: {ntuple} does not contain any branches. Please check.") +f.Close() +print('Test successfully completed!') +os.system(f"rm {ntuple}") +os.system(f"rm {ntuple_new}") + +countErrorLines({"FATAL":0, "ERROR":0}) + </text></argument> +</extension> \ No newline at end of file diff --git a/DaVinciTutorials/tests/qmtest/test_tutorial2_LoKi.qmt b/DaVinciTutorials/tests/qmtest/test_tutorial2_LoKi.qmt new file mode 100644 index 000000000..3e4ea1103 --- /dev/null +++ b/DaVinciTutorials/tests/qmtest/test_tutorial2_LoKi.qmt @@ -0,0 +1,61 @@ +<?xml version="1.0" ?> +<!-- +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +--> +<!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> +<!-- +####################################################### +# SUMMARY OF THIS TEST +# ................... +# Author: Abhijit Mathad +# Purpose: Test tutorial2_LoKi of DV Tutorial +# Prerequisites: None +# inputfiledb bs2jpsiphi_turbo $DAVINCITUTORIALSROOT/python/dataprops.yaml +# joboptfile $DAVINCITUTORIALSROOT/python/jobopts.yaml +# user_algorithms $DAVINCITUTORIALSROOT/python/tutorial2_LoKi:main +####################################################### +--> +<extension class="GaudiTest.GaudiExeTest" kind="test"> + <argument name="program"><text>davinci</text></argument> + <argument name="args"><set> + <text>--inputfiledb</text> + <text>bs2jpsiphi_turbo</text> + <text>$DAVINCITUTORIALSROOT/python/dataprops.yaml</text> + <text>--joboptfile</text> + <text>$DAVINCITUTORIALSROOT/python/jobopts.yaml</text> + <text>--user_algorithms</text> + <text>$DAVINCITUTORIALSROOT/python/tutorial2_LoKi:main</text> + </set></argument> + <argument name="reference"><text>../refs/test_tutorial2_LoKi.ref</text></argument> + <argument name="error_reference"><text>../refs/empty.ref</text></argument> + <argument name="validator"><text> +from DaVinciTests.QMTest.DaVinciExclusions import preprocessor +validateWithReference(preproc = preprocessor) + +import os +from ROOT import TFile +ntuple = './tutorial2_LoKi.root' +#this file should be disabled +ntuple_new = './tutorial2_LoKi_new.root' +if not os.path.isfile(ntuple): raise Exception(f"File: {ntuple} does not exist!") +f = TFile.Open(ntuple) +t_B = f.Get('TDirectoryName/TTreeName') +b_names= [b.GetName() for b in t_B.GetListOfLeaves()] +if not b_names: raise Exception(f"File: {ntuple} does not contain any branches. Please check.") +f.Close() +print('Test successfully completed!') +os.system(f"rm {ntuple}") +os.system(f"rm {ntuple_new}") + +countErrorLines({"FATAL":0, "ERROR":0}) + </text></argument> +</extension> \ No newline at end of file diff --git a/DaVinciTutorials/tests/qmtest/test_tutorial3_ThOrfunctors.qmt b/DaVinciTutorials/tests/qmtest/test_tutorial3_ThOrfunctors.qmt new file mode 100644 index 000000000..5d120bad6 --- /dev/null +++ b/DaVinciTutorials/tests/qmtest/test_tutorial3_ThOrfunctors.qmt @@ -0,0 +1,61 @@ +<?xml version="1.0" ?> +<!-- +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +--> +<!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> +<!-- +####################################################### +# SUMMARY OF THIS TEST +# ................... +# Author: Abhijit Mathad +# Purpose: Test tutorial3_ThOrfunctors of DV Tutorial +# Prerequisites: None +# inputfiledb bs2jpsiphi_turbo $DAVINCITUTORIALSROOT/python/dataprops.yaml +# joboptfile $DAVINCITUTORIALSROOT/python/jobopts.yaml +# user_algorithms $DAVINCITUTORIALSROOT/python/tutorial3_ThOrfunctors:main +####################################################### +--> +<extension class="GaudiTest.GaudiExeTest" kind="test"> + <argument name="program"><text>davinci</text></argument> + <argument name="args"><set> + <text>--inputfiledb</text> + <text>bs2jpsiphi_turbo</text> + <text>$DAVINCITUTORIALSROOT/python/dataprops.yaml</text> + <text>--joboptfile</text> + <text>$DAVINCITUTORIALSROOT/python/jobopts.yaml</text> + <text>--user_algorithms</text> + <text>$DAVINCITUTORIALSROOT/python/tutorial3_ThOrfunctors:main</text> + </set></argument> + <argument name="reference"><text>../refs/test_tutorial3_ThOrfunctors.ref</text></argument> + <argument name="error_reference"><text>../refs/empty.ref</text></argument> + <argument name="validator"><text> +from DaVinciTests.QMTest.DaVinciExclusions import preprocessor +validateWithReference(preproc = preprocessor) + +import os +from ROOT import TFile +ntuple = './tutorial3_ThOrfunctors.root' +#this file should be disabled +ntuple_new = './tutorial3_ThOrfunctors_new.root' +if not os.path.isfile(ntuple): raise Exception(f"File: {ntuple} does not exist!") +f = TFile.Open(ntuple) +t_B = f.Get('TDirectoryName/TTreeName') +b_names= [b.GetName() for b in t_B.GetListOfLeaves()] +if not b_names: raise Exception(f"File: {ntuple} does not contain any branches. Please check.") +f.Close() +print('Test successfully completed!') +os.system(f"rm {ntuple}") +os.system(f"rm {ntuple_new}") + +countErrorLines({"FATAL":0, "ERROR":0}) + </text></argument> +</extension> \ No newline at end of file diff --git a/DaVinciTutorials/tests/qmtest/test_tutorial4_trigger_eventinfo.qmt b/DaVinciTutorials/tests/qmtest/test_tutorial4_trigger_eventinfo.qmt new file mode 100644 index 000000000..e9068dad8 --- /dev/null +++ b/DaVinciTutorials/tests/qmtest/test_tutorial4_trigger_eventinfo.qmt @@ -0,0 +1,62 @@ +<?xml version="1.0" ?> +<!-- +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +--> +<!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> +<!-- +####################################################### +# SUMMARY OF THIS TEST +# ................... +# Author: Abhijit Mathad +# Purpose: Test tutorial4_trigger_eventinfo of DV Tutorial +# Prerequisites: None +# inputfiledb bs2jpsiphi_turbo $DAVINCITUTORIALSROOT/python/dataprops.yaml +# joboptfile $DAVINCITUTORIALSROOT/python/jobopts.yaml +# user_algorithms $DAVINCITUTORIALSROOT/python/tutorial4_trigger_eventinfo:main +####################################################### +--> +<extension class="GaudiTest.GaudiExeTest" kind="test"> + <argument name="program"><text>davinci</text></argument> + <argument name="args"><set> + <text>--inputfiledb</text> + <text>bs2jpsiphi_turbo</text> + <text>$DAVINCITUTORIALSROOT/python/dataprops.yaml</text> + <text>--joboptfile</text> + <text>$DAVINCITUTORIALSROOT/python/jobopts.yaml</text> + <text>--user_algorithms</text> + <text>$DAVINCITUTORIALSROOT/python/tutorial4_trigger_eventinfo:main</text> + </set></argument> + <argument name="reference"><text>../refs/test_tutorial4_trigger_eventinfo.ref</text></argument> + <argument name="error_reference"><text>../refs/empty.ref</text></argument> + <argument name="validator"><text> +from DaVinciTests.QMTest.DaVinciExclusions import preprocessor +##validator complains about long TTreeNames so comment out(see https://gitlab.cern.ch/lhcb/DaVinci/-/issues/46) +#validateWithReference(preproc = preprocessor) + +import os +from ROOT import TFile +ntuple = './tutorial4_trigger_eventinfo.root' +#this file should be disabled +ntuple_new = './tutorial4_trigger_eventinfo_new.root' +if not os.path.isfile(ntuple): raise Exception(f"File: {ntuple} does not exist!") +f = TFile.Open(ntuple) +t_B = f.Get('TDirectoryName/TTreeName') +b_names= [b.GetName() for b in t_B.GetListOfLeaves()] +if not b_names: raise Exception(f"File: {ntuple} does not contain any branches. Please check.") +f.Close() +print('Test successfully completed!') +os.system(f"rm {ntuple}") +os.system(f"rm {ntuple_new}") + +countErrorLines({"FATAL":0, "ERROR":0}) + </text></argument> +</extension> \ No newline at end of file diff --git a/DaVinciTutorials/tests/qmtest/test_tutorial5_MCTruth.qmt b/DaVinciTutorials/tests/qmtest/test_tutorial5_MCTruth.qmt new file mode 100644 index 000000000..af2e7c9c3 --- /dev/null +++ b/DaVinciTutorials/tests/qmtest/test_tutorial5_MCTruth.qmt @@ -0,0 +1,61 @@ +<?xml version="1.0" ?> +<!-- +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +--> +<!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> +<!-- +####################################################### +# SUMMARY OF THIS TEST +# ................... +# Author: Abhijit Mathad +# Purpose: Test tutorial5_MCTruth of DV Tutorial +# Prerequisites: None +# inputfiledb bs2jpsiphi_turbo $DAVINCITUTORIALSROOT/python/dataprops.yaml +# joboptfile $DAVINCITUTORIALSROOT/python/jobopts.yaml +# user_algorithms $DAVINCITUTORIALSROOT/python/tutorial5_MCTruth:main +####################################################### +--> +<extension class="GaudiTest.GaudiExeTest" kind="test"> + <argument name="program"><text>davinci</text></argument> + <argument name="args"><set> + <text>--inputfiledb</text> + <text>bs2jpsiphi_turbo</text> + <text>$DAVINCITUTORIALSROOT/python/dataprops.yaml</text> + <text>--joboptfile</text> + <text>$DAVINCITUTORIALSROOT/python/jobopts.yaml</text> + <text>--user_algorithms</text> + <text>$DAVINCITUTORIALSROOT/python/tutorial5_MCTruth:main</text> + </set></argument> + <argument name="reference"><text>../refs/test_tutorial5_MCTruth.ref</text></argument> + <argument name="error_reference"><text>../refs/empty.ref</text></argument> + <argument name="validator"><text> +from DaVinciTests.QMTest.DaVinciExclusions import preprocessor +validateWithReference(preproc = preprocessor) + +import os +from ROOT import TFile +ntuple = './tutorial5_MCTruth.root' +#this file should be disabled +ntuple_new = './tutorial5_MCTruth.root' +if not os.path.isfile(ntuple): raise Exception(f"File: {ntuple} does not exist!") +f = TFile.Open(ntuple) +t_B = f.Get('TDirectoryName/TTreeName') +b_names= [b.GetName() for b in t_B.GetListOfLeaves()] +if not b_names: raise Exception(f"File: {ntuple} does not contain any branches. Please check.") +f.Close() +print('Test successfully completed!') +os.system(f"rm {ntuple}") +os.system(f"rm {ntuple_new}") + +countErrorLines({"FATAL":0, "ERROR":0}) + </text></argument> +</extension> \ No newline at end of file diff --git a/DaVinciTutorials/tests/qmtest/test_tutorial6_DecayTreeFit.qmt b/DaVinciTutorials/tests/qmtest/test_tutorial6_DecayTreeFit.qmt new file mode 100644 index 000000000..0ee70d2bf --- /dev/null +++ b/DaVinciTutorials/tests/qmtest/test_tutorial6_DecayTreeFit.qmt @@ -0,0 +1,62 @@ +<?xml version="1.0" ?> +<!-- +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +--> +<!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> +<!-- +####################################################### +# SUMMARY OF THIS TEST +# ................... +# Author: Abhijit Mathad +# Purpose: Test tutorial6_DecayTreeFit of DV Tutorial +# Prerequisites: None +# inputfiledb bs2jpsiphi_turbo $DAVINCITUTORIALSROOT/python/dataprops.yaml +# joboptfile $DAVINCITUTORIALSROOT/python/jobopts.yaml +# user_algorithms $DAVINCITUTORIALSROOT/python/tutorial6_DecayTreeFit:main +####################################################### +--> +<extension class="GaudiTest.GaudiExeTest" kind="test"> + <argument name="program"><text>davinci</text></argument> + <argument name="args"><set> + <text>--inputfiledb</text> + <text>bs2jpsiphi_turbo</text> + <text>$DAVINCITUTORIALSROOT/python/dataprops.yaml</text> + <text>--joboptfile</text> + <text>$DAVINCITUTORIALSROOT/python/jobopts.yaml</text> + <text>--user_algorithms</text> + <text>$DAVINCITUTORIALSROOT/python/tutorial6_DecayTreeFit:main</text> + </set></argument> + <argument name="reference"><text>../refs/test_tutorial6_DecayTreeFit.ref</text></argument> + <argument name="error_reference"><text>../refs/empty.ref</text></argument> + <argument name="validator"><text> +from DaVinciTests.QMTest.DaVinciExclusions import preprocessor +validateWithReference(preproc = preprocessor) + + +import os +from ROOT import TFile +ntuple = './tutorial6_DecayTreeFit.root' +#this file should be disabled +ntuple_new = './tutorial6_DecayTreeFit_new.root' +if not os.path.isfile(ntuple): raise Exception(f"File: {ntuple} does not exist!") +f = TFile.Open(ntuple) +t_B = f.Get('TDirectoryName/TTreeName') +b_names= [b.GetName() for b in t_B.GetListOfLeaves()] +if not b_names: raise Exception(f"File: {ntuple} does not contain any branches. Please check.") +f.Close() +print('Test successfully completed!') +os.system(f"rm {ntuple}") +os.system(f"rm {ntuple_new}") + +countErrorLines({"FATAL":0, "ERROR":0}) + </text></argument> +</extension> \ No newline at end of file diff --git a/DaVinciTutorials/tests/qmtest/test_tutorial7_multiple_sel_lines.qmt b/DaVinciTutorials/tests/qmtest/test_tutorial7_multiple_sel_lines.qmt new file mode 100644 index 000000000..d81313ac2 --- /dev/null +++ b/DaVinciTutorials/tests/qmtest/test_tutorial7_multiple_sel_lines.qmt @@ -0,0 +1,64 @@ +<?xml version="1.0" ?> +<!-- +############################################################################### +# (c) Copyright 2021-2022 CERN for the benefit of the LHCb Collaboration # +# # +# This software is distributed under the terms of the GNU General Public # +# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING". # +# # +# In applying this licence, CERN does not waive the privileges and immunities # +# granted to it by virtue of its status as an Intergovernmental Organization # +# or submit itself to any jurisdiction. # +############################################################################### +--> +<!DOCTYPE extension PUBLIC '-//QM/2.3/Extension//EN' 'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'> +<!-- +####################################################### +# SUMMARY OF THIS TEST +# ................... +# Author: Abhijit Mathad +# Purpose: Test tutorial7_multiple_sel_lines of DV Tutorial +# Prerequisites: None +# inputfiledb bs2jpsiphi_turbo $DAVINCITUTORIALSROOT/python/dataprops.yaml +# joboptfile $DAVINCITUTORIALSROOT/python/jobopts.yaml +# user_algorithms $DAVINCITUTORIALSROOT/python/tutorial7_multiple_sel_lines:main +####################################################### +--> +<extension class="GaudiTest.GaudiExeTest" kind="test"> + <argument name="program"><text>davinci</text></argument> + <argument name="args"><set> + <text>--inputfiledb</text> + <text>bs2jpsiphi_turbo</text> + <text>$DAVINCITUTORIALSROOT/python/dataprops.yaml</text> + <text>--joboptfile</text> + <text>$DAVINCITUTORIALSROOT/python/jobopts.yaml</text> + <text>--user_algorithms</text> + <text>$DAVINCITUTORIALSROOT/python/tutorial7_multiple_sel_lines:main</text> + </set></argument> + <argument name="reference"><text>../refs/test_tutorial7_multiple_sel_lines.ref</text></argument> + <argument name="error_reference"><text>../refs/empty.ref</text></argument> + <argument name="validator"><text> +from DaVinciTests.QMTest.DaVinciExclusions import preprocessor +validateWithReference(preproc = preprocessor) + +import os +from ROOT import TFile +ntuple = './tutorial7_multiple_sel_lines.root' +#this file should be disabled +ntuple_new = './tutorial7_multiple_sel_lines_new.root' +if not os.path.isfile(ntuple): raise Exception(f"File: {ntuple} does not exist!") +f = TFile.Open(ntuple) +t_B_1 = f.Get('TDirectoryName1/TTreeName1') +t_B_2 = f.Get('TDirectoryName2/TTreeName2') +b_names_1= [b.GetName() for b in t_B_1.GetListOfLeaves()] +b_names_2= [b.GetName() for b in t_B_2.GetListOfLeaves()] +if not b_names_1: raise Exception(f"File: {ntuple} does not contain any branches. Please check.") +if not b_names_2: raise Exception(f"File: {ntuple} does not contain any branches. Please check.") +f.Close() +print('Test successfully completed!') +os.system(f"rm {ntuple}") +os.system(f"rm {ntuple_new}") + +countErrorLines({"FATAL":0, "ERROR":0}) + </text></argument> +</extension> \ No newline at end of file diff --git a/DaVinciTutorials/tests/refs/empty.ref b/DaVinciTutorials/tests/refs/empty.ref new file mode 100644 index 000000000..e69de29bb diff --git a/DaVinciTutorials/tests/refs/test_tutorial0_basic_DVjob.ref b/DaVinciTutorials/tests/refs/test_tutorial0_basic_DVjob.ref new file mode 100644 index 000000000..23e7831bb --- /dev/null +++ b/DaVinciTutorials/tests/refs/test_tutorial0_basic_DVjob.ref @@ -0,0 +1,819 @@ +INFO User algorithm tutorial0_basic_DVjob.main imported successfully! +ApplicationMgr SUCCESS +==================================================================================================================================== +==================================================================================================================================== +ApplicationMgr INFO Application Manager Configured successfully +DetectorPersistencySvc INFO Added successfully Conversion service:XmlCnvSvc +DetectorDataSvc SUCCESS Detector description database: git:/lhcb.xml +FSROutputStreamDstWriter INFO Data source: EventDataSvc output: SVC='Gaudi::RootCnvSvc' +EventClockSvc.FakeEventTime INFO Event times generated from 0 with steps of 0 +ApplicationMgr INFO Application Manager Initialized successfully +DeFTDetector INFO Current FT geometry version = 64 +ApplicationMgr INFO Application Manager Started successfully +EventPersistencySvc INFO Added successfully Conversion service:RootCnvSvc +EventSelector SUCCESS Reading Event record 1. Record number within stream 1: 1 +EventSelector SUCCESS Reading Event record 2. Record number within stream 1: 2 +EventSelector SUCCESS Reading Event record 3. Record number within stream 1: 3 +EventSelector SUCCESS Reading Event record 4. Record number within stream 1: 4 +EventSelector SUCCESS Reading Event record 5. Record number within stream 1: 5 +EventSelector SUCCESS Reading Event record 6. Record number within stream 1: 6 +EventSelector SUCCESS Reading Event record 7. Record number within stream 1: 7 +EventSelector SUCCESS Reading Event record 8. Record number within stream 1: 8 +EventSelector SUCCESS Reading Event record 9. Record number within stream 1: 9 +EventSelector SUCCESS Reading Event record 10. Record number within stream 1: 10 +EventSelector SUCCESS Reading Event record 11. Record number within stream 1: 11 +EventSelector SUCCESS Reading Event record 12. Record number within stream 1: 12 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 47016.99 5337.13 46713.09 1204.28 1217.55 86.66 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 23180.36 3023.61 22982.32 1621.99 195.38 86.69 1/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 5753.29 105.66 5752.32 1672.27 -72.41 86.78 2/103 3/103 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 17426.96 105.66 17426.64 440.09 1747.04 83.51 2/82 3/82 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 23836.89 1002.91 23815.78 1428.97 2535.73 78.43 4/3 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 10103.57 493.68 10091.50 623.47 2600.43 85.15 5/35 3/35 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 13733.31 493.68 13724.43 807.56 2485.93 85.89 5/34 3/34 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 46983.53 5325.34 46680.75 1173.90 1195.79 86.75 0/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 23180.36 3023.61 22982.32 1621.99 195.38 86.69 1/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 5753.29 105.66 5752.32 1672.27 -72.41 86.78 2/103 3/103 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 17426.96 105.66 17426.64 440.09 1747.04 83.51 2/82 3/82 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 23803.20 1002.61 23782.08 1395.98 2551.49 71.01 4/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 10103.57 493.68 10091.50 623.47 2600.43 85.15 5/35 3/35 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 13699.62 493.68 13690.72 773.59 2512.43 87.13 5/121 3/121 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 47016.99 5337.13 46713.09 1204.28 1217.55 86.66 0/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 23180.36 3023.61 22982.32 1621.99 195.38 86.69 1/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 5753.29 105.66 5752.32 1672.27 -72.41 86.78 2/103 3/103 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 17426.96 105.66 17426.64 440.09 1747.04 83.51 2/82 3/82 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 23836.89 1002.91 23815.78 1428.97 2535.73 78.43 4/8 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 13733.31 493.68 13724.43 807.56 2485.93 85.89 5/34 3/34 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 10103.57 493.68 10091.50 623.47 2600.43 85.15 5/35 3/35 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 46983.53 5325.34 46680.75 1173.90 1195.79 86.75 0/3 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 23180.36 3023.61 22982.32 1621.99 195.38 86.69 1/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 5753.29 105.66 5752.32 1672.27 -72.41 86.78 2/103 3/103 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 17426.96 105.66 17426.64 440.09 1747.04 83.51 2/82 3/82 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 23803.20 1002.61 23782.08 1395.98 2551.49 71.01 4/11 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 13699.62 493.68 13690.72 773.59 2512.43 87.13 5/121 3/121 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 10103.57 493.68 10091.50 623.47 2600.43 85.15 5/35 3/35 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 13. Record number within stream 1: 13 +EventSelector SUCCESS Reading Event record 14. Record number within stream 1: 14 +EventSelector SUCCESS Reading Event record 15. Record number within stream 1: 15 +EventSelector SUCCESS Reading Event record 16. Record number within stream 1: 16 +EventSelector SUCCESS Reading Event record 17. Record number within stream 1: 17 +EventSelector SUCCESS Reading Event record 18. Record number within stream 1: 18 +EventSelector SUCCESS Reading Event record 19. Record number within stream 1: 19 +EventSelector SUCCESS Reading Event record 20. Record number within stream 1: 20 +EventSelector SUCCESS Reading Event record 21. Record number within stream 1: 21 +EventSelector SUCCESS Reading Event record 22. Record number within stream 1: 22 +EventSelector SUCCESS Reading Event record 23. Record number within stream 1: 23 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 74804.95 5519.62 74601.03 2673.04 326.26 72.37 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 49185.22 2957.03 49096.25 3276.23 -65.58 73.26 1/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 11299.10 105.66 11298.61 1291.09 1137.78 72.64 2/57 3/57 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 37885.91 105.66 37885.77 3059.73 -470.33 72.37 2/50 3/50 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 25613.70 1026.48 25593.12 1299.31 2171.62 111.18 4/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 9309.97 493.68 9296.88 467.79 2178.11 71.25 5/10 3/10 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 16303.73 493.68 16296.25 831.54 2167.98 71.79 5/25 3/25 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 74833.36 5522.66 74629.30 2670.90 326.41 72.55 0/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 49185.22 2957.03 49096.25 3276.23 -65.58 73.26 1/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 11299.10 105.66 11298.61 1291.09 1137.78 72.64 2/57 3/57 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 37885.91 105.66 37885.77 3059.73 -470.33 72.37 2/50 3/50 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 25641.90 1026.17 25621.36 1297.66 2171.73 54.48 4/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 9331.83 493.68 9318.76 475.55 2169.48 71.60 5/21 3/21 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 16310.06 493.68 16302.59 822.37 2173.57 71.25 5/12 3/12 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 74833.36 5522.66 74629.30 2670.90 326.41 72.55 0/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 49185.22 2957.03 49096.25 3276.23 -65.58 73.26 1/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 11299.10 105.66 11298.61 1291.09 1137.78 72.64 2/57 3/57 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 37885.91 105.66 37885.77 3059.73 -470.33 72.37 2/50 3/50 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 25641.90 1026.17 25621.36 1297.66 2171.73 54.48 4/5 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 16310.06 493.68 16302.59 822.37 2173.57 71.25 5/12 3/12 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 9331.83 493.68 9318.76 475.55 2169.48 71.60 5/21 3/21 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 74804.95 5519.62 74601.03 2673.04 326.26 72.37 0/3 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 49185.22 2957.03 49096.25 3276.23 -65.58 73.26 1/6 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 37885.91 105.66 37885.77 3059.73 -470.33 72.37 2/50 3/50 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 11299.10 105.66 11298.61 1291.09 1137.78 72.64 2/57 3/57 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 25613.70 1026.48 25593.12 1299.31 2171.62 111.18 4/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 9309.97 493.68 9296.88 467.79 2178.11 71.25 5/10 3/10 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 16303.73 493.68 16296.25 831.54 2167.98 71.79 5/25 3/25 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 74833.36 5522.66 74629.30 2670.90 326.41 72.55 0/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 49185.22 2957.03 49096.25 3276.23 -65.58 73.26 1/6 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 37885.91 105.66 37885.77 3059.73 -470.33 72.37 2/50 3/50 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 11299.10 105.66 11298.61 1291.09 1137.78 72.64 2/57 3/57 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 25641.90 1026.17 25621.36 1297.66 2171.73 54.48 4/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 9331.83 493.68 9318.76 475.55 2169.48 71.60 5/21 3/21 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 16310.06 493.68 16302.59 822.37 2173.57 71.25 5/12 3/12 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 74833.36 5522.66 74629.30 2670.90 326.41 72.55 0/5 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 49185.22 2957.03 49096.25 3276.23 -65.58 73.26 1/6 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 37885.91 105.66 37885.77 3059.73 -470.33 72.37 2/50 3/50 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 11299.10 105.66 11298.61 1291.09 1137.78 72.64 2/57 3/57 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 25641.90 1026.17 25621.36 1297.66 2171.73 54.48 4/5 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 16310.06 493.68 16302.59 822.37 2173.57 71.25 5/12 3/12 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 9331.83 493.68 9318.76 475.55 2169.48 71.60 5/21 3/21 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 24. Record number within stream 1: 24 +EventSelector SUCCESS Reading Event record 25. Record number within stream 1: 25 +EventSelector SUCCESS Reading Event record 26. Record number within stream 1: 26 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 46713.33 5352.44 46405.67 582.01 444.29 76.15 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 21085.52 2999.03 20871.15 1034.23 -2714.47 76.02 1/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 14067.11 105.66 14066.71 758.09 931.42 75.20 2/43 3/43 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 7018.24 105.66 7017.45 1737.02 -2502.13 76.29 2/103 3/103 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 25627.59 1018.24 25607.35 1616.69 433.62 75.89 4/3 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 11435.65 493.68 11424.99 628.85 340.63 75.78 5/22 3/22 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 14191.96 493.68 14183.37 991.52 493.83 76.31 5/107 3/107 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 46713.33 5352.44 46405.67 582.01 444.29 76.15 0/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 21085.52 2999.03 20871.15 1034.23 -2714.47 76.02 1/8 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 7018.24 105.66 7017.45 1737.02 -2502.13 76.29 2/103 3/103 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 14067.11 105.66 14066.71 758.09 931.42 75.20 2/43 3/43 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 25627.59 1018.24 25607.35 1616.69 433.62 75.89 4/3 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 11435.65 493.68 11424.99 628.85 340.63 75.78 5/22 3/22 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 14191.96 493.68 14183.37 991.52 493.83 76.31 5/107 3/107 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 27. Record number within stream 1: 27 +EventSelector SUCCESS Reading Event record 28. Record number within stream 1: 28 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 77826.26 5454.85 77634.86 1029.19 1650.44 16.08 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 67598.28 3246.75 67520.26 941.20 460.64 16.11 1/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 4807.96 105.66 4806.80 810.57 -1292.41 16.07 2/19 3/19 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 62808.94 105.66 62808.85 1347.36 1094.33 13.65 2/49 3/49 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 10229.30 1042.10 10176.08 1107.30 2560.64 15.65 4/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 5589.89 493.68 5568.05 681.15 2779.40 15.91 5/15 3/15 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 4639.42 493.68 4613.08 465.98 2238.21 15.71 5/53 3/53 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 29. Record number within stream 1: 29 +EventSelector SUCCESS Reading Event record 30. Record number within stream 1: 30 +EventSelector SUCCESS Reading Event record 31. Record number within stream 1: 31 +EventSelector SUCCESS Reading Event record 32. Record number within stream 1: 32 +EventSelector SUCCESS Reading Event record 33. Record number within stream 1: 33 +EventSelector SUCCESS Reading Event record 34. Record number within stream 1: 34 +EventSelector SUCCESS Reading Event record 35. Record number within stream 1: 35 +EventSelector SUCCESS Reading Event record 36. Record number within stream 1: 36 +EventSelector SUCCESS Reading Event record 37. Record number within stream 1: 37 +EventSelector SUCCESS Reading Event record 38. Record number within stream 1: 38 +EventSelector SUCCESS Reading Event record 39. Record number within stream 1: 39 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 103214.30 5213.68 103082.54 1477.39 -1682.24 103.60 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 84185.38 3234.85 84123.21 2052.30 -2159.47 103.58 1/7 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 2935.11 105.66 2933.21 542.40 2023.80 103.38 2/59 3/59 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 81239.89 105.66 81239.82 2372.10 -1960.68 103.77 2/46 3/46 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 19030.82 1042.74 19002.23 1004.40 240.56 99.20 4/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 12447.73 493.68 12437.94 667.37 310.08 104.06 5/21 3/21 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 6583.10 493.68 6564.56 341.71 104.55 104.85 5/33 3/33 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 40. Record number within stream 1: 40 +EventSelector SUCCESS Reading Event record 41. Record number within stream 1: 41 +EventSelector SUCCESS Reading Event record 42. Record number within stream 1: 42 +EventSelector SUCCESS Reading Event record 43. Record number within stream 1: 43 +EventSelector SUCCESS Reading Event record 44. Record number within stream 1: 44 +EventSelector SUCCESS Reading Event record 45. Record number within stream 1: 45 +EventSelector SUCCESS Reading Event record 46. Record number within stream 1: 46 +EventSelector SUCCESS Reading Event record 47. Record number within stream 1: 47 +EventSelector SUCCESS Reading Event record 48. Record number within stream 1: 48 +EventSelector SUCCESS Reading Event record 49. Record number within stream 1: 49 +EventSelector SUCCESS Reading Event record 50. Record number within stream 1: 50 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 66787.21 5228.22 66582.26 1195.86 1724.02 -61.60 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 54976.10 2959.16 54896.40 1004.17 342.03 -61.89 1/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 41798.62 105.66 41798.49 1473.78 1365.04 -61.52 2/14 3/14 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 13177.21 105.66 13176.79 1280.08 -1043.30 -61.28 2/31 3/31 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 11811.11 998.13 11768.86 1407.81 2499.68 -61.11 4/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 5576.65 493.68 5554.75 623.84 2416.10 -61.99 5/39 3/39 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 6234.44 493.68 6214.87 787.92 2565.77 -62.32 5/55 3/55 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 51. Record number within stream 1: 51 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 119962.31 5108.10 119853.51 2589.99 -1476.55 -97.79 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 102728.92 2909.48 102687.71 1351.13 -1813.27 -98.11 1/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 3301.99 105.66 3300.30 467.50 2044.49 -98.05 2/91 3/91 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 99428.97 105.66 99428.91 1731.12 -1634.93 -99.64 2/96 3/96 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 17197.84 1026.25 17167.19 1385.75 -1151.30 -99.95 4/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 7445.46 493.68 7429.07 551.43 -1345.92 -97.43 5/23 3/23 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 9752.39 493.68 9739.88 851.40 -1025.69 -97.65 5/30 3/30 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 119962.31 5108.10 119853.51 2589.99 -1476.55 -97.79 0/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 102728.92 2909.48 102687.71 1351.13 -1813.27 -98.11 1/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 3301.99 105.66 3300.30 467.50 2044.49 -98.05 2/91 3/91 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 99428.97 105.66 99428.91 1731.12 -1634.93 -99.64 2/96 3/96 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 17197.84 1026.25 17167.19 1385.75 -1151.30 -99.95 4/7 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 9752.39 493.68 9739.88 851.40 -1025.69 -97.65 5/30 3/30 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 7445.46 493.68 7429.07 551.43 -1345.92 -97.43 5/23 3/23 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 81325.12 5468.01 81141.09 1305.45 -2935.49 -97.71 0/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 64126.42 3071.60 64052.81 2095.90 2645.55 -98.15 1/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 24150.27 105.66 24150.04 2136.68 3128.36 -98.52 2/35 3/35 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 39976.15 105.66 39976.01 1012.63 1277.05 -97.16 2/26 3/26 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 17197.84 1026.25 17167.19 1385.75 -1151.30 -99.95 4/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 7445.46 493.68 7429.07 551.43 -1345.92 -97.43 5/23 3/23 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 9752.39 493.68 9739.88 851.40 -1025.69 -97.65 5/30 3/30 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 81325.12 5468.01 81141.09 1305.45 -2935.49 -97.71 0/3 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 64126.42 3071.60 64052.81 2095.90 2645.55 -98.15 1/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 24150.27 105.66 24150.04 2136.68 3128.36 -98.52 2/35 3/35 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 39976.15 105.66 39976.01 1012.63 1277.05 -97.16 2/26 3/26 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 17197.84 1026.25 17167.19 1385.75 -1151.30 -99.95 4/7 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 9752.39 493.68 9739.88 851.40 -1025.69 -97.65 5/30 3/30 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 7445.46 493.68 7429.07 551.43 -1345.92 -97.43 5/23 3/23 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 43982.94 5452.10 43643.71 3068.55 -269.37 -113.79 0/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 21127.30 3159.56 20889.71 2540.14 112.54 -114.53 1/10 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 6955.82 105.66 6955.02 2294.07 99.40 -113.24 2/146 3/146 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 14171.56 105.66 14171.17 248.47 244.22 -87.10 2/87 3/87 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 22855.79 1045.10 22831.89 1191.62 -1208.60 -790.34 4/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 15154.09 493.68 15146.05 797.82 -1226.46 -113.23 5/6 3/6 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 7701.68 493.68 7685.84 390.19 -1175.46 -103.66 5/16 3/16 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 52. Record number within stream 1: 52 +EventSelector SUCCESS Reading Event record 53. Record number within stream 1: 53 +EventSelector SUCCESS Reading Event record 54. Record number within stream 1: 54 +EventSelector SUCCESS Reading Event record 55. Record number within stream 1: 55 +EventSelector SUCCESS Reading Event record 56. Record number within stream 1: 56 +EventSelector SUCCESS Reading Event record 57. Record number within stream 1: 57 +EventSelector SUCCESS Reading Event record 58. Record number within stream 1: 58 +EventSelector SUCCESS Reading Event record 59. Record number within stream 1: 59 +EventSelector SUCCESS Reading Event record 60. Record number within stream 1: 60 +EventSelector SUCCESS Reading Event record 61. Record number within stream 1: 61 +EventSelector SUCCESS Reading Event record 62. Record number within stream 1: 62 +EventSelector SUCCESS Reading Event record 63. Record number within stream 1: 63 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 73893.41 5296.01 73703.38 4256.19 -600.01 51.17 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 45279.82 3129.11 45171.57 1224.93 -282.88 50.93 1/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 16475.56 105.66 16475.22 1610.84 902.60 50.91 2/42 3/42 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 28803.55 105.66 28803.35 1614.68 -1462.23 50.33 2/58 3/58 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 28611.71 1012.90 28593.78 3113.96 -722.25 45.55 4/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 16306.61 493.68 16299.13 1748.92 -770.01 50.92 5/43 3/43 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 12305.29 493.68 12295.38 1369.65 -661.27 51.21 5/33 3/33 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 73893.41 5296.01 73703.38 4256.19 -600.01 51.17 0/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 45279.82 3129.11 45171.57 1224.93 -282.88 50.93 1/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 16475.56 105.66 16475.22 1610.84 902.60 50.91 2/42 3/42 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 28803.55 105.66 28803.35 1614.68 -1462.23 50.33 2/58 3/58 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 28611.71 1012.90 28593.78 3113.96 -722.25 45.55 4/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 12305.29 493.68 12295.38 1369.65 -661.27 51.21 5/33 3/33 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 16306.61 493.68 16299.13 1748.92 -770.01 50.92 5/43 3/43 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 64. Record number within stream 1: 64 +EventSelector SUCCESS Reading Event record 65. Record number within stream 1: 65 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 89821.25 5562.31 89648.86 3176.95 1847.62 -54.59 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 74175.16 3112.19 74109.84 3719.35 2121.20 -54.74 1/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 45237.28 105.66 45237.16 781.39 1915.79 -54.43 2/52 3/52 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 28940.87 105.66 28940.68 2958.60 2176.72 -54.48 2/27 3/27 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 15648.73 1006.06 15616.36 1080.24 -109.93 -65.30 4/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 6961.49 493.68 6943.96 437.80 -255.02 -53.49 5/14 3/14 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 8687.24 493.68 8673.20 650.36 -12.75 -56.33 5/114 3/114 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 89821.25 5562.31 89648.86 3176.95 1847.62 -54.59 0/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 74175.16 3112.19 74109.84 3719.35 2121.20 -54.74 1/3 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 28940.87 105.66 28940.68 2958.60 2176.72 -54.48 2/27 3/27 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 45237.28 105.66 45237.16 781.39 1915.79 -54.43 2/52 3/52 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 15648.73 1006.06 15616.36 1080.24 -109.93 -65.30 4/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 6961.49 493.68 6943.96 437.80 -255.02 -53.49 5/14 3/14 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 8687.24 493.68 8673.20 650.36 -12.75 -56.33 5/114 3/114 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 73330.25 5477.67 73125.38 2368.44 2137.53 -54.68 0/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 57678.39 3159.02 57591.82 3157.87 2408.88 -54.80 1/6 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 30440.75 105.66 30440.57 514.50 -2644.59 -56.72 2/117 3/117 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 27240.37 105.66 27240.16 3024.47 2246.68 -54.64 2/30 3/30 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 15648.73 1006.06 15616.36 1080.24 -109.93 -65.30 4/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 6961.49 493.68 6943.96 437.80 -255.02 -53.49 5/14 3/14 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 8687.24 493.68 8673.20 650.36 -12.75 -56.33 5/114 3/114 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 66. Record number within stream 1: 66 +EventSelector SUCCESS Reading Event record 67. Record number within stream 1: 67 +EventSelector SUCCESS Reading Event record 68. Record number within stream 1: 68 +EventSelector SUCCESS Reading Event record 69. Record number within stream 1: 69 +EventSelector SUCCESS Reading Event record 70. Record number within stream 1: 70 +EventSelector SUCCESS Reading Event record 71. Record number within stream 1: 71 +EventSelector SUCCESS Reading Event record 72. Record number within stream 1: 72 +EventSelector SUCCESS Reading Event record 73. Record number within stream 1: 73 +EventSelector SUCCESS Reading Event record 74. Record number within stream 1: 74 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 34663.27 5582.92 34210.72 2482.07 -35.64 30.26 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 25596.92 2905.84 25431.45 3561.02 66.67 28.88 1/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 14885.69 105.66 14885.31 3489.21 49.80 30.13 2/46 3/46 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 10711.25 105.66 10710.73 94.14 760.53 66.71 2/64 3/64 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 9065.19 1018.04 9007.84 1116.04 -2843.35 32.31 4/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 5490.62 493.68 5468.38 737.18 -2852.54 30.62 5/25 3/25 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 3574.57 493.68 3540.31 378.90 -2826.20 30.27 5/15 3/15 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 75. Record number within stream 1: 75 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 88056.24 5392.43 87890.97 1004.48 1663.55 25.85 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 40067.28 2922.12 39960.59 1865.27 1272.43 24.19 1/3 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 8407.40 105.66 8406.74 1565.53 1415.25 24.76 2/49 3/49 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 31659.70 105.66 31659.53 386.16 658.36 29.38 2/79 3/79 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 47990.52 1006.19 47979.97 1015.60 -2274.71 -84.15 4/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 28606.85 493.68 28602.59 606.44 -2286.83 46.24 5/39 3/39 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 19384.57 493.68 19378.29 408.05 -2254.80 38.63 5/45 3/45 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 85138.78 5334.66 84971.49 2853.30 -2868.05 59.76 0/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 37151.34 3160.58 37016.66 2086.45 3130.70 59.46 1/4 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 26132.89 105.66 26132.68 314.87 -1798.73 45.66 2/81 3/81 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 11015.86 105.66 11015.35 2041.51 2976.06 59.08 2/41 3/41 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 47990.52 1006.19 47979.97 1015.60 -2274.71 -84.15 4/2 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 28606.85 493.68 28602.59 606.44 -2286.83 46.24 5/39 3/39 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 19384.57 493.68 19378.29 408.05 -2254.80 38.63 5/45 3/45 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 76. Record number within stream 1: 76 +EventSelector SUCCESS Reading Event record 77. Record number within stream 1: 77 +EventSelector SUCCESS Reading Event record 78. Record number within stream 1: 78 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 108058.80 5502.97 107918.59 781.87 -1859.96 -37.39 0/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 94603.60 2975.31 94556.80 1742.32 -2193.60 -38.62 1/0 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 18631.39 105.66 18631.09 1388.68 -3001.04 -37.15 2/6 3/6 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 75978.09 105.66 75978.01 1267.53 -1283.57 -44.85 2/55 3/55 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 13425.67 1040.12 13385.32 1030.82 704.47 -37.29 4/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 5548.09 493.68 5526.08 295.95 820.19 -37.55 5/25 3/25 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 7877.59 493.68 7862.10 737.66 658.25 -37.45 5/21 3/21 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO <-------------------------------------------- Particle --------------------------------------------> +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Name E M P Pt phi Vz P(C/K) PP(C/K) +PrintBsToJpsiPhi.PrintDecayTreeTool INFO MeV MeV MeV MeV mrad mm +PrintBsToJpsiPhi.PrintDecayTreeTool INFO B_s0 91311.58 5120.24 91167.91 1172.94 -817.41 -37.33 0/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->J/psi(1S) 77872.93 2957.93 77816.73 1523.25 -1561.43 -37.43 1/3 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu+ 1885.04 105.66 1882.08 461.10 -2432.19 -37.25 2/77 3/77 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO |+-->mu- 75978.09 105.66 75978.01 1267.53 -1283.57 -44.85 2/55 3/55 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->phi(1020) 13425.67 1040.12 13385.32 1030.82 704.47 -37.29 4/1 N/A +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K+ 5548.09 493.68 5526.08 295.95 820.19 -37.55 5/25 3/25 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +-->K- 7877.59 493.68 7862.10 737.66 658.25 -37.45 5/21 3/21 +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +PrintBsToJpsiPhi.PrintDecayTreeTool INFO Used TES locations :- +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 5 = '/Event/HLT2/FunctionalParticleMaker#5/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 2 = '/Event/HLT2/FunctionalParticleMaker#6/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 0 = '/Event/HLT2/Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_Line/Particles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 1 = '/Event/HLT2/MassConstrJpsi2MuMuMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 4 = '/Event/HLT2/Phi2KKMaker/OutputParticles' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO 3 = '/Event/HLT2/Rec/ProtoP/Charged' +PrintBsToJpsiPhi.PrintDecayTreeTool INFO +EventSelector SUCCESS Reading Event record 79. Record number within stream 1: 79 +EventSelector SUCCESS Reading Event record 80. Record number within stream 1: 80 +EventSelector SUCCESS Reading Event record 81. Record number within stream 1: 81 +EventSelector SUCCESS Reading Event record 82. Record number within stream 1: 82 +EventSelector SUCCESS Reading Event record 83. Record number within stream 1: 83 +EventSelector SUCCESS Reading Event record 84. Record number within stream 1: 84 +EventSelector SUCCESS Reading Event record 85. Record number within stream 1: 85 +EventSelector SUCCESS Reading Event record 86. Record number within stream 1: 86 +EventSelector SUCCESS Reading Event record 87. Record number within stream 1: 87 +EventSelector SUCCESS Reading Event record 88. Record number within stream 1: 88 +EventSelector SUCCESS Reading Event record 89. Record number within stream 1: 89 +EventSelector SUCCESS Reading Event record 90. Record number within stream 1: 90 +EventSelector SUCCESS Reading Event record 91. Record number within stream 1: 91 +EventSelector SUCCESS Reading Event record 92. Record number within stream 1: 92 +EventSelector SUCCESS Reading Event record 93. Record number within stream 1: 93 +EventSelector SUCCESS Reading Event record 94. Record number within stream 1: 94 +EventSelector SUCCESS Reading Event record 95. Record number within stream 1: 95 +EventSelector SUCCESS Reading Event record 96. Record number within stream 1: 96 +EventSelector SUCCESS Reading Event record 97. Record number within stream 1: 97 +EventSelector SUCCESS Reading Event record 98. Record number within stream 1: 98 +EventSelector SUCCESS Reading Event record 99. Record number within stream 1: 99 +EventSelector SUCCESS Reading Event record 100. Record number within stream 1: 100 +ApplicationMgr INFO Application Manager Stopped successfully +FSROutputStreamDstWriter INFO Set up File Summary Record +FSROutputStreamDstWriter INFO Events output: 1 +LAZY_AND: DaVinci #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + NONLAZY_OR: FileSummaryRecords #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: GenFSR #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecordStream/FSROutputStreamDstWriter #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + NONLAZY_OR: UserAnalysis #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LAZY_AND: Alg #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LoKi__HDRFilter/HDRFilter_SeeNoEvil #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + PrintDecayTree/PrintBsToJpsiPhi #=12 Sum=12 Eff=|( 100.0000 +- 0.00000 )%| +ToolSvc INFO Removing all tools created by ToolSvc +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +HDRFilter_SeeNoEvil INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"#passed" | 100 | 12 |( 12.00000 +- 3.249615)% | +PrintBsToJpsiPhi INFO Number of counters : 2 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "Candidates" | 12 | 30 | 2.5000 | 1.6073 | 1.0000 | 6.0000 | + | "Events" | 12 | +ToolSvc.HltFactory INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# loaded from PYTHON" | 1 | diff --git a/DaVinciTutorials/tests/refs/test_tutorial1_Functors_specialfield.ref b/DaVinciTutorials/tests/refs/test_tutorial1_Functors_specialfield.ref new file mode 100644 index 000000000..23ed4dcb0 --- /dev/null +++ b/DaVinciTutorials/tests/refs/test_tutorial1_Functors_specialfield.ref @@ -0,0 +1,275 @@ +Functors::chain( ::Functors::Common::Rho_Coordinate{}, ::Functors::Track::ThreeMomentum{} ) +( RHO_COORDINATE @ THREEMOMENTUM ) +INFO User algorithm tutorial1_functors_specialfield.main imported successfully! +ApplicationMgr SUCCESS +==================================================================================================================================== +==================================================================================================================================== +ApplicationMgr INFO Application Manager Configured successfully +DetectorPersistencySvc INFO Added successfully Conversion service:XmlCnvSvc +DetectorDataSvc SUCCESS Detector description database: git:/lhcb.xml +NTupleSvc INFO Added stream file:tutorial1_functors_specialfield.root as FILE1 +RootHistSvc INFO Writing ROOT histograms to: tutorial1_functors_specialfield.root +HistogramPersistencySvc INFO Added successfully Conversion service:RootHistSvc +FSROutputStreamDstWriter INFO Data source: EventDataSvc output: SVC='Gaudi::RootCnvSvc' +EventClockSvc.FakeEventTime INFO Event times generated from 0 with steps of 0 +ApplicationMgr INFO Application Manager Initialized successfully +DeFTDetector INFO Current FT geometry version = 64 +ApplicationMgr INFO Application Manager Started successfully +EventPersistencySvc INFO Added successfully Conversion service:RootCnvSvc +EventSelector SUCCESS Reading Event record 1. Record number within stream 1: 1 +EventSelector SUCCESS Reading Event record 2. Record number within stream 1: 2 +EventSelector SUCCESS Reading Event record 3. Record number within stream 1: 3 +EventSelector SUCCESS Reading Event record 4. Record number within stream 1: 4 +EventSelector SUCCESS Reading Event record 5. Record number within stream 1: 5 +EventSelector SUCCESS Reading Event record 6. Record number within stream 1: 6 +EventSelector SUCCESS Reading Event record 7. Record number within stream 1: 7 +EventSelector SUCCESS Reading Event record 8. Record number within stream 1: 8 +EventSelector SUCCESS Reading Event record 9. Record number within stream 1: 9 +EventSelector SUCCESS Reading Event record 10. Record number within stream 1: 10 +EventSelector SUCCESS Reading Event record 11. Record number within stream 1: 11 +EventSelector SUCCESS Reading Event record 12. Record number within stream 1: 12 +RFileCnv INFO opening Root file "tutorial1_functors_specialfield.root" for writing +RCWNTupleCnv INFO Booked TTree with ID: TTreeName "TTreeName" in directory tutorial1_functors_specialfield.root:/TDirectoryName +EventSelector SUCCESS Reading Event record 13. Record number within stream 1: 13 +EventSelector SUCCESS Reading Event record 14. Record number within stream 1: 14 +EventSelector SUCCESS Reading Event record 15. Record number within stream 1: 15 +EventSelector SUCCESS Reading Event record 16. Record number within stream 1: 16 +EventSelector SUCCESS Reading Event record 17. Record number within stream 1: 17 +EventSelector SUCCESS Reading Event record 18. Record number within stream 1: 18 +EventSelector SUCCESS Reading Event record 19. Record number within stream 1: 19 +EventSelector SUCCESS Reading Event record 20. Record number within stream 1: 20 +EventSelector SUCCESS Reading Event record 21. Record number within stream 1: 21 +EventSelector SUCCESS Reading Event record 22. Record number within stream 1: 22 +EventSelector SUCCESS Reading Event record 23. Record number within stream 1: 23 +EventSelector SUCCESS Reading Event record 24. Record number within stream 1: 24 +EventSelector SUCCESS Reading Event record 25. Record number within stream 1: 25 +EventSelector SUCCESS Reading Event record 26. Record number within stream 1: 26 +EventSelector SUCCESS Reading Event record 27. Record number within stream 1: 27 +EventSelector SUCCESS Reading Event record 28. Record number within stream 1: 28 +EventSelector SUCCESS Reading Event record 29. Record number within stream 1: 29 +EventSelector SUCCESS Reading Event record 30. Record number within stream 1: 30 +EventSelector SUCCESS Reading Event record 31. Record number within stream 1: 31 +EventSelector SUCCESS Reading Event record 32. Record number within stream 1: 32 +EventSelector SUCCESS Reading Event record 33. Record number within stream 1: 33 +EventSelector SUCCESS Reading Event record 34. Record number within stream 1: 34 +EventSelector SUCCESS Reading Event record 35. Record number within stream 1: 35 +EventSelector SUCCESS Reading Event record 36. Record number within stream 1: 36 +EventSelector SUCCESS Reading Event record 37. Record number within stream 1: 37 +EventSelector SUCCESS Reading Event record 38. Record number within stream 1: 38 +EventSelector SUCCESS Reading Event record 39. Record number within stream 1: 39 +EventSelector SUCCESS Reading Event record 40. Record number within stream 1: 40 +EventSelector SUCCESS Reading Event record 41. Record number within stream 1: 41 +EventSelector SUCCESS Reading Event record 42. Record number within stream 1: 42 +EventSelector SUCCESS Reading Event record 43. Record number within stream 1: 43 +EventSelector SUCCESS Reading Event record 44. Record number within stream 1: 44 +EventSelector SUCCESS Reading Event record 45. Record number within stream 1: 45 +EventSelector SUCCESS Reading Event record 46. Record number within stream 1: 46 +EventSelector SUCCESS Reading Event record 47. Record number within stream 1: 47 +EventSelector SUCCESS Reading Event record 48. Record number within stream 1: 48 +EventSelector SUCCESS Reading Event record 49. Record number within stream 1: 49 +EventSelector SUCCESS Reading Event record 50. Record number within stream 1: 50 +EventSelector SUCCESS Reading Event record 51. Record number within stream 1: 51 +EventSelector SUCCESS Reading Event record 52. Record number within stream 1: 52 +EventSelector SUCCESS Reading Event record 53. Record number within stream 1: 53 +EventSelector SUCCESS Reading Event record 54. Record number within stream 1: 54 +EventSelector SUCCESS Reading Event record 55. Record number within stream 1: 55 +EventSelector SUCCESS Reading Event record 56. Record number within stream 1: 56 +EventSelector SUCCESS Reading Event record 57. Record number within stream 1: 57 +EventSelector SUCCESS Reading Event record 58. Record number within stream 1: 58 +EventSelector SUCCESS Reading Event record 59. Record number within stream 1: 59 +EventSelector SUCCESS Reading Event record 60. Record number within stream 1: 60 +EventSelector SUCCESS Reading Event record 61. Record number within stream 1: 61 +EventSelector SUCCESS Reading Event record 62. Record number within stream 1: 62 +EventSelector SUCCESS Reading Event record 63. Record number within stream 1: 63 +EventSelector SUCCESS Reading Event record 64. Record number within stream 1: 64 +EventSelector SUCCESS Reading Event record 65. Record number within stream 1: 65 +EventSelector SUCCESS Reading Event record 66. Record number within stream 1: 66 +EventSelector SUCCESS Reading Event record 67. Record number within stream 1: 67 +EventSelector SUCCESS Reading Event record 68. Record number within stream 1: 68 +EventSelector SUCCESS Reading Event record 69. Record number within stream 1: 69 +EventSelector SUCCESS Reading Event record 70. Record number within stream 1: 70 +EventSelector SUCCESS Reading Event record 71. Record number within stream 1: 71 +EventSelector SUCCESS Reading Event record 72. Record number within stream 1: 72 +EventSelector SUCCESS Reading Event record 73. Record number within stream 1: 73 +EventSelector SUCCESS Reading Event record 74. Record number within stream 1: 74 +EventSelector SUCCESS Reading Event record 75. Record number within stream 1: 75 +EventSelector SUCCESS Reading Event record 76. Record number within stream 1: 76 +EventSelector SUCCESS Reading Event record 77. Record number within stream 1: 77 +EventSelector SUCCESS Reading Event record 78. Record number within stream 1: 78 +EventSelector SUCCESS Reading Event record 79. Record number within stream 1: 79 +EventSelector SUCCESS Reading Event record 80. Record number within stream 1: 80 +EventSelector SUCCESS Reading Event record 81. Record number within stream 1: 81 +EventSelector SUCCESS Reading Event record 82. Record number within stream 1: 82 +EventSelector SUCCESS Reading Event record 83. Record number within stream 1: 83 +EventSelector SUCCESS Reading Event record 84. Record number within stream 1: 84 +EventSelector SUCCESS Reading Event record 85. Record number within stream 1: 85 +EventSelector SUCCESS Reading Event record 86. Record number within stream 1: 86 +EventSelector SUCCESS Reading Event record 87. Record number within stream 1: 87 +EventSelector SUCCESS Reading Event record 88. Record number within stream 1: 88 +EventSelector SUCCESS Reading Event record 89. Record number within stream 1: 89 +EventSelector SUCCESS Reading Event record 90. Record number within stream 1: 90 +EventSelector SUCCESS Reading Event record 91. Record number within stream 1: 91 +EventSelector SUCCESS Reading Event record 92. Record number within stream 1: 92 +EventSelector SUCCESS Reading Event record 93. Record number within stream 1: 93 +EventSelector SUCCESS Reading Event record 94. Record number within stream 1: 94 +EventSelector SUCCESS Reading Event record 95. Record number within stream 1: 95 +EventSelector SUCCESS Reading Event record 96. Record number within stream 1: 96 +EventSelector SUCCESS Reading Event record 97. Record number within stream 1: 97 +EventSelector SUCCESS Reading Event record 98. Record number within stream 1: 98 +EventSelector SUCCESS Reading Event record 99. Record number within stream 1: 99 +EventSelector SUCCESS Reading Event record 100. Record number within stream 1: 100 +ApplicationMgr INFO Application Manager Stopped successfully +FSROutputStreamDstWriter INFO Set up File Summary Record +FSROutputStreamDstWriter INFO Events output: 1 +TDirectoryName SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections +TDirectoryName SUCCESS List of booked N-Tuples in directory "FILE1/TDirectoryName" +TDirectoryName SUCCESS ID=TTreeName Title="TTreeName" #items=20 {Bs_PT_THOR,Bs_PX,Bs_PY,Bs_THOR_P,Bs_ID,Jpsi_PT_THOR,Jpsi_PX,Jpsi_PY,Jpsi_THOR_P,J} +LAZY_AND: DaVinci #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + NONLAZY_OR: FileSummaryRecords #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: GenFSR #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecordStream/FSROutputStreamDstWriter #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + NONLAZY_OR: UserAnalysis #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LAZY_AND: Alg #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LoKi__HDRFilter/HDRFilter_SeeNoEvil #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + FunTupleBase_Particles/TDirectoryName #=12 Sum=12 Eff=|( 100.0000 +- 0.00000 )%| +ToolSvc INFO Removing all tools created by ToolSvc +RFileCnv INFO dumping contents of /NTUPLES/FILE1 +TFile: name=tutorial1_functors_specialfield.root, title=Gaudi Trees, option=CREATE +NTupleSvc INFO NTuples saved successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +HDRFilter_SeeNoEvil INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"#passed" | 100 | 12 |( 12.00000 +- 3.249615)% | +TDirectoryName INFO Number of counters : 15 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# events with multiple candidates for field Bs"| 8 | + | "# events with multiple candidates for field Jpsi"| 8 | + | "# events with multiple candidates for field Km"| 8 | + | "# events with multiple candidates for field Kp"| 8 | + | "# events with multiple candidates for field Mum"| 8 | + | "# events with multiple candidates for field Mup"| 8 | + | "# events with multiple candidates for field Phi"| 8 | + | "# non-empty events for field Bs" | 12 | + | "# non-empty events for field Jpsi" | 12 | + | "# non-empty events for field Km" | 12 | + | "# non-empty events for field Kp" | 12 | + | "# non-empty events for field Mum" | 12 | + | "# non-empty events for field Mup" | 12 | + | "# non-empty events for field Phi" | 12 | + | "# processed events" | 12 | +ToolSvc.HltFactory INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# loaded from PYTHON" | 1 | diff --git a/DaVinciTutorials/tests/refs/test_tutorial2_LoKi.ref b/DaVinciTutorials/tests/refs/test_tutorial2_LoKi.ref new file mode 100644 index 000000000..e7dbe01cc --- /dev/null +++ b/DaVinciTutorials/tests/refs/test_tutorial2_LoKi.ref @@ -0,0 +1,276 @@ +INFO User algorithm tutorial2_LoKi.main imported successfully! +ApplicationMgr SUCCESS +==================================================================================================================================== +==================================================================================================================================== +ApplicationMgr INFO Application Manager Configured successfully +DetectorPersistencySvc INFO Added successfully Conversion service:XmlCnvSvc +DetectorDataSvc SUCCESS Detector description database: git:/lhcb.xml +NTupleSvc INFO Added stream file:tutorial2_LoKi.root as FILE1 +RootHistSvc INFO Writing ROOT histograms to: tutorial2_LoKi.root +HistogramPersistencySvc INFO Added successfully Conversion service:RootHistSvc +FSROutputStreamDstWriter INFO Data source: EventDataSvc output: SVC='Gaudi::RootCnvSvc' +EventClockSvc.FakeEventTime INFO Event times generated from 0 with steps of 0 +ApplicationMgr INFO Application Manager Initialized successfully +DeFTDetector INFO Current FT geometry version = 64 +ApplicationMgr INFO Application Manager Started successfully +EventPersistencySvc INFO Added successfully Conversion service:RootCnvSvc +EventSelector SUCCESS Reading Event record 1. Record number within stream 1: 1 +EventSelector SUCCESS Reading Event record 2. Record number within stream 1: 2 +EventSelector SUCCESS Reading Event record 3. Record number within stream 1: 3 +EventSelector SUCCESS Reading Event record 4. Record number within stream 1: 4 +EventSelector SUCCESS Reading Event record 5. Record number within stream 1: 5 +EventSelector SUCCESS Reading Event record 6. Record number within stream 1: 6 +EventSelector SUCCESS Reading Event record 7. Record number within stream 1: 7 +EventSelector SUCCESS Reading Event record 8. Record number within stream 1: 8 +EventSelector SUCCESS Reading Event record 9. Record number within stream 1: 9 +EventSelector SUCCESS Reading Event record 10. Record number within stream 1: 10 +EventSelector SUCCESS Reading Event record 11. Record number within stream 1: 11 +EventSelector SUCCESS Reading Event record 12. Record number within stream 1: 12 +RFileCnv INFO opening Root file "tutorial2_LoKi.root" for writing +RCWNTupleCnv INFO Booked TTree with ID: TTreeName "TTreeName" in directory tutorial2_LoKi.root:/TDirectoryName +EventSelector SUCCESS Reading Event record 13. Record number within stream 1: 13 +EventSelector SUCCESS Reading Event record 14. Record number within stream 1: 14 +EventSelector SUCCESS Reading Event record 15. Record number within stream 1: 15 +EventSelector SUCCESS Reading Event record 16. Record number within stream 1: 16 +EventSelector SUCCESS Reading Event record 17. Record number within stream 1: 17 +EventSelector SUCCESS Reading Event record 18. Record number within stream 1: 18 +EventSelector SUCCESS Reading Event record 19. Record number within stream 1: 19 +EventSelector SUCCESS Reading Event record 20. Record number within stream 1: 20 +EventSelector SUCCESS Reading Event record 21. Record number within stream 1: 21 +EventSelector SUCCESS Reading Event record 22. Record number within stream 1: 22 +EventSelector SUCCESS Reading Event record 23. Record number within stream 1: 23 +EventSelector SUCCESS Reading Event record 24. Record number within stream 1: 24 +EventSelector SUCCESS Reading Event record 25. Record number within stream 1: 25 +EventSelector SUCCESS Reading Event record 26. Record number within stream 1: 26 +EventSelector SUCCESS Reading Event record 27. Record number within stream 1: 27 +EventSelector SUCCESS Reading Event record 28. Record number within stream 1: 28 +EventSelector SUCCESS Reading Event record 29. Record number within stream 1: 29 +EventSelector SUCCESS Reading Event record 30. Record number within stream 1: 30 +EventSelector SUCCESS Reading Event record 31. Record number within stream 1: 31 +EventSelector SUCCESS Reading Event record 32. Record number within stream 1: 32 +EventSelector SUCCESS Reading Event record 33. Record number within stream 1: 33 +EventSelector SUCCESS Reading Event record 34. Record number within stream 1: 34 +EventSelector SUCCESS Reading Event record 35. Record number within stream 1: 35 +EventSelector SUCCESS Reading Event record 36. Record number within stream 1: 36 +EventSelector SUCCESS Reading Event record 37. Record number within stream 1: 37 +EventSelector SUCCESS Reading Event record 38. Record number within stream 1: 38 +EventSelector SUCCESS Reading Event record 39. Record number within stream 1: 39 +EventSelector SUCCESS Reading Event record 40. Record number within stream 1: 40 +EventSelector SUCCESS Reading Event record 41. Record number within stream 1: 41 +EventSelector SUCCESS Reading Event record 42. Record number within stream 1: 42 +EventSelector SUCCESS Reading Event record 43. Record number within stream 1: 43 +EventSelector SUCCESS Reading Event record 44. Record number within stream 1: 44 +EventSelector SUCCESS Reading Event record 45. Record number within stream 1: 45 +EventSelector SUCCESS Reading Event record 46. Record number within stream 1: 46 +EventSelector SUCCESS Reading Event record 47. Record number within stream 1: 47 +EventSelector SUCCESS Reading Event record 48. Record number within stream 1: 48 +EventSelector SUCCESS Reading Event record 49. Record number within stream 1: 49 +EventSelector SUCCESS Reading Event record 50. Record number within stream 1: 50 +EventSelector SUCCESS Reading Event record 51. Record number within stream 1: 51 +EventSelector SUCCESS Reading Event record 52. Record number within stream 1: 52 +EventSelector SUCCESS Reading Event record 53. Record number within stream 1: 53 +EventSelector SUCCESS Reading Event record 54. Record number within stream 1: 54 +EventSelector SUCCESS Reading Event record 55. Record number within stream 1: 55 +EventSelector SUCCESS Reading Event record 56. Record number within stream 1: 56 +EventSelector SUCCESS Reading Event record 57. Record number within stream 1: 57 +EventSelector SUCCESS Reading Event record 58. Record number within stream 1: 58 +EventSelector SUCCESS Reading Event record 59. Record number within stream 1: 59 +EventSelector SUCCESS Reading Event record 60. Record number within stream 1: 60 +EventSelector SUCCESS Reading Event record 61. Record number within stream 1: 61 +EventSelector SUCCESS Reading Event record 62. Record number within stream 1: 62 +EventSelector SUCCESS Reading Event record 63. Record number within stream 1: 63 +EventSelector SUCCESS Reading Event record 64. Record number within stream 1: 64 +EventSelector SUCCESS Reading Event record 65. Record number within stream 1: 65 +EventSelector SUCCESS Reading Event record 66. Record number within stream 1: 66 +EventSelector SUCCESS Reading Event record 67. Record number within stream 1: 67 +EventSelector SUCCESS Reading Event record 68. Record number within stream 1: 68 +EventSelector SUCCESS Reading Event record 69. Record number within stream 1: 69 +EventSelector SUCCESS Reading Event record 70. Record number within stream 1: 70 +EventSelector SUCCESS Reading Event record 71. Record number within stream 1: 71 +EventSelector SUCCESS Reading Event record 72. Record number within stream 1: 72 +EventSelector SUCCESS Reading Event record 73. Record number within stream 1: 73 +EventSelector SUCCESS Reading Event record 74. Record number within stream 1: 74 +EventSelector SUCCESS Reading Event record 75. Record number within stream 1: 75 +EventSelector SUCCESS Reading Event record 76. Record number within stream 1: 76 +EventSelector SUCCESS Reading Event record 77. Record number within stream 1: 77 +EventSelector SUCCESS Reading Event record 78. Record number within stream 1: 78 +EventSelector SUCCESS Reading Event record 79. Record number within stream 1: 79 +EventSelector SUCCESS Reading Event record 80. Record number within stream 1: 80 +EventSelector SUCCESS Reading Event record 81. Record number within stream 1: 81 +EventSelector SUCCESS Reading Event record 82. Record number within stream 1: 82 +EventSelector SUCCESS Reading Event record 83. Record number within stream 1: 83 +EventSelector SUCCESS Reading Event record 84. Record number within stream 1: 84 +EventSelector SUCCESS Reading Event record 85. Record number within stream 1: 85 +EventSelector SUCCESS Reading Event record 86. Record number within stream 1: 86 +EventSelector SUCCESS Reading Event record 87. Record number within stream 1: 87 +EventSelector SUCCESS Reading Event record 88. Record number within stream 1: 88 +EventSelector SUCCESS Reading Event record 89. Record number within stream 1: 89 +EventSelector SUCCESS Reading Event record 90. Record number within stream 1: 90 +EventSelector SUCCESS Reading Event record 91. Record number within stream 1: 91 +EventSelector SUCCESS Reading Event record 92. Record number within stream 1: 92 +EventSelector SUCCESS Reading Event record 93. Record number within stream 1: 93 +EventSelector SUCCESS Reading Event record 94. Record number within stream 1: 94 +EventSelector SUCCESS Reading Event record 95. Record number within stream 1: 95 +EventSelector SUCCESS Reading Event record 96. Record number within stream 1: 96 +EventSelector SUCCESS Reading Event record 97. Record number within stream 1: 97 +EventSelector SUCCESS Reading Event record 98. Record number within stream 1: 98 +EventSelector SUCCESS Reading Event record 99. Record number within stream 1: 99 +EventSelector SUCCESS Reading Event record 100. Record number within stream 1: 100 +ApplicationMgr INFO Application Manager Stopped successfully +FSROutputStreamDstWriter INFO Set up File Summary Record +FSROutputStreamDstWriter INFO Events output: 1 +TDirectoryName SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections +TDirectoryName SUCCESS List of booked N-Tuples in directory "FILE1/TDirectoryName" +TDirectoryName SUCCESS ID=TTreeName Title="TTreeName" #items=48 {Bs_MAX_PT_LOKI,Bs_LOKI_PT,Bs_LOKI_PX,Bs_LOKI_PY,Bs_MAX_PT_THOR,Bs_THOR_PT,Bs_THOR} +LAZY_AND: DaVinci #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + NONLAZY_OR: FileSummaryRecords #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: GenFSR #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecordStream/FSROutputStreamDstWriter #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + NONLAZY_OR: UserAnalysis #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LAZY_AND: Alg #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LoKi__HDRFilter/HDRFilter_SeeNoEvil #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + FunTupleBase_Particles/TDirectoryName #=12 Sum=12 Eff=|( 100.0000 +- 0.00000 )%| +ToolSvc INFO Removing all tools created by ToolSvc +RFileCnv INFO dumping contents of /NTUPLES/FILE1 +TFile: name=tutorial2_LoKi.root, title=Gaudi Trees, option=CREATE +NTupleSvc INFO NTuples saved successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +HDRFilter_SeeNoEvil INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"#passed" | 100 | 12 |( 12.00000 +- 3.249615)% | +TDirectoryName INFO Number of counters : 15 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# events with multiple candidates for field Bs"| 8 | + | "# events with multiple candidates for field Jpsi"| 8 | + | "# events with multiple candidates for field Km"| 8 | + | "# events with multiple candidates for field Kp"| 8 | + | "# events with multiple candidates for field Mum"| 8 | + | "# events with multiple candidates for field Mup"| 8 | + | "# events with multiple candidates for field Phi"| 8 | + | "# non-empty events for field Bs" | 12 | + | "# non-empty events for field Jpsi" | 12 | + | "# non-empty events for field Km" | 12 | + | "# non-empty events for field Kp" | 12 | + | "# non-empty events for field Mum" | 12 | + | "# non-empty events for field Mup" | 12 | + | "# non-empty events for field Phi" | 12 | + | "# processed events" | 12 | +ToolSvc.HltFactory INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# loaded from PYTHON" | 1 | +ToolSvc.HybridFactory INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# loaded from PYTHON" | 24 | diff --git a/DaVinciTutorials/tests/refs/test_tutorial3_ThOrfunctors.ref b/DaVinciTutorials/tests/refs/test_tutorial3_ThOrfunctors.ref new file mode 100644 index 000000000..0842b92e9 --- /dev/null +++ b/DaVinciTutorials/tests/refs/test_tutorial3_ThOrfunctors.ref @@ -0,0 +1,267 @@ +INFO User algorithm tutorial3_ThOrfunctors.main imported successfully! +ApplicationMgr SUCCESS +==================================================================================================================================== +==================================================================================================================================== +ApplicationMgr INFO Application Manager Configured successfully +DetectorPersistencySvc INFO Added successfully Conversion service:XmlCnvSvc +DetectorDataSvc SUCCESS Detector description database: git:/lhcb.xml +NTupleSvc INFO Added stream file:tutorial3_ThOrfunctors.root as FILE1 +RootHistSvc INFO Writing ROOT histograms to: tutorial3_ThOrfunctors.root +HistogramPersistencySvc INFO Added successfully Conversion service:RootHistSvc +FSROutputStreamDstWriter INFO Data source: EventDataSvc output: SVC='Gaudi::RootCnvSvc' +EventClockSvc.FakeEventTime INFO Event times generated from 0 with steps of 0 +ApplicationMgr INFO Application Manager Initialized successfully +DeFTDetector INFO Current FT geometry version = 64 +ApplicationMgr INFO Application Manager Started successfully +EventPersistencySvc INFO Added successfully Conversion service:RootCnvSvc +EventSelector SUCCESS Reading Event record 1. Record number within stream 1: 1 +EventSelector SUCCESS Reading Event record 2. Record number within stream 1: 2 +EventSelector SUCCESS Reading Event record 3. Record number within stream 1: 3 +EventSelector SUCCESS Reading Event record 4. Record number within stream 1: 4 +EventSelector SUCCESS Reading Event record 5. Record number within stream 1: 5 +EventSelector SUCCESS Reading Event record 6. Record number within stream 1: 6 +EventSelector SUCCESS Reading Event record 7. Record number within stream 1: 7 +EventSelector SUCCESS Reading Event record 8. Record number within stream 1: 8 +EventSelector SUCCESS Reading Event record 9. Record number within stream 1: 9 +EventSelector SUCCESS Reading Event record 10. Record number within stream 1: 10 +EventSelector SUCCESS Reading Event record 11. Record number within stream 1: 11 +EventSelector SUCCESS Reading Event record 12. Record number within stream 1: 12 +RFileCnv INFO opening Root file "tutorial3_ThOrfunctors.root" for writing +RCWNTupleCnv INFO Booked TTree with ID: TTreeName "TTreeName" in directory tutorial3_ThOrfunctors.root:/TDirectoryName +EventSelector SUCCESS Reading Event record 13. Record number within stream 1: 13 +EventSelector SUCCESS Reading Event record 14. Record number within stream 1: 14 +EventSelector SUCCESS Reading Event record 15. Record number within stream 1: 15 +EventSelector SUCCESS Reading Event record 16. Record number within stream 1: 16 +EventSelector SUCCESS Reading Event record 17. Record number within stream 1: 17 +EventSelector SUCCESS Reading Event record 18. Record number within stream 1: 18 +EventSelector SUCCESS Reading Event record 19. Record number within stream 1: 19 +EventSelector SUCCESS Reading Event record 20. Record number within stream 1: 20 +EventSelector SUCCESS Reading Event record 21. Record number within stream 1: 21 +EventSelector SUCCESS Reading Event record 22. Record number within stream 1: 22 +EventSelector SUCCESS Reading Event record 23. Record number within stream 1: 23 +EventSelector SUCCESS Reading Event record 24. Record number within stream 1: 24 +EventSelector SUCCESS Reading Event record 25. Record number within stream 1: 25 +EventSelector SUCCESS Reading Event record 26. Record number within stream 1: 26 +EventSelector SUCCESS Reading Event record 27. Record number within stream 1: 27 +EventSelector SUCCESS Reading Event record 28. Record number within stream 1: 28 +EventSelector SUCCESS Reading Event record 29. Record number within stream 1: 29 +EventSelector SUCCESS Reading Event record 30. Record number within stream 1: 30 +EventSelector SUCCESS Reading Event record 31. Record number within stream 1: 31 +EventSelector SUCCESS Reading Event record 32. Record number within stream 1: 32 +EventSelector SUCCESS Reading Event record 33. Record number within stream 1: 33 +EventSelector SUCCESS Reading Event record 34. Record number within stream 1: 34 +EventSelector SUCCESS Reading Event record 35. Record number within stream 1: 35 +EventSelector SUCCESS Reading Event record 36. Record number within stream 1: 36 +EventSelector SUCCESS Reading Event record 37. Record number within stream 1: 37 +EventSelector SUCCESS Reading Event record 38. Record number within stream 1: 38 +EventSelector SUCCESS Reading Event record 39. Record number within stream 1: 39 +EventSelector SUCCESS Reading Event record 40. Record number within stream 1: 40 +EventSelector SUCCESS Reading Event record 41. Record number within stream 1: 41 +EventSelector SUCCESS Reading Event record 42. Record number within stream 1: 42 +EventSelector SUCCESS Reading Event record 43. Record number within stream 1: 43 +EventSelector SUCCESS Reading Event record 44. Record number within stream 1: 44 +EventSelector SUCCESS Reading Event record 45. Record number within stream 1: 45 +EventSelector SUCCESS Reading Event record 46. Record number within stream 1: 46 +EventSelector SUCCESS Reading Event record 47. Record number within stream 1: 47 +EventSelector SUCCESS Reading Event record 48. Record number within stream 1: 48 +EventSelector SUCCESS Reading Event record 49. Record number within stream 1: 49 +EventSelector SUCCESS Reading Event record 50. Record number within stream 1: 50 +EventSelector SUCCESS Reading Event record 51. Record number within stream 1: 51 +EventSelector SUCCESS Reading Event record 52. Record number within stream 1: 52 +EventSelector SUCCESS Reading Event record 53. Record number within stream 1: 53 +EventSelector SUCCESS Reading Event record 54. Record number within stream 1: 54 +EventSelector SUCCESS Reading Event record 55. Record number within stream 1: 55 +EventSelector SUCCESS Reading Event record 56. Record number within stream 1: 56 +EventSelector SUCCESS Reading Event record 57. Record number within stream 1: 57 +EventSelector SUCCESS Reading Event record 58. Record number within stream 1: 58 +EventSelector SUCCESS Reading Event record 59. Record number within stream 1: 59 +EventSelector SUCCESS Reading Event record 60. Record number within stream 1: 60 +EventSelector SUCCESS Reading Event record 61. Record number within stream 1: 61 +EventSelector SUCCESS Reading Event record 62. Record number within stream 1: 62 +EventSelector SUCCESS Reading Event record 63. Record number within stream 1: 63 +EventSelector SUCCESS Reading Event record 64. Record number within stream 1: 64 +EventSelector SUCCESS Reading Event record 65. Record number within stream 1: 65 +EventSelector SUCCESS Reading Event record 66. Record number within stream 1: 66 +EventSelector SUCCESS Reading Event record 67. Record number within stream 1: 67 +EventSelector SUCCESS Reading Event record 68. Record number within stream 1: 68 +EventSelector SUCCESS Reading Event record 69. Record number within stream 1: 69 +EventSelector SUCCESS Reading Event record 70. Record number within stream 1: 70 +EventSelector SUCCESS Reading Event record 71. Record number within stream 1: 71 +EventSelector SUCCESS Reading Event record 72. Record number within stream 1: 72 +EventSelector SUCCESS Reading Event record 73. Record number within stream 1: 73 +EventSelector SUCCESS Reading Event record 74. Record number within stream 1: 74 +EventSelector SUCCESS Reading Event record 75. Record number within stream 1: 75 +EventSelector SUCCESS Reading Event record 76. Record number within stream 1: 76 +EventSelector SUCCESS Reading Event record 77. Record number within stream 1: 77 +EventSelector SUCCESS Reading Event record 78. Record number within stream 1: 78 +EventSelector SUCCESS Reading Event record 79. Record number within stream 1: 79 +EventSelector SUCCESS Reading Event record 80. Record number within stream 1: 80 +EventSelector SUCCESS Reading Event record 81. Record number within stream 1: 81 +EventSelector SUCCESS Reading Event record 82. Record number within stream 1: 82 +EventSelector SUCCESS Reading Event record 83. Record number within stream 1: 83 +EventSelector SUCCESS Reading Event record 84. Record number within stream 1: 84 +EventSelector SUCCESS Reading Event record 85. Record number within stream 1: 85 +EventSelector SUCCESS Reading Event record 86. Record number within stream 1: 86 +EventSelector SUCCESS Reading Event record 87. Record number within stream 1: 87 +EventSelector SUCCESS Reading Event record 88. Record number within stream 1: 88 +EventSelector SUCCESS Reading Event record 89. Record number within stream 1: 89 +EventSelector SUCCESS Reading Event record 90. Record number within stream 1: 90 +EventSelector SUCCESS Reading Event record 91. Record number within stream 1: 91 +EventSelector SUCCESS Reading Event record 92. Record number within stream 1: 92 +EventSelector SUCCESS Reading Event record 93. Record number within stream 1: 93 +EventSelector SUCCESS Reading Event record 94. Record number within stream 1: 94 +EventSelector SUCCESS Reading Event record 95. Record number within stream 1: 95 +EventSelector SUCCESS Reading Event record 96. Record number within stream 1: 96 +EventSelector SUCCESS Reading Event record 97. Record number within stream 1: 97 +EventSelector SUCCESS Reading Event record 98. Record number within stream 1: 98 +EventSelector SUCCESS Reading Event record 99. Record number within stream 1: 99 +EventSelector SUCCESS Reading Event record 100. Record number within stream 1: 100 +ApplicationMgr INFO Application Manager Stopped successfully +FSROutputStreamDstWriter INFO Set up File Summary Record +FSROutputStreamDstWriter INFO Events output: 1 +TDirectoryName SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections +TDirectoryName SUCCESS List of booked N-Tuples in directory "FILE1/TDirectoryName" +TDirectoryName SUCCESS ID=TTreeName Title="TTreeName" #items=24 {Bs_BPVFDVEC_X,Bs_BPVFDVEC_Y,Bs_BPVFDVEC_Z,Bs_FOURMOM_PE,Bs_FOURMOM_PX,Bs_FOURMOM_} +LAZY_AND: DaVinci #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + NONLAZY_OR: FileSummaryRecords #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: GenFSR #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecordStream/FSROutputStreamDstWriter #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + NONLAZY_OR: UserAnalysis #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LAZY_AND: Alg #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LoKi__HDRFilter/HDRFilter_SeeNoEvil #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + FunTupleBase_Particles/TDirectoryName #=12 Sum=12 Eff=|( 100.0000 +- 0.00000 )%| +ToolSvc INFO Removing all tools created by ToolSvc +RFileCnv INFO dumping contents of /NTUPLES/FILE1 +TFile: name=tutorial3_ThOrfunctors.root, title=Gaudi Trees, option=CREATE +NTupleSvc INFO NTuples saved successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +HDRFilter_SeeNoEvil INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"#passed" | 100 | 12 |( 12.00000 +- 3.249615)% | +TDirectoryName INFO Number of counters : 9 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# events with multiple candidates for field Bs"| 8 | + | "# events with multiple candidates for field Km"| 8 | + | "# events with multiple candidates for field Kp"| 8 | + | "# events with multiple candidates for field Phi"| 8 | + | "# non-empty events for field Bs" | 12 | + | "# non-empty events for field Km" | 12 | + | "# non-empty events for field Kp" | 12 | + | "# non-empty events for field Phi" | 12 | + | "# processed events" | 12 | +ToolSvc.HltFactory INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# loaded from PYTHON" | 1 | diff --git a/DaVinciTutorials/tests/refs/test_tutorial4_trigger_eventinfo.ref b/DaVinciTutorials/tests/refs/test_tutorial4_trigger_eventinfo.ref new file mode 100644 index 000000000..63948617a --- /dev/null +++ b/DaVinciTutorials/tests/refs/test_tutorial4_trigger_eventinfo.ref @@ -0,0 +1,411 @@ +INFO User algorithm tutorial4_trigger_eventinfo.main imported successfully! +ApplicationMgr SUCCESS +==================================================================================================================================== + Welcome to DaVinci version 60.3 + running on grid-ui.physik.uzh.ch on Mon May 30 21:10:03 2022 +==================================================================================================================================== +ApplicationMgr INFO Application Manager Configured successfully +ToolSvc.GitDDDB INFO opening Git repository '/cvmfs/lhcb.cern.ch/lib/lhcb/git-conddb/DDDB.git' +ToolSvc.GitDDDB INFO using commit 'upgrade/dddb-20180815' corresponding to 91b4d152b57a944a3fd5727068cf830cd9b4bc13 +ToolSvc.GitSIMCOND INFO opening Git repository '/cvmfs/lhcb.cern.ch/lib/lhcb/git-conddb/SIMCOND.git' +ToolSvc.GitSIMCOND INFO using commit 'upgrade/sim-20180530-vc-md100' corresponding to 7db2a32a63761eda1338a12fc643c76a22f55a62 +DetectorPersistencySvc INFO Added successfully Conversion service:XmlCnvSvc +DetectorDataSvc SUCCESS Detector description database: git:/lhcb.xml +NTupleSvc INFO Added stream file:tutorial4_trigger_eventinfo.root as FILE1 +HLTControlFlowMgr INFO Start initialization +RootHistSvc INFO Writing ROOT histograms to: tutorial4_trigger_eventinfo.root +HistogramPersistencySvc INFO Added successfully Conversion service:RootHistSvc +FSROutputStreamDstWriter INFO Data source: EventDataSvc output: SVC='Gaudi::RootCnvSvc' +EventClockSvc.FakeEventTime INFO Event times generated from 0 with steps of 0 +EventClockSvc.FakeEventTime INFO Run numbers generated from 0 every 0 events +HiveDataBrokerSvc WARNING non-reentrant algorithm: RecordStream/FSROutputStreamDstWriter +HLTControlFlowMgr INFO Concurrency level information: +HLTControlFlowMgr INFO o Number of events slots: 1 +HLTControlFlowMgr INFO o TBB thread pool size: 'ThreadPoolSize':1 +HLTControlFlowMgr INFO ---> End of Initialization. This took 12748 ms +ApplicationMgr INFO Application Manager Initialized successfully +FunctorFactory INFO Reusing functor library: "/tmp/FunctorJitLib_0xecc1ce4afd23753f_0xb9c87e387ef8a5f6.so" +DeFTDetector INFO Current FT geometry version = 64 +ApplicationMgr INFO Application Manager Started successfully +EventPersistencySvc INFO Added successfully Conversion service:RootCnvSvc +EventSelector INFO Stream:EventSelector.DataStreamTool_1 Def:DATAFILE='root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/tests/hlt2_passthrough_thor_lines.dst' SVC='Gaudi::RootEvtSelector' OPT='READ' IgnoreChecksum='YES' +HLTControlFlowMgr INFO Will measure time between events 10 and 90 (stop might be some events later) +HLTControlFlowMgr INFO Starting loop on events +EventSelector SUCCESS Reading Event record 1. Record number within stream 1: 1 +HLT2 WARNING TCK obtained from rawbank seems to be 0 -- blindly ASSUMING that the current HltANNSvc somehow has the same configuration as when the input data was written. Proceed at your own risk, good luck... +EventSelector SUCCESS Reading Event record 2. Record number within stream 1: 2 +EventSelector SUCCESS Reading Event record 3. Record number within stream 1: 3 +EventSelector SUCCESS Reading Event record 4. Record number within stream 1: 4 +EventSelector SUCCESS Reading Event record 5. Record number within stream 1: 5 +EventSelector SUCCESS Reading Event record 6. Record number within stream 1: 6 +EventSelector SUCCESS Reading Event record 7. Record number within stream 1: 7 +EventSelector SUCCESS Reading Event record 8. Record number within stream 1: 8 +EventSelector SUCCESS Reading Event record 9. Record number within stream 1: 9 +EventSelector SUCCESS Reading Event record 10. Record number within stream 1: 10 +HLTControlFlowMgr INFO Timing started at: 21:10:51 +EventSelector SUCCESS Reading Event record 11. Record number within stream 1: 11 +EventSelector SUCCESS Reading Event record 12. Record number within stream 1: 12 +RFileCnv INFO opening Root file "tutorial4_trigger_eventinfo.root" for writing +RCWNTupleCnv INFO Booked TTree with ID: TTreeName "TTreeName" in directory tutorial4_trigger_eventinfo.root:/TDirectoryName +EventSelector SUCCESS Reading Event record 13. Record number within stream 1: 13 +EventSelector SUCCESS Reading Event record 14. Record number within stream 1: 14 +EventSelector SUCCESS Reading Event record 15. Record number within stream 1: 15 +EventSelector SUCCESS Reading Event record 16. Record number within stream 1: 16 +EventSelector SUCCESS Reading Event record 17. Record number within stream 1: 17 +EventSelector SUCCESS Reading Event record 18. Record number within stream 1: 18 +EventSelector SUCCESS Reading Event record 19. Record number within stream 1: 19 +EventSelector SUCCESS Reading Event record 20. Record number within stream 1: 20 +EventSelector SUCCESS Reading Event record 21. Record number within stream 1: 21 +EventSelector SUCCESS Reading Event record 22. Record number within stream 1: 22 +EventSelector SUCCESS Reading Event record 23. Record number within stream 1: 23 +EventSelector SUCCESS Reading Event record 24. Record number within stream 1: 24 +EventSelector SUCCESS Reading Event record 25. Record number within stream 1: 25 +EventSelector SUCCESS Reading Event record 26. Record number within stream 1: 26 +EventSelector SUCCESS Reading Event record 27. Record number within stream 1: 27 +EventSelector SUCCESS Reading Event record 28. Record number within stream 1: 28 +EventSelector SUCCESS Reading Event record 29. Record number within stream 1: 29 +EventSelector SUCCESS Reading Event record 30. Record number within stream 1: 30 +EventSelector SUCCESS Reading Event record 31. Record number within stream 1: 31 +EventSelector SUCCESS Reading Event record 32. Record number within stream 1: 32 +EventSelector SUCCESS Reading Event record 33. Record number within stream 1: 33 +EventSelector SUCCESS Reading Event record 34. Record number within stream 1: 34 +EventSelector SUCCESS Reading Event record 35. Record number within stream 1: 35 +EventSelector SUCCESS Reading Event record 36. Record number within stream 1: 36 +EventSelector SUCCESS Reading Event record 37. Record number within stream 1: 37 +EventSelector SUCCESS Reading Event record 38. Record number within stream 1: 38 +EventSelector SUCCESS Reading Event record 39. Record number within stream 1: 39 +EventSelector SUCCESS Reading Event record 40. Record number within stream 1: 40 +EventSelector SUCCESS Reading Event record 41. Record number within stream 1: 41 +EventSelector SUCCESS Reading Event record 42. Record number within stream 1: 42 +EventSelector SUCCESS Reading Event record 43. Record number within stream 1: 43 +EventSelector SUCCESS Reading Event record 44. Record number within stream 1: 44 +EventSelector SUCCESS Reading Event record 45. Record number within stream 1: 45 +EventSelector SUCCESS Reading Event record 46. Record number within stream 1: 46 +EventSelector SUCCESS Reading Event record 47. Record number within stream 1: 47 +EventSelector SUCCESS Reading Event record 48. Record number within stream 1: 48 +EventSelector SUCCESS Reading Event record 49. Record number within stream 1: 49 +EventSelector SUCCESS Reading Event record 50. Record number within stream 1: 50 +EventSelector SUCCESS Reading Event record 51. Record number within stream 1: 51 +EventSelector SUCCESS Reading Event record 52. Record number within stream 1: 52 +EventSelector SUCCESS Reading Event record 53. Record number within stream 1: 53 +EventSelector SUCCESS Reading Event record 54. Record number within stream 1: 54 +EventSelector SUCCESS Reading Event record 55. Record number within stream 1: 55 +EventSelector SUCCESS Reading Event record 56. Record number within stream 1: 56 +EventSelector SUCCESS Reading Event record 57. Record number within stream 1: 57 +EventSelector SUCCESS Reading Event record 58. Record number within stream 1: 58 +EventSelector SUCCESS Reading Event record 59. Record number within stream 1: 59 +EventSelector SUCCESS Reading Event record 60. Record number within stream 1: 60 +EventSelector SUCCESS Reading Event record 61. Record number within stream 1: 61 +EventSelector SUCCESS Reading Event record 62. Record number within stream 1: 62 +EventSelector SUCCESS Reading Event record 63. Record number within stream 1: 63 +EventSelector SUCCESS Reading Event record 64. Record number within stream 1: 64 +EventSelector SUCCESS Reading Event record 65. Record number within stream 1: 65 +EventSelector SUCCESS Reading Event record 66. Record number within stream 1: 66 +EventSelector SUCCESS Reading Event record 67. Record number within stream 1: 67 +EventSelector SUCCESS Reading Event record 68. Record number within stream 1: 68 +EventSelector SUCCESS Reading Event record 69. Record number within stream 1: 69 +EventSelector SUCCESS Reading Event record 70. Record number within stream 1: 70 +EventSelector SUCCESS Reading Event record 71. Record number within stream 1: 71 +EventSelector SUCCESS Reading Event record 72. Record number within stream 1: 72 +EventSelector SUCCESS Reading Event record 73. Record number within stream 1: 73 +EventSelector SUCCESS Reading Event record 74. Record number within stream 1: 74 +EventSelector SUCCESS Reading Event record 75. Record number within stream 1: 75 +EventSelector SUCCESS Reading Event record 76. Record number within stream 1: 76 +EventSelector SUCCESS Reading Event record 77. Record number within stream 1: 77 +EventSelector SUCCESS Reading Event record 78. Record number within stream 1: 78 +EventSelector SUCCESS Reading Event record 79. Record number within stream 1: 79 +EventSelector SUCCESS Reading Event record 80. Record number within stream 1: 80 +EventSelector SUCCESS Reading Event record 81. Record number within stream 1: 81 +EventSelector SUCCESS Reading Event record 82. Record number within stream 1: 82 +EventSelector SUCCESS Reading Event record 83. Record number within stream 1: 83 +EventSelector SUCCESS Reading Event record 84. Record number within stream 1: 84 +EventSelector SUCCESS Reading Event record 85. Record number within stream 1: 85 +EventSelector SUCCESS Reading Event record 86. Record number within stream 1: 86 +EventSelector SUCCESS Reading Event record 87. Record number within stream 1: 87 +EventSelector SUCCESS Reading Event record 88. Record number within stream 1: 88 +EventSelector SUCCESS Reading Event record 89. Record number within stream 1: 89 +EventSelector SUCCESS Reading Event record 90. Record number within stream 1: 90 +HLTControlFlowMgr INFO Timing stopped at: 21:10:52 +EventSelector SUCCESS Reading Event record 91. Record number within stream 1: 91 +EventSelector SUCCESS Reading Event record 92. Record number within stream 1: 92 +EventSelector SUCCESS Reading Event record 93. Record number within stream 1: 93 +EventSelector SUCCESS Reading Event record 94. Record number within stream 1: 94 +EventSelector SUCCESS Reading Event record 95. Record number within stream 1: 95 +EventSelector SUCCESS Reading Event record 96. Record number within stream 1: 96 +EventSelector SUCCESS Reading Event record 97. Record number within stream 1: 97 +EventSelector SUCCESS Reading Event record 98. Record number within stream 1: 98 +EventSelector SUCCESS Reading Event record 99. Record number within stream 1: 99 +EventSelector SUCCESS Reading Event record 100. Record number within stream 1: 100 +HLTControlFlowMgr INFO ---> Loop over 100 Events Finished - WSS 2583.12, timed 80 Events: 978 ms, Evts/s = 81.7996 +HDRFilter_SeeNoEvil INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"#passed" | 100 | 12 |( 12.00000 +- 3.249615)% | +TDirectoryName INFO Number of counters : 3 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# events with multiple candidates for field Bs"| 8 | + | "# non-empty events for field Bs" | 12 | + | "# processed events" | 12 | +ToolSvc.HltFactory INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# loaded from PYTHON" | 1 | +ApplicationMgr INFO Application Manager Stopped successfully +FSROutputStreamDstWriter INFO Set up File Summary Record +FSROutputStreamDstWriter INFO Events output: 1 +TDirectoryName SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections +TDirectoryName SUCCESS List of booked N-Tuples in directory "FILE1/TDirectoryName" +TDirectoryName SUCCESS ID=TTreeName Title="TTreeName" #items=8 {EVENTNUMBER,Hlt2_Hlt2BsToJpsiPhi_JPsi2MuMu_PhiToKK_LineDecision,Hlt2_Hlt2BsToJpsi} +HLTControlFlowMgr INFO Memory pool: used 0.00105103 +/- 4.37293e-05 MiB (min: 0, max: 0) in 1 +/- 0 blocks (allocated >once in 0 +/- 0% events). Allocated capacity was 10 +/- 0 MiB (min: 10, max: 10) and 7.22 +/- 0.716461 (min: 5, max: 48) requests were served +HLTControlFlowMgr INFO Timing table: +HLTControlFlowMgr INFO Average ticks per millisecond: 1000000 +HLTControlFlowMgr INFO + | Name of Algorithm | Execution Count | Total Time / s | Avg. Time / us | + | "Gaudi__Hive__FetchDataFromFile#1" | 100 | 1.120 | 11204.089 | + | "LHCb__UnpackRawEvent#1" | 100 | 0.002 | 25.037 | + | "HltPackedBufferDecoder" | 100 | 0.027 | 274.520 | + | "CaloHypoUnpacker" | 100 | 0.000 | 3.862 | + | "CaloHypoUnpacker#1" | 100 | 0.000 | 2.663 | + | "CaloHypoUnpacker#2" | 100 | 0.000 | 9.775 | + | "CaloHypoUnpacker#3" | 100 | 0.000 | 3.533 | + | "ParticleUnpacker#10" | 100 | 0.000 | 3.847 | + | "HLT2" | 100 | 0.001 | 12.762 | + | "DummyEventTime" | 100 | 0.000 | 2.884 | + | "reserveIOV" | 100 | 0.015 | 152.316 | + | "LHCb__UnpackRawEvent" | 12 | 0.000 | 4.750 | + | "createODIN" | 12 | 0.000 | 10.901 | + | "TDirectoryName" | 12 | 0.040 | 3341.134 | + | "HDRFilter_SeeNoEvil" | 100 | 0.000 | 3.421 | + | "MuonPIDUnpacker" | 100 | 0.000 | 4.367 | + | "MuonPIDUnpacker#1" | 100 | 0.000 | 3.614 | + | "MuonPIDUnpacker#2" | 100 | 0.000 | 5.513 | + | "P2VRelationUnpacker" | 100 | 0.000 | 2.827 | + | "P2VRelationUnpacker#1" | 100 | 0.000 | 2.291 | + | "P2VRelationUnpacker#10" | 100 | 0.000 | 4.631 | + | "P2VRelationUnpacker#11" | 100 | 0.000 | 6.288 | + | "P2VRelationUnpacker#12" | 100 | 0.000 | 6.575 | + | "P2VRelationUnpacker#13" | 100 | 0.001 | 11.631 | + | "P2VRelationUnpacker#14" | 100 | 0.000 | 4.082 | + | "P2VRelationUnpacker#15" | 100 | 0.000 | 2.564 | + | "P2VRelationUnpacker#16" | 100 | 0.000 | 2.365 | + | "P2VRelationUnpacker#2" | 100 | 0.000 | 2.199 | + | "P2VRelationUnpacker#3" | 100 | 0.000 | 2.239 | + | "P2VRelationUnpacker#4" | 100 | 0.000 | 2.239 | + | "P2VRelationUnpacker#5" | 100 | 0.000 | 2.176 | + | "P2VRelationUnpacker#6" | 100 | 0.000 | 2.211 | + | "P2VRelationUnpacker#7" | 100 | 0.000 | 2.179 | + | "P2VRelationUnpacker#8" | 100 | 0.000 | 5.100 | + | "P2VRelationUnpacker#9" | 100 | 0.000 | 3.946 | + | "PP2MCPRelationUnpacker" | 100 | 0.000 | 8.555 | + | "PP2MCPRelationUnpacker#1" | 100 | 0.015 | 152.075 | + | "ParticleUnpacker" | 100 | 0.000 | 4.189 | + | "ParticleUnpacker#1" | 100 | 0.000 | 2.708 | + | "ParticleUnpacker#11" | 100 | 0.000 | 3.177 | + | "ParticleUnpacker#12" | 100 | 0.000 | 4.899 | + | "ParticleUnpacker#13" | 100 | 0.000 | 3.940 | + | "ParticleUnpacker#14" | 100 | 0.000 | 7.179 | + | "ParticleUnpacker#15" | 100 | 0.001 | 10.538 | + | "ParticleUnpacker#16" | 100 | 0.000 | 4.093 | + | "ParticleUnpacker#17" | 100 | 0.001 | 10.355 | + | "ParticleUnpacker#18" | 100 | 0.000 | 4.670 | + | "ParticleUnpacker#19" | 100 | 0.000 | 3.368 | + | "ParticleUnpacker#2" | 100 | 0.000 | 3.429 | + | "ParticleUnpacker#20" | 100 | 0.000 | 3.232 | + | "ParticleUnpacker#21" | 100 | 0.000 | 3.925 | + | "ParticleUnpacker#22" | 100 | 0.000 | 2.792 | + | "ParticleUnpacker#23" | 100 | 0.000 | 2.649 | + | "ParticleUnpacker#24" | 100 | 0.000 | 2.547 | + | "ParticleUnpacker#25" | 100 | 0.000 | 3.011 | + | "ParticleUnpacker#26" | 100 | 0.000 | 3.210 | + | "ParticleUnpacker#27" | 100 | 0.000 | 3.332 | + | "ParticleUnpacker#3" | 100 | 0.000 | 4.718 | + | "ParticleUnpacker#4" | 100 | 0.000 | 3.036 | + | "ParticleUnpacker#5" | 100 | 0.000 | 3.166 | + | "ParticleUnpacker#6" | 100 | 0.000 | 3.856 | + | "ParticleUnpacker#7" | 100 | 0.000 | 3.524 | + | "ParticleUnpacker#8" | 100 | 0.000 | 2.347 | + | "ParticleUnpacker#9" | 100 | 0.000 | 2.864 | + | "ProtoParticleUnpacker" | 100 | 0.001 | 11.804 | + | "ProtoParticleUnpacker#1" | 100 | 0.001 | 14.833 | + | "RecVertexUnpacker" | 100 | 0.000 | 7.150 | + | "RecVertexUnpacker#1" | 100 | 0.000 | 3.823 | + | "RecVertexUnpacker#10" | 100 | 0.001 | 16.752 | + | "RecVertexUnpacker#2" | 100 | 0.000 | 3.866 | + | "RecVertexUnpacker#3" | 100 | 0.000 | 3.721 | + | "RecVertexUnpacker#4" | 100 | 0.000 | 3.533 | + | "RecVertexUnpacker#5" | 100 | 0.000 | 3.496 | + | "RecVertexUnpacker#6" | 100 | 0.000 | 3.635 | + | "RecVertexUnpacker#7" | 100 | 0.000 | 3.363 | + | "RecVertexUnpacker#8" | 100 | 0.000 | 3.447 | + | "RecVertexUnpacker#9" | 100 | 0.000 | 3.584 | + | "FSROutputStreamDstWriter" | 100 | 0.000 | 6.109 | + | "RichPIDUnpacker" | 100 | 0.000 | 6.337 | + | "RichPIDUnpacker#1" | 100 | 0.000 | 4.590 | + | "RichPIDUnpacker#2" | 100 | 0.000 | 3.818 | + | "RichPIDUnpacker#3" | 100 | 0.000 | 3.872 | + | "TrackUnpacker" | 100 | 0.001 | 17.155 | + | "TrackUnpacker#1" | 100 | 0.000 | 5.145 | + | "TrackUnpacker#2" | 100 | 0.000 | 6.043 | + | "TrackUnpacker#3" | 100 | 0.000 | 5.995 | + | "TrackUnpacker#4" | 100 | 0.000 | 4.870 | + | "TrackUnpacker#5" | 100 | 0.000 | 8.374 | + | "TrackUnpacker#6" | 100 | 0.000 | 6.908 | + | "TrackUnpacker#7" | 100 | 0.000 | 5.714 | + | "TrackUnpacker#8" | 100 | 0.000 | 7.114 | + | "Gaudi__Hive__FetchDataFromFile#2" | 100 | 0.000 | 2.719 | + | "UnpackMCParticle" | 100 | 0.046 | 469.988 | + | "Gaudi__Hive__FetchDataFromFile#3" | 100 | 0.000 | 2.595 | + | "UnpackMCVertex" | 100 | 0.043 | 439.886 | + | "VertexUnpacker" | 100 | 0.000 | 4.949 | + | "VertexUnpacker#1" | 100 | 0.000 | 3.606 | + | "VertexUnpacker#10" | 100 | 0.000 | 4.891 | + | "VertexUnpacker#11" | 100 | 0.000 | 4.163 | + | "VertexUnpacker#12" | 100 | 0.000 | 3.672 | + | "VertexUnpacker#13" | 100 | 0.000 | 5.930 | + | "VertexUnpacker#14" | 100 | 0.000 | 3.495 | + | "VertexUnpacker#15" | 100 | 0.000 | 9.748 | + | "VertexUnpacker#16" | 100 | 0.000 | 5.923 | + | "VertexUnpacker#17" | 100 | 0.000 | 2.794 | + | "VertexUnpacker#18" | 100 | 0.000 | 4.703 | + | "VertexUnpacker#19" | 100 | 0.000 | 4.095 | + | "VertexUnpacker#2" | 100 | 0.000 | 2.701 | + | "VertexUnpacker#20" | 100 | 0.000 | 2.441 | + | "VertexUnpacker#21" | 100 | 0.000 | 4.291 | + | "VertexUnpacker#22" | 100 | 0.000 | 3.847 | + | "VertexUnpacker#23" | 100 | 0.000 | 3.594 | + | "VertexUnpacker#24" | 100 | 0.000 | 3.576 | + | "VertexUnpacker#25" | 100 | 0.000 | 3.924 | + | "VertexUnpacker#26" | 100 | 0.000 | 4.347 | + | "VertexUnpacker#27" | 100 | 0.000 | 4.132 | + | "VertexUnpacker#3" | 100 | 0.000 | 2.386 | + | "VertexUnpacker#4" | 100 | 0.000 | 2.234 | + | "VertexUnpacker#5" | 100 | 0.000 | 2.230 | + | "VertexUnpacker#6" | 100 | 0.000 | 2.346 | + | "VertexUnpacker#7" | 100 | 0.000 | 2.253 | + | "VertexUnpacker#8" | 100 | 0.000 | 2.220 | + | "VertexUnpacker#9" | 100 | 0.000 | 2.195 | + +HLTControlFlowMgr INFO +LAZY_AND: DaVinci #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + NONLAZY_OR: FileSummaryRecords #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: GenFSR #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecordStream/FSROutputStreamDstWriter #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + NONLAZY_OR: UserAnalysis #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LAZY_AND: Alg #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LoKi__HDRFilter/HDRFilter_SeeNoEvil #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + FunTupleBase_Particles/TDirectoryName #=12 Sum=12 Eff=|( 100.0000 +- 0.00000 )%| + +HLTControlFlowMgr INFO Histograms converted successfully according to request. +ToolSvc INFO Removing all tools created by ToolSvc +RootCnvSvc INFO Disconnected data IO:648C4726-DF97-11EC-AC3F-FA163EFEEE76 [root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/tests/hlt2_passthrough_thor_lines.dst] +RFileCnv INFO dumping contents of /NTUPLES/FILE1 \ No newline at end of file diff --git a/DaVinciTutorials/tests/refs/test_tutorial5_MCTruth.ref b/DaVinciTutorials/tests/refs/test_tutorial5_MCTruth.ref new file mode 100644 index 000000000..9a94c4f3f --- /dev/null +++ b/DaVinciTutorials/tests/refs/test_tutorial5_MCTruth.ref @@ -0,0 +1,309 @@ +DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable') +<FunctorCollection object at 0x########: + TRUEP: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::Magnitude{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( MAGNITUDE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + TRUEPT: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::Rho_Coordinate{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( RHO_COORDINATE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + TRUEPX: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::X_Coordinate{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( X_COORDINATE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + TRUEPY: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::Y_Coordinate{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( Y_COORDINATE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + TRUEPZ: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::Z_Coordinate{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( Z_COORDINATE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + TRUEENERGY: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::E_Coordinate{}, ::Functors::Track::FourMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( E_COORDINATE @ FOURMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") +> +<FunctorCollection object at 0x########: + TRUEID: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ ::Functors::Simulation::Particle_Id{} ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=PARTICLE_ID).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + MC_MOTHER_ID: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ ::Functors::Simulation::MC::Mother( /* The generation of the mother. Generation 1 is simply Mother, Generation 2 is Grandmother and so on. */ std::integral_constant<int, 1>{}, /* The functor to apply on the mother. */ ::Functors::Simulation::Particle_Id{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=MC_MOTHER(Generation=1, Functor=PARTICLE_ID)).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + MC_MOTHER_KEY: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ ::Functors::Simulation::MC::Mother( /* The generation of the mother. Generation 1 is simply Mother, Generation 2 is Grandmother and so on. */ std::integral_constant<int, 1>{}, /* The functor to apply on the mother. */ ::Functors::TES::ObjectKey{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=MC_MOTHER(Generation=1, Functor=OBJECT_KEY)).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + MC_GD_MOTHER_ID: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ ::Functors::Simulation::MC::Mother( /* The generation of the mother. Generation 1 is simply Mother, Generation 2 is Grandmother and so on. */ std::integral_constant<int, 2>{}, /* The functor to apply on the mother. */ ::Functors::Simulation::Particle_Id{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=MC_MOTHER(Generation=2, Functor=PARTICLE_ID)).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + MC_GD_MOTHER_KEY: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ ::Functors::Simulation::MC::Mother( /* The generation of the mother. Generation 1 is simply Mother, Generation 2 is Grandmother and so on. */ std::integral_constant<int, 2>{}, /* The functor to apply on the mother. */ ::Functors::TES::ObjectKey{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=MC_MOTHER(Generation=2, Functor=OBJECT_KEY)).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + MC_GD_GD_MOTHER_ID: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ ::Functors::Simulation::MC::Mother( /* The generation of the mother. Generation 1 is simply Mother, Generation 2 is Grandmother and so on. */ std::integral_constant<int, 3>{}, /* The functor to apply on the mother. */ ::Functors::Simulation::Particle_Id{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=MC_MOTHER(Generation=3, Functor=PARTICLE_ID)).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") + MC_GD_GD_MOTHER_KEY: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ ::Functors::Simulation::MC::Mother( /* The generation of the mother. Generation 1 is simply Mother, Generation 2 is Grandmother and so on. */ std::integral_constant<int, 3>{}, /* The functor to apply on the mother. */ ::Functors::TES::ObjectKey{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=MC_MOTHER(Generation=3, Functor=OBJECT_KEY)).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") +> +<FunctorCollection object at 0x########: + M: ('::Functors::Composite::Mass{}', 'MASS') + P: ('Functors::chain( ::Functors::Common::Magnitude{}, ::Functors::Track::ThreeMomentum{} )', '( MAGNITUDE @ THREEMOMENTUM )') +> +<FunctorCollection object at 0x########: + TRUEP: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::Magnitude{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( MAGNITUDE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") +> +<FunctorCollection object at 0x########: + TRUEID: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ ::Functors::Simulation::Particle_Id{} ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>>( /* List of DataHandles */ std::vector{std::string{"/Event/MCTruthAndBkgCatAlg#1/MCAssocTable"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=PARTICLE_ID).bind( TES(DataHandles=[DataHandle('/Event/MCTruthAndBkgCatAlg#1/MCAssocTable')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::MCParticle>']), FORWARDARGS )") +> +INFO User algorithm tutorial5_MCTruth.main imported successfully! +ApplicationMgr SUCCESS +==================================================================================================================================== +==================================================================================================================================== +ApplicationMgr INFO Application Manager Configured successfully +DetectorPersistencySvc INFO Added successfully Conversion service:XmlCnvSvc +DetectorDataSvc SUCCESS Detector description database: git:/lhcb.xml +NTupleSvc INFO Added stream file:tutorial5_MCTruth.root as FILE1 +RootHistSvc INFO Writing ROOT histograms to: tutorial5_MCTruth.root +HistogramPersistencySvc INFO Added successfully Conversion service:RootHistSvc +FSROutputStreamDstWriter INFO Data source: EventDataSvc output: SVC='Gaudi::RootCnvSvc' +EventClockSvc.FakeEventTime INFO Event times generated from 0 with steps of 0 +MCTruthAndBkgCatAlg#1.DaVinciSma... INFO Will look into [Relations/ChargedPP2MCP, Relations/NeutralPP2MCP] +MCTruthAndBkgCatAlg#1.DaVinciSma... INFO Will look into [Relations/ChargedPP2MCP, Relations/NeutralPP2MCP] +MCTruthAndBkgCatAlg#1.Background... INFO Will look into [Relations/ChargedPP2MCP, Relations/NeutralPP2MCP] +ApplicationMgr INFO Application Manager Initialized successfully +DeFTDetector INFO Current FT geometry version = 64 +ApplicationMgr INFO Application Manager Started successfully +EventPersistencySvc INFO Added successfully Conversion service:RootCnvSvc +EventSelector SUCCESS Reading Event record 1. Record number within stream 1: 1 +EventSelector SUCCESS Reading Event record 2. Record number within stream 1: 2 +EventSelector SUCCESS Reading Event record 3. Record number within stream 1: 3 +EventSelector SUCCESS Reading Event record 4. Record number within stream 1: 4 +EventSelector SUCCESS Reading Event record 5. Record number within stream 1: 5 +EventSelector SUCCESS Reading Event record 6. Record number within stream 1: 6 +EventSelector SUCCESS Reading Event record 7. Record number within stream 1: 7 +EventSelector SUCCESS Reading Event record 8. Record number within stream 1: 8 +EventSelector SUCCESS Reading Event record 9. Record number within stream 1: 9 +EventSelector SUCCESS Reading Event record 10. Record number within stream 1: 10 +EventSelector SUCCESS Reading Event record 11. Record number within stream 1: 11 +EventSelector SUCCESS Reading Event record 12. Record number within stream 1: 12 +RFileCnv INFO opening Root file "tutorial5_MCTruth.root" for writing +RCWNTupleCnv INFO Booked TTree with ID: TTreeName "TTreeName" in directory tutorial5_MCTruth.root:/TDirectoryName +EventSelector SUCCESS Reading Event record 13. Record number within stream 1: 13 +EventSelector SUCCESS Reading Event record 14. Record number within stream 1: 14 +EventSelector SUCCESS Reading Event record 15. Record number within stream 1: 15 +EventSelector SUCCESS Reading Event record 16. Record number within stream 1: 16 +EventSelector SUCCESS Reading Event record 17. Record number within stream 1: 17 +EventSelector SUCCESS Reading Event record 18. Record number within stream 1: 18 +EventSelector SUCCESS Reading Event record 19. Record number within stream 1: 19 +EventSelector SUCCESS Reading Event record 20. Record number within stream 1: 20 +EventSelector SUCCESS Reading Event record 21. Record number within stream 1: 21 +EventSelector SUCCESS Reading Event record 22. Record number within stream 1: 22 +EventSelector SUCCESS Reading Event record 23. Record number within stream 1: 23 +EventSelector SUCCESS Reading Event record 24. Record number within stream 1: 24 +EventSelector SUCCESS Reading Event record 25. Record number within stream 1: 25 +EventSelector SUCCESS Reading Event record 26. Record number within stream 1: 26 +EventSelector SUCCESS Reading Event record 27. Record number within stream 1: 27 +EventSelector SUCCESS Reading Event record 28. Record number within stream 1: 28 +EventSelector SUCCESS Reading Event record 29. Record number within stream 1: 29 +EventSelector SUCCESS Reading Event record 30. Record number within stream 1: 30 +EventSelector SUCCESS Reading Event record 31. Record number within stream 1: 31 +EventSelector SUCCESS Reading Event record 32. Record number within stream 1: 32 +EventSelector SUCCESS Reading Event record 33. Record number within stream 1: 33 +EventSelector SUCCESS Reading Event record 34. Record number within stream 1: 34 +EventSelector SUCCESS Reading Event record 35. Record number within stream 1: 35 +EventSelector SUCCESS Reading Event record 36. Record number within stream 1: 36 +EventSelector SUCCESS Reading Event record 37. Record number within stream 1: 37 +EventSelector SUCCESS Reading Event record 38. Record number within stream 1: 38 +EventSelector SUCCESS Reading Event record 39. Record number within stream 1: 39 +EventSelector SUCCESS Reading Event record 40. Record number within stream 1: 40 +EventSelector SUCCESS Reading Event record 41. Record number within stream 1: 41 +EventSelector SUCCESS Reading Event record 42. Record number within stream 1: 42 +EventSelector SUCCESS Reading Event record 43. Record number within stream 1: 43 +EventSelector SUCCESS Reading Event record 44. Record number within stream 1: 44 +EventSelector SUCCESS Reading Event record 45. Record number within stream 1: 45 +EventSelector SUCCESS Reading Event record 46. Record number within stream 1: 46 +EventSelector SUCCESS Reading Event record 47. Record number within stream 1: 47 +EventSelector SUCCESS Reading Event record 48. Record number within stream 1: 48 +EventSelector SUCCESS Reading Event record 49. Record number within stream 1: 49 +EventSelector SUCCESS Reading Event record 50. Record number within stream 1: 50 +EventSelector SUCCESS Reading Event record 51. Record number within stream 1: 51 +EventSelector SUCCESS Reading Event record 52. Record number within stream 1: 52 +EventSelector SUCCESS Reading Event record 53. Record number within stream 1: 53 +EventSelector SUCCESS Reading Event record 54. Record number within stream 1: 54 +EventSelector SUCCESS Reading Event record 55. Record number within stream 1: 55 +EventSelector SUCCESS Reading Event record 56. Record number within stream 1: 56 +EventSelector SUCCESS Reading Event record 57. Record number within stream 1: 57 +EventSelector SUCCESS Reading Event record 58. Record number within stream 1: 58 +EventSelector SUCCESS Reading Event record 59. Record number within stream 1: 59 +EventSelector SUCCESS Reading Event record 60. Record number within stream 1: 60 +EventSelector SUCCESS Reading Event record 61. Record number within stream 1: 61 +EventSelector SUCCESS Reading Event record 62. Record number within stream 1: 62 +EventSelector SUCCESS Reading Event record 63. Record number within stream 1: 63 +EventSelector SUCCESS Reading Event record 64. Record number within stream 1: 64 +EventSelector SUCCESS Reading Event record 65. Record number within stream 1: 65 +EventSelector SUCCESS Reading Event record 66. Record number within stream 1: 66 +EventSelector SUCCESS Reading Event record 67. Record number within stream 1: 67 +EventSelector SUCCESS Reading Event record 68. Record number within stream 1: 68 +EventSelector SUCCESS Reading Event record 69. Record number within stream 1: 69 +EventSelector SUCCESS Reading Event record 70. Record number within stream 1: 70 +EventSelector SUCCESS Reading Event record 71. Record number within stream 1: 71 +EventSelector SUCCESS Reading Event record 72. Record number within stream 1: 72 +EventSelector SUCCESS Reading Event record 73. Record number within stream 1: 73 +EventSelector SUCCESS Reading Event record 74. Record number within stream 1: 74 +EventSelector SUCCESS Reading Event record 75. Record number within stream 1: 75 +EventSelector SUCCESS Reading Event record 76. Record number within stream 1: 76 +EventSelector SUCCESS Reading Event record 77. Record number within stream 1: 77 +EventSelector SUCCESS Reading Event record 78. Record number within stream 1: 78 +EventSelector SUCCESS Reading Event record 79. Record number within stream 1: 79 +EventSelector SUCCESS Reading Event record 80. Record number within stream 1: 80 +EventSelector SUCCESS Reading Event record 81. Record number within stream 1: 81 +EventSelector SUCCESS Reading Event record 82. Record number within stream 1: 82 +EventSelector SUCCESS Reading Event record 83. Record number within stream 1: 83 +EventSelector SUCCESS Reading Event record 84. Record number within stream 1: 84 +EventSelector SUCCESS Reading Event record 85. Record number within stream 1: 85 +EventSelector SUCCESS Reading Event record 86. Record number within stream 1: 86 +EventSelector SUCCESS Reading Event record 87. Record number within stream 1: 87 +EventSelector SUCCESS Reading Event record 88. Record number within stream 1: 88 +EventSelector SUCCESS Reading Event record 89. Record number within stream 1: 89 +EventSelector SUCCESS Reading Event record 90. Record number within stream 1: 90 +EventSelector SUCCESS Reading Event record 91. Record number within stream 1: 91 +EventSelector SUCCESS Reading Event record 92. Record number within stream 1: 92 +EventSelector SUCCESS Reading Event record 93. Record number within stream 1: 93 +EventSelector SUCCESS Reading Event record 94. Record number within stream 1: 94 +EventSelector SUCCESS Reading Event record 95. Record number within stream 1: 95 +EventSelector SUCCESS Reading Event record 96. Record number within stream 1: 96 +EventSelector SUCCESS Reading Event record 97. Record number within stream 1: 97 +EventSelector SUCCESS Reading Event record 98. Record number within stream 1: 98 +EventSelector SUCCESS Reading Event record 99. Record number within stream 1: 99 +EventSelector SUCCESS Reading Event record 100. Record number within stream 1: 100 +ApplicationMgr INFO Application Manager Stopped successfully +FSROutputStreamDstWriter INFO Set up File Summary Record +FSROutputStreamDstWriter INFO Events output: 1 +TDirectoryName SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections +TDirectoryName SUCCESS List of booked N-Tuples in directory "FILE1/TDirectoryName" +TDirectoryName SUCCESS ID=TTreeName Title="TTreeName" #items=37 {Bs_M,Bs_P,Bs_TRUEP,Bs_TRUEID,Bs_BKGCAT,Jpsi_M,Jpsi_P,Jpsi_TRUEP,Jpsi_TRUEID,Jpsi_} +LAZY_AND: DaVinci #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + NONLAZY_OR: FileSummaryRecords #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: GenFSR #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecordStream/FSROutputStreamDstWriter #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + NONLAZY_OR: UserAnalysis #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LAZY_AND: Alg #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LoKi__HDRFilter/HDRFilter_SeeNoEvil #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + FunTupleBase_Particles/TDirectoryName #=12 Sum=12 Eff=|( 100.0000 +- 0.00000 )%| +ToolSvc INFO Removing all tools created by ToolSvc +RFileCnv INFO dumping contents of /NTUPLES/FILE1 +TFile: name=tutorial5_MCTruth.root, title=Gaudi Trees, option=CREATE +NTupleSvc INFO NTuples saved successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +HDRFilter_SeeNoEvil INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"#passed" | 100 | 12 |( 12.00000 +- 3.249615)% | +MCTruthAndBkgCatAlg#1 INFO Number of counters : 3 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "Events" | 12 | + | "Ghosts" | 210 | 0 | 0.0000 | 0.0000 | 4.2950e+09 | 0.0000 | + | "Particles" | 210 | 0 | 0.0000 | 0.0000 | 4.2950e+09 | 0.0000 | +TDirectoryName INFO Number of counters : 15 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# events with multiple candidates for field Bs"| 8 | + | "# events with multiple candidates for field Jpsi"| 8 | + | "# events with multiple candidates for field Km"| 8 | + | "# events with multiple candidates for field Kp"| 8 | + | "# events with multiple candidates for field Mum"| 8 | + | "# events with multiple candidates for field Mup"| 8 | + | "# events with multiple candidates for field Phi"| 8 | + | "# non-empty events for field Bs" | 12 | + | "# non-empty events for field Jpsi" | 12 | + | "# non-empty events for field Km" | 12 | + | "# non-empty events for field Kp" | 12 | + | "# non-empty events for field Mum" | 12 | + | "# non-empty events for field Mup" | 12 | + | "# non-empty events for field Phi" | 12 | + | "# processed events" | 12 | +ToolSvc.HltFactory INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# loaded from PYTHON" | 1 | diff --git a/DaVinciTutorials/tests/refs/test_tutorial6_DecayTreeFit.ref b/DaVinciTutorials/tests/refs/test_tutorial6_DecayTreeFit.ref new file mode 100644 index 000000000..7a0b50ba3 --- /dev/null +++ b/DaVinciTutorials/tests/refs/test_tutorial6_DecayTreeFit.ref @@ -0,0 +1,286 @@ +<FunctorCollection object at 0x########: + DTF_M: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ ::Functors::Composite::Mass{} ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::Particle>>( /* List of DataHandles */ std::vector{std::string{"/Event/DecayTreeFitterAlg/OutputRelations"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=MASS).bind( TES(DataHandles=[DataHandle('/Event/DecayTreeFitterAlg/OutputRelations')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::Particle>']), FORWARDARGS )") + DTF_P: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::Magnitude{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::Particle>>( /* List of DataHandles */ std::vector{std::string{"/Event/DecayTreeFitterAlg/OutputRelations"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( MAGNITUDE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/DecayTreeFitterAlg/OutputRelations')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::Particle>']), FORWARDARGS )") + DTF_PT: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::Rho_Coordinate{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::Particle>>( /* List of DataHandles */ std::vector{std::string{"/Event/DecayTreeFitterAlg/OutputRelations"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( RHO_COORDINATE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/DecayTreeFitterAlg/OutputRelations')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::Particle>']), FORWARDARGS )") + DTF_PX: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::X_Coordinate{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::Particle>>( /* List of DataHandles */ std::vector{std::string{"/Event/DecayTreeFitterAlg/OutputRelations"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( X_COORDINATE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/DecayTreeFitterAlg/OutputRelations')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::Particle>']), FORWARDARGS )") + DTF_PY: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::Y_Coordinate{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::Particle>>( /* List of DataHandles */ std::vector{std::string{"/Event/DecayTreeFitterAlg/OutputRelations"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( Y_COORDINATE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/DecayTreeFitterAlg/OutputRelations')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::Particle>']), FORWARDARGS )") + DTF_PZ: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::Z_Coordinate{}, ::Functors::Track::ThreeMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::Particle>>( /* List of DataHandles */ std::vector{std::string{"/Event/DecayTreeFitterAlg/OutputRelations"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( Z_COORDINATE @ THREEMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/DecayTreeFitterAlg/OutputRelations')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::Particle>']), FORWARDARGS )") + DTF_ENERGY: ('Functors::bind( ::Functors::Adapters::MapRelInputToFunOutput( /* The functor to apply to the particle. */ Functors::chain( ::Functors::Common::E_Coordinate{}, ::Functors::Track::FourMomentum{} ) ), ::Functors::Common::TES<LHCb::Relation1D<LHCb::Particle,LHCb::Particle>>( /* List of DataHandles */ std::vector{std::string{"/Event/DecayTreeFitterAlg/OutputRelations"}} ), ::Functors::Common::ForwardArgs{} )', "_MAP_INPUT(Functor=( E_COORDINATE @ FOURMOMENTUM )).bind( TES(DataHandles=[DataHandle('/Event/DecayTreeFitterAlg/OutputRelations')], DataTypes=['LHCb::Relation1D<LHCb::Particle,LHCb::Particle>']), FORWARDARGS )") +> +INFO User algorithm tutorial6_DecayTreeFit.main imported successfully! +ApplicationMgr SUCCESS +==================================================================================================================================== +==================================================================================================================================== +ApplicationMgr INFO Application Manager Configured successfully +DetectorPersistencySvc INFO Added successfully Conversion service:XmlCnvSvc +DetectorDataSvc SUCCESS Detector description database: git:/lhcb.xml +NTupleSvc INFO Added stream file:tutorial6_DecayTreeFit.root as FILE1 +RootHistSvc INFO Writing ROOT histograms to: tutorial6_DecayTreeFit.root +HistogramPersistencySvc INFO Added successfully Conversion service:RootHistSvc +FSROutputStreamDstWriter INFO Data source: EventDataSvc output: SVC='Gaudi::RootCnvSvc' +EventClockSvc.FakeEventTime INFO Event times generated from 0 with steps of 0 +ApplicationMgr INFO Application Manager Initialized successfully +DeFTDetector INFO Current FT geometry version = 64 +ApplicationMgr INFO Application Manager Started successfully +EventPersistencySvc INFO Added successfully Conversion service:RootCnvSvc +EventSelector SUCCESS Reading Event record 1. Record number within stream 1: 1 +EventSelector SUCCESS Reading Event record 2. Record number within stream 1: 2 +EventSelector SUCCESS Reading Event record 3. Record number within stream 1: 3 +EventSelector SUCCESS Reading Event record 4. Record number within stream 1: 4 +EventSelector SUCCESS Reading Event record 5. Record number within stream 1: 5 +EventSelector SUCCESS Reading Event record 6. Record number within stream 1: 6 +EventSelector SUCCESS Reading Event record 7. Record number within stream 1: 7 +EventSelector SUCCESS Reading Event record 8. Record number within stream 1: 8 +EventSelector SUCCESS Reading Event record 9. Record number within stream 1: 9 +EventSelector SUCCESS Reading Event record 10. Record number within stream 1: 10 +EventSelector SUCCESS Reading Event record 11. Record number within stream 1: 11 +EventSelector SUCCESS Reading Event record 12. Record number within stream 1: 12 +RFileCnv INFO opening Root file "tutorial6_DecayTreeFit.root" for writing +RCWNTupleCnv INFO Booked TTree with ID: TTreeName "TTreeName" in directory tutorial6_DecayTreeFit.root:/TDirectoryName +EventSelector SUCCESS Reading Event record 13. Record number within stream 1: 13 +EventSelector SUCCESS Reading Event record 14. Record number within stream 1: 14 +EventSelector SUCCESS Reading Event record 15. Record number within stream 1: 15 +EventSelector SUCCESS Reading Event record 16. Record number within stream 1: 16 +EventSelector SUCCESS Reading Event record 17. Record number within stream 1: 17 +EventSelector SUCCESS Reading Event record 18. Record number within stream 1: 18 +EventSelector SUCCESS Reading Event record 19. Record number within stream 1: 19 +EventSelector SUCCESS Reading Event record 20. Record number within stream 1: 20 +EventSelector SUCCESS Reading Event record 21. Record number within stream 1: 21 +EventSelector SUCCESS Reading Event record 22. Record number within stream 1: 22 +EventSelector SUCCESS Reading Event record 23. Record number within stream 1: 23 +EventSelector SUCCESS Reading Event record 24. Record number within stream 1: 24 +EventSelector SUCCESS Reading Event record 25. Record number within stream 1: 25 +EventSelector SUCCESS Reading Event record 26. Record number within stream 1: 26 +EventSelector SUCCESS Reading Event record 27. Record number within stream 1: 27 +EventSelector SUCCESS Reading Event record 28. Record number within stream 1: 28 +EventSelector SUCCESS Reading Event record 29. Record number within stream 1: 29 +EventSelector SUCCESS Reading Event record 30. Record number within stream 1: 30 +EventSelector SUCCESS Reading Event record 31. Record number within stream 1: 31 +EventSelector SUCCESS Reading Event record 32. Record number within stream 1: 32 +EventSelector SUCCESS Reading Event record 33. Record number within stream 1: 33 +EventSelector SUCCESS Reading Event record 34. Record number within stream 1: 34 +EventSelector SUCCESS Reading Event record 35. Record number within stream 1: 35 +EventSelector SUCCESS Reading Event record 36. Record number within stream 1: 36 +EventSelector SUCCESS Reading Event record 37. Record number within stream 1: 37 +EventSelector SUCCESS Reading Event record 38. Record number within stream 1: 38 +EventSelector SUCCESS Reading Event record 39. Record number within stream 1: 39 +EventSelector SUCCESS Reading Event record 40. Record number within stream 1: 40 +EventSelector SUCCESS Reading Event record 41. Record number within stream 1: 41 +EventSelector SUCCESS Reading Event record 42. Record number within stream 1: 42 +EventSelector SUCCESS Reading Event record 43. Record number within stream 1: 43 +EventSelector SUCCESS Reading Event record 44. Record number within stream 1: 44 +EventSelector SUCCESS Reading Event record 45. Record number within stream 1: 45 +EventSelector SUCCESS Reading Event record 46. Record number within stream 1: 46 +EventSelector SUCCESS Reading Event record 47. Record number within stream 1: 47 +EventSelector SUCCESS Reading Event record 48. Record number within stream 1: 48 +EventSelector SUCCESS Reading Event record 49. Record number within stream 1: 49 +EventSelector SUCCESS Reading Event record 50. Record number within stream 1: 50 +EventSelector SUCCESS Reading Event record 51. Record number within stream 1: 51 +EventSelector SUCCESS Reading Event record 52. Record number within stream 1: 52 +EventSelector SUCCESS Reading Event record 53. Record number within stream 1: 53 +EventSelector SUCCESS Reading Event record 54. Record number within stream 1: 54 +EventSelector SUCCESS Reading Event record 55. Record number within stream 1: 55 +EventSelector SUCCESS Reading Event record 56. Record number within stream 1: 56 +EventSelector SUCCESS Reading Event record 57. Record number within stream 1: 57 +EventSelector SUCCESS Reading Event record 58. Record number within stream 1: 58 +EventSelector SUCCESS Reading Event record 59. Record number within stream 1: 59 +EventSelector SUCCESS Reading Event record 60. Record number within stream 1: 60 +EventSelector SUCCESS Reading Event record 61. Record number within stream 1: 61 +EventSelector SUCCESS Reading Event record 62. Record number within stream 1: 62 +EventSelector SUCCESS Reading Event record 63. Record number within stream 1: 63 +EventSelector SUCCESS Reading Event record 64. Record number within stream 1: 64 +EventSelector SUCCESS Reading Event record 65. Record number within stream 1: 65 +EventSelector SUCCESS Reading Event record 66. Record number within stream 1: 66 +EventSelector SUCCESS Reading Event record 67. Record number within stream 1: 67 +EventSelector SUCCESS Reading Event record 68. Record number within stream 1: 68 +EventSelector SUCCESS Reading Event record 69. Record number within stream 1: 69 +EventSelector SUCCESS Reading Event record 70. Record number within stream 1: 70 +EventSelector SUCCESS Reading Event record 71. Record number within stream 1: 71 +EventSelector SUCCESS Reading Event record 72. Record number within stream 1: 72 +EventSelector SUCCESS Reading Event record 73. Record number within stream 1: 73 +EventSelector SUCCESS Reading Event record 74. Record number within stream 1: 74 +EventSelector SUCCESS Reading Event record 75. Record number within stream 1: 75 +EventSelector SUCCESS Reading Event record 76. Record number within stream 1: 76 +EventSelector SUCCESS Reading Event record 77. Record number within stream 1: 77 +EventSelector SUCCESS Reading Event record 78. Record number within stream 1: 78 +EventSelector SUCCESS Reading Event record 79. Record number within stream 1: 79 +EventSelector SUCCESS Reading Event record 80. Record number within stream 1: 80 +EventSelector SUCCESS Reading Event record 81. Record number within stream 1: 81 +EventSelector SUCCESS Reading Event record 82. Record number within stream 1: 82 +EventSelector SUCCESS Reading Event record 83. Record number within stream 1: 83 +EventSelector SUCCESS Reading Event record 84. Record number within stream 1: 84 +EventSelector SUCCESS Reading Event record 85. Record number within stream 1: 85 +EventSelector SUCCESS Reading Event record 86. Record number within stream 1: 86 +EventSelector SUCCESS Reading Event record 87. Record number within stream 1: 87 +EventSelector SUCCESS Reading Event record 88. Record number within stream 1: 88 +EventSelector SUCCESS Reading Event record 89. Record number within stream 1: 89 +EventSelector SUCCESS Reading Event record 90. Record number within stream 1: 90 +EventSelector SUCCESS Reading Event record 91. Record number within stream 1: 91 +EventSelector SUCCESS Reading Event record 92. Record number within stream 1: 92 +EventSelector SUCCESS Reading Event record 93. Record number within stream 1: 93 +EventSelector SUCCESS Reading Event record 94. Record number within stream 1: 94 +EventSelector SUCCESS Reading Event record 95. Record number within stream 1: 95 +EventSelector SUCCESS Reading Event record 96. Record number within stream 1: 96 +EventSelector SUCCESS Reading Event record 97. Record number within stream 1: 97 +EventSelector SUCCESS Reading Event record 98. Record number within stream 1: 98 +EventSelector SUCCESS Reading Event record 99. Record number within stream 1: 99 +EventSelector SUCCESS Reading Event record 100. Record number within stream 1: 100 +ApplicationMgr INFO Application Manager Stopped successfully +FSROutputStreamDstWriter INFO Set up File Summary Record +FSROutputStreamDstWriter INFO Events output: 1 +TDirectoryName SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections +TDirectoryName SUCCESS List of booked N-Tuples in directory "FILE1/TDirectoryName" +TDirectoryName SUCCESS ID=TTreeName Title="TTreeName" #items=46 {Bs_BPVLTIME,Bs_BPVIPCHI2,Bs_DTFPV_BPVLTIME,Bs_DTFPV_BPVIPCHI2,Bs_M,Bs_P,Bs_PT,Bs_} +LAZY_AND: DaVinci #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + NONLAZY_OR: FileSummaryRecords #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: GenFSR #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecordStream/FSROutputStreamDstWriter #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + NONLAZY_OR: UserAnalysis #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LAZY_AND: Alg #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LoKi__HDRFilter/HDRFilter_SeeNoEvil #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + FunTupleBase_Particles/TDirectoryName #=12 Sum=12 Eff=|( 100.0000 +- 0.00000 )%| +ToolSvc INFO Removing all tools created by ToolSvc +RFileCnv INFO dumping contents of /NTUPLES/FILE1 +TFile: name=tutorial6_DecayTreeFit.root, title=Gaudi Trees, option=CREATE +NTupleSvc INFO NTuples saved successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +DecayTreeFitterAlg INFO Number of counters : 4 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "Events" | 12 | + | "Fitted Particles" | 30 | 0 | 0.0000 | 0.0000 | 4.2950e+09 | 0.0000 | + | "Input Particles" | 12 | 30 | 2.5000 | 1.6073 | 1.0000 | 6.0000 | + | "saved Particles" | 12 | 210 | 17.500 | 11.251 | 7.0000 | 42.000 | +DecayTreeFitterAlgWithPV INFO Number of counters : 4 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "Events" | 12 | + | "Fitted Particles" | 30 | 0 | 0.0000 | 0.0000 | 4.2950e+09 | 0.0000 | + | "Input Particles" | 12 | 30 | 2.5000 | 1.6073 | 1.0000 | 6.0000 | + | "saved Particles" | 12 | 210 | 17.500 | 11.251 | 7.0000 | 42.000 | +HDRFilter_SeeNoEvil INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"#passed" | 100 | 12 |( 12.00000 +- 3.249615)% | +TDirectoryName INFO Number of counters : 7 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# events with multiple candidates for field Bs"| 8 | + | "# events with multiple candidates for field Jpsi"| 8 | + | "# events with multiple candidates for field Phi"| 8 | + | "# non-empty events for field Bs" | 12 | + | "# non-empty events for field Jpsi" | 12 | + | "# non-empty events for field Phi" | 12 | + | "# processed events" | 12 | +ToolSvc.HltFactory INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# loaded from PYTHON" | 1 | diff --git a/DaVinciTutorials/tests/refs/test_tutorial7_multiple_sel_lines.ref b/DaVinciTutorials/tests/refs/test_tutorial7_multiple_sel_lines.ref new file mode 100644 index 000000000..d311b3af7 --- /dev/null +++ b/DaVinciTutorials/tests/refs/test_tutorial7_multiple_sel_lines.ref @@ -0,0 +1,396 @@ +INFO User algorithm tutorial7_multiple_sel_lines.main imported successfully! +ApplicationMgr SUCCESS +==================================================================================================================================== +==================================================================================================================================== +ApplicationMgr INFO Application Manager Configured successfully +DetectorPersistencySvc INFO Added successfully Conversion service:XmlCnvSvc +DetectorDataSvc SUCCESS Detector description database: git:/lhcb.xml +NTupleSvc INFO Added stream file:tutorial7_multiple_sel_lines.root as FILE1 +RootHistSvc INFO Writing ROOT histograms to: tutorial7_multiple_sel_lines.root +HistogramPersistencySvc INFO Added successfully Conversion service:RootHistSvc +FSROutputStreamDstWriter INFO Data source: EventDataSvc output: SVC='Gaudi::RootCnvSvc' +EventClockSvc.FakeEventTime INFO Event times generated from 0 with steps of 0 +ApplicationMgr INFO Application Manager Initialized successfully +DeFTDetector INFO Current FT geometry version = 64 +ApplicationMgr INFO Application Manager Started successfully +EventPersistencySvc INFO Added successfully Conversion service:RootCnvSvc +EventSelector SUCCESS Reading Event record 1. Record number within stream 1: 1 +EventSelector SUCCESS Reading Event record 2. Record number within stream 1: 2 +EventSelector SUCCESS Reading Event record 3. Record number within stream 1: 3 +EventSelector SUCCESS Reading Event record 4. Record number within stream 1: 4 +EventSelector SUCCESS Reading Event record 5. Record number within stream 1: 5 +EventSelector SUCCESS Reading Event record 6. Record number within stream 1: 6 +EventSelector SUCCESS Reading Event record 7. Record number within stream 1: 7 +EventSelector SUCCESS Reading Event record 8. Record number within stream 1: 8 +EventSelector SUCCESS Reading Event record 9. Record number within stream 1: 9 +EventSelector SUCCESS Reading Event record 10. Record number within stream 1: 10 +EventSelector SUCCESS Reading Event record 11. Record number within stream 1: 11 +EventSelector SUCCESS Reading Event record 12. Record number within stream 1: 12 +RFileCnv INFO opening Root file "tutorial7_multiple_sel_lines.root" for writing +RCWNTupleCnv INFO Booked TTree with ID: TTreeName1 "TTreeName1" in directory tutorial7_multiple_sel_lines.root:/TDirectoryName1 +RCWNTupleCnv INFO Booked TTree with ID: TTreeName2 "TTreeName2" in directory tutorial7_multiple_sel_lines.root:/TDirectoryName2 +EventSelector SUCCESS Reading Event record 13. Record number within stream 1: 13 +EventSelector SUCCESS Reading Event record 14. Record number within stream 1: 14 +EventSelector SUCCESS Reading Event record 15. Record number within stream 1: 15 +EventSelector SUCCESS Reading Event record 16. Record number within stream 1: 16 +EventSelector SUCCESS Reading Event record 17. Record number within stream 1: 17 +EventSelector SUCCESS Reading Event record 18. Record number within stream 1: 18 +EventSelector SUCCESS Reading Event record 19. Record number within stream 1: 19 +EventSelector SUCCESS Reading Event record 20. Record number within stream 1: 20 +EventSelector SUCCESS Reading Event record 21. Record number within stream 1: 21 +EventSelector SUCCESS Reading Event record 22. Record number within stream 1: 22 +EventSelector SUCCESS Reading Event record 23. Record number within stream 1: 23 +EventSelector SUCCESS Reading Event record 24. Record number within stream 1: 24 +EventSelector SUCCESS Reading Event record 25. Record number within stream 1: 25 +EventSelector SUCCESS Reading Event record 26. Record number within stream 1: 26 +EventSelector SUCCESS Reading Event record 27. Record number within stream 1: 27 +EventSelector SUCCESS Reading Event record 28. Record number within stream 1: 28 +EventSelector SUCCESS Reading Event record 29. Record number within stream 1: 29 +EventSelector SUCCESS Reading Event record 30. Record number within stream 1: 30 +EventSelector SUCCESS Reading Event record 31. Record number within stream 1: 31 +EventSelector SUCCESS Reading Event record 32. Record number within stream 1: 32 +EventSelector SUCCESS Reading Event record 33. Record number within stream 1: 33 +EventSelector SUCCESS Reading Event record 34. Record number within stream 1: 34 +EventSelector SUCCESS Reading Event record 35. Record number within stream 1: 35 +EventSelector SUCCESS Reading Event record 36. Record number within stream 1: 36 +EventSelector SUCCESS Reading Event record 37. Record number within stream 1: 37 +EventSelector SUCCESS Reading Event record 38. Record number within stream 1: 38 +EventSelector SUCCESS Reading Event record 39. Record number within stream 1: 39 +EventSelector SUCCESS Reading Event record 40. Record number within stream 1: 40 +EventSelector SUCCESS Reading Event record 41. Record number within stream 1: 41 +EventSelector SUCCESS Reading Event record 42. Record number within stream 1: 42 +EventSelector SUCCESS Reading Event record 43. Record number within stream 1: 43 +EventSelector SUCCESS Reading Event record 44. Record number within stream 1: 44 +EventSelector SUCCESS Reading Event record 45. Record number within stream 1: 45 +EventSelector SUCCESS Reading Event record 46. Record number within stream 1: 46 +EventSelector SUCCESS Reading Event record 47. Record number within stream 1: 47 +EventSelector SUCCESS Reading Event record 48. Record number within stream 1: 48 +EventSelector SUCCESS Reading Event record 49. Record number within stream 1: 49 +EventSelector SUCCESS Reading Event record 50. Record number within stream 1: 50 +EventSelector SUCCESS Reading Event record 51. Record number within stream 1: 51 +EventSelector SUCCESS Reading Event record 52. Record number within stream 1: 52 +EventSelector SUCCESS Reading Event record 53. Record number within stream 1: 53 +EventSelector SUCCESS Reading Event record 54. Record number within stream 1: 54 +EventSelector SUCCESS Reading Event record 55. Record number within stream 1: 55 +EventSelector SUCCESS Reading Event record 56. Record number within stream 1: 56 +EventSelector SUCCESS Reading Event record 57. Record number within stream 1: 57 +EventSelector SUCCESS Reading Event record 58. Record number within stream 1: 58 +EventSelector SUCCESS Reading Event record 59. Record number within stream 1: 59 +EventSelector SUCCESS Reading Event record 60. Record number within stream 1: 60 +EventSelector SUCCESS Reading Event record 61. Record number within stream 1: 61 +EventSelector SUCCESS Reading Event record 62. Record number within stream 1: 62 +EventSelector SUCCESS Reading Event record 63. Record number within stream 1: 63 +EventSelector SUCCESS Reading Event record 64. Record number within stream 1: 64 +EventSelector SUCCESS Reading Event record 65. Record number within stream 1: 65 +EventSelector SUCCESS Reading Event record 66. Record number within stream 1: 66 +EventSelector SUCCESS Reading Event record 67. Record number within stream 1: 67 +EventSelector SUCCESS Reading Event record 68. Record number within stream 1: 68 +EventSelector SUCCESS Reading Event record 69. Record number within stream 1: 69 +EventSelector SUCCESS Reading Event record 70. Record number within stream 1: 70 +EventSelector SUCCESS Reading Event record 71. Record number within stream 1: 71 +EventSelector SUCCESS Reading Event record 72. Record number within stream 1: 72 +EventSelector SUCCESS Reading Event record 73. Record number within stream 1: 73 +EventSelector SUCCESS Reading Event record 74. Record number within stream 1: 74 +EventSelector SUCCESS Reading Event record 75. Record number within stream 1: 75 +EventSelector SUCCESS Reading Event record 76. Record number within stream 1: 76 +EventSelector SUCCESS Reading Event record 77. Record number within stream 1: 77 +EventSelector SUCCESS Reading Event record 78. Record number within stream 1: 78 +EventSelector SUCCESS Reading Event record 79. Record number within stream 1: 79 +EventSelector SUCCESS Reading Event record 80. Record number within stream 1: 80 +EventSelector SUCCESS Reading Event record 81. Record number within stream 1: 81 +EventSelector SUCCESS Reading Event record 82. Record number within stream 1: 82 +EventSelector SUCCESS Reading Event record 83. Record number within stream 1: 83 +EventSelector SUCCESS Reading Event record 84. Record number within stream 1: 84 +EventSelector SUCCESS Reading Event record 85. Record number within stream 1: 85 +EventSelector SUCCESS Reading Event record 86. Record number within stream 1: 86 +EventSelector SUCCESS Reading Event record 87. Record number within stream 1: 87 +EventSelector SUCCESS Reading Event record 88. Record number within stream 1: 88 +EventSelector SUCCESS Reading Event record 89. Record number within stream 1: 89 +EventSelector SUCCESS Reading Event record 90. Record number within stream 1: 90 +EventSelector SUCCESS Reading Event record 91. Record number within stream 1: 91 +EventSelector SUCCESS Reading Event record 92. Record number within stream 1: 92 +EventSelector SUCCESS Reading Event record 93. Record number within stream 1: 93 +EventSelector SUCCESS Reading Event record 94. Record number within stream 1: 94 +EventSelector SUCCESS Reading Event record 95. Record number within stream 1: 95 +EventSelector SUCCESS Reading Event record 96. Record number within stream 1: 96 +EventSelector SUCCESS Reading Event record 97. Record number within stream 1: 97 +EventSelector SUCCESS Reading Event record 98. Record number within stream 1: 98 +EventSelector SUCCESS Reading Event record 99. Record number within stream 1: 99 +EventSelector SUCCESS Reading Event record 100. Record number within stream 1: 100 +ApplicationMgr INFO Application Manager Stopped successfully +FSROutputStreamDstWriter INFO Set up File Summary Record +FSROutputStreamDstWriter INFO Events output: 1 +TDirectoryName1 SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections +TDirectoryName1 SUCCESS List of booked N-Tuples in directory "FILE1/TDirectoryName1" +TDirectoryName1 SUCCESS ID=TTreeName1 Title="TTreeName1" #items=21 {Bs_M,Bs_P,Bs_PT,Bs_PX,Bs_PY,Bs_PZ,Bs_ENERGY,mup_M,mup_P,mup_PT,mup_PX,mup_PY,mup_} +TDirectoryName2 SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections +TDirectoryName2 SUCCESS List of booked N-Tuples in directory "FILE1/TDirectoryName2" +TDirectoryName2 SUCCESS ID=TTreeName2 Title="TTreeName2" #items=21 {Bs_M,Bs_P,Bs_PT,Bs_PX,Bs_PY,Bs_PZ,Bs_ENERGY,ep_M,ep_P,ep_PT,ep_PX,ep_PY,ep_PZ,ep_} +LAZY_AND: DaVinci #=100 Sum=14 Eff=|( 14.00000 +- 3.46987 )%| + NONLAZY_OR: FileSummaryRecords #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: GenFSR #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecordStream/FSROutputStreamDstWriter #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + NONLAZY_OR: UserAnalysis #=100 Sum=14 Eff=|( 14.00000 +- 3.46987 )%| + LAZY_AND: Alg1 #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LoKi__HDRFilter/HDRFilter_SeeNoEvil1 #=100 Sum=12 Eff=|( 12.00000 +- 3.24962 )%| + FunTupleBase_Particles/TDirectoryName1 #=12 Sum=12 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: Alg2 #=100 Sum=7 Eff=|( 7.000000 +- 2.55147 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#17 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#18 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#19 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#20 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#21 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#22 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#23 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#24 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#25 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#26 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#27 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#6 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#7 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#8 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#9 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#10 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#11 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#12 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#13 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#14 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#15 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#16 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=100 Sum=100 Eff=|( 100.0000 +- 0.00000 )%| + LoKi__HDRFilter/HDRFilter_SeeNoEvil2 #=100 Sum=7 Eff=|( 7.000000 +- 2.55147 )%| + FunTupleBase_Particles/TDirectoryName2 #=7 Sum=7 Eff=|( 100.0000 +- 0.00000 )%| +ToolSvc INFO Removing all tools created by ToolSvc +RFileCnv INFO dumping contents of /NTUPLES/FILE1 +TFile: name=tutorial7_multiple_sel_lines.root, title=Gaudi Trees, option=CREATE +NTupleSvc INFO NTuples saved successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +HDRFilter_SeeNoEvil1 INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"#passed" | 100 | 12 |( 12.00000 +- 3.249615)% | +HDRFilter_SeeNoEvil2 INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"#passed" | 100 | 7 |( 7.000000 +- 2.551470)% | +TDirectoryName1 INFO Number of counters : 7 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# events with multiple candidates for field Bs"| 8 | + | "# events with multiple candidates for field mum"| 8 | + | "# events with multiple candidates for field mup"| 8 | + | "# non-empty events for field Bs" | 12 | + | "# non-empty events for field mum" | 12 | + | "# non-empty events for field mup" | 12 | + | "# processed events" | 12 | +TDirectoryName2 INFO Number of counters : 7 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# events with multiple candidates for field Bs"| 3 | + | "# events with multiple candidates for field em"| 3 | + | "# events with multiple candidates for field ep"| 3 | + | "# non-empty events for field Bs" | 7 | + | "# non-empty events for field em" | 7 | + | "# non-empty events for field ep" | 7 | + | "# processed events" | 7 | +ToolSvc.HltFactory INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# loaded from PYTHON" | 2 | diff --git a/Phys/DaVinci/python/DaVinci/algorithms.py b/Phys/DaVinci/python/DaVinci/algorithms.py index 53db29c2a..431c5d95c 100644 --- a/Phys/DaVinci/python/DaVinci/algorithms.py +++ b/Phys/DaVinci/python/DaVinci/algorithms.py @@ -92,6 +92,29 @@ def add_filter(name, code): """ import re from DaVinci import options + + #if code ends with HLT_PASS then check that the lines inside + # HLT_PASS contain suffix decision + if code.startswith("HLT_PASS("): + #check if it ends with braces + if not code.endswith(")"): + raise Exception("The specified code must end with brackets ')'") + + #find all the line names between apostrophe + # e.g. turns string "HLT_PASS('Line1 ','Line2')" to list('Line1', 'Line2) + line_names = re.findall(r"\'([^\']*)\'", code) + + #remove whitespace + remove_whitespace = lambda s: s.replace(' ', '') + line_names = list(map(remove_whitespace, line_names)) + + #check for suffix 'Decision', if not add one + add_suff_to_elem = lambda s: s + 'Decision' if not s.endswith('Decision') else s + line_names = list(map(add_suff_to_elem, line_names)) + + #put back the code together + code = 'HLT_PASS(\'' + '\',\''.join(line_names) + '\')' + dec_reports = None for source in ["Hlt2", "Spruce"]: if re.search("^HLT_PASS.*" + source, code): @@ -460,7 +483,7 @@ def filter_on(location, decay_descriptor=None, bank_type=None): def expand_input_files(options): """ - Function to expand input files list including all the files matching + Function to expand input files list including all the files matching a specified pattern according to the rules used by Unix (uses `glob`). Args: -- GitLab