CMS 3D CMS Logo

PixelRod Class Reference

A concrete implementation for PixelRod. More...

#include <RecoTracker/TkDetLayers/interface/PixelRod.h>

Inheritance diagram for PixelRod:

DetRodOneR DetRod GeometricSearchDet

List of all members.

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


Detailed Description

A concrete implementation for PixelRod.

Definition at line 11 of file PixelRod.h.


Member Typedef Documentation

typedef PeriodicBinFinderInZ<float> PixelRod::BinFinderType

Definition at line 13 of file PixelRod.h.


Constructor & Destructor Documentation

PixelRod::PixelRod ( std::vector< const GeomDet * > &  theDets  ) 

PixelRod::~PixelRod (  ) 

Definition at line 34 of file PixelRod.cc.

00034                    {
00035 
00036 } 


Member Function Documentation

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]

Implements GeometricSearchDet.

Definition at line 39 of file PixelRod.h.

00039 {return false;}


Member Data Documentation

BinFinderType PixelRod::theBinFinder [private]

Definition at line 42 of file PixelRod.h.

Referenced by compatibleDetsV().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:30:03 2009 for CMSSW by  doxygen 1.5.4