34 #include "DetectorConstruction.hh"
35 #include "DetectorMessenger.hh"
67 fAbsorThickness[0] = 0*
mm;
68 fAbsorThickness[1] = 1*
mm;
71 fNbOfDivisions[iAbs] = 1;
87 delete fDetectorMessenger;
94 return ConstructVolumes();
99 void DetectorConstruction::DefineMaterials()
135 fDefaultMaterial = Galactic;
142 void DetectorConstruction::ComputeParameters()
146 for (
G4int iAbs=1; iAbs<=fNbOfAbsor; iAbs++) {
147 fAbsorSizeX += fAbsorThickness[iAbs];
169 fAbsorSizeX/2,fAbsorSizeYZ/2,fAbsorSizeYZ/2);
188 fXfront[0] = -0.5*fAbsorSizeX;
190 for (
G4int k=1; k<=fNbOfAbsor; k++) {
195 new G4Box(matname,fAbsorThickness[k]/2,fAbsorSizeYZ/2,fAbsorSizeYZ/2);
202 fXfront[k] = fXfront[k-1] + fAbsorThickness[k-1];
203 G4double xcenter = fXfront[k]+0.5*fAbsorThickness[k];
216 G4double LayerThickness = fAbsorThickness[k]/fNbOfDivisions[k];
218 new G4Box(matname,LayerThickness/2,fAbsorSizeYZ/2,fAbsorSizeYZ/2);
245 G4cout <<
"\n-------------------------------------------------------------"
246 <<
"\n ---> The Absorber is " << fNbOfAbsor <<
" layers of:";
247 for (
G4int i=1; i<=fNbOfAbsor; i++)
249 G4cout <<
"\n \t" << std::setw(12) << fAbsorMaterial[i]->
GetName() <<
": "
250 << std::setw(6) <<
G4BestUnit(fAbsorThickness[i],
"Length")
251 <<
" divided in " << fNbOfDivisions[i] <<
" slices";
253 G4cout <<
"\n-------------------------------------------------------------\n"
263 if (ival < 1 || ival > (
MaxAbsor-1))
264 {
G4cout <<
"\n ---> warning from SetfNbOfAbsor: "
265 << ival <<
" must be at least 1 and and most " <<
MaxAbsor-1
266 <<
". Command refused" <<
G4endl;
279 if (iabs > fNbOfAbsor || iabs <= 0)
280 {
G4cout <<
"\n --->warning from SetfAbsorMaterial: absor number "
281 << iabs <<
" out of range. Command refused" <<
G4endl;
288 fAbsorMaterial[iabs] = pttoMaterial;
299 if (iabs > fNbOfAbsor || iabs <= 0)
300 {
G4cout <<
"\n --->warning from SetfAbsorThickness: absor number "
301 << iabs <<
" out of range. Command refused" <<
G4endl;
305 {
G4cout <<
"\n --->warning from SetfAbsorThickness: thickness "
306 << val <<
" out of range. Command refused" <<
G4endl;
309 fAbsorThickness[iabs] = val;
320 {
G4cout <<
"\n --->warning from SetfAbsorSizeYZ: thickness "
321 << val <<
" out of range. Command refused" <<
G4endl;
334 if (iabs > fNbOfAbsor || iabs < 1)
335 {
G4cout <<
"\n --->warning from SetNbOfDivisions: absor number "
336 << iabs <<
" out of range. Command refused" <<
G4endl;
341 {
G4cout <<
"\n --->warning from SetNbOfDivisions: "
342 << ival <<
" must be at least 1. Command refused" <<
G4endl;
345 fNbOfDivisions[iabs] = ival;
354 if ( fFieldMessenger.
Get() == 0 ) {
363 fFieldMessenger.
Put( msg );
G4IonisParamMat * GetIonisation() const
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
CLHEP::Hep3Vector G4ThreeVector
int universe_mean_density
void SetMeanExcitationEnergy(G4double value)
const G4String & GetName() const
G4VPhysicalVolume * Construct()
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
static G4NistManager * Instance()
static G4PhysicalVolumeStore * GetInstance()
void ConstructSDandField()
G4GLOB_DLL std::ostream G4cout
void PhysicsHasBeenModified()
void SetAbsorMaterial(G4int, const G4String &)
static G4LogicalVolumeStore * GetInstance()
static G4SolidStore * GetInstance()
static G4GeometryManager * GetInstance()
void ReinitializeGeometry(G4bool destroyFirst=false, G4bool prop=true)
static G4RunManager * GetRunManager()
void SetAbsorSizeYZ(G4double)
void SetNbOfDivisions(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