24 for (vector<const GeometricSearchDet*>::const_iterator it =
theComps.begin(); it !=
theComps.end(); it++) {
36 LogDebug(
"TkDetLayers") <<
"DEBUG INFO for PixelForwardLayer"
39 <<
"PixelForwardLayer.surfcace.z(): " << this->
surface().
position().
z() <<
"\n"
40 <<
"PixelForwardLayer.surfcace.innerR(): " << this->
specificSurface().innerRadius() <<
"\n"
41 <<
"PixelForwardLayer.surfcace.outerR(): " << this->
specificSurface().outerRadius();
43 for (vector<const GeometricSearchDet*>::const_iterator it =
theComps.begin(); it !=
theComps.end(); it++) {
44 LogDebug(
"TkDetLayers") <<
"blades phi,z,r: " << (*it)->surface().position().phi() <<
" , "
45 << (*it)->surface().position().z() <<
" , " << (*it)->surface().position().perp();
51 vector<const GeometricSearchDet*>::const_iterator
i;
60 std::vector<DetGroup>&
result)
const {
61 std::vector<DetGroup> closestResult;
73 if (closestResult.empty()) {
83 vector<DetGroup> nextResult;
91 result.swap(closestResult);
113 vector<DetGroup>&
result)
const {
123 for (
int idet = negStart; idet >= negStart - quarter + 1; idet--) {
124 std::vector<DetGroup> tmp1;
128 if (!
Adder::add(*neighbor, tsos, prop, est, tmp1))
131 std::vector<DetGroup> tmp2;
133 std::vector<DetGroup> newResult;
134 Merger::orderAndMergeTwoLevels(
std::move(tmp1),
std::move(tmp2), newResult, theHelicity, crossingSide);
135 result.swap(newResult);
137 for (
int idet = posStart; idet < posStart + quarter - 1; idet++) {
138 vector<DetGroup> tmp1;
142 if (!
Adder::add(*neighbor, tsos, prop, est, tmp1))
145 std::vector<DetGroup> tmp2;
147 std::vector<DetGroup> newResult;
148 Merger::orderAndMergeTwoLevels(
std::move(tmp2),
std::move(tmp1), newResult, theHelicity, crossingSide);
149 result.swap(newResult);
170 if (!thePath.first) {
184 pair<bool, double> theClosestBladePath = theBladeCrossing.
pathLength(closestPlane);
187 auto closestDist = closestPos.
x();
191 int nextIndex =
Geom::phiLess(closestPlane.
phi(), turbinePoint.barePhi()) ? closestIndex + 1 : closestIndex - 1;
195 pair<bool, double> theNextBladePath = theBladeCrossing.
pathLength(nextPlane);
198 auto nextDist = nextPos.
x();
std::pair< bool, double > pathLength(const Plane &plane) override
virtual BoundDisk * computeSurface()
int binIndex(T phi) const override
returns an index in the valid range for the bin that contains phi
const BoundSurface & surface() const final
The surface of the GeometricSearchDet.
void setSurface(BoundDisk *cp)
Geom::Phi< T > phi() const
virtual Local2DVector maximalLocalDisplacement(const TrajectoryStateOnSurface &ts, const Plane &plane) const =0
Global3DPoint GlobalPoint
GlobalPoint globalPosition() const
virtual PropagationDirection propagationDirection() const final
~PixelForwardLayer() override
const Plane & surface() const
The nominal surface of the GeomDet.
static int computeHelicity(const GeometricSearchDet *firstBlade, const GeometricSearchDet *secondBlade)
PixelForwardLayer(std::vector< const PixelBlade * > &blades)
PositionType position(double s) const override
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
LocalPoint toLocal(const GlobalPoint &gp) const
PeriodicBinFinderInPhi< float > BinFinderType
std::vector< const GeometricSearchDet * > theComps
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const override __attribute__((hot))
Abs< T >::type abs(const T &t)
static int endcapSide(const TrajectoryStateOnSurface &startingState, const Propagator &prop)
PositionType position(double s) const override
static float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est)
bool phiLess(float phi1, float phi2)
SubTurbineCrossings computeCrossings(const TrajectoryStateOnSurface &startingState, PropagationDirection propDir) const __attribute__((hot))
void add(std::map< std::string, TH1 * > &h, TH1 *hist)
virtual const Surface::PositionType & position() const
Returns position of the surface.
std::pair< bool, double > pathLength(const Plane &) override
GlobalVector globalMomentum() const
Vector2DBase< float, LocalTag > Local2DVector
virtual const BoundDisk & specificSurface() const final
static void orderAndMergeTwoLevels(std::vector< DetGroup > &&one, std::vector< DetGroup > &&two, std::vector< DetGroup > &result, int firstIndex, int firstCrossed)
void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubTurbineCrossings &crossings, float window, std::vector< DetGroup > &result) const __attribute__((hot))
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
BinFinderType theBinFinder
DirectionType direction(double s) const override
const PositionType & position() const
std::vector< const GeomDet * > theBasicComps
double transverseCurvature() const