46 #include "G4LogicalVolume.hh"
47 #include "G4PVPlacement.hh"
49 #include "G4RunManager.hh"
51 #include "G4GeometryManager.hh"
52 #include "G4PhysicalVolumeStore.hh"
53 #include "G4LogicalVolumeStore.hh"
54 #include "G4SolidStore.hh"
56 #include "G4VisAttributes.hh"
57 #include "G4Colour.hh"
59 #include "G4UnitsTable.hh"
62 #include "G4NistManager.hh"
64 #include "G4PhysicalConstants.hh"
65 #include "G4SystemOfUnits.hh"
78 fTargetMaterial = G4NistManager::Instance()->FindOrBuildMaterial(
"G4_Al");
79 fWorldMaterial = G4NistManager::Instance()->FindOrBuildMaterial(
"G4_Galactic");
93 G4GeometryManager::GetInstance()->OpenGeometry();
94 G4PhysicalVolumeStore::GetInstance()->Clean();
95 G4LogicalVolumeStore::GetInstance()->Clean();
96 G4SolidStore::GetInstance()->Clean();
100 G4double worldZ =
fLength + cm;
105 G4Tubs* solidW =
new G4Tubs(
"World", 0., worldR, 0.5*worldZ, 0., twopi);
107 G4VPhysicalVolume* world =
new G4PVPlacement(0, G4ThreeVector(),
114 G4Tubs* solidA =
new G4Tubs(
"Target", 0.,
fRadius, 0.5*
fLength, 0.,twopi);
116 new G4PVPlacement(0, G4ThreeVector(),
fLogicTarget,
"Target",
119 G4cout <<
"### Target consist of "
121 <<
" disks with R(mm)= " <<
fRadius/mm
122 <<
" fLength(mm)= " <<
fLength/mm
126 fLogicWorld->SetVisAttributes(G4VisAttributes::Invisible);
128 G4VisAttributes* regCcolor =
new G4VisAttributes(G4Colour(0., 0.3, 0.7));
131 G4cout << *(G4Material::GetMaterialTable()) << G4endl;
141 G4Material* material = G4NistManager::Instance()->FindOrBuildMaterial(mat);
146 G4RunManager::GetRunManager()->PhysicsHasBeenModified();
155 G4Material* material = G4NistManager::Instance()->FindOrBuildMaterial(mat);
160 G4RunManager::GetRunManager()->PhysicsHasBeenModified();
168 G4RunManager::GetRunManager()->DefineWorldVolume(
Construct());
175 if(val > 0.0 && val !=
fRadius) {
177 G4RunManager::GetRunManager()->GeometryHasBeenModified();
185 if(val > 0.0 && val !=
fLength) {
187 G4RunManager::GetRunManager()->GeometryHasBeenModified();
virtual ~DetectorConstruction()
virtual G4VPhysicalVolume * Construct()
void SetTargetMaterial(const G4String &)
void SetWorldMaterial(const G4String &)
void SetTargetRadius(G4double val)
G4LogicalVolume * fLogicWorld
DetectorMessenger * fDetectorMessenger
G4Material * fWorldMaterial
G4Material * fTargetMaterial
G4LogicalVolume * fLogicTarget
void SetTargetLength(G4double val)