CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
26 
33 
43 
46 
48 
49 #include <math.h>
50 
52  : outputFile_( ps.getUntrackedParameter<std::string>( "outputFile", "pixelrechitshisto.root" ) )
53  , runStandalone ( ps.getParameter<bool>("runStandalone") )
54  , dbe_(0)
55  , conf_(ps)
56  , siPixelRecHitCollectionToken_( consumes<SiPixelRecHitCollection>( ps.getParameter<edm::InputTag>( "src" ) ) ) {
57 
58 }
59 
61 }
62 
64 }
65 
68  //dbe_->showDirStructure();
69  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/clustBPIX");
70 
71  Char_t histo[200];
72 
73  // ---------------------------------------------------------------
74  // All histograms that depend on plaquette number have 7 indexes.
75  // The first 4 (0-3) correspond to Panel 1 plaquettes 1-4.
76  // The last 3 (4-6) correspond to Panel 2 plaquettes 1-3.
77  // ---------------------------------------------------------------
78 
79  //Cluster y-size by module number for barrel
80  for (int i=0; i<8; i++) {
81  sprintf(histo, "Clust_y_size_Module%d", i+1);
82  clustYSizeModule[i] = ibooker.book1D(histo,"Cluster y-size by Module", 20, 0.5, 20.5);
83  } // end for
84 
85  //Cluster x-size by layer for barrel
86  for (int i=0; i<3; i++) {
87  sprintf(histo, "Clust_x_size_Layer%d", i+1);
88  clustXSizeLayer[i] = ibooker.book1D(histo,"Cluster x-size by Layer", 20, 0.5, 20.5);
89  } // end for
90 
91  //Cluster charge by module for 3 layers of barrel
92  for (int i=0; i<8; i++) {
93  //Cluster charge by module for Layer1
94  sprintf(histo, "Clust_charge_Layer1_Module%d", i+1);
95  clustChargeLayer1Modules[i] = ibooker.book1D(histo, "Cluster charge Layer 1 by Module", 50, 0., 200000.);
96 
97  //Cluster charge by module for Layer2
98  sprintf(histo, "Clust_charge_Layer2_Module%d", i+1);
99  clustChargeLayer2Modules[i] = ibooker.book1D(histo, "Cluster charge Layer 2 by Module", 50, 0., 200000.);
100 
101  //Cluster charge by module for Layer3
102  sprintf(histo, "Clust_charge_Layer3_Module%d", i+1);
103  clustChargeLayer3Modules[i] = ibooker.book1D(histo, "Cluster charge Layer 3 by Module",50, 0., 200000.);
104  } // end for
105 
106  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/clustFPIX");
107  //Cluster x-size, y-size, and charge by plaquette for Disks in Forward
108  for (int i=0; i<7; i++) {
109  //Cluster x-size for Disk1 by Plaquette
110  sprintf(histo, "Clust_x_size_Disk1_Plaquette%d", i+1);
111  clustXSizeDisk1Plaquettes[i] = ibooker.book1D(histo, "Cluster X-size for Disk1 by Plaquette", 20, 0.5, 20.5);
112 
113  //Cluster x-size for Disk2 by Plaquette
114  sprintf(histo, "Clust_x_size_Disk2_Plaquette%d", i+1);
115  clustXSizeDisk2Plaquettes[i] = ibooker.book1D(histo, "Cluster X-size for Disk2 by Plaquette", 20, 0.5, 20.5);
116 
117  //Cluster y-size for Disk1 by Plaquette
118  sprintf(histo, "Clust_y_size_Disk1_Plaquette%d", i+1);
119  clustYSizeDisk1Plaquettes[i] = ibooker.book1D(histo, "Cluster Y-size for Disk1 by Plaquette", 20, 0.5, 20.5);
120 
121  //Cluster y-size for Disk2 by Plaquette
122  sprintf(histo, "Clust_y_size_Disk2_Plaquette%d", i+1);
123  clustYSizeDisk2Plaquettes[i] = ibooker.book1D(histo, "Cluster Y-size for Disk2 by Plaquette", 20, 0.5, 20.5);
124 
125  //Cluster charge for Disk1 by Plaquette
126  sprintf(histo, "Clust_charge_Disk1_Plaquette%d", i+1);
127  clustChargeDisk1Plaquettes[i] = ibooker.book1D(histo, "Cluster charge for Disk1 by Plaquette", 50, 0., 200000.);
128 
129  //Cluster charge for Disk2 by Plaquette
130  sprintf(histo, "Clust_charge_Disk2_Plaquette%d", i+1);
131  clustChargeDisk2Plaquettes[i] = ibooker.book1D(histo, "Cluster charge for Disk2 by Plaquette", 50, 0., 200000.);
132  } // end for
133 
134 
135 
136  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitBPIX");
137  //RecHit X Resolution all barrel hits
138  recHitXResAllB = ibooker.book1D("RecHit_xres_b_All","RecHit X Res All Modules in Barrel", 100, -200., 200.);
139 
140  //RecHit Y Resolution all barrel hits
141  recHitYResAllB = ibooker.book1D("RecHit_yres_b_All","RecHit Y Res All Modules in Barrel", 100, -200., 200.);
142 
143  //RecHit X distribution for full modules for barrel
144  recHitXFullModules = ibooker.book1D("RecHit_x_FullModules", "RecHit X distribution for full modules", 100,-2., 2.);
145 
146  //RecHit X distribution for half modules for barrel
147  recHitXHalfModules = ibooker.book1D("RecHit_x_HalfModules", "RecHit X distribution for half modules", 100, -1., 1.);
148 
149  //RecHit Y distribution all modules for barrel
150  recHitYAllModules = ibooker.book1D("RecHit_y_AllModules", "RecHit Y distribution for all modules", 100, -4., 4.);
151 
152  //RecHit X resolution for flipped and unflipped ladders by layer for barrel
153  for (int i=0; i<3; i++) {
154  //RecHit X resolution for flipped ladders by layer
155  sprintf(histo, "RecHit_XRes_FlippedLadder_Layer%d", i+1);
156  recHitXResFlippedLadderLayers[i] = ibooker.book1D(histo, "RecHit XRes Flipped Ladders by Layer", 100, -200., 200.);
157 
158  //RecHit X resolution for unflipped ladders by layer
159  sprintf(histo, "RecHit_XRes_UnFlippedLadder_Layer%d", i+1);
160  recHitXResNonFlippedLadderLayers[i] = ibooker.book1D(histo, "RecHit XRes NonFlipped Ladders by Layer", 100, -200., 200.);
161  } // end for
162 
163  //RecHit Y resolutions for layers by module for barrel
164  for (int i=0; i<8; i++) {
165  //Rec Hit Y resolution by module for Layer1
166  sprintf(histo, "RecHit_YRes_Layer1_Module%d", i+1);
167  recHitYResLayer1Modules[i] = ibooker.book1D(histo, "RecHit YRes Layer1 by module", 100, -200., 200.);
168 
169  //RecHit Y resolution by module for Layer2
170  sprintf(histo, "RecHit_YRes_Layer2_Module%d", i+1);
171  recHitYResLayer2Modules[i] = ibooker.book1D(histo, "RecHit YRes Layer2 by module", 100, -200., 200.);
172 
173  //RecHit Y resolution by module for Layer3
174  sprintf(histo, "RecHit_YRes_Layer3_Module%d", i+1);
175  recHitYResLayer3Modules[i] = ibooker.book1D(histo, "RecHit YRes Layer3 by module", 100, -200., 200.);
176  } // end for
177 
178  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitFPIX");
179  //RecHit X resolution all plaquettes
180  recHitXResAllF = ibooker.book1D("RecHit_xres_f_All", "RecHit X Res All in Forward", 100, -200., 200.);
181 
182  //RecHit Y resolution all plaquettes
183  recHitYResAllF = ibooker.book1D("RecHit_yres_f_All", "RecHit Y Res All in Forward", 100, -200., 200.);
184 
185  //RecHit X distribution for plaquette with x-size 1 in forward
186  recHitXPlaquetteSize1 = ibooker.book1D("RecHit_x_Plaquette_xsize1", "RecHit X Distribution for plaquette x-size1", 100, -2., 2.);
187 
188  //RecHit X distribution for plaquette with x-size 2 in forward
189  recHitXPlaquetteSize2 = ibooker.book1D("RecHit_x_Plaquette_xsize2", "RecHit X Distribution for plaquette x-size2", 100, -2., 2.);
190 
191  //RecHit Y distribution for plaquette with y-size 2 in forward
192  recHitYPlaquetteSize2 = ibooker.book1D("RecHit_y_Plaquette_ysize2", "RecHit Y Distribution for plaquette y-size2", 100, -4., 4.);
193 
194  //RecHit Y distribution for plaquette with y-size 3 in forward
195  recHitYPlaquetteSize3 = ibooker.book1D("RecHit_y_Plaquette_ysize3", "RecHit Y Distribution for plaquette y-size3", 100, -4., 4.);
196 
197  //RecHit Y distribution for plaquette with y-size 4 in forward
198  recHitYPlaquetteSize4 = ibooker.book1D("RecHit_y_Plaquette_ysize4", "RecHit Y Distribution for plaquette y-size4", 100, -4., 4.);
199 
200  //RecHit Y distribution for plaquette with y-size 5 in forward
201  recHitYPlaquetteSize5 = ibooker.book1D("RecHit_y_Plaquette_ysize5", "RecHit Y Distribution for plaquette y-size5", 100, -4., 4.);
202 
203  //X and Y resolutions for both disks by plaquette in forward
204  for (int i=0; i<7; i++) {
205  //X resolution for Disk1 by plaquette
206  sprintf(histo, "RecHit_XRes_Disk1_Plaquette%d", i+1);
207  recHitXResDisk1Plaquettes[i] = ibooker.book1D(histo, "RecHit XRes Disk1 by plaquette", 100, -200., 200.);
208  //X resolution for Disk2 by plaquette
209  sprintf(histo, "RecHit_XRes_Disk2_Plaquette%d", i+1);
210  recHitXResDisk2Plaquettes[i] = ibooker.book1D(histo, "RecHit XRes Disk2 by plaquette", 100, -200., 200.);
211 
212  //Y resolution for Disk1 by plaquette
213  sprintf(histo, "RecHit_YRes_Disk1_Plaquette%d", i+1);
214  recHitYResDisk1Plaquettes[i] = ibooker.book1D(histo, "RecHit YRes Disk1 by plaquette", 100, -200., 200.);
215  //Y resolution for Disk2 by plaquette
216  sprintf(histo, "RecHit_YRes_Disk2_Plaquette%d", i+1);
217  recHitYResDisk2Plaquettes[i] = ibooker.book1D(histo, "RecHit YRes Disk2 by plaquette", 100, -200., 200.);
218 
219  }
220 
221 
222  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitPullsBPIX");
223  recHitXPullAllB = ibooker.book1D("RecHit_xres_b_All" , "RecHit X Pull All Modules in Barrel" , 100, -10.0, 10.0);
224  recHitYPullAllB = ibooker.book1D("RecHit_yres_b_All" , "RecHit Y Pull All Modules in Barrel" , 100, -10.0, 10.0);
225 
226  for (int i=0; i<3; i++)
227  {
228  sprintf(histo, "RecHit_XPull_FlippedLadder_Layer%d", i+1);
229  recHitXPullFlippedLadderLayers[i] = ibooker.book1D(histo, "RecHit XPull Flipped Ladders by Layer", 100, -10.0, 10.0);
230 
231  sprintf(histo, "RecHit_XPull_UnFlippedLadder_Layer%d", i+1);
232  recHitXPullNonFlippedLadderLayers[i] = ibooker.book1D(histo, "RecHit XPull NonFlipped Ladders by Layer", 100, -10.0, 10.0);
233  }
234 
235  for (int i=0; i<8; i++)
236  {
237  sprintf(histo, "RecHit_YPull_Layer1_Module%d", i+1);
238  recHitYPullLayer1Modules[i] = ibooker.book1D(histo, "RecHit YPull Layer1 by module", 100, -10.0, 10.0);
239 
240  sprintf(histo, "RecHit_YPull_Layer2_Module%d", i+1);
241  recHitYPullLayer2Modules[i] = ibooker.book1D(histo, "RecHit YPull Layer2 by module", 100, -10.0, 10.0);
242 
243  sprintf(histo, "RecHit_YPull_Layer3_Module%d", i+1);
244  recHitYPullLayer3Modules[i] = ibooker.book1D(histo, "RecHit YPull Layer3 by module", 100, -10.0, 10.0);
245  }
246 
247  ibooker.setCurrentFolder("TrackerRecHitsV/TrackerRecHits/Pixel/recHitPullsFPIX");
248  recHitXPullAllF = ibooker.book1D("RecHit_XPull_f_All", "RecHit X Pull All in Forward", 100, -10.0, 10.0);
249 
250  recHitYPullAllF = ibooker.book1D("RecHit_YPull_f_All", "RecHit Y Pull All in Forward", 100, -10.0, 10.0);
251 
252  for (int i=0; i<7; i++)
253  {
254  sprintf(histo, "RecHit_XPull_Disk1_Plaquette%d", i+1);
255  recHitXPullDisk1Plaquettes[i] = ibooker.book1D(histo, "RecHit XPull Disk1 by plaquette", 100, -10.0, 10.0);
256  sprintf(histo, "RecHit_XPull_Disk2_Plaquette%d", i+1);
257  recHitXPullDisk2Plaquettes[i] = ibooker.book1D(histo, "RecHit XPull Disk2 by plaquette", 100, -10.0, 10.0);
258 
259  sprintf(histo, "RecHit_YPull_Disk1_Plaquette%d", i+1);
260  recHitYPullDisk1Plaquettes[i] = ibooker.book1D(histo, "RecHit YPull Disk1 by plaquette", 100, -10.0, 10.0);
261 
262  sprintf(histo, "RecHit_YPull_Disk2_Plaquette%d", i+1);
263  recHitYPullDisk2Plaquettes[i] = ibooker.book1D(histo, "RecHit YPull Disk2 by plaquette", 100, -10.0, 10.0);
264  }
265 }
266 
268  //Save histos in local root file only in standalone mode
269  if ( runStandalone && outputFile_.size() != 0 && dbe_ ){ dbe_->save(outputFile_);}
270 }
271 
273 {
274 
275  //Retrieve tracker topology from geometry
277  es.get<IdealGeometryRecord>().get(tTopoHand);
278  const TrackerTopology *tTopo=tTopoHand.product();
279 
280  edm::LogInfo("EventInfo") << " Run = " << e.id().run() << " Event = " << e.id().event();
281  if ( (int) e.id().event() % 1000 == 0 )
282  std::cout << " Run = " << e.id().run() << " Event = " << e.id().event() << std::endl;
283 
284  //Get RecHits
286  e.getByToken( siPixelRecHitCollectionToken_, recHitColl );
287 
288  //Get event setup
290  es.get<TrackerDigiGeometryRecord>().get(geom);
291  const TrackerGeometry& theTracker(*geom);
292 
293  TrackerHitAssociator associate( e, conf_ );
294 
295  //iterate over detunits
296  for (TrackerGeometry::DetContainer::const_iterator it = geom->dets().begin(); it != geom->dets().end(); it++)
297  {
298  DetId detId = ((*it)->geographicalId());
299  unsigned int subid=detId.subdetId();
300 
301  if (! ((subid==1) || (subid==2))) continue;
302 
303  const PixelGeomDetUnit * theGeomDet = dynamic_cast<const PixelGeomDetUnit*>(theTracker.idToDet(detId) );
304 
305  SiPixelRecHitCollection::const_iterator pixeldet = recHitColl->find(detId);
306  if (pixeldet == recHitColl->end()) continue;
307  SiPixelRecHitCollection::DetSet pixelrechitRange = *pixeldet;
308  SiPixelRecHitCollection::DetSet::const_iterator pixelrechitRangeIteratorBegin = pixelrechitRange.begin();
309  SiPixelRecHitCollection::DetSet::const_iterator pixelrechitRangeIteratorEnd = pixelrechitRange.end();
310  SiPixelRecHitCollection::DetSet::const_iterator pixeliter = pixelrechitRangeIteratorBegin;
311  std::vector<PSimHit> matched;
312 
313  //----Loop over rechits for this detId
314  for ( ; pixeliter != pixelrechitRangeIteratorEnd; pixeliter++)
315  {
316  matched.clear();
317  matched = associate.associateHit(*pixeliter);
318 
319  if ( !matched.empty() )
320  {
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  {
330  float sim_x1 = (*m).entryPoint().x();
331  float sim_x2 = (*m).exitPoint().x();
332  float sim_xpos = 0.5*(sim_x1+sim_x2);
333 
334  float sim_y1 = (*m).entryPoint().y();
335  float sim_y2 = (*m).exitPoint().y();
336  float sim_ypos = 0.5*(sim_y1+sim_y2);
337 
338  float x_res = fabs(sim_xpos - rechit_x);
339  float y_res = fabs(sim_ypos - rechit_y);
340 
341  float dist = sqrt(x_res*x_res + y_res*y_res);
342 
343  if ( dist < closest )
344  {
345  closest = x_res;
346  closestit = m;
347  }
348  } // end sim hit loop
349 
350  if (subid==1)
351  { //<----------barrel
352  fillBarrel(*pixeliter, *closestit, detId, theGeomDet,tTopo);
353  } // end barrel
354  if (subid==2)
355  { // <-------forward
356  fillForward(*pixeliter, *closestit, detId, theGeomDet,tTopo);
357  }
358 
359  } // end matched emtpy
360  } // <-----end rechit loop
361  } // <------ end detunit loop
362 }
363 
364 void SiPixelRecHitsValid::fillBarrel(const SiPixelRecHit& recHit, const PSimHit& simHit,
365  DetId detId, const PixelGeomDetUnit* theGeomDet,
366  const TrackerTopology *tTopo)
367 {
368  const float cmtomicron = 10000.0;
369 
370  LocalPoint lp = recHit.localPosition();
371  float lp_y = lp.y();
372  float lp_x = lp.x();
373 
374  LocalError lerr = recHit.localPositionError();
375  float lerr_x = sqrt(lerr.xx());
376  float lerr_y = sqrt(lerr.yy());
377 
378  recHitYAllModules->Fill(lp_y);
379 
380  float sim_x1 = simHit.entryPoint().x();
381  float sim_x2 = simHit.exitPoint().x();
382  float sim_xpos = 0.5*(sim_x1 + sim_x2);
383  float res_x = (lp.x() - sim_xpos)*cmtomicron;
384 
385  recHitXResAllB->Fill(res_x);
386 
387  float sim_y1 = simHit.entryPoint().y();
388  float sim_y2 = simHit.exitPoint().y();
389  float sim_ypos = 0.5*(sim_y1 + sim_y2);
390  float res_y = (lp.y() - sim_ypos)*cmtomicron;
391 
392  recHitYResAllB->Fill(res_y);
393 
394  float pull_x = ( lp_x - sim_xpos ) / lerr_x;
395  float pull_y = ( lp_y - sim_ypos ) / lerr_y;
396 
397  recHitXPullAllB->Fill(pull_x);
398  recHitYPullAllB->Fill(pull_y);
399 
400  int rows = theGeomDet->specificTopology().nrows();
401 
402  if (rows == 160)
403  {
404  recHitXFullModules->Fill(lp_x);
405  }
406  else if (rows == 80)
407  {
408  recHitXHalfModules->Fill(lp_x);
409  }
410 
411  float tmp1 = theGeomDet->surface().toGlobal(Local3DPoint(0.,0.,0.)).perp();
412  float tmp2 = theGeomDet->surface().toGlobal(Local3DPoint(0.,0.,1.)).perp();
413 
414  if (tmp2<tmp1)
415  { // flipped
416  for (unsigned int i=0; i<3; i++)
417  {
418  if (tTopo->pxbLayer(detId) == i+1)
419  {
422  }
423  }
424  }
425  else
426  {
427  for (unsigned int i=0; i<3; i++)
428  {
429  if (tTopo->pxbLayer(detId) == i+1)
430  {
433  }
434  }
435  }
436 
437  //get cluster
438  SiPixelRecHit::ClusterRef const& clust = recHit.cluster();
439 
440  // fill module dependent info
441  for (unsigned int i=0; i<8; i++)
442  {
443  if (tTopo->pxbModule(detId) == i+1)
444  {
445  int sizeY = (*clust).sizeY();
446  clustYSizeModule[i]->Fill(sizeY);
447 
448  if (tTopo->pxbLayer(detId) == 1)
449  {
450  float charge = (*clust).charge();
451  clustChargeLayer1Modules[i]->Fill(charge);
452  recHitYResLayer1Modules[i]->Fill(res_y);
453  recHitYPullLayer1Modules[i]->Fill(pull_y);
454  }
455  else if (tTopo->pxbLayer(detId) == 2)
456  {
457  float charge = (*clust).charge();
458  clustChargeLayer2Modules[i]->Fill(charge);
459  recHitYResLayer2Modules[i]->Fill(res_y);
460  recHitYPullLayer2Modules[i]->Fill(pull_y);
461  }
462  else if (tTopo->pxbLayer(detId) == 3)
463  {
464  float charge = (*clust).charge();
465  clustChargeLayer3Modules[i]->Fill(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) clustXSizeLayer[0]->Fill(sizeX);
473  if (tTopo->pxbLayer(detId) == 2) clustXSizeLayer[1]->Fill(sizeX);
474  if (tTopo->pxbLayer(detId) == 3) clustXSizeLayer[2]->Fill(sizeX);
475 }
476 
477 void SiPixelRecHitsValid::fillForward(const SiPixelRecHit & recHit, const PSimHit & simHit,
478  DetId detId,const PixelGeomDetUnit * theGeomDet,
479  const TrackerTopology *tTopo)
480 {
481  int rows = theGeomDet->specificTopology().nrows();
482  int cols = theGeomDet->specificTopology().ncolumns();
483 
484  const float cmtomicron = 10000.0;
485 
486  LocalPoint lp = recHit.localPosition();
487  float lp_x = lp.x();
488  float lp_y = lp.y();
489 
490  LocalError lerr = recHit.localPositionError();
491  float lerr_x = sqrt(lerr.xx());
492  float lerr_y = sqrt(lerr.yy());
493 
494  float sim_x1 = simHit.entryPoint().x();
495  float sim_x2 = simHit.exitPoint().x();
496  float sim_xpos = 0.5*(sim_x1 + sim_x2);
497 
498  float sim_y1 = simHit.entryPoint().y();
499  float sim_y2 = simHit.exitPoint().y();
500  float sim_ypos = 0.5*(sim_y1 + sim_y2);
501 
502  float pull_x = ( lp_x - sim_xpos ) / lerr_x;
503  float pull_y = ( lp_y - sim_ypos ) / lerr_y;
504 
505 
506  if (rows == 80)
507  {
509  }
510  else if (rows == 160)
511  {
513  }
514 
515  if (cols == 104)
516  {
518  }
519  else if (cols == 156)
520  {
522  }
523  else if (cols == 208)
524  {
526  }
527  else if (cols == 260)
528  {
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  {
547  if (tTopo->pxfModule(detId) == i+1)
548  {
549  if (tTopo->pxfDisk(detId) == 1)
550  {
551  int sizeX = (*clust).sizeX();
553 
554  int sizeY = (*clust).sizeY();
556 
557  float charge = (*clust).charge();
559 
562 
565  }
566  else
567  {
568  int sizeX = (*clust).sizeX();
570 
571  int sizeY = (*clust).sizeY();
573 
574  float charge = (*clust).charge();
576 
579 
582 
583  } // end else
584  } // end if module
585  else if (tTopo->pxfPanel(detId) == 2 && (tTopo->pxfModule(detId)+4) == i+1)
586  {
587  if (tTopo->pxfDisk(detId) == 1)
588  {
589  int sizeX = (*clust).sizeX();
591 
592  int sizeY = (*clust).sizeY();
594 
595  float charge = (*clust).charge();
597 
600 
603  }
604  else
605  {
606  int sizeX = (*clust).sizeX();
608 
609  int sizeY = (*clust).sizeY();
611 
612  float charge = (*clust).charge();
614 
617 
620 
621  } // end else
622  } // end else
623  } // end for
624 }
RunNumber_t run() const
Definition: EventID.h:42
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:114
EventNumber_t event() const
Definition: EventID.h:44
int i
Definition: DBlmapReader.cc:9
MonitorElement * clustYSizeModule[8]
MonitorElement * clustXSizeDisk1Plaquettes[7]
float xx() const
Definition: LocalError.h:24
edm::ParameterSet conf_
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
MonitorElement * recHitXPullDisk2Plaquettes[7]
MonitorElement * recHitXResFlippedLadderLayers[3]
MonitorElement * recHitXFullModules
MonitorElement * recHitXResAllF
T perp() const
Definition: PV3DBase.h:72
MonitorElement * recHitXHalfModules
virtual int ncolumns() const =0
MonitorElement * recHitYPullAllF
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
MonitorElement * recHitXResDisk1Plaquettes[7]
MonitorElement * clustXSizeDisk2Plaquettes[7]
MonitorElement * recHitYResAllB
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
unsigned int pxfDisk(const DetId &id) const
MonitorElement * recHitYPullDisk2Plaquettes[7]
MonitorElement * clustXSizeLayer[3]
T y() const
Definition: PV3DBase.h:63
MonitorElement * clustChargeLayer1Modules[8]
virtual int nrows() const =0
MonitorElement * recHitYPlaquetteSize5
unsigned int pxbModule(const DetId &id) const
MonitorElement * recHitXPlaquetteSize1
MonitorElement * recHitXResDisk2Plaquettes[7]
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:35
double charge(const std::vector< uint8_t > &Ampls)
MonitorElement * recHitXPullNonFlippedLadderLayers[3]
void Fill(long long x)
MonitorElement * recHitYPullDisk1Plaquettes[7]
MonitorElement * recHitXPullAllB
MonitorElement * recHitXResAllB
MonitorElement * clustChargeLayer2Modules[8]
MonitorElement * recHitYResDisk2Plaquettes[7]
Local3DPoint exitPoint() const
Exit point in the local Det frame.
Definition: PSimHit.h:38
MonitorElement * recHitXResNonFlippedLadderLayers[3]
MonitorElement * recHitYResDisk1Plaquettes[7]
MonitorElement * recHitYResLayer2Modules[8]
MonitorElement * recHitYPlaquetteSize2
float yy() const
Definition: LocalError.h:26
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
T sqrt(T t)
Definition: SSEVec.h:48
MonitorElement * recHitYPullLayer3Modules[8]
edm::EDGetTokenT< SiPixelRecHitCollection > siPixelRecHitCollectionToken_
MonitorElement * clustYSizeDisk1Plaquettes[7]
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:113
void fillForward(const SiPixelRecHit &, const PSimHit &, DetId, const PixelGeomDetUnit *, const TrackerTopology *tTopo)
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
virtual const GeomDet * idToDet(DetId) const
DQMStore * dbe_
unsigned int pxfModule(const DetId &id) const
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
MonitorElement * recHitXPlaquetteSize2
unsigned int pxbLayer(const DetId &id) const
Point3DBase< float, LocalTag > Local3DPoint
Definition: LocalPoint.h:9
MonitorElement * clustChargeLayer3Modules[8]
Definition: DetId.h:18
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * recHitYResAllF
MonitorElement * recHitYResLayer3Modules[8]
const T & get() const
Definition: EventSetup.h:55
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
T const * product() const
Definition: ESHandle.h:62
MonitorElement * recHitYPullLayer2Modules[8]
MonitorElement * clustYSizeDisk2Plaquettes[7]
edm::EventID id() const
Definition: EventBase.h:56
MonitorElement * recHitYPlaquetteSize4
iterator end()
Definition: DetSetNew.h:70
MonitorElement * recHitXPullFlippedLadderLayers[3]
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", const uint32_t run=0, const uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE", const bool resetMEsAfterWriting=false)
Definition: DQMStore.cc:2490
MonitorElement * recHitYResLayer1Modules[8]
MonitorElement * recHitYPullLayer1Modules[8]
std::vector< PSimHit > associateHit(const TrackingRecHit &thit) const
tuple cout
Definition: gather_cfg.py:121
void bookHistograms(DQMStore::IBooker &ibooker, const edm::Run &run, const edm::EventSetup &es)
MonitorElement * recHitXPullDisk1Plaquettes[7]
SiPixelRecHitsValid(const edm::ParameterSet &conf)
MonitorElement * recHitYPullAllB
T x() const
Definition: PV3DBase.h:62
MonitorElement * recHitXPullAllF
Local3DPoint entryPoint() const
Entry point in the local Det frame.
Definition: PSimHit.h:35
MonitorElement * recHitYPlaquetteSize3
MonitorElement * clustChargeDisk1Plaquettes[7]
unsigned int pxfPanel(const DetId &id) const
MonitorElement * clustChargeDisk2Plaquettes[7]
void fillBarrel(const SiPixelRecHit &, const PSimHit &, DetId, const PixelGeomDetUnit *, const TrackerTopology *tTopo)
Definition: Run.h:41
Pixel Reconstructed Hit.
MonitorElement * recHitYAllModules
iterator begin()
Definition: DetSetNew.h:67