62 : fMagField(0), fEmFieldSetup(0), fDetectorMessenger(0), fCalorimeterSD(0),
63 fSolidWorld(0), fLogicWorld(0), fPhysiWorld(0),
64 fSolidAbsorber(0), fLogicAbsorber(0), fPhysiAbsorber(0),
65 fSolidRadSlice(0), fLogicRadSlice(0), fPhysiRadSlice(0),
66 fSolidRadiator(0), fLogicRadiator(0), fPhysiRadiator(0),
67 fWorldMaterial(0), fAbsorberMaterial(0), fRadiatorMat(0),
69 fWorldSizeR( 22000.*
mm),
70 fWorldSizeZ( 44000.*
mm),
71 fAbsorberThickness( 1.*
mm),
72 fAbsorberRadius( 20000.*
mm),
73 fZAbsorber( 21990.*
mm),
76 fRadThickness( 100.*
mm),
95 delete fDetectorMessenger;
96 if (fEmFieldSetup)
delete fEmFieldSetup ;
103 return ConstructCalorimeter();
108 void F03DetectorConstruction::DefineMaterials()
116 G4double fractionmass, pressure, temperature;
143 density = 1.39*
g/
cm3;
157 density = 3.700*
mg/
cm3 ;
163 density = 1.7836*
mg/
cm3 ;
167 density = 1.25053*
mg/
cm3 ;
171 density = 1.4289*
mg/
cm3 ;
175 density = 1.2928*
mg/
cm3 ;
182 Air->
AddMaterial( Nitrogen, fractionmass = 0.7557 ) ;
183 Air->
AddMaterial( Oxygen, fractionmass = 0.2315 ) ;
188 density = 5.858*
mg/
cm3 ;
194 density = 1.842*
mg/
cm3;
201 density = 5.0818*
mg/
cm3 ;
204 Xe20CO2->
AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ;
208 density = 3.601*
mg/
cm3 ;
212 Kr20CO2->
AddMaterial( CarbonDioxide, fractionmass = 0.11 ) ;
221 fAbsorberMaterial =
Air ;
223 fWorldMaterial =
Air ;
235 ComputeCalorParameters();
248 fSolidWorld =
new G4Tubs(
"World",
249 0.,fWorldSizeR,fWorldSizeZ/2.,0.,
twopi);
265 G4double radThick = fFoilNumber*(fRadThickness + fGasGap) + fDetGap ;
267 G4double zRad = fZAbsorber - 20*
cm - 0.5*radThick ;
276 fSolidRadiator =
new G4Tubs(
"Radiator",0.0,
277 1.01*fAbsorberRadius,
278 0.5*radThick,0.0,
twopi) ;
294 "Radiator", fLogicRadiator,
295 fPhysiWorld,
false, 0);
297 fSolidRadSlice =
new G4Tubs(
"RadSlice",0.0,
298 fAbsorberRadius,0.5*fRadThickness,0.0,
twopi ) ;
303 zModule = zRad + 0.5*radThick/1.02 ;
306 for (j=0;j<fFoilNumber;j++)
309 zRadiator = zModule - j*(fRadThickness + fGasGap) ;
310 G4cout << zRadiator/
mm <<
" mm" <<
"\t" ;
314 "RadSlice",fLogicRadSlice,
315 fPhysiRadiator,
false,j);
321 if (fAbsorberThickness > 0.)
323 fSolidAbsorber =
new G4Tubs(
"Absorber", 1.0*
mm,
325 fAbsorberThickness/2.,
359 G4cout <<
"\n The WORLD is made of "
360 << fWorldSizeZ/
mm <<
"mm of " << fWorldMaterial->
GetName() ;
361 G4cout <<
", the transverse size (R) of the world is " << fWorldSizeR/
mm <<
" mm. " <<
G4endl;
362 G4cout <<
" The ABSORBER is made of "
363 << fAbsorberThickness/
mm <<
"mm of " << fAbsorberMaterial->
GetName() ;
364 G4cout <<
", the transverse size (R) is " << fAbsorberRadius/
mm <<
" mm. " <<
G4endl;
365 G4cout <<
" Z position of the (middle of the) absorber " << fZAbsorber/
mm <<
" mm." <<
G4endl;
378 for (
size_t j=0 ; j<theMaterialTable->size() ; j++)
380 material = (*theMaterialTable)[j];
381 if (material->
GetName() == materialChoice)
398 for (
size_t j=0 ; j<theMaterialTable->size() ; j++)
400 material = (*theMaterialTable)[j];
401 if (material->
GetName() == materialChoice)
414 fAbsorberThickness = val;
415 ComputeCalorParameters();
423 fAbsorberRadius = val;
424 ComputeCalorParameters();
433 ComputeCalorParameters();
442 ComputeCalorParameters();
450 ComputeCalorParameters();