diff --git a/Trigger/TrigAlgorithms/TrigEFMissingET/doc/met_configuration.md b/Trigger/TrigAlgorithms/TrigEFMissingET/doc/met_configuration.md index e384a8889fbc30ccd9bf209a811b7acbeb3730ed..004ce9ab4fcd07154632b925002acaea7bd1be89 100644 --- a/Trigger/TrigAlgorithms/TrigEFMissingET/doc/met_configuration.md +++ b/Trigger/TrigAlgorithms/TrigEFMissingET/doc/met_configuration.md @@ -166,6 +166,10 @@ There are three types of sequence that can be configured by this code The menu sequence describes a full 'input maker' + reco + hypo grouping, i.e. a segment that calculates a MET value and then creates a decision using it +All of these are divided into 'steps'. As hypos only appear at the end of each +step these are the only points at which early rejection is possible. This +motivates running CPU intensive reconstruction in later steps. + The 'difficult' part of this is the first part - the reco sequence. The MET code uses a helper class `TriggerMenuMT.HLTMenuConfig.MET.METRecoSequences.AlgConfig`. @@ -174,6 +178,10 @@ config class, which then knows how to interpret the rest of the `recoDict` to correctly configure the sequence. (In fact this class is used to configure all stages). +These then further use helper classes based on +`TriggerMenuMT.HLTMenuConfig.MET.AlgInputConfig.AlgInputConfig` +to provide the input sequences (e.g. clusters, tracks). + In our example, `xe110_tcpufit_lcw` gets converted into the `recoDict` ``` python { @@ -184,7 +192,8 @@ In our example, `xe110_tcpufit_lcw` gets converted into the `recoDict` ``` This is passed to the `TCPufitConfig` class, which sets up the input sequence creating the clusters and the MET algorithm calculating the MET according to the -`tcpufit` algorithm. +`tcpufit` algorithm. The cluster input sequence is set up by the +`ClusterInputConfig` class. The same happens to the `xe70_cell` piece, except it gets passed to the `CellConfig` class. @@ -280,13 +289,21 @@ defined) so it's guaranteed that your class will be known to python when A new `AlgConfig` class must define two things - a `@classmethod` called `algType` that returns the name of the EFrecoAlg that it defines -- an `__init__` method that receives the `recoDict` and defines `self.inputs` - and `self.fexAlg`. The base class `__init__` method must receive the **whole** - `recoDict` or it will not construct the correct names. +- an `__init__` method that receives the `recoDict` and calculates the necessary + inputs. The base class `__init__` method must receive the **whole** `recoDict` + or it will not construct the correct names. +- a make_fex function Look at the other classes in that module for inspiration and consult the `AlgConfig` docstring as well. +#### Creating a new input config + +You may require a new input config as well (i.e. something which calculates +an input object for one of the MET calculations). In order to do this, read the +documentation in `TriggerMenuMT.HLTMenuConfig.MET.AlgInputConfig` and check the +existing versions in `TriggerMenuMT.HLTMenuConfig.MET.METRecoSequences`. + #### Creating a new C++ class Where possible new C++ Fex classes should following the naming convention diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py index 6093811ed349e5ea95b4ed5cc83fbdbec0888d46..b606da07f6fe43bde71ed3c175a97d35222d1091 100644 --- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py +++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py @@ -3,6 +3,7 @@ from AthenaCommon.Constants import ERROR from AthenaCommon.CFElements import seqAND, parOR from AthenaConfiguration.ComponentFactory import CompFactory +from TriggerMenuMT.HLTMenuConfig.CommonSequences.FullScanDefs import caloFSRoI def setMinimalCaloSetup() : from AthenaCommon.AppMgr import ServiceMgr as svcMgr @@ -114,7 +115,7 @@ def createFastCaloSequence(EMRoIDecisions, doRinger=False, ClustersName="HLT_Fas def clusterFSInputMaker( ): """Creates the inputMaker for FS in menu""" - RoIs = 'HLT_FSJETRoI' + RoIs = caloFSRoI from AthenaConfiguration.ComponentFactory import CompFactory InputMakerAlg = CompFactory.InputMakerForRoI("IMclusterFS", RoIsLink="initialRoI") InputMakerAlg.RoITool = CompFactory.ViewCreatorInitialROITool() @@ -122,11 +123,11 @@ def clusterFSInputMaker( ): return InputMakerAlg -def HLTCellMaker(RoIs='HLT_FSJETRoI', outputName="CaloCells", algSuffix=""): +def HLTCellMaker(RoIs=caloFSRoI, outputName="CaloCells", algSuffix=""): cellMakerAlgo = _algoHLTCaloCell(name="HLTCaloCellMaker"+algSuffix, inputEDM=RoIs, outputEDM=outputName, RoIMode=True) return cellMakerAlgo -def HLTFSCellMakerRecoSequence(RoIs='HLT_FSJETRoI'): +def HLTFSCellMakerRecoSequence(RoIs=caloFSRoI): cellMaker = HLTCellMaker(RoIs, outputName="CaloCellsFS", algSuffix="FS") RecoSequence = parOR("ClusterRecoSequenceFS", [cellMaker]) return (RecoSequence, cellMaker.CellsName) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigHLTJetHypo/CMakeLists.txt index 4cfbd3d6ba741417c7ecc4b36cb780ba7e41d7a0..ba89603b84bc405c515badb7e89ec1ce3157ca1c 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/CMakeLists.txt +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/CMakeLists.txt @@ -13,7 +13,7 @@ atlas_add_library( TrigHLTJetHypoLib PUBLIC_HEADERS TrigHLTJetHypo PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} LINK_LIBRARIES AsgTools AthenaBaseComps DecisionHandlingLib GaudiKernel TrigCompositeUtilsLib TrigInterfacesLib TrigParticle TrigTimeAlgsLib xAODJet - PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaMonitoringKernelLib CaloGeoHelpers TrigMissingEtEvent xAODEventInfo xAODTrigger ) + PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaMonitoringKernelLib CaloGeoHelpers TrigMissingEtEvent xAODEventInfo xAODTrigger TrigSteeringEvent ) atlas_add_component( TrigHLTJetHypo src/components/*.cxx diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx index f7f95d76a10aea8259b1af4c9ecb4049b001d43a..12e20c532fcad7afaa9e795f4bd75d2bb629e287 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx @@ -7,7 +7,7 @@ #include "TrigJetHypoAlgMT.h" #include "TrigCompositeUtils/HLTIdentifier.h" #include "TrigCompositeUtils/TrigCompositeUtils.h" - +#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h" using namespace TrigCompositeUtils; @@ -19,8 +19,8 @@ TrigJetHypoAlgMT::TrigJetHypoAlgMT( const std::string& name, StatusCode TrigJetHypoAlgMT::initialize() { + CHECK( m_hypoTools.retrieve() ); - CHECK( m_jetsKey.initialize() ); return StatusCode::SUCCESS; } @@ -31,7 +31,7 @@ StatusCode TrigJetHypoAlgMT::execute( const EventContext& context ) const { // read in the previous Decisions made before running this hypo Alg. - // The container should have only one such Decision (for L1) as deding + // The container should have only one such Decision (for L1) as deciding // on jets is a one step process. ATH_MSG_DEBUG("Retrieving L1 decision \"" << decisionInput().key() << "\""); @@ -43,8 +43,8 @@ StatusCode TrigJetHypoAlgMT::execute( const EventContext& context ) const { } if(h_prevDecisions->size() != 1){ - ATH_MSG_ERROR(" Expected one previous decisions (L1 RoIs not used), found " - << h_prevDecisions->size()); + ATH_MSG_ERROR(" Expected one previous decisions in " << decisionInput().key() + << " (L1 RoIs not used), found " << h_prevDecisions->size()); return StatusCode::FAILURE; } @@ -66,7 +66,7 @@ StatusCode TrigJetHypoAlgMT::execute( const EventContext& context ) const { auto h_jets = SG::makeHandle(m_jetsKey, context ); ATH_MSG_DEBUG("Retrieving jets from: " << h_jets.key()); ATH_CHECK(h_jets.isValid()); - + const JetContainer* jets = h_jets.get(); CHECK(decide(jets, previousDecision, outputDecisions)); @@ -87,19 +87,41 @@ TrigJetHypoAlgMT::decide(const xAOD::JetContainer* jets, std::vector<std::pair<const xAOD::Jet*,Decision*>> jetHypoInputs; - for (const xAOD::Jet* jet : *jets) { - - // Create a new Decision object to mirror this Jet. - // Link it to its parent Decision object and attach the jet as a "feature" - - Decision* newDecision = - TrigCompositeUtils::newDecisionIn(outputDecisions, previousDecision); + if(m_doPresel) { + // In the preselection case, we create only one DecisionObject, which links + // all jets -- this is so as to avoid making spurious DecisionObject + // chains where the objects in one step have no unambiguous relationship + // with those in the preceding step. + Decision* newDecision = nullptr; + newDecision = TrigCompositeUtils::newDecisionIn(outputDecisions, previousDecision); + // Needs a dummy feature link -- we will specify the input RoI + if(!newDecision->hasObjectLink(featureString())) { + newDecision->setObjectLink<TrigRoiDescriptorCollection>(TrigCompositeUtils::featureString(), + TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>(newDecision, TrigCompositeUtils::initialRoIString()).link); + } + // We need to fill the jetHypoInputs vector, pairing each jet with + // the same newDecision object, such that it is updated if the hypo + // tool passes the jet. + for (const xAOD::Jet* jet : *jets) { + jetHypoInputs.push_back( std::make_pair(jet, newDecision) ); + } + } else { + // When operating as a terminal hypo selection, we create one DecisionObject + // per jet, which is later used to identify which jets contributed to an + // event passing. + for (const xAOD::Jet* jet : *jets) { + + Decision* newDecision = nullptr; + // Create a new Decision object to mirror this Jet. + // Link it to its parent Decision object and attach the jet as a "feature" + newDecision = TrigCompositeUtils::newDecisionIn(outputDecisions, previousDecision); - ElementLink<xAOD::JetContainer> jetLink = - ElementLink<xAOD::JetContainer>(*jets, jet->index()); + ElementLink<xAOD::JetContainer> jetLink = + ElementLink<xAOD::JetContainer>(*jets, jet->index()); - newDecision->setObjectLink<xAOD::JetContainer>(featureString(), jetLink); - jetHypoInputs.push_back( std::make_pair(jet, newDecision) ); + newDecision->setObjectLink<xAOD::JetContainer>(featureString(), jetLink); + jetHypoInputs.push_back( std::make_pair(jet, newDecision) ); + } } // Extract the IDs of the jet chains which are active. diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.h index bd572eb449137436a834c52b94dc2f41608f170e..d55aa045e98bf7621141f56fb07a6d392b5c1873 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.h @@ -51,6 +51,11 @@ class TrigJetHypoAlgMT : public ::HypoBase { SG::ReadHandleKey< xAOD::JetContainer > m_jetsKey { this, "Jets", "Jets", "jet container key, full scan"}; + + // For preselection, we want to only generate one decision object + // a la L1, rather than one per jet + Gaudi::Property<bool> m_doPresel { + this, "DoPresel", false, "is this preselection rather than main decision?"}; }; diff --git a/Trigger/TrigHypothesis/TrigStreamerHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigStreamerHypo/CMakeLists.txt index 5725d3f4a13e4e4683dd248e94561ee9d271be4e..e03cfc613a17d014a26eb2336fcf7ad7d4d37dd2 100644 --- a/Trigger/TrigHypothesis/TrigStreamerHypo/CMakeLists.txt +++ b/Trigger/TrigHypothesis/TrigStreamerHypo/CMakeLists.txt @@ -6,7 +6,7 @@ atlas_subdir( TrigStreamerHypo ) # Component(s) in the package: atlas_add_component( TrigStreamerHypo src/*.cxx src/components/*.cxx - LINK_LIBRARIES AsgTools AthenaBaseComps DecisionHandlingLib GaudiKernel TrigCompositeUtilsLib ) + LINK_LIBRARIES AsgTools AthenaBaseComps DecisionHandlingLib GaudiKernel TrigCompositeUtilsLib TrigSteeringEvent ) # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} --extend-extensions=ATL900,ATL901 ) diff --git a/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.cxx index a488662a22abf7c778ad16641c951fd7030d14b7..b686b1debbcfa9c2a120ec05ba6d72d1ccaae327 100644 --- a/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.cxx +++ b/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.cxx @@ -6,6 +6,7 @@ #include "Gaudi/Property.h" #include "TrigCompositeUtils/HLTIdentifier.h" #include "TrigCompositeUtils/TrigCompositeUtils.h" +#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h" using namespace TrigCompositeUtils; @@ -46,6 +47,13 @@ StatusCode TrigStreamerHypoAlgMT::execute( const EventContext& context ) const { // Create output Decision object, link it to prevDecision & its "feature" auto newDecision = TrigCompositeUtils::newDecisionIn(newDecisions, previousDecision, "", context); + + // We may want to use this as a 1st step PassThrough hypo + // In this case, we need to be more explicit about setting a feature on the Decision object + if(m_setInitialRoiAsFeature && !newDecision->hasObjectLink(featureString())) { + newDecision->setObjectLink<TrigRoiDescriptorCollection>(TrigCompositeUtils::featureString(), + TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>(newDecision, TrigCompositeUtils::initialRoIString()).link); + } // Get set of active chains const TrigCompositeUtils::DecisionIDContainer previousDecisionIDs{ diff --git a/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.h b/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.h index da9af58845ae92b563e914450dd80bcf4e5b1928..b4b0801b6b2f5128a90bb224836e0dad523ae5f4 100644 --- a/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.h +++ b/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.h @@ -27,6 +27,9 @@ class TrigStreamerHypoAlgMT : public ::HypoBase { ToolHandleArray<ITrigStreamerHypoToolMT> m_hypoTools { this, "HypoTools", {}, "Hypo tools"}; + + Gaudi::Property<bool> m_setInitialRoiAsFeature { + this, "SetInitialRoIAsFeature", false, "For use in a passthrough step 1"}; }; diff --git a/Trigger/TrigSteer/DecisionHandling/python/jetMenuHelper.py b/Trigger/TrigSteer/DecisionHandling/python/jetMenuHelper.py deleted file mode 100644 index 818527083c4b4ca4cab367b9ab3ac5ac9151b8ff..0000000000000000000000000000000000000000 --- a/Trigger/TrigSteer/DecisionHandling/python/jetMenuHelper.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -# - -from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetMenuSequence, jetCFSequence -from AthenaConfiguration.AllConfigFlags import ConfigFlags - -def jetDictFromString(jet_def_string): - """ Function to retrieve the jet dictionaory from string""" - - # Translate the definition string into an approximation - # of the "recoParts" in the jet chainParts. - jetRecoDict = {} - # Insert values from string - # Python names are more descriptive. May want to sync - # these names with the SignatureDict, needs coordination with - # menu group when they start to implement this - trkopt = "notrk" - if "_ftf" in jet_def_string: - jetalg, inputtype, clusterscale, jetcalib, trkopt = jet_def_string.split('_') - else: - jetalg, inputtype, clusterscale, jetcalib = jet_def_string.split('_') - - jetRecoDict = { - "recoAlg": jetalg, - "dataType": inputtype, - "calib": clusterscale, - "jetCalib": jetcalib, - # Default to this for now pending further development. - # Ideally it'd be better to deprecate this and instead - # take the defaults from SignatureDicts for most - # purposes, but this can wait until the needs of clients - # are more clear. - "trkopt" : trkopt - } - return jetRecoDict - -def jetCFSequenceFromString(jet_def_string): - """ Function to retrieve jet Reco sequence from string""" - jetRecoDict=jetDictFromString(jet_def_string) - return jetCFSequence(ConfigFlags,**jetRecoDict) - - -def jetMenuSequenceFromString(jet_def_string): - """ Function to retrieve jet menu sequence from string""" - jetRecoDict=jetDictFromString(jet_def_string) - return jetMenuSequence(ConfigFlags,**jetRecoDict) # First arg dummy flags for RecoFragmentsPool diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref index 919cfc6341500652c7a1528cfd136e97a40ed999..09a3180c974292b2cce35af8c23cbcad24ebb62e 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref @@ -1,12 +1,12 @@ TrigSignatureMoniMT INFO HLT_10j40_pf_subresjesgscIS_ftf_L14J15 #3575805394 -TrigSignatureMoniMT INFO -- #3575805394 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3575805394 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3575805394 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #3575805394 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_10j40_subjesIS_L14J15 #2760204981 TrigSignatureMoniMT INFO -- #2760204981 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2760204981 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_10j40_subresjesgscIS_ftf_L14J15 #3568675904 -TrigSignatureMoniMT INFO -- #3568675904 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3568675904 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3568675904 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #3568675904 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_2e12_lhloose_mu10_L12EM8VH_MU10 #2518246928 TrigSignatureMoniMT INFO -- #2518246928 Events 1 1 0 0 0 0 0 0 0 0 0 - - - - - 0 TrigSignatureMoniMT INFO -- #2518246928 Features 0 0 0 0 0 0 0 0 0 - - - - - @@ -56,11 +56,11 @@ TrigSignatureMoniMT INFO HLT_2g50_loose_L12EM20V TrigSignatureMoniMT INFO -- #3590373854 Events 2 2 2 0 0 0 - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #3590373854 Features 2 0 0 0 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_2j330_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3495282139 -TrigSignatureMoniMT INFO -- #3495282139 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3495282139 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3495282139 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #3495282139 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_2j330_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #2680976232 -TrigSignatureMoniMT INFO -- #2680976232 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2680976232 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2680976232 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #2680976232 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J100 #1295975955 TrigSignatureMoniMT INFO -- #1295975955 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #1295975955 Features 0 0 0 0 0 0 0 0 0 0 0 - - - @@ -119,11 +119,11 @@ TrigSignatureMoniMT INFO HLT_3j200_L1J100 #21994 TrigSignatureMoniMT INFO -- #2199422919 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2199422919 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_3j200_pf_subresjesgscIS_ftf_L1J100 #794428037 -TrigSignatureMoniMT INFO -- #794428037 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #794428037 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #794428037 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #794428037 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_3j200_subresjesgscIS_ftf_L1J100 #1801834652 -TrigSignatureMoniMT INFO -- #1801834652 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1801834652 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1801834652 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #1801834652 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 #1832399408 TrigSignatureMoniMT INFO -- #1832399408 Events 0 0 0 0 0 0 0 0 0 0 0 - - - - - 0 TrigSignatureMoniMT INFO -- #1832399408 Features 0 0 0 0 0 0 0 0 0 - - - - - @@ -134,14 +134,14 @@ TrigSignatureMoniMT INFO HLT_3mu8_msonly_L13MU6 TrigSignatureMoniMT INFO -- #424835335 Events 0 0 0 0 0 0 0 0 0 0 - - - - - - 0 TrigSignatureMoniMT INFO -- #424835335 Features 0 0 0 0 0 0 0 0 - - - - - - TrigSignatureMoniMT INFO HLT_4j120_pf_subresjesgscIS_ftf_L13J50 #1755129033 -TrigSignatureMoniMT INFO -- #1755129033 Events 1 1 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1755129033 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1755129033 Events 1 1 0 0 0 0 0 0 0 0 0 0 1 0 - - 0 +TrigSignatureMoniMT INFO -- #1755129033 Features 0 0 0 0 0 0 0 0 0 0 1 0 - - TrigSignatureMoniMT INFO HLT_4j120_subjesIS_L13J50 #3722303680 TrigSignatureMoniMT INFO -- #3722303680 Events 1 1 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3722303680 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_4j120_subresjesgscIS_ftf_L13J50 #91006165 -TrigSignatureMoniMT INFO -- #91006165 Events 1 1 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #91006165 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #91006165 Events 1 1 0 0 0 0 0 0 0 0 0 0 1 0 - - 0 +TrigSignatureMoniMT INFO -- #91006165 Features 0 0 0 0 0 0 0 0 0 0 1 0 - - TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 #1834383636 TrigSignatureMoniMT INFO -- #1834383636 Events 0 0 0 0 0 0 0 0 0 0 0 - - - - - 0 TrigSignatureMoniMT INFO -- #1834383636 Features 0 0 0 0 0 0 0 0 0 - - - - - @@ -149,47 +149,47 @@ TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 TrigSignatureMoniMT INFO -- #1175391812 Events 7 7 0 0 0 0 0 0 0 0 0 0 1 - - - 1 TrigSignatureMoniMT INFO -- #1175391812 Features 0 0 0 0 0 0 0 0 0 0 5 - - - TrigSignatureMoniMT INFO HLT_5j70_pf_subresjesgscIS_ftf_0eta240_L14J15 #4189027854 -TrigSignatureMoniMT INFO -- #4189027854 Events 9 9 0 0 0 0 0 0 0 0 0 0 1 - - - 1 -TrigSignatureMoniMT INFO -- #4189027854 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #4189027854 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 1 - - 1 +TrigSignatureMoniMT INFO -- #4189027854 Features 0 0 0 0 0 0 0 0 0 0 9 5 - - TrigSignatureMoniMT INFO HLT_5j70_subresjesgscIS_ftf_0eta240_L14J15 #819918597 -TrigSignatureMoniMT INFO -- #819918597 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #819918597 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #819918597 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #819918597 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_5j85_pf_subresjesgscIS_ftf_L14J15 #4208121018 -TrigSignatureMoniMT INFO -- #4208121018 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #4208121018 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #4208121018 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #4208121018 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_5j85_subjesIS_L14J15 #2745094401 TrigSignatureMoniMT INFO -- #2745094401 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2745094401 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_5j85_subresjesgscIS_ftf_L14J15 #1148892499 -TrigSignatureMoniMT INFO -- #1148892499 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1148892499 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1148892499 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #1148892499 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_6j55_pf_subresjesgscIS_ftf_0eta240_L14J15 #1526259867 -TrigSignatureMoniMT INFO -- #1526259867 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1526259867 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1526259867 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #1526259867 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_6j55_subjesIS_0eta240_L14J15 #68179418 TrigSignatureMoniMT INFO -- #68179418 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #68179418 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_6j55_subresjesgscIS_ftf_0eta240_L14J15 #1068073241 -TrigSignatureMoniMT INFO -- #1068073241 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1068073241 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1068073241 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #1068073241 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_6j70_pf_subresjesgscIS_ftf_L14J15 #1755772565 -TrigSignatureMoniMT INFO -- #1755772565 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1755772565 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1755772565 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #1755772565 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_6j70_subjesIS_L14J15 #1003115860 TrigSignatureMoniMT INFO -- #1003115860 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #1003115860 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_6j70_subresjesgscIS_ftf_L14J15 #59957514 -TrigSignatureMoniMT INFO -- #59957514 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #59957514 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #59957514 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #59957514 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_7j45_pf_subresjesgscIS_ftf_L14J15 #2701381398 -TrigSignatureMoniMT INFO -- #2701381398 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2701381398 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2701381398 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #2701381398 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_7j45_subjesIS_L14J15 #2617173782 TrigSignatureMoniMT INFO -- #2617173782 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2617173782 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_7j45_subresjesgscIS_ftf_L14J15 #2928962349 -TrigSignatureMoniMT INFO -- #2928962349 Events 9 9 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2928962349 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2928962349 Events 9 9 0 0 0 0 0 0 0 0 0 0 9 0 - - 0 +TrigSignatureMoniMT INFO -- #2928962349 Features 0 0 0 0 0 0 0 0 0 0 9 0 - - TrigSignatureMoniMT INFO HLT_JetDS_j0_L1J100 #3302698716 TrigSignatureMoniMT INFO -- #3302698716 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 3 3 - 3 TrigSignatureMoniMT INFO -- #3302698716 Features 0 0 0 0 0 0 0 0 0 0 81 32 3 - @@ -413,8 +413,8 @@ TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP3 TrigSignatureMoniMT INFO -- #4034799151 Events 19 19 0 0 0 0 0 0 0 0 0 0 15 - - - 15 TrigSignatureMoniMT INFO -- #4034799151 Features 0 0 0 0 0 0 0 0 0 0 402 - - - TrigSignatureMoniMT INFO HLT_j225_subjesgscIS_ftf_bmv2c1040_split_L1J100 #219711753 -TrigSignatureMoniMT INFO -- #219711753 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #219711753 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #219711753 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #219711753 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 #3084792704 TrigSignatureMoniMT INFO -- #3084792704 Events 19 19 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3084792704 Features 0 0 0 0 0 0 0 0 0 0 0 - - - @@ -422,104 +422,113 @@ TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J7 TrigSignatureMoniMT INFO -- #3769257182 Events 2 2 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3769257182 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_j275_pf_subjesgscIS_ftf_bdl1r60_split_L1J100 #2912155644 -TrigSignatureMoniMT INFO -- #2912155644 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2912155644 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2912155644 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #2912155644 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j275_pf_subjesgscIS_ftf_boffperf_split_L1J100 #9543810 -TrigSignatureMoniMT INFO -- #9543810 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #9543810 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #9543810 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #9543810 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_bdl1r60_split_L1J100 #2807668578 -TrigSignatureMoniMT INFO -- #2807668578 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2807668578 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2807668578 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #2807668578 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_bmv2c1060_split_L1J100 #710546402 -TrigSignatureMoniMT INFO -- #710546402 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #710546402 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #710546402 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #710546402 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_boffperf_split_L1J100 #540369970 -TrigSignatureMoniMT INFO -- #540369970 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #540369970 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #540369970 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #540369970 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - TrigSignatureMoniMT INFO HLT_j300_pf_subjesgscIS_ftf_bdl1r70_split_L1J100 #2576796343 -TrigSignatureMoniMT INFO -- #2576796343 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2576796343 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2576796343 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #2576796343 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j300_subjesgscIS_ftf_bdl1r70_split_L1J100 #2952175162 -TrigSignatureMoniMT INFO -- #2952175162 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2952175162 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2952175162 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #2952175162 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j300_subjesgscIS_ftf_bmv2c1070_split_L1J100 #2074989613 -TrigSignatureMoniMT INFO -- #2074989613 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #2074989613 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #2074989613 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #2074989613 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - TrigSignatureMoniMT INFO HLT_j360_pf_subjesgscIS_ftf_bdl1r77_split_L1J100 #3049708671 -TrigSignatureMoniMT INFO -- #3049708671 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3049708671 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3049708671 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #3049708671 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j360_subjesgscIS_ftf_bdl1r77_split_L1J100 #1563453863 -TrigSignatureMoniMT INFO -- #1563453863 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1563453863 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1563453863 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #1563453863 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j360_subjesgscIS_ftf_bmv2c1077_split_L1J100 #4176355792 -TrigSignatureMoniMT INFO -- #4176355792 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #4176355792 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #4176355792 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 0 - 0 +TrigSignatureMoniMT INFO -- #4176355792 Features 0 0 0 0 0 0 0 0 0 0 3 0 0 - TrigSignatureMoniMT INFO HLT_j420_L1J100 #2659902019 TrigSignatureMoniMT INFO -- #2659902019 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2659902019 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_j420_pf_subresjesgscIS_ftf_L1J100 #3936932891 -TrigSignatureMoniMT INFO -- #3936932891 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3936932891 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3936932891 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #3936932891 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j420_subresjesgscIS_ftf_L1J100 #2477128298 -TrigSignatureMoniMT INFO -- #2477128298 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2477128298 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2477128298 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #2477128298 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j45_L1J15 #1364976160 TrigSignatureMoniMT INFO -- #1364976160 Events 20 20 0 0 0 0 0 0 0 0 0 0 19 - - - 19 TrigSignatureMoniMT INFO -- #1364976160 Features 0 0 0 0 0 0 0 0 0 0 49 - - - TrigSignatureMoniMT INFO HLT_j45_csskpf_nojcalib_ftf_L1J20 #2528888897 -TrigSignatureMoniMT INFO -- #2528888897 Events 19 19 0 0 0 0 0 0 0 0 0 0 15 - - - 15 -TrigSignatureMoniMT INFO -- #2528888897 Features 0 0 0 0 0 0 0 0 0 0 30 - - - +TrigSignatureMoniMT INFO -- #2528888897 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 15 - - 15 +TrigSignatureMoniMT INFO -- #2528888897 Features 0 0 0 0 0 0 0 0 0 0 19 30 - - TrigSignatureMoniMT INFO HLT_j45_cssktc_nojcalib_L1J20 #3295122398 TrigSignatureMoniMT INFO -- #3295122398 Events 19 19 0 0 0 0 0 0 0 0 0 0 15 - - - 15 TrigSignatureMoniMT INFO -- #3295122398 Features 0 0 0 0 0 0 0 0 0 0 27 - - - TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 #868405538 -TrigSignatureMoniMT INFO -- #868405538 Events 20 20 0 0 0 0 0 0 0 0 0 0 18 - - - 18 -TrigSignatureMoniMT INFO -- #868405538 Features 0 0 0 0 0 0 0 0 0 0 44 - - - +TrigSignatureMoniMT INFO -- #868405538 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 18 - - 18 +TrigSignatureMoniMT INFO -- #868405538 Features 0 0 0 0 0 0 0 0 0 0 20 44 - - +TrigSignatureMoniMT INFO HLT_j45_ftf_preselj45_L1J20 #526860976 +TrigSignatureMoniMT INFO -- #526860976 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 18 - - 18 +TrigSignatureMoniMT INFO -- #526860976 Features 0 0 0 0 0 0 0 0 0 0 19 44 - - TrigSignatureMoniMT INFO HLT_j45_nojcalib_L1J20 #2042444294 TrigSignatureMoniMT INFO -- #2042444294 Events 19 19 0 0 0 0 0 0 0 0 0 0 17 - - - 17 TrigSignatureMoniMT INFO -- #2042444294 Features 0 0 0 0 0 0 0 0 0 0 39 - - - TrigSignatureMoniMT INFO HLT_j45_pf_ftf_L1J20 #3679554988 -TrigSignatureMoniMT INFO -- #3679554988 Events 19 19 0 0 0 0 0 0 0 0 0 0 16 - - - 16 -TrigSignatureMoniMT INFO -- #3679554988 Features 0 0 0 0 0 0 0 0 0 0 35 - - - +TrigSignatureMoniMT INFO -- #3679554988 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 - - 16 +TrigSignatureMoniMT INFO -- #3679554988 Features 0 0 0 0 0 0 0 0 0 0 19 35 - - +TrigSignatureMoniMT INFO HLT_j45_pf_ftf_preselj45_L1J20 #650158432 +TrigSignatureMoniMT INFO -- #650158432 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 - - 16 +TrigSignatureMoniMT INFO -- #650158432 Features 0 0 0 0 0 0 0 0 0 0 19 35 - - TrigSignatureMoniMT INFO HLT_j45_pf_nojcalib_ftf_L1J20 #4202219904 -TrigSignatureMoniMT INFO -- #4202219904 Events 19 19 0 0 0 0 0 0 0 0 0 0 16 - - - 16 -TrigSignatureMoniMT INFO -- #4202219904 Features 0 0 0 0 0 0 0 0 0 0 36 - - - +TrigSignatureMoniMT INFO -- #4202219904 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 - - 16 +TrigSignatureMoniMT INFO -- #4202219904 Features 0 0 0 0 0 0 0 0 0 0 19 36 - - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_L1J20 #2187173741 -TrigSignatureMoniMT INFO -- #2187173741 Events 19 19 0 0 0 0 0 0 0 0 0 0 18 - - - 18 -TrigSignatureMoniMT INFO -- #2187173741 Features 0 0 0 0 0 0 0 0 0 0 39 - - - +TrigSignatureMoniMT INFO -- #2187173741 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 18 - - 18 +TrigSignatureMoniMT INFO -- #2187173741 Features 0 0 0 0 0 0 0 0 0 0 19 39 - - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_bdl1r70_split_L1J20 #4239752847 -TrigSignatureMoniMT INFO -- #4239752847 Events 19 19 0 0 0 0 0 0 0 0 0 0 18 - - - 18 -TrigSignatureMoniMT INFO -- #4239752847 Features 0 0 0 0 0 0 0 0 0 0 39 - - - +TrigSignatureMoniMT INFO -- #4239752847 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 18 - - 18 +TrigSignatureMoniMT INFO -- #4239752847 Features 0 0 0 0 0 0 0 0 0 0 19 39 - - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_boffperf_split_L1J20 #2546763674 -TrigSignatureMoniMT INFO -- #2546763674 Events 19 19 0 0 0 0 0 0 0 0 0 0 16 16 - - 16 -TrigSignatureMoniMT INFO -- #2546763674 Features 0 0 0 0 0 0 0 0 0 0 36 36 - - +TrigSignatureMoniMT INFO -- #2546763674 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 16 - 16 +TrigSignatureMoniMT INFO -- #2546763674 Features 0 0 0 0 0 0 0 0 0 0 19 36 36 - TrigSignatureMoniMT INFO HLT_j45_sktc_nojcalib_L1J20 #1542468090 TrigSignatureMoniMT INFO -- #1542468090 Events 19 19 0 0 0 0 0 0 0 0 0 0 15 - - - 15 TrigSignatureMoniMT INFO -- #1542468090 Features 0 0 0 0 0 0 0 0 0 0 26 - - - +TrigSignatureMoniMT INFO HLT_j45_subjesIS_ftf_preselj45_L1J20 #3647626880 +TrigSignatureMoniMT INFO -- #3647626880 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 19 - - 19 +TrigSignatureMoniMT INFO -- #3647626880 Features 0 0 0 0 0 0 0 0 0 0 19 49 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_011jvt_L1J15 #266323220 -TrigSignatureMoniMT INFO -- #266323220 Events 20 20 0 0 0 0 0 0 0 0 0 0 13 - - - 13 -TrigSignatureMoniMT INFO -- #266323220 Features 0 0 0 0 0 0 0 0 0 0 29 - - - +TrigSignatureMoniMT INFO -- #266323220 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 13 - - 13 +TrigSignatureMoniMT INFO -- #266323220 Features 0 0 0 0 0 0 0 0 0 0 20 29 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_015jvt_L1J15 #3102941497 -TrigSignatureMoniMT INFO -- #3102941497 Events 20 20 0 0 0 0 0 0 0 0 0 0 13 - - - 13 -TrigSignatureMoniMT INFO -- #3102941497 Features 0 0 0 0 0 0 0 0 0 0 29 - - - +TrigSignatureMoniMT INFO -- #3102941497 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 13 - - 13 +TrigSignatureMoniMT INFO -- #3102941497 Features 0 0 0 0 0 0 0 0 0 0 20 29 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_059jvt_L1J15 #2237035634 -TrigSignatureMoniMT INFO -- #2237035634 Events 20 20 0 0 0 0 0 0 0 0 0 0 13 - - - 13 -TrigSignatureMoniMT INFO -- #2237035634 Features 0 0 0 0 0 0 0 0 0 0 28 - - - +TrigSignatureMoniMT INFO -- #2237035634 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 13 - - 13 +TrigSignatureMoniMT INFO -- #2237035634 Features 0 0 0 0 0 0 0 0 0 0 20 28 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_L1J15 #1960278431 -TrigSignatureMoniMT INFO -- #1960278431 Events 20 20 0 0 0 0 0 0 0 0 0 0 19 - - - 19 -TrigSignatureMoniMT INFO -- #1960278431 Features 0 0 0 0 0 0 0 0 0 0 50 - - - +TrigSignatureMoniMT INFO -- #1960278431 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 19 - - 19 +TrigSignatureMoniMT INFO -- #1960278431 Features 0 0 0 0 0 0 0 0 0 0 20 50 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_bdl1r70_split_L1J20 #2947439578 -TrigSignatureMoniMT INFO -- #2947439578 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 - - - 19 -TrigSignatureMoniMT INFO -- #2947439578 Features 0 0 0 0 0 0 0 0 0 0 50 - - - +TrigSignatureMoniMT INFO -- #2947439578 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 19 - - 19 +TrigSignatureMoniMT INFO -- #2947439578 Features 0 0 0 0 0 0 0 0 0 0 19 50 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_bmv2c1070_split_L1J20 #980453000 -TrigSignatureMoniMT INFO -- #980453000 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 10 - - 10 -TrigSignatureMoniMT INFO -- #980453000 Features 0 0 0 0 0 0 0 0 0 0 49 19 - - +TrigSignatureMoniMT INFO -- #980453000 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 19 10 - 10 +TrigSignatureMoniMT INFO -- #980453000 Features 0 0 0 0 0 0 0 0 0 0 19 49 19 - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_boffperf_split_L1J20 #3374916154 -TrigSignatureMoniMT INFO -- #3374916154 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 19 - - 19 -TrigSignatureMoniMT INFO -- #3374916154 Features 0 0 0 0 0 0 0 0 0 0 49 49 - - +TrigSignatureMoniMT INFO -- #3374916154 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 19 19 - 19 +TrigSignatureMoniMT INFO -- #3374916154 Features 0 0 0 0 0 0 0 0 0 0 19 49 49 - TrigSignatureMoniMT INFO HLT_j45_subresjesgscIS_ftf_L1J15 #1213239619 -TrigSignatureMoniMT INFO -- #1213239619 Events 20 20 0 0 0 0 0 0 0 0 0 0 18 - - - 18 -TrigSignatureMoniMT INFO -- #1213239619 Features 0 0 0 0 0 0 0 0 0 0 44 - - - +TrigSignatureMoniMT INFO -- #1213239619 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 18 - - 18 +TrigSignatureMoniMT INFO -- #1213239619 Features 0 0 0 0 0 0 0 0 0 0 20 44 - - TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J100 #3327656707 TrigSignatureMoniMT INFO -- #3327656707 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3327656707 Features 0 0 0 0 0 0 0 0 0 0 0 - - - @@ -533,23 +542,23 @@ TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 #38 TrigSignatureMoniMT INFO -- #3875082669 Events 19 19 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3875082669 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3781128663 -TrigSignatureMoniMT INFO -- #3781128663 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3781128663 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3781128663 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #3781128663 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_jes_ftf_L1J100 #1509950051 -TrigSignatureMoniMT INFO -- #1509950051 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1509950051 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1509950051 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #1509950051 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #249842682 -TrigSignatureMoniMT INFO -- #249842682 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #249842682 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #249842682 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #249842682 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_L1J100 #3452032818 -TrigSignatureMoniMT INFO -- #3452032818 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3452032818 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3452032818 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #3452032818 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_lcw_nojcalib_L1J100 #3093997295 TrigSignatureMoniMT INFO -- #3093997295 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3093997295 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10sd_pf_nojcalib_ftf_L1J100 #2138269254 -TrigSignatureMoniMT INFO -- #2138269254 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2138269254 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2138269254 Events 3 3 0 0 0 0 0 0 0 0 0 0 3 0 - - 0 +TrigSignatureMoniMT INFO -- #2138269254 Features 0 0 0 0 0 0 0 0 0 0 3 0 - - TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 #2296827117 TrigSignatureMoniMT INFO -- #2296827117 Events 3 3 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2296827117 Features 0 0 0 0 0 0 0 0 0 0 0 - - - @@ -575,11 +584,11 @@ TrigSignatureMoniMT INFO HLT_j85_L1J20 #51047553 TrigSignatureMoniMT INFO -- #510475538 Events 19 19 0 0 0 0 0 0 0 0 0 0 13 - - - 13 TrigSignatureMoniMT INFO -- #510475538 Features 0 0 0 0 0 0 0 0 0 0 21 - - - TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 #877042532 -TrigSignatureMoniMT INFO -- #877042532 Events 19 19 0 0 0 0 0 0 0 0 0 0 12 - - - 12 -TrigSignatureMoniMT INFO -- #877042532 Features 0 0 0 0 0 0 0 0 0 0 18 - - - +TrigSignatureMoniMT INFO -- #877042532 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 12 - - 12 +TrigSignatureMoniMT INFO -- #877042532 Features 0 0 0 0 0 0 0 0 0 0 19 18 - - TrigSignatureMoniMT INFO HLT_j85_pf_ftf_L1J20 #789444389 -TrigSignatureMoniMT INFO -- #789444389 Events 19 19 0 0 0 0 0 0 0 0 0 0 11 - - - 11 -TrigSignatureMoniMT INFO -- #789444389 Features 0 0 0 0 0 0 0 0 0 0 17 - - - +TrigSignatureMoniMT INFO -- #789444389 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 11 - - 11 +TrigSignatureMoniMT INFO -- #789444389 Features 0 0 0 0 0 0 0 0 0 0 19 17 - - TrigSignatureMoniMT INFO HLT_mb_sptrk_L1RD0_FILLED #4097312640 TrigSignatureMoniMT INFO -- #4097312640 Events 20 0 0 0 - - - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #4097312640 Features 0 0 - - - - - - - - - - - - @@ -1046,32 +1055,32 @@ TrigSignatureMoniMT INFO HLT_unconvtrk120_isohpt TrigSignatureMoniMT INFO -- #3425113791 Events 10 10 0 0 0 0 0 0 0 0 0 0 6 - - - 6 TrigSignatureMoniMT INFO -- #3425113791 Features 0 0 0 0 0 0 0 0 0 0 6 - - - TrigSignatureMoniMT INFO HLT_xe100_cvfpufit_L1XE50 #2729083465 -TrigSignatureMoniMT INFO -- #2729083465 Events 10 10 0 0 0 0 0 0 0 0 0 0 6 - - - 6 -TrigSignatureMoniMT INFO -- #2729083465 Features 0 0 0 0 0 0 0 0 0 0 6 - - - +TrigSignatureMoniMT INFO -- #2729083465 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 6 - - 6 +TrigSignatureMoniMT INFO -- #2729083465 Features 0 0 0 0 0 0 0 0 0 0 10 6 - - TrigSignatureMoniMT INFO HLT_xe100_mht_L1XE50 #532175988 TrigSignatureMoniMT INFO -- #532175988 Events 10 10 0 0 0 0 0 0 0 0 0 0 9 - - - 9 TrigSignatureMoniMT INFO -- #532175988 Features 0 0 0 0 0 0 0 0 0 0 9 - - - TrigSignatureMoniMT INFO HLT_xe100_mhtpufit_em_subjesgscIS_L1XE50 #3054195458 -TrigSignatureMoniMT INFO -- #3054195458 Events 10 10 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #3054195458 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #3054195458 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 5 - - 5 +TrigSignatureMoniMT INFO -- #3054195458 Features 0 0 0 0 0 0 0 0 0 0 10 5 - - TrigSignatureMoniMT INFO HLT_xe100_mhtpufit_pf_subjesgscIS_L1XE50 #2614685150 -TrigSignatureMoniMT INFO -- #2614685150 Events 10 10 0 0 0 0 0 0 0 0 0 0 4 - - - 4 -TrigSignatureMoniMT INFO -- #2614685150 Features 0 0 0 0 0 0 0 0 0 0 4 - - - +TrigSignatureMoniMT INFO -- #2614685150 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 4 - - 4 +TrigSignatureMoniMT INFO -- #2614685150 Features 0 0 0 0 0 0 0 0 0 0 10 4 - - TrigSignatureMoniMT INFO HLT_xe100_pfopufit_L1XE50 #2909333517 -TrigSignatureMoniMT INFO -- #2909333517 Events 10 10 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #2909333517 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #2909333517 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 3 - - 3 +TrigSignatureMoniMT INFO -- #2909333517 Features 0 0 0 0 0 0 0 0 0 0 10 3 - - TrigSignatureMoniMT INFO HLT_xe100_pfsum_L1XE50 #1890237897 -TrigSignatureMoniMT INFO -- #1890237897 Events 10 10 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #1890237897 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #1890237897 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 3 - - 3 +TrigSignatureMoniMT INFO -- #1890237897 Features 0 0 0 0 0 0 0 0 0 0 10 3 - - TrigSignatureMoniMT INFO HLT_xe100_tcpufit_L1XE50 #2803198799 TrigSignatureMoniMT INFO -- #2803198799 Events 10 10 0 0 0 0 0 0 0 0 0 0 6 - - - 6 TrigSignatureMoniMT INFO -- #2803198799 Features 0 0 0 0 0 0 0 0 0 0 6 - - - TrigSignatureMoniMT INFO HLT_xe100_trkmht_L1XE50 #1055916731 -TrigSignatureMoniMT INFO -- #1055916731 Events 10 10 0 0 0 0 0 0 0 0 0 0 7 - - - 7 -TrigSignatureMoniMT INFO -- #1055916731 Features 0 0 0 0 0 0 0 0 0 0 7 - - - +TrigSignatureMoniMT INFO -- #1055916731 Events 10 10 0 0 0 0 0 0 0 0 0 0 10 7 - - 7 +TrigSignatureMoniMT INFO -- #1055916731 Features 0 0 0 0 0 0 0 0 0 0 10 7 - - TrigSignatureMoniMT INFO HLT_xe100_trkmht_xe85_tcpufit_xe65_cell_L1XE50 #451622546 -TrigSignatureMoniMT INFO -- #451622546 Events 10 10 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #451622546 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #451622546 Events 10 10 0 0 0 0 0 0 0 0 0 0 6 5 - - 5 +TrigSignatureMoniMT INFO -- #451622546 Features 0 0 0 0 0 0 0 0 0 0 6 5 - - TrigSignatureMoniMT INFO HLT_xe110_mht_L1XE50 #3030733259 TrigSignatureMoniMT INFO -- #3030733259 Events 10 10 0 0 0 0 0 0 0 0 0 0 7 - - - 7 TrigSignatureMoniMT INFO -- #3030733259 Features 0 0 0 0 0 0 0 0 0 0 7 - - - @@ -1088,29 +1097,29 @@ TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpu TrigSignatureMoniMT INFO -- #3768353779 Events 19 19 0 0 0 0 0 0 0 0 0 0 14 - - - 14 TrigSignatureMoniMT INFO -- #3768353779 Features 0 0 0 0 0 0 0 0 0 0 14 - - - TrigSignatureMoniMT INFO HLT_xe30_cvfpufit_L1XE10 #3860749499 -TrigSignatureMoniMT INFO -- #3860749499 Events 19 19 0 0 0 0 0 0 0 0 0 0 14 - - - 14 -TrigSignatureMoniMT INFO -- #3860749499 Features 0 0 0 0 0 0 0 0 0 0 14 - - - +TrigSignatureMoniMT INFO -- #3860749499 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 14 - - 14 +TrigSignatureMoniMT INFO -- #3860749499 Features 0 0 0 0 0 0 0 0 0 0 19 14 - - TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 #3626903018 TrigSignatureMoniMT INFO -- #3626903018 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 - - - 19 TrigSignatureMoniMT INFO -- #3626903018 Features 0 0 0 0 0 0 0 0 0 0 19 - - - TrigSignatureMoniMT INFO HLT_xe30_mhtpufit_em_subjesgscIS_L1XE10 #689201557 -TrigSignatureMoniMT INFO -- #689201557 Events 19 19 0 0 0 0 0 0 0 0 0 0 12 - - - 12 -TrigSignatureMoniMT INFO -- #689201557 Features 0 0 0 0 0 0 0 0 0 0 12 - - - +TrigSignatureMoniMT INFO -- #689201557 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 12 - - 12 +TrigSignatureMoniMT INFO -- #689201557 Features 0 0 0 0 0 0 0 0 0 0 19 12 - - TrigSignatureMoniMT INFO HLT_xe30_mhtpufit_pf_subjesgscIS_L1XE10 #1886909707 -TrigSignatureMoniMT INFO -- #1886909707 Events 19 19 0 0 0 0 0 0 0 0 0 0 15 - - - 15 -TrigSignatureMoniMT INFO -- #1886909707 Features 0 0 0 0 0 0 0 0 0 0 15 - - - +TrigSignatureMoniMT INFO -- #1886909707 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 14 - - 14 +TrigSignatureMoniMT INFO -- #1886909707 Features 0 0 0 0 0 0 0 0 0 0 19 14 - - TrigSignatureMoniMT INFO HLT_xe30_pfopufit_L1XE10 #2252641537 -TrigSignatureMoniMT INFO -- #2252641537 Events 19 19 0 0 0 0 0 0 0 0 0 0 15 - - - 15 -TrigSignatureMoniMT INFO -- #2252641537 Features 0 0 0 0 0 0 0 0 0 0 15 - - - +TrigSignatureMoniMT INFO -- #2252641537 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 15 - - 15 +TrigSignatureMoniMT INFO -- #2252641537 Features 0 0 0 0 0 0 0 0 0 0 19 15 - - TrigSignatureMoniMT INFO HLT_xe30_pfsum_L1XE10 #998713382 -TrigSignatureMoniMT INFO -- #998713382 Events 19 19 0 0 0 0 0 0 0 0 0 0 16 - - - 16 -TrigSignatureMoniMT INFO -- #998713382 Features 0 0 0 0 0 0 0 0 0 0 16 - - - +TrigSignatureMoniMT INFO -- #998713382 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 16 - - 16 +TrigSignatureMoniMT INFO -- #998713382 Features 0 0 0 0 0 0 0 0 0 0 19 16 - - TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 #1583719916 TrigSignatureMoniMT INFO -- #1583719916 Events 19 19 0 0 0 0 0 0 0 0 0 0 14 - - - 14 TrigSignatureMoniMT INFO -- #1583719916 Features 0 0 0 0 0 0 0 0 0 0 14 - - - TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 #2468872349 -TrigSignatureMoniMT INFO -- #2468872349 Events 19 19 0 0 0 0 0 0 0 0 0 0 15 - - - 15 -TrigSignatureMoniMT INFO -- #2468872349 Features 0 0 0 0 0 0 0 0 0 0 15 - - - +TrigSignatureMoniMT INFO -- #2468872349 Events 19 19 0 0 0 0 0 0 0 0 0 0 19 15 - - 15 +TrigSignatureMoniMT INFO -- #2468872349 Features 0 0 0 0 0 0 0 0 0 0 19 15 - - TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 #531141817 TrigSignatureMoniMT INFO -- #531141817 Events 10 10 0 0 0 0 0 0 0 0 0 0 7 - - - 7 TrigSignatureMoniMT INFO -- #531141817 Features 0 0 0 0 0 0 0 0 0 0 7 - - - @@ -1127,5 +1136,5 @@ TrigSignatureMoniMT INFO HLT_xe80_tcpufit_unconv TrigSignatureMoniMT INFO -- #153760048 Events 10 10 0 0 0 0 0 0 0 0 0 0 6 - - - 6 TrigSignatureMoniMT INFO -- #153760048 Features 0 0 0 0 0 0 0 0 0 0 6 - - - TrigSignatureMoniMT INFO HLT_xe95_trkmht_xe90_tcpufit_xe75_cell_L1XE50 #302256132 -TrigSignatureMoniMT INFO -- #302256132 Events 10 10 0 0 0 0 0 0 0 0 0 0 4 - - - 4 -TrigSignatureMoniMT INFO -- #302256132 Features 0 0 0 0 0 0 0 0 0 0 4 - - - +TrigSignatureMoniMT INFO -- #302256132 Events 10 10 0 0 0 0 0 0 0 0 0 0 4 4 - - 4 +TrigSignatureMoniMT INFO -- #302256132 Features 0 0 0 0 0 0 0 0 0 0 4 4 - - diff --git a/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref b/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref index ae0282f4a81f034c08dc2aaea694ef744af42661..9dde7711ff7414d562b3ef6f23858361a7ad9dc1 100644 --- a/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref +++ b/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref @@ -1,12 +1,12 @@ TrigSignatureMoniMT INFO HLT_10j40_pf_subresjesgscIS_ftf_L14J15 #3575805394 -TrigSignatureMoniMT INFO -- #3575805394 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3575805394 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3575805394 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #3575805394 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_10j40_subjesIS_L14J15 #2760204981 TrigSignatureMoniMT INFO -- #2760204981 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2760204981 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_10j40_subresjesgscIS_ftf_L14J15 #3568675904 -TrigSignatureMoniMT INFO -- #3568675904 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3568675904 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3568675904 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #3568675904 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_2e12_lhloose_mu10_L12EM8VH_MU10 #2518246928 TrigSignatureMoniMT INFO -- #2518246928 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 TrigSignatureMoniMT INFO -- #2518246928 Features 0 0 0 0 0 0 0 0 0 - - - - - @@ -56,11 +56,11 @@ TrigSignatureMoniMT INFO HLT_2g50_loose_L12EM20V TrigSignatureMoniMT INFO -- #3590373854 Events 20 20 0 0 0 0 - - - - - - - - - - 0 TrigSignatureMoniMT INFO -- #3590373854 Features 0 0 0 0 - - - - - - - - - - TrigSignatureMoniMT INFO HLT_2j330_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3495282139 -TrigSignatureMoniMT INFO -- #3495282139 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3495282139 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3495282139 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #3495282139 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_2j330_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #2680976232 -TrigSignatureMoniMT INFO -- #2680976232 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2680976232 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2680976232 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #2680976232 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J100 #1295975955 TrigSignatureMoniMT INFO -- #1295975955 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #1295975955 Features 0 0 0 0 0 0 0 0 0 0 0 - - - @@ -119,11 +119,11 @@ TrigSignatureMoniMT INFO HLT_3j200_L1J100 #21994 TrigSignatureMoniMT INFO -- #2199422919 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2199422919 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_3j200_pf_subresjesgscIS_ftf_L1J100 #794428037 -TrigSignatureMoniMT INFO -- #794428037 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #794428037 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #794428037 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #794428037 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_3j200_subresjesgscIS_ftf_L1J100 #1801834652 -TrigSignatureMoniMT INFO -- #1801834652 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1801834652 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1801834652 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #1801834652 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_3mu6_L13MU6 #1832399408 TrigSignatureMoniMT INFO -- #1832399408 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 TrigSignatureMoniMT INFO -- #1832399408 Features 0 0 0 0 0 0 0 0 0 - - - - - @@ -134,14 +134,14 @@ TrigSignatureMoniMT INFO HLT_3mu8_msonly_L13MU6 TrigSignatureMoniMT INFO -- #424835335 Events 20 20 0 0 0 0 0 0 0 0 - - - - - - 0 TrigSignatureMoniMT INFO -- #424835335 Features 0 0 0 0 0 0 0 0 - - - - - - TrigSignatureMoniMT INFO HLT_4j120_pf_subresjesgscIS_ftf_L13J50 #1755129033 -TrigSignatureMoniMT INFO -- #1755129033 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1755129033 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1755129033 Events 20 20 0 0 0 0 0 0 0 0 0 0 2 0 - - 0 +TrigSignatureMoniMT INFO -- #1755129033 Features 0 0 0 0 0 0 0 0 0 0 2 0 - - TrigSignatureMoniMT INFO HLT_4j120_subjesIS_L13J50 #3722303680 TrigSignatureMoniMT INFO -- #3722303680 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3722303680 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_4j120_subresjesgscIS_ftf_L13J50 #91006165 -TrigSignatureMoniMT INFO -- #91006165 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #91006165 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #91006165 Events 20 20 0 0 0 0 0 0 0 0 0 0 2 0 - - 0 +TrigSignatureMoniMT INFO -- #91006165 Features 0 0 0 0 0 0 0 0 0 0 2 0 - - TrigSignatureMoniMT INFO HLT_4mu4_L14MU4 #1834383636 TrigSignatureMoniMT INFO -- #1834383636 Events 20 20 0 0 0 0 0 0 0 0 0 - - - - - 0 TrigSignatureMoniMT INFO -- #1834383636 Features 0 0 0 0 0 0 0 0 0 - - - - - @@ -149,47 +149,47 @@ TrigSignatureMoniMT INFO HLT_5j70_0eta240_L14J20 TrigSignatureMoniMT INFO -- #1175391812 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #1175391812 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_5j70_pf_subresjesgscIS_ftf_0eta240_L14J15 #4189027854 -TrigSignatureMoniMT INFO -- #4189027854 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #4189027854 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #4189027854 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #4189027854 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_5j70_subresjesgscIS_ftf_0eta240_L14J15 #819918597 -TrigSignatureMoniMT INFO -- #819918597 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #819918597 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #819918597 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #819918597 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_5j85_pf_subresjesgscIS_ftf_L14J15 #4208121018 -TrigSignatureMoniMT INFO -- #4208121018 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #4208121018 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #4208121018 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #4208121018 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_5j85_subjesIS_L14J15 #2745094401 TrigSignatureMoniMT INFO -- #2745094401 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2745094401 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_5j85_subresjesgscIS_ftf_L14J15 #1148892499 -TrigSignatureMoniMT INFO -- #1148892499 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1148892499 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1148892499 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #1148892499 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_6j55_pf_subresjesgscIS_ftf_0eta240_L14J15 #1526259867 -TrigSignatureMoniMT INFO -- #1526259867 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1526259867 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1526259867 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #1526259867 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_6j55_subjesIS_0eta240_L14J15 #68179418 TrigSignatureMoniMT INFO -- #68179418 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #68179418 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_6j55_subresjesgscIS_ftf_0eta240_L14J15 #1068073241 -TrigSignatureMoniMT INFO -- #1068073241 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1068073241 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1068073241 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #1068073241 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_6j70_pf_subresjesgscIS_ftf_L14J15 #1755772565 -TrigSignatureMoniMT INFO -- #1755772565 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1755772565 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1755772565 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #1755772565 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_6j70_subjesIS_L14J15 #1003115860 TrigSignatureMoniMT INFO -- #1003115860 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #1003115860 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_6j70_subresjesgscIS_ftf_L14J15 #59957514 -TrigSignatureMoniMT INFO -- #59957514 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #59957514 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #59957514 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #59957514 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_7j45_pf_subresjesgscIS_ftf_L14J15 #2701381398 -TrigSignatureMoniMT INFO -- #2701381398 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2701381398 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2701381398 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #2701381398 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_7j45_subjesIS_L14J15 #2617173782 TrigSignatureMoniMT INFO -- #2617173782 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2617173782 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_7j45_subresjesgscIS_ftf_L14J15 #2928962349 -TrigSignatureMoniMT INFO -- #2928962349 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2928962349 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2928962349 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 0 - - 0 +TrigSignatureMoniMT INFO -- #2928962349 Features 0 0 0 0 0 0 0 0 0 0 7 0 - - TrigSignatureMoniMT INFO HLT_JetDS_j0_L1J100 #3302698716 TrigSignatureMoniMT INFO -- #3302698716 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 TrigSignatureMoniMT INFO -- #3302698716 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - @@ -413,8 +413,8 @@ TrigSignatureMoniMT INFO HLT_j0_vbenfSEP30etSEP3 TrigSignatureMoniMT INFO -- #4034799151 Events 20 20 0 0 0 0 0 0 0 0 0 0 2 - - - 2 TrigSignatureMoniMT INFO -- #4034799151 Features 0 0 0 0 0 0 0 0 0 0 24 - - - TrigSignatureMoniMT INFO HLT_j225_subjesgscIS_ftf_bmv2c1040_split_L1J100 #219711753 -TrigSignatureMoniMT INFO -- #219711753 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #219711753 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #219711753 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #219711753 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J20 #3084792704 TrigSignatureMoniMT INFO -- #3084792704 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3084792704 Features 0 0 0 0 0 0 0 0 0 0 0 - - - @@ -422,104 +422,113 @@ TrigSignatureMoniMT INFO HLT_j260_320eta490_L1J7 TrigSignatureMoniMT INFO -- #3769257182 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3769257182 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_j275_pf_subjesgscIS_ftf_bdl1r60_split_L1J100 #2912155644 -TrigSignatureMoniMT INFO -- #2912155644 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2912155644 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2912155644 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #2912155644 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j275_pf_subjesgscIS_ftf_boffperf_split_L1J100 #9543810 -TrigSignatureMoniMT INFO -- #9543810 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #9543810 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #9543810 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #9543810 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_bdl1r60_split_L1J100 #2807668578 -TrigSignatureMoniMT INFO -- #2807668578 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2807668578 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2807668578 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #2807668578 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_bmv2c1060_split_L1J100 #710546402 -TrigSignatureMoniMT INFO -- #710546402 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #710546402 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #710546402 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #710546402 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - TrigSignatureMoniMT INFO HLT_j275_subjesgscIS_ftf_boffperf_split_L1J100 #540369970 -TrigSignatureMoniMT INFO -- #540369970 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #540369970 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #540369970 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #540369970 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - TrigSignatureMoniMT INFO HLT_j300_pf_subjesgscIS_ftf_bdl1r70_split_L1J100 #2576796343 -TrigSignatureMoniMT INFO -- #2576796343 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2576796343 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2576796343 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #2576796343 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j300_subjesgscIS_ftf_bdl1r70_split_L1J100 #2952175162 -TrigSignatureMoniMT INFO -- #2952175162 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2952175162 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2952175162 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #2952175162 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j300_subjesgscIS_ftf_bmv2c1070_split_L1J100 #2074989613 -TrigSignatureMoniMT INFO -- #2074989613 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #2074989613 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #2074989613 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #2074989613 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - TrigSignatureMoniMT INFO HLT_j360_pf_subjesgscIS_ftf_bdl1r77_split_L1J100 #3049708671 -TrigSignatureMoniMT INFO -- #3049708671 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3049708671 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3049708671 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #3049708671 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j360_subjesgscIS_ftf_bdl1r77_split_L1J100 #1563453863 -TrigSignatureMoniMT INFO -- #1563453863 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1563453863 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1563453863 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #1563453863 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j360_subjesgscIS_ftf_bmv2c1077_split_L1J100 #4176355792 -TrigSignatureMoniMT INFO -- #4176355792 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 -TrigSignatureMoniMT INFO -- #4176355792 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - +TrigSignatureMoniMT INFO -- #4176355792 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 0 - 0 +TrigSignatureMoniMT INFO -- #4176355792 Features 0 0 0 0 0 0 0 0 0 0 0 0 0 - TrigSignatureMoniMT INFO HLT_j420_L1J100 #2659902019 TrigSignatureMoniMT INFO -- #2659902019 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2659902019 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_j420_pf_subresjesgscIS_ftf_L1J100 #3936932891 -TrigSignatureMoniMT INFO -- #3936932891 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3936932891 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3936932891 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #3936932891 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j420_subresjesgscIS_ftf_L1J100 #2477128298 -TrigSignatureMoniMT INFO -- #2477128298 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2477128298 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2477128298 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #2477128298 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j45_L1J15 #1364976160 TrigSignatureMoniMT INFO -- #1364976160 Events 20 20 0 0 0 0 0 0 0 0 0 0 6 - - - 6 TrigSignatureMoniMT INFO -- #1364976160 Features 0 0 0 0 0 0 0 0 0 0 6 - - - TrigSignatureMoniMT INFO HLT_j45_csskpf_nojcalib_ftf_L1J20 #2528888897 -TrigSignatureMoniMT INFO -- #2528888897 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #2528888897 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #2528888897 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 3 - - 3 +TrigSignatureMoniMT INFO -- #2528888897 Features 0 0 0 0 0 0 0 0 0 0 5 3 - - TrigSignatureMoniMT INFO HLT_j45_cssktc_nojcalib_L1J20 #3295122398 TrigSignatureMoniMT INFO -- #3295122398 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 TrigSignatureMoniMT INFO -- #3295122398 Features 0 0 0 0 0 0 0 0 0 0 3 - - - TrigSignatureMoniMT INFO HLT_j45_ftf_L1J15 #868405538 -TrigSignatureMoniMT INFO -- #868405538 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 - - - 7 -TrigSignatureMoniMT INFO -- #868405538 Features 0 0 0 0 0 0 0 0 0 0 7 - - - +TrigSignatureMoniMT INFO -- #868405538 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 7 - - 7 +TrigSignatureMoniMT INFO -- #868405538 Features 0 0 0 0 0 0 0 0 0 0 7 7 - - +TrigSignatureMoniMT INFO HLT_j45_ftf_preselj45_L1J20 #526860976 +TrigSignatureMoniMT INFO -- #526860976 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 +TrigSignatureMoniMT INFO -- #526860976 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - TrigSignatureMoniMT INFO HLT_j45_nojcalib_L1J20 #2042444294 TrigSignatureMoniMT INFO -- #2042444294 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 TrigSignatureMoniMT INFO -- #2042444294 Features 0 0 0 0 0 0 0 0 0 0 3 - - - TrigSignatureMoniMT INFO HLT_j45_pf_ftf_L1J20 #3679554988 -TrigSignatureMoniMT INFO -- #3679554988 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #3679554988 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #3679554988 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 +TrigSignatureMoniMT INFO -- #3679554988 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - +TrigSignatureMoniMT INFO HLT_j45_pf_ftf_preselj45_L1J20 #650158432 +TrigSignatureMoniMT INFO -- #650158432 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 +TrigSignatureMoniMT INFO -- #650158432 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - TrigSignatureMoniMT INFO HLT_j45_pf_nojcalib_ftf_L1J20 #4202219904 -TrigSignatureMoniMT INFO -- #4202219904 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #4202219904 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #4202219904 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 3 - - 3 +TrigSignatureMoniMT INFO -- #4202219904 Features 0 0 0 0 0 0 0 0 0 0 5 3 - - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_L1J20 #2187173741 -TrigSignatureMoniMT INFO -- #2187173741 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #2187173741 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #2187173741 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 +TrigSignatureMoniMT INFO -- #2187173741 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_bdl1r70_split_L1J20 #4239752847 -TrigSignatureMoniMT INFO -- #4239752847 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #4239752847 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #4239752847 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 +TrigSignatureMoniMT INFO -- #4239752847 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - TrigSignatureMoniMT INFO HLT_j45_pf_subjesgscIS_ftf_boffperf_split_L1J20 #2546763674 -TrigSignatureMoniMT INFO -- #2546763674 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 -TrigSignatureMoniMT INFO -- #2546763674 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - +TrigSignatureMoniMT INFO -- #2546763674 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 5 - 5 +TrigSignatureMoniMT INFO -- #2546763674 Features 0 0 0 0 0 0 0 0 0 0 5 5 5 - TrigSignatureMoniMT INFO HLT_j45_sktc_nojcalib_L1J20 #1542468090 TrigSignatureMoniMT INFO -- #1542468090 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 TrigSignatureMoniMT INFO -- #1542468090 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO HLT_j45_subjesIS_ftf_preselj45_L1J20 #3647626880 +TrigSignatureMoniMT INFO -- #3647626880 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 +TrigSignatureMoniMT INFO -- #3647626880 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_011jvt_L1J15 #266323220 -TrigSignatureMoniMT INFO -- #266323220 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #266323220 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #266323220 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 5 - - 5 +TrigSignatureMoniMT INFO -- #266323220 Features 0 0 0 0 0 0 0 0 0 0 7 5 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_015jvt_L1J15 #3102941497 -TrigSignatureMoniMT INFO -- #3102941497 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #3102941497 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #3102941497 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 5 - - 5 +TrigSignatureMoniMT INFO -- #3102941497 Features 0 0 0 0 0 0 0 0 0 0 7 5 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_059jvt_L1J15 #2237035634 -TrigSignatureMoniMT INFO -- #2237035634 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #2237035634 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #2237035634 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 5 - - 5 +TrigSignatureMoniMT INFO -- #2237035634 Features 0 0 0 0 0 0 0 0 0 0 7 5 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_L1J15 #1960278431 -TrigSignatureMoniMT INFO -- #1960278431 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 - - - 7 -TrigSignatureMoniMT INFO -- #1960278431 Features 0 0 0 0 0 0 0 0 0 0 7 - - - +TrigSignatureMoniMT INFO -- #1960278431 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 7 - - 7 +TrigSignatureMoniMT INFO -- #1960278431 Features 0 0 0 0 0 0 0 0 0 0 7 7 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_bdl1r70_split_L1J20 #2947439578 -TrigSignatureMoniMT INFO -- #2947439578 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #2947439578 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #2947439578 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 +TrigSignatureMoniMT INFO -- #2947439578 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_bmv2c1070_split_L1J20 #980453000 -TrigSignatureMoniMT INFO -- #980453000 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 1 - - 1 -TrigSignatureMoniMT INFO -- #980453000 Features 0 0 0 0 0 0 0 0 0 0 5 1 - - +TrigSignatureMoniMT INFO -- #980453000 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 1 - 1 +TrigSignatureMoniMT INFO -- #980453000 Features 0 0 0 0 0 0 0 0 0 0 5 5 1 - TrigSignatureMoniMT INFO HLT_j45_subjesgscIS_ftf_boffperf_split_L1J20 #3374916154 -TrigSignatureMoniMT INFO -- #3374916154 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 - - 5 -TrigSignatureMoniMT INFO -- #3374916154 Features 0 0 0 0 0 0 0 0 0 0 5 5 - - +TrigSignatureMoniMT INFO -- #3374916154 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 5 5 - 5 +TrigSignatureMoniMT INFO -- #3374916154 Features 0 0 0 0 0 0 0 0 0 0 5 5 5 - TrigSignatureMoniMT INFO HLT_j45_subresjesgscIS_ftf_L1J15 #1213239619 -TrigSignatureMoniMT INFO -- #1213239619 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 - - - 7 -TrigSignatureMoniMT INFO -- #1213239619 Features 0 0 0 0 0 0 0 0 0 0 7 - - - +TrigSignatureMoniMT INFO -- #1213239619 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 7 - - 7 +TrigSignatureMoniMT INFO -- #1213239619 Features 0 0 0 0 0 0 0 0 0 0 7 7 - - TrigSignatureMoniMT INFO HLT_j460_a10_lcw_subjes_L1J100 #3327656707 TrigSignatureMoniMT INFO -- #3327656707 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3327656707 Features 0 0 0 0 0 0 0 0 0 0 0 - - - @@ -533,23 +542,23 @@ TrigSignatureMoniMT INFO HLT_j460_a10r_L1J20 #38 TrigSignatureMoniMT INFO -- #3875082669 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3875082669 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3781128663 -TrigSignatureMoniMT INFO -- #3781128663 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3781128663 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3781128663 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #3781128663 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_jes_ftf_L1J100 #1509950051 -TrigSignatureMoniMT INFO -- #1509950051 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1509950051 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1509950051 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #1509950051 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #249842682 -TrigSignatureMoniMT INFO -- #249842682 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #249842682 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #249842682 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #249842682 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_L1J100 #3452032818 -TrigSignatureMoniMT INFO -- #3452032818 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3452032818 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3452032818 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #3452032818 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j460_a10sd_lcw_nojcalib_L1J100 #3093997295 TrigSignatureMoniMT INFO -- #3093997295 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #3093997295 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_j460_a10sd_pf_nojcalib_ftf_L1J100 #2138269254 -TrigSignatureMoniMT INFO -- #2138269254 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2138269254 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2138269254 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #2138269254 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 #2296827117 TrigSignatureMoniMT INFO -- #2296827117 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2296827117 Features 0 0 0 0 0 0 0 0 0 0 0 - - - @@ -575,11 +584,11 @@ TrigSignatureMoniMT INFO HLT_j85_L1J20 #51047553 TrigSignatureMoniMT INFO -- #510475538 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 TrigSignatureMoniMT INFO -- #510475538 Features 0 0 0 0 0 0 0 0 0 0 3 - - - TrigSignatureMoniMT INFO HLT_j85_ftf_L1J20 #877042532 -TrigSignatureMoniMT INFO -- #877042532 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 -TrigSignatureMoniMT INFO -- #877042532 Features 0 0 0 0 0 0 0 0 0 0 3 - - - +TrigSignatureMoniMT INFO -- #877042532 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 3 - - 3 +TrigSignatureMoniMT INFO -- #877042532 Features 0 0 0 0 0 0 0 0 0 0 5 3 - - TrigSignatureMoniMT INFO HLT_j85_pf_ftf_L1J20 #789444389 -TrigSignatureMoniMT INFO -- #789444389 Events 20 20 0 0 0 0 0 0 0 0 0 0 2 - - - 2 -TrigSignatureMoniMT INFO -- #789444389 Features 0 0 0 0 0 0 0 0 0 0 2 - - - +TrigSignatureMoniMT INFO -- #789444389 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 2 - - 2 +TrigSignatureMoniMT INFO -- #789444389 Features 0 0 0 0 0 0 0 0 0 0 5 2 - - TrigSignatureMoniMT INFO HLT_mb_sptrk_L1RD0_FILLED #4097312640 TrigSignatureMoniMT INFO -- #4097312640 Events 20 20 20 19 - - - - - - - - - - - - 19 TrigSignatureMoniMT INFO -- #4097312640 Features 20 19 - - - - - - - - - - - - @@ -1046,32 +1055,32 @@ TrigSignatureMoniMT INFO HLT_unconvtrk120_isohpt TrigSignatureMoniMT INFO -- #3425113791 Events 20 20 0 0 0 0 0 0 0 0 0 0 9 - - - 9 TrigSignatureMoniMT INFO -- #3425113791 Features 0 0 0 0 0 0 0 0 0 0 13 - - - TrigSignatureMoniMT INFO HLT_xe100_cvfpufit_L1XE50 #2729083465 -TrigSignatureMoniMT INFO -- #2729083465 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2729083465 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2729083465 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 0 - - 0 +TrigSignatureMoniMT INFO -- #2729083465 Features 0 0 0 0 0 0 0 0 0 0 20 0 - - TrigSignatureMoniMT INFO HLT_xe100_mht_L1XE50 #532175988 TrigSignatureMoniMT INFO -- #532175988 Events 20 20 0 0 0 0 0 0 0 0 0 0 1 - - - 1 TrigSignatureMoniMT INFO -- #532175988 Features 0 0 0 0 0 0 0 0 0 0 1 - - - TrigSignatureMoniMT INFO HLT_xe100_mhtpufit_em_subjesgscIS_L1XE50 #3054195458 -TrigSignatureMoniMT INFO -- #3054195458 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #3054195458 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #3054195458 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 0 - - 0 +TrigSignatureMoniMT INFO -- #3054195458 Features 0 0 0 0 0 0 0 0 0 0 20 0 - - TrigSignatureMoniMT INFO HLT_xe100_mhtpufit_pf_subjesgscIS_L1XE50 #2614685150 -TrigSignatureMoniMT INFO -- #2614685150 Events 20 20 0 0 0 0 0 0 0 0 0 0 1 - - - 1 -TrigSignatureMoniMT INFO -- #2614685150 Features 0 0 0 0 0 0 0 0 0 0 1 - - - +TrigSignatureMoniMT INFO -- #2614685150 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 1 - - 1 +TrigSignatureMoniMT INFO -- #2614685150 Features 0 0 0 0 0 0 0 0 0 0 20 1 - - TrigSignatureMoniMT INFO HLT_xe100_pfopufit_L1XE50 #2909333517 -TrigSignatureMoniMT INFO -- #2909333517 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #2909333517 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #2909333517 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 0 - - 0 +TrigSignatureMoniMT INFO -- #2909333517 Features 0 0 0 0 0 0 0 0 0 0 20 0 - - TrigSignatureMoniMT INFO HLT_xe100_pfsum_L1XE50 #1890237897 -TrigSignatureMoniMT INFO -- #1890237897 Events 20 20 0 0 0 0 0 0 0 0 0 0 1 - - - 1 -TrigSignatureMoniMT INFO -- #1890237897 Features 0 0 0 0 0 0 0 0 0 0 1 - - - +TrigSignatureMoniMT INFO -- #1890237897 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 1 - - 1 +TrigSignatureMoniMT INFO -- #1890237897 Features 0 0 0 0 0 0 0 0 0 0 20 1 - - TrigSignatureMoniMT INFO HLT_xe100_tcpufit_L1XE50 #2803198799 TrigSignatureMoniMT INFO -- #2803198799 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #2803198799 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_xe100_trkmht_L1XE50 #1055916731 -TrigSignatureMoniMT INFO -- #1055916731 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #1055916731 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #1055916731 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 0 - - 0 +TrigSignatureMoniMT INFO -- #1055916731 Features 0 0 0 0 0 0 0 0 0 0 20 0 - - TrigSignatureMoniMT INFO HLT_xe100_trkmht_xe85_tcpufit_xe65_cell_L1XE50 #451622546 -TrigSignatureMoniMT INFO -- #451622546 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #451622546 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #451622546 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #451622546 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - TrigSignatureMoniMT INFO HLT_xe110_mht_L1XE50 #3030733259 TrigSignatureMoniMT INFO -- #3030733259 Events 20 20 0 0 0 0 0 0 0 0 0 0 1 - - - 1 TrigSignatureMoniMT INFO -- #3030733259 Features 0 0 0 0 0 0 0 0 0 0 1 - - - @@ -1088,29 +1097,29 @@ TrigSignatureMoniMT INFO HLT_xe30_cell_xe30_tcpu TrigSignatureMoniMT INFO -- #3768353779 Events 20 20 0 0 0 0 0 0 0 0 0 0 3 - - - 3 TrigSignatureMoniMT INFO -- #3768353779 Features 0 0 0 0 0 0 0 0 0 0 3 - - - TrigSignatureMoniMT INFO HLT_xe30_cvfpufit_L1XE10 #3860749499 -TrigSignatureMoniMT INFO -- #3860749499 Events 20 20 0 0 0 0 0 0 0 0 0 0 6 - - - 6 -TrigSignatureMoniMT INFO -- #3860749499 Features 0 0 0 0 0 0 0 0 0 0 6 - - - +TrigSignatureMoniMT INFO -- #3860749499 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 6 - - 6 +TrigSignatureMoniMT INFO -- #3860749499 Features 0 0 0 0 0 0 0 0 0 0 20 6 - - TrigSignatureMoniMT INFO HLT_xe30_mht_L1XE10 #3626903018 TrigSignatureMoniMT INFO -- #3626903018 Events 20 20 0 0 0 0 0 0 0 0 0 0 14 - - - 14 TrigSignatureMoniMT INFO -- #3626903018 Features 0 0 0 0 0 0 0 0 0 0 14 - - - TrigSignatureMoniMT INFO HLT_xe30_mhtpufit_em_subjesgscIS_L1XE10 #689201557 -TrigSignatureMoniMT INFO -- #689201557 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 - - - 7 -TrigSignatureMoniMT INFO -- #689201557 Features 0 0 0 0 0 0 0 0 0 0 7 - - - +TrigSignatureMoniMT INFO -- #689201557 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 5 - - 5 +TrigSignatureMoniMT INFO -- #689201557 Features 0 0 0 0 0 0 0 0 0 0 20 5 - - TrigSignatureMoniMT INFO HLT_xe30_mhtpufit_pf_subjesgscIS_L1XE10 #1886909707 -TrigSignatureMoniMT INFO -- #1886909707 Events 20 20 0 0 0 0 0 0 0 0 0 0 5 - - - 5 -TrigSignatureMoniMT INFO -- #1886909707 Features 0 0 0 0 0 0 0 0 0 0 5 - - - +TrigSignatureMoniMT INFO -- #1886909707 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 5 - - 5 +TrigSignatureMoniMT INFO -- #1886909707 Features 0 0 0 0 0 0 0 0 0 0 20 5 - - TrigSignatureMoniMT INFO HLT_xe30_pfopufit_L1XE10 #2252641537 -TrigSignatureMoniMT INFO -- #2252641537 Events 20 20 0 0 0 0 0 0 0 0 0 0 4 - - - 4 -TrigSignatureMoniMT INFO -- #2252641537 Features 0 0 0 0 0 0 0 0 0 0 4 - - - +TrigSignatureMoniMT INFO -- #2252641537 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 4 - - 4 +TrigSignatureMoniMT INFO -- #2252641537 Features 0 0 0 0 0 0 0 0 0 0 20 4 - - TrigSignatureMoniMT INFO HLT_xe30_pfsum_L1XE10 #998713382 -TrigSignatureMoniMT INFO -- #998713382 Events 20 20 0 0 0 0 0 0 0 0 0 0 7 - - - 7 -TrigSignatureMoniMT INFO -- #998713382 Features 0 0 0 0 0 0 0 0 0 0 7 - - - +TrigSignatureMoniMT INFO -- #998713382 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 7 - - 7 +TrigSignatureMoniMT INFO -- #998713382 Features 0 0 0 0 0 0 0 0 0 0 20 7 - - TrigSignatureMoniMT INFO HLT_xe30_tcpufit_L1XE10 #1583719916 TrigSignatureMoniMT INFO -- #1583719916 Events 20 20 0 0 0 0 0 0 0 0 0 0 6 - - - 6 TrigSignatureMoniMT INFO -- #1583719916 Features 0 0 0 0 0 0 0 0 0 0 6 - - - TrigSignatureMoniMT INFO HLT_xe30_trkmht_L1XE10 #2468872349 -TrigSignatureMoniMT INFO -- #2468872349 Events 20 20 0 0 0 0 0 0 0 0 0 0 6 - - - 6 -TrigSignatureMoniMT INFO -- #2468872349 Features 0 0 0 0 0 0 0 0 0 0 6 - - - +TrigSignatureMoniMT INFO -- #2468872349 Events 20 20 0 0 0 0 0 0 0 0 0 0 20 6 - - 6 +TrigSignatureMoniMT INFO -- #2468872349 Features 0 0 0 0 0 0 0 0 0 0 20 6 - - TrigSignatureMoniMT INFO HLT_xe65_cell_L1XE50 #531141817 TrigSignatureMoniMT INFO -- #531141817 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #531141817 Features 0 0 0 0 0 0 0 0 0 0 0 - - - @@ -1127,5 +1136,5 @@ TrigSignatureMoniMT INFO HLT_xe80_tcpufit_unconv TrigSignatureMoniMT INFO -- #153760048 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 TrigSignatureMoniMT INFO -- #153760048 Features 0 0 0 0 0 0 0 0 0 0 0 - - - TrigSignatureMoniMT INFO HLT_xe95_trkmht_xe90_tcpufit_xe75_cell_L1XE50 #302256132 -TrigSignatureMoniMT INFO -- #302256132 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 - - - 0 -TrigSignatureMoniMT INFO -- #302256132 Features 0 0 0 0 0 0 0 0 0 0 0 - - - +TrigSignatureMoniMT INFO -- #302256132 Events 20 20 0 0 0 0 0 0 0 0 0 0 0 0 - - 0 +TrigSignatureMoniMT INFO -- #302256132 Features 0 0 0 0 0 0 0 0 0 0 0 0 - - diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py index 1243169090a2f42ab179437411a5017ae46c536b..e1d37d311f7fe293e090c0cf7117f6010605aec9 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py @@ -4,6 +4,7 @@ from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import RecoFragmentsPool, MenuSequence from AthenaCommon.CFElements import seqAND, parOR from TrigEDMConfig.TriggerEDMRun3 import recordable +from .FullScanDefs import caloFSRoI class CaloMenuDefs(object): """Static Class to collect all string manipulations in Calo sequences """ @@ -48,7 +49,7 @@ def fastCaloMenuSequence(name, doRinger): HypoToolGen = TrigEgammaFastCaloHypoToolFromDict ) -def cellRecoSequence(flags, name="HLTCaloCellMakerFS", RoIs="HLT_FSJETRoI", outputName="CaloCellsFS"): +def cellRecoSequence(flags, name="HLTCaloCellMakerFS", RoIs=caloFSRoI, outputName="CaloCellsFS"): """ Produce the full scan cell collection """ if not RoIs: from L1Decoder.L1DecoderConfig import mapThresholdToL1RoICollection @@ -64,7 +65,7 @@ def cellRecoSequence(flags, name="HLTCaloCellMakerFS", RoIs="HLT_FSJETRoI", outp return parOR(name+"RecoSequence", [alg]), alg.CellsName def caloClusterRecoSequence( - flags, name="HLTCaloClusterMakerFS", RoIs="HLT_FSJETRoI", + flags, name="HLTCaloClusterMakerFS", RoIs=caloFSRoI, outputName="HLT_TopoCaloClustersFS"): """ Create the EM-level fullscan clusters """ cell_sequence, cells_name = RecoFragmentsPool.retrieve(cellRecoSequence, flags=None, RoIs=RoIs) @@ -78,7 +79,7 @@ def caloClusterRecoSequence( return parOR(name+"RecoSequence", [cell_sequence, alg]), alg.CaloClusters def LCCaloClusterRecoSequence( - flags, name="HLTCaloClusterCalibratorLCFS", RoIs="HLT_FSJETRoI", + flags, name="HLTCaloClusterCalibratorLCFS", RoIs=caloFSRoI, outputName="HLT_TopoCaloClustersLCFS"): """ Create the LC calibrated fullscan clusters diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/FullScanDefs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/FullScanDefs.py new file mode 100644 index 0000000000000000000000000000000000000000..321d44889f9b6dc1848371210e696d3211b34959 --- /dev/null +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/FullScanDefs.py @@ -0,0 +1,8 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + +""" Provide a place for definitions required by all fullscan signatures """ + +# RoI used for the full-scan calorimeter step +caloFSRoI = "FSJETMETCaloRoI" +# RoI used for the full-scan tracking step +trkFSRoI = "FSJETMETTrkRoI" diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py index 5b54d52c4abb4062c21c7d99f5365ea531db1767..feef2d17126acd1e046da1dac8ed1ea10d20918c 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py @@ -2,10 +2,11 @@ from AthenaCommon.Logging import logging logging.getLogger().info("Importing %s",__name__) -log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.Jet.JetDef") +log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.Jet.JetChainConfiguration") from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import ChainConfigurationBase from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import ChainStep, RecoFragmentsPool +from .JetRecoConfiguration import jetRecoDictToString import copy @@ -62,17 +63,22 @@ class JetChainConfiguration(ChainConfigurationBase): # -------------------- # Only one step for now, but we might consider adding steps for # reclustering and trimming workflows - - step1_jetCollectionName, step1= self.getJetChainStep() - steps=[step1] - chainSteps = [] - for step in steps: - chainSteps+=[step] - - + if self.recoDict["trkopt"]=="ftf": + if self.recoDict["trkpresel"]=="nopresel": + clustersKey, caloRecoStep = self.getJetCaloRecoChainStep() + chainSteps.append( caloRecoStep ) + elif self.recoDict["trkpresel"]=="preselj45": + clustersKey, jetPreselStep = self.getJetCaloPreselChainStep() + chainSteps.append( jetPreselStep ) + jetCollectionName, jetTrackingHypoStep = self.getJetTrackingHypoChainStep(clustersKey) + chainSteps.append( jetTrackingHypoStep ) + else: + jetCollectionName, jetCaloHypoStep = self.getJetCaloHypoChainStep() + chainSteps.append( jetCaloHypoStep ) + if "JetDS" in self.chainName: - TLAStep = self.getJetTLAChainStep(step1_jetCollectionName) + TLAStep = self.getJetTLAChainStep(jetCollectionName) chainSteps+= [TLAStep] myChain = self.buildChain(chainSteps) @@ -83,27 +89,93 @@ class JetChainConfiguration(ChainConfigurationBase): # -------------------- # Configuration of steps # -------------------- - def getJetChainStep(self): - from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetMenuSequence - from TriggerMenuMT.HLTMenuConfig.Jet.JetRecoSequences import jetRecoDictToString + def getJetCaloHypoChainStep(self): + jetDefStr = jetRecoDictToString(self.recoDict) + + stepName = "MainStep_jet_"+jetDefStr + from AthenaConfiguration.AllConfigFlags import ConfigFlags + from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloHypoMenuSequence + jetSeq = RecoFragmentsPool.retrieve( jetCaloHypoMenuSequence, + ConfigFlags, **self.recoDict ) + jetCollectionName = jetSeq.hypo.Alg.Jets + + return jetCollectionName, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict]) + def getJetTrackingHypoChainStep(self, clustersKey): jetDefStr = jetRecoDictToString(self.recoDict) - stepName = "Step1_jet_"+jetDefStr + stepName = "MainStep_jet_"+jetDefStr from AthenaConfiguration.AllConfigFlags import ConfigFlags - jetSeq1 = RecoFragmentsPool.retrieve( jetMenuSequence, ConfigFlags, **self.recoDict ) # the None will be used for flags in future - step1_jetCollectionName = jetSeq1.hypo.Alg.Jets - chainStep1 = ChainStep(stepName, [jetSeq1], multiplicity=[1], chainDicts=[self.dict]) - - return step1_jetCollectionName, chainStep1 + from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetTrackingHypoMenuSequence + jetSeq = RecoFragmentsPool.retrieve( jetTrackingHypoMenuSequence, + ConfigFlags, clustersKey=clustersKey, **self.recoDict ) + jetCollectionName = jetSeq.hypo.Alg.Jets + + return jetCollectionName, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict]) + + def getJetCaloRecoChainStep(self): + stepName = "CaloRecoPTStep_jet_"+self.recoDict["calib"] + from AthenaConfiguration.AllConfigFlags import ConfigFlags + from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloRecoMenuSequence + jetSeq, clustersKey = RecoFragmentsPool.retrieve( jetCaloRecoMenuSequence, + ConfigFlags, clusterCalib=self.recoDict["calib"] ) + + return clustersKey, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict]) + + def getJetCaloPreselChainStep(self): + # Define a fixed preselection dictionary for prototyping -- we may expand the options + preselRecoDict = { + 'recoAlg':'a4', + 'dataType':'tc', + 'calib':'em', + 'jetCalib':'subjesIS', + 'trkopt':'notrk', + 'trkpresel': 'nopresel' + } + preselJetParts = dict(preselRecoDict) + preselJetParts.update( + {'L1threshold': 'NOL1SEED', + 'TLA': '', + 'addInfo': [], + 'bConfig': [], + 'bMatching': [], + 'bTag': '', + 'bTracking': '', + 'chainPartName': 'j45', + 'cleaning': 'noCleaning', + 'dataScouting': '', + 'etaRange': '0eta320', + 'extra': '', + 'hypoScenario': 'simple', + 'jvt': '', + 'momCuts': '', + 'multiplicity': '1', + 'scan': 'FS', + 'signature': 'Jet', + 'smc': 'nosmc', + 'threshold': '20', + 'topo': [], + 'trigType': 'j'} + ) + preselChainDict = dict(self.dict) + preselChainDict['chainParts'] = [preselJetParts] + + jetDefStr = jetRecoDictToString(preselRecoDict) + + stepName = "PreselStep_jet_"+jetDefStr + from AthenaConfiguration.AllConfigFlags import ConfigFlags + from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloPreselMenuSequence + jetSeq, clustersKey = RecoFragmentsPool.retrieve( jetCaloPreselMenuSequence, + ConfigFlags, **preselRecoDict ) + + return clustersKey, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[preselChainDict]) def getJetTLAChainStep(self, jetCollectionName): - #maybe not needed - from TriggerMenuMT.HLTMenuConfig.Jet.JetTLAConfiguration import jetTLAMenuSequence + from TriggerMenuMT.HLTMenuConfig.Jet.JetTLASequences import jetTLAMenuSequence - stepName = "Step2_jetTLA_"+jetCollectionName - jetSeq2 = RecoFragmentsPool.retrieve( jetTLAMenuSequence, jetCollectionName ) # the None will be used for flags in future - chainStep2 = ChainStep(stepName, [jetSeq2], multiplicity=[1], chainDicts=[self.dict]) + stepName = "TLAStep_"+jetCollectionName + jetSeq = RecoFragmentsPool.retrieve( jetTLAMenuSequence, jetCollectionName ) + chainStep = ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict]) - return chainStep2 + return chainStep diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetMenuSequences.py index ec486493dcbb9a4fe254ce0d72109a9fd430bc45..2215c5846f49b01355baaab8d62a042f0d70e9f9 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetMenuSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetMenuSequences.py @@ -1,25 +1,157 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import RecoFragmentsPool, MenuSequence -from TriggerMenuMT.HLTMenuConfig.Jet.JetRecoSequences import jetAthSequence, jetRecoDictToString - -def jetCFSequence(configFlags,**recoDict): - """ Function to create the jet Menu Sequence""" - - #reco sequence - (JetAthSequence, InputMakerAlg, sequenceOut) = RecoFragmentsPool.retrieve(jetAthSequence,configFlags,**recoDict) - return (JetAthSequence, InputMakerAlg, sequenceOut) - -def jetMenuSequence(configFlags,**recoDict): - (JetAthSequence, InputMakerAlg, sequenceOut)= jetCFSequence(configFlags,**recoDict) +from AthenaCommon.CFElements import seqAND +from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable +from .JetRecoConfiguration import jetRecoDictToString +from AthenaConfiguration.ComponentFactory import CompFactory +from ..CommonSequences.FullScanDefs import caloFSRoI, trkFSRoI + +# For step 1, starting from the basic calo reco and topoclustering +# Used for calo-only chains and preselection for tracking +def getInitialInputMaker(): + from TrigT2CaloCommon.CaloDef import clusterFSInputMaker + InputMakerAlg = conf2toConfigurable(clusterFSInputMaker()) + return InputMakerAlg + +# For later steps, where calo reco should not be run +# The same instance of an algorithm cannot be run in different steps +# Used for chains that use tracking +def getTrackingInputMaker(): + InputMakerAlg = conf2toConfigurable(CompFactory.InputMakerForRoI( "IM_Jet_TrackingStep" )) + InputMakerAlg.RoITool = conf2toConfigurable(CompFactory.ViewCreatorInitialROITool()) + InputMakerAlg.RoIs = trkFSRoI + return InputMakerAlg + + +############################################################################################### +# Complete sequences that set up or specify the inputs to jet finding + +# This sets up the reconstruction starting from topoclusters. +# No tracking is permitted. +def jetCaloRecoSequences( configFlags, RoIs, **jetRecoDict ): + if jetRecoDict["trkopt"] != "notrk": + raise ValueError("Calorimeter jet reco called with a tracking option!") + + # Get the topocluster reconstruction sequence + from .JetRecoSequences import jetClusterSequence, jetRecoSequence + topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve( + jetClusterSequence, configFlags, RoIs=RoIs, clusterCalib=jetRecoDict["calib"]) + + # Get the jet reconstruction sequence including the jet definition and output collection + jetRecoSeq, jetsOut, jetDef = RecoFragmentsPool.retrieve( + jetRecoSequence, configFlags, clustersKey=clustersKey, **jetRecoDict ) + + return [topoClusterSequence,jetRecoSeq], jetsOut, clustersKey + +# This sets up the reconstruction where tracks are required. +# Topoclustering will not be scheduled, we just pass in the name of the cluster collection. +def jetTrackingRecoSequences(configFlags, RoIs, clustersKey, **jetRecoDict): + if jetRecoDict["trkopt"] == "notrk": + raise ValueError("Jet reco with tracks called without a tracking option!") + + # Get the track reconstruction sequence + from .JetTrackingConfig import JetTrackingSequence + (jetTrkSeq, trkcolls) = RecoFragmentsPool.retrieve( + JetTrackingSequence, configFlags, trkopt=jetRecoDict["trkopt"], RoIs=RoIs) + + # Get the jet reconstruction sequence including the jet definition and output collection + # Pass in the cluster and track collection names + from .JetRecoSequences import jetRecoSequence + jetRecoSeq, jetsOut, jetDef = RecoFragmentsPool.retrieve( + jetRecoSequence, + configFlags, clustersKey=clustersKey, **trkcolls, **jetRecoDict ) + + return [jetTrkSeq,jetRecoSeq], jetsOut + +############################################################################################### +# Functions defining the MenuSequence that will be placed into ChainSteps + +# Generate a menu sequence given a set of jet sequences to schedule. +# The hypo may be set up as a preselection hypo, in which case it will +# record a single DecisionObject, instead of one per jet. +# A hypo may alternatively be configured to passThrough, such that +# the hypo will not retrieve any jets and simply pass. + +from enum import Enum +class JetHypoAlgType(Enum): + STANDARD = 0 + PRESEL = 1 + PASSTHROUGH = 2 + +def makeMenuSequence(jetSeq,IMAlg,jetsIn,jetDefString,hypoType=JetHypoAlgType.STANDARD): + #hypo - from TrigHLTJetHypo.TrigHLTJetHypoConf import TrigJetHypoAlgMT from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetHypoToolFromDict - hypo = TrigJetHypoAlgMT("TrigJetHypoAlgMT_"+jetRecoDictToString(recoDict)) - hypo.Jets = sequenceOut + def trigStreamerHypoTool(chain_dict): + return conf2toConfigurable(CompFactory.TrigStreamerHypoToolMT(chain_dict["chainName"])) - return MenuSequence( Sequence = JetAthSequence, - Maker = InputMakerAlg, + hyponame = "TrigJetHypoAlgMT_"+jetDefString + trigHypoToolGen = trigJetHypoToolFromDict + if hypoType==JetHypoAlgType.PASSTHROUGH: + hyponame = "TrigStreamerHypoAlgMT_caloReco" + hypo = conf2toConfigurable(CompFactory.TrigStreamerHypoAlgMT(hyponame,SetInitialRoIAsFeature=True)) + trigHypoToolGen = trigStreamerHypoTool + elif hypoType==JetHypoAlgType.PRESEL: + hyponame += "_presel" + hypo = conf2toConfigurable(CompFactory.TrigJetHypoAlgMT(hyponame, Jets=jetsIn, DoPresel=True)) + else: + hypo = conf2toConfigurable(CompFactory.TrigJetHypoAlgMT(hyponame, Jets=jetsIn)) + + return MenuSequence( Sequence = jetSeq, + Maker = IMAlg, Hypo = hypo, - HypoToolGen = trigJetHypoToolFromDict ) + HypoToolGen = trigHypoToolGen ) + +# For the preselection step before running tracking (step 1) +def jetCaloPreselMenuSequence(configFlags, **jetRecoDict): + InputMakerAlg = getInitialInputMaker() + jetSequences, jetsIn, clustersKey = RecoFragmentsPool.retrieve( + jetCaloRecoSequences, + configFlags, RoIs=caloFSRoI, **jetRecoDict) + + jetDefString = jetRecoDictToString(jetRecoDict) + jetAthSeq = seqAND("jetSeqCaloPresel_"+jetDefString,[InputMakerAlg]+jetSequences) + + return makeMenuSequence(jetAthSeq,InputMakerAlg,jetsIn,jetDefString, + hypoType=JetHypoAlgType.PRESEL), clustersKey + +# A null preselection, which will only run the cluster making (step 1) +def jetCaloRecoMenuSequence(configFlags, clusterCalib): + InputMakerAlg = getInitialInputMaker() + jetsIn = "" + from .JetRecoSequences import jetClusterSequence + topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve( + jetClusterSequence, configFlags, RoIs=caloFSRoI, clusterCalib=clusterCalib) + + jetAthSeq = seqAND("jetSeqCaloRecoPassThrough_"+clusterCalib,[InputMakerAlg,topoClusterSequence]) + + return makeMenuSequence(jetAthSeq,InputMakerAlg,jetsIn,"caloreco", + hypoType=JetHypoAlgType.PASSTHROUGH), clustersKey + +# A full hypo selecting only on calo jets (step 1) +def jetCaloHypoMenuSequence(configFlags, **jetRecoDict): + InputMakerAlg = getInitialInputMaker() + jetSequences, jetsIn, clustersKey = RecoFragmentsPool.retrieve( + jetCaloRecoSequences, + configFlags, RoIs=caloFSRoI, **jetRecoDict) + jetDefString = jetRecoDictToString(jetRecoDict) + jetAthSeq = seqAND("jetSeqCaloHypo_"+jetDefString,[InputMakerAlg]+jetSequences) + + return makeMenuSequence(jetAthSeq,InputMakerAlg,jetsIn,jetDefString) + +# A full hypo selecting on jets with track reco (step 2) +# To combine either with a presel or a passthrough sequence +# As this does not run topoclustering, the cluster collection +# name needs to be passed in +def jetTrackingHypoMenuSequence(configFlags, clustersKey, **jetRecoDict): + InputMakerAlg = getTrackingInputMaker() + jetSequences, jetsIn = RecoFragmentsPool.retrieve( + jetTrackingRecoSequences, + configFlags, RoIs=trkFSRoI, clustersKey=clustersKey, **jetRecoDict) + + jetDefString = jetRecoDictToString(jetRecoDict) + jetAthSeq = seqAND("jetSeqTrkHypo_"+jetDefString,[InputMakerAlg]+jetSequences) + + return makeMenuSequence(jetAthSeq,InputMakerAlg,jetsIn,jetDefString) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoConfiguration.py index 7adb1f6efa51c3908339e4fb862788cad68aef58..1d6109a0dcc4485c00877e343afc7ef59f49f0bc 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoConfiguration.py @@ -19,11 +19,12 @@ def interpretJetCalibDefault(recoDict): elif recoDict['dataType'].endswith('pf'): return 'subresjesgscIS' +recoKeys = ['recoAlg','dataType','calib','jetCalib','trkopt','trkpresel'] + # Extract the jet reco dict from the chainDict def extractRecoDict(chainParts): # interpret the reco configuration only # eventually should just be a subdict in the chainDict - recoKeys = ['recoAlg','dataType','calib','jetCalib','trkopt','cleaning'] recoDict = {} for p in chainParts: for k in recoKeys: @@ -43,6 +44,40 @@ def extractRecoDict(chainParts): return recoDict +# Translate the reco dict to a string for suffixing etc +def jetRecoDictToString(jetRecoDict): + strtemp = "{recoAlg}_{dataType}_{calib}_{jetCalib}" + if jetRecoDict["trkopt"] != "notrk": + strtemp += "_{trkopt}_{trkpresel}" + return strtemp.format(**jetRecoDict) + +# Inverse of the above, essentially only for CF tests +def jetRecoDictFromString(jet_def_string): + + # Translate the definition string into an approximation + # of the "recoParts" in the jet chainParts. + jetRecoDict = {} + # Insert values from string + # Python names are more descriptive. May want to sync + # these names with the SignatureDict, needs coordination with + # menu group when they start to implement this + trkopt = "notrk" + trkpresel = "nopresel" + if "_ftf" in jet_def_string: + jetalg, inputtype, clusterscale, jetcalib, trkopt = jet_def_string.split('_') + else: + jetalg, inputtype, clusterscale, jetcalib = jet_def_string.split('_') + + jetRecoDict = { + "recoAlg": jetalg, + "dataType": inputtype, + "calib": clusterscale, + "jetCalib": jetcalib, + "trkopt" : trkopt, + "trkpresel": trkpresel + } + return jetRecoDict + # Define the jet constituents to be interpreted by JetRecConfig # When actually specifying the reco, clustersKey should be # set, but default to None to allow certain checks, in particular diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py index 9189cd93342c2a3d9e5a3ae02cd04302bba7a2d6..9f8e18736c812458a36a66dac278b66e69c6a5b0 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py @@ -2,41 +2,55 @@ # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # -from AthenaCommon.CFElements import parOR, seqAND +from AthenaCommon.CFElements import parOR from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import RecoFragmentsPool from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable -from TriggerMenuMT.HLTMenuConfig.Jet import JetRecoConfiguration from JetRecConfig.JetRecConfig import getConstitPJGAlg, getJetAlgorithm from JetRecConfig import JetInputConfig from JetRecConfig import JetRecConfig from TrigEDMConfig.TriggerEDMRun3 import recordable -# Translate the reco dict to a string for suffixing etc -def jetRecoDictToString(jetRecoDict): - strtemp = "{recoAlg}_{dataType}_{calib}_{jetCalib}" - if jetRecoDict["trkopt"] != "notrk": - strtemp += "_{trkopt}" - return strtemp.format(**jetRecoDict) +from . import JetRecoConfiguration +from .JetRecoConfiguration import jetRecoDictToString -# Configure reco from a dict of options -# Start from a FullScan inputs maker -def jetAthSequence(configFlags, **jetRecoDict): - from TrigT2CaloCommon.CaloDef import clusterFSInputMaker - InputMakerAlg= conf2toConfigurable(clusterFSInputMaker()) +############################################################################################### +# Sequences for input information - (recoSequence, sequenceOut, jetDef) = RecoFragmentsPool.retrieve( jetRecoSequence, configFlags, **jetRecoDict ) +# Calo cell unpacking and topocluster reconstruction +def jetClusterSequence(configFlags, RoIs, clusterCalib): + + # Start by adding the topocluster reco sequence + from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import ( + caloClusterRecoSequence, LCCaloClusterRecoSequence) + if clusterCalib == "em": + topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve( + caloClusterRecoSequence, flags=None, RoIs=RoIs) + elif clusterCalib == "lcw": + topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve( + LCCaloClusterRecoSequence, flags=None, RoIs=RoIs) + else: + raise ValueError("Invalid value for calib: '{}'".format(clusterCalib)) + + return topoClusterSequence, clustersKey - jetDefString = jetRecoDictToString(jetRecoDict) - JetAthSequence = seqAND("jetAthSequence_"+jetDefString,[InputMakerAlg, recoSequence ]) - return (JetAthSequence, InputMakerAlg, sequenceOut) +############################################################################################### +# Sequences that set up the concrete jet finding job jetNamePrefix = "HLT_" -# Dummy flag arg needed so that each reco sequence is held separately -# in the RecoFragmentsPool -- only the kwargs are used to distinguish -# different sequences. New convention is just to pass "None" for flags -def jetRecoSequence( configFlags, RoIs = 'HLT_FSJETRoI', **jetRecoDict ): +# Need to do this hacky extraction to get around the inability +# to hash dicts as input to RecoFragmentsPool.retrieve +from .JetTrackingConfig import trkcollskeys +def getTrkColls(jetRecoDict): + trkcolls = {key:jetRecoDict[key] for key in trkcollskeys} + return trkcolls + +# The top-level sequence, forwards arguments as appropriate to +# standard jet reco, grooming or reclustering sequences +# If tracking is required, then the trkcolls dict (returned by the +# JetTrackingSequence) must also be passed as kwargs +def jetRecoSequence( configFlags, clustersKey, **jetRecoDict ): jetalg, jetradius, extra = JetRecoConfiguration.interpretRecoAlg(jetRecoDict["recoAlg"]) doGrooming = extra in ["t","sd"] @@ -44,55 +58,44 @@ def jetRecoSequence( configFlags, RoIs = 'HLT_FSJETRoI', **jetRecoDict ): dataSource = "mc" if configFlags.Input.isMC else "data" if doRecluster: - return RecoFragmentsPool.retrieve( reclusteredJetRecoSequence, configFlags, dataSource=dataSource, RoIs=RoIs, **jetRecoDict) + return RecoFragmentsPool.retrieve( + reclusteredJetRecoSequence, + configFlags, dataSource=dataSource, + clustersKey=clustersKey, **jetRecoDict) elif doGrooming: - return RecoFragmentsPool.retrieve( groomedJetRecoSequence, configFlags, dataSource=dataSource, RoIs=RoIs, **jetRecoDict) + return RecoFragmentsPool.retrieve( + groomedJetRecoSequence, + configFlags, dataSource=dataSource, + clustersKey=clustersKey, **jetRecoDict) else: - return RecoFragmentsPool.retrieve( standardJetRecoSequence, configFlags, dataSource=dataSource, RoIs=RoIs, **jetRecoDict) + return RecoFragmentsPool.retrieve( + standardJetRecoSequence, + configFlags, dataSource=dataSource, + clustersKey=clustersKey, **jetRecoDict) # Normal jet reconstruction, no reclustering or grooming -def standardJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ): +def standardJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict ): jetDefString = jetRecoDictToString(jetRecoDict) recoSeq = parOR( "JetRecSeq_"+jetDefString, []) + trkcolls = getTrkColls(jetRecoDict) if jetRecoDict["trkopt"]!="notrk" else {} - # Start by adding the topocluster reco sequence - from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import ( - caloClusterRecoSequence, LCCaloClusterRecoSequence) - if jetRecoDict["calib"] == "em": - topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve( - caloClusterRecoSequence, flags=None, RoIs=RoIs) - elif jetRecoDict["calib"] == "lcw": - topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve( - LCCaloClusterRecoSequence, flags=None, RoIs=RoIs) - else: - raise ValueError("Invalid value for calib: '{}'".format(jetRecoDict["calib"])) - recoSeq += topoClusterSequence - - # Set up tracking sequence -- may need to reorganise or relocate - # depending on how we want to handle HLT preselection - trkcolls = None - if jetRecoDict["trkopt"] != "notrk": - from .JetTrackingConfig import JetTrackingSequence - (jettrkseq, trkcolls) = RecoFragmentsPool.retrieve( JetTrackingSequence, configFlags, trkopt=jetRecoDict["trkopt"], RoIs=RoIs) - recoSeq += jettrkseq - - # Potentially add particle flow reconstruction - # Work in progress + # Add particle flow reconstruction if needed if "pf" in jetRecoDict["dataType"]: - if jetRecoDict["trkopt"] == "notrk": + if not trkcolls: raise RuntimeError("PFlow jet chain requested with no tracking option!") from eflowRec.PFHLTSequence import PFHLTSequence - (pfseq, pfoPrefix) = RecoFragmentsPool.retrieve(PFHLTSequence, configFlags, clustersin=clustersKey, tracktype=jetRecoDict["trkopt"]) + (pfseq, pfoPrefix) = RecoFragmentsPool.retrieve( + PFHLTSequence, + configFlags, clustersin=clustersKey, tracktype=jetRecoDict["trkopt"]) recoSeq += pfseq jetDef = JetRecoConfiguration.defineJets(jetRecoDict,pfoPrefix=pfoPrefix, prefix=jetNamePrefix) else: jetDef = JetRecoConfiguration.defineJets(jetRecoDict,clustersKey=clustersKey, prefix=jetNamePrefix) - doConstitMods = jetRecoDict["dataType"] in ["sktc","cssktc", "pf", "csskpf"] - + # chosen jet collection jetsFullName = jetDef.fullname() - sequenceOut = recordable(jetsFullName) - + jetsOut = recordable(jetsFullName) + doConstitMods = jetRecoDict["dataType"] in ["sktc","cssktc", "pf", "csskpf"] JetRecConfig.instantiateAliases(jetDef) if doConstitMods: # Get online monitoring jet rec tool @@ -115,7 +118,7 @@ def standardJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ): pjs.append(trkcolls["GhostTracks"]) jetModList = [] - if jetRecoDict["trkopt"] != "notrk": + if trkcolls: trkMods = JetRecoConfiguration.defineTrackMods(jetRecoDict["trkopt"]) jetModList += trkMods @@ -151,25 +154,29 @@ def standardJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ): # (via a JetRecTool instance). jetRecAlg = JetRecConfig.getJetAlgorithm(jetsFullName, jetDef, pjs, monTool) recoSeq += conf2toConfigurable( jetRecAlg ) + # End of basic jet reco - return recoSeq, sequenceOut, jetDef + return recoSeq, jetsOut, jetDef # Grooming needs the ungroomed jets to be built first, # so call the basic jet reco seq, then add a grooming alg -def groomedJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ): +def groomedJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict ): jetDefString = jetRecoDictToString(jetRecoDict) recoSeq = parOR( "JetGroomSeq_"+jetDefString, []) + ungroomedJetRecoDict = dict(jetRecoDict) ungroomedJetRecoDict["recoAlg"] = ungroomedJetRecoDict["recoAlg"].rstrip("tsd") # Drop grooming spec ungroomedJetRecoDict["jetCalib"] = "nojcalib" # No need to calibrate - (ungroomedJetRecoSequence,ungroomedJetsName, ungroomedDef) = RecoFragmentsPool.retrieve(standardJetRecoSequence,configFlags,dataSource=dataSource,RoIs=RoIs,**ungroomedJetRecoDict) + (ungroomedJetRecoSequence,ungroomedJetsName, ungroomedDef) = RecoFragmentsPool.retrieve( + standardJetRecoSequence, + configFlags, dataSource=dataSource, clustersKey=clustersKey, + **ungroomedJetRecoDict) recoSeq += conf2toConfigurable( ungroomedJetRecoSequence ) # Need to forward the pseudojets of the parents to the groomer parentpjs = getattr(ungroomedJetRecoSequence,"jetalg_{}".format(ungroomedJetsName)).Tools[0].InputPseudoJets - - groomDef = JetRecoConfiguration.defineGroomedJets(jetRecoDict,ungroomedDef)#,ungroomedJetsName) + groomDef = JetRecoConfiguration.defineGroomedJets(jetRecoDict,ungroomedDef) groomedJetsFullName = groomDef.fullname()+"_"+jetRecoDict["jetCalib"] if jetRecoDict["trkopt"]!="notrk": groomedJetsFullName += "_"+jetRecoDict["trkopt"] @@ -186,19 +193,23 @@ def groomedJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ): groomalg = getJetGroomAlg(groomedJetsFullName,groomDef,parentpjs,monTool) recoSeq += conf2toConfigurable( groomalg ) - sequenceOut = recordable(groomedJetsFullName) - return recoSeq, sequenceOut, groomDef + jetsOut = recordable(groomedJetsFullName) + jetDef = groomDef + return recoSeq, jetsOut, jetDef # Reclustering -- call the basic jet reco and add this to the sequence, # then add another jet algorithm to run the reclustering step -def reclusteredJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ): +def reclusteredJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict ): jetDefString = jetRecoDictToString(jetRecoDict) recoSeq = parOR( "JetReclusterSeq_"+jetDefString, []) basicJetRecoDict = dict(jetRecoDict) basicJetRecoDict["recoAlg"] = "a4" # Standard size for reclustered - (basicJetRecoSequence,basicJetsName, basicJetDef) = RecoFragmentsPool.retrieve(standardJetRecoSequence,configFlags,dataSource=dataSource,RoIs=RoIs,**basicJetRecoDict) + (basicJetRecoSequence,basicJetsName, basicJetDef) = RecoFragmentsPool.retrieve( + standardJetRecoSequence, + configFlags, dataSource=dataSource, clustersKey=clustersKey, + **basicJetRecoDict) recoSeq += basicJetRecoSequence rcJetPtMin = 15e3 # 15 GeV minimum pt for jets to be reclustered @@ -227,6 +238,6 @@ def reclusteredJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ): recoSeq += conf2toConfigurable( rcJetRecAlg ) - sequenceOut = recordable(rcJetsFullName) + jetsOut = recordable(rcJetsFullName) jetDef = rcJetDef - return recoSeq, sequenceOut, jetDef + return recoSeq, jetsOut, jetDef diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLAConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLASequences.py similarity index 72% rename from Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLAConfiguration.py rename to Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLASequences.py index fe25509c75d54d1d0439acb81aedbb7504618aad..8ecf1caf2f8b66acb0f5992cac5b4a00b8622cb8 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLAConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLASequences.py @@ -7,42 +7,41 @@ from AthenaCommon.CFElements import parOR, seqAND from GaudiKernel.Constants import WARNING #this can eventually become a TLA/PEB sequence, but let's start with TLA only -def jetTLASequence(jetDefString): +def jetTLASequence(jetsin): #make a new reco sequence, empty at this point now - recoSeq = parOR("JetTLASeq_"+jetDefString, []) + recoSeq = parOR("JetTLASeq_"+jetsin, []) #import the TLA algorithm that selects jets and makes a new collection to pass to [what used to be the ScoutingStreamWriter] from TrigHLTJetRec import TrigHLTJetTLASelector - tempInputCollection = jetDefString - sequenceOut=jetDefString+"_TLA" - TLAAlg=TrigHLTJetTLASelector.getConfiguredTLASelector(inputJetsKey=tempInputCollection, outputJetsKey=sequenceOut, outputLevel=WARNING) + sequenceOut=jetsin+"_TLA" + TLAAlg=TrigHLTJetTLASelector.getConfiguredTLASelector(inputJetsKey=jetsin, outputJetsKey=sequenceOut, outputLevel=WARNING) recoSeq+=TLAAlg return (recoSeq, sequenceOut) #Configure an AthSequence for jet TLA - will eventually also include PEB -def jetTLAAthSequence(jetDefString): +def jetTLAAthSequence(jetsin): from AthenaConfiguration.ComponentFactory import CompFactory - InputMakerAlg = CompFactory.InputMakerForRoI( "IM_TLAJet_step2" ) + InputMakerAlg = CompFactory.InputMakerForRoI( "IM_Jet_TLAStep" ) InputMakerAlg.RoITool = CompFactory.ViewCreatorInitialROITool() InputMakerAlg.mergeUsingFeature = True - (JetTLASequence, sequenceOut) = RecoFragmentsPool.retrieve( jetTLASequence, jetDefString ) - JetTLAAthSequence = seqAND("jetTLAAthSequence_"+jetDefString,[InputMakerAlg, JetTLASequence ]) + (JetTLASequence, sequenceOut) = RecoFragmentsPool.retrieve( jetTLASequence, jetsin ) + JetTLAAthSequence = seqAND("jetTLAAthSequence_"+jetsin,[InputMakerAlg, JetTLASequence ]) return (JetTLAAthSequence, InputMakerAlg, sequenceOut) -def jetTLAMenuSequence(jetDefString): +def jetTLAMenuSequence(jetsin): from TrigHLTJetHypo.TrigHLTJetHypoConf import TrigJetTLAHypoAlgMT from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetTLAHypoToolFromDict - (JetTLAAthSequence, InputMakerAlg, sequenceOut) = RecoFragmentsPool.retrieve(jetTLAAthSequence,jetDefString) + (JetTLAAthSequence, InputMakerAlg, sequenceOut) = RecoFragmentsPool.retrieve(jetTLAAthSequence,jetsin) - hypo = TrigJetTLAHypoAlgMT("TrigJetTLAHypoAlgMT_"+jetDefString) + hypo = TrigJetTLAHypoAlgMT("TrigJetTLAHypoAlgMT_"+jetsin) hypo.Jets = sequenceOut return MenuSequence( Sequence = JetTLAAthSequence, diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py index 9ee6e53d6ef4bc5ef192e5aebe181402348ee2b4..60b249ecd7cd5cb2856c292ca692d5c7ca1fa24a 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py @@ -9,6 +9,8 @@ from JetRecTools.JetRecToolsConfig import getTrackSelTool, getTrackVertexAssocTo from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable +trkcollskeys = ["Tracks", "Vertices", "TVA", "GhostTracks", "GhostTracksLabel", "JetTracks"] + def JetTrackingSequence(dummyFlags,trkopt,RoIs): jetTrkSeq = parOR( "JetTrackingSeq_"+trkopt, []) tracksname = "" @@ -19,7 +21,7 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs): if trkopt=="ftf": from TrigInDetConfig.InDetSetup import makeInDetAlgsNoView - viewAlgs = makeInDetAlgsNoView( config = IDTrigConfig, rois=recordable(RoIs)) + viewAlgs = makeInDetAlgsNoView( config = IDTrigConfig, rois=RoIs) jetTrkSeq += viewAlgs tracksname = IDTrigConfig.FT.tracksFTF( doRecord = IDTrigConfig.isRecordable ) verticesname = recordable("HLT_IDVertex_FS") @@ -30,10 +32,14 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs): jetTrkSeq += prmVtx tvaname = "JetTrackVtxAssoc_"+trkopt + label = "GhostTrack_{}".format(trkopt) + ghosttracksname = "PseudoJet{}".format(label) trkcolls = { "Tracks": tracksname, "Vertices": verticesname, "TVA": tvaname, + "GhostTracks" : ghosttracksname, + "GhostTracksLabel": label, } from JetRecTools.JetRecToolsConfig import trackcollectionmap @@ -46,18 +52,11 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs): jettvassoc = getTrackVertexAssocTool(trkopt) trackcollectionmap[trkopt]["JetTracks"] = jettracksname - trackcollectionmap[trkopt]["TVA"] = tvaname jettrkprepalg = CompFactory.JetAlgorithm("jetalg_TrackPrep") jettrkprepalg.Tools = [ jettrackselloose, jettvassoc ] jetTrkSeq += conf2toConfigurable( jettrkprepalg ) - label = "GhostTrack_{}".format(trkopt) - ghosttracksname = "PseudoJet{}".format(label) - - trackcollectionmap[trkopt]["GhostTracks"] = ghosttracksname - trackcollectionmap[trkopt]["GhostTracksLabel"] = label - pjgalg = CompFactory.PseudoJetAlgorithm( "pjgalg_"+label, InputContainer=tracksname, @@ -67,4 +66,4 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs): ) jetTrkSeq += conf2toConfigurable( pjgalg ) - return jetTrkSeq, trkcolls + return jetTrkSeq, trackcollectionmap[trkopt] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py index 87f6f0587975394a6b92c814524aa5347dfdb15e..e84e9cf305a4fdd4c50150b37ce2beb9240ffc4f 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py @@ -5,16 +5,17 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory import pprint from AthenaCommon.Logging import logging +from ..CommonSequences.FullScanDefs import caloFSRoI log = logging.getLogger( 'TriggerMenuMT.HLTMenuConfig.Jet.generateJet' ) def HLTCaloCellMakerCfg( cellsname, cdaSvc ): result = ComponentAccumulator() verifier = CompFactory.AthViews.ViewDataVerifier( name = 'VDVFSCaloJet', - DataObjects = [('TrigRoiDescriptorCollection', 'StoreGateSvc+HLT_FSJETRoI'), + DataObjects = [('TrigRoiDescriptorCollection', f"StoreGateSvc+{caloFSRoI}"), ('CaloBCIDAverage', 'StoreGateSvc+CaloBCIDAverage') ]) result.addEventAlgo( verifier ) cellmaker = CompFactory.HLTCaloCellMaker("HLTCaloCellMaker_FS") - cellmaker.RoIs = "HLT_FSJETRoI" + cellmaker.RoIs = caloFSRoI cellmaker.TrigDataAccessMT = cdaSvc cellmaker.CellsName = cellsname diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgConfigs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgConfigs.py index 91b456ed7964e603e47594ae71b630e7ae542d5e..042a5f7c7dbc0172784048108b00e35ea27b5ce1 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgConfigs.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgConfigs.py @@ -2,13 +2,21 @@ # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration # -from .ConfigHelpers import AlgConfig, jetRecoDictForMET -from ..Menu.MenuComponents import RecoFragmentsPool +from .ConfigHelpers import AlgConfig from ..Menu.SignatureDicts import METChainParts import GaudiKernel.SystemOfUnits as Units import TrigEFMissingET.PUClassification as PUClassification +from TrigEFMissingET.TrigEFMissingETConf import ( + HLT__MET__CellFex, + HLT__MET__TCFex, + HLT__MET__TCPufitFex, + HLT__MET__MHTFex, + HLT__MET__TrkMHTFex, + HLT__MET__PFSumFex, + HLT__MET__MHTPufitFex, + HLT__MET__PUSplitPufitFex, +) -from AthenaConfiguration.AllConfigFlags import ConfigFlags from AthenaCommon.Logging import logging @@ -41,18 +49,10 @@ class CellConfig(AlgConfig): return "cell" def __init__(self, **recoDict): - super(CellConfig, self).__init__(**recoDict) - from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import ( - cellRecoSequence, - ) - from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__CellFex - - cellMakerSeq, cellName = RecoFragmentsPool.retrieve( - cellRecoSequence, flags=None, RoIs=self.inputMaker.RoIs - ) + super(CellConfig, self).__init__(inputs=["Cells"], **recoDict) - self.inputs = [cellMakerSeq] - self.fexAlg = self._make_fex_alg(HLT__MET__CellFex, CellName=cellName) + def make_fex(self, name, inputs): + return HLT__MET__CellFex(name, CellName=inputs["Cells"]) class TCConfig(AlgConfig): @@ -61,25 +61,10 @@ class TCConfig(AlgConfig): return "tc" def __init__(self, calib, **recoDict): - super(TCConfig, self).__init__(calib=calib, **recoDict) - from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import ( - caloClusterRecoSequence, - LCCaloClusterRecoSequence, - ) - from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__TCFex + super(TCConfig, self).__init__(inputs=["Clusters"], calib=calib, **recoDict) - RoIs = self.inputMaker.RoIs - if calib == "em": - tcSeq, clusterName = RecoFragmentsPool.retrieve( - caloClusterRecoSequence, flags=None, RoIs=RoIs - ) - elif calib == "lcw": - tcSeq, clusterName = RecoFragmentsPool.retrieve( - LCCaloClusterRecoSequence, flag=None, RoIs=RoIs - ) - - self.inputs = [tcSeq] - self.fexAlg = self._make_fex_alg(HLT__MET__TCFex, ClusterName=clusterName) + def make_fex(self, name, inputs): + return HLT__MET__TCFex(name, ClusterName=inputs["Clusters"]) class TCPufitConfig(AlgConfig): @@ -88,25 +73,12 @@ class TCPufitConfig(AlgConfig): return "tcpufit" def __init__(self, calib, **recoDict): - super(TCPufitConfig, self).__init__(calib=calib, **recoDict) - from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import ( - caloClusterRecoSequence, - LCCaloClusterRecoSequence, + super(TCPufitConfig, self).__init__( + inputs=["Clusters"], calib=calib, **recoDict ) - from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__TCPufitFex - - RoIs = self.inputMaker.RoIs - if calib == "em": - tcSeq, clusterName = RecoFragmentsPool.retrieve( - caloClusterRecoSequence, flags=None, RoIs=RoIs - ) - elif calib == "lcw": - tcSeq, clusterName = RecoFragmentsPool.retrieve( - LCCaloClusterRecoSequence, flags=None, RoIs=RoIs - ) - self.inputs = [tcSeq] - self.fexAlg = self._make_fex_alg(HLT__MET__TCPufitFex, ClusterName=clusterName) + def make_fex(self, name, inputs): + return HLT__MET__TCPufitFex(name, ClusterName=inputs["Clusters"]) class MHTConfig(AlgConfig): @@ -115,61 +87,41 @@ class MHTConfig(AlgConfig): return "mht" def __init__(self, **recoDict): - super(MHTConfig, self).__init__(**recoDict) - from ..Jet.JetRecoSequences import jetRecoSequence - from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__MHTFex - - jetRecoDict = jetRecoDictForMET(**recoDict) - # TODO - right now jet calibration is hardcoded to EM - jetRecoDict["calib"] = "em" - jetRecoDict["jetCalib"] = "subjes" - jetSeq, jetName, jetDef = RecoFragmentsPool.retrieve( - jetRecoSequence, ConfigFlags, **jetRecoDict - ) + super(MHTConfig, self).__init__(inputs=["Jets"], **recoDict) - self.inputs = [jetSeq] - self.fexAlg = self._make_fex_alg(HLT__MET__MHTFex, JetName=jetName) + def make_fex(self, name, inputs): + return HLT__MET__MHTFex(name, JetName=inputs["Jets"]) +# NB: TrkMHT isn't ready to run with PF jets yet - for that we need to add an +# option for cPFOs class TrkMHTConfig(AlgConfig): @classmethod def algType(cls): return "trkmht" def __init__(self, **recoDict): - super(TrkMHTConfig, self).__init__(**recoDict) - from ..Jet.JetRecoSequences import jetRecoSequence - from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__TrkMHTFex - - jetRecoDict = jetRecoDictForMET(trkopt="ftf", **recoDict) - # TODO - right now jet calibration is hardcoded to EM - jetRecoDict["calib"] = "em" - - jetSeq, jetName, jetDef = RecoFragmentsPool.retrieve( - jetRecoSequence, ConfigFlags, **jetRecoDict + super(TrkMHTConfig, self).__init__( + inputs=["Jets", "Tracks", "Vertices", "TVA", "GhostTracksLabel"], + forceTracks=True, + **recoDict ) - # These are the names set by the upstream algorithms. Unfortunately - # these aren't passed to us - we just have to 'know' them - tracks = "HLT_IDTrack_FS_FTF" - vertices = "HLT_IDVertex_FS" - tva = "JetTrackVtxAssoc_{trkopt}".format(**jetRecoDict) - track_links = "GhostTrack_{trkopt}".format(**jetRecoDict) - - self.inputs = [jetSeq] - self.fexAlg = self._make_fex_alg( - HLT__MET__TrkMHTFex, - JetName=jetName, - TrackName=tracks, - VertexName=vertices, - TVAName=tva, - TrackLinkName=track_links, + def make_fex(self, name, inputs): + fex = HLT__MET__TrkMHTFex( + name, + JetName=inputs["Jets"], + TrackName=inputs["Tracks"], + VertexName=inputs["Vertices"], + TVAName=inputs["TVA"], + TrackLinkName=inputs["GhostTracksLabel"], ) - self.fexAlg.TrackSelTool.CutLevel = "Loose" - self.fexAlg.TrackSelTool.maxZ0SinTheta = 1.5 - self.fexAlg.TrackSelTool.maxD0overSigmaD0 = 3 - self.fexAlg.TrackSelTool.minPt = 1 * Units.GeV - + fex.TrackSelTool.CutLevel = "Loose" + fex.TrackSelTool.maxZ0SinTheta = 1.5 + fex.TrackSelTool.maxD0overSigmaD0 = 3 + fex.TrackSelTool.minPt = 1 * Units.GeV + return fex + class PFSumConfig(AlgConfig): @classmethod @@ -177,18 +129,11 @@ class PFSumConfig(AlgConfig): return "pfsum" def __init__(self, **recoDict): - super(PFSumConfig, self).__init__(**recoDict) - - from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__PFSumFex - from .METRecoSequences import pfoRecoSequence + super(PFSumConfig, self).__init__(inputs=["cPFOs", "nPFOs"], **recoDict) - self.inputs, pfoPrefix = RecoFragmentsPool.retrieve( - pfoRecoSequence, flags=None, RoIs=self.inputMaker.RoIs - ) - self.fexAlg = self._make_fex_alg( - HLT__MET__PFSumFex, - NeutralPFOName=pfoPrefix + "CHSNeutralParticleFlowObjects", - ChargedPFOName=pfoPrefix + "CHSChargedParticleFlowObjects", + def make_fex(self, name, inputs): + return HLT__MET__PFSumFex( + name, NeutralPFOName=inputs["nPFOs"], ChargedPFOName=inputs["cPFOs"], ) @@ -198,34 +143,15 @@ class PFOPufitConfig(AlgConfig): return "pfopufit" def __init__(self, **recoDict): - super(PFOPufitConfig, self).__init__(**recoDict) - - from TrigEFMissingET.TrigEFMissingETConf import ( - HLT__MET__PUSplitPufitFex, - HLT__MET__PFOPrepAlg, + super(PFOPufitConfig, self).__init__( + inputs=["MergedPFOs", "PFOPUCategory"], **recoDict ) - from .METRecoSequences import pfoRecoSequence - pfoInputs, pfoPrefix = RecoFragmentsPool.retrieve( - pfoRecoSequence, flags=None, RoIs=self.inputMaker.RoIs - ) - # NB for this, we might be slightly misusing the 'flags' parameter in - # the reco fragments pool. Here, we let it just pass the name parameter - # through to the underlying alg config class parameter - prepAlg = RecoFragmentsPool.retrieve( - HLT__MET__PFOPrepAlg, - "{}PFOPufitPrepAlg".format(pfoPrefix), - InputNeutralKey="{}CHSNeutralParticleFlowObjects".format(pfoPrefix), - InputChargedKey="{}CHSChargedParticleFlowObjects".format(pfoPrefix), - OutputKey="{}METTrigCombinedParticleFlowObjects".format(pfoPrefix), - OutputCategoryKey="PUClassification", - ) - self.inputs = pfoInputs + [prepAlg] - # TODO - make the neutral threshold mode settable in the chain name? - self.fexAlg = self._make_fex_alg( - HLT__MET__PUSplitPufitFex, - InputName=prepAlg.OutputKey, - InputCategoryName=prepAlg.OutputCategoryKey, + def make_fex(self, name, inputs): + return HLT__MET__PUSplitPufitFex( + name, + InputName=inputs["MergedPFOs"], + InputCategoryName=inputs["PFOPUCategory"], NeutralThresholdMode=PUClassification.NeutralForward, ) @@ -236,32 +162,15 @@ class CVFPufitConfig(AlgConfig): return "cvfpufit" def __init__(self, **recoDict): - super(CVFPufitConfig, self).__init__(**recoDict) - from .METRecoSequences import cvfClusterSequence - from TrigEFMissingET.TrigEFMissingETConf import ( - HLT__MET__CVFPrepAlg, - HLT__MET__PUSplitPufitFex, + super(CVFPufitConfig, self).__init__( + inputs=["Clusters", "CVFPUCategory"], **recoDict ) - RoIs = self.inputMaker.RoIs - calib = recoDict["calib"] - inputs, clusterName, cvfName = RecoFragmentsPool.retrieve( - cvfClusterSequence, flags=None, RoIs=RoIs, **recoDict - ) - - prepAlg = RecoFragmentsPool.retrieve( - HLT__MET__CVFPrepAlg, - "{}ClusterCVFPrepAlg".format(calib), - InputClusterKey=clusterName, - InputCVFKey=cvfName, - OutputCategoryKey="PUClassification", - ) - - self.inputs = inputs + [prepAlg] - self.fexAlg = self._make_fex_alg( - HLT__MET__PUSplitPufitFex, - InputName=clusterName, - InputCategoryName=prepAlg.OutputCategoryKey, + def make_fex(self, name, inputs): + return HLT__MET__PUSplitPufitFex( + name, + InputName=inputs["Clusters"], + InputCategoryName=inputs["CVFPUCategory"], NeutralThresholdMode=PUClassification.All, ) @@ -272,60 +181,35 @@ class MHTPufitConfig(AlgConfig): return "mhtpufit" def __init__(self, **recoDict): - super(MHTPufitConfig, self).__init__(**recoDict) - from ..Jet.JetRecoSequences import jetRecoSequence - from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import ( - caloClusterRecoSequence, - ) - from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__MHTPufitFex - - jetRecoDict = jetRecoDictForMET(trkopt="ftf", **recoDict) - # If this is PFlow then set the calib type to "em" - if recoDict["jetDataType"] == "pf": - jetRecoDict["calib"] = "em" - jetSeq, jetName, jetDef = RecoFragmentsPool.retrieve( - jetRecoSequence, flags=ConfigFlags, **jetRecoDict + inputs = ["Jets", "JetDef"] + if "pf" in recoDict["jetDataType"]: + inputs += ["MergedPFOs"] + else: + inputs += ["Clusters"] + super(MHTPufitConfig, self).__init__( + inputs=inputs, forceTracks=True, **recoDict ) - # We need to get the input name that the jet sequence used - _, clusterName = RecoFragmentsPool.retrieve( - caloClusterRecoSequence, flags=None, RoIs=self.inputMaker.RoIs - ) - if jetRecoDict["dataType"] == "pf": - from eflowRec.PFHLTSequence import PFHLTSequence - - _, pfoPrefix = RecoFragmentsPool.retrieve( - PFHLTSequence, - flags=None, - clustersin=clusterName, - tracktype=jetRecoDict["trkopt"], - ) - #jetDef = defineJets(jetRecoDict, pfoPrefix=pfoPrefix) - elif jetRecoDict["dataType"] == "tc": - pass - #jetDef = defineJets(jetRecoDict, clustersKey=clusterName) - else: - raise ValueError( - "Unexpected jetDataType {}".format(jetRecoDict["dataType"]) - ) - inputName = jetDef.inputdef.containername - calibHasAreaSub = "sub" in jetRecoDict["jetCalib"] + def make_fex(self, name, inputs): + calibHasAreaSub = "sub" in self.recoDict if calibHasAreaSub: from JetRecConfig.JetRecConfig import instantiateAliases from JetRecConfig.JetInputConfig import buildEventShapeAlg - instantiateAliases(jetDef) - evtShapeAlg = buildEventShapeAlg( jetDef, "HLT_" ) - + + instantiateAliases(inputs["JetDef"]) + evtShapeAlg = buildEventShapeAlg(inputs["JetDef"], "HLT_") + rhoKey = evtShapeAlg.EventDensityTool.OutputContainer else: rhoKey = "" - - self.inputs = [jetSeq] - self.fexAlg = self._make_fex_alg( - HLT__MET__MHTPufitFex, - InputJetsName=jetName, + if "pf" in self.recoDict["jetDataType"]: + inputName = inputs["MergedPFOs"] + else: + inputName = inputs["Clusters"] + return HLT__MET__MHTPufitFex( + name, + InputJetsName=inputs["Jets"], InputName=inputName, JetCalibIncludesAreaSub=calibHasAreaSub, JetEventShapeName=rhoKey, ) - diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgInputConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgInputConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..56482c0ec8c2fe846bb5f6c5a18b61559c29e4a0 --- /dev/null +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgInputConfig.py @@ -0,0 +1,201 @@ +# +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# + +""" Helpers for creating input reco sequences + +Classes: + AlgInputConfig - base class for individual input configs + InputConfigRegistry - class to gather input configurations together + +Together, these classes implement a rudimentary dependency resolution method. +The main unit in this are the inputs being created. These are referred to by +nicknames rather than the container names directly as these can vary depending +on the reconstruction parameters provided. + +This file just provides the underlying mechanisms. For the concrete example see +METRecoSequences, which will be referenced in the following explanation. + +Each config declares the inputs it will produce and on what inputs it depends. +The dependencies are allowed to be different for different reco configurations +but for simplicity's sake the inputs produced are always the same. For example +the jet input config in METRecoSequences produces ["Jets", "JetDef"] and its +dependencies are ["Clusters"] if no tracks are needed and ["Clusters", "Tracks" +"Vertices"] otherwise. + +Each config also has a create_sequence method which builds the actual reco +sequence. This method returns a two-tuple. The first element is the reco +sequence which makes the inputs, the second is a dictionary mapping the produced +input's nicknames to their values. These values are usually storegate keys but +can be any object. For example, the jet input config (with the correct reco +configuration) would produce +{ + "Jets" : "HLT_AntiKt4EMTopoJets_subjesIS", + "JetDef" : jetdef +} +for this mapping, where jetdef is a python object produced by the jet reco +sequence. + +The dependency resolution is done by the InputConfigRegistry class. This +maintains a list of known input configs where no two can claim to produce the +same input. The main one used here is the default_inputs object created in +METRecoSequences. The 'build_steps' method is then used to create the necessary +sequences in the correct order, split into their steps and also to collate and +return the mapping of input nicknames to values. +""" + +from abc import ABC, abstractmethod +from collections import defaultdict + + +class AlgInputConfig(ABC): + """ Base class for building up inputs for the FEXes """ + + def __init__(self, produces, step=None): + """ Initialise the class + + ========= + Arguments + ========= + produces: The nicknames of the inputs this config produces + step: The step in which the input sequences should run + + step can be None, in which case it will be calculated as the maximum + of all the steps of the input's dependencies. This means that an input + with no dependencies must have its step set explicitly + """ + self._produces = produces + self._step = step + + @property + def step(self): + """ The reconstruction step this input runs in """ + return self._step + + @property + def produces(self): + """ Which (nicknamed) inputs does this config produce """ + return self._produces + + @abstractmethod + def dependencies(self, recoDict): + """ Given the reco parameters, which inputs does this config depend on """ + pass + + @abstractmethod + def create_sequence(self, inputs, RoIs, recoDict): + """ Create the sequence and return it along with a dictionary of the objects that it produces """ + pass + + +class InputConfigRegistry: + def __init__(self): + self._configs = {} + + def add_input(self, config): + overlap = [x for x in config.produces if x in self._configs] + if overlap: + raise ValueError( + f"Attempting to add an input config that produces {overlap} but these are already present" + ) + for x in config.produces: + self._configs[x] = config + + def build_steps(self, requested, RoIs, recoDict): + """ Build the necessary input sequence, separated by steps + + ========= + Arguments + ========= + requested: The nicknames of the requested inputs + RoIs: The input RoIs, one must be provided for each step + recoDict: The recoDict extracted from the chain + + ======= + Returns + ======= + (steps, inputs) + where steps is a list of input sequences, one for each step and inputs + is a dictionary mapping input nickname to storegate key + """ + # The input sequences, keyed by step + steps = defaultdict(list) + # The mapping of input nickname to storegate key + inputs = {} + # Internal mapping of input nickname to step + input_steps = {} + for name in requested: + this_steps = self._create_input( + name, RoIs, recoDict, input_steps=input_steps, inputs=inputs + ) + for step, seq_list in this_steps.items(): + steps[step] += seq_list + # Now convert the steps into a list + steps = [steps[idx] for idx in range(max(steps.keys()) + 1)] + return steps, inputs + + def _create_input(self, name, RoIs, recoDict, input_steps, inputs, _seen=None): + """ Create an input and its dependencies + + ========= + Arguments + ========= + name: The name of the input to create + RoIs: The input RoIs, one for each step + recoDict: The recoDict extracted from the chain + input_steps: Mapping of encountered inputs to the steps they happen in + inputs: The names of any inputs already created + _seen: internal parameter for catching circular dependencies + + ======= + Returns + ======= + steps + where steps is a list of input sequences, one for each step + The provided input_steps and inputs parameters are also updated with + the new inputs that have been produced + """ + if _seen is None: + _seen = [] + elif name in _seen: + raise RuntimeError( + "Circular dependency: {}".format(" -> ".join(_seen + [name])) + ) + if name in input_steps: + # We've already seen this step so return dummies + return {} + steps = defaultdict(list) + + try: + config = self._configs[name] + except KeyError: + raise KeyError(f"Requested input {name} not defined") + # If config.step is None, use this to record the max step among + # config's dependencies + step = config.step if config.step is not None else -1 + for dep_name in config.dependencies(recoDict): + dep_steps = self._create_input( + dep_name, RoIs, recoDict, input_steps, inputs, _seen + [name] + ) + dep_step = input_steps[dep_name] + if config.step is not None and dep_step > config.step: + raise ValueError( + f"Dependency {dep_name} is in a later step '{dep_step}' than {name} which requires it (step = {config.step})" + ) + else: + step = max(step, dep_step) + # Add these reco sequences to our output lists + for step, seq_list in dep_steps.items(): + steps[step] += seq_list + # Finally, add *our* info + if step < 0: + raise ValueError(f"Unable to work out step for input config {name}!") + if step > len(RoIs): + raise ValueError(f"Step {step} is greater than the number of RoIs ({RoIs})") + sequences, this_inputs = config.create_sequence(inputs, RoIs[step], recoDict) + steps[step] += sequences + inputs.update(this_inputs) + # Add this to the list of things we've already seen, along with everything else it's made + for made in this_inputs.keys(): + input_steps[made] = step + return steps diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/ConfigHelpers.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/ConfigHelpers.py index 418791db019e1d8206f12af9089ce8b25aa263e8..683dbad2d431c8af3c0201246c2b866f4b9c9a74 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/ConfigHelpers.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/ConfigHelpers.py @@ -4,26 +4,21 @@ """ from AthenaCommon.CFElements import seqAND -from ..Menu.SignatureDicts import METChainParts_Default, JetChainParts_Default -from ..Menu.MenuComponents import RecoFragmentsPool +from ..Menu.SignatureDicts import METChainParts_Default +from ..Menu.MenuComponents import RecoFragmentsPool, ChainStep, MenuSequence from copy import copy -import six +from ..CommonSequences.FullScanDefs import caloFSRoI, trkFSRoI +from AthenaCommon.Logging import logging +from TrigEFMissingET.TrigEFMissingETMTConfig import getMETMonTool +from abc import ABC, abstractmethod +from string import ascii_uppercase + +log = logging.getLogger(__name__) # The keys from the MET chain dict that directly affect reconstruction # The order here is important as it also controls the dict -> string conversion recoKeys = ["EFrecoAlg", "calib", "jetDataType", "jetCalib", "addInfo"] - -def extractMETRecoDict(chainDict, fillDefaults=True): - """ Extract the keys relevant to reconstruction from a provided dictionary - - If fillDefaults is True then any missing keys will be taken from the - METChainParts_Default dictionary. - """ - if fillDefaults: - return {k: chainDict.get(k, METChainParts_Default[k]) - for k in recoKeys} - else: - return {k: chainDict[k] for k in recoKeys if k in chainDict} +metFSRoIs = [caloFSRoI, trkFSRoI] def metRecoDictToString(recoDict, skipDefaults=True): """ Convert a dictionary containing reconstruction keys to a string @@ -33,39 +28,23 @@ def metRecoDictToString(recoDict, skipDefaults=True): also be skipped. """ return "_".join( - recoDict[k] for k in recoKeys if - k in recoDict and - (not skipDefaults or recoDict[k] != METChainParts_Default[k]) ) + recoDict[k] + for k in recoKeys + if k in recoDict + and (not skipDefaults or recoDict[k] != METChainParts_Default[k]) + ) -def jetRecoDictForMET(**recoDict): - """ Get a jet reco dict that's usable for the MET slice """ - keys = ["recoAlg", "dataType", "calib", "jetCalib", "trkopt", "cleaning"] - jrd = {k: recoDict.get(k, JetChainParts_Default[k]) for k in keys} - if "jetDataType" in recoDict: - # Allow for the renaming dataType -> jetDataType - jrd["dataType"] = recoDict["jetDataType"] - from TriggerMenuMT.HLTMenuConfig.Jet import JetRecoConfiguration - if jrd["jetCalib"] == "default": - jrd["jetCalib"] = JetRecoConfiguration.interpretJetCalibDefault(jrd) - return jrd - - -class AlgConfig(object): +class AlgConfig(ABC): """ Base class to describe algorithm configurations Each individual 'EFrecoAlg' should be described by *one* AlgConfig subclass. - That subclass must set two data members from its __init__ method: - - - self.inputs should be a *list* of all sequences required to make inputs - for the algorithm that calculates the MET value - - self.fexAlg should the FEX that calculates the MET value - - Alternatively the recoSequence property can be overwritten to not require - these. + It must provide its list of required inputs to the constructor and override + the make_fex method The name of fexAlg *must* be self.fexName and the METContainerKey property - *must* be set to self.outputKey + *must* be set to self.outputKey (but this class usually should take care of + this). The subclass must also implement the @classmethod 'algType' which returns the EFrecoAlg string that it describes. @@ -81,116 +60,162 @@ class AlgConfig(object): """ raise NotImplementedError("algType not implemented by subclass!") - def __init__(self, **recoDict): + def __init__(self, inputs=[], inputRegistry=None, **recoDict): + """ Initialise the base class + + ========= + Arguments + ========= + inputs: The nicknames of the inputs that this FEX uses + inputRegistry: + The InputConfigRegistry instance to use. Usually this can be left + as None and then METRecoSequences.default_inputs will be used. + However, this parameter is provided in case a FEX requires a vastly + different set of input objects + recoDict: Pass *all* the keys required for the recoDict + """ + # Make sure that we got *all* the keys (i.e. the subclass didn't # inadvertently steal one of them from us) - assert set(recoKeys) == set(six.iterkeys(recoDict) ), ( - "AlgConfig.__init__ did not receive all the recoKeys - this " - "suggests a problem in the subclass __init__ method!") + alg_type = self.algType() + assert all(k in recoDict for k in recoKeys), ( + f"AlgConfig.__init__ for {alg_type} did not receive all the recoKeys" + " - this suggests a problem in the subclass __init__ method!" + ) self.recoDict = copy(recoDict) self._suffix = metRecoDictToString(recoDict) + if inputRegistry is None: + from .METRecoSequences import default_inputs + + inputRegistry = default_inputs + self._registry = inputRegistry + self._inputs = inputs + + @abstractmethod + def make_fex(self, name, inputs): + """ Create the fex from its name and the inputs dict """ + pass + + @property + def inputRegistry(self): + """ The InputConfigRegistry object used to build the input sequences """ + return self._registry @property def outputKey(self): """ The MET container object produced by this algorithm """ from TrigEDMConfig.TriggerEDMRun3 import recordable - return recordable("HLT_MET_{}".format(self._suffix) ) + + return recordable("HLT_MET_{}".format(self._suffix)) @property def fexName(self): """ The name of the algorithm made by this configuration """ return "EFMET_{}".format(self._suffix) - @property - def hypoAlg(self): + def getMonTool(self): + """ Create the monitoring tool """ + return getMETMonTool() + + def athSequences(self): + """ Get the reco sequences (split by step) """ + if hasattr(self, "_athSequences"): + return self._athSequences + + inputMakers = self.inputMakers() + # Retrieve the inputss + log.verbose(f"Create inputs for {self._suffix}") + steps, inputs = self.inputRegistry.build_steps( + self._inputs, metFSRoIs, self.recoDict + ) + fex = self.make_fex(self.fexName, inputs) + fex.MonTool = self.getMonTool() + fex.METContainerKey = self.outputKey + sequences = [] + + for idx, algList in enumerate(steps): + # Put the input makers at the start + algList.insert(0, inputMakers[idx]) + if idx == len(steps) - 1: + algList += [fex] + sequences.append(seqAND(f"METAthSeq_step{idx}_{self._suffix}", algList)) + self._athSequences = sequences + return self._athSequences + + def menuSequences(self): + """ Get the menu sequences (split by step) """ + if hasattr(self, "_menuSequences"): + return self._menuSequences + + from TrigMissingETHypo.TrigMissingETHypoConfigMT import ( + TrigMETCellHypoToolFromDict, + ) + from TrigStreamerHypo.TrigStreamerHypoConfigMT import ( + StreamerHypoToolMTgenerator, + ) + + sequences = [] + inputMakers = self.inputMakers() + ath_sequences = self.athSequences() + for idx, seq in enumerate(ath_sequences): + if idx == len(ath_sequences) - 1: + hypo = self.make_hypo_alg() + hypo_tool = TrigMETCellHypoToolFromDict + else: + hypo = self.make_passthrough_hypo_alg(idx) + hypo_tool = StreamerHypoToolMTgenerator + sequences.append( + MenuSequence( + Sequence=seq, + Maker=inputMakers[idx], + Hypo=hypo, + HypoToolGen=hypo_tool, + ) + ) + self._menuSequences = sequences + return self._menuSequences + + def make_steps(self, chainDict): + """ Create the actual chain steps """ + # NB - we index the steps using uppercase letters 'A', 'B', etc + # This technically means that there is an upper limit of 26 on the + # number of different steps that can be provided this way, but it seems + # unlikely that we'll actually run into this limit. If we do, it + # shouldn't be a problem to change it + return [ + ChainStep( + f"step{ascii_uppercase[idx]}_{self._suffix}", + [seq], + multiplicity=[1], + chainDicts=[chainDict], + ) + for idx, seq in enumerate(self.menuSequences()) + ] + + def make_hypo_alg(self): """ The hypo alg used for this configuration """ - if hasattr(self, "_hypoAlg"): - return self._hypoAlg from TrigMissingETHypo.TrigMissingETHypoConf import TrigMissingETHypoAlgMT - self._hypoAlg = TrigMissingETHypoAlgMT( - name = "METHypoAlg_{}".format(self._suffix), - METContainerKey = self.outputKey) - return self._hypoAlg - @property - def menuSequence(self): - """ The menu sequence for this configuration """ - if hasattr(self, "_menuSequence"): - return self._menuSequence - - from ..Menu.MenuComponents import MenuSequence - from TrigMissingETHypo.TrigMissingETHypoConfigMT import TrigMETCellHypoToolFromDict - self._menuSequence = MenuSequence( - Sequence = self.athSequence, - Maker = self.inputMaker, - Hypo = self.hypoAlg, - # TODO - this shouldn't be called 'cell' something - HypoToolGen = TrigMETCellHypoToolFromDict) - return self._menuSequence - @property - def inputMaker(self): - """ The input maker for this configuration """ - if hasattr(self, "_inputMaker"): - return self._inputMaker - from TrigT2CaloCommon.CaloDef import clusterFSInputMaker - self._inputMaker = clusterFSInputMaker() - return self._inputMaker + return TrigMissingETHypoAlgMT( + name="METHypoAlg_{}".format(self._suffix), METContainerKey=self.outputKey + ) - @property - def athSequence(self): - """ Create the 'ath' sequence - - The return value is cached so only one instance is ever created - """ - if hasattr(self, "_athSequence"): - return self._athSequence - self._athSequence = seqAND("METAthSeq_{}".format(self._suffix), - [self.inputMaker, self.recoSequence]) - return self._athSequence + def make_passthrough_hypo_alg(self, step): + from TrigStreamerHypo.TrigStreamerHypoConf import TrigStreamerHypoAlgMT - @property - def recoSequence(self): - """ Create the full reco sequence - - The return value is cached so only one instance is ever created - """ - if hasattr(self, "_recoSequence"): - # Cache the result so we only ever create this once - return self._recoSequence - # First, verify that everything was done right - assert self.fexAlg.name() == self.fexName, ( - "Incorrect algorithm name '{}' set (should be '{}')".format( - self.fexAlg.name(), self.fexName) ) - assert self.fexAlg.METContainerKey == self.outputKey, ( - "Incorrect output key '{}' set (should be '{}')".format( - self.fexAlg.METContainerKey, self.outputKey) ) - - self._recoSequence = seqAND("METRecoSeq_{}".format(self._suffix), - self.inputs + [self.fexAlg]) - return self._recoSequence - - def _make_fex_alg(self, alg_cls, name=None, METContainerKey=None, - MonTool=None, **kwargs): - """ Helper function to make Fex algs - - Ensures that (unless overridden) the default name, output key and - monitoring tool are used. - """ - from TrigEFMissingET.TrigEFMissingETMTConfig import getMETMonTool - # Set the defaults - if name is None: - name = self.fexName - if METContainerKey is None: - METContainerKey = self.outputKey - if MonTool is None: - MonTool = getMETMonTool() - return alg_cls( - name = name, - METContainerKey = METContainerKey, - MonTool = MonTool, - **kwargs) + return TrigStreamerHypoAlgMT( + f"METPassThroughHypo_{self._suffix}_step{step}", SetInitialRoIAsFeature=True + ) + def inputMakers(self): + """ The input makers for each step """ + if hasattr(self, "_inputMakers"): + return self._inputMakers + from ..Jet.JetMenuSequences import getInitialInputMaker, getTrackingInputMaker + + self._inputMakers = [getInitialInputMaker(), getTrackingInputMaker()] + return self._inputMakers @classmethod def _get_subclasses(cls): @@ -216,11 +241,14 @@ class AlgConfig(object): for subcls in cls._get_subclasses(): if subcls.algType() == EFrecoAlg: return RecoFragmentsPool.retrieve( - subcls._makeCls, None, EFrecoAlg=EFrecoAlg, **recoDict) + subcls._makeCls, None, EFrecoAlg=EFrecoAlg, **recoDict + ) + + raise ValueError("Unknown EFrecoAlg '{}' requested".format(EFrecoAlg)) - raise ValueError("Unknown EFrecoAlg '{}' requested".format(EFrecoAlg) ) # Load all the defined configurations from . import AlgConfigs + # Make sure that there is an AlgConfig for every EFrecoAlg AlgConfigs.test_configs() diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METChainConfiguration.py index e0382a387115b1e8982e52c171deb8e0b5553441..1f8d05ba344bee160e820febda14cf12f2c90881 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METChainConfiguration.py @@ -1,42 +1,43 @@ # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration from AthenaCommon.Logging import logging -logging.getLogger().info("Importing %s",__name__) + +logging.getLogger().info("Importing %s", __name__) log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.MET.METChainConfiguration") from ..Menu.ChainConfigurationBase import ChainConfigurationBase -from .ConfigHelpers import extractMETRecoDict, metRecoDictToString, AlgConfig -from ..Menu.MenuComponents import ChainStep +from .ConfigHelpers import recoKeys, AlgConfig +from ..Menu.SignatureDicts import METChainParts_Default + + +def extractMETRecoDict(chainDict, fillDefaults=True): + """ Extract the keys relevant to reconstruction from a provided dictionary + If fillDefaults is True then any missing keys will be taken from the + METChainParts_Default dictionary. + """ + if fillDefaults: + return {k: chainDict.get(k, METChainParts_Default[k]) for k in recoKeys} + else: + return {k: chainDict[k] for k in recoKeys if k in chainDict} -#---------------------------------------------------------------- + +# ---------------------------------------------------------------- # Class to configure chain -#---------------------------------------------------------------- +# ---------------------------------------------------------------- class METChainConfiguration(ChainConfigurationBase): - def __init__(self, chainDict): - ChainConfigurationBase.__init__(self,chainDict) + ChainConfigurationBase.__init__(self, chainDict) # Only some subset of keys in the METChainParts dictionary describe # reconstruction details - only these keys are passed down into the menu # sequence (the actual hypo tool is created later) self.recoDict = extractMETRecoDict(self.chainPart) - + # ---------------------- # Assemble the chain depending on information from chainName # ---------------------- - def assembleChain(self): + def assembleChain(self): log.debug("Assembling chain for " + self.chainName) - - # Right now we only ever have one step, however we may want to - # reintroduce the automatic cell > 50 preselection - # this function interpretst the reco dict extracted in __init__ - mainStep = self.getMETStep() - return self.buildChain([mainStep]) - - def getMETStep(self): - """ Use the reco-dict to construct a single MET step """ - stepName = "Step1_met_{}".format(metRecoDictToString(self.recoDict) ) conf = AlgConfig.fromRecoDict(**self.recoDict) - seq = conf.menuSequence - return ChainStep(stepName, [seq], multiplicity=[1], chainDicts=[self.dict]) + return self.buildChain(conf.make_steps(self.dict)) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METRecoSequences.py index ce5aedd1244a59e4b94fb4deeeca6801e491e474..3ba1a92a7675d735ca55614c345d3def0fe8c3b1 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METRecoSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METRecoSequences.py @@ -3,113 +3,313 @@ # -from .ConfigHelpers import AlgConfig, jetRecoDictForMET +from .AlgInputConfig import AlgInputConfig, InputConfigRegistry from AthenaCommon.Logging import logging from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import ( + cellRecoSequence, caloClusterRecoSequence, LCCaloClusterRecoSequence, ) from eflowRec.PFHLTSequence import PFHLTSequence -from ..Jet.JetRecoConfiguration import defineJetConstit -from ..Jet.JetTrackingConfig import JetTrackingSequence -from JetRecConfig.ConstModHelpers import getConstitModAlg +from ..Jet.JetRecoConfiguration import defineJetConstit, interpretJetCalibDefault +from ..Jet.JetRecoConfiguration import recoKeys as jetRecoKeys +from ..Jet.JetTrackingConfig import JetTrackingSequence, trkcollskeys +from ..Jet.JetRecoSequences import jetRecoSequence, getTrkColls +from JetRecConfig.ConstModHelpers import getConstitModAlg, aliasToInputDef from ..Menu.MenuComponents import RecoFragmentsPool from TrigEFMissingET.TrigEFMissingETConf import ( HLT__MET__CVFAlg, + HLT__MET__CVFPrepAlg, + HLT__MET__PFOPrepAlg, ApproximateTrackToLayerTool, ) +from AthenaConfiguration.AllConfigFlags import ConfigFlags +from ..Menu.SignatureDicts import JetChainParts_Default from InDetTrackSelectionTool.InDetTrackSelectionToolConf import ( InDet__InDetTrackSelectionTool, ) from TrackVertexAssociationTool.TrackVertexAssociationToolConf import ( CP__TrackVertexAssociationTool, ) - +import copy log = logging.getLogger(__name__) -def metAthSequence(dummyFlags, **recoDict): - conf = AlgConfig.fromRecoDict(**recoDict) - return conf.athSequence, conf.inputMaker, conf.outputKey +def jetRecoDictForMET(**recoDict): + """ Get a jet reco dict that's usable for the MET slice """ + jrd = {k: recoDict.get(k, JetChainParts_Default[k]) for k in jetRecoKeys} + if "jetDataType" in recoDict: + # Allow for the renaming dataType -> jetDataType + jrd["dataType"] = recoDict["jetDataType"] + if jrd["dataType"] == "pf": + # We only use em calibration for PFOs + jrd["calib"] = "em" + if jrd["jetCalib"] == "default": + jrd["jetCalib"] = interpretJetCalibDefault(jrd) + return jrd + + +default_inputs = InputConfigRegistry() + + +class CellInputConfig(AlgInputConfig): + def __init__(self): + super().__init__(produces=["Cells"], step=0) + + def dependencies(self, recoDict): + # Cells have no input dependencies + return [] + + def create_sequence(self, inputs, RoIs, recoDict): + cellSeq, cellName = RecoFragmentsPool.retrieve( + cellRecoSequence, flags=None, RoIs=RoIs + ) + return cellSeq, {"Cells": cellName} + + +default_inputs.add_input(CellInputConfig()) + + +class ClusterInputConfig(AlgInputConfig): + def __init__(self): + super().__init__(produces=["Clusters"], step=0) + + def dependencies(self, recoDict): + # Clusters have no input dependencies + return [] + + def create_sequence(self, inputs, RoIs, recoDict): + calib = recoDict["calib"] + if calib == "em": + tcSeq, clusterName = RecoFragmentsPool.retrieve( + caloClusterRecoSequence, flags=None, RoIs=RoIs + ) + elif calib == "lcw": + tcSeq, clusterName = RecoFragmentsPool.retrieve( + LCCaloClusterRecoSequence, flags=None, RoIs=RoIs + ) + else: + raise ValueError(f"Invalid value for cluster calibration: {calib}") + return [tcSeq], {"Clusters": clusterName} -def metRecoSequence(dummyFlags, **recoDict): - conf = AlgConfig.fromRecoDict(**recoDict) - return conf.recoSequence, conf.outputKey +default_inputs.add_input(ClusterInputConfig()) -def pfoRecoSequence(dummyFlags, RoIs, **recoDict): - """ Get PFOs as inputs for the MET algorithms +class EMClusterInputConfig(AlgInputConfig): + """ Input config that forces the clusters produced to be at the EM scale - Returns the list of input sequences and the pfo prefix + We have this so that we can force PFOs to be produced at the EM scale, + however a better solution would probably be to add 'em' to the trigger name + or to change the 'calib' default to be "default" and then have the algorithm + choose. """ - tcSeq, clusterName = RecoFragmentsPool.retrieve( - caloClusterRecoSequence, flags=None, RoIs=RoIs - ) - pfSeq, pfoPrefix = RecoFragmentsPool.retrieve( - PFHLTSequence, flags=None, clustersin=clusterName, tracktype="ftf" - ) - # The jet constituent modifier sequence here is to apply the correct weights - # and decorate the PV matching decoration - jetRecoDict = jetRecoDictForMET(trkopt="ftf", **recoDict) - jetRecoDict["calib"] = "em" - jetRecoDict["dataType"] = "pf" - constit = defineJetConstit(jetRecoDict, pfoPrefix=pfoPrefix) - from JetRecConfig.ConstModHelpers import aliasToInputDef - constit = aliasToInputDef(constit) - constit_mod_seq = getConstitModAlg( - constit, - # "HLT", - # tvaKey="JetTrackVtxAssoc_{trkopt}".format(**jetRecoDict), - # vtxKey="HLT_IDVertex_FS", - ) - allSeqs = [tcSeq, pfSeq] - if constit_mod_seq : - allSeqs.append(constit_mod_seq) - return allSeqs, pfoPrefix - - -def cvfClusterSequence(dummyFlags, RoIs, **recoDict): - """ Get the clusters with the CVF calculated - - Returns the list of input sequences, the cluster container name and the CVF - decoration name - """ - calib = recoDict["calib"] - if calib == "em": + def __init__(self): + super().__init__(produces=["EMClusters"], step=0) + + def dependencies(self, recoDict): + # Clusters have no input dependencies + return [] + + def create_sequence(self, inputs, RoIs, recoDict): tcSeq, clusterName = RecoFragmentsPool.retrieve( caloClusterRecoSequence, flags=None, RoIs=RoIs ) - elif calib == "lcw": - tcSeq, clusterName = RecoFragmentsPool.retrieve( - LCCaloClusterRecoSequence, flags=None, RoIs=RoIs + return [tcSeq], {"EMClusters": clusterName} + + +default_inputs.add_input(EMClusterInputConfig()) + + +class TrackingInputConfig(AlgInputConfig): + def __init__(self): + super().__init__( + produces=copy.copy(trkcollskeys), + step=1, + ) + + def dependencies(self, recoDict): + # Tracks have no input dependencies + return [] + + def create_sequence(self, inputs, RoIs, recoDict): + trkSeq, trkColls = RecoFragmentsPool.retrieve( + JetTrackingSequence, flags=None, trkopt="ftf", RoIs=RoIs + ) + return [trkSeq], trkColls + + +default_inputs.add_input(TrackingInputConfig()) + + +class PFOInputConfig(AlgInputConfig): + def __init__(self): + super().__init__(produces=["PFOPrefix", "cPFOs", "nPFOs"]) + + def _input_clusters(self, recoDict): + # Only take the config that forces 'EMClusters' if the calibration + # isn't set to 'em'. If it's set to em then we want to make sure that + # we only create those sequences once + return "Clusters" if recoDict["calib"] == "em" else "EMClusters" + + def dependencies(self, recoDict): + return [self._input_clusters(recoDict), "Tracks", "Vertices", "TVA"] + + def create_sequence(self, inputs, RoIs, recoDict): + pfSeq, pfoPrefix = RecoFragmentsPool.retrieve( + PFHLTSequence, + flags=None, + clustersin=inputs[self._input_clusters(recoDict)], + tracktype="ftf", + ) + # The jet constituent modifier sequence here is to apply the correct weights + # and decorate the PV matching decoration + jetRecoDict = jetRecoDictForMET(trkopt="ftf", **recoDict) + jetRecoDict["calib"] = "em" + jetRecoDict["dataType"] = "pf" + constit_mod_seq = getConstitModAlg( + aliasToInputDef(defineJetConstit(jetRecoDict, pfoPrefix=pfoPrefix)) + ) + allSeqs = [pfSeq] + if constit_mod_seq: + allSeqs.append(constit_mod_seq) + return ( + allSeqs, + { + "PFOPrefix": pfoPrefix, + "cPFOs": pfoPrefix + "CHSChargedParticleFlowObjects", + "nPFOs": pfoPrefix + "CHSNeutralParticleFlowObjects", + }, ) - else: - raise ValueError("Unsupported calib state {} requested!".format(calib)) - - trkopt = "ftf" - trackSeq, trackColls = RecoFragmentsPool.retrieve( - JetTrackingSequence, flags=None, trkopt=trkopt, RoIs=RoIs - ) - - # These are the names set by the upstream algorithms. Unfortunately - # these aren't passed to us - we just have to 'know' them - tracks = "HLT_IDTrack_FS_FTF" - vertices = "HLT_IDVertex_FS" - - cvfAlg = RecoFragmentsPool.retrieve( - HLT__MET__CVFAlg, - "{}{}ClusterCVFAlg".format(calib, trkopt), - InputClusterKey=clusterName, - InputTrackKey=tracks, - InputVertexKey=vertices, - OutputCVFKey="CVF", - TrackSelectionTool=InDet__InDetTrackSelectionTool(CutLevel="TightPrimary"), - TVATool=CP__TrackVertexAssociationTool( - WorkingPoint="Loose", VertexContainer=vertices - ), - ExtensionTool=ApproximateTrackToLayerTool(), - ) - return [tcSeq, trackSeq, cvfAlg], clusterName, "CVF" + + +default_inputs.add_input(PFOInputConfig()) + + +class MergedPFOInputConfig(AlgInputConfig): + """ Input config for the PFOs merged into a single container """ + + def __init__(self): + super().__init__(produces=["MergedPFOs", "PFOPUCategory"]) + + def dependencies(self, recoDict): + return ["PFOPrefix", "cPFOs", "nPFOs"] + + def create_sequence(self, inputs, RoIs, recoDict): + prepAlg = RecoFragmentsPool.retrieve( + HLT__MET__PFOPrepAlg, + f"{inputs['PFOPrefix']}METTrigPFOPrepAlg", + InputNeutralKey=inputs["nPFOs"], + InputChargedKey=inputs["cPFOs"], + OutputKey=f"{inputs['PFOPrefix']}METTrigCombinedParticleFlowObjects", + OutputCategoryKey="PUClassification", + ) + return ( + [prepAlg], + { + "MergedPFOs": prepAlg.OutputKey, + "PFOPUCategory": prepAlg.OutputCategoryKey, + }, + ) + + +default_inputs.add_input(MergedPFOInputConfig()) + + +class CVFClusterInputConfig(AlgInputConfig): + def __init__(self): + super().__init__(produces=["CVF", "CVFPUCategory"]) + + def dependencies(self, recoDict): + return ["Clusters", "Tracks", "Vertices"] + + def create_sequence(self, inputs, RoIs, recoDict): + trkopt = "ftf" + cvfAlg = RecoFragmentsPool.retrieve( + HLT__MET__CVFAlg, + f"{recoDict['calib']}{trkopt}ClusterCVFAlg", + InputClusterKey=inputs["Clusters"], + InputTrackKey=inputs["Tracks"], + InputVertexKey=inputs["Vertices"], + OutputCVFKey="CVF", + TrackSelectionTool=InDet__InDetTrackSelectionTool(CutLevel="TightPrimary"), + TVATool=CP__TrackVertexAssociationTool( + WorkingPoint="Loose", VertexContainer=inputs["Vertices"] + ), + ExtensionTool=ApproximateTrackToLayerTool(), + ) + prepAlg = RecoFragmentsPool.retrieve( + HLT__MET__CVFPrepAlg, + f"{recoDict['calib']}{trkopt}ClusterCVFPrepAlg", + InputClusterKey=inputs["Clusters"], + InputCVFKey=cvfAlg.OutputCVFKey, + OutputCategoryKey="PUClassification", + ) + return ( + [cvfAlg, prepAlg], + {"CVF": cvfAlg.OutputCVFKey, "CVFPUCategory": prepAlg.OutputCategoryKey}, + ) + + +default_inputs.add_input(CVFClusterInputConfig()) + + +class JetInputConfig(AlgInputConfig): + """ Helper input config for jets + + Note that if the jets require JVT but are topo jets there is nothing in the + recoDict (unless the calibration is gsc) to force tracking to run. Therefore + for this config, you can add an extra key 'forceTracks' to the recoDict + """ + + def __init__(self): + super().__init__(produces=["Jets", "JetDef"]) + + def _input_clusters(self, recoDict): + # Only take the config that forces 'EMClusters' if the calibration + # isn't set to 'em'. If it's set to em then we want to make sure that + # we only create those sequences once + # NB: for the jets here this is hopefully temporary - we're only forcing + # the clusters to be EM as we haven't added the lcw jets to the EDM + return "Clusters" if recoDict["calib"] == "em" else "EMClusters" + + def _use_tracks(self, recoDict): + """ Whether or not this reco configuration requires tracks """ + if recoDict.get("forceTracks", False): + return True + if recoDict["jetDataType"] in ["pf", "csskpf"]: + return True + elif recoDict["jetDataType"] in ["tc", "sktc", "cssktc"]: + return "gsc" in recoDict["jetCalib"] + else: + raise ValueError(f"Unexpected jetDataType {recoDict['jetDataType']}") + + def dependencies(self, recoDict): + deps = [self._input_clusters(recoDict)] + if self._use_tracks(recoDict): + deps += ["Tracks", "Vertices"] + return deps + + def create_sequence(self, inputs, RoIs, recoDict): + trkopt = "ftf" if self._use_tracks(recoDict) else "notrk" + recoDict = {k: v for k, v in recoDict.items() if k != "forceTracks"} + jetRecoDict = jetRecoDictForMET(trkopt=trkopt, **recoDict) + # hard code to em (for now) - there are no LC jets in EDM + jetRecoDict["calib"] = "em" + + # Extract the track collections part from our input dict + trkcolls = {} if trkopt == "notrk" else getTrkColls(inputs) + + jetSeq, jetName, jetDef = RecoFragmentsPool.retrieve( + jetRecoSequence, + ConfigFlags, + clustersKey=inputs[self._input_clusters(recoDict)], + **trkcolls, + **jetRecoDict, + ) + return [jetSeq], {"Jets": jetName, "JetDef": jetDef} + + +default_inputs.add_input(JetInputConfig()) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py index eb2542b957fad431fae6b10f4ff05e8a5d4a7292..929dfc215d8a596a42fd227fde795cd49d73c22e 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py @@ -222,6 +222,9 @@ def setupMenu(): ChainProp(name='HLT_j85_ftf_L1J20', groups=SingleJetGroup), ChainProp(name='HLT_j45_pf_ftf_L1J20', groups=SingleJetGroup), + ChainProp(name='HLT_j45_pf_ftf_preselj45_L1J20', groups=SingleJetGroup), + ChainProp(name='HLT_j45_ftf_preselj45_L1J20', groups=SingleJetGroup), + ChainProp(name='HLT_j45_subjesIS_ftf_preselj45_L1J20', groups=SingleJetGroup), ChainProp(name='HLT_j45_pf_subjesgscIS_ftf_L1J20', groups=SingleJetGroup), ChainProp(name='HLT_j85_pf_ftf_L1J20', groups=SingleJetGroup), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py index bbe5aa7ead2982b59b55f9e7a7c0312481e567ea..dad431596e854b456fe150af542e72ec3305e063 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py @@ -134,6 +134,7 @@ JetChainParts = { 'bConfig' : ['split',], 'bMatching' : ['antimatchdr05mu'], 'trkopt' : ['notrk','ftk','ftkrefit','ftf'], + 'trkpresel' : ['nopresel','preselj45'], 'hypoScenario' : ['simple', 'vbenf', 'vbenfSEP30etSEP34mass35SEP50fbet', 'dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass', @@ -172,6 +173,7 @@ JetChainParts_Default = { 'bMatching' : [], 'dataScouting' : '', 'trkopt' : 'notrk', + 'trkpresel' : 'nopresel', 'hypoScenario' : 'simple', 'smc' : 'nosmc', 'sigFolder' : 'Jet', diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/UnconventionalTrackingChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/UnconventionalTrackingChainConfiguration.py index 94f52e37600dc43a43b8b7b0a94a5bd1f6c562f0..bb83906a355eb50d2769129232fad814e3fb6f46 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/UnconventionalTrackingChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/UnconventionalTrackingChainConfiguration.py @@ -7,6 +7,7 @@ log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.UnconventionalTracking.Unco from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import ChainConfigurationBase from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, RecoFragmentsPool from AthenaCommon.CFElements import seqAND +from ..CommonSequences.FullScanDefs import caloFSRoI def unconventionalTrackingChainParts(chainParts): unconvtrkChainParts = [] @@ -89,8 +90,7 @@ def IsoHPtTrackTriggerSequence(ConfigFlags): from TrigEDMConfig.TriggerEDMRun3 import recordable from TrigInDetConfig.InDetSetup import makeInDetAlgsNoView - RoIs = 'HLT_FSJETRoI' - TrkInputNoViewAlg = makeInDetAlgsNoView( config = IDTrigConfig, rois=recordable(RoIs)) + TrkInputNoViewAlg = makeInDetAlgsNoView( config = IDTrigConfig, rois=caloFSRoI) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py b/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py index 78cbf0474981eb672ad672ee60e5ee33a85bc6c1..67529e23aa56629f39f4fdabcfb3347b42778615 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py @@ -117,40 +117,58 @@ def generateChains(): ################################################################## # jet chains ################################################################## + + from TriggerMenuMT.HLTMenuConfig.Jet.JetRecoConfiguration import jetRecoDictFromString + from AthenaConfiguration.AllConfigFlags import ConfigFlags + def jetCaloHypoMenuSequenceFromString(jet_def_str): + jetRecoDict = jetRecoDictFromString(jet_def_str) + from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloHypoMenuSequence + return jetCaloHypoMenuSequence(ConfigFlags, **jetRecoDict) + + def jetCaloPreselMenuSequenceFromString(jet_def_str): + jetRecoDict = jetRecoDictFromString(jet_def_str) + from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloPreselMenuSequence + return jetCaloPreselMenuSequence(ConfigFlags, **jetRecoDict) + + def jetTrackingHypoMenuSequenceFromString(jet_def_str,clustersKey): + jetRecoDict = jetRecoDictFromString(jet_def_str) + from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetTrackingHypoMenuSequence + return jetTrackingHypoMenuSequence(ConfigFlags, clustersKey=clustersKey, **jetRecoDict) + if opt.doJetSlice == True: - from DecisionHandling.jetMenuHelper import jetMenuSequenceFromString - # small-R jets, different calibrations HLT_AntiKt4EMTopoJets_subjesIS - jetSeq_a4_tc_em = jetMenuSequenceFromString("a4_tc_em_subjesIS") - step_a4_tc_em =makeChainStep("Step_jet_a4_tc_em", [jetSeq_a4_tc_em]) - - jetSeq_a4_tc_em_subjes = jetMenuSequenceFromString("a4_tc_em_subjes") - step_a4_tc_em_subjes = makeChainStep("Step_jet_a4_subjes_tc_em", [jetSeq_a4_tc_em_subjes]) + # small-R jets + jetSeq_a4_tc_em = jetCaloHypoMenuSequenceFromString("a4_tc_em_subjesIS") + step_a4_tc_em = makeChainStep("Step_jet_a4_tc_em", [jetSeq_a4_tc_em]) - jetSeq_a4_tc_em_nocalib = jetMenuSequenceFromString("a4_tc_em_nojcalib") - step_a4_tc_em_nocalib=makeChainStep("Step_jet_a4_nojcalib_tc_em", [jetSeq_a4_tc_em_nocalib]) - - # jetSeq_a4_tc_lcw = jetMenuSequenceFromString("a10_tc_lcw_subjesIS") - # step_a4_tc_lcw=ChainStep("Step_jet_a10_tc_lcw", [jetSeq_a4_tc_lcw]) - # large-R jets - jetSeq_a10_tc_lcw_subjes = jetMenuSequenceFromString("a10_tc_lcw_subjes") - step_a10_tc_lcw_subjes=makeChainStep("Step_jet_a10_subjes_tc_lcw", [jetSeq_a10_tc_lcw_subjes]) + jetSeq_a10_tc_lcw_subjes = jetCaloHypoMenuSequenceFromString("a10_tc_lcw_subjes") + step_a10_tc_lcw_subjes = makeChainStep("Step_jet_a10_subjes_tc_lcw", [jetSeq_a10_tc_lcw_subjes]) - jetSeq_a10r = jetMenuSequenceFromString("a10r_tc_em_subjesIS") - step_a10r=makeChainStep("Step_jet_a10r", [jetSeq_a10r]) + jetSeq_a10r = jetCaloHypoMenuSequenceFromString("a10r_tc_em_subjesIS") + step_a10r = makeChainStep("Step_jet_a10r", [jetSeq_a10r]) + + jetSeq_a10t = jetCaloHypoMenuSequenceFromString("a10t_tc_lcw_jes") + step_a10t = makeChainStep("Step_jet_a10t", [jetSeq_a10t]) + # Jet chains with tracking + jetSeq_a4_tc_em_presel, emclusters = jetCaloPreselMenuSequenceFromString("a4_tc_em_subjesIS") + step_a4_tc_em_presel = makeChainStep("Step_jet_a4_tc_em_presel", [jetSeq_a4_tc_em_presel]) + jetSeq_a4_pf_em_ftf = jetTrackingHypoMenuSequenceFromString("a4_tc_em_subresjesgscIS_ftf",emclusters) + step_a4_pf_em_ftf = makeChainStep("Step_jet_a4_pf_em_ftf", [jetSeq_a4_pf_em_ftf]) + jetChains = [ makeChain(name='HLT_j45_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), makeChain(name='HLT_j85_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), makeChain(name='HLT_j420_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), makeChain(name='HLT_j260_320eta490_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), - # makeChain(name='HLT_j225_gsc420_boffperf_split', ChainSteps=[step_a4_tc_em] ), makeChain(name='HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), makeChain(name='HLT_j460_a10_lcw_subjes_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a10_tc_lcw_subjes] ), makeChain(name='HLT_j460_a10r_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a10r] ), + makeChain(name='HLT_j460_a10t_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a10t] ), makeChain(name='HLT_3j200_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), makeChain(name='HLT_5j70_0eta240_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em] ), # 5j70_0eta240_L14J15 (J20 until multi-object L1 seeds supported) + makeChain(name='HLT_j45_pf_subresjesgscIS_ftf_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em_presel,step_a4_pf_em_ftf] ), ] testChains += jetChains @@ -160,18 +178,19 @@ def generateChains(): # bjet chains ################################################################## if opt.doBjetSlice == True: - from DecisionHandling.jetMenuHelper import jetMenuSequenceFromString from TriggerMenuMT.HLTMenuConfig.Bjet.BjetSequenceSetup import getBJetSequence - jetSequence = jetMenuSequenceFromString("a4_tc_em_subjesgscIS_ftf") + jetSeq_a4_tc_em_presel, emclusters = jetCaloPreselMenuSequenceFromString("a4_tc_em_subjesIS") + jetSeq_a4_tc_em_gsc_ftf = jetTrackingHypoMenuSequenceFromString("a4_tc_em_subjesgscIS_ftf",emclusters) - step1 = makeChainStep("Step1_bjet", [jetSequence] ) - step2 = makeChainStep("Step2_bjet", [getBJetSequence()]) + step1 = makeChainStep("Step_jet_a4_tc_em_presel", [jetSeq_a4_tc_em_presel]) + step2 = makeChainStep("Step_jet_a4_tc_em_gsc_ftf", [jetSeq_a4_tc_em_gsc_ftf]) + step3 = makeChainStep("Step3_bjet", [getBJetSequence()]) bjetChains = [ - makeChain(name='HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20' , L1Thresholds=["J20"], ChainSteps=[step1,step2] ), - makeChain(name='HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J20', L1Thresholds=["J20"], ChainSteps=[step1,step2] ), - makeChain(name='HLT_j45_ftf_subjesgscIS_bmv2c1070_L1J20' , L1Thresholds=["J20"], ChainSteps=[step1,step2] ) + makeChain(name='HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20' , L1Thresholds=["J20"], ChainSteps=[step1,step2,step3] ), + makeChain(name='HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J20', L1Thresholds=["J20"], ChainSteps=[step1,step2,step3] ), + makeChain(name='HLT_j45_ftf_subjesgscIS_bmv2c1070_L1J20' , L1Thresholds=["J20"], ChainSteps=[step1,step2,step3] ) ] testChains += bjetChains @@ -204,17 +223,20 @@ def generateChains(): ################################################################## if opt.doMETSlice == True: from TriggerMenuMT.HLTMenuConfig.MET.METMenuSequences import metMenuSequence - from TriggerMenuMT.HLTMenuConfig.MET.ConfigHelpers import extractMETRecoDict + from TriggerMenuMT.HLTMenuConfig.MET.METChainConfiguration import extractMETRecoDict + from TriggerMenuMT.HLTMenuConfig.MET.ConfigHelpers import AlgConfig cellRecoDict = extractMETRecoDict({'EFrecoAlg': "cell"}) - metCellSeq = metMenuSequence(None, **cellRecoDict) + metCellConf = AlgConfig.fromRecoDict(**cellRecoDict) + metCellSeqs = metCellConf.menuSequences() pufitRecoDict = extractMETRecoDict({'EFrecoAlg': "tcpufit"}) - metClusterPufitSeq = metMenuSequence(None, **pufitRecoDict) + metClusterPufitConf = AlgConfig.fromRecoDict(**pufitRecoDict) + metClusterPufitSeqs = metClusterPufitConf.menuSequences() - metCellStep = makeChainStep("Step1_met_cell", [metCellSeq]) - metClusterPufitStep = makeChainStep("Step1_met_clusterpufit", [metClusterPufitSeq]) - comboStep_cell_clusterpufit = makeChainStep("Step1_combo_cell_clusterpufit", [metCellSeq, metClusterPufitSeq], multiplicity=[1,1]) + metCellStep = makeChainStep("Step1_met_cell", metCellSeqs) + metClusterPufitStep = makeChainStep("Step1_met_clusterpufit", metClusterPufitSeqs) + comboStep_cell_clusterpufit = makeChainStep("Step1_combo_cell_clusterpufit", metCellSeqs + metClusterPufitSeqs, multiplicity=[1,1]) metChains = [ makeChain(name="HLT_xe65_L1XE50", L1Thresholds=["XE50"], ChainSteps=[metCellStep]),