34 #include "DetectorConstruction.hh"
35 #include "DetectorMessenger.hh"
67 fAbsorThickness[0] = 0*
mm;
68 fAbsorThickness[1] = 1*
mm;
85 delete fDetectorMessenger;
92 return ConstructVolumes();
97 void DetectorConstruction::DefineMaterials()
120 fDefaultMaterial = Galactic;
148 void DetectorConstruction::ComputeParameters()
152 for (
G4int iAbs=1; iAbs<=fNbOfAbsor; iAbs++) {
153 fAbsorSizeX += fAbsorThickness[iAbs];
155 fWorldSizeX = 1.2*fAbsorSizeX;
156 fWorldSizeYZ = 1.2*fAbsorSizeYZ;
177 fWorldSizeX/2,fWorldSizeYZ/2,fWorldSizeYZ/2);
196 fXfront[0] = -0.5*fAbsorSizeX;
198 for (
G4int k=1; k<=fNbOfAbsor; k++) {
203 new G4Box(matname,fAbsorThickness[k]/2,fAbsorSizeYZ/2,fAbsorSizeYZ/2);
210 fXfront[k] = fXfront[k-1] + fAbsorThickness[k-1];
211 G4double xcenter = fXfront[k]+0.5*fAbsorThickness[k];
234 G4cout <<
"\n-------------------------------------------------------------"
235 <<
"\n ---> The Absorber is " << fNbOfAbsor <<
" layers of:";
236 for (
G4int i=1; i<=fNbOfAbsor; i++)
238 G4cout <<
"\n \t" << std::setw(12) << fAbsorMaterial[i]->
GetName() <<
": "
239 << std::setw(6) <<
G4BestUnit(fAbsorThickness[i],
"Length");
241 G4cout <<
"\n-------------------------------------------------------------\n"
252 {
G4cout <<
"\n ---> warning from SetfNbOfAbsor: "
253 << ival <<
" must be at least 1 and and most " <<
kMaxAbsor-1
254 <<
". Command refused" <<
G4endl;
267 if (iabs > fNbOfAbsor || iabs <= 0)
268 {
G4cout <<
"\n --->warning from SetfAbsorMaterial: absor number "
269 << iabs <<
" out of range. Command refused" <<
G4endl;
276 fAbsorMaterial[iabs] = pttoMaterial;
287 if (iabs > fNbOfAbsor || iabs <= 0)
288 {
G4cout <<
"\n --->warning from SetfAbsorThickness: absor number "
289 << iabs <<
" out of range. Command refused" <<
G4endl;
293 {
G4cout <<
"\n --->warning from SetfAbsorThickness: thickness "
294 << val <<
" out of range. Command refused" <<
G4endl;
297 fAbsorThickness[iabs] = val;
308 {
G4cout <<
"\n --->warning from SetfAbsorSizeYZ: thickness "
309 << val <<
" out of range. Command refused" <<
G4endl;
320 if ( fFieldMessenger.
Get() == 0 ) {
329 fFieldMessenger.
Put( msg );
G4IonisParamMat * GetIonisation() const
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
static constexpr double mm
CLHEP::Hep3Vector G4ThreeVector
int universe_mean_density
void SetMeanExcitationEnergy(G4double value)
static constexpr double perCent
const G4String & GetName() const
G4VPhysicalVolume * Construct()
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
static G4NistManager * Instance()
static G4PhysicalVolumeStore * GetInstance()
virtual void ConstructSDandField()
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
void PhysicsHasBeenModified()
void SetAbsorMaterial(G4int, const G4String &)
void AddIsotope(G4Isotope *isotope, G4double RelativeAbundance)
static G4LogicalVolumeStore * GetInstance()
static G4SolidStore * GetInstance()
static constexpr double eV
static G4GeometryManager * GetInstance()
static constexpr double kelvin
static constexpr double cm3
void ReinitializeGeometry(G4bool destroyFirst=false, G4bool prop=true)
static G4RunManager * GetRunManager()
void SetAbsorSizeYZ(G4double)
G4Material * MaterialWithSingleIsotope(G4String, G4String, G4double, G4int, G4int)
void SetAbsorThickness(G4int, G4double)
void OpenGeometry(G4VPhysicalVolume *vol=0)
void AddElement(G4Element *element, G4int nAtoms)
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
void Put(const value_type &val) const
static constexpr double mole