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, 0.,1.2, 150, -0.5,0.5);
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, 0.,+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:
165  HEff1DHit(std::string name_,DQMStore *dbe_){
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, -3.5, 3.5);
339  hSimAngle=0;hSimAngle = dbe_->book1D (pre+"_hSimAngle", "Distribution of segment angles from SimHits;angle (rad)",100, -3.5, 3.5);
340  hRecVsSimAngle=0;hRecVsSimAngle = dbe_->book2D (pre+"_hRecVsSimAngle", "Rec angle vs sim angle;angle (rad)",100, -3.5, 3.5, 100, -3.5, 3.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:
455  HEff2DHit(std::string name_, DQMStore * dbe_){
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){
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, -3.5, 3.5);
676  hRecBeta=0;hRecBeta = dbe_->book1D (pre+"_hRecBeta", "4D RecHit beta distribution:#alpha^{y} (rad)", 100, -3.5, 3.5);
677 
678  hSimAlpha=0;hSimAlpha = dbe_->book1D(pre+"_hSimAlpha", "4D segment from SimHit alpha (RPhi) distribution;i#alpha^{x} (rad)",
679  100, -3.5, 3.5);
680  hSimBeta=0;hSimBeta = dbe_->book1D(pre+"_hSimBeta", "4D segment from SimHit beta distribution;#alpha^{y} (rad)",
681  100, -3.5, 3.5);
682  hRecVsSimAlpha=0;hRecVsSimAlpha = dbe_->book2D(pre+"_hRecVsSimAlpha", "4D segment rec alpha {v}s sim alpha (RPhi);#alpha^{x} (rad)",
683  100, -3.5, 3.5, 100, -3.5, 3.5);
684  hRecVsSimBeta=0;hRecVsSimBeta = dbe_->book2D(pre+"_hRecVsSimBeta", "4D segment rec beta vs sim beta (RZ);#alpha^{y} (rad)",
685  100, -3.5, 3.5, 100, -3.5, 3.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, -3.5, 3.5);
721 
722  hSimBetaRZ=0;hSimBetaRZ = dbe_->book1D(pre+"_hSimBetaRZ", "4D segment from SimHit beta distribution in RZ SL;#alpha^{y} (rad)",
723  100, -3.5, 3.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, -3.5, 3.5, 100, -3.5, 3.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  // Pulls
802  dbe_->setCurrentFolder("DT/4DSegments/Pull/");
803 
804  hPullAlpha=0;hPullAlpha = dbe_->book1D (pre+"_hPullAlpha",
805  "4D RecHit pull on #alpha_x direction;(#alpha^{x}_{rec}-#alpha^{x}_{sim})/#sigma",
806  200, -5, 5);
807  hPullBeta=0;hPullBeta = dbe_->book1D (pre+"_hPullBeta",
808  "4D RecHit pull on beta direction;(#alpha^{y}_{rec}-#alpha^{y}_{sim})/#sigma",
809  200, -5, 5);
810 
811  hPullX=0;hPullX = dbe_->book1D (pre+"_hPullX",
812  "4D RecHit pull on position (x) in chamber;(x_{rec}-x_{sim})#sigma",
813  150, -5, 5);
814 
815  hPullY=0;hPullY = dbe_->book1D (pre+"_hPullY",
816  "4D RecHit pull on position (y) in chamber;(y_{rec}-y_{sim})/#sigma", 150, -5, 5);
817 
818  hPullBetaRZ=0;hPullBetaRZ = dbe_->book1D (pre+"_hPullBetaRZ",
819  "4D RecHit pull on beta direction in RZ SL;(#alpha^{y}_{rec}-#alpha^{y}_{sim})/#sigma",
820  200, -5, 5);
821 
822  hPullYRZ=0;hPullYRZ = dbe_->book1D (pre+"_hPullYRZ",
823  "4D RecHit pull on position (y) in chamber in RZ SL;(y_{rec}-y_{sim})/#sigma",
824  150, -5, 5);
825  }
826 /*
827  HRes4DHit (TString name_, TFile* file){
828  name=name_;
829 
830  hRecAlpha = (TH1F *) file->Get("DQMData/4D_"+name+"_hRecAlpha");
831  hRecBeta = (TH1F *) file->Get("DQMData/4D_"+name+"_hRecBeta");
832 
833  hSimAlpha = (TH1F *) file->Get("DQMData/4D_"+name+"_hSimAlpha");
834  hSimBeta = (TH1F *) file->Get("DQMData/4D_"+name+"_hSimBeta");
835 
836  hRecVsSimAlpha = (TH2F *) file->Get("DQMData/4D_"+name+"_hRecVsSimAlpha");
837  hRecVsSimBeta = (TH2F *) file->Get("DQMData/4D_"+name+"_hRecVsSimBeta");
838 
839  hResAlpha = (TH1F *) file->Get("DQMData/4D_"+name+"_hResAlpha");
840  hResAlphaVsEta = (TH2F *) file->Get("DQMData/4D_"+name+"_hResAlphaVsEta");
841  hResAlphaVsPhi = (TH2F *) file->Get("DQMData/4D_"+name+"_hResAlphaVsPhi");
842 
843  hResBeta = (TH1F *) file->Get("DQMData/4D_"+name+"_hResBeta");
844  hResBetaVsEta = (TH2F *) file->Get("DQMData/4D_"+name+"_hResBetaVsEta");
845  hResBetaVsPhi = (TH2F *) file->Get("DQMData/4D_"+name+"_hResBetaVsPhi");
846 
847  hResX = (TH1F *) file->Get("DQMData/4D_"+name+"_hResX");
848  hResXVsEta = (TH2F *) file->Get("DQMData/4D_"+name+"_hResXVsEta");
849  hResXVsPhi = (TH2F *) file->Get("DQMData/4D_"+name+"_hResXVsPhi");
850 
851  hResY = (TH1F *) file->Get("DQMData/4D_"+name+"_hResY");
852  hResYVsEta = (TH2F *) file->Get("DQMData/4D_"+name+"_hResYVsEta");
853  hResYVsPhi = (TH2F *) file->Get("DQMData/4D_"+name+"_hResYVsPhi");
854 
855  hResAlphaVsResBeta = (TH2F *) file->Get("DQMData/4D_"+name+"_hResAlphaVsResBeta");
856  hResXVsResY = (TH2F *) file->Get("DQMData/4D_"+name+"_hResXVsResY");
857  hResAlphaVsResX = (TH2F *) file->Get("DQMData/4D_"+name+"_hResAlphaVsResX");
858  hResAlphaVsResY = (TH2F *) file->Get("DQMData/4D_"+name+"_hResAlphaVsResY");
859 
860  hPullAlpha = (TH1F *) file->Get("DQMData/4D_"+name+"_hPullAlpha");
861  hPullAlphaVsEta = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullAlphaVsEta");
862  hPullAlphaVsPhi = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullAlphaVsPhi");
863 
864  hPullBeta = (TH1F *) file->Get("DQMData/4D_"+name+"_hPullBeta");
865  hPullBetaVsEta = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullBetaVsEta");
866  hPullBetaVsPhi = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullBetaVsPhi");
867 
868  hPullX = (TH1F *) file->Get("DQMData/4D_"+name+"_hPullX");
869  hPullXVsEta = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullXVsEta");
870  hPullXVsPhi = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullXVsPhi");
871 
872  hPullY = (TH1F *) file->Get("DQMData/4D_"+name+"_hPullY");
873  hPullYVsEta = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullYVsEta");
874  hPullYVsPhi = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullYVsPhi");
875 
876  // RX SL frame
877  hRecBetaRZ = (TH1F *) file->Get("DQMData/4D_"+name+"_hRecBetaRZ");
878 
879  hSimBetaRZ = (TH1F *) file->Get("DQMData/4D_"+name+"_hSimBetaRZ");
880 
881  hRecVsSimBetaRZ = (TH2F *) file->Get("DQMData/4D_"+name+"_hRecVsSimBetaRZ");
882 
883  hResBetaRZ = (TH1F *) file->Get("DQMData/4D_"+name+"_hResBetaRZ");
884  hResBetaVsEtaRZ = (TH2F *) file->Get("DQMData/4D_"+name+"_hResBetaVsEtaRZ");
885  hResBetaVsPhiRZ = (TH2F *) file->Get("DQMData/4D_"+name+"_hResBetaVsPhiRZ");
886 
887  hResYRZ = (TH1F *) file->Get("DQMData/4D_"+name+"_hResYRZ");
888  hResYVsEtaRZ = (TH2F *) file->Get("DQMData/4D_"+name+"_hResYVsEtaRZ");
889  hResYVsPhiRZ = (TH2F *) file->Get("DQMData/4D_"+name+"_hResYVsPhiRZ");
890 
891  hPullBetaRZ = (TH1F *) file->Get("DQMData/4D_"+name+"_hPullBetaRZ");
892  hPullBetaVsEtaRZ = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullBetaVsEtaRZ");
893  hPullBetaVsPhiRZ = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullBetaVsPhiRZ");
894 
895  hPullYRZ = (TH1F *) file->Get("DQMData/4D_"+name+"_hPullYRZ");
896  hPullYVsEtaRZ = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullYVsEtaRZ");
897  hPullYVsPhiRZ = (TH2F *) file->Get("DQMData/4D_"+name+"_hPullYVsPhiRZ");
898  }
899 
900  ~HRes4DHit(){
901  }
902 */
903  void Fill(float simDirectionAlpha,
904  float recDirectionAlpha,
905  float simDirectionBeta,
906  float recDirectionBeta,
907  float simX,
908  float recX,
909  float simY,
910  float recY,
911  float simEta,
912  float simPhi,
913  float recYRZ,
914  float simYRZ,
915  float recBetaRZ,
916  float simBetaRZ,
917  float sigmaAlpha,
918  float sigmaBeta,
919  float sigmaX,
920  float sigmaY,
921  float sigmaBetaRZ,
922  float sigmaYRZ
923  ) {
924  float resAlpha = recDirectionAlpha - simDirectionAlpha;
925  hResAlpha->Fill(resAlpha);
926  hPullAlpha->Fill(resAlpha/sigmaAlpha);
927  float resBeta = recDirectionBeta - simDirectionBeta;
928  hResBeta->Fill(resBeta);
929  hPullBeta->Fill(resBeta/sigmaBeta);
930  float resX = recX - simX;
931  hResX->Fill(resX);
932  hPullX->Fill(resX/sigmaX);
933  float resY = recY - simY;
934  hResY->Fill(resY);
935  hPullY->Fill(resY/sigmaY);
936 
937 
938  float resBetaRZ = recBetaRZ - simBetaRZ;
939  hResBetaRZ->Fill(resBetaRZ);
940  hPullBetaRZ->Fill(resBetaRZ/sigmaBetaRZ);
941  float resYRZ = recYRZ - simYRZ;
942  hResYRZ->Fill(resYRZ);
943  hPullYRZ->Fill(resYRZ/sigmaYRZ);
944  if(_doall){
945  hRecAlpha->Fill(recDirectionAlpha);
946  hRecBeta->Fill(recDirectionBeta);
947  hSimAlpha->Fill(simDirectionAlpha);
948  hSimBeta->Fill(simDirectionBeta);
949  hRecVsSimAlpha->Fill(simDirectionAlpha, recDirectionAlpha);
950  hRecVsSimBeta->Fill(simDirectionBeta, recDirectionBeta);
951  hResAlphaVsEta->Fill(simEta, resAlpha);
952  hResAlphaVsPhi->Fill(simPhi, resAlpha);
953  hPullAlphaVsEta->Fill(simEta, resAlpha/sigmaAlpha);
954  hPullAlphaVsPhi->Fill(simPhi, resAlpha/sigmaAlpha);
955  hResBetaVsEta->Fill(simEta, resBeta);
956  hResBetaVsPhi->Fill(simPhi, resBeta);
957  hPullBetaVsEta->Fill(simEta, resBeta/sigmaBeta);
958  hPullBetaVsPhi->Fill(simPhi, resBeta/sigmaBeta);
959  hResXVsEta->Fill(simEta, resX);
960  hResXVsPhi->Fill(simPhi, resX);
961  hPullXVsEta->Fill(simEta, resX/sigmaX);
962  hPullXVsPhi->Fill(simPhi, resX/sigmaX);
963  hResYVsEta->Fill(simEta, resY);
964  hResYVsPhi->Fill(simPhi, resY);
965  hPullYVsEta->Fill(simEta, resY/sigmaY);
966  hPullYVsPhi->Fill(simPhi, resY/sigmaY);
967  hResAlphaVsResBeta->Fill(resBeta, resAlpha);
968  hResXVsResY->Fill(resY, resX);
969  hResAlphaVsResX->Fill(resX, resAlpha);
970  hResAlphaVsResY->Fill(resY, resAlpha);
971  // RZ SuperLayer
972  hRecBetaRZ->Fill(recBetaRZ);
973  hSimBetaRZ->Fill(simBetaRZ);
974  hRecVsSimBetaRZ->Fill(simBetaRZ, recBetaRZ);
975  hResBetaVsEtaRZ->Fill(simEta, resBetaRZ);
976  hResBetaVsPhiRZ->Fill(simPhi, resBetaRZ);
977  hPullBetaVsEtaRZ->Fill(simEta, resBetaRZ/sigmaBetaRZ);
978  hPullBetaVsPhiRZ->Fill(simPhi, resBetaRZ/sigmaBetaRZ);
979  hResYVsEtaRZ->Fill(simEta, resYRZ);
980  hResYVsPhiRZ->Fill(simPhi, resYRZ);
981  hPullYVsEtaRZ->Fill(simEta, resYRZ/sigmaYRZ);
982  hPullYVsPhiRZ->Fill(simPhi, resYRZ/sigmaYRZ);
983  }
984  }
985 
986  /*void Write() {
987  hRecAlpha->Write();
988  hRecBeta->Write();
989  hSimAlpha->Write();
990  hSimBeta->Write();
991  hRecVsSimAlpha->Write();
992  hRecVsSimBeta->Write();
993  hResAlpha->Write();
994  hResAlphaVsEta->Write();
995  hResAlphaVsPhi->Write();
996  hResBeta->Write();
997  hResBetaVsEta->Write();
998  hResBetaVsPhi->Write();
999  hResX->Write();
1000  hResXVsEta->Write();
1001  hResXVsPhi->Write();
1002  hResY->Write();
1003  hResYVsEta->Write();
1004  hResYVsPhi->Write();
1005  hResAlphaVsResBeta->Write();
1006  hResXVsResY->Write();
1007  hResAlphaVsResX->Write();
1008  hResAlphaVsResY->Write();
1009  hPullAlpha->Write();
1010  hPullAlphaVsEta->Write();
1011  hPullAlphaVsPhi->Write();
1012  hPullBeta->Write();
1013  hPullBetaVsEta->Write();
1014  hPullBetaVsPhi->Write();
1015  hPullX->Write();
1016  hPullXVsEta->Write();
1017  hPullXVsPhi->Write();
1018  hPullY->Write();
1019  hPullYVsEta->Write();
1020  hPullYVsPhi->Write();
1021 
1022 
1023  hRecBetaRZ->Write();
1024  hSimBetaRZ->Write();
1025  hRecVsSimBetaRZ->Write();
1026  hResBetaRZ->Write();
1027  hResBetaVsEtaRZ->Write();
1028  hResBetaVsPhiRZ->Write();
1029  hResYRZ->Write();
1030  hResYVsEtaRZ->Write();
1031  hResYVsPhiRZ->Write();
1032  hPullBetaRZ->Write();
1033  hPullBetaVsEtaRZ->Write();
1034  hPullBetaVsPhiRZ->Write();
1035  hPullYRZ->Write();
1036  hPullYVsEtaRZ->Write();
1037  hPullYVsPhiRZ->Write();
1038  }*/
1039 
1040  public:
1041 
1044 
1047 
1050 
1054 
1058 
1062 
1066 
1071 
1075 
1079 
1083 
1087 
1088  // RZ SL
1090 
1092 
1094 
1098 
1102 
1106 
1110  bool _doall;
1111  TString name;
1112 };
1113 
1114 //---------------------------------------------------------------------------------------
1117  public:
1118  HEff4DHit(std::string name_,DQMStore *dbe_){
1119  std::string pre ="4D_";
1120  pre += name_;
1121  name = pre;
1122  dbe_->setCurrentFolder("DT/4DSegments/");
1123  hEtaSimSegm=0;hEtaSimSegm = dbe_->book1D(pre+"_hEtaSimSegm", "Eta of SimHit segment", 100, -1.5, 1.5);
1124  hEtaRecHit=0;hEtaRecHit = dbe_->book1D(pre+"_hEtaRecHit", "Eta distribution of SimHit segment with 4D RecHit",
1125  100, -1.5, 1.5);
1126  hEffVsEta = 0;
1127 
1128  hPhiSimSegm=0;hPhiSimSegm = dbe_->book1D(pre+"_hPhiSimSegm", "Phi of SimHit segment",
1129  100, -TMath::Pi(),TMath::Pi());
1130  hPhiRecHit=0;hPhiRecHit = dbe_->book1D(pre+"_hPhiRecHit", "Phi distribution of SimHit segment with 4D RecHit",
1131  100, -TMath::Pi(),TMath::Pi());
1132  hEffVsPhi = 0;
1133 
1134 
1135  hXSimSegm=0;hXSimSegm = dbe_->book1D(pre+"_hXSimSegm", "X position in Chamber of SimHit segment (cm)",
1136  100, -200, 200);
1137  hXRecHit=0;hXRecHit = dbe_->book1D(pre+"_hXRecHit", "X position in Chamber of SimHit segment with 4D RecHit (cm)",
1138  100, -200, 200);
1139  hEffVsX = 0;
1140 
1141  hYSimSegm=0;hYSimSegm = dbe_->book1D(pre+"_hYSimSegm", "Y position in Chamber of SimHit segment (cm)",
1142  100, -200, 200);
1143  hYRecHit=0;hYRecHit = dbe_->book1D(pre+"_hYRecHit", "Y position in Chamber of SimHit segment with 4D RecHit (cm)",
1144  100, -200, 200);
1145  hEffVsY = 0;
1146 
1147  hAlphaSimSegm=0;hAlphaSimSegm = dbe_->book1D(pre+"_hAlphaSimSegm", "Alpha of SimHit segment (rad)",
1148  100, -1.5, 1.5);
1149  hAlphaRecHit=0;hAlphaRecHit = dbe_->book1D(pre+"_hAlphaRecHit", "Alpha of SimHit segment with 4D RecHit (rad)",
1150  100, -1.5, 1.5);
1151  hEffVsAlpha = 0;
1152 
1153  hBetaSimSegm=0;hBetaSimSegm = dbe_->book1D(pre+"_hBetaSimSegm", "Beta of SimHit segment (rad)",
1154  100, -2, 2);
1155  hBetaRecHit=0;hBetaRecHit = dbe_->book1D(pre+"_hBetaRecHit", "Beta of SimHit segment with 4D RecHit (rad)",
1156  100, -2, 2);
1157  hEffVsBeta = 0;
1158 
1159  }
1160 /*
1161  HEff4DHit (TString name_, TFile* file){
1162  name=name_;
1163  hEtaSimSegm = (TH1F *) file->Get("DQMData/4D_"+name+"_hEtaSimSegm");
1164  hEtaRecHit = (TH1F *) file->Get("DQMData/4D_"+name+"_hEtaRecHit");
1165  hEffVsEta = (TH1F *) file->Get("DQMData/4D_"+name+"_hEffVsEta");
1166 
1167  hPhiSimSegm = (TH1F *) file->Get("DQMData/4D_"+name+"_hPhiSimSegm");
1168  hPhiRecHit = (TH1F *) file->Get("DQMData/4D_"+name+"_hPhiRecHit");
1169  hEffVsPhi = (TH1F *) file->Get("DQMData/4D_"+name+"_hEffVsPhi");
1170 
1171  hXSimSegm = (TH1F *) file->Get("DQMData/4D_"+name+"_hXSimSegm");
1172  hXRecHit = (TH1F *) file->Get("DQMData/4D_"+name+"_hXRecHit");
1173  hEffVsX = (TH1F *) file->Get("DQMData/4D_"+name+"_hEffVsX");
1174 
1175  hYSimSegm = (TH1F *) file->Get("DQMData/4D_"+name+"_hYSimSegm");
1176  hYRecHit = (TH1F *) file->Get("DQMData/4D_"+name+"_hYRecHit");
1177  hEffVsY = (TH1F *) file->Get("DQMData/4D_"+name+"_hEffVsY");
1178 
1179  hAlphaSimSegm = (TH1F *) file->Get("DQMData/4D_"+name+"_hAlphaSimSegm");
1180  hAlphaRecHit = (TH1F *) file->Get("DQMData/4D_"+name+"_hAlphaRecHit");
1181  hEffVsAlpha = (TH1F *) file->Get("DQMData/4D_"+name+"_hEffVsAlpha");
1182 
1183  hBetaSimSegm = (TH1F *) file->Get("DQMData/4D_"+name+"_hBetaSimSegm");
1184  hBetaRecHit = (TH1F *) file->Get("DQMData/4D_"+name+"_hBetaRecHit");
1185  hEffVsBeta = (TH1F *) file->Get("DQMData/4D_"+name+"_hEffVsBeta");
1186  }
1187 */
1188 
1190 
1191  /*delete hEtaSimSegm;
1192  delete hEtaRecHit;
1193  delete hEffVsEta;
1194  delete hPhiSimSegm;
1195  delete hPhiRecHit;
1196  delete hEffVsPhi;
1197  delete hXSimSegm;
1198  delete hXRecHit;
1199  delete hEffVsX;
1200  delete hYSimSegm;
1201  delete hYRecHit;
1202  delete hEffVsY;
1203  delete hAlphaSimSegm;
1204  delete hAlphaRecHit;
1205  delete hEffVsAlpha;
1206  delete hBetaSimSegm;
1207  delete hBetaRecHit;
1208  delete hEffVsBeta;*/
1209  }
1210 
1211  void Fill(float etaSimSegm,
1212  float phiSimSegm,
1213  float xSimSegm,
1214  float ySimSegm,
1215  float alphaSimSegm,
1216  float betaSimSegm,
1217  bool fillRecHit) {
1218 
1219  hEtaSimSegm->Fill(etaSimSegm);
1220  hPhiSimSegm->Fill(phiSimSegm);
1221  hXSimSegm->Fill(xSimSegm);
1222  hYSimSegm->Fill(ySimSegm);
1223  hAlphaSimSegm->Fill(alphaSimSegm);
1224  hBetaSimSegm->Fill(betaSimSegm);
1225 
1226  if(fillRecHit) {
1227  hEtaRecHit->Fill(etaSimSegm);
1228  hPhiRecHit->Fill(phiSimSegm);
1229  hXRecHit->Fill(xSimSegm);
1230  hYRecHit->Fill(ySimSegm);
1231  hAlphaRecHit->Fill(alphaSimSegm);
1232  hBetaRecHit->Fill(betaSimSegm);
1233  }
1234  }
1235 
1236 
1237 
1239  //hEffVsEta = (TH1F *) hEtaRecHit->Clone();
1240  hEffVsEta = (TH1F *) hEtaRecHit->getTH1();
1241  TH1F * hEffEtaSimSegm = (TH1F *) hEtaSimSegm->getTH1();
1242  hEffVsEta->SetName(name+"_hEffVsEta");
1243  hEffVsEta->SetTitle("4D RecHit Efficiency as a function of Eta");
1244  hEffVsEta->Divide(hEffEtaSimSegm);
1245  // Set the error accordingly to binomial statistics
1246  int nBinsEta = hEffVsEta->GetNbinsX();
1247  for(int bin = 1; bin <= nBinsEta; bin++) {
1248  float nSimHit = hEffEtaSimSegm->GetBinContent(bin);
1249  float eff = hEffVsEta->GetBinContent(bin);
1250  float error = 0;
1251  if(nSimHit != 0) {
1252  error = sqrt(eff*(1-eff)/nSimHit);
1253  }
1254  hEffVsEta->SetBinError(bin, error);
1255  }
1256 
1257  hEffVsPhi = (TH1F *) hPhiRecHit->getTH1();
1258  TH1F * hEffPhiSimSegm = (TH1F *) hPhiSimSegm->getTH1();
1259  hEffVsPhi->SetName(name+"_hEffVsPhi");
1260  hEffVsPhi->SetTitle("4D RecHit Efficiency as a function of Phi");
1261  hEffVsPhi->Divide(hEffPhiSimSegm);
1262  // Set the error accordingly to binomial statistics
1263  int nBinsPhi = hEffVsPhi->GetNbinsX();
1264  for(int bin = 1; bin <= nBinsPhi; bin++) {
1265  float nSimHit = hEffPhiSimSegm->GetBinContent(bin);
1266  float eff = hEffVsPhi->GetBinContent(bin);
1267  float error = 0;
1268  if(nSimHit != 0) {
1269  error = sqrt(eff*(1-eff)/nSimHit);
1270  }
1271  hEffVsPhi->SetBinError(bin, error);
1272  }
1273 
1274  hEffVsX = (TH1F *) hXRecHit->getTH1();
1275  TH1F * hEffXSimSegm = (TH1F *) hXSimSegm->getTH1();
1276  hEffVsX->SetName(name+"_hEffVsX");
1277  hEffVsX->SetTitle("4D RecHit Efficiency as a function of x position in Chamber");
1278  hEffVsX->Divide(hEffXSimSegm);
1279  // Set the error accordingly to binomial statistics
1280  int nBinsX = hEffVsX->GetNbinsX();
1281  for(int bin = 1; bin <= nBinsX; bin++) {
1282  float nSimHit = hEffXSimSegm->GetBinContent(bin);
1283  float eff = hEffVsX->GetBinContent(bin);
1284  float error = 0;
1285  if(nSimHit != 0) {
1286  error = sqrt(eff*(1-eff)/nSimHit);
1287  }
1288  hEffVsX->SetBinError(bin, error);
1289  }
1290 
1291 
1292  hEffVsY = (TH1F *) hYRecHit->getTH1();
1293  TH1F * hEffYSimSegm = (TH1F *) hYSimSegm->getTH1();
1294  hEffVsY->SetName(name+"_hEffVsY");
1295  hEffVsY->SetTitle("4D RecHit Efficiency as a function of y position in Chamber");
1296  hEffVsY->Divide(hEffYSimSegm);
1297  // Set the error accordingly to binomial statistics
1298  int nBinsY = hEffVsY->GetNbinsX();
1299  for(int bin = 1; bin <= nBinsY; bin++) {
1300  float nSimHit = hEffYSimSegm->GetBinContent(bin);
1301  float eff = hEffVsY->GetBinContent(bin);
1302  float error = 0;
1303  if(nSimHit != 0) {
1304  error = sqrt(eff*(1-eff)/nSimHit);
1305  }
1306  hEffVsY->SetBinError(bin, error);
1307  }
1308 
1309  hEffVsAlpha = (TH1F *) hAlphaRecHit->getTH1();
1310  TH1F * hEffAlphaSimSegm = (TH1F *) hAlphaSimSegm->getTH1();
1311  hEffVsAlpha->SetName(name+"_hEffVsAlpha");
1312  hEffVsAlpha->SetTitle("4D RecHit Efficiency as a function of alpha");
1313  hEffVsAlpha->Divide(hEffAlphaSimSegm);
1314  // Set the error accordingly to binomial statistics
1315  int nBinsAlpha = hEffVsAlpha->GetNbinsX();
1316  for(int bin = 1; bin <= nBinsAlpha; bin++) {
1317  float nSimHit = hEffAlphaSimSegm->GetBinContent(bin);
1318  float eff = hEffVsAlpha->GetBinContent(bin);
1319  float error = 0;
1320  if(nSimHit != 0) {
1321  error = sqrt(eff*(1-eff)/nSimHit);
1322  }
1323  hEffVsAlpha->SetBinError(bin, error);
1324  }
1325 
1326 
1327  hEffVsBeta = (TH1F *) hBetaRecHit->getTH1();
1328  TH1F * hEffBetaSimSegm = (TH1F *) hBetaSimSegm->getTH1();
1329  hEffVsBeta->SetName(name+"_hEffVsBeta");
1330  hEffVsBeta->SetTitle("4D RecHit Efficiency as a function of beta");
1331  hEffVsBeta->Divide(hEffBetaSimSegm);
1332  // Set the error accordingly to binomial statistics
1333  int nBinsBeta = hEffVsBeta->GetNbinsX();
1334  for(int bin = 1; bin <= nBinsBeta; bin++) {
1335  float nSimHit = hEffBetaSimSegm->GetBinContent(bin);
1336  float eff = hEffVsBeta->GetBinContent(bin);
1337  float error = 0;
1338  if(nSimHit != 0) {
1339  error = sqrt(eff*(1-eff)/nSimHit);
1340  }
1341  hEffVsBeta->SetBinError(bin, error);
1342  }
1343  }
1344 
1345  /* void Write() {
1346  hEtaSimSegm->Write();
1347  hEtaRecHit->Write();
1348  if(hEffVsEta != 0)
1349  hEffVsEta->Write();
1350  hPhiSimSegm->Write();
1351  hPhiRecHit->Write();
1352  if(hEffVsPhi != 0)
1353  hEffVsPhi->Write();
1354  hXSimSegm->Write();
1355  hXRecHit->Write();
1356  if(hEffVsX != 0)
1357  hEffVsX->Write();
1358  hYSimSegm->Write();
1359  hYRecHit->Write();
1360  if(hEffVsY != 0)
1361  hEffVsY->Write();
1362  hAlphaSimSegm->Write();
1363  hAlphaRecHit->Write();
1364  if(hEffVsAlpha != 0)
1365  hEffVsAlpha->Write();
1366  hBetaSimSegm->Write();
1367  hBetaRecHit->Write();
1368  if(hEffVsBeta != 0)
1369  hEffVsBeta->Write();
1370 
1371  }*/
1372 
1373  public:
1376  TH1F *hEffVsEta;
1379  TH1F *hEffVsPhi;
1382  TH1F *hEffVsX;
1385  TH1F *hEffVsY;
1388  TH1F *hEffVsAlpha;
1391  TH1F *hEffVsBeta;
1392 
1393  TString name;
1394 
1395 };
1396 
1397 
1398 #endif
1399 
HEff4DHit(std::string name_, DQMStore *dbe_)
Definition: Histograms.h:1118
MonitorElement * hPullAlpha
Definition: Histograms.h:1072
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:1387
MonitorElement * hSimAlpha
Definition: Histograms.h:1045
MonitorElement * hResBetaVsPhi
Definition: Histograms.h:1057
void Fill(float distSimHit, float etaSimHit, float phiSimHit, bool fillRecHit)
Definition: Histograms.h:217
MonitorElement * hResYVsEta
Definition: Histograms.h:1064
MonitorElement * hResYRZ
Definition: Histograms.h:1099
HEff2DHit(std::string name_, DQMStore *dbe_)
Definition: Histograms.h:455
MonitorElement * hResSt[4]
Definition: Histograms.h:144
TH1F * hEffVsEta
Definition: Histograms.h:1376
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:717
MonitorElement * hResX
Definition: Histograms.h:1059
MonitorElement * hBetaSimSegm
Definition: Histograms.h:1389
MonitorElement * hRecVsSimBeta
Definition: Histograms.h:1049
void ComputeEfficiency()
Definition: Histograms.h:549
MonitorElement * hResY
Definition: Histograms.h:1063
TH1F * hEffVsX
Definition: Histograms.h:1382
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:1381
MonitorElement * hResVsDistFE
Definition: Histograms.h:149
MonitorElement * hResBeta
Definition: Histograms.h:1055
MonitorElement * hSimAngle
Definition: Histograms.h:434
MonitorElement * hResAlphaVsResX
Definition: Histograms.h:1069
MonitorElement * hPullXVsEta
Definition: Histograms.h:1081
MonitorElement * hEtaSimSegm
Definition: Histograms.h:1374
MonitorElement * hResXVsEta
Definition: Histograms.h:1060
MonitorElement * hResAlphaVsEta
Definition: Histograms.h:1052
TH1F * hEffVsPos
Definition: Histograms.h:655
MonitorElement * hPhiRecHit
Definition: Histograms.h:1378
TH1F * hEffVsBeta
Definition: Histograms.h:1391
MonitorElement * hSimBetaRZ
Definition: Histograms.h:1091
MonitorElement * hResAngleVsPhi
Definition: Histograms.h:438
MonitorElement * hPullBeta
Definition: Histograms.h:1076
TH1F * hEffVsPhi
Definition: Histograms.h:317
MonitorElement * hResAlphaVsPhi
Definition: Histograms.h:1053
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:1377
MonitorElement * hEtaSimSegm
Definition: Histograms.h:647
MonitorElement * hResBetaVsEtaRZ
Definition: Histograms.h:1096
void ComputeEfficiency()
Definition: Histograms.h:234
MonitorElement * hRecVsSimAngle
Definition: Histograms.h:435
MonitorElement * hPullBetaVsEtaRZ
Definition: Histograms.h:1104
MonitorElement * hPullYVsPhi
Definition: Histograms.h:1086
MonitorElement * hPullSt[4]
Definition: Histograms.h:152
TString name
Definition: Histograms.h:1111
MonitorElement * hPhiRecHit
Definition: Histograms.h:651
MonitorElement * hAngleSimSegm
Definition: Histograms.h:656
TString name
Definition: Histograms.h:445
MonitorElement * hResBetaVsEta
Definition: Histograms.h:1056
void ComputeEfficiency()
Definition: Histograms.h:1238
TH1F * hEffVsAngle
Definition: Histograms.h:658
TString name
Definition: Histograms.h:1393
MonitorElement * hRecAlpha
Definition: Histograms.h:1042
MonitorElement * hResBetaRZ
Definition: Histograms.h:1095
TString name
Definition: Histograms.h:323
T sqrt(T t)
Definition: SSEVec.h:46
MonitorElement * hEtaRecHit
Definition: Histograms.h:1375
MonitorElement * hResVsAngle
Definition: Histograms.h:148
MonitorElement * hResYVsPhi
Definition: Histograms.h:1065
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)
Definition: Histograms.h:903
TH1F * hEffVsPhi
Definition: Histograms.h:652
MonitorElement * hResBetaVsPhiRZ
Definition: Histograms.h:1097
MonitorElement * hRecVsSimBetaRZ
Definition: Histograms.h:1093
TH1F * hEffVsEta
Definition: Histograms.h:649
A set of histograms for efficiency 4D RecHits.
Definition: Histograms.h:1116
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:1067
~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:1105
MonitorElement * hRecBeta
Definition: Histograms.h:1043
MonitorElement * hRecVsSimAlpha
Definition: Histograms.h:1048
A set of histograms of residuals and pulls for 1D RecHits.
Definition: Histograms.h:26
TH1F * hEffVsAlpha
Definition: Histograms.h:1388
MonitorElement * hSimBeta
Definition: Histograms.h:1046
DQMStore * dbe_
MonitorElement * hPullAlphaVsPhi
Definition: Histograms.h:1074
MonitorElement * hResYVsPhiRZ
Definition: Histograms.h:1101
MonitorElement * hRecBetaRZ
Definition: Histograms.h:1089
MonitorElement * hPullYVsPhiRZ
Definition: Histograms.h:1109
MonitorElement * hPullBetaVsPhi
Definition: Histograms.h:1078
MonitorElement * hPullYVsEta
Definition: Histograms.h:1085
MonitorElement * hRes
Definition: Histograms.h:143
MonitorElement * hPullVsAngle
Definition: Histograms.h:154
MonitorElement * hBetaRecHit
Definition: Histograms.h:1390
MonitorElement * hPullYRZ
Definition: Histograms.h:1107
MonitorElement * hPullVsPos
Definition: Histograms.h:153
MonitorElement * hDist
Definition: Histograms.h:142
bool _doall
Definition: Histograms.h:156
MonitorElement * hAlphaSimSegm
Definition: Histograms.h:1386
MonitorElement * hPhiRecHit
Definition: Histograms.h:316
MonitorElement * hYSimSegm
Definition: Histograms.h:1383
TH1F * hEffVsY
Definition: Histograms.h:1385
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:1073
TH1F * hEffVsPhi
Definition: Histograms.h:1379
MonitorElement * hPullYVsEtaRZ
Definition: Histograms.h:1108
MonitorElement * hDistRecHit
Definition: Histograms.h:320
MonitorElement * hResVsPos
Definition: Histograms.h:147
TH1F * hEffVsEta
Definition: Histograms.h:313
MonitorElement * hAngleRecHit
Definition: Histograms.h:657
MonitorElement * hPhiSimSegm
Definition: Histograms.h:650
MonitorElement * hYRecHit
Definition: Histograms.h:1384
MonitorElement * hPullBetaRZ
Definition: Histograms.h:1103
TString name
Definition: Histograms.h:157
MonitorElement * hResAlpha
Definition: Histograms.h:1051
MonitorElement * hResXVsResY
Definition: Histograms.h:1068
MonitorElement * hEtaRecHit
Definition: Histograms.h:648
MonitorElement * hResYVsEtaRZ
Definition: Histograms.h:1100
tuple cout
Definition: gather_cfg.py:121
HEff1DHit(std::string name_, DQMStore *dbe_)
Definition: Histograms.h:165
MonitorElement * hResXVsPhi
Definition: Histograms.h:1061
MonitorElement * hPullY
Definition: Histograms.h:1084
MonitorElement * hXSimSegm
Definition: Histograms.h:1380
MonitorElement * hDistMuSimHit
Definition: Histograms.h:319
bool _doall
Definition: Histograms.h:1110
MonitorElement * hPullXVsPhi
Definition: Histograms.h:1082
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:845
MonitorElement * hResAlphaVsResY
Definition: Histograms.h:1070
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:1077
MonitorElement * hEtaMuSimHit
Definition: Histograms.h:311
void Fill(float etaSimSegm, float phiSimSegm, float xSimSegm, float ySimSegm, float alphaSimSegm, float betaSimSegm, bool fillRecHit)
Definition: Histograms.h:1211
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
MonitorElement * hPullX
Definition: Histograms.h:1080
MonitorElement * hPullVsDistFE
Definition: Histograms.h:155
MonitorElement * hResPos
Definition: Histograms.h:439