From f26b973a958290d72c871faccd87c3cf905315b5 Mon Sep 17 00:00:00 2001 From: Abhijit Mathad <abhijit.mathad@cern.ch> Date: Tue, 7 Jun 2022 18:26:01 +0200 Subject: [PATCH] Test of FunTuple with v2 Composites and ChargedBasic --- .../options/option_davinci_v2_composites.py | 76 +++++++ .../options/option_davinci_v2_composites.yaml | 21 ++ .../test_davinci_v2_composites.qmt | 78 +++++++ .../tests/refs/test_davinci_v2_composites.ref | 195 ++++++++++++++++++ 4 files changed, 370 insertions(+) create mode 100644 DaVinciTests/tests/options/option_davinci_v2_composites.py create mode 100644 DaVinciTests/tests/options/option_davinci_v2_composites.yaml create mode 100755 DaVinciTests/tests/qmtest/davinci.qms/test_davinci_v2_composites.qmt create mode 100644 DaVinciTests/tests/refs/test_davinci_v2_composites.ref diff --git a/DaVinciTests/tests/options/option_davinci_v2_composites.py b/DaVinciTests/tests/options/option_davinci_v2_composites.py new file mode 100644 index 000000000..9f48db5c2 --- /dev/null +++ b/DaVinciTests/tests/options/option_davinci_v2_composites.py @@ -0,0 +1,76 @@ +############################################################################### +# (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. # +############################################################################### + +from PyConf.Algorithms import ChargedBasicsProducer, UniqueIDGeneratorAlg +from PyConf.Algorithms import ThOrCombiner__2ChargedBasics +from PyConf.Algorithms import ThOrCombiner__CompositesChargedBasics +import Functors as F +from FunTuple import FunctorCollection +from FunTuple import FunTuple_Composites +from FunTuple import FunTuple_ChargedBasics +from DaVinci import options + +#make unique_id_generator +unique_id_gen = UniqueIDGeneratorAlg() + +#produce charged basic particles +produce_muons = ChargedBasicsProducer( + InputUniqueIDGenerator=unique_id_gen, ParticleID='muon') + +produce_jpsi = ThOrCombiner__2ChargedBasics( + InputUniqueIDGenerator=unique_id_gen, + DecayDescriptor="J/psi(1S) -> mu+ mu-", + Input1=produce_muons.Particles, + Input2=produce_muons.Particles) + +produce_kaons = ChargedBasicsProducer( + InputUniqueIDGenerator=unique_id_gen, ParticleID='kaon') + +produce_B = ThOrCombiner__CompositesChargedBasics( + InputUniqueIDGenerator=unique_id_gen, + DecayDescriptor="[B+ -> J/psi(1S) K+]cc", + Input1=produce_jpsi.Output, + Input2=produce_kaons.Particles) + +#define FunTuple instance +# Cannot yet use CHILD functors with v2. +variables = FunctorCollection({"PX": F.PX, "PY": F.PY, "PZ": F.PZ}) + +#Note CC here and cc (small case) above in the decay descriptor. Needs to be uniform. +# Decay descriptor parsing is not yet available with v2 Composites. +# Hence, we are simply running over all particles in TES and not selecting any subset using the decay descriptor for the moment. +bfields = {"B": "[B+ -> J/psi(1S) K+]CC"} +bvars = {"B": variables} +ntuple_composite = FunTuple_Composites( + name="TupleB", + tuple_name="DecayTree", + fields=bfields, + variables=bvars, + inputs=produce_B.Output) + +# Decay descriptor parsing is not yet available with v2 Composites or ChargedBasic (see above comment). +kfields = {"K": "[B+ -> J/psi(1S) ^K+]CC"} +kvars = {"K": variables} +ntuple_charged_basic = FunTuple_ChargedBasics( + name="TupleK", + tuple_name="DecayTree", + fields=kfields, + variables=kvars, + inputs=produce_kaons.Particles) + +options.evt_max = 2 + + +def main(): + return { + "UserAlgs_1": [ntuple_composite], + 'UserAlgs_2': {ntuple_charged_basic} + }, [] diff --git a/DaVinciTests/tests/options/option_davinci_v2_composites.yaml b/DaVinciTests/tests/options/option_davinci_v2_composites.yaml new file mode 100644 index 000000000..8bcdef5c8 --- /dev/null +++ b/DaVinciTests/tests/options/option_davinci_v2_composites.yaml @@ -0,0 +1,21 @@ +############################################################################### +# (c) Copyright 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. # +############################################################################### + +#non-sense json file +annsvc_config: 'root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/NovemberFEST/hlt2_D0_Kpi_10evts_newPacking.tck.json' +evt_max: -1 +histo_file: 'v2_example.root' +lumi: false +ntuple_file: 'v2_example.root' +print_freq: 1 +#non-sense process +process: 'Hlt2' +stream: 'default' \ No newline at end of file diff --git a/DaVinciTests/tests/qmtest/davinci.qms/test_davinci_v2_composites.qmt b/DaVinciTests/tests/qmtest/davinci.qms/test_davinci_v2_composites.qmt new file mode 100755 index 000000000..1c8acaf55 --- /dev/null +++ b/DaVinciTests/tests/qmtest/davinci.qms/test_davinci_v2_composites.qmt @@ -0,0 +1,78 @@ +<?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 for the new DaVinci configuration checking the correct processing v2 composites +# Prerequisites: None +# inputfiledb FEST_November_2021_dst_newPacking $DAVINCIROOT/options/DaVinciDB-Example.yaml +# joboptfile ../options/option_davinci_v2_composites.yaml +# user_algorithms ../options/option_davinci_v2_composites:main +####################################################### +--> +<extension class="GaudiTest.GaudiExeTest" kind="test"> + <argument name="program"><text>davinci</text></argument> + <argument name="args"><set> + <text>--inputfiledb</text> + <text>FEST_November_2021_dst_newPacking</text> + <text>$DAVINCIROOT/options/DaVinciDB-Example.yaml</text> + <text>--joboptfile</text> + <text>../options/option_davinci_v2_composites.yaml</text> + <text>--user_algorithms</text> + <text>../options/option_davinci_v2_composites:main</text> + </set></argument> + <argument name="reference"><text>../refs/test_davinci_v2_composites.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 sys, os, glob +from ROOT import TFile + +B_vars_stored =['B_PX', 'B_PY', 'B_PZ'] +K_vars_stored =['K_PX', 'K_PY', 'K_PZ'] + +#sort the expected vars +B_vars_stored = sorted(B_vars_stored) + +#open the TFile and TTree +ntuple = './v2_example.root' +if not os.path.isfile(ntuple): raise Exception(f"File: {ntuple} does not exist!") +f = TFile.Open(ntuple) +t_B = f.Get('TupleB/DecayTree') +t_K = f.Get('TupleK/DecayTree') + +#sort the stores vars +b_names = sorted([b.GetName() for b in t_B.GetListOfLeaves()]) +K_names = sorted([K.GetName() for K in t_K.GetListOfLeaves()]) + +B_excluded_1 = set(B_vars_stored) - set(b_names) +B_excluded_2 = set(b_names) - set(B_vars_stored) +if len(B_excluded_1) != 0: raise Exception('Number of stored variables is less than what is expected. The extra variables expected are: ' , B_excluded_1) +if len(B_excluded_2) != 0: raise Exception('Number of stored variables is greater than what is expected. The extra variables stored are: ', B_excluded_2) + +K_excluded_1 = set(K_vars_stored) - set(K_names) +K_excluded_2 = set(K_names) - set(K_vars_stored) +if len(K_excluded_1) != 0: raise Exception('Number of stored variables is less than what is expected. The extra variables expected are: ' , K_excluded_1) +if len(K_excluded_2) != 0: raise Exception('Number of stored variables is greater than what is expected. The extra variables stored are: ', K_excluded_2) + +f.Close() +print('Test successfully completed!') +os.system(f"rm {ntuple}") +#countErrorLines({"FATAL":0, "ERROR":0}) + </text></argument> +</extension> diff --git a/DaVinciTests/tests/refs/test_davinci_v2_composites.ref b/DaVinciTests/tests/refs/test_davinci_v2_composites.ref new file mode 100644 index 000000000..16be0b525 --- /dev/null +++ b/DaVinciTests/tests/refs/test_davinci_v2_composites.ref @@ -0,0 +1,195 @@ +INFO User algorithm option_davinci_v2_composites.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:v2_example.root as FILE1 +RootHistSvc INFO Writing ROOT histograms to: v2_example.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 +ChargedBasicsProducer INFO Initialising ChargedBasicsProducer +ChargedBasicsProducer#1 INFO Initialising ChargedBasicsProducer +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 +ChargedBasicsProducer#1 INFO Executing ChargedBasicsProducer +TupleK INFO find_candidates: For v2 Composites, the decay descriptor parsing is not implemented. Running over all particles in TES. +RFileCnv INFO opening Root file "v2_example.root" for writing +RCWNTupleCnv INFO Booked TTree with ID: DecayTree "DecayTree" in directory v2_example.root:/TupleK +ChargedBasicsProducer INFO Executing ChargedBasicsProducer +TupleB INFO find_candidates: For v2 Composites, the decay descriptor parsing is not implemented. Running over all particles in TES. +RCWNTupleCnv INFO Booked TTree with ID: DecayTree "DecayTree" in directory v2_example.root:/TupleB +EventSelector SUCCESS Reading Event record 2. Record number within stream 1: 2 +ChargedBasicsProducer#1 INFO Executing ChargedBasicsProducer +TupleK INFO find_candidates: For v2 Composites, the decay descriptor parsing is not implemented. Running over all particles in TES. +ChargedBasicsProducer INFO Executing ChargedBasicsProducer +TupleB INFO find_candidates: For v2 Composites, the decay descriptor parsing is not implemented. Running over all particles in TES. +ApplicationMgr INFO Application Manager Stopped successfully +FSROutputStreamDstWriter INFO Set up File Summary Record +FSROutputStreamDstWriter INFO Events output: 1 +TupleB SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections +TupleB SUCCESS List of booked N-Tuples in directory "FILE1/TupleB" +TupleB SUCCESS ID=DecayTree Title="DecayTree" #items=3 {B_PX,B_PY,B_PZ} +TupleK SUCCESS Booked 1 N-Tuples and 0 Event Tag Collections +TupleK SUCCESS List of booked N-Tuples in directory "FILE1/TupleK" +TupleK SUCCESS ID=DecayTree Title="DecayTree" #items=3 {K_PX,K_PY,K_PZ} +LAZY_AND: DaVinci #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + NONLAZY_OR: FileSummaryRecords #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: GenFSR #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecordStream/FSROutputStreamDstWriter #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + NONLAZY_OR: UserAnalysis #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: UserAlgs_1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + FunTupleBase_Composites/TupleB #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + LAZY_AND: UserAlgs_2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + LHCb__UnpackRawEvent/LHCb__UnpackRawEvent #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + HltPackedBufferDecoder/HltPackedBufferDecoder #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCParticle/UnpackMCParticle #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + UnpackMCVertex/UnpackMCVertex #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#4 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RecVertexUnpacker/RecVertexUnpacker#5 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#4 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + VertexUnpacker/VertexUnpacker#5 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#4 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#5 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#6 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#7 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + TrackUnpacker/TrackUnpacker#8 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + RichPIDUnpacker/RichPIDUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + MuonPIDUnpacker/MuonPIDUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + CaloHypoUnpacker/CaloHypoUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ProtoParticleUnpacker/ProtoParticleUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#4 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + ParticleUnpacker/ParticleUnpacker#5 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#2 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#3 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#4 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + P2VRelationUnpacker/P2VRelationUnpacker#5 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + PP2MCPRelationUnpacker/PP2MCPRelationUnpacker#1 #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| + FunTupleBase_ChargedBasics/TupleK #=2 Sum=2 Eff=|( 100.0000 +- 0.00000 )%| +ToolSvc INFO Removing all tools created by ToolSvc +RFileCnv INFO dumping contents of /NTUPLES/FILE1 +TFile: name=v2_example.root, title=Gaudi Trees, option=CREATE +NTupleSvc INFO NTuples saved successfully +ApplicationMgr INFO Application Manager Finalized successfully +ApplicationMgr INFO Application Manager Terminated successfully +ChargedBasicsProducer INFO Number of counters : 3 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "Event" | 2 | + | "Nb created anti-particles" | 9 | 0 | 0.0000 | 0.0000 | 4.2950e+09 | 0.0000 | + | "Nb created particles" | 11 | 0 | 0.0000 | 0.0000 | 4.2950e+09 | 0.0000 | +ChargedBasicsProducer#1 INFO Number of counters : 3 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "Event" | 2 | + | "Nb created anti-particles" | 9 | 0 | 0.0000 | 0.0000 | 4.2950e+09 | 0.0000 | + | "Nb created particles" | 11 | 0 | 0.0000 | 0.0000 | 4.2950e+09 | 0.0000 | +ThOrCombiner__2ChargedBasics INFO Number of counters : 8 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"# output reallocations" | 2 | 0 |( 0.000000 +- 0.000000)% | + |*"# passed CombinationCut" | 49 | 49 |( 100.0000 +- 0.000000)% | + |*"# passed CompositeCut" | 49 | 49 |( 100.0000 +- 0.000000)% | + |*"# passed vertex fit" | 49 | 49 |( 100.0000 +- 0.000000)% | + | "# shuffled in 2-particle buffer" | 3 | 6 | 2.0000 | + |*"CombinationCut SIMD utilisation" | 64 | 49 |( 76.56250 +- 5.295094)% | + |*"CombinationCut ideal SIMD utilisation" | 52 | 49 |( 94.23077 +- 3.233357)% | + |*"CompositeCut SIMD utilisation" | 52 | 49 |( 94.23077 +- 3.233357)% | +ThOrCombiner__CompositesChargedB... INFO Number of counters : 8 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"# output reallocations" | 2 | 2 |( 100.0000 +- 0.000000)% | + |*"# passed CombinationCut" | 490 | 490 |( 100.0000 +- 0.000000)% | + |*"# passed CompositeCut" | 143 | 143 |( 100.0000 +- 0.000000)% | + |*"# passed vertex fit" | 490 | 143 |( 29.18367 +- 2.053708)% | + | "# shuffled in 2-particle buffer" | 49 | 97 | 1.9796 | + |*"CombinationCut SIMD utilisation" | 688 | 490 |( 71.22093 +- 1.726029)% | + |*"CombinationCut ideal SIMD utilisation" | 492 | 490 |( 99.59350 +- 0.2868570)% | + |*"CompositeCut SIMD utilisation" | 376 | 143 |( 38.03191 +- 2.503596)% | +TupleB INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# processed events" | 2 | +TupleK INFO Number of counters : 1 + | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + | "# processed events" | 2 | -- GitLab