19 #include <boost/function.hpp>
26 std::vector<const GeomDet*>& outerDets):
28 theFrontDets(innerDets.
begin(),innerDets.
end()),
29 theBackDets(outerDets.
begin(),outerDets.
end())
51 LogDebug(
"TkDetLayers") <<
"DEBUG INFO for TIDRing" ;
52 for(vector<const GeomDet*>::const_iterator it=
theFrontDets.begin();
54 LogDebug(
"TkDetLayers") <<
"frontDet phi,z,r: "
55 << (*it)->surface().position().phi() <<
" , "
56 << (*it)->surface().position().z() <<
" , "
57 << (*it)->surface().position().perp() ;
60 for(vector<const GeomDet*>::const_iterator it=
theBackDets.begin();
62 LogDebug(
"TkDetLayers") <<
"backDet phi,z,r: "
63 << (*it)->surface().position().phi() <<
" , "
64 << (*it)->surface().position().z() <<
" , "
65 << (*it)->surface().position().perp() ;
75 const vector<const GeometricSearchDet*>&
82 pair<bool, TrajectoryStateOnSurface>
85 edm::LogError(
"TkDetLayers") <<
"temporary dummy implementation of TIDRing::compatible()!!" ;
86 return pair<bool,TrajectoryStateOnSurface>();
95 std::vector<DetGroup>&
result)
const
99 if(! crossings.
isValid())
return;
101 std::vector<DetGroup> closestResult;
103 if (closestResult.empty())
return;
108 closestResult,
false);
110 vector<DetGroup> nextResult;
155 if (frontDist < backDist) {
167 vector<DetGroup>&
result)
const
182 bool checkClosest)
const
189 int negStartIndex = closestIndex-1;
190 int posStartIndex = closestIndex+1;
194 posStartIndex = closestIndex;
197 negStartIndex = closestIndex;
204 int half = sLayer.size()/2;
205 for (
int idet=negStartIndex; idet >= negStartIndex - half; idet--) {
208 if (!
Adder::add( neighborDet, tsos, prop, est, result))
break;
211 for (
int idet=posStartIndex; idet < posStartIndex + half; idet++) {
214 if (!
Adder::add( neighborDet, tsos, prop, est, result))
break;
PeriodicBinFinderInPhi< float > BinFinderType
void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const __attribute__((hot))
std::vector< const GeomDet * > theDets
SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface &tsos, PropagationDirection propDir) const __attribute__((hot))
virtual PositionType position(double s) const
virtual PropagationDirection propagationDirection() const
int closestDetIndex() const
virtual std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const
GlobalPoint globalPosition() const
void add(const std::vector< const T * > &source, std::vector< const T * > &dest)
BinFinderType theFrontBinFinder
bool overlapInPhi(float phi, const GeomDet &det, float phiWindow)
virtual int binIndex(T phi) const
returns an index in the valid range for the bin that contains phi
bool addClosest(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result) const __attribute__((hot))
const GlobalPoint & position() const
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est)
virtual const std::vector< const GeometricSearchDet * > & components() const __attribute__((cold))
Returns basic components, if any.
std::vector< const GeomDet * > theFrontDets
int subLayerIndex() const
Abs< T >::type abs(const T &t)
static int endcapSide(const TrajectoryStateOnSurface &startingState, const Propagator &prop)
ReferenceCountingPointer< BoundDisk > theBackDisk
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
bool phiLess(float phi1, float phi2)
const SubLayerCrossing & other() const
static bool add(const GeometricSearchDet &det, const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) __attribute__((hot))
ReferenceCountingPointer< BoundDisk > theFrontDisk
ReferenceCountingPointer< BoundDisk > theDisk
BinFinderType theBackBinFinder
const SubLayerCrossing & closest() const
GlobalVector globalMomentum() const
virtual std::pair< bool, double > pathLength(const Plane &plane)
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
static void orderAndMergeTwoLevels(std::vector< DetGroup > &&one, std::vector< DetGroup > &&two, std::vector< DetGroup > &result, int firstIndex, int firstCrossed)
const std::vector< const GeomDet * > & subLayer(int ind) const
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const __attribute__((hot))
TIDRing(std::vector< const GeomDet * > &innerDets, std::vector< const GeomDet * > &outerDets)
std::vector< const GeomDet * > theBackDets
double transverseCurvature() const