25 theComps(blades.
begin(),blades.
end())
27 for(vector<const GeometricSearchDet*>::const_iterator it=
theComps.begin();
30 (**it).basicComponents().begin(),
31 (**it).basicComponents().end());
43 LogDebug(
"TkDetLayers") <<
"DEBUG INFO for PixelForwardLayer" <<
"\n" 44 <<
"PixelForwardLayer.surfcace.phi(): " 46 <<
"PixelForwardLayer.surfcace.z(): " 48 <<
"PixelForwardLayer.surfcace.innerR(): " 50 <<
"PixelForwardLayer.surfcace.outerR(): " 53 for(vector<const GeometricSearchDet*>::const_iterator it=
theComps.begin();
55 LogDebug(
"TkDetLayers") <<
"blades phi,z,r: " 56 << (*it)->surface().position().phi() <<
" , " 57 << (*it)->surface().position().z() <<
" , " 58 << (*it)->surface().position().perp();
66 vector<const GeometricSearchDet*>::const_iterator
i;
76 std::vector<DetGroup> &
result)
const {
77 std::vector<DetGroup> closestResult;
88 tsos, prop, est, closestResult);
90 if(closestResult.empty()){
101 vector<DetGroup> nextResult;
103 tsos, prop, est, nextResult)) {
108 theHelicity, crossingSide);
111 result.swap(closestResult);
136 vector<DetGroup>&
result)
const 147 for (
int idet=negStart; idet >= negStart - quarter+1; idet--) {
148 std::vector<DetGroup> tmp1;
152 if (!
Adder::add( *neighbor, tsos, prop, est, tmp1))
break;
155 std::vector<DetGroup> tmp2; tmp2.swap(result);
156 std::vector<DetGroup> newResult;
157 Merger::orderAndMergeTwoLevels(
std::move(tmp1),
std::move(tmp2), newResult, theHelicity, crossingSide);
158 result.swap(newResult);
160 for (
int idet=posStart; idet < posStart + quarter-1; idet++) {
161 vector<DetGroup> tmp1;
165 if (!
Adder::add( *neighbor, tsos, prop, est, tmp1))
break;
168 std::vector<DetGroup> tmp2; tmp2.swap(result);
169 std::vector<DetGroup> newResult;
170 Merger::orderAndMergeTwoLevels(
std::move(tmp2),
std::move(tmp1), newResult, theHelicity, crossingSide);
171 result.swap(newResult);
197 if (!thePath.first) {
212 pair<bool,double> theClosestBladePath = theBladeCrossing.
pathLength( closestPlane );
215 auto closestDist = closestPos.
x();
219 int nextIndex =
PhiLess()( closestPlane.
phi(), turbinePoint.barePhi()) ?
220 closestIndex+1 : closestIndex-1;
222 const Plane& nextPlane( static_cast<const Plane&>(
225 pair<bool,double> theNextBladePath = theBladeCrossing.
pathLength( nextPlane );
228 auto nextDist = nextPos.
x();
virtual BoundDisk * computeSurface()
virtual const BoundSurface & surface() const final
The surface of the GeometricSearchDet.
void setSurface(BoundDisk *cp)
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
virtual std::pair< bool, double > pathLength(const Plane &)
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const __attribute__((hot))
virtual DirectionType direction(double s) const
GlobalPoint globalPosition() const
Vector2DBase< float, LocalTag > Local2DVector
GeometricSearchDet::DetWithState DetWithState
bool neighbor(int endcap, int sector, int SectIndex, int id, int sub, int station)
virtual PositionType position(double s) const
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)
virtual int binIndex(T phi) const
returns an index in the valid range for the bin that contains phi
virtual PropagationDirection propagationDirection() const final
LocalPoint toLocal(const GlobalPoint &gp) const
PeriodicBinFinderInPhi< float > BinFinderType
std::vector< const GeometricSearchDet * > theComps
virtual std::pair< bool, double > pathLength(const Plane &plane)
Abs< T >::type abs(const T &t)
static int endcapSide(const TrajectoryStateOnSurface &startingState, const Propagator &prop)
def window(xmin, xmax, ymin, ymax, x=0, y=0, width=100, height=100, xlogbase=None, ylogbase=None, minusInfinity=-1000, flipx=False, flipy=True)
static float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est)
SubTurbineCrossings computeCrossings(const TrajectoryStateOnSurface &startingState, PropagationDirection propDir) const __attribute__((hot))
void add(std::map< std::string, TH1 * > &h, TH1 *hist)
virtual const BoundDisk & specificSurface() const final
virtual PositionType position(double s) const
virtual const Surface::PositionType & position() const
Returns position of the surface.
GlobalVector globalMomentum() const
virtual Local2DVector maximalLocalDisplacement(const TrajectoryStateOnSurface &ts, const Plane &plane) const =0
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)
void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubTurbineCrossings &crossings, float window, std::vector< DetGroup > &result) const __attribute__((hot))
BinFinderType theBinFinder
const PositionType & position() const
std::vector< const GeomDet * > theBasicComps
double transverseCurvature() const