#include <RecoTracker/TkDetLayers/interface/TIDRing.h>
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 BoundDisk & | specificSurface () const |
virtual const BoundSurface & | surface () 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 |
Definition at line 13 of file TIDRing.h.
typedef PeriodicBinFinderInPhi<double> TIDRing::BinFinderType [private] |
TIDRing::TIDRing | ( | std::vector< const GeomDet * > & | innerDets, | |
std::vector< const GeomDet * > & | outerDets | |||
) |
TIDRing::~TIDRing | ( | ) |
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 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;}
BinFinderType TIDRing::theBackBinFinder [private] |
std::vector<const GeomDet*> TIDRing::theBackDets [private] |
std::vector<const GeomDet*> TIDRing::theDets [private] |
ReferenceCountingPointer<BoundDisk> TIDRing::theDisk [private] |
BinFinderType TIDRing::theFrontBinFinder [private] |
std::vector<const GeomDet*> TIDRing::theFrontDets [private] |