10 #include "G4LogicalVolumeStore.hh"
15 : theMaterialTable(), theMPDebugLevel(0),
16 theSiAbsLengthScalingFactor(0),
18 theTECWafer(), theTOBWafer(), theTIBWafer()
30 G4double theDensity = 2.33*
g/cm3;
31 G4double theAtomicWeight = 28.09*
g/mole;
32 G4double theAtomicNumber = 14.0;
34 theTECWafer =
new G4Material(
"TEC_Wafer", theAtomicNumber, theAtomicWeight, theDensity);
35 theTOBWafer =
new G4Material(
"TOB_Wafer", theAtomicNumber, theAtomicWeight, theDensity);
36 theTIBWafer =
new G4Material(
"TIB_Wafer", theAtomicNumber, theAtomicWeight, theDensity);
76 LogDebug(
"SimLaserAlignment:MaterialProperties") <<
" **** here comes the material table **** "
77 << *(G4Material::GetMaterialTable());
83 const G4int nEntries = 3;
86 G4double PhotonEnergy[nEntries] = { 1.10 * eV, 1.15 * eV, 1.20 * eV };
89 G4double Scintillation[nEntries] = { 0.1, 1.0, 0.1 };
92 G4double RefractiveIndex[nEntries] = { 3.5400, 3.5425, 3.5450 };
94 G4double RefractiveIndexMirror[nEntries] = { 1.50669, 1.50669, 1.50669 };
101 G4double RefractiveIndexGeneral[nEntries] = { 1.0, 1.0, 1.0 };
105 G4double AbsorptionLengthSi[nEntries] = { 1136 * micrometer, 1136 * micrometer, 1136 * micrometer };
107 G4double AbsorptionLengthSiBarrel[nEntries] = { 0.1 * fermi,
113 G4double AbsorptionLengthMirror[nEntries] = { 11.7 * cm, 0.5 * 11.7 * cm, 11.7 * cm };
119 G4double AbsorptionLengthDead[nEntries] = { 0.001 * micrometer, 0.001 * micrometer,
120 0.001 * micrometer };
123 G4double AbsorptionLengthGeneral[nEntries] = { 75 * cm, 75 * cm, 75 * cm };
126 G4double AbsorptionLengthTAir[nEntries] = { 10 *
m, 1.8 *
m, 10 *
m };
128 G4double AbsorptionLengthAl[nEntries] = { 10 * mm, 10 * mm, 10 * mm};
129 G4double AbsorptionLengthTOB_CF_Str[nEntries] = { 1 * cm, 10 * cm, 1 * cm };
130 G4double AbsorptionLengthTOBCF[nEntries] = { 0.1 * mm, 20 * mm, 0.1 * mm };
131 G4double AbsorptionLengthTIBCF[nEntries] = { 15.0 * cm, 15.0 * cm, 15.0 * cm };
134 G4double SiReflectivity[nEntries] = { 0.0, 0.0, 0.0 };
137 G4double TECEfficiency[nEntries] = { 0.9, 0.9, 0.9 };
138 G4double BarrelEfficiency[nEntries] = { 1.0, 1.0, 1.0 };
141 G4double Reflectivity[nEntries] = { 0.05, 0.05, 0.05 };
161 G4Material * theMaterial =
const_cast<G4Material*
>(*theMTEntry);
163 if (theMaterial->GetMaterialPropertiesTable())
165 theMPT = theMaterial->GetMaterialPropertiesTable();
169 theMPT =
new G4MaterialPropertiesTable;
173 if ( theMaterial->GetName() ==
"TEC_Wafer" )
175 theMPT->AddProperty(
"FASTCOMPONENT", PhotonEnergy, Scintillation, nEntries);
176 theMPT->AddProperty(
"SLOWCOMPONENT", PhotonEnergy, Scintillation, nEntries);
177 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndex, nEntries);
178 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthSi, nEntries);
179 theMPT->AddProperty(
"EFFICIENCY", PhotonEnergy, TECEfficiency, nEntries);
181 theMPT->AddConstProperty(
"SCINTILLATIONYIELD", 12000.0/MeV);
182 theMPT->AddConstProperty(
"RESOLTUIONSCALE", 1.0);
183 theMPT->AddConstProperty(
"FASTTIMECONSTANT", 20.0 * ns);
184 theMPT->AddConstProperty(
"SLOWTIMECONSTANT", 45.0 * ns);
185 theMPT->AddConstProperty(
"YIELDRATIO", 1.0);
188 theMaterial->SetMaterialPropertiesTable(
theMPT);
192 else if ( theMaterial->GetName() ==
"Silicon" )
194 theMPT->AddProperty(
"FASTCOMPONENT", PhotonEnergy, Scintillation, nEntries);
195 theMPT->AddProperty(
"SLOWCOMPONENT", PhotonEnergy, Scintillation, nEntries);
196 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndex, nEntries);
197 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthSi, nEntries);
198 theMPT->AddProperty(
"EFFICIENCY", PhotonEnergy, TECEfficiency, nEntries);
200 theMPT->AddConstProperty(
"SCINTILLATIONYIELD", 12000.0/MeV);
201 theMPT->AddConstProperty(
"RESOLTUIONSCALE", 1.0);
202 theMPT->AddConstProperty(
"FASTTIMECONSTANT", 20.0 * ns);
203 theMPT->AddConstProperty(
"SLOWTIMECONSTANT", 45.0 * ns);
204 theMPT->AddConstProperty(
"YIELDRATIO", 1.0);
207 theMaterial->SetMaterialPropertiesTable(
theMPT);
211 else if ( ( theMaterial->GetName() ==
"TOB_Wafer" ) ||
212 ( theMaterial->GetName() ==
"TIB_Wafer" ) )
214 theMPT->AddProperty(
"FASTCOMPONENT", PhotonEnergy, Scintillation, nEntries);
215 theMPT->AddProperty(
"SLOWCOMPONENT", PhotonEnergy, Scintillation, nEntries);
216 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndex, nEntries);
217 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthSiBarrel, nEntries);
218 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
219 theMPT->AddProperty(
"EFFICIENCY", PhotonEnergy, BarrelEfficiency, nEntries);
221 theMPT->AddConstProperty(
"SCINTILLATIONYIELD", 12000.0/MeV);
222 theMPT->AddConstProperty(
"RESOLTUIONSCALE", 1.0);
223 theMPT->AddConstProperty(
"FASTTIMECONSTANT", 20.0 * ns);
224 theMPT->AddConstProperty(
"SLOWTIMECONSTANT", 45.0 * ns);
225 theMPT->AddConstProperty(
"YIELDRATIO", 1.0);
228 theMaterial->SetMaterialPropertiesTable(
theMPT);
232 else if ( theMaterial->GetName() ==
"TIB_ledge_side" )
235 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
236 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthGeneral, nEntries);
239 theMaterial->SetMaterialPropertiesTable(
theMPT);
243 else if ( ( theMaterial->GetName() ==
"T_Air" ) ||
244 ( theMaterial->GetName() ==
"Air" ) )
247 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
249 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
251 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTAir, nEntries);
254 theMaterial->SetMaterialPropertiesTable(
theMPT);
259 else if ( ( theMaterial->GetName() ==
"TIB_connector" ) ||
260 ( theMaterial->GetName() ==
"TIB_cylinder" ) ||
261 ( theMaterial->GetName() ==
"TID_Connector" ) )
264 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
266 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
268 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthDead, nEntries);
271 theMaterial->SetMaterialPropertiesTable(
theMPT);
275 else if ( theMaterial->GetName() ==
"Si O_2" )
278 theMPT->AddProperty(
"RINDEX", PhotonEnergy,RefractiveIndexMirror, nEntries);
280 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthMirror, nEntries);
282 theMPT->AddProperty(
"REFLECTIVITY",PhotonEnergy,Reflectivity, nEntries);
285 theMaterial->SetMaterialPropertiesTable(
theMPT);
289 else if ( ( theMaterial->GetName() ==
"TOB_Aluminium" ) ||
290 ( theMaterial->GetName() ==
"Aluminium" ) )
293 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
295 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
297 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthAl, nEntries);
300 theMaterial->SetMaterialPropertiesTable(
theMPT);
304 else if ( ( theMaterial->GetName() ==
"TOB_CF_Str" ) )
307 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
309 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
311 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTOB_CF_Str, nEntries);
314 theMaterial->SetMaterialPropertiesTable(
theMPT);
318 else if ( ( theMaterial->GetName() ==
"TID_CF" ) ||
319 ( theMaterial->GetName() ==
"Nomex" ) ||
320 ( theMaterial->GetName() ==
"TOB_Nomex" ) ||
321 ( theMaterial->GetName() ==
"TID_Nomex" ) ||
322 ( theMaterial->GetName() ==
"TOB_plate_C" ) ||
323 ( theMaterial->GetName() ==
"TOB_rod" ) ||
324 ( theMaterial->GetName() ==
"TOB_cool_DS" ) ||
325 ( theMaterial->GetName() ==
"TOB_cool_SS" ) ||
326 ( theMaterial->GetName() ==
"TID_in_cable" ) ||
327 ( theMaterial->GetName() ==
"TOB_PA_rphi" ) ||
328 ( theMaterial->GetName() ==
"TOB_frame_ele" ) ||
329 ( theMaterial->GetName() ==
"TOB_PA_ster" ) ||
330 ( theMaterial->GetName() ==
"TOB_ICB" ) ||
331 ( theMaterial->GetName() ==
"TOB_CONN1" ) ||
332 ( theMaterial->GetName() ==
"TOB_CONN2" ) ||
333 ( theMaterial->GetName() ==
"TOB_CONN3" ) ||
334 ( theMaterial->GetName() ==
"TOB_rail" ) ||
335 ( theMaterial->GetName() ==
"TOB_sid_rail1" ) ||
336 ( theMaterial->GetName() ==
"TOB_sid_rail2" ) )
339 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
341 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
343 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTOBCF, nEntries);
346 theMaterial->SetMaterialPropertiesTable(
theMPT);
350 else if ( ( theMaterial->GetName() ==
"TIB_CF" ) ||
351 ( theMaterial->GetName() ==
"TIB_cables_ax_out" ) ||
352 ( theMaterial->GetName() ==
"TIB_outer_supp" ) ||
353 ( theMaterial->GetName() ==
"TIB_PA_rphi" ) ||
354 ( theMaterial->GetName() ==
"TIB_rail" ) ||
355 ( theMaterial->GetName() ==
"TIB_sid_rail1" ) ||
356 ( theMaterial->GetName() ==
"TIB_sid_rail2" ) ||
357 ( theMaterial->GetName() ==
"TIB_mod_cool" ) )
360 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
362 theMPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, SiReflectivity, nEntries);
364 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthTIBCF, nEntries);
367 theMaterial->SetMaterialPropertiesTable(
theMPT);
374 theMPT->AddProperty(
"RINDEX", PhotonEnergy, RefractiveIndexGeneral, nEntries);
376 theMPT->AddProperty(
"ABSLENGTH", PhotonEnergy, AbsorptionLengthGeneral, nEntries);
379 theMaterial->SetMaterialPropertiesTable(
theMPT);
387 const G4LogicalVolumeStore * theLogicalVolumeStore = G4LogicalVolumeStore::GetInstance();
388 std::vector<G4LogicalVolume*>::const_iterator theLogicalVolume;
390 for ( theLogicalVolume = theLogicalVolumeStore->begin(); theLogicalVolume != theLogicalVolumeStore->end(); theLogicalVolume++ )
392 if ( ( (*theLogicalVolume)->GetName() ==
"TECModule0StereoActive" ) ||
393 ( (*theLogicalVolume)->GetName() ==
"TECModule0RphiActive" ) ||
394 ( (*theLogicalVolume)->GetName() ==
"TECModule1StereoActive" ) ||
395 ( (*theLogicalVolume)->GetName() ==
"TECModule1RphiActive" ) ||
396 ( (*theLogicalVolume)->GetName() ==
"TECModule2RphiActive" ) ||
397 ( (*theLogicalVolume)->GetName() ==
"TECModule3RphiActive" ) ||
398 ( (*theLogicalVolume)->GetName() ==
"TECModule4StereoActive" ) ||
399 ( (*theLogicalVolume)->GetName() ==
"TECModule4RphiActive" ) ||
400 ( (*theLogicalVolume)->GetName() ==
"TECModule5RphiActive" ) ||
401 ( (*theLogicalVolume)->GetName() ==
"TECModule6RphiActive" ) )
408 std::cout <<
" AC1CMS: found a logical volume: " << (*theLogicalVolume)->GetName() << std::endl;
409 std::cout <<
" AC1CMS: the logical volume material = " << (*theLogicalVolume)->GetMaterial()->GetName() << std::endl;
410 std::cout <<
" AC1CMS: the MaterialPropertiesTable = " << std::endl;
411 (*theLogicalVolume)->GetMaterial()->GetMaterialPropertiesTable()->DumpTable();
414 else if ( ( (*theLogicalVolume)->GetName() ==
"TOBActiveSter0" ) ||
415 ( (*theLogicalVolume)->GetName() ==
"TOBActiveRphi0" ) ||
416 ( (*theLogicalVolume)->GetName() ==
"TOBActiveRphi2" ) ||
417 ( (*theLogicalVolume)->GetName() ==
"TOBActiveRphi4" ) )
424 std::cout <<
" AC1CMS: found a logical volume: " << (*theLogicalVolume)->GetName() << std::endl;
425 std::cout <<
" AC1CMS: the logical volume material = " << (*theLogicalVolume)->GetMaterial()->GetName() << std::endl;
426 std::cout <<
" AC1CMS: the MaterialPropertiesTable = " << std::endl;
427 (*theLogicalVolume)->GetMaterial()->GetMaterialPropertiesTable()->DumpTable();
430 else if ( ( (*theLogicalVolume)->GetName() ==
"TIBActiveSter0" ) ||
431 ( (*theLogicalVolume)->GetName() ==
"TIBActiveRphi0" ) ||
432 ( (*theLogicalVolume)->GetName() ==
"TIBActiveRphi2" ) )
439 std::cout <<
" AC1CMS: found a logical volume: " << (*theLogicalVolume)->GetName() << std::endl;
440 std::cout <<
" AC1CMS: the logical volume material = " << (*theLogicalVolume)->GetMaterial()->GetName() << std::endl;
441 std::cout <<
" AC1CMS: the MaterialPropertiesTable = " << std::endl;
442 (*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