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

In This Package:

LogVolBase Class Reference

The common base class for ILVolume implementations: More...

#include <DetDesc/LogVolBase.h>

Inheritance diagram for LogVolBase:

[legend]
Collaboration diagram for LogVolBase:
[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
 DEFAULT
 ALWAYS_VALID
 FORCE_UPDATE
enum  UpdateModeFlag { DEFAULT, ALWAYS_VALID, FORCE_UPDATE }
 Possible stata of the update flag. More...

Public Member Functions

virtual const std::string & name () const
 retrieve the name(identification) of Logical Volume
virtual PVolumespvolumes ()
 vector of physical volumes
virtual const PVolumespvolumes () const
 vector of physical volumes (const version)
virtual ILVolume::ReplicaType noPVolumes () const
 number of Physical(positioned) Volumes
virtual const IPVolumeoperator[] (const ILVolume::ReplicaType &index) const
 daughter (Physical Volume) by index
virtual const IPVolumeoperator[] (const std::string &name) const
 daughter (Physical Volume) by name
virtual const IPVolumepvolume (const ILVolume::ReplicaType &index) const
 get daughter (Physical Volume) by index
virtual const IPVolumepvolume (const std::string &name) const
 get daughter (Physical Volume) by name
virtual ILVolume::PVolumes::iterator pvBegin ()
 begin iterator for manipulation with daughters
virtual ILVolume::PVolumes::const_iterator pvBegin () const
 begin iterator for manipulation with daughters (const version)
virtual ILVolume::PVolumes::iterator pvEnd ()
 retrieve end iterator for manipulation with daughters
virtual ILVolume::PVolumes::const_iterator pvEnd () const
 retrieve end iterator for manipulation with daughters (const version)
virtual StatusCode traverse (ILVolume::ReplicaPath::const_iterator pathBegin, ILVolume::ReplicaPath::const_iterator pathEnd, ILVolume::PVolumePath &pVolumePath) const
 traverse the sequence of paths
transform the sequence of replicas to sequence of physical volumes
virtual StatusCode traverse (const ILVolume::ReplicaPath &path, ILVolume::PVolumePath &pVolumePath) const
 traverse the sequence of paths
transform the sequence of replicas to sequence of physical volumes
virtual const std::string & sdName () const
 name of sensitive "detector" - needed for simulation
virtual const std::string & mfName () const
 magnetic properties (if needed for simulation)
virtual Surfacessurfaces ()
 accessors to surfaces
virtual const Surfacessurfaces () const
 accessors to surfaces (const version)
virtual std::ostream & printOut (std::ostream &os=std::cout) const
 printout to STD/STL stream
virtual MsgStreamprintOut (MsgStream &os) const
 printout to Gaudi MsgStream stream
virtual ILVolumereset ()
 reset to initial state, clear chaches, etc.
virtual StatusCode queryInterface (const InterfaceID &ID, void **ppI)
 query the interface
virtual unsigned long addRef ()
 add the reference
virtual unsigned long release ()
 release the interface
IPVolumecreatePVolume (const std::string &PVname, const std::string &LVnameForPV, const Gaudi::XYZPoint &position=Gaudi::XYZPoint(), const Gaudi::Rotation3D &rotation=Gaudi::Rotation3D())
 create daughter physical volume
IPVolumecreatePVolume (const std::string &PVname, const std::string &LVnameForPV, const Gaudi::Transform3D &Transform)
 create daughter physical 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 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 void update (ValidDataObject &obj)
 Update using another instance of this class: deep copy all contents, except for the properties of a generic DataObject.
virtual StatusCode update ()
 Update the current object and all the useds one (children, references, etc) only if needed, of course.
virtual const CLIDclID () const
 Class ID of this instance.
virtual std::ostream & fillStream (std::ostream &s) const
 Fill the output stream (ASCII).
virtual bool isValid () const
 Check if the data object has a well defined validity range.
virtual bool isValid (const Gaudi::Time &t) const
 Check if the data object is valid at the specified time.
virtual const Gaudi::Time & validSince () const
 Get start of validity.
virtual const Gaudi::Time & validTill () const
 Get end of validity.
virtual void setValidity (const Gaudi::Time &since, const Gaudi::Time &till)
 Set validity range.
virtual void setValiditySince (const Gaudi::Time &since)
 Set start of validity.
virtual void setValidityTill (const Gaudi::Time &till)
 Set end of validity.
virtual const UpdateModeFlagupdateMode () const
 Return the update mode: ValidDataObject::DEFAULT -> use the actual validity
ValidDataObject::ALWAYS_VALID -> never update ValidDataObject::FORCE_UPDATE -> force an update even if still valid (then back to DEFAULT behaviour).
virtual void setUpdateMode (UpdateModeFlag mode)
 Set the mode for update.
virtual void defaultUpdateMode ()
virtual void forceUpdateMode ()
virtual void neverUpdateMode ()
void setRegistry (IRegistry *pRegistry)
IRegistryregistry () const
LinkManagerlinkMgr () const
unsigned char version () const
void setVersion (unsigned char vsn)
unsigned long refCount () const
virtual StreamBufferserialize (StreamBuffer &s)
virtual StreamBufferserialize (StreamBuffer &s) const

Static Public Member Functions

static const InterfaceIDinterfaceID ()
 retrieve the unique interface identifier
static const CLIDclassID ()
 Class ID of this class.

Public Attributes

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR

Protected Member Functions

 LogVolBase (const std::string &name="", const std::string &sensitivity="", const std::string &magnetic="")
 constructor
Exceptions:
LVolumeException wrong paramaters value

virtual ~LogVolBase ()
 destructor
IPVolumecreatePVolume ()
 create EMPTY daughter physical volume
void Assert (bool assertion, const std::string &name, const StatusCode &sc=StatusCode::FAILURE) const
 Assertion.
void Assert (bool assertion, const std::string &name, const GaudiException &Exception, const StatusCode &sc=StatusCode::FAILURE) const
 Assertion.
unsigned int intersectDaughters (const Gaudi::XYZPoint &Point, const Gaudi::XYZVector &Vector, ILVolume::Intersections &childIntersections, const ISolid::Tick &tickMin, const ISolid::Tick &tickMax, const double Threshold) const
 Auxillary method to calculate intersections with daughters
Exceptions:
LVolumeException wrong parameters or geometry error.

unsigned int intersectDaughters (const Gaudi::XYZPoint &Point, const Gaudi::XYZVector &Vector, ILVolume::Intersections &childIntersections, const double Threshold) const
 Auxillary method to calculate intersection with daughters
Exceptions:
LVolumeException wrong parameters or geometry error.

bool isInsideDaughter (const Gaudi::XYZPoint &LocalPoint) const
 check for the given 3D-point inside daughter volume Point coordinates are in the local reference frame of the solid.
ILVolume::PVolumes::const_iterator insideDaughter (const Gaudi::XYZPoint &LocalPoint) const
 check for the given 3D-point inside daughter volume Point coordinates are in the local reference frame of the solid.
IDataProviderSvcdataSvc () const
 accessor to data service used for retriving of the material
IMessageSvcmsgSvc () const
 accessor to massage service

Private Member Functions

 LogVolBase (const LogVolBase &lvb)
 copy constructor is private!
LogVolBaseoperator= (const LogVolBase &lvb)
 assignment operator is private!

Private Attributes

PVolumes m_pvolumes
 list of daughter physical volumes
Surfaces m_surfaces
 list attached surfaces
std::string m_sdName
 name of sensitive detector object
std::string m_mfName
 name of magnetic field source
DetDesc::Servicesm_services
 reference to services

Static Private Attributes

static unsigned long s_volumeCounter
 static volume counter

Friends

friend std::ostream & operator<< (std::ostream &s, const DataObject &obj)

Detailed Description

The common base class for ILVolume implementations:

Author:
Vanya Belyaev Ivan.Belyaev

Sebastien Ponce

Marco Clemencic

Definition at line 35 of file LogVolBase.h.


Member Typedef Documentation

typedef std::vector<IPVolume*> ILVolume::PVolumes [inherited]

general typedefs

Definition at line 42 of file ILVolume.h.

typedef PVolumes::size_type ILVolume::ReplicaType [inherited]

Definition at line 43 of file ILVolume.h.

typedef std::vector<ReplicaType> ILVolume::ReplicaPath [inherited]

Definition at line 44 of file ILVolume.h.

typedef std::vector<const IPVolume*> ILVolume::PVolumePath [inherited]

Definition at line 45 of file ILVolume.h.

typedef std::pair<ISolid::Tick,ISolid::Tick> ILVolume::Interval [inherited]

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 [inherited]

Definition at line 51 of file ILVolume.h.

typedef std::vector<Intersection> ILVolume::Intersections [inherited]

Definition at line 52 of file ILVolume.h.

typedef SmartRefVector<Surface> ILVolume::Surfaces [inherited]

typedef for surfaces

Definition at line 55 of file ILVolume.h.


Member Enumeration Documentation

enum ValidDataObject::UpdateModeFlag [inherited]

Possible stata of the update flag.

Enumerator:
DEFAULT 
ALWAYS_VALID 
FORCE_UPDATE 

Definition at line 102 of file ValidDataObject.h.

00102                       {
00103     DEFAULT,
00104     ALWAYS_VALID,
00105     FORCE_UPDATE
00106   };


Constructor & Destructor Documentation

LogVolBase::LogVolBase ( const std::string &  name = "",
const std::string &  sensitivity = "",
const std::string &  magnetic = "" 
) [protected]

constructor

Exceptions:
LVolumeException wrong paramaters value

Parameters:
name name of logical volume
sensitivity name of sensitive detector object (for simulation)
magnetic nam eof magnetic field object (for simulation)

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

destructor

LogVolBase::LogVolBase ( const LogVolBase lvb  )  [private]

copy constructor is private!


Member Function Documentation

virtual const std::string& LogVolBase::name (  )  const [inline, virtual]

retrieve the name(identification) of Logical Volume

See also:
ILVolume
Returns:
the name(identification) of Logical Volume

Implements ILVolume.

Definition at line 61 of file LogVolBase.h.

00062   {
00063     static std::string s_empty = "";
00064     IRegistry* pReg = registry();
00065     return (0!=pReg) ? pReg->identifier() : s_empty;;
00066   }

virtual PVolumes& LogVolBase::pvolumes (  )  [inline, virtual]

vector of physical volumes

See also:
ILVolume
Returns:
vector of physical volumes

Implements ILVolume.

Definition at line 72 of file LogVolBase.h.

00072 { return m_pvolumes ; } 

virtual const PVolumes& LogVolBase::pvolumes (  )  const [inline, virtual]

vector of physical volumes (const version)

See also:
ILVolume
Returns:
vector of physical volumes

Implements ILVolume.

Definition at line 78 of file LogVolBase.h.

00078 { return m_pvolumes ; }

virtual ILVolume::ReplicaType LogVolBase::noPVolumes (  )  const [inline, virtual]

number of Physical(positioned) Volumes

See also:
ILVolume
Returns:
number of Physical(positioned) Volumes

Implements ILVolume.

Definition at line 84 of file LogVolBase.h.

00085   { return m_pvolumes.size() ; }

virtual const IPVolume* LogVolBase::operator[] ( const ILVolume::ReplicaType index  )  const [inline, virtual]

daughter (Physical Volume) by index

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

Implements ILVolume.

Definition at line 93 of file LogVolBase.h.

00094   {
00095     return m_pvolumes.size() > index ? 
00096       *(m_pvolumes.begin()+index) : 0 ;
00097   };

virtual const IPVolume* LogVolBase::operator[] ( const std::string &  name  )  const [inline, virtual]

daughter (Physical Volume) by name

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

Implements ILVolume.

Definition at line 105 of file LogVolBase.h.

00106   { 
00107     ILVolume::PVolumes::const_iterator pvi = 
00108       std::find_if( m_pvolumes.begin  () , 
00109                     m_pvolumes.end    () , 
00110                     IPVolume_byName( name ) ) ;
00111     return m_pvolumes.end() != pvi ? *pvi : 0 ;
00112   };

virtual const IPVolume* LogVolBase::pvolume ( const ILVolume::ReplicaType index  )  const [inline, virtual]

get daughter (Physical Volume) by index

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

Implements ILVolume.

Definition at line 119 of file LogVolBase.h.

00120   {
00121     return m_pvolumes.size() > index ? 
00122       *(m_pvolumes.begin()+index) : 0 ;
00123   };

virtual const IPVolume* LogVolBase::pvolume ( const std::string &  name  )  const [inline, virtual]

get daughter (Physical Volume) by name

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

Implements ILVolume.

Definition at line 130 of file LogVolBase.h.

00131   { 
00132     ILVolume::PVolumes::const_iterator pvi = 
00133       std::find_if( m_pvolumes.begin  () , 
00134                     m_pvolumes.end    () , 
00135                     IPVolume_byName( name ) ) ;
00136     return m_pvolumes.end() != pvi ? *pvi : 0 ;
00137   };

virtual ILVolume::PVolumes::iterator LogVolBase::pvBegin (  )  [inline, virtual]

begin iterator for manipulation with daughters

See also:
ILVolume
Returns:
begin iterator for manipulation with daughters

Implements ILVolume.

Definition at line 143 of file LogVolBase.h.

00144   { return m_pvolumes.begin () ;}

virtual ILVolume::PVolumes::const_iterator LogVolBase::pvBegin (  )  const [inline, virtual]

begin iterator for manipulation with daughters (const version)

See also:
ILVolume
Returns:
begin iterator for manipulation with daughters

Implements ILVolume.

Definition at line 150 of file LogVolBase.h.

00151   { return m_pvolumes.begin () ;}

virtual ILVolume::PVolumes::iterator LogVolBase::pvEnd (  )  [inline, virtual]

retrieve end iterator for manipulation with daughters

See also:
ILVolume
Returns:
end iterator for manipulation with daughters

Implements ILVolume.

Definition at line 157 of file LogVolBase.h.

00158   { return m_pvolumes.end ()  ;}

virtual ILVolume::PVolumes::const_iterator LogVolBase::pvEnd (  )  const [inline, virtual]

retrieve end iterator for manipulation with daughters (const version)

See also:
ILVolume
Returns:
end iterator for manipulation with daughters

Implements ILVolume.

Definition at line 164 of file LogVolBase.h.

00165   { return m_pvolumes.end () ;}

virtual StatusCode LogVolBase::traverse ( ILVolume::ReplicaPath::const_iterator  pathBegin,
ILVolume::ReplicaPath::const_iterator  pathEnd,
ILVolume::PVolumePath pVolumePath 
) const [virtual]

traverse the sequence of paths
transform the sequence of replicas to sequence of physical volumes

See also:
ILVolume
Parameters:
pathBegin first replica-Path
pathEnd last replica-Path
pVolumePath vector of physical volumes
Returns:
status code

Implements ILVolume.

virtual StatusCode LogVolBase::traverse ( const ILVolume::ReplicaPath path,
ILVolume::PVolumePath pVolumePath 
) const [inline, virtual]

traverse the sequence of paths
transform the sequence of replicas to sequence of physical volumes

See also:
ILVolume
Parameters:
path replica-Path
pVolumePath vector of physical volumes
Returns:
status code

Implements ILVolume.

Definition at line 188 of file LogVolBase.h.

00190   { return traverse( path.begin() , path.end() , pVolumePath ); }

virtual const std::string& LogVolBase::sdName (  )  const [inline, virtual]

name of sensitive "detector" - needed for simulation

See also:
ILVolume
Returns:
name of sensitive "detector"

Implements ILVolume.

Definition at line 196 of file LogVolBase.h.

00196 { return m_sdName; } ;

virtual const std::string& LogVolBase::mfName (  )  const [inline, virtual]

magnetic properties (if needed for simulation)

See also:
ILVolume
Returns:
name of magnetic field object

Implements ILVolume.

Definition at line 202 of file LogVolBase.h.

00202 { return m_mfName; } ;

virtual Surfaces& LogVolBase::surfaces (  )  [inline, virtual]

accessors to surfaces

See also:
ILVolume
Returns:
vector of surfaces

Implements ILVolume.

Definition at line 208 of file LogVolBase.h.

00208 { return m_surfaces ; }

virtual const Surfaces& LogVolBase::surfaces (  )  const [inline, virtual]

accessors to surfaces (const version)

See also:
ILVolume
Returns:
vector of surfaces

Implements ILVolume.

Definition at line 214 of file LogVolBase.h.

00214 { return m_surfaces ; }

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

printout to STD/STL stream

See also:
ILVolume
Parameters:
os STD/STL stream
Returns:
reference to the stream

Implements ILVolume.

Reimplemented in LAssembly, and LVolume.

virtual MsgStream& LogVolBase::printOut ( MsgStream os  )  const [virtual]

printout to Gaudi MsgStream stream

See also:
ILVolume
Parameters:
os Gaudi MsgStream stream
Returns:
reference to the stream

Implements ILVolume.

Reimplemented in LAssembly, and LVolume.

virtual ILVolume* LogVolBase::reset (  )  [inline, virtual]

reset to initial state, clear chaches, etc.

..

See also:
ILVolume
Returns:
self reference

reset all physical volumes

return self-reference

Implements ILVolume.

Reimplemented in LVolume.

Definition at line 234 of file LogVolBase.h.

00235   {
00237     std::for_each( m_pvolumes.begin ()         , 
00238                    m_pvolumes.end   ()         ,
00239                    std::mem_fun(&IPVolume::reset) ) ;
00241     return this;
00242   };

virtual StatusCode LogVolBase::queryInterface ( const InterfaceID ID,
void **  ppI 
) [virtual]

query the interface

See also:
IInterface
Parameters:
ID unique interface identifier
ppI placeholder for returned interface
Returns:
status code

Implements IInterface.

virtual unsigned long LogVolBase::addRef (  )  [virtual]

add the reference

See also:
IInterface
Returns:
reference counter

Reimplemented from DataObject.

virtual unsigned long LogVolBase::release (  )  [virtual]

release the interface

See also:
IInterface
Returns:
reference counter

Reimplemented from DataObject.

IPVolume* LogVolBase::createPVolume ( const std::string &  PVname,
const std::string &  LVnameForPV,
const Gaudi::XYZPoint position = Gaudi::XYZPoint(),
const Gaudi::Rotation3D rotation = Gaudi::Rotation3D() 
)

create daughter physical volume

Parameters:
PVname name of daughter volume
LVnameForPV name of logical volume for the physical volume
position position of logical volume
rotation rotation of logical volume
Returns:
pointer to created physical volume

IPVolume* LogVolBase::createPVolume ( const std::string &  PVname,
const std::string &  LVnameForPV,
const Gaudi::Transform3D Transform 
)

create daughter physical volume

Parameters:
PVname name of daughter volume
LVnameForPV name of logical volume for the physical volume
Transform tranformation
Returns:
pointer to created physical volume

IPVolume* LogVolBase::createPVolume (  )  [protected]

create EMPTY daughter physical volume

Returns:
pointer to created physical volume

void LogVolBase::Assert ( bool  assertion,
const std::string &  name,
const StatusCode sc = StatusCode::FAILURE 
) const [inline, protected]

Assertion.

Parameters:
assertion condition
name exception message
sc status code

Definition at line 302 of file LogVolBase.h.

00305   { if( !assertion ) { throw LogVolumeException( name, this , sc ); } };

void LogVolBase::Assert ( bool  assertion,
const std::string &  name,
const GaudiException Exception,
const StatusCode sc = StatusCode::FAILURE 
) const [inline, protected]

Assertion.

Parameters:
assertion condition
name exception message
Exception previous exception
sc status code

Definition at line 314 of file LogVolBase.h.

00318   { 
00319     if( !assertion ) 
00320       { throw LogVolumeException( name, Exception , this , sc ); }
00321   };

unsigned int LogVolBase::intersectDaughters ( const Gaudi::XYZPoint Point,
const Gaudi::XYZVector Vector,
ILVolume::Intersections childIntersections,
const ISolid::Tick tickMin,
const ISolid::Tick tickMax,
const double  Threshold 
) const [protected]

Auxillary method to calculate intersections with daughters

Exceptions:
LVolumeException wrong parameters or geometry error.

Parameters:
Point initial point at the line
Vector direction vector of the line
childIntersections output container
tickMin minimum value of possible Tick
tickMax maximum value of possible Tick
Threshold threshold value
Returns:
number of intersections

unsigned int LogVolBase::intersectDaughters ( const Gaudi::XYZPoint Point,
const Gaudi::XYZVector Vector,
ILVolume::Intersections childIntersections,
const double  Threshold 
) const [protected]

Auxillary method to calculate intersection with daughters

Exceptions:
LVolumeException wrong parameters or geometry error.

Parameters:
Point initial point at the line
Vector direction vector of the line
childIntersections output container
Threshold threshold value
Returns:
number of intersections

bool LogVolBase::isInsideDaughter ( const Gaudi::XYZPoint LocalPoint  )  const [inline, protected]

check for the given 3D-point inside daughter volume Point coordinates are in the local reference frame of the solid.

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

Definition at line 362 of file LogVolBase.h.

00363   { 
00364     return  
00365       m_pvolumes.end() != insideDaughter( LocalPoint );
00366   };

ILVolume::PVolumes::const_iterator LogVolBase::insideDaughter ( const Gaudi::XYZPoint LocalPoint  )  const [inline, protected]

check for the given 3D-point inside daughter volume Point coordinates are in the local reference frame of the solid.

Parameters:
LocalPoint point (in local reference system of the solid)
Returns:
iterator to the daughter volume

Definition at line 375 of file LogVolBase.h.

00376   { 
00377     return  
00378       std::find_if( m_pvolumes.begin () , 
00379                     m_pvolumes.end   () , 
00380                     IPVolume_isInside( LocalPoint ) ) ;
00381   };

IDataProviderSvc* LogVolBase::dataSvc (  )  const [protected]

accessor to data service used for retriving of the material

Returns:
pointer to data service

IMessageSvc* LogVolBase::msgSvc (  )  const [protected]

accessor to massage service

Returns:
pointer to message service

LogVolBase& LogVolBase::operator= ( const LogVolBase lvb  )  [private]

assignment operator is private!

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

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 bool ILVolume::isAssembly (  )  const [pure virtual, inherited]

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, inherited]

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, inherited]

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, inherited]

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 bool ILVolume::isInside ( const Gaudi::XYZPoint LocalPoint  )  const [pure virtual, inherited]

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, inherited]

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, inherited]

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, inherited]

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, inherited]

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 void ValidDataObject::update ( ValidDataObject obj  )  [virtual, inherited]

Update using another instance of this class: deep copy all contents, except for the properties of a generic DataObject.

Reimplemented in Condition, ParamValidDataObject, and TabulatedProperty.

virtual StatusCode ValidDataObject::update (  )  [virtual, inherited]

Update the current object and all the useds one (children, references, etc) only if needed, of course.

This method must be reimplemented for more complex objects.

virtual const CLID& ValidDataObject::clID (  )  const [inline, virtual, inherited]

Class ID of this instance.

Reimplemented from DataObject.

Reimplemented in AlignmentCondition, Condition, DetectorElement, LAssembly, LVolume, and TabulatedProperty.

Definition at line 59 of file ValidDataObject.h.

00059 { return classID(); } 

static const CLID& ValidDataObject::classID (  )  [inline, static, inherited]

Class ID of this class.

Reimplemented from DataObject.

Reimplemented in AlignmentCondition, Condition, DetectorElement, LAssembly, LVolume, and TabulatedProperty.

Definition at line 62 of file ValidDataObject.h.

00062 { return CLID_ValidDataObject; }

virtual std::ostream& ValidDataObject::fillStream ( std::ostream &  s  )  const [virtual, inherited]

Fill the output stream (ASCII).

Reimplemented from DataObject.

Reimplemented in AlignmentCondition, ParamValidDataObject, and TabulatedProperty.

virtual bool ValidDataObject::isValid (  )  const [virtual, inherited]

Check if the data object has a well defined validity range.

Implements IValidity.

virtual bool ValidDataObject::isValid ( const Gaudi::Time &  t  )  const [virtual, inherited]

Check if the data object is valid at the specified time.

Implements IValidity.

virtual const Gaudi::Time& ValidDataObject::validSince (  )  const [virtual, inherited]

Get start of validity.

Implements IValidity.

virtual const Gaudi::Time& ValidDataObject::validTill (  )  const [virtual, inherited]

Get end of validity.

Implements IValidity.

virtual void ValidDataObject::setValidity ( const Gaudi::Time &  since,
const Gaudi::Time &  till 
) [virtual, inherited]

Set validity range.

Implements IValidity.

virtual void ValidDataObject::setValiditySince ( const Gaudi::Time &  since  )  [virtual, inherited]

Set start of validity.

Implements IValidity.

virtual void ValidDataObject::setValidityTill ( const Gaudi::Time &  till  )  [virtual, inherited]

Set end of validity.

Implements IValidity.

virtual const UpdateModeFlag& ValidDataObject::updateMode (  )  const [virtual, inherited]

Return the update mode: ValidDataObject::DEFAULT -> use the actual validity
ValidDataObject::ALWAYS_VALID -> never update ValidDataObject::FORCE_UPDATE -> force an update even if still valid (then back to DEFAULT behaviour).

virtual void ValidDataObject::setUpdateMode ( UpdateModeFlag  mode  )  [virtual, inherited]

Set the mode for update.

virtual void ValidDataObject::defaultUpdateMode (  )  [virtual, inherited]

virtual void ValidDataObject::forceUpdateMode (  )  [virtual, inherited]

virtual void ValidDataObject::neverUpdateMode (  )  [virtual, inherited]


Member Data Documentation

PVolumes LogVolBase::m_pvolumes [private]

list of daughter physical volumes

Definition at line 413 of file LogVolBase.h.

Surfaces LogVolBase::m_surfaces [private]

list attached surfaces

Definition at line 415 of file LogVolBase.h.

std::string LogVolBase::m_sdName [private]

name of sensitive detector object

Definition at line 417 of file LogVolBase.h.

std::string LogVolBase::m_mfName [private]

name of magnetic field source

Definition at line 419 of file LogVolBase.h.

unsigned long LogVolBase::s_volumeCounter [static, private]

static volume counter

Definition at line 421 of file LogVolBase.h.

DetDesc::Services* LogVolBase::m_services [private]

reference to services

Definition at line 423 of file LogVolBase.h.


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

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