CMS 3D CMS Logo

TIDRing Class Reference

A concrete implementation for TID rings. More...

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

Inheritance diagram for TIDRing:

GeometricSearchDetWithGroups GeometricSearchDet

List of all members.

Public Member Functions

virtual const std::vector
< const GeomDet * > & 
basicComponents () const
virtual std::pair< bool,
TrajectoryStateOnSurface
compatible (const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const
 tests the geometrical compatibility of the Det with the predicted state.
virtual const std::vector
< const GeometricSearchDet * > & 
components () const
 Returns basic components, if any.
void groupedCompatibleDetsV (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const
virtual const BoundDiskspecificSurface () const
virtual const BoundSurfacesurface () const
 The surface of the GeometricSearchDet.
 TIDRing (std::vector< const GeomDet * > &innerDets, std::vector< const GeomDet * > &outerDets)
 ~TIDRing ()

Private Types

typedef PeriodicBinFinderInPhi
< double > 
BinFinderType

Private Member Functions

bool addClosest (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result) const
SubLayerCrossings computeCrossings (const TrajectoryStateOnSurface &tsos, PropagationDirection propDir) const
void searchNeighbors (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const
const std::vector< const
GeomDet * > & 
subLayer (int ind) const

Private Attributes

BinFinderType theBackBinFinder
std::vector< const GeomDet * > theBackDets
ReferenceCountingPointer
< BoundDisk
theBackDisk
std::vector< const GeomDet * > theDets
ReferenceCountingPointer
< BoundDisk
theDisk
BinFinderType theFrontBinFinder
std::vector< const GeomDet * > theFrontDets
ReferenceCountingPointer
< BoundDisk
theFrontDisk


Detailed Description

A concrete implementation for TID rings.

Definition at line 13 of file TIDRing.h.


Member Typedef Documentation

typedef PeriodicBinFinderInPhi<double> TIDRing::BinFinderType [private]

Definition at line 74 of file TIDRing.h.


Constructor & Destructor Documentation

TIDRing::TIDRing ( std::vector< const GeomDet * > &  innerDets,
std::vector< const GeomDet * > &  outerDets 
)

TIDRing::~TIDRing (  ) 

Definition at line 70 of file TIDRing.cc.

00070                  {
00071 
00072 } 


Member Function Documentation

bool TIDRing::addClosest ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
const SubLayerCrossing crossing,
std::vector< DetGroup > &  result 
) const [private]

Referenced by groupedCompatibleDetsV().

virtual const std::vector<const GeomDet*>& TIDRing::basicComponents (  )  const [inline, virtual]

Implements GeometricSearchDet.

Definition at line 22 of file TIDRing.h.

References theDets.

00022 {return theDets;}

pair< bool, TrajectoryStateOnSurface > TIDRing::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 82 of file TIDRing.cc.

00083                                                     {
00084   edm::LogError("TkDetLayers") << "temporary dummy implementation of TIDRing::compatible()!!" ;
00085   return pair<bool,TrajectoryStateOnSurface>();
00086 }

const vector< const GeometricSearchDet * > & TIDRing::components (  )  const [virtual]

Returns basic components, if any.

Returns direct components, if any

Implements GeometricSearchDet.

Definition at line 75 of file TIDRing.cc.

00076 {
00077   throw DetLayerException("TIDRing doesn't have GeometricSearchDet components");
00078 }

SubLayerCrossings TIDRing::computeCrossings ( const TrajectoryStateOnSurface tsos,
PropagationDirection  propDir 
) const [private]

Definition at line 120 of file TIDRing.cc.

References funct::abs(), PeriodicBinFinderInPhi< T >::binIndex(), Geom::deltaPhi(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), GloballyPositioned< T >::phi(), rho, surface(), theBackBinFinder, theBackDets, theBackDisk, theFrontBinFinder, theFrontDets, theFrontDisk, and TrajectoryStateOnSurface::transverseCurvature().

Referenced by groupedCompatibleDetsV().

00122 {
00123   double rho( startingState.transverseCurvature());
00124   
00125   HelixPlaneCrossing::PositionType startPos( startingState.globalPosition() );
00126   HelixPlaneCrossing::DirectionType startDir( startingState.globalMomentum() );
00127   HelixForwardPlaneCrossing crossing(startPos,startDir,rho,propDir);
00128 
00129   pair<bool,double> frontPath = crossing.pathLength( *theFrontDisk);
00130   if (!frontPath.first) return SubLayerCrossings();
00131 
00132   GlobalPoint gFrontPoint(crossing.position(frontPath.second));
00133 
00134   int frontIndex = theFrontBinFinder.binIndex(gFrontPoint.phi()); 
00135   SubLayerCrossing frontSLC( 0, frontIndex, gFrontPoint);
00136 
00137 
00138 
00139   pair<bool,double> backPath = crossing.pathLength( *theBackDisk);
00140   if (!backPath.first) return SubLayerCrossings();
00141 
00142   GlobalPoint gBackPoint( crossing.position(backPath.second));
00143   int backIndex = theBackBinFinder.binIndex(gBackPoint.phi());
00144   SubLayerCrossing backSLC( 1, backIndex, gBackPoint);
00145 
00146   
00147   // 0ss: frontDisk has index=0, backDisk has index=1
00148   float frontDist = std::abs(Geom::deltaPhi( double(gFrontPoint.barePhi()), 
00149                                              double(theFrontDets[frontIndex]->surface().phi())));
00150   float backDist = std::abs(Geom::deltaPhi( double(gBackPoint.barePhi()), 
00151                                             double(theBackDets[backIndex]->surface().phi())));
00152 
00153 
00154   if (frontDist < backDist) {
00155     return SubLayerCrossings( frontSLC, backSLC, 0);
00156   }
00157   else {
00158     return SubLayerCrossings( backSLC, frontSLC, 1);
00159   } 
00160 }

void TIDRing::groupedCompatibleDetsV ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
std::vector< DetGroup > &  result 
) const [virtual]

Reimplemented from GeometricSearchDet.

Definition at line 91 of file TIDRing.cc.

References addClosest(), SubLayerCrossings::closest(), SubLayerCrossings::closestIndex(), computeCrossings(), tkDetUtil::computeWindowSize(), SubLayerCrossings::isValid(), DetGroupMerger::orderAndMergeTwoLevels(), SubLayerCrossings::other(), Propagator::propagationDirection(), and searchNeighbors().

00095 {
00096   SubLayerCrossings  crossings; 
00097   crossings = computeCrossings( tsos, prop.propagationDirection());
00098   if(! crossings.isValid()) return;
00099 
00100   std::vector<DetGroup> closestResult;
00101   addClosest( tsos, prop, est, crossings.closest(), closestResult); 
00102   if (closestResult.empty())     return;
00103   
00104   DetGroupElement closestGel( closestResult.front().front());  
00105   float phiWindow =  tkDetUtil::computeWindowSize( closestGel.det(), closestGel.trajectoryState(), est); 
00106   searchNeighbors( tsos, prop, est, crossings.closest(), phiWindow,
00107                    closestResult, false); 
00108 
00109   vector<DetGroup> nextResult;
00110   searchNeighbors( tsos, prop, est, crossings.other(), phiWindow,
00111                    nextResult, true); 
00112 
00113   int crossingSide = LayerCrossingSide().endcapSide( closestGel.trajectoryState(), prop);
00114   DetGroupMerger::orderAndMergeTwoLevels( closestResult, nextResult, result,
00115                                           crossings.closestIndex(), crossingSide);
00116 }

void TIDRing::searchNeighbors ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
const SubLayerCrossing crossing,
float  window,
std::vector< DetGroup > &  result,
bool  checkClosest 
) const [private]

