CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
TkGluedMeasurementDet Class Referencefinal

#include <TkGluedMeasurementDet.h>

Inheritance diagram for TkGluedMeasurementDet:
MeasurementDet

Classes

class  HitCollectorForFastMeasurements
 
class  HitCollectorForRecHits
 
class  HitCollectorForSimpleHits
 

Public Member Functions

bool hasBadComponents (const TrajectoryStateOnSurface &tsos, const MeasurementTrackerEvent &data) const override
 return TRUE if at least one of the mono and stereo components has badChannels More...
 
void init (const MeasurementDet *monoDet, const MeasurementDet *stereoDet, const TrackerTopology *tTopo)
 
bool isActive (const MeasurementTrackerEvent &data) const override
 return TRUE if both mono and stereo components are active More...
 
bool measurements (const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, const MeasurementTrackerEvent &data, TempMeasurements &result) const override
 
const TkStripMeasurementDetmonoDet () const
 
unsigned int rawId () const
 
RecHitContainer recHits (const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const override
 
bool recHits (SimpleHitContainer &result, const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &, const MeasurementTrackerEvent &data) const override
 
const GluedGeomDetspecificGeomDet () const
 
const TkStripMeasurementDetstereoDet () const
 
 TkGluedMeasurementDet (const GluedGeomDet *gdet, const SiStripRecHitMatcher *matcher, const StripClusterParameterEstimator *cpe)
 
- Public Member Functions inherited from MeasurementDet
const GeomDetfastGeomDet () const
 
std::vector< TrajectoryMeasurementfastMeasurements (const TrajectoryStateOnSurface &stateOnThisDet, const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &est, const MeasurementTrackerEvent &data) const
 
virtual const GeomDetgeomDet () const
 
 MeasurementDet (const GeomDet *gdet)
 
const Surface::PositionTypeposition () const
 
virtual bool recHits (const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &, const MeasurementTrackerEvent &data, RecHitContainer &result, std::vector< float > &) const
 
const Surfacesurface () const
 
virtual ~MeasurementDet ()=default
 

Private Member Functions

void checkHitProjection (const TrackingRecHit &hit, const TrajectoryStateOnSurface &ts, const GeomDet &det) const
 
void checkProjection (const TrajectoryStateOnSurface &ts, const RecHitContainer &monoHits, const RecHitContainer &stereoHits) const
 
template<typename Collector >
void collectRecHits (const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data, Collector &coll) const
 
template<typename Collector >
void doubleMatch (const TrajectoryStateOnSurface &ts, const MeasurementTrackerEvent &data, Collector &collector) const
 
template<typename Collector >
void projectOnGluedDet (Collector &collector, const RecHitContainer &hits, const GlobalVector &gdir) const
 
template<typename Collector >
void projectOnGluedDet (Collector &collector, std::vector< SiStripRecHit2D > const &hits, const GlobalVector &gdir) const
 
RecHitContainer projectOnGluedDet (const RecHitContainer &hits, const TrajectoryStateOnSurface &ts) const
 
RecHitContainer projectOnGluedDet (const std::vector< SiStripRecHit2D > &hits, const TrajectoryStateOnSurface &ts) const
 
template<typename HitCollector >
void projectOnGluedDet (HitCollector &collector, const RecHitContainer &hits, const GlobalVector &gdir) const
 
template<typename HitCollector >
void projectOnGluedDet (HitCollector &collector, const std::vector< SiStripRecHit2D > &hits, const GlobalVector &gdir) const
 
bool testStrips (const TrajectoryStateOnSurface &tsos, const BoundPlane &gluedPlane, const TkStripMeasurementDet &mdet) const
 Test the strips on one of the two dets with projection. More...
 

Private Attributes

const StripClusterParameterEstimatortheCPE
 
const SiStripRecHitMatchertheMatcher
 
const TkStripMeasurementDettheMonoDet
 
const TkStripMeasurementDettheStereoDet
 
const TrackerTopologytheTopology
 

Additional Inherited Members

- Public Types inherited from MeasurementDet
typedef TrackingRecHit::ConstRecHitContainer RecHitContainer
 
using SimpleHitContainer = std::vector< BaseTrackerRecHit * >
 
typedef tracking::TempMeasurements TempMeasurements
 
- Protected Attributes inherited from MeasurementDet
TrackingRecHit::ConstRecHitPointer theInactiveHit
 
TrackingRecHit::ConstRecHitPointer theMissingHit
 

Detailed Description

Definition at line 17 of file TkGluedMeasurementDet.h.

Constructor & Destructor Documentation

◆ TkGluedMeasurementDet()

TkGluedMeasurementDet::TkGluedMeasurementDet ( const GluedGeomDet gdet,
const SiStripRecHitMatcher matcher,
const StripClusterParameterEstimator cpe 
)

Definition at line 61 of file TkGluedMeasurementDet.cc.

64  : MeasurementDet(gdet),
65  theMatcher(matcher),
66  theCPE(cpe),
67  theMonoDet(nullptr),
68  theStereoDet(nullptr),
69  theTopology(nullptr) {}

Member Function Documentation

◆ checkHitProjection()

void TkGluedMeasurementDet::checkHitProjection ( const TrackingRecHit hit,
const TrajectoryStateOnSurface ts,
const GeomDet det 
) const
private

Definition at line 347 of file TkGluedMeasurementDet.cc.

349  {
350  auto&& vl = projectedPos(hit, det, ts.globalParameters().momentum(), theCPE);
351  ProjectedSiStripRecHit2D projectedHit(vl.first, vl.second, det, static_cast<SiStripRecHit2D const&>(hit));
352 
353  RecHitPropagator prop;
354  TrajectoryStateOnSurface propState = prop.propagate(hit, det.surface(), ts);
355 
356  if ((projectedHit.localPosition() - propState.localPosition()).mag() > 0.0001f) {
357  std::cout << "PROBLEM: projected and propagated hit positions differ by "
358  << (projectedHit.localPosition() - propState.localPosition()).mag() << std::endl;
359  }
360 
361  LocalError le1 = projectedHit.localPositionError();
362  LocalError le2 = propState.localError().positionError();
363  double eps = 1.e-5;
364  double cutoff = 1.e-4; // if element below cutoff, use absolute instead of relative accuracy
365  double maxdiff = std::max(
366  std::max(fabs(le1.xx() - le2.xx()) / (cutoff + le1.xx()), fabs(le1.xy() - le2.xy()) / (cutoff + fabs(le1.xy()))),
367  fabs(le1.yy() - le2.yy()) / (cutoff + le1.xx()));
368  if (maxdiff > eps) {
369  std::cout << "PROBLEM: projected and propagated hit errors differ by " << maxdiff << std::endl;
370  }
371 }

References gather_cfg::cout, qjetsadder_cfi::cutoff, TrajectoryStateOnSurface::globalParameters(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localPosition(), mag(), SiStripPI::max, GlobalTrajectoryParameters::momentum(), LocalTrajectoryError::positionError(), RecHitPropagator::propagate(), GeomDet::surface(), theCPE, LocalError::xx(), LocalError::xy(), and LocalError::yy().

Referenced by checkProjection().

◆ checkProjection()

void TkGluedMeasurementDet::checkProjection ( const TrajectoryStateOnSurface ts,
const RecHitContainer monoHits,
const RecHitContainer stereoHits 
) const
private

Definition at line 336 of file TkGluedMeasurementDet.cc.

338  {
339  for (RecHitContainer::const_iterator i = monoHits.begin(); i != monoHits.end(); ++i) {
340  checkHitProjection(**i, ts, fastGeomDet());
341  }
342  for (RecHitContainer::const_iterator i = stereoHits.begin(); i != stereoHits.end(); ++i) {
343  checkHitProjection(**i, ts, fastGeomDet());
344  }
345 }

References checkHitProjection(), MeasurementDet::fastGeomDet(), and mps_fire::i.

◆ collectRecHits()

template<typename Collector >
void TkGluedMeasurementDet::collectRecHits ( const TrajectoryStateOnSurface ts,
const MeasurementTrackerEvent data,
Collector &  coll 
) const
private

Definition at line 170 of file TkGluedMeasurementDet.cc.

172  {
173  //------ WARNING: here ts is used as it is on the mono/stereo surface.
174  //----- A further propagation is necessary.
175  //----- To limit the problem, the SimpleCPE should be used
176  RecHitContainer monoHits = theMonoDet->recHits(ts, data);
177  GlobalVector glbDir = (ts.isValid() ? ts.globalParameters().momentum() : position() - GlobalPoint(0, 0, 0));
178 
179  //edm::LogWarning("TkGluedMeasurementDet::recHits") << "Query-for-detid-" << theGeomDet->geographicalId().rawId();
180 
181  //checkProjection(ts, monoHits, stereoHits);
182 
183  if (monoHits.empty()) {
184  // make stereo TTRHs and project them
185  projectOnGluedDet(collector, theStereoDet->recHits(ts, data), glbDir);
186  } else {
187  // collect simple stereo hits
188  std::vector<SiStripRecHit2D> simpleSteroHitsByValue;
189  theStereoDet->simpleRecHits(ts, data, simpleSteroHitsByValue);
190 
191  if (simpleSteroHitsByValue.empty()) {
192  projectOnGluedDet(collector, monoHits, glbDir);
193  } else {
194  LocalVector tkDir = (ts.isValid() ? ts.localDirection() : surface().toLocal(position() - GlobalPoint(0, 0, 0)));
196  vsStereoHits.resize(simpleSteroHitsByValue.size());
198  simpleSteroHitsByValue.begin(), simpleSteroHitsByValue.end(), vsStereoHits.begin(), take_address());
199 
200  // convert mono hits to type expected by matcher
201  for (RecHitContainer::const_iterator monoHit = monoHits.begin(); monoHit != monoHits.end(); ++monoHit) {
202  const TrackingRecHit* tkhit = (**monoHit).hit();
203  const SiStripRecHit2D* verySpecificMonoHit = reinterpret_cast<const SiStripRecHit2D*>(tkhit);
204  theMatcher->match(verySpecificMonoHit,
205  vsStereoHits.begin(),
206  vsStereoHits.end(),
207  collector.collector(),
208  &specificGeomDet(),
209  tkDir);
210 
211  if (collector.hasNewMatchedHits()) {
212  collector.clearNewMatchedHitsFlag();
213  } else {
214  collector.addProjected(**monoHit, glbDir);
215  }
216  } // loop on mono hit
217  }
218  //GIO// std::cerr << "TkGluedMeasurementDet hits " << monoHits.size() << "/" << stereoHits.size() << " => " << result.size() << std::endl;
219  }
220 }

References data, TrajectoryStateOnSurface::globalParameters(), TrackingRecHit::hit(), TrajectoryStateOnSurface::isValid(), TrajectoryStateOnSurface::localDirection(), SiStripRecHitMatcher::match(), GlobalTrajectoryParameters::momentum(), MeasurementDet::position(), projectOnGluedDet(), TkStripMeasurementDet::recHits(), TkStripMeasurementDet::simpleRecHits(), specificGeomDet(), MeasurementDet::surface(), theMatcher, theMonoDet, theStereoDet, GloballyPositioned< T >::toLocal(), and HcalDetIdTransform::transform().

Referenced by measurements(), and recHits().

◆ doubleMatch()

template<typename Collector >
void TkGluedMeasurementDet::doubleMatch ( const TrajectoryStateOnSurface ts,
const MeasurementTrackerEvent data,
Collector &  collector 
) const
private

◆ hasBadComponents()

bool TkGluedMeasurementDet::hasBadComponents ( const TrajectoryStateOnSurface tsos,
const MeasurementTrackerEvent data 
) const
inlineoverridevirtual

return TRUE if at least one of the mono and stereo components has badChannels

Implements MeasurementDet.

Definition at line 50 of file TkGluedMeasurementDet.h.

50  {
51  return (monoDet()->hasBadComponents(tsos, data) || stereoDet()->hasBadComponents(tsos, data));
52  }

References data, and MeasurementDet::hasBadComponents().

◆ init()

void TkGluedMeasurementDet::init ( const MeasurementDet monoDet,
const MeasurementDet stereoDet,
const TrackerTopology tTopo 
)

Definition at line 71 of file TkGluedMeasurementDet.cc.

73  {
74  theMonoDet = dynamic_cast<const TkStripMeasurementDet*>(monoDet);
75  theStereoDet = dynamic_cast<const TkStripMeasurementDet*>(stereoDet);
76  theTopology = tTopo;
77 
78  if ((theMonoDet == nullptr) || (theStereoDet == nullptr)) {
80  "TkGluedMeasurementDet ERROR: Trying to glue a det which is not a TkStripMeasurementDet");
81  }
82 }

