#ifndef DESCSS_DetectorConstruction_h #define DESCSS_DetectorConstruction_h #include "G4VUserDetectorConstruction.hh" #include "globals.hh" class G4VPhysicalVolume; class G4LogicalVolume; class G4HumanPhantomMaterial; class G4HumanPhantomMessenger; class DetectorConstruction : public G4VUserDetectorConstruction { public: DetectorConstruction(); ~DetectorConstruction() override; G4VPhysicalVolume* Construct() override; public: void SetBodyPartSensitivity(G4String, G4bool); void SetPhantomSex(G4String); void SetPhantomModel(G4String); void SetParticleType(G4String s) { particleType = s; }; void ConstructSDandField(); G4String GetParticleType() { return particleType; }; std::vector GetSensitiveList() const { return sensitiveList; }; private: void ConstructSectionSphere(G4LogicalVolume* fMotherLogical, G4double zBias); void ConstructSectionCons(G4String name, G4LogicalVolume* fMotherLogical, G4double zBias, G4double pRmax1, G4double pRmin1, G4double pRmax2, G4double pRmin2, G4double hz); void ConstructSectionSmall(G4LogicalVolume* fMotherLogical, G4double zBias); void ConstructSectionBig(G4LogicalVolume* fMotherLogical, G4double zBias); void ConstructHumanPhantom(G4VPhysicalVolume* fMotherPhysics); private: G4String sex = "Male"; G4String model = "MIRD"; G4String particleType = "TE"; std::vector sensitiveList; std::map sensitivities; G4HumanPhantomMaterial* material; G4HumanPhantomMessenger* messenger; }; #endif