31 LogDebug(
"TkDetLayers") <<
"DEBUG INFO for Phase2EndcapSingleRing";
32 for (vector<const GeomDet*>::const_iterator it =
theDets.begin(); it !=
theDets.end(); it++) {
33 LogDebug(
"TkDetLayers") <<
"Det detId,phi,z,r: " << (*it)->geographicalId().rawId() <<
" , "
34 << (*it)->surface().position().phi() <<
" , " << (*it)->surface().position().z() <<
" , "
35 << (*it)->surface().position().perp();
44 throw DetLayerException(
"Phase2EndcapSingleRing doesn't have GeometricSearchDet components");
50 edm::LogError(
"TkDetLayers") <<
"temporary dummy implementation of Phase2EndcapSingleRing::compatible()!!";
51 return pair<bool, TrajectoryStateOnSurface>();
57 std::vector<DetGroup>&
result)
const {
65 std::vector<DetGroup> closestResult;
67 addClosest(tsos, prop, est, crossing, closestResult);
68 if (closestResult.empty())
75 searchNeighbors(tsos, prop, est, crossing, phiWindow, closestResult,
false);
88 pair<bool, double> frontPath = crossing.pathLength(*
theDisk);
92 GlobalPoint gFrontPoint(crossing.position(frontPath.second));
104 vector<DetGroup>&
result)
const {
120 bool checkClosest)
const {
126 int negStartIndex = closestIndex - 1;
127 int posStartIndex = closestIndex + 1;
131 posStartIndex = closestIndex;
133 negStartIndex = closestIndex;
140 int half = sLayer.size() / 2;
141 for (
int idet = negStartIndex; idet >= negStartIndex - half; idet--) {
145 if (!
Adder::add(neighborDet, tsos, prop, est, result))
148 for (
int idet = posStartIndex; idet < posStartIndex + half; idet++) {
152 if (!
Adder::add(neighborDet, tsos, prop, est, result))
Phase2EndcapSingleRing(std::vector< const GeomDet * > &allDets)
int binIndex(T phi) const override
returns an index in the valid range for the bin that contains phi
int closestDetIndex() const
PeriodicBinFinderInPhi< float > BinFinderType
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const override
GlobalPoint globalPosition() const
virtual PropagationDirection propagationDirection() const final
BinFinderType theBinFinder
Log< level::Error, false > LogError
bool overlapInPhi(float phi, const GeomDet &det, float phiWindow)
const GlobalPoint & position() const
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est)
const std::vector< const GeometricSearchDet * > & components() const override
Returns basic components, if any.
static void addSameLevel(std::vector< DetGroup > &&gvec, std::vector< DetGroup > &result)
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
int subLayerIndex() const
bool addClosest(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result) const
std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const override
void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const
SubLayerCrossing computeCrossing(const TrajectoryStateOnSurface &tsos, PropagationDirection propDir) const
bool phiLess(float phi1, float phi2)
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)
std::vector< const GeomDet * > theDets
ReferenceCountingPointer< BoundDisk > theDisk
~Phase2EndcapSingleRing() override
GlobalVector globalMomentum() const
const std::vector< const GeomDet * > & subLayer(int ind) const
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
double transverseCurvature() const