References monoDet(), stereoDet(), theMonoDet, theStereoDet, and theTopology.

Referenced by MeasurementTrackerImpl::initGluedDet().

◆ isActive()

bool TkGluedMeasurementDet::isActive ( const MeasurementTrackerEvent data) const
inlineoverridevirtual

return TRUE if both mono and stereo components are active

Implements MeasurementDet.

Definition at line 45 of file TkGluedMeasurementDet.h.

45  {
46  return monoDet()->isActive(data) && stereoDet()->isActive(data);
47  }

References data, and MeasurementDet::isActive().

◆ measurements()

bool TkGluedMeasurementDet::measurements ( const TrajectoryStateOnSurface stateOnThisDet,
const MeasurementEstimator est,
const MeasurementTrackerEvent data,
TempMeasurements result 
) const
overridevirtual

Implements MeasurementDet.

Definition at line 106 of file TkGluedMeasurementDet.cc.

109  {
110  if
112  // LogDebug("TkStripMeasurementDet") << " DetID " << geomDet().geographicalId().rawId() << " (glued) fully inactive";
113  result.add(theInactiveHit, 0.F);
114  return true;
115  }
116 
117  auto oldSize = result.size();
118 
119  HitCollectorForFastMeasurements collector(&fastGeomDet(), theMatcher, theCPE, stateOnThisDet, est, result);
120  collectRecHits(stateOnThisDet, data, collector);
121 
122  if (result.size() > oldSize)
123  return true;
124 
125  auto id = geomDet().geographicalId().subdetId() - 3;
126  auto l = theTopology->tobLayer(geomDet().geographicalId());
127  bool killHIP = (1 == l) && (2 == id); //TOB1
128  killHIP &= stateOnThisDet.globalMomentum().perp2() > est.minPt2ForHitRecoveryInGluedDet();
129  if (killHIP) {
130  result.add(theInactiveHit, 0.F);
131  return true;
132  }
133 
134  //LogDebug("TkStripMeasurementDet") << "No hit found on TkGlued. Testing strips... ";
135  const BoundPlane& gluedPlane = geomDet().surface();
136  if ( // sorry for the big IF, but I want to exploit short-circuiting of logic
137  stateOnThisDet.hasError() &&
138  (/* do this only if the state has uncertainties, otherwise it will throw
139  (states without uncertainties are passed to this code from seeding */
140  (theMonoDet->isActive(data) &&
141  (theMonoDet->hasAllGoodChannels() || testStrips(stateOnThisDet, gluedPlane, *theMonoDet))) /*Mono OK*/
142  && // was ||
144  (theStereoDet->hasAllGoodChannels() || testStrips(stateOnThisDet, gluedPlane, *theStereoDet))) /*Stereo OK*/
145  ) /* State has errors */
146  ) {
147  result.add(theMissingHit, 0.F);
148  return false;
149  }
150  result.add(theInactiveHit, 0.F);
151  return true;
152 }

