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

In This Package:

ISolid.h

Go to the documentation of this file.
00001 // $Id: ISolid.h,v 1.14 2007/09/20 15:15:18 wouter Exp $ 
00002 // ===========================================================================
00003 #ifndef DETDESC_ISOLID_H
00004 #define DETDESC_ISOLID_H 1
00006 #include  <iostream>
00007 #include  <string>
00008 #include  <vector>
00010 #include "GaudiKernel/MsgStream.h"
00011 #include "GaudiKernel/Vector3DTypes.h"
00012 #include "GaudiKernel/Point3DTypes.h"
00014 #include "DetDesc/StaticArray.h"
00015 
00017 static const InterfaceID IID_ISolid( "ISolid" , 4 , 1 );
00018 
00028 class ISolid : public virtual IInterface
00029 {
00030 public:
00031   
00035   typedef double               Tick  ;
00036   typedef StaticArray<Tick,64> Ticks ;
00037 
00038 public:
00039   
00044   static const InterfaceID& interfaceID() { return IID_ISolid; }
00045   
00046 public:
00047   
00051   virtual const std::string& name     () const = 0;
00052   
00056   virtual       std::string  typeName () const = 0;
00057   
00064   virtual bool isInside ( const Gaudi::XYZPoint       & point ) const = 0;
00065   virtual bool isInside ( const Gaudi::Polar3DPoint   & point ) const = 0;
00066   virtual bool isInside ( const Gaudi::RhoZPhiPoint   & point ) const = 0;  
00067 
00072   virtual const ISolid* cover    () const = 0;
00073   
00079   virtual const ISolid* coverTop () const = 0;
00080 
00085   virtual std::ostream& printOut ( std::ostream& os = std::cout ) const = 0;
00086   
00091   virtual MsgStream&    printOut ( MsgStream&    os ) const = 0;
00092   
00098   virtual ISolid* reset()  = 0;
00099   
00117   virtual unsigned int
00118   intersectionTicks 
00119   ( const Gaudi::XYZPoint & Point  ,
00120     const Gaudi::XYZVector& Vector ,
00121     Ticks            & ticks  ) const = 0 ;
00122 
00123   virtual unsigned int
00124   intersectionTicks 
00125   ( const Gaudi::Polar3DPoint & Point  ,
00126     const Gaudi::Polar3DVector& Vector ,
00127     Ticks            & ticks  ) const = 0 ;
00128 
00129   virtual unsigned int
00130   intersectionTicks 
00131   ( const Gaudi::RhoZPhiPoint & Point  ,
00132     const Gaudi::RhoZPhiVector& Vector ,
00133     Ticks            & ticks  ) const = 0 ;
00134   
00156   virtual unsigned int
00157   intersectionTicks 
00158   ( const Gaudi::XYZPoint & Point   ,
00159     const Gaudi::XYZVector& Vector  ,
00160     const Tick       & tickMin ,
00161     const Tick       & tickMax ,
00162     Ticks            & ticks   ) const = 0 ;
00163 
00164   virtual unsigned int
00165   intersectionTicks 
00166   ( const Gaudi::Polar3DPoint & Point   ,
00167     const Gaudi::Polar3DVector& Vector  ,
00168     const Tick       & tickMin ,
00169     const Tick       & tickMax ,
00170     Ticks            & ticks   ) const = 0 ;
00171 
00172   virtual unsigned int
00173   intersectionTicks 
00174   ( const Gaudi::RhoZPhiPoint & Point   ,
00175     const Gaudi::RhoZPhiVector& Vector  ,
00176     const Tick       & tickMin ,
00177     const Tick       & tickMax ,
00178     Ticks            & ticks   ) const = 0 ;
00179 
00184   virtual Ticks::size_type maxNumberOfTicks() const = 0 ;
00185   
00189   virtual  ~ISolid() ;
00190   
00191 };
00192 
00193 // ============================================================================
00199 // ============================================================================
00200 inline std::ostream& operator<<( std::ostream&  os , const ISolid&  solid  )
00201 { return solid.printOut(os); }
00202 
00203 // ============================================================================
00209 // ============================================================================
00210 inline std::ostream& operator<<( std::ostream&  os , const ISolid*  solid  )
00211 { return ((0 == solid) ? (os<<"ISolid* points to NULL"):(os<<(*solid)));}
00212 
00213 // ============================================================================
00219 // ============================================================================
00220 inline MsgStream&    operator<<( MsgStream&     os , const ISolid&  solid  )
00221 { return solid.printOut(os); }
00222 
00223 // ============================================================================
00229 // ============================================================================
00230 inline MsgStream&    operator<<( MsgStream&     os , const ISolid*  solid  )
00231 { return ((0 == solid) ? (os<<"ISolid* points to NULL"):(os<<(*solid)));}
00232 
00233 // ============================================================================
00234 // The End 
00235 // ============================================================================
00236 #endif   
00237 // ============================================================================
00238 
00239 
00240 
00241 
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