#ifndef DetectorConstruction_H #define DetectorConstruction_H 1 class G4LogicalVolume; class G4VPhysicalVolume; #include "G4VUserDetectorConstruction.hh" #include "G4ThreeVector.hh" #include "globals.hh" class Materials; class DetectorConstructionMessenger; class Targetspddresda; class Clusterspddresda; class DetectorConstruction : public G4VUserDetectorConstruction { public: DetectorConstruction(); virtual ~DetectorConstruction(); static DetectorConstruction* GetInstance(); virtual G4VPhysicalVolume* Construct(); G4LogicalVolume* GetSensitiveDetector(G4VPhysicalVolume* aVolume,G4int depth=0); void SetSourcePos(G4ThreeVector fSourcePos) {SourcePos = fSourcePos;}; void SetMaxStep(G4double fMaxStep) {MaxStep = fMaxStep;}; void SetPhysics(G4String fPhysics) {Physics = fPhysics;}; void SetSourceHolder(G4String fSourceHolder) {SourceHolder = fSourceHolder;}; void SetGasType(G4String fTargetType) {TargetType = fTargetType;}; G4String GetTargetType() {return TargetType;}; G4ThreeVector GetSourcePos(); G4String GetPhysics(); G4String GetSourceHolder(); private: void DumpGeometricalTree(G4VPhysicalVolume* aVolume,G4int depth=0); void InitializeDetectorParameters(); Materials* materials; DetectorConstructionMessenger* detectorConstructionMessenger; G4LogicalVolume* SensitiveLogicalVolume; G4ThreeVector SourcePos; G4double MaxStep; G4String Physics; G4String SourceHolder; G4String TargetType; Targetspddresda* ATargetspddresda; Clusterspddresda* AClusterspddresda; }; #endif