References collectRecHits(), data, F(), MeasurementDet::fastGeomDet(), GeomDet::geographicalId(), MeasurementDet::geomDet(), TrajectoryStateOnSurface::globalMomentum(), TkStripMeasurementDet::hasAllGoodChannels(), TrajectoryStateOnSurface::hasError(), TkStripMeasurementDet::isActive(), cmsLHEtoEOSManager::l, MeasurementEstimator::minPt2ForHitRecoveryInGluedDet(), PV3DBase< T, PVType, FrameType >::perp2(), mps_fire::result, DetId::subdetId(), GeomDet::surface(), testStrips(), theCPE, MeasurementDet::theInactiveHit, theMatcher, MeasurementDet::theMissingHit, theMonoDet, theStereoDet, theTopology, TrackerTopology::tobLayer(), and UNLIKELY.

◆ monoDet()

const TkStripMeasurementDet* TkGluedMeasurementDet::monoDet ( ) const
inline

Definition at line 39 of file TkGluedMeasurementDet.h.

39 { return theMonoDet; }

Referenced by init().

◆ projectOnGluedDet() [1/6]

template<typename Collector >
void TkGluedMeasurementDet::projectOnGluedDet ( Collector &  collector,
const RecHitContainer hits,
const GlobalVector gdir 
) const
private

