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

In This Package:

SolidTrap.h

Go to the documentation of this file.
00001 // $Id: SolidTrap.h,v 1.16 2007/03/16 15:57:09 cattanem Exp $
00003 #ifndef     DETDESC_SOLIDTRAP_H
00004 #define     DETDESC_SOLIDTRAP_H 1 
00005 
00007 #include <cmath>
00008 #include <iostream> 
00009 
00011 #include "GaudiKernel/Point3DTypes.h" 
00012 #include "GaudiKernel/Vector3DTypes.h" 
00013 #include "GaudiKernel/Plane3DTypes.h" 
00014 
00016 #include "DetDesc/SolidBase.h" 
00017 #include "DetDesc/SolidPolyHedronHelper.h" 
00018 
00020 template <class TYPE>
00021 class SolidFactory;
00022 
00031 class SolidTrap: public    virtual SolidBase            ,
00032                  protected virtual SolidPolyHedronHelper
00033 {
00035   friend class SolidFactory<SolidTrap>;
00036   
00037 public:
00038 
00040   typedef std::vector<Gaudi::XYZPoint> VERTICES;
00041 
00042 public: 
00043   
00059   SolidTrap( const std::string&  name             , 
00060              const double        zHalfLength      , 
00061              const double        theta            , 
00062              const double        phi              , 
00063              const double        dyAtMinusZ       ,  
00064              const double        dxAtMinusZMinusY , 
00065              const double        dxAtMinusZPlusY  ,
00066              const double        alphaAtMinusZ    ,
00067              const double        dyAtPlusZ        ,  
00068              const double        dxAtPlusZMinusY  , 
00069              const double        dxAtPlusZPlusY   ,
00070              const double        alphaAtPlusZ    );
00071 
00073   virtual ~SolidTrap();
00074   
00080   inline std::string typeName () const { return "SolidTrap"  ; };
00081   
00088   const ISolid* cover () const;
00089   
00098   virtual std::ostream& printOut ( std::ostream& os = std::cout ) const;
00099 
00108   virtual MsgStream&    printOut ( MsgStream&   os             ) const;
00109   
00113   inline const double& zHalfLength      () const 
00114   { return m_trap_zHalfLength      ; };
00115   
00117 
00118   inline const double& theta            () const 
00119   { return m_trap_theta            ; };
00120   inline const double& phi              () const
00121   { return m_trap_phi              ; }; 
00123   
00125 
00126   inline const double& dyAtMinusZ       () const 
00127   { return m_trap_dyAtMinusZ       ; }; 
00128   inline const double& dxAtMinusZMinusY () const 
00129   { return m_trap_dxAtMinusZMinusY ; };
00130   inline const double& dxAtMinusZPlusY  () const 
00131   { return m_trap_dxAtMinusZPlusY  ; };
00132   inline const double& alphaAtMinusZ    () const 
00133   { return m_trap_alphaAtMinusZ    ; }; 
00135   
00137 
00138   inline const double& dyAtPlusZ        () const 
00139   { return m_trap_dyAtPlusZ        ; }; 
00140   inline const double& dxAtPlusZMinusY  () const 
00141   { return m_trap_dxAtPlusZMinusY  ; };
00142   inline const double& dxAtPlusZPlusY   () const 
00143   { return m_trap_dxAtPlusZPlusY   ; };
00144   inline const double& alphaAtPlusZ     () const 
00145   { return m_trap_alphaAtPlusZ     ; }; 
00147   
00148 protected:
00149   
00153   SolidTrap( const std::string& Name = "Anonymous Trap");
00154 
00158   void        makeAll();
00159   
00164   inline const Gaudi::XYZPoint& point( const VERTICES::size_type& indx ) const 
00165   { return m_ph_vertices[indx]; } 
00166   
00167 private: 
00168   
00169   SolidTrap           ( const SolidTrap & );  
00170   SolidTrap& operator=( const SolidTrap & );  
00171   
00172 private:
00173   
00175 
00176   double               m_trap_zHalfLength       ; 
00177   double               m_trap_theta             ; 
00178   double               m_trap_phi               ; 
00179   double               m_trap_dyAtMinusZ        ; 
00180   double               m_trap_dxAtMinusZMinusY  ; 
00181   double               m_trap_dxAtMinusZPlusY   ; 
00182   double               m_trap_alphaAtMinusZ     ; 
00183   double               m_trap_dyAtPlusZ         ; 
00184   double               m_trap_dxAtPlusZMinusY   ; 
00185   double               m_trap_dxAtPlusZPlusY    ; 
00186   double               m_trap_alphaAtPlusZ      ; 
00187   double               m_trap_sinAlphaAtPlusZ   ; 
00188   double               m_trap_cosAlphaAtPlusZ   ; 
00190 };
00191 
00193 #endif 
00194 
| 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