40 WLSMaterials::WLSMaterials()
80 o <<
"Material " << material <<
" not found!";
90 void WLSMaterials::CreateMaterials()
95 std::vector<G4int> natoms;
96 std::vector<G4double> fractionMass;
97 std::vector<G4String> elements;
118 elements.push_back(
"C"); natoms.push_back(5);
119 elements.push_back(
"H"); natoms.push_back(8);
120 elements.push_back(
"O"); natoms.push_back(2);
122 density = 1.190*
g/
cm3;
125 ConstructNewMaterial(
"PMMA", elements, natoms, density);
134 elements.push_back(
"C"); natoms.push_back(2);
135 elements.push_back(
"H"); natoms.push_back(4);
137 density = 1.200*
g/
cm3;
139 fPethylene = fNistMan->
140 ConstructNewMaterial(
"Pethylene", elements, natoms, density);
149 elements.push_back(
"C"); natoms.push_back(2);
150 elements.push_back(
"H"); natoms.push_back(4);
152 density = 1.400*
g/
cm3;
154 fFPethylene = fNistMan->
155 ConstructNewMaterial(
"FPethylene", elements, natoms, density);
164 elements.push_back(
"C"); natoms.push_back(8);
165 elements.push_back(
"H"); natoms.push_back(8);
167 density = 1.050*
g/
cm3;
169 fPolystyrene = fNistMan->
170 ConstructNewMaterial(
"Polystyrene", elements, natoms, density);
179 elements.push_back(
"C"); natoms.push_back(2);
180 elements.push_back(
"H"); natoms.push_back(6);
182 density = 1.060*
g/
cm3;
184 fSilicone = fNistMan->
185 ConstructNewMaterial(
"Silicone", elements, natoms, density);
200 elements.push_back(
"Ti"); natoms.push_back(1);
201 elements.push_back(
"O"); natoms.push_back(2);
203 density = 4.26*
g/
cm3;
206 ConstructNewMaterial(
"TiO2", elements, natoms, density);
215 density = 1.52*
g/
cm3;
218 new G4Material(
"Coating", density, ncomponents=2);
239 const G4int nEntries =
sizeof(photonEnergy)/
sizeof(
G4double);
246 { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
247 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
248 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
249 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
250 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00};
252 assert(
sizeof(refractiveIndex) ==
sizeof(photonEnergy));
255 mpt->
AddProperty(
"RINDEX", photonEnergy, refractiveIndex, nEntries);
263 G4double refractiveIndexWLSfiber[] =
264 { 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
265 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
266 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
267 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60,
268 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60, 1.60};
270 assert(
sizeof(refractiveIndexWLSfiber) ==
sizeof(photonEnergy));
273 {5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,
274 5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,
275 5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,5.40*
m,1.10*
m,
276 1.10*
m,1.10*
m,1.10*
m,1.10*
m,1.10*
m,1.10*
m, 1.*
mm, 1.*
mm, 1.*
mm, 1.*
mm,
279 assert(
sizeof(absWLSfiber) ==
sizeof(photonEnergy));
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};
288 assert(
sizeof(emissionFib) ==
sizeof(photonEnergy));
293 AddProperty(
"RINDEX",photonEnergy,refractiveIndexWLSfiber,nEntries);
295 mptWLSfiber->
AddProperty(
"WLSABSLENGTH",photonEnergy,absWLSfiber,nEntries);
296 mptWLSfiber->
AddProperty(
"WLSCOMPONENT",photonEnergy,emissionFib,nEntries);
306 { 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
307 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
308 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
309 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49,
310 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49, 1.49};
312 assert(
sizeof(refractiveIndexClad1) ==
sizeof(photonEnergy));
315 {20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,
316 20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,
317 20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,
318 20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,
319 20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m,20.0*
m};
321 assert(
sizeof(absClad) ==
sizeof(photonEnergy));
325 mptClad1->
AddProperty(
"RINDEX",photonEnergy,refractiveIndexClad1,nEntries);
326 mptClad1->
AddProperty(
"ABSLENGTH",photonEnergy,absClad,nEntries);
335 { 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
336 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
337 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
338 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42,
339 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42, 1.42};
341 assert(
sizeof(refractiveIndexClad2) ==
sizeof(photonEnergy));
345 mptClad2->
AddProperty(
"RINDEX",photonEnergy,refractiveIndexClad2,nEntries);
346 mptClad2->
AddProperty(
"ABSLENGTH",photonEnergy,absClad,nEntries);
354 G4double refractiveIndexSilicone[] =
355 { 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46,
356 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46,
357 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46,
358 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46,
359 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46};
361 assert(
sizeof(refractiveIndexSilicone) ==
sizeof(photonEnergy));
366 AddProperty(
"RINDEX",photonEnergy,refractiveIndexSilicone,nEntries);
367 mptSilicone->
AddProperty(
"ABSLENGTH",photonEnergy,absClad,nEntries);
376 { 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50,
377 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50,
378 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50,
379 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50,
380 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50, 1.50};
382 assert(
sizeof(refractiveIndexPS) ==
sizeof(photonEnergy));
385 {2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,
386 2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,
387 2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,
388 2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,2.*
cm,
391 assert(
sizeof(absPS) ==
sizeof(photonEnergy));
394 {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
395 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
396 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
397 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
398 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
400 assert(
sizeof(scintilFast) ==
sizeof(photonEnergy));
404 mptPolystyrene->
AddProperty(
"RINDEX",photonEnergy,refractiveIndexPS,nEntries);
405 mptPolystyrene->
AddProperty(
"ABSLENGTH",photonEnergy,absPS,nEntries);
407 AddProperty(
"FASTCOMPONENT",photonEnergy, scintilFast,nEntries);
G4IonisParamMat * GetIonisation() const
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
static constexpr double mm
G4Material * GetMaterial(const G4String)
void AddMaterial(G4Material *material, G4double fraction)
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
static constexpr double perCent
void SetMaterialPropertiesTable(G4MaterialPropertiesTable *anMPT)
void SetBirksConstant(G4double value)
Definition of the WLSMaterials class.
static G4NistManager * Instance()
G4MaterialPropertyVector * AddProperty(const char *key, G4double *PhotonEnergies, G4double *PropertyValues, G4int NumEntries)
static constexpr double m
static constexpr double cm
static constexpr double eV
void AddConstProperty(const char *key, G4double PropertyValue)
static constexpr double cm3
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static constexpr double MeV
static WLSMaterials * GetInstance()
static constexpr double keV