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