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

In This Package:

Material.h

Go to the documentation of this file.
00001 // $Id: Material.h,v 1.13 2008/10/28 12:04:37 cattanem Exp $
00002 #ifndef DETDESC_MATERIAL_H
00003 #define DETDESC_MATERIAL_H
00005 #include <string>
00006 #include <vector>
00008 #include "GaudiKernel/DataObject.h"
00009 #include "GaudiKernel/SmartRefVector.h"
00010 #include "GaudiKernel/PhysicalConstants.h"
00012 class TabulatedProperty;
00013 class MsgStream;
00014 
00015 // Material states, by default is stateUndefined
00016 typedef enum {
00017   stateUndefined = 0,
00018   stateSolid,
00019   stateLiquid,
00020   stateGas
00021 } eState;
00022 
00033 class Material : public DataObject
00034 {
00035 public:
00037   typedef SmartRefVector<TabulatedProperty>   Tables;
00039 public:
00040   
00042   virtual std::ostream& fillStream ( std::ostream& s ) const ;
00044   virtual MsgStream&    fillStream ( MsgStream&    s ) const ;
00046 
00048   bool operator==( const Material* right ) const;
00049   bool operator!=( const Material* right ) const;
00050   
00052   virtual const std::string& name() const;
00053   virtual void            setName(  const std::string& value );
00054   
00056   virtual double  density() const;
00057   virtual void setDensity(  const double value );
00058   
00060   virtual double  temperature() const;
00061   virtual void setTemperature(  const double value );
00062   
00064   virtual double  pressure() const;
00065   virtual void setPressure(  const double value );
00066   
00068   virtual eState  state() const;
00069   virtual void setState(  const eState value );
00070   
00072   virtual double  radiationLength() const;
00073   virtual void setRadiationLength(  const double value );
00074   
00076   virtual double  absorptionLength() const;
00077   virtual void setAbsorptionLength(  const double value );
00078   
00080   virtual double  A() const = 0;
00081   virtual void setA(  const double value ) = 0;
00082   
00084   virtual double  Z() const = 0;
00085   virtual void setZ(  const double value ) = 0; 
00086 
00088   virtual double  I() const = 0;
00089   virtual void setI(  const double value ) = 0;
00090 
00092   virtual double  C()  const = 0;
00093   virtual void setC(   const double value ) = 0;
00094   virtual double  a()  const = 0;
00095   virtual void seta(   const double value ) = 0;
00096   virtual double  m()  const = 0;
00097   virtual void setm(   const double value ) = 0;
00098   virtual double  X1() const = 0;
00099   virtual void setX1(  const double value ) = 0;
00100   virtual double  X0() const = 0;
00101   virtual void setX0(  const double value ) = 0;
00102 
00104   virtual double N() const = 0;
00105   
00107   inline       Tables&  tabulatedProperties()       ;
00108   inline const Tables&  tabulatedProperties() const ;
00110   
00111 protected:
00112   
00114   Material( const std::string& name  = "", 
00115             const double       dens  = 0 , 
00116             const double       rl    = 0 , 
00117             const double       al    = 0 ,
00118             const double       temp  = Gaudi::Units::STP_Temperature,
00119             const double       press = Gaudi::Units::STP_Pressure,
00120             const eState       s     = stateUndefined );
00121   
00123   virtual ~Material();
00124   
00125 private:
00126   
00127   // Material name 
00128   std::string m_name;
00129 
00130   // Material density
00131   double      m_density;
00132   
00133   // Material radiation length 
00134   double      m_radiationLength;
00135 
00136   // Material absorption length 
00137   double      m_absorptionLength;
00138   
00139   // Material temperature, by default is STP [K]
00140   double      m_temperature;
00141   
00142   // Material pressure, by default is STP [atm]
00143   double      m_pressure;
00144   
00145   // Material state, by default is stateUndefined
00146   eState      m_state;
00147   
00148   // Tabulated properties of material
00149   Tables      m_props;
00150   
00151 };
00153 #include "DetDesc/Material.icpp"
00155 
00156 #endif // DETDESC_MATERIAL_MATERIAL_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