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

In This Package:

DetDesc::CheckOverlap Class Reference

The helper algorithm to detect the various overlaps. More...

Inheritance diagram for DetDesc::CheckOverlap:

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

Public Member Functions

virtual StatusCode initialize ()
 standard algorithm initialization
virtual StatusCode execute ()
 standard execution of algorithm
virtual StatusCode finalize ()
 standard finalization of algorithm
virtual StatusCode sysExecute ()
void put (IDataProviderSvc *svc, DataObject *object, const std::string &address, const bool useRootInTES=true) const
void put (DataObject *object, const std::string &address, const bool useRootInTES=true) const
Gaudi::Utils::GetData< TYPE
>::return_type 
get (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
Gaudi::Utils::GetData< TYPE
>::return_type 
get (const std::string &location, const bool useRootInTES=true) const
TYPE * getDet (IDataProviderSvc *svc, const std::string &location) const
TYPE * getDet (const std::string &location) const
bool exist (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
bool exist (const std::string &location, const bool useRootInTES=true) const
bool existDet (IDataProviderSvc *svc, const std::string &location) const
bool existDet (const std::string &location) const
TYPE * getOrCreate (IDataProviderSvc *svc, const std::string &location, const bool useRootInTES=true) const
TYPE * getOrCreate (const std::string &location, const bool useRootInTES=true) const
bool registerContext () const
INTupleSvcevtColSvc () const
IAlgContextSvccontextSvc () const
TOOL * tool (const std::string &type, const std::string &name, const IInterface *parent=0, bool create=true) const
TOOL * tool (const std::string &type, const IInterface *parent=0, bool create=true) const
SERVICE * svc (const std::string &name, const bool create=true) const
IUpdateManagerSvcupdMgrSvc () const
IDataProviderSvcfastContainersSvc () const
StatusCode Error (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
StatusCode Warning (const std::string &msg, const StatusCode st=StatusCode::FAILURE, const size_t mx=10) const
StatusCode Print (const std::string &msg, const StatusCode st=StatusCode::SUCCESS, const MSG::Level lev=MSG::INFO) const
StatusCode Assert (const bool ok, const std::string &message="", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Assert (const bool ok, const char *message, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg, const GaudiException &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg, const std::exception &exc, const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
StatusCode Exception (const std::string &msg="no message", const StatusCode sc=StatusCode(StatusCode::FAILURE, true)) const
MsgStreammsgStream (const MSG::Level level) const
MsgStreamalways () const
MsgStreamfatal () const
MsgStreamerr () const
MsgStreamerror () const
MsgStreamwarning () const
MsgStreaminfo () const
MsgStreamdebug () const
MsgStreamverbose () const
MsgStreammsg () const
const Statisticscounters () const
StatEntitycounter (const std::string &tag) const
MSG::Level msgLevel () const
bool msgLevel (const MSG::Level level) const
void resetMsgStream () const
bool typePrint () const
bool propsPrint () const
bool statPrint () const
bool errorsPrint () const
long printStat (const MSG::Level level=MSG::ALWAYS) const
long printErrors (const MSG::Level level=MSG::ALWAYS) const
long printProps (const MSG::Level level=MSG::ALWAYS) const
void registerCondition (const std::string &condition, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (const std::string &condition, CondType *&condPtrDest, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (char *condition, StatusCode(CallerClass::*mf)()=NULL)
void registerCondition (TargetClass *condition, StatusCode(CallerClass::*mf)()=NULL)
StatusCode runUpdate ()
TransientFastContainer< T > * getFastContainer (const std::string &location, typename TransientFastContainer< T >::size_type initial=0)
StatusCode release (const IInterface *interface) const
unsigned long release ()
const std::string & context () const
const std::string & rootInTES () const
double globalTimeOffset () const
virtual StatusCode sysStart ()
virtual StatusCode sysInitialize ()
virtual StatusCode sysReinitialize ()
virtual StatusCode sysRestart ()
virtual StatusCode sysStop ()
virtual StatusCode sysFinalize ()
virtual StatusCode sysBeginRun ()
virtual StatusCode sysEndRun ()
virtual const std::string & name () const
virtual const std::string & version () const
virtual StatusCode configure ()
virtual StatusCode terminate ()
virtual StatusCode start ()
virtual StatusCode stop ()
virtual StatusCode reinitialize ()
virtual StatusCode restart ()
virtual bool isExecuted () const
virtual void setExecuted (bool state)
virtual void resetExecuted ()
virtual StatusCode beginRun ()
virtual StatusCode endRun ()
virtual Gaudi::StateMachine::State FSMState () const
virtual Gaudi::StateMachine::State targetFSMState () const
virtual bool isEnabled () const
virtual bool filterPassed () const
virtual void setFilterPassed (bool state)
StatusCode service (const std::string &name, T *&psvc, bool createIf=true) const
StatusCode service (const std::string &svcType, const std::string &svcName, T *&psvc) const
void setOutputLevel (int level)
IAuditorSvcauditorSvc () const
IChronoStatSvcchronoSvc () const
IChronoStatSvcchronoStatService () const
IDataProviderSvcdetSvc () const
IDataProviderSvcdetDataService () const
IConversionSvcdetCnvSvc () const
IConversionSvcdetDataCnvService () const
IDataProviderSvceventSvc () const
IDataProviderSvcevtSvc () const
IDataProviderSvceventDataService () const
IConversionSvceventCnvSvc () const
IConversionSvceventDataCnvService () const
IHistogramSvchistoSvc () const
IHistogramSvchistogramDataService () const
IMessageSvcmsgSvc () const
IMessageSvcmessageService () const
INTupleSvcntupleSvc () const
INTupleSvcntupleService () const
IRndmGenSvcrandSvc () const
IToolSvctoolSvc () const
IExceptionSvcexceptionSvc () const
ISvcLocatorserviceLocator () const
ISvcLocatorsvcLoc () const
StatusCode createSubAlgorithm (const std::string &type, const std::string &name, Algorithm *&pSubAlg)
std::vector< Algorithm * > * subAlgorithms () const
virtual StatusCode setProperty (const Property &p)
virtual StatusCode setProperty (const std::string &s)
virtual StatusCode setProperty (const std::string &n, const std::string &v)
StatusCode setProperty (const std::string &name, const TYPE &value)
virtual StatusCode getProperty (Property *p) const
virtual const PropertygetProperty (const std::string &name) const
virtual StatusCode getProperty (const std::string &n, std::string &v) const
virtual const std::vector<
Property * > & 
getProperties () const
StatusCode setProperties ()
PropertydeclareProperty (const std::string &name, T &property, const std::string &doc="none") const
PropertydeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
IMonitorSvcmonitorSvc () const
void declareInfo (const std::string &name, const T &var, const std::string &desc) const
void declareInfo (const std::string &name, const std::string &format, const void *var, int size, const std::string &desc) const
unsigned long addRef ()
StatusCode queryInterface (const InterfaceID &riid, void **)

Static Public Member Functions

static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()

Public Attributes

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR

Protected Types

typedef std::map< std::string,
StatEntity
Statistics
typedef std::map< std::string,
unsigned int > 
Counter
typedef std::vector< IAlgTool * > AlgTools
typedef std::pair< IInterface *,
std::string > 
ServiceEntry
typedef std::vector< ServiceEntryServices

Protected Member Functions

 CheckOverlap (const std::string &name, ISvcLocator *svcloc)
 Standard constructor.
virtual ~CheckOverlap ()
 destructor (protected and virtual)
StatusCode releaseTool (const IAlgTool *tool) const
StatusCode releaseSvc (const IInterface *svc) const
bool isInitialized () const
bool isFinalized () const
int outputLevel () const
IntegerPropertyoutputLevelProperty ()
void initOutputLevel (Property &prop)

Static Protected Attributes

static const bool IgnoreRootInTES
static const bool UseRootInTES

Private Member Functions

StatusCode checkVolume (const ILVolume *volume, const unsigned int level) const
 check one volume
StatusCode makeShots (const ILVolume *volume) const
 make all shoots

Private Attributes

std::string m_volumeName
 the logical volume name
const ILVolumem_volume
 volume itself
double m_minx
double m_maxx
double m_miny
double m_maxy
double m_minz
double m_maxz
int m_shots
std::vector< double > m_vrtx
Gaudi::XYZPoint m_vertex
std::set< const ILVolume * > m_checked

Friends

class AlgFactory< DetDesc::CheckOverlap >
 the friend factory to instantiate the algorithm

Detailed Description

The helper algorithm to detect the various overlaps.

Author:
Vanya BELYAEV ibelyaev@physics.syr.edu
Date:
2007-12-12

Definition at line 109 of file CheckGeometryOverlaps.cpp.


Constructor & Destructor Documentation

DetDesc::CheckOverlap::CheckOverlap ( const std::string &  name,
ISvcLocator svcloc 
) [protected]

Standard constructor.

Parameters:
name name of the algorithm
svcloc pointer to Service Locator

Definition at line 181 of file CheckGeometryOverlaps.cpp.

00183   : GaudiAlgorithm( name , svcloc ) 
00184   , m_volumeName   ( "Undefined Volume" )
00185   , m_volume       ( 0            )
00186   , m_minx         ( -10 * Gaudi::Units::m      ) 
00187   , m_maxx         (  10 * Gaudi::Units::m      ) 
00188   , m_miny         ( -10 * Gaudi::Units::m      ) 
00189   , m_maxy         (  10 * Gaudi::Units::m      ) 
00190   , m_minz         ( -10 * Gaudi::Units::m      ) 
00191   , m_maxz         (  10 * Gaudi::Units::m      )
00192   , m_shots        ( 10000 )
00193   , m_vrtx         ( 3 , 0 ) 
00194   , m_vertex       (  ) 
00195   , m_checked      ()
00196 {
00197   declareProperty ( "Volume"               , m_volumeName   ) ;
00198   declareProperty ( "MinX"                 , m_minx         ) ;
00199   declareProperty ( "MinY"                 , m_miny         ) ;
00200   declareProperty ( "MinZ"                 , m_minz         ) ;
00201   declareProperty ( "MaxX"                 , m_maxx         ) ;
00202   declareProperty ( "MaxY"                 , m_maxy         ) ;
00203   declareProperty ( "MaxZ"                 , m_maxz         ) ;
00204   declareProperty ( "Shots"                , m_shots        ) ;
00205   declareProperty ( "Null"                 , m_vrtx         ) ;
00206  }

virtual DetDesc::CheckOverlap::~CheckOverlap (  )  [inline, protected, virtual]

destructor (protected and virtual)

Definition at line 143 of file CheckGeometryOverlaps.cpp.

00143 {}; 


Member Function Documentation

StatusCode DetDesc::CheckOverlap::initialize (  )  [virtual]

standard algorithm initialization

See also:
IAlgorithm
Returns:
status code

check for Transport Service

Reimplemented from GaudiAlgorithm.

Definition at line 213 of file CheckGeometryOverlaps.cpp.

00214 {
00215   StatusCode sc = GaudiAlgorithm::initialize() ;
00216   if ( sc.isFailure() ) { return sc ; }
00217   
00218   Assert ( 0 != randSvc () , "randSvc() points to NULL!" ) ;
00219   Assert ( 0 != detSvc  () , "detSvc()  points to NULL!" ) ;
00220   
00221   if ( !exist<ILVolume> ( detSvc() , m_volumeName ) && 
00222        exist<ILVolume>  ( detSvc() , "/dd/Geometry/"+ m_volumeName ) )
00223   {
00224     m_volumeName = "/dd/Geometry/" + m_volumeName ;
00225   }
00226   
00227   m_volume = getDet<ILVolume> ( m_volumeName ) ;
00228   
00229   // activate the vertex
00230   if ( m_vrtx.size() <= 3 )
00231   { while ( 3 != m_vrtx.size() ) { m_vrtx.push_back( 0.0 ); } }
00232   else 
00233   {
00234     warning()  << " Ignore extra fields in 'ShootingPoint' "<< endreq ;
00235   }
00236   m_vertex.SetXYZ( m_vrtx[0], m_vrtx[1], m_vrtx[2] ) ;
00237   
00238   if ( !m_volume->isAssembly() && 0 != m_volume->solid() ) 
00239   {
00240     const ISolid* top = m_volume->solid()->coverTop();
00241     if( 0 == top ) 
00242     { return Error( "CoverTop* points to NULL!" ) ; }
00243     const SolidBox* box = dynamic_cast<const SolidBox*> ( top );
00244     if( 0 == box ) 
00245     { return Error("SolidBox* points to NULL!"); }
00246     
00247     m_minx = -1 * box->xHalfLength() * 1.05 ;
00248     m_maxx =      box->xHalfLength() * 1.05 ;
00249     m_miny = -1 * box->yHalfLength() * 1.05 ;
00250     m_maxy =      box->yHalfLength() * 1.05 ;
00251     m_minz = -1 * box->zHalfLength() * 1.05 ;
00252     m_maxz =      box->zHalfLength() * 1.05 ;
00253   }
00254   
00256   svc<ITransportSvc> ( "TransportSvc" , true ) ;
00257   
00258   always() << " ATTENTION! THIS ALGORITHM DOES DESTROY THE GEOMETRY TREE" << endreq ;
00259   always() << " ATTENTION! NEVER USED IT IN THE REAL JOB OR RELY ON THE " << endreq ;
00260   always() << " ATTENTION! RESULT OF ANY OTHER 'GEOMETRY' TOOL/ALGORITHM" << endreq ;
00261   
00262   return StatusCode::SUCCESS ;
00263 }

StatusCode DetDesc::CheckOverlap::execute (  )  [virtual]

standard execution of algorithm

See also:
IAlgorithm
Returns:
status code

Reimplemented from GaudiAlgorithm.

Definition at line 270 of file CheckGeometryOverlaps.cpp.

00271 {
00272   StatusCode sc = checkVolume ( m_volume , 0 ) ;
00273   
00274   always() << " ATTENTION! THIS ALGORITHM DOES DESTROY THE GEOMETRY TREE" << endreq ;
00275   always() << " ATTENTION! NEVER USED IT IN THE REAL JOB OR RELY ON THE " << endreq ;
00276   always() << " ATTENTION! RESULT OF ANY OTHER 'GEOMETRY' TOOL/ALGORITHM" << endreq ;
00277   
00278   return sc ;
00279 }

StatusCode DetDesc::CheckOverlap::finalize (  )  [virtual]

standard finalization of algorithm

See also:
IAlgorithm
Returns:
status code

Reimplemented from GaudiAlgorithm.

Definition at line 488 of file CheckGeometryOverlaps.cpp.

00489 {
00490   always () << " ATTENTION! THIS ALGORITHM DOES DESTROY THE GEOMETRY TREE" << endreq ;
00491   always () << " ATTENTION! NEVER USED IT IN THE REAL JOB OR RELY ON THE " << endreq ;
00492   always () << " ATTENTION! RESULT OF ANY OTHER 'GEOMETRY' TOOL/ALGORITHM" << endreq ;
00493   
00494   return GaudiAlgorithm::finalize () ;
00495 }

StatusCode DetDesc::CheckOverlap::checkVolume ( const ILVolume volume,
const unsigned int  level 
) const [private]

check one volume

Definition at line 284 of file CheckGeometryOverlaps.cpp.

00286 {
00287   if ( 0 == volume ) { return Error ( "Invalid pointer to ILVolume!" ) ; }
00288   
00289   boost::format fmt ( "%-3d") ;
00290   const std::string lev = ( fmt % level ).str() ;
00291   
00292   // not checked yet ? 
00293   if ( m_checked.end() != m_checked.find ( volume ) ) 
00294   { return StatusCode::SUCCESS ; }
00295   
00296   
00297   always() 
00298     << lev << std::string ( 2*level , ' ' ) 
00299     << "Checking: " << volume -> name () << endreq ;
00300   
00301   // ==========================================================================
00302   // loop over all daughter volumes and
00303   const ILVolume::PVolumes& pvs = volume->pvolumes() ;
00304   for ( ILVolume::PVolumes::const_iterator ipv = 
00305           pvs.begin() ; pvs.end() != ipv ; ++ipv )
00306   {
00307     const IPVolume* pv = *ipv ;
00308     if ( 0 == pv ) { return Error ( "IPVolume* points to NULL!" )  ; } // RETURN 
00309     const ILVolume* lv = pv->lvolume () ;
00310     if ( 0 == lv ) { return Error ( "ILVolume* points to NULL!" )  ; } // RETURN 
00311     // check the daughter volume
00312     StatusCode sc = checkVolume ( lv , level + 1) ;
00313     if ( sc.isFailure() ) { return sc ; }                              // RETURN 
00314   }
00315   // ==========================================================================
00316   /*  here all daughter volumes are OK and are CLEARED! 
00317    *  and one can start to make the own  shoots (MUST be efficient!)
00318    */
00319   const StatusCode result = makeShots ( volume ) ;
00320   //
00321   {
00322     // ATTENTION!!! 
00323     // clear daugher volumes :
00324     ILVolume* vol = const_cast<ILVolume*>( volume ) ;
00325     vol -> pvolumes().clear() ;
00326   }
00327   
00328   // ==========================================================================
00329   always() 
00330     << lev << std::string ( 2*level , ' ' ) 
00331     << "Checked:  " << volume -> name () << endreq ;
00332   
00333   counter ("#volumes") += 1 ;
00334   if ( volume->isAssembly() ) { counter ("#assembly") += 1 ; }
00335   
00336   m_checked.insert ( volume ) ;
00337   
00338   return result ;
00339 }

StatusCode DetDesc::CheckOverlap::makeShots ( const ILVolume volume  )  const [private]

make all shoots

Definition at line 344 of file CheckGeometryOverlaps.cpp.

00345 {
00346   
00347   if ( 0 == volume ) 
00348   { return Error ( "Invalid pointer to ILVolume!" ) ; }
00349   
00350   // reset the counter of errors 
00351   DetDesc::IntersectionErrors::setCode ( StatusCode::SUCCESS , volume ) ;
00352 
00353   typedef  std::vector<Gaudi::XYZVector> Vectors ;
00354   Vectors vcts ;
00355   
00356   //
00357   vcts.push_back ( Gaudi::XYZVector ( 0 , 0 , 1 ) ) ;
00358   vcts.push_back ( Gaudi::XYZVector ( 0 , 1 , 0 ) ) ;
00359   vcts.push_back ( Gaudi::XYZVector ( 1 , 0 , 0 ) ) ;
00360   
00361   vcts.push_back ( Gaudi::XYZVector ( 1 ,  1 , 0 ) ) ;
00362   vcts.push_back ( Gaudi::XYZVector ( 1 , -1 , 0 ) ) ;
00363   vcts.push_back ( Gaudi::XYZVector ( 0 ,  1 , 1 ) ) ;
00364   vcts.push_back ( Gaudi::XYZVector ( 0 , -1 , 1 ) ) ;
00365   
00366   
00367   double xmin = m_minx ;
00368   double xmax = m_maxx ;
00369   double ymin = m_miny ;
00370   double ymax = m_maxy ;
00371   double zmin = m_minz ;
00372   double zmax = m_maxz ;
00373   
00374   if ( !volume->isAssembly() && 0 != volume->solid() ) 
00375   {
00376     const ISolid* top = volume->solid()->coverTop();
00377     if( 0 == top ) { return Error ( "CoverTop* points to NULL!" ) ; }
00378     const SolidBox* box = dynamic_cast<const SolidBox*> ( top );
00379     if( 0 == box ) { return Error ("SolidBox* points to NULL!"  ) ; }
00380     
00381     xmin = -1 * box -> xHalfLength () * 1.01 ;
00382     xmax =      box -> xHalfLength () * 1.01 ;
00383     ymin = -1 * box -> yHalfLength () * 1.01 ;
00384     ymax =      box -> yHalfLength () * 1.01 ;
00385     zmin = -1 * box -> zHalfLength () * 1.01 ;
00386     zmax =      box -> zHalfLength () * 1.01 ;
00387   }
00388   
00389   // get the number of shoots 
00390   int nShots = m_shots ;
00391   
00392   // check the simplest cases 
00393   if ( !volume ->isAssembly() && volume  -> pvolumes().empty() ) 
00394   {
00395     const ISolid* solid = volume->solid() ;
00396     if ( 0 != solid && 0 != dynamic_cast<const SolidBox*> ( solid ) ) 
00397     {
00398       // nothing to check, the case is just trivial  
00399       nShots = 0 ;
00400       return StatusCode::SUCCESS ;                                   // RETURN 
00401     }  
00402   }
00403   
00404   { //   
00405     boost::format fmt ( "Shooting #%8d:") ;
00406     info () << ( fmt %  nShots ).str() 
00407             << volume -> name () 
00408             << " #pv=" << volume->pvolumes().size() 
00409             << endreq ;
00410   }
00411   
00412   // display the progress
00413   boost::progress_display progress ( nShots ) ;
00414   
00415   // get the random number generator 
00416   Rndm::Numbers flat  ( randSvc() , Rndm::Flat (  0.0 , 1.0 ) );
00417   Rndm::Numbers flat1 ( randSvc() , Rndm::Flat ( -1.0 , 1.0 ) );
00418   
00419   for ( int iShoot = 0 ; iShoot < nShots ; ++iShoot ) 
00420   {
00421     
00422     const double x1 = xmin + flat.shoot() * ( xmax - xmin ) ;
00423     const double y1 = ymin + flat.shoot() * ( ymax - ymin ) ;
00424     const double z1 = zmin + flat.shoot() * ( zmax - zmin ) ;
00425     
00426     const double x2 = xmin + flat.shoot() * ( xmax - xmin ) ;
00427     const double y2 = ymin + flat.shoot() * ( ymax - ymin ) ;
00428     const double z2 = zmin + flat.shoot() * ( zmax - zmin ) ;
00429     
00430     Gaudi::XYZPoint  point  ( x1 , y1 , z1 ) ;
00431     Gaudi::XYZPoint  p2     ( x2 , y2 , z2 ) ;
00432     
00433     vcts.push_back ( p2       - point  ) ;
00434     vcts.push_back ( m_vertex - point  ) ;
00435     vcts.push_back ( m_vertex - point  )  ;
00436     
00437     vcts.push_back ( Gaudi::XYZVector ( flat1() , flat1() , flat1() ) )  ;
00438     vcts.push_back ( Gaudi::XYZVector ( flat1() , flat1() , flat1() ) )  ;
00439     vcts.push_back ( Gaudi::XYZVector ( flat1() , flat1() , flat1() ) )  ;
00440     
00441     vcts.push_back ( Gaudi::XYZVector ( 0 , 0 , 1 + 0.1 * flat1()  ) ) ;
00442     vcts.push_back ( Gaudi::XYZVector ( 0 , 1 + 0.1 * flat1() , 0  ) ) ; 
00443     vcts.push_back ( Gaudi::XYZVector ( 1 + 0.1 * flat1() , 0  , 0 ) ) ; 
00444     
00445     vcts.push_back ( Gaudi::XYZVector ( 0 , 0 , 1 + 0.1 * flat1()  ) ) ;
00446     vcts.push_back ( Gaudi::XYZVector ( 0 , 1 + 0.1 * flat1() , 0  ) ) ; 
00447     vcts.push_back ( Gaudi::XYZVector ( 1 + 0.1 * flat1() , 0  , 0 ) ) ; 
00448     
00449     for ( Vectors::const_iterator iv = vcts.begin() ; vcts.end() != iv ; ++iv ) 
00450     {
00451       // reset the counter of errors 
00452       DetDesc::IntersectionErrors::setCode ( StatusCode::SUCCESS , volume ) ;
00453       
00454       ILVolume::Intersections intersections;
00455       volume -> intersectLine ( point , *iv , intersections , 0 );
00456       
00457       // get the status
00458       StatusCode sc = DetDesc::IntersectionErrors::code() ;
00459       
00460       if ( sc.isFailure() ) 
00461       {
00462         
00463         error() << "Problem is detected with volume " 
00464                 << volume->name () 
00465                 << " With P/V=" 
00466                 << point << "/" << (*iv) << endreq ;
00467         
00468         DetDesc::IntersectionErrors::inspect
00469           ( volume , point  , *iv ,  intersections ) ;
00470         
00471         return Error ( "Intersection problems with " + volume->name() , sc ) ;
00472       }
00473     } // vectors
00474     // remove last vectors 
00475     while ( 7 < vcts.size() ) { vcts.pop_back() ; }
00476     // show the progress  
00477     ++progress ;
00478   } // shoots
00479   
00480   return StatusCode::SUCCESS ;
00481 }


Friends And Related Function Documentation

friend class AlgFactory< DetDesc::CheckOverlap > [friend]

the friend factory to instantiate the algorithm

Definition at line 112 of file CheckGeometryOverlaps.cpp.


Member Data Documentation

std::string DetDesc::CheckOverlap::m_volumeName [private]

the logical volume name

Definition at line 153 of file CheckGeometryOverlaps.cpp.

const ILVolume* DetDesc::CheckOverlap::m_volume [private]

volume itself

Definition at line 155 of file CheckGeometryOverlaps.cpp.

double DetDesc::CheckOverlap::m_minx [private]

Definition at line 158 of file CheckGeometryOverlaps.cpp.

double DetDesc::CheckOverlap::m_maxx [private]

Definition at line 159 of file CheckGeometryOverlaps.cpp.

double DetDesc::CheckOverlap::m_miny [private]

Definition at line 160 of file CheckGeometryOverlaps.cpp.

double DetDesc::CheckOverlap::m_maxy [private]

Definition at line 161 of file CheckGeometryOverlaps.cpp.

double DetDesc::CheckOverlap::m_minz [private]

Definition at line 162 of file CheckGeometryOverlaps.cpp.

double DetDesc::CheckOverlap::m_maxz [private]

Definition at line 163 of file CheckGeometryOverlaps.cpp.

int DetDesc::CheckOverlap::m_shots [private]

Definition at line 166 of file CheckGeometryOverlaps.cpp.

std::vector<double> DetDesc::CheckOverlap::m_vrtx [private]

Definition at line 169 of file CheckGeometryOverlaps.cpp.

Gaudi::XYZPoint DetDesc::CheckOverlap::m_vertex [private]

Definition at line 170 of file CheckGeometryOverlaps.cpp.

std::set<const ILVolume*> DetDesc::CheckOverlap::m_checked [mutable, private]

Definition at line 171 of file CheckGeometryOverlaps.cpp.


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:05:14 2011 for DetDescChecks by doxygen 1.4.7