34 #include "DetectorConstruction.hh"
35 #include "DetectorMessenger.hh"
58 :fAbsorberMaterial(0),fWorldMaterial(0),fDefaultWorld(true),
59 fSolidWorld(0),fLogicWorld(0),fPhysiWorld(0),
60 fSolidAbsorber(0),fLogicAbsorber(0),fPhysiAbsorber(0),
64 fAbsorberThickness = 1.*
cm;
65 fAbsorberSizeYZ = 2.*
cm;
67 ComputeCalorParameters();
82 delete fDetectorMessenger;
89 return ConstructCalorimeter();
94 void DetectorConstruction::DefineMaterials()
101 G4int ncomponents, natoms;
128 new G4Material(
"liquidArgon", density= 1.390*
g/
cm3, ncomponents=1);
226 new G4Material(
"XenonMethanePropane", density= 4.9196*
mg/
cm3, ncomponents=3,
243 temperature = 2.73*
kelvin;
250 void DetectorConstruction::ComputeCalorParameters()
253 fXstartAbs = fXposAbs-0.5*fAbsorberThickness;
254 fXendAbs = fXposAbs+0.5*fAbsorberThickness;
257 fWorldSizeX = 1.5*fAbsorberThickness; fWorldSizeYZ= 1.2*fAbsorberSizeYZ;
273 ComputeCalorParameters();
277 fSolidWorld =
new G4Box(
"World",
278 fWorldSizeX/2,fWorldSizeYZ/2,fWorldSizeYZ/2);
294 fSolidAbsorber =
new G4Box(
"Absorber",
295 fAbsorberThickness/2,fAbsorberSizeYZ/2,fAbsorberSizeYZ/2);
324 <<
" of " << fWorldMaterial->
GetName();
325 G4cout <<
". The transverse size (YZ) of the world is "
327 G4cout <<
" The ABSORBER is made of "
329 <<
" of " << fAbsorberMaterial->
GetName();
330 G4cout <<
". The transverse size (YZ) is "
332 G4cout <<
" X position of the middle of the absorber "
345 if (pttoMaterial && fAbsorberMaterial != pttoMaterial) {
346 fAbsorberMaterial = pttoMaterial;
347 if(fLogicAbsorber) fLogicAbsorber->
SetMaterial(fAbsorberMaterial);
360 if (pttoMaterial && fWorldMaterial != pttoMaterial) {
361 fWorldMaterial = pttoMaterial;
362 if(fLogicWorld) fLogicWorld->
SetMaterial(fWorldMaterial);
371 fAbsorberThickness = val;
379 fAbsorberSizeYZ = val;
388 fDefaultWorld =
false;
397 fDefaultWorld =
false;
420 if(fMagField)
delete fMagField;