30#include "DetectorConstruction.hh"
32#include "G4Material.hh"
33#include "G4NistManager.hh"
35#include "G4LogicalVolume.hh"
36#include "G4PVPlacement.hh"
37#include "G4GenericMessenger.hh"
46 G4double boxHx, G4double boxHy, G4double boxHz,
48 G4double worldSizeFactor)
49 : fBoxMaterialName(boxMaterialName),
50 fWorldMaterialName(worldMaterialName),
51 fBoxDimensions(boxHx*2, boxHy*2, boxHz*2),
52 fWorldSizeFactor(worldSizeFactor)
70 auto nistManager = G4NistManager::Instance();
131 auto nistManager = G4NistManager::Instance();
133 auto newMaterial = nistManager->FindOrBuildMaterial(materialName);
134 if ( ! newMaterial ) {
135 G4cerr <<
"Material " << materialName <<
" not found." << G4endl;
136 G4cerr <<
"The box material was not changed." << G4endl;
141 G4cout <<
"Material of box changed to " << materialName << G4endl;
148 auto nistManager = G4NistManager::Instance();
150 auto newMaterial = nistManager->FindOrBuildMaterial(materialName);
151 if ( ! newMaterial ) {
152 G4cerr <<
"Material " << materialName <<
" not found." << G4endl;
153 G4cerr <<
"The box material was not changed." << G4endl;
158 G4cout <<
"Material of box changed to " << materialName << G4endl;
191 auto& setBoxMaterialCmd
194 "Set box material name.");
195 setBoxMaterialCmd.SetParameterName(
"boxMaterialName",
false);
196 setBoxMaterialCmd.SetDefaultValue(
"G4_AIR");
199 auto& setWorldMaterialCmd
200 =
fMessenger->DeclareMethod(
"setWorldMaterial",
202 "Set world material name.");
203 setWorldMaterialCmd.SetParameterName(
"worldMaterialName",
false);
204 setWorldMaterialCmd.SetDefaultValue(
"G4_AIR");
207 auto& setBoxDimensionsCmd
208 =
fMessenger->DeclareMethodWithUnit(
"setBoxDimensions",
"mm",
210 "Set box dimensions (in half lentgh).");
211 setBoxDimensionsCmd.SetParameterName(
"boxDimensions",
false);
212 setBoxDimensionsCmd.SetStates(G4State_PreInit);
215 auto& setWorldSizeFactorCmd
216 =
fMessenger->DeclareMethod(
"setWorldSizeFactor",
218 "Set the multiplication factor from box dimensions to world dimensions.");
219 setWorldSizeFactorCmd.SetParameterName(
"worldSizeFactor",
false);
220 setWorldSizeFactorCmd.SetRange(
"WorldSizeFactor >= 1");
221 setWorldSizeFactorCmd.SetStates(G4State_PreInit);
G4String fWorldMaterialName
~DetectorConstruction() override
DetectorConstruction(const G4String &boxMaterialName="G4_AIR", G4double boxHx=40 *CLHEP::cm, G4double boxHy=40 *CLHEP::cm, G4double boxHz=40 *CLHEP::cm, const G4String &worldMaterialName="G4_AIR", G4double worldSizeFactor=1.25)
void SetWorldMaterial(const G4String &materialName)
void SetBoxDimensions(G4ThreeVector dimensions)
G4LogicalVolume * fBoxVolume
G4ThreeVector fBoxDimensions
G4double fWorldSizeFactor
void SetBoxMaterial(const G4String &materialName)
void SetWorldSizeFactor(G4double factor)
G4String fBoxMaterialName
G4LogicalVolume * fWorldVolume
G4GenericMessenger * fMessenger
G4VPhysicalVolume * Construct() override