| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

ILVolume Interface Reference

An abstract interface to named node in the geometry tree. More...

#include <DetDesc/ILVolume.h>

Inheritance diagram for ILVolume:

[legend]
Collaboration diagram for ILVolume:
[legend]
List of all members.

Public Types

typedef std::vector< IPVolume * > PVolumes
 general typedefs
typedef PVolumes::size_type ReplicaType
typedef std::vector< ReplicaTypeReplicaPath
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< IntersectionIntersections
typedef SmartRefVector< SurfaceSurfaces
 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 ISolidsolid () 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 Materialmaterial () const =0
 return the material, associated with the Logical Volume for Assembly volumes material name is useless
virtual PVolumespvolumes ()=0
 return vector of physical volumes for Assembly volumes material is useless
virtual const PVolumespvolumes () 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 IPVolumeoperator[] (const ILVolume::ReplicaType &index) const =0
 get daughter (Physical Volume) by index
virtual const IPVolumeoperator[] (const std::string &name) const =0
 get daughter (Physical Volume) by name
virtual const IPVolumepvolume (const ILVolume::ReplicaType &index) const =0
 get daughter (Physical Volume) by index
virtual const IPVolumepvolume (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
$ \vec{x}(t) = \vec{p} + t\times \vec{v} $

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
$ \vec{x}(t) = \vec{p} + t\times \vec{v} $

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 Surfacessurfaces ()=0
 accessors to attached surfaces
virtual const Surfacessurfaces () 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 MsgStreamprintOut (MsgStream &os) const =0
 printout to Gaudi MsgStream stream
virtual ILVolumereset ()=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 InterfaceIDinterfaceID ()
 retrieve the unique interface identifier

Public Attributes

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR

Protected Member Functions

virtual ~ILVolume ()
 (virtual) destructor

Detailed Description

An abstract interface to named node in the geometry tree.

Author:
Vanya Belyaev Ivan.Belyaev@itep.ru
Date:
xx/xx/xxxx

Definition at line 36 of file ILVolume.h.


Member Typedef Documentation

typedef std::vector<IPVolume*> ILVolume::PVolumes

general typedefs

Definition at line 42 of file ILVolume.h.

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

typedef for surfaces

Definition at line 55 of file ILVolume.h.


Constructor & Destructor Documentation

virtual ILVolume::~ILVolume (  )  [protected, virtual]

(virtual) destructor


Member Function Documentation

static const InterfaceID& ILVolume::interfaceID (  )  [inline, static]

retrieve the unique interface identifier

See also:
Interface::interfaceID()
Returns:
uniqie 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

Returns:
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

Returns:
true if volume is Assembly

Implemented in LAssembly, and LVolume.

virtual const ISolid* ILVolume::solid (  )  const [pure virtual]

return the solid, associated with the Logical Volume

Returns:
the solid, associated with the Logical Volume

Implemented in LAssembly, and LVolume.

virtual const std::string& ILVolume::materialName (  )  const [pure virtual]

return the material(by name), associated with the Logical Volume

Returns:
the material(by name), associated with the Logical Volume

Implemented in LAssembly, and LVolume.

virtual const Material* ILVolume::material (  )  const [pure virtual]

return the material, associated with the Logical Volume for Assembly volumes material name is useless

Returns:
the material, associated with the Logical Volume

Implemented in LAssembly, and LVolume.

virtual PVolumes& ILVolume::pvolumes (  )  [pure virtual]

return vector of physical volumes for Assembly volumes material is useless

Returns:
vector of physical volumes

Implemented in LogVolBase.

virtual const PVolumes& ILVolume::pvolumes (  )  const [pure virtual]

return vector of physical volumes (const version)

Returns:
vector of physical volumes

Implemented in LogVolBase.

virtual ILVolume::ReplicaType ILVolume::noPVolumes (  )  const [pure virtual]

return number of Physical Volumes inside gived Logical Volume

Returns:
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

Parameters:
index physical volume index
Returns:
pointer to daughter (Physical Volume)

Implemented in LogVolBase.

virtual const IPVolume* ILVolume::operator[] ( const std::string &  name  )  const [pure virtual]

get daughter (Physical Volume) by name

Parameters:
name physical volume name
Returns:
pointer to daughter (Physical Volume)

Implemented in LogVolBase.

virtual const IPVolume* ILVolume::pvolume ( const ILVolume::ReplicaType index  )  const [pure virtual]

get daughter (Physical Volume) by index

Parameters:
index physical volume index
Returns:
pointer to daughter (Physical Volume)

Implemented in LogVolBase.

virtual const IPVolume* ILVolume::pvolume ( const std::string &  name  )  const [pure virtual]

get daughter (Physical Volume) by name

Parameters:
name physical volume name
Returns:
pointer to daughter (Physical Volume)

Implemented in LogVolBase.

virtual ILVolume::PVolumes::iterator ILVolume::pvBegin (  )  [pure virtual]

retrieve begin iterator for manipulation with daughters

Returns:
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)

