From d3d8040d4e40795d63754985d1e3107401eb7c7d Mon Sep 17 00:00:00 2001 From: Eduardo Rodrigues <eduardo.rodrigues@cern.ch> Date: Mon, 7 Aug 2023 23:21:38 +0200 Subject: [PATCH] Fix the nightlies - 2 DaVinci tests failing --- .../example_data/hlt2_b2ksttaumu_opt.yaml | 2 +- .../tupling/option_davinci_configFuntuple.py | 2 +- .../test_davinci_tupling_from_collections.qmt | 2 +- .../test_davinci_tupling_from_spruce.qmt | 4 +- .../refs/test_davinci_configFuntuple.ref | 7 +- .../test_davinci_configFuntuple.ref.detdesc | 7 +- .../refs/test_davinci_tupling_from_spruce.ref | 10 +- ...st_davinci_tupling_from_spruce.ref.detdesc | 10 +- .../davinci.qms/test_davinci_filters.qmt | 2 +- .../tests/refs/test_davinci_filters.ref | 10 +- .../refs/test_davinci_filters.ref.detdesc | 10 +- Phys/DaVinci/python/DaVinci/LbExec.py | 2 +- Phys/DaVinci/python/DaVinci/algorithms.py | 99 +++---------------- Phys/DaVinci/tests/config/test_algorithms.py | 31 ++---- doc/configuration/davinci_configuration.rst | 13 ++- 15 files changed, 52 insertions(+), 159 deletions(-) diff --git a/DaVinciExamples/example_data/hlt2_b2ksttaumu_opt.yaml b/DaVinciExamples/example_data/hlt2_b2ksttaumu_opt.yaml index b9a9a26d3..4745ad9f0 100644 --- a/DaVinciExamples/example_data/hlt2_b2ksttaumu_opt.yaml +++ b/DaVinciExamples/example_data/hlt2_b2ksttaumu_opt.yaml @@ -1,6 +1,6 @@ input_files: - root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/tests/b_to_ksttaumu_test_isolation.dst -annsvc_config: root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/tests/b_to_ksttaumu_test_isolation.tck.json +input_manifest_file: root://eoslhcb.cern.ch//eos/lhcb/wg/dpa/wp3/tests/b_to_ksttaumu_test_isolation.tck.json input_type: ROOT evt_max: -1 ntuple_file: b_to_ksttaumu_test_isolation.root diff --git a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_configFuntuple.py b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_configFuntuple.py index 985721f62..6f04a60d8 100644 --- a/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_configFuntuple.py +++ b/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_configFuntuple.py @@ -52,7 +52,7 @@ def main(options: Options): line = "SpruceB2OC_BdToDsmPi_DsmToKpKmPim" config = { "location": f"/Event/Spruce/{line}/Particles", - "filters": [f"HLT_PASS('{line}Decision')"], + "filters": [f"{line}Decision"], "preamble": ["TRACK_MAX_PT = MAXTREE(ISBASIC & HASTRACK, PT, -1)"], "tuple": "DecayTree", "fields": fields, diff --git a/DaVinciExamples/tests/qmtest/tupling.qms/test_davinci_tupling_from_collections.qmt b/DaVinciExamples/tests/qmtest/tupling.qms/test_davinci_tupling_from_collections.qmt index 5f3bc8e5f..9c29016d0 100644 --- a/DaVinciExamples/tests/qmtest/tupling.qms/test_davinci_tupling_from_collections.qmt +++ b/DaVinciExamples/tests/qmtest/tupling.qms/test_davinci_tupling_from_collections.qmt @@ -33,7 +33,7 @@ countErrorLines({"FATAL": 0, "WARNING": 0, "ERROR": 0}, import sys, os from ROOT import TFile -expected_branches = ['BUNCHCROSSING_ID', 'BUNCHCROSSING_TYPE', 'D0_CaloClusterMass', 'D0_CaloNeutral1To9EnergyRatio', 'D0_CaloNeutral4To9EnergyRatio', 'D0_CaloNeutralEcalEnergy', 'D0_CaloNeutralHcal2EcalEnergyRatio', 'D0_CaloNeutralID', 'D0_CaloNeutralShowerShape', 'D0_CaloNumSaturatedCells', 'D0_CaloTrackMatchChi2', 'D0_ENERGY', 'D0_M', 'D0_MC_GD_GD_MOTHER_ID', 'D0_MC_GD_GD_MOTHER_KEY', 'D0_MC_GD_MOTHER_ID', 'D0_MC_GD_MOTHER_KEY', 'D0_MC_ISPROMPT', 'D0_MC_LONGLIVED_ID', 'D0_MC_LONGLIVED_KEY', 'D0_MC_MOTHER_ID', 'D0_MC_MOTHER_KEY', 'D0_P', 'D0_PARTICLE_ID', 'D0_PROBNN_D', 'D0_PROBNN_E', 'D0_PROBNN_GHOST', 'D0_PROBNN_K', 'D0_PROBNN_MU', 'D0_PROBNN_P', 'D0_PROBNN_PI', 'D0_PT', 'D0_PX', 'D0_PY', 'D0_PZ', 'D0_TRUEENDVERTEX_X', 'D0_TRUEENDVERTEX_Y', 'D0_TRUEENDVERTEX_Z', 'D0_TRUEENERGY', 'D0_TRUEID', 'D0_TRUEORIGINVERTEX_X', 'D0_TRUEORIGINVERTEX_Y', 'D0_TRUEORIGINVERTEX_Z', 'D0_TRUEP', 'D0_TRUEPT', 'D0_TRUEPX', 'D0_TRUEPY', 'D0_TRUEPZ', 'EVENTNUMBER', 'GPSTIME', 'Hlt2_TCK', 'Kminus_CaloClusterMass', 'Kminus_CaloNeutral1To9EnergyRatio', 'Kminus_CaloNeutral4To9EnergyRatio', 'Kminus_CaloNeutralEcalEnergy', 'Kminus_CaloNeutralHcal2EcalEnergyRatio', 'Kminus_CaloNeutralID', 'Kminus_CaloNeutralShowerShape', 'Kminus_CaloNumSaturatedCells', 'Kminus_CaloTrackMatchChi2', 'Kminus_ENERGY', 'Kminus_M', 'Kminus_MC_GD_GD_MOTHER_ID', 'Kminus_MC_GD_GD_MOTHER_KEY', 'Kminus_MC_GD_MOTHER_ID', 'Kminus_MC_GD_MOTHER_KEY', 'Kminus_MC_ISPROMPT', 'Kminus_MC_LONGLIVED_ID', 'Kminus_MC_LONGLIVED_KEY', 'Kminus_MC_MOTHER_ID', 'Kminus_MC_MOTHER_KEY', 'Kminus_P', 'Kminus_PARTICLE_ID', 'Kminus_PROBNN_D', 'Kminus_PROBNN_E', 'Kminus_PROBNN_GHOST', 'Kminus_PROBNN_K', 'Kminus_PROBNN_MU', 'Kminus_PROBNN_P', 'Kminus_PROBNN_PI', 'Kminus_PT', 'Kminus_PX', 'Kminus_PY', 'Kminus_PZ', 'Kminus_TRUEENDVERTEX_X', 'Kminus_TRUEENDVERTEX_Y', 'Kminus_TRUEENDVERTEX_Z', 'Kminus_TRUEENERGY', 'Kminus_TRUEID', 'Kminus_TRUEORIGINVERTEX_X', 'Kminus_TRUEORIGINVERTEX_Y', 'Kminus_TRUEORIGINVERTEX_Z', 'Kminus_TRUEP', 'Kminus_TRUEPT', 'Kminus_TRUEPX', 'Kminus_TRUEPY', 'Kminus_TRUEPZ', 'ODINTCK', 'RUNNUMBER', 'indx', 'piplus_CaloClusterMass', 'piplus_CaloNeutral1To9EnergyRatio', 'piplus_CaloNeutral4To9EnergyRatio', 'piplus_CaloNeutralEcalEnergy', 'piplus_CaloNeutralHcal2EcalEnergyRatio', 'piplus_CaloNeutralID', 'piplus_CaloNeutralShowerShape', 'piplus_CaloNumSaturatedCells', 'piplus_CaloTrackMatchChi2', 'piplus_ENERGY', 'piplus_M', 'piplus_MC_GD_GD_MOTHER_ID', 'piplus_MC_GD_GD_MOTHER_KEY', 'piplus_MC_GD_MOTHER_ID', 'piplus_MC_GD_MOTHER_KEY', 'piplus_MC_ISPROMPT', 'piplus_MC_LONGLIVED_ID', 'piplus_MC_LONGLIVED_KEY', 'piplus_MC_MOTHER_ID', 'piplus_MC_MOTHER_KEY', 'piplus_P', 'piplus_PARTICLE_ID', 'piplus_PROBNN_D', 'piplus_PROBNN_E', 'piplus_PROBNN_GHOST', 'piplus_PROBNN_K', 'piplus_PROBNN_MU', 'piplus_PROBNN_P', 'piplus_PROBNN_PI', 'piplus_PT', 'piplus_PX', 'piplus_PY', 'piplus_PZ', 'piplus_TRUEENDVERTEX_X', 'piplus_TRUEENDVERTEX_Y', 'piplus_TRUEENDVERTEX_Z', 'piplus_TRUEENERGY', 'piplus_TRUEID', 'piplus_TRUEORIGINVERTEX_X', 'piplus_TRUEORIGINVERTEX_Y', 'piplus_TRUEORIGINVERTEX_Z', 'piplus_TRUEP', 'piplus_TRUEPT', 'piplus_TRUEPX', 'piplus_TRUEPY', 'piplus_TRUEPZ', 'Hlt2Charm_D0ToKmPip_LineDecision'] +expected_branches = ['BUNCHCROSSING_ID', 'BUNCHCROSSING_TYPE', 'D0_CaloClusterMass', 'D0_CaloNeutral1To9EnergyRatio', 'D0_CaloNeutral4To9EnergyRatio', 'D0_CaloNeutralEcalEnergy', 'D0_CaloNeutralHcal2EcalEnergyRatio', 'D0_CaloNeutralID', 'D0_CaloNeutralShowerShape', 'D0_CaloNumSaturatedCells', 'D0_CaloTrackMatchChi2', 'D0_ENERGY', 'D0_M', 'D0_MC_GD_GD_MOTHER_ID', 'D0_MC_GD_GD_MOTHER_KEY', 'D0_MC_GD_MOTHER_ID', 'D0_MC_GD_MOTHER_KEY', 'D0_MC_ISPROMPT', 'D0_MC_LONGLIVED_ID', 'D0_MC_LONGLIVED_KEY', 'D0_MC_MOTHER_ID', 'D0_MC_MOTHER_KEY', 'D0_P', 'D0_PARTICLE_ID', 'D0_PROBNN_D', 'D0_PROBNN_E', 'D0_PROBNN_GHOST', 'D0_PROBNN_K', 'D0_PROBNN_MU', 'D0_PROBNN_P', 'D0_PROBNN_PI', 'D0_PT', 'D0_PX', 'D0_PY', 'D0_PZ', 'D0_TRUEENDVERTEX_X', 'D0_TRUEENDVERTEX_Y', 'D0_TRUEENDVERTEX_Z', 'D0_TRUEENERGY', 'D0_TRUEID', 'D0_TRUEORIGINVERTEX_X', 'D0_TRUEORIGINVERTEX_Y', 'D0_TRUEORIGINVERTEX_Z', 'D0_TRUEP', 'D0_TRUEPT', 'D0_TRUEPX', 'D0_TRUEPY', 'D0_TRUEPZ', 'EVENTNUMBER', 'GPSTIME', 'Hlt2_TCK', 'Kminus_CaloClusterMass', 'Kminus_CaloNeutral1To9EnergyRatio', 'Kminus_CaloNeutral4To9EnergyRatio', 'Kminus_CaloNeutralEcalEnergy', 'Kminus_CaloNeutralHcal2EcalEnergyRatio', 'Kminus_CaloNeutralID', 'Kminus_CaloNeutralShowerShape', 'Kminus_CaloNumSaturatedCells', 'Kminus_CaloTrackMatchChi2', 'Kminus_ENERGY', 'Kminus_M', 'Kminus_MC_GD_GD_MOTHER_ID', 'Kminus_MC_GD_GD_MOTHER_KEY', 'Kminus_MC_GD_MOTHER_ID', 'Kminus_MC_GD_MOTHER_KEY', 'Kminus_MC_ISPROMPT', 'Kminus_MC_LONGLIVED_ID', 'Kminus_MC_LONGLIVED_KEY', 'Kminus_MC_MOTHER_ID', 'Kminus_MC_MOTHER_KEY', 'Kminus_P', 'Kminus_PARTICLE_ID', 'Kminus_PROBNN_D', 'Kminus_PROBNN_E', 'Kminus_PROBNN_GHOST', 'Kminus_PROBNN_K', 'Kminus_PROBNN_MU', 'Kminus_PROBNN_P', 'Kminus_PROBNN_PI', 'Kminus_PT', 'Kminus_PX', 'Kminus_PY', 'Kminus_PZ', 'Kminus_TRUEENDVERTEX_X', 'Kminus_TRUEENDVERTEX_Y', 'Kminus_TRUEENDVERTEX_Z', 'Kminus_TRUEENERGY', 'Kminus_TRUEID', 'Kminus_TRUEORIGINVERTEX_X', 'Kminus_TRUEORIGINVERTEX_Y', 'Kminus_TRUEORIGINVERTEX_Z', 'Kminus_TRUEP', 'Kminus_TRUEPT', 'Kminus_TRUEPX', 'Kminus_TRUEPY', 'Kminus_TRUEPZ', 'ODINTCK', 'RUNNUMBER', 'piplus_CaloClusterMass', 'piplus_CaloNeutral1To9EnergyRatio', 'piplus_CaloNeutral4To9EnergyRatio', 'piplus_CaloNeutralEcalEnergy', 'piplus_CaloNeutralHcal2EcalEnergyRatio', 'piplus_CaloNeutralID', 'piplus_CaloNeutralShowerShape', 'piplus_CaloNumSaturatedCells', 'piplus_CaloTrackMatchChi2', 'piplus_ENERGY', 'piplus_M', 'piplus_MC_GD_GD_MOTHER_ID', 'piplus_MC_GD_GD_MOTHER_KEY', 'piplus_MC_GD_MOTHER_ID', 'piplus_MC_GD_MOTHER_KEY', 'piplus_MC_ISPROMPT', 'piplus_MC_LONGLIVED_ID', 'piplus_MC_LONGLIVED_KEY', 'piplus_MC_MOTHER_ID', 'piplus_MC_MOTHER_KEY', 'piplus_P', 'piplus_PARTICLE_ID', 'piplus_PROBNN_D', 'piplus_PROBNN_E', 'piplus_PROBNN_GHOST', 'piplus_PROBNN_K', 'piplus_PROBNN_MU', 'piplus_PROBNN_P', 'piplus_PROBNN_PI', 'piplus_PT', 'piplus_PX', 'piplus_PY', 'piplus_PZ', 'piplus_TRUEENDVERTEX_X', 'piplus_TRUEENDVERTEX_Y', 'piplus_TRUEENDVERTEX_Z', 'piplus_TRUEENERGY', 'piplus_TRUEID', 'piplus_TRUEORIGINVERTEX_X', 'piplus_TRUEORIGINVERTEX_Y', 'piplus_TRUEORIGINVERTEX_Z', 'piplus_TRUEP', 'piplus_TRUEPT', 'piplus_TRUEPX', 'piplus_TRUEPY', 'piplus_TRUEPZ', 'Hlt2Charm_D0ToKmPip_LineDecision'] expected_mc_branches = ['BUNCHCROSSING_ID', 'BUNCHCROSSING_TYPE', 'D0_MC_ACCT', 'D0_MC_ACCT1', 'D0_MC_ACCT1S', 'D0_MC_ACCT1X', 'D0_MC_ACCT2', 'D0_MC_ACCT2S', 'D0_MC_ACCT2X', 'D0_MC_ACCT3', 'D0_MC_ACCT3S', 'D0_MC_ACCT3X', 'D0_MC_ACCUT', 'D0_MC_ACCUT1', 'D0_MC_ACCUT2', 'D0_MC_ACCVELO', 'D0_MC_ACCVELO_AND_T', 'D0_MC_GD_GD_MOTHER_ID', 'D0_MC_GD_GD_MOTHER_KEY', 'D0_MC_GD_MOTHER_ID', 'D0_MC_GD_MOTHER_KEY', 'D0_MC_HAST', 'D0_MC_HAST1', 'D0_MC_HAST1S', 'D0_MC_HAST1X', 'D0_MC_HAST2', 'D0_MC_HAST2S', 'D0_MC_HAST2X', 'D0_MC_HAST3', 'D0_MC_HAST3S', 'D0_MC_HAST3X', 'D0_MC_HASUT', 'D0_MC_HASUT1', 'D0_MC_HASUT2', 'D0_MC_HASVELO', 'D0_MC_HASVELO_AND_T', 'D0_MC_ISPROMPT', 'D0_MC_LONGLIVED_ID', 'D0_MC_LONGLIVED_KEY', 'D0_MC_MOTHER_ID', 'D0_MC_MOTHER_KEY', 'D0_MC_RECONSTRUCTIBLE', 'D0_RECONSTRUCTED', 'D0_TRUEENDVERTEX_X', 'D0_TRUEENDVERTEX_Y', 'D0_TRUEENDVERTEX_Z', 'D0_TRUEID', 'D0_TRUEORIGINVERTEX_X', 'D0_TRUEORIGINVERTEX_Y', 'D0_TRUEORIGINVERTEX_Z', 'GPSTIME', 'Kminus_MC_ACCT', 'Kminus_MC_ACCT1', 'Kminus_MC_ACCT1S', 'Kminus_MC_ACCT1X', 'Kminus_MC_ACCT2', 'Kminus_MC_ACCT2S', 'Kminus_MC_ACCT2X', 'Kminus_MC_ACCT3', 'Kminus_MC_ACCT3S', 'Kminus_MC_ACCT3X', 'Kminus_MC_ACCUT', 'Kminus_MC_ACCUT1', 'Kminus_MC_ACCUT2', 'Kminus_MC_ACCVELO', 'Kminus_MC_ACCVELO_AND_T', 'Kminus_MC_GD_GD_MOTHER_ID', 'Kminus_MC_GD_GD_MOTHER_KEY', 'Kminus_MC_GD_MOTHER_ID', 'Kminus_MC_GD_MOTHER_KEY', 'Kminus_MC_HAST', 'Kminus_MC_HAST1', 'Kminus_MC_HAST1S', 'Kminus_MC_HAST1X', 'Kminus_MC_HAST2', 'Kminus_MC_HAST2S', 'Kminus_MC_HAST2X', 'Kminus_MC_HAST3', 'Kminus_MC_HAST3S', 'Kminus_MC_HAST3X', 'Kminus_MC_HASUT', 'Kminus_MC_HASUT1', 'Kminus_MC_HASUT2', 'Kminus_MC_HASVELO', 'Kminus_MC_HASVELO_AND_T', 'Kminus_MC_ISPROMPT', 'Kminus_MC_LONGLIVED_ID', 'Kminus_MC_LONGLIVED_KEY', 'Kminus_MC_MOTHER_ID', 'Kminus_MC_MOTHER_KEY', 'Kminus_MC_RECONSTRUCTIBLE', 'Kminus_RECONSTRUCTED', 'Kminus_TRUEENDVERTEX_X', 'Kminus_TRUEENDVERTEX_Y', 'Kminus_TRUEENDVERTEX_Z', 'Kminus_TRUEID', 'Kminus_TRUEORIGINVERTEX_X', 'Kminus_TRUEORIGINVERTEX_Y', 'Kminus_TRUEORIGINVERTEX_Z', 'MCPVT', 'MCPVX', 'MCPVY', 'MCPVZ', 'MCPV_IDX', 'MCPV_SIZE', 'ODINTCK', 'piplus_MC_ACCT', 'piplus_MC_ACCT1', 'piplus_MC_ACCT1S', 'piplus_MC_ACCT1X', 'piplus_MC_ACCT2', 'piplus_MC_ACCT2S', 'piplus_MC_ACCT2X', 'piplus_MC_ACCT3', 'piplus_MC_ACCT3S', 'piplus_MC_ACCT3X', 'piplus_MC_ACCUT', 'piplus_MC_ACCUT1', 'piplus_MC_ACCUT2', 'piplus_MC_ACCVELO', 'piplus_MC_ACCVELO_AND_T', 'piplus_MC_GD_GD_MOTHER_ID', 'piplus_MC_GD_GD_MOTHER_KEY', 'piplus_MC_GD_MOTHER_ID', 'piplus_MC_GD_MOTHER_KEY', 'piplus_MC_HAST', 'piplus_MC_HAST1', 'piplus_MC_HAST1S', 'piplus_MC_HAST1X', 'piplus_MC_HAST2', 'piplus_MC_HAST2S', 'piplus_MC_HAST2X', 'piplus_MC_HAST3', 'piplus_MC_HAST3S', 'piplus_MC_HAST3X', 'piplus_MC_HASUT', 'piplus_MC_HASUT1', 'piplus_MC_HASUT2', 'piplus_MC_HASVELO', 'piplus_MC_HASVELO_AND_T', 'piplus_MC_ISPROMPT', 'piplus_MC_LONGLIVED_ID', 'piplus_MC_LONGLIVED_KEY', 'piplus_MC_MOTHER_ID', 'piplus_MC_MOTHER_KEY', 'piplus_MC_RECONSTRUCTIBLE', 'piplus_RECONSTRUCTED', 'piplus_TRUEENDVERTEX_X', 'piplus_TRUEENDVERTEX_Y', 'piplus_TRUEENDVERTEX_Z', 'piplus_TRUEID', 'piplus_TRUEORIGINVERTEX_X', 'piplus_TRUEORIGINVERTEX_Y', 'piplus_TRUEORIGINVERTEX_Z'] expected_branches += ['piplus_DTF_PX', 'piplus_DTF_PY', 'D0_DTF_PY', 'piplus_DTF_PZ', 'Kminus_DTF_PE', 'Kminus_DTF_PY', 'D0_DTF_PX', 'piplus_DTF_PE', 'D0_DTF_PZ', 'D0_DTF_PE', 'Kminus_DTF_PX', 'Kminus_DTF_PZ'] diff --git a/DaVinciExamples/tests/qmtest/tupling.qms/test_davinci_tupling_from_spruce.qmt b/DaVinciExamples/tests/qmtest/tupling.qms/test_davinci_tupling_from_spruce.qmt index ff7d0b4fa..d22d92b6e 100644 --- a/DaVinciExamples/tests/qmtest/tupling.qms/test_davinci_tupling_from_spruce.qmt +++ b/DaVinciExamples/tests/qmtest/tupling.qms/test_davinci_tupling_from_spruce.qmt @@ -1,7 +1,7 @@ <?xml version="1.0" ?> <!-- ############################################################################### -# (c) Copyright 2021 CERN for the benefit of the LHCb Collaboration # +# (c) Copyright 2021-2023 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". # @@ -20,7 +20,7 @@ <argument name="options_yaml_fn"><text>$DAVINCIEXAMPLESROOT/example_data/Spruce_all_lines_dst.yaml</text></argument> <argument name="extra_options_yaml"><text> evt_pre_filters: - Hlt2TopoLineFilter: "HLT_PASS('Hlt2Topo2BodyLineDecision')" + Hlt2TopoLineFilter: "Hlt2Topo2BodyLineDecision" ntuple_file: "DV_example_sprucing_ntp.root" histo_file: "DV_example_sprucing_his.root" print_freq: 1 diff --git a/DaVinciExamples/tests/refs/test_davinci_configFuntuple.ref b/DaVinciExamples/tests/refs/test_davinci_configFuntuple.ref index 224c5c4d2..22f3224a4 100644 --- a/DaVinciExamples/tests/refs/test_davinci_configFuntuple.ref +++ b/DaVinciExamples/tests/refs/test_davinci_configFuntuple.ref @@ -1,4 +1,3 @@ -DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead ApplicationMgr SUCCESS ==================================================================================================================================== ==================================================================================================================================== @@ -133,7 +132,7 @@ LAZY_AND: DaVinci #=113 Sum=1 Eff=|(0 NONLAZY_OR: UserAnalysis #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| LAZY_AND: B0Dspi #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| RawBankSizeFilter/FilterDstDataSize_Spruce #=113 Sum=113 Eff=|( 100.0000 +- 0.00000 )%| - LoKi__HDRFilter/Filter_B0Dspi #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| + VoidFilter/Filter_B0Dspi #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| FunTupleBase_Particles/Tuple_B0Dspi #=1 Sum=1 Eff=|( 100.0000 +- 0.00000 )%| RFileCnv INFO dumping contents of /NTUPLES/FILE1 TFile: name=DV_example_configFuntuple_ntp.root, title=Gaudi Trees, option=CREATE @@ -145,9 +144,7 @@ FilterDstDataSize_Spruce INFO Number of counters : 1 |*"Number of too small raw banks size" | 113 | 113 |( 100.0000 +- 0.000000)% | Filter_B0Dspi INFO Number of counters : 1 | Counter | # | sum | mean/eff^* | rms/err^* | min | max | - |*"#passed" | 113 | 1 |(0.8849558 +- 0.8810313)% | -ToolSvc.HltFactory INFO Number of counters : 1 - | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"Cut selection efficiency" | 113 | 1 |(0.8849558 +- 0.8810313)% | ToolSvc.HybridFactory INFO Number of counters : 1 | Counter | # | sum | mean/eff^* | rms/err^* | min | max | Tuple_B0Dspi INFO Number of counters : 4 diff --git a/DaVinciExamples/tests/refs/test_davinci_configFuntuple.ref.detdesc b/DaVinciExamples/tests/refs/test_davinci_configFuntuple.ref.detdesc index 224c5c4d2..22f3224a4 100644 --- a/DaVinciExamples/tests/refs/test_davinci_configFuntuple.ref.detdesc +++ b/DaVinciExamples/tests/refs/test_davinci_configFuntuple.ref.detdesc @@ -1,4 +1,3 @@ -DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead ApplicationMgr SUCCESS ==================================================================================================================================== ==================================================================================================================================== @@ -133,7 +132,7 @@ LAZY_AND: DaVinci #=113 Sum=1 Eff=|(0 NONLAZY_OR: UserAnalysis #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| LAZY_AND: B0Dspi #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| RawBankSizeFilter/FilterDstDataSize_Spruce #=113 Sum=113 Eff=|( 100.0000 +- 0.00000 )%| - LoKi__HDRFilter/Filter_B0Dspi #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| + VoidFilter/Filter_B0Dspi #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| FunTupleBase_Particles/Tuple_B0Dspi #=1 Sum=1 Eff=|( 100.0000 +- 0.00000 )%| RFileCnv INFO dumping contents of /NTUPLES/FILE1 TFile: name=DV_example_configFuntuple_ntp.root, title=Gaudi Trees, option=CREATE @@ -145,9 +144,7 @@ FilterDstDataSize_Spruce INFO Number of counters : 1 |*"Number of too small raw banks size" | 113 | 113 |( 100.0000 +- 0.000000)% | Filter_B0Dspi INFO Number of counters : 1 | Counter | # | sum | mean/eff^* | rms/err^* | min | max | - |*"#passed" | 113 | 1 |(0.8849558 +- 0.8810313)% | -ToolSvc.HltFactory INFO Number of counters : 1 - | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"Cut selection efficiency" | 113 | 1 |(0.8849558 +- 0.8810313)% | ToolSvc.HybridFactory INFO Number of counters : 1 | Counter | # | sum | mean/eff^* | rms/err^* | min | max | Tuple_B0Dspi INFO Number of counters : 4 diff --git a/DaVinciExamples/tests/refs/test_davinci_tupling_from_spruce.ref b/DaVinciExamples/tests/refs/test_davinci_tupling_from_spruce.ref index c00c98856..f2a0c9740 100644 --- a/DaVinciExamples/tests/refs/test_davinci_tupling_from_spruce.ref +++ b/DaVinciExamples/tests/refs/test_davinci_tupling_from_spruce.ref @@ -1,5 +1,3 @@ -DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead -DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead ApplicationMgr SUCCESS ==================================================================================================================================== ==================================================================================================================================== @@ -138,12 +136,12 @@ LAZY_AND: DaVinci #=113 Sum=48 Eff=|( NONLAZY_OR: UserAnalysis #=113 Sum=48 Eff=|( 42.47788 +- 4.65007 )%| LAZY_AND: B0DsK #=113 Sum=48 Eff=|( 42.47788 +- 4.65007 )%| RawBankSizeFilter/FilterDstDataSize_Spruce #=113 Sum=113 Eff=|( 100.0000 +- 0.00000 )%| - LoKi__HDRFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| + VoidFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| VoidFilter/HDRFilter_B0DsK #=70 Sum=48 Eff=|( 68.57143 +- 5.54862 )%| FunTupleBase_Particles/B0DsK_Tuple #=48 Sum=48 Eff=|( 100.0000 +- 0.00000 )%| LAZY_AND: B0Dspi #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| RawBankSizeFilter/FilterDstDataSize_Spruce #=113 Sum=113 Eff=|( 100.0000 +- 0.00000 )%| - LoKi__HDRFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| + VoidFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| VoidFilter/HDRFilter_B0Dspi #=70 Sum=1 Eff=|( 1.428571 +- 1.41833 )%| FunTupleBase_Particles/B0Dspi_Tuple #=1 Sum=1 Eff=|( 100.0000 +- 0.00000 )%| RFileCnv INFO dumping contents of /NTUPLES/FILE1 @@ -177,9 +175,7 @@ HDRFilter_B0Dspi INFO Number of counters : 1 |*"Cut selection efficiency" | 70 | 1 |( 1.428571 +- 1.418331)% | Hlt2TopoLineFilter INFO Number of counters : 1 | Counter | # | sum | mean/eff^* | rms/err^* | min | max | - |*"#passed" | 113 | 70 |( 61.94690 +- 4.567364)% | -ToolSvc.HltFactory INFO Number of counters : 1 - | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"Cut selection efficiency" | 113 | 70 |( 61.94690 +- 4.567364)% | ToolSvc.HybridFactory INFO Number of counters : 1 | Counter | # | sum | mean/eff^* | rms/err^* | min | max | Unpack_Spruce__Event_Spruce_Spru... INFO Number of counters : 4 diff --git a/DaVinciExamples/tests/refs/test_davinci_tupling_from_spruce.ref.detdesc b/DaVinciExamples/tests/refs/test_davinci_tupling_from_spruce.ref.detdesc index c00c98856..f2a0c9740 100644 --- a/DaVinciExamples/tests/refs/test_davinci_tupling_from_spruce.ref.detdesc +++ b/DaVinciExamples/tests/refs/test_davinci_tupling_from_spruce.ref.detdesc @@ -1,5 +1,3 @@ -DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead -DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead ApplicationMgr SUCCESS ==================================================================================================================================== ==================================================================================================================================== @@ -138,12 +136,12 @@ LAZY_AND: DaVinci #=113 Sum=48 Eff=|( NONLAZY_OR: UserAnalysis #=113 Sum=48 Eff=|( 42.47788 +- 4.65007 )%| LAZY_AND: B0DsK #=113 Sum=48 Eff=|( 42.47788 +- 4.65007 )%| RawBankSizeFilter/FilterDstDataSize_Spruce #=113 Sum=113 Eff=|( 100.0000 +- 0.00000 )%| - LoKi__HDRFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| + VoidFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| VoidFilter/HDRFilter_B0DsK #=70 Sum=48 Eff=|( 68.57143 +- 5.54862 )%| FunTupleBase_Particles/B0DsK_Tuple #=48 Sum=48 Eff=|( 100.0000 +- 0.00000 )%| LAZY_AND: B0Dspi #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| RawBankSizeFilter/FilterDstDataSize_Spruce #=113 Sum=113 Eff=|( 100.0000 +- 0.00000 )%| - LoKi__HDRFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| + VoidFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| VoidFilter/HDRFilter_B0Dspi #=70 Sum=1 Eff=|( 1.428571 +- 1.41833 )%| FunTupleBase_Particles/B0Dspi_Tuple #=1 Sum=1 Eff=|( 100.0000 +- 0.00000 )%| RFileCnv INFO dumping contents of /NTUPLES/FILE1 @@ -177,9 +175,7 @@ HDRFilter_B0Dspi INFO Number of counters : 1 |*"Cut selection efficiency" | 70 | 1 |( 1.428571 +- 1.418331)% | Hlt2TopoLineFilter INFO Number of counters : 1 | Counter | # | sum | mean/eff^* | rms/err^* | min | max | - |*"#passed" | 113 | 70 |( 61.94690 +- 4.567364)% | -ToolSvc.HltFactory INFO Number of counters : 1 - | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"Cut selection efficiency" | 113 | 70 |( 61.94690 +- 4.567364)% | ToolSvc.HybridFactory INFO Number of counters : 1 | Counter | # | sum | mean/eff^* | rms/err^* | min | max | Unpack_Spruce__Event_Spruce_Spru... INFO Number of counters : 4 diff --git a/DaVinciTests/tests/qmtest/davinci.qms/test_davinci_filters.qmt b/DaVinciTests/tests/qmtest/davinci.qms/test_davinci_filters.qmt index 6b24d0756..e83ea51c8 100644 --- a/DaVinciTests/tests/qmtest/davinci.qms/test_davinci_filters.qmt +++ b/DaVinciTests/tests/qmtest/davinci.qms/test_davinci_filters.qmt @@ -21,7 +21,7 @@ <argument name="options_yaml_fn"><text>$DAVINCIEXAMPLESROOT/example_data/Spruce_all_lines_dst.yaml</text></argument> <argument name="extra_options_yaml"><text> evt_pre_filters: - Hlt2TopoLineFilter: "HLT_PASS('Hlt2Topo2BodyLineDecision')" + Hlt2TopoLineFilter: "Hlt2Topo2BodyLineDecision" ntuple_file: "davinci_filters_ntuple.root" histo_file: "davinci_filters_histos.root" print_freq: 1 diff --git a/DaVinciTests/tests/refs/test_davinci_filters.ref b/DaVinciTests/tests/refs/test_davinci_filters.ref index 2b21e3097..1199d7758 100644 --- a/DaVinciTests/tests/refs/test_davinci_filters.ref +++ b/DaVinciTests/tests/refs/test_davinci_filters.ref @@ -1,5 +1,3 @@ -DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead -DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead ApplicationMgr SUCCESS ==================================================================================================================================== ==================================================================================================================================== @@ -128,11 +126,11 @@ LAZY_AND: DaVinci #=113 Sum=48 Eff=|( NONLAZY_OR: UserAnalysis #=113 Sum=48 Eff=|( 42.47788 +- 4.65007 )%| LAZY_AND: B0DsK #=113 Sum=48 Eff=|( 42.47788 +- 4.65007 )%| RawBankSizeFilter/FilterDstDataSize_Spruce #=113 Sum=113 Eff=|( 100.0000 +- 0.00000 )%| - LoKi__HDRFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| + VoidFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| VoidFilter/HDRFilter_B0DsK #=70 Sum=48 Eff=|( 68.57143 +- 5.54862 )%| LAZY_AND: B0Dspi #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| RawBankSizeFilter/FilterDstDataSize_Spruce #=113 Sum=113 Eff=|( 100.0000 +- 0.00000 )%| - LoKi__HDRFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| + VoidFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| VoidFilter/HDRFilter_B0Dspi #=70 Sum=1 Eff=|( 1.428571 +- 1.41833 )%| ApplicationMgr INFO Application Manager Finalized successfully ApplicationMgr INFO Application Manager Terminated successfully @@ -147,6 +145,4 @@ HDRFilter_B0Dspi INFO Number of counters : 1 |*"Cut selection efficiency" | 70 | 1 |( 1.428571 +- 1.418331)% | Hlt2TopoLineFilter INFO Number of counters : 1 | Counter | # | sum | mean/eff^* | rms/err^* | min | max | - |*"#passed" | 113 | 70 |( 61.94690 +- 4.567364)% | -ToolSvc.HltFactory INFO Number of counters : 1 - | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"Cut selection efficiency" | 113 | 70 |( 61.94690 +- 4.567364)% | diff --git a/DaVinciTests/tests/refs/test_davinci_filters.ref.detdesc b/DaVinciTests/tests/refs/test_davinci_filters.ref.detdesc index 2b21e3097..1199d7758 100644 --- a/DaVinciTests/tests/refs/test_davinci_filters.ref.detdesc +++ b/DaVinciTests/tests/refs/test_davinci_filters.ref.detdesc @@ -1,5 +1,3 @@ -DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead -DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead ApplicationMgr SUCCESS ==================================================================================================================================== ==================================================================================================================================== @@ -128,11 +126,11 @@ LAZY_AND: DaVinci #=113 Sum=48 Eff=|( NONLAZY_OR: UserAnalysis #=113 Sum=48 Eff=|( 42.47788 +- 4.65007 )%| LAZY_AND: B0DsK #=113 Sum=48 Eff=|( 42.47788 +- 4.65007 )%| RawBankSizeFilter/FilterDstDataSize_Spruce #=113 Sum=113 Eff=|( 100.0000 +- 0.00000 )%| - LoKi__HDRFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| + VoidFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| VoidFilter/HDRFilter_B0DsK #=70 Sum=48 Eff=|( 68.57143 +- 5.54862 )%| LAZY_AND: B0Dspi #=113 Sum=1 Eff=|(0.8849558 +- 0.881031)%| RawBankSizeFilter/FilterDstDataSize_Spruce #=113 Sum=113 Eff=|( 100.0000 +- 0.00000 )%| - LoKi__HDRFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| + VoidFilter/Hlt2TopoLineFilter #=113 Sum=70 Eff=|( 61.94690 +- 4.56736 )%| VoidFilter/HDRFilter_B0Dspi #=70 Sum=1 Eff=|( 1.428571 +- 1.41833 )%| ApplicationMgr INFO Application Manager Finalized successfully ApplicationMgr INFO Application Manager Terminated successfully @@ -147,6 +145,4 @@ HDRFilter_B0Dspi INFO Number of counters : 1 |*"Cut selection efficiency" | 70 | 1 |( 1.428571 +- 1.418331)% | Hlt2TopoLineFilter INFO Number of counters : 1 | Counter | # | sum | mean/eff^* | rms/err^* | min | max | - |*"#passed" | 113 | 70 |( 61.94690 +- 4.567364)% | -ToolSvc.HltFactory INFO Number of counters : 1 - | Counter | # | sum | mean/eff^* | rms/err^* | min | max | + |*"Cut selection efficiency" | 113 | 70 |( 61.94690 +- 4.567364)% | diff --git a/Phys/DaVinci/python/DaVinci/LbExec.py b/Phys/DaVinci/python/DaVinci/LbExec.py index 8a6aa1535..9cdad2060 100644 --- a/Phys/DaVinci/python/DaVinci/LbExec.py +++ b/Phys/DaVinci/python/DaVinci/LbExec.py @@ -33,7 +33,7 @@ class Options(DefaultOptions): The optional parameters that need to be set are : - input_stream (str): Stream name. Default is "default" (Note: for `input_process=Hlt2` the stream must be strictly empty. The default value is overwritten in this case.) - lumi (bool): Flag to store luminosity information. Default is False. - - evt_pre_filters (dict[str,str]): Event pre-filter code. Default is None. + - evt_pre_filters (dict[str,str]): Event pre-filter line name(s). Default is None. - write_fsr (bool): Flag to write file summary record. Default is True. - merge_genfsr (bool): Flag to merge the file summary record. Default is False. - metainfo_additional_tags: (list): Additional central tags for `PyConf.filecontent_metadata.metainfo_repos`. Default is []. diff --git a/Phys/DaVinci/python/DaVinci/algorithms.py b/Phys/DaVinci/python/DaVinci/algorithms.py index 504549076..e3b1004ad 100644 --- a/Phys/DaVinci/python/DaVinci/algorithms.py +++ b/Phys/DaVinci/python/DaVinci/algorithms.py @@ -8,94 +8,20 @@ # granted to it by virtue of its status as an Intergovernmental Organization # # or submit itself to any jurisdiction. # ############################################################################### -import re import logging import itertools from collections import OrderedDict -from typing import Any, Union +from typing import Any from GaudiConf.LbExec import InputProcessTypes # type: ignore[import] -from PyConf.Algorithms import LoKi__HDRFilter, LoKi__VoidFilter, VoidFilter # type: ignore[import] -from PyConf.Algorithms import HltDecReportsDecoder # type: ignore[import] -from PyConf.reading import get_particles, get_decreports, get_hlt_reports, dstdata_filter # type: ignore[import] +from PyConf.Algorithms import VoidFilter # type: ignore[import] +from PyConf.reading import get_particles, get_decreports, dstdata_filter # type: ignore[import] import Functors as F # type: ignore[import] from DaVinci.LbExec import Options log = logging.getLogger(__name__) -def set_filter( - name: str, code: str, dec_reports: HltDecReportsDecoder -) -> Union[LoKi__HDRFilter, LoKi__VoidFilter]: - """ - Adding an HDR filter to FunTuple algorithms checking if the corresponding HLT/Sprucing line fired. - - Args: - name (str): filter's name. - code (str): filter's code. - dec_reports (HltDecReportsDecoder instance): HltDecReportsDecoder containing the configuration for HLT/Sprucing lines. - - Returns: - Filter (LoKi__HDRFilter or LoKi__VoidFilter) with name and code defined by the user. - """ - if dec_reports: - algFilter = LoKi__HDRFilter( - name=name, Code=code, Location=dec_reports.OutputHltDecReportsLocation - ) - else: - algFilter = LoKi__VoidFilter(name=name, Code=code) - - return algFilter - - -def add_filter(name: str, code: str) -> Union[LoKi__HDRFilter, LoKi__VoidFilter]: - """ - Adding an event pre-filter using a code defined by the user. - - Args: - name (str): filter's name. - code (str): filter's code. - - Raises: - SyntaxError: if the specified filter code does not end with brackets ')'. - - Returns: - Filter (LoKi__HDRFilter or LoKi__VoidFilter) with name and code defined by the user. - """ - print( - "DaVinciFilter.add_filter is deprecated -- please use create_lines_filter instead" - ) - # 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 SyntaxError("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): - dec_reports = get_hlt_reports(source) - break - - return set_filter(name, code, dec_reports) - - def create_lines_filter(name: str, lines: list[str]) -> VoidFilter: """ Create an event pre-filter requiring the specified lines. @@ -132,8 +58,8 @@ def create_lines_filter(name: str, lines: list[str]) -> VoidFilter: def apply_filters( - options: Options, algs_dict: dict[str, list[Any]] -) -> dict[str, list[Any]]: + options: Options, algs_dict: dict[str, list[str]] +) -> dict[str, list[VoidFilter]]: """ Adding filter algorithms. @@ -142,10 +68,10 @@ def apply_filters( algs_dict (dict): dict of the user algorithms. Returns: - Dict where at each node filters are prepended to the initial list of user algorithms. + Dict where at each node filters are prepended to the initial list of user algorithms. """ - alg_filterd_dict: dict[str, list[Any]] = {} + alg_filterd_dict: dict[str, list[VoidFilter]] = {} for name, algs in algs_dict.items(): algs_list = [] @@ -159,9 +85,12 @@ def apply_filters( ] if options.evt_pre_filters: - evt_pre_filters: list[Any] = [] - for title, code in options.evt_pre_filters.items(): - evt_filter = add_filter(title, code) + evt_pre_filters: list[VoidFilter] = [] + for title, line in options.evt_pre_filters.items(): + assert isinstance(line, (str, list)) + evt_filter = create_lines_filter( + title, line if isinstance(line, list) else [line] + ) evt_pre_filters.append(evt_filter) algs_list += evt_pre_filters @@ -244,7 +173,7 @@ def configured_FunTuple(config: dict[str, Any]) -> dict[str, Any]: filter_name += f"_{i}" i = i + 1 - tupleFilter = add_filter(filter_name, line) + tupleFilter = create_lines_filter(filter_name, [line]) dictAlgs[key].append(tupleFilter) funTuple = Funtuple( diff --git a/Phys/DaVinci/tests/config/test_algorithms.py b/Phys/DaVinci/tests/config/test_algorithms.py index 6a732f764..99e2df77b 100644 --- a/Phys/DaVinci/tests/config/test_algorithms.py +++ b/Phys/DaVinci/tests/config/test_algorithms.py @@ -16,7 +16,6 @@ from DaVinci import Options from DaVinci.algorithms import ( make_fsr_algs, create_lines_filter, - add_filter, apply_filters, configured_FunTuple, ) @@ -95,22 +94,6 @@ def test_add_spruce_filter(): assert test_filter.fullname.startswith("VoidFilter/test_filter") -def test_add_void_filter(): - reset_global_store() - """ - Check if DaVinci is able to implement correctly a Void filter - if 'HLT_PASS' string is not found in the filter code." - """ - # options = Options( - # data_type="Upgrade", - # input_process=InputProcessTypes("Gen"), - # evt_max=1, - # simulation=True, - # ) - test_filter = add_filter("test_filter_{hash}", "VOIDTEST_Filter") - assert "VoidFilter" in test_filter.fullname - - def test_apply_filters(): reset_global_store() """ @@ -120,13 +103,17 @@ def test_apply_filters(): data_type="Upgrade", input_raw_format=0.5, input_process="Gen", + input_stream="default", evt_max=1, - evt_pre_filters={"test_filter_{hash}": "EVT_PREFILTER"}, + evt_pre_filters={"Hlt2_test_filter_{hash}": "Hlt2_EVT_PREFILTER"}, simulation=True, ) - alg_dict = {"test_alg": [VoidConsumer()]} - test_alg_dict = apply_filters(options, alg_dict) - list_of_main_expected_algs = ["LoKi__VoidFilter"] + with default_raw_event.bind( + raw_event_format=options.input_raw_format, stream=options.input_stream + ): + alg_dict = {"test_alg": [VoidConsumer()]} + test_alg_dict = apply_filters(options, alg_dict) + list_of_main_expected_algs = ["VoidFilter"] for exp_alg in list_of_main_expected_algs: assert any(exp_alg in alg.fullname for alg in test_alg_dict["test_alg"]) @@ -144,7 +131,7 @@ def test_configured_funtuple(): config = { "TestTuple": { "location": "/Event/Spruce/SpruceTestLine/Particles", - "filters": ["HLT_PASS('SpruceTestLine1Decision')", "VoidTest_Filter"], + "filters": ["SpruceTestLine1Decision"], "preamble": ["TRACK_MAX_PT = MAXTREE(ISBASIC & HASTRACK, PT, -1)"], "tuple": "DecayTree", "fields": fields, diff --git a/doc/configuration/davinci_configuration.rst b/doc/configuration/davinci_configuration.rst index fac92eb94..71f2c0440 100644 --- a/doc/configuration/davinci_configuration.rst +++ b/doc/configuration/davinci_configuration.rst @@ -32,23 +32,22 @@ Event unpacking, FunTuple and many other algorithms run in a job can be very tim the input files could be much faster and efficient if an event pre-filter is applied on top of the whole job chain selecting only the events that satisfy a specific set of conditions. For adding an event per-filter in a job one can set the value of the ``evt_pre_filters`` property with a dict -containing the an element for each filter you want to implement, where the key is the filter name and the object is a string -containing the filter code. Then DaVinci will automatically create a ``LoKi__HDRFilter`` or -``LoKi__VoidFilter`` instance according to filter code for each dict entry. -For example, the ``filter_code`` can exploit the ``HLT_PASS`` feature to ensure the trigger/sprucing corresponding to the input location fired in that specific event. +containing an element for each filter you want to implement, where the key is the filter name and the object is a string +corresponding to the filter line name. Then DaVinci will automatically create the filter instance. +For example, the filter can ensure the trigger/sprucing line fired in that specific event. This is done by including the following in your ``options.yaml`` file: .. code-block:: yaml evt_pre_filters: - Hlt2TopoLineFilter: HLT_PASS('Hlt2Topo2BodyLineDecision') + Hlt2TopoLineFilter: "Hlt2Topo2BodyLineDecision" -A filter can also be instantiated using the ``create_lines_filter`` function: +A filter can also be instantiated directly using the ``create_lines_filter`` function: .. code-block:: python from DaVinci.algorithms import create_lines_filter - filter = create_lines_filter("Hlt2TopoLineFilter", lines=['Hlt2Topo2BodyLineDecision']). + filter = create_lines_filter("Hlt2TopoLineFilter", lines=["Hlt2Topo2BodyLineDecision"]). Additional examples can be found `here <https://gitlab.cern.ch/lhcb/DaVinci/-/blob/master/DaVinciTests/tests/options/option_davinci_filters.py>`_ and `here <https://gitlab.cern.ch/lhcb/DaVinci/-/blob/master/DaVinciExamples/python/DaVinciExamples/tupling/option_davinci_tupling_from_spruce.py>`__. Additional information on how to implement a filter code can be found `here <https://twiki.cern.ch/twiki/bin/view/LHCb/FAQ/DaVinciFAQ#How_to_process_the_stripped_DSTs>`__ and `here <https://gitlab.cern.ch/lhcb/Phys/blob/master/Phys/PhysConf/python/PhysConf/Filters.py>`__. -- GitLab