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

In This Package:

Mixture.h

Go to the documentation of this file.
00001 // $Id: Mixture.h,v 1.15 2008/10/28 12:04:37 cattanem Exp $ 
00002 // ============================================================================ 
00003 // CVS tag $Name: v18r12 $
00004 // ============================================================================ 
00005 #ifndef DETDESC_MIXTURE_H
00006 #define DETDESC_MIXTURE_H
00007 // detDesc
00008 #include "DetDesc/Material.h"
00009 #include "DetDesc/Element.h"
00010 #include "DetDesc/CLIDMixture.h"
00012 #include <vector>
00013 
00014 
00025 class Mixture : public  Material  
00026 {
00028 public:
00030   typedef std::pair<double,SmartRef<Element> >  Entry    ;
00031   typedef std::vector<Entry>                    Elements ;
00032   typedef std::vector<int>                      Atoms    ;
00035   Mixture( const std::string&  name    = ""               , 
00036            const double        a       = 0                , 
00037            const double        z       = 0                , 
00038            const double        i       = 0                ,
00039            const double        density = 0                ,
00040            const double        rl      = 0                , 
00041            const double        al      = 0                ,
00042            const double        temp    = Gaudi::Units::STP_Temperature,
00043            const double        press   = Gaudi::Units::STP_Pressure,
00044            const eState        s       = stateUndefined   );
00045   
00047   virtual ~Mixture();
00048   
00050   inline int nOfItems() const;
00051   
00056   void addElement( const SmartRef<Element>& e  , 
00057                    const int    nOfAtoms , 
00058                    const bool comp = false );
00059   void addElement( const SmartRef<Element>& e  , 
00060                    const double fraction , 
00061                    const bool comp = false );
00062   
00066   void addMixture( const SmartRef<Mixture>& mx , 
00067                    const double fraction , 
00068                    const bool comp = false);
00069   
00071   const SmartRef<Element>&  element ( const unsigned int i ) const ;  
00072         SmartRef<Element>&  element ( const unsigned int i )       ;  
00073 
00075   inline const Elements&           elements() const ;
00076   inline       Elements&           elements()       ;
00077   
00079   StatusCode compute();
00080   
00082   double   elementFraction( const unsigned int i ) const ;
00083   
00085   
00087   virtual inline double    A() const;
00088   virtual inline void   setA( const double value );
00090   virtual inline double    Z() const;
00091   virtual inline void   setZ( const double value );  
00093   virtual inline double    I() const;
00094   virtual inline void   setI( const double value ); 
00096   virtual inline double    C() const;
00097   virtual inline void   setC( const double value );
00098   virtual inline double    a() const;
00099   virtual inline void   seta( const double value );
00100   virtual inline double    m() const;
00101   virtual inline void   setm( const double value );
00102   virtual inline double    X0() const;
00103   virtual inline void   setX0( const double value );
00104   virtual inline double    X1() const;
00105   virtual inline void   setX1( const double value );
00106 
00107  
00108 
00110   virtual inline double    N() const;
00112   virtual inline const CLID& clID    () const { return Mixture::classID(); }
00113   static         const CLID& classID ()       { return CLID_Mixture      ; } 
00114 
00116   virtual std::ostream& fillStream ( std::ostream& s ) const ;
00118   virtual MsgStream&    fillStream ( MsgStream&    s ) const ;
00120 protected:
00122   StatusCode addMyself();
00124   StatusCode computeByAtoms();  
00126   StatusCode computeByFraction () ;
00128 private:
00129   
00131   Elements       m_elements ;
00132   
00134   Atoms          m_atoms    ;
00135 
00137   Element*       m_own      ;  
00138 
00140   double         m_A ;
00141   double         m_Z ;
00142   double         m_I ;
00143   double         m_a ;
00144   double         m_m ;
00145   double         m_C ;
00146   double         m_X0;
00147   double         m_X1;
00149 };
00150 
00152 #include "DetDesc/Mixture.icpp"
00154    
00155 #endif // DETDESC_MIXTURE_H
| 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