CMS 3D CMS Logo

PhotonOfflineClient.cc
Go to the documentation of this file.
1 #include <iostream>
2 //
3 
5 
6 //#define TWOPI 6.283185308
7 //
8 
19 using namespace std;
20 using std::cout;
21 
23  //dbe_ = 0;
24  //dbe_ = edm::Service<DQMStore>().operator->();
25  // dbe_->setVerbose(0);
26  parameters_ = pset;
27 
28  analyzerName_ = pset.getParameter<string>("analyzerName");
29  cutStep_ = pset.getParameter<double>("cutStep");
30  numberOfSteps_ = pset.getParameter<int>("numberOfSteps");
31 
32  etMin = pset.getParameter<double>("etMin");
33  etMax = pset.getParameter<double>("etMax");
34  etBin = pset.getParameter<int>("etBin");
35  etaMin = pset.getParameter<double>("etaMin");
36  etaMax = pset.getParameter<double>("etaMax");
37  etaBin = pset.getParameter<int>("etaBin");
38  phiMin = pset.getParameter<double>("phiMin");
39  phiMax = pset.getParameter<double>("phiMax");
40  phiBin = pset.getParameter<int>("phiBin");
41 
42  standAlone_ = pset.getParameter<bool>("standAlone");
43  batch_ = pset.getParameter<bool>("batch");
44  excludeBkgHistos_ = pset.getParameter<bool>("excludeBkgHistos");
45 
46  outputFileName_ = pset.getParameter<string>("OutputFileName");
47  inputFileName_ = pset.getUntrackedParameter<string>("InputFileName");
48 
49  histo_index_photons_ = 0;
50  histo_index_conversions_ = 0;
51  histo_index_efficiency_ = 0;
52  histo_index_invMass_ = 0;
53 
54  types_.push_back("All");
55  types_.push_back("GoodCandidate");
56  if (!excludeBkgHistos_)
57  types_.push_back("Background");
58 
59  parts_.push_back("AllEcal");
60  parts_.push_back("Barrel");
61  parts_.push_back("Endcaps");
62 }
63 
65 //void PhotonOfflineClient::beginJob(){}
66 //void PhotonOfflineClient::analyze(const edm::Event& e, const edm::EventSetup& esup){}
67 
69  if (!standAlone_)
70  runClient(iBooker, iGetter);
71 }
72 //void PhotonOfflineClient::endRun(const edm::Run& run, const edm::EventSetup& setup){ if(!standAlone_) runClient();}
73 
75  // if(!dbe_) return;
76 
77  //if(batch_) dbe_->open(inputFileName_);
78 
79  //std::cout << " PostProcessing analyzer name " << analyzerName_ << std::endl;
80  if (!iGetter.dirExists("Egamma/" + analyzerName_)) {
81  std::cout << "Folder Egamma/" + analyzerName_ + " does not exist - Abort the efficiency calculation " << std::endl;
82  return;
83  }
84 
85  //find out how many histograms are in the various folders
86  histo_index_photons_ = iGetter.get("Egamma/" + analyzerName_ + "/numberOfHistogramsInPhotonsFolder")->getIntValue();
87  histo_index_conversions_ =
88  iGetter.get("Egamma/" + analyzerName_ + "/numberOfHistogramsInConversionsFolder")->getIntValue();
89  histo_index_efficiency_ =
90  iGetter.get("Egamma/" + analyzerName_ + "/numberOfHistogramsInEfficiencyFolder")->getIntValue();
91  histo_index_invMass_ = iGetter.get("Egamma/" + analyzerName_ + "/numberOfHistogramsInInvMassFolder")->getIntValue();
92 
93  iGetter.setCurrentFolder("Egamma/" + analyzerName_ + "/");
94 
95  string AllPath = "Egamma/" + analyzerName_ + "/AllPhotons/";
96  string IsoPath = "Egamma/" + analyzerName_ + "/GoodCandidatePhotons/";
97  string NonisoPath = "Egamma/" + analyzerName_ + "/BackgroundPhotons/";
98  string EffPath = "Egamma/" + analyzerName_ + "/Efficiencies/";
99 
100  //booking efficiency histograms
101  iGetter.setCurrentFolder(EffPath);
102 
103  p_efficiencyVsEtaLoose_ = bookHisto(iBooker,
104  "EfficiencyVsEtaLoose",
105  "Fraction of Photons passing Loose Isolation vs #eta;#eta",
106  etaBin,
107  etaMin,
108  etaMax);
109  p_efficiencyVsEtLoose_ = bookHisto(iBooker,
110  "EfficiencyVsEtLoose",
111  "Fraction of Photons passing Loose Isolation vs E_{T};E_{T} (GeV)",
112  etBin,
113  etMin,
114  etMax);
115  p_efficiencyVsEtaTight_ = bookHisto(iBooker,
116  "EfficiencyVsEtaTight",
117  "Fraction of Photons passing Tight Isolation vs #eta;#eta",
118  etaBin,
119  etaMin,
120  etaMax);
121  p_efficiencyVsEtTight_ = bookHisto(iBooker,
122  "EfficiencyVsEtTight",
123  "Fraction of Photons passing Tight Isolation vs E_{T};E_{T} (GeV)",
124  etBin,
125  etMin,
126  etMax);
127 
128  p_efficiencyVsEtaHLT_ =
129  bookHisto(iBooker, "EfficiencyVsEtaHLT", "Fraction of Photons firing HLT vs #eta;#eta", etaBin, etaMin, etaMax);
130  p_efficiencyVsEtHLT_ = bookHisto(
131  iBooker, "EfficiencyVsEtHLT", "Fraction of Photons firing HLT vs E_{T};E_{T} (GeV)", etBin, etMin, etMax);
132 
133  p_convFractionVsEtaLoose_ =
134  bookHisto(iBooker,
135  "ConvFractionVsEtaLoose",
136  "Fraction of Loosely Isolated Photons which are matched to two tracks vs #eta;#eta",
137  etaBin,
138  etaMin,
139  etaMax);
140  p_convFractionVsEtLoose_ =
141  bookHisto(iBooker,
142  "ConvFractionVsEtLoose",
143  "Fraction of Loosely Isolated Photons which are matched to two tracks vs E_{T};E_{T} (GeV)",
144  etBin,
145  etMin,
146  etMax);
147  p_convFractionVsEtaTight_ =
148  bookHisto(iBooker,
149  "ConvFractionVsEtaTight",
150  "Fraction of Tightly Isolated Photons which are matched to two tracks vs #eta;#eta",
151  etaBin,
152  etaMin,
153  etaMax);
154  p_convFractionVsEtTight_ =
155  bookHisto(iBooker,
156  "ConvFractionVsEtTight",
157  "Fraction of Tightly Isolated Photons which are matched to two tracks vs E_{T};E_{T} (GeV)",
158  etBin,
159  etMin,
160  etMax);
161 
162  p_vertexReconstructionEfficiencyVsEta_ =
163  bookHisto(iBooker,
164  "VertexReconstructionEfficiencyVsEta",
165  "Fraction of Converted Photons which have a valid vertex vs #eta;#eta",
166  etaBin,
167  etaMin,
168  etaMax);
169 
170  //booking conversion fraction histograms
171  iGetter.setCurrentFolder(AllPath + "Et above 20 GeV/Conversions");
172  book2DHistoVector(iBooker,
173  p_convFractionVsEt_,
174  "1D",
175  "convFractionVsEt",
176  "Fraction of Converted Photons vs E_{T};E_{T} (GeV)",
177  etBin,
178  etMin,
179  etMax);
180  book3DHistoVector(iBooker,
181  p_convFractionVsPhi_,
182  "1D",
183  "convFractionVsPhi",
184  "Fraction of Converted Photons vs #phi;#phi",
185  phiBin,
186  phiMin,
187  phiMax);
188  book2DHistoVector(iBooker,
189  p_convFractionVsEta_,
190  "1D",
191  "convFractionVsEta",
192  "Fraction of Converted Photons vs #eta;#eta",
193  etaBin,
194  etaMin,
195  etaMax);
196 
197  //booking bad channel fraction histograms
198  iGetter.setCurrentFolder(AllPath + "Et above 20 GeV/");
199  book2DHistoVector(iBooker,
200  p_badChannelsFractionVsPhi_,
201  "1D",
202  "badChannelsFractionVsPhi",
203  "Fraction of Photons which have at least one bad channel vs #phi;#phi",
204  phiBin,
205  phiMin,
206  phiMax);
207  book2DHistoVector(iBooker,
208  p_badChannelsFractionVsEta_,
209  "1D",
210  "badChannelsFractionVsEta",
211  "Fraction of Photons which have at least one bad channel vs #eta;#eta",
212  etaBin,
213  etaMin,
214  etaMax);
215  book2DHistoVector(iBooker,
216  p_badChannelsFractionVsEt_,
217  "1D",
218  "badChannelsFractionVsEt",
219  "Fraction of Photons which have at least one bad channel vs E_{T};E_{T} (GeV)",
220  etBin,
221  etMin,
222  etMax);
223 
224  //making efficiency plots
225  MonitorElement* dividend;
228 
229  currentFolder_.str("");
230  currentFolder_ << AllPath << "Et above 20 GeV/";
231 
232  //HLT efficiency plots
233  dividend = retrieveHisto(iGetter, EffPath, "EfficiencyVsEtaHLT");
234  numerator = retrieveHisto(iGetter, EffPath, "phoEtaPostHLT");
235  denominator = retrieveHisto(iGetter, EffPath, "phoEtaPreHLT");
236  dividePlots(dividend, numerator, denominator);
237 
238  dividend = retrieveHisto(iGetter, EffPath, "EfficiencyVsEtHLT");
239  numerator = retrieveHisto(iGetter, EffPath, "phoEtPostHLT");
240  denominator = retrieveHisto(iGetter, EffPath, "phoEtPreHLT");
241  dividePlots(dividend, numerator, denominator);
242 
243  //efficiencies vs Eta
244  denominator = retrieveHisto(iGetter, currentFolder_.str(), "phoEta");
245 
246  dividend = retrieveHisto(iGetter, EffPath, "EfficiencyVsEtaLoose");
247  numerator = retrieveHisto(iGetter, EffPath, "phoEtaLoose");
248  dividePlots(dividend, numerator, denominator);
249 
250  dividend = retrieveHisto(iGetter, EffPath, "EfficiencyVsEtaTight");
251  numerator = retrieveHisto(iGetter, EffPath, "phoEtaTight");
252  dividePlots(dividend, numerator, denominator);
253 
254  //efficiencies vs Et
255  denominator = retrieveHisto(iGetter, currentFolder_.str(), "phoEtAllEcal");
256 
257  dividend = retrieveHisto(iGetter, EffPath, "EfficiencyVsEtLoose");
258  numerator = retrieveHisto(iGetter, EffPath, "phoEtLoose");
259  dividePlots(dividend, numerator, denominator);
260 
261  dividend = retrieveHisto(iGetter, EffPath, "EfficiencyVsEtTight");
262  numerator = retrieveHisto(iGetter, EffPath, "phoEtTight");
263  dividePlots(dividend, numerator, denominator);
264 
265  //conversion fractions vs Eta
266  dividend = retrieveHisto(iGetter, EffPath, "ConvFractionVsEtaLoose");
267  numerator = retrieveHisto(iGetter, EffPath, "convEtaLoose");
268  denominator = retrieveHisto(iGetter, EffPath, "phoEtaLoose");
269  dividePlots(dividend, numerator, denominator);
270 
271  dividend = retrieveHisto(iGetter, EffPath, "ConvFractionVsEtaTight");
272  numerator = retrieveHisto(iGetter, EffPath, "convEtaTight");
273  denominator = retrieveHisto(iGetter, EffPath, "phoEtaTight");
274  dividePlots(dividend, numerator, denominator);
275 
276  //conversion fractions vs Et
277  dividend = retrieveHisto(iGetter, EffPath, "ConvFractionVsEtLoose");
278  numerator = retrieveHisto(iGetter, EffPath, "convEtLoose");
279  denominator = retrieveHisto(iGetter, EffPath, "phoEtLoose");
280  dividePlots(dividend, numerator, denominator);
281 
282  dividend = retrieveHisto(iGetter, EffPath, "ConvFractionVsEtTight");
283  numerator = retrieveHisto(iGetter, EffPath, "convEtTight");
284  denominator = retrieveHisto(iGetter, EffPath, "phoEtTight");
285  dividePlots(dividend, numerator, denominator);
286 
287  //conversion vertex recontruction efficiency
288  dividend = retrieveHisto(iGetter, EffPath, "VertexReconstructionEfficiencyVsEta");
289  numerator = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "phoConvEta");
290  denominator = retrieveHisto(iGetter, EffPath, "phoEtaVertex");
291  dividePlots(dividend, numerator, denominator);
292 
293  iGetter.setCurrentFolder(EffPath);
294 
295  for (uint type = 0; type != types_.size(); ++type) {
296  for (int cut = 0; cut != numberOfSteps_; ++cut) {
297  currentFolder_.str("");
298  currentFolder_ << "Egamma/" + analyzerName_ + "/" << types_[type] << "Photons/Et above " << (cut + 1) * cutStep_
299  << " GeV/";
300 
301  //making bad channel histograms
302 
303  //vs Et
304  dividend = retrieveHisto(iGetter, currentFolder_.str(), "badChannelsFractionVsEt");
305  numerator = retrieveHisto(iGetter, currentFolder_.str(), "phoEtBadChannels");
306  denominator = retrieveHisto(iGetter, currentFolder_.str(), "phoEtAllEcal");
307  dividePlots(dividend, numerator, denominator);
308 
309  //vs eta
310  dividend = retrieveHisto(iGetter, currentFolder_.str(), "badChannelsFractionVsEta");
311  numerator = retrieveHisto(iGetter, currentFolder_.str(), "phoEtaBadChannels");
312  denominator = retrieveHisto(iGetter, currentFolder_.str(), "phoEta");
313  dividePlots(dividend, numerator, denominator);
314 
315  //vs phi
316  dividend = retrieveHisto(iGetter, currentFolder_.str(), "badChannelsFractionVsPhi");
317  numerator = retrieveHisto(iGetter, currentFolder_.str(), "phoPhiBadChannels");
318  denominator = retrieveHisto(iGetter, currentFolder_.str(), "phoPhiAllEcal");
319  dividePlots(dividend, numerator, denominator);
320 
321  //making conversion fraction histograms
322 
323  //vs Et
324  dividend = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "convFractionVsEt");
325  numerator = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "phoConvEtAllEcal");
326  denominator = retrieveHisto(iGetter, currentFolder_.str(), "phoEtAllEcal");
327  dividePlots(dividend, numerator, denominator);
328 
329  //vs eta
330  dividend = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "convFractionVsEta");
331  numerator = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "phoConvEtaForEfficiency");
332  denominator = retrieveHisto(iGetter, currentFolder_.str(), "phoEta");
333  dividePlots(dividend, numerator, denominator);
334 
335  //vs phi
336  dividend = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "convFractionVsPhiAllEcal");
337  numerator = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "phoConvPhiForEfficiencyAllEcal");
338  denominator = retrieveHisto(iGetter, currentFolder_.str(), "phoPhiAllEcal");
339  dividePlots(dividend, numerator, denominator);
340  dividend = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "convFractionVsPhiBarrel");
341  numerator = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "phoConvPhiForEfficiencyBarrel");
342  denominator = retrieveHisto(iGetter, currentFolder_.str(), "phoPhiBarrel");
343  dividePlots(dividend, numerator, denominator);
344  dividend = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "convFractionVsPhiEndcaps");
345  numerator = retrieveHisto(iGetter, currentFolder_.str() + "Conversions/", "phoConvPhiForEfficiencyEndcaps");
346  denominator = retrieveHisto(iGetter, currentFolder_.str(), "phoPhiEndcaps");
347  dividePlots(dividend, numerator, denominator);
348 
349  iGetter.setCurrentFolder(currentFolder_.str() + "Conversions/");
350  }
351  }
352 
353  // if(standAlone_) dbe_->save(outputFileName_);
354  //else if(batch_) dbe_->save(inputFileName_);
355 }
356 
360  double value, err;
361 
362  dividend->setEfficiencyFlag();
363  if (denominator->getEntries() == 0)
364  return;
365 
366  for (int j = 1; j <= numerator->getNbinsX(); j++) {
367  if (denominator->getBinContent(j) != 0) {
368  value = ((double)numerator->getBinContent(j)) / ((double)denominator->getBinContent(j));
369  err = sqrt(value * (1 - value) / ((double)denominator->getBinContent(j)));
370  dividend->setBinContent(j, value);
371  dividend->setBinError(j, err);
372  } else {
373  dividend->setBinContent(j, 0);
374  dividend->setBinError(j, 0);
375  }
376  dividend->setEntries(numerator->getEntries());
377  }
378 }
379 
381  double value, err;
382 
383  dividend->setEfficiencyFlag();
384  for (int j = 1; j <= numerator->getNbinsX(); j++) {
385  if (denominator != 0) {
386  value = ((double)numerator->getBinContent(j)) / denominator;
387  err = sqrt(value * (1 - value) / denominator);
388  dividend->setBinContent(j, value);
389  dividend->setBinError(j, err);
390  } else {
391  dividend->setBinContent(j, 0);
392  }
393  }
394 }
395 
397  DQMStore::IBooker& iBooker, string histoName, string title, int bin, double min, double max) {
398  int histo_index = 0;
399  stringstream histo_number_stream;
400 
401  //determining which folder we're in
402  if (iBooker.pwd().find("InvMass") != string::npos) {
403  histo_index_invMass_++;
404  histo_index = histo_index_invMass_;
405  }
406  if (iBooker.pwd().find("Efficiencies") != string::npos) {
407  histo_index_efficiency_++;
408  histo_index = histo_index_efficiency_;
409  }
410  histo_number_stream << "h_";
411  if (histo_index < 10)
412  histo_number_stream << "0";
413  histo_number_stream << histo_index;
414 
415  return iBooker.book1D(histo_number_stream.str() + "_" + histoName, title, bin, min, max);
416 }
417 
419  std::vector<vector<MonitorElement*> >& temp2DVector,
420  std::string histoType,
423  int xbin,
424  double xmin,
425  double xmax,
426  int ybin,
427  double ymin,
428  double ymax) {
429  int histo_index = 0;
430 
431  vector<MonitorElement*> temp1DVector;
432 
433  //determining which folder we're in
434  bool conversionPlot = false;
435  if (iBooker.pwd().find("Conversions") != string::npos)
436  conversionPlot = true;
437 
438  if (conversionPlot) {
439  histo_index_conversions_++;
440  histo_index = histo_index_conversions_;
441  } else {
442  histo_index_photons_++;
443  histo_index = histo_index_photons_;
444  }
445 
446  stringstream histo_number_stream;
447  histo_number_stream << "h_";
448  if (histo_index < 10)
449  histo_number_stream << "0";
450  histo_number_stream << histo_index << "_";
451 
452  for (int cut = 0; cut != numberOfSteps_; ++cut) { //looping over Et cut values
453 
454  for (uint type = 0; type != types_.size(); ++type) { //looping over isolation type
455 
456  currentFolder_.str("");
457  currentFolder_ << "Egamma/" + analyzerName_ + "/" << types_[type] << "Photons/Et above " << (cut + 1) * cutStep_
458  << " GeV";
459  if (conversionPlot)
460  currentFolder_ << "/Conversions";
461 
462  iBooker.setCurrentFolder(currentFolder_.str());
463 
464  string kind;
465  if (conversionPlot)
466  kind = " Conversions: ";
467  else
468  kind = " Photons: ";
469 
470  if (histoType == "1D")
471  temp1DVector.push_back(
472  iBooker.book1D(histo_number_stream.str() + histoName, types_[type] + kind + title, xbin, xmin, xmax));
473  else if (histoType == "2D")
474  temp1DVector.push_back(iBooker.book2D(
475  histo_number_stream.str() + histoName, types_[type] + kind + title, xbin, xmin, xmax, ybin, ymin, ymax));
476  else if (histoType == "Profile")
477  temp1DVector.push_back(iBooker.bookProfile(
478  histo_number_stream.str() + histoName, types_[type] + kind + title, xbin, xmin, xmax, ybin, ymin, ymax, ""));
479  //else cout << "bad histoType\n";
480  }
481 
482  temp2DVector.push_back(temp1DVector);
483  temp1DVector.clear();
484  }
485 }
486 
488  std::vector<vector<vector<MonitorElement*> > >& temp3DVector,
489  std::string histoType,
492  int xbin,
493  double xmin,
494  double xmax,
495  int ybin,
496  double ymin,
497  double ymax) {
498  int histo_index = 0;
499 
500  vector<MonitorElement*> temp1DVector;
501  vector<vector<MonitorElement*> > temp2DVector;
502 
503  //determining which folder we're in
504  bool conversionPlot = false;
505  if (iBooker.pwd().find("Conversions") != string::npos)
506  conversionPlot = true;
507 
508  if (conversionPlot) {
509  histo_index_conversions_++;
510  histo_index = histo_index_conversions_;
511  } else {
512  histo_index_photons_++;
513  histo_index = histo_index_photons_;
514  }
515 
516  stringstream histo_number_stream;
517  histo_number_stream << "h_";
518  if (histo_index < 10)
519  histo_number_stream << "0";
520  histo_number_stream << histo_index << "_";
521 
522  for (int cut = 0; cut != numberOfSteps_; ++cut) { //looping over Et cut values
523 
524  for (uint type = 0; type != types_.size(); ++type) { //looping over isolation type
525 
526  for (uint part = 0; part != parts_.size(); ++part) { //looping over different parts of the ecal
527 
528  currentFolder_.str("");
529  currentFolder_ << "Egamma/" + analyzerName_ + "/" << types_[type] << "Photons/Et above " << (cut + 1) * cutStep_
530  << " GeV";
531  if (conversionPlot)
532  currentFolder_ << "/Conversions";
533 
534  iBooker.setCurrentFolder(currentFolder_.str());
535 
536  string kind;
537  if (conversionPlot)
538  kind = " Conversions: ";
539  else
540  kind = " Photons: ";
541 
542  if (histoType == "1D")
543  temp1DVector.push_back(iBooker.book1D(histo_number_stream.str() + histoName + parts_[part],
544  types_[type] + kind + parts_[part] + ": " + title,
545  xbin,
546  xmin,
547  xmax));
548  else if (histoType == "2D")
549  temp1DVector.push_back(iBooker.book2D(histo_number_stream.str() + histoName + parts_[part],
550  types_[type] + kind + parts_[part] + ": " + title,
551  xbin,
552  xmin,
553  xmax,
554  ybin,
555  ymin,
556  ymax));
557  else if (histoType == "Profile")
558  temp1DVector.push_back(iBooker.bookProfile(histo_number_stream.str() + histoName + parts_[part],
559  types_[type] + kind + parts_[part] + ": " + title,
560  xbin,
561  xmin,
562  xmax,
563  ybin,
564  ymin,
565  ymax,
566  ""));
567  //else cout << "bad histoType\n";
568  }
569 
570  temp2DVector.push_back(temp1DVector);
571  temp1DVector.clear();
572  }
573 
574  temp3DVector.push_back(temp2DVector);
575  temp2DVector.clear();
576  }
577 }
578 
580  string dir,
581  string name) {
582  //cout << "dir = " << dir << endl;
583  //cout << "name = " << name << endl;
584  vector<MonitorElement*> histoVector;
585  uint indexOfRelevantHistogram = 0;
586  string fullMEName = "";
587  histoVector = iGetter.getContents(dir);
588  for (uint index = 0; index != histoVector.size(); index++) {
589  string MEName = histoVector[index]->getName();
590  if (MEName.find(name) != string::npos) {
591  indexOfRelevantHistogram = index;
592  break;
593  }
594  }
595  return histoVector[indexOfRelevantHistogram];
596 }
type
Definition: HCALResponse.h:21
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
Definition: DQMStore.cc:239
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
virtual void setEntries(double nentries)
set # of entries
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:418
std::vector< MonitorElement * > getContents(Args &&...args)
Definition: DQMStore.h:246
PhotonOfflineClient(const edm::ParameterSet &pset)
virtual int64_t getIntValue() const
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
MonitorElement * retrieveHisto(DQMStore::IGetter &iGetter, std::string dir, std::string name)
void book2DHistoVector(DQMStore::IBooker &iBooker, std::vector< std::vector< MonitorElement * > > &vecOfHist, std::string histoType, std::string histoName, std::string title, int xbin, double xmin, double xmax, int ybin=1, double ymin=1, double ymax=2)
bool dirExists(std::string const &path)
Definition: DQMStore.cc:461
virtual int getNbinsX() const
get # of bins in X-axis
virtual double getEntries() const
get # of entries
T sqrt(T t)
Definition: SSEVec.h:19
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, char const *option="s")
Definition: DQMStore.cc:333
void dividePlots(MonitorElement *dividend, MonitorElement *numerator, MonitorElement *denominator)
T min(T a, T b)
Definition: MathUtil.h:58
virtual double getBinContent(int binx) const
get content of bin (1-D)
MonitorElement * bookHisto(DQMStore::IBooker &iBooker, std::string histoName, std::string title, int bin, double min, double max)
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
part
Definition: HCALResponse.h:20
void book3DHistoVector(DQMStore::IBooker &iBooker, std::vector< std::vector< std::vector< MonitorElement * > > > &vecOfHist, std::string histoType, std::string histoName, std::string title, int xbin, double xmin, double xmax, int ybin=1, double ymin=1, double ymax=2)
virtual void runClient(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter)
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Definition: DQMStore.cc:266
virtual void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
MonitorElement * get(std::string const &path)
Definition: DQMStore.cc:437
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:424