22 vector<const GeomDet*> comps = basicComponents();
25 float theRmin = comps.front()->position().perp();
26 float theRmax = theRmin;
27 float theZmin = comps.front()->position().z();
28 float theZmax = theZmin;
29 for (vector<const GeomDet*>::const_iterator deti = comps.begin(); deti != comps.end(); deti++) {
30 vector<GlobalPoint> corners =
BoundingBox().
corners(dynamic_cast<const Plane&>((*deti)->surface()));
31 for (vector<GlobalPoint>::const_iterator ic = corners.begin(); ic != corners.end(); ic++) {
34 theRmin =
min(theRmin, r);
35 theRmax =
max(theRmax, r);
36 theZmin =
min(theZmin, z);
37 theZmax =
max(theZmax, z);
42 float rdet = (**deti).position().perp();
43 float thick = (**deti).surface().bounds().thickness();
44 theRmin =
min(theRmin, rdet - thick / 2.
F);
45 theRmax =
max(theRmax, rdet + thick / 2.
F);
62 edm::LogError(
"DetLayers") <<
"ERROR: BarrelDetLayer::compatible() is used before the layer surface is initialized";
67 return make_pair(
false, myState);
71 auto deltaZ = 0.5f * bounds().length();
73 return make_pair(
true, myState);
84 return make_pair(z0 < deltaZ, myState);
virtual BoundCylinder * computeSurface()
virtual void initialize()
const CartesianTrajectoryError cartesianError() const
GlobalPoint globalPosition() const
Log< level::Error, false > LogError
bool contains(const Local3DPoint &p) const
std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &ts, const Propagator &, const MeasurementEstimator &) const final
Abs< T >::type abs(const T &t)
void setSurface(BoundCylinder *cp)
const GlobalError position() const
Position error submatrix.
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
static std::vector< GlobalPoint > corners(const Plane &)
static float computeRadius(Bounds const &bounds)
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
~BarrelDetLayer() override
GlobalVector globalDirection() const