24 theComps(blades.
begin(),blades.
end())
26 for(vector<const GeometricSearchDet*>::const_iterator it=
theComps.begin();
29 (**it).basicComponents().begin(),
30 (**it).basicComponents().end());
42 LogDebug(
"TkDetLayers") <<
"DEBUG INFO for PixelForwardLayer" <<
"\n"
43 <<
"PixelForwardLayer.surfcace.phi(): "
45 <<
"PixelForwardLayer.surfcace.z(): "
47 <<
"PixelForwardLayer.surfcace.innerR(): "
49 <<
"PixelForwardLayer.surfcace.outerR(): "
52 for(vector<const GeometricSearchDet*>::const_iterator it=
theComps.begin();
54 LogDebug(
"TkDetLayers") <<
"blades phi,z,r: "
55 << (*it)->surface().position().phi() <<
" , "
56 << (*it)->surface().position().z() <<
" , "
57 << (*it)->surface().position().perp();
65 vector<const GeometricSearchDet*>::const_iterator
i;
75 std::vector<DetGroup> &
result)
const {
76 vector<DetGroup> closestResult;
87 tsos, prop, est, closestResult);
89 if(closestResult.empty()){
100 vector<DetGroup> nextResult;
102 tsos, prop, est, nextResult)) {
107 theHelicity, crossingSide);
110 result.swap(closestResult);
135 vector<DetGroup>&
result)
const
146 vector<DetGroup>
tmp;
147 vector<DetGroup> newResult;
148 for (
int idet=negStart; idet >= negStart - quarter+1; idet--) {
154 if (!
Adder::add( *neighbor, tsos, prop, est, tmp))
break;
157 Merger::orderAndMergeTwoLevels( tmp, result, newResult, theHelicity, crossingSide);
158 result.swap(newResult);
160 for (
int idet=posStart; idet < posStart + quarter-1; idet++) {
166 if (!
Adder::add( *neighbor, tsos, prop, est, tmp))
break;
169 Merger::orderAndMergeTwoLevels( result, tmp, newResult, theHelicity, crossingSide);
170 result.swap(newResult);
194 pair<bool,double> thePath = turbineCrossing.pathLength(
specificSurface() );
196 if (!thePath.first) {
205 const BoundPlane& closestPlane( static_cast<const BoundPlane&>(
211 pair<bool,double> theClosestBladePath = theBladeCrossing.
pathLength( closestPlane );
214 float closestDist = closestPos.
x();
218 closestIndex+1 : closestIndex-1;
220 const BoundPlane& nextPlane( static_cast<const BoundPlane&>(
223 pair<bool,double> theNextBladePath = theBladeCrossing.
pathLength( nextPlane );
226 float nextDist = nextPos.
x();
228 if (fabs(closestDist) < fabs(nextDist)) {
static void orderAndMergeTwoLevels(const std::vector< DetGroup > &one, const std::vector< DetGroup > &two, std::vector< DetGroup > &result, int firstIndex, int firstCrossed)
virtual BoundDisk * computeSurface()
virtual PropagationDirection propagationDirection() const
virtual const BoundSurface & surface() const
The surface of the GeometricSearchDet.
void setSurface(BoundDisk *cp)
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
virtual std::pair< bool, double > pathLength(const Plane &)
GlobalPoint globalPosition() const
void add(const std::vector< const T * > &source, std::vector< const T * > &dest)
Vector2DBase< float, LocalTag > Local2DVector
virtual Local2DVector maximalLocalDisplacement(const TrajectoryStateOnSurface &ts, const BoundPlane &plane) const
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
int endcapSide(const TrajectoryStateOnSurface &startingState, const Propagator &prop) const
const T & max(const T &a, const T &b)
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const
LocalPoint toLocal(const GlobalPoint &gp) const
virtual const BoundDisk & specificSurface() const
std::vector< const GeometricSearchDet * > theComps
virtual PositionType position(double s) const
virtual const Surface::PositionType & position() const
Returns position of the surface.
PeriodicBinFinderInPhi< double > BinFinderType
std::vector< std::vector< double > > tmp
GlobalVector globalMomentum() const
float outerRadius() const
The outer radius of the disk.
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
float innerRadius() const
The inner radius of the disk.
SubTurbineCrossings computeCrossings(const TrajectoryStateOnSurface &startingState, PropagationDirection propDir) const
void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubTurbineCrossings &crossings, float window, std::vector< DetGroup > &result) const
BinFinderType theBinFinder
const PositionType & position() const
virtual const BoundPlane & surface() const
The nominal surface of the GeomDet.
std::vector< const GeomDet * > theBasicComps
double transverseCurvature() const
int computeHelicity(const GeometricSearchDet *firstBlade, const GeometricSearchDet *secondBlade) const