#include "DetectorConstruction.hh" #include "G4VUserDetectorConstruction.hh" #include "G4VPhysicalVolume.hh" #include "G4LogicalVolume.hh" #include "G4Box.hh" #include "G4Tubs.hh" #include "G4PVPlacement.hh" #include "G4NistManager.hh" #include "G4SystemOfUnits.hh" #include "G4VisAttributes.hh" #include "G4Colour.hh" DetectorConstruction::DetectorConstruction() {} DetectorConstruction::~DetectorConstruction() {} G4VPhysicalVolume *DetectorConstruction::Construct() { // Define materials G4NistManager *nist = G4NistManager::Instance(); G4Material *worldMat = nist->FindOrBuildMaterial("G4_AIR"); G4Material* NaIMat = nist->FindOrBuildMaterial("G4_SODIUM_IODIDE"); // World volume G4Box *solidWorld = new G4Box("solidWorld", 0.25 * m, 0.25 * m, 0.5 * m); //World volume G4LogicalVolume *logicWorld = new G4LogicalVolume(solidWorld, worldMat, "logicWorld"); //Mother volume G4VPhysicalVolume *physWorld = new G4PVPlacement(0, G4ThreeVector(0., 0., 0.), logicWorld, "physWorld", 0, false, 0, true); //Daughter volume // Set visibility of the world volume to false //logicWorld->SetVisAttributes(G4VisAttributes::GetInvisible()); // NaI Detector G4double NaIRadius = 7.5 * cm; G4double NaIHalfLengthZ = 2.5 * cm; G4Tubs* solidNaI = new G4Tubs("solidNaI", 0., NaIRadius, NaIHalfLengthZ, 0., 2 * 3.14159265359); G4ThreeVector NaIPos(0., 0., 0.475 * m); G4LogicalVolume* logicNaI = new G4LogicalVolume(solidNaI, NaIMat, "logicNaI"); new G4PVPlacement(0, NaIPos, logicNaI, "physNaI", logicWorld, false, 0, true); // Set visualization attributes for the NaI Detector G4VisAttributes* DetectorAttr = new G4VisAttributes(G4Colour(1., 0., 0.)); //The order is Red, green, blue DetectorAttr->SetVisibility(true); DetectorAttr->SetForceWireframe(false); logicNaI->SetVisAttributes(DetectorAttr); return physWorld; }