CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
TkGluedMeasurementDet Class Reference

#include <TkGluedMeasurementDet.h>

Inheritance diagram for TkGluedMeasurementDet:
MeasurementDet

Classes

class  HitCollectorForFastMeasurements
 
class  HitCollectorForRecHits
 

Public Member Functions

virtual std::vector
< TrajectoryMeasurement
fastMeasurements (const TrajectoryStateOnSurface &stateOnThisDet, const TrajectoryStateOnSurface &startingState, const Propagator &, const MeasurementEstimator &) const
 
bool hasBadComponents (const TrajectoryStateOnSurface &tsos) const
 return TRUE if at least one of the mono and stereo components has badChannels More...
 
void init (const MeasurementDet *monoDet, const MeasurementDet *stereoDet)
 
bool isActive () const
 return TRUE if both mono and stereo components are active More...
 
const TkStripMeasurementDetmonoDet () const
 
template<typename Collector >
void projectOnGluedDet (Collector &collector, const RecHitContainer &hits, const GlobalVector &gdir) const
 
virtual RecHitContainer recHits (const TrajectoryStateOnSurface &) const
 
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
 
virtual const GeomDetgeomDet () const
 
 MeasurementDet (const GeomDet *gdet)
 
const Surface::PositionTypeposition () const
 
const BoundSurfacesurface () const
 

Private Member Functions

void checkHitProjection (const TransientTrackingRecHit &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 &, Collector &coll) const
 
template<typename Collector >
void doubleMatch (const TrajectoryStateOnSurface &ts, Collector &collector) const
 
RecHitContainer projectOnGluedDet (const RecHitContainer &hits, const TrajectoryStateOnSurface &ts) const
 
