18 #include <boost/function.hpp> 24 TIDRing::TIDRing(std::vector<const GeomDet*>& innerDets, std::vector<const GeomDet*>& outerDets)
26 theFrontDets(innerDets.
begin(), innerDets.
end()),
27 theBackDets(outerDets.
begin(), outerDets.
end()) {
43 LogDebug(
"TkDetLayers") <<
"DEBUG INFO for TIDRing";
45 LogDebug(
"TkDetLayers") <<
"frontDet phi,z,r: " << (*it)->surface().position().phi() <<
" , " 46 << (*it)->surface().position().z() <<
" , " << (*it)->surface().position().perp();
50 LogDebug(
"TkDetLayers") <<
"backDet phi,z,r: " << (*it)->surface().position().phi() <<
" , " 51 << (*it)->surface().position().z() <<
" , " << (*it)->surface().position().perp();
64 edm::LogError(
"TkDetLayers") <<
"temporary dummy implementation of TIDRing::compatible()!!";
65 return pair<bool, TrajectoryStateOnSurface>();
71 std::vector<DetGroup>&
result)
const {
77 std::vector<DetGroup> closestResult;
79 if (closestResult.empty())
86 vector<DetGroup> nextResult;
105 if (!frontPath.first)
125 if (frontDist < backDist) {
136 vector<DetGroup>&
result)
const {
148 bool checkClosest)
const {
154 int negStartIndex = closestIndex - 1;
155 int posStartIndex = closestIndex + 1;
159 posStartIndex = closestIndex;
161 negStartIndex = closestIndex;
168 int half = sLayer.size() / 2;
169 for (
int idet = negStartIndex; idet >= negStartIndex - half; idet--) {
173 if (!
Adder::add(neighborDet, tsos, prop, est, result))
177 for (
int idet = posStartIndex; idet < posStartIndex + half; idet++) {
181 if (!
Adder::add(neighborDet, tsos, prop, est, result))
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))
int closestDetIndex() const
GeometricSearchDet::DetWithState DetWithState
std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const override
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const override __attribute__((hot))
int binIndex(T phi) const override
returns an index in the valid range for the bin that contains phi
GlobalPoint globalPosition() const
BinFinderType theFrontBinFinder
bool overlapInPhi(float phi, const GeomDet &det, float phiWindow)
const std::vector< const GeometricSearchDet * > & components() const override __attribute__((cold))
Returns basic components, if any.
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)
std::pair< bool, double > pathLength(const Plane &plane) override
virtual PropagationDirection propagationDirection() const final
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
def window(xmin, xmax, ymin, ymax, x=0, y=0, width=100, height=100, xlogbase=None, ylogbase=None, minusInfinity=-1000, flipx=False, flipy=True)
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))
void add(std::map< std::string, TH1 * > &h, TH1 *hist)
ReferenceCountingPointer< BoundDisk > theFrontDisk
ReferenceCountingPointer< BoundDisk > theDisk
BinFinderType theBackBinFinder
const SubLayerCrossing & closest() const
GlobalVector globalMomentum() const
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
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
TIDRing(std::vector< const GeomDet * > &innerDets, std::vector< const GeomDet * > &outerDets)
PositionType position(double s) const override
std::vector< const GeomDet * > theBackDets
double transverseCurvature() const