CMS 3D CMS Logo

SiPixelRecHitsValid.cc
Go to the documentation of this file.
1 // SiPixelRecHitsValid.cc
2 // Description: see SiPixelRecHitsValid.h
3 // Author: Jason Shaev, JHU
4 // Created 6/7/06
5 //
6 // G. Giurgiu, JHU (ggiurgiu@pha.jhu.edu)
7 // added pull distributions (12/27/06)
8 //--------------------------------
9 
11 
23 
25 
32 
42 
45 
46 #include <cmath>
47 
49  : trackerHitAssociatorConfig_(ps, consumesCollector()),
50  siPixelRecHitCollectionToken_(consumes<SiPixelRecHitCollection>(ps.getParameter<edm::InputTag>("src"))) {}
51 
53 
55  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/clustBPIX");
56 
57  Char_t histo[200];
58 
59  // ---------------------------------------------------------------
60  // All histograms that depend on plaquette number have 7 indexes.
61  // The first 4 (0-3) correspond to Panel 1 plaquettes 1-4.
62  // The last 3 (4-6) correspond to Panel 2 plaquettes 1-3.
63  // ---------------------------------------------------------------
64 
65  //Cluster y-size by module number for barrel
66  for (int i = 0; i < 8; i++) {
67  sprintf(histo, "Clust_y_size_Module%d", i + 1);
68  clustYSizeModule[i] = ibooker.book1D(histo, "Cluster y-size by Module", 20, 0.5, 20.5);
69  } // end for
70 
71  //Cluster x-size by layer for barrel
72  for (int i = 0; i < 3; i++) {
73  sprintf(histo, "Clust_x_size_Layer%d", i + 1);
74  clustXSizeLayer[i] = ibooker.book1D(histo, "Cluster x-size by Layer", 20, 0.5, 20.5);
75  } // end for
76 
77  //Cluster charge by module for 3 layers of barrel
78  for (int i = 0; i < 8; i++) {
79  //Cluster charge by module for Layer1
80  sprintf(histo, "Clust_charge_Layer1_Module%d", i + 1);
81  clustChargeLayer1Modules[i] = ibooker.book1D(histo, "Cluster charge Layer 1 by Module", 50, 0., 200000.);
82 
83  //Cluster charge by module for Layer2
84  sprintf(histo, "Clust_charge_Layer2_Module%d", i + 1);
85  clustChargeLayer2Modules[i] = ibooker.book1D(histo, "Cluster charge Layer 2 by Module", 50, 0., 200000.);
86 
87  //Cluster charge by module for Layer3
88  sprintf(histo, "Clust_charge_Layer3_Module%d", i + 1);
89  clustChargeLayer3Modules[i] = ibooker.book1D(histo, "Cluster charge Layer 3 by Module", 50, 0., 200000.);
90  } // end for
91 
92  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/clustFPIX");
93  //Cluster x-size, y-size, and charge by plaquette for Disks in Forward
94  for (int i = 0; i < 7; i++) {
95  //Cluster x-size for Disk1 by Plaquette
96  sprintf(histo, "Clust_x_size_Disk1_Plaquette%d", i + 1);
97  clustXSizeDisk1Plaquettes[i] = ibooker.book1D(histo, "Cluster X-size for Disk1 by Plaquette", 20, 0.5, 20.5);
98 
99  //Cluster x-size for Disk2 by Plaquette
100  sprintf(histo, "Clust_x_size_Disk2_Plaquette%d", i + 1);
101  clustXSizeDisk2Plaquettes[i] = ibooker.book1D(histo, "Cluster X-size for Disk2 by Plaquette", 20, 0.5, 20.5);
102 
103  //Cluster y-size for Disk1 by Plaquette
104  sprintf(histo, "Clust_y_size_Disk1_Plaquette%d", i + 1);
105  clustYSizeDisk1Plaquettes[i] = ibooker.book1D(histo, "Cluster Y-size for Disk1 by Plaquette", 20, 0.5, 20.5);
106 
107  //Cluster y-size for Disk2 by Plaquette
108  sprintf(histo, "Clust_y_size_Disk2_Plaquette%d", i + 1);
109  clustYSizeDisk2Plaquettes[i] = ibooker.book1D(histo, "Cluster Y-size for Disk2 by Plaquette", 20, 0.5, 20.5);
110 
111  //Cluster charge for Disk1 by Plaquette
112  sprintf(histo, "Clust_charge_Disk1_Plaquette%d", i + 1);
113  clustChargeDisk1Plaquettes[i] = ibooker.book1D(histo, "Cluster charge for Disk1 by Plaquette", 50, 0., 200000.);
114 
115  //Cluster charge for Disk2 by Plaquette
116  sprintf(histo, "Clust_charge_Disk2_Plaquette%d", i + 1);
117  clustChargeDisk2Plaquettes[i] = ibooker.book1D(histo, "Cluster charge for Disk2 by Plaquette", 50, 0., 200000.);
118  } // end for
119 
120  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitBPIX");
121  //RecHit Bunch crossing all barrel hits
122  recHitBunchB = ibooker.book1D("RecHit_Bunch_Barrel", "RecHit Bunch Crossing, Barrel", 20, -10., 10.);
123 
124  //RecHit Event, in-time bunch, all barrel hits
125  recHitEventB = ibooker.book1D("RecHit_Event_Barrel", "RecHit Event (in-time bunch), Barrel", 100, 0., 100.);
126 
127  //RecHit X Resolution all barrel hits
128  recHitXResAllB = ibooker.book1D("RecHit_xres_b_All", "RecHit X Res All Modules in Barrel", 100, -200., 200.);
129 
130  //RecHit Y Resolution all barrel hits
131  recHitYResAllB = ibooker.book1D("RecHit_yres_b_All", "RecHit Y Res All Modules in Barrel", 100, -200., 200.);
132 
133  //RecHit X distribution for full modules for barrel
134  recHitXFullModules = ibooker.book1D("RecHit_x_FullModules", "RecHit X distribution for full modules", 100, -2., 2.);
135 
136  //RecHit X distribution for half modules for barrel
137  recHitXHalfModules = ibooker.book1D("RecHit_x_HalfModules", "RecHit X distribution for half modules", 100, -1., 1.);
138 
139  //RecHit Y distribution all modules for barrel
140  recHitYAllModules = ibooker.book1D("RecHit_y_AllModules", "RecHit Y distribution for all modules", 100, -4., 4.);
141 
142  //RecHit X resolution for flipped and unflipped ladders by layer for barrel
143  for (int i = 0; i < 3; i++) {
144  //RecHit no. of matched simHits all ladders by layer
145  sprintf(histo, "RecHit_NsimHit_Layer%d", i + 1);
146  recHitNsimHitLayer[i] = ibooker.book1D(histo, "RecHit Number of simHits by Layer", 30, 0., 30.);
147 
148  //RecHit X resolution for flipped ladders by layer
149  sprintf(histo, "RecHit_XRes_FlippedLadder_Layer%d", i + 1);
150  recHitXResFlippedLadderLayers[i] = ibooker.book1D(histo, "RecHit XRes Flipped Ladders by Layer", 100, -200., 200.);
151 
152  //RecHit X resolution for unflipped ladders by layer
153  sprintf(histo, "RecHit_XRes_UnFlippedLadder_Layer%d", i + 1);
155  ibooker.book1D(histo, "RecHit XRes NonFlipped Ladders by Layer", 100, -200., 200.);
156  } // end for
157 
158  //RecHit Y resolutions for layers by module for barrel
159  for (int i = 0; i < 8; i++) {
160  //Rec Hit Y resolution by module for Layer1
161  sprintf(histo, "RecHit_YRes_Layer1_Module%d", i + 1);
162  recHitYResLayer1Modules[i] = ibooker.book1D(histo, "RecHit YRes Layer1 by module", 100, -200., 200.);
163 
164  //RecHit Y resolution by module for Layer2
165  sprintf(histo, "RecHit_YRes_Layer2_Module%d", i + 1);
166  recHitYResLayer2Modules[i] = ibooker.book1D(histo, "RecHit YRes Layer2 by module", 100, -200., 200.);
167 
168  //RecHit Y resolution by module for Layer3
169  sprintf(histo, "RecHit_YRes_Layer3_Module%d", i + 1);
170  recHitYResLayer3Modules[i] = ibooker.book1D(histo, "RecHit YRes Layer3 by module", 100, -200., 200.);
171  } // end for
172 
173  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitFPIX");
174  //RecHit Bunch crossing all plaquettes
175  recHitBunchF = ibooker.book1D("RecHit_Bunch_Forward", "RecHit Bunch Crossing, Forward", 20, -10., 10.);
176 
177  //RecHit Event, in-time bunch, all plaquettes
178  recHitEventF = ibooker.book1D("RecHit_Event_Forward", "RecHit Event (in-time bunch), Forward", 100, 0., 100.);
179 
180  //RecHit No. of simHits, by disk
181  recHitNsimHitDisk1 = ibooker.book1D("RecHit_NsimHit_Disk1", "RecHit Number of simHits, Disk1", 30, 0., 30.);
182  recHitNsimHitDisk2 = ibooker.book1D("RecHit_NsimHit_Disk2", "RecHit Number of simHits, Disk2", 30, 0., 30.);
183 
184  //RecHit X resolution all plaquettes
185  recHitXResAllF = ibooker.book1D("RecHit_xres_f_All", "RecHit X Res All in Forward", 100, -200., 200.);
186 
187  //RecHit Y resolution all plaquettes
188  recHitYResAllF = ibooker.book1D("RecHit_yres_f_All", "RecHit Y Res All in Forward", 100, -200., 200.);
189 
190  //RecHit X distribution for plaquette with x-size 1 in forward
192  ibooker.book1D("RecHit_x_Plaquette_xsize1", "RecHit X Distribution for plaquette x-size1", 100, -2., 2.);
193 
194  //RecHit X distribution for plaquette with x-size 2 in forward
196  ibooker.book1D("RecHit_x_Plaquette_xsize2", "RecHit X Distribution for plaquette x-size2", 100, -2., 2.);
197 
198  //RecHit Y distribution for plaquette with y-size 2 in forward
200  ibooker.book1D("RecHit_y_Plaquette_ysize2", "RecHit Y Distribution for plaquette y-size2", 100, -4., 4.);
201 
202  //RecHit Y distribution for plaquette with y-size 3 in forward
204  ibooker.book1D("RecHit_y_Plaquette_ysize3", "RecHit Y Distribution for plaquette y-size3", 100, -4., 4.);
205 
206  //RecHit Y distribution for plaquette with y-size 4 in forward
208  ibooker.book1D("RecHit_y_Plaquette_ysize4", "RecHit Y Distribution for plaquette y-size4", 100, -4., 4.);
209 
210  //RecHit Y distribution for plaquette with y-size 5 in forward
212  ibooker.book1D("RecHit_y_Plaquette_ysize5", "RecHit Y Distribution for plaquette y-size5", 100, -4., 4.);
213 
214  //X and Y resolutions for both disks by plaquette in forward
215  for (int i = 0; i < 7; i++) {
216  //X resolution for Disk1 by plaquette
217  sprintf(histo, "RecHit_XRes_Disk1_Plaquette%d", i + 1);
218  recHitXResDisk1Plaquettes[i] = ibooker.book1D(histo, "RecHit XRes Disk1 by plaquette", 100, -200., 200.);
219  //X resolution for Disk2 by plaquette
220  sprintf(histo, "RecHit_XRes_Disk2_Plaquette%d", i + 1);
221  recHitXResDisk2Plaquettes[i] = ibooker.book1D(histo, "RecHit XRes Disk2 by plaquette", 100, -200., 200.);
222 
223  //Y resolution for Disk1 by plaquette
224  sprintf(histo, "RecHit_YRes_Disk1_Plaquette%d", i + 1);
225  recHitYResDisk1Plaquettes[i] = ibooker.book1D(histo, "RecHit YRes Disk1 by plaquette", 100, -200., 200.);
226  //Y resolution for Disk2 by plaquette
227  sprintf(histo, "RecHit_YRes_Disk2_Plaquette%d", i + 1);
228  recHitYResDisk2Plaquettes[i] = ibooker.book1D(histo, "RecHit YRes Disk2 by plaquette", 100, -200., 200.);
229  }
230 
231  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitPullsBPIX");
232  recHitXPullAllB = ibooker.book1D("RecHit_xres_b_All", "RecHit X Pull All Modules in Barrel", 100, -10.0, 10.0);
233  recHitYPullAllB = ibooker.book1D("RecHit_yres_b_All", "RecHit Y Pull All Modules in Barrel", 100, -10.0, 10.0);
234 
235  for (int i = 0; i < 3; i++) {
236  sprintf(histo, "RecHit_XPull_FlippedLadder_Layer%d", i + 1);
238  ibooker.book1D(histo, "RecHit XPull Flipped Ladders by Layer", 100, -10.0, 10.0);
239 
240  sprintf(histo, "RecHit_XPull_UnFlippedLadder_Layer%d", i + 1);
242  ibooker.book1D(histo, "RecHit XPull NonFlipped Ladders by Layer", 100, -10.0, 10.0);
243  }
244 
245  for (int i = 0; i < 8; i++) {
246  sprintf(histo, "RecHit_YPull_Layer1_Module%d", i + 1);
247  recHitYPullLayer1Modules[i] = ibooker.book1D(histo, "RecHit YPull Layer1 by module", 100, -10.0, 10.0);
248 
249  sprintf(histo, "RecHit_YPull_Layer2_Module%d", i + 1);
250  recHitYPullLayer2Modules[i] = ibooker.book1D(histo, "RecHit YPull Layer2 by module", 100, -10.0, 10.0);
251 
252  sprintf(histo, "RecHit_YPull_Layer3_Module%d", i + 1);
253  recHitYPullLayer3Modules[i] = ibooker.book1D(histo, "RecHit YPull Layer3 by module", 100, -10.0, 10.0);
254  }
255 
256  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitPullsFPIX");
257  recHitXPullAllF = ibooker.book1D("RecHit_XPull_f_All", "RecHit X Pull All in Forward", 100, -10.0, 10.0);
258 
259  recHitYPullAllF = ibooker.book1D("RecHit_YPull_f_All", "RecHit Y Pull All in Forward", 100, -10.0, 10.0);
260 
261  for (int i = 0; i < 7; i++) {
262  sprintf(histo, "RecHit_XPull_Disk1_Plaquette%d", i + 1);
263  recHitXPullDisk1Plaquettes[i] = ibooker.book1D(histo, "RecHit XPull Disk1 by plaquette", 100, -10.0, 10.0);
264  sprintf(histo, "RecHit_XPull_Disk2_Plaquette%d", i + 1);
265  recHitXPullDisk2Plaquettes[i] = ibooker.book1D(histo, "RecHit XPull Disk2 by plaquette", 100, -10.0, 10.0);
266 
267  sprintf(histo, "RecHit_YPull_Disk1_Plaquette%d", i + 1);
268  recHitYPullDisk1Plaquettes[i] = ibooker.book1D(histo, "RecHit YPull Disk1 by plaquette", 100, -10.0, 10.0);
269 
270  sprintf(histo, "RecHit_YPull_Disk2_Plaquette%d", i + 1);
271  recHitYPullDisk2Plaquettes[i] = ibooker.book1D(histo, "RecHit YPull Disk2 by plaquette", 100, -10.0, 10.0);
272  }
273 }
274 
276  //Retrieve tracker topology from geometry
278  es.get<TrackerTopologyRcd>().get(tTopoHand);
279  const TrackerTopology* tTopo = tTopoHand.product();
280 
281  edm::LogInfo("EventInfo") << " Run = " << e.id().run() << " Event = " << e.id().event();
282  if (e.id().event() % 1000 == 0)
283  std::cout << " Run = " << e.id().run() << " Event = " << e.id().event() << std::endl;
284 
285  //Get RecHits
287  e.getByToken(siPixelRecHitCollectionToken_, recHitColl);
288 
289  //Get event setup
292  const TrackerGeometry& theTracker(*geom);
293 
295 
296  //iterate over detunits
297  for (TrackerGeometry::DetContainer::const_iterator it = geom->dets().begin(); it != geom->dets().end(); it++) {
298  DetId detId = ((*it)->geographicalId());
299  unsigned int subid = detId.subdetId();
300 
301  if (!((subid == 1) || (subid == 2)))
302  continue;
303 
304  const PixelGeomDetUnit* theGeomDet = dynamic_cast<const PixelGeomDetUnit*>(theTracker.idToDet(detId));
305 
306  SiPixelRecHitCollection::const_iterator pixeldet = recHitColl->find(detId);
307  if (pixeldet == recHitColl->end())
308  continue;
309  SiPixelRecHitCollection::DetSet pixelrechitRange = *pixeldet;
310  SiPixelRecHitCollection::DetSet::const_iterator pixelrechitRangeIteratorBegin = pixelrechitRange.begin();
311  SiPixelRecHitCollection::DetSet::const_iterator pixelrechitRangeIteratorEnd = pixelrechitRange.end();
312  SiPixelRecHitCollection::DetSet::const_iterator pixeliter = pixelrechitRangeIteratorBegin;
313  std::vector<PSimHit> matched;
314 
315  //----Loop over rechits for this detId
316  for (; pixeliter != pixelrechitRangeIteratorEnd; pixeliter++) {
317  matched.clear();
318  matched = associate.associateHit(*pixeliter);
319 
320  if (!matched.empty()) {
321  float closest = 9999.9;
322  std::vector<PSimHit>::const_iterator closestit = matched.begin();
323  LocalPoint lp = pixeliter->localPosition();
324  float rechit_x = lp.x();
325  float rechit_y = lp.y();
326 
327  //loop over sim hits and fill closet
328  for (std::vector<PSimHit>::const_iterator m = matched.begin(); m < matched.end(); m++) {
329  float sim_x1 = (*m).entryPoint().x();
330  float sim_x2 = (*m).exitPoint().x();
331  float sim_xpos = 0.5 * (sim_x1 + sim_x2);
332 
333  float sim_y1 = (*m).entryPoint().y();
334  float sim_y2 = (*m).exitPoint().y();
335  float sim_ypos = 0.5 * (sim_y1 + sim_y2);
336 
337  float x_res = fabs(sim_xpos - rechit_x);
338  float y_res = fabs(sim_ypos - rechit_y);
339 
340  float dist = sqrt(x_res * x_res + y_res * y_res);
341 
342  if (dist < closest) {
343  closest = dist;
344  closestit = m;
345  }
346  } // end sim hit loop
347 
348  if (subid == 1) { //<----------barrel
349  fillBarrel(*pixeliter, *closestit, detId, theGeomDet, tTopo);
350  } // end barrel
351  if (subid == 2) { // <-------forward
352  fillForward(*pixeliter, *closestit, detId, theGeomDet, tTopo);
353  }
354 
355  } // end matched emtpy
356 
357  int NsimHit = matched.size();
358  if (subid == 1) { //<----------barrel
359  for (unsigned int i = 0; i < 3; i++)
360  if (tTopo->pxbLayer(detId) == i + 1)
361  recHitNsimHitLayer[i]->Fill(NsimHit);
362  } // end barrel
363  if (subid == 2) { // <-------forward
364  if (tTopo->pxfDisk(detId) == 1)
365  recHitNsimHitDisk1->Fill(NsimHit);
366  else
367  recHitNsimHitDisk2->Fill(NsimHit);
368  }
369  } // <-----end rechit loop
370  } // <------ end detunit loop
371 }
372 
374  const PSimHit& simHit,
375  DetId detId,
376  const PixelGeomDetUnit* theGeomDet,
377  const TrackerTopology* tTopo) {
378  const float cmtomicron = 10000.0;
379 
380  int bunch = simHit.eventId().bunchCrossing();
381  int event = simHit.eventId().event();
382 
383  recHitBunchB->Fill(bunch);
384  if (bunch == 0)
386 
387  LocalPoint lp = recHit.localPosition();
388  float lp_y = lp.y();
389  float lp_x = lp.x();
390 
391  LocalError lerr = recHit.localPositionError();
392  float lerr_x = sqrt(lerr.xx());
393  float lerr_y = sqrt(lerr.yy());
394 
395  recHitYAllModules->Fill(lp_y);
396 
397  float sim_x1 = simHit.entryPoint().x();
398  float sim_x2 = simHit.exitPoint().x();
399  float sim_xpos = 0.5 * (sim_x1 + sim_x2);
400  float res_x = (lp.x() - sim_xpos) * cmtomicron;
401 
402  recHitXResAllB->Fill(res_x);
403 
404  float sim_y1 = simHit.entryPoint().y();
405  float sim_y2 = simHit.exitPoint().y();
406  float sim_ypos = 0.5 * (sim_y1 + sim_y2);
407  float res_y = (lp.y() - sim_ypos) * cmtomicron;
408 
409  recHitYResAllB->Fill(res_y);
410 
411  float pull_x = (lp_x - sim_xpos) / lerr_x;
412  float pull_y = (lp_y - sim_ypos) / lerr_y;
413 
414  recHitXPullAllB->Fill(pull_x);
415  recHitYPullAllB->Fill(pull_y);
416 
417  int rows = theGeomDet->specificTopology().nrows();
418 
419  if (rows == 160) {
420  recHitXFullModules->Fill(lp_x);
421  } else if (rows == 80) {
422  recHitXHalfModules->Fill(lp_x);
423  }
424 
425  float tmp1 = theGeomDet->surface().toGlobal(Local3DPoint(0., 0., 0.)).perp();
426  float tmp2 = theGeomDet->surface().toGlobal(Local3DPoint(0., 0., 1.)).perp();
427 
428  if (tmp2 < tmp1) { // flipped
429  for (unsigned int i = 0; i < 3; i++) {
430  if (tTopo->pxbLayer(detId) == i + 1) {
433  }
434  }
435  } else {
436  for (unsigned int i = 0; i < 3; i++) {
437  if (tTopo->pxbLayer(detId) == i + 1) {
440  }
441  }
442  }
443 
444  //get cluster
445  SiPixelRecHit::ClusterRef const& clust = recHit.cluster();
446 
447  // fill module dependent info
448  for (unsigned int i = 0; i < 8; i++) {
449  if (tTopo->pxbModule(detId) == i + 1) {
450  int sizeY = (*clust).sizeY();
452 
453  if (tTopo->pxbLayer(detId) == 1) {
454  float charge = (*clust).charge();
456  recHitYResLayer1Modules[i]->Fill(res_y);
457  recHitYPullLayer1Modules[i]->Fill(pull_y);
458  } else if (tTopo->pxbLayer(detId) == 2) {
459  float charge = (*clust).charge();
461  recHitYResLayer2Modules[i]->Fill(res_y);
462  recHitYPullLayer2Modules[i]->Fill(pull_y);
463  } else if (tTopo->pxbLayer(detId) == 3) {
464  float charge = (*clust).charge();
466  recHitYResLayer3Modules[i]->Fill(res_y);
467  recHitYPullLayer3Modules[i]->Fill(pull_y);
468  }
469  }
470  }
471  int sizeX = (*clust).sizeX();
472  if (tTopo->pxbLayer(detId) == 1)
474  if (tTopo->pxbLayer(detId) == 2)
476  if (tTopo->pxbLayer(detId) == 3)
478 }
479 
481  const PSimHit& simHit,
482  DetId detId,
483  const PixelGeomDetUnit* theGeomDet,
484  const TrackerTopology* tTopo) {
485  int rows = theGeomDet->specificTopology().nrows();
486  int cols = theGeomDet->specificTopology().ncolumns();
487 
488  const float cmtomicron = 10000.0;
489 
490  int bunch = simHit.eventId().bunchCrossing();
491  int event = simHit.eventId().event();
492 
493  recHitBunchF->Fill(bunch);
494  if (bunch == 0)
496 
497  LocalPoint lp = recHit.localPosition();
498  float lp_x = lp.x();
499  float lp_y = lp.y();
500 
501  LocalError lerr = recHit.localPositionError();
502  float lerr_x = sqrt(lerr.xx());
503  float lerr_y = sqrt(lerr.yy());
504 
505  float sim_x1 = simHit.entryPoint().x();
506  float sim_x2 = simHit.exitPoint().x();
507  float sim_xpos = 0.5 * (sim_x1 + sim_x2);
508 
509  float sim_y1 = simHit.entryPoint().y();
510  float sim_y2 = simHit.exitPoint().y();
511  float sim_ypos = 0.5 * (sim_y1 + sim_y2);
512 
513  float pull_x = (lp_x - sim_xpos) / lerr_x;
514  float pull_y = (lp_y - sim_ypos) / lerr_y;
515 
516  if (rows == 80) {
518  } else if (rows == 160) {
520  }
521 
522  if (cols == 104) {
524  } else if (cols == 156) {
526  } else if (cols == 208) {
528  } else if (cols == 260) {
530  }
531 
532  float res_x = (lp.x() - sim_xpos) * cmtomicron;
533 
534  recHitXResAllF->Fill(res_x);
535  recHitXPullAllF->Fill(pull_x);
536 
537  float res_y = (lp.y() - sim_ypos) * cmtomicron;
538 
539  recHitYPullAllF->Fill(pull_y);
540 
541  // get cluster
542  SiPixelRecHit::ClusterRef const& clust = recHit.cluster();
543 
544  // fill plaquette dependent info
545  for (unsigned int i = 0; i < 7; i++) {
546  if (tTopo->pxfModule(detId) == i + 1) {
547  if (tTopo->pxfDisk(detId) == 1) {
548  int sizeX = (*clust).sizeX();
550 
551  int sizeY = (*clust).sizeY();
553 
554  float charge = (*clust).charge();
556 
559 
562  } else {
563  int sizeX = (*clust).sizeX();
565 
566  int sizeY = (*clust).sizeY();
568 
569  float charge = (*clust).charge();
571 
574 
577 
578  } // end else
579  } // end if module
580  else if (tTopo->pxfPanel(detId) == 2 && (tTopo->pxfModule(detId) + 4) == i + 1) {
581  if (tTopo->pxfDisk(detId) == 1) {
582  int sizeX = (*clust).sizeX();
584 
585  int sizeY = (*clust).sizeY();
587 
588  float charge = (*clust).charge();
590 
593 
596  } else {
597  int sizeX = (*clust).sizeX();
599 
600  int sizeY = (*clust).sizeY();
602 
603  float charge = (*clust).charge();
605 
608 
611 
612  } // end else
613  } // end else
614  } // end for
615 }
SiPixelRecHitsValid::bookHistograms
void bookHistograms(DQMStore::IBooker &ibooker, const edm::Run &run, const edm::EventSetup &es) override
Definition: SiPixelRecHitsValid.cc:54
muonTagProbeFilters_cff.matched
matched
Definition: muonTagProbeFilters_cff.py:62
TrackerGeometry::idToDet
const TrackerGeomDet * idToDet(DetId) const override
Definition: TrackerGeometry.cc:193
SiPixelRecHitsValid::clustYSizeDisk1Plaquettes
MonitorElement * clustYSizeDisk1Plaquettes[7]
Definition: SiPixelRecHitsValid.h:53
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
SiPixelRecHitsValid::recHitXPullDisk1Plaquettes
MonitorElement * recHitXPullDisk1Plaquettes[7]
Definition: SiPixelRecHitsValid.h:106
Handle.h
SiPixelRecHitsValid::recHitXPullAllB
MonitorElement * recHitXPullAllB
Definition: SiPixelRecHitsValid.h:93
mps_fire.i
i
Definition: mps_fire.py:428
PixelSubdetector.h
MessageLogger.h
SiPixelRecHitsValid::recHitBunchB
MonitorElement * recHitBunchB
Definition: SiPixelRecHitsValid.h:69
TrackerGeometry.h
SiPixelRecHitsValid::clustChargeLayer2Modules
MonitorElement * clustChargeLayer2Modules[8]
Definition: SiPixelRecHitsValid.h:47
PixelTopology.h
ESHandle.h
SiPixelRecHitsValid::fillBarrel
void fillBarrel(const SiPixelRecHit &, const PSimHit &, DetId, const PixelGeomDetUnit *, const TrackerTopology *tTopo)
Definition: SiPixelRecHitsValid.cc:373
SiPixelRecHitsValid::recHitYResLayer2Modules
MonitorElement * recHitYResLayer2Modules[8]
Definition: SiPixelRecHitsValid.h:67
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
edm::Run
Definition: Run.h:45
edm
HLT enums.
Definition: AlignableModifier.h:19
TrackerTopology
Definition: TrackerTopology.h:16
gather_cfg.cout
cout
Definition: gather_cfg.py:144
PSimHitContainer.h
SiPixelCluster.h
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
TrackerHitAssociator::associateHit
std::vector< PSimHit > associateHit(const TrackingRecHit &thit) const
Definition: TrackerHitAssociator.cc:212
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
SiPixelRecHitsValid::recHitXPullDisk2Plaquettes
MonitorElement * recHitXPullDisk2Plaquettes[7]
Definition: SiPixelRecHitsValid.h:107
edmNew::DetSetVector::const_iterator
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
Definition: DetSetVectorNew.h:197
GeomDetType.h
timingPdfMaker.histo
histo
Definition: timingPdfMaker.py:279
DQMStore.h
SiPixelRecHitsValid::recHitXResAllB
MonitorElement * recHitXResAllB
Definition: SiPixelRecHitsValid.h:59
SiPixelRecHitsValid::clustYSizeDisk2Plaquettes
MonitorElement * clustYSizeDisk2Plaquettes[7]
Definition: SiPixelRecHitsValid.h:54
SiPixelRecHitsValid::recHitYPullLayer2Modules
MonitorElement * recHitYPullLayer2Modules[8]
Definition: SiPixelRecHitsValid.h:99
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
SiPixelRecHitsValid::recHitXPullAllF
MonitorElement * recHitXPullAllF
Definition: SiPixelRecHitsValid.h:103
edm::Handle
Definition: AssociativeIterator.h:50
SiPixelRecHitsValid::clustChargeDisk1Plaquettes
MonitorElement * clustChargeDisk1Plaquettes[7]
Definition: SiPixelRecHitsValid.h:55
SiPixelRecHitsValid::clustChargeDisk2Plaquettes
MonitorElement * clustChargeDisk2Plaquettes[7]
Definition: SiPixelRecHitsValid.h:56
rpcPointValidation_cfi.recHit
recHit
Definition: rpcPointValidation_cfi.py:7
SiPixelRecHit
Our base class.
Definition: SiPixelRecHit.h:23
SiPixelRecHitsValid::recHitXPullFlippedLadderLayers
MonitorElement * recHitXPullFlippedLadderLayers[3]
Definition: SiPixelRecHitsValid.h:96
edm::Ref
Definition: AssociativeIterator.h:58
SiPixelRecHitsValid::recHitYAllModules
MonitorElement * recHitYAllModules
Definition: SiPixelRecHitsValid.h:63
TrackerTopology::pxbLayer
unsigned int pxbLayer(const DetId &id) const
Definition: TrackerTopology.h:144
TrackerTopology::pxfPanel
unsigned int pxfPanel(const DetId &id) const
Definition: TrackerTopology.h:450
SiPixelRecHitsValid::recHitYPullLayer1Modules
MonitorElement * recHitYPullLayer1Modules[8]
Definition: SiPixelRecHitsValid.h:98
DetId
Definition: DetId.h:17
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
edmNew::DetSet::end
iterator end()
Definition: DetSetNew.h:56
MakerMacros.h
TrackerTopology.h
edmNew::DetSetVector::find
const_iterator find(id_type i, bool update=false) const
Definition: DetSetVectorNew.h:518
SiPixelRecHitsValid::recHitYPullLayer3Modules
MonitorElement * recHitYPullLayer3Modules[8]
Definition: SiPixelRecHitsValid.h:100
PSimHit.h
TrackerTopologyRcd.h
SiPixelRecHitsValid::recHitXResFlippedLadderLayers
MonitorElement * recHitXResFlippedLadderLayers[3]
Definition: SiPixelRecHitsValid.h:64
SiPixelRecHitsValid::recHitNsimHitDisk1
MonitorElement * recHitNsimHitDisk1
Definition: SiPixelRecHitsValid.h:88
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
LocalError::xx
float xx() const
Definition: LocalError.h:22
SiPixelRecHitsValid::recHitYResLayer3Modules
MonitorElement * recHitYResLayer3Modules[8]
Definition: SiPixelRecHitsValid.h:68
Service.h
SiPixelRecHitsValid::SiPixelRecHitsValid
SiPixelRecHitsValid(const edm::ParameterSet &conf)
Definition: SiPixelRecHitsValid.cc:48
rpcPointValidation_cfi.simHit
simHit
Definition: rpcPointValidation_cfi.py:24
visualization-live-secondInstance_cfg.m
m
Definition: visualization-live-secondInstance_cfg.py:72
SiPixelRecHitsValid::fillForward
void fillForward(const SiPixelRecHit &, const PSimHit &, DetId, const PixelGeomDetUnit *, const TrackerTopology *tTopo)
Definition: SiPixelRecHitsValid.cc:480
PixelGeomDetUnit
Definition: PixelGeomDetUnit.h:15
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
Surface::toGlobal
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
SiPixelRecHitsValid::recHitXPlaquetteSize1
MonitorElement * recHitXPlaquetteSize1
Definition: SiPixelRecHitsValid.h:76
edm::ESHandle< TrackerTopology >
edmNew::DetSet
Definition: DetSetNew.h:22
PixelTopology::ncolumns
virtual int ncolumns() const =0
RecoTauValidation_cfi.sizeY
sizeY
Definition: RecoTauValidation_cfi.py:291
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
SiPixelRecHitsValid::recHitYPlaquetteSize3
MonitorElement * recHitYPlaquetteSize3
Definition: SiPixelRecHitsValid.h:79
SiPixelRecHitsValid::recHitEventF
MonitorElement * recHitEventF
Definition: SiPixelRecHitsValid.h:87
SiPixelRecHitsValid::recHitYPlaquetteSize4
MonitorElement * recHitYPlaquetteSize4
Definition: SiPixelRecHitsValid.h:80
Point3DBase< float, LocalTag >
SiPixelRecHit.h
SiPixelRecHitsValid::recHitNsimHitDisk2
MonitorElement * recHitNsimHitDisk2
Definition: SiPixelRecHitsValid.h:89
PixelGeomDetType.h
SiPixelRecHitsValid::clustXSizeDisk2Plaquettes
MonitorElement * clustXSizeDisk2Plaquettes[7]
Definition: SiPixelRecHitsValid.h:52
SiPixelRecHitsValid::recHitYResAllB
MonitorElement * recHitYResAllB
Definition: SiPixelRecHitsValid.h:60
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
SiPixelRecHitsValid::recHitYPullDisk2Plaquettes
MonitorElement * recHitYPullDisk2Plaquettes[7]
Definition: SiPixelRecHitsValid.h:109
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
SiPixelRecHitsValid::trackerHitAssociatorConfig_
TrackerHitAssociator::Config trackerHitAssociatorConfig_
Definition: SiPixelRecHitsValid.h:111
SiPixelRecHitsValid::recHitYResLayer1Modules
MonitorElement * recHitYResLayer1Modules[8]
Definition: SiPixelRecHitsValid.h:66
TrackerDigiGeometryRecord.h
SiPixelRecHitsValid::clustYSizeModule
MonitorElement * clustYSizeModule[8]
Definition: SiPixelRecHitsValid.h:44
edm::ParameterSet
Definition: ParameterSet.h:47
SiPixelRecHitsValid::clustXSizeDisk1Plaquettes
MonitorElement * clustXSizeDisk1Plaquettes[7]
Definition: SiPixelRecHitsValid.h:51
RecoTauValidation_cfi.sizeX
sizeX
Definition: RecoTauValidation_cfi.py:290
Event.h
LocalError
Definition: LocalError.h:12
SiPixelRecHitsValid::recHitXResAllF
MonitorElement * recHitXResAllF
Definition: SiPixelRecHitsValid.h:74
PixelGeomDetUnit::specificTopology
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
Definition: PixelGeomDetUnit.cc:17
SiPixelRecHitsValid::recHitYPullAllB
MonitorElement * recHitYPullAllB
Definition: SiPixelRecHitsValid.h:94
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
SiPixelRecHitsValid::recHitXPullNonFlippedLadderLayers
MonitorElement * recHitXPullNonFlippedLadderLayers[3]
Definition: SiPixelRecHitsValid.h:97
TrackerTopology::pxfModule
unsigned int pxfModule(const DetId &id) const
Definition: TrackerTopology.h:163
TrackerTopology::pxfDisk
unsigned int pxfDisk(const DetId &id) const
Definition: TrackerTopology.h:446
SiPixelRecHitsValid::recHitXResDisk1Plaquettes
MonitorElement * recHitXResDisk1Plaquettes[7]
Definition: SiPixelRecHitsValid.h:82
edmNew::DetSet::begin
iterator begin()
Definition: DetSetNew.h:54
SiPixelRecHitsValid::recHitBunchF
MonitorElement * recHitBunchF
Definition: SiPixelRecHitsValid.h:86
edm::EventSetup
Definition: EventSetup.h:57
DetSetVector.h
SiPixelRecHitsValid.h
GeometricDet.h
get
#define get
HcalObjRepresent::Fill
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
Definition: HcalObjRepresent.h:1053
SiPixelRecHitsValid::recHitYPlaquetteSize5
MonitorElement * recHitYPlaquetteSize5
Definition: SiPixelRecHitsValid.h:81
SiPixelRecHitsValid::clustXSizeLayer
MonitorElement * clustXSizeLayer[3]
Definition: SiPixelRecHitsValid.h:45
SiPixelRecHitsValid::recHitYResDisk2Plaquettes
MonitorElement * recHitYResDisk2Plaquettes[7]
Definition: SiPixelRecHitsValid.h:85
TrackerHitAssociator
Definition: TrackerHitAssociator.h:55
GeomDet.h
edmNew::DetSetVector
Definition: DetSetNew.h:13
SiPixelRecHitsValid::recHitEventB
MonitorElement * recHitEventB
Definition: SiPixelRecHitsValid.h:70
SiPixelRecHitsValid::recHitXPlaquetteSize2
MonitorElement * recHitXPlaquetteSize2
Definition: SiPixelRecHitsValid.h:77
writedatasetfile.run
run
Definition: writedatasetfile.py:27
Ref.h
SiPixelRecHitsValid::recHitYPlaquetteSize2
MonitorElement * recHitYPlaquetteSize2
Definition: SiPixelRecHitsValid.h:78
SiPixelRecHitsValid::recHitXFullModules
MonitorElement * recHitXFullModules
Definition: SiPixelRecHitsValid.h:61
SiPixelRecHitsValid::~SiPixelRecHitsValid
~SiPixelRecHitsValid() override
Definition: SiPixelRecHitsValid.cc:52
SiPixelRecHitsValid::analyze
void analyze(const edm::Event &e, const edm::EventSetup &c) override
Definition: SiPixelRecHitsValid.cc:275
TrackerTopology::pxbModule
unsigned int pxbModule(const DetId &id) const
Definition: TrackerTopology.h:160
DetId.h
SiPixelRecHitsValid::recHitXHalfModules
MonitorElement * recHitXHalfModules
Definition: SiPixelRecHitsValid.h:62
LocalPoint.h
edmNew::DetSetVector::end
const_iterator end(bool update=false) const
Definition: DetSetVectorNew.h:535
SiPixelRecHitsValid::recHitYPullAllF
MonitorElement * recHitYPullAllF
Definition: SiPixelRecHitsValid.h:104
PixelGeomDetUnit.h
EventSetup.h
dqm::implementation::IBooker
Definition: DQMStore.h:43
SiPixelRecHitsValid::recHitYPullDisk1Plaquettes
MonitorElement * recHitYPullDisk1Plaquettes[7]
Definition: SiPixelRecHitsValid.h:108
SiPixelRecHitsValid::recHitNsimHitLayer
MonitorElement * recHitNsimHitLayer[3]
Definition: SiPixelRecHitsValid.h:71
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
PSimHit
Definition: PSimHit.h:15
SiPixelRecHitsValid::clustChargeLayer1Modules
MonitorElement * clustChargeLayer1Modules[8]
Definition: SiPixelRecHitsValid.h:46
OwnVector.h
SiPixelRecHitsValid
Definition: SiPixelRecHitsValid.h:27
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
PixelTopology::nrows
virtual int nrows() const =0
postprocess-scan-build.rows
rows
Definition: postprocess-scan-build.py:11
SiPixelRecHitsValid::recHitXResNonFlippedLadderLayers
MonitorElement * recHitXResNonFlippedLadderLayers[3]
Definition: SiPixelRecHitsValid.h:65
SiPixelRecHitsValid::recHitYResDisk1Plaquettes
MonitorElement * recHitYResDisk1Plaquettes[7]
Definition: SiPixelRecHitsValid.h:84
GlobalPoint.h
LocalError::yy
float yy() const
Definition: LocalError.h:24
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
SiPixelRecHitsValid::clustChargeLayer3Modules
MonitorElement * clustChargeLayer3Modules[8]
Definition: SiPixelRecHitsValid.h:48
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
SiPixelRecHitsValid::siPixelRecHitCollectionToken_
edm::EDGetTokenT< SiPixelRecHitCollection > siPixelRecHitCollectionToken_
Definition: SiPixelRecHitsValid.h:112
Local3DPoint
Point3DBase< float, LocalTag > Local3DPoint
Definition: LocalPoint.h:9
cmtomicron
const float cmtomicron
Definition: PixelResolutionHistograms.cc:54
SiPixelRecHitsValid::recHitXResDisk2Plaquettes
MonitorElement * recHitXResDisk2Plaquettes[7]
Definition: SiPixelRecHitsValid.h:83
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
TrackerGeometry
Definition: TrackerGeometry.h:14
SiPixelRecHitsValid::recHitYResAllF
MonitorElement * recHitYResAllF
Definition: SiPixelRecHitsValid.h:75