CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Attributes
HLTBTagHarvestingAnalyzer Class Reference

#include <HLTBTagHarvestingAnalyzer.h>

Inheritance diagram for HLTBTagHarvestingAnalyzer:
DQMEDHarvester edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns, edm::one::SharedResources > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

TH1F calculateEfficiency1D (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1 &num, TH1 &den, std::string name)
 
void dqmEndJob (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter) override
 
bool GetNumDenumerators (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string num, std::string den, TH1 *&ptrnum, TH1 *&ptrden, int type)
 
 HLTBTagHarvestingAnalyzer (const edm::ParameterSet &)
 
void mistagrate (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1F *num, TH1F *den, std::string effName)
 
void modulesrate (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1F *num, TH1F *den, std::string effName)
 
 ~HLTBTagHarvestingAnalyzer () override
 
- Public Member Functions inherited from DQMEDHarvester
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void beginRun (edm::Run const &, edm::EventSetup const &) override
 
 DQMEDHarvester ()
 
virtual void dqmEndLuminosityBlock (DQMStore::IBooker &, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &)
 
void endJob () final
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &, edm::EventSetup const &) final
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) override
 
 ~DQMEDHarvester () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns, edm::one::SharedResources >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Types

typedef unsigned int flavour_t
 
typedef std::vector< flavour_tflavours_t
 
enum  HCALSpecials { HEP17, HEP18, HEM17 }
 

Private Attributes

std::map< std::string, MonitorElement * > H1_
 
std::map< HLTBTagHarvestingAnalyzer::HCALSpecials, std::string > HCALSpecialsNames
 
std::vector< std::string > hltPathNames_
 
std::vector< std::string > m_histoName
 
std::vector< flavours_tm_mcFlavours
 
std::vector< std::string > m_mcLabels
 
bool m_mcMatching
 
double m_minTag
 
std::string mainFolder_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
- Protected Attributes inherited from DQMEDHarvester
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Code used to produce DQM validation plots for b-tag at HLT. This class read the plots producted by HLTBTagPerformanceAnalyzer and make plots of: b-tag efficiency vs discr, b-tag efficiency vs jet pt, b-tag efficiency vs mistag rate

Definition at line 27 of file HLTBTagHarvestingAnalyzer.h.

Member Typedef Documentation

typedef unsigned int HLTBTagHarvestingAnalyzer::flavour_t
private

Definition at line 49 of file HLTBTagHarvestingAnalyzer.h.

typedef std::vector<flavour_t> HLTBTagHarvestingAnalyzer::flavours_t
private

Definition at line 50 of file HLTBTagHarvestingAnalyzer.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

HLTBTagHarvestingAnalyzer::HLTBTagHarvestingAnalyzer ( const edm::ParameterSet iConfig)
explicit

Definition at line 3 of file HLTBTagHarvestingAnalyzer.cc.

References edm::ParameterSet::getParameter(), HCALSpecialsNames, HEM17, HEP17, HEP18, hltPathNames_, m_histoName, m_mcLabels, m_minTag, mainFolder_, CaloTowersParam_cfi::mc, and AlCaHLTBitMon_QueryRunRegistry::string.

3  {
4  // getParameter
5  mainFolder_ = iConfig.getParameter<std::string>("mainFolder");
6  hltPathNames_ = iConfig.getParameter<std::vector<std::string>>("HLTPathNames");
7  edm::ParameterSet mc = iConfig.getParameter<edm::ParameterSet>("mcFlavours");
8  m_mcLabels = mc.getParameterNamesForType<std::vector<unsigned int>>();
9  m_histoName = iConfig.getParameter<std::vector<std::string>>("histoName");
10  m_minTag = iConfig.getParameter<double>("minTag");
11 
12  HCALSpecialsNames[HEP17] = "HEP17";
13  HCALSpecialsNames[HEP18] = "HEP18";
14  HCALSpecialsNames[HEM17] = "HEM17";
15 }
T getParameter(std::string const &) const
std::map< HLTBTagHarvestingAnalyzer::HCALSpecials, std::string > HCALSpecialsNames
std::vector< std::string > m_histoName
std::vector< std::string > m_mcLabels
std::vector< std::string > hltPathNames_
HLTBTagHarvestingAnalyzer::~HLTBTagHarvestingAnalyzer ( )
override

