00001
00002
00003
00004
00005
00006 #include <string.h>
00007 #include <stdexcept>
00008 #include "Sti/StiMaterial.h"
00009
00010 StiMaterial::StiMaterial(){
00011 }
00012
00013 StiMaterial::StiMaterial(const string &name,
00014 double z,
00015 double a,
00016 double density,
00017 double radLength,
00018 double ionization)
00019 {
00020 set(name,z,a,density,radLength,ionization);
00021 }
00022
00023 StiMaterial::~StiMaterial(){
00024 }
00025
00034 void StiMaterial::set(const string& name,
00035 double z,
00036 double a,
00037 double density,
00038 double radLength,
00039 double ionization)
00040 {
00041 setName(name);
00042 _density = density;
00043 _radLength = radLength;
00044 _a = a;
00045 _z = z;
00046 _ionization = ionization;
00047 if (_density>0)
00048 _x0 = _radLength/density;
00049 else
00050 _x0 = 0.;
00051 if (_a>0)
00052 _zOverA = _z/_a;
00053 else
00054 _zOverA = 0.;
00055 }
00056
00057 ostream& operator<<(ostream& os, const StiMaterial& m)
00058 {
00059 os << "Name:"<< m.getName()
00060 << " Density:"<< m.getDensity()<< " g/cm^3"
00061 << " RadLength:"<<m.getRadLength()
00062 << " EffZ: "<<m.getZ()
00063 << " EffA: "<<m.getA()
00064 << " EffIoniz: "<<m.getIonization()<<endl;
00065
00066 return os;
00067 }