Definition at line 308 of file TkGluedMeasurementDet.cc.

310  {
311  for (RecHitContainer::const_iterator ihit = hits.begin(); ihit != hits.end(); ihit++) {
312  collector.addProjected(**ihit, gdir);
313  }
314 }

References hfClusterShapes_cfi::hits.

◆ projectOnGluedDet() [2/6]

template<typename Collector >
void TkGluedMeasurementDet::projectOnGluedDet ( Collector &  collector,
std::vector< SiStripRecHit2D > const &  hits,
const GlobalVector gdir 
) const
private

Definition at line 329 of file TkGluedMeasurementDet.cc.

331  {
332  for (auto const& hit : hits)
333  collector.addProjected(hit, gdir);
334 }

References hfClusterShapes_cfi::hits.

◆ projectOnGluedDet() [3/6]

TkGluedMeasurementDet::RecHitContainer TkGluedMeasurementDet::projectOnGluedDet ( const RecHitContainer hits,
const TrajectoryStateOnSurface ts 
) const
private

Definition at line 295 of file TkGluedMeasurementDet.cc.

296  {
298  for (auto const& hit : hits) {
299  auto&& vl = projectedPos(*hit, fastGeomDet(), ts.globalParameters().momentum(), theCPE);
300  auto&& phit = std::make_shared<ProjectedSiStripRecHit2D>(
301  vl.first, vl.second, fastGeomDet(), static_cast<SiStripRecHit2D const&>(*hit));
302  result.push_back(std::move(phit));
303  }
304  return result;
305 }

