From 5c77b1ed431ca2e303dc06cb033959b5c17bb302 Mon Sep 17 00:00:00 2001 From: Dan Guest Date: Thu, 26 Nov 2020 13:43:31 +0100 Subject: [PATCH 1/4] Give btagging jetfitter variables a better name --- .../FlavorTagDiscriminants/DL2HighLevelTools.h | 1 - .../FlavorTagDiscriminants/DL2Tool.h | 1 + .../Root/BTagJetAugmenter.cxx | 11 ++++++----- .../FlavorTagDiscriminants/Root/DL2HighLevel.cxx | 10 ++++------ .../Root/DL2HighLevelTools.cxx | 16 +++------------- .../FlavorTagDiscriminants/Root/DL2Tool.cxx | 8 +++++++- .../BTagging/python/HighLevelBTagAlgConfig.py | 11 +++++++++++ 7 files changed, 32 insertions(+), 26 deletions(-) diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h index 621a333e8c3..d2ecf08529b 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h @@ -35,7 +35,6 @@ 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); // Function to map the regex + list of inputs to variable config, diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h index cbf746fefa3..e27dca737f1 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 cc9ce31eb71..765ecea0d69 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") { @@ -256,7 +256,8 @@ void BTagJetAugmenter::augment(const xAOD::Jet &jet) { double secondaryVtx_track_flightDirRelEta_total = NAN; float min_jf_vtx_L3d = NAN; - if (m_jf_fittedPosition(btag).size() > 4) { + const bool has_jf_secondary = m_jf_fittedPosition(btag).size() > 4; + if (has_jf_secondary) { jf_phi = m_jf_fittedPosition(btag).at(3); jf_theta = m_jf_fittedPosition(btag).at(4); flightDir.SetMagThetaPhi(1, jf_theta, jf_phi); @@ -313,7 +314,7 @@ void BTagJetAugmenter::augment(const xAOD::Jet &jet) { double track_flightDirRelEta = NAN; - if (!std::isnan(jf_phi)) { + if (has_jf_secondary) { TVector3 track_flightDirRelVect = track_particle.p4().Vect(); if (track_flightDirRelVect.Perp()) { track_flightDirRelVect.SetTheta(track_flightDirRelVect.Angle(flightDir)); diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx index 127db489ca7..6262ed57605 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,10 @@ 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); + std::vector input_names; for (const auto& var: config.inputs.at(0).variables) { input_names.push_back(var.name); @@ -118,8 +118,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 1a876791abf..67e30b29799 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx @@ -44,22 +44,12 @@ 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 + ")"); - } + 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; + input.name = replacement_itr->second; replaced_vars.erase(replacement_itr); } } diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx index 32f219f8a82..98745ee84cd 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 41b11993aae..89270c4566f 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) -- GitLab From fee039eeef0667309ee9f964cb319706d9a4424a Mon Sep 17 00:00:00 2001 From: Dan Guest Date: Fri, 27 Nov 2020 10:24:14 +0100 Subject: [PATCH 2/4] Rename variables in a few more places --- .../TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx | 12 ++++++------ .../TrigEDMConfig/python/TriggerEDMRun3.py | 13 +++++++++++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx index 957687f6555..21b28209fe9 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 97d15730954..a073573de3a 100644 --- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py +++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py @@ -65,11 +65,20 @@ JetVarsToKeep = ['ActiveArea', 'ActiveArea4vec_eta', 'ActiveArea4vec_m', 'Active 'Jvt', 'JVFCorr', 'NumTrkPt500', 'NumTrkPt1000', 'SizeParameter', 'SumPtTrkPt500', 'SumPtTrkPt1000', 'TrackWidthPt1000', 'SumPtChargedPFOPt500',] JetVars = '.'.join(JetVarsToKeep) -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',] -- GitLab From 3569b3931fc99baa12a0d6f437b84bdb2cb7d1cc Mon Sep 17 00:00:00 2001 From: Dan Guest Date: Fri, 27 Nov 2020 18:07:00 +0100 Subject: [PATCH 3/4] Rework renaming logic --- .../DL2HighLevelTools.h | 3 ++- .../Root/DL2HighLevel.cxx | 3 ++- .../Root/DL2HighLevelTools.cxx | 24 +++++++++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h index d2ecf08529b..5f306099894 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h @@ -35,7 +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::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/Root/DL2HighLevel.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx index 6262ed57605..7f092536d01 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx @@ -109,7 +109,8 @@ namespace FlavorTagDiscriminants { if (config.inputs.size() == 1) { // allow the user to remape some of the inputs - remap_inputs(config.inputs.at(0).variables, var_map); + 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) { diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx index 67e30b29799..f4289c94412 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx @@ -44,15 +44,35 @@ namespace FlavorTagDiscriminants { } // do some input variable magic in case someone asked void remap_inputs(std::vector& nn, - std::map& replaced_vars) { + 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()) { - input.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, -- GitLab From 0d53745c21f6fda9737497fed222a40924479031 Mon Sep 17 00:00:00 2001 From: Dan Guest Date: Fri, 27 Nov 2020 18:27:26 +0100 Subject: [PATCH 4/4] Revert changes to the Augmenter (I don't understand them right now) --- .../FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx index 765ecea0d69..8855dfc7287 100644 --- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx +++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx @@ -256,8 +256,7 @@ void BTagJetAugmenter::augment(const xAOD::Jet &jet) { double secondaryVtx_track_flightDirRelEta_total = NAN; float min_jf_vtx_L3d = NAN; - const bool has_jf_secondary = m_jf_fittedPosition(btag).size() > 4; - if (has_jf_secondary) { + if (m_jf_fittedPosition(btag).size() > 4) { jf_phi = m_jf_fittedPosition(btag).at(3); jf_theta = m_jf_fittedPosition(btag).at(4); flightDir.SetMagThetaPhi(1, jf_theta, jf_phi); @@ -314,7 +313,7 @@ void BTagJetAugmenter::augment(const xAOD::Jet &jet) { double track_flightDirRelEta = NAN; - if (has_jf_secondary) { + if (!std::isnan(jf_phi)) { TVector3 track_flightDirRelVect = track_particle.p4().Vect(); if (track_flightDirRelVect.Perp()) { track_flightDirRelVect.SetTheta(track_flightDirRelVect.Angle(flightDir)); -- GitLab