![]() |
![]() |
#include <RecoTracker/TkDetLayers/interface/PixelRod.h>
Public Types | |
typedef PeriodicBinFinderInZ < float > | BinFinderType |
Public Member Functions | |
virtual std::pair< bool, TrajectoryStateOnSurface > | compatible (const TrajectoryStateOnSurface &ts, const Propagator &, const MeasurementEstimator &) const |
tests the geometrical compatibility of the Det with the predicted state. | |
virtual void | compatibleDetsV (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetWithState > &result) const |
virtual const std::vector < const GeometricSearchDet * > & | components () const |
Returns basic components, if any. | |
virtual void | groupedCompatibleDetsV (const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &, std::vector< DetGroup > &) const |
virtual bool | hasGroups () const |
PixelRod (std::vector< const GeomDet * > &theDets) | |
~PixelRod () | |
Private Attributes | |
BinFinderType | theBinFinder |
Definition at line 11 of file PixelRod.h.
typedef PeriodicBinFinderInZ<float> PixelRod::BinFinderType |
Definition at line 13 of file PixelRod.h.
PixelRod::PixelRod | ( | std::vector< const GeomDet * > & | theDets | ) |
PixelRod::~PixelRod | ( | ) |
pair< bool, TrajectoryStateOnSurface > PixelRod::compatible | ( | const TrajectoryStateOnSurface & | ts, | |
const Propagator & | , | |||
const MeasurementEstimator & | ||||
) | const [virtual] |
tests the geometrical compatibility of the Det with the predicted state.
The FreeTrajectoryState argument is propagated to the Det surface using the Propagator argument. The resulting TrajectoryStateOnSurface is tested for compatibility with the surface bounds. If compatible, a std::pair< true, propagatedState> is returned. If the propagation fails, or if the state is not compatible, a std::pair< false, propagatedState> is returned.
Implements GeometricSearchDet.
Definition at line 45 of file PixelRod.cc.
00046 { 00047 edm::LogError("TkDetLayers") << "temporary dummy implementation of PixelRod::compatible()!!" ; 00048 return pair<bool,TrajectoryStateOnSurface>(); 00049 }
void PixelRod::compatibleDetsV | ( | const TrajectoryStateOnSurface & | startingState, | |
const Propagator & | prop, | |||
const MeasurementEstimator & | est, | |||
std::vector< DetWithState > & | result | |||
) | const [virtual] |
Definition at line 52 of file PixelRod.cc.
References PeriodicBinFinderInZ< T >::binIndex(), TrajectoryStateOnSurface::globalPosition(), GeomDetCompatibilityChecker::isCompatible(), TrajectoryStateOnSurface::isValid(), MeasurementEstimator::maximalLocalDisplacement(), Propagator::propagate(), DetRod::specificSurface(), DetRod::surface(), theBinFinder, GeometricSearchDet::theCompatibilityChecker, DetRodOneR::theDets, toLocal(), PV3DBase< T, PVType, FrameType >::y(), PV2DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
00056 { 00057 typedef MeasurementEstimator::Local2DVector Local2DVector; 00058 TrajectoryStateOnSurface ts = prop.propagate( startingState, specificSurface()); 00059 if (!ts.isValid()) return; 00060 00061 GlobalPoint startPos = ts.globalPosition(); 00062 00063 int closest = theBinFinder.binIndex(startPos.z()); 00064 pair<bool,TrajectoryStateOnSurface> closestCompat = 00065 theCompatibilityChecker.isCompatible(theDets[closest],startingState, prop, est); 00066 00067 if ( closestCompat.first) { 00068 result.push_back( DetWithState( theDets[closest], closestCompat.second)); 00069 }else{ 00070 if(!closestCompat.second.isValid()) return; // to investigate why this happens 00071 } 00072 00073 const BoundPlane& closestPlane( theDets[closest]->specificSurface() ); 00074 00075 Local2DVector maxDistance = 00076 est.maximalLocalDisplacement( closestCompat.second, closestPlane); 00077 00078 float detHalfLen = theDets[closest]->surface().bounds().length()/2.; 00079 00080 // explore neighbours 00081 for (size_t idet=closest+1; idet < theDets.size(); idet++) { 00082 LocalPoint nextPos( theDets[idet]->surface().toLocal( closestCompat.second.globalPosition())); 00083 if (fabs(nextPos.y()) < detHalfLen + maxDistance.y()) { 00084 if ( !add(idet, result, startingState, prop, est)) break; 00085 } else { 00086 break; 00087 } 00088 } 00089 00090 for (int idet=closest-1; idet >= 0; idet--) { 00091 LocalPoint nextPos( theDets[idet]->surface().toLocal( closestCompat.second.globalPosition())); 00092 if (fabs(nextPos.y()) < detHalfLen + maxDistance.y()) { 00093 if ( !add(idet, result, startingState, prop, est)) break; 00094 } else { 00095 break; 00096 } 00097 } 00098 }
const vector< const GeometricSearchDet * > & PixelRod::components | ( | ) | const [virtual] |
Returns basic components, if any.
Returns direct components, if any
Implements GeometricSearchDet.
Definition at line 39 of file PixelRod.cc.
00039 { 00040 throw DetLayerException("PixelRod doesn't have GeometricSearchDet components"); 00041 }
void PixelRod::groupedCompatibleDetsV | ( | const TrajectoryStateOnSurface & | , | |
const Propagator & | , | |||
const MeasurementEstimator & | , | |||
std::vector< DetGroup > & | ||||
) | const [virtual] |
Reimplemented from GeometricSearchDet.
Definition at line 102 of file PixelRod.cc.
References LogDebug.
00106 { 00107 LogDebug("TkDetLayers") << "dummy implementation of PixelRod::groupedCompatibleDets()" ; 00108 }
virtual bool PixelRod::hasGroups | ( | ) | const [inline, virtual] |
BinFinderType PixelRod::theBinFinder [private] |