CMS 3D CMS Logo

SiPixelPhase1TrackEfficiency.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: SiPixelPhase1TrackEfficiency
4 // Class: SiPixelPhase1TrackEfficiency
5 //
6 
7 // Original Author: Marcel Schneider
8 
14 
31 
39 
41 
42 namespace {
43 
44  class SiPixelPhase1TrackEfficiency final : public SiPixelPhase1Base {
45  enum { VALID, MISSING, INACTIVE, EFFICIENCY, VERTICES };
46 
47  public:
48  explicit SiPixelPhase1TrackEfficiency(const edm::ParameterSet& conf);
49  void analyze(const edm::Event&, const edm::EventSetup&) override;
50 
51  private:
55  edm::EDGetTokenT<TrajTrackAssociationCollection> trajTrackCollectionToken_;
57  bool applyVertexCut_;
58 
59  const TrackerTopology* trackerTopology_;
60  const Propagator* trackerPropagator_;
61  const MeasurementEstimator* chi2MeasurementEstimator_;
62  };
63 
64  SiPixelPhase1TrackEfficiency::SiPixelPhase1TrackEfficiency(const edm::ParameterSet& iConfig)
65  : SiPixelPhase1Base(iConfig) //,
66  {
67  tracker_ = consumes<MeasurementTrackerEvent>(iConfig.getParameter<edm::InputTag>("tracker"));
68  tracksToken_ = consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracks"));
69  vtxToken_ = consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("primaryvertices"));
70  applyVertexCut_ = iConfig.getUntrackedParameter<bool>("VertexCut", true);
71  trajTrackCollectionToken_ =
72  consumes<TrajTrackAssociationCollection>(iConfig.getParameter<edm::InputTag>("trajectoryInput"));
73  clustersToken_ = consumes<edmNew::DetSetVector<SiPixelCluster>>(iConfig.getParameter<edm::InputTag>("clusters"));
74  }
75 
77  if (!checktrigger(iEvent, iSetup, DCS))
78  return;
79 
80  // get geometry
83  assert(tracker.isValid());
84 
85  // get primary vertex
87  iEvent.getByToken(vtxToken_, vertices);
88 
89  // TrackerTopology for module informations
90  edm::ESHandle<TrackerTopology> trackerTopologyHandle;
91  iSetup.get<TrackerTopologyRcd>().get(trackerTopologyHandle);
92  trackerTopology_ = trackerTopologyHandle.product();
93 
94  // Tracker propagator for propagating tracks to other layers
95  edm::ESHandle<Propagator> propagatorHandle;
96  iSetup.get<TrackingComponentsRecord>().get("PropagatorWithMaterial", propagatorHandle);
97  std::unique_ptr<Propagator> propagatorUniquePtr(propagatorHandle.product()->clone());
98  trackerPropagator_ = propagatorUniquePtr.get();
99  const_cast<Propagator*>(trackerPropagator_)->setPropagationDirection(oppositeToMomentum);
100 
101  // Measurement estimator
102  edm::ESHandle<Chi2MeasurementEstimatorBase> chi2MeasurementEstimatorHandle;
103  iSetup.get<TrackingComponentsRecord>().get("Chi2", chi2MeasurementEstimatorHandle);
104  chi2MeasurementEstimator_ = chi2MeasurementEstimatorHandle.product();
105 
106  //Tracker
108  iEvent.getByToken(tracker_, trackerMeas);
109 
110  edm::ESHandle<MeasurementTracker> measurementTrackerHandle;
111  iSetup.get<CkfComponentsRecord>().get(measurementTrackerHandle);
112 
113  //vertices
114  if (!vertices.isValid())
115  return;
116  histo[VERTICES].fill(vertices->size(), DetId(0), &iEvent);
117  if (applyVertexCut_ && vertices->empty())
118  return;
119 
120  // should be used for weird cuts
121  //const auto primaryVertex = vertices->at(0);
122 
123  // get the map
125  iEvent.getByToken(tracksToken_, tracks);
126  if (!tracks.isValid())
127  return;
128 
129  //new
130  edm::Handle<TrajTrackAssociationCollection> trajTrackCollectionHandle;
131  iEvent.getByToken(trajTrackCollectionToken_, trajTrackCollectionHandle);
132  if (!trajTrackCollectionHandle.isValid())
133  return;
134 
135  //Access Pixel Clusters
137  iEvent.getByToken(clustersToken_, siPixelClusters);
138  if (!siPixelClusters.isValid())
139  return;
140  //
141 
143  iSetup.get<TkPixelCPERecord>().get("PixelCPEGeneric", cpEstimator);
144  if (!cpEstimator.isValid())
145  return;
146 
147  const PixelClusterParameterEstimator& cpe(*cpEstimator);
148  const TrackerGeometry* tkgeom = &(*tracker);
149 
151 
152  // Hp cut
153  int TRACK_QUALITY_HIGH_PURITY_BIT = 2;
154  int TRACK_QUALITY_HIGH_PURITY_MASK = 1 << TRACK_QUALITY_HIGH_PURITY_BIT;
155 
156  // Pt cut
157  float TRACK_PT_CUT_VAL = 1.0f;
158 
159  // Nstrip cut
160  int TRACK_NSTRIP_CUT_VAL = 10;
161 
162  //D0
163  std::array<float, 4> TRACK_D0_CUT_BARREL_VAL = {{0.01f, 0.02f, 0.02f, 0.02f}};
164  float TRACK_D0_CUT_FORWARD_VAL = 0.05f;
165 
166  //Dz
167  float TRACK_DZ_CUT_BARREL_VAL = 0.01f;
168  float TRACK_DZ_CUT_FORWARD_VAL = 0.5f;
169 
170  bool isBpixtrack = false, isFpixtrack = false;
171  int nStripHits = 0;
172  int nBpixL1Hits = 0;
173  int nBpixL2Hits = 0;
174  int nBpixL3Hits = 0;
175  int nBpixL4Hits = 0;
176  int nFpixD1Hits = 0;
177  int nFpixD2Hits = 0;
178  int nFpixD3Hits = 0;
179  bool passcuts = true;
180  bool passcuts_hit = true;
181 
182  TrajectoryStateOnSurface tsosPXB2;
183  bool valid_layerFrom = false;
184 
185  const GeometricSearchTracker* gst_ = trackerMeas->geometricSearchTracker();
186  const auto* pxbLayer1_ = gst_->pixelBarrelLayers().front();
187  const LayerMeasurements* theLayerMeasurements_ = new LayerMeasurements(*measurementTrackerHandle, *trackerMeas);
188 
189  std::vector<TrajectoryMeasurement> expTrajMeasurements;
190  std::vector<std::pair<int, bool[3]>> eff_pxb1_vector;
191 
192  for (const auto& pair : *trajTrackCollectionHandle) {
193  const edm::Ref<std::vector<Trajectory>> traj = pair.key;
194  const reco::TrackRef track = pair.val;
195 
196  expTrajMeasurements.clear();
197  eff_pxb1_vector.clear();
198  //this cut is needed to be consisten with residuals calculation
199  if (applyVertexCut_ &&
200  (track->pt() < 0.75 || std::abs(track->dxy(vertices->at(0).position())) > 5 * track->dxyError()))
201  continue;
202 
203  isBpixtrack = false, isFpixtrack = false;
204  nStripHits = 0;
205  nBpixL1Hits = 0;
206  nBpixL2Hits = 0;
207  nBpixL3Hits = 0;
208  nBpixL4Hits = 0;
209  nFpixD1Hits = 0;
210  nFpixD2Hits = 0;
211  nFpixD3Hits = 0;
212  passcuts = true;
213  passcuts_hit = true;
214 
215  // first, look at the full track to see whether it is good
216  // auto const & trajParams = track.extra()->trajParams();
217 
218  auto hb = track->recHitsBegin();
219  for (unsigned int h = 0; h < track->recHitsSize(); h++) {
220  auto hit = *(hb + h);
221  if (!hit->isValid())
222  continue;
223 
224  DetId id = hit->geographicalId();
225  uint32_t subdetid = (id.subdetId());
226 
227  //Check the location of valid hit
228  if (subdetid == PixelSubdetector::PixelBarrel && hit->isValid()) {
229  isBpixtrack = true;
230  if (trackerTopology_->pxbLayer(id) == 1)
231  nBpixL1Hits++;
232  if (trackerTopology_->pxbLayer(id) == 2)
233  nBpixL2Hits++;
234  if (trackerTopology_->pxbLayer(id) == 3)
235  nBpixL3Hits++;
236  if (trackerTopology_->pxbLayer(id) == 4)
237  nBpixL4Hits++;
238  }
239  if (subdetid == PixelSubdetector::PixelEndcap && hit->isValid()) {
240  isFpixtrack = true;
241  if (trackerTopology_->pxfDisk(id) == 1)
242  nFpixD1Hits++;
243  if (trackerTopology_->pxfDisk(id) == 2)
244  nFpixD2Hits++;
245  if (trackerTopology_->pxfDisk(id) == 3)
246  nFpixD3Hits++;
247  }
248 
249  // count strip hits
250  if (subdetid == StripSubdetector::TIB)
251  nStripHits++;
252  if (subdetid == StripSubdetector::TOB)
253  nStripHits++;
254  if (subdetid == StripSubdetector::TID)
255  nStripHits++;
256  if (subdetid == StripSubdetector::TEC)
257  nStripHits++;
258 
259  // check that we are in the pixel
260  // if (subdetid == PixelSubdetector::PixelBarrel) isBpixtrack = true;
261  // if (subdetid == PixelSubdetector::PixelEndcap) isFpixtrack = true;
262  }
263 
264  if (!isBpixtrack && !isFpixtrack)
265  continue;
266 
267  // Hp cut
268  if (!((track->qualityMask() & TRACK_QUALITY_HIGH_PURITY_MASK) >> TRACK_QUALITY_HIGH_PURITY_BIT))
269  passcuts = false;
270 
271  // Pt cut
272  if (!(TRACK_PT_CUT_VAL < track->pt()))
273  passcuts = false;
274 
275  // Nstrip cut
276  if (!(TRACK_NSTRIP_CUT_VAL < nStripHits))
277  passcuts = false;
278 
279  // then, look at each hit
280  for (unsigned int h = 0; h < track->recHitsSize(); h++) {
281  passcuts_hit = true;
282  auto hit = *(hb + h);
283 
284  DetId id = hit->geographicalId();
285  uint32_t subdetid = (id.subdetId());
286  if (subdetid != PixelSubdetector::PixelBarrel && subdetid != PixelSubdetector::PixelEndcap)
287  continue;
288 
289  bool isHitValid = hit->getType() == TrackingRecHit::valid;
290  bool isHitMissing = hit->getType() == TrackingRecHit::missing;
291  bool isHitInactive = hit->getType() == TrackingRecHit::inactive;
292 
293  //D0
294  if (subdetid == PixelSubdetector::PixelBarrel) {
295  if (!((std::abs(track->dxy(vertices->at(0).position())) * -1.0) <
296  TRACK_D0_CUT_BARREL_VAL[trackerTopology_->pxbLayer(id) - 1]))
297  passcuts_hit = false;
298  }
299  if (subdetid == PixelSubdetector::PixelEndcap) {
300  if (!((std::abs(track->dxy(vertices->at(0).position())) * -1.0) < TRACK_D0_CUT_FORWARD_VAL))
301  passcuts_hit = false;
302  }
303 
304  //Dz
305  if (subdetid == PixelSubdetector::PixelBarrel) {
306  if (!(std::abs(track->dz(vertices->at(0).position())) < TRACK_DZ_CUT_BARREL_VAL))
307  passcuts_hit = false;
308  }
309  if (subdetid == PixelSubdetector::PixelEndcap) {
310  if (!(std::abs(track->dz(vertices->at(0).position())) < TRACK_DZ_CUT_FORWARD_VAL))
311  passcuts_hit = false;
312  }
313 
314  // Pixhit cut
315  if (subdetid == PixelSubdetector::PixelBarrel) {
316  if (trackerTopology_->pxbLayer(id) == 1)
317  if (!((nBpixL2Hits > 0 && nBpixL3Hits > 0 && nBpixL4Hits > 0) ||
318  (nBpixL2Hits > 0 && nBpixL3Hits > 0 && nFpixD1Hits > 0) ||
319  (nBpixL2Hits > 0 && nFpixD1Hits > 0 && nFpixD2Hits > 0) ||
320  (nFpixD1Hits > 0 && nFpixD2Hits > 0 && nFpixD3Hits > 0)))
321  passcuts_hit = false;
322  if (trackerTopology_->pxbLayer(id) == 2)
323  if (!((nBpixL1Hits > 0 && nBpixL3Hits > 0 && nBpixL4Hits > 0) ||
324  (nBpixL1Hits > 0 && nBpixL3Hits > 0 && nFpixD1Hits > 0) ||
325  (nBpixL1Hits > 0 && nFpixD1Hits > 0 && nFpixD2Hits > 0)))
326  passcuts_hit = false;
327  if (trackerTopology_->pxbLayer(id) == 3)
328  if (!((nBpixL1Hits > 0 && nBpixL2Hits > 0 && nBpixL4Hits > 0) ||
329  (nBpixL1Hits > 0 && nBpixL2Hits > 0 && nFpixD1Hits > 0)))
330  passcuts_hit = false;
331  if (trackerTopology_->pxbLayer(id) == 4)
332  if (!((nBpixL1Hits > 0 && nBpixL2Hits > 0 && nBpixL3Hits > 0)))
333  passcuts_hit = false;
334  }
335  if (subdetid == PixelSubdetector::PixelEndcap) {
336  if (trackerTopology_->pxfDisk(id) == 1)
337  if (!((nBpixL1Hits > 0 && nBpixL2Hits > 0 && nBpixL3Hits > 0) ||
338  (nBpixL1Hits > 0 && nBpixL2Hits > 0 && nFpixD2Hits > 0) ||
339  (nBpixL1Hits > 0 && nFpixD2Hits > 0 && nFpixD3Hits > 0)))
340  passcuts_hit = false;
341  if (trackerTopology_->pxfDisk(id) == 2)
342  if (!((nBpixL1Hits > 0 && nBpixL2Hits > 0 && nFpixD1Hits > 0) ||
343  (nBpixL1Hits > 0 && nFpixD1Hits > 0 && nFpixD3Hits > 0)))
344  passcuts_hit = false;
345  if (trackerTopology_->pxfDisk(id) == 3)
346  if (!((nBpixL1Hits > 0 && nFpixD1Hits > 0 && nFpixD2Hits > 0)))
347  passcuts_hit = false;
348  }
349  /*
350  //Fiducial Cut - will work on it later
351  const SiPixelRecHit* pixhit = dynamic_cast<const SiPixelRecHit*>(hit);
352  const PixelGeomDetUnit* geomdetunit = dynamic_cast<const PixelGeomDetUnit*> ( tracker->idToDet(id) );
353  const PixelTopology& topol = geomdetunit->specificTopology();
354 
355  LocalPoint lp;
356  if (pixhit) {
357  lp = pixhit->localPosition();
358  }
359 
360  MeasurementPoint mp = topol.measurementPosition(lp);
361  int row = (int) mp.x() % 80;
362  int col = (int) mp.y() % 52;
363 
364  int centerrow = 40;
365  int centercol = 26;
366 
367  if (!((col < (centercol + 10)) && (col > (centercol - 10)) && (row < (centerrow + 10)) && (row > (centerrow -10 )))) passcuts_hit = false;
368  */
369 
370  if (passcuts_hit == true && passcuts) {
371  if (!(subdetid == PixelSubdetector::PixelBarrel && trackerTopology_->pxbLayer(id) == 1)) {
372  if (isHitValid) {
373  histo[VALID].fill(id, &iEvent);
374  histo[EFFICIENCY].fill(1, id, &iEvent);
375  }
376  if (isHitMissing) {
377  histo[MISSING].fill(id, &iEvent);
378  histo[EFFICIENCY].fill(0, id, &iEvent);
379  }
380  if (isHitInactive) {
381  histo[INACTIVE].fill(id, &iEvent);
382  }
383  }
384  }
385  }
386 
388  valid_layerFrom = false;
389 
390  //propagation only from PXB2 and PXD1, more cuts later
391  for (const auto& tm : traj->measurements()) {
392  if (tm.recHit().get() && tm.recHitR().isValid()) {
393  DetId where = tm.recHitR().geographicalId();
394  int source_det = where.subdetId();
395 
396  if (source_det == PixelSubdetector::SubDetector::PixelBarrel) {
397  int source_layer = trackerTopology_->pxbLayer(where);
398  if (source_layer == 2) {
399  if (tm.updatedState().isValid()) {
400  tsosPXB2 = tm.updatedState();
401  valid_layerFrom = true;
402  }
403  }
404  }
405 
406  if (source_det == PixelSubdetector::SubDetector::PixelEndcap) {
407  int source_layer = trackerTopology_->pxfDisk(where);
408  if (source_layer == 1) {
409  if (tm.updatedState().isValid()) {
410  tsosPXB2 = tm.updatedState();
411  valid_layerFrom = true;
412  }
413  }
414  }
415  }
416  } //uodated tsosPXB2 here
417 
418  if (!valid_layerFrom)
419  continue;
420  if (!tsosPXB2.isValid())
421  continue;
422 
423  //propagation A: Calculate the efficiency by the distance to the closest cluster
424  expTrajMeasurements =
425  theLayerMeasurements_->measurements(*pxbLayer1_, tsosPXB2, *trackerPropagator_, *chi2MeasurementEstimator_);
426  auto compDets = pxbLayer1_->compatibleDets(tsosPXB2, *trackerPropagator_, *chi2MeasurementEstimator_);
427  std::pair<int, bool[3]> eff_map;
428  bool valid = false;
429  bool missing = false;
430  passcuts_hit = true;
431 
432  //Fiducial Cut, only calculate the efficiency of the central pixels
433  for (uint p = 0; p < expTrajMeasurements.size(); p++) {
434  TrajectoryMeasurement pxb1TM(expTrajMeasurements[p]);
435  const auto& pxb1Hit = pxb1TM.recHit();
436  int detidHit = pxb1Hit->geographicalId();
437  if (detidHit == 0)
438  continue;
439 
440  const SiPixelRecHit* pixhit = dynamic_cast<const SiPixelRecHit*>(pxb1Hit->hit());
441  const PixelGeomDetUnit* geomdetunit = dynamic_cast<const PixelGeomDetUnit*>(tracker->idToDet(detidHit));
442  const PixelTopology& topol = geomdetunit->specificTopology();
443 
444  LocalPoint lp;
445  if (pixhit) {
446  lp = pixhit->localPosition();
447  }
448 
449  MeasurementPoint mp = topol.measurementPosition(lp);
450  int row = (int)mp.x() % 80;
451  int col = (int)mp.y() % 52;
452 
453  int centerrow = 40;
454  int centercol = 26;
455 
456  if (!((col < (centercol + 10)) && (col > (centercol - 10)) && (row < (centerrow + 10)) &&
457  (row > (centerrow - 10))))
458  passcuts_hit = false;
459 
460  //Access the distance to the closest cluster
461  for (const auto& detAndState : compDets) {
462  const auto& pXb1_lpos = detAndState.second.localPosition();
463  int detid = detAndState.first->geographicalId().rawId();
465  iter_cl != siPixelClusters->end();
466  iter_cl++) {
467  DetId detId(iter_cl->id());
468  float minD[2];
469  minD[0] = minD[1] = 10000.;
470  if (detId.rawId() != detAndState.first->geographicalId().rawId())
471  continue;
472  if (pxb1Hit->geographicalId().rawId() != detAndState.first->geographicalId().rawId())
473  continue;
474  const PixelGeomDetUnit* pixdet = (const PixelGeomDetUnit*)tkgeom->idToDetUnit(detId);
475  edmNew::DetSet<SiPixelCluster>::const_iterator itCluster = iter_cl->begin();
476  if (passcuts_hit) {
477  for (; itCluster != iter_cl->end(); ++itCluster) {
478  LocalPoint lp(itCluster->x(), itCluster->y(), 0.);
479  PixelClusterParameterEstimator::ReturnType params = cpe.getParameters(*itCluster, *pixdet);
480  lp = std::get<0>(params);
481 
482  float Xdist = abs(lp.x() - pXb1_lpos.x());
483  float Ydist = abs(lp.y() - pXb1_lpos.y());
484  if (Xdist < minD[0]) {
485  minD[0] = Xdist;
486  }
487  if (Ydist < minD[1]) {
488  minD[1] = Ydist;
489  }
490  }
491 
492  if ((minD[0] < 0.02) && (minD[1] < 0.02)) {
493  valid = true;
494  missing = false;
495 
496  } else {
497  missing = true;
498  valid = false;
499  }
500  }
501  }
502 
503  //cuts: exactly the same as for other hits but assuming PXB1
504 
505  //D0
506  if (!((std::abs(track->dxy(vertices->at(0).position())) * -1.0) <
507  TRACK_D0_CUT_BARREL_VAL[trackerTopology_->pxbLayer(detid) - 1]))
508  passcuts_hit = false;
509  //Dz
510  if (!(std::abs(track->dz(vertices->at(0).position())) < TRACK_DZ_CUT_BARREL_VAL))
511  passcuts_hit = false;
512  // Pixhit cut
513  if (!((nBpixL2Hits > 0 && nBpixL3Hits > 0 && nBpixL4Hits > 0) ||
514  (nBpixL2Hits > 0 && nBpixL3Hits > 0 && nFpixD1Hits > 0) ||
515  (nBpixL2Hits > 0 && nFpixD1Hits > 0 && nFpixD2Hits > 0) ||
516  (nFpixD1Hits > 0 && nFpixD2Hits > 0 && nFpixD3Hits > 0)))
517  passcuts_hit = false;
518  bool found_det = false;
519 
520  if (passcuts && passcuts_hit) {
521  for (unsigned int i_eff = 0; i_eff < eff_pxb1_vector.size(); i_eff++) {
522  //in case found hit in the same det, take only the valid hit
523  if (eff_pxb1_vector[i_eff].first == detid) {
524  found_det = true;
525  if (eff_pxb1_vector[i_eff].second[0] == false && valid == true) {
526  eff_pxb1_vector[i_eff].second[0] = valid;
527  eff_pxb1_vector[i_eff].second[1] = missing;
528  }
529  }
530  }
531  if (!found_det) {
532  eff_map.first = detid;
533  eff_map.second[0] = valid;
534  eff_map.second[1] = missing;
535  eff_pxb1_vector.push_back(eff_map);
536  }
537  }
538  }
539  }
540 
541  //propagation B: filling inactive hits
542 
543  for (uint p = 0; p < expTrajMeasurements.size(); p++) {
544  TrajectoryMeasurement pxb1TM(expTrajMeasurements[p]);
545  const auto& pxb1Hit = pxb1TM.recHit();
546  bool inactive = (pxb1Hit->getType() == TrackingRecHit::inactive);
547  int detid = pxb1Hit->geographicalId();
548  bool found_det = false;
549 
550  if (passcuts && passcuts_hit) {
551  for (unsigned int i_eff = 0; i_eff < eff_pxb1_vector.size(); i_eff++) {
552  //in case found hit in the same det, take only the valid hit
553  if (eff_pxb1_vector[i_eff].first == detid) {
554  found_det = true;
555  if (eff_pxb1_vector[i_eff].second[0] == false && valid == true) {
556  eff_pxb1_vector[i_eff].second[2] = inactive;
557  }
558  }
559  }
560 
561  //if no other hit in det
562  if (!found_det) {
563  eff_map.first = detid;
564  eff_map.second[2] = inactive;
565  eff_pxb1_vector.push_back(eff_map);
566  }
567  }
568 
569  } //traj loop
570 
571  if (eff_pxb1_vector.size() == 1) {
572  //eff map is filled -> decide what to do for double hits, ie eff_pxb1_vector.size>1 ... if 1 just use MISSING and VALID as usual
573 
574  if (eff_pxb1_vector[0].second[0]) {
575  histo[VALID].fill(eff_pxb1_vector[0].first, &iEvent);
576  histo[EFFICIENCY].fill(1, eff_pxb1_vector[0].first, &iEvent);
577  }
578  if (eff_pxb1_vector[0].second[1]) {
579  histo[MISSING].fill(eff_pxb1_vector[0].first, &iEvent);
580  histo[EFFICIENCY].fill(0, eff_pxb1_vector[0].first, &iEvent);
581  }
582 
583  if (eff_pxb1_vector[0].second[2]) {
584  histo[INACTIVE].fill(eff_pxb1_vector[0].first, &iEvent);
585  }
586  }
587 
588  } //trajTrackHandle
589 
590  histo[VALID].executePerEventHarvesting(&iEvent);
591  histo[MISSING].executePerEventHarvesting(&iEvent);
592  histo[INACTIVE].executePerEventHarvesting(&iEvent);
593  }
594 
595 } // namespace
596 
597 DEFINE_FWK_MODULE(SiPixelPhase1TrackEfficiency);
Chi2MeasurementEstimatorBase.h
Propagator.h
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
Point2DBase
Definition: Point2DBase.h:9
Chi2MeasurementEstimator.h
MeasurementEstimator
Definition: MeasurementEstimator.h:19
PixelClusterParameterEstimator
Definition: PixelClusterParameterEstimator.h:15
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
LayerMeasurements::measurements
std::vector< TrajectoryMeasurement > measurements(const DetLayer &layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
Definition: LayerMeasurements.cc:122
siPixelClusters_cfi.siPixelClusters
siPixelClusters
Definition: siPixelClusters_cfi.py:3
MeasurementTrackerEvent.h
PixelSubdetector.h
FreeTrajectoryState.h
PixelSubdetector::PixelEndcap
Definition: PixelSubdetector.h:11
TrackerGeometry.h
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
PixelTopology.h
ESHandle.h
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
sistrip::tracker_
static const char tracker_[]
Definition: ConstantsForGranularity.h:23
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
CalibrationSummaryClient_cfi.params
params
Definition: CalibrationSummaryClient_cfi.py:14
edm::EDGetTokenT
Definition: EDGetToken.h:33
TrackerTopology
Definition: TrackerTopology.h:16
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
h
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
Definition: L1TUtmAlgorithmRcd.h:4
cuy.col
col
Definition: cuy.py:1010
PixelClusterParameterEstimator.h
SiPixelCluster.h
edmNew::DetSetVector::const_iterator
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
Definition: DetSetVectorNew.h:231
TkPixelCPERecord
Definition: TkPixelCPERecord.h:18
timingPdfMaker.histo
histo
Definition: timingPdfMaker.py:279
oppositeToMomentum
Definition: PropagationDirection.h:4
cms::cuda::assert
assert(be >=bs)
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:215
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
CkfComponentsRecord.h
edm::Handle< reco::VertexCollection >
parallelization.uint
uint
Definition: parallelization.py:124
dqmdumpme.first
first
Definition: dqmdumpme.py:55
validateGeometry_cfg.valid
valid
Definition: validateGeometry_cfg.py:21
SiPixelRecHit
Our base class.
Definition: SiPixelRecHit.h:23
edm::Ref
Definition: AssociativeIterator.h:58
TrackerGeometry::idToDetUnit
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
Definition: TrackerGeometry.cc:183
SiPixelPhase1Base
Definition: SiPixelPhase1Base.h:46
Propagator
Definition: Propagator.h:44
DetId
Definition: DetId.h:17
GeomDetEnumerators::PixelBarrel
Definition: GeomDetEnumerators.h:11
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
edmNew::DetSet::end
iterator end()
Definition: DetSetNew.h:56
MakerMacros.h
TrackerTopology.h
LayerMeasurements
Definition: LayerMeasurements.h:18
Track.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
TrackFwd.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
CkfComponentsRecord
Definition: CkfComponentsRecord.h:22
LayerMeasurements.h
PixelGeomDetUnit
Definition: PixelGeomDetUnit.h:15
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
edm::ESHandle< TrackerGeometry >
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
h
Point3DBase< float, LocalTag >
SiPixelRecHit.h
PixelTopology
Definition: PixelTopology.h:10
TrajTrackAssociation.h
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
Vertex.h
PbPb_ZMuSkimMuonDPG_cff.tracker
tracker
Definition: PbPb_ZMuSkimMuonDPG_cff.py:60
TrackerDigiGeometryRecord.h
edm::ParameterSet
Definition: ParameterSet.h:36
MeasurementTrackerEvent::geometricSearchTracker
const GeometricSearchTracker * geometricSearchTracker() const
Definition: MeasurementTrackerEvent.h:66
PV2DBase::y
T y() const
Definition: PV2DBase.h:44
TrackingRecHit::missing
Definition: TrackingRecHit.h:47
PV2DBase::x
T x() const
Definition: PV2DBase.h:43
BaseTrackerRecHit::localPosition
LocalPoint localPosition() const final
Definition: BaseTrackerRecHit.h:54
CertificationClient_cfi.DCS
DCS
Definition: CertificationClient_cfi.py:9
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
analyze
example_stream void analyze(const edm::Event &, const edm::EventSetup &) override
edm::EventSetup
Definition: EventSetup.h:57
get
#define get
edm::ESHandleBase::isValid
bool isValid() const
Definition: ESHandle.h:44
TrackingRecHit::valid
Definition: TrackingRecHit.h:46
SiPixelPhase1Base::analyze
void analyze(edm::Event const &e, edm::EventSetup const &) override=0
VertexFwd.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
SiPixelPhase1Base.h
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
Propagator::clone
virtual Propagator * clone() const =0
es_hardcode_cfi.hb
hb
Definition: es_hardcode_cfi.py:85
TrackingComponentsRecord.h
GeometricSearchTracker
Definition: GeometricSearchTracker.h:14
PixelGeomDetUnit.h
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
GeomDetEnumerators::PixelEndcap
Definition: GeomDetEnumerators.h:12
edm::Ref::key
key_type key() const
Accessor for product key.
Definition: Ref.h:250
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
TrackingRecHit::inactive
Definition: TrackingRecHit.h:48
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
combine.missing
missing
Definition: combine.py:5
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
edm::Event
Definition: Event.h:73
TrajectoryMeasurement
Definition: TrajectoryMeasurement.h:25
StripSubdetector.h
edm::InputTag
Definition: InputTag.h:15
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
hit
Definition: SiStripHitEffFromCalibTree.cc:88
MeasurementTracker.h
GeometricSearchTracker::pixelBarrelLayers
std::vector< BarrelDetLayer const * > const & pixelBarrelLayers() const
Definition: GeometricSearchTracker.h:37
pwdgSkimBPark_cfi.vertices
vertices
Definition: pwdgSkimBPark_cfi.py:7
PixelClusterParameterEstimator::ReturnType
std::tuple< LocalPoint, LocalError, SiPixelRecHitQuality::QualWordType > ReturnType
Definition: PixelClusterParameterEstimator.h:22
TrackerGeometry
Definition: TrackerGeometry.h:14
edmNew::DetSet::const_iterator
const data_type * const_iterator
Definition: DetSetNew.h:31
TrackingComponentsRecord
Definition: TrackingComponentsRecord.h:12