template<typename HitCollector >
void projectOnGluedDet (HitCollector &collector, const RecHitContainer &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
StripClusterParameterEstimator
theCPE
 
const SiStripRecHitMatchertheMatcher
 
const TkStripMeasurementDettheMonoDet
 
const TkStripMeasurementDettheStereoDet
 

Additional Inherited Members

- Public Types inherited from MeasurementDet
typedef
TransientTrackingRecHit::ConstRecHitContainer 
RecHitContainer
 

Detailed Description

Definition at line 19 of file TkGluedMeasurementDet.h.

Constructor & Destructor Documentation

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

Definition at line 23 of file TkGluedMeasurementDet.cc.

25  :
26  MeasurementDet(gdet),
27  theMatcher(matcher), theCPE(cpe),
28  theMonoDet(nullptr), theStereoDet(nullptr)
29 {}
const TkStripMeasurementDet * theMonoDet
MeasurementDet(const GeomDet *gdet)
const SiStripRecHitMatcher * theMatcher
const TkStripMeasurementDet * theStereoDet
const StripClusterParameterEstimator * theCPE

Member Function Documentation

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

Definition at line 201 of file TkGluedMeasurementDet.cc.

References gather_cfg::cout, prof2calltree::cutoff, TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localPosition(), mag(), max(), LocalTrajectoryError::positionError(), trackerHitRTTI::proj, TrackingRecHitProjector< ResultingHit >::project(), RecHitPropagator::propagate(), GeomDet::surface(), LocalError::xx(), LocalError::xy(), and LocalError::yy().

Referenced by checkProjection().

204 {
206  TransientTrackingRecHit::RecHitPointer projectedHit = proj.project( hit, det, ts);
207 
208  RecHitPropagator prop;
209  TrajectoryStateOnSurface propState = prop.propagate( hit, det.surface(), ts);
210 
211  if ((projectedHit->localPosition()-propState.localPosition()).mag() > 0.0001) {
212  cout << "PROBLEM: projected and propagated hit positions differ by "
213  << (projectedHit->localPosition()-propState.localPosition()).mag() << endl;
214  }
215 
216  LocalError le1 = projectedHit->localPositionError();
217  LocalError le2 = propState.localError().positionError();
218  double eps = 1.e-5;
219  double cutoff = 1.e-4; // if element below cutoff, use absolute instead of relative accuracy
220  double maxdiff = std::max( std::max( fabs(le1.xx() - le2.xx())/(cutoff+le1.xx()),
221  fabs(le1.xy() - le2.xy())/(cutoff+fabs(le1.xy()))),
222  fabs(le1.yy() - le2.yy())/(cutoff+le1.xx()));
223  if (maxdiff > eps) {
224  cout << "PROBLEM: projected and propagated hit errors differ by "
225  << maxdiff << endl;
226  }
227 
228 }
float xx() const
Definition: LocalError.h:24
TrajectoryStateOnSurface propagate(const TransientTrackingRecHit &hit, const Plane &plane, const TrajectoryStateOnSurface &ts) const
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
LocalError positionError() const
RecHitPointer project(const TransientTrackingRecHit &hit, const GeomDet &det, const TrajectoryStateOnSurface &ts) const
float xy() const
Definition: LocalError.h:25
float yy() const
Definition: LocalError.h:26
const T & max(const T &a, const T &b)
const LocalTrajectoryError & localError() const
const BoundPlane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:35
tuple cout
Definition: gather_cfg.py:121
void TkGluedMeasurementDet::checkProjection ( const TrajectoryStateOnSurface ts,
const RecHitContainer monoHits,
const RecHitContainer stereoHits 
) const
private

Definition at line 189 of file TkGluedMeasurementDet.cc.

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

192 {
193  for (RecHitContainer::const_iterator i=monoHits.begin(); i != monoHits.end(); ++i) {
194  checkHitProjection( **i, ts, fastGeomDet());
195  }
196  for (RecHitContainer::const_iterator i=stereoHits.begin(); i != stereoHits.end(); ++i) {
197  checkHitProjection( **i, ts, fastGeomDet());
198  }
199 }
int i
Definition: DBlmapReader.cc:9
const GeomDet & fastGeomDet() const
void checkHitProjection(const TransientTrackingRecHit &hit, const TrajectoryStateOnSurface &ts, const GeomDet &det) const
template<typename Collector >
void TkGluedMeasurementDet::collectRecHits ( const TrajectoryStateOnSurface ts,
Collector &  coll 
) const
private

Definition at line 63 of file TkGluedMeasurementDet.cc.

References TrajectoryStateOnSurface::globalParameters(), 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 create_public_pileup_plots::transform.

Referenced by fastMeasurements(), and recHits().

64 {
65  //------ WARNING: here ts is used as it is on the mono/stereo surface.
66  //----- A further propagation is necessary.
67  //----- To limit the problem, the SimpleCPE should be used
68  RecHitContainer monoHits = theMonoDet->recHits( ts);
69  GlobalVector glbDir = (ts.isValid() ? ts.globalParameters().momentum() : position()-GlobalPoint(0,0,0));
70 
71  //edm::LogWarning("TkGluedMeasurementDet::recHits") << "Query-for-detid-" << theGeomDet->geographicalId().rawId();
72 
73  //checkProjection(ts, monoHits, stereoHits);
74 
75  if (monoHits.empty()) {
76  // make stereo TTRHs and project them
77  projectOnGluedDet( collector, theStereoDet->recHits(ts), glbDir);
78  } else {
79  // collect simple stereo hits
80  static std::vector<SiStripRecHit2D> simpleSteroHitsByValue;
81  simpleSteroHitsByValue.clear();
82  theStereoDet->simpleRecHits(ts, simpleSteroHitsByValue);
83 
84  if (simpleSteroHitsByValue.empty()) {
85  projectOnGluedDet( collector, monoHits, glbDir);
86  } else {
87 
88  LocalVector tkDir = (ts.isValid() ? ts.localDirection() : surface().toLocal( position()-GlobalPoint(0,0,0)));
90  vsStereoHits.resize(simpleSteroHitsByValue.size());
91  std::transform(simpleSteroHitsByValue.begin(), simpleSteroHitsByValue.end(), vsStereoHits.begin(), take_address());
92 
93  // convert mono hits to type expected by matcher
94  for (RecHitContainer::const_iterator monoHit = monoHits.begin();
95  monoHit != monoHits.end(); ++monoHit) {
96  const TrackingRecHit* tkhit = (**monoHit).hit();
97  const SiStripRecHit2D* verySpecificMonoHit = reinterpret_cast<const SiStripRecHit2D*>(tkhit);
98  theMatcher->match( verySpecificMonoHit, vsStereoHits.begin(), vsStereoHits.end(),
99  collector.collector(), &specificGeomDet(), tkDir);
100 
101  if (collector.hasNewMatchedHits()) {
102  collector.clearNewMatchedHitsFlag();
103  } else {
104  collector.addProjected( **monoHit, glbDir );
105  }
106  } // loop on mono hit
107  }
108  //GIO// std::cerr << "TkGluedMeasurementDet hits " << monoHits.size() << "/" << stereoHits.size() << " => " << result.size() << std::endl;
109  }
110 }
const TkStripMeasurementDet * theMonoDet
SiStripMatchedRecHit2D * match(const SiStripRecHit2D *monoRH, const SiStripRecHit2D *stereoRH, const GluedGeomDet *gluedDet, LocalVector trackdirection) const
LocalVector localDirection() const
TransientTrackingRecHit::ConstRecHitContainer RecHitContainer
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
const BoundSurface & surface() const
virtual RecHitContainer recHits(const TrajectoryStateOnSurface &) const
LocalPoint toLocal(const GlobalPoint &gp) const
const GluedGeomDet & specificGeomDet() const
const Surface::PositionType & position() const
const SiStripRecHitMatcher * theMatcher
const GlobalTrajectoryParameters & globalParameters() const
std::vector< const SiStripRecHit2D * > SimpleHitCollection
const TkStripMeasurementDet * theStereoDet
void simpleRecHits(const TrajectoryStateOnSurface &ts, std::vector< SiStripRecHit2D > &result) const
RecHitContainer projectOnGluedDet(const RecHitContainer &hits, const TrajectoryStateOnSurface &ts) const
template<typename Collector >
void TkGluedMeasurementDet::doubleMatch ( const TrajectoryStateOnSurface ts,
Collector &  collector 
) const
private
std::vector< TrajectoryMeasurement > TkGluedMeasurementDet::fastMeasurements ( const TrajectoryStateOnSurface stateOnThisDet,
const TrajectoryStateOnSurface startingState,
const Propagator ,
const MeasurementEstimator  
) const
virtual

faster version in case the TrajectoryState on the surface of the Det is already available. The first TrajectoryStateOnSurface is on the surface of this Det, and the second TrajectoryStateOnSurface is the statrting state, usually not on the surface of this Det. The stateOnThisDet should the result of
prop.propagate( startingState, this->surface())

Implements MeasurementDet.

Definition at line 114 of file TkGluedMeasurementDet.cc.

References InvalidTransientRecHit::build(), collectRecHits(), F(), MeasurementDet::fastGeomDet(), MeasurementDet::geomDet(), TkStripMeasurementDet::hasAllGoodChannels(), TrajectoryStateOnSurface::hasError(), TrackingRecHit::inactive, TkStripMeasurementDet::isActive(), query::result, python.multivaluedict::sort(), GeomDet::surface(), testStrips(), theCPE, theMatcher, theMonoDet, and theStereoDet.

118 {
119  std::vector<TrajectoryMeasurement> result;
120  if (theMonoDet->isActive() || theStereoDet->isActive()) {
121 
122  HitCollectorForFastMeasurements collector( &fastGeomDet(), theMatcher, theCPE, stateOnThisDet, est, result);
123  collectRecHits(stateOnThisDet, collector);
124 
125  if ( result.empty()) {
126  //LogDebug("TkStripMeasurementDet") << "No hit found on TkGlued. Testing strips... ";
127  const BoundPlane &gluedPlane = geomDet().surface();
128  if ( // sorry for the big IF, but I want to exploit short-circuiting of logic
129  stateOnThisDet.hasError() && ( /* do this only if the state has uncertainties, otherwise it will throw
130  (states without uncertainties are passed to this code from seeding */
131  (theMonoDet->isActive() &&
133  testStrips(stateOnThisDet,gluedPlane,*theMonoDet)
134  )
135  ) /*Mono OK*/ ||
136  (theStereoDet->isActive() &&
138  testStrips(stateOnThisDet,gluedPlane,*theStereoDet)
139  )
140  ) /*Stereo OK*/
141  ) /* State has errors */
142  ) {
143  result.push_back( TrajectoryMeasurement( stateOnThisDet,
145  } else {
146  result.push_back( TrajectoryMeasurement(stateOnThisDet,
148  }
149  } else {
150  // sort results according to estimator value
151  if ( result.size() > 1) {
152  sort( result.begin(), result.end(), TrajMeasLessEstim());
153  }
154  }
155  } else {
156  // LogDebug("TkStripMeasurementDet") << " DetID " << geomDet().geographicalId().rawId() << " (glued) fully inactive";
157  result.push_back( TrajectoryMeasurement( stateOnThisDet,
159  0.F));
160  }
161  return result;
162 
163 }
bool testStrips(const TrajectoryStateOnSurface &tsos, const BoundPlane &gluedPlane, const TkStripMeasurementDet &mdet) const
Test the strips on one of the two dets with projection.
const TkStripMeasurementDet * theMonoDet
static RecHitPointer build(const GeomDet *geom, Type type=TrackingRecHit::missing, const DetLayer *layer=0)
void collectRecHits(const TrajectoryStateOnSurface &, Collector &coll) const
virtual const GeomDet & geomDet() const
const GeomDet & fastGeomDet() const
tuple result
Definition: query.py:137
bool hasAllGoodChannels() const
does this module have at least one bad strip, APV or channel?
const SiStripRecHitMatcher * theMatcher
const TkStripMeasurementDet * theStereoDet
const BoundPlane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:35
bool isActive() const
Is this module active in reconstruction? It must be both &#39;setActiveThisEvent&#39; and &#39;setActive&#39;...
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:281
const StripClusterParameterEstimator * theCPE
bool TkGluedMeasurementDet::hasBadComponents ( const TrajectoryStateOnSurface tsos) const
inlinevirtual

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

Implements MeasurementDet.

Definition at line 43 of file TkGluedMeasurementDet.h.

References monoDet(), and stereoDet().

43  {
44  return (monoDet()->hasBadComponents(tsos) || stereoDet()->hasBadComponents(tsos));}
const TkStripMeasurementDet * monoDet() const
bool hasBadComponents(const TrajectoryStateOnSurface &tsos) const
return TRUE if at least one of the mono and stereo components has badChannels
const TkStripMeasurementDet * stereoDet() const
void TkGluedMeasurementDet::init ( const MeasurementDet monoDet,
const MeasurementDet stereoDet 
)

Definition at line 31 of file TkGluedMeasurementDet.cc.

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

Referenced by MeasurementTrackerImpl::initGluedDet().

32  {
33  theMonoDet = dynamic_cast<const TkStripMeasurementDet *>(monoDet);
34  theStereoDet = dynamic_cast<const TkStripMeasurementDet *>(stereoDet);
35 
36  if ((theMonoDet == 0) || (theStereoDet == 0)) {
37  throw MeasurementDetException("TkGluedMeasurementDet ERROR: Trying to glue a det which is not a TkStripMeasurementDet");
38  }
39 }
const TkStripMeasurementDet * theMonoDet
const TkStripMeasurementDet * monoDet() const
const TkStripMeasurementDet * theStereoDet
const TkStripMeasurementDet * stereoDet() const
bool TkGluedMeasurementDet::isActive ( ) const
inlinevirtual

return TRUE if both mono and stereo components are active

Implements MeasurementDet.

Definition at line 40 of file TkGluedMeasurementDet.h.

References TkStripMeasurementDet::isActive(), monoDet(), and stereoDet().

40 {return monoDet()->isActive() && stereoDet()->isActive(); }
const TkStripMeasurementDet * monoDet() const
bool isActive() const
Is this module active in reconstruction? It must be both &#39;setActiveThisEvent&#39; and &#39;setActive&#39;...
const TkStripMeasurementDet * stereoDet() const
const TkStripMeasurementDet* TkGluedMeasurementDet::monoDet ( ) const
inline

Definition at line 36 of file TkGluedMeasurementDet.h.

References theMonoDet.

Referenced by hasBadComponents(), OnDemandMeasurementTracker::idToDet(), init(), and isActive().

36 { return theMonoDet;}
const TkStripMeasurementDet * theMonoDet
TkGluedMeasurementDet::RecHitContainer TkGluedMeasurementDet::projectOnGluedDet ( const RecHitContainer hits,
const TrajectoryStateOnSurface ts 
) const
private

Definition at line 166 of file TkGluedMeasurementDet.cc.

References MeasurementDet::fastGeomDet(), trackerHitRTTI::proj, TrackingRecHitProjector< ResultingHit >::project(), and query::result.

Referenced by collectRecHits().

168 {
169  if (hits.empty()) return hits;
172  for ( RecHitContainer::const_iterator ihit = hits.begin(); ihit!=hits.end(); ihit++) {
173  result.push_back( proj.project( **ihit, fastGeomDet(), ts));
174  }
175  return result;
176 }
TransientTrackingRecHit::ConstRecHitContainer RecHitContainer
const GeomDet & fastGeomDet() const
RecHitPointer project(const TransientTrackingRecHit &hit, const GeomDet &det, const TrajectoryStateOnSurface &ts) const
tuple result
Definition: query.py:137
template<typename HitCollector >
void TkGluedMeasurementDet::projectOnGluedDet ( HitCollector &  collector,
const RecHitContainer hits,
const GlobalVector gdir 
) const
private
template<typename Collector >
void TkGluedMeasurementDet::projectOnGluedDet ( Collector &  collector,
const RecHitContainer hits,
const GlobalVector gdir 
) const

Definition at line 180 of file TkGluedMeasurementDet.cc.

183 {
184  for ( RecHitContainer::const_iterator ihit = hits.begin(); ihit!=hits.end(); ihit++) {
185  collector.addProjected( **ihit, gdir );
186  }
187 }
TkGluedMeasurementDet::RecHitContainer TkGluedMeasurementDet::recHits ( const TrajectoryStateOnSurface ts) const
virtual

Implements MeasurementDet.

Definition at line 42 of file TkGluedMeasurementDet.cc.

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

43 {
44 
46  HitCollectorForRecHits collector( &fastGeomDet(), theMatcher, theCPE, result );
47  collectRecHits(ts, collector);
48  return result;
49 }
void collectRecHits(const TrajectoryStateOnSurface &, Collector &coll) const
TransientTrackingRecHit::ConstRecHitContainer RecHitContainer
const GeomDet & fastGeomDet() const
tuple result
Definition: query.py:137
const SiStripRecHitMatcher * theMatcher
const StripClusterParameterEstimator * theCPE
const GluedGeomDet& TkGluedMeasurementDet::specificGeomDet ( ) const
inline

Definition at line 28 of file TkGluedMeasurementDet.h.

References compareJSON::const, and MeasurementDet::fastGeomDet().

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

28 {return static_cast<GluedGeomDet const&>(fastGeomDet());}
const GeomDet & fastGeomDet() const
string const
Definition: compareJSON.py:14
const TkStripMeasurementDet* TkGluedMeasurementDet::stereoDet ( ) const
inline

Definition at line 37 of file TkGluedMeasurementDet.h.

References theStereoDet.

Referenced by hasBadComponents(), OnDemandMeasurementTracker::idToDet(), init(), and isActive().

37 { return theStereoDet;}
const TkStripMeasurementDet * theStereoDet
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 231 of file TkGluedMeasurementDet.cc.

References delta, Vector3DBase< T, FrameTag >::dot(), MeasurementDet::fastGeomDet(), TrajectoryStateOnSurface::globalParameters(), TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::localError(), Plane::localZ(), Topology::measurementError(), Topology::measurementPosition(), GlobalTrajectoryParameters::momentum(), Plane::normalVector(), pos, LocalTrajectoryError::positionError(), LocalError::rotate(), TkStripMeasurementDet::specificGeomDet(), StripGeomDetUnit::specificTopology(), mathSSE::sqrt(), GeomDet::surface(), TkStripMeasurementDet::testStrips(), Surface::toGlobal(), GloballyPositioned< T >::toLocal(), MeasurementError::uu(), PV2DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::x(), LocalError::xx(), LocalError::xy(), PV3DBase< T, PVType, FrameType >::y(), LocalError::yy(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by fastMeasurements().

233  {
234  // from TrackingRecHitProjector
235  const GeomDet &det = mdet.fastGeomDet();
236  const BoundPlane &stripPlane = det.surface();
237 
238  //LocalPoint glp = tsos.localPosition();
239  LocalError err = tsos.localError().positionError();
240  /*LogDebug("TkStripMeasurementDet") <<
241  "Testing local pos glued: " << glp <<
242  " local err glued: " << tsos.localError().positionError() <<
243  " in? " << gluedPlane.bounds().inside(glp) <<
244  " in(3s)? " << gluedPlane.bounds().inside(glp, err, 3.0f);*/
245 
246  GlobalVector gdir = tsos.globalParameters().momentum();
247 
248  LocalPoint slp = stripPlane.toLocal(tsos.globalPosition());
249  LocalVector sld = stripPlane.toLocal(gdir);
250 
251  double delta = stripPlane.localZ( tsos.globalPosition());
252  LocalPoint pos = slp - sld * delta/sld.z();
253 
254 
255  // now the error
256  LocalVector hitXAxis = stripPlane.toLocal( gluedPlane.toGlobal( LocalVector(1,0,0)));
257  if (stripPlane.normalVector().dot( gluedPlane.normalVector()) < 0) {
258  // the two planes are inverted, and the correlation element must change sign
259  err = LocalError( err.xx(), -err.xy(), err.yy());
260  }
261  LocalError rotatedError = err.rotate( hitXAxis.x(), hitXAxis.y());
262 
263  /* // This is probably meaningless
264  LogDebug("TkStripMeasurementDet") <<
265  "Testing local pos on strip (SLP): " << slp <<
266  " in? :" << stripPlane.bounds().inside(slp) <<
267  " in(3s)? :" << stripPlane.bounds().inside(slp, rotatedError, 3.0f);
268  // but it helps to test bugs in the formula for POS */
269  /*LogDebug("TkStripMeasurementDet") <<
270  "Testing local pos strip: " << pos <<
271  " in? " << stripPlane.bounds().inside(pos) <<
272  " in(3s)? " << stripPlane.bounds().inside(pos, rotatedError, 3.0f);*/
273 
274  // now we need to convert to MeasurementFrame
275  const StripTopology &topo = mdet.specificGeomDet().specificTopology();
276  float utraj = topo.measurementPosition(pos).x();
277  float uerr = std::sqrt(topo.measurementError(pos,rotatedError).uu());
278  return mdet.testStrips(utraj, uerr);
279 }
dbl * delta
Definition: mlp_gen.cc:36
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:78
float xx() const
Definition: LocalError.h:24
GlobalVector normalVector() const
Definition: Plane.h:47
T y() const
Definition: PV3DBase.h:62
float localZ(const GlobalPoint &gp) const
Fast access to distance from plane for a point.
Definition: Plane.h:52
GlobalPoint globalPosition() const
PreciseFloatType< T, U >::Type dot(const Vector3DBase< U, FrameTag > &v) const
Definition: Vector3DBase.h:107
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
LocalError positionError() const
const GeomDet & fastGeomDet() const
float xy() const
Definition: LocalError.h:25
virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const =0
float yy() const
Definition: LocalError.h:26
T sqrt(T t)
Definition: SSEVec.h:46
LocalPoint toLocal(const GlobalPoint &gp) const
T z() const
Definition: PV3DBase.h:63
float uu() const
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
const LocalTrajectoryError & localError() const
const GlobalTrajectoryParameters & globalParameters() const
const StripGeomDetUnit & specificGeomDet() const
const BoundPlane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:35
bool testStrips(float utraj, float uerr) const
return true if there are &#39;enough&#39; good strips in the utraj +/- 3 uerr range.
LocalError rotate(float x, float y) const
Return a new LocalError, rotated by an angle defined by the direction (x,y)
Definition: LocalError.h:39
T x() const
Definition: PV2DBase.h:44
T x() const
Definition: PV3DBase.h:61

Member Data Documentation

const StripClusterParameterEstimator* TkGluedMeasurementDet::theCPE
private

Definition at line 48 of file TkGluedMeasurementDet.h.

Referenced by fastMeasurements(), and recHits().

const SiStripRecHitMatcher* TkGluedMeasurementDet::theMatcher
private

Definition at line 47 of file TkGluedMeasurementDet.h.

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

const TkStripMeasurementDet* TkGluedMeasurementDet::theMonoDet
private

Definition at line 49 of file TkGluedMeasurementDet.h.

Referenced by collectRecHits(), fastMeasurements(), init(), and monoDet().

const TkStripMeasurementDet* TkGluedMeasurementDet::theStereoDet
private

Definition at line 50 of file TkGluedMeasurementDet.h.

Referenced by collectRecHits(), fastMeasurements(), init(), and stereoDet().