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; << 53 delete fPMMA; 52 delete fPMMA; 54 delete fPethylene; 53 delete fPethylene; 55 delete fFPethylene; 54 delete fFPethylene; 56 delete fPolystyrene; 55 delete fPolystyrene; 57 delete fSilicone; 56 delete fSilicone; 58 delete fCoating; << 59 } 57 } 60 58 61 //....oooOO0OOooo........oooOO0OOooo........oo 59 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 62 60 63 WLSMaterials* WLSMaterials::GetInstance() 61 WLSMaterials* WLSMaterials::GetInstance() 64 { 62 { 65 if (!fInstance) { << 63 if(!fInstance) >> 64 { 66 fInstance = new WLSMaterials(); 65 fInstance = new WLSMaterials(); 67 } 66 } 68 return fInstance; 67 return fInstance; 69 } 68 } 70 69 71 //....oooOO0OOooo........oooOO0OOooo........oo 70 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 72 71 73 G4Material* WLSMaterials::GetMaterial(const G4 72 G4Material* WLSMaterials::GetMaterial(const G4String material) 74 { 73 { 75 G4Material* mat = fNistMan->FindOrBuildMater 74 G4Material* mat = fNistMan->FindOrBuildMaterial(material); 76 75 77 if (!mat) mat = G4Material::GetMaterial(mate << 76 if(!mat) 78 if (!mat) { << 77 mat = G4Material::GetMaterial(material); >> 78 if(!mat) >> 79 { 79 G4ExceptionDescription ed; 80 G4ExceptionDescription ed; 80 ed << "Material " << material << " not fou 81 ed << "Material " << material << " not found!"; 81 G4Exception("WLSMaterials::GetMaterial", " 82 G4Exception("WLSMaterials::GetMaterial", "", FatalException, ed); 82 } 83 } 83 84 84 return mat; 85 return mat; 85 } 86 } 86 87 87 //....oooOO0OOooo........oooOO0OOooo........oo 88 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 88 89 89 void WLSMaterials::CreateMaterials() 90 void WLSMaterials::CreateMaterials() 90 { 91 { 91 G4double density; 92 G4double density; 92 G4int ncomponents; 93 G4int ncomponents; 93 G4double fractionmass; 94 G4double fractionmass; 94 std::vector<G4int> natoms; 95 std::vector<G4int> natoms; 95 std::vector<G4double> fractionMass; 96 std::vector<G4double> fractionMass; 96 std::vector<G4String> elements; 97 std::vector<G4String> elements; 97 98 98 // Materials Definitions 99 // Materials Definitions 99 // ===================== 100 // ===================== 100 101 101 //------------------------------------------ 102 //-------------------------------------------------- 102 // Vacuum 103 // Vacuum 103 //------------------------------------------ 104 //-------------------------------------------------- 104 105 105 fNistMan->FindOrBuildMaterial("G4_Galactic") 106 fNistMan->FindOrBuildMaterial("G4_Galactic"); 106 107 107 //------------------------------------------ 108 //-------------------------------------------------- 108 // Air 109 // Air 109 //------------------------------------------ 110 //-------------------------------------------------- 110 111 111 fAir = fNistMan->FindOrBuildMaterial("G4_AIR 112 fAir = fNistMan->FindOrBuildMaterial("G4_AIR"); 112 113 113 //------------------------------------------ 114 //-------------------------------------------------- 114 // WLSfiber PMMA 115 // WLSfiber PMMA 115 //------------------------------------------ 116 //-------------------------------------------------- 116 117 117 elements.push_back("C"); 118 elements.push_back("C"); 118 natoms.push_back(5); 119 natoms.push_back(5); 119 elements.push_back("H"); 120 elements.push_back("H"); 120 natoms.push_back(8); 121 natoms.push_back(8); 121 elements.push_back("O"); 122 elements.push_back("O"); 122 natoms.push_back(2); 123 natoms.push_back(2); 123 124 124 density = 1.190 * g / cm3; 125 density = 1.190 * g / cm3; 125 126 126 fPMMA = fNistMan->ConstructNewMaterial("PMMA 127 fPMMA = fNistMan->ConstructNewMaterial("PMMA", elements, natoms, density); 127 128 128 elements.clear(); 129 elements.clear(); 129 natoms.clear(); 130 natoms.clear(); 130 131 131 //------------------------------------------ 132 //-------------------------------------------------- 132 // Cladding (polyethylene) 133 // Cladding (polyethylene) 133 //------------------------------------------ 134 //-------------------------------------------------- 134 135 135 elements.push_back("C"); 136 elements.push_back("C"); 136 natoms.push_back(2); 137 natoms.push_back(2); 137 elements.push_back("H"); 138 elements.push_back("H"); 138 natoms.push_back(4); 139 natoms.push_back(4); 139 140 140 density = 1.200 * g / cm3; 141 density = 1.200 * g / cm3; 141 142 142 fPethylene = fNistMan->ConstructNewMaterial( << 143 fPethylene = >> 144 fNistMan->ConstructNewMaterial("Pethylene", elements, natoms, density); 143 145 144 elements.clear(); 146 elements.clear(); 145 natoms.clear(); 147 natoms.clear(); 146 148 147 //------------------------------------------ 149 //-------------------------------------------------- 148 // Double Cladding (fluorinated polyethylene 150 // Double Cladding (fluorinated polyethylene) 149 //------------------------------------------ 151 //-------------------------------------------------- 150 152 151 elements.push_back("C"); 153 elements.push_back("C"); 152 natoms.push_back(2); 154 natoms.push_back(2); 153 elements.push_back("H"); 155 elements.push_back("H"); 154 natoms.push_back(4); 156 natoms.push_back(4); 155 157 156 density = 1.400 * g / cm3; 158 density = 1.400 * g / cm3; 157 159 158 fFPethylene = fNistMan->ConstructNewMaterial << 160 fFPethylene = >> 161 fNistMan->ConstructNewMaterial("FPethylene", elements, natoms, density); 159 162 160 elements.clear(); 163 elements.clear(); 161 natoms.clear(); 164 natoms.clear(); 162 165 163 //------------------------------------------ 166 //-------------------------------------------------- 164 // Polystyrene 167 // Polystyrene 165 //------------------------------------------ 168 //-------------------------------------------------- 166 169 167 elements.push_back("C"); 170 elements.push_back("C"); 168 natoms.push_back(8); 171 natoms.push_back(8); 169 elements.push_back("H"); 172 elements.push_back("H"); 170 natoms.push_back(8); 173 natoms.push_back(8); 171 174 172 density = 1.050 * g / cm3; 175 density = 1.050 * g / cm3; 173 176 174 fPolystyrene = fNistMan->ConstructNewMateria << 177 fPolystyrene = >> 178 fNistMan->ConstructNewMaterial("Polystyrene", elements, natoms, density); 175 179 176 elements.clear(); 180 elements.clear(); 177 natoms.clear(); 181 natoms.clear(); 178 182 179 //------------------------------------------ 183 //-------------------------------------------------- 180 // Silicone (Template for Optical Grease) 184 // Silicone (Template for Optical Grease) 181 //------------------------------------------ 185 //-------------------------------------------------- 182 186 183 elements.push_back("C"); 187 elements.push_back("C"); 184 natoms.push_back(2); 188 natoms.push_back(2); 185 elements.push_back("H"); 189 elements.push_back("H"); 186 natoms.push_back(6); 190 natoms.push_back(6); 187 191 188 density = 1.060 * g / cm3; 192 density = 1.060 * g / cm3; 189 193 190 fSilicone = fNistMan->ConstructNewMaterial(" << 194 fSilicone = >> 195 fNistMan->ConstructNewMaterial("Silicone", elements, natoms, density); 191 196 192 elements.clear(); 197 elements.clear(); 193 natoms.clear(); 198 natoms.clear(); 194 199 195 //------------------------------------------ 200 //-------------------------------------------------- 196 // Aluminium 201 // Aluminium 197 //------------------------------------------ 202 //-------------------------------------------------- 198 203 199 fNistMan->FindOrBuildMaterial("G4_Al"); 204 fNistMan->FindOrBuildMaterial("G4_Al"); 200 205 201 //------------------------------------------ 206 //-------------------------------------------------- 202 // TiO2 207 // TiO2 203 //------------------------------------------ 208 //-------------------------------------------------- 204 209 205 elements.push_back("Ti"); 210 elements.push_back("Ti"); 206 natoms.push_back(1); 211 natoms.push_back(1); 207 elements.push_back("O"); 212 elements.push_back("O"); 208 natoms.push_back(2); 213 natoms.push_back(2); 209 214 210 density = 4.26 * g / cm3; 215 density = 4.26 * g / cm3; 211 216 212 G4Material* TiO2 = fNistMan->ConstructNewMat << 217 G4Material* TiO2 = >> 218 fNistMan->ConstructNewMaterial("TiO2", elements, natoms, density); 213 219 214 elements.clear(); 220 elements.clear(); 215 natoms.clear(); 221 natoms.clear(); 216 222 217 //------------------------------------------ 223 //-------------------------------------------------- 218 // Scintillator Coating - 15% TiO2 and 85% p 224 // Scintillator Coating - 15% TiO2 and 85% polystyrene by weight. 219 //------------------------------------------ 225 //-------------------------------------------------- 220 226 221 density = 1.52 * g / cm3; 227 density = 1.52 * g / cm3; 222 228 223 fCoating = new G4Material("Coating", density 229 fCoating = new G4Material("Coating", density, ncomponents = 2); 224 230 225 fCoating->AddMaterial(TiO2, fractionmass = 1 231 fCoating->AddMaterial(TiO2, fractionmass = 15 * perCent); 226 fCoating->AddMaterial(fPolystyrene, fraction 232 fCoating->AddMaterial(fPolystyrene, fractionmass = 85 * perCent); 227 233 228 // 234 // 229 // ------------ Generate & Add Material Prop 235 // ------------ Generate & Add Material Properties Table ------------ 230 // 236 // 231 237 232 std::vector<G4double> energy = { 238 std::vector<G4double> energy = { 233 2.00 * eV, 2.03 * eV, 2.06 * eV, 2.09 * eV << 239 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 << 240 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 << 241 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 << 242 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 << 243 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 << 244 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}; << 245 3.26 * eV, 3.29 * eV, 3.32 * eV, 3.35 * eV, 3.38 * eV, 3.41 * eV, 3.44 * eV, >> 246 3.47 * eV >> 247 }; 240 248 241 std::vector<G4double> energySmall = {2.0 * e << 249 std::vector<G4double> energySmall = { 2.0 * eV, 3.47 * eV }; 242 250 243 //------------------------------------------ 251 //-------------------------------------------------- 244 // Air 252 // Air 245 //------------------------------------------ 253 //-------------------------------------------------- 246 254 247 std::vector<G4double> refractiveIndex = {1.0 << 255 std::vector<G4double> refractiveIndex = { 1.0, 1.0 }; 248 256 249 auto mpt = new G4MaterialPropertiesTable(); << 257 G4MaterialPropertiesTable* mpt = new G4MaterialPropertiesTable(); 250 mpt->AddProperty("RINDEX", energySmall, refr 258 mpt->AddProperty("RINDEX", energySmall, refractiveIndex); 251 259 252 fAir->SetMaterialPropertiesTable(mpt); 260 fAir->SetMaterialPropertiesTable(mpt); 253 261 254 //------------------------------------------ 262 //-------------------------------------------------- 255 // PMMA for WLSfibers 263 // PMMA for WLSfibers 256 //------------------------------------------ 264 //-------------------------------------------------- 257 265 258 std::vector<G4double> refractiveIndexWLSfibe << 266 std::vector<G4double> refractiveIndexWLSfiber = { 1.60, 1.60 }; 259 267 260 std::vector<G4double> absWLSfiber = { 268 std::vector<G4double> absWLSfiber = { 261 5.40 * m, 5.40 * m, 5.40 * m, 5.40 * m, 5. << 269 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. << 270 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. << 271 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. << 272 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. << 273 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. << 274 1.10 * m, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 267 << 275 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 1. * mm, 268 std::vector<G4double> emissionFib = {0.05, 0 << 276 1. * mm 269 3.25, 3 << 277 }; 270 12.9, 1 << 278 271 15.0, 9 << 279 std::vector<G4double> emissionFib = { 272 0.00, 0 << 280 0.05, 0.10, 0.30, 0.50, 0.75, 1.00, 1.50, 1.85, 2.30, 2.75, >> 281 3.25, 3.80, 4.50, 5.20, 6.00, 7.00, 8.50, 9.50, 11.1, 12.4, >> 282 12.9, 13.0, 12.8, 12.3, 11.1, 11.0, 12.0, 11.0, 17.0, 16.9, >> 283 15.0, 9.00, 2.50, 1.00, 0.05, 0.00, 0.00, 0.00, 0.00, 0.00, >> 284 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 >> 285 }; 273 286 274 // Add entries into properties table 287 // Add entries into properties table 275 auto mptWLSfiber = new G4MaterialPropertiesT << 288 G4MaterialPropertiesTable* mptWLSfiber = new G4MaterialPropertiesTable(); 276 mptWLSfiber->AddProperty("RINDEX", energySma 289 mptWLSfiber->AddProperty("RINDEX", energySmall, refractiveIndexWLSfiber); 277 mptWLSfiber->AddProperty("WLSABSLENGTH", ene 290 mptWLSfiber->AddProperty("WLSABSLENGTH", energy, absWLSfiber); 278 mptWLSfiber->AddProperty("WLSCOMPONENT", ene 291 mptWLSfiber->AddProperty("WLSCOMPONENT", energy, emissionFib); 279 mptWLSfiber->AddConstProperty("WLSTIMECONSTA 292 mptWLSfiber->AddConstProperty("WLSTIMECONSTANT", 0.5 * ns); 280 293 281 fPMMA->SetMaterialPropertiesTable(mptWLSfibe 294 fPMMA->SetMaterialPropertiesTable(mptWLSfiber); 282 295 283 //------------------------------------------ 296 //-------------------------------------------------- 284 // Polyethylene 297 // Polyethylene 285 //------------------------------------------ 298 //-------------------------------------------------- 286 299 287 std::vector<G4double> refractiveIndexClad1 = << 300 std::vector<G4double> refractiveIndexClad1 = { 1.49, 1.49 }; 288 301 289 std::vector<G4double> absClad = {20.0 * m, 2 << 302 std::vector<G4double> absClad = { 20.0 * m, 20.0 * m }; 290 303 291 // Add entries into properties table 304 // Add entries into properties table 292 auto mptClad1 = new G4MaterialPropertiesTabl << 305 G4MaterialPropertiesTable* mptClad1 = new G4MaterialPropertiesTable(); 293 mptClad1->AddProperty("RINDEX", energySmall, 306 mptClad1->AddProperty("RINDEX", energySmall, refractiveIndexClad1); 294 mptClad1->AddProperty("ABSLENGTH", energySma 307 mptClad1->AddProperty("ABSLENGTH", energySmall, absClad); 295 308 296 fPethylene->SetMaterialPropertiesTable(mptCl 309 fPethylene->SetMaterialPropertiesTable(mptClad1); 297 310 298 //------------------------------------------ 311 //-------------------------------------------------- 299 // Fluorinated Polyethylene 312 // Fluorinated Polyethylene 300 //------------------------------------------ 313 //-------------------------------------------------- 301 314 302 std::vector<G4double> refractiveIndexClad2 = << 315 std::vector<G4double> refractiveIndexClad2 = { 1.42, 1.42 }; 303 316 304 // Add entries into properties table 317 // Add entries into properties table 305 auto mptClad2 = new G4MaterialPropertiesTabl << 318 G4MaterialPropertiesTable* mptClad2 = new G4MaterialPropertiesTable(); 306 mptClad2->AddProperty("RINDEX", energySmall, 319 mptClad2->AddProperty("RINDEX", energySmall, refractiveIndexClad2); 307 mptClad2->AddProperty("ABSLENGTH", energySma 320 mptClad2->AddProperty("ABSLENGTH", energySmall, absClad); 308 321 309 fFPethylene->SetMaterialPropertiesTable(mptC 322 fFPethylene->SetMaterialPropertiesTable(mptClad2); 310 323 311 //------------------------------------------ 324 //-------------------------------------------------- 312 // Silicone 325 // Silicone 313 //------------------------------------------ 326 //-------------------------------------------------- 314 327 315 std::vector<G4double> refractiveIndexSilicon << 328 std::vector<G4double> refractiveIndexSilicone = { 1.46, 1.46 }; 316 329 317 // Add entries into properties table 330 // Add entries into properties table 318 auto mptSilicone = new G4MaterialPropertiesT << 331 G4MaterialPropertiesTable* mptSilicone = new G4MaterialPropertiesTable(); 319 mptSilicone->AddProperty("RINDEX", energySma 332 mptSilicone->AddProperty("RINDEX", energySmall, refractiveIndexSilicone); 320 mptSilicone->AddProperty("ABSLENGTH", energy 333 mptSilicone->AddProperty("ABSLENGTH", energySmall, absClad); 321 334 322 fSilicone->SetMaterialPropertiesTable(mptSil 335 fSilicone->SetMaterialPropertiesTable(mptSilicone); 323 336 324 //------------------------------------------ 337 //-------------------------------------------------- 325 // Polystyrene 338 // Polystyrene 326 //------------------------------------------ 339 //-------------------------------------------------- 327 340 328 std::vector<G4double> refractiveIndexPS = {1 << 341 std::vector<G4double> refractiveIndexPS = { 1.50, 1.50 }; 329 342 330 std::vector<G4double> absPS = {2. * cm, 2. * << 343 std::vector<G4double> absPS = { 2. * cm, 2. * cm }; 331 344 332 std::vector<G4double> scintilFast = { 345 std::vector<G4double> scintilFast = { 333 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0. << 346 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. << 347 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. << 348 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, >> 349 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 >> 350 }; 336 351 337 // Add entries into properties table 352 // Add entries into properties table 338 auto mptPolystyrene = new G4MaterialProperti << 353 G4MaterialPropertiesTable* mptPolystyrene = new G4MaterialPropertiesTable(); 339 mptPolystyrene->AddProperty("RINDEX", energy 354 mptPolystyrene->AddProperty("RINDEX", energySmall, refractiveIndexPS); 340 mptPolystyrene->AddProperty("ABSLENGTH", ene 355 mptPolystyrene->AddProperty("ABSLENGTH", energySmall, absPS); 341 mptPolystyrene->AddProperty("SCINTILLATIONCO 356 mptPolystyrene->AddProperty("SCINTILLATIONCOMPONENT1", energy, scintilFast); 342 mptPolystyrene->AddConstProperty("SCINTILLAT 357 mptPolystyrene->AddConstProperty("SCINTILLATIONYIELD", 10. / keV); 343 mptPolystyrene->AddConstProperty("RESOLUTION 358 mptPolystyrene->AddConstProperty("RESOLUTIONSCALE", 1.0); 344 mptPolystyrene->AddConstProperty("SCINTILLAT 359 mptPolystyrene->AddConstProperty("SCINTILLATIONTIMECONSTANT1", 10. * ns); 345 360 346 fPolystyrene->SetMaterialPropertiesTable(mpt 361 fPolystyrene->SetMaterialPropertiesTable(mptPolystyrene); 347 362 348 // Set the Birks Constant for the Polystyren 363 // Set the Birks Constant for the Polystyrene scintillator 349 fPolystyrene->GetIonisation()->SetBirksConst 364 fPolystyrene->GetIonisation()->SetBirksConstant(0.126 * mm / MeV); 350 } 365 } 351 366