Go to the documentation of this file.00001 #ifndef DDI_Material_h
00002 #define DDI_Material_h
00003
00004 #include <iostream>
00005 #include <vector>
00006 #include <utility>
00007 #include "DetectorDescription/Core/interface/DDMaterial.h"
00008
00009
00010 namespace DDI {
00011
00012 class Material
00013 {
00014 public:
00015 Material(){}
00016 Material(double z, double a, double d)
00017 : z_(z), a_(a), density_(d) { }
00018
00019 Material(double d) : z_(0), a_(0), density_(d) { }
00020 virtual ~Material(){}
00021 int noOfConsituents() const;
00022
00023 double a() const { return a_; }
00024 double z() const { return z_; }
00025 double density() const { return density_; }
00026
00027 double& a(){ return a_; }
00028 double& z(){ return z_; }
00029 double& density(){ return density_; }
00030
00031 int addMaterial(const DDMaterial & m, double fm)
00032 { composites_.push_back(std::make_pair(m,fm));
00033 return noOfConstituents();
00034 }
00035
00036 const DDMaterial::FractionV::value_type & constituent(int i) const
00037 { return composites_[i]; }
00038
00039 DDMaterial::FractionV::value_type & constituent(int i)
00040 { return composites_[i]; }
00041
00042 int noOfConstituents() const { return composites_.size(); }
00043
00044 protected:
00045 double z_, a_, density_;
00046 DDMaterial::FractionV composites_;
00047 };
00048
00049 }
00050 #endif