65 : fSolidWorld(0), fLogicWorld(0), fPhysiWorld(0),
66 fSolidAbsorber(0),fLogicAbsorber(0), fPhysiAbsorber(0),
67 fEmFieldSetup(0), fDetectorMessenger(0), fCalorimeterSD(0),
68 fAbsorberMaterial(0), fAbsorberThickness(0.),fAbsorberRadius(0.),
69 fWorldChanged(false), fZAbsorber(0.), fZStartAbs(0.), fZEndAbs(0.),
70 fWorldMaterial(0), fWorldSizeR(0.), fWorldSizeZ(0.)
74 fWorldSizeZ = 44000.*
mm;
75 fWorldSizeR = 22000.*
mm;
77 fAbsorberThickness = 1.0*
mm;
79 fAbsorberRadius = 20000.*
mm;
81 fZAbsorber = 21990.0*
mm ;
97 delete fDetectorMessenger;
98 if (fEmFieldSetup)
delete fEmFieldSetup;
114 void F01DetectorConstruction::DefineMaterials()
122 G4double fractionmass, pressure, temperature;
149 density = 1.39*
g/
cm3;
163 density = 3.700*
mg/
cm3 ;
169 density = 1.7836*
mg/
cm3 ;
173 density = 1.25053*
mg/
cm3 ;
177 density = 1.4289*
mg/
cm3 ;
181 density = 1.2928*
mg/
cm3 ;
189 Air->
AddMaterial( Nitrogen, fractionmass = 0.7557 ) ;
190 Air->
AddMaterial( Oxygen, fractionmass = 0.2315 ) ;
195 density = 5.858*
mg/
cm3 ;
201 density = 1.842*
mg/
cm3;
208 density = 5.0818*
mg/
cm3 ;
211 Xe20CO2->
AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ;
215 density = 3.601*
mg/
cm3 ;
218 Kr20CO2->
AddMaterial( CarbonDioxide, fractionmass = 0.11 ) ;
225 fAbsorberMaterial =
Air ;
227 fWorldMaterial =
Air ;
236 ComputeCalorParameters();
251 fSolidWorld =
new G4Tubs(
"World",
252 0.,fWorldSizeR,fWorldSizeZ/2.,0.,
twopi);
267 if (fAbsorberThickness > 0.)
269 fSolidAbsorber =
new G4Tubs(
"Absorber", 1.0*
mm,
271 fAbsorberThickness/2.,
305 G4cout <<
"\n The WORLD is made of "
306 << fWorldSizeZ/
mm <<
"mm of " << fWorldMaterial->
GetName() ;
307 G4cout <<
", the transverse size (R) of the world is " << fWorldSizeR/
mm <<
" mm. "
309 G4cout <<
" The ABSORBER is made of "
310 << fAbsorberThickness/
mm <<
"mm of " << fAbsorberMaterial->
GetName() ;
311 G4cout <<
", the transverse size (R) is " << fAbsorberRadius/
mm <<
" mm. " <<
G4endl;
312 G4cout <<
" Z position of the (middle of the) absorber " << fZAbsorber/
mm <<
" mm."
326 for (
size_t j=0 ; j<theMaterialTable->size() ; j++)
327 { material = (*theMaterialTable)[j];
328 if (material->
GetName() == materialChoice)
345 for (
size_t j=0 ; j<theMaterialTable->size() ; j++)
346 { material = (*theMaterialTable)[j];
347 if(material->
GetName() == materialChoice)
362 fAbsorberThickness = val;
363 ComputeCalorParameters();
374 fAbsorberRadius = val;
375 ComputeCalorParameters();
382 fWorldChanged =
true;
384 ComputeCalorParameters();
391 fWorldChanged =
true;
393 ComputeCalorParameters();
401 ComputeCalorParameters();