References MeasurementDet::fastGeomDet(), TrajectoryStateOnSurface::globalParameters(), hfClusterShapes_cfi::hits, GlobalTrajectoryParameters::momentum(), eostools::move(), mps_fire::result, and theCPE.

◆ projectOnGluedDet() [4/6]

TkGluedMeasurementDet::RecHitContainer TkGluedMeasurementDet::projectOnGluedDet ( const std::vector< SiStripRecHit2D > &  hits,
const TrajectoryStateOnSurface ts 
) const
private

Definition at line 316 of file TkGluedMeasurementDet.cc.

317  {
319  for (auto const& hit : hits) {
320  auto&& vl = projectedPos(hit, fastGeomDet(), ts.globalParameters().momentum(), theCPE);
321  auto&& phit = std::make_shared<ProjectedSiStripRecHit2D>(
322  vl.first, vl.second, fastGeomDet(), static_cast<SiStripRecHit2D const&>(hit));
323  result.push_back(std::move(phit));
324  }
325  return result;
326 }

References MeasurementDet::fastGeomDet(), TrajectoryStateOnSurface::globalParameters(), hfClusterShapes_cfi::hits, GlobalTrajectoryParameters::momentum(), eostools::move(), mps_fire::result, and theCPE.

Referenced by collectRecHits().

◆ projectOnGluedDet() [5/6]

template<typename HitCollector >
void TkGluedMeasurementDet::projectOnGluedDet ( HitCollector &  collector,
const RecHitContainer hits,
const GlobalVector gdir 
) const
private

◆ projectOnGluedDet() [6/6]

template<typename HitCollector >
void TkGluedMeasurementDet::projectOnGluedDet ( HitCollector &  collector,
const std::vector< SiStripRecHit2D > &  hits,
const GlobalVector gdir 
) const
private

◆ rawId()

unsigned int TkGluedMeasurementDet::rawId ( ) const
inline

Definition at line 42 of file TkGluedMeasurementDet.h.

42 { return fastGeomDet().geographicalId(); }

References MeasurementDet::fastGeomDet(), and GeomDet::geographicalId().

◆ recHits() [1/2]

TkGluedMeasurementDet::RecHitContainer TkGluedMeasurementDet::recHits ( const TrajectoryStateOnSurface ts,
const MeasurementTrackerEvent data 
) const
overridevirtual

Implements MeasurementDet.

Definition at line 84 of file TkGluedMeasurementDet.cc.

85  {
87  HitCollectorForRecHits collector(&fastGeomDet(), theMatcher, theCPE, result);
88  collectRecHits(ts, data, collector);
89  return result;
90 }

References collectRecHits(), data, MeasurementDet::fastGeomDet(), mps_fire::result, theCPE, and theMatcher.

◆ recHits() [2/2]

bool TkGluedMeasurementDet::recHits ( SimpleHitContainer result,
const TrajectoryStateOnSurface stateOnThisDet,
const MeasurementEstimator est,
const MeasurementTrackerEvent data 
) const
overridevirtual

Reimplemented from MeasurementDet.

Definition at line 93 of file TkGluedMeasurementDet.cc.

96  {
97  if
98  UNLIKELY((!theMonoDet->isActive(data)) && (!theStereoDet->isActive(data))) return false;
99  auto oldSize = result.size();
100  HitCollectorForSimpleHits collector(&fastGeomDet(), theMatcher, theCPE, stateOnThisDet, est, result);
101  collectRecHits(stateOnThisDet, data, collector);
102 
103  return result.size() > oldSize;
104 }

References collectRecHits(), data, MeasurementDet::fastGeomDet(), TkStripMeasurementDet::isActive(), mps_fire::result, theCPE, theMatcher, theMonoDet, theStereoDet, and UNLIKELY.

◆ specificGeomDet()

const GluedGeomDet& TkGluedMeasurementDet::specificGeomDet ( ) const
inline

Definition at line 32 of file TkGluedMeasurementDet.h.

32 { return static_cast<GluedGeomDet const&>(fastGeomDet()); }

References MeasurementDet::fastGeomDet().

Referenced by collectRecHits(), and MeasurementTrackerImpl::initGluedDet().

◆ stereoDet()

const TkStripMeasurementDet* TkGluedMeasurementDet::stereoDet ( ) const
inline

Definition at line 40 of file TkGluedMeasurementDet.h.

40 { return theStereoDet; }

Referenced by init().

