CMS 3D CMS Logo

Histograms.h
Go to the documentation of this file.
1 #ifndef Validation_DTRecHits_Histograms_h
2 #define Validation_DTRecHits_Histograms_h
3 
10 #include <cmath>
11 #include <iostream>
12 #include <string>
13 
14 #include <TH1F.h>
15 
19 
20 //---------------------------------------------------------------------------------------
23  TH1 *effH = eff->getTH1();
24  TH1 *numH = numerator->getTH1();
25  TH1 *denH = denominator->getTH1();
26  effH->Divide(numH, denH);
27 
28  // Set the error accordingly to binomial statistics
29  int bins = effH->GetNbinsX();
30  for (int bin = 1; bin <= bins; ++bin) {
31  float den = denH->GetBinContent(bin);
32  float eff = effH->GetBinContent(bin);
33  float err = 0;
34  if (den != 0) {
35  err = sqrt(eff * (1 - eff) / den);
36  }
37  effH->SetBinError(bin, err);
38  }
39  return;
40 }
41 
42 //---------------------------------------------------------------------------------------
44 class HRes1DHit {
45 public:
46  HRes1DHit(const std::string &name, DQMStore::ConcurrentBooker &booker, bool doall = true, bool local = true) {
47  std::string pre = "1D_";
48  pre += name;
49  doall_ = doall;
50  booker.setCurrentFolder("DT/1DRecHits/Res/");
51  if (doall) {
52  hDist = booker.book1D(pre + "_hDist", "1D RHit distance from wire", 100, 0, 2.5);
53  hResVsAngle =
54  booker.book2D(pre + "_hResVsAngle", "1D RHit residual vs impact angle", 100, -1.2, 1.2, 100, -0.2, 0.2);
55  hResVsDistFE =
56  booker.book2D(pre + "_hResVsDistFE", "1D RHit residual vs FE distance", 100, 0., 400., 150, -0.5, 0.5);
57  booker.setCurrentFolder("DT/1DRecHits/Pull/");
58  hPullVsPos = booker.book2D(pre + "_hPullVsPos", "1D RHit pull vs position", 100, 0, 2.5, 100, -5, 5);
59  hPullVsAngle = booker.book2D(pre + "_hPullVsAngle", "1D RHit pull vs impact angle", 100, -1.2, 1.2, 100, -5, 5);
60  hPullVsDistFE = booker.book2D(pre + "_hPullVsDistFE", "1D RHit pull vs FE distance", 100, 0., 400., 100, -5, 5);
61  }
62  booker.setCurrentFolder("DT/1DRecHits/Res/");
63  hRes = booker.book1D(pre + "_hRes", "1D RHit residual", 300, -0.5, 0.5);
64  hResSt[0] = booker.book1D(pre + "_hResMB1", "1D RHit residual", 300, -0.5, 0.5);
65  hResSt[1] = booker.book1D(pre + "_hResMB2", "1D RHit residual", 300, -0.5, 0.5);
66  hResSt[2] = booker.book1D(pre + "_hResMB3", "1D RHit residual", 300, -0.5, 0.5);
67  hResSt[3] = booker.book1D(pre + "_hResMB4", "1D RHit residual", 300, -0.5, 0.5);
68  hResVsEta = booker.book2D(pre + "_hResVsEta", "1D RHit residual vs eta", 50, -1.25, 1.25, 150, -0.5, 0.5);
69  hResVsPhi = booker.book2D(pre + "_hResVsPhi", "1D RHit residual vs phi", 100, -3.2, 3.2, 150, -0.5, 0.5);
70  hResVsPos = booker.book2D(pre + "_hResVsPos", "1D RHit residual vs position", 100, 0, 2.5, 150, -0.5, 0.5);
71 
72  booker.setCurrentFolder("DT/1DRecHits/Pull/");
73  hPull = booker.book1D(pre + "_hPull", "1D RHit pull", 100, -5, 5);
74  hPullSt[0] = booker.book1D(pre + "_hPullMB1", "1D RHit residual", 100, -5, 5);
75  hPullSt[1] = booker.book1D(pre + "_hPullMB2", "1D RHit residual", 100, -5, 5);
76  hPullSt[2] = booker.book1D(pre + "_hPullMB3", "1D RHit residual", 100, -5, 5);
77  hPullSt[3] = booker.book1D(pre + "_hPullMB4", "1D RHit residual", 100, -5, 5);
78  }
79 
80  void fill(float distSimHit,
81  float thetaSimHit,
82  float distFESimHit,
83  float distRecHit,
84  float etaSimHit,
85  float phiSimHit,
86  float errRecHit,
87  int station) {
88  // Reso, pull
89  float res = distRecHit - distSimHit;
90  if (doall_) {
91  hDist.fill(distRecHit);
92  hResVsAngle.fill(thetaSimHit, res);
93  hResVsDistFE.fill(distFESimHit, res);
94  }
95  hRes.fill(res);
96  hResSt[station - 1].fill(res);
97  hResVsEta.fill(etaSimHit, res);
98  hResVsPhi.fill(phiSimHit, res);
99  hResVsPos.fill(distSimHit, res);
100  if (errRecHit != 0) {
101  float pull = res / errRecHit;
102  hPull.fill(pull);
103  hPullSt[station - 1].fill(pull);
104  if (doall_) {
105  hPullVsPos.fill(distSimHit, pull);
106  hPullVsAngle.fill(thetaSimHit, pull);
107  hPullVsDistFE.fill(distFESimHit, pull);
108  }
109  } else {
110  std::cout << "Error: RecHit error = 0" << std::endl;
111  }
112  }
113 
114 private:
123 
129  bool doall_;
131 };
132 
133 //---------------------------------------------------------------------------------------
135 class HEff1DHit {
136 public:
138  std::string pre = "1D_";
139  pre += name;
140  name_ = pre;
141  booker.setCurrentFolder("DT/1DRecHits/");
142  hEtaMuSimHit = booker.book1D(pre + "_hEtaMuSimHit", "SimHit Eta distribution", 100, -1.5, 1.5);
143  hEtaRecHit = booker.book1D(pre + "_hEtaRecHit", "SimHit Eta distribution with 1D RecHit", 100, -1.5, 1.5);
144  hPhiMuSimHit = booker.book1D(pre + "_hPhiMuSimHit", "SimHit Phi distribution", 100, -M_PI, M_PI);
145  hPhiRecHit = booker.book1D(pre + "_hPhiRecHit", "SimHit Phi distribution with 1D RecHit", 100, -M_PI, M_PI);
146  hDistMuSimHit = booker.book1D(pre + "_hDistMuSimHit", "SimHit Distance from wire distribution", 100, 0, 2.5);
147  hDistRecHit =
148  booker.book1D(pre + "_hDistRecHit", "SimHit Distance from wire distribution with 1D RecHit", 100, 0, 2.5);
149  }
150 
151  void fill(float distSimHit, float etaSimHit, float phiSimHit, bool fillRecHit) {
152  hEtaMuSimHit.fill(etaSimHit);
153  hPhiMuSimHit.fill(phiSimHit);
154  hDistMuSimHit.fill(distSimHit);
155  if (fillRecHit) {
156  hEtaRecHit.fill(etaSimHit);
157  hPhiRecHit.fill(phiSimHit);
158  hDistRecHit.fill(distSimHit);
159  }
160  }
161 
162 private:
165 
168 
171 
173 };
174 
175 //---------------------------------------------------------------------------------------
178 public:
180  std::string pre = "1D_";
181  pre += name;
182  name_ = pre;
183  booker.setCurrentFolder("DT/1DRecHits/");
184  hEffVsEta = booker.book1D(pre + "_hEffVsEta", "1D RecHit Efficiency as a function of Eta", 100, -1.5, 1.5);
185  hEffVsPhi = booker.book1D(pre + "_hEffVsPhi", "1D RecHit Efficiency as a function of Phi", 100, -M_PI, M_PI);
186  hEffVsDist = booker.book1D(pre + "_hEffVsDist", "1D RecHit Efficiency as a function of Dist", 100, 0, 2.5);
187 
188  computeEfficiency(getter);
189  }
190 
192  std::string pre = "DT/1DRecHits/" + name_;
193  divide(hEffVsEta, getter.get(pre + "_hEtaMuRecHit"), getter.get(pre + "_hEtaMuSimHit"));
194  divide(hEffVsPhi, getter.get(pre + "_hPhiMuRecHit"), getter.get(pre + "_hPhiMuSimHit"));
195  divide(hEffVsDist, getter.get(pre + "_hDistMuRecHit"), getter.get(pre + "_hDistMuSimHit"));
196  }
197 
198 private:
202 
204 };
205 
206 //---------------------------------------------------------------------------------------
207 // Histos of residuals for 2D rechits
208 class HRes2DHit {
209 public:
210  HRes2DHit(const std::string &name, DQMStore::ConcurrentBooker &booker, bool doall = true, bool local = true) {
211  doall_ = doall;
212  std::string pre = "2D_";
213  pre += name;
214  booker.setCurrentFolder("DT/2DSegments/Res/");
215  if (doall) {
216  hRecAngle = booker.book1D(pre + "_hRecAngle", "Distribution of Rec segment angles;angle (rad)", 100, -1.5, 1.5);
217  hSimAngle =
218  booker.book1D(pre + "_hSimAngle", "Distribution of segment angles from SimHits;angle (rad)", 100, -1.5, 1.5);
219  hRecVsSimAngle =
220  booker.book2D(pre + "_hRecVsSimAngle", "Rec angle vs sim angle;angle (rad)", 100, -1.5, 1.5, 100, -1.5, 1.5);
221  hResAngleVsEta = booker.book2D(pre + "_hResAngleVsEta",
222  "Residual on 2D segment angle vs Eta; #eta; res (rad)",
223  100,
224  -2.5,
225  2.5,
226  200,
227  -0.2,
228  0.2);
229  hResAngleVsPhi = booker.book2D(pre + "_hResAngleVsPhi",
230  "Residual on 2D segment angle vs Phi; #phi (rad);res (rad)",
231  100,
232  -3.2,
233  3.2,
234  150,
235  -0.2,
236  0.2);
237  hResPosVsEta = booker.book2D(
238  pre + "_hResPosVsEta", "Residual on 2D segment position vs Eta;#eta;res (cm)", 100, -2.5, 2.5, 150, -0.2, 0.2);
239  hResPosVsPhi = booker.book2D(pre + "_hResPosVsPhi",
240  "Residual on 2D segment position vs Phi;#phi (rad);res (cm)",
241  100,
242  -3.2,
243  3.2,
244  150,
245  -0.2,
246  0.2);
247  hResPosVsResAngle = booker.book2D(pre + "_hResPosVsResAngle",
248  "Residual on 2D segment position vs Residual on 2D "
249  "segment angle;angle (rad);res (cm)",
250  100,
251  -0.3,
252  0.3,
253  150,
254  -0.2,
255  0.2);
256  }
257  hResAngle = booker.book1D(
258  pre + "_hResAngle", "Residual on 2D segment angle;angle_{rec}-angle_{sim} (rad)", 50, -0.01, 0.01);
259  hResPos = booker.book1D(
260  pre + "_hResPos", "Residual on 2D segment position (x at SL center);x_{rec}-x_{sim} (cm)", 150, -0.2, 0.2);
261 
262  booker.setCurrentFolder("DT/2DSegments/Pull/");
263  hPullAngle = booker.book1D(
264  pre + "_hPullAngle", "Pull on 2D segment angle;(angle_{rec}-angle_{sim})/#sigma (rad)", 150, -5, 5);
265  hPullPos = booker.book1D(pre + "_hPullPos",
266  "Pull on 2D segment position (x at SL "
267  "center);(x_{rec}-x_{sim} (cm))/#sigma",
268  150,
269  -5,
270  5);
271  }
272 
273  void fill(float angleSimSegment,
274  float angleRecSegment,
275  float posSimSegment,
276  float posRecSegment,
277  float etaSimSegment,
278  float phiSimSegment,
279  float sigmaPos,
280  float sigmaAngle) {
281  float resAngle = angleRecSegment - angleSimSegment;
282  hResAngle.fill(resAngle);
283  float resPos = posRecSegment - posSimSegment;
284  hResPos.fill(resPos);
285  hPullAngle.fill(resAngle / sigmaAngle);
286  hPullPos.fill(resPos / sigmaPos);
287  if (doall_) {
288  hRecAngle.fill(angleRecSegment);
289  hSimAngle.fill(angleSimSegment);
290  hRecVsSimAngle.fill(angleSimSegment, angleRecSegment);
291  hResAngleVsEta.fill(etaSimSegment, resAngle);
292  hResAngleVsPhi.fill(phiSimSegment, resAngle);
293  hResPosVsEta.fill(etaSimSegment, resPos);
294  hResPosVsPhi.fill(phiSimSegment, resPos);
295  hResPosVsResAngle.fill(resAngle, resPos);
296  }
297  }
298 
299 private:
312 
314  bool doall_;
315 };
316 
317 //---------------------------------------------------------------------------------------
318 // Histos for 2D RecHit efficiency (producer)
319 class HEff2DHit {
320 public:
322  std::string pre = "2D_";
323  pre += name;
324  name_ = pre;
325  booker.setCurrentFolder("DT/2DSegments/");
326  hEtaSimSegm = booker.book1D(pre + "_hEtaSimSegm", "Eta of SimHit segment", 100, -1.5, 1.5);
327  hEtaRecHit =
328  booker.book1D(pre + "_hEtaRecHit", "Eta distribution of SimHit segment with 2D RecHit", 100, -1.5, 1.5);
329  hPhiSimSegm = booker.book1D(pre + "_hPhiSimSegm", "Phi of SimHit segment", 100, -M_PI, M_PI);
330  hPhiRecHit =
331  booker.book1D(pre + "_hPhiRecHit", "Phi distribution of SimHit segment with 2D RecHit", 100, -M_PI, M_PI);
332  hPosSimSegm = booker.book1D(pre + "_hPosSimSegm", "Position in SL of SimHit segment (cm)", 100, -250, 250);
333  hPosRecHit =
334  booker.book1D(pre + "_hPosRecHit", "Position in SL of SimHit segment with 2D RecHit (cm)", 100, -250, 250);
335  hAngleSimSegm = booker.book1D(pre + "_hAngleSimSegm", "Angle of SimHit segment (rad)", 100, -2, 2);
336  hAngleRecHit = booker.book1D(pre + "_hAngleRecHit", "Angle of SimHit segment with 2D RecHit (rad)", 100, -2, 2);
337  }
338 
339  void fill(float etaSimSegm, float phiSimSegm, float posSimSegm, float angleSimSegm, bool fillRecHit) {
340  hEtaSimSegm.fill(etaSimSegm);
341  hPhiSimSegm.fill(phiSimSegm);
342  hPosSimSegm.fill(posSimSegm);
343  hAngleSimSegm.fill(angleSimSegm);
344 
345  if (fillRecHit) {
346  hEtaRecHit.fill(etaSimSegm);
347  hPhiRecHit.fill(phiSimSegm);
348  hPosRecHit.fill(posSimSegm);
349  hAngleRecHit.fill(angleSimSegm);
350  }
351  }
352 
353 private:
362 
364 };
365 
366 //---------------------------------------------------------------------------------------
367 // Histos for 2D RecHit efficiency (harvesting)
369 public:
371  std::string pre = "2D_";
372  pre += name;
373  name_ = pre;
374  booker.setCurrentFolder("DT/2DSegments/");
375  hEffVsEta = booker.book1D(pre + "_hEffVsEta", "2D RecHit Efficiency as a function of Eta", 100, -1.5, 1.5);
376  hEffVsPhi = booker.book1D(pre + "_hEffVsPhi", "2D RecHit Efficiency as a function of Phi", 100, -M_PI, M_PI);
377  hEffVsPos =
378  booker.book1D(pre + "_hEffVsPos", "2D RecHit Efficiency as a function of position in SL", 100, -250, 250);
379  hEffVsAngle = booker.book1D(pre + "_hEffVsAngle", "2D RecHit Efficiency as a function of angle", 100, -2, 2);
380 
381  computeEfficiency(getter);
382  }
383 
385  std::string pre = "DT/2DSegments/" + name_;
386  divide(hEffVsEta, getter.get(pre + "_hEtaRecHit"), getter.get(pre + "_hEtaSimSegm"));
387  divide(hEffVsPhi, getter.get(pre + "_hPhiRecHit"), getter.get(pre + "_hPhiSimSegm"));
388  divide(hEffVsPos, getter.get(pre + "_hPosRecHit"), getter.get(pre + "_hPosSimSegm"));
389  divide(hEffVsAngle, getter.get(pre + "_hAngleRecHit"), getter.get(pre + "_hAngleSimSegm"));
390  }
391 
392 private:
397 
399 };
400 
401 //---------------------------------------------------------------------------------------
402 // Histos of residuals for 4D rechits
403 class HRes4DHit {
404 public:
405  HRes4DHit(const std::string &name, DQMStore::ConcurrentBooker &booker, bool doall = true, bool local = true)
406  : local_(local) {
407  std::string pre = "4D_";
408  pre += name;
409  doall_ = doall;
410 
411  booker.setCurrentFolder("DT/4DSegments/Res/");
412  if (doall) {
413  hRecAlpha =
414  booker.book1D(pre + "_hRecAlpha", "4D RecHit alpha (RPhi) distribution;#alpha^{x} (rad)", 100, -1.5, 1.5);
415  hRecBeta = booker.book1D(pre + "_hRecBeta", "4D RecHit beta distribution:#alpha^{y} (rad)", 100, -1.5, 1.5);
416 
417  hSimAlpha = booker.book1D(
418  pre + "_hSimAlpha", "4D segment from SimHit alpha (RPhi) distribution;i#alpha^{x} (rad)", 100, -1.5, 1.5);
419  hSimBeta =
420  booker.book1D(pre + "_hSimBeta", "4D segment from SimHit beta distribution;#alpha^{y} (rad)", 100, -1.5, 1.5);
421  hRecVsSimAlpha = booker.book2D(pre + "_hRecVsSimAlpha",
422  "4D segment rec alpha {v}s sim alpha (RPhi);#alpha^{x} (rad)",
423  100,
424  -1.5,
425  1.5,
426  100,
427  -1.5,
428  1.5);
429  hRecVsSimBeta = booker.book2D(pre + "_hRecVsSimBeta",
430  "4D segment rec beta vs sim beta (RZ);#alpha^{y} (rad)",
431  100,
432  -1.5,
433  1.5,
434  100,
435  -1.5,
436  1.5);
437 
438  hResAlphaVsEta = booker.book2D(pre + "_hResAlphaVsEta",
439  "4D RecHit residual on #alpha_x direction vs "
440  "eta;#eta;#alpha^{x}_{rec}-#alpha^{x}_{sim} (rad)",
441  100,
442  -2.5,
443  2.5,
444  100,
445  -0.025,
446  0.025);
447  hResAlphaVsPhi = booker.book2D(pre + "_hResAlphaVsPhi",
448  "4D RecHit residual on #alpha_x direction vs phi (rad);#phi "
449  "(rad);#alpha^{x}_{rec}-#alpha^{x}_{sim} (rad)",
450  100,
451  -3.2,
452  3.2,
453  100,
454  -0.025,
455  0.025);
456  hResBetaVsEta = booker.book2D(pre + "_hResBetaVsEta",
457  "4D RecHit residual on beta direction vs "
458  "eta;#eta;#alpha^{y}_{rec}-#alpha^{y}_{sim} (rad)",
459  100,
460  -2.5,
461  2.5,
462  200,
463  -0.2,
464  0.2);
465  hResBetaVsPhi = booker.book2D(pre + "_hResBetaVsPhi",
466  "4D RecHit residual on beta direction vs phi;#phi "
467  "(rad);#alpha^{y}_{rec}-#alpha^{y}_{sim} (rad)",
468  100,
469  -3.2,
470  3.2,
471  200,
472  -0.2,
473  0.2);
474 
475  hResXVsEta = booker.book2D(pre + "_hResXVsEta",
476  "4D RecHit residual on position (x) in "
477  "chamber vs eta;#eta;x_{rec}-x_{sim} (cm)",
478  100,
479  -2.5,
480  2.5,
481  150,
482  -0.3,
483  0.3);
484  hResXVsPhi = booker.book2D(pre + "_hResXVsPhi",
485  "4D RecHit residual on position (x) in chamber vs "
486  "phi;#phi (rad);x_{rec}-x_{sim} (cm)",
487  100,
488  -3.2,
489  3.2,
490  150,
491  -0.3,
492  0.3);
493 
494  hResYVsEta = booker.book2D(pre + "_hResYVsEta",
495  "4D RecHit residual on position (y) in "
496  "chamber vs eta;#eta;y_{rec}-y_{sim} (cm)",
497  100,
498  -2.5,
499  2.5,
500  150,
501  -0.6,
502  0.6);
503  hResYVsPhi = booker.book2D(pre + "_hResYVsPhi",
504  "4D RecHit residual on position (y) in chamber vs "
505  "phi;#phi (rad);y_{rec}-y_{sim} (cm)",
506  100,
507  -3.2,
508  3.2,
509  150,
510  -0.6,
511  0.6);
512 
513  hResAlphaVsResBeta = booker.book2D(pre + "_hResAlphaVsResBeta",
514  "4D RecHit residual on alpha vs residual on beta",
515  200,
516  -0.3,
517  0.3,
518  500,
519  -0.15,
520  0.15);
521  hResXVsResY = booker.book2D(
522  pre + "_hResXVsResY", "4D RecHit residual on X vs residual on Y", 150, -0.6, 0.6, 50, -0.3, 0.3);
523  hResAlphaVsResX = booker.book2D(
524  pre + "_hResAlphaVsResX", "4D RecHit residual on alpha vs residual on x", 150, -0.3, 0.3, 500, -0.15, 0.15);
525 
526  hResAlphaVsResY = booker.book2D(
527  pre + "_hResAlphaVsResY", "4D RecHit residual on alpha vs residual on y", 150, -0.6, 0.6, 500, -0.15, 0.15);
528 
529  hRecBetaRZ = booker.book1D(pre + "_hRecBetaRZ", "4D RecHit beta distribution:#alpha^{y} (rad)", 100, -1.5, 1.5);
530 
531  hSimBetaRZ = booker.book1D(
532  pre + "_hSimBetaRZ", "4D segment from SimHit beta distribution in RZ SL;#alpha^{y} (rad)", 100, -1.5, 1.5);
533  hRecVsSimBetaRZ = booker.book2D(pre + "_hRecVsSimBetaRZ",
534  "4D segment rec beta vs sim beta (RZ) in RZ SL;#alpha^{y} (rad)",
535  100,
536  -1.5,
537  1.5,
538  100,
539  -1.5,
540  1.5);
541 
542  hResBetaVsEtaRZ = booker.book2D(pre + "_hResBetaVsEtaRZ",
543  "4D RecHit residual on beta direction vs eta;#eta in "
544  "RZ SL;#alpha^{y}_{rec}-#alpha^{y}_{sim} (rad)",
545  100,
546  -2.5,
547  2.5,
548  200,
549  -0.2,
550  0.2);
551  hResBetaVsPhiRZ = booker.book2D(pre + "_hResBetaVsPhiRZ",
552  "4D RecHit residual on beta direction vs phi in RZ "
553  "SL;#phi (rad);#alpha^{y}_{rec}-#alpha^{y}_{sim} (rad)",
554  100,
555  -3.2,
556  3.2,
557  200,
558  -0.2,
559  0.2);
560  hResYVsEtaRZ = booker.book2D(pre + "_hResYVsEtaRZ",
561  "4D RecHit residual on position (y) in chamber vs eta "
562  "in RZ SL;#eta;y_{rec}-y_{sim} (cm)",
563  100,
564  -2.5,
565  2.5,
566  150,
567  -0.6,
568  0.6);
569  hResYVsPhiRZ = booker.book2D(pre + "_hResYVsPhiRZ",
570  "4D RecHit residual on position (y) in chamber vs phi "
571  "in RZ SL;#phi (rad);y_{rec}-y_{sim} (cm)",
572  100,
573  -3.2,
574  3.2,
575  150,
576  -0.6,
577  0.6);
578 
579  booker.setCurrentFolder("DT/4DSegments/Pull/");
580  hPullAlphaVsEta = booker.book2D(pre + "_hPullAlphaVsEta",
581  "4D RecHit pull on #alpha_x direction vs "
582  "eta;#eta;(#alpha^{x}_{rec}-#alpha^{x}_{sim})/#sigma",
583  100,
584  -2.5,
585  2.5,
586  100,
587  -5,
588  5);
589  hPullAlphaVsPhi = booker.book2D(pre + "_hPullAlphaVsPhi",
590  "4D RecHit pull on #alpha_x direction vs phi (rad);#phi "
591  "(rad);(#alpha^{x}_{rec}-#alpha^{x}_{sim})/#sigma",
592  100,
593  -3.2,
594  3.2,
595  100,
596  -5,
597  5);
598  hPullBetaVsEta = booker.book2D(pre + "_hPullBetaVsEta",
599  "4D RecHit pull on beta direction vs "
600  "eta;#eta;(#alpha^{y}_{rec}-#alpha^{y}_{sim})/#sigma",
601  100,
602  -2.5,
603  2.5,
604  200,
605  -5,
606  5);
607  hPullBetaVsPhi = booker.book2D(pre + "_hPullBetaVsPhi",
608  "4D RecHit pull on beta direction vs phi;#phi "
609  "(rad);(#alpha^{y}_{rec}-#alpha^{y}_{sim})/#sigma",
610  100,
611  -3.2,
612  3.2,
613  200,
614  -5,
615  5);
616  hPullXVsEta = booker.book2D(pre + "_hPullXVsEta",
617  "4D RecHit pull on position (x) in chamber "
618  "vs eta;#eta;(x_{rec}-x_{sim})#sigma",
619  100,
620  -2.5,
621  2.5,
622  150,
623  -5,
624  5);
625  hPullXVsPhi = booker.book2D(pre + "_hPullXVsPhi",
626  "4D RecHit pull on position (x) in chamber "
627  "vs phi;#phi (rad);(x_{rec}-x_{sim})/#sigma",
628  100,
629  -3.2,
630  3.2,
631  150,
632  -5,
633  5);
634  hPullYVsEta = booker.book2D(pre + "_hPullYVsEta",
635  "4D RecHit pull on position (y) in chamber "
636  "vs eta;#eta;(y_{rec}-y_{sim})/#sigma",
637  100,
638  -2.5,
639  2.5,
640  150,
641  -5,
642  5);
643  hPullYVsPhi = booker.book2D(pre + "_hPullYVsPhi",
644  "4D RecHit pull on position (y) in chamber "
645  "vs phi;#phi (rad);(y_{rec}-y_{sim})/#sigma",
646  100,
647  -3.2,
648  3.2,
649  150,
650  -5,
651  5);
652  hPullBetaVsEtaRZ = booker.book2D(pre + "_hPullBetaVsEtaRZ",
653  "4D RecHit pull on beta direction vs eta;#eta in RZ "
654  "SL;(#alpha^{y}_{rec}-#alpha^{y}_{sim})/#sigma",
655  100,
656  -2.5,
657  2.5,
658  200,
659  -5,
660  5);
661  hPullBetaVsPhiRZ = booker.book2D(pre + "_hPullBetaVsPhiRZ",
662  "4D RecHit pull on beta direction vs phi in RZ SL;#phi "
663  "(rad);(#alpha^{y}_{rec}-#alpha^{y}_{sim})/#sigma",
664  100,
665  -3.2,
666  3.2,
667  200,
668  -5,
669  5);
670  hPullYVsEtaRZ = booker.book2D(pre + "_hPullYVsEtaRZ",
671  "4D RecHit pull on position (y) in chamber vs eta in "
672  "RZ SL;#eta;(y_{rec}-y_{sim})/#sigma",
673  100,
674  -2.5,
675  2.5,
676  150,
677  -5,
678  5);
679  hPullYVsPhiRZ = booker.book2D(pre + "_hPullYVsPhiRZ",
680  "4D RecHit pull on position (y) in chamber vs phi in "
681  "RZ SL;#phi (rad);(y_{rec}-y_{sim})/#sigma",
682  100,
683  -3.2,
684  3.2,
685  150,
686  -5,
687  5);
688  }
689  booker.setCurrentFolder("DT/4DSegments/Res/");
690  hResAlpha = booker.book1D(pre + "_hResAlpha",
691  "4D RecHit residual on #alpha_x "
692  "direction;#alpha^{x}_{rec}-#alpha^{x}_{sim} (rad)",
693  200,
694  -0.015,
695  0.015);
696 
697  hResBeta = booker.book1D(pre + "_hResBeta",
698  "4D RecHit residual on beta "
699  "direction;#alpha^{y}_{rec}-#alpha^{y}_{sim} (rad)",
700  200,
701  -0.1,
702  0.1);
703  hResX = booker.book1D(
704  pre + "_hResX", "4D RecHit residual on position (x) in chamber;x_{rec}-x_{sim} (cm)", 150, -0.15, 0.15);
705  hResY = booker.book1D(
706  pre + "_hResY", "4D RecHit residual on position (y) in chamber;y_{rec}-y_{sim} (cm)", 150, -0.6, 0.6);
707 
708  // histo in rz SL reference frame.
709  hResBetaRZ = booker.book1D(pre + "_hResBetaRZ",
710  "4D RecHit residual on beta direction in RZ "
711  "SL;#alpha^{y}_{rec}-#alpha^{y}_{sim} (rad)",
712  200,
713  -0.1,
714  0.1);
715 
716  hResYRZ = booker.book1D(pre + "_hResYRZ",
717  "4D RecHit residual on position (y) in chamber in "
718  "RZ SL;y_{rec}-y_{sim} (cm)",
719  150,
720  -0.15,
721  0.15);
722 
723  // Pulls
724  booker.setCurrentFolder("DT/4DSegments/Pull/");
725 
726  hPullAlpha = booker.book1D(pre + "_hPullAlpha",
727  "4D RecHit pull on #alpha_x "
728  "direction;(#alpha^{x}_{rec}-#alpha^{x}_{sim})/#sigma",
729  200,
730  -5,
731  5);
732  hPullBeta = booker.book1D(pre + "_hPullBeta",
733  "4D RecHit pull on beta "
734  "direction;(#alpha^{y}_{rec}-#alpha^{y}_{sim})/#sigma",
735  200,
736  -5,
737  5);
738 
739  hPullX =
740  booker.book1D(pre + "_hPullX", "4D RecHit pull on position (x) in chamber;(x_{rec}-x_{sim})#sigma", 150, -5, 5);
741 
742  hPullY = booker.book1D(
743  pre + "_hPullY", "4D RecHit pull on position (y) in chamber;(y_{rec}-y_{sim})/#sigma", 150, -5, 5);
744 
745  hPullBetaRZ = booker.book1D(pre + "_hPullBetaRZ",
746  "4D RecHit pull on beta direction in RZ "
747  "SL;(#alpha^{y}_{rec}-#alpha^{y}_{sim})/#sigma",
748  200,
749  -5,
750  5);
751 
752  hPullYRZ = booker.book1D(pre + "_hPullYRZ",
753  "4D RecHit pull on position (y) in chamber in RZ "
754  "SL;(y_{rec}-y_{sim})/#sigma",
755  150,
756  -5,
757  5);
758 
759  // NHits, t0
760  if (local_) {
761  booker.setCurrentFolder("DT/4DSegments/");
762  hHitMult = booker.book2D(pre + "_hNHits", "NHits", 12, 0, 12, 6, 0, 6);
763  ht0 = booker.book2D(pre + "_ht0", "t0", 200, -25, 25, 200, -25, 25);
764  }
765  }
766 
767  void fill(float simDirectionAlpha,
768  float recDirectionAlpha,
769  float simDirectionBeta,
770  float recDirectionBeta,
771  float simX,
772  float recX,
773  float simY,
774  float recY,
775  float simEta,
776  float simPhi,
777  float recYRZ,
778  float simYRZ,
779  float recBetaRZ,
780  float simBetaRZ,
781  float sigmaAlpha,
782  float sigmaBeta,
783  float sigmaX,
784  float sigmaY,
785  float sigmaBetaRZ,
786  float sigmaYRZ,
787  int nHitsPhi,
788  int nHitsTheta,
789  float t0Phi,
790  float t0Theta) {
791  float resAlpha = recDirectionAlpha - simDirectionAlpha;
792  hResAlpha.fill(resAlpha);
793  hPullAlpha.fill(resAlpha / sigmaAlpha);
794  float resBeta = recDirectionBeta - simDirectionBeta;
795  hResBeta.fill(resBeta);
796  hPullBeta.fill(resBeta / sigmaBeta);
797  float resX = recX - simX;
798  hResX.fill(resX);
799  hPullX.fill(resX / sigmaX);
800  float resY = recY - simY;
801  hResY.fill(resY);
802  hPullY.fill(resY / sigmaY);
803 
804  float resBetaRZ = recBetaRZ - simBetaRZ;
805  hResBetaRZ.fill(resBetaRZ);
806  hPullBetaRZ.fill(resBetaRZ / sigmaBetaRZ);
807  float resYRZ = recYRZ - simYRZ;
808  hResYRZ.fill(resYRZ);
809  hPullYRZ.fill(resYRZ / sigmaYRZ);
810  if (doall_) {
811  hRecAlpha.fill(recDirectionAlpha);
812  hRecBeta.fill(recDirectionBeta);
813  hSimAlpha.fill(simDirectionAlpha);
814  hSimBeta.fill(simDirectionBeta);
815  hRecVsSimAlpha.fill(simDirectionAlpha, recDirectionAlpha);
816  hRecVsSimBeta.fill(simDirectionBeta, recDirectionBeta);
817  hResAlphaVsEta.fill(simEta, resAlpha);
818  hResAlphaVsPhi.fill(simPhi, resAlpha);
819  hPullAlphaVsEta.fill(simEta, resAlpha / sigmaAlpha);
820  hPullAlphaVsPhi.fill(simPhi, resAlpha / sigmaAlpha);
821  hResBetaVsEta.fill(simEta, resBeta);
822  hResBetaVsPhi.fill(simPhi, resBeta);
823  hPullBetaVsEta.fill(simEta, resBeta / sigmaBeta);
824  hPullBetaVsPhi.fill(simPhi, resBeta / sigmaBeta);
825  hResXVsEta.fill(simEta, resX);
826  hResXVsPhi.fill(simPhi, resX);
827  hPullXVsEta.fill(simEta, resX / sigmaX);
828  hPullXVsPhi.fill(simPhi, resX / sigmaX);
829  hResYVsEta.fill(simEta, resY);
830  hResYVsPhi.fill(simPhi, resY);
831  hPullYVsEta.fill(simEta, resY / sigmaY);
832  hPullYVsPhi.fill(simPhi, resY / sigmaY);
833  hResAlphaVsResBeta.fill(resBeta, resAlpha);
834  hResXVsResY.fill(resY, resX);
835  hResAlphaVsResX.fill(resX, resAlpha);
836  hResAlphaVsResY.fill(resY, resAlpha);
837 
838  // RZ SuperLayer
839  hRecBetaRZ.fill(recBetaRZ);
840  hSimBetaRZ.fill(simBetaRZ);
841  hRecVsSimBetaRZ.fill(simBetaRZ, recBetaRZ);
842  hResBetaVsEtaRZ.fill(simEta, resBetaRZ);
843  hResBetaVsPhiRZ.fill(simPhi, resBetaRZ);
844  hPullBetaVsEtaRZ.fill(simEta, resBetaRZ / sigmaBetaRZ);
845  hPullBetaVsPhiRZ.fill(simPhi, resBetaRZ / sigmaBetaRZ);
846  hResYVsEtaRZ.fill(simEta, resYRZ);
847  hResYVsPhiRZ.fill(simPhi, resYRZ);
848  hPullYVsEtaRZ.fill(simEta, resYRZ / sigmaYRZ);
849  hPullYVsPhiRZ.fill(simPhi, resYRZ / sigmaYRZ);
850  }
851  if (local_) {
852  hHitMult.fill(nHitsPhi, nHitsTheta);
853  ht0.fill(t0Phi, t0Theta);
854  }
855  }
856 
857 private:
892 
893  // RZ SL
909 
912 
913  bool doall_;
914  bool local_;
916 };
917 
918 //---------------------------------------------------------------------------------------
920 class HEff4DHit {
921 public:
923  std::string pre = "4D_";
924  pre += name;
925  name_ = pre;
926  booker.setCurrentFolder("DT/4DSegments/");
927  hEtaSimSegm = booker.book1D(pre + "_hEtaSimSegm", "Eta of SimHit segment", 100, -1.5, 1.5);
928  hEtaRecHit =
929  booker.book1D(pre + "_hEtaRecHit", "Eta distribution of SimHit segment with 4D RecHit", 100, -1.5, 1.5);
930 
931  hPhiSimSegm = booker.book1D(pre + "_hPhiSimSegm", "Phi of SimHit segment", 100, -M_PI, M_PI);
932  hPhiRecHit =
933  booker.book1D(pre + "_hPhiRecHit", "Phi distribution of SimHit segment with 4D RecHit", 100, -M_PI, M_PI);
934 
935  hXSimSegm = booker.book1D(pre + "_hXSimSegm", "X position in Chamber of SimHit segment (cm)", 100, -200, 200);
936  hXRecHit =
937  booker.book1D(pre + "_hXRecHit", "X position in Chamber of SimHit segment with 4D RecHit (cm)", 100, -200, 200);
938 
939  hYSimSegm = booker.book1D(pre + "_hYSimSegm", "Y position in Chamber of SimHit segment (cm)", 100, -200, 200);
940  hYRecHit =
941  booker.book1D(pre + "_hYRecHit", "Y position in Chamber of SimHit segment with 4D RecHit (cm)", 100, -200, 200);
942 
943  hAlphaSimSegm = booker.book1D(pre + "_hAlphaSimSegm", "Alpha of SimHit segment (rad)", 100, -1.5, 1.5);
944  hAlphaRecHit = booker.book1D(pre + "_hAlphaRecHit", "Alpha of SimHit segment with 4D RecHit (rad)", 100, -1.5, 1.5);
945 
946  hBetaSimSegm = booker.book1D(pre + "_hBetaSimSegm", "Beta of SimHit segment (rad)", 100, -2, 2);
947  hBetaRecHit = booker.book1D(pre + "_hBetaRecHit", "Beta of SimHit segment with 4D RecHit (rad)", 100, -2, 2);
948 
949  hNSeg = booker.book1D(pre + "_hNSeg", "Number of rec segment per sim seg", 20, 0, 20);
950  }
951 
952  void fill(float etaSimSegm,
953  float phiSimSegm,
954  float xSimSegm,
955  float ySimSegm,
956  float alphaSimSegm,
957  float betaSimSegm,
958  bool fillRecHit,
959  int nSeg) {
960  hEtaSimSegm.fill(etaSimSegm);
961  hPhiSimSegm.fill(phiSimSegm);
962  hXSimSegm.fill(xSimSegm);
963  hYSimSegm.fill(ySimSegm);
964  hAlphaSimSegm.fill(alphaSimSegm);
965  hBetaSimSegm.fill(betaSimSegm);
966  hNSeg.fill(nSeg);
967 
968  if (fillRecHit) {
969  hEtaRecHit.fill(etaSimSegm);
970  hPhiRecHit.fill(phiSimSegm);
971  hXRecHit.fill(xSimSegm);
972  hYRecHit.fill(ySimSegm);
973  hAlphaRecHit.fill(alphaSimSegm);
974  hBetaRecHit.fill(betaSimSegm);
975  }
976  }
977 
978 private:
991 
993 
995 };
996 
997 //---------------------------------------------------------------------------------------
1000 public:
1002  std::string pre = "4D_";
1003  pre += name;
1004  name_ = pre;
1005  booker.setCurrentFolder("DT/4DSegments/");
1006  hEffVsEta = booker.book1D(pre + "_hEffVsEta", "4D RecHit Efficiency as a function of Eta", 100, -1.5, 1.5);
1007  hEffVsPhi = booker.book1D(pre + "_hEffVsPhi", "4D RecHit Efficiency as a function of Phi", 100, -M_PI, M_PI);
1008  hEffVsX =
1009  booker.book1D(pre + "_hEffVsX", "4D RecHit Efficiency as a function of x position in Chamber", 100, -200, 200);
1010  hEffVsY =
1011  booker.book1D(pre + "_hEffVsY", "4D RecHit Efficiency as a function of y position in Chamber", 100, -200, 200);
1012  hEffVsAlpha = booker.book1D(pre + "_hEffVsAlpha", "4D RecHit Efficiency as a function of alpha", 100, -1.5, 1.5);
1013  hEffVsBeta = booker.book1D(pre + "_hEffVsBeta", "4D RecHit Efficiency as a function of beta", 100, -2, 2);
1014 
1015  computeEfficiency(getter);
1016  }
1017 
1019  std::string pre = "DT/4DSegments/" + name_;
1020  divide(hEffVsEta, getter.get(pre + "_hEtaRecHit"), getter.get(pre + "_hEtaSimSegm"));
1021  divide(hEffVsPhi, getter.get(pre + "_hPhiRecHit"), getter.get(pre + "_hPhiSimSegm"));
1022  divide(hEffVsX, getter.get(pre + "_hXRecHit"), getter.get(pre + "_hXSimSegm"));
1023  divide(hEffVsY, getter.get(pre + "_hYRecHit"), getter.get(pre + "_hYSimSegm"));
1024  divide(hEffVsAlpha, getter.get(pre + "_hAlphaRecHit"), getter.get(pre + "_hAlphaSimSegm"));
1025  divide(hEffVsBeta, getter.get(pre + "_hBetaRecHit"), getter.get(pre + "_hBetaSimSegm"));
1026  }
1027 
1028 private:
1031 
1034 
1037 
1039 };
1040 
1041 #endif // Validation_DTRecHits_Histograms_h
MonitorElement * hEffVsEta
Definition: Histograms.h:1029
void computeEfficiency(DQMStore::IGetter &getter)
Definition: Histograms.h:191
ConcurrentMonitorElement hResBetaVsPhiRZ
Definition: Histograms.h:899
ConcurrentMonitorElement hResAngleVsEta
Definition: Histograms.h:304
ConcurrentMonitorElement hResYVsPhiRZ
Definition: Histograms.h:902
void fill(float angleSimSegment, float angleRecSegment, float posSimSegment, float posRecSegment, float etaSimSegment, float phiSimSegment, float sigmaPos, float sigmaAngle)
Definition: Histograms.h:273
ConcurrentMonitorElement hEtaSimSegm
Definition: Histograms.h:354
ConcurrentMonitorElement ht0
Definition: Histograms.h:911
ConcurrentMonitorElement hPullX
Definition: Histograms.h:886
ConcurrentMonitorElement hEtaRecHit
Definition: Histograms.h:355
ConcurrentMonitorElement hResVsAngle
Definition: Histograms.h:121
ConcurrentMonitorElement hNSeg
Definition: Histograms.h:992
ConcurrentMonitorElement hRecVsSimBeta
Definition: Histograms.h:863
std::string name_
Definition: Histograms.h:994
ConcurrentMonitorElement hSimBeta
Definition: Histograms.h:861
HRes4DHit(const std::string &name, DQMStore::ConcurrentBooker &booker, bool doall=true, bool local=true)
Definition: Histograms.h:405
ConcurrentMonitorElement hAlphaRecHit
Definition: Histograms.h:988
ConcurrentMonitorElement hResXVsPhi
Definition: Histograms.h:872
A set of histograms for efficiency 4D RecHits (harvesting)
Definition: Histograms.h:999
ConcurrentMonitorElement hPosSimSegm
Definition: Histograms.h:358
ConcurrentMonitorElement hResAlphaVsResY
Definition: Histograms.h:879
ConcurrentMonitorElement hPullVsAngle
Definition: Histograms.h:127
ConcurrentMonitorElement hPhiSimSegm
Definition: Histograms.h:981
ConcurrentMonitorElement hResBeta
Definition: Histograms.h:867
ConcurrentMonitorElement hResPos
Definition: Histograms.h:306
MonitorElement * hEffVsEta
Definition: Histograms.h:199
A set of histograms fo efficiency computation for 1D RecHits (producer)
Definition: Histograms.h:135
void fill(float etaSimSegm, float phiSimSegm, float posSimSegm, float angleSimSegm, bool fillRecHit)
Definition: Histograms.h:339
std::string name_
Definition: Histograms.h:398
ConcurrentMonitorElement hDistRecHit
Definition: Histograms.h:170
TH1 * getTH1() const
ConcurrentMonitorElement hBetaSimSegm
Definition: Histograms.h:989
ConcurrentMonitorElement hRecBeta
Definition: Histograms.h:859
ConcurrentMonitorElement hResVsEta
Definition: Histograms.h:118
ConcurrentMonitorElement hEtaRecHit
Definition: Histograms.h:980
ConcurrentMonitorElement hSimBetaRZ
Definition: Histograms.h:895
ConcurrentMonitorElement hResPosVsEta
Definition: Histograms.h:307
ConcurrentMonitorElement hRes
Definition: Histograms.h:116
ConcurrentMonitorElement hResAlphaVsPhi
Definition: Histograms.h:866
MonitorElement * hEffVsPhi
Definition: Histograms.h:394
std::string name_
Definition: Histograms.h:915
std::string name_
Definition: Histograms.h:363
ConcurrentMonitorElement hAngleSimSegm
Definition: Histograms.h:360
ConcurrentMonitorElement hPosRecHit
Definition: Histograms.h:359
ConcurrentMonitorElement hRecBetaRZ
Definition: Histograms.h:894
ConcurrentMonitorElement hPullAlphaVsPhi
Definition: Histograms.h:882
Definition: Electron.h:6
bool local_
Definition: Histograms.h:914
MonitorElement * hEffVsPhi
Definition: Histograms.h:1030
ConcurrentMonitorElement hYSimSegm
Definition: Histograms.h:985
MonitorElement * hEffVsX
Definition: Histograms.h:1032
ConcurrentMonitorElement hDist
Definition: Histograms.h:115
MonitorElement * hEffVsEta
Definition: Histograms.h:393
ConcurrentMonitorElement hPhiRecHit
Definition: Histograms.h:357
ConcurrentMonitorElement hResVsDistFE
Definition: Histograms.h:122
ConcurrentMonitorElement hPullYVsEtaRZ
Definition: Histograms.h:907
ConcurrentMonitorElement hSimAlpha
Definition: Histograms.h:860
ConcurrentMonitorElement hPullXVsEta
Definition: Histograms.h:887
MonitorElement * hEffVsAngle
Definition: Histograms.h:396
ConcurrentMonitorElement hPullAlphaVsEta
Definition: Histograms.h:881
ConcurrentMonitorElement hResBetaVsEta
Definition: Histograms.h:868
ConcurrentMonitorElement hPhiSimSegm
Definition: Histograms.h:356
void fill(float distSimHit, float thetaSimHit, float distFESimHit, float distRecHit, float etaSimHit, float phiSimHit, float errRecHit, int station)
Definition: Histograms.h:80
ConcurrentMonitorElement hRecAlpha
Definition: Histograms.h:858
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
MonitorElement * hEffVsY
Definition: Histograms.h:1033
ConcurrentMonitorElement book2D(Args &&...args)
Definition: DQMStore.h:163
ConcurrentMonitorElement hResAlpha
Definition: Histograms.h:864
T sqrt(T t)
Definition: SSEVec.h:18
void fill(float etaSimSegm, float phiSimSegm, float xSimSegm, float ySimSegm, float alphaSimSegm, float betaSimSegm, bool fillRecHit, int nSeg)
Definition: Histograms.h:952
ConcurrentMonitorElement hPullBeta
Definition: Histograms.h:883
ConcurrentMonitorElement hPullYVsPhi
Definition: Histograms.h:891
ConcurrentMonitorElement hPullYVsPhiRZ
Definition: Histograms.h:908
ConcurrentMonitorElement hXRecHit
Definition: Histograms.h:984
ConcurrentMonitorElement hRecAngle
Definition: Histograms.h:300
A set of histograms for efficiency 4D RecHits (producer)
Definition: Histograms.h:920
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
ConcurrentMonitorElement hResXVsEta
Definition: Histograms.h:871
ConcurrentMonitorElement book1D(Args &&...args)
Definition: DQMStore.h:160
ConcurrentMonitorElement hResBetaVsPhi
Definition: Histograms.h:869
ConcurrentMonitorElement hRecVsSimBetaRZ
Definition: Histograms.h:896
ConcurrentMonitorElement hRecVsSimAlpha
Definition: Histograms.h:862
ConcurrentMonitorElement hPullAngle
Definition: Histograms.h:310
MonitorElement * hEffVsAlpha
Definition: Histograms.h:1035
ConcurrentMonitorElement hXSimSegm
Definition: Histograms.h:983
ConcurrentMonitorElement hPullBetaVsPhi
Definition: Histograms.h:885
A set of histograms of residuals and pulls for 1D RecHits.
Definition: Histograms.h:44
std::string name_
Definition: Histograms.h:203
MonitorElement * hEffVsPhi
Definition: Histograms.h:200
ConcurrentMonitorElement hAngleRecHit
Definition: Histograms.h:361
HRes2DHit(const std::string &name, DQMStore::ConcurrentBooker &booker, bool doall=true, bool local=true)
Definition: Histograms.h:210
ConcurrentMonitorElement hYRecHit
Definition: Histograms.h:986
ConcurrentMonitorElement hEtaRecHit
Definition: Histograms.h:164
MonitorElement * get(std::string const &path)
Definition: DQMStore.cc:303
ConcurrentMonitorElement hPullAlpha
Definition: Histograms.h:880
ConcurrentMonitorElement hResAlphaVsResBeta
Definition: Histograms.h:876
#define M_PI
bin
set the eta bin as selection string.
ConcurrentMonitorElement hPullBetaRZ
Definition: Histograms.h:903
std::string name_
Definition: Histograms.h:1038
ConcurrentMonitorElement hPullY
Definition: Histograms.h:889
ConcurrentMonitorElement hResAlphaVsEta
Definition: Histograms.h:865
HEff2DHit(const std::string &name, DQMStore::ConcurrentBooker &booker)
Definition: Histograms.h:321
ConcurrentMonitorElement hResYVsEtaRZ
Definition: Histograms.h:901
ConcurrentMonitorElement hResYRZ
Definition: Histograms.h:900
void computeEfficiency(DQMStore::IGetter &getter)
Definition: Histograms.h:1018
ConcurrentMonitorElement hResYVsPhi
Definition: Histograms.h:875
ConcurrentMonitorElement hResPosVsPhi
Definition: Histograms.h:308
ConcurrentMonitorElement hResAngle
Definition: Histograms.h:303
ConcurrentMonitorElement hHitMult
Definition: Histograms.h:910
ConcurrentMonitorElement hPullBetaVsPhiRZ
Definition: Histograms.h:905
std::string name_
Definition: Histograms.h:130
ConcurrentMonitorElement hResXVsResY
Definition: Histograms.h:877
ConcurrentMonitorElement hResBetaRZ
Definition: Histograms.h:897
void fill(float simDirectionAlpha, float recDirectionAlpha, float simDirectionBeta, float recDirectionBeta, float simX, float recX, float simY, float recY, float simEta, float simPhi, float recYRZ, float simYRZ, float recBetaRZ, float simBetaRZ, float sigmaAlpha, float sigmaBeta, float sigmaX, float sigmaY, float sigmaBetaRZ, float sigmaYRZ, int nHitsPhi, int nHitsTheta, float t0Phi, float t0Theta)
Definition: Histograms.h:767
ConcurrentMonitorElement hResSt[4]
Definition: Histograms.h:117
ConcurrentMonitorElement hResVsPos
Definition: Histograms.h:120
ConcurrentMonitorElement hResY
Definition: Histograms.h:873
ConcurrentMonitorElement hEtaMuSimHit
Definition: Histograms.h:163
void divide(MonitorElement *eff, const MonitorElement *numerator, const MonitorElement *denominator)
Function to fill an efficiency histograms with binomial errors.
Definition: Histograms.h:22
bool doall_
Definition: Histograms.h:913
ConcurrentMonitorElement hResAngleVsPhi
Definition: Histograms.h:305
MonitorElement * hEffVsBeta
Definition: Histograms.h:1036
ConcurrentMonitorElement hPullXVsPhi
Definition: Histograms.h:888
ConcurrentMonitorElement hPull
Definition: Histograms.h:124
ConcurrentMonitorElement hResX
Definition: Histograms.h:870
MonitorElement * hEffVsDist
Definition: Histograms.h:201
HEff1DHit(const std::string &name, DQMStore::ConcurrentBooker &booker)
Definition: Histograms.h:137
ConcurrentMonitorElement hPullSt[4]
Definition: Histograms.h:125
ConcurrentMonitorElement hDistMuSimHit
Definition: Histograms.h:169
std::string name_
Definition: Histograms.h:313
bool doall_
Definition: Histograms.h:129
ConcurrentMonitorElement hPhiRecHit
Definition: Histograms.h:982
ConcurrentMonitorElement hResYVsEta
Definition: Histograms.h:874
HEff2DHitHarvest(const std::string &name, DQMStore::IBooker &booker, DQMStore::IGetter &getter)
Definition: Histograms.h:370
ConcurrentMonitorElement hPullYVsEta
Definition: Histograms.h:890
MonitorElement * hEffVsPos
Definition: Histograms.h:395
ConcurrentMonitorElement hPhiRecHit
Definition: Histograms.h:167
void fill(Args &&...args) const
ConcurrentMonitorElement hAlphaSimSegm
Definition: Histograms.h:987
ConcurrentMonitorElement hPullVsDistFE
Definition: Histograms.h:128
ConcurrentMonitorElement hPullBetaVsEta
Definition: Histograms.h:884
ConcurrentMonitorElement hRecVsSimAngle
Definition: Histograms.h:302
void fill(float distSimHit, float etaSimHit, float phiSimHit, bool fillRecHit)
Definition: Histograms.h:151
void computeEfficiency(DQMStore::IGetter &getter)
Definition: Histograms.h:384
HEff4DHit(const std::string &name, DQMStore::ConcurrentBooker &booker)
Definition: Histograms.h:922
HRes1DHit(const std::string &name, DQMStore::ConcurrentBooker &booker, bool doall=true, bool local=true)
Definition: Histograms.h:46
HEff4DHitHarvest(const std::string &name, DQMStore::IBooker &booker, DQMStore::IGetter &getter)
Definition: Histograms.h:1001
ConcurrentMonitorElement hPullBetaVsEtaRZ
Definition: Histograms.h:904
double sigmaAngle(double Angle, double sigma2TanAngle)
ConcurrentMonitorElement hPullVsPos
Definition: Histograms.h:126
ConcurrentMonitorElement hSimAngle
Definition: Histograms.h:301
ConcurrentMonitorElement hResAlphaVsResX
Definition: Histograms.h:878
ConcurrentMonitorElement hResVsPhi
Definition: Histograms.h:119
std::string name_
Definition: Histograms.h:172
ConcurrentMonitorElement hResPosVsResAngle
Definition: Histograms.h:309
bool doall_
Definition: Histograms.h:314
HEff1DHitHarvest(const std::string &name, DQMStore::IBooker &booker, DQMStore::IGetter &getter)
Definition: Histograms.h:179
ConcurrentMonitorElement hBetaRecHit
Definition: Histograms.h:990
ConcurrentMonitorElement hResBetaVsEtaRZ
Definition: Histograms.h:898
ConcurrentMonitorElement hPullYRZ
Definition: Histograms.h:906
ConcurrentMonitorElement hEtaSimSegm
Definition: Histograms.h:979
A set of histograms fo efficiency computation for 1D RecHits (harvesting)
Definition: Histograms.h:177
ConcurrentMonitorElement hPhiMuSimHit
Definition: Histograms.h:166
ConcurrentMonitorElement hPullPos
Definition: Histograms.h:311