CMS 3D CMS Logo

TrackerValidationVariables.cc
Go to the documentation of this file.
9 
15 
23 
25 
36 
38 
40 
41 #include "TMath.h"
42 
43 #include <string>
44 
46  : magneticFieldToken_{iC.esConsumes<MagneticField, IdealMagneticFieldRecord>()} {
47  trajCollectionToken_ =
48  iC.consumes<std::vector<Trajectory>>(edm::InputTag(config.getParameter<std::string>("trajectoryInput")));
49  tracksToken_ = iC.consumes<reco::TrackCollection>(config.getParameter<edm::InputTag>("Tracks"));
50 }
51 
53 
54 void TrackerValidationVariables::fillHitQuantities(reco::Track const& track, std::vector<AVHitStruct>& v_avhitout) {
55  auto const& trajParams = track.extra()->trajParams();
56  auto const& residuals = track.extra()->residuals();
57 
58  assert(trajParams.size() == track.recHitsSize());
59  auto hb = track.recHitsBegin();
60  for (unsigned int h = 0; h < track.recHitsSize(); h++) {
61  auto hit = *(hb + h);
62  if (!hit->isValid())
63  continue;
64 
65  AVHitStruct hitStruct;
66  const DetId& hit_detId = hit->geographicalId();
67  auto IntRawDetID = hit_detId.rawId();
68  auto IntSubDetID = hit_detId.subdetId();
69 
70  if (IntSubDetID == 0)
71  continue;
72 
73  if (IntSubDetID == PixelSubdetector::PixelBarrel || IntSubDetID == PixelSubdetector::PixelEndcap) {
74  const SiPixelRecHit* prechit = dynamic_cast<const SiPixelRecHit*>(
75  hit); //to be used to get the associated cluster and the cluster probability
76  if (prechit->isOnEdge())
77  hitStruct.isOnEdgePixel = true;
78  if (prechit->hasBadPixels())
79  hitStruct.isOtherBadPixel = true;
80  }
81 
82  auto lPTrk = trajParams[h].position(); // update state
83  auto lVTrk = trajParams[h].direction();
84 
85  auto gtrkdirup = hit->surface()->toGlobal(lVTrk);
86 
87  hitStruct.rawDetId = IntRawDetID;
88  hitStruct.phi = gtrkdirup.phi(); // direction, not position
89  hitStruct.eta = gtrkdirup.eta(); // same
90 
91  hitStruct.localAlpha = std::atan2(lVTrk.x(), lVTrk.z()); // wrt. normal tg(alpha)=x/z
92  hitStruct.localBeta = std::atan2(lVTrk.y(), lVTrk.z()); // wrt. normal tg(beta)= y/z
93 
94  hitStruct.resX = residuals.residualX(h);
95  hitStruct.resY = residuals.residualY(h);
96  hitStruct.resErrX = hitStruct.resX / residuals.pullX(h); // for backward compatibility....
97  hitStruct.resErrY = hitStruct.resY / residuals.pullY(h);
98 
99  // hitStruct.localX = lPhit.x();
100  // hitStruct.localY = lPhit.y();
101  // EM: use predictions for local coordinates
102  hitStruct.localX = lPTrk.x();
103  hitStruct.localY = lPTrk.y();
104 
105  // now calculate residuals taking global orientation of modules and radial topology in TID/TEC into account
106  float resXprime(999.F), resYprime(999.F);
107  float resXatTrkY(999.F);
108  float resXprimeErr(999.F), resYprimeErr(999.F);
109 
110  if (hit->detUnit()) { // is it a single physical module?
111  float uOrientation(-999.F), vOrientation(-999.F);
112  float resXTopol(999.F), resYTopol(999.F);
113  float resXatTrkYTopol(999.F);
114 
115  const Surface& surface = hit->detUnit()->surface();
116  const BoundPlane& boundplane = hit->detUnit()->surface();
117  const Bounds& bound = boundplane.bounds();
118 
119  float length = 0;
120  float width = 0;
121 
122  LocalPoint lPModule(0., 0., 0.), lUDirection(1., 0., 0.), lVDirection(0., 1., 0.);
123  GlobalPoint gPModule = surface.toGlobal(lPModule), gUDirection = surface.toGlobal(lUDirection),
124  gVDirection = surface.toGlobal(lVDirection);
125 
126  if (IntSubDetID == PixelSubdetector::PixelBarrel || IntSubDetID == PixelSubdetector::PixelEndcap ||
127  IntSubDetID == StripSubdetector::TIB || IntSubDetID == StripSubdetector::TOB) {
128  if (IntSubDetID == PixelSubdetector::PixelEndcap) {
129  uOrientation = gUDirection.perp() - gPModule.perp() >= 0 ? +1.F : -1.F;
130  vOrientation = deltaPhi(gVDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
131  } else {
132  uOrientation = deltaPhi(gUDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
133  vOrientation = gVDirection.z() - gPModule.z() >= 0 ? +1.F : -1.F;
134  }
135 
136  resXTopol = hitStruct.resX;
137  resXatTrkYTopol = hitStruct.resX;
138  resYTopol = hitStruct.resY;
139  resXprimeErr = hitStruct.resErrX;
140  resYprimeErr = hitStruct.resErrY;
141 
142  const RectangularPlaneBounds* rectangularBound = dynamic_cast<const RectangularPlaneBounds*>(&bound);
143  if (rectangularBound != nullptr) {
144  hitStruct.inside = rectangularBound->inside(lPTrk);
145  length = rectangularBound->length();
146  width = rectangularBound->width();
147  hitStruct.localXnorm = 2 * hitStruct.localX / width;
148  hitStruct.localYnorm = 2 * hitStruct.localY / length;
149  } else {
150  throw cms::Exception("Geometry Error")
151  << "[TrackerValidationVariables] Cannot cast bounds to RectangularPlaneBounds as expected for TPE";
152  }
153 
154  } else if (IntSubDetID == StripSubdetector::TID || IntSubDetID == StripSubdetector::TEC) {
155  // not possible to compute precisely as with Trajectory
156  } else {
157  edm::LogWarning("TrackerValidationVariables") << "@SUB=TrackerValidationVariables::fillHitQuantities"
158  << "No valid tracker subdetector " << IntSubDetID;
159  continue;
160  }
161 
162  resXprime = resXTopol * uOrientation;
163  resXatTrkY = resXatTrkYTopol;
164  resYprime = resYTopol * vOrientation;
165 
166  } else { // not a detUnit, so must be a virtual 2D-Module
167  // FIXME: at present only for det units residuals are calculated and filled in the hitStruct
168  // But in principle this method should also be useable for the gluedDets (2D modules in TIB, TID, TOB, TEC)
169  // In this case, only orientation should be taken into account for primeResiduals, but not the radial topology
170  // At present, default values (999.F) are given out
171  }
172 
173  hitStruct.resXprime = resXprime;
174  hitStruct.resXatTrkY = resXatTrkY;
175  hitStruct.resYprime = resYprime;
176  hitStruct.resXprimeErr = resXprimeErr;
177  hitStruct.resYprimeErr = resYprimeErr;
178 
179  v_avhitout.push_back(hitStruct);
180  }
181 }
182 
183 void TrackerValidationVariables::fillHitQuantities(const Trajectory* trajectory, std::vector<AVHitStruct>& v_avhitout) {
184  TrajectoryStateCombiner tsoscomb;
185 
186  const std::vector<TrajectoryMeasurement>& tmColl = trajectory->measurements();
187  for (std::vector<TrajectoryMeasurement>::const_iterator itTraj = tmColl.begin(); itTraj != tmColl.end(); ++itTraj) {
188  if (!itTraj->updatedState().isValid())
189  continue;
190 
191  TrajectoryStateOnSurface tsos = tsoscomb(itTraj->forwardPredictedState(), itTraj->backwardPredictedState());
192  if (!tsos.isValid())
193  continue;
195 
196  if (!hit->isValid() || hit->geographicalId().det() != DetId::Tracker)
197  continue;
198 
199  AVHitStruct hitStruct;
200  const DetId& hit_detId = hit->geographicalId();
201  unsigned int IntRawDetID = (hit_detId.rawId());
202  unsigned int IntSubDetID = (hit_detId.subdetId());
203 
204  if (IntSubDetID == 0)
205  continue;
206 
207  if (IntSubDetID == PixelSubdetector::PixelBarrel || IntSubDetID == PixelSubdetector::PixelEndcap) {
208  const SiPixelRecHit* prechit = dynamic_cast<const SiPixelRecHit*>(
209  hit.get()); //to be used to get the associated cluster and the cluster probability
210  if (prechit->isOnEdge())
211  hitStruct.isOnEdgePixel = true;
212  if (prechit->hasBadPixels())
213  hitStruct.isOtherBadPixel = true;
214  }
215 
216  //first calculate residuals in cartesian coordinates in the local module coordinate system
217 
218  LocalPoint lPHit = hit->localPosition();
219  LocalPoint lPTrk = tsos.localPosition();
220  LocalVector lVTrk = tsos.localDirection();
221 
222  hitStruct.localAlpha = atan2(lVTrk.x(), lVTrk.z()); // wrt. normal tg(alpha)=x/z
223  hitStruct.localBeta = atan2(lVTrk.y(), lVTrk.z()); // wrt. normal tg(beta)= y/z
224 
225  LocalError errHit = hit->localPositionError();
226  // no need to add APE to hitError anymore
227  // AlgebraicROOTObject<2>::SymMatrix mat = asSMatrix<2>(hit->parametersError());
228  // LocalError errHit = LocalError( mat(0,0),mat(0,1),mat(1,1) );
229  LocalError errTrk = tsos.localError().positionError();
230 
231  //check for negative error values: track error can have negative value, if matrix inversion fails (very rare case)
232  //hit error should always give positive values
233  if (errHit.xx() < 0. || errHit.yy() < 0. || errTrk.xx() < 0. || errTrk.yy() < 0.) {
234  edm::LogError("TrackerValidationVariables")
235  << "@SUB=TrackerValidationVariables::fillHitQuantities"
236  << "One of the squared error methods gives negative result"
237  << "\n\terrHit.xx()\terrHit.yy()\terrTrk.xx()\terrTrk.yy()"
238  << "\n\t" << errHit.xx() << "\t" << errHit.yy() << "\t" << errTrk.xx() << "\t" << errTrk.yy();
239  continue;
240  }
241 
242  align::LocalVector res = lPTrk - lPHit;
243 
244  float resXErr = std::sqrt(errHit.xx() + errTrk.xx());
245  float resYErr = std::sqrt(errHit.yy() + errTrk.yy());
246 
247  hitStruct.resX = res.x();
248  hitStruct.resY = res.y();
249  hitStruct.resErrX = resXErr;
250  hitStruct.resErrY = resYErr;
251 
252  // hitStruct.localX = lPhit.x();
253  // hitStruct.localY = lPhit.y();
254  // EM: use predictions for local coordinates
255  hitStruct.localX = lPTrk.x();
256  hitStruct.localY = lPTrk.y();
257 
258  // now calculate residuals taking global orientation of modules and radial topology in TID/TEC into account
259  float resXprime(999.F), resYprime(999.F);
260  float resXatTrkY(999.F);
261  float resXprimeErr(999.F), resYprimeErr(999.F);
262 
263  if (hit->detUnit()) { // is it a single physical module?
264  const GeomDetUnit& detUnit = *(hit->detUnit());
265  float uOrientation(-999.F), vOrientation(-999.F);
266  float resXTopol(999.F), resYTopol(999.F);
267  float resXatTrkYTopol(999.F);
268 
269  const Surface& surface = hit->detUnit()->surface();
270  const BoundPlane& boundplane = hit->detUnit()->surface();
271  const Bounds& bound = boundplane.bounds();
272 
273  float length = 0;
274  float width = 0;
275 
276  LocalPoint lPModule(0., 0., 0.), lUDirection(1., 0., 0.), lVDirection(0., 1., 0.);
277  GlobalPoint gPModule = surface.toGlobal(lPModule), gUDirection = surface.toGlobal(lUDirection),
278  gVDirection = surface.toGlobal(lVDirection);
279 
280  if (IntSubDetID == PixelSubdetector::PixelBarrel || IntSubDetID == StripSubdetector::TIB ||
281  IntSubDetID == StripSubdetector::TOB) {
282  uOrientation = deltaPhi(gUDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
283  vOrientation = gVDirection.z() - gPModule.z() >= 0 ? +1.F : -1.F;
284  resXTopol = res.x();
285  resXatTrkYTopol = res.x();
286  resYTopol = res.y();
287  resXprimeErr = resXErr;
288  resYprimeErr = resYErr;
289 
290  const RectangularPlaneBounds* rectangularBound = dynamic_cast<const RectangularPlaneBounds*>(&bound);
291  if (rectangularBound != nullptr) {
292  hitStruct.inside = rectangularBound->inside(lPTrk);
293  length = rectangularBound->length();
294  width = rectangularBound->width();
295  hitStruct.localXnorm = 2 * hitStruct.localX / width;
296  hitStruct.localYnorm = 2 * hitStruct.localY / length;
297  } else {
298  throw cms::Exception("Geometry Error") << "[TrackerValidationVariables] Cannot cast bounds to "
299  "RectangularPlaneBounds as expected for TPB, TIB and TOB";
300  }
301 
302  } else if (IntSubDetID == PixelSubdetector::PixelEndcap) {
303  uOrientation = gUDirection.perp() - gPModule.perp() >= 0 ? +1.F : -1.F;
304  vOrientation = deltaPhi(gVDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
305  resXTopol = res.x();
306  resXatTrkYTopol = res.x();
307  resYTopol = res.y();
308  resXprimeErr = resXErr;
309  resYprimeErr = resYErr;
310 
311  const RectangularPlaneBounds* rectangularBound = dynamic_cast<const RectangularPlaneBounds*>(&bound);
312  if (rectangularBound != nullptr) {
313  hitStruct.inside = rectangularBound->inside(lPTrk);
314  length = rectangularBound->length();
315  width = rectangularBound->width();
316  hitStruct.localXnorm = 2 * hitStruct.localX / width;
317  hitStruct.localYnorm = 2 * hitStruct.localY / length;
318  } else {
319  throw cms::Exception("Geometry Error")
320  << "[TrackerValidationVariables] Cannot cast bounds to RectangularPlaneBounds as expected for TPE";
321  }
322 
323  } else if (IntSubDetID == StripSubdetector::TID || IntSubDetID == StripSubdetector::TEC) {
324  uOrientation = deltaPhi(gUDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
325  vOrientation = gVDirection.perp() - gPModule.perp() >= 0. ? +1.F : -1.F;
326 
327  if (!dynamic_cast<const RadialStripTopology*>(&detUnit.type().topology()))
328  continue;
329  const RadialStripTopology& topol = dynamic_cast<const RadialStripTopology&>(detUnit.type().topology());
330 
331  MeasurementPoint measHitPos = topol.measurementPosition(lPHit);
332  MeasurementPoint measTrkPos = topol.measurementPosition(lPTrk);
333 
334  MeasurementError measHitErr = topol.measurementError(lPHit, errHit);
335  MeasurementError measTrkErr = topol.measurementError(lPTrk, errTrk);
336 
337  if (measHitErr.uu() < 0. || measHitErr.vv() < 0. || measTrkErr.uu() < 0. || measTrkErr.vv() < 0.) {
338  edm::LogError("TrackerValidationVariables")
339  << "@SUB=TrackerValidationVariables::fillHitQuantities"
340  << "One of the squared error methods gives negative result"
341  << "\n\tmeasHitErr.uu()\tmeasHitErr.vv()\tmeasTrkErr.uu()\tmeasTrkErr.vv()"
342  << "\n\t" << measHitErr.uu() << "\t" << measHitErr.vv() << "\t" << measTrkErr.uu() << "\t"
343  << measTrkErr.vv();
344  continue;
345  }
346 
347  float localStripLengthHit = topol.localStripLength(lPHit);
348  float localStripLengthTrk = topol.localStripLength(lPTrk);
349  float phiHit = topol.stripAngle(measHitPos.x());
350  float phiTrk = topol.stripAngle(measTrkPos.x());
351  float r_0 = topol.originToIntersection();
352 
353  resXTopol = (phiTrk - phiHit) * r_0;
354  // resXTopol = (tan(phiTrk)-tan(phiHit))*r_0;
355 
356  LocalPoint LocalHitPosCor = topol.localPosition(MeasurementPoint(measHitPos.x(), measTrkPos.y()));
357  resXatTrkYTopol = lPTrk.x() - LocalHitPosCor.x();
358 
359  //resYTopol = measTrkPos.y()*localStripLengthTrk - measHitPos.y()*localStripLengthHit;
360  float cosPhiHit(cos(phiHit)), cosPhiTrk(cos(phiTrk)), sinPhiHit(sin(phiHit)), sinPhiTrk(sin(phiTrk));
361  float l_0 = r_0 - topol.detHeight() / 2;
362  resYTopol = measTrkPos.y() * localStripLengthTrk - measHitPos.y() * localStripLengthHit +
363  l_0 * (1 / cosPhiTrk - 1 / cosPhiHit);
364 
365  resXprimeErr = std::sqrt(measHitErr.uu() + measTrkErr.uu()) * topol.angularWidth() * r_0;
366  //resYprimeErr = std::sqrt(measHitErr.vv()*localStripLengthHit*localStripLengthHit + measTrkErr.vv()*localStripLengthTrk*localStripLengthTrk);
367  float helpSummand = l_0 * l_0 * topol.angularWidth() * topol.angularWidth() *
368  (sinPhiHit * sinPhiHit / pow(cosPhiHit, 4) * measHitErr.uu() +
369  sinPhiTrk * sinPhiTrk / pow(cosPhiTrk, 4) * measTrkErr.uu());
370  resYprimeErr = std::sqrt(measHitErr.vv() * localStripLengthHit * localStripLengthHit +
371  measTrkErr.vv() * localStripLengthTrk * localStripLengthTrk + helpSummand);
372 
373  const TrapezoidalPlaneBounds* trapezoidalBound = dynamic_cast<const TrapezoidalPlaneBounds*>(&bound);
374  if (trapezoidalBound != nullptr) {
375  hitStruct.inside = trapezoidalBound->inside(lPTrk);
376  length = trapezoidalBound->length();
377  width = trapezoidalBound->width();
378  //float widthAtHalfLength = trapezoidalBound->widthAtHalfLength();
379 
380  // int yAxisOrientation=trapezoidalBound->yAxisOrientation();
381  // for trapezoidal shape modules, scale with as function of local y coordinate
382  // float widthAtlocalY=width-(1-yAxisOrientation*2*lPTrk.y()/length)*(width-widthAtHalfLength);
383  // hitStruct.localXnorm = 2*hitStruct.localX/widthAtlocalY;
384  hitStruct.localXnorm = 2 * hitStruct.localX / width;
385  hitStruct.localYnorm = 2 * hitStruct.localY / length;
386  } else {
387  throw cms::Exception("Geometry Error") << "[TrackerValidationVariables] Cannot cast bounds to "
388  "TrapezoidalPlaneBounds as expected for TID and TEC";
389  }
390 
391  } else {
392  edm::LogWarning("TrackerValidationVariables") << "@SUB=TrackerValidationVariables::fillHitQuantities"
393  << "No valid tracker subdetector " << IntSubDetID;
394  continue;
395  }
396 
397  resXprime = resXTopol * uOrientation;
398  resXatTrkY = resXatTrkYTopol;
399  resYprime = resYTopol * vOrientation;
400 
401  } else { // not a detUnit, so must be a virtual 2D-Module
402  // FIXME: at present only for det units residuals are calculated and filled in the hitStruct
403  // But in principle this method should also be useable for the gluedDets (2D modules in TIB, TID, TOB, TEC)
404  // In this case, only orientation should be taken into account for primeResiduals, but not the radial topology
405  // At present, default values (999.F) are given out
406  }
407 
408  hitStruct.resXprime = resXprime;
409  hitStruct.resXatTrkY = resXatTrkY;
410  hitStruct.resYprime = resYprime;
411  hitStruct.resXprimeErr = resXprimeErr;
412  hitStruct.resYprimeErr = resYprimeErr;
413 
414  hitStruct.rawDetId = IntRawDetID;
415  hitStruct.phi = tsos.globalDirection().phi();
416  hitStruct.eta = tsos.globalDirection().eta();
417 
418  v_avhitout.push_back(hitStruct);
419  }
420 }
421 
423  const edm::EventSetup& eventSetup,
424  std::vector<AVTrackStruct>& v_avtrackout) {
426  event, eventSetup, [](const reco::Track&) -> bool { return true; }, v_avtrackout);
427 }
428 
430  const edm::EventSetup& eventSetup,
431  std::function<bool(const reco::Track&)> trackFilter,
432  std::vector<AVTrackStruct>& v_avtrackout) {
434 
436  event.getByToken(tracksToken_, tracksH);
437  if (!tracksH.isValid())
438  return;
439  auto const& tracks = *tracksH;
440  auto ntrk = tracks.size();
441  LogDebug("TrackerValidationVariables") << "Track collection size " << ntrk;
442 
444  event.getByToken(trajCollectionToken_, trajsH);
445  bool yesTraj = trajsH.isValid();
446  std::vector<Trajectory> const* trajs = nullptr;
447  if (yesTraj)
448  trajs = &(*trajsH);
449  if (yesTraj)
450  assert(trajs->size() == tracks.size());
451 
452  Trajectory const* trajectory = nullptr;
453  for (unsigned int i = 0; i < ntrk; ++i) {
454  auto const& track = tracks[i];
455  if (yesTraj)
456  trajectory = &(*trajs)[i];
457 
458  if (!trackFilter(track))
459  continue;
460 
461  AVTrackStruct trackStruct;
462 
463  trackStruct.p = track.p();
464  trackStruct.pt = track.pt();
465  trackStruct.ptError = track.ptError();
466  trackStruct.px = track.px();
467  trackStruct.py = track.py();
468  trackStruct.pz = track.pz();
469  trackStruct.eta = track.eta();
470  trackStruct.phi = track.phi();
471  trackStruct.chi2 = track.chi2();
472  trackStruct.chi2Prob = TMath::Prob(track.chi2(), track.ndof());
473  trackStruct.normchi2 = track.normalizedChi2();
474  GlobalPoint gPoint(track.vx(), track.vy(), track.vz());
475  double theLocalMagFieldInInverseGeV = magneticField.inInverseGeV(gPoint).z();
476  trackStruct.kappa = -track.charge() * theLocalMagFieldInInverseGeV / track.pt();
477  trackStruct.charge = track.charge();
478  trackStruct.d0 = track.d0();
479  trackStruct.dz = track.dz();
480  trackStruct.numberOfValidHits = track.numberOfValidHits();
481  trackStruct.numberOfLostHits = track.numberOfLostHits();
482  if (trajectory)
483  fillHitQuantities(trajectory, trackStruct.hits);
484  else
485  fillHitQuantities(track, trackStruct.hits);
486 
487  v_avtrackout.push_back(trackStruct);
488  }
489 }
Vector3DBase< float, LocalTag >
TrajectoryStateCombiner.h
RadialStripTopology
Definition: RadialStripTopology.h:28
TrajectoryStateOnSurface::globalDirection
GlobalVector globalDirection() const
Definition: TrajectoryStateOnSurface.h:67
TrackerValidationVariables.h
TrackerValidationVariables::AVTrackStruct::chi2Prob
float chi2Prob
Definition: TrackerValidationVariables.h:99
TrackerValidationVariables::AVHitStruct::localY
float localY
Definition: TrackerValidationVariables.h:60
Point2DBase
Definition: Point2DBase.h:9
TrajectoryStateOnSurface.h
ApeEstimator_cff.width
width
Definition: ApeEstimator_cff.py:24
mps_fire.i
i
Definition: mps_fire.py:428
PixelSubdetector.h
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
TrackerValidationVariables::AVTrackStruct::eta
float eta
Definition: TrackerValidationVariables.h:95
PixelSubdetector::PixelEndcap
Definition: PixelSubdetector.h:11
TrackerGeometry.h
GeomDet
Definition: GeomDet.h:27
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
LocalTrajectoryError::positionError
LocalError positionError() const
Definition: LocalTrajectoryError.h:81
TrackerValidationVariables::AVTrackStruct::dz
float dz
Definition: TrackerValidationVariables.h:102
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
RadialStripTopology.h
GeomDet::type
virtual const GeomDetType & type() const
Definition: GeomDet.cc:69
deltaPhi.h
RadialStripTopology::measurementError
MeasurementError measurementError(const LocalPoint &, const LocalError &) const override=0
h
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
Definition: L1TUtmAlgorithmRcd.h:4
TrackerValidationVariables::AVTrackStruct::numberOfLostHits
int numberOfLostHits
Definition: TrackerValidationVariables.h:105
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89285
TrackerValidationVariables::fillTrackQuantities
void fillTrackQuantities(const edm::Event &, const edm::EventSetup &, std::vector< AVTrackStruct > &v_avtrackout)
Definition: TrackerValidationVariables.cc:422
MeasurementError.h
GeomDetType.h
if
if(0==first)
Definition: CAHitNtupletGeneratorKernelsImpl.h:48
TrackerValidationVariables::AVTrackStruct::charge
int charge
Definition: TrackerValidationVariables.h:103
Bounds
Definition: Bounds.h:18
cms::cuda::assert
assert(be >=bs)
Surface
Definition: Surface.h:36
RectangularPlaneBounds::width
float width() const override
Width along local X.
Definition: RectangularPlaneBounds.h:22
SiStripDetId.h
TrackerValidationVariables::AVHitStruct::resY
float resY
Definition: TrackerValidationVariables.h:48
TrajectoryMeasurement.h
TransientTrackingRecHit.h
EDAnalyzer.h
TrackerValidationVariables::AVHitStruct::isOtherBadPixel
bool isOtherBadPixel
Definition: TrackerValidationVariables.h:67
HLT_FULL_cff.magneticField
magneticField
Definition: HLT_FULL_cff.py:348
edm::Handle< reco::TrackCollection >
TrackerValidationVariables::AVHitStruct::resErrX
float resErrX
Definition: TrackerValidationVariables.h:49
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
TrackerValidationVariables::AVTrackStruct::py
float py
Definition: TrackerValidationVariables.h:93
SiPixelRecHit
Our base class.
Definition: SiPixelRecHit.h:23
TrackerValidationVariables::AVHitStruct::resXatTrkY
float resXatTrkY
Definition: TrackerValidationVariables.h:52
F
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:163
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
TrackerValidationVariables::AVTrackStruct::ptError
float ptError
Definition: TrackerValidationVariables.h:91
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
config
Definition: config.py:1
DetId
Definition: DetId.h:17
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
MakerMacros.h
TrackerValidationVariables::AVHitStruct::eta
float eta
Definition: TrackerValidationVariables.h:57
TrackerValidationVariables::AVHitStruct::localX
float localX
Definition: TrackerValidationVariables.h:59
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Track.h
SiPixelRawToDigiRegional_cfi.deltaPhi
deltaPhi
Definition: SiPixelRawToDigiRegional_cfi.py:9
LocalError::xx
float xx() const
Definition: LocalError.h:22
TrackerValidationVariables::AVHitStruct::localYnorm
float localYnorm
Definition: TrackerValidationVariables.h:62
TrajectoryStateOnSurface::localDirection
LocalVector localDirection() const
Definition: TrajectoryStateOnSurface.h:76
TrapezoidalPlaneBounds.h
MeasurementError
Definition: MeasurementError.h:8
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
TrackerValidationVariables::AVTrackStruct
Definition: TrackerValidationVariables.h:70
Surface::toGlobal
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
TrackerValidationVariables::AVHitStruct::localBeta
float localBeta
Definition: TrackerValidationVariables.h:64
reco::Track
Definition: Track.h:27
RectangularPlaneBounds::inside
bool inside(const Local2DPoint &p) const override
Definition: RectangularPlaneBounds.h:29
RectangularPlaneBounds.h
TrackerValidationVariables::AVHitStruct::resErrY
float resErrY
Definition: TrackerValidationVariables.h:50
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
h
TrackerValidationVariables::fillHitQuantities
void fillHitQuantities(const Trajectory *trajectory, std::vector< AVHitStruct > &v_avhitout)
Definition: TrackerValidationVariables.cc:183
Point3DBase< float, LocalTag >
SiPixelRecHit.h
RadialStripTopology::angularWidth
virtual float angularWidth() const =0
RadialStripTopology::measurementPosition
MeasurementPoint measurementPosition(const LocalPoint &) const override=0
TrackerValidationVariables::AVHitStruct::resYprime
float resYprime
Definition: TrackerValidationVariables.h:54
TrajTrackAssociation.h
TrackerValidationVariables::AVTrackStruct::p
float p
Definition: TrackerValidationVariables.h:88
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
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
MeasurementPoint
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
Definition: MeasurementPoint.h:12
TrackerDigiGeometryRecord.h
TrajectoryStateCombiner
Definition: TrajectoryStateCombiner.h:13
TrajectoryStateOnSurface::localPosition
LocalPoint localPosition() const
Definition: TrajectoryStateOnSurface.h:74
RectangularPlaneBounds::length
float length() const override
Lenght along local Y.
Definition: RectangularPlaneBounds.h:20
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
TrackerValidationVariables::magneticFieldToken_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldToken_
Definition: TrackerValidationVariables.h:124
edm::ParameterSet
Definition: ParameterSet.h:47
RadialStripTopology::localPosition
LocalPoint localPosition(float strip) const override=0
DetId::Tracker
Definition: DetId.h:25
Event.h
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:159
PV3DBase::barePhi
T barePhi() const
Definition: PV3DBase.h:65
LocalError
Definition: LocalError.h:12
PV2DBase::y
T y() const
Definition: PV2DBase.h:44
TrackerValidationVariables::AVHitStruct::resXprime
float resXprime
Definition: TrackerValidationVariables.h:51
TrackerValidationVariables::AVHitStruct::inside
bool inside
Definition: TrackerValidationVariables.h:58
RadialStripTopology::detHeight
virtual float detHeight() const =0
PV2DBase::x
T x() const
Definition: PV2DBase.h:43
TrackerValidationVariables::AVHitStruct::resYprimeErr
float resYprimeErr
Definition: TrackerValidationVariables.h:55
RadialStripTopology::originToIntersection
virtual float originToIntersection() const =0
Definitions.h
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
TrackingRecHit::ConstRecHitPointer
std::shared_ptr< TrackingRecHit const > ConstRecHitPointer
Definition: TrackingRecHit.h:25
TrackerValidationVariables::AVTrackStruct::px
float px
Definition: TrackerValidationVariables.h:92
TrackerValidationVariables::AVTrackStruct::kappa
float kappa
Definition: TrackerValidationVariables.h:97
TrackerValidationVariables::AVHitStruct
Definition: TrackerValidationVariables.h:24
MeasurementPoint.h
TrackerValidationVariables::AVTrackStruct::numberOfValidHits
int numberOfValidHits
Definition: TrackerValidationVariables.h:104
edm::EventSetup
Definition: EventSetup.h:58
AnalyticalPropagator.h
TrackerValidationVariables::AVTrackStruct::hits
std::vector< AVHitStruct > hits
Definition: TrackerValidationVariables.h:106
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
TrapezoidalPlaneBounds
Definition: TrapezoidalPlaneBounds.h:15
res
Definition: Electron.h:6
hcalSimParameters_cfi.hb
hb
Definition: hcalSimParameters_cfi.py:60
TrackerValidationVariables::AVHitStruct::rawDetId
uint32_t rawDetId
Definition: TrackerValidationVariables.h:65
InputTag.h
Trajectory::measurements
DataContainer const & measurements() const
Definition: Trajectory.h:178
TrackerValidationVariables::AVTrackStruct::pz
float pz
Definition: TrackerValidationVariables.h:94
TrackerValidationVariables::AVTrackStruct::pt
float pt
Definition: TrackerValidationVariables.h:90
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
TrackerValidationVariables::~TrackerValidationVariables
~TrackerValidationVariables()
Definition: TrackerValidationVariables.cc:52
Trajectory.h
GeomDet.h
TrackerValidationVariables::TrackerValidationVariables
TrackerValidationVariables(const edm::ParameterSet &config, edm::ConsumesCollector &&iC)
Definition: TrackerValidationVariables.cc:45
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
RectangularPlaneBounds
Definition: RectangularPlaneBounds.h:12
TrackerValidationVariables::AVHitStruct::resX
float resX
Definition: TrackerValidationVariables.h:47
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
TrackerValidationVariables::AVTrackStruct::chi2
float chi2
Definition: TrackerValidationVariables.h:98
TrackerValidationVariables::tracksToken_
edm::EDGetTokenT< std::vector< reco::Track > > tracksToken_
Definition: TrackerValidationVariables.h:123
Trajectory
Definition: Trajectory.h:38
Frameworkfwd.h
TrackerValidationVariables::AVHitStruct::localAlpha
float localAlpha
Definition: TrackerValidationVariables.h:63
Exception
Definition: hltDiff.cc:245
GeomDetType::topology
virtual const Topology & topology() const =0
BoundPlane
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
HiBiasedCentrality_cfi.function
function
Definition: HiBiasedCentrality_cfi.py:4
EventSetup.h
TrackerValidationVariables::AVHitStruct::isOnEdgePixel
bool isOnEdgePixel
Definition: TrackerValidationVariables.h:66
TrackerValidationVariables::AVTrackStruct::phi
float phi
Definition: TrackerValidationVariables.h:96
TrackerValidationVariables::AVTrackStruct::normchi2
float normchi2
Definition: TrackerValidationVariables.h:100
TrackerValidationVariables::trajCollectionToken_
edm::EDGetTokenT< std::vector< Trajectory > > trajCollectionToken_
Definition: TrackerValidationVariables.h:122
RadialStripTopology::stripAngle
float stripAngle(float strip) const override=0
TrackerValidationVariables::AVHitStruct::localXnorm
float localXnorm
Definition: TrackerValidationVariables.h:61
MeasurementError::vv
float vv() const
Definition: MeasurementError.h:16
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:29
TrackerValidationVariables::AVHitStruct::resXprimeErr
float resXprimeErr
Definition: TrackerValidationVariables.h:53
ConsumesCollector.h
MeasurementError::uu
float uu() const
Definition: MeasurementError.h:14
ParameterSet.h
MinBiasPDSkim_cfg.trackFilter
trackFilter
Definition: MinBiasPDSkim_cfg.py:243
RadialStripTopology::localStripLength
float localStripLength(const LocalPoint &) const override=0
SiStripFineDelayHit_cfi.MagneticField
MagneticField
Definition: SiStripFineDelayHit_cfi.py:7
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
TrackerValidationVariables::AVTrackStruct::d0
float d0
Definition: TrackerValidationVariables.h:101
TrajectoryStateOnSurface::localError
const LocalTrajectoryError & localError() const
Definition: TrajectoryStateOnSurface.h:77
MagneticField
Definition: MagneticField.h:19
StripSubdetector.h
LocalError::yy
float yy() const
Definition: LocalError.h:24
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
SiPixelRecHit::hasBadPixels
bool hasBadPixels() const
Definition: SiPixelRecHit.h:99
edm::InputTag
Definition: InputTag.h:15
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
TrackerValidationVariables::AVHitStruct::phi
float phi
Definition: TrackerValidationVariables.h:56
hit
Definition: SiStripHitEffFromCalibTree.cc:88
SiPixelRecHit::isOnEdge
bool isOnEdge() const
Definition: SiPixelRecHit.h:97
TrackerAlignableId.h