#ifndef BeamlineConstruction_H #define BeamlineConstruction_H 1 class G4LogicalVolume; class G4VPhysicalVolume; class G4Material; class G4VSolid; #include "sstream" #include "G4VUserDetectorConstruction.hh" #include "BeamlineConstructionMessenger.hh" #include "G4VSolid.hh" #include "G4Box.hh" #include "G4Tubs.hh" #include "G4Sphere.hh" #include "G4SubtractionSolid.hh" #include "G4UnionSolid.hh" #include "G4SDManager.hh" #include "G4Region.hh" #include "G4VisAttributes.hh" #include "G4RotationMatrix.hh" #include "BirminghamBeamline.hh" #include "IThembaBeamline.hh" #include "StripTrackerConstruction.hh" #include "RangeTelescopeConstruction.hh" #include "Phantom.hh" #include "DoubleDynamite.hh" class BeamlineConstruction : public G4VUserDetectorConstruction { public: BeamlineConstruction(); ~BeamlineConstruction(); G4VPhysicalVolume* Construct(); void ConstructSDandField(); void ConstructBeamline(G4String bName); void DefineMaterials(); void SetDefaultParameters(); void SetDefaultColours(); void UpdateGeometry(); bool isBirminghamBeamlineConstruced() { return bhamBeamlineConstructed;}; bool isiThembaBeamlineConstruced() { return iThembaBeamlineConstructed;}; private: BeamlineConstructionMessenger* beamlineConstructionMessenger; bool bhamBeamlineConstructed; bool iThembaBeamlineConstructed; bool constructbham; bool constructiThemba; G4VSolid* expHall_box; G4LogicalVolume* expHall_log; G4VPhysicalVolume* expHall_phys; G4VisAttributes* expHall_vis; G4Material* Air; BirminghamBeamline* bhamBeamline; IThembaBeamline* iThembaBeamline; StripTrackerConstruction* stripTrack; RangeTelescopeConstruction* rangeTel; Phantom* phantom; DoubleDynamite* doubleDynamite; }; #endif