35 LogDebug(
"DetLayers") <<
"ForwaLayer::computeSurface callded" ;
38 vector<const GeomDet*>::const_iterator ifirst = comps.begin();
39 vector<const GeomDet*>::const_iterator ilast = comps.end();
42 float theRmin =
components().front()->position().perp();
43 float theRmax = theRmin;
44 float theZmin =
components().back()->position().z();
45 float theZmax = theZmin;
46 for ( vector<const GeomDet*>::const_iterator deti = ifirst;
47 deti != ilast; deti++) {
48 vector<GlobalPoint> corners =
50 for (vector<GlobalPoint>::const_iterator ic = corners.begin();
51 ic != corners.end(); ic++) {
53 LogDebug(
"DetLayers") <<
"corner.perp(): " <<
r ;
55 theRmin =
min( theRmin, r);
56 theRmax =
max( theRmax, r);
57 theZmin =
min( theZmin, z);
58 theZmax =
max( theZmax, z);
65 float rdet = (**deti).position().perp();
66 float len = (**deti).surface().bounds().length();
67 float width = (**deti).surface().bounds().width();
76 LogDebug(
"DetLayers") <<
"in ForwardDetLayer::computeSurface(),xAxisCos,yAxisCos: " << xAxisCos <<
" , " << yAxisCos ;
77 LogDebug(
"DetLayers") <<
"det pos.perp,length,width: "
82 if( fabs(xAxisCos) > fabs(yAxisCos) ) {
83 theRmin =
min( theRmin, rdet-width/2.F);
84 theRmax =
max( theRmax, rdet+width/2.F);
86 theRmin =
min( theRmin, rdet-len/2.F);
87 theRmax =
max( theRmax, rdet+len/2.F);
92 LogDebug(
"DetLayers") <<
"creating SimpleDiskBounds with r range" << theRmin <<
" "
93 << theRmax <<
" and z range " << theZmin <<
" " << theZmax ;
98 float zPos = (theZmax+theZmin)/2.;
104 theZmin-zPos, theZmax-zPos));
108 pair<bool, TrajectoryStateOnSurface>
114 <<
"ERROR: BarrelDetLayer::compatible() is used before the layer surface is initialized" ;
118 if ( !myState.
isValid())
return make_pair(
false, myState);
129 deltaR += nSigma *
sqrt(err.
xx() + err.
yy());
virtual BoundDisk * computeSurface()
Local3DVector LocalVector
virtual bool inside(const Local3DPoint &) const =0
Determine if the point is inside the bounds.
LocalVector localDirection() const
LocalPoint localPosition() const
virtual const BoundSurface & surface() const
The surface of the GeometricSearchDet.
void setSurface(BoundDisk *cp)
Global3DPoint GlobalPoint
PreciseFloatType< T, U >::Type dot(const Vector3DBase< U, FrameTag > &v) const
virtual const std::vector< const GeometricSearchDet * > & components() const =0
Returns basic components, if any.
LocalError positionError() const
static std::vector< GlobalPoint > corners(const BoundPlane &)
Geom::Theta< T > theta() const
virtual ~ForwardDetLayer()
virtual float thickness() const =0
virtual bool inside(const Local3DPoint &p) const
Determine if the point is inside the bounds.
const T & max(const T &a, const T &b)
virtual void initialize()
virtual const BoundDisk & specificSurface() const
bool contains(const Local3DPoint &p) const
Tan< T >::type tan(const T &t)
ReferenceCountingPointer< BoundDisk > theDisk
const LocalTrajectoryError & localError() const
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
double deltaR(double eta1, double eta2, double phi1, double phi2)
Vector3DBase unit() const
const Bounds & bounds() const
virtual const std::vector< const GeomDet * > & basicComponents() const =0
virtual std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const
std::vector< std::vector< double > > tmp
Global3DVector GlobalVector