diff --git a/src/DetectorConstruction.cc b/src/DetectorConstruction.cc index 970b0b3..1bfcfd7 100644 --- a/src/DetectorConstruction.cc +++ b/src/DetectorConstruction.cc @@ -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 //