◆ testStrips()

bool TkGluedMeasurementDet::testStrips ( const TrajectoryStateOnSurface tsos,
const BoundPlane gluedPlane,
const TkStripMeasurementDet mdet 
) const
private

Test the strips on one of the two dets with projection.

Definition at line 373 of file TkGluedMeasurementDet.cc.

375  {
376  // from TrackingRecHitProjector
377  const GeomDet& det = mdet.fastGeomDet();
378  const BoundPlane& stripPlane = det.surface();
379 
380  //LocalPoint glp = tsos.localPosition();
382  /*LogDebug("TkStripMeasurementDet") <<
383  "Testing local pos glued: " << glp <<
384  " local err glued: " << tsos.localError().positionError() <<
385  " in? " << gluedPlane.bounds().inside(glp) <<
386  " in(3s)? " << gluedPlane.bounds().inside(glp, err, 3.0f);*/
387 
388  GlobalVector gdir = tsos.globalParameters().momentum();
389 
390  LocalPoint slp = stripPlane.toLocal(tsos.globalPosition());
391  LocalVector sld = stripPlane.toLocal(gdir);
392 
393  double delta = stripPlane.localZ(tsos.globalPosition());
394  LocalPoint pos = slp - sld * delta / sld.z();
395 
396  // now the error
397  LocalVector hitXAxis = stripPlane.toLocal(gluedPlane.toGlobal(LocalVector(1, 0, 0)));
398  if (stripPlane.normalVector().dot(gluedPlane.normalVector()) < 0) {
399  // the two planes are inverted, and the correlation element must change sign
400  err = LocalError(err.xx(), -err.xy(), err.yy());
401  }
402  LocalError rotatedError = err.rotate(hitXAxis.x(), hitXAxis.y());
403 
404  /* // This is probably meaningless
405  LogDebug("TkStripMeasurementDet") <<
406  "Testing local pos on strip (SLP): " << slp <<
407  " in? :" << stripPlane.bounds().inside(slp) <<
408  " in(3s)? :" << stripPlane.bounds().inside(slp, rotatedError, 3.0f);
409  // but it helps to test bugs in the formula for POS */
410  /*LogDebug("TkStripMeasurementDet") <<
411  "Testing local pos strip: " << pos <<
412  " in? " << stripPlane.bounds().inside(pos) <<
413  " in(3s)? " << stripPlane.bounds().inside(pos, rotatedError, 3.0f);*/
414 
415  // now we need to convert to MeasurementFrame
416  const StripTopology& topo = mdet.specificGeomDet().specificTopology();
417  float utraj = topo.measurementPosition(pos).x();
418  float uerr = std::sqrt(topo.measurementError(pos, rotatedError).uu());
419  return mdet.testStrips(utraj, uerr);
420 }

References dumpMFGeometry_cfg::delta, runTheMatrix::err, MeasurementDet::fastGeomDet(), TrajectoryStateOnSurface::globalParameters(), TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::localError(), Topology::measurementError(), Topology::measurementPosition(), GlobalTrajectoryParameters::momentum(), LocalTrajectoryError::positionError(), TkStripMeasurementDet::specificGeomDet(), StripGeomDetUnit::specificTopology(), mathSSE::sqrt(), GeomDet::surface(), TkStripMeasurementDet::testStrips(), MeasurementError::uu(), PV2DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by measurements().

Member Data Documentation

◆ theCPE

const StripClusterParameterEstimator* TkGluedMeasurementDet::theCPE
private

◆ theMatcher

const SiStripRecHitMatcher* TkGluedMeasurementDet::theMatcher
private

Definition at line 55 of file TkGluedMeasurementDet.h.

Referenced by collectRecHits(), measurements(), and recHits().

◆ theMonoDet

const TkStripMeasurementDet* TkGluedMeasurementDet::theMonoDet
private

Definition at line 57 of file TkGluedMeasurementDet.h.

Referenced by collectRecHits(), init(), measurements(), and recHits().

◆ theStereoDet

const TkStripMeasurementDet* TkGluedMeasurementDet::theStereoDet
private

Definition at line 58 of file TkGluedMeasurementDet.h.

Referenced by collectRecHits(), init(), measurements(), and recHits().

◆ theTopology

const TrackerTopology* TkGluedMeasurementDet::theTopology
private

Definition at line 59 of file TkGluedMeasurementDet.h.

Referenced by init(), and measurements().