Definition at line 17 of file HLTBTagHarvestingAnalyzer.cc.

17 {}

Member Function Documentation

TH1F HLTBTagHarvestingAnalyzer::calculateEfficiency1D ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
TH1 &  num,
TH1 &  den,
std::string  name 
)

Definition at line 340 of file HLTBTagHarvestingAnalyzer.cc.

References DQMStore::IBooker::book1D(), edmIntegrityCheck::d, DEFINE_FWK_MODULE, MillePedeFileConverter_cfg::e, mps_fire::i, SiStripPI::max, gen::n, and MonitorElement::setEfficiencyFlag().

Referenced by dqmEndJob().

341  {
342  // calculate the efficiency as num/den ratio
343  TH1F eff;
344  if (num.GetXaxis()->GetXbins()->GetSize() == 0) {
345  eff = TH1F(effName.c_str(),
346  effName.c_str(),
347  num.GetXaxis()->GetNbins(),
348  num.GetXaxis()->GetXmin(),
349  num.GetXaxis()->GetXmax());
350  } else {
351  eff = TH1F(effName.c_str(), effName.c_str(), num.GetXaxis()->GetNbins(), num.GetXaxis()->GetXbins()->GetArray());
352  }
353  eff.SetTitle(effName.c_str());
354  eff.SetXTitle(num.GetXaxis()->GetTitle());
355  eff.SetYTitle("Efficiency");
356  eff.SetOption("PE");
357  eff.SetLineColor(2);
358  eff.SetLineWidth(2);
359  eff.SetMarkerStyle(20);
360  eff.SetMarkerSize(0.8);
361  eff.GetYaxis()->SetRangeUser(-0.001, 1.001);
362  for (int i = 1; i <= num.GetNbinsX(); i++) {
363  double d, n, err;
364  d = den.GetBinContent(i);
365  n = num.GetBinContent(i);
366  double e;
367  if (d != 0) {
368  e = n / d;
369  err = std::max(e - TEfficiency::ClopperPearson(d, n, 0.683, false),
370  TEfficiency::ClopperPearson(d, n, 0.683, true) - e);
371  // err = sqrt(e*(1-e)/d); //from binomial standard deviation
372  } else {
373  e = 0;
374  err = 0;
375  }
376  eff.SetBinContent(i, e);
377  eff.SetBinError(i, err);
378  }
379 
380  MonitorElement *me;
381  me = ibooker.book1D(effName, &eff);
382  me->setEfficiencyFlag();
383 
384  return eff;
385 }
void setEfficiencyFlag()
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
void HLTBTagHarvestingAnalyzer::dqmEndJob ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter 
)
overridevirtual

save efficiency_vs_disc_HEP17 / efficiency_vs_disc_HEM17 plots

for mc labels

save mistagrate vs b-eff plots

save mistagrate vs b-eff plots for modules (HEP17 etc.)

save mistagrate_HEP17 / mistagrate_HEM17 plots

for triggers

Implements DQMEDHarvester.

Definition at line 21 of file HLTBTagHarvestingAnalyzer.cc.

References calculateEfficiency1D(), GenHFHadronMatcher_cff::flavour, GetNumDenumerators(), HCALSpecialsNames, HEM17, HEP17, hltPathNames_, mps_fire::i, label, edm::errors::LogicError, m_histoName, m_mcLabels, mainFolder_, mistagrate(), modulesrate(), pileupDistInMC::num, DQMStore::IBooker::setCurrentFolder(), and AlCaHLTBitMon_QueryRunRegistry::string.

