10 #include "G4LogicalVolumeStore.hh" 14 #include <CLHEP/Units/SystemOfUnits.h> 19 using CLHEP::micrometer;
26 theSiAbsLengthScalingFactor(0),
41 G4double theDensity = 2.33 *
CLHEP::g / CLHEP::cm3;
42 G4double theAtomicWeight = 28.09 *
CLHEP::g / CLHEP::mole;
43 G4double theAtomicNumber = 14.0;
45 theTECWafer =
new G4Material(
"TEC_Wafer", theAtomicNumber, theAtomicWeight, theDensity);
46 theTOBWafer =
new G4Material(
"TOB_Wafer", theAtomicNumber, theAtomicWeight, theDensity);
47 theTIBWafer =
new G4Material(
"TIB_Wafer", theAtomicNumber, theAtomicWeight, theDensity);
92 LogDebug(
"SimLaserAlignment:MaterialProperties")
93 <<
" **** here comes the material table **** " << *(G4Material::GetMaterialTable());
99 const G4int nEntries = 3;
102 G4double PhotonEnergy[nEntries] = {1.10 * CLHEP::eV, 1.15 * CLHEP::eV, 1.20 * CLHEP::eV};
105 G4double Scintillation[nEntries] = {0.1, 1.0, 0.1};
108 G4double RefractiveIndex[nEntries] = {3.5400, 3.5425, 3.5450};
110 G4double RefractiveIndexMirror[nEntries] = {1.50669, 1.50669, 1.50669};
117 G4double RefractiveIndexGeneral[nEntries] = {1.0, 1.0, 1.0};
122 G4double AbsorptionLengthSi[nEntries] = {1136 * micrometer, 1136 * micrometer, 1136 * micrometer};
124 G4double AbsorptionLengthSiBarrel[nEntries] = {0.1 * fermi, 0.1 * fermi, 0.1 * fermi};
127 G4double AbsorptionLengthMirror[nEntries] = {11.7 * cm, 0.5 * 11.7 * cm, 11.7 * cm};
133 G4double AbsorptionLengthDead[nEntries] = {0.001 * micrometer, 0.001 * micrometer, 0.001 * micrometer};
136 G4double AbsorptionLengthGeneral[nEntries] = {75 * cm, 75 * cm, 75 * cm};
139 G4double AbsorptionLengthTAir[nEntries] = {10 *
m, 1.8 *
m, 10 *
m};
141 G4double AbsorptionLengthAl[nEntries] = {10 * mm, 10 * mm, 10 * mm};
142 G4double AbsorptionLengthTOB_CF_Str[nEntries] = {1 * cm, 10 * cm, 1 * cm};
143 G4double AbsorptionLengthTOBCF[nEntries] = {0.1 * mm, 20 * mm, 0.1 * mm};
144 G4double AbsorptionLengthTIBCF[nEntries] = {15.0 * cm, 15.0 * cm, 15.0 * cm};
147 G4double SiReflectivity[nEntries] = {0.0, 0.0, 0.0};
150 G4double TECEfficiency[nEntries] = {0.9, 0.9, 0.9};
151 G4double BarrelEfficiency[nEntries] = {1.0, 1.0, 1.0};
154 G4double Reflectivity[nEntries] = {0.05, 0.05, 0.05};
172 G4Material *theMaterial =
const_cast<G4Material *
>(*theMTEntry);
174 if (theMaterial->GetMaterialPropertiesTable()) {
175 theMPT = theMaterial->GetMaterialPropertiesTable();
177 theMPT =
new G4MaterialPropertiesTable;
181 if (theMaterial->GetName() ==
"TEC_Wafer") {
182 theMPT->AddProperty(
"FASTCOMPONENT", PhotonEnergy, Scintillation, nEntries);
183 theMPT->AddProperty(
"SLOWCOMPONENT", PhotonEnergy, Scintillation, nEntries);
184 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndex, nEntries);
185 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthSi, nEntries);
186 theMPT->AddProperty(
"EFFICIENCY", PhotonEnergy, TECEfficiency, nEntries);
188 theMPT->AddConstProperty(
"SCINTILLATIONYIELD", 12000.0 / MeV);
189 theMPT->AddConstProperty(
"RESOLTUIONSCALE", 1.0);
190 theMPT->AddConstProperty(
"FASTTIMECONSTANT", 20.0 * ns);
191 theMPT->AddConstProperty(
"SLOWTIMECONSTANT", 45.0 * ns);
192 theMPT->AddConstProperty(
"YIELDRATIO", 1.0);
195 theMaterial->SetMaterialPropertiesTable(
theMPT);
199 else if (theMaterial->GetName() ==
"Silicon") {
200 theMPT->AddProperty(
"FASTCOMPONENT", PhotonEnergy, Scintillation, nEntries);
201 theMPT->AddProperty(
"SLOWCOMPONENT", PhotonEnergy, Scintillation, nEntries);
202 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndex, nEntries);
203 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthSi, nEntries);
204 theMPT->AddProperty(
"EFFICIENCY", PhotonEnergy, TECEfficiency, nEntries);
206 theMPT->AddConstProperty(
"SCINTILLATIONYIELD", 12000.0 / MeV);
207 theMPT->AddConstProperty(
"RESOLTUIONSCALE", 1.0);
208 theMPT->AddConstProperty(
"FASTTIMECONSTANT", 20.0 * ns);
209 theMPT->AddConstProperty(
"SLOWTIMECONSTANT", 45.0 * ns);
210 theMPT->AddConstProperty(
"YIELDRATIO", 1.0);
213 theMaterial->SetMaterialPropertiesTable(
theMPT);
217 else if ((theMaterial->GetName() ==
"TOB_Wafer") || (theMaterial->GetName() ==
"TIB_Wafer")) {
218 theMPT->AddProperty(
"FASTCOMPONENT", PhotonEnergy, Scintillation, nEntries);
219 theMPT->AddProperty(
"SLOWCOMPONENT", PhotonEnergy, Scintillation, nEntries);
220 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndex, nEntries);
221 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthSiBarrel, nEntries);
222 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
223 theMPT->AddProperty(
"EFFICIENCY", PhotonEnergy, BarrelEfficiency, nEntries);
225 theMPT->AddConstProperty(
"SCINTILLATIONYIELD", 12000.0 / MeV);
226 theMPT->AddConstProperty(
"RESOLTUIONSCALE", 1.0);
227 theMPT->AddConstProperty(
"FASTTIMECONSTANT", 20.0 * ns);
228 theMPT->AddConstProperty(
"SLOWTIMECONSTANT", 45.0 * ns);
229 theMPT->AddConstProperty(
"YIELDRATIO", 1.0);
232 theMaterial->SetMaterialPropertiesTable(
theMPT);
236 else if (theMaterial->GetName() ==
"TIB_ledge_side") {
238 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
239 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthGeneral, nEntries);
242 theMaterial->SetMaterialPropertiesTable(
theMPT);
246 else if ((theMaterial->GetName() ==
"T_Air") || (theMaterial->GetName() ==
"Air")) {
248 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
250 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
252 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTAir, nEntries);
255 theMaterial->SetMaterialPropertiesTable(
theMPT);
260 else if ((theMaterial->GetName() ==
"TIB_connector") || (theMaterial->GetName() ==
"TIB_cylinder") ||
261 (theMaterial->GetName() ==
"TID_Connector")) {
263 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
265 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
267 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthDead, nEntries);
270 theMaterial->SetMaterialPropertiesTable(
theMPT);
274 else if (theMaterial->GetName() ==
"Si O_2") {
276 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexMirror, nEntries);
278 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthMirror, nEntries);
280 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, Reflectivity, nEntries);
283 theMaterial->SetMaterialPropertiesTable(
theMPT);
287 else if ((theMaterial->GetName() ==
"TOB_Aluminium") || (theMaterial->GetName() ==
"Aluminium")) {
289 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
291 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
293 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthAl, nEntries);
296 theMaterial->SetMaterialPropertiesTable(
theMPT);
300 else if ((theMaterial->GetName() ==
"TOB_CF_Str")) {
302 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
304 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
306 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTOB_CF_Str, nEntries);
309 theMaterial->SetMaterialPropertiesTable(
theMPT);
313 else if ((theMaterial->GetName() ==
"TID_CF") || (theMaterial->GetName() ==
"Nomex") ||
314 (theMaterial->GetName() ==
"TOB_Nomex") || (theMaterial->GetName() ==
"TID_Nomex") ||
315 (theMaterial->GetName() ==
"TOB_plate_C") || (theMaterial->GetName() ==
"TOB_rod") ||
316 (theMaterial->GetName() ==
"TOB_cool_DS") || (theMaterial->GetName() ==
"TOB_cool_SS") ||
317 (theMaterial->GetName() ==
"TID_in_cable") || (theMaterial->GetName() ==
"TOB_PA_rphi") ||
318 (theMaterial->GetName() ==
"TOB_frame_ele") || (theMaterial->GetName() ==
"TOB_PA_ster") ||
319 (theMaterial->GetName() ==
"TOB_ICB") || (theMaterial->GetName() ==
"TOB_CONN1") ||
320 (theMaterial->GetName() ==
"TOB_CONN2") || (theMaterial->GetName() ==
"TOB_CONN3") ||
321 (theMaterial->GetName() ==
"TOB_rail") || (theMaterial->GetName() ==
"TOB_sid_rail1") ||
322 (theMaterial->GetName() ==
"TOB_sid_rail2")) {
324 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
326 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
328 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTOBCF, nEntries);
331 theMaterial->SetMaterialPropertiesTable(
theMPT);
335 else if ((theMaterial->GetName() ==
"TIB_CF") || (theMaterial->GetName() ==
"TIB_cables_ax_out") ||
336 (theMaterial->GetName() ==
"TIB_outer_supp") || (theMaterial->GetName() ==
"TIB_PA_rphi") ||
337 (theMaterial->GetName() ==
"TIB_rail") || (theMaterial->GetName() ==
"TIB_sid_rail1") ||
338 (theMaterial->GetName() ==
"TIB_sid_rail2") || (theMaterial->GetName() ==
"TIB_mod_cool")) {
340 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
342 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
344 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTIBCF, nEntries);
347 theMaterial->SetMaterialPropertiesTable(
theMPT);
353 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
355 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthGeneral, nEntries);
358 theMaterial->SetMaterialPropertiesTable(
theMPT);
366 const G4LogicalVolumeStore *theLogicalVolumeStore = G4LogicalVolumeStore::GetInstance();
367 std::vector<G4LogicalVolume *>::const_iterator theLogicalVolume;
369 for (theLogicalVolume = theLogicalVolumeStore->begin(); theLogicalVolume != theLogicalVolumeStore->end();
370 theLogicalVolume++) {
371 if (((*theLogicalVolume)->GetName() ==
"TECModule0StereoActive") ||
372 ((*theLogicalVolume)->GetName() ==
"TECModule0RphiActive") ||
373 ((*theLogicalVolume)->GetName() ==
"TECModule1StereoActive") ||
374 ((*theLogicalVolume)->GetName() ==
"TECModule1RphiActive") ||
375 ((*theLogicalVolume)->GetName() ==
"TECModule2RphiActive") ||
376 ((*theLogicalVolume)->GetName() ==
"TECModule3RphiActive") ||
377 ((*theLogicalVolume)->GetName() ==
"TECModule4StereoActive") ||
378 ((*theLogicalVolume)->GetName() ==
"TECModule4RphiActive") ||
379 ((*theLogicalVolume)->GetName() ==
"TECModule5RphiActive") ||
380 ((*theLogicalVolume)->GetName() ==
"TECModule6RphiActive")) {
385 std::cout <<
" AC1CMS: found a logical volume: " << (*theLogicalVolume)->GetName() << std::endl;
386 std::cout <<
" AC1CMS: the logical volume material = " << (*theLogicalVolume)->GetMaterial()->GetName()
388 std::cout <<
" AC1CMS: the MaterialPropertiesTable = " << std::endl;
389 (*theLogicalVolume)->GetMaterial()->GetMaterialPropertiesTable()->DumpTable();
391 }
else if (((*theLogicalVolume)->GetName() ==
"TOBActiveSter0") ||
392 ((*theLogicalVolume)->GetName() ==
"TOBActiveRphi0") ||
393 ((*theLogicalVolume)->GetName() ==
"TOBActiveRphi2") ||
394 ((*theLogicalVolume)->GetName() ==
"TOBActiveRphi4")) {
399 std::cout <<
" AC1CMS: found a logical volume: " << (*theLogicalVolume)->GetName() << std::endl;
400 std::cout <<
" AC1CMS: the logical volume material = " << (*theLogicalVolume)->GetMaterial()->GetName()
402 std::cout <<
" AC1CMS: the MaterialPropertiesTable = " << std::endl;
403 (*theLogicalVolume)->GetMaterial()->GetMaterialPropertiesTable()->DumpTable();
405 }
else if (((*theLogicalVolume)->GetName() ==
"TIBActiveSter0") ||
406 ((*theLogicalVolume)->GetName() ==
"TIBActiveRphi0") ||
407 ((*theLogicalVolume)->GetName() ==
"TIBActiveRphi2")) {
412 std::cout <<
" AC1CMS: found a logical volume: " << (*theLogicalVolume)->GetName() << std::endl;
413 std::cout <<
" AC1CMS: the logical volume material = " << (*theLogicalVolume)->GetMaterial()->GetName()
415 std::cout <<
" AC1CMS: the MaterialPropertiesTable = " << std::endl;
416 (*theLogicalVolume)->GetMaterial()->GetMaterialPropertiesTable()->DumpTable();
G4MaterialPropertiesTable * theMPT
double theSiAbsLengthScalingFactor
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
MaterialProperties(int DebugLevel, double SiAbsLengthScale)
constructor
void setMaterialProperties()
define optical properties of materials in the detector
~MaterialProperties()
destructor
const G4MaterialTable * theMaterialTable