CMS 3D CMS Logo

MtdTracksHarvester.cc
Go to the documentation of this file.
1 #include <string>
2 
7 
10 
12 
14 public:
15  explicit MtdTracksHarvester(const edm::ParameterSet& iConfig);
16  ~MtdTracksHarvester() override;
17 
18  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
19 
20 protected:
22 
23 private:
25  void normalize(MonitorElement* h, double scale);
26 
28 
29  // --- Histograms
61 };
62 
63 // ------------ constructor and destructor --------------
65  : folder_(iConfig.getParameter<std::string>("folder")) {}
66 
68 
69 // auxiliary method to compute efficiency from the ratio of two 1D MonitorElement
71  for (int ibin = 1; ibin <= den->getNbinsX(); ibin++) {
72  double eff = num->getBinContent(ibin) / den->getBinContent(ibin);
73  double bin_err = sqrt((num->getBinContent(ibin) * (den->getBinContent(ibin) - num->getBinContent(ibin))) /
74  pow(den->getBinContent(ibin), 3));
75  if (den->getBinContent(ibin) == 0) {
76  eff = 0;
77  bin_err = 0;
78  }
79  result->setBinContent(ibin, eff);
80  result->setBinError(ibin, bin_err);
81  }
82 }
83 
85  double integral = h->getTH1F()->Integral();
86  double norma = (integral > 0.) ? scale / integral : 0.;
87  for (int ibin = 1; ibin <= h->getNbinsX(); ibin++) {
88  double eff = h->getBinContent(ibin) * norma;
89  double bin_err = h->getBinError(ibin) * norma;
90  h->setBinContent(ibin, eff);
91  h->setBinError(ibin, bin_err);
92  }
93 }
94 
95 // ------------ endjob tasks ----------------------------
97  // --- Get the monitoring histograms
98  MonitorElement* meBTLTrackEffEtaTot = igetter.get(folder_ + "TrackBTLEffEtaTot");
99  MonitorElement* meBTLTrackEffPhiTot = igetter.get(folder_ + "TrackBTLEffPhiTot");
100  MonitorElement* meBTLTrackEffPtTot = igetter.get(folder_ + "TrackBTLEffPtTot");
101  MonitorElement* meBTLTrackEffEtaMtd = igetter.get(folder_ + "TrackBTLEffEtaMtd");
102  MonitorElement* meBTLTrackEffPhiMtd = igetter.get(folder_ + "TrackBTLEffPhiMtd");
103  MonitorElement* meBTLTrackEffPtMtd = igetter.get(folder_ + "TrackBTLEffPtMtd");
104  MonitorElement* meETLTrackEffEtaTotZneg = igetter.get(folder_ + "TrackETLEffEtaTotZneg");
105  MonitorElement* meETLTrackEffPhiTotZneg = igetter.get(folder_ + "TrackETLEffPhiTotZneg");
106  MonitorElement* meETLTrackEffPtTotZneg = igetter.get(folder_ + "TrackETLEffPtTotZneg");
107  MonitorElement* meETLTrackEffEtaMtdZneg = igetter.get(folder_ + "TrackETLEffEtaMtdZneg");
108  MonitorElement* meETLTrackEffPhiMtdZneg = igetter.get(folder_ + "TrackETLEffPhiMtdZneg");
109  MonitorElement* meETLTrackEffPtMtdZneg = igetter.get(folder_ + "TrackETLEffPtMtdZneg");
110  MonitorElement* meETLTrackEffEta2MtdZneg = igetter.get(folder_ + "TrackETLEffEta2MtdZneg");
111  MonitorElement* meETLTrackEffPhi2MtdZneg = igetter.get(folder_ + "TrackETLEffPhi2MtdZneg");
112  MonitorElement* meETLTrackEffPt2MtdZneg = igetter.get(folder_ + "TrackETLEffPt2MtdZneg");
113  MonitorElement* meETLTrackEffEtaTotZpos = igetter.get(folder_ + "TrackETLEffEtaTotZpos");
114  MonitorElement* meETLTrackEffPhiTotZpos = igetter.get(folder_ + "TrackETLEffPhiTotZpos");
115  MonitorElement* meETLTrackEffPtTotZpos = igetter.get(folder_ + "TrackETLEffPtTotZpos");
116  MonitorElement* meETLTrackEffEtaMtdZpos = igetter.get(folder_ + "TrackETLEffEtaMtdZpos");
117  MonitorElement* meETLTrackEffPhiMtdZpos = igetter.get(folder_ + "TrackETLEffPhiMtdZpos");
118  MonitorElement* meETLTrackEffPtMtdZpos = igetter.get(folder_ + "TrackETLEffPtMtdZpos");
119  MonitorElement* meETLTrackEffEta2MtdZpos = igetter.get(folder_ + "TrackETLEffEta2MtdZpos");
120  MonitorElement* meETLTrackEffPhi2MtdZpos = igetter.get(folder_ + "TrackETLEffPhi2MtdZpos");
121  MonitorElement* meETLTrackEffPt2MtdZpos = igetter.get(folder_ + "TrackETLEffPt2MtdZpos");
122  MonitorElement* meTrackPtTot = igetter.get(folder_ + "TrackPtTot");
123  MonitorElement* meMVATrackEffPtTot = igetter.get(folder_ + "MVAEffPtTot");
124  MonitorElement* meMVATrackMatchedEffPtTot = igetter.get(folder_ + "MVAMatchedEffPtTot");
125  MonitorElement* meMVATrackMatchedEffPtMtd = igetter.get(folder_ + "MVAMatchedEffPtMtd");
126  MonitorElement* meExtraPtMtd = igetter.get(folder_ + "ExtraPtMtd");
127  MonitorElement* meExtraPtEtl2Mtd = igetter.get(folder_ + "ExtraPtEtl2Mtd");
128  MonitorElement* meTrackMatchedTPEffPtTot = igetter.get(folder_ + "MatchedTPEffPtTot");
129  MonitorElement* meTrackMatchedTPEffPtMtd = igetter.get(folder_ + "MatchedTPEffPtMtd");
130  MonitorElement* meTrackMatchedTPEffPtEtl2Mtd = igetter.get(folder_ + "MatchedTPEffPtEtl2Mtd");
131  MonitorElement* meTrackMatchedTPmtdEffPtTot = igetter.get(folder_ + "MatchedTPmtdEffPtTot");
132  MonitorElement* meTrackMatchedTPmtdEffPtMtd = igetter.get(folder_ + "MatchedTPmtdEffPtMtd");
133  MonitorElement* meTrackEtaTot = igetter.get(folder_ + "TrackEtaTot");
134  MonitorElement* meMVATrackEffEtaTot = igetter.get(folder_ + "MVAEffEtaTot");
135  MonitorElement* meMVATrackMatchedEffEtaTot = igetter.get(folder_ + "MVAMatchedEffEtaTot");
136  MonitorElement* meMVATrackMatchedEffEtaMtd = igetter.get(folder_ + "MVAMatchedEffEtaMtd");
137  MonitorElement* meExtraEtaMtd = igetter.get(folder_ + "ExtraEtaMtd");
138  MonitorElement* meExtraEtaEtl2Mtd = igetter.get(folder_ + "ExtraEtaEtl2Mtd");
139  MonitorElement* meTrackMatchedTPEffEtaTot = igetter.get(folder_ + "MatchedTPEffEtaTot");
140  MonitorElement* meTrackMatchedTPEffEtaMtd = igetter.get(folder_ + "MatchedTPEffEtaMtd");
141  MonitorElement* meTrackMatchedTPEffEtaEtl2Mtd = igetter.get(folder_ + "MatchedTPEffEtaEtl2Mtd");
142  MonitorElement* meTrackMatchedTPmtdEffEtaTot = igetter.get(folder_ + "MatchedTPmtdEffEtaTot");
143  MonitorElement* meTrackMatchedTPmtdEffEtaMtd = igetter.get(folder_ + "MatchedTPmtdEffEtaMtd");
144  MonitorElement* meTrackNumHits = igetter.get(folder_ + "TrackNumHits");
145  MonitorElement* meTrackNumHitsNT = igetter.get(folder_ + "TrackNumHitsNT");
146  MonitorElement* meExtraPhiAtBTL = igetter.get(folder_ + "ExtraPhiAtBTL");
147  MonitorElement* meExtraPhiAtBTLmatched = igetter.get(folder_ + "ExtraPhiAtBTLmatched");
148  MonitorElement* meExtraBTLeneInCone = igetter.get(folder_ + "ExtraBTLeneInCone");
149  MonitorElement* meExtraMTDfailExtenderEta = igetter.get(folder_ + "ExtraMTDfailExtenderEta");
150  MonitorElement* meExtraMTDfailExtenderPt = igetter.get(folder_ + "ExtraMTDfailExtenderPt");
151 
152  if (!meBTLTrackEffEtaTot || !meBTLTrackEffPhiTot || !meBTLTrackEffPtTot || !meBTLTrackEffEtaMtd ||
153  !meBTLTrackEffPhiMtd || !meBTLTrackEffPtMtd || !meETLTrackEffEtaTotZneg || !meETLTrackEffPhiTotZneg ||
154  !meETLTrackEffPtTotZneg || !meETLTrackEffEtaMtdZneg || !meETLTrackEffPhiMtdZneg || !meETLTrackEffPtMtdZneg ||
155  !meETLTrackEffEta2MtdZneg || !meETLTrackEffPhi2MtdZneg || !meETLTrackEffPt2MtdZneg || !meETLTrackEffEtaTotZpos ||
156  !meETLTrackEffPhiTotZpos || !meETLTrackEffPtTotZpos || !meETLTrackEffEtaMtdZpos || !meETLTrackEffPhiMtdZpos ||
157  !meETLTrackEffPtMtdZpos || !meETLTrackEffEta2MtdZpos || !meETLTrackEffPhi2MtdZpos || !meETLTrackEffPt2MtdZpos ||
158  !meMVATrackEffPtTot || !meMVATrackMatchedEffPtTot || !meMVATrackMatchedEffPtMtd || !meMVATrackEffEtaTot ||
159  !meMVATrackMatchedEffEtaTot || !meMVATrackMatchedEffEtaMtd || !meTrackMatchedTPEffPtTot ||
160  !meTrackMatchedTPEffPtMtd || !meTrackMatchedTPEffPtEtl2Mtd || !meTrackMatchedTPmtdEffPtTot ||
161  !meTrackMatchedTPmtdEffPtMtd || !meTrackMatchedTPEffEtaTot || !meTrackMatchedTPEffEtaMtd ||
162  !meTrackMatchedTPEffEtaEtl2Mtd || !meTrackMatchedTPmtdEffEtaTot || !meTrackMatchedTPmtdEffEtaMtd ||
163  !meTrackNumHits || !meTrackNumHitsNT || !meTrackPtTot || !meTrackEtaTot || !meExtraPtMtd || !meExtraPtEtl2Mtd ||
164  !meExtraEtaMtd || !meExtraEtaEtl2Mtd || !meExtraPhiAtBTL || !meExtraPhiAtBTLmatched || !meExtraBTLeneInCone ||
165  !meExtraMTDfailExtenderEta || !meExtraMTDfailExtenderPt) {
166  edm::LogError("MtdTracksHarvester") << "Monitoring histograms not found!" << std::endl;
167  return;
168  }
169 
170  // --- Book histograms
171  ibook.cd(folder_);
172  meBtlEtaEff_ = ibook.book1D("BtlEtaEff",
173  " Track Efficiency VS Eta;#eta;Efficiency",
174  meBTLTrackEffEtaTot->getNbinsX(),
175  meBTLTrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
176  meBTLTrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
177  meBtlEtaEff_->getTH1()->SetMinimum(0.);
178  computeEfficiency1D(meBTLTrackEffEtaMtd, meBTLTrackEffEtaTot, meBtlEtaEff_);
179 
180  meBtlPhiEff_ = ibook.book1D("BtlPhiEff",
181  "Track Efficiency VS Phi;#phi [rad];Efficiency",
182  meBTLTrackEffPhiTot->getNbinsX(),
183  meBTLTrackEffPhiTot->getTH1()->GetXaxis()->GetXmin(),
184  meBTLTrackEffPhiTot->getTH1()->GetXaxis()->GetXmax());
185  meBtlPhiEff_->getTH1()->SetMinimum(0.);
186  computeEfficiency1D(meBTLTrackEffPhiMtd, meBTLTrackEffPhiTot, meBtlPhiEff_);
187 
188  meBtlPtEff_ = ibook.book1D("BtlPtEff",
189  "Track Efficiency VS Pt;Pt [GeV];Efficiency",
190  meBTLTrackEffPtTot->getNbinsX(),
191  meBTLTrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
192  meBTLTrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
193  meBtlPtEff_->getTH1()->SetMinimum(0.);
194  computeEfficiency1D(meBTLTrackEffPtMtd, meBTLTrackEffPtTot, meBtlPtEff_);
195 
196  meEtlEtaEff_[0] = ibook.book1D("EtlEtaEffZneg",
197  " Track Efficiency VS Eta (-Z);#eta;Efficiency",
198  meETLTrackEffEtaTotZneg->getNbinsX(),
199  meETLTrackEffEtaTotZneg->getTH1()->GetXaxis()->GetXmin(),
200  meETLTrackEffEtaTotZneg->getTH1()->GetXaxis()->GetXmax());
201  meEtlEtaEff_[0]->getTH1()->SetMinimum(0.);
202  computeEfficiency1D(meETLTrackEffEtaMtdZneg, meETLTrackEffEtaTotZneg, meEtlEtaEff_[0]);
203 
204  meEtlPhiEff_[0] = ibook.book1D("EtlPhiEffZneg",
205  "Track Efficiency VS Phi (-Z);#phi [rad];Efficiency",
206  meETLTrackEffPhiTotZneg->getNbinsX(),
207  meETLTrackEffPhiTotZneg->getTH1()->GetXaxis()->GetXmin(),
208  meETLTrackEffPhiTotZneg->getTH1()->GetXaxis()->GetXmax());
209  meEtlPhiEff_[0]->getTH1()->SetMinimum(0.);
210  computeEfficiency1D(meETLTrackEffPhiMtdZneg, meETLTrackEffPhiTotZneg, meEtlPhiEff_[0]);
211 
212  meEtlPtEff_[0] = ibook.book1D("EtlPtEffZneg",
213  "Track Efficiency VS Pt (-Z);Pt [GeV];Efficiency",
214  meETLTrackEffPtTotZneg->getNbinsX(),
215  meETLTrackEffPtTotZneg->getTH1()->GetXaxis()->GetXmin(),
216  meETLTrackEffPtTotZneg->getTH1()->GetXaxis()->GetXmax());
217  meEtlPtEff_[0]->getTH1()->SetMinimum(0.);
218  computeEfficiency1D(meETLTrackEffPtMtdZneg, meETLTrackEffPtTotZneg, meEtlPtEff_[0]);
219 
220  meEtlEtaEff_[1] = ibook.book1D("EtlEtaEffZpos",
221  " Track Efficiency VS Eta (+Z);#eta;Efficiency",
222  meETLTrackEffEtaTotZpos->getNbinsX(),
223  meETLTrackEffEtaTotZpos->getTH1()->GetXaxis()->GetXmin(),
224  meETLTrackEffEtaTotZpos->getTH1()->GetXaxis()->GetXmax());
225  meEtlEtaEff_[1]->getTH1()->SetMinimum(0.);
226  computeEfficiency1D(meETLTrackEffEtaMtdZpos, meETLTrackEffEtaTotZpos, meEtlEtaEff_[1]);
227 
228  meEtlPhiEff_[1] = ibook.book1D("EtlPhiEffZpos",
229  "Track Efficiency VS Phi (+Z);#phi [rad];Efficiency",
230  meETLTrackEffPhiTotZpos->getNbinsX(),
231  meETLTrackEffPhiTotZpos->getTH1()->GetXaxis()->GetXmin(),
232  meETLTrackEffPhiTotZpos->getTH1()->GetXaxis()->GetXmax());
233  meEtlPhiEff_[1]->getTH1()->SetMinimum(0.);
234  computeEfficiency1D(meETLTrackEffPhiMtdZpos, meETLTrackEffPhiTotZpos, meEtlPhiEff_[1]);
235 
236  meEtlPtEff_[1] = ibook.book1D("EtlPtEffZpos",
237  "Track Efficiency VS Pt (+Z);Pt [GeV];Efficiency",
238  meETLTrackEffPtTotZpos->getNbinsX(),
239  meETLTrackEffPtTotZpos->getTH1()->GetXaxis()->GetXmin(),
240  meETLTrackEffPtTotZpos->getTH1()->GetXaxis()->GetXmax());
241  meEtlPtEff_[1]->getTH1()->SetMinimum(0.);
242  computeEfficiency1D(meETLTrackEffPtMtdZpos, meETLTrackEffPtTotZpos, meEtlPtEff_[1]);
243 
244  meEtlEtaEff2_[0] = ibook.book1D("EtlEtaEff2Zneg",
245  " Track Efficiency VS Eta (-Z, 2 hit);#eta;Efficiency",
246  meETLTrackEffEtaTotZneg->getNbinsX(),
247  meETLTrackEffEtaTotZneg->getTH1()->GetXaxis()->GetXmin(),
248  meETLTrackEffEtaTotZneg->getTH1()->GetXaxis()->GetXmax());
249  meEtlEtaEff2_[0]->getTH1()->SetMinimum(0.);
250  computeEfficiency1D(meETLTrackEffEta2MtdZneg, meETLTrackEffEtaTotZneg, meEtlEtaEff2_[0]);
251 
252  meEtlPhiEff2_[0] = ibook.book1D("EtlPhiEff2Zneg",
253  "Track Efficiency VS Phi (-Z, 2 hit);#phi [rad];Efficiency",
254  meETLTrackEffPhiTotZneg->getNbinsX(),
255  meETLTrackEffPhiTotZneg->getTH1()->GetXaxis()->GetXmin(),
256  meETLTrackEffPhiTotZneg->getTH1()->GetXaxis()->GetXmax());
257  meEtlPhiEff2_[0]->getTH1()->SetMinimum(0.);
258  computeEfficiency1D(meETLTrackEffPhi2MtdZneg, meETLTrackEffPhiTotZneg, meEtlPhiEff2_[0]);
259 
260  meEtlPtEff2_[0] = ibook.book1D("EtlPtEff2Zneg",
261  "Track Efficiency VS Pt (-Z, 2 hit);Pt [GeV];Efficiency",
262  meETLTrackEffPtTotZneg->getNbinsX(),
263  meETLTrackEffPtTotZneg->getTH1()->GetXaxis()->GetXmin(),
264  meETLTrackEffPtTotZneg->getTH1()->GetXaxis()->GetXmax());
265  meEtlPtEff2_[0]->getTH1()->SetMinimum(0.);
266  computeEfficiency1D(meETLTrackEffPt2MtdZneg, meETLTrackEffPtTotZneg, meEtlPtEff2_[0]);
267 
268  meEtlEtaEff2_[1] = ibook.book1D("EtlEtaEff2Zpos",
269  "Track Efficiency VS Eta (+Z, 2 hit);#eta;Efficiency",
270  meETLTrackEffEtaTotZpos->getNbinsX(),
271  meETLTrackEffEtaTotZpos->getTH1()->GetXaxis()->GetXmin(),
272  meETLTrackEffEtaTotZpos->getTH1()->GetXaxis()->GetXmax());
273  meEtlEtaEff2_[1]->getTH1()->SetMinimum(0.);
274  computeEfficiency1D(meETLTrackEffEta2MtdZpos, meETLTrackEffEtaTotZpos, meEtlEtaEff2_[1]);
275 
276  meEtlPhiEff2_[1] = ibook.book1D("EtlPhiEff2Zpos",
277  "Track Efficiency VS Phi (+Z, 2 hit);#phi [rad];Efficiency",
278  meETLTrackEffPhiTotZpos->getNbinsX(),
279  meETLTrackEffPhiTotZpos->getTH1()->GetXaxis()->GetXmin(),
280  meETLTrackEffPhiTotZpos->getTH1()->GetXaxis()->GetXmax());
281  meEtlPhiEff2_[1]->getTH1()->SetMinimum(0.);
282  computeEfficiency1D(meETLTrackEffPhi2MtdZpos, meETLTrackEffPhiTotZpos, meEtlPhiEff2_[1]);
283 
284  meEtlPtEff2_[1] = ibook.book1D("EtlPtEff2Zpos",
285  "Track Efficiency VS Pt (+Z, 2 hit);Pt [GeV];Efficiency",
286  meETLTrackEffPtTotZpos->getNbinsX(),
287  meETLTrackEffPtTotZpos->getTH1()->GetXaxis()->GetXmin(),
288  meETLTrackEffPtTotZpos->getTH1()->GetXaxis()->GetXmax());
289  meEtlPtEff2_[1]->getTH1()->SetMinimum(0.);
290  computeEfficiency1D(meETLTrackEffPt2MtdZpos, meETLTrackEffPtTotZpos, meEtlPtEff2_[1]);
291 
292  meExtraPtEff_ = ibook.book1D("ExtraPtEff",
293  "MTD matching efficiency wrt extrapolated track VS Pt;Pt [GeV];Efficiency",
294  meMVATrackEffPtTot->getNbinsX(),
295  meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
296  meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
297  meExtraPtEff_->getTH1()->SetMinimum(0.);
298  computeEfficiency1D(meExtraPtMtd, meTrackMatchedTPEffPtTot, meExtraPtEff_);
299 
300  meExtraPtEtl2Eff_ = ibook.book1D("ExtraPtEtl2Eff",
301  "MTD matching efficiency (2 ETL) wrt extrapolated track VS Pt;Pt [GeV];Efficiency",
302  meMVATrackEffPtTot->getNbinsX(),
303  meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
304  meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
305  meExtraPtEtl2Eff_->getTH1()->SetMinimum(0.);
306  computeEfficiency1D(meExtraPtEtl2Mtd, meTrackMatchedTPEffPtTot, meExtraPtEtl2Eff_);
307 
308  meExtraEtaEff_ = ibook.book1D("ExtraEtaEff",
309  "MTD matching efficiency wrt extrapolated track VS Eta;Eta;Efficiency",
310  meMVATrackEffEtaTot->getNbinsX(),
311  meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
312  meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
313  meExtraEtaEff_->getTH1()->SetMinimum(0.);
314  computeEfficiency1D(meExtraEtaMtd, meTrackMatchedTPEffEtaTot, meExtraEtaEff_);
315 
316  meExtraEtaEtl2Eff_ = ibook.book1D("ExtraEtaEtl2Eff",
317  "MTD matching efficiency (2 ETL) wrt extrapolated track VS Eta;Eta;Efficiency",
318  meMVATrackEffEtaTot->getNbinsX(),
319  meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
320  meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
321  meExtraEtaEtl2Eff_->getTH1()->SetMinimum(0.);
322  computeEfficiency1D(meExtraEtaEtl2Mtd, meTrackMatchedTPEffEtaTot, meExtraEtaEtl2Eff_);
323 
324  meMVAPtSelEff_ = ibook.book1D("MVAPtSelEff",
325  "Track selected efficiency VS Pt;Pt [GeV];Efficiency",
326  meMVATrackEffPtTot->getNbinsX(),
327  meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
328  meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
329  meMVAPtSelEff_->getTH1()->SetMinimum(0.);
330  computeEfficiency1D(meMVATrackMatchedEffPtTot, meMVATrackEffPtTot, meMVAPtSelEff_);
331 
332  meMVAEtaSelEff_ = ibook.book1D("MVAEtaSelEff",
333  "Track selected efficiency VS Eta;Eta;Efficiency",
334  meMVATrackEffEtaTot->getNbinsX(),
335  meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
336  meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
337  meMVAEtaSelEff_->getTH1()->SetMinimum(0.);
338  computeEfficiency1D(meMVATrackMatchedEffEtaTot, meMVATrackEffEtaTot, meMVAEtaSelEff_);
339 
340  meMVAPtMatchEff_ = ibook.book1D("MVAPtMatchEff",
341  "Track matched to GEN efficiency VS Pt;Pt [GeV];Efficiency",
342  meMVATrackMatchedEffPtTot->getNbinsX(),
343  meMVATrackMatchedEffPtTot->getTH1()->GetXaxis()->GetXmin(),
344  meMVATrackMatchedEffPtTot->getTH1()->GetXaxis()->GetXmax());
345  meMVAPtMatchEff_->getTH1()->SetMinimum(0.);
346  computeEfficiency1D(meMVATrackMatchedEffPtMtd, meMVATrackMatchedEffPtTot, meMVAPtMatchEff_);
347 
348  meMVAEtaMatchEff_ = ibook.book1D("MVAEtaMatchEff",
349  "Track matched to GEN efficiency VS Eta;Eta;Efficiency",
350  meMVATrackMatchedEffEtaTot->getNbinsX(),
351  meMVATrackMatchedEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
352  meMVATrackMatchedEffEtaTot->getTH1()->GetXaxis()->GetXmax());
353  meMVAEtaMatchEff_->getTH1()->SetMinimum(0.);
354  computeEfficiency1D(meMVATrackMatchedEffEtaMtd, meMVATrackMatchedEffEtaTot, meMVAEtaMatchEff_);
355 
356  meTPPtSelEff_ = ibook.book1D("TPPtSelEff",
357  "Track selected efficiency TP VS Pt;Pt [GeV];Efficiency",
358  meMVATrackEffPtTot->getNbinsX(),
359  meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
360  meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
361  meTPPtSelEff_->getTH1()->SetMinimum(0.);
362  computeEfficiency1D(meTrackMatchedTPEffPtTot, meTrackPtTot, meTPPtSelEff_);
363 
364  meTPEtaSelEff_ = ibook.book1D("TPEtaSelEff",
365  "Track selected efficiency TP VS Eta;Eta;Efficiency",
366  meMVATrackEffEtaTot->getNbinsX(),
367  meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
368  meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
369  meTPEtaSelEff_->getTH1()->SetMinimum(0.);
370  computeEfficiency1D(meTrackMatchedTPEffEtaTot, meTrackEtaTot, meTPEtaSelEff_);
371 
372  meTPPtMatchEff_ = ibook.book1D("TPPtMatchEff",
373  "Track matched to TP efficiency VS Pt;Pt [GeV];Efficiency",
374  meTrackMatchedTPEffPtTot->getNbinsX(),
375  meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmin(),
376  meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmax());
377  meTPPtMatchEff_->getTH1()->SetMinimum(0.);
378  computeEfficiency1D(meTrackMatchedTPEffPtMtd, meTrackMatchedTPEffPtTot, meTPPtMatchEff_);
379 
380  meTPEtaMatchEff_ = ibook.book1D("TPEtaMatchEff",
381  "Track matched to TP efficiency VS Eta;Eta;Efficiency",
382  meTrackMatchedTPEffEtaTot->getNbinsX(),
383  meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
384  meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmax());
385  meTPEtaMatchEff_->getTH1()->SetMinimum(0.);
386  computeEfficiency1D(meTrackMatchedTPEffEtaMtd, meTrackMatchedTPEffEtaTot, meTPEtaMatchEff_);
387 
388  meTPPtMatchEtl2Eff_ = ibook.book1D("TPPtMatchEtl2Eff",
389  "Track matched to TP efficiency VS Pt, 2 ETL hits;Pt [GeV];Efficiency",
390  meTrackMatchedTPEffPtTot->getNbinsX(),
391  meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmin(),
392  meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmax());
393  meTPPtMatchEtl2Eff_->getTH1()->SetMinimum(0.);
394  computeEfficiency1D(meTrackMatchedTPEffPtEtl2Mtd, meTrackMatchedTPEffPtTot, meTPPtMatchEtl2Eff_);
395 
396  meTPEtaMatchEtl2Eff_ = ibook.book1D("TPEtaMatchEtl2Eff",
397  "Track matched to TP efficiency VS Eta, 2 ETL hits;Eta;Efficiency",
398  meTrackMatchedTPEffEtaTot->getNbinsX(),
399  meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
400  meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmax());
401  meTPEtaMatchEtl2Eff_->getTH1()->SetMinimum(0.);
402  computeEfficiency1D(meTrackMatchedTPEffEtaEtl2Mtd, meTrackMatchedTPEffEtaTot, meTPEtaMatchEtl2Eff_);
403 
404  meTPmtdPtSelEff_ = ibook.book1D("TPmtdPtSelEff",
405  "Track selected efficiency TP-mtd hit VS Pt;Pt [GeV];Efficiency",
406  meMVATrackEffPtTot->getNbinsX(),
407  meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmin(),
408  meMVATrackEffPtTot->getTH1()->GetXaxis()->GetXmax());
409  meTPmtdPtSelEff_->getTH1()->SetMinimum(0.);
410  computeEfficiency1D(meTrackMatchedTPmtdEffPtTot, meTrackPtTot, meTPmtdPtSelEff_);
411 
412  meTPmtdEtaSelEff_ = ibook.book1D("TPmtdEtaSelEff",
413  "Track selected efficiency TPmtd hit VS Eta;Eta;Efficiency",
414  meMVATrackEffEtaTot->getNbinsX(),
415  meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
416  meMVATrackEffEtaTot->getTH1()->GetXaxis()->GetXmax());
417  meTPmtdEtaSelEff_->getTH1()->SetMinimum(0.);
418  computeEfficiency1D(meTrackMatchedTPmtdEffEtaTot, meTrackEtaTot, meTPmtdEtaSelEff_);
419 
420  meTPmtdPtMatchEff_ = ibook.book1D("TPmtdPtMatchEff",
421  "Track matched to TP-mtd hit efficiency VS Pt;Pt [GeV];Efficiency",
422  meTrackMatchedTPmtdEffPtTot->getNbinsX(),
423  meTrackMatchedTPmtdEffPtTot->getTH1()->GetXaxis()->GetXmin(),
424  meTrackMatchedTPmtdEffPtTot->getTH1()->GetXaxis()->GetXmax());
425  meTPmtdPtMatchEff_->getTH1()->SetMinimum(0.);
426  computeEfficiency1D(meTrackMatchedTPmtdEffPtMtd, meTrackMatchedTPmtdEffPtTot, meTPmtdPtMatchEff_);
427 
428  meTPmtdEtaMatchEff_ = ibook.book1D("TPmtdEtaMatchEff",
429  "Track matched to TP-mtd hit efficiency VS Eta;Eta;Efficiency",
430  meTrackMatchedTPmtdEffEtaTot->getNbinsX(),
431  meTrackMatchedTPmtdEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
432  meTrackMatchedTPmtdEffEtaTot->getTH1()->GetXaxis()->GetXmax());
433  meTPmtdEtaMatchEff_->getTH1()->SetMinimum(0.);
434  computeEfficiency1D(meTrackMatchedTPmtdEffEtaMtd, meTrackMatchedTPmtdEffEtaTot, meTPmtdEtaMatchEff_);
435 
436  meNoTimeFraction_ = ibook.book1D("NoTimeFraction",
437  "Fraction of tracks with MTD hits and no time associated; Num. of hits",
438  meTrackNumHits->getNbinsX(),
439  meTrackNumHits->getTH1()->GetXaxis()->GetXmin(),
440  meTrackNumHits->getTH1()->GetXaxis()->GetXmax());
441  meNoTimeFraction_->getTH1()->SetMinimum(0.);
442  computeEfficiency1D(meTrackNumHitsNT, meTrackNumHits, meNoTimeFraction_);
443 
444  meBtlEtaEff_->getTH1()->SetMinimum(0.);
445  meBtlPhiEff_->getTH1()->SetMinimum(0.);
446  meBtlPtEff_->getTH1()->SetMinimum(0.);
447  for (int i = 0; i < 2; i++) {
448  meEtlEtaEff_[i]->getTH1()->SetMinimum(0.);
449  meEtlPhiEff_[i]->getTH1()->SetMinimum(0.);
450  meEtlPtEff_[i]->getTH1()->SetMinimum(0.);
451  meEtlEtaEff2_[i]->getTH1()->SetMinimum(0.);
452  meEtlPhiEff2_[i]->getTH1()->SetMinimum(0.);
453  meEtlPtEff2_[i]->getTH1()->SetMinimum(0.);
454  }
455  meMVAPtSelEff_->getTH1()->SetMinimum(0.);
456  meMVAEtaSelEff_->getTH1()->SetMinimum(0.);
457  meMVAPtMatchEff_->getTH1()->SetMinimum(0.);
458  meMVAEtaMatchEff_->getTH1()->SetMinimum(0.);
459 
460  meExtraPhiAtBTLEff_ = ibook.book1D("ExtraPhiAtBTLEff",
461  "Efficiency to match hits at BTL surface",
462  meExtraPhiAtBTL->getNbinsX(),
463  meExtraPhiAtBTL->getTH1()->GetXaxis()->GetXmin(),
464  meExtraPhiAtBTL->getTH1()->GetXaxis()->GetXmax());
465  meExtraPhiAtBTLEff_->getTH1()->SetMinimum(0.);
466  computeEfficiency1D(meExtraPhiAtBTLmatched, meExtraPhiAtBTL, meExtraPhiAtBTLEff_);
467 
468  normalize(meExtraBTLeneInCone, 1.);
469 
471  ibook.book1D("ExtraMTDfailExtenderEtaEff",
472  "Track extrapolated at MTD surface no extender efficiency VS Eta;Eta;Efficiency",
473  meTrackMatchedTPEffEtaTot->getNbinsX(),
474  meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmin(),
475  meTrackMatchedTPEffEtaTot->getTH1()->GetXaxis()->GetXmax());
476  meExtraMTDfailExtenderEtaEff_->getTH1()->SetMinimum(0.);
477  computeEfficiency1D(meExtraMTDfailExtenderEta, meTrackMatchedTPEffEtaTot, meExtraMTDfailExtenderEtaEff_);
478 
480  ibook.book1D("ExtraMTDfailExtenderPtEff",
481  "Track extrapolated at MTD surface no extender efficiency VS Pt;Pt [GeV];Efficiency",
482  meTrackMatchedTPEffPtTot->getNbinsX(),
483  meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmin(),
484  meTrackMatchedTPEffPtTot->getTH1()->GetXaxis()->GetXmax());
485  meExtraMTDfailExtenderPtEff_->getTH1()->SetMinimum(0.);
486  computeEfficiency1D(meExtraMTDfailExtenderPt, meTrackMatchedTPEffPtTot, meExtraMTDfailExtenderPtEff_);
487 }
488 
489 // ------------ method fills 'descriptions' with the allowed parameters for the module ----------
492 
493  desc.add<std::string>("folder", "MTD/Tracks/");
494 
495  descriptions.add("MtdTracksPostProcessor", desc);
496 }
497 
MonitorElement * meExtraPtEff_
MonitorElement * meTPEtaMatchEtl2Eff_
MonitorElement * meExtraMTDfailExtenderPtEff_
MtdTracksHarvester(const edm::ParameterSet &iConfig)
MonitorElement * meTPEtaSelEff_
std::string folder_
MonitorElement * meEtlEtaEff2_[2]
MonitorElement * meTPEtaMatchEff_
MonitorElement * meExtraEtaEtl2Eff_
MonitorElement * meMVAEtaMatchEff_
MonitorElement * meExtraPhiAtBTLEff_
Log< level::Error, false > LogError
MonitorElement * meTPmtdEtaMatchEff_
MonitorElement * meTPPtSelEff_
MonitorElement * meEtlPhiEff2_[2]
void computeEfficiency1D(MonitorElement *num, MonitorElement *den, MonitorElement *result)
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
MonitorElement * meMVAPtSelEff_
T sqrt(T t)
Definition: SSEVec.h:19
MonitorElement * meEtlPhiEff_[2]
MonitorElement * meTPPtMatchEtl2Eff_
MonitorElement * meMVAPtMatchEff_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
MonitorElement * meEtlPtEff_[2]
const std::string folder_
MonitorElement * meBtlPtEff_
Integral< F, X >::type integral(const F &f)
Definition: Integral.h:70
MonitorElement * meTPmtdEtaSelEff_
void normalize(MonitorElement *h, double scale)
MonitorElement * meTPPtMatchEff_
MonitorElement * meEtlPtEff2_[2]
MonitorElement * meExtraPtEtl2Eff_
MonitorElement * meExtraEtaEff_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
MonitorElement * meBtlEtaEff_
virtual MonitorElement * get(std::string const &fullpath) const
Definition: DQMStore.cc:712
virtual TH1 * getTH1() const
~MtdTracksHarvester() override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
MonitorElement * meBtlPhiEff_
virtual int getNbinsX() const
get # of bins in X-axis
MonitorElement * meNoTimeFraction_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * meMVAEtaSelEff_
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
MonitorElement * meEtlEtaEff_[2]
MonitorElement * meTPmtdPtSelEff_
MonitorElement * meExtraMTDfailExtenderEtaEff_
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
MonitorElement * meTPmtdPtMatchEff_
virtual double getBinContent(int binx) const
get content of bin (1-D)