21  {
22  using namespace edm;
24  std::string dqmFolder_hist;
25 
26  // for each hltPath and for each flavour, do the "b-tag efficiency vs jet pt"
27  // and "b-tag efficiency vs mistag rate" plots
28  for (unsigned int ind = 0; ind < hltPathNames_.size(); ind++) {
29  dqmFolder_hist = Form("%s/Discriminator/%s", mainFolder_.c_str(), hltPathNames_[ind].c_str());
30  std::string effDir = Form("%s/Discriminator/%s/efficiency", mainFolder_.c_str(), hltPathNames_[ind].c_str());
31  std::string relationsDir = Form("%s/Discriminator/%s/HEP17_HEM17", mainFolder_.c_str(), hltPathNames_[ind].c_str());
32  ibooker.setCurrentFolder(effDir);
33  TH1 *den = nullptr;
34  TH1 *num = nullptr;
35  std::map<std::string, TH1F> effics;
36  std::map<std::string, bool> efficsOK;
37  std::map<std::string, std::map<HCALSpecials, TH1F>> efficsmod;
38  std::map<std::string, std::map<HCALSpecials, bool>> efficsmodOK;
39  for (unsigned int i = 0; i < m_mcLabels.size(); ++i) {
40  bool isOK = false;
41  std::string label = m_histoName.at(ind) + "__"; //"JetTag__";
43  label += flavour;
44  isOK =
45  GetNumDenumerators(ibooker, igetter, dqmFolder_hist + "/" + label, dqmFolder_hist + "/" + label, num, den, 0);
46  if (isOK) {
47  // do the 'b-tag efficiency vs discr' plot
48  effics[flavour] = calculateEfficiency1D(ibooker, igetter, *num, *den, label + "_efficiency_vs_disc");
49  efficsOK[flavour] = isOK;
50  }
51  // for modules (HEP17 etc.)
52  for (auto j : HCALSpecialsNames) {
53  ibooker.setCurrentFolder(dqmFolder_hist + "/" + j.second + "/efficiency");
54  isOK = GetNumDenumerators(ibooker,
55  igetter,
56  dqmFolder_hist + "/" + j.second + "/" + label,
57  dqmFolder_hist + "/" + j.second + "/" + label,
58  num,
59  den,
60  0);
61  if (isOK) {
62  // do the 'b-tag efficiency vs discr' plot
63  efficsmod[flavour][j.first] =
64  calculateEfficiency1D(ibooker, igetter, *num, *den, label + "_efficiency_vs_disc");
65  efficsmodOK[flavour][j.first] = isOK;
66  }
67  }
68  ibooker.setCurrentFolder(effDir);
69  label = m_histoName.at(ind) + "___";
70  std::string labelEta = label;
71  std::string labelPhi = label;
72  label += flavour + "_disc_pT";
73  labelEta += flavour + "_disc_eta";
74  labelPhi += flavour + "_disc_phi";
75  isOK =
76  GetNumDenumerators(ibooker, igetter, dqmFolder_hist + "/" + label, dqmFolder_hist + "/" + label, num, den, 1);
77  if (isOK) {
78  // do the 'b-tag efficiency vs pT' plot
79  TH1F eff = calculateEfficiency1D(ibooker, igetter, *num, *den, label + "_efficiency_vs_pT");
80  }
81  isOK = GetNumDenumerators(
82  ibooker, igetter, dqmFolder_hist + "/" + labelEta, dqmFolder_hist + "/" + labelEta, num, den, 2);
83  if (isOK) {
84  // do the 'b-tag efficiency vs Eta' plot
85  TH1F eff = calculateEfficiency1D(ibooker, igetter, *num, *den, labelEta + "_efficiency_vs_eta");
86  }
87  isOK = GetNumDenumerators(
88  ibooker, igetter, dqmFolder_hist + "/" + labelPhi, dqmFolder_hist + "/" + labelPhi, num, den, 2);
89  if (isOK) {
90  // do the 'b-tag efficiency vs Phi' plot
91  TH1F eff = calculateEfficiency1D(ibooker, igetter, *num, *den, labelPhi + "_efficiency_vs_phi");
92  }
93 
95  ibooker.setCurrentFolder(relationsDir);
96  if (efficsmodOK[flavour][HEP17] && efficsmodOK[flavour][HEM17])
97  modulesrate(ibooker,
98  igetter,
99  &efficsmod[flavour][HEP17],
100  &efficsmod[flavour][HEM17],
101  m_histoName.at(ind) + "_" + flavour + "_HEP17_HEM17_effs_vs_disc_rate");
102  ibooker.setCurrentFolder(effDir);
103 
104  }
105 
107  if (efficsOK["b"] && efficsOK["c"])
108  mistagrate(ibooker, igetter, &effics["b"], &effics["c"], m_histoName.at(ind) + "_b_c_mistagrate");
109  if (efficsOK["b"] && efficsOK["light"])
110  mistagrate(ibooker, igetter, &effics["b"], &effics["light"], m_histoName.at(ind) + "_b_light_mistagrate");
111  if (efficsOK["b"] && efficsOK["g"])
112  mistagrate(ibooker, igetter, &effics["b"], &effics["g"], m_histoName.at(ind) + "_b_g_mistagrate");
113 
115  for (auto j : HCALSpecialsNames) {
116  ibooker.setCurrentFolder(dqmFolder_hist + "/" + j.second + "/efficiency");
117  if (efficsmodOK["b"][j.first] && efficsmodOK["c"][j.first])
118  mistagrate(ibooker,
119  igetter,
120  &efficsmod["b"][j.first],
121  &efficsmod["c"][j.first],
122  m_histoName.at(ind) + "_b_c_mistagrate");
123  if (efficsmodOK["b"][j.first] && efficsmodOK["light"][j.first])
124  mistagrate(ibooker,
125  igetter,
126  &efficsmod["b"][j.first],
127  &efficsmod["light"][j.first],
128  m_histoName.at(ind) + "_b_light_mistagrate");
129  if (efficsmodOK["b"][j.first] && efficsmodOK["g"][j.first])
130  mistagrate(ibooker,
131  igetter,
132  &efficsmod["b"][j.first],
133  &efficsmod["g"][j.first],
134  m_histoName.at(ind) + "_b_g_mistagrate");
135  }
136 
138  ibooker.setCurrentFolder(relationsDir);
139  bool isOK = false;
140  isOK = GetNumDenumerators(ibooker,
141  igetter,
142  dqmFolder_hist + "/HEP17/efficiency/" + m_histoName.at(ind) + "_b_c_mistagrate",
143  dqmFolder_hist + "/HEM17/efficiency/" + m_histoName.at(ind) + "_b_c_mistagrate",
144  num,
145  den,
146  3);
147  if (isOK)
148  modulesrate(ibooker, igetter, (TH1F *)num, (TH1F *)den, m_histoName.at(ind) + "_HEP17_HEM17_b_c_mistagrate");
149  isOK = GetNumDenumerators(ibooker,
150  igetter,
151  dqmFolder_hist + "/HEP17/efficiency/" + m_histoName.at(ind) + "_b_light_mistagrate",
152  dqmFolder_hist + "/HEM17/efficiency/" + m_histoName.at(ind) + "_b_light_mistagrate",
153  num,
154  den,
155  3);
156  if (isOK)
157  modulesrate(ibooker, igetter, (TH1F *)num, (TH1F *)den, m_histoName.at(ind) + "_HEP17_HEM17_b_light_mistagrate");
158  isOK = GetNumDenumerators(ibooker,
159  igetter,
160  dqmFolder_hist + "/HEP17/efficiency/" + m_histoName.at(ind) + "_b_g_mistagrate",
161  dqmFolder_hist + "/HEM17/efficiency/" + m_histoName.at(ind) + "_b_g_mistagrate",
162  num,
163  den,
164  3);
165  if (isOK)
166  modulesrate(ibooker, igetter, (TH1F *)num, (TH1F *)den, m_histoName.at(ind) + "_HEP17_HEM17_b_g_mistagrate");
167  }
168 }
std::map< HLTBTagHarvestingAnalyzer::HCALSpecials, std::string > HCALSpecialsNames
void modulesrate(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1F *num, TH1F *den, std::string effName)
char const * label
std::vector< std::string > m_histoName
TH1F calculateEfficiency1D(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1 &num, TH1 &den, std::string name)
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
std::vector< std::string > m_mcLabels
bool GetNumDenumerators(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string num, std::string den, TH1 *&ptrnum, TH1 *&ptrden, int type)
std::vector< std::string > hltPathNames_
HLT enums.
void mistagrate(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, TH1F *num, TH1F *den, std::string effName)
bool HLTBTagHarvestingAnalyzer::GetNumDenumerators ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
std::string  num,
std::string  den,
TH1 *&  ptrnum,
TH1 *&  ptrden,
int  type 
)

