37 #include "DetectorConstruction.hh"
38 #include "DetectorMessenger.hh"
62 fAbsorberMaterial(0),fGapMaterial(0),fDefaultMaterial(0),
63 fSolidWorld(0),fLogicWorld(0),fPhysiWorld(0),
64 fSolidCalor(0),fLogicCalor(0),fPhysiCalor(0),
65 fSolidLayer(0),fLogicLayer(0),fPhysiLayer(0),
66 fSolidAbsorber(0),fLogicAbsorber(0),fPhysiAbsorber(0),
67 fSolidGap (0),fLogicGap (0),fPhysiGap (0),
71 fAbsorberThickness = 10.*
mm;
72 fGapThickness = 5.*
mm;
74 fCalorSizeYZ = 10.*
cm;
75 ComputeCalorParameters();
89 {
delete fDetectorMessenger;}
95 return ConstructCalorimeter();
100 void DetectorConstruction::DefineMaterials()
127 ComputeCalorParameters();
132 fSolidWorld =
new G4Box(
"World",
133 fWorldSizeX/2,fWorldSizeYZ/2,fWorldSizeYZ/2);
150 fSolidCalor=0; fLogicCalor=0; fPhysiCalor=0;
151 fSolidLayer=0; fLogicLayer=0; fPhysiLayer=0;
153 if (fCalorThickness > 0.)
154 { fSolidCalor =
new G4Box(
"Calorimeter",
155 fCalorThickness/2,fCalorSizeYZ/2,fCalorSizeYZ/2);
172 fSolidLayer =
new G4Box(
"Layer",
173 fLayerThickness/2,fCalorSizeYZ/2,fCalorSizeYZ/2);
198 fSolidAbsorber=0; fLogicAbsorber=0; fPhysiAbsorber=0;
200 if (fAbsorberThickness > 0.)
201 { fSolidAbsorber =
new G4Box(
"Absorber",
202 fAbsorberThickness/2,fCalorSizeYZ/2,fCalorSizeYZ/2);
221 fSolidGap=0; fLogicGap=0; fPhysiGap=0;
223 if (fGapThickness > 0.)
224 { fSolidGap =
new G4Box(
"Gap",
225 fGapThickness/2,fCalorSizeYZ/2,fCalorSizeYZ/2);
261 G4cout <<
"\n------------------------------------------------------------"
262 <<
"\n---> The calorimeter is " << fNbOfLayers <<
" layers of: [ "
263 << fAbsorberThickness/
mm <<
"mm of " << fAbsorberMaterial->
GetName()
265 << fGapThickness/
mm <<
"mm of " << fGapMaterial->
GetName() <<
" ] "
266 <<
"\n------------------------------------------------------------\n";
278 fAbsorberMaterial = pttoMaterial;
279 if ( fLogicAbsorber )
296 fGapMaterial = pttoMaterial;
310 fAbsorberThickness = val;
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
CLHEP::Hep3Vector G4ThreeVector
const G4String & GetName() const
G4VPhysicalVolume * Construct()
void SetVisibility(G4bool)
static G4MaterialTable * GetMaterialTable()
static G4NistManager * Instance()
void SetNbOfLayers(G4int)
static G4PhysicalVolumeStore * GetInstance()
void SetAbsorberThickness(G4double)
G4GLOB_DLL std::ostream G4cout
void PhysicsHasBeenModified()
static G4LogicalVolumeStore * GetInstance()
static G4SolidStore * GetInstance()
static G4GeometryManager * GetInstance()
void ReinitializeGeometry(G4bool destroyFirst=false, G4bool prop=true)
void SetGapMaterial(G4String)
static G4RunManager * GetRunManager()
void SetCalorSizeYZ(G4double)
static const G4VisAttributes Invisible
void OpenGeometry(G4VPhysicalVolume *vol=0)
void SetGapThickness(G4double)
void PrintCalorParameters()
void SetMaterial(G4Material *pMaterial)
void SetAbsorberMaterial(G4String)
void SetVisAttributes(const G4VisAttributes *pVA)