CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
SimpleConeBounds Class Referencefinal

#include <SimpleConeBounds.h>

Inheritance diagram for SimpleConeBounds:
Bounds

Public Member Functions

Boundsclone () const override
 
bool inside (const Local3DPoint &p) const override
 Determine if the point is inside the bounds. More...
 
bool inside (const Local3DPoint &p, const LocalError &err, float scale) const override
 Determine if a point is inside the bounds, taking error into account. More...
 
virtual bool inside (const Local2DPoint &p, const LocalError &err) const
 
float length () const override
 Length along Z. More...
 
Geom::Theta< float > openingAngle () const
 
 SimpleConeBounds (float zmin, float rmin_zmin, float rmax_zmin, float zmax, float rmin_zmax, float rmax_zmax)
 Construct from inner/outer radius on the two Z faces. More...
 
float thickness () const override
 
GlobalPoint vertex () const
 
float width () const override
 Maximum diameter. More...
 
- Public Member Functions inherited from Bounds
void computeSpan (Surface const &plane)
 
virtual bool inside (const Local2DPoint &p) const
 
virtual bool inside (const Local2DPoint &p, float tollerance) const
 Determine if a point is inside the bounds, taking a tollerance into account. More...
 
virtual bool inside (const Local2DPoint &p, const LocalError &err, float scale=1.f) const
 Determine if a 2D point is inside the bounds, taking error into account. More...
 
std::pair< float, float > const & phiSpan () const
 
std::pair< float, float > const & rSpan () const
 
virtual float significanceInside (const Local3DPoint &, const LocalError &) const
 
virtual float widthAtHalfLength () const
 Width at half length. Useful for e.g. pitch definition. More...
 
std::pair< float, float > const & zSpan () const
 
virtual ~Bounds ()
 

Private Attributes

float theRmaxZmax
 
float theRmaxZmin
 
float theRminZmax
 
float theRminZmin
 
float theZmax
 
float theZmin
 

Detailed Description

Cone bounds. The cone axis coincides with the Z axis. The bounds limit the length at constant Z, and allow finite thickness.

Warning
: should be revised, probably works only when local and global Z axis coincide

Definition at line 23 of file SimpleConeBounds.h.

Constructor & Destructor Documentation

SimpleConeBounds::SimpleConeBounds ( float  zmin,
float  rmin_zmin,
float  rmax_zmin,
float  zmax,
float  rmin_zmax,
float  rmax_zmax 
)
inline

Construct from inner/outer radius on the two Z faces.

Definition at line 26 of file SimpleConeBounds.h.

References std::swap(), theRmaxZmax, theRmaxZmin, theRminZmax, theRminZmin, theZmax, and theZmin.

Referenced by clone().

27  : theZmin(zmin),
28  theRminZmin(rmin_zmin),
29  theRmaxZmin(rmax_zmin),
30  theZmax(zmax),
31  theRminZmax(rmin_zmax),
32  theRmaxZmax(rmax_zmax) {
33  if (theZmin > theZmax) {
36  }
41  }
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)

Member Function Documentation

Bounds* SimpleConeBounds::clone ( void  ) const
inlineoverridevirtual

Implements Bounds.

Definition at line 73 of file SimpleConeBounds.h.

References SimpleConeBounds().

73 { return new SimpleConeBounds(*this); }
SimpleConeBounds(float zmin, float rmin_zmin, float rmax_zmin, float zmax, float rmin_zmax, float rmax_zmax)
Construct from inner/outer radius on the two Z faces.
bool SimpleConeBounds::inside ( const Local3DPoint ) const
inlineoverridevirtual

Determine if the point is inside the bounds.

Implements Bounds.

Definition at line 53 of file SimpleConeBounds.h.

References PV3DBase< T, PVType, FrameType >::perp(), theRmaxZmax, theRmaxZmin, theRminZmax, theRminZmin, theZmax, theZmin, and PV3DBase< T, PVType, FrameType >::z().

Referenced by inside().

53  {
54  float lrmin = (p.z() - theZmin) * (theRminZmax - theRminZmin) / (theZmax - theZmin);
55  float lrmax = (p.z() - theZmin) * (theRmaxZmax - theRmaxZmin) / (theZmax - theZmin);
56  return p.z() > theZmin && p.z() < theZmax && p.perp() > lrmin && p.perp() < lrmax;
57  }
bool SimpleConeBounds::inside ( const Local3DPoint ,
const LocalError ,
float  scale 
) const
inlineoverridevirtual

Determine if a point is inside the bounds, taking error into account.

Implements Bounds.

Definition at line 59 of file SimpleConeBounds.h.

References inside(), mathSSE::sqrt(), theRmaxZmax, theRmaxZmin, theRminZmax, theRminZmin, theZmax, theZmin, createJobs::tmp, and LocalError::yy().

59  {
60  // std::cout << "WARNING: SimpleConeBounds::inside(const Local3DPoint&, const LocalError not fully implemented"
61  // << std::endl; // FIXME! does not check R.
65  theZmax + sqrt(err.yy()) * scale,
67  theRmaxZmax);
68  return tmp.inside(p);
69  }
T sqrt(T t)
Definition: SSEVec.h:19
tmp
align.sh
Definition: createJobs.py:716
virtual bool SimpleConeBounds::inside ( const Local2DPoint p,
const LocalError err 
) const
inlinevirtual

Definition at line 71 of file SimpleConeBounds.h.

References Bounds::inside().

71 { return Bounds::inside(p, err); }
virtual bool inside(const Local3DPoint &) const =0
Determine if the point is inside the bounds.
float SimpleConeBounds::length ( ) const
inlineoverridevirtual
Geom::Theta<float> SimpleConeBounds::openingAngle ( ) const
inline

Definition at line 76 of file SimpleConeBounds.h.

References length(), Geom::pi(), theRmaxZmax, theRmaxZmin, theRminZmax, theRminZmin, and theta().

76  {
77  float theta = atan(((theRmaxZmax + theRminZmax) / 2. - (theRmaxZmin + theRminZmin) / 2.) / length());
78  return Geom::Theta<float>(theta < 0 ? theta + Geom::pi() : theta);
79  }
float length() const override
Length along Z.
Geom::Theta< T > theta() const
constexpr double pi()
Definition: Pi.h:31
float SimpleConeBounds::thickness ( ) const
inlineoverridevirtual

Thickness in the middle (Z center). Maybe it's useless, but it is pure abstract in Bounds...

Implements Bounds.

Definition at line 49 of file SimpleConeBounds.h.

References Bounds::inside(), theRmaxZmax, theRmaxZmin, theRminZmax, and theRminZmin.

GlobalPoint SimpleConeBounds::vertex ( ) const
inline

Definition at line 81 of file SimpleConeBounds.h.

References funct::abs(), flavorHistoryFilter_cfi::dr, SiStripPI::max, theRmaxZmax, theRmaxZmin, theRminZmax, theRminZmin, theZmax, and theZmin.

Referenced by Tau.Tau::dxy().

81  {
82  float rAtZmax = (theRmaxZmax + theRminZmax) / 2.;
83  float rAtZmin = (theRmaxZmin + theRminZmin) / 2.;
84  float dr = (rAtZmax - rAtZmin);
85 
86  if (std::abs(dr) < 0.0001) { // handle degenerate case (cone->cylinder)
88  } else {
89  return GlobalPoint(0, 0, (theZmin * rAtZmax - theZmax * rAtZmin) / dr);
90  }
91  }
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
float SimpleConeBounds::width ( ) const
inlineoverridevirtual

Member Data Documentation

float SimpleConeBounds::theRmaxZmax
private

Definition at line 99 of file SimpleConeBounds.h.

Referenced by inside(), openingAngle(), SimpleConeBounds(), thickness(), vertex(), and width().

float SimpleConeBounds::theRmaxZmin
private

Definition at line 96 of file SimpleConeBounds.h.

Referenced by inside(), openingAngle(), SimpleConeBounds(), thickness(), vertex(), and width().

float SimpleConeBounds::theRminZmax
private

Definition at line 98 of file SimpleConeBounds.h.

Referenced by inside(), openingAngle(), SimpleConeBounds(), thickness(), and vertex().

float SimpleConeBounds::theRminZmin
private

Definition at line 95 of file SimpleConeBounds.h.

Referenced by inside(), openingAngle(), SimpleConeBounds(), thickness(), and vertex().

float SimpleConeBounds::theZmax
private

Definition at line 97 of file SimpleConeBounds.h.

Referenced by inside(), length(), SimpleConeBounds(), and vertex().

float SimpleConeBounds::theZmin
private

Definition at line 94 of file SimpleConeBounds.h.

Referenced by inside(), length(), SimpleConeBounds(), and vertex().