File indexing completed on 2025-02-23 09:20:10
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #include "G4HumanPhantomMaterial.hh"
0031 #include "globals.hh"
0032 #include "G4SystemOfUnits.hh"
0033 #include "G4MaterialPropertiesTable.hh"
0034 #include "G4MaterialPropertyVector.hh"
0035 #include "G4MaterialTable.hh"
0036 #include "Randomize.hh"
0037 #include "G4RunManager.hh"
0038 #include "G4Element.hh"
0039 #include "G4ElementTable.hh"
0040
0041 G4HumanPhantomMaterial::G4HumanPhantomMaterial():
0042 fWater(nullptr), fSoft(nullptr), fSkeleton(nullptr), fLung(nullptr), fAdipose(nullptr), fGlandular(nullptr),
0043 fAdipose_glandular(nullptr)
0044 {;}
0045
0046 G4HumanPhantomMaterial::~G4HumanPhantomMaterial()
0047 {;}
0048
0049 void G4HumanPhantomMaterial::DefineMaterials()
0050 {
0051
0052
0053 G4double A;
0054 G4double Z;
0055 G4double d;
0056
0057
0058
0059 A = 1.01*g/mole;
0060 auto* elH = new G4Element ("Hydrogen","H",Z = 1.,A);
0061
0062 A = 12.011*g/mole;
0063 auto* elC = new G4Element("Carbon","C",Z = 6.,A);
0064
0065 A = 14.01*g/mole;
0066 auto* elN = new G4Element("Nitrogen","N",Z = 7.,A);
0067
0068 A = 16.00*g/mole;
0069 auto* elO = new G4Element("Oxygen","O",Z = 8.,A);
0070
0071 A = 22.99*g/mole;
0072 auto* elNa = new G4Element("Sodium","Na",Z = 11.,A);
0073
0074 A = 24.305*g/mole;
0075 auto* elMg = new G4Element("Magnesium","Mg",Z = 12.,A);
0076
0077 A = 30.974*g/mole;
0078 auto* elP = new G4Element("Phosphorus","P",Z = 15.,A);
0079
0080 A = 32.064*g/mole;
0081 auto* elS = new G4Element("Sulfur","S",Z = 16.,A);
0082
0083 A = 35.453*g/mole;
0084 auto* elCl = new G4Element("Chlorine","Cl",Z = 17.,A);
0085
0086 A = 39.098*g/mole;
0087 auto* elK = new G4Element("Potassium","K",Z = 19.,A);
0088
0089 A = 40.08*g/mole;
0090 auto* elCa = new G4Element("Calcium","Ca",Z = 20.,A);
0091
0092 A = 55.85*g/mole;
0093 auto* elFe = new G4Element("Iron","Fe",Z = 26.,A);
0094
0095 A = 65.38*g/mole;
0096 auto* elZn = new G4Element("Zinc","Zn",Z = 30.,A);
0097
0098 A = 85.47 *g/mole;
0099 auto* elRb = new G4Element("Rb","Rb",Z = 37.,A);
0100
0101 A = 87.62 *g/mole;
0102 auto* elSr = new G4Element("Sr","Sr",Z = 38.,A);
0103
0104 A = 91.22 *g/mole;
0105 auto* elZr = new G4Element("Zr","Zr",Z = 40.,A);
0106
0107 A = 207.19 *g/mole;
0108 auto* elPb = new G4Element("Lead","Pb", Z = 82.,A);
0109
0110
0111 d = 1.000*g/cm3;
0112 fWater = new G4Material("Water",d,2);
0113 fWater->AddElement(elH,2);
0114 fWater->AddElement(elO,1);
0115 fWater->GetIonisation()->SetMeanExcitationEnergy(75.0*eV);
0116
0117
0118 d = 0.9869 *g/cm3;
0119 fSoft = new G4Material("soft_tissue",d,16);
0120 fSoft->AddElement(elH,0.1047);
0121 fSoft->AddElement(elC,0.2302);
0122 fSoft->AddElement(elN,0.0234);
0123 fSoft->AddElement(elO,0.6321);
0124 fSoft->AddElement(elNa,0.0013);
0125 fSoft->AddElement(elMg,0.00015);
0126 fSoft->AddElement(elP,0.0024);
0127 fSoft->AddElement(elS,0.0022);
0128 fSoft->AddElement(elCl,0.0014);
0129 fSoft->AddElement(elK,0.0021);
0130 fSoft->AddElement(elFe,0.000063);
0131 fSoft->AddElement(elZn,0.000032);
0132 fSoft->AddElement(elRb,0.0000057);
0133 fSoft->AddElement(elSr,0.00000034);
0134 fSoft->AddElement(elZr,0.000008);
0135 fSoft->AddElement(elPb,0.00000016);
0136
0137
0138
0139 d = 1.4862*g/cm3;
0140 fSkeleton = new G4Material("skeleton",d,15);
0141 fSkeleton -> AddElement(elH,0.0704);
0142 fSkeleton -> AddElement(elC,0.2279);
0143 fSkeleton -> AddElement(elN,0.0387);
0144 fSkeleton -> AddElement(elO,0.4856);
0145 fSkeleton -> AddElement(elNa,0.0032);
0146 fSkeleton -> AddElement(elMg,0.0011);
0147 fSkeleton -> AddElement(elP,0.0694);
0148 fSkeleton -> AddElement(elS,0.0017);
0149 fSkeleton -> AddElement(elCl,0.0014);
0150 fSkeleton -> AddElement(elK,0.0015);
0151 fSkeleton -> AddElement(elCa,0.0991);
0152 fSkeleton -> AddElement(elFe,0.00008);
0153 fSkeleton -> AddElement(elZn,0.000048);
0154 fSkeleton -> AddElement(elSr,0.000032);
0155 fSkeleton -> AddElement(elPb,0.000011);
0156
0157
0158 d = 0.2958 *g/cm3;
0159 fLung = new G4Material("lung_material", d,16);
0160 fLung -> AddElement(elH, 0.1021);
0161 fLung -> AddElement(elC, 0.1001);
0162 fLung -> AddElement(elN,0.028);
0163 fLung -> AddElement(elO,0.7596);
0164 fLung -> AddElement(elNa,0.0019);
0165 fLung -> AddElement(elMg,0.000074);
0166 fLung -> AddElement(elP,0.00081);
0167 fLung -> AddElement(elS,0.0023);
0168 fLung -> AddElement(elCl,0.0027);
0169 fLung -> AddElement(elK,0.0020);
0170 fLung -> AddElement(elCa,0.00007);
0171 fLung -> AddElement(elFe,0.00037);
0172 fLung -> AddElement(elZn,0.000011);
0173 fLung -> AddElement(elRb,0.0000037);
0174 fLung -> AddElement(elSr,0.000000059);
0175 fLung -> AddElement(elPb,0.00000041);
0176
0177 G4double density_adipose = 0.93 *g/cm3;
0178 fAdipose = new G4Material("adipose", density_adipose,8);
0179 fAdipose -> AddElement(elH, 0.112);
0180 fAdipose -> AddElement(elC, 0.619);
0181 fAdipose -> AddElement(elN, 0.017);
0182 fAdipose -> AddElement(elO, 0.251);
0183 fAdipose -> AddElement(elS, 0.00025);
0184 fAdipose -> AddElement(elP, 0.00025);
0185 fAdipose -> AddElement(elK, 0.00025);
0186 fAdipose -> AddElement(elCa,0.00025);
0187
0188 G4double density_glandular = 1.04 * g/cm3;
0189 fGlandular = new G4Material("glandular", density_glandular,8);
0190 fGlandular -> AddElement(elH, 0.1);
0191 fGlandular -> AddElement(elC,0.184);
0192 fGlandular -> AddElement(elN, 0.032);
0193 fGlandular -> AddElement(elO, 0.679);
0194 fGlandular -> AddElement(elS, 0.00125);
0195 fGlandular -> AddElement(elP, 0.00125);
0196 fGlandular -> AddElement(elK, 0.00125);
0197 fGlandular -> AddElement(elCa,0.00125);
0198
0199
0200 d = (density_adipose * 0.5) + (density_glandular * 0.5);
0201 fAdipose_glandular = new G4Material("adipose_glandular", d, 2);
0202 fAdipose_glandular -> AddMaterial(fAdipose, 0.5);
0203 fAdipose_glandular -> AddMaterial(fGlandular, 0.5);
0204
0205
0206 d = 1.290*mg/cm3;
0207 auto* matAir = new G4Material("Air",d,2);
0208 matAir->AddElement(elN,0.7);
0209 matAir->AddElement(elO,0.3);
0210 }
0211
0212 G4Material* G4HumanPhantomMaterial::GetMaterial(G4String material)
0213 {
0214
0215 G4Material* pttoMaterial = G4Material::GetMaterial(material);
0216 return pttoMaterial;
0217 }