#include <DetDesc/SolidTrd.h>
Inheritance diagram for SolidTrd:
Public Types | ||||
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 | ||||
SolidTrd (const std::string &name, const double zHalfLength, const double XHalfLength1, const double YHalfLength1, const double XHalfLength2, const double YHalfLength2) | ||||
constructor | ||||
virtual | ~SolidTrd () | |||
destructor | ||||
std::string | typeName () const | |||
| ||||
const ISolid * | cover () const | |||
| ||||
virtual std::ostream & | printOut (std::ostream &os=std::cout) const | |||
| ||||
virtual MsgStream & | printOut (MsgStream &os) const | |||
| ||||
double | xHalfLength1 () const | |||
half size in x at point 1 | ||||
double | xHalfLength2 () const | |||
half size in x at point 2 | ||||
double | yHalfLength1 () const | |||
half size in y at point 1 | ||||
double | yHalfLength2 () const | |||
half size in y at point 2 | ||||
double | zHalfLength () const | |||
half size in z | ||||
double | xLength1 () const | |||
full size in x at point 1 | ||||
double | xLength2 () const | |||
full size in x at point 2 | ||||
double | yLength1 () const | |||
full size in y at point 1 | ||||
double | yLength2 () const | |||
full size in y at point 2 | ||||
double | zLength () const | |||
full size in z | ||||
virtual const std::string & | name () const | |||
| ||||
virtual ISolid * | reset () | |||
| ||||
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 | |||
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") | ||||
virtual bool | isInside (const Gaudi::XYZPoint &point) const =0 | |||
check for the given 3D-point. | ||||
virtual bool | isInside (const Gaudi::Polar3DPoint &point) const =0 | |||
virtual bool | isInside (const Gaudi::RhoZPhiPoint &point) const =0 | |||
virtual Ticks::size_type | maxNumberOfTicks () const =0 | |||
Calculate the maximum number of ticks that a straight line could make with this solid. | ||||
Static Public Member Functions | ||||
static const InterfaceID & | interfaceID () | |||
retrieve the uninque interface identifier | ||||
Public Attributes | ||||
SUCCESS | ||||
NO_INTERFACE | ||||
VERSMISMATCH | ||||
LAST_ERROR | ||||
Protected Types | ||||
typedef std::vector< Gaudi::Plane3D > | PLANES | |||
useful type for vector of planes | ||||
typedef std::vector< Gaudi::XYZPoint > | VERTICES | |||
Protected Member Functions | ||||
SolidTrd (const std::string &name="Anonymous TRD") | ||||
constructor | ||||
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 | ||||
virtual bool | isInside (const Gaudi::XYZPoint &point) const | |||
| ||||
virtual bool | isInside (const Gaudi::Polar3DPoint &point) const | |||
virtual bool | isInside (const Gaudi::RhoZPhiPoint &point) 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 | |||
Ticks::size_type | maxNumberOfTicks () const | |||
Calculate the maximum number of ticks that a straight line could make with this solid. | ||||
bool | addFace (const Gaudi::XYZPoint &Point1, const Gaudi::XYZPoint &Point2, const Gaudi::XYZPoint &Point3) | |||
add a face/plane given with 3 points | ||||
bool | addFace (const Gaudi::XYZPoint &Point1, const Gaudi::XYZPoint &Point2, const Gaudi::XYZPoint &Point3, const Gaudi::XYZPoint &Point4) | |||
add a face/plane given with 4 points | ||||
const PLANES & | planes () const | |||
return vector of faces/planes | ||||
template<class aPoint> | ||||
bool | inside (const aPoint &Point, const Gaudi::Plane3D &Plane) const | |||
define "inside" method for the plane. | ||||
void | setBP () | |||
set bounding parameters | ||||
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 | ||||
PLANES | m_ph_planes | |||
vector of faces/planes | ||||
VERTICES | m_ph_vertices | |||
Private Member Functions | ||||
void | makeAll () | |||
initialize the polihedron base
| ||||
SolidTrd (const SolidTrd &) | ||||
SolidTrd & | operator= (const SolidTrd &) | |||
Private Attributes | ||||
double | m_trd_zHalfLength | |||
data members - TRD parameters | ||||
double | m_trd_xHalfLength1 | |||
double | m_trd_xHalfLength2 | |||
double | m_trd_yHalfLength1 | |||
double | m_trd_yHalfLength2 | |||
Friends | ||||
class | SolidFactory< SolidTrd > | |||
friend factory for instantiation |
Definition at line 24 of file SolidTrd.h.
typedef double ISolid::Tick [inherited] |
typedef StaticArray<Tick,64> ISolid::Ticks [inherited] |
typedef std::vector<Gaudi::Plane3D> SolidPolyHedronHelper::PLANES [inherited] |
typedef std::vector<Gaudi::XYZPoint> SolidPolyHedronHelper::VERTICES [inherited] |
SolidTrd::SolidTrd | ( | const std::string & | name, | |
const double | zHalfLength, | |||
const double | XHalfLength1, | |||
const double | YHalfLength1, | |||
const double | XHalfLength2, | |||
const double | YHalfLength2 | |||
) |
constructor
name | name of the solid object | |
zHalfLength | half-length in z-direction | |
XHalfLength1 | half-length in x-direction at z1 | |
YHalfLength1 | half-length in y-direction at z1 | |
XHalfLength2 | half-length in x-direction at z2 | |
YHalfLength2 | half-length in y-direction at z2 |
SolidException | wrong parameter range |
virtual SolidTrd::~SolidTrd | ( | ) | [virtual] |
destructor
SolidTrd::SolidTrd | ( | const std::string & | name = "Anonymous TRD" |
) | [protected] |
constructor
name | name of trd object |
SolidTrd::SolidTrd | ( | const SolidTrd & | ) | [private] |
std::string SolidTrd::typeName | ( | ) | const [inline, virtual] |
Implements ISolid.
Definition at line 56 of file SolidTrd.h.
const ISolid* SolidTrd::cover | ( | ) | const [virtual] |
virtual std::ostream& SolidTrd::printOut | ( | std::ostream & | os = std::cout |
) | const [virtual] |
double SolidTrd::xHalfLength1 | ( | ) | const [inline] |
half size in x at point 1
Definition at line 90 of file SolidTrd.h.
00091 { return m_trd_xHalfLength1; };
double SolidTrd::xHalfLength2 | ( | ) | const [inline] |
half size in x at point 2
Definition at line 96 of file SolidTrd.h.
00097 { return m_trd_xHalfLength2; };
double SolidTrd::yHalfLength1 | ( | ) | const [inline] |
half size in y at point 1
Definition at line 102 of file SolidTrd.h.
00103 { return m_trd_yHalfLength1; };
double SolidTrd::yHalfLength2 | ( | ) | const [inline] |
half size in y at point 2
Definition at line 108 of file SolidTrd.h.
00109 { return m_trd_yHalfLength2; };
double SolidTrd::zHalfLength | ( | ) | const [inline] |
half size in z
Definition at line 114 of file SolidTrd.h.
00115 { return m_trd_zHalfLength; };
double SolidTrd::xLength1 | ( | ) | const [inline] |
full size in x at point 1
Definition at line 120 of file SolidTrd.h.
00121 { return m_trd_xHalfLength1 * 2 ; };
double SolidTrd::xLength2 | ( | ) | const [inline] |
full size in x at point 2
Definition at line 126 of file SolidTrd.h.
00127 { return m_trd_xHalfLength2 * 2 ; };
double SolidTrd::yLength1 | ( | ) | const [inline] |
full size in y at point 1
Definition at line 132 of file SolidTrd.h.
00133 { return m_trd_yHalfLength1 * 2 ; };
double SolidTrd::yLength2 | ( | ) | const [inline] |
full size in y at point 2
Definition at line 138 of file SolidTrd.h.
00139 { return m_trd_yHalfLength2 * 2 ; };
double SolidTrd::zLength | ( | ) | const [inline] |
full size in z
Definition at line 144 of file SolidTrd.h.
00145 { return m_trd_zHalfLength * 2 ; };
void SolidTrd::makeAll | ( | ) | [private] |
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, | |||
ISolid::Ticks & | ticks | |||
) | const [virtual, inherited] |
Point | initial point for the line | |
Vector | vector along the line | |
ticks | output container of "Ticks" |
Implements ISolid.
Reimplemented in SolidBoolean, SolidBox, SolidChild, SolidCons, SolidPolycone, SolidPolyHedronHelper, SolidSphere, and SolidTubs.
virtual unsigned int SolidBase::intersectionTicks | ( | const Gaudi::Polar3DPoint & | Point, | |
const Gaudi::Polar3DVector & | Vector, | |||
ISolid::Ticks & | ticks | |||
) | const [virtual, inherited] |
Implements ISolid.
Reimplemented in SolidBoolean, SolidBox, SolidChild, SolidCons, SolidPolycone, SolidPolyHedronHelper, SolidSphere, and SolidTubs.
virtual unsigned int SolidBase::intersectionTicks | ( | const Gaudi::RhoZPhiPoint & | Point, | |
const Gaudi::RhoZPhiVector & | Vector, | |||
ISolid::Ticks & | ticks | |||
) | const [virtual, inherited] |
Implements ISolid.
Reimplemented in SolidBoolean, SolidBox, SolidChild, SolidCons, SolidPolycone, SolidPolyHedronHelper, SolidSphere, and SolidTubs.
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] |
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; }
virtual bool ISolid::isInside | ( | const Gaudi::XYZPoint & | point | ) | const [pure virtual, inherited] |
check for the given 3D-point.
Point coordinated are in the local reference frame of the solid.
point | point (in local reference system of the solid) |
Implemented in SolidBox, SolidChild, SolidCons, SolidIntersection, SolidPolycone, SolidPolyHedronHelper, SolidSphere, SolidSubtraction, SolidTubs, and SolidUnion.
virtual bool ISolid::isInside | ( | const Gaudi::Polar3DPoint & | point | ) | const [pure virtual, inherited] |
Implemented in SolidBox, SolidChild, SolidCons, SolidIntersection, SolidPolycone, SolidPolyHedronHelper, SolidSphere, SolidSubtraction, SolidTubs, and SolidUnion.
virtual bool ISolid::isInside | ( | const Gaudi::RhoZPhiPoint & | point | ) | const [pure virtual, inherited] |
Implemented in SolidBox, SolidChild, SolidCons, SolidIntersection, SolidPolycone, SolidPolyHedronHelper, SolidSphere, SolidSubtraction, SolidTubs, and SolidUnion.
virtual Ticks::size_type ISolid::maxNumberOfTicks | ( | ) | const [pure virtual, inherited] |
Calculate the maximum number of ticks that a straight line could make with this solid.
Implemented in SolidBoolean, SolidBox, SolidChild, SolidCons, SolidPolycone, SolidPolyHedronHelper, SolidSphere, and SolidTubs.
virtual bool SolidPolyHedronHelper::isInside | ( | const Gaudi::XYZPoint & | point | ) | const [virtual, inherited] |
virtual bool SolidPolyHedronHelper::isInside | ( | const Gaudi::Polar3DPoint & | point | ) | const [virtual, inherited] |
Implements ISolid.
virtual bool SolidPolyHedronHelper::isInside | ( | const Gaudi::RhoZPhiPoint & | point | ) | const [virtual, inherited] |
Implements ISolid.
virtual unsigned int SolidPolyHedronHelper::intersectionTicks | ( | const Gaudi::XYZPoint & | Point, | |
const Gaudi::XYZVector & | Vector, | |||
ISolid::Ticks & | ticks | |||
) | const [virtual, inherited] |
Point | initial point for the line | |
Vector | vector along the line | |
ticks | output container of "Ticks" |
Reimplemented from SolidBase.
virtual unsigned int SolidPolyHedronHelper::intersectionTicks | ( | const Gaudi::Polar3DPoint & | Point, | |
const Gaudi::Polar3DVector & | Vector, | |||
ISolid::Ticks & | ticks | |||
) | const [virtual, inherited] |
Reimplemented from SolidBase.
virtual unsigned int SolidPolyHedronHelper::intersectionTicks | ( | const Gaudi::RhoZPhiPoint & | Point, | |
const Gaudi::RhoZPhiVector & | Vector, | |||
ISolid::Ticks & | ticks | |||
) | const [virtual, inherited] |
Reimplemented from SolidBase.
Ticks::size_type SolidPolyHedronHelper::maxNumberOfTicks | ( | ) | const [virtual, inherited] |
Calculate the maximum number of ticks that a straight line could make with this solid.
Implements ISolid.
bool SolidPolyHedronHelper::addFace | ( | const Gaudi::XYZPoint & | Point1, | |
const Gaudi::XYZPoint & | Point2, | |||
const Gaudi::XYZPoint & | Point3 | |||
) | [protected, inherited] |
add a face/plane given with 3 points
Point1 | the first 3D-point of the plane | |
Point2 | the second 3D-point of the plane | |
Point3 | the third 3D-point of the plane |
bool SolidPolyHedronHelper::addFace | ( | const Gaudi::XYZPoint & | Point1, | |
const Gaudi::XYZPoint & | Point2, | |||
const Gaudi::XYZPoint & | Point3, | |||
const Gaudi::XYZPoint & | Point4 | |||
) | [protected, inherited] |
add a face/plane given with 4 points
Point1 | the first 3D-point of the plane | |
Point2 | the second 3D-point of the plane | |
Point3 | the third 3D-point of the plane | |
Point4 | the fourth 3D-point of the plane |
SolidException | if 4 pointd do not define the place |
const PLANES& SolidPolyHedronHelper::planes | ( | ) | const [inline, protected, inherited] |
return vector of faces/planes
Definition at line 125 of file SolidPolyHedronHelper.h.
00125 { return m_ph_planes ; }
bool SolidPolyHedronHelper::inside | ( | const aPoint & | Point, | |
const Gaudi::Plane3D & | Plane | |||
) | const [inline, protected, inherited] |
define "inside" method for the plane.
Assume that normal direction is EXTERNAL!!!
Definition at line 133 of file SolidPolyHedronHelper.h.
void SolidPolyHedronHelper::setBP | ( | ) | [protected, inherited] |
set bounding parameters
friend class SolidFactory< SolidTrd > [friend] |
double SolidTrd::m_trd_zHalfLength [private] |
double SolidTrd::m_trd_xHalfLength1 [private] |
Definition at line 173 of file SolidTrd.h.
double SolidTrd::m_trd_xHalfLength2 [private] |
Definition at line 174 of file SolidTrd.h.
double SolidTrd::m_trd_yHalfLength1 [private] |
Definition at line 175 of file SolidTrd.h.
double SolidTrd::m_trd_yHalfLength2 [private] |
Definition at line 176 of file SolidTrd.h.
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] |
PLANES SolidPolyHedronHelper::m_ph_planes [protected, inherited] |
VERTICES SolidPolyHedronHelper::m_ph_vertices [protected, inherited] |
Definition at line 159 of file SolidPolyHedronHelper.h.