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

In This Package:

IPVolume.h

Go to the documentation of this file.
00001 // $Id: IPVolume.h,v 1.12 2007/01/17 12:10:11 cattanem Exp $ 
00002 // ===========================================================================
00003 #ifndef  DETDESC_IPVOLUME_H 
00004 #define  DETDESC_IPVOLUME_H 1 
00006 #include <iostream>
00007 #include <string> 
00009 #include "GaudiKernel/IInterface.h"
00010 #include "GaudiKernel/Point3DTypes.h"
00011 #include "GaudiKernel/Vector3DTypes.h"
00012 #include "GaudiKernel/Transform3DTypes.h"
00014 #include "DetDesc/ILVolume.h"
00015 #include "DetDesc/ISolid.h"
00016 
00020 static const InterfaceID IID_IPVolume( 154 , 5 , 0 );
00021 
00033 class IPVolume : virtual public IInterface
00034 {
00035 public:
00036   
00040   static const InterfaceID& interfaceID() { return IID_IPVolume; }     
00041   
00042 public:
00043   
00048   virtual const std::string&     name       () const = 0; 
00049   
00053   virtual const std::string&     lvolumeName() const = 0;
00054   
00058   virtual const ILVolume*        lvolume    () const = 0; 
00059   
00063   virtual const Gaudi::Transform3D&  matrix     () const = 0;
00064   
00068   virtual const Gaudi::Transform3D&  matrixInv  () const = 0; 
00069   
00074   virtual Gaudi::XYZPoint toLocal 
00075   ( const Gaudi::XYZPoint& PointInMother  ) const = 0;
00076   
00081   virtual Gaudi::XYZPoint toMother 
00082   ( const Gaudi::XYZPoint& PointInLocal   ) const = 0;
00083   
00088   virtual bool isInside   
00089   ( const Gaudi::XYZPoint& PointInMother  ) const = 0;
00090   
00112   virtual unsigned int intersectLine
00113   ( const Gaudi::XYZPoint        & Point         ,
00114     const Gaudi::XYZVector       & Vector        , 
00115     ILVolume::Intersections & intersections ,
00116     const double              threshold     ) const = 0 ;
00117   
00141   virtual unsigned int intersectLine
00142   ( const Gaudi::XYZPoint        & Point         ,
00143     const Gaudi::XYZVector       & Vector        ,       
00144     ILVolume::Intersections & intersections ,      
00145     const ISolid::Tick        tickMin       ,
00146     const ISolid::Tick        tickMax       ,
00147     const double              Threshold     ) const = 0 ;
00148   
00153   virtual std::ostream& printOut
00154   ( std::ostream & os = std::cout ) const = 0;
00155   
00160   virtual MsgStream&    printOut
00161   ( MsgStream    & os             ) const = 0;
00162   
00166   virtual IPVolume* reset () = 0 ;  
00167   
00174   //  virtual size_t    copy  () const = 0 ;
00175   
00180   virtual const Gaudi::Transform3D& 
00181   applyMisAlignment ( const Gaudi::Transform3D& ma ) = 0 ;
00182   
00186   virtual const Gaudi::Transform3D& 
00187   resetMisAlignment (                          ) = 0 ;
00188   
00190   virtual  ~IPVolume();  
00191   
00192 };
00193 
00194 // ============================================================================
00200 // ============================================================================
00201 inline std::ostream& operator<<
00202 ( std::ostream& os , const IPVolume& pv ) 
00203 { return pv.printOut( os ); };
00204 
00205 // ============================================================================
00211 // ============================================================================
00212 inline std::ostream& operator<<
00213 ( std::ostream& os , const IPVolume*  pv )
00214 { return ((0==pv)?( os<<" IPVolume* points to NULL "):(os<<(*pv)));};
00215 
00216 // ============================================================================
00222 // ============================================================================
00223 inline MsgStream& operator<<
00224 ( MsgStream& os , const IPVolume& pv ) 
00225 { return pv.printOut( os ); };
00226 
00227 // ============================================================================
00233 // ============================================================================
00234 inline MsgStream& operator<<
00235 ( MsgStream& os , const IPVolume*  pv )
00236 { return ((0==pv)?( os<<" IPVolume* points to NULL "):(os<<(*pv)));};
00237 
00238 // ============================================================================
00239 // The End 
00240 // ============================================================================
00241 #endif   
00242 // ============================================================================
| 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