#include <DetDesc/SolidPolycone.h>
Inheritance diagram for SolidPolycone:
Public Types | ||||
| typedef std::pair< double, double > | Pair | |||
| typedef std::pair< double, Pair > | Triplet | |||
| typedef std::vector< Triplet > | Triplets | |||
| typedef Triplets::const_iterator | Iterator | |||
| typedef double | Tick | |||
| useful type definition for dealing with intersections of the solid and the line | ||||
| typedef StaticArray< Tick, 64 > | Ticks | |||
| SUCCESS | ||||
| NO_INTERFACE | ||||
| VERSMISMATCH | ||||
| LAST_ERROR | ||||
| enum | Status | |||
Public Member Functions | ||||
| SolidPolycone (const std::string &Name, const Triplets &Params, const double StartPhiAngle=0, const double DeltaPhiAngle=360 *Gaudi::Units::degree) | ||||
| Standard constructor. | ||||
| virtual | ~SolidPolycone () | |||
| destructor | ||||
| std::string | typeName () const | |||
| ||||
| bool | isInside (const Gaudi::XYZPoint &point) const | |||
| ||||
| bool | isInside (const Gaudi::Polar3DPoint &point) const | |||
| bool | isInside (const Gaudi::RhoZPhiPoint &point) const | |||
| const ISolid * | cover () const | |||
| ||||
| virtual std::ostream & | printOut (std::ostream &os=std::cout) const | |||
| ||||
| virtual MsgStream & | printOut (MsgStream &) const | |||
| ||||
| virtual unsigned int | intersectionTicks (const Gaudi::XYZPoint &Point, const Gaudi::XYZVector &Vector, ISolid::Ticks &ticks) const | |||
| ||||
| virtual unsigned int | intersectionTicks (const Gaudi::Polar3DPoint &Point, const Gaudi::Polar3DVector &Vector, ISolid::Ticks &ticks) const | |||
| virtual unsigned int | intersectionTicks (const Gaudi::RhoZPhiPoint &Point, const Gaudi::RhoZPhiVector &Vector, ISolid::Ticks &ticks) const | |||
| unsigned int | number () const | |||
| accessor to number of triplets | ||||
| const Triplets & | triplets () const | |||
| accessor to all triplets | ||||
| Triplets::const_iterator | begin () const | |||
| accessor to triplets begin iterator | ||||
| Triplets::const_iterator | end () const | |||
| accessor to triplets end iterator | ||||
| double | z (Triplets::size_type index) const | |||
| accessor to z-position of plane indexed with some index | ||||
| double | RMax (Triplets::size_type index) const | |||
| accessor to rMax of plane indexed with some index | ||||
| double | RMin (Triplets::size_type index) const | |||
| accessor to rMin of plane indexed with some index | ||||
| double | startPhiAngle () const | |||
| accessor to start phi angle | ||||
| double | deltaPhiAngle () const | |||
| accessor to delta phi angle | ||||
| Triplets::size_type | index (const double thisz) const | |||
| find the index from the z position | ||||
| Ticks::size_type | maxNumberOfTicks () const | |||
| Calculate the maximum number of ticks that a straight line could make with this solid. | ||||
| virtual const std::string & | name () const | |||
|
| ||||
| virtual ISolid * | reset () | |||
| ||||
| virtual unsigned int | intersectionTicks (const Gaudi::XYZPoint &Point, const Gaudi::XYZVector &Vector, const ISolid::Tick &tickMin, const ISolid::Tick &tickMax, ISolid::Ticks &ticks) const | |||
| ||||
| virtual unsigned int | intersectionTicks (const Gaudi::Polar3DPoint &Point, const Gaudi::Polar3DVector &Vector, const ISolid::Tick &tickMin, const ISolid::Tick &tickMax, ISolid::Ticks &ticks) const | |||
| virtual unsigned int | intersectionTicks (const Gaudi::RhoZPhiPoint &Point, const Gaudi::RhoZPhiVector &Vector, const ISolid::Tick &tickMin, const ISolid::Tick &tickMax, ISolid::Ticks &ticks) const | |||
| virtual StatusCode | queryInterface (const InterfaceID &ID, void **ppI) | |||
| ||||
| virtual unsigned long | addRef () | |||
| ||||
| virtual unsigned long | release () | |||
| ||||
| virtual const ISolid * | coverTop () const | |||
| ||||
| double | xMin () const | |||
| accessor to "minimal x" value of the solid ("bounding box") | ||||
| double | xMax () const | |||
| accessor to "maximal x" value of the solid ("bounding box") | ||||
| double | yMin () const | |||
| accessor to "minimal y" value of the solid ("bounding box") | ||||
| double | yMax () const | |||
| accessor to "maximal y" value of the solid ("bounding box") | ||||
| double | zMin () const | |||
| accessor to "minimal z" value of the solid ("bounding box") | ||||
| double | zMax () const | |||
| accessor to "maximal z" value of the solid ("bounding box") | ||||
| double | rMax () const | |||
| accessor to "maximal r" value of the solid ("bounding sphere") | ||||
| double | rhoMax () const | |||
| accessor to "maximal rho" value of the solid ("bounding sphere") | ||||
Static Public Member Functions | ||||
| static const InterfaceID & | interfaceID () | |||
| retrieve the uninque interface identifier | ||||
Public Attributes | ||||
| SUCCESS | ||||
| NO_INTERFACE | ||||
| VERSMISMATCH | ||||
| LAST_ERROR | ||||
Protected Member Functions | ||||
| SolidPolycone (const std::string &Name="Anonymous Polycone") | ||||
| default protected constructor | ||||
| void | setBP () | |||
| set bounding parameters | ||||
| template<class aPoint> | ||||
| bool | isOutBBox (const aPoint &point, const double tolerance) const | |||
| Fast check if the point is outside the bounding box of the solid. | ||||
| template<class aPoint> | ||||
| bool | isOutBBox (const aPoint &point) const | |||
| Fast check if the point is outside the bounding box of the solid. | ||||
| template<class aPointA, class aPointB> | ||||
| bool | isOutBBox (const aPointA &p1, const aPointB &p2, const double tolerance) const | |||
| Fast check if the segment of the line between two points is outside the bounding box. | ||||
| template<class aPointA, class aPointB> | ||||
| bool | isOutBBox (const aPointA &p1, const aPointB &p2) const | |||
| Fast check if the segment of the line between two points is outside the bounding box. | ||||
| template<class aPoint, class aVector> | ||||
| bool | isOutBBox (const aPoint &p, const aVector &v, const ISolid::Tick &tmin, const ISolid::Tick &tmax, const double tolerance) const | |||
| Fast check if the segment of the line between two points is outside the bounding box. | ||||
| template<class aPoint, class aVector> | ||||
| bool | isOutBBox (const aPoint &p, const aVector &v, const ISolid::Tick &tmin, const ISolid::Tick &tmax) const | |||
| Fast check if the segment of the line between two points is outside the bounding box. | ||||
| template<class aPoint> | ||||
| bool | isOutBSphere (const aPoint &point, const double tolerance) const | |||
| Fast check if the point is outside the bounding sphere of the solid. | ||||
| template<class aPoint> | ||||
| bool | isOutBSphere (const aPoint &point) const | |||
| Fast check if the point is outside the bounding sphere of the solid. | ||||
| template<class aPoint> | ||||
| bool | isOutBCylinder (const aPoint &point, const double tolerance) const | |||
| Fast check if the point is outside the bounding cylinder of the solid. | ||||
| template<class aPoint> | ||||
| bool | isOutBCylinder (const aPoint &point) const | |||
| Fast check if the point is outside the bounding cylinder of the solid. | ||||
| template<class aPoint, class aVector> | ||||
| bool | crossBSphere (const aPoint &p, const aVector &v, const double tolerance=0) const | |||
| Fast check if the line cross the bounding sphere. | ||||
| template<class aPoint, class aVector> | ||||
| bool | crossBCylinder (const aPoint &p, const aVector &v, const double tolerance=0) const | |||
| Fast check if the line cross the surface of bounding cylinder. | ||||
| void | setXMin (const double value) | |||
| set "minimal x" for the solid | ||||
| void | setXMax (const double value) | |||
| set "maximal x" for the solid | ||||
| void | setYMin (const double value) | |||
| set "minimal y" for the solid | ||||
| void | setYMax (const double value) | |||
| set "maximal y" for the solid | ||||
| void | setZMin (const double value) | |||
| set "minimal z" for the solid | ||||
| void | setZMax (const double value) | |||
| set "maximal z" for the solid | ||||
| void | setRMax (const double value) | |||
| set "maximal r" for the solid | ||||
| void | setRhoMax (const double value) | |||
| set "maximal r" for the solid | ||||
| void | checkBP () const | |||
check bounding parameters
| ||||
| IMessageSvc * | msgSvc () const | |||
| accessor to massage service | ||||
Static Protected Member Functions | ||||
| static Triplets | makeTriplets (double ZHalfLength, double OuterRadiusMinusZ, double OuterRadiusPlusZ, double InnerRadiusMinusZ, double InnerRadiusPlusZ) | |||
| static function to generate triplets for a cone | ||||
| static Triplets | makeTriplets (double ZHalfLength, double OuterRadius, double InnerRadius) | |||
| static function to generate triplets for a tubs | ||||
Protected Attributes | ||||
| std::string | m_name | |||
| name of the solid | ||||
| ISolid * | m_cover | |||
| pointer to cover | ||||
| double | m_xmin | |||
| double | m_ymin | |||
| double | m_zmin | |||
| double | m_xmax | |||
| double | m_ymax | |||
| double | m_zmax | |||
| double | m_rmax | |||
| double | m_rhomax | |||
| DetDesc::Services * | m_services | |||
| reference to services | ||||
Private Member Functions | ||||
| SolidPolycone (const SolidPolycone &) | ||||
| no copy-constructor | ||||
| SolidPolycone & | operator= (const SolidPolycone &) | |||
| no assignment | ||||
| template<class aPoint> | ||||
| bool | isInsideImpl (const aPoint &point) const | |||
| implementation of isInside | ||||
| template<class aPoint, class aVector> | ||||
| unsigned int | intersectionTicksImpl (const aPoint &Point, const aVector &Vector, ISolid::Ticks &ticks) const | |||
| bool | insidePhi (const double phi) const | |||
| check if phi is in phi range | ||||
| bool | noPhiGap () const | |||
| gap in phi ? | ||||
Private Attributes | ||||
| Triplets | m_triplets | |||
| vector of parameters | ||||
| double | m_startPhiAngle | |||
| start phi angle | ||||
| double | m_deltaPhiAngle | |||
| delta phi angle | ||||
Friends | ||||
| class | SolidFactory< SolidPolycone > | |||
| friend factory for instantiation | ||||
Classes | ||||
| class | CmpZ | |||
| simple utility class (functor) for comparizon of z-posiiton of the triplet More... | ||||
| struct | sort_first | |||
Definition at line 33 of file SolidPolycone.h.
| typedef std::pair<double,double> SolidPolycone::Pair |
Definition at line 40 of file SolidPolycone.h.
| typedef std::pair<double,Pair> SolidPolycone::Triplet |
Definition at line 41 of file SolidPolycone.h.
| typedef std::vector<Triplet> SolidPolycone::Triplets |
Definition at line 42 of file SolidPolycone.h.
| typedef Triplets::const_iterator SolidPolycone::Iterator |
Definition at line 43 of file SolidPolycone.h.
typedef double ISolid::Tick [inherited] |
typedef StaticArray<Tick,64> ISolid::Ticks [inherited] |
| SolidPolycone::SolidPolycone | ( | const std::string & | Name, | |
| const Triplets & | Params, | |||
| const double | StartPhiAngle = 0, |
|||
| const double | DeltaPhiAngle = 360 *Gaudi::Units::degree | |||
| ) |
Standard constructor.
| Name | the name of the polycone | |
| Params | vector of "triplets" (z,(rMax,rMin)) | |
| StartPhiAngle | the azimuthal angle phi at which polycone "begins" | |
| DeltaPhiAngle | the opening angle |
| virtual SolidPolycone::~SolidPolycone | ( | ) | [virtual] |
destructor
| SolidPolycone::SolidPolycone | ( | const std::string & | Name = "Anonymous Polycone" |
) | [protected] |
default protected constructor
| Name | name of conical tube segment |
| SolidPolycone::SolidPolycone | ( | const SolidPolycone & | ) | [private] |
no copy-constructor
| std::string SolidPolycone::typeName | ( | ) | const [inline, virtual] |
Implements ISolid.
Definition at line 65 of file SolidPolycone.h.
| bool SolidPolycone::isInside | ( | const Gaudi::XYZPoint & | point | ) | const [virtual] |
| bool SolidPolycone::isInside | ( | const Gaudi::Polar3DPoint & | point | ) | const [virtual] |
Implements ISolid.
| bool SolidPolycone::isInside | ( | const Gaudi::RhoZPhiPoint & | point | ) | const [virtual] |
Implements ISolid.
| const ISolid* SolidPolycone::cover | ( | ) | const [virtual] |
| virtual std::ostream& SolidPolycone::printOut | ( | std::ostream & | os = std::cout |
) | const [virtual] |
| virtual unsigned int SolidPolycone::intersectionTicks | ( | const Gaudi::XYZPoint & | Point, | |
| const Gaudi::XYZVector & | Vector, | |||
| ISolid::Ticks & | ticks | |||
| ) | const [virtual] |

is a point on the line
is a vector along the line
) and Vector (
) are defined in local reference system of the solid| Point | initial point for the line | |
| Vector | vector along the line | |
| ticks | output container of "Ticks" |
Reimplemented from SolidBase.
| virtual unsigned int SolidPolycone::intersectionTicks | ( | const Gaudi::Polar3DPoint & | Point, | |
| const Gaudi::Polar3DVector & | Vector, | |||
| ISolid::Ticks & | ticks | |||
| ) | const [virtual] |
Reimplemented from SolidBase.
| virtual unsigned int SolidPolycone::intersectionTicks | ( | const Gaudi::RhoZPhiPoint & | Point, | |
| const Gaudi::RhoZPhiVector & | Vector, | |||
| ISolid::Ticks & | ticks | |||
| ) | const [virtual] |
Reimplemented from SolidBase.
| unsigned int SolidPolycone::number | ( | ) | const [inline] |
accessor to number of triplets
Definition at line 141 of file SolidPolycone.h.
00141 { return triplets().size() ; }
| const Triplets& SolidPolycone::triplets | ( | ) | const [inline] |
accessor to all triplets
Definition at line 147 of file SolidPolycone.h.
00147 { return m_triplets ; }
| Triplets::const_iterator SolidPolycone::begin | ( | ) | const [inline] |
accessor to triplets begin iterator
Definition at line 153 of file SolidPolycone.h.
00153 { return triplets().begin(); }
| Triplets::const_iterator SolidPolycone::end | ( | ) | const [inline] |
accessor to triplets end iterator
Definition at line 159 of file SolidPolycone.h.
00159 { return triplets().end (); }
| double SolidPolycone::z | ( | Triplets::size_type | index | ) | const [inline] |
accessor to z-position of plane indexed with some index
| index | plane index |
Definition at line 165 of file SolidPolycone.h.
00166 { return ( begin() + index )->first ; }
| double SolidPolycone::RMax | ( | Triplets::size_type | index | ) | const [inline] |
accessor to rMax of plane indexed with some index
| index | plane index |
Definition at line 172 of file SolidPolycone.h.
00173 { return ( begin() + index )->second.first ; }
| double SolidPolycone::RMin | ( | Triplets::size_type | index | ) | const [inline] |
accessor to rMin of plane indexed with some index
| index | plane index |
Definition at line 179 of file SolidPolycone.h.
00180 { return ( begin() + index )->second.second ; }
| double SolidPolycone::startPhiAngle | ( | ) | const [inline] |
accessor to start phi angle
Definition at line 185 of file SolidPolycone.h.
00185 { return m_startPhiAngle;}
| double SolidPolycone::deltaPhiAngle | ( | ) | const [inline] |
accessor to delta phi angle
Definition at line 190 of file SolidPolycone.h.
00190 { return m_deltaPhiAngle;}
| Triplets::size_type SolidPolycone::index | ( | const double | thisz | ) | const [inline] |
find the index from the z position
| thisz | z-position |
Definition at line 196 of file SolidPolycone.h.
00197 { 00198 Triplets::size_type i = thisz < z(0) || thisz > z(number()-1) ? number()-1 : 0 ; 00199 for(; i<number()-1 && z(i+1) <= thisz; ++i) {} 00200 return i ; 00201 }
| Ticks::size_type SolidPolycone::maxNumberOfTicks | ( | ) | const [inline, virtual] |
Calculate the maximum number of ticks that a straight line could make with this solid.
Implements ISolid.
Definition at line 207 of file SolidPolycone.h.
00207 { return (number()+1)*2 ; }
| static Triplets SolidPolycone::makeTriplets | ( | double | ZHalfLength, | |
| double | OuterRadiusMinusZ, | |||
| double | OuterRadiusPlusZ, | |||
| double | InnerRadiusMinusZ, | |||
| double | InnerRadiusPlusZ | |||
| ) | [static, protected] |
static function to generate triplets for a cone
| static Triplets SolidPolycone::makeTriplets | ( | double | ZHalfLength, | |
| double | OuterRadius, | |||
| double | InnerRadius | |||
| ) | [inline, static, protected] |
static function to generate triplets for a tubs
Definition at line 232 of file SolidPolycone.h.
00234 { 00235 return makeTriplets(ZHalfLength,OuterRadius,OuterRadius,InnerRadius,InnerRadius) ; }
| void SolidPolycone::setBP | ( | ) | [protected] |
set bounding parameters
| SolidPolycone& SolidPolycone::operator= | ( | const SolidPolycone & | ) | [private] |
no assignment
| bool SolidPolycone::isInsideImpl | ( | const aPoint & | point | ) | const [private] |
implementation of isInside
| point | reference to any kind of point with x(), y(), z() |
| unsigned int SolidPolycone::intersectionTicksImpl | ( | const aPoint & | Point, | |
| const aVector & | Vector, | |||
| ISolid::Ticks & | ticks | |||
| ) | const [private] |
| bool SolidPolycone::insidePhi | ( | const double | phi | ) | const [inline, private] |
check if phi is in phi range
Definition at line 267 of file SolidPolycone.h.
00267 { 00268 return 00269 noPhiGap() || 00270 ( startPhiAngle () <= phi && 00271 startPhiAngle () + deltaPhiAngle() >= phi ) || 00272 ( startPhiAngle () <= phi + 2*M_PI && 00273 startPhiAngle () + deltaPhiAngle() >= phi + 2*M_PI ) ; 00274 }
| bool SolidPolycone::noPhiGap | ( | ) | const [inline, private] |
gap in phi ?
Definition at line 277 of file SolidPolycone.h.
00277 { return m_deltaPhiAngle == 360 * Gaudi::Units::degree ; }
| virtual const std::string& SolidBase::name | ( | ) | const [inline, virtual, inherited] |
| virtual ISolid* SolidBase::reset | ( | ) | [virtual, inherited] |
Implements ISolid.
Reimplemented in SolidBoolean, and SolidChild.
| virtual unsigned int SolidBase::intersectionTicks | ( | const Gaudi::XYZPoint & | Point, | |
| const Gaudi::XYZVector & | Vector, | |||
| const ISolid::Tick & | tickMin, | |||
| const ISolid::Tick & | tickMax, | |||
| ISolid::Ticks & | ticks | |||
| ) | const [virtual, inherited] |

is a point on the line
is a vector along the line
) and Vector (
) are defined in local reference system of the solid| Point | initial point for the line | |
| Vector | vector along the line | |
| tickMin | minimum value of Tick | |
| tickMax | maximu value of Tick | |
| ticks | output container of "Ticks" |
Implements ISolid.
Reimplemented in SolidBoolean, SolidBox, SolidCons, and SolidTubs.
| virtual unsigned int SolidBase::intersectionTicks | ( | const Gaudi::Polar3DPoint & | Point, | |
| const Gaudi::Polar3DVector & | Vector, | |||
| const ISolid::Tick & | tickMin, | |||
| const ISolid::Tick & | tickMax, | |||
| ISolid::Ticks & | ticks | |||
| ) | const [virtual, inherited] |
| virtual unsigned int SolidBase::intersectionTicks | ( | const Gaudi::RhoZPhiPoint & | Point, | |
| const Gaudi::RhoZPhiVector & | Vector, | |||
| const ISolid::Tick & | tickMin, | |||
| const ISolid::Tick & | tickMax, | |||
| ISolid::Ticks & | ticks | |||
| ) | const [virtual, inherited] |
| virtual StatusCode SolidBase::queryInterface | ( | const InterfaceID & | ID, | |
| void ** | ppI | |||
| ) | [virtual, inherited] |
| ID | unique interafce identifier | |
| ppI | placeholder for returned interface |
Implements IInterface.
| virtual unsigned long SolidBase::addRef | ( | ) | [virtual, inherited] |
Implements IInterface.
| virtual unsigned long SolidBase::release | ( | ) | [virtual, inherited] |
Implements IInterface.
| virtual const ISolid* SolidBase::coverTop | ( | ) | const [virtual, inherited] |
Implements ISolid.
Reimplemented in SolidBoolean, SolidBox, SolidChild, and SolidUnion.
| double SolidBase::xMin | ( | ) | const [inline, inherited] |
accessor to "minimal x" value of the solid ("bounding box")
Definition at line 161 of file SolidBase.h.
00161 { return m_xmin ; }
| double SolidBase::xMax | ( | ) | const [inline, inherited] |
accessor to "maximal x" value of the solid ("bounding box")
Definition at line 163 of file SolidBase.h.
00163 { return m_xmax ; }
| double SolidBase::yMin | ( | ) | const [inline, inherited] |
accessor to "minimal y" value of the solid ("bounding box")
Definition at line 166 of file SolidBase.h.
00166 { return m_ymin ; }
| double SolidBase::yMax | ( | ) | const [inline, inherited] |
accessor to "maximal y" value of the solid ("bounding box")
Definition at line 168 of file SolidBase.h.
00168 { return m_ymax ; }
| double SolidBase::zMin | ( | ) | const [inline, inherited] |
accessor to "minimal z" value of the solid ("bounding box")
Definition at line 171 of file SolidBase.h.
00171 { return m_zmin ; }
| double SolidBase::zMax | ( | ) | const [inline, inherited] |
accessor to "maximal z" value of the solid ("bounding box")
Definition at line 173 of file SolidBase.h.
00173 { return m_zmax ; }
| double SolidBase::rMax | ( | ) | const [inline, inherited] |
accessor to "maximal r" value of the solid ("bounding sphere")
Definition at line 176 of file SolidBase.h.
00176 { return m_rmax ; }
| double SolidBase::rhoMax | ( | ) | const [inline, inherited] |
accessor to "maximal rho" value of the solid ("bounding sphere")
Definition at line 179 of file SolidBase.h.
00179 { return m_rhomax ; }
| bool SolidBase::isOutBBox | ( | const aPoint & | point, | |
| const double | tolerance | |||
| ) | const [inline, protected, inherited] |
Fast check if the point is outside the bounding box of the solid.
| point | point to be checked | |
| tolerance | tolerance parameter |
Definition at line 190 of file SolidBase.h.
00192 { 00193 return 00194 point.z () < zMin () - tolerance || 00195 point.z () > zMax () + tolerance || 00196 point.x () < xMin () - tolerance || 00197 point.x () > xMax () + tolerance || 00198 point.y () < yMin () - tolerance || 00199 point.y () > yMax () + tolerance ; 00200 };
| bool SolidBase::isOutBBox | ( | const aPoint & | point | ) | const [inline, protected, inherited] |
Fast check if the point is outside the bounding box of the solid.
| point | point to be checked |
Definition at line 207 of file SolidBase.h.
00208 { 00209 return 00210 point.z () < zMin () || 00211 point.z () > zMax () || 00212 point.x () < xMin () || 00213 point.x () > xMax () || 00214 point.y () < yMin () || 00215 point.y () > yMax () ; 00216 };
| bool SolidBase::isOutBBox | ( | const aPointA & | p1, | |
| const aPointB & | p2, | |||
| const double | tolerance | |||
| ) | const [inline, protected, inherited] |
Fast check if the segment of the line between two points is outside the bounding box.
| p1 | first point of the segment | |
| p2 | second point of the segment | |
| tolerance | tolerance parameter |
Definition at line 283 of file SolidBase.h.
00286 { 00287 return 00288 ( (p1.z() < zMin()-tolerance && p2.z() < zMin()-tolerance) || 00289 (p1.z() > zMax()+tolerance && p2.z() > zMax()+tolerance) || 00290 (p1.x() < xMin()-tolerance && p2.x() < xMin()-tolerance) || 00291 (p1.x() > xMax()+tolerance && p2.x() > xMax()+tolerance) || 00292 (p1.y() < yMin()-tolerance && p2.y() < yMin()-tolerance) || 00293 (p1.y() > yMax()+tolerance && p2.y() > yMax()+tolerance) ); 00294 };
| bool SolidBase::isOutBBox | ( | const aPointA & | p1, | |
| const aPointB & | p2 | |||
| ) | const [inline, protected, inherited] |
Fast check if the segment of the line between two points is outside the bounding box.
| p1 | first point of the segment | |
| p2 | second point of the segment |
Definition at line 304 of file SolidBase.h.
00306 { 00307 return 00308 ( p1.z() < zMin() && p2.z() < zMin() ) || 00309 ( p1.z() > zMax() && p2.z() > zMax() ) || 00310 ( p1.x() < xMin() && p2.x() < xMin() ) || 00311 ( p1.x() > xMax() && p2.x() > xMax() ) || 00312 ( p1.y() < yMin() && p2.y() < yMin() ) || 00313 ( p1.y() > yMax() && p2.y() > yMax() ) ; 00314 };
| bool SolidBase::isOutBBox | ( | const aPoint & | p, | |
| const aVector & | v, | |||
| const ISolid::Tick & | tmin, | |||
| const ISolid::Tick & | tmax, | |||
| const double | tolerance | |||
| ) | const [inline, protected, inherited] |
Fast check if the segment of the line between two points is outside the bounding box.
| p | first point of the segment | |
| v | vector along the line | |
| tmin | "minimal value of tick" | |
| tmax | "maximal value of tick" | |
| tolerance | tolerance parameter |
Definition at line 327 of file SolidBase.h.
| bool SolidBase::isOutBBox | ( | const aPoint & | p, | |
| const aVector & | v, | |||
| const ISolid::Tick & | tmin, | |||
| const ISolid::Tick & | tmax | |||
| ) | const [inline, protected, inherited] |
Fast check if the segment of the line between two points is outside the bounding box.
| p | first point of the segment | |
| v | vector along the line | |
| tmin | "minimal value of tick" | |
| tmax | "maximal value of tick" |
Definition at line 346 of file SolidBase.h.
| bool SolidBase::isOutBSphere | ( | const aPoint & | point, | |
| const double | tolerance | |||
| ) | const [inline, protected, inherited] |
Fast check if the point is outside the bounding sphere of the solid.
| point | point to be checked | |
| tolerance | tolerance parameter |
Definition at line 225 of file SolidBase.h.
00227 { 00228 const double rmax = rMax() + tolerance ; 00229 return rmax <= 0 || point.mag2() > rmax * rmax ; 00230 };
| bool SolidBase::isOutBSphere | ( | const aPoint & | point | ) | const [inline, protected, inherited] |
Fast check if the point is outside the bounding sphere of the solid.
| point | point to be checked |
Definition at line 237 of file SolidBase.h.
| bool SolidBase::isOutBCylinder | ( | const aPoint & | point, | |
| const double | tolerance | |||
| ) | const [inline, protected, inherited] |
Fast check if the point is outside the bounding cylinder of the solid.
| point | point to be checked | |
| tolerance | tolerance parameter |
Definition at line 250 of file SolidBase.h.
00252 { 00253 const double rhomax = rhoMax() + tolerance ; 00254 return rhomax <= 0 ? true : 00255 point.z () < zMin () - tolerance ? true : 00256 point.z () > zMax () + tolerance ? true : 00257 point.perp2 () > rhomax * rhomax ? true : false ; 00258 };
| bool SolidBase::isOutBCylinder | ( | const aPoint & | point | ) | const [inline, protected, inherited] |
Fast check if the point is outside the bounding cylinder of the solid.
| point | point to be checked |
Definition at line 266 of file SolidBase.h.
00267 { 00268 return 00269 point.z () < zMin () || 00270 point.z () > zMax () || 00271 point.perp2 () > rhoMax () * rhoMax () ; 00272 };
| bool SolidBase::crossBSphere | ( | const aPoint & | p, | |
| const aVector & | v, | |||
| const double | tolerance = 0 | |||
| ) | const [inline, protected, inherited] |
Fast check if the line cross the bounding sphere.
| p | first point on the line | |
| v | vector along the line | |
| tolerance | tolerance parameter |
Definition at line 362 of file SolidBase.h.
00365 { 00366 const double pp = p.mag2 () ; 00367 const double vv = v.mag2 () ; 00368 const double pv = p.Dot ( v ) ; 00369 const double rmax = rMax() + tolerance ; 00370 const double dd = rmax * rmax ; 00371 return ( rmax > 0 && 00372 !(0 == vv && pp > dd) && 00373 !( (vv*pp) - (pv*pv) > vv*dd ) ); 00374 };
| bool SolidBase::crossBCylinder | ( | const aPoint & | p, | |
| const aVector & | v, | |||
| const double | tolerance = 0 | |||
| ) | const [inline, protected, inherited] |
Fast check if the line cross the surface of bounding cylinder.
| p | first point on the line | |
| v | vector along the line | |
| tolerance | tolerance parameter |
Definition at line 384 of file SolidBase.h.
00387 { 00388 const double pp = p.perp2 () ; 00389 const double vv = v.perp2 () ; 00390 const double pv = p.Dot ( v ) - p.z() * v.z() ; 00391 const double rhomax = rhoMax() + tolerance ; 00392 const double dd = rhomax * rhomax ; 00393 return ( rhomax > 0 && 00394 !( 0 == vv && pp > dd ) && 00395 !( (vv*pp) - (pv*pv) > vv*dd ) ); 00396 };
| void SolidBase::setXMin | ( | const double | value | ) | [inline, protected, inherited] |
| void SolidBase::setXMax | ( | const double | value | ) | [inline, protected, inherited] |
| void SolidBase::setYMin | ( | const double | value | ) | [inline, protected, inherited] |
| void SolidBase::setYMax | ( | const double | value | ) | [inline, protected, inherited] |
| void SolidBase::setZMin | ( | const double | value | ) | [inline, protected, inherited] |
| void SolidBase::setZMax | ( | const double | value | ) | [inline, protected, inherited] |
| void SolidBase::setRMax | ( | const double | value | ) | [inline, protected, inherited] |
| void SolidBase::setRhoMax | ( | const double | value | ) | [inline, protected, inherited] |
set "maximal r" for the solid
Definition at line 418 of file SolidBase.h.
00418 { m_rhomax = value ; }
| void SolidBase::checkBP | ( | ) | const [protected, inherited] |
| IMessageSvc* SolidBase::msgSvc | ( | ) | const [protected, inherited] |
accessor to massage service
| static const InterfaceID& ISolid::interfaceID | ( | ) | [inline, static, inherited] |
retrieve the uninque interface identifier
Reimplemented from IInterface.
Definition at line 44 of file ISolid.h.
00044 { return IID_ISolid; }
friend class SolidFactory< SolidPolycone > [friend] |
Triplets SolidPolycone::m_triplets [private] |
double SolidPolycone::m_startPhiAngle [private] |
double SolidPolycone::m_deltaPhiAngle [private] |
std::string SolidBase::m_name [protected, inherited] |
ISolid* SolidBase::m_cover [mutable, protected, inherited] |
double SolidBase::m_xmin [protected, inherited] |
Definition at line 463 of file SolidBase.h.
double SolidBase::m_ymin [protected, inherited] |
Definition at line 464 of file SolidBase.h.
double SolidBase::m_zmin [protected, inherited] |
Definition at line 465 of file SolidBase.h.
double SolidBase::m_xmax [protected, inherited] |
Definition at line 467 of file SolidBase.h.
double SolidBase::m_ymax [protected, inherited] |
Definition at line 468 of file SolidBase.h.
double SolidBase::m_zmax [protected, inherited] |
Definition at line 469 of file SolidBase.h.
double SolidBase::m_rmax [protected, inherited] |
Definition at line 471 of file SolidBase.h.
double SolidBase::m_rhomax [protected, inherited] |
Definition at line 472 of file SolidBase.h.
DetDesc::Services* SolidBase::m_services [protected, inherited] |
1.4.7