diff --git a/Configuration/StandardSequences/python/Harvesting_cff.py b/Configuration/StandardSequences/python/Harvesting_cff.py
index 318516561d254..3d23b8c52feb7 100644
--- a/Configuration/StandardSequences/python/Harvesting_cff.py
+++ b/Configuration/StandardSequences/python/Harvesting_cff.py
@@ -9,6 +9,7 @@
from Validation.RecoHI.HarvestingHI_cff import *
from Validation.RecoJets.JetPostProcessor_cff import *
from Validation.RecoMET.METPostProcessor_cff import *
+from DQMOffline.RecoB.bTagMiniDQM_cff import *
dqmHarvesting = cms.Path(DQMOffline_SecondStep*DQMOffline_Certification)
@@ -66,5 +67,5 @@
alcaHarvesting = cms.Path()
#alcaHarvesting = cms.Sequence()
-validationHarvestingMiniAOD = cms.Path(JetPostProcessor*METPostProcessorHarvesting*postValidationMiniAOD)
+validationHarvestingMiniAOD = cms.Path(JetPostProcessor*METPostProcessorHarvesting*bTagMiniValidationHarvesting*postValidationMiniAOD)
#validationHarvestingMiniAOD = cms.Sequence(JetPostProcessor*METPostProcessorHarvesting*postValidationMiniAOD)
diff --git a/Configuration/StandardSequences/python/Validation_cff.py b/Configuration/StandardSequences/python/Validation_cff.py
index 1ce85a85ddca9..193c582d9cfc4 100644
--- a/Configuration/StandardSequences/python/Validation_cff.py
+++ b/Configuration/StandardSequences/python/Validation_cff.py
@@ -31,6 +31,7 @@
from Validation.RecoEgamma.photonMiniAODValidationSequence_cff import *
from Validation.RecoEgamma.egammaValidationMiniAOD_cff import *
from Validation.RecoTau.RecoTauValidation_cff import *
+from DQMOffline.RecoB.bTagMiniDQM_cff import *
prevalidationNoHLT = cms.Sequence( cms.SequencePlaceholder("mix") * globalPrevalidation * metPreValidSeq * jetPreValidSeq )
prevalidation = cms.Sequence( cms.SequencePlaceholder("mix") * globalPrevalidation * hltassociation * metPreValidSeq * jetPreValidSeq )
@@ -66,7 +67,7 @@
validationLiteTracking.replace(globalValidation,globalValidationLiteTracking)
validationLiteTracking.remove(condDataValidation)
-validationMiniAOD = cms.Sequence(type0PFMEtCorrectionPFCandToVertexAssociationForValidationMiniAOD * JetValidationMiniAOD * METValidationMiniAOD * tauValidationSequenceMiniAOD)
+validationMiniAOD = cms.Sequence(type0PFMEtCorrectionPFCandToVertexAssociationForValidationMiniAOD * JetValidationMiniAOD * METValidationMiniAOD * tauValidationSequenceMiniAOD * bTagMiniValidationSource)
prevalidation_preprod = cms.Sequence( preprodPrevalidation )
diff --git a/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py b/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py
index f16d0889589ce..17b0fd237ab42 100644
--- a/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py
+++ b/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py
@@ -224,7 +224,8 @@
from PhysicsTools.NanoAOD.nanoDQM_cff import *
from Validation.RecoParticleFlow.DQMForPF_MiniAOD_cff import *
+from DQMOffline.RecoB.bTagMiniDQM_cff import *
-DQMHarvestMiniAOD = cms.Sequence( dataCertificationJetMETSequence * muonQualityTests_miniAOD * DQMHarvestPF )
+DQMHarvestMiniAOD = cms.Sequence( dataCertificationJetMETSequence * muonQualityTests_miniAOD * DQMHarvestPF * bTagMiniDQMHarvesting)
DQMHarvestNanoAOD = cms.Sequence( nanoHarvest )
diff --git a/DQMOffline/Configuration/python/DQMOffline_cff.py b/DQMOffline/Configuration/python/DQMOffline_cff.py
index 70c2b24d6202c..1d2ad39ad424d 100644
--- a/DQMOffline/Configuration/python/DQMOffline_cff.py
+++ b/DQMOffline/Configuration/python/DQMOffline_cff.py
@@ -245,10 +245,11 @@
from Validation.RecoParticleFlow.miniAODDQM_cff import * # On MiniAOD vs RECO
from Validation.RecoParticleFlow.DQMForPF_MiniAOD_cff import * # MiniAOD PF variables
from DQM.TrackingMonitor.tracksDQMMiniAOD_cff import *
+from DQMOffline.RecoB.bTagMiniDQM_cff import *
from DQMOffline.Muon.miniAOD_cff import *
from DQM.Physics.DQMTopMiniAOD_cff import *
-DQMOfflineMiniAOD = cms.Sequence(jetMETDQMOfflineRedoProductsMiniAOD*muonMonitors_miniAOD*MuonMiniAOD*DQMOfflinePF)
+DQMOfflineMiniAOD = cms.Sequence(jetMETDQMOfflineRedoProductsMiniAOD*bTagMiniDQMSource*muonMonitors_miniAOD*MuonMiniAOD*DQMOfflinePF)
#Post sequences are automatically placed in the EndPath by ConfigBuilder if PAT is run.
#miniAOD DQM sequences need to access the filter results.
diff --git a/DQMOffline/RecoB/plugins/BuildFile.xml b/DQMOffline/RecoB/plugins/BuildFile.xml
index a2849b075a367..c43ed279fba3a 100644
--- a/DQMOffline/RecoB/plugins/BuildFile.xml
+++ b/DQMOffline/RecoB/plugins/BuildFile.xml
@@ -6,6 +6,7 @@
+
@@ -13,7 +14,7 @@
-
+
diff --git a/DQMOffline/RecoB/plugins/MiniAODTaggerAnalyzer.cc b/DQMOffline/RecoB/plugins/MiniAODTaggerAnalyzer.cc
new file mode 100644
index 0000000000000..b9e28b7ba2006
--- /dev/null
+++ b/DQMOffline/RecoB/plugins/MiniAODTaggerAnalyzer.cc
@@ -0,0 +1,85 @@
+#include "DQMOffline/RecoB/plugins/MiniAODTaggerAnalyzer.h"
+#include "FWCore/Framework/interface/MakerMacros.h"
+#include "FWCore/Framework/interface/Event.h"
+
+MiniAODTaggerAnalyzer::MiniAODTaggerAnalyzer(const edm::ParameterSet& pSet)
+ : jetToken_(consumes >(pSet.getParameter("JetTag"))),
+ discrParameters_(pSet.getParameter("parameters")),
+
+ folder_(pSet.getParameter("folder")),
+ discrNumerator_(pSet.getParameter("numerator")),
+ discrDenominator_(pSet.getParameter("denominator")),
+
+ mclevel_(pSet.getParameter("MClevel")),
+ doCTagPlots_(pSet.getParameter("CTagPlots")),
+ dodifferentialPlots_(pSet.getParameter("differentialPlots")),
+ discrCut_(pSet.getParameter("discrCut")),
+
+ etaActive_(pSet.getParameter("etaActive")),
+ etaMin_(pSet.getParameter("etaMin")),
+ etaMax_(pSet.getParameter("etaMax")),
+ ptActive_(pSet.getParameter("ptActive")),
+ ptMin_(pSet.getParameter("ptMin")),
+ ptMax_(pSet.getParameter("ptMax"))
+
+{}
+
+MiniAODTaggerAnalyzer::~MiniAODTaggerAnalyzer() {}
+
+void MiniAODTaggerAnalyzer::bookHistograms(DQMStore::IBooker& ibook, edm::Run const& run, edm::EventSetup const& es) {
+ jetTagPlotter_ = std::make_unique(folder_,
+ EtaPtBin(etaActive_, etaMin_, etaMax_, ptActive_, ptMin_, ptMax_),
+ discrParameters_,
+ mclevel_,
+ false,
+ ibook,
+ doCTagPlots_,
+ dodifferentialPlots_,
+ discrCut_);
+}
+
+void MiniAODTaggerAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
+ edm::Handle > jetCollection;
+ iEvent.getByToken(jetToken_, jetCollection);
+
+ // Loop over the pat::Jets
+ for (std::vector::const_iterator jet = jetCollection->begin(); jet != jetCollection->end(); ++jet) {
+ // fill numerator
+ float numerator = 0;
+ for (const auto& discrLabel : discrNumerator_) {
+ numerator += jet->bDiscriminator(discrLabel);
+ }
+
+ // fill denominator
+ float denominator;
+ if (discrDenominator_.empty()) {
+ denominator = 1; // no division performed
+ } else {
+ denominator = 0;
+
+ for (const auto& discrLabel : discrDenominator_) {
+ denominator += jet->bDiscriminator(discrLabel);
+ }
+ }
+
+ const float jec = 1.; // JEC not implemented!
+
+ // only add to histograms when discriminator values are valid
+ if (numerator >= 0 && denominator > 0) {
+ reco::Jet recoJet = *jet;
+ if (jetTagPlotter_->etaPtBin().inBin(recoJet, jec)) {
+ jetTagPlotter_->analyzeTag(recoJet, jec, numerator / denominator, jet->partonFlavour());
+ }
+ }
+ }
+
+ // fill JetMultiplicity
+ if (mclevel_ > 0) {
+ jetTagPlotter_->analyzeTag(1.);
+ } else {
+ jetTagPlotter_->analyzeTag();
+ }
+}
+
+//define this as a plug-in
+DEFINE_FWK_MODULE(MiniAODTaggerAnalyzer);
diff --git a/DQMOffline/RecoB/plugins/MiniAODTaggerAnalyzer.h b/DQMOffline/RecoB/plugins/MiniAODTaggerAnalyzer.h
new file mode 100644
index 0000000000000..a39be8262e530
--- /dev/null
+++ b/DQMOffline/RecoB/plugins/MiniAODTaggerAnalyzer.h
@@ -0,0 +1,49 @@
+#ifndef MiniAODTaggerAnalyzer_H
+#define MiniAODTaggerAnalyzer_H
+
+#include "FWCore/Framework/interface/Frameworkfwd.h"
+#include "DQMServices/Core/interface/DQMEDAnalyzer.h"
+#include "DataFormats/PatCandidates/interface/Jet.h"
+#include "DQMOffline/RecoB/interface/JetTagPlotter.h"
+
+/** \class MiniAODTaggerAnalyzer
+ *
+ * Tagger analyzer to run on MiniAOD
+ *
+ */
+
+class MiniAODTaggerAnalyzer : public DQMEDAnalyzer {
+public:
+ explicit MiniAODTaggerAnalyzer(const edm::ParameterSet& pSet);
+ ~MiniAODTaggerAnalyzer() override;
+
+ void analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) override;
+
+private:
+ void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
+ typedef std::vector vstring;
+
+ // using JetTagPlotter object for all the hard work ;)
+ std::unique_ptr jetTagPlotter_;
+
+ const edm::EDGetTokenT > jetToken_;
+ const edm::ParameterSet discrParameters_;
+
+ const std::string folder_;
+ const vstring discrNumerator_;
+ const vstring discrDenominator_;
+
+ const int mclevel_;
+ const bool doCTagPlots_;
+ const bool dodifferentialPlots_;
+ const double discrCut_;
+
+ const bool etaActive_;
+ const double etaMin_;
+ const double etaMax_;
+ const bool ptActive_;
+ const double ptMin_;
+ const double ptMax_;
+};
+
+#endif
diff --git a/DQMOffline/RecoB/plugins/MiniAODTaggerHarvester.cc b/DQMOffline/RecoB/plugins/MiniAODTaggerHarvester.cc
new file mode 100644
index 0000000000000..df18933121786
--- /dev/null
+++ b/DQMOffline/RecoB/plugins/MiniAODTaggerHarvester.cc
@@ -0,0 +1,40 @@
+#include "DQMOffline/RecoB/plugins/MiniAODTaggerHarvester.h"
+#include "FWCore/Framework/interface/MakerMacros.h"
+#include "FWCore/Framework/interface/Event.h"
+
+MiniAODTaggerHarvester::MiniAODTaggerHarvester(const edm::ParameterSet& pSet)
+ : folder_(pSet.getParameter("folder")),
+ discrParameters_(pSet.getParameter("parameters")),
+
+ mclevel_(pSet.getParameter("MClevel")),
+ doCTagPlots_(pSet.getParameter("CTagPlots")),
+ dodifferentialPlots_(pSet.getParameter("differentialPlots")),
+ discrCut_(pSet.getParameter("discrCut")),
+
+ etaActive_(pSet.getParameter("etaActive")),
+ etaMin_(pSet.getParameter("etaMin")),
+ etaMax_(pSet.getParameter("etaMax")),
+ ptActive_(pSet.getParameter("ptActive")),
+ ptMin_(pSet.getParameter("ptMin")),
+ ptMax_(pSet.getParameter("ptMax"))
+
+{}
+
+MiniAODTaggerHarvester::~MiniAODTaggerHarvester() {}
+
+void MiniAODTaggerHarvester::dqmEndJob(DQMStore::IBooker& ibook, DQMStore::IGetter& iget) {
+ jetTagPlotter_ = std::make_unique(folder_,
+ EtaPtBin(etaActive_, etaMin_, etaMax_, ptActive_, ptMin_, ptMax_),
+ discrParameters_,
+ mclevel_,
+ true,
+ ibook,
+ doCTagPlots_,
+ dodifferentialPlots_,
+ discrCut_);
+
+ jetTagPlotter_->finalize(ibook, iget);
+}
+
+//define this as a plug-in
+DEFINE_FWK_MODULE(MiniAODTaggerHarvester);
diff --git a/DQMOffline/RecoB/plugins/MiniAODTaggerHarvester.h b/DQMOffline/RecoB/plugins/MiniAODTaggerHarvester.h
new file mode 100644
index 0000000000000..de535377473e9
--- /dev/null
+++ b/DQMOffline/RecoB/plugins/MiniAODTaggerHarvester.h
@@ -0,0 +1,40 @@
+#ifndef MiniAODTaggerHarvester_H
+#define MiniAODTaggerHarvester_H
+
+#include "FWCore/Framework/interface/Frameworkfwd.h"
+#include "DQMServices/Core/interface/DQMEDHarvester.h"
+#include "DQMOffline/RecoB/interface/JetTagPlotter.h"
+
+/** \class MiniAODTaggerHarvester
+ *
+ * Tagger harvester to run on MiniAOD
+ *
+ */
+
+class MiniAODTaggerHarvester : public DQMEDHarvester {
+public:
+ explicit MiniAODTaggerHarvester(const edm::ParameterSet& pSet);
+ ~MiniAODTaggerHarvester() override;
+
+private:
+ void dqmEndJob(DQMStore::IBooker&, DQMStore::IGetter&) override;
+
+ std::unique_ptr jetTagPlotter_;
+
+ const std::string folder_;
+ const edm::ParameterSet discrParameters_;
+
+ const int mclevel_;
+ const bool doCTagPlots_;
+ const bool dodifferentialPlots_;
+ const double discrCut_;
+
+ const bool etaActive_;
+ const double etaMin_;
+ const double etaMax_;
+ const bool ptActive_;
+ const double ptMin_;
+ const double ptMax_;
+};
+
+#endif
diff --git a/DQMOffline/RecoB/python/bTagCommon_cff.py b/DQMOffline/RecoB/python/bTagCommon_cff.py
index 109cbd6ab014f..84dee731be624 100644
--- a/DQMOffline/RecoB/python/bTagCommon_cff.py
+++ b/DQMOffline/RecoB/python/bTagCommon_cff.py
@@ -50,29 +50,5 @@
folder = cms.string("JP")
),
- cms.PSet(
- bTagGenericAnalysisBlock,
- label = cms.InputTag("pfDeepCSVDiscriminatorsJetTags:BvsAll"),
- folder = cms.string("deepCSV_BvsAll"),
- differentialPlots = cms.bool(True),
- discrCut = cms.double(0.1522)
- ),
- cms.PSet(
- cTagGenericAnalysisBlock,
- label = cms.InputTag("pfDeepCSVDiscriminatorsJetTags:CvsL"),
- folder = cms.string("deepCSV_CvsL"),
- doCTagPlots = cms.bool(True),
- differentialPlots = cms.bool(True),
- discrCut = cms.double(0.15)
- ),
- cms.PSet(
- cTagGenericAnalysisBlock,
- label = cms.InputTag("pfDeepCSVDiscriminatorsJetTags:CvsB"),
- folder = cms.string("deepCSV_CvsB"),
- doCTagPlots = cms.bool(True),
- differentialPlots = cms.bool(True),
- discrCut = cms.double(0.28)
- ),
-
)
)
diff --git a/DQMOffline/RecoB/python/bTagMiniDQMDeepCSV.py b/DQMOffline/RecoB/python/bTagMiniDQMDeepCSV.py
new file mode 100644
index 0000000000000..4b4aa01dbd327
--- /dev/null
+++ b/DQMOffline/RecoB/python/bTagMiniDQMDeepCSV.py
@@ -0,0 +1,55 @@
+import FWCore.ParameterSet.Config as cms
+
+from DQMOffline.RecoB.bTagGenericAnalysis_cff import bTagGenericAnalysisBlock
+from DQMOffline.RecoB.cTagGenericAnalysis_cff import cTagGenericAnalysisBlock
+
+
+# recommendation for UL18: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL18
+deepCSVWP = {
+ 'BvsAll': 0.1208, # loose
+ 'CvsL': 0.153, # medium
+ 'CvsB': 0.363, # medium
+}
+
+
+DeepCSVDiscriminators = {
+ 'BvsAll': cms.PSet(
+ bTagGenericAnalysisBlock,
+
+ folder = cms.string('DeepCSV_BvsAll'),
+ CTagPlots = cms.bool(False),
+ discrCut = cms.double(deepCSVWP['BvsAll']),
+ numerator = cms.vstring(
+ 'pfDeepCSVJetTags:probb',
+ 'pfDeepCSVJetTags:probbb',
+ ),
+ denominator = cms.vstring(),
+ ),
+
+ 'CvsL': cms.PSet(
+ cTagGenericAnalysisBlock,
+
+ folder = cms.string('DeepCSV_CvsL'),
+ CTagPlots = cms.bool(True),
+ discrCut = cms.double(deepCSVWP['CvsL']),
+ numerator = cms.vstring('pfDeepCSVJetTags:probc'),
+ denominator = cms.vstring(
+ 'pfDeepCSVJetTags:probc',
+ 'pfDeepCSVJetTags:probudsg',
+ ),
+ ),
+
+ 'CvsB': cms.PSet(
+ cTagGenericAnalysisBlock,
+
+ folder = cms.string('DeepCSV_CvsB'),
+ CTagPlots = cms.bool(True),
+ discrCut = cms.double(deepCSVWP['CvsB']),
+ numerator = cms.vstring('pfDeepCSVJetTags:probc'),
+ denominator = cms.vstring(
+ 'pfDeepCSVJetTags:probc',
+ 'pfDeepCSVJetTags:probb',
+ 'pfDeepCSVJetTags:probbb',
+ ),
+ ),
+}
diff --git a/DQMOffline/RecoB/python/bTagMiniDQMDeepFlavour.py b/DQMOffline/RecoB/python/bTagMiniDQMDeepFlavour.py
new file mode 100644
index 0000000000000..59d29ef737a8f
--- /dev/null
+++ b/DQMOffline/RecoB/python/bTagMiniDQMDeepFlavour.py
@@ -0,0 +1,58 @@
+import FWCore.ParameterSet.Config as cms
+
+from DQMOffline.RecoB.bTagGenericAnalysis_cff import bTagGenericAnalysisBlock
+from DQMOffline.RecoB.cTagGenericAnalysis_cff import cTagGenericAnalysisBlock
+
+
+# recommendation for UL18: https://twiki.cern.ch/twiki/bin/view/CMS/BtagRecommendation106XUL18
+deepFlavourWP = {
+ 'BvsAll': 0.0490, # loose
+ 'CvsL': 0.099, # medium
+ 'CvsB': 0.325, # medium
+}
+
+
+DeepFlavourDiscriminators = {
+ 'BvsAll': cms.PSet(
+ bTagGenericAnalysisBlock,
+
+ folder = cms.string('DeepFlavour_BvsAll'),
+ CTagPlots = cms.bool(False),
+ discrCut = cms.double(deepFlavourWP['BvsAll']),
+ numerator = cms.vstring(
+ 'pfDeepFlavourJetTags:probb',
+ 'pfDeepFlavourJetTags:probbb',
+ 'pfDeepFlavourJetTags:problepb',
+ ),
+ denominator = cms.vstring(),
+ ),
+
+ 'CvsL': cms.PSet(
+ cTagGenericAnalysisBlock,
+
+ folder = cms.string('DeepFlavour_CvsL'),
+ CTagPlots = cms.bool(True),
+ discrCut = cms.double(deepFlavourWP['CvsL']),
+ numerator = cms.vstring('pfDeepFlavourJetTags:probc'),
+ denominator = cms.vstring(
+ 'pfDeepFlavourJetTags:probc',
+ 'pfDeepFlavourJetTags:probuds',
+ 'pfDeepFlavourJetTags:probg',
+ ),
+ ),
+
+ 'CvsB': cms.PSet(
+ cTagGenericAnalysisBlock,
+
+ folder = cms.string('DeepFlavour_CvsB'),
+ CTagPlots = cms.bool(True),
+ discrCut = cms.double(deepFlavourWP['CvsB']),
+ numerator = cms.vstring('pfDeepFlavourJetTags:probc'),
+ denominator = cms.vstring(
+ 'pfDeepFlavourJetTags:probc',
+ 'pfDeepFlavourJetTags:probb',
+ 'pfDeepFlavourJetTags:probbb',
+ 'pfDeepFlavourJetTags:problepb',
+ ),
+ ),
+}
diff --git a/DQMOffline/RecoB/python/bTagMiniDQM_cff.py b/DQMOffline/RecoB/python/bTagMiniDQM_cff.py
new file mode 100644
index 0000000000000..f5f96ca1caa7a
--- /dev/null
+++ b/DQMOffline/RecoB/python/bTagMiniDQM_cff.py
@@ -0,0 +1,96 @@
+import FWCore.ParameterSet.Config as cms
+from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
+from DQMServices.Core.DQMEDHarvester import DQMEDHarvester
+
+from DQMOffline.RecoB.bTagMiniDQMDeepFlavour import *
+from DQMOffline.RecoB.bTagMiniDQMDeepCSV import *
+
+
+bTagMiniDQMGlobal = cms.PSet(
+ JetTag = cms.InputTag('slimmedJets'),
+ MClevel = cms.int32(0),
+ differentialPlots = cms.bool(True),
+
+ ptActive = cms.bool(False),
+ ptMin = cms.double(30.),
+ ptMax = cms.double(40000.),
+)
+
+
+# Eta regions
+Etaregions = {
+ 'Global': cms.PSet(
+ etaActive = cms.bool(False),
+ etaMin = cms.double(0.),
+ etaMax = cms.double(2.5),
+ ),
+
+ 'Barrel': cms.PSet(
+ etaActive = cms.bool(True),
+ etaMin = cms.double(0.),
+ etaMax = cms.double(1.4),
+ ),
+
+ 'Endcap': cms.PSet(
+ etaActive = cms.bool(True),
+ etaMin = cms.double(1.4),
+ etaMax = cms.double(2.5),
+ ),
+}
+
+
+def addSequences(Analyzer, Harvester, discriminators, regions, globalPSet, label='bTag'):
+ for discr in discriminators.keys():
+ for region in regions.keys():
+ name = label + discr + region
+
+ globals()[name + 'Analyzer'] = DQMEDAnalyzer('MiniAODTaggerAnalyzer', cms.PSet(globalPSet, discriminators[discr], regions[region]))
+ globals()[name + 'Harvester'] = DQMEDHarvester('MiniAODTaggerHarvester', cms.PSet(globalPSet, discriminators[discr], regions[region]))
+
+ Analyzer.insert(-1, globals()[name + 'Analyzer'])
+ Harvester.insert(-1, globals()[name + 'Harvester'])
+
+
+
+bTagMiniDQMSource = cms.Sequence()
+bTagMiniDQMHarvesting = cms.Sequence()
+
+addSequences(bTagMiniDQMSource,
+ bTagMiniDQMHarvesting,
+ discriminators=DeepFlavourDiscriminators,
+ regions=Etaregions,
+ globalPSet=bTagMiniDQMGlobal,
+ label='bTagDeepFlavourDQM')
+
+addSequences(bTagMiniDQMSource,
+ bTagMiniDQMHarvesting,
+ discriminators=DeepCSVDiscriminators,
+ regions=Etaregions,
+ globalPSet=bTagMiniDQMGlobal,
+ label='bTagDeepCSVDQM')
+
+
+
+# Validation addSequences
+
+bTagMiniValidationGlobal = bTagMiniDQMGlobal.clone(
+ MClevel = cms.int32(1) # produce flavour plots for b, c ,light (dusg)
+)
+
+bTagMiniValidationSource = cms.Sequence()
+bTagMiniValidationHarvesting = cms.Sequence()
+
+
+addSequences(bTagMiniValidationSource,
+ bTagMiniValidationHarvesting,
+ discriminators=DeepFlavourDiscriminators,
+ regions={'Global': Etaregions['Global']}, # only for global Eta range
+ globalPSet=bTagMiniValidationGlobal,
+ label='bTagDeepFlavourValidation')
+
+addSequences(bTagMiniValidationSource,
+ bTagMiniValidationHarvesting,
+ discriminators=DeepCSVDiscriminators,
+ regions={'Global': Etaregions['Global']}, # only for global Eta range
+ globalPSet=bTagMiniValidationGlobal,
+ label='bTagDeepCSVValidation')
diff --git a/DQMOffline/RecoB/python/dqmAnalyzer_cff.py b/DQMOffline/RecoB/python/dqmAnalyzer_cff.py
index 732f4db6329e9..379fa3011951d 100644
--- a/DQMOffline/RecoB/python/dqmAnalyzer_cff.py
+++ b/DQMOffline/RecoB/python/dqmAnalyzer_cff.py
@@ -1,15 +1,12 @@
import FWCore.ParameterSet.Config as cms
-from RecoBTag.Combined.pfDeepCSVDiscriminatorsJetTags_cfi import pfDeepCSVDiscriminatorsJetTags
-
-
######### DATA ############
from DQMOffline.RecoB.bTagAnalysisData_cfi import *
bTagAnalysis.ptRanges = cms.vdouble(0.0)
bTagAnalysis.doJetID = True
bTagAnalysis.doJEC = True
#Residual correction will be added inside the c++ code only for data (checking the presence of genParticles collection), not explicit here as this sequence also ran on MC FullSim
-bTagPlotsDATA = cms.Sequence(pfDeepCSVDiscriminatorsJetTags * bTagAnalysis)
+bTagPlotsDATA = cms.Sequence(bTagAnalysis)
## customizations for the pp_on_AA eras
from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
@@ -56,7 +53,7 @@
bTagValidation.doJEC = True
bTagValidation.genJetsMatched = cms.InputTag("newpatJetGenJetMatch")
#to run on fastsim
-prebTagSequenceMC = cms.Sequence(ak4GenJetsForPUid*newpatJetGenJetMatch*selectedHadronsAndPartons*myak4JetFlavourInfos*pfDeepCSVDiscriminatorsJetTags)
+prebTagSequenceMC = cms.Sequence(ak4GenJetsForPUid*newpatJetGenJetMatch*selectedHadronsAndPartons*myak4JetFlavourInfos)
bTagPlotsMC = cms.Sequence(bTagValidation)
## customizations for the pp_on_AA eras