CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiPixelHitEfficiencyModule.cc
Go to the documentation of this file.
1 // Package: SiPixelMonitorTrack
2 // Class: SiPixelHitEfficiencyModule
3 //
4 // class SiPixelHitEfficiencyModule SiPixelHitEfficiencyModule.cc
5 // DQM/SiPixelMonitorTrack/src/SiPixelHitEfficiencyModule.cc
6 //
7 // Description: SiPixel hit efficiency data quality monitoring modules
8 // Implementation: prototype -> improved -> never final - end of the 1st step
9 //
10 // Original Authors: Romain Rougny & Luca Mucibello
11 // Created: Mar Nov 10 13:29:00 CET nbinangle9
12 
13 
14 
15 #include <string>
16 #include <iostream>
17 
24 
25 // Data Formats
34 
35 
36 using namespace std;
37 
38 
40  bBookTracks = true;
41 }
42 
43 
45  bBookTracks = true;
46 }
47 
48 
50 
51 }
52 
53 
54 void SiPixelHitEfficiencyModule::book(const edm::ParameterSet& iConfig, int type, bool isUpgrade) {
56 
57  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
58  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
59  bool isHalfModule = false;
60  if(barrel){
61  if (!isUpgrade) {
62  isHalfModule = PixelBarrelName(DetId(id_)).isHalfModule();
63  } else if (isUpgrade) {
64  isHalfModule = PixelBarrelNameUpgrade(DetId(id_)).isHalfModule();
65  }
66  }
67 
68  edm::InputTag src = iConfig.getParameter<edm::InputTag>("src");
69  debug_ = iConfig.getUntrackedParameter<bool>("debug",false);
70  updateEfficiencies = iConfig.getUntrackedParameter<bool>("updateEfficiencies",false);
71  std::string hisID;
72 
73  int nbinangle = 28;
74  int nbinX = 45;
75  int nbinY = 40;
76 
77  if(type==0){
78  SiPixelHistogramId* theHistogramId = new SiPixelHistogramId(src.label());
79 
80  if(updateEfficiencies){
81  //EFFICIENCY
82  hisID = theHistogramId->setHistoId("efficiency",id_);
83  meEfficiency_ = dbe->book1D(hisID,"Hit efficiency",1,0,1.);
84  meEfficiency_->setAxisTitle("Hit efficiency",1);
85 
86  hisID = theHistogramId->setHistoId("efficiencyX",id_);
87  meEfficiencyX_ = dbe->book1D(hisID,"Hit efficiency in X",nbinX,-1.5,1.5);
88  meEfficiencyX_->setAxisTitle("Hit efficiency in X",1);
89 
90  hisID = theHistogramId->setHistoId("efficiencyY",id_);
91  meEfficiencyY_ = dbe->book1D(hisID,"Hit efficiency in Y",nbinY,-4.,4.);
92  meEfficiencyY_->setAxisTitle("Hit efficiency in Y",1);
93 
94  hisID = theHistogramId->setHistoId("efficiencyAlpha",id_);
95  meEfficiencyAlpha_ = dbe->book1D(hisID,"Hit efficiency in Alpha",nbinangle,-3.5,3.5);
96  meEfficiencyAlpha_->setAxisTitle("Hit efficiency in Alpha",1);
97 
98  hisID = theHistogramId->setHistoId("efficiencyBeta",id_);
99  meEfficiencyBeta_ = dbe->book1D(hisID,"Hit efficiency in Beta",nbinangle,-3.5,3.5);
100  meEfficiencyBeta_->setAxisTitle("Hit efficiency in Beta",1);
101  }
102 
103  //VALID
104  hisID = theHistogramId->setHistoId("valid",id_);
105  meValid_ = dbe->book1D(hisID,"# Valid hits",1,0,1.);
106  meValid_->setAxisTitle("# Valid hits",1);
107 
108  /*hisID = theHistogramId->setHistoId("validX",id_);
109  meValidX_ = dbe->book1D(hisID,"# Valid hits in X",nbinX,-1.5,1.5);
110  meValidX_->setAxisTitle("# Valid hits in X",1);
111 
112  hisID = theHistogramId->setHistoId("validY",id_);
113  meValidY_ = dbe->book1D(hisID,"# Valid hits in Y",nbinY,-4.,4.);
114  meValidY_->setAxisTitle("# Valid hits in Y",1);
115 
116  hisID = theHistogramId->setHistoId("validAlpha",id_);
117  meValidAlpha_ = dbe->book1D(hisID,"# Valid hits in Alpha",nbinangle,-3.5,3.5);
118  meValidAlpha_->setAxisTitle("# Valid hits in Alpha",1);
119 
120  hisID = theHistogramId->setHistoId("validBeta",id_);
121  meValidBeta_ = dbe->book1D(hisID,"# Valid hits in Beta",nbinangle,-3.5,3.5);
122  meValidBeta_->setAxisTitle("# Valid hits in Beta",1);*/
123 
124  //MISSING
125  hisID = theHistogramId->setHistoId("missing",id_);
126  meMissing_ = dbe->book1D(hisID,"# Missing hits",1,0,1.);
127  meMissing_->setAxisTitle("# Missing hits",1);
128 
129  /*hisID = theHistogramId->setHistoId("missingX",id_);
130  meMissingX_ = dbe->book1D(hisID,"# Missing hits in X",nbinX,-1.5,1.5);
131  meMissingX_->setAxisTitle("# Missing hits in X",1);
132 
133  hisID = theHistogramId->setHistoId("missingY",id_);
134  meMissingY_ = dbe->book1D(hisID,"# Missing hits in Y",nbinY,-4.,4.);
135  meMissingY_->setAxisTitle("# Missing hits in Y",1);
136 
137  hisID = theHistogramId->setHistoId("missingAlpha",id_);
138  meMissingAlpha_ = dbe->book1D(hisID,"# Missing hits in Alpha",nbinangle,-3.5,3.5);
139  meMissingAlpha_->setAxisTitle("# Missing hits in Alpha",1);
140 
141  hisID = theHistogramId->setHistoId("missingBeta",id_);
142  meMissingBeta_ = dbe->book1D(hisID,"# Missing hits in Beta",nbinangle,-3.5,3.5);
143  meMissingBeta_->setAxisTitle("# Missing hits in Beta",1);*/
144 
145  delete theHistogramId;
146  }
147 
148  if(type==1 && barrel){
149  uint32_t DBladder;
150  if (!isUpgrade) { DBladder = PixelBarrelName(DetId(id_)).ladderName(); }
151  else { DBladder = PixelBarrelNameUpgrade(DetId(id_)).ladderName(); }
152  char sladder[80]; sprintf(sladder,"Ladder_%02i",DBladder);
153  hisID = src.label() + "_" + sladder;
154  if(isHalfModule) hisID += "H";
155  else hisID += "F";
156 
157  if(updateEfficiencies){
158  //EFFICIENCY
159  meEfficiencyLad_ = dbe->book1D("efficiency_"+hisID,"Hit efficiency",1,0,1.);
160  meEfficiencyLad_->setAxisTitle("Hit efficiency",1);
161 
162  meEfficiencyXLad_ = dbe->book1D("efficiencyX_"+hisID,"Hit efficiency in X",nbinX,-1.5,1.5);
163  meEfficiencyXLad_->setAxisTitle("Hit efficiency in X",1);
164 
165  meEfficiencyYLad_ = dbe->book1D("efficiencyY_"+hisID,"Hit efficiency in Y",nbinY,-4.,4.);
166  meEfficiencyYLad_->setAxisTitle("Hit efficiency in Y",1);
167 
168  meEfficiencyAlphaLad_ = dbe->book1D("efficiencyAlpha_"+hisID,"Hit efficiency in Alpha",nbinangle,-3.5,3.5);
169  meEfficiencyAlphaLad_->setAxisTitle("Hit efficiency in Alpha",1);
170 
171  meEfficiencyBetaLad_ = dbe->book1D("efficiencyBeta_"+hisID,"Hit efficiency in Beta",nbinangle,-3.5,3.5);
172  meEfficiencyBetaLad_->setAxisTitle("Hit efficiency in Beta",1);
173  }
174 
175  //VALID
176  meValidLad_ = dbe->book1D("valid_"+hisID,"# Valid hits",1,0,1.);
177  meValidLad_->setAxisTitle("# Valid hits",1);
178 
179  meValidXLad_ = dbe->book1D("validX_"+hisID,"# Valid hits in X",nbinX,-1.5,1.5);
180  meValidXLad_->setAxisTitle("# Valid hits in X",1);
181 
182  meValidYLad_ = dbe->book1D("validY_"+hisID,"# Valid hits in Y",nbinY,-4.,4.);
183  meValidYLad_->setAxisTitle("# Valid hits in Y",1);
184 
185  meValidModLad_ = dbe->book1D("validMod_"+hisID,"# Valid hits on Module",20,1,21.);
186  meValidModLad_->setAxisTitle("# Valid hits on Module",1);
187 
188  meValidAlphaLad_ = dbe->book1D("validAlpha_"+hisID,"# Valid hits in Alpha",nbinangle,-3.5,3.5);
189  meValidAlphaLad_->setAxisTitle("# Valid hits in Alpha",1);
190 
191  meValidBetaLad_ = dbe->book1D("validBeta_"+hisID,"# Valid hits in Beta",nbinangle,-3.5,3.5);
192  meValidBetaLad_->setAxisTitle("# Valid hits in Beta",1);
193 
194  //MISSING
195  meMissingLad_ = dbe->book1D("missing_"+hisID,"# Missing hits",1,0,1.);
196  meMissingLad_->setAxisTitle("# Missing hits",1);
197 
198  meMissingXLad_ = dbe->book1D("missingX_"+hisID,"# Missing hits in X",nbinX,-1.5,1.5);
199  meMissingXLad_->setAxisTitle("# Missing hits in X",1);
200 
201  meMissingYLad_ = dbe->book1D("missingY_"+hisID,"# Missing hits in Y",nbinY,-4.,4.);
202  meMissingYLad_->setAxisTitle("# Missing hits in Y",1);
203 
204  meMissingModLad_ = dbe->book1D("missingMod_"+hisID,"# Missing hits on Module",20,1,21.);
205  meMissingModLad_->setAxisTitle("# Missing hits on Module",1);
206 
207  meMissingAlphaLad_ = dbe->book1D("missingAlpha_"+hisID,"# Missing hits in Alpha",nbinangle,-3.5,3.5);
208  meMissingAlphaLad_->setAxisTitle("# Missing hits in Alpha",1);
209 
210  meMissingBetaLad_ = dbe->book1D("missingBeta_"+hisID,"# Missing hits in Beta",nbinangle,-3.5,3.5);
211  meMissingBetaLad_->setAxisTitle("# Missing hits in Beta",1);
212  }
213 
214  if(type==2 && barrel){
215  uint32_t DBlayer;
216  if (!isUpgrade) { DBlayer = PixelBarrelName(DetId(id_)).layerName(); }
217  else { DBlayer = PixelBarrelNameUpgrade(DetId(id_)).layerName(); }
218  char slayer[80]; sprintf(slayer,"Layer_%i",DBlayer);
219  hisID = src.label() + "_" + slayer;
220 
221 
222  if(updateEfficiencies){
223  //EFFICIENCY
224  meEfficiencyLay_ = dbe->book1D("efficiency_"+hisID,"Hit efficiency",1,0,1.);
225  meEfficiencyLay_->setAxisTitle("Hit efficiency",1);
226 
227  meEfficiencyXLay_ = dbe->book1D("efficiencyX_"+hisID,"Hit efficiency in X",nbinX,-1.5,1.5);
228  meEfficiencyXLay_->setAxisTitle("Hit efficiency in X",1);
229 
230  meEfficiencyYLay_ = dbe->book1D("efficiencyY_"+hisID,"Hit efficiency in Y",nbinY,-4.,4.);
231  meEfficiencyYLay_->setAxisTitle("Hit efficiency in Y",1);
232 
233  meEfficiencyAlphaLay_ = dbe->book1D("efficiencyAlpha_"+hisID,"Hit efficiency in Alpha",nbinangle,-3.5,3.5);
234  meEfficiencyAlphaLay_->setAxisTitle("Hit efficiency in Alpha",1);
235 
236  meEfficiencyBetaLay_ = dbe->book1D("efficiencyBeta_"+hisID,"Hit efficiency in Beta",nbinangle,-3.5,3.5);
237  meEfficiencyBetaLay_->setAxisTitle("Hit efficiency in Beta",1);
238  }
239 
240  //VALID
241  meValidLay_ = dbe->book1D("valid_"+hisID,"# Valid hits",1,0,1.);
242  meValidLay_->setAxisTitle("# Valid hits",1);
243 
244  meValidXLay_ = dbe->book1D("validX_"+hisID,"# Valid hits in X",nbinX,-1.5,1.5);
245  meValidXLay_->setAxisTitle("# Valid hits in X",1);
246 
247  meValidYLay_ = dbe->book1D("validY_"+hisID,"# Valid hits in Y",nbinY,-4.,4.);
248  meValidYLay_->setAxisTitle("# Valid hits in Y",1);
249 
250  meValidAlphaLay_ = dbe->book1D("validAlpha_"+hisID,"# Valid hits in Alpha",nbinangle,-3.5,3.5);
251  meValidAlphaLay_->setAxisTitle("# Valid hits in Alpha",1);
252 
253  meValidBetaLay_ = dbe->book1D("validBeta_"+hisID,"# Valid hits in Beta",nbinangle,-3.5,3.5);
254  meValidBetaLay_->setAxisTitle("# Valid hits in Beta",1);
255 
256  //MISSING
257  meMissingLay_ = dbe->book1D("missing_"+hisID,"# Missing hits",1,0,1.);
258  meMissingLay_->setAxisTitle("# Missing hits",1);
259 
260  meMissingXLay_ = dbe->book1D("missingX_"+hisID,"# Missing hits in X",nbinX,-1.5,1.5);
261  meMissingXLay_->setAxisTitle("# Missing hits in X",1);
262 
263  meMissingYLay_ = dbe->book1D("missingY_"+hisID,"# Missing hits in Y",nbinY,-4.,4.);
264  meMissingYLay_->setAxisTitle("# Missing hits in Y",1);
265 
266  meMissingAlphaLay_ = dbe->book1D("missingAlpha_"+hisID,"# Missing hits in Alpha",nbinangle,-3.5,3.5);
267  meMissingAlphaLay_->setAxisTitle("# Missing hits in Alpha",1);
268 
269  meMissingBetaLay_ = dbe->book1D("missingBeta_"+hisID,"# Missing hits in Beta",nbinangle,-3.5,3.5);
270  meMissingBetaLay_->setAxisTitle("# Missing hits in Beta",1);
271  }
272 
273  if(type==3 && barrel){
274  uint32_t DBmodule;
275  if (!isUpgrade) { DBmodule = PixelBarrelName(DetId(id_)).moduleName(); }
276  else { DBmodule = PixelBarrelNameUpgrade(DetId(id_)).moduleName(); }
277  char smodule[80]; sprintf(smodule,"Ring_%i",DBmodule);
278  hisID = src.label() + "_" + smodule;
279 
280  if(updateEfficiencies){
281  //EFFICIENCY
282  meEfficiencyPhi_ = dbe->book1D("efficiency_"+hisID,"Hit efficiency",1,0,1.);
283  meEfficiencyPhi_->setAxisTitle("Hit efficiency",1);
284 
285  meEfficiencyXPhi_ = dbe->book1D("efficiencyX_"+hisID,"Hit efficiency in X",nbinX,-1.5,1.5);
286  meEfficiencyXPhi_->setAxisTitle("Hit efficiency in X",1);
287 
288  meEfficiencyYPhi_ = dbe->book1D("efficiencyY_"+hisID,"Hit efficiency in Y",nbinY,-4.,4.);
289  meEfficiencyYPhi_->setAxisTitle("Hit efficiency in Y",1);
290 
291  meEfficiencyAlphaPhi_ = dbe->book1D("efficiencyAlpha_"+hisID,"Hit efficiency in Alpha",nbinangle,-3.5,3.5);
292  meEfficiencyAlphaPhi_->setAxisTitle("Hit efficiency in Alpha",1);
293 
294  meEfficiencyBetaPhi_ = dbe->book1D("efficiencyBeta_"+hisID,"Hit efficiency in Beta",nbinangle,-3.5,3.5);
295  meEfficiencyBetaPhi_->setAxisTitle("Hit efficiency in Beta",1);
296  }
297 
298  //VALID
299  meValidPhi_ = dbe->book1D("valid_"+hisID,"# Valid hits",1,0,1.);
300  meValidPhi_->setAxisTitle("# Valid hits",1);
301 
302  meValidXPhi_ = dbe->book1D("validX_"+hisID,"# Valid hits in X",nbinX,-1.5,1.5);
303  meValidXPhi_->setAxisTitle("# Valid hits in X",1);
304 
305  meValidYPhi_ = dbe->book1D("validY_"+hisID,"# Valid hits in Y",nbinY,-4.,4.);
306  meValidYPhi_->setAxisTitle("# Valid hits in Y",1);
307 
308  meValidAlphaPhi_ = dbe->book1D("validAlpha_"+hisID,"# Valid hits in Alpha",nbinangle,-3.5,3.5);
309  meValidAlphaPhi_->setAxisTitle("# Valid hits in Alpha",1);
310 
311  meValidBetaPhi_ = dbe->book1D("validBeta_"+hisID,"# Valid hits in Beta",nbinangle,-3.5,3.5);
312  meValidBetaPhi_->setAxisTitle("# Valid hits in Beta",1);
313 
314  //MISSING
315  meMissingPhi_ = dbe->book1D("missing_"+hisID,"# Missing hits",1,0,1.);
316  meMissingPhi_->setAxisTitle("# Missing hits",1);
317 
318  meMissingXPhi_ = dbe->book1D("missingX_"+hisID,"# Missing hits in X",nbinX,-1.5,1.5);
319  meMissingXPhi_->setAxisTitle("# Missing hits in X",1);
320 
321  meMissingYPhi_ = dbe->book1D("missingY_"+hisID,"# Missing hits in Y",nbinY,-4.,4.);
322  meMissingYPhi_->setAxisTitle("# Missing hits in Y",1);
323 
324  meMissingAlphaPhi_ = dbe->book1D("missingAlpha_"+hisID,"# Missing hits in Alpha",nbinangle,-3.5,3.5);
325  meMissingAlphaPhi_->setAxisTitle("# Missing hits in Alpha",1);
326 
327  meMissingBetaPhi_ = dbe->book1D("missingBeta_"+hisID,"# Missing hits in Beta",nbinangle,-3.5,3.5);
328  meMissingBetaPhi_->setAxisTitle("# Missing hits in Beta",1);
329  }
330 
331  if(type==4 && endcap){
332  uint32_t blade;
333  if (!isUpgrade) { blade= PixelEndcapName(DetId(id_)).bladeName(); }
334  else { blade= PixelEndcapNameUpgrade(DetId(id_)).bladeName(); }
335 
336  char sblade[80]; sprintf(sblade, "Blade_%02i",blade);
337  hisID = src.label() + "_" + sblade;
338 
339  if(updateEfficiencies){
340  //EFFICIENCY
341  meEfficiencyBlade_ = dbe->book1D("efficiency_"+hisID,"Hit efficiency",1,0,1.);
342  meEfficiencyBlade_->setAxisTitle("Hit efficiency",1);
343 
344  meEfficiencyXBlade_ = dbe->book1D("efficiencyX_"+hisID,"Hit efficiency in X",nbinX,-1.5,1.5);
345  meEfficiencyXBlade_->setAxisTitle("Hit efficiency in X",1);
346 
347  meEfficiencyYBlade_ = dbe->book1D("efficiencyY_"+hisID,"Hit efficiency in Y",nbinY,-4.,4.);
348  meEfficiencyYBlade_->setAxisTitle("Hit efficiency in Y",1);
349 
350  meEfficiencyAlphaBlade_ = dbe->book1D("efficiencyAlpha_"+hisID,"Hit efficiency in Alpha",nbinangle,-3.5,3.5);
351  meEfficiencyAlphaBlade_->setAxisTitle("Hit efficiency in Alpha",1);
352 
353  meEfficiencyBetaBlade_ = dbe->book1D("efficiencyBeta_"+hisID,"Hit efficiency in Beta",nbinangle,-3.5,3.5);
354  meEfficiencyBetaBlade_->setAxisTitle("Hit efficiency in Beta",1);
355  }
356 
357  //VALID
358  meValidBlade_ = dbe->book1D("valid_"+hisID,"# Valid hits",1,0,1.);
359  meValidBlade_->setAxisTitle("# Valid hits",1);
360 
361  meValidXBlade_ = dbe->book1D("validX_"+hisID,"# Valid hits in X",nbinX,-1.5,1.5);
362  meValidXBlade_->setAxisTitle("# Valid hits in X",1);
363 
364  meValidYBlade_ = dbe->book1D("validY_"+hisID,"# Valid hits in Y",nbinY,-4.,4.);
365  meValidYBlade_->setAxisTitle("# Valid hits in Y",1);
366 
367  meValidAlphaBlade_ = dbe->book1D("validAlpha_"+hisID,"# Valid hits in Alpha",nbinangle,-3.5,3.5);
368  meValidAlphaBlade_->setAxisTitle("# Valid hits in Alpha",1);
369 
370  meValidBetaBlade_ = dbe->book1D("validBeta_"+hisID,"# Valid hits in Beta",nbinangle,-3.5,3.5);
371  meValidBetaBlade_->setAxisTitle("# Valid hits in Beta",1);
372 
373  //MISSING
374  meMissingBlade_ = dbe->book1D("missing_"+hisID,"# Missing hits",1,0,1.);
375  meMissingBlade_->setAxisTitle("# Missing hits",1);
376 
377  meMissingXBlade_ = dbe->book1D("missingX_"+hisID,"# Missing hits in X",nbinX,-1.5,1.5);
378  meMissingXBlade_->setAxisTitle("# Missing hits in X",1);
379 
380  meMissingYBlade_ = dbe->book1D("missingY_"+hisID,"# Missing hits in Y",nbinY,-4.,4.);
381  meMissingYBlade_->setAxisTitle("# Missing hits in Y",1);
382 
383  meMissingAlphaBlade_ = dbe->book1D("missingAlpha_"+hisID,"# Missing hits in Alpha",nbinangle,-3.5,3.5);
384  meMissingAlphaBlade_->setAxisTitle("# Missing hits in Alpha",1);
385 
386  meMissingBetaBlade_ = dbe->book1D("missingBeta_"+hisID,"# Missing hits in Beta",nbinangle,-3.5,3.5);
387  meMissingBetaBlade_->setAxisTitle("# Missing hits in Beta",1);
388  }
389 
390  if(type==5 && endcap){
391  uint32_t disk;
392  if (!isUpgrade) { disk = PixelEndcapName(DetId(id_)).diskName(); }
393  else { disk = PixelEndcapNameUpgrade(DetId(id_)).diskName(); }
394 
395  char sdisk[80]; sprintf(sdisk, "Disk_%i",disk);
396  hisID = src.label() + "_" + sdisk;
397 
398  if(updateEfficiencies){
399  //EFFICIENCY
400  meEfficiencyDisk_ = dbe->book1D("efficiency_"+hisID,"Hit efficiency",1,0,1.);
401  meEfficiencyDisk_->setAxisTitle("Hit efficiency",1);
402 
403  meEfficiencyXDisk_ = dbe->book1D("efficiencyX_"+hisID,"Hit efficiency in X",nbinX,-1.5,1.5);
404  meEfficiencyXDisk_->setAxisTitle("Hit efficiency in X",1);
405 
406  meEfficiencyYDisk_ = dbe->book1D("efficiencyY_"+hisID,"Hit efficiency in Y",nbinY,-4.,4.);
407  meEfficiencyYDisk_->setAxisTitle("Hit efficiency in Y",1);
408 
409  meEfficiencyAlphaDisk_ = dbe->book1D("efficiencyAlpha_"+hisID,"Hit efficiency in Alpha",nbinangle,-3.5,3.5);
410  meEfficiencyAlphaDisk_->setAxisTitle("Hit efficiency in Alpha",1);
411 
412  meEfficiencyBetaDisk_ = dbe->book1D("efficiencyBeta_"+hisID,"Hit efficiency in Beta",nbinangle,-3.5,3.5);
413  meEfficiencyBetaDisk_->setAxisTitle("Hit efficiency in Beta",1);
414  }
415 
416  //VALID
417  meValidDisk_ = dbe->book1D("valid_"+hisID,"# Valid hits",1,0,1.);
418  meValidDisk_->setAxisTitle("# Valid hits",1);
419 
420  meValidXDisk_ = dbe->book1D("validX_"+hisID,"# Valid hits in X",nbinX,-1.5,1.5);
421  meValidXDisk_->setAxisTitle("# Valid hits in X",1);
422 
423  meValidYDisk_ = dbe->book1D("validY_"+hisID,"# Valid hits in Y",nbinY,-4.,4.);
424  meValidYDisk_->setAxisTitle("# Valid hits in Y",1);
425 
426  meValidAlphaDisk_ = dbe->book1D("validAlpha_"+hisID,"# Valid hits in Alpha",nbinangle,-3.5,3.5);
427  meValidAlphaDisk_->setAxisTitle("# Valid hits in Alpha",1);
428 
429  meValidBetaDisk_ = dbe->book1D("validBeta_"+hisID,"# Valid hits in Beta",nbinangle,-3.5,3.5);
430  meValidBetaDisk_->setAxisTitle("# Valid hits in Beta",1);
431 
432  //MISSING
433  meMissingDisk_ = dbe->book1D("missing_"+hisID,"# Missing hits",1,0,1.);
434  meMissingDisk_->setAxisTitle("# Missing hits",1);
435 
436  meMissingXDisk_ = dbe->book1D("missingX_"+hisID,"# Missing hits in X",nbinX,-1.5,1.5);
437  meMissingXDisk_->setAxisTitle("# Missing hits in X",1);
438 
439  meMissingYDisk_ = dbe->book1D("missingY_"+hisID,"# Missing hits in Y",nbinY,-4.,4.);
440  meMissingYDisk_->setAxisTitle("# Missing hits in Y",1);
441 
442  meMissingAlphaDisk_ = dbe->book1D("missingAlpha_"+hisID,"# Missing hits in Alpha",nbinangle,-3.5,3.5);
443  meMissingAlphaDisk_->setAxisTitle("# Missing hits in Alpha",1);
444 
445  meMissingBetaDisk_ = dbe->book1D("missingBeta_"+hisID,"# Missing hits in Beta",nbinangle,-3.5,3.5);
446  meMissingBetaDisk_->setAxisTitle("# Missing hits in Beta",1);
447  }
448 
449 
450  if(type==6 && endcap){
451  uint32_t panel;
452  uint32_t module;
453  if (!isUpgrade) {
454  panel= PixelEndcapName(DetId(id_)).pannelName();
456  } else {
459  }
460 
461  char slab[80]; sprintf(slab, "Panel_%i_Ring_%i",panel, module);
462  hisID = src.label() + "_" + slab;
463 
464  if(updateEfficiencies){
465  //EFFICIENCY
466  meEfficiencyRing_ = dbe->book1D("efficiency_"+hisID,"Hit efficiency",1,0,1.);
467  meEfficiencyRing_->setAxisTitle("Hit efficiency",1);
468 
469  meEfficiencyXRing_ = dbe->book1D("efficiencyX_"+hisID,"Hit efficiency in X",nbinX,-1.5,1.5);
470  meEfficiencyXRing_->setAxisTitle("Hit efficiency in X",1);
471 
472  meEfficiencyYRing_ = dbe->book1D("efficiencyY_"+hisID,"Hit efficiency in Y",nbinY,-4.,4.);
473  meEfficiencyYRing_->setAxisTitle("Hit efficiency in Y",1);
474 
475  meEfficiencyAlphaRing_ = dbe->book1D("efficiencyAlpha_"+hisID,"Hit efficiency in Alpha",nbinangle,-3.5,3.5);
476  meEfficiencyAlphaRing_->setAxisTitle("Hit efficiency in Alpha",1);
477 
478  meEfficiencyBetaRing_ = dbe->book1D("efficiencyBeta_"+hisID,"Hit efficiency in Beta",nbinangle,-3.5,3.5);
479  meEfficiencyBetaRing_->setAxisTitle("Hit efficiency in Beta",1);
480  }
481 
482  //VALID
483  meValidRing_ = dbe->book1D("valid_"+hisID,"# Valid hits",1,0,1.);
484  meValidRing_->setAxisTitle("# Valid hits",1);
485 
486  meValidXRing_ = dbe->book1D("validX_"+hisID,"# Valid hits in X",nbinX,-1.5,1.5);
487  meValidXRing_->setAxisTitle("# Valid hits in X",1);
488 
489  meValidYRing_ = dbe->book1D("validY_"+hisID,"# Valid hits in Y",nbinY,-4.,4.);
490  meValidYRing_->setAxisTitle("# Valid hits in Y",1);
491 
492  meValidAlphaRing_ = dbe->book1D("validAlpha_"+hisID,"# Valid hits in Alpha",nbinangle,-3.5,3.5);
493  meValidAlphaRing_->setAxisTitle("# Valid hits in Alpha",1);
494 
495  meValidBetaRing_ = dbe->book1D("validBeta_"+hisID,"# Valid hits in Beta",nbinangle,-3.5,3.5);
496  meValidBetaRing_->setAxisTitle("# Valid hits in Beta",1);
497 
498  //MISSING
499  meMissingRing_ = dbe->book1D("missing_"+hisID,"# Missing hits",1,0,1.);
500  meMissingRing_->setAxisTitle("# Missing hits",1);
501 
502  meMissingXRing_ = dbe->book1D("missingX_"+hisID,"# Missing hits in X",nbinX,-1.5,1.5);
503  meMissingXRing_->setAxisTitle("# Missing hits in X",1);
504 
505  meMissingYRing_ = dbe->book1D("missingY_"+hisID,"# Missing hits in Y",nbinY,-4.,4.);
506  meMissingYRing_->setAxisTitle("# Missing hits in Y",1);
507 
508  meMissingAlphaRing_ = dbe->book1D("missingAlpha_"+hisID,"# Missing hits in Alpha",nbinangle,-3.5,3.5);
509  meMissingAlphaRing_->setAxisTitle("# Missing hits in Alpha",1);
510 
511  meMissingBetaRing_ = dbe->book1D("missingBeta_"+hisID,"# Missing hits in Beta",nbinangle,-3.5,3.5);
512  meMissingBetaRing_->setAxisTitle("# Missing hits in Beta",1);
513  }
514 }
515 
516 
517 void SiPixelHitEfficiencyModule::fill(const LocalTrajectoryParameters& ltp, bool isHitValid, bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon) {
518 
519  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
520  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
521 
522  LocalVector localDir = ltp.momentum()/ltp.momentum().mag();
523  float prediction_alpha = atan2(localDir.z(), localDir.x());
524  float prediction_beta = atan2(localDir.z(), localDir.y());
525  float prediction_x = ltp.position().x();
526  float prediction_y = ltp.position().y();
527  //CS - this will probably break with isUpgrade
528  int imod = PXBDetId(DetId(id_)).module();
529 
530  if(isHitValid){
531  if(modon){
532  meValid_->Fill(0.5);
533  /*meValidX_->Fill(prediction_x);
534  meValidY_->Fill(prediction_y);
535  meValidAlpha_->Fill(prediction_alpha);
536  meValidBeta_->Fill(prediction_beta);*/
537  }
538  if(barrel && ladon){
539  meValidLad_->Fill(0.5);
540  meValidXLad_->Fill(prediction_x);
541  meValidYLad_->Fill(prediction_y);
542  meValidModLad_->Fill(imod);
543  meValidAlphaLad_->Fill(prediction_alpha);
544  meValidBetaLad_->Fill(prediction_beta);
545  }
546  if(barrel && layon){
547  meValidLay_->Fill(0.5);
548  meValidXLay_->Fill(prediction_x);
549  meValidYLay_->Fill(prediction_y);
550  meValidAlphaLay_->Fill(prediction_alpha);
551  meValidBetaLay_->Fill(prediction_beta);
552  }
553  if(barrel && phion){
554  meValidPhi_->Fill(0.5);
555  meValidXPhi_->Fill(prediction_x);
556  meValidYPhi_->Fill(prediction_y);
557  meValidAlphaPhi_->Fill(prediction_alpha);
558  meValidBetaPhi_->Fill(prediction_beta);
559  }
560  if(endcap && bladeon){
561  meValidBlade_->Fill(0.5);
562  meValidXBlade_->Fill(prediction_x);
563  meValidYBlade_->Fill(prediction_y);
564  meValidAlphaBlade_->Fill(prediction_alpha);
565  meValidBetaBlade_->Fill(prediction_beta);
566  }
567  if(endcap && diskon){
568  meValidDisk_->Fill(0.5);
569  meValidXDisk_->Fill(prediction_x);
570  meValidYDisk_->Fill(prediction_y);
571  meValidAlphaDisk_->Fill(prediction_alpha);
572  meValidBetaDisk_->Fill(prediction_beta);
573  }
574  if(endcap && ringon){
575  meValidRing_->Fill(0.5);
576  meValidXRing_->Fill(prediction_x);
577  meValidYRing_->Fill(prediction_y);
578  meValidAlphaRing_->Fill(prediction_alpha);
579  meValidBetaRing_->Fill(prediction_beta);
580  }
581  }
582  else {
583  if(modon){
584  meMissing_->Fill(0.5);
585  /*meMissingX_->Fill(prediction_x);
586  meMissingY_->Fill(prediction_y);
587  meMissingAlpha_->Fill(prediction_alpha);
588  meMissingBeta_->Fill(prediction_beta);*/
589  }
590  if(barrel && ladon){
591  meMissingLad_->Fill(0.5);
592  meMissingXLad_->Fill(prediction_x);
593  meMissingYLad_->Fill(prediction_y);
594  meMissingModLad_->Fill(imod);
595  meMissingAlphaLad_->Fill(prediction_alpha);
596  meMissingBetaLad_->Fill(prediction_beta);
597  }
598  if(barrel && layon){
599  meMissingLay_->Fill(0.5);
600  meMissingXLay_->Fill(prediction_x);
601  meMissingYLay_->Fill(prediction_y);
602  meMissingAlphaLay_->Fill(prediction_alpha);
603  meMissingBetaLay_->Fill(prediction_beta);
604  }
605  if(barrel && phion){
606  meMissingPhi_->Fill(0.5);
607  meMissingXPhi_->Fill(prediction_x);
608  meMissingYPhi_->Fill(prediction_y);
609  meMissingAlphaPhi_->Fill(prediction_alpha);
610  meMissingBetaPhi_->Fill(prediction_beta);
611  }
612  if(endcap && bladeon){
613  meMissingBlade_->Fill(0.5);
614  meMissingXBlade_->Fill(prediction_x);
615  meMissingYBlade_->Fill(prediction_y);
616  meMissingAlphaBlade_->Fill(prediction_alpha);
617  meMissingBetaBlade_->Fill(prediction_beta);
618  }
619  if(endcap && diskon){
620  meMissingDisk_->Fill(0.5);
621  meMissingXDisk_->Fill(prediction_x);
622  meMissingYDisk_->Fill(prediction_y);
623  meMissingAlphaDisk_->Fill(prediction_alpha);
624  meMissingBetaDisk_->Fill(prediction_beta);
625  }
626  if(endcap && ringon){
627  meMissingRing_->Fill(0.5);
628  meMissingXRing_->Fill(prediction_x);
629  meMissingYRing_->Fill(prediction_y);
630  meMissingAlphaRing_->Fill(prediction_alpha);
631  meMissingBetaRing_->Fill(prediction_beta);
632  }
633  }
634 
636  computeEfficiencies(modon, ladon, layon, phion, bladeon, diskon, ringon);
637 }
638 
639 void SiPixelHitEfficiencyModule::computeEfficiencies(bool modon, bool ladon, bool layon, bool phion, bool bladeon, bool diskon, bool ringon) {
640 
641  if(debug_)
642  std::cout<<"Now Filling histos for detid "<<id_<<std::endl;
643 
644  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
645  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
646 
647  if(modon){
650  /*for(int i=1;i<=meValidX_->getNbinsX();++i){
651  meEfficiencyX_->setBinContent(i,(eff(meValidX_->getBinContent(i),meMissingX_->getBinContent(i))).first);
652  meEfficiencyX_->setBinError(i,(eff(meValidX_->getBinContent(i),meMissingX_->getBinContent(i))).second);
653  }
654  for(int i=1;i<=meValidY_->getNbinsX();++i){
655  meEfficiencyY_->setBinContent(i,(eff(meValidY_->getBinContent(i),meMissingY_->getBinContent(i))).first);
656  meEfficiencyY_->setBinError(i,(eff(meValidY_->getBinContent(i),meMissingY_->getBinContent(i))).second);
657  }
658  for(int i=1;i<=meValidAlpha_->getNbinsX();++i){
659  meEfficiencyAlpha_->setBinContent(i,(eff(meValidAlpha_->getBinContent(i),meMissingAlpha_->getBinContent(i))).first);
660  meEfficiencyAlpha_->setBinError(i,(eff(meValidAlpha_->getBinContent(i),meMissingAlpha_->getBinContent(i))).second);
661  }
662  for(int i=1;i<=meValidBeta_->getNbinsX();++i){
663  meEfficiencyBeta_->setBinContent(i,(eff(meValidBeta_->getBinContent(i),meMissingBeta_->getBinContent(i))).first);
664  meEfficiencyBeta_->setBinError(i,(eff(meValidBeta_->getBinContent(i),meMissingBeta_->getBinContent(i))).second);
665  }*/
666  }
667  if(ladon && barrel){
670  for(int i=1;i<=meValidXLad_->getNbinsX();++i){
673  }
674  for(int i=1;i<=meValidYLad_->getNbinsX();++i){
677  }
678  for(int i=1;i<=meValidAlphaLad_->getNbinsX();++i){
681  }
682  for(int i=1;i<=meValidBetaLad_->getNbinsX();++i){
685  }
686  }
687 
688  if(layon && barrel){
691  for(int i=1;i<=meValidXLay_->getNbinsX();++i){
694  }
695  for(int i=1;i<=meValidYLay_->getNbinsX();++i){
698  }
699  for(int i=1;i<=meValidAlphaLay_->getNbinsX();++i){
702  }
703  for(int i=1;i<=meValidBetaLay_->getNbinsX();++i){
706  }
707  }
708 
709  if(phion && barrel){
712  for(int i=1;i<=meValidXPhi_->getNbinsX();++i){
715  }
716  for(int i=1;i<=meValidYPhi_->getNbinsX();++i){
719  }
720  for(int i=1;i<=meValidAlphaPhi_->getNbinsX();++i){
723  }
724  for(int i=1;i<=meValidBetaPhi_->getNbinsX();++i){
727  }
728  }
729  if(bladeon && endcap){
732  for(int i=1;i<=meValidXBlade_->getNbinsX();++i){
735  }
736  for(int i=1;i<=meValidYBlade_->getNbinsX();++i){
739  }
740  for(int i=1;i<=meValidAlphaBlade_->getNbinsX();++i){
743  }
744  for(int i=1;i<=meValidBetaBlade_->getNbinsX();++i){
747  }
748  }
749  if(diskon && endcap){
752  for(int i=1;i<=meValidXDisk_->getNbinsX();++i){
755  }
756  for(int i=1;i<=meValidYDisk_->getNbinsX();++i){
759  }
760  for(int i=1;i<=meValidAlphaDisk_->getNbinsX();++i){
763  }
764  for(int i=1;i<=meValidBetaDisk_->getNbinsX();++i){
767  }
768  }
769  if(ringon && endcap){
772  for(int i=1;i<=meValidXRing_->getNbinsX();++i){
775  }
776  for(int i=1;i<=meValidYRing_->getNbinsX();++i){
779  }
780  for(int i=1;i<=meValidAlphaRing_->getNbinsX();++i){
783  }
784  for(int i=1;i<=meValidBetaRing_->getNbinsX();++i){
787  }
788  }
789 
790 }
791 
792 std::pair<double,double> SiPixelHitEfficiencyModule::eff(double nValid, double nMissing){
793  double efficiency = 0, error = 0 ;
794  if(nValid+nMissing!=0){
795  efficiency=nValid/(nValid+nMissing);
796  error=sqrt(efficiency*(1.-efficiency)/(nValid+nMissing));
797  }
798  return make_pair(efficiency,error);
799 }
int plaquetteName() const
plaquetteId (in pannel)
type
Definition: HCALResponse.h:21
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:928
int moduleName() const
module id (index in z)
LocalPoint position() const
Local x and y position coordinates.
void book(const edm::ParameterSet &, int type=0, bool isUpgrade=false)
std::pair< double, double > eff(double nValid, double nMissing)
T y() const
Definition: PV3DBase.h:63
bool isHalfModule() const
full or half module
int plaquetteName() const
plaquetteId (in pannel)
void Fill(long long x)
int bladeName() const
blade id
T mag() const
Definition: PV3DBase.h:67
bool isHalfModule() const
full or half module
T sqrt(T t)
Definition: SSEVec.h:48
T z() const
Definition: PV3DBase.h:64
unsigned int module() const
det id
Definition: PXBDetId.h:43
int bladeName() const
blade id
void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
LocalVector momentum() const
Momentum vector in the local frame.
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
int diskName() const
disk id
std::string setHistoId(std::string variable, uint32_t &rawId)
Set Histogram Id.
Definition: DetId.h:18
int ladderName() const
ladder id (index in phi)
void computeEfficiencies(bool modon=true, bool ladon=true, bool layon=true, bool phion=true, bool bladeon=true, bool diskon=true, bool ringon=true)
int ladderName() const
ladder id (index in phi)
int moduleName() const
module id (index in z)
int layerName() const
layer id
std::string const & label() const
Definition: InputTag.h:42
double getBinContent(int binx) const
get content of bin (1-D)
void fill(const LocalTrajectoryParameters &ltp, bool isHitValid, bool modon=true, bool ladon=true, bool layon=true, bool phion=true, bool bladeon=true, bool diskon=true, bool ringon=true)
int pannelName() const
pannel id
int getNbinsX(void) const
get # of bins in X-axis
tuple cout
Definition: gather_cfg.py:121
int diskName() const
disk id
int pannelName() const
pannel id
T x() const
Definition: PV3DBase.h:62
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
int layerName() const
layer id