diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h index 621a333e8c3e77256c5382308d1c68074741a150..5f30609989419f72c664a002f95291d504ba35de 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h @@ -35,8 +35,8 @@ namespace FlavorTagDiscriminants { // also allow some user-configured remapping. Items in replaced_vars // are removed as they are used. void remap_inputs(std::vector& nn, - std::vector& dl2, - std::map& replaced_vars); + std::map& replaced_vars, + std::map& defaults); // Function to map the regex + list of inputs to variable config, // this time for sequence inputs. diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h index cbf746fefa3b41bf692c2c1658956317a7a43f80..e27dca737f1abe89113451d0d32d30fdfff15432 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h @@ -16,6 +16,7 @@ namespace FlavorTagDiscriminants { struct DL2Properties { std::string nnFile; std::string flipTagConfig; + std::map variableRemapping; }; class DL2Tool : public asg::AsgTool, virtual public ISingleJetDecorator diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx index cc9ce31eb716f0e20b2b7bfbb1cfc5a0206b538d..8855dfc72878e1fe0d9e26a69eec3bbe04b7a832 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx @@ -105,9 +105,9 @@ BTagJetAugmenter::BTagJetAugmenter(std::string associator, FlavorTagDiscriminant m_secondaryVtx_min_trk_flightDirRelEta(jfSvNew(f) + "_minimumTrackRelativeEta"), m_secondaryVtx_max_trk_flightDirRelEta(jfSvNew(f) + "_maximumTrackRelativeEta"), m_secondaryVtx_avg_trk_flightDirRelEta(jfSvNew(f) + "_averageTrackRelativeEta"), - m_min_trk_flightDirRelEta("minimumTrackRelativeEta" + flipString(f)), - m_max_trk_flightDirRelEta("maximumTrackRelativeEta" + flipString(f)), - m_avg_trk_flightDirRelEta("averageTrackRelativeEta" + flipString(f)), + m_min_trk_flightDirRelEta(jfSvNew(f) + "_minimumAllJetTrackRelativeEta"), + m_max_trk_flightDirRelEta(jfSvNew(f) + "_maximumAllJetTrackRelativeEta"), + m_avg_trk_flightDirRelEta(jfSvNew(f) + "_averageAllJetTrackRelativeEta"), m_rnnip_pbIsValid(rnn(f) + "_pbIsValid"), m_rnnip_isDefaults(rnn(f) + "_isDefaults") { diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx index 127db489ca7696ff32650dd311722ba374926e9c..7f092536d0175dd0e729325ebf94d015d95cd8a3 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx @@ -52,7 +52,6 @@ namespace FlavorTagDiscriminants { {"rnnip"_r, "rnnipflip"}, {"^(DL1|DL1r|DL1rmu)$"_r, "$1Flip"}, {"pt|abs_eta"_r, "$&"}, - {"(minimum|maximum|average)TrackRelativeEta"_r, "$&Flip"}, {"softMuon.*|smt.*"_r, "$&"} }; @@ -81,7 +80,6 @@ namespace FlavorTagDiscriminants { {"IP[23]D(Neg)?_[pbc](b|c|u|tau)"_r, floattype}, {"SV1(Flip)?_[pbc](b|c|u|tau)"_r, floattype}, {"(rnnip|iprnn)(flip)?_p(b|c|u|tau)"_r, floattype}, - {"(minimum|maximum|average)TrackRelativeEta(Flip)?"_r, EDMType::FLOAT}, {"(JetFitter|SV1|JetFitterSecondaryVertex)(Flip)?_[Nn].*"_r, EDMType::INT}, {"(JetFitter|SV1|JetFitterSecondaryVertex).*"_r, EDMType::FLOAT}, {"pt|abs_eta|eta"_r, EDMType::CUSTOM_GETTER}, @@ -100,8 +98,6 @@ namespace FlavorTagDiscriminants { {"JetFitterFlip_.*"_r, "JetFitterFlip_isDefaults"}, {"JetFitterSecondaryVertex_.*"_r, "JetFitterSecondaryVertex_isDefaults"}, {"JetFitterSecondaryVertexFlip_.*"_r, "JetFitterSecondaryVertexFlip_isDefaults"}, - {".*TrackRelativeEta"_r, "JetFitterSecondaryVertex_isDefaults"}, - {".*TrackRelativeEtaFlip"_r, "JetFitterSecondaryVertexFlip_isDefaults"}, {"rnnip_.*"_r, "rnnip_isDefaults"}, {"rnnipflip_.*"_r, "rnnipflip_isDefaults"}, {"iprnn_.*"_r, ""}, @@ -111,6 +107,11 @@ namespace FlavorTagDiscriminants { std::vector input_config; if (config.inputs.size() == 1) { + + // allow the user to remape some of the inputs + remap_inputs(config.inputs.at(0).variables, var_map, + config.inputs.at(0).defaults); + std::vector input_names; for (const auto& var: config.inputs.at(0).variables) { input_names.push_back(var.name); @@ -118,8 +119,6 @@ namespace FlavorTagDiscriminants { input_config = get_input_config( input_names, type_regexes, default_flag_regexes); - // allow the user to remape some of the inputs - remap_inputs(config.inputs.at(0).variables, input_config, var_map); } else if (config.inputs.size() > 1) { throw std::logic_error("DL2 doesn't support multiple inputs"); } diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx index 1a876791abf4a312826812f0efd17163f0fb526d..f4289c944129802b925b4c8f43aa76f589043cf5 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx @@ -44,25 +44,35 @@ namespace FlavorTagDiscriminants { } // do some input variable magic in case someone asked void remap_inputs(std::vector& nn, - std::vector& dl2, - std::map& replaced_vars) { - if (nn.size() != dl2.size()) { - throw std::logic_error("DL2 input size != lwtnn input size"); - } - for (size_t iii = 0; iii < nn.size(); iii++) { - std::string nn_name = nn.at(iii).name; - std::string dl_name = dl2.at(iii).name; - if (nn_name != dl_name) { - throw std::logic_error( - "DL2 input mismatch (" + nn_name + " != " + dl_name + ")"); - } + std::map& replaced_vars, + std::map& defaults) { + // keep track of the new default values, and which values they + // were moved from + std::map new_defaults; + std::set moved_defaults; + for (lwt::Input& input: nn) { + std::string nn_name = input.name; auto replacement_itr = replaced_vars.find(nn_name); if (replacement_itr != replaced_vars.end()) { - nn.at(iii).name = replacement_itr->second; - dl2.at(iii).name = replacement_itr->second; + std::string new_name = replacement_itr->second; + input.name = new_name; + if (defaults.count(nn_name)) { + new_defaults[new_name] = defaults.at(nn_name); + moved_defaults.insert(nn_name); + } replaced_vars.erase(replacement_itr); } } + for (const auto& new_default: new_defaults) { + defaults[new_default.first] = new_default.second; + // if something was a new default we don't want to delete it + // below. + moved_defaults.erase(new_default.first); + } + // delete anything that was moved but wasn't assigned to + for (const auto& moved: moved_defaults) { + defaults.erase(moved); + } } std::vector get_track_input_config( const std::vector>>& names, diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx index 32f219f8a82d8329f4d9af1da34d1f97abb0fb20..98745ee84cd20350d04ab52e91d3a15bbe1cc6e2 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx @@ -14,6 +14,7 @@ namespace FlavorTagDiscriminants { { declareProperty("nnFile", m_props.nnFile); declareProperty("flipTagConfig", m_props.flipTagConfig); + declareProperty("variableRemapping", m_props.variableRemapping); } DL2Tool::~DL2Tool() {} @@ -23,7 +24,12 @@ namespace FlavorTagDiscriminants { if (m_props.flipTagConfig.size() > 0) { flipConfig = flipTagConfigFromString(m_props.flipTagConfig); } - m_dl2.reset(new DL2HighLevel(m_props.nnFile, flipConfig)); + m_dl2.reset( + new DL2HighLevel( + m_props.nnFile, + flipConfig, + m_props.variableRemapping) + ); return StatusCode::SUCCESS; } diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/HighLevelBTagAlgConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/HighLevelBTagAlgConfig.py index 41b11993aaec0b515ea40c5aafa9092fc37265f3..89270c4566f57c43349ad636969a6a1c8b989505 100644 --- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/HighLevelBTagAlgConfig.py +++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/HighLevelBTagAlgConfig.py @@ -11,6 +11,17 @@ def DL2ToolCfg(ConfigFlags, NNFile = '', **options): options['nnFile'] = NNFile options['name'] = "decorator" + + # This is a hack to accomodate the older b-tagging training with + # old names for variables. We should be able to remove it when we + # move over to the 2020 / 2021 retraining. + if '201903' in NNFile and 'dl1' in NNFile: + remap = {} + for aggragate in ['minimum','maximum','average']: + remap[f'{aggragate}TrackRelativeEta'] = ( + f'JetFitterSecondaryVertex_{aggragate}AllJetTrackRelativeEta') + options['variableRemapping'] = remap + dl2 = FlavorTagDiscriminants__DL2Tool(**options) acc.setPrivateTools(dl2) diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx index 957687f655578cb1ee3a8583512760e3b86d4b1f..21b28209fe94dbc94939628fda220274c0b9ca12 100644 --- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx +++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx @@ -359,9 +359,9 @@ StatusCode TrigBjetBtagHypoAlgMT::monitor_btagging( const ElementLinkVector< xAO MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_minimumTrackRelativeEta, float, bTaggingEL); MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_averageTrackRelativeEta, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(maximumTrackRelativeEta, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(minimumTrackRelativeEta, float, bTaggingEL); - MONITOR_BTAG_AUX_VAR(averageTrackRelativeEta, float, bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta, float, bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta, float, bTaggingEL); + MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_averageAllJetTrackRelativeEta, float, bTaggingEL); @@ -412,9 +412,9 @@ StatusCode TrigBjetBtagHypoAlgMT::monitor_btagging( const ElementLinkVector< xAO monitor_for_JetFitterSecondaryVertex_maximumTrackRelativeEta, monitor_for_JetFitterSecondaryVertex_minimumTrackRelativeEta, monitor_for_JetFitterSecondaryVertex_averageTrackRelativeEta, - monitor_for_maximumTrackRelativeEta, - monitor_for_minimumTrackRelativeEta, - monitor_for_averageTrackRelativeEta, + monitor_for_JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta, + monitor_for_JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta, + monitor_for_JetFitterSecondaryVertex_averageAllJetTrackRelativeEta, monitor_for_MV2c10 ); diff --git a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py index eea35e3b5fe82d5ae5f84c98d44a9b978b43097d..4b41d854e87b9ed30f58d29e6c886d6349f3b5fe 100644 --- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py +++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py @@ -74,11 +74,20 @@ JetCopyVarsToKeep = ['pt', 'eta', 'phi', 'm', ] JetCopyVars = '.'.join(JetCopyVarsToKeep) -BTagOutput = ['jetLink','BTagTrackToJetAssociator','minimumTrackRelativeEta','maximumTrackRelativeEta','averageTrackRelativeEta','trkSum_ntrk','trkSum_SPt','trkSum_VPt','trkSum_VEta','Muons',] +BTagOutput = ['jetLink','BTagTrackToJetAssociator','Muons',] BTagOutput_IP2D = ['IP2D_TrackParticleLinks','IP2D_gradeOfTracks','IP2D_weightBofTracks','IP2D_weightCofTracks','IP2D_weightUofTracks','IP2D_sigD0wrtPVofTracks','IP2D_flagFromV0ofTracks','IP2D_nTrks','IP2D_isDefaults','IP2D_cu','IP2D_bu','IP2D_bc',] BTagOutput_IP3D = ['IP3D_TrackParticleLinks','IP3D_gradeOfTracks','IP3D_weightBofTracks','IP3D_weightCofTracks','IP3D_weightUofTracks','IP3D_valD0wrtPVofTracks','IP3D_sigD0wrtPVofTracks','IP3D_valZ0wrtPVofTracks','IP3D_sigZ0wrtPVofTracks','IP3D_flagFromV0ofTracks','IP3D_nTrks','IP3D_isDefaults','IP3D_cu','IP3D_bu','IP3D_bc',] BTagOutput_SV1 = ['SV1_TrackParticleLinks','SV1_vertices','SV1_isDefaults','SV1_NGTinSvx','SV1_masssvx','SV1_N2Tpair','SV1_efracsvx','SV1_deltaR','SV1_Lxy','SV1_L3d','SV1_significance3d','SV1_energyTrkInJet','SV1_dstToMatLay','SV1_badTracksIP','SV1_normdist',] -BTagOutput_JetFitter = ['JetFitter_deltaeta','JetFitter_deltaphi','JetFitter_fittedPosition','JetFitter_JFvertices','JetFitter_nVTX','JetFitter_nSingleTracks','JetFitter_isDefaults','JetFitter_deltaR','JetFitterSecondaryVertex_isDefaults','JetFitterSecondaryVertex_nTracks','JetFitterSecondaryVertex_mass','JetFitterSecondaryVertex_energy','JetFitterSecondaryVertex_energyFraction','JetFitterSecondaryVertex_displacement3d','JetFitterSecondaryVertex_displacement2d','JetFitterSecondaryVertex_minimumTrackRelativeEta','JetFitterSecondaryVertex_maximumTrackRelativeEta','JetFitterSecondaryVertex_averageTrackRelativeEta','JetFitter_mass','JetFitter_energyFraction','JetFitter_significance3d','JetFitter_nTracksAtVtx','JetFitter_N2Tpair','JetFitter_fittedCov','JetFitter_tracksAtPVchi2','JetFitter_tracksAtPVndf','JetFitter_tracksAtPVlinks','JetFitter_massUncorr','JetFitter_chi2','JetFitter_ndof','JetFitter_dRFlightDir',] +BTagOutput_JetFitter = [ + 'JetFitter_deltaeta','JetFitter_deltaphi','JetFitter_fittedPosition','JetFitter_JFvertices','JetFitter_nVTX','JetFitter_nSingleTracks','JetFitter_isDefaults','JetFitter_deltaR', + 'JetFitterSecondaryVertex_isDefaults','JetFitterSecondaryVertex_nTracks','JetFitterSecondaryVertex_mass','JetFitterSecondaryVertex_energy','JetFitterSecondaryVertex_energyFraction','JetFitterSecondaryVertex_displacement3d','JetFitterSecondaryVertex_displacement2d', + 'JetFitterSecondaryVertex_minimumTrackRelativeEta', + 'JetFitterSecondaryVertex_maximumTrackRelativeEta', + 'JetFitterSecondaryVertex_averageTrackRelativeEta', + 'JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta', + 'JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta', + 'JetFitterSecondaryVertex_averageAllJetTrackRelativeEta', + 'JetFitter_mass','JetFitter_energyFraction','JetFitter_significance3d','JetFitter_nTracksAtVtx','JetFitter_N2Tpair','JetFitter_fittedCov','JetFitter_tracksAtPVchi2','JetFitter_tracksAtPVndf','JetFitter_tracksAtPVlinks','JetFitter_massUncorr','JetFitter_chi2','JetFitter_ndof','JetFitter_dRFlightDir',] BTagOutput_rnnip = ['rnnip_isDefaults','rnnip_pu','rnnip_pc','rnnip_pb','rnnip_ptau',] BTagOutput_highLevelTaggers = ['MV2c10_discriminant','DL1_pu','DL1_pc','DL1_pb','DL1r_pu','DL1r_pc','DL1r_pb',]