00001 // 00002 // $Id: DetectorConstruction.hh 170 2008-09-17 09:20:45Z maire $ 00003 // 00004 // 00005 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 00006 00007 #ifndef DetectorConstruction_h 00008 #define DetectorConstruction_h 1 00009 00010 #include "G4VUserDetectorConstruction.hh" 00011 #include "globals.hh" 00012 00013 class G4VPhysicalVolume; 00014 class G4Material; 00015 class DetectorMessenger; 00016 00017 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 00018 00019 class DetectorConstruction : public G4VUserDetectorConstruction 00020 { 00021 public: 00022 00023 DetectorConstruction(); 00024 ~DetectorConstruction(); 00025 00026 public: 00027 00028 void SetWorldMaterial(G4String); 00029 void SetSpacecraftMaterial(G4String); 00030 void SetCabinMaterial(G4String); 00031 void SetFloorMaterial(G4String); 00032 void SetAstronautMaterial(G4String); 00033 00034 void SetWorldSizeXY(G4double val) {m_worldSizeXY = val;}; 00035 void SetWorldSizeZ(G4double val) {m_worldSizeZ = val;}; 00036 void SetSpacecraftRadius(G4double val) {m_spacecraftRadius = val;}; 00037 void SetSpacecraftLength(G4double val) {m_spacecraftLength = val;}; 00038 void SetSpacecraftThickness(G4double val) {m_spacecraftThickness = val;}; 00039 void SetCabinRadius(G4double val) {m_cabinRadius = val;}; 00040 void SetCabinLength(G4double val) {m_cabinLength = val;}; 00041 void SetFloorThickness(G4double val) {m_floorThickness = val;}; 00042 void SetFloorWidth(G4double val) {m_floorWidth = val;}; 00043 void SetFloorLength(G4double val) {m_floorLength = val;}; 00044 void SetFloorYcenter(G4double val) {m_floorYcenter = val;}; 00045 void SetAstronautHeight(G4double val) {m_astronautHeight = val;}; 00046 void SetAstronautTopWidth(G4double val) {m_astronautTopWidth = val;}; 00047 void SetAstronautBottomWidth(G4double val){m_astronautBottomWidth = val;}; 00048 void SetAstronautPosition(G4double val) {m_astronautPosition = val;}; 00049 00050 G4VPhysicalVolume* Construct(); 00051 void UpdateGeometry(); 00052 00053 public: 00054 00055 G4VPhysicalVolume* GetWorld() {return m_physiWorld;}; 00056 G4VPhysicalVolume* GetSpacecraft() {return m_physiSpacecraft;}; 00057 G4VPhysicalVolume* GetCabin() {return m_physiCabin;}; 00058 G4VPhysicalVolume* GetFloor() {return m_physiFloor;}; 00059 G4VPhysicalVolume* GetAstronaut() {return m_physiAstronaut;}; 00060 00061 G4Material* GetWorldMaterial() {return m_worldMaterial;}; 00062 G4Material* GetSpacecraftMaterial() {return m_spacecraftMaterial;}; 00063 G4Material* GetCabinMaterial() {return m_cabinMaterial;}; 00064 G4Material* GetFloorMaterial() {return m_floorMaterial;}; 00065 G4Material* GetAstronautMaterial() {return m_astronautMaterial;}; 00066 00067 G4double GetWorldSizeXY() {return m_worldSizeXY;}; 00068 G4double GetWorldSizeZ() {return m_worldSizeZ;}; 00069 G4double GetSpacecraftRadius() {return m_spacecraftRadius;}; 00070 G4double GetSpacecraftLength() {return m_spacecraftLength;}; 00071 G4double GetSpacecraftThickness() {return m_spacecraftThickness;}; 00072 G4double GetCabinRadius() {return m_cabinRadius;}; 00073 G4double GetCabinLength() {return m_cabinLength;}; 00074 G4double GetFloorThickness() {return m_floorThickness;}; 00075 G4double GetFloorWidth() {return m_floorWidth;}; 00076 G4double GetFloorLength() {return m_floorLength;}; 00077 G4double GetFloorYcenter() {return m_floorYcenter;}; 00078 G4double GetAstronautHeight() {return m_astronautHeight;}; 00079 G4double GetAstronautTopWidth() {return m_astronautTopWidth;}; 00080 G4double GetAstronautBottomWidth(){return m_astronautBottomWidth;}; 00081 G4double GetAstronautPosition() {return m_astronautPosition;}; 00082 00083 void PrintParameters(); 00084 00085 private: 00086 00087 void DefineMaterials(); 00088 G4VPhysicalVolume* ConstructVolumes(); 00089 00090 private: 00091 00092 G4VPhysicalVolume* m_physiWorld; 00093 G4VPhysicalVolume* m_physiSpacecraft; 00094 G4VPhysicalVolume* m_physiCabin; 00095 G4VPhysicalVolume* m_physiFloor; 00096 G4VPhysicalVolume* m_physiAstronaut; 00097 00098 G4Material* m_worldMaterial; 00099 G4Material* m_spacecraftMaterial; 00100 G4Material* m_cabinMaterial; 00101 G4Material* m_floorMaterial; 00102 G4Material* m_astronautMaterial; 00103 00104 G4double m_worldSizeXY; 00105 G4double m_worldSizeZ; 00106 00107 G4double m_spacecraftRadius; 00108 G4double m_spacecraftLength; 00109 G4double m_spacecraftThickness; 00110 00111 G4double m_cabinRadius; 00112 G4double m_cabinLength; 00113 00114 G4double m_floorThickness; 00115 G4double m_floorWidth; 00116 G4double m_floorLength; 00117 G4double m_floorYcenter; 00118 00119 G4double m_astronautHeight; 00120 G4double m_astronautTopWidth; 00121 G4double m_astronautBottomWidth; 00122 G4double m_astronautPosition; 00123 00124 DetectorMessenger* m_detectorMessenger; 00125 }; 00126 00127 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 00128 00129 #endif