78 LogDebug(
"SimLaserAlignment:MaterialProperties") <<
" **** here comes the material table **** "
79 << *(G4Material::GetMaterialTable());
85 const G4int nEntries = 3;
88 G4double PhotonEnergy[nEntries] = { 1.10 * eV, 1.15 * eV, 1.20 * eV };
91 G4double Scintillation[nEntries] = { 0.1, 1.0, 0.1 };
94 G4double RefractiveIndex[nEntries] = { 3.5400, 3.5425, 3.5450 };
96 G4double RefractiveIndexMirror[nEntries] = { 1.50669, 1.50669, 1.50669 };
103 G4double RefractiveIndexGeneral[nEntries] = { 1.0, 1.0, 1.0 };
107 G4double AbsorptionLengthSi[nEntries] = { 1136 * micrometer, 1136 * micrometer, 1136 * micrometer };
109 G4double AbsorptionLengthSiBarrel[nEntries] = { 0.1 * fermi,
115 G4double AbsorptionLengthMirror[nEntries] = { 11.7 * cm, 0.5 * 11.7 * cm, 11.7 * cm };
121 G4double AbsorptionLengthDead[nEntries] = { 0.001 * micrometer, 0.001 * micrometer,
122 0.001 * micrometer };
125 G4double AbsorptionLengthGeneral[nEntries] = { 75 * cm, 75 * cm, 75 * cm };
128 G4double AbsorptionLengthTAir[nEntries] = { 10 *
m, 1.8 *
m, 10 *
m };
130 G4double AbsorptionLengthAl[nEntries] = { 10 * mm, 10 * mm, 10 * mm};
131 G4double AbsorptionLengthTOB_CF_Str[nEntries] = { 1 * cm, 10 * cm, 1 * cm };
132 G4double AbsorptionLengthTOBCF[nEntries] = { 0.1 * mm, 20 * mm, 0.1 * mm };
133 G4double AbsorptionLengthTIBCF[nEntries] = { 15.0 * cm, 15.0 * cm, 15.0 * cm };
136 G4double SiReflectivity[nEntries] = { 0.0, 0.0, 0.0 };
139 G4double TECEfficiency[nEntries] = { 0.9, 0.9, 0.9 };
140 G4double BarrelEfficiency[nEntries] = { 1.0, 1.0, 1.0 };
143 G4double Reflectivity[nEntries] = { 0.05, 0.05, 0.05 };
163 G4Material * theMaterial =
const_cast<G4Material*
>(*theMTEntry);
165 if (theMaterial->GetMaterialPropertiesTable())
167 theMPT = theMaterial->GetMaterialPropertiesTable();
171 theMPT =
new G4MaterialPropertiesTable;
175 if ( theMaterial->GetName() ==
"TEC_Wafer" )
177 theMPT->AddProperty(
"FASTCOMPONENT", PhotonEnergy, Scintillation, nEntries);
178 theMPT->AddProperty(
"SLOWCOMPONENT", PhotonEnergy, Scintillation, nEntries);
179 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndex, nEntries);
180 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthSi, nEntries);
181 theMPT->AddProperty(
"EFFICIENCY", PhotonEnergy, TECEfficiency, nEntries);
183 theMPT->AddConstProperty(
"SCINTILLATIONYIELD", 12000.0/MeV);
184 theMPT->AddConstProperty(
"RESOLTUIONSCALE", 1.0);
185 theMPT->AddConstProperty(
"FASTTIMECONSTANT", 20.0 * ns);
186 theMPT->AddConstProperty(
"SLOWTIMECONSTANT", 45.0 * ns);
187 theMPT->AddConstProperty(
"YIELDRATIO", 1.0);
190 theMaterial->SetMaterialPropertiesTable(
theMPT);
194 else if ( theMaterial->GetName() ==
"Silicon" )
196 theMPT->AddProperty(
"FASTCOMPONENT", PhotonEnergy, Scintillation, nEntries);
197 theMPT->AddProperty(
"SLOWCOMPONENT", PhotonEnergy, Scintillation, nEntries);
198 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndex, nEntries);
199 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthSi, nEntries);
200 theMPT->AddProperty(
"EFFICIENCY", PhotonEnergy, TECEfficiency, nEntries);
202 theMPT->AddConstProperty(
"SCINTILLATIONYIELD", 12000.0/MeV);
203 theMPT->AddConstProperty(
"RESOLTUIONSCALE", 1.0);
204 theMPT->AddConstProperty(
"FASTTIMECONSTANT", 20.0 * ns);
205 theMPT->AddConstProperty(
"SLOWTIMECONSTANT", 45.0 * ns);
206 theMPT->AddConstProperty(
"YIELDRATIO", 1.0);
209 theMaterial->SetMaterialPropertiesTable(
theMPT);
213 else if ( ( theMaterial->GetName() ==
"TOB_Wafer" ) ||
214 ( theMaterial->GetName() ==
"TIB_Wafer" ) )
216 theMPT->AddProperty(
"FASTCOMPONENT", PhotonEnergy, Scintillation, nEntries);
217 theMPT->AddProperty(
"SLOWCOMPONENT", PhotonEnergy, Scintillation, nEntries);
218 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndex, nEntries);
219 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthSiBarrel, nEntries);
220 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
221 theMPT->AddProperty(
"EFFICIENCY", PhotonEnergy, BarrelEfficiency, nEntries);
223 theMPT->AddConstProperty(
"SCINTILLATIONYIELD", 12000.0/MeV);
224 theMPT->AddConstProperty(
"RESOLTUIONSCALE", 1.0);
225 theMPT->AddConstProperty(
"FASTTIMECONSTANT", 20.0 * ns);
226 theMPT->AddConstProperty(
"SLOWTIMECONSTANT", 45.0 * ns);
227 theMPT->AddConstProperty(
"YIELDRATIO", 1.0);
230 theMaterial->SetMaterialPropertiesTable(
theMPT);
234 else if ( theMaterial->GetName() ==
"TIB_ledge_side" )
237 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
238 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthGeneral, nEntries);
241 theMaterial->SetMaterialPropertiesTable(
theMPT);
245 else if ( ( theMaterial->GetName() ==
"T_Air" ) ||
246 ( theMaterial->GetName() ==
"Air" ) )
249 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
251 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
253 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTAir, nEntries);
256 theMaterial->SetMaterialPropertiesTable(
theMPT);
261 else if ( ( theMaterial->GetName() ==
"TIB_connector" ) ||
262 ( theMaterial->GetName() ==
"TIB_cylinder" ) ||
263 ( theMaterial->GetName() ==
"TID_Connector" ) )
266 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
268 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
270 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthDead, nEntries);
273 theMaterial->SetMaterialPropertiesTable(
theMPT);
277 else if ( theMaterial->GetName() ==
"Si O_2" )
280 theMPT->AddProperty(
"RINDEX", PhotonEnergy,RefractiveIndexMirror, nEntries);
282 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthMirror, nEntries);
284 theMPT->AddProperty(
"REFLECTIVITY",PhotonEnergy,Reflectivity, nEntries);
287 theMaterial->SetMaterialPropertiesTable(
theMPT);
291 else if ( ( theMaterial->GetName() ==
"TOB_Aluminium" ) ||
292 ( theMaterial->GetName() ==
"Aluminium" ) )
295 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
297 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
299 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthAl, nEntries);
302 theMaterial->SetMaterialPropertiesTable(
theMPT);
306 else if ( ( theMaterial->GetName() ==
"TOB_CF_Str" ) )
309 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
311 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
313 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTOB_CF_Str, nEntries);
316 theMaterial->SetMaterialPropertiesTable(
theMPT);
320 else if ( ( theMaterial->GetName() ==
"TID_CF" ) ||
321 ( theMaterial->GetName() ==
"Nomex" ) ||
322 ( theMaterial->GetName() ==
"TOB_Nomex" ) ||
323 ( theMaterial->GetName() ==
"TID_Nomex" ) ||
324 ( theMaterial->GetName() ==
"TOB_plate_C" ) ||
325 ( theMaterial->GetName() ==
"TOB_rod" ) ||
326 ( theMaterial->GetName() ==
"TOB_cool_DS" ) ||
327 ( theMaterial->GetName() ==
"TOB_cool_SS" ) ||
328 ( theMaterial->GetName() ==
"TID_in_cable" ) ||
329 ( theMaterial->GetName() ==
"TOB_PA_rphi" ) ||
330 ( theMaterial->GetName() ==
"TOB_frame_ele" ) ||
331 ( theMaterial->GetName() ==
"TOB_PA_ster" ) ||
332 ( theMaterial->GetName() ==
"TOB_ICB" ) ||
333 ( theMaterial->GetName() ==
"TOB_CONN1" ) ||
334 ( theMaterial->GetName() ==
"TOB_CONN2" ) ||
335 ( theMaterial->GetName() ==
"TOB_CONN3" ) ||
336 ( theMaterial->GetName() ==
"TOB_rail" ) ||
337 ( theMaterial->GetName() ==
"TOB_sid_rail1" ) ||
338 ( theMaterial->GetName() ==
"TOB_sid_rail2" ) )
341 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
343 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
345 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTOBCF, nEntries);
348 theMaterial->SetMaterialPropertiesTable(
theMPT);
352 else if ( ( theMaterial->GetName() ==
"TIB_CF" ) ||
353 ( theMaterial->GetName() ==
"TIB_cables_ax_out" ) ||
354 ( theMaterial->GetName() ==
"TIB_outer_supp" ) ||
355 ( theMaterial->GetName() ==
"TIB_PA_rphi" ) ||
356 ( theMaterial->GetName() ==
"TIB_rail" ) ||
357 ( theMaterial->GetName() ==
"TIB_sid_rail1" ) ||
358 ( theMaterial->GetName() ==
"TIB_sid_rail2" ) ||
359 ( theMaterial->GetName() ==
"TIB_mod_cool" ) )
362 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
364 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
366 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTIBCF, nEntries);
369 theMaterial->SetMaterialPropertiesTable(
theMPT);
376 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
378 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthGeneral, nEntries);
381 theMaterial->SetMaterialPropertiesTable(
theMPT);
389 const G4LogicalVolumeStore * theLogicalVolumeStore = G4LogicalVolumeStore::GetInstance();
390 std::vector<G4LogicalVolume*>::const_iterator theLogicalVolume;
392 for ( theLogicalVolume = theLogicalVolumeStore->begin(); theLogicalVolume != theLogicalVolumeStore->end(); theLogicalVolume++ )
394 if ( ( (*theLogicalVolume)->GetName() ==
"TECModule0StereoActive" ) ||
395 ( (*theLogicalVolume)->GetName() ==
"TECModule0RphiActive" ) ||
396 ( (*theLogicalVolume)->GetName() ==
"TECModule1StereoActive" ) ||
397 ( (*theLogicalVolume)->GetName() ==
"TECModule1RphiActive" ) ||
398 ( (*theLogicalVolume)->GetName() ==
"TECModule2RphiActive" ) ||
399 ( (*theLogicalVolume)->GetName() ==
"TECModule3RphiActive" ) ||
400 ( (*theLogicalVolume)->GetName() ==
"TECModule4StereoActive" ) ||
401 ( (*theLogicalVolume)->GetName() ==
"TECModule4RphiActive" ) ||
402 ( (*theLogicalVolume)->GetName() ==
"TECModule5RphiActive" ) ||
403 ( (*theLogicalVolume)->GetName() ==
"TECModule6RphiActive" ) )
410 std::cout <<
" AC1CMS: found a logical volume: " << (*theLogicalVolume)->GetName() << std::endl;
411 std::cout <<
" AC1CMS: the logical volume material = " << (*theLogicalVolume)->GetMaterial()->GetName() << std::endl;
412 std::cout <<
" AC1CMS: the MaterialPropertiesTable = " << std::endl;
413 (*theLogicalVolume)->GetMaterial()->GetMaterialPropertiesTable()->DumpTable();
416 else if ( ( (*theLogicalVolume)->GetName() ==
"TOBActiveSter0" ) ||
417 ( (*theLogicalVolume)->GetName() ==
"TOBActiveRphi0" ) ||
418 ( (*theLogicalVolume)->GetName() ==
"TOBActiveRphi2" ) ||
419 ( (*theLogicalVolume)->GetName() ==
"TOBActiveRphi4" ) )
426 std::cout <<
" AC1CMS: found a logical volume: " << (*theLogicalVolume)->GetName() << std::endl;
427 std::cout <<
" AC1CMS: the logical volume material = " << (*theLogicalVolume)->GetMaterial()->GetName() << std::endl;
428 std::cout <<
" AC1CMS: the MaterialPropertiesTable = " << std::endl;
429 (*theLogicalVolume)->GetMaterial()->GetMaterialPropertiesTable()->DumpTable();
432 else if ( ( (*theLogicalVolume)->GetName() ==
"TIBActiveSter0" ) ||
433 ( (*theLogicalVolume)->GetName() ==
"TIBActiveRphi0" ) ||
434 ( (*theLogicalVolume)->GetName() ==
"TIBActiveRphi2" ) )
441 std::cout <<
" AC1CMS: found a logical volume: " << (*theLogicalVolume)->GetName() << std::endl;
442 std::cout <<
" AC1CMS: the logical volume material = " << (*theLogicalVolume)->GetMaterial()->GetName() << std::endl;
443 std::cout <<
" AC1CMS: the MaterialPropertiesTable = " << std::endl;
444 (*theLogicalVolume)->GetMaterial()->GetMaterialPropertiesTable()->DumpTable();
G4MaterialPropertiesTable * theMPT
const G4MaterialTable * theMaterialTable