Referenced by groupedCompatibleDetsV().

virtual const BoundDisk& TIDRing::specificSurface (  )  const [inline, virtual]

Definition at line 37 of file TIDRing.h.

References theDisk.

00037 {return *theDisk;}

const std::vector<const GeomDet*>& TIDRing::subLayer ( int  ind  )  const [inline, private]

Definition at line 60 of file TIDRing.h.

References theBackDets, and theFrontDets.

00060                                                             {
00061     return (ind==0 ? theFrontDets : theBackDets);
00062   }

virtual const BoundSurface& TIDRing::surface (  )  const [inline, virtual]

The surface of the GeometricSearchDet.

Implements GeometricSearchDet.

Definition at line 20 of file TIDRing.h.

References theDisk.

Referenced by computeCrossings().

00020 {return *theDisk;}


Member Data Documentation

BinFinderType TIDRing::theBackBinFinder [private]

Definition at line 77 of file TIDRing.h.

Referenced by computeCrossings().

std::vector<const GeomDet*> TIDRing::theBackDets [private]

Definition at line 68 of file TIDRing.h.

Referenced by computeCrossings(), and subLayer().

ReferenceCountingPointer<BoundDisk> TIDRing::theBackDisk [private]

Definition at line 72 of file TIDRing.h.

Referenced by computeCrossings().

std::vector<const GeomDet*> TIDRing::theDets [private]

Definition at line 66 of file TIDRing.h.

Referenced by basicComponents().

ReferenceCountingPointer<BoundDisk> TIDRing::theDisk [private]

Definition at line 70 of file TIDRing.h.

Referenced by specificSurface(), and surface().

BinFinderType TIDRing::theFrontBinFinder [private]

Definition at line 76 of file TIDRing.h.

Referenced by computeCrossings().

std::vector<const GeomDet*> TIDRing::theFrontDets [private]

Definition at line 67 of file TIDRing.h.

Referenced by computeCrossings(), and subLayer().

ReferenceCountingPointer<BoundDisk> TIDRing::theFrontDisk [private]

Definition at line 71 of file TIDRing.h.

Referenced by computeCrossings().


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