Returns:
begin iterator for manipulation with daughters

Implemented in LogVolBase.

virtual ILVolume::PVolumes::iterator ILVolume::pvEnd (  )  [pure virtual]

retrieve end iterator for manipulation with daughters

Returns:
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)

Returns:
end iterator for manipulation with daughters

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

Parameters:
pathBegin begin iterator for replica-Path
pathEnd end iterator for replica-Path
volumePath vector of physical volumes
Returns:
status code

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

Parameters:
replicaPath replica-Path
volumePath vector of physical volumes
Returns:
status code

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

Parameters:
LocalPoint point (in local reference system of the volume)
Returns:
true if the point is inside the logical volume

Implemented in LAssembly, and LVolume.

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

Parameters:
localPoint point in local reference system of logical volume
level depth level
volumePath vector of physical volumes
Returns:
status code

Implemented in LAssembly, and LVolume.

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

Parameters:
localPoint point in local reference system of logical volume
level depth level
replicaPath replica path
Returns:
status code

Implemented in LAssembly, and LVolume.

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
$ \vec{x}(t) = \vec{p} + t\times \vec{v} $

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.

Exceptions:
LVolumeException solid or/and matherial problems
Parameters:
Point initial point at the line
Vector direction vector of the line
intersections output container
threshold threshold value
Returns:
number of intersections

Implemented in LAssembly, and LVolume.

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
$ \vec{x}(t) = \vec{p} + t\times \vec{v} $

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.

Exceptions:
LVolumeException solid or/and matherial problems
Parameters:
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
Returns:
number of intersections

Implemented in LAssembly, and LVolume.

virtual const std::string& ILVolume::sdName (  )  const [pure virtual]

name of sensitive "detector" - needed for simulation

Returns:
name of sensitive "detector"

Implemented in LogVolBase.

virtual const std::string& ILVolume::mfName (  )  const [pure virtual]

magnetic properties (if needed for simulation)

Returns:
name of magnetic field object

Implemented in LogVolBase.

virtual Surfaces& ILVolume::surfaces (  )  [pure virtual]

accessors to attached surfaces

Returns:
vector of surfaces

Implemented in LogVolBase.

virtual const Surfaces& ILVolume::surfaces (  )  const [pure virtual]

accessors to attached surfaces (const version)

Returns:
vector of surfaces

Implemented in LogVolBase.

virtual std::ostream& ILVolume::printOut ( std::ostream &  os = std::cout  )  const [pure virtual]

printout to STD/STL stream

Parameters:
os STD/STL stream
Returns:
reference to the stream

Implemented in LAssembly, LogVolBase, and LVolume.

virtual MsgStream& ILVolume::printOut ( MsgStream os  )  const [pure virtual]

printout to Gaudi MsgStream stream

Parameters:
os Gaudi MsgStream stream
Returns:
reference to the stream

Implemented in LAssembly, LogVolBase, and LVolume.

virtual ILVolume* ILVolume::reset (  )  [pure virtual]

reset to the initial state

Returns:
self-reference

Implemented in LogVolBase, and LVolume.


The documentation for this interface was generated from the following file:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:00:18 2011 for DetDesc by doxygen 1.4.7