Vector3DBase
Definition: Vector3DBase.h:8
mps_fire.i
i
Definition: mps_fire.py:355
TkStripMeasurementDet::simpleRecHits
void simpleRecHits(const TrajectoryStateOnSurface &ts, const MeasurementTrackerEvent &data, std::vector< SiStripRecHit2D > &result) const
Definition: TkStripMeasurementDet.cc:219
GeomDet
Definition: GeomDet.h:27
TkStripMeasurementDet::specificGeomDet
const StripGeomDetUnit & specificGeomDet() const
Definition: TkStripMeasurementDet.h:147
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
MeasurementDet::RecHitContainer
TrackingRecHit::ConstRecHitContainer RecHitContainer
Definition: MeasurementDet.h:19
TkGluedMeasurementDet::monoDet
const TkStripMeasurementDet * monoDet() const
Definition: TkGluedMeasurementDet.h:39
LocalTrajectoryError::positionError
LocalError positionError() const
Definition: LocalTrajectoryError.h:81
LocalError::xy
float xy() const
Definition: LocalError.h:23
MeasurementDet::MeasurementDet
MeasurementDet(const GeomDet *gdet)
Definition: MeasurementDet.h:23
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
qjetsadder_cfi.cutoff
cutoff
Definition: qjetsadder_cfi.py:11
TrackingRecHit::hit
virtual TrackingRecHit const * hit() const
Definition: TrackingRecHit.h:75
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
gather_cfg.cout
cout
Definition: gather_cfg.py:144
pos
Definition: PixelAliasList.h:18
take_address
Definition: TkGluedMeasurementDet.cc:154
TkGluedMeasurementDet::theStereoDet
const TkStripMeasurementDet * theStereoDet
Definition: TkGluedMeasurementDet.h:58
SiStripRecHit2D
Definition: SiStripRecHit2D.h:7
TkStripMeasurementDet::isActive
bool isActive(const MeasurementTrackerEvent &data) const override
Is this module active in reconstruction? It must be both 'setActiveThisEvent' and 'setActive'.
Definition: TkStripMeasurementDet.h:105
TkGluedMeasurementDet::collectRecHits
void collectRecHits(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data, Collector &coll) const
Definition: TkGluedMeasurementDet.cc:170
ProjectedSiStripRecHit2D
Definition: ProjectedSiStripRecHit2D.h:8
F
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:163
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
TkGluedMeasurementDet::theTopology
const TrackerTopology * theTopology
Definition: TkGluedMeasurementDet.h:59
MeasurementDet::position
const Surface::PositionType & position() const
Definition: MeasurementDet.h:85
UNLIKELY
#define UNLIKELY(x)
Definition: Likely.h:21
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
MeasurementDetException
Common base class.
Definition: MeasurementDetException.h:12
MeasurementEstimator::minPt2ForHitRecoveryInGluedDet
float minPt2ForHitRecoveryInGluedDet() const
Definition: MeasurementEstimator.h:72
LocalError::xx
float xx() const
Definition: LocalError.h:22
TrajectoryStateOnSurface::localDirection
LocalVector localDirection() const
Definition: TrajectoryStateOnSurface.h:76
TrajectoryStateOnSurface::hasError
bool hasError() const
Definition: TrajectoryStateOnSurface.h:56
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
Topology::measurementError
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const =0
HcalDetIdTransform::transform
unsigned transform(const HcalDetId &id, unsigned transformCode)
Definition: HcalDetIdTransform.cc:7
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Point3DBase< float, LocalTag >
GlobalTrajectoryParameters::momentum
GlobalVector momentum() const
Definition: GlobalTrajectoryParameters.h:65
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
RecHitPropagator::propagate
TrajectoryStateOnSurface propagate(const TrackingRecHit &hit, const Plane &plane, const TrajectoryStateOnSurface &ts) const
Definition: RecHitPropagator.cc:5
MeasurementDet::surface
const Surface & surface() const
Definition: MeasurementDet.h:83
TkStripMeasurementDet::hasAllGoodChannels
bool hasAllGoodChannels() const
does this module have at least one bad strip, APV or channel?
Definition: TkStripMeasurementDet.h:227
GeomDet::geographicalId
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:64
TrajectoryStateOnSurface::localPosition
LocalPoint localPosition() const
Definition: TrajectoryStateOnSurface.h:74
TkGluedMeasurementDet::hasBadComponents
bool hasBadComponents(const TrajectoryStateOnSurface &tsos, const MeasurementTrackerEvent &data) const override
return TRUE if at least one of the mono and stereo components has badChannels
Definition: TkGluedMeasurementDet.h:50
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
runTheMatrix.err
err
Definition: runTheMatrix.py:288
LocalError
Definition: LocalError.h:12
PV2DBase::x
T x() const
Definition: PV2DBase.h:43
dumpMFGeometry_cfg.delta
delta
Definition: dumpMFGeometry_cfg.py:25
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
TkGluedMeasurementDet::theCPE
const StripClusterParameterEstimator * theCPE
Definition: TkGluedMeasurementDet.h:56
Topology::measurementPosition
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
TkStripMeasurementDet::testStrips
bool testStrips(float utraj, float uerr) const
return true if there are 'enough' good strips in the utraj +/- 3 uerr range.
Definition: TkStripMeasurementDet.cc:274
TkGluedMeasurementDet::stereoDet
const TkStripMeasurementDet * stereoDet() const
Definition: TkGluedMeasurementDet.h:40
cmsLHEtoEOSManager.l
l
Definition: cmsLHEtoEOSManager.py:193
TrackingRecHit
Definition: TrackingRecHit.h:21
TkGluedMeasurementDet::theMatcher
const SiStripRecHitMatcher * theMatcher
Definition: TkGluedMeasurementDet.h:55
TrajectoryStateOnSurface::globalMomentum
GlobalVector globalMomentum() const
Definition: TrajectoryStateOnSurface.h:66
mag
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Definition: Basic3DVectorLD.h:127
TrackerTopology::tobLayer
unsigned int tobLayer(const DetId &id) const
Definition: TrackerTopology.h:147
eostools.move
def move(src, dest)
Definition: eostools.py:511
TkGluedMeasurementDet::theMonoDet
const TkStripMeasurementDet * theMonoDet
Definition: TkGluedMeasurementDet.h:57
TkGluedMeasurementDet::testStrips
bool testStrips(const TrajectoryStateOnSurface &tsos, const BoundPlane &gluedPlane, const TkStripMeasurementDet &mdet) const
Test the strips on one of the two dets with projection.
Definition: TkGluedMeasurementDet.cc:373
SiStripRecHitMatcher::SimpleHitCollection
std::vector< const SiStripRecHit2D * > SimpleHitCollection
Definition: SiStripRecHitMatcher.h:31
GloballyPositioned::toLocal
LocalPoint toLocal(const GlobalPoint &gp) const
Definition: GloballyPositioned.h:98
MeasurementDet::theInactiveHit
TrackingRecHit::ConstRecHitPointer theInactiveHit
Definition: MeasurementDet.h:95
TkStripMeasurementDet::recHits
RecHitContainer recHits(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const override
Definition: TkStripMeasurementDet.cc:39
BoundPlane
TkGluedMeasurementDet::checkHitProjection
void checkHitProjection(const TrackingRecHit &hit, const TrajectoryStateOnSurface &ts, const GeomDet &det) const
Definition: TkGluedMeasurementDet.cc:347
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
StripGeomDetUnit::specificTopology
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
Definition: StripGeomDetUnit.cc:17
mps_fire.result
result
Definition: mps_fire.py:303
MeasurementError::uu
float uu() const
Definition: MeasurementError.h:14
TrajectoryStateOnSurface::globalParameters
const GlobalTrajectoryParameters & globalParameters() const
Definition: TrajectoryStateOnSurface.h:64
MeasurementDet::fastGeomDet
const GeomDet & fastGeomDet() const
Definition: MeasurementDet.h:80
TrajectoryStateOnSurface::localError
const LocalTrajectoryError & localError() const
Definition: TrajectoryStateOnSurface.h:77
StripTopology
Definition: StripTopology.h:11
MeasurementDet::theMissingHit
TrackingRecHit::ConstRecHitPointer theMissingHit
Definition: MeasurementDet.h:94
LocalError::yy
float yy() const
Definition: LocalError.h:24
RecHitPropagator
Definition: RecHitPropagator.h:10
TkGluedMeasurementDet::projectOnGluedDet
RecHitContainer projectOnGluedDet(const std::vector< SiStripRecHit2D > &hits, const TrajectoryStateOnSurface &ts) const
Definition: TkGluedMeasurementDet.cc:316
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
PV3DBase::perp2
T perp2() const
Definition: PV3DBase.h:68
hit
Definition: SiStripHitEffFromCalibTree.cc:88
SiStripRecHitMatcher::match
std::unique_ptr< SiStripMatchedRecHit2D > match(const SiStripRecHit2D *monoRH, const SiStripRecHit2D *stereoRH, const GluedGeomDet *gluedDet, LocalVector trackdirection, bool force) const
Definition: SiStripRecHitMatcher.cc:238
TkGluedMeasurementDet::specificGeomDet
const GluedGeomDet & specificGeomDet() const
Definition: TkGluedMeasurementDet.h:32
MeasurementDet::geomDet
virtual const GeomDet & geomDet() const
Definition: MeasurementDet.h:81