CMS 3D CMS Logo

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