numerator preparing

denominator preparing

numerator preparing

denominator preparing

Definition at line 170 of file HLTBTagHarvestingAnalyzer.cc.

References DQMStore::IGetter::get(), MonitorElement::getTH1(), MonitorElement::getTH2F(), edm::errors::LogicError, m_minTag, and cms::Exception::raise().

Referenced by dqmEndJob().

176  {
177  using namespace edm;
178  /*
179  possible types:
180  type =0 for eff_vs_discriminator
181  type =1 for eff_vs_pT
182  type =2 for eff_vs_eta or eff_vs_phi
183  type =3 for HEP17 / HEM17 mistagrate relation
184  */
185  MonitorElement *denME = nullptr;
186  MonitorElement *numME = nullptr;
187  denME = igetter.get(den);
188  numME = igetter.get(num);
190 
191  if (denME == nullptr || numME == nullptr) {
192  excp << "Plots not found:\n";
193  if (denME == nullptr)
194  excp << den << "\n";
195  if (numME == nullptr)
196  excp << num << "\n";
197  excp.raise();
198  }
199 
200  if (type == 0) // efficiency_vs_discr: fill "ptrnum" with the cumulative function of
201  // the DQM plots contained in "num" and "ptrden" with a flat function
202  {
203  TH1 *numH1 = numME->getTH1();
204  TH1 *denH1 = denME->getTH1();
205  ptrden = (TH1 *)denH1->Clone("denominator");
206  ptrnum = (TH1 *)numH1->Clone("numerator");
207 
208  ptrnum->SetBinContent(1, numH1->Integral());
209  ptrden->SetBinContent(1, numH1->Integral());
210  for (int j = 2; j <= numH1->GetNbinsX(); j++) {
211  ptrnum->SetBinContent(j, numH1->Integral() - numH1->Integral(1, j - 1));
212  ptrden->SetBinContent(j, numH1->Integral());
213  }
214  }
215 
216  if (type == 1) // efficiency_vs_pT: fill "ptrden" with projection of the plots
217  // contained in "den" and fill "ptrnum" with projection of the
218  // plots contained in "num", having btag>m_minTag
219  {
220  TH2F *numH2 = numME->getTH2F();
221  TH2F *denH2 = denME->getTH2F();
222 
224  TCutG *cutg_num = new TCutG("cutg_num", 4);
225  cutg_num->SetPoint(0, m_minTag, 0);
226  cutg_num->SetPoint(1, m_minTag, 9999);
227  cutg_num->SetPoint(2, 1.1, 9999);
228  cutg_num->SetPoint(3, 1.1, 0);
229  ptrnum = numH2->ProjectionY("numerator", 0, -1, "[cutg_num]");
230 
232  TCutG *cutg_den = new TCutG("cutg_den", 4);
233  cutg_den->SetPoint(0, -10.1, 0);
234  cutg_den->SetPoint(1, -10.1, 9999);
235  cutg_den->SetPoint(2, 1.1, 9999);
236  cutg_den->SetPoint(3, 1.1, 0);
237  ptrden = denH2->ProjectionY("denumerator", 0, -1, "[cutg_den]");
238  delete cutg_num;
239  delete cutg_den;
240  }
241 
242  if (type == 2) // efficiency_vs_eta: fill "ptrden" with projection of the
243  // plots contained in "den" and fill "ptrnum" with projection
244  // of the plots contained in "num", having btag>m_minTag
245  {
246  TH2F *numH2 = numME->getTH2F();
247  TH2F *denH2 = denME->getTH2F();
248 
250  TCutG *cutg_num = new TCutG("cutg_num", 4);
251  cutg_num->SetPoint(0, m_minTag, -10);
252  cutg_num->SetPoint(1, m_minTag, 10);
253  cutg_num->SetPoint(2, 1.1, 10);
254  cutg_num->SetPoint(3, 1.1, -10);
255  ptrnum = numH2->ProjectionY("numerator", 0, -1, "[cutg_num]");
256 
258  TCutG *cutg_den = new TCutG("cutg_den", 4);
259  cutg_den->SetPoint(0, -10.1, -10);
260  cutg_den->SetPoint(1, -10.1, 10);
261  cutg_den->SetPoint(2, 1.1, 10);
262  cutg_den->SetPoint(3, 1.1, -10);
263  ptrden = denH2->ProjectionY("denumerator", 0, -1, "[cutg_den]");
264  delete cutg_num;
265  delete cutg_den;
266  }
267 
268  if (type == 3) // mistagrate HEP17 / HEM17 relation: fill "ptrnum" with HEP17
269  // mistagrate and "ptrden" with HEM17 mistagrate
270  {
271  ptrden = denME->getTH1();
272  ptrnum = numME->getTH1();
273  }
274  return true;
275 }
type
Definition: HCALResponse.h:21
TH1 * getTH1() const
TH2F * getTH2F() const
MonitorElement * get(std::string const &path)
Definition: DQMStore.cc:303
HLT enums.
void HLTBTagHarvestingAnalyzer::mistagrate ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
TH1F *  num,
TH1F *  den,
std::string  effName 
)

Definition at line 277 of file HLTBTagHarvestingAnalyzer.cc.

References DQMStore::IBooker::book1D(), mps_fire::i, and MonitorElement::setEfficiencyFlag().

Referenced by dqmEndJob().

278  {
279  // do the efficiency_vs_mistag_rate plot
280  TH1F *eff;
281  eff = new TH1F(effName.c_str(), effName.c_str(), 100, 0, 1);
282  eff->SetTitle(effName.c_str());
283  eff->SetXTitle("b-effficiency");
284  eff->SetYTitle("mistag rate");
285  eff->SetOption("E");
286  eff->SetLineColor(2);
287  eff->SetLineWidth(2);
288  eff->SetMarkerStyle(20);
289  eff->SetMarkerSize(0.8);
290  eff->GetYaxis()->SetRangeUser(0.001, 1.001);
291  eff->GetXaxis()->SetRangeUser(-0.001, 1.001);
292  eff->SetStats(kFALSE);
293 
294  // for each bin in the discr -> find efficiency and mistagrate -> put them in
295  // a plot
296  for (int i = 1; i <= num->GetNbinsX(); i++) {
297  double beff = num->GetBinContent(i);
298  double miseff = den->GetBinContent(i);
299  double miseffErr = den->GetBinError(i);
300  int binX = eff->GetXaxis()->FindBin(beff);
301  if (eff->GetBinContent(binX) != 0)
302  continue;
303  eff->SetBinContent(binX, miseff);
304  eff->SetBinError(binX, miseffErr);
305  }
306  MonitorElement *me;
307  me = ibooker.book1D(effName, eff);
308  me->setEfficiencyFlag();
309 
310  delete eff;
311  return;
312 }
void setEfficiencyFlag()
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
void HLTBTagHarvestingAnalyzer::modulesrate ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
TH1F *  num,
TH1F *  den,
std::string  effName 
)

Definition at line 314 of file HLTBTagHarvestingAnalyzer.cc.

References DQMStore::IBooker::book1D(), and MonitorElement::setEfficiencyFlag().

Referenced by dqmEndJob().

315  {
316  // do the eff_vs_disc_HEP17 / eff_vs_disc_HEM17 plot
317  TH1F *eff = new TH1F(*num);
318  // eff = new TH1F(effName.c_str(),effName.c_str(),100,0,1);
319  eff->Divide(den);
320  eff->SetTitle(effName.c_str());
321  eff->SetXTitle(num->GetXaxis()->GetTitle());
322  eff->SetYTitle("");
323  eff->SetOption("E");
324  eff->SetLineColor(2);
325  eff->SetLineWidth(2);
326  eff->SetMarkerStyle(20);
327  eff->SetMarkerSize(0.8);
328  eff->GetYaxis()->SetRangeUser(0.001, 2.001);
329  // eff->GetXaxis()->SetRangeUser(-0.001,1.001);
330  eff->SetStats(kFALSE);
331 
332  MonitorElement *me;
333  me = ibooker.book1D(effName, eff);
334  me->setEfficiencyFlag();
335 
336  delete eff;
337  return;
338 }
void setEfficiencyFlag()
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106

Member Data Documentation

std::map<std::string, MonitorElement *> HLTBTagHarvestingAnalyzer::H1_
private

Definition at line 58 of file HLTBTagHarvestingAnalyzer.h.

std::map<HLTBTagHarvestingAnalyzer::HCALSpecials, std::string> HLTBTagHarvestingAnalyzer::HCALSpecialsNames
private

Definition at line 61 of file HLTBTagHarvestingAnalyzer.h.

Referenced by dqmEndJob(), and HLTBTagHarvestingAnalyzer().

std::vector<std::string> HLTBTagHarvestingAnalyzer::hltPathNames_
private

Definition at line 48 of file HLTBTagHarvestingAnalyzer.h.

Referenced by dqmEndJob(), and HLTBTagHarvestingAnalyzer().

std::vector<std::string> HLTBTagHarvestingAnalyzer::m_histoName
private

Definition at line 55 of file HLTBTagHarvestingAnalyzer.h.

Referenced by dqmEndJob(), and HLTBTagHarvestingAnalyzer().

std::vector<flavours_t> HLTBTagHarvestingAnalyzer::m_mcFlavours
private

Definition at line 53 of file HLTBTagHarvestingAnalyzer.h.

std::vector<std::string> HLTBTagHarvestingAnalyzer::m_mcLabels
private

Definition at line 52 of file HLTBTagHarvestingAnalyzer.h.

Referenced by dqmEndJob(), and HLTBTagHarvestingAnalyzer().

bool HLTBTagHarvestingAnalyzer::m_mcMatching
private

Definition at line 54 of file HLTBTagHarvestingAnalyzer.h.

double HLTBTagHarvestingAnalyzer::m_minTag
private

Definition at line 51 of file HLTBTagHarvestingAnalyzer.h.

Referenced by GetNumDenumerators(), and HLTBTagHarvestingAnalyzer().

std::string HLTBTagHarvestingAnalyzer::mainFolder_
private

Definition at line 47 of file HLTBTagHarvestingAnalyzer.h.

Referenced by dqmEndJob(), and HLTBTagHarvestingAnalyzer().