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

In This Package:

PVolume.h

Go to the documentation of this file.
00001 // $Id: PVolume.h,v 1.6 2007/01/17 12:10:14 cattanem Exp $ 
00002 #ifndef    DETDESC_PVOLUME_H
00003 #define    DETDESC_PVOLUME_H 1 
00004 
00006 #include "GaudiKernel/Transform3DTypes.h"
00008 #include "DetDesc/Services.h"
00009 #include "DetDesc/IPVolume.h"
00010 
00012 class IDataProviderSvc;
00013 class IMessageSvc;
00014 class MsgStream;
00015 class GaudiException;
00016 class PVolumeException;
00017 
00027 class PVolume: public IPVolume
00028 {
00030   friend class LogVolBase;
00031 
00032 protected:
00033 
00040   PVolume 
00041   ( const std::string& PhysVol_name                  ,
00042     const std::string& LogVol_name                   ,
00043     //    const size_t       copynumber                    ,
00044     const Gaudi::XYZPoint&   Position     = Gaudi::XYZPoint  () ,
00045     const Gaudi::Rotation3D& Rotation     = Gaudi::Rotation3D () );
00046   
00052   PVolume 
00053   ( const std::string&     PhysVol_name ,
00054     const std::string&     LogVol_name  ,
00055     //    const size_t           copynumber   ,
00056     const Gaudi::Transform3D&  Transform    );
00057   
00059   virtual ~PVolume();
00060 
00061 public:
00062 
00063 
00068   virtual const std::string& name       () const { return m_name ; };
00069   
00073   virtual const std::string& lvolumeName() const { return m_lvname ; };
00074   
00078   virtual const ILVolume* lvolume () const ;
00079   
00083   virtual const Gaudi::Transform3D&  matrix      () const { return m_matrix ; }
00084   
00088   virtual const Gaudi::Transform3D&  matrixInv  () const ;
00089   
00094   virtual Gaudi::XYZPoint toLocal  ( const Gaudi::XYZPoint& PointInMother ) const ;
00095   
00100   virtual Gaudi::XYZPoint toMother ( const Gaudi::XYZPoint& PointInLocal  ) const ;
00101   
00106   virtual bool isInside       ( const Gaudi::XYZPoint& PointInMother ) const ;
00107   
00112   virtual std::ostream& printOut
00113   ( std::ostream& os = std::cout ) const;
00114   
00119   virtual MsgStream&    printOut
00120   ( MsgStream&    os             ) const;
00121   
00125   virtual IPVolume* reset () ;
00126   
00148   virtual unsigned int intersectLine
00149   ( const Gaudi::XYZPoint        & Point         ,
00150     const Gaudi::XYZVector       & Vector        , 
00151     ILVolume::Intersections & intersections ,
00152     const double              threshold     ) const ;
00153   
00177   virtual unsigned int intersectLine
00178   ( const Gaudi::XYZPoint        & Point ,
00179     const Gaudi::XYZVector       & Vector        ,       
00180     ILVolume::Intersections & intersections ,      
00181     const ISolid::Tick        tickMin       ,
00182     const ISolid::Tick        tickMax       ,
00183     const double              threshold     ) const ;
00184   
00191   //  virtual size_t    copy  () const { return m_copy ; }
00192   
00197   virtual const Gaudi::Transform3D& 
00198   applyMisAlignment ( const Gaudi::Transform3D& ma ) ;
00199   
00203   virtual const Gaudi::Transform3D& 
00204   resetMisAlignment (                          ) ;
00205   
00211   virtual StatusCode 
00212   queryInterface( const InterfaceID& ID , void** ppI ) ;
00213 
00217   virtual unsigned long addRef  ();
00218   
00222   virtual unsigned long release ();
00223 
00224 protected:
00225   
00229   ILVolume*       findLogical () const ; 
00230   
00234   Gaudi::Transform3D* findMatrix  () const ;
00235   
00241   void Assert
00242   ( bool               assertion , 
00243     const std::string& name      ) const;
00244   
00245   
00252   void Assert
00253   ( bool                  assertion , 
00254     const std::string&    name      ,
00255     const GaudiException& Exception ) const;
00256   
00257 protected:
00258   
00263   IDataProviderSvc* dataSvc() const;
00264   
00265 private:
00266   
00268   PVolume()                           ;
00270   PVolume           ( const PVolume& );
00272   PVolume& operator=( const PVolume& );
00273   
00274 private:
00275   
00276   // copy number 
00277   //  size_t                  m_copy          ;
00278   // name of physical volume 
00279   std::string             m_name          ;
00280   // name of logical volume 
00281   std::string             m_lvname        ;
00282   // nominal transformationmatrix 
00283   Gaudi::Transform3D          m_nominal       ;
00284   // transformation matrix 
00285   Gaudi::Transform3D          m_matrix        ;
00286   // pointer to inverse transformation matrix 
00287   mutable Gaudi::Transform3D* m_imatrix       ;
00288   // pointer to logical volume 
00289   mutable ILVolume*       m_lvolume       ;
00290   // reference/object counter 
00291   static unsigned long    s_volumeCounter ;
00292   // reference to dataSvc
00293   DetDesc::Services*      m_services      ;
00294 };
00295 
00297 #endif  
00298 
00299 
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

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