add concrete and target block

This commit is contained in:
2021-01-14 16:58:07 -06:00
parent 6a5eab0052
commit 8e081d10e1

View File

@@ -29,7 +29,8 @@ DetectorConstruction::~DetectorConstruction() {}
G4VPhysicalVolume *DetectorConstruction::Construct() {
G4NistManager *nist = G4NistManager::Instance();
G4Material *default_mat = nist->FindOrBuildMaterial("G4_AIR");
// G4Material *target_mat = nist->FindOrBuildMaterial("G4_Cu");
G4Material *targetMaterial = nist->FindOrBuildMaterial("G4_Pb");
G4Material *concreteMaterial = nist->FindOrBuildMaterial("G4_CONCRETE");
G4Material *scMaterial =
nist->FindOrBuildMaterial("G4_PLASTIC_SC_VINYLTOLUENE");
@@ -50,6 +51,13 @@ G4VPhysicalVolume *DetectorConstruction::Construct() {
G4double layerSizeY = nScBar * scSizeX + nScBar * scGapX;
G4double layerSizeZ = scSizeZ + scGapZ;
G4double concreteX = 20 * cm;
G4double concreteY = 20 * cm;
G4double concreteZ = 20 * cm;
G4double targetX = 5 * cm;
G4double targetY = 5 * cm;
G4double targetZ = 2 * cm;
G4double worldSizeX = 1.2 * layerSizeX;
G4double worldSizeY = 1.2 * layerSizeY;
G4double worldSizeZ =
@@ -70,6 +78,21 @@ G4VPhysicalVolume *DetectorConstruction::Construct() {
0, // copy number
fCheckOverlaps); // overlaps checking
// concrete box and target
G4Box *solidConcrete =
new G4Box("concrete", concreteX / 2, concreteY / 2, concreteZ / 2);
G4LogicalVolume *logConcrete =
new G4LogicalVolume(solidConcrete, concreteMaterial, "concrete");
new G4PVPlacement(0, G4ThreeVector(), logConcrete, "concrete", logicWorld,
false, 0, fCheckOverlaps);
G4Box *solidTarget =
new G4Box("target", targetX / 2, targetY / 2, targetZ / 2);
G4LogicalVolume *logTarget =
new G4LogicalVolume(solidTarget, targetMaterial, "target");
new G4PVPlacement(0, G4ThreeVector(), logTarget, "target", logConcrete, false,
0, fCheckOverlaps);
// scintillators
G4Box *solidScX =
new G4Box("solidScX", 0.5 * scSizeX, 0.5 * scSizeY, 0.5 * scSizeZ);
@@ -129,11 +152,10 @@ G4VPhysicalVolume *DetectorConstruction::Construct() {
//------------------------------------------------
logicWorld->SetVisAttributes(G4VisAttributes::Invisible);
G4VisAttributes *visAttScX = new G4VisAttributes(G4Colour(.0, 1.0, 1., 1.0));
logicScX->SetVisAttributes(visAttScX);
G4VisAttributes *visAttScY = new G4VisAttributes(G4Colour(0.0, 0.0, 1., 0.4));
logicScY->SetVisAttributes(visAttScY);
logicScX->SetVisAttributes(new G4VisAttributes(G4Colour(.0, 1.0, 1., 1.0)));
logicScY->SetVisAttributes(new G4VisAttributes(G4Colour(0.0, 0.0, 1., 0.4)));
logConcrete->SetVisAttributes(new G4VisAttributes(G4Colour(.8, .3, .3, 0.3)));
logTarget->SetVisAttributes(new G4VisAttributes(G4Colour(1., .3, .3, 1.0)));
// always return the physical World
//