19 std::vector<const TIBRing*>& outerRings)
32 it->basicComponents().begin(),
33 it->basicComponents().end());
41 LogDebug(
"TkDetLayers") <<
"==== DEBUG TIBLayer =====" ;
42 LogDebug(
"TkDetLayers") <<
"innerCyl radius, thickness, lenght: " 47 LogDebug(
"TkDetLayers") <<
"outerCyl radius, thickness, lenght: " 52 LogDebug(
"TkDetLayers") <<
"Cyl radius, thickness, lenght: " 59 LogDebug(
"TkDetLayers") <<
"inner TIBRing pos z,radius,eta,phi: " 60 <<
i->position().z() <<
" , " 61 <<
i->position().perp() <<
" , " 62 <<
i->position().eta() <<
" , " 63 <<
i->position().phi() ;
68 LogDebug(
"TkDetLayers") <<
"outer TIBRing pos z,radius,eta,phi: " 69 <<
i->position().z() <<
" , " 70 <<
i->position().perp() <<
" , " 71 <<
i->position().eta() <<
" , " 72 <<
i->position().phi() ;
96 float leftPos = rings.front()->surface().position().z();
97 float rightPos = rings.back()->surface().position().z();
101 float r = frontRing.radius();
102 const Bounds& leftBounds = frontRing.bounds();
103 const Bounds& rightBounds = backRing.bounds();
109 float thick = leftBounds.
thickness() / 2;
110 float zmin = leftPos - leftBounds.
length() / 2;
111 float zmax = rightPos + rightBounds.
length() / 2;
112 float rmin = r-thick;
113 float rmax = r+thick;
114 float zpos = 0.5*(leftPos+rightPos);
118 rings.front()->surface().rotation(), scp);
134 return std::make_tuple(innerDist < outerDist,innerIndex, outerIndex);
144 std::vector<DetGroup>&
result,
145 bool checkClosest)
const 152 int negStartIndex = closestIndex-1;
153 int posStartIndex = closestIndex+1;
156 if (gCrossingPos.
z() < sLayer[closestIndex]->surface().position().z()) {
157 posStartIndex = closestIndex;
160 negStartIndex = closestIndex;
165 for (
int idet=negStartIndex; idet >= 0; idet--) {
167 if (!
overlap( gCrossingPos, *neighborRing, window))
break;
168 if (!
Adder::add( *neighborRing, tsos, prop, est, result))
break;
170 for (
int idet=posStartIndex; idet < static_cast<int>(sLayer.size()); idet++) {
172 if (!
overlap( gCrossingPos, *neighborRing, window))
break;
173 if (!
Adder::add( *neighborRing, tsos, prop, est, result))
break;
198 float yError = localError.
y();
202 auto cotanTheta = gm.
z()/gm.perp();
207 return yError + thickCorrection;
ReferenceCountingPointer< BoundCylinder > theOuterCylinder
virtual float length() const =0
static bool overlap(const GlobalPoint &gpos, const GeometricSearchDet &ring, float window) __attribute__((hot))
virtual void initialize()
std::vector< const GeometricSearchDet * > theInnerComps
int closestDetIndex() const
std::vector< const GeometricSearchDet * > theComps
int binIndex(T z) const override
returns an index in the valid range for the bin closest to Z
const Bounds & bounds() const
TIBLayer(std::vector< const TIBRing * > &innerRings, std::vector< const TIBRing * > &outerRings) __attribute__((cold))
virtual const BoundCylinder & specificSurface() const final
Extension of the interface.
const Plane & surface() const
The nominal surface of the GeomDet.
GeneralBinFinderInZforGeometricSearchDet< float > theOuterBinFinder
const GlobalPoint & position() const
bool isDetLessZ(const GeometricSearchDet *a, const GeometricSearchDet *b)
int subLayerIndex() const
Abs< T >::type abs(const T &t)
~TIBLayer() override __attribute__((cold))
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
def window(xmin, xmax, ymin, ymax, x=0, y=0, width=100, height=100, xlogbase=None, ylogbase=None, minusInfinity=-1000, flipx=False, flipy=True)
BoundCylinder * cylinder(const std::vector< const GeometricSearchDet * > &rings) __attribute__((cold))
void add(std::map< std::string, TH1 * > &h, TH1 *hist)
GeneralBinFinderInZforGeometricSearchDet< float > theInnerBinFinder
GeometricSearchDet::DetWithState DetWithState
virtual float thickness() const =0
virtual const Surface::PositionType & position() const
Returns position of the surface.
const std::vector< const GeometricSearchDet * > & subLayer(int ind) const
void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const override __attribute__((hot))
GlobalVector globalMomentum() const
virtual Local2DVector maximalLocalDisplacement(const TrajectoryStateOnSurface &ts, const Plane &plane) const =0
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const override __attribute__((hot))
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
std::vector< const GeomDet * > theBasicComps
std::tuple< bool, int, int > computeIndexes(GlobalPoint gInnerPoint, GlobalPoint gOuterPoint) const override __attribute__((hot))
std::vector< const GeometricSearchDet * > theOuterComps
const PositionType & position() const
ReferenceCountingPointer< BoundCylinder > theInnerCylinder