diff --git a/DataFormats/BTauReco/interface/DeepBoostedJetFeatures.h b/DataFormats/BTauReco/interface/DeepBoostedJetFeatures.h index e7173b563c297..d22ae84fb7c26 100644 --- a/DataFormats/BTauReco/interface/DeepBoostedJetFeatures.h +++ b/DataFormats/BTauReco/interface/DeepBoostedJetFeatures.h @@ -21,10 +21,11 @@ class DeepBoostedJetFeatures { } void fill(const std::string& name, float value){ - try { - feature_map_.at(name).push_back(value); + auto item = feature_map_.find(name); + if (item != feature_map_.end()){ + item->second.push_back(value); is_empty_ = false; - }catch (const std::out_of_range& e) { + }else{ throw cms::Exception("InvalidArgument") << "[DeepBoostedJetFeatures::fill()] Feature " << name << " has not been registered"; } } @@ -34,9 +35,10 @@ class DeepBoostedJetFeatures { } const std::vector& get(const std::string& name) const { - try { - return feature_map_.at(name); - }catch (const std::out_of_range& e) { + auto item = feature_map_.find(name); + if (item != feature_map_.end()){ + return item->second; + }else{ throw cms::Exception("InvalidArgument") << "[DeepBoostedJetFeatures::get()] Feature " << name << " does not exist!"; } } diff --git a/PhysicsTools/MXNet/src/MXNetCppPredictor.cc b/PhysicsTools/MXNet/src/MXNetCppPredictor.cc index 0e6c57c0dc8c9..2511f58f9947c 100644 --- a/PhysicsTools/MXNet/src/MXNetCppPredictor.cc +++ b/PhysicsTools/MXNet/src/MXNetCppPredictor.cc @@ -62,8 +62,8 @@ void MXNetCppPredictor::set_input_shapes(const std::vector& input_n input_names_ = input_names; // init the input NDArrays and add them to the arg_map for (unsigned i=0; i& MXNetCppPredictor::predict(const std::vectorForward(false); diff --git a/PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py b/PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py index b3d42c808091b..cf1d17de7055f 100644 --- a/PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py +++ b/PhysicsTools/PatAlgos/python/recoLayer0/bTagging_cff.py @@ -231,8 +231,44 @@ #meta-taggers are simple arithmetic on top of other taggers, they are stored here #such that in case you want them re-run also the parent tagger is re-run as well -_pfDeepBoostedJetTagsProbs = ['pfDeepBoostedJetTags:probTbcq', 'pfDeepBoostedJetTags:probTbqq', 'pfDeepBoostedJetTags:probTbc', 'pfDeepBoostedJetTags:probTbq', 'pfDeepBoostedJetTags:probWcq', 'pfDeepBoostedJetTags:probWqq', 'pfDeepBoostedJetTags:probZbb', 'pfDeepBoostedJetTags:probZcc', 'pfDeepBoostedJetTags:probZqq', 'pfDeepBoostedJetTags:probHbb', 'pfDeepBoostedJetTags:probHcc', 'pfDeepBoostedJetTags:probHqqqq', 'pfDeepBoostedJetTags:probQCDbb', 'pfDeepBoostedJetTags:probQCDcc', 'pfDeepBoostedJetTags:probQCDb', 'pfDeepBoostedJetTags:probQCDc', 'pfDeepBoostedJetTags:probQCDothers'] -_pfMassDecorrelatedDeepBoostedJetTagsProbs = ['pfMassDecorrelatedDeepBoostedJetTags:probTbcq', 'pfMassDecorrelatedDeepBoostedJetTags:probTbqq', 'pfMassDecorrelatedDeepBoostedJetTags:probTbc', 'pfMassDecorrelatedDeepBoostedJetTags:probTbq', 'pfMassDecorrelatedDeepBoostedJetTags:probWcq', 'pfMassDecorrelatedDeepBoostedJetTags:probWqq', 'pfMassDecorrelatedDeepBoostedJetTags:probZbb', 'pfMassDecorrelatedDeepBoostedJetTags:probZcc', 'pfMassDecorrelatedDeepBoostedJetTags:probZqq', 'pfMassDecorrelatedDeepBoostedJetTags:probHbb', 'pfMassDecorrelatedDeepBoostedJetTags:probHcc', 'pfMassDecorrelatedDeepBoostedJetTags:probHqqqq', 'pfMassDecorrelatedDeepBoostedJetTags:probQCDbb', 'pfMassDecorrelatedDeepBoostedJetTags:probQCDcc', 'pfMassDecorrelatedDeepBoostedJetTags:probQCDb', 'pfMassDecorrelatedDeepBoostedJetTags:probQCDc', 'pfMassDecorrelatedDeepBoostedJetTags:probQCDothers'] +_pfDeepBoostedJetTagsProbs = [ + 'pfDeepBoostedJetTags:probTbcq', + 'pfDeepBoostedJetTags:probTbqq', + 'pfDeepBoostedJetTags:probTbc', + 'pfDeepBoostedJetTags:probTbq', + 'pfDeepBoostedJetTags:probWcq', + 'pfDeepBoostedJetTags:probWqq', + 'pfDeepBoostedJetTags:probZbb', + 'pfDeepBoostedJetTags:probZcc', + 'pfDeepBoostedJetTags:probZqq', + 'pfDeepBoostedJetTags:probHbb', + 'pfDeepBoostedJetTags:probHcc', + 'pfDeepBoostedJetTags:probHqqqq', + 'pfDeepBoostedJetTags:probQCDbb', + 'pfDeepBoostedJetTags:probQCDcc', + 'pfDeepBoostedJetTags:probQCDb', + 'pfDeepBoostedJetTags:probQCDc', + 'pfDeepBoostedJetTags:probQCDothers', + ] +_pfMassDecorrelatedDeepBoostedJetTagsProbs = [ + 'pfMassDecorrelatedDeepBoostedJetTags:probTbcq', + 'pfMassDecorrelatedDeepBoostedJetTags:probTbqq', + 'pfMassDecorrelatedDeepBoostedJetTags:probTbc', + 'pfMassDecorrelatedDeepBoostedJetTags:probTbq', + 'pfMassDecorrelatedDeepBoostedJetTags:probWcq', + 'pfMassDecorrelatedDeepBoostedJetTags:probWqq', + 'pfMassDecorrelatedDeepBoostedJetTags:probZbb', + 'pfMassDecorrelatedDeepBoostedJetTags:probZcc', + 'pfMassDecorrelatedDeepBoostedJetTags:probZqq', + 'pfMassDecorrelatedDeepBoostedJetTags:probHbb', + 'pfMassDecorrelatedDeepBoostedJetTags:probHcc', + 'pfMassDecorrelatedDeepBoostedJetTags:probHqqqq', + 'pfMassDecorrelatedDeepBoostedJetTags:probQCDbb', + 'pfMassDecorrelatedDeepBoostedJetTags:probQCDcc', + 'pfMassDecorrelatedDeepBoostedJetTags:probQCDb', + 'pfMassDecorrelatedDeepBoostedJetTags:probQCDc', + 'pfMassDecorrelatedDeepBoostedJetTags:probQCDothers', + ] supportedMetaDiscr = { 'pfDeepCSVDiscriminatorsJetTags:BvsAll' : ['pfDeepCSVJetTags:probudsg', 'pfDeepCSVJetTags:probb', 'pfDeepCSVJetTags:probc', 'pfDeepCSVJetTags:probbb'], 'pfDeepCSVDiscriminatorsJetTags:CvsB' : ['pfDeepCSVJetTags:probudsg', 'pfDeepCSVJetTags:probb', 'pfDeepCSVJetTags:probc', 'pfDeepCSVJetTags:probbb'], diff --git a/RecoBTag/DeepBoostedJet/plugins/DeepBoostedJetTagInfoProducer.cc b/RecoBTag/DeepBoostedJet/plugins/DeepBoostedJetTagInfoProducer.cc index 5b1290e084082..56ebe0e92fd26 100644 --- a/RecoBTag/DeepBoostedJet/plugins/DeepBoostedJetTagInfoProducer.cc +++ b/RecoBTag/DeepBoostedJet/plugins/DeepBoostedJetTagInfoProducer.cc @@ -212,7 +212,7 @@ void DeepBoostedJetTagInfoProducer::produce(edm::Event& iEvent, const edm::Event for (std::size_t jet_n = 0; jet_n < jets->size(); jet_n++){ - const auto& jet = jets->at(jet_n); + const auto& jet = (*jets)[jet_n]; edm::RefToBase jet_ref(jets, jet_n); // create jet features @@ -239,6 +239,12 @@ void DeepBoostedJetTagInfoProducer::produce(edm::Event& iEvent, const edm::Event void DeepBoostedJetTagInfoProducer::fillParticleFeatures(DeepBoostedJetFeatures &fts, const reco::Jet &jet){ + // require the input to be a pat::Jet + const auto* patJet = dynamic_cast(&jet); + if (!patJet){ + throw edm::Exception(edm::errors::InvalidReference) << "Input is not a pat::Jet."; + } + // do nothing if jet does not have constituents if (jet.numberOfDaughters()==0) return; @@ -360,16 +366,9 @@ void DeepBoostedJetTagInfoProducer::fillParticleFeatures(DeepBoostedJetFeatures } fts.fill("pfcand_drminsv", minDR==999 ? -1 : minDR); - pat::JetPtrCollection subjets; - try { - const auto &patJet = dynamic_cast(jet); - subjets = patJet.subjets(); - // sort by pt - std::sort(subjets.begin(), subjets.end(), [](const edm::Ptr& p1, const edm::Ptr& p2){ return p1->pt()>p2->pt(); }); - }catch (const std::bad_cast &e) { - throw edm::Exception(edm::errors::InvalidReference) << "Cannot access subjets because this is not a pat::Jet."; - } - + // subjets + auto subjets = patJet->subjets(); + std::sort(subjets.begin(), subjets.end(), [](const edm::Ptr& p1, const edm::Ptr& p2){ return p1->pt()>p2->pt(); }); // sort by pt fts.fill("pfcand_drsubjet1", !subjets.empty() ? reco::deltaR(*cand, *subjets.at(0)) : -1); fts.fill("pfcand_drsubjet2", subjets.size()>1 ? reco::deltaR(*cand, *subjets.at(1)) : -1); diff --git a/RecoBTag/DeepBoostedJet/plugins/DeepBoostedJetTagsProducer.cc b/RecoBTag/DeepBoostedJet/plugins/DeepBoostedJetTagsProducer.cc index 59abafa6c249c..c6d37d5adeab6 100644 --- a/RecoBTag/DeepBoostedJet/plugins/DeepBoostedJetTagsProducer.cc +++ b/RecoBTag/DeepBoostedJet/plugins/DeepBoostedJetTagsProducer.cc @@ -41,9 +41,10 @@ struct PreprocessParams { std::unordered_map var_info_map; VarInfo get_info(const std::string &name) const { - try { - return var_info_map.at(name); - }catch (const std::out_of_range &e) { + auto item = var_info_map.find(name); + if (item != var_info_map.end()){ + return item->second; + } else { throw cms::Exception("InvalidArgument") << "Cannot find variable info for " << name; } } @@ -132,7 +133,7 @@ DeepBoostedJetTagsProducer::DeepBoostedJetTagsProducer(const edm::ParameterSet& // get output names from flav_table const auto & flav_pset = iConfig.getParameter("flav_table"); - for (const auto flav_pair : flav_pset.tbl()) { + for (const auto& flav_pair : flav_pset.tbl()) { const auto & flav_name = flav_pair.first; flav_pairs_.emplace_back(flav_name, flav_pset.getParameter>(flav_name));