34 #include "DetectorConstruction.hh"
35 #include "DetectorMessenger.hh"
63 fAbsorberMaterial(0),fWorldMaterial(0),fDefaultWorld(true),
64 fSolidWorld(0),fLogicWorld(0),fPhysiWorld(0),
65 fSolidAbsorber(0),fLogicAbsorber(0),fPhysiAbsorber(0),
69 fAbsorberThickness = 1.*
cm;
70 fAbsorberSizeYZ = 2.*
cm;
72 ComputeCalorParameters();
87 delete fDetectorMessenger;
94 return ConstructCalorimeter();
99 void DetectorConstruction::DefineMaterials()
106 G4int ncomponents, natoms;
133 new G4Material(
"liquidArgon", density= 1.390*
g/
cm3, ncomponents=1);
231 new G4Material(
"XenonMethanePropane", density= 4.9196*
mg/
cm3, ncomponents=3,
248 temperature = 2.73*
kelvin;
255 void DetectorConstruction::ComputeCalorParameters()
258 fXstartAbs = fXposAbs-0.5*fAbsorberThickness;
259 fXendAbs = fXposAbs+0.5*fAbsorberThickness;
262 fWorldSizeX = 1.5*fAbsorberThickness; fWorldSizeYZ= 1.2*fAbsorberSizeYZ;
279 fSolidWorld =
new G4Box(
"World",
280 fWorldSizeX/2,fWorldSizeYZ/2,fWorldSizeYZ/2);
296 fSolidAbsorber =
new G4Box(
"Absorber",
297 fAbsorberThickness/2,fAbsorberSizeYZ/2,fAbsorberSizeYZ/2);
326 <<
" of " << fWorldMaterial->
GetName();
327 G4cout <<
". The transverse size (YZ) of the world is "
329 G4cout <<
" The ABSORBER is made of "
331 <<
" of " << fAbsorberMaterial->
GetName();
332 G4cout <<
". The transverse size (YZ) is "
334 G4cout <<
" X position of the middle of the absorber "
347 if (pttoMaterial && fAbsorberMaterial != pttoMaterial) {
348 fAbsorberMaterial = pttoMaterial;
349 if(fLogicAbsorber) fLogicAbsorber->
SetMaterial(fAbsorberMaterial);
362 if (pttoMaterial && fWorldMaterial != pttoMaterial) {
363 fWorldMaterial = pttoMaterial;
364 if(fLogicWorld) fLogicWorld->
SetMaterial(fWorldMaterial);
373 fAbsorberThickness = val;
374 ComputeCalorParameters();
382 fAbsorberSizeYZ = val;
383 ComputeCalorParameters();
392 fDefaultWorld =
false;
393 ComputeCalorParameters();
402 fDefaultWorld =
false;
403 ComputeCalorParameters();
412 ComputeCalorParameters();
421 if ( fFieldMessenger.
Get() == 0 ) {
430 fFieldMessenger.
Put( msg );
G4IonisParamMat * GetIonisation() const
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
void SetWorldSizeYZ(G4double)
CLHEP::Hep3Vector G4ThreeVector
void AddMaterial(G4Material *material, G4double fraction)
int universe_mean_density
void SetMeanExcitationEnergy(G4double value)
const G4String & GetName() const
G4VPhysicalVolume * Construct()
void SetWorldMaterial(const G4String &)
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
static G4NistManager * Instance()
static G4PhysicalVolumeStore * GetInstance()
void ConstructSDandField()
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)
static G4RunManager * GetRunManager()
void OpenGeometry(G4VPhysicalVolume *vol=0)
void AddElement(G4Element *element, G4int nAtoms)
void SetWorldSizeX(G4double)
void SetAbsorberXpos(G4double)
void PrintCalorParameters()
void SetMaterial(G4Material *pMaterial)
void SetAbsorberMaterial(G4String)
void Put(const value_type &val) const
void SetAbsorberSizeYZ(G4double)