Skip to content

Commit

Permalink
Use ESGetToken in JetTagComputerESProducer
Browse files Browse the repository at this point in the history
  • Loading branch information
makortel committed Jul 3, 2019
1 parent 03bd29f commit d1ea264
Show file tree
Hide file tree
Showing 25 changed files with 258 additions and 155 deletions.
13 changes: 8 additions & 5 deletions RecoBTag/CTagging/interface/CharmTagger.h
@@ -1,11 +1,10 @@
#ifndef RecoBTag_CTagging_CharmTagger_h
#define RecoBTag_CTagging_CharmTagger_h

#include "FWCore/Framework/interface/ESConsumesCollector.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "CommonTools/MVAUtils/interface/TMVAEvaluator.h"
#include "RecoBTau/JetTagComputer/interface/JetTagComputer.h"
#include <mutex>
#include "FWCore/Utilities/interface/ESInputTag.h"
#include "RecoBTag/SecondaryVertex/interface/CombinedSVSoftLeptonComputer.h"
#include "DataFormats/BTauReco/interface/TaggingVariable.h"
#include "RecoBTau/JetTagComputer/interface/JetTagComputerRecord.h"
Expand All @@ -19,8 +18,13 @@

class CharmTagger : public JetTagComputer {
public:
struct Tokens {
Tokens(const edm::ParameterSet& configuration, edm::ESConsumesCollector&& cc);
edm::ESGetToken<GBRForest, GBRWrapperRcd> gbrForest_;
};

/// explicit ctor
CharmTagger(const edm::ParameterSet&);
CharmTagger(const edm::ParameterSet&, Tokens);
~CharmTagger() override; //{}
float discriminator(const TagInfoHelper& tagInfo) const override;
void initialize(const JetTagComputerRecord& record) override;
Expand All @@ -41,12 +45,11 @@ class CharmTagger : public JetTagComputer {
std::vector<MVAVar> variables_;

std::string mva_name_;
bool use_condDB_;
std::string gbrForest_label_;
edm::FileInPath weight_file_;
bool use_GBRForest_;
bool use_adaBoost_;
bool defaultValueNoTracks_;
Tokens tokens_;
};

#endif
28 changes: 16 additions & 12 deletions RecoBTag/CTagging/src/CharmTagger.cc
Expand Up @@ -3,7 +3,7 @@
#include "DataFormats/BTauReco/interface/CandSoftLeptonTagInfo.h"
#include "DataFormats/BTauReco/interface/CandIPTagInfo.h"
#include "DataFormats/BTauReco/interface/SecondaryVertexTagInfo.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Utilities/interface/ESInputTag.h"
#include "CondFormats/DataRecord/interface/GBRWrapperRcd.h"

#include <iostream>
Expand All @@ -12,15 +12,24 @@
#include <map>
#include <iostream>

CharmTagger::CharmTagger(const edm::ParameterSet &configuration)
CharmTagger::Tokens::Tokens(const edm::ParameterSet &configuration, edm::ESConsumesCollector &&cc) {
if (configuration.getParameter<bool>("useCondDB")) {
cc.setConsumes(gbrForest_,
edm::ESInputTag{"",
configuration.existsAs<std::string>("gbrForestLabel")
? configuration.getParameter<std::string>("gbrForestLabel")
: ""});
}
}

CharmTagger::CharmTagger(const edm::ParameterSet &configuration, Tokens tokens)
: sl_computer_(configuration.getParameter<edm::ParameterSet>("slComputerCfg")),
mva_name_(configuration.getParameter<std::string>("mvaName")),
use_condDB_(configuration.getParameter<bool>("useCondDB")),
gbrForest_label_(configuration.getParameter<std::string>("gbrForestLabel")),
weight_file_(configuration.getParameter<edm::FileInPath>("weightFile")),
use_GBRForest_(configuration.getParameter<bool>("useGBRForest")),
use_adaBoost_(configuration.getParameter<bool>("useAdaBoost")),
defaultValueNoTracks_(configuration.getParameter<bool>("defaultValueNoTracks")) {
defaultValueNoTracks_(configuration.getParameter<bool>("defaultValueNoTracks")),
tokens_{std::move(tokens)} {
vpset vars_definition = configuration.getParameter<vpset>("variables");
for (auto &var : vars_definition) {
MVAVar mva_var;
Expand Down Expand Up @@ -50,13 +59,8 @@ void CharmTagger::initialize(const JetTagComputerRecord &record) {
}
std::vector<std::string> spectators;

if (use_condDB_) {
const GBRWrapperRcd &gbrWrapperRecord = record.getRecord<GBRWrapperRcd>();

edm::ESHandle<GBRForest> gbrForestHandle;
gbrWrapperRecord.get(gbrForest_label_.c_str(), gbrForestHandle);

mvaID_->initializeGBRForest(gbrForestHandle.product(), variable_names, spectators, use_adaBoost_);
if (tokens_.gbrForest_.isInitialized()) {
mvaID_->initializeGBRForest(&record.get(tokens_.gbrForest_), variable_names, spectators, use_adaBoost_);
} else {
mvaID_->initialize("Color:Silent:Error",
mva_name_,
Expand Down
12 changes: 8 additions & 4 deletions RecoBTag/Combined/interface/CandidateChargeBTagComputer.h
@@ -1,8 +1,8 @@
#ifndef RecoBTag_Combined_CandidateChargeBTagComputer_h
#define RecoBTag_Combined_CandidateChargeBTagComputer_h

#include "FWCore/Framework/interface/ESConsumesCollector.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "CommonTools/MVAUtils/interface/TMVAEvaluator.h"
#include "DataFormats/BTauReco/interface/CandIPTagInfo.h"
#include "DataFormats/BTauReco/interface/CandSecondaryVertexTagInfo.h"
Expand All @@ -15,20 +15,24 @@

class CandidateChargeBTagComputer : public JetTagComputer {
public:
CandidateChargeBTagComputer(const edm::ParameterSet &parameters);
struct Tokens {
Tokens(const edm::ParameterSet &parameters, edm::ESConsumesCollector &&cc);
edm::ESGetToken<GBRForest, GBRWrapperRcd> gbrForest_;
};

CandidateChargeBTagComputer(const edm::ParameterSet &parameters, Tokens tokens);
~CandidateChargeBTagComputer() override;
void initialize(const JetTagComputerRecord &record) override;
float discriminator(const TagInfoHelper &tagInfo) const override;
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);

private:
const bool useCondDB_;
const std::string gbrForestLabel_;
const edm::FileInPath weightFile_;
const bool useAdaBoost_;
std::unique_ptr<TMVAEvaluator> mvaID;
const double jetChargeExp_;
const double svChargeExp_;
const Tokens tokens_;
};

#endif // RecoBTag_Combined_CandidateChargeBTagComputer_h
14 changes: 9 additions & 5 deletions RecoBTag/Combined/interface/CombinedMVAV2JetTagComputer.h
Expand Up @@ -6,14 +6,20 @@
#include <vector>
#include <map>

#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/ESConsumesCollector.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "CommonTools/MVAUtils/interface/TMVAEvaluator.h"
#include "RecoBTau/JetTagComputer/interface/JetTagComputer.h"

class CombinedMVAV2JetTagComputer : public JetTagComputer {
public:
CombinedMVAV2JetTagComputer(const edm::ParameterSet &parameters);
struct Tokens {
Tokens(const edm::ParameterSet &parameters, edm::ESConsumesCollector &&cc);
edm::ESGetToken<GBRForest, GBRWrapperRcd> gbrForest_;
std::vector<edm::ESGetToken<JetTagComputer, JetTagComputerRecord> > computers_;
};

CombinedMVAV2JetTagComputer(const edm::ParameterSet &parameters, Tokens tokens);
~CombinedMVAV2JetTagComputer() override;

void initialize(const JetTagComputerRecord &record) override;
Expand All @@ -23,15 +29,13 @@ class CombinedMVAV2JetTagComputer : public JetTagComputer {
private:
std::vector<const JetTagComputer *> computers;

const std::vector<std::string> inputComputerNames;
const std::string mvaName;
const std::vector<std::string> variables;
const std::vector<std::string> spectators;
const bool useCondDB;
const std::string gbrForestLabel;
const edm::FileInPath weightFile;
const bool useGBRForest;
const bool useAdaBoost;
const Tokens tokens;

std::unique_ptr<TMVAEvaluator> mvaID;
};
Expand Down
22 changes: 12 additions & 10 deletions RecoBTag/Combined/src/CandidateChargeBTagComputer.cc
@@ -1,12 +1,17 @@
#include "RecoBTag/Combined/interface/CandidateChargeBTagComputer.h"

CandidateChargeBTagComputer::CandidateChargeBTagComputer(const edm::ParameterSet& parameters)
: useCondDB_(parameters.getParameter<bool>("useCondDB")),
gbrForestLabel_(parameters.getParameter<std::string>("gbrForestLabel")),
weightFile_(parameters.getParameter<edm::FileInPath>("weightFile")),
CandidateChargeBTagComputer::Tokens::Tokens(const edm::ParameterSet& parameters, edm::ESConsumesCollector&& cc) {
if (parameters.getParameter<bool>("useCondDB")) {
cc.setConsumes(gbrForest_, edm::ESInputTag{"", parameters.getParameter<std::string>("gbrForestLabel")});
}
}

CandidateChargeBTagComputer::CandidateChargeBTagComputer(const edm::ParameterSet& parameters, Tokens tokens)
: weightFile_(parameters.getParameter<edm::FileInPath>("weightFile")),
useAdaBoost_(parameters.getParameter<bool>("useAdaBoost")),
jetChargeExp_(parameters.getParameter<double>("jetChargeExp")),
svChargeExp_(parameters.getParameter<double>("svChargeExp")) {
svChargeExp_(parameters.getParameter<double>("svChargeExp")),
tokens_{std::move(tokens)} {
uses(0, "pfImpactParameterTagInfos");
uses(1, "pfInclusiveSecondaryVertexFinderCvsLTagInfos");
uses(2, "softPFMuonsTagInfos");
Expand Down Expand Up @@ -37,11 +42,8 @@ void CandidateChargeBTagComputer::initialize(const JetTagComputerRecord& record)
"pt3_ch/j_pt"});
std::vector<std::string> spectators(0);

if (useCondDB_) {
const GBRWrapperRcd& gbrWrapperRecord = record.getRecord<GBRWrapperRcd>();
edm::ESHandle<GBRForest> gbrForestHandle;
gbrWrapperRecord.get(gbrForestLabel_.c_str(), gbrForestHandle);
mvaID->initializeGBRForest(gbrForestHandle.product(), variables, spectators, useAdaBoost_);
if (tokens_.gbrForest_.isInitialized()) {
mvaID->initializeGBRForest(&record.get(tokens_.gbrForest_), variables, spectators, useAdaBoost_);
} else
mvaID->initialize("Color:Silent:Error", "BDT", weightFile_.fullPath(), variables, spectators, true, useAdaBoost_);
}
Expand Down
45 changes: 24 additions & 21 deletions RecoBTag/Combined/src/CombinedMVAV2JetTagComputer.cc
Expand Up @@ -20,20 +20,30 @@

using namespace reco;

CombinedMVAV2JetTagComputer::CombinedMVAV2JetTagComputer(const edm::ParameterSet &params)
:
CombinedMVAV2JetTagComputer::Tokens::Tokens(const edm::ParameterSet &params, edm::ESConsumesCollector &&cc) {
if (params.getParameter<bool>("useCondDB")) {
cc.setConsumes(
gbrForest_,
edm::ESInputTag{
"",
params.existsAs<std::string>("gbrForestLabel") ? params.getParameter<std::string>("gbrForestLabel") : ""});
}
const auto &inputComputerNames = params.getParameter<std::vector<std::string> >("jetTagComputers");
computers_.resize(inputComputerNames.size());
for (size_t i = 0; i < inputComputerNames.size(); ++i) {
cc.setConsumes(computers_[i], edm::ESInputTag{"", inputComputerNames[i]});
}
}

inputComputerNames(params.getParameter<std::vector<std::string> >("jetTagComputers")),
mvaName(params.getParameter<std::string>("mvaName")),
CombinedMVAV2JetTagComputer::CombinedMVAV2JetTagComputer(const edm::ParameterSet &params, Tokens tokens)
: mvaName(params.getParameter<std::string>("mvaName")),
variables(params.getParameter<std::vector<std::string> >("variables")),
spectators(params.getParameter<std::vector<std::string> >("spectators")),
useCondDB(params.getParameter<bool>("useCondDB")),
gbrForestLabel(params.existsAs<std::string>("gbrForestLabel") ? params.getParameter<std::string>("gbrForestLabel")
: ""),
weightFile(params.existsAs<edm::FileInPath>("weightFile") ? params.getParameter<edm::FileInPath>("weightFile")
: edm::FileInPath()),
useGBRForest(params.existsAs<bool>("useGBRForest") ? params.getParameter<bool>("useGBRForest") : false),
useAdaBoost(params.existsAs<bool>("useAdaBoost") ? params.getParameter<bool>("useAdaBoost") : false)
useAdaBoost(params.existsAs<bool>("useAdaBoost") ? params.getParameter<bool>("useAdaBoost") : false),
tokens(std::move(tokens))

{
uses(0, "ipTagInfos");
Expand All @@ -46,24 +56,17 @@ CombinedMVAV2JetTagComputer::CombinedMVAV2JetTagComputer(const edm::ParameterSet
CombinedMVAV2JetTagComputer::~CombinedMVAV2JetTagComputer() {}

void CombinedMVAV2JetTagComputer::initialize(const JetTagComputerRecord &record) {
mvaID.reset(new TMVAEvaluator());

if (useCondDB) {
const GBRWrapperRcd &gbrWrapperRecord = record.getRecord<GBRWrapperRcd>();

edm::ESHandle<GBRForest> gbrForestHandle;
gbrWrapperRecord.get(gbrForestLabel.c_str(), gbrForestHandle);
mvaID = std::make_unique<TMVAEvaluator>();

mvaID->initializeGBRForest(gbrForestHandle.product(), variables, spectators, useAdaBoost);
if (tokens.gbrForest_.isInitialized()) {
mvaID->initializeGBRForest(&record.get(tokens.gbrForest_), variables, spectators, useAdaBoost);
} else {
mvaID->initialize(
"Color:Silent:Error", mvaName, weightFile.fullPath(), variables, spectators, useGBRForest, useAdaBoost);
}
for (auto &name : inputComputerNames) {
edm::ESHandle<JetTagComputer> computerHandle;
record.get(name, computerHandle);
const JetTagComputer *comp = computerHandle.product();
computers.push_back(comp);
computers.reserve(tokens.computers_.size());
for (const auto &token : tokens.computers_) {
computers.push_back(&record.get(token));
}
}

Expand Down
Expand Up @@ -15,6 +15,8 @@

class PromptTrackCountingComputer : public JetTagComputer {
public:
using Tokens = void;

PromptTrackCountingComputer(const edm::ParameterSet& parameters) {
m_nthTrack = parameters.getParameter<int>("nthTrack");
m_ipType = parameters.getParameter<int>("impactParameterType");
Expand Down
Expand Up @@ -13,6 +13,8 @@
template <class Container, class Base>
class TemplatedJetBProbabilityComputer : public JetTagComputer {
public:
using Tokens = void;

typedef reco::IPTagInfo<Container, Base> TagInfo;

TemplatedJetBProbabilityComputer(const edm::ParameterSet& parameters) {
Expand Down
Expand Up @@ -14,6 +14,8 @@
template <class Container, class Base>
class TemplatedJetProbabilityComputer : public JetTagComputer {
public:
using Tokens = void;

typedef reco::IPTagInfo<Container, Base> TagInfo;

TemplatedJetProbabilityComputer(const edm::ParameterSet& parameters) {
Expand Down
Expand Up @@ -11,6 +11,8 @@
template <class Container, class Base>
class TemplatedTrackCountingComputer : public JetTagComputer {
public:
using Tokens = void;

typedef reco::IPTagInfo<Container, Base> TagInfo;

TemplatedTrackCountingComputer(const edm::ParameterSet& parameters) {
Expand Down
@@ -1,23 +1,29 @@
#ifndef RecoBTag_SecondaryVertex_CandidateBoostedDoubleSecondaryVertexComputer_h
#define RecoBTag_SecondaryVertex_CandidateBoostedDoubleSecondaryVertexComputer_h

#include "FWCore/Framework/interface/ESConsumesCollector.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "CommonTools/MVAUtils/interface/TMVAEvaluator.h"
#include "RecoBTau/JetTagComputer/interface/JetTagComputer.h"
#include "CondFormats/DataRecord/interface/GBRWrapperRcd.h"

class CandidateBoostedDoubleSecondaryVertexComputer : public JetTagComputer {
public:
CandidateBoostedDoubleSecondaryVertexComputer(const edm::ParameterSet &parameters);
struct Tokens {
Tokens(const edm::ParameterSet &parameters, edm::ESConsumesCollector &&cc);
edm::ESGetToken<GBRForest, GBRWrapperRcd> gbrForest_;
};

CandidateBoostedDoubleSecondaryVertexComputer(const edm::ParameterSet &parameters, Tokens tokens);

void initialize(const JetTagComputerRecord &) override;
float discriminator(const TagInfoHelper &tagInfos) const override;

private:
const bool useCondDB_;
const std::string gbrForestLabel_;
const edm::FileInPath weightFile_;
const bool useGBRForest_;
const bool useAdaBoost_;
const Tokens tokens_;

std::unique_ptr<TMVAEvaluator> mvaID;
};
Expand Down
Expand Up @@ -16,6 +16,8 @@
template <class IPTI, class VTX>
class TemplatedSimpleSecondaryVertexComputer : public JetTagComputer {
public:
using Tokens = void;

typedef reco::TemplatedSecondaryVertexTagInfo<IPTI, VTX> TagInfo;

TemplatedSimpleSecondaryVertexComputer(const edm::ParameterSet &parameters)
Expand Down

0 comments on commit d1ea264

Please sign in to comment.