40 src_(consumes<
std::vector<
pat::
Jet>>(iConfig.getParameter<
edm::InputTag>(
"src"))),
51 produces<nanoaod::FlatTable>();
57 for (
unsigned int iDisc = 0; iDisc <
nDiscs; ++iDisc) {
81 opname=
"discriminator reshaping";
100 std::vector<std::string> branches;
101 while (std::getline(dName, branch,
'+')) {
102 branches.push_back(branch);
111 std::vector<std::string> branches;
112 branches.push_back(
"");
116 edm::LogWarning(
"BTagSFProducer") <<
"Skipped loading BTagCalibration for "+
discShortNames_[iDisc]+
" as it was marked as unavailable in the configuration file. Event weights will not be stored.\n" << std::endl;
127 desc.
add<
std::string>(
"cut")->setComment(
"minimum pT and maximum eta cuts for jets");
128 desc.
add<std::vector<std::string>>(
"discNames")->setComment(
"name of b-tag discriminator branch in MiniAOD");
129 desc.
add<std::vector<std::string>>(
"discShortNames")->setComment(
"common name of discriminator");
130 desc.
add<std::vector<std::string>>(
"weightFiles")->setComment(
"path to the .csv file containing the SFs");
131 desc.
add<std::vector<std::string>>(
"operatingPoints")->setComment(
"loose = 0, medium = 1, tight = 2, disriminator reshaping = 3");
132 desc.
add<std::vector<std::string>>(
"measurementTypesB")->setComment(
"e.g. \"ttbar\", \"comb\", \"incl\", \"iterativefit\" for b jets");
133 desc.
add<std::vector<std::string>>(
"measurementTypesC")->setComment(
"e.g. \"ttbar\", \"comb\", \"incl\", \"iterativefit\" for c jets");
134 desc.
add<std::vector<std::string>>(
"measurementTypesUDSG")->setComment(
"e.g. \"ttbar\", \"comb\", \"incl\", \"iterativefit\" for light jets");
135 desc.
add<std::vector<std::string>>(
"sysTypes")->setComment(
"\"up\", \"central\", \"down\", but arbitrary strings possible, like \"up_generator\" or \"up_jec\"");
136 desc.
addUntracked<
bool>(
"validate",
false)->setComment(
"validate the function expressions in the weightFiles");
138 descriptions.
add(
"BTagWeightTable", desc);
182 auto out = std::make_unique<nanoaod::FlatTable>(1,
"btagWeight",
true);
183 out->setDoc(
"b-tagging event weights");
185 for (
unsigned int iDisc = 0; iDisc <
nDiscs; ++iDisc) {
196 bdisc+=
jet.bDiscriminator(inBranch);
200 flavour=
jet.hadronFlavour();
203 if (fabs(flavour) == 5) {
206 else if (fabs(flavour) == 4) {
T getUntrackedParameter(std::string const &, T const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MVATrainerComputer * calib
#define DEFINE_FWK_MODULE(type)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Analysis-level calorimeter jet class.
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void load(const BTagCalibration &c, BTagEntry::JetFlavor jf, const std::string &measurementType="comb")
std::string fullPath() const