Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // 26 // 27 /// \file optical/wls/src/WLSMaterials.cc 27 /// \file optical/wls/src/WLSMaterials.cc 28 /// \brief Implementation of the WLSMaterials 28 /// \brief Implementation of the WLSMaterials class 29 // 29 // 30 // 30 // 31 #include "WLSMaterials.hh" 31 #include "WLSMaterials.hh" 32 32 33 #include "G4NistManager.hh" 33 #include "G4NistManager.hh" 34 #include "G4SystemOfUnits.hh" 34 #include "G4SystemOfUnits.hh" 35 35 36 WLSMaterials* WLSMaterials::fInstance = nullpt 36 WLSMaterials* WLSMaterials::fInstance = nullptr; 37 37 38 //....oooOO0OOooo........oooOO0OOooo........oo 38 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 39 39 40 WLSMaterials::WLSMaterials() 40 WLSMaterials::WLSMaterials() 41 { 41 { 42 fNistMan = G4NistManager::Instance(); 42 fNistMan = G4NistManager::Instance(); 43 fNistMan->SetVerbose(2); 43 fNistMan->SetVerbose(2); 44 44 45 CreateMaterials(); 45 CreateMaterials(); 46 } 46 } 47 47 48 //....oooOO0OOooo........oooOO0OOooo........oo 48 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 49 49 50 WLSMaterials::~WLSMaterials() 50 WLSMaterials::~WLSMaterials() 51 { 51 { 52 delete fAir; 52 delete fAir; 53 delete fPMMA; 53 delete fPMMA; 54 delete fPethylene; 54 delete fPethylene; 55 delete fFPethylene; 55 delete fFPethylene; 56 delete fPolystyrene; 56 delete fPolystyrene; 57 delete fSilicone; 57 delete fSilicone; 58 delete fCoating; 58 delete fCoating; 59 } 59 } 60 60 61 //....oooOO0OOooo........oooOO0OOooo........oo 61 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 62 62 63 WLSMaterials* WLSMaterials::GetInstance() 63 WLSMaterials* WLSMaterials::GetInstance() 64 { 64 { 65 if (!fInstance) { << 65 if(!fInstance) >> 66 { 66 fInstance = new WLSMaterials(); 67 fInstance = new WLSMaterials(); 67 } 68 } 68 return fInstance; 69 return fInstance; 69 } 70 } 70 71 71 //....oooOO0OOooo........oooOO0OOooo........oo 72 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 72 73 73 G4Material* WLSMaterials::GetMaterial(const G4 74 G4Material* WLSMaterials::GetMaterial(const G4String material) 74 { 75 { 75 G4Material* mat = fNistMan->FindOrBuildMater 76 G4Material* mat = fNistMan->FindOrBuildMaterial(material); 76 77 77 if (!mat) mat = G4Material::GetMaterial(mate << 78 if(!mat) 78 if (!mat) { << 79 mat = G4Material::GetMaterial(material); >> 80 if(!mat) >> 81 { 79 G4ExceptionDescription ed; 82 G4ExceptionDescription ed; 80 ed << "Material " << material << " not fou 83 ed << "Material " << material << " not found!"; 81 G4Exception("WLSMaterials::GetMaterial", " 84 G4Exception("WLSMaterials::GetMaterial", "", FatalException, ed); 82 } 85 } 83 86 84 return mat; 87 return mat; 85 } 88 } 86 89 87 //....oooOO0OOooo........oooOO0OOooo........oo 90 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 88 91 89 void WLSMaterials::CreateMaterials() 92 void WLSMaterials::CreateMaterials() 90 { 93 { 91 G4double density; 94 G4double density; 92 G4int ncomponents; 95 G4int ncomponents; 93 G4double fractionmass; 96 G4double fractionmass; 94 std::vector<G4int> natoms; 97 std::vector<G4int> natoms; 95 std::vector<G4double> fractionMass; 98 std::vector<G4double> fractionMass; 96 std::vector<G4String> elements; 99 std::vector<G4String> elements; 97 100 98 // Materials Definitions 101 // Materials Definitions 99 // ===================== 102 // ===================== 100 103 101 //------------------------------------------ 104 //-------------------------------------------------- 102 // Vacuum 105 // Vacuum 103 //------------------------------------------ 106 //-------------------------------------------------- 104 107 105 fNistMan->FindOrBuildMaterial("G4_Galactic") 108 fNistMan->FindOrBuildMaterial("G4_Galactic"); 106 109 107 //------------------------------------------ 110 //-------------------------------------------------- 108 // Air 111 // Air 109 //------------------------------------------ 112 //-------------------------------------------------- 110 113 111 fAir = fNistMan->FindOrBuildMaterial("G4_AIR 114 fAir = fNistMan->FindOrBuildMaterial("G4_AIR"); 112 115 113 //------------------------------------------ 116 //-------------------------------------------------- 114 // WLSfiber PMMA 117 // WLSfiber PMMA 115 //------------------------------------------ 118 //-------------------------------------------------- 116 119 117 elements.push_back("C"); 120 elements.push_back("C"); 118 natoms.push_back(5); 121 natoms.push_back(5); 119 elements.push_back("H"); 122 elements.push_back("H"); 120 natoms.push_back(8); 123 natoms.push_back(8); 121 elements.push_back("O"); 124 elements.push_back("O"); 122 natoms.push_back(2); 125 natoms.push_back(2); 123 126 124 density = 1.190 * g / cm3; 127 density = 1.190 * g / cm3; 125 128 126 fPMMA = fNistMan->ConstructNewMaterial("PMMA 129 fPMMA = fNistMan->ConstructNewMaterial("PMMA", elements, natoms, density); 127 130 128 elements.clear(); 131 elements.clear(); 129 natoms.clear(); 132 natoms.clear(); 130 133 131 //------------------------------------------ 134 //-------------------------------------------------- 132 // Cladding (polyethylene) 135 // Cladding (polyethylene) 133 //------------------------------------------ 136 //-------------------------------------------------- 134 137 135 elements.push_back("C"); 138 elements.push_back("C"); 136 natoms.push_back(2); 139 natoms.push_back(2); 137 elements.push_back("H"); 140 elements.push_back("H"); 138 natoms.push_back(4); 141 natoms.push_back(4); 139 142 140 density = 1.200 * g / cm3; 143 density = 1.200 * g / cm3; 141 144 142 fPethylene = fNistMan->ConstructNewMaterial( << 145 fPethylene = >> 146 fNistMan->ConstructNewMaterial("Pethylene", elements, natoms, density); 143 147 144 elements.clear(); 148 elements.clear(); 145 natoms.clear(); 149 natoms.clear(); 146 150 147 //------------------------------------------ 151 //-------------------------------------------------- 148 // Double Cladding (fluorinated polyethylene 152 // Double Cladding (fluorinated polyethylene) 149 //------------------------------------------ 153 //-------------------------------------------------- 150 154 151 elements.push_back("C"); 155 elements.push_back("C"); 152 natoms.push_back(2); 156 natoms.push_back(2); 153 elements.push_back("H"); 157 elements.push_back("H"); 154 natoms.push_back(4); 158 natoms.push_back(4); 155 159 156 density = 1.400 * g / cm3; 160 density = 1.400 * g / cm3; 157 161 158 fFPethylene = fNistMan->ConstructNewMaterial << 162 fFPethylene = >> 163 fNistMan->ConstructNewMaterial("FPethylene", elements, natoms, density); 159 164 160 elements.clear(); 165 elements.clear(); 161 natoms.clear(); 166 natoms.clear(); 162 167 163 //------------------------------------------ 168 //-------------------------------------------------- 164 // Polystyrene 169 // Polystyrene 165 //------------------------------------------ 170 //-------------------------------------------------- 166 171 167 elements.push_back("C"); 172 elements.push_back("C"); 168 natoms.push_back(8); 173 natoms.push_back(8); 169 elements.push_back("H"); 174 elements.push_back("H"); 170 natoms.push_back(8); 175 natoms.push_back(8); 171 176 172 density = 1.050 * g / cm3; 177 density = 1.050 * g / cm3; 173 178 174 fPolystyrene = fNistMan->ConstructNewMateria << 179 fPolystyrene = >> 180 fNistMan->ConstructNewMaterial("Polystyrene", elements, natoms, density); 175 181 176 elements.clear(); 182 elements.clear(); 177 natoms.clear(); 183 natoms.clear(); 178 184 179 //------------------------------------------ 185 //-------------------------------------------------- 180 // Silicone (Template for Optical Grease) 186 // Silicone (Template for Optical Grease) 181 //------------------------------------------ 187 //-------------------------------------------------- 182 188 183 elements.push_back("C"); 189 elements.push_back("C"); 184 natoms.push_back(2); 190 natoms.push_back(2); 185 elements.push_back("H"); 191 elements.push_back("H"); 186 natoms.push_back(6); 192 natoms.push_back(6); 187 193 188 density = 1.060 * g / cm3; 194 density = 1.060 * g / cm3; 189 195 190 fSilicone = fNistMan->ConstructNewMaterial(" << 196 fSilicone = >> 197 fNistMan->ConstructNewMaterial("Silicone", elements, natoms, density); 191 198 192 elements.clear(); 199 elements.clear(); 193 natoms.clear(); 200 natoms.clear(); 194 201 195 //------------------------------------------ 202 //-------------------------------------------------- 196 // Aluminium 203 // Aluminium 197 //------------------------------------------ 204 //-------------------------------------------------- 198 205 199 fNistMan->FindOrBuildMaterial("G4_Al"); 206 fNistMan->FindOrBuildMaterial("G4_Al"); 200 207 201 //------------------------------------------ 208 //-------------------------------------------------- 202 // TiO2 209 // TiO2 203 //------------------------------------------ 210 //-------------------------------------------------- 204 211 205 elements.push_back("Ti"); 212 elements.push_back("Ti"); 206 natoms.push_back(1); 213 natoms.push_back(1); 207 elements.push_back("O"); 214 elements.push_back("O"); 208 natoms.push_back(2); 215 natoms.push_back(2); 209 216 210 density = 4.26 * g / cm3; 217 density = 4.26 * g / cm3; 211 218 212 G4Material* TiO2 = fNistMan->ConstructNewMat << 219 G4Material* TiO2 = >> 220 fNistMan->ConstructNewMaterial("TiO2", elements, natoms, density); 213 221 214 elements.clear(); 222 elements.clear(); 215 natoms.clear(); 223 natoms.clear(); 216 224 217 //------------------------------------------ 225 //-------------------------------------------------- 218 // Scintillator Coating - 15% TiO2 and 85% p 226 // Scintillator Coating - 15% TiO2 and 85% polystyrene by weight. 219 //------------------------------------------ 227 //-------------------------------------------------- 220 228 221 density = 1.52 * g / cm3; 229 density = 1.52 * g / cm3; 222 230 223 fCoating = new G4Material("Coating", density 231 fCoating = new G4Material("Coating", density, ncomponents = 2); 224 232 225 fCoating->AddMaterial(TiO2, fractionmass = 1 233 fCoating->AddMaterial(TiO2, fractionmass = 15 * perCent); 226 fCoating->AddMaterial(fPolystyrene, fraction 234 fCoating->AddMaterial(fPolystyrene, fractionmass = 85 * perCent); 227 235 228 // 236 // 229 // ------------ Generate & Add Material Prop 237 // ------------ Generate & Add Material Properties Table ------------ 230 // 238 // 231 239 232 std::vector<G4double> energy = { 240 std::vector<G4double> energy = { 233 2.00 * eV, 2.03 * eV, 2.06 * eV, 2.09 * eV << 241 2.00 * eV, 2.03 * eV, 2.06 * eV, 2.09 * eV, 2.12 * eV, 2.15 * eV, 2.18 * eV, 234 2.24 * eV, 2.27 * eV, 2.30 * eV, 2.33 * eV << 242 2.21 * eV, 2.24 * eV, 2.27 * eV, 2.30 * eV, 2.33 * eV, 2.36 * eV, 2.39 * eV, 235 2.48 * eV, 2.51 * eV, 2.54 * eV, 2.57 * eV << 243 2.42 * eV, 2.45 * eV, 2.48 * eV, 2.51 * eV, 2.54 * eV, 2.57 * eV, 2.60 * eV, 236 2.72 * eV, 2.75 * eV, 2.78 * eV, 2.81 * eV << 244 2.63 * eV, 2.66 * eV, 2.69 * eV, 2.72 * eV, 2.75 * eV, 2.78 * eV, 2.81 * eV, 237 2.96 * eV, 2.99 * eV, 3.02 * eV, 3.05 * eV << 245 2.84 * eV, 2.87 * eV, 2.90 * eV, 2.93 * eV, 2.96 * eV, 2.99 * eV, 3.02 * eV, 238 3.20 * eV, 3.23 * eV, 3.26 * eV, 3.29 * eV << 246 3.05 * eV, 3.08 * eV, 3.11 * eV, 3.14 * eV, 3.17 * eV, 3.20 * eV, 3.23 * eV, 239 3.44 * eV, 3.47 * eV}; << 247 3.26 * eV, 3.29 * eV, 3.32 * eV, 3.35 * eV, 3.38 * eV, 3.41 * eV, 3.44 * eV, >> 248 3.47 * eV >> 249 }; 240 250 241 std::vector<G4double> energySmall = {2.0 * e << 251 std::vector<G4double> energySmall = { 2.0 * eV, 3.47 * eV }; 242 252 243 //------------------------------------------ 253 //-------------------------------------------------- 244 // Air 254 // Air 245 //------------------------------------------ 255 //-------------------------------------------------- 246 256 247 std::vector<G4double> refractiveIndex = {1.0 << 257 std::vector<G4double> refractiveIndex = { 1.0, 1.0 }; 248 258 249 auto mpt = new G4MaterialPropertiesTable(); 259 auto mpt = new G4MaterialPropertiesTable(); 250 mpt->AddProperty("RINDEX", energySmall, refr 260 mpt->AddProperty("RINDEX", energySmall, refractiveIndex); 251 261 252 fAir->SetMaterialPropertiesTable(mpt); 262 fAir->SetMaterialPropertiesTable(mpt); 253 263 254 //------------------------------------------ 264 //-------------------------------------------------- 255 // PMMA for WLSfibers 265 // PMMA for WLSfibers 256 //------------------------------------------ 266 //-------------------------------------------------- 257 267 258 std::vector<G4double> refractiveIndexWLSfibe << 268 std::vector<G4double> refractiveIndexWLSfiber = { 1.60, 1.60 }; 259 269 260 std::vector<G4double> absWLSfiber = { 270 std::vector<G4double> absWLSfiber = { 261 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5. << 271 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 262 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5. << 272 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 263 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5. << 273 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 264 5.40 * m, 5.40 * m, 1.10 * m, 1.10 * m, 1. << 274 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 265 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. << 275 5.40 * m, 1.10 * m, 1.10 * m, 1.10 * m, 1.10 * m, 1.10 * m, 1.10 * m, 266 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. << 276 1.10 * m, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 267 << 277 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 268 std::vector<G4double> emissionFib = {0.05, 0 << 278 1. * mm 269 3.25, 3 << 279 }; 270 12.9, 1 << 280 271 15.0, 9 << 281 std::vector<G4double> emissionFib = { 272 0.00, 0 << 282 0.05, 0.10, 0.30, 0.50, 0.75, 1.00, 1.50, 1.85, 2.30, 2.75, >> 283 3.25, 3.80, 4.50, 5.20, 6.00, 7.00, 8.50, 9.50, 11.1, 12.4, >> 284 12.9, 13.0, 12.8, 12.3, 11.1, 11.0, 12.0, 11.0, 17.0, 16.9, >> 285 15.0, 9.00, 2.50, 1.00, 0.05, 0.00, 0.00, 0.00, 0.00, 0.00, >> 286 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 >> 287 }; 273 288 274 // Add entries into properties table 289 // Add entries into properties table 275 auto mptWLSfiber = new G4MaterialPropertiesT 290 auto mptWLSfiber = new G4MaterialPropertiesTable(); 276 mptWLSfiber->AddProperty("RINDEX", energySma 291 mptWLSfiber->AddProperty("RINDEX", energySmall, refractiveIndexWLSfiber); 277 mptWLSfiber->AddProperty("WLSABSLENGTH", ene 292 mptWLSfiber->AddProperty("WLSABSLENGTH", energy, absWLSfiber); 278 mptWLSfiber->AddProperty("WLSCOMPONENT", ene 293 mptWLSfiber->AddProperty("WLSCOMPONENT", energy, emissionFib); 279 mptWLSfiber->AddConstProperty("WLSTIMECONSTA 294 mptWLSfiber->AddConstProperty("WLSTIMECONSTANT", 0.5 * ns); 280 295 281 fPMMA->SetMaterialPropertiesTable(mptWLSfibe 296 fPMMA->SetMaterialPropertiesTable(mptWLSfiber); 282 297 283 //------------------------------------------ 298 //-------------------------------------------------- 284 // Polyethylene 299 // Polyethylene 285 //------------------------------------------ 300 //-------------------------------------------------- 286 301 287 std::vector<G4double> refractiveIndexClad1 = << 302 std::vector<G4double> refractiveIndexClad1 = { 1.49, 1.49 }; 288 303 289 std::vector<G4double> absClad = {20.0 * m, 2 << 304 std::vector<G4double> absClad = { 20.0 * m, 20.0 * m }; 290 305 291 // Add entries into properties table 306 // Add entries into properties table 292 auto mptClad1 = new G4MaterialPropertiesTabl 307 auto mptClad1 = new G4MaterialPropertiesTable(); 293 mptClad1->AddProperty("RINDEX", energySmall, 308 mptClad1->AddProperty("RINDEX", energySmall, refractiveIndexClad1); 294 mptClad1->AddProperty("ABSLENGTH", energySma 309 mptClad1->AddProperty("ABSLENGTH", energySmall, absClad); 295 310 296 fPethylene->SetMaterialPropertiesTable(mptCl 311 fPethylene->SetMaterialPropertiesTable(mptClad1); 297 312 298 //------------------------------------------ 313 //-------------------------------------------------- 299 // Fluorinated Polyethylene 314 // Fluorinated Polyethylene 300 //------------------------------------------ 315 //-------------------------------------------------- 301 316 302 std::vector<G4double> refractiveIndexClad2 = << 317 std::vector<G4double> refractiveIndexClad2 = { 1.42, 1.42 }; 303 318 304 // Add entries into properties table 319 // Add entries into properties table 305 auto mptClad2 = new G4MaterialPropertiesTabl 320 auto mptClad2 = new G4MaterialPropertiesTable(); 306 mptClad2->AddProperty("RINDEX", energySmall, 321 mptClad2->AddProperty("RINDEX", energySmall, refractiveIndexClad2); 307 mptClad2->AddProperty("ABSLENGTH", energySma 322 mptClad2->AddProperty("ABSLENGTH", energySmall, absClad); 308 323 309 fFPethylene->SetMaterialPropertiesTable(mptC 324 fFPethylene->SetMaterialPropertiesTable(mptClad2); 310 325 311 //------------------------------------------ 326 //-------------------------------------------------- 312 // Silicone 327 // Silicone 313 //------------------------------------------ 328 //-------------------------------------------------- 314 329 315 std::vector<G4double> refractiveIndexSilicon << 330 std::vector<G4double> refractiveIndexSilicone = { 1.46, 1.46 }; 316 331 317 // Add entries into properties table 332 // Add entries into properties table 318 auto mptSilicone = new G4MaterialPropertiesT 333 auto mptSilicone = new G4MaterialPropertiesTable(); 319 mptSilicone->AddProperty("RINDEX", energySma 334 mptSilicone->AddProperty("RINDEX", energySmall, refractiveIndexSilicone); 320 mptSilicone->AddProperty("ABSLENGTH", energy 335 mptSilicone->AddProperty("ABSLENGTH", energySmall, absClad); 321 336 322 fSilicone->SetMaterialPropertiesTable(mptSil 337 fSilicone->SetMaterialPropertiesTable(mptSilicone); 323 338 324 //------------------------------------------ 339 //-------------------------------------------------- 325 // Polystyrene 340 // Polystyrene 326 //------------------------------------------ 341 //-------------------------------------------------- 327 342 328 std::vector<G4double> refractiveIndexPS = {1 << 343 std::vector<G4double> refractiveIndexPS = { 1.50, 1.50 }; 329 344 330 std::vector<G4double> absPS = {2. * cm, 2. * << 345 std::vector<G4double> absPS = { 2. * cm, 2. * cm }; 331 346 332 std::vector<G4double> scintilFast = { 347 std::vector<G4double> scintilFast = { 333 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0. << 348 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 334 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0. << 349 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 335 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1. << 350 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, >> 351 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 >> 352 }; 336 353 337 // Add entries into properties table 354 // Add entries into properties table 338 auto mptPolystyrene = new G4MaterialProperti 355 auto mptPolystyrene = new G4MaterialPropertiesTable(); 339 mptPolystyrene->AddProperty("RINDEX", energy 356 mptPolystyrene->AddProperty("RINDEX", energySmall, refractiveIndexPS); 340 mptPolystyrene->AddProperty("ABSLENGTH", ene 357 mptPolystyrene->AddProperty("ABSLENGTH", energySmall, absPS); 341 mptPolystyrene->AddProperty("SCINTILLATIONCO 358 mptPolystyrene->AddProperty("SCINTILLATIONCOMPONENT1", energy, scintilFast); 342 mptPolystyrene->AddConstProperty("SCINTILLAT 359 mptPolystyrene->AddConstProperty("SCINTILLATIONYIELD", 10. / keV); 343 mptPolystyrene->AddConstProperty("RESOLUTION 360 mptPolystyrene->AddConstProperty("RESOLUTIONSCALE", 1.0); 344 mptPolystyrene->AddConstProperty("SCINTILLAT 361 mptPolystyrene->AddConstProperty("SCINTILLATIONTIMECONSTANT1", 10. * ns); 345 362 346 fPolystyrene->SetMaterialPropertiesTable(mpt 363 fPolystyrene->SetMaterialPropertiesTable(mptPolystyrene); 347 364 348 // Set the Birks Constant for the Polystyren 365 // Set the Birks Constant for the Polystyrene scintillator 349 fPolystyrene->GetIonisation()->SetBirksConst 366 fPolystyrene->GetIonisation()->SetBirksConstant(0.126 * mm / MeV); 350 } 367 } 351 368