#include <DetDesc/ILVolume.h>
Inheritance diagram for ILVolume:
Public Types | |
typedef std::vector< IPVolume * > | PVolumes |
general typedefs | |
typedef PVolumes::size_type | ReplicaType |
typedef std::vector< ReplicaType > | ReplicaPath |
typedef std::vector< const IPVolume * > | PVolumePath |
typedef std::pair< ISolid::Tick, ISolid::Tick > | Interval |
typedefs, specific for calculation of distance in the units of radiation length | |
typedef std::pair< Interval, const Material * > | Intersection |
typedef std::vector< Intersection > | Intersections |
typedef SmartRefVector< Surface > | Surfaces |
typedef for surfaces | |
SUCCESS | |
NO_INTERFACE | |
VERSMISMATCH | |
LAST_ERROR | |
enum | Status |
Public Member Functions | |
virtual const std::string & | name () const =0 |
retrieve the name(identification) of Logical Volume | |
virtual bool | isAssembly () const =0 |
is this volume "Assembly" of other volumes? The notion of "Assembly Volume" is imported from Geant4. | |
virtual const ISolid * | solid () const =0 |
return the solid, associated with the Logical Volume | |
virtual const std::string & | materialName () const =0 |
return the material(by name), associated with the Logical Volume | |
virtual const Material * | material () const =0 |
return the material, associated with the Logical Volume for Assembly volumes material name is useless | |
virtual PVolumes & | pvolumes ()=0 |
return vector of physical volumes for Assembly volumes material is useless | |
virtual const PVolumes & | pvolumes () const =0 |
return vector of physical volumes (const version) | |
virtual ILVolume::ReplicaType | noPVolumes () const =0 |
return number of Physical Volumes inside gived Logical Volume | |
virtual const IPVolume * | operator[] (const ILVolume::ReplicaType &index) const =0 |
get daughter (Physical Volume) by index | |
virtual const IPVolume * | operator[] (const std::string &name) const =0 |
get daughter (Physical Volume) by name | |
virtual const IPVolume * | pvolume (const ILVolume::ReplicaType &index) const =0 |
get daughter (Physical Volume) by index | |
virtual const IPVolume * | pvolume (const std::string &name) const =0 |
get daughter (Physical Volume) by name | |
virtual ILVolume::PVolumes::iterator | pvBegin ()=0 |
retrieve begin iterator for manipulation with daughters | |
virtual ILVolume::PVolumes::const_iterator | pvBegin () const =0 |
retrieve begin iterator for manipulation with daughters (const version) | |
virtual ILVolume::PVolumes::iterator | pvEnd ()=0 |
retrieve end iterator for manipulation with daughters | |
virtual ILVolume::PVolumes::const_iterator | pvEnd () const =0 |
retrieve end iterator for manipulation with daughters (const version) | |
virtual StatusCode | traverse (ILVolume::ReplicaPath::const_iterator pathBegin, ILVolume::ReplicaPath::const_iterator pathEnd, ILVolume::PVolumePath &volumePath) const =0 |
traverse the sequence of paths transform the sequence of replicas to sequence of physical volumes | |
virtual StatusCode | traverse (const ILVolume::ReplicaPath &replicaPath, ILVolume::PVolumePath &volumePath) const =0 |
traverse the sequence of paths transform the sequence of replicas to sequence of physical volumes | |
virtual bool | isInside (const Gaudi::XYZPoint &LocalPoint) const =0 |
check for the given 3D-point. | |
virtual StatusCode | belongsTo (const Gaudi::XYZPoint &localPoint, const int level, ILVolume::PVolumePath &volumePath) const =0 |
calculate the daughter path containing the Point in Local frame , can be VERY slow for complex geometry, therefore use the appropriate Level for usage | |
virtual StatusCode | belongsTo (const Gaudi::XYZPoint &localPoint, const int level, ILVolume::ReplicaPath &replicaPath) const =0 |
calculate the daughter path containing the Point in Local frame , can be VERY slow for complex geometry, therefore use the appropriate Level for usage | |
virtual unsigned int | intersectLine (const Gaudi::XYZPoint &Point, const Gaudi::XYZVector &Vector, ILVolume::Intersections &intersections, const double threshold) const =0 |
intersection of the logical volume with with the line Theine is parametrized in the local reference system of the logical volume by initial Point and direction Vector ![]() | |
virtual unsigned int | intersectLine (const Gaudi::XYZPoint &Point, const Gaudi::XYZVector &Vector, ILVolume::Intersections &intersections, const ISolid::Tick tickMin, const ISolid::Tick tickMax, const double Threshold) const =0 |
intersection of the logical volume with with the line Theine is parametrized in the local reference system of the logical volume by initial Point and direction Vector ![]() | |
virtual const std::string & | sdName () const =0 |
name of sensitive "detector" - needed for simulation | |
virtual const std::string & | mfName () const =0 |
magnetic properties (if needed for simulation) | |
virtual Surfaces & | surfaces ()=0 |
accessors to attached surfaces | |
virtual const Surfaces & | surfaces () const =0 |
accessors to attached surfaces (const version) | |
virtual std::ostream & | printOut (std::ostream &os=std::cout) const =0 |
printout to STD/STL stream | |
virtual MsgStream & | printOut (MsgStream &os) const =0 |
printout to Gaudi MsgStream stream | |
virtual ILVolume * | reset ()=0 |
reset to the initial state | |
virtual StatusCode | queryInterface (const InterfaceID &riid, void **ppvInterface)=0 |
virtual unsigned long | addRef ()=0 |
virtual unsigned long | release ()=0 |
Static Public Member Functions | |
static const InterfaceID & | interfaceID () |
retrieve the unique interface identifier | |
Public Attributes | |
SUCCESS | |
NO_INTERFACE | |
VERSMISMATCH | |
LAST_ERROR | |
Protected Member Functions | |
virtual | ~ILVolume () |
(virtual) destructor |
Definition at line 36 of file ILVolume.h.
typedef std::vector<IPVolume*> ILVolume::PVolumes |
typedef PVolumes::size_type ILVolume::ReplicaType |
Definition at line 43 of file ILVolume.h.
typedef std::vector<ReplicaType> ILVolume::ReplicaPath |
Definition at line 44 of file ILVolume.h.
typedef std::vector<const IPVolume*> ILVolume::PVolumePath |
Definition at line 45 of file ILVolume.h.
typedef std::pair<ISolid::Tick,ISolid::Tick> ILVolume::Interval |
typedefs, specific for calculation of distance in the units of radiation length
Definition at line 50 of file ILVolume.h.
typedef std::pair<Interval,const Material*> ILVolume::Intersection |
Definition at line 51 of file ILVolume.h.
typedef std::vector<Intersection> ILVolume::Intersections |
Definition at line 52 of file ILVolume.h.
typedef SmartRefVector<Surface> ILVolume::Surfaces |
virtual ILVolume::~ILVolume | ( | ) | [protected, virtual] |
(virtual) destructor
static const InterfaceID& ILVolume::interfaceID | ( | ) | [inline, static] |
retrieve the unique interface identifier
Reimplemented from IInterface.
Definition at line 63 of file ILVolume.h.
00063 { return IID_ILVolume; }
virtual const std::string& ILVolume::name | ( | ) | const [pure virtual] |
retrieve the name(identification) of Logical Volume
Implemented in LogVolBase.
virtual bool ILVolume::isAssembly | ( | ) | const [pure virtual] |
is this volume "Assembly" of other volumes? The notion of "Assembly Volume" is imported from Geant4.
"Assembly Volume" has no associated material and shape, thus material name shoudl me empty, pointer to solid and pointer to material should be both nulls
virtual const ISolid* ILVolume::solid | ( | ) | const [pure virtual] |
virtual const std::string& ILVolume::materialName | ( | ) | const [pure virtual] |
virtual const Material* ILVolume::material | ( | ) | const [pure virtual] |
virtual PVolumes& ILVolume::pvolumes | ( | ) | [pure virtual] |
return vector of physical volumes for Assembly volumes material is useless
Implemented in LogVolBase.
virtual const PVolumes& ILVolume::pvolumes | ( | ) | const [pure virtual] |
return vector of physical volumes (const version)
Implemented in LogVolBase.
virtual ILVolume::ReplicaType ILVolume::noPVolumes | ( | ) | const [pure virtual] |
return number of Physical Volumes inside gived Logical Volume
Implemented in LogVolBase.
virtual const IPVolume* ILVolume::operator[] | ( | const ILVolume::ReplicaType & | index | ) | const [pure virtual] |
get daughter (Physical Volume) by index
index | physical volume index |
Implemented in LogVolBase.
virtual const IPVolume* ILVolume::operator[] | ( | const std::string & | name | ) | const [pure virtual] |
get daughter (Physical Volume) by name
name | physical volume name |
Implemented in LogVolBase.
virtual const IPVolume* ILVolume::pvolume | ( | const ILVolume::ReplicaType & | index | ) | const [pure virtual] |
get daughter (Physical Volume) by index
index | physical volume index |
Implemented in LogVolBase.
virtual const IPVolume* ILVolume::pvolume | ( | const std::string & | name | ) | const [pure virtual] |
get daughter (Physical Volume) by name
name | physical volume name |
Implemented in LogVolBase.
virtual ILVolume::PVolumes::iterator ILVolume::pvBegin | ( | ) | [pure virtual] |
retrieve begin iterator for manipulation with daughters
Implemented in LogVolBase.
virtual ILVolume::PVolumes::const_iterator ILVolume::pvBegin | ( | ) | const [pure virtual] |
retrieve begin iterator for manipulation with daughters (const version)
Implemented in LogVolBase.
virtual ILVolume::PVolumes::iterator ILVolume::pvEnd | ( | ) | [pure virtual] |
retrieve end iterator for manipulation with daughters
Implemented in LogVolBase.
virtual ILVolume::PVolumes::const_iterator ILVolume::pvEnd | ( | ) | const [pure virtual] |
retrieve end iterator for manipulation with daughters (const version)
Implemented in LogVolBase.
virtual StatusCode ILVolume::traverse | ( | ILVolume::ReplicaPath::const_iterator | pathBegin, | |
ILVolume::ReplicaPath::const_iterator | pathEnd, | |||
ILVolume::PVolumePath & | volumePath | |||
) | const [pure virtual] |
traverse the sequence of paths
transform the sequence of replicas to sequence of physical volumes
pathBegin | begin iterator for replica-Path | |
pathEnd | end iterator for replica-Path | |
volumePath | vector of physical volumes |
Implemented in LogVolBase.
virtual StatusCode ILVolume::traverse | ( | const ILVolume::ReplicaPath & | replicaPath, | |
ILVolume::PVolumePath & | volumePath | |||
) | const [pure virtual] |
traverse the sequence of paths
transform the sequence of replicas to sequence of physical volumes
replicaPath | replica-Path | |
volumePath | vector of physical volumes |
Implemented in LogVolBase.
virtual bool ILVolume::isInside | ( | const Gaudi::XYZPoint & | LocalPoint | ) | const [pure virtual] |
check for the given 3D-point.
Point coordinated are in the local reference frame of the logical volume.
For Assembly Volumes "inside" means inside of at least one daughter volume
LocalPoint | point (in local reference system of the volume) |
virtual StatusCode ILVolume::belongsTo | ( | const Gaudi::XYZPoint & | localPoint, | |
const int | level, | |||
ILVolume::PVolumePath & | volumePath | |||
) | const [pure virtual] |
calculate the daughter path containing the Point in Local frame , can be VERY slow for complex geometry, therefore use the appropriate Level for usage
localPoint | point in local reference system of logical volume | |
level | depth level | |
volumePath | vector of physical volumes |
virtual StatusCode ILVolume::belongsTo | ( | const Gaudi::XYZPoint & | localPoint, | |
const int | level, | |||
ILVolume::ReplicaPath & | replicaPath | |||
) | const [pure virtual] |
calculate the daughter path containing the Point in Local frame , can be VERY slow for complex geometry, therefore use the appropriate Level for usage
localPoint | point in local reference system of logical volume | |
level | depth level | |
replicaPath | replica path |
virtual unsigned int ILVolume::intersectLine | ( | const Gaudi::XYZPoint & | Point, | |
const Gaudi::XYZVector & | Vector, | |||
ILVolume::Intersections & | intersections, | |||
const double | threshold | |||
) | const [pure virtual] |
intersection of the logical volume with with the line
Theine is parametrized in the local reference system of the logical volume by initial Point and direction Vector
Method returns the number of intersection points("ticks") and the container of pairs - ticks and pointer to the corresponding material. The simplification is determined by value of threshold (in units of radiation length) Method throws LVolumeException in the case, then solid is not defined or material is not accessible.
LVolumeException | solid or/and matherial problems |
Point | initial point at the line | |
Vector | direction vector of the line | |
intersections | output container | |
threshold | threshold value |
virtual unsigned int ILVolume::intersectLine | ( | const Gaudi::XYZPoint & | Point, | |
const Gaudi::XYZVector & | Vector, | |||
ILVolume::Intersections & | intersections, | |||
const ISolid::Tick | tickMin, | |||
const ISolid::Tick | tickMax, | |||
const double | Threshold | |||
) | const [pure virtual] |
intersection of the logical volume with with the line
Theine is parametrized in the local reference system of the logical volume by initial Point and direction Vector
Method returns the number of intersection points("ticks") and the container of pairs - ticks and pointer to the corresponding material. The simplification is determined by value of threshold (in units of radiation length) Method throws LVolumeException in the case, then solid is not defined or material is not accessible.
LVolumeException | solid or/and matherial problems |
Point | initial point at the line | |
Vector | direction vector of the line | |
intersections | output container | |
tickMin | minimum value of possible Tick | |
tickMax | maximum value of possible Tick | |
Threshold | threshold value |
virtual const std::string& ILVolume::sdName | ( | ) | const [pure virtual] |
name of sensitive "detector" - needed for simulation
Implemented in LogVolBase.
virtual const std::string& ILVolume::mfName | ( | ) | const [pure virtual] |
magnetic properties (if needed for simulation)
Implemented in LogVolBase.
virtual Surfaces& ILVolume::surfaces | ( | ) | [pure virtual] |
virtual const Surfaces& ILVolume::surfaces | ( | ) | const [pure virtual] |
accessors to attached surfaces (const version)
Implemented in LogVolBase.
virtual std::ostream& ILVolume::printOut | ( | std::ostream & | os = std::cout |
) | const [pure virtual] |
printout to STD/STL stream
os | STD/STL stream |
Implemented in LAssembly, LogVolBase, and LVolume.
virtual ILVolume* ILVolume::reset | ( | ) | [pure virtual] |