00001 // 00002 // $Id: DetectorConstruction.hh 132 2008-07-03 13:34:12Z jacquem $ 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 00016 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 00017 00018 class DetectorConstruction : public G4VUserDetectorConstruction 00019 { 00020 public: 00021 00022 DetectorConstruction(); 00023 ~DetectorConstruction(); 00024 00025 public: 00026 00027 void SetWorldMaterial(G4String); 00028 void SetSpacecraftMaterial(G4String); 00029 void SetCabinMaterial(G4String); 00030 void SetFloorMaterial(G4String); 00031 void SetAstronautMaterial(G4String); 00032 00033 void SetWorldSizeXY(G4double val) {m_worldSizeXY = val;}; 00034 void SetWorldSizeZ(G4double val) {m_worldSizeZ = val;}; 00035 void SetSpacecraftRadius(G4double val) {m_spacecraftRadius = val;}; 00036 void SetSpacecraftLength(G4double val) {m_spacecraftLength = val;}; 00037 void SetSpacecraftThickness(G4double val) {m_spacecraftThickness = val;}; 00038 void SetCabinRadius(G4double val) {m_cabinRadius = val;}; 00039 void SetCabinLength(G4double val) {m_cabinLength = val;}; 00040 void SetFloorThickness(G4double val) {m_floorThickness = val;}; 00041 void SetFloorWidth(G4double val) {m_floorWidth = val;}; 00042 void SetFloorLength(G4double val) {m_floorLength = val;}; 00043 void SetFloorYcenter(G4double val) {m_floorYcenter = val;}; 00044 void SetAstronautHeight(G4double val) {m_astronautHeight = val;}; 00045 void SetAstronautTopWidth(G4double val) {m_astronautTopWidth = val;}; 00046 void SetAstronautBottomWidth(G4double val){m_astronautBottomWidth = val;}; 00047 void SetAstronautPosition(G4double val) {m_astronautPosition = val;}; 00048 00049 G4VPhysicalVolume* Construct(); 00050 void UpdateGeometry(); 00051 00052 public: 00053 00054 G4Material* GetWorldMaterial() {return m_worldMaterial;}; 00055 G4Material* GetSpacecraftMaterial() {return m_spacecraftMaterial;}; 00056 G4Material* GetCabinMaterial() {return m_cabinMaterial;}; 00057 G4Material* GetFloorMaterial() {return m_floorMaterial;}; 00058 G4Material* GetAstronautMaterial() {return m_astronautMaterial;}; 00059 00060 G4double GetWorldSizeXY() {return m_worldSizeXY;}; 00061 G4double GetWorldSizeZ() {return m_worldSizeZ;}; 00062 G4double GetSpacecraftRadius() {return m_spacecraftRadius;}; 00063 G4double GetSpacecraftLength() {return m_spacecraftLength;}; 00064 G4double GetSpacecraftThickness() {return m_spacecraftThickness;}; 00065 G4double GetCabinRadius() {return m_cabinRadius;}; 00066 G4double GetCabinLength() {return m_cabinLength;}; 00067 G4double GetFloorThickness() {return m_floorThickness;}; 00068 G4double GetFloorWidth() {return m_floorWidth;}; 00069 G4double GetFloorLength() {return m_floorLength;}; 00070 G4double GetFloorYcenter() {return m_floorYcenter;}; 00071 G4double GetAstronautHeight() {return m_astronautHeight;}; 00072 G4double GetAstronautTopWidth() {return m_astronautTopWidth;}; 00073 G4double GetAstronautBottomWidth(){return m_astronautBottomWidth;}; 00074 G4double GetAstronautPosition() {return m_astronautPosition;}; 00075 00076 void PrintParameters(); 00077 00078 private: 00079 00080 void DefineMaterials(); 00081 G4VPhysicalVolume* ConstructVolumes(); 00082 00083 private: 00084 00085 G4Material* m_worldMaterial; 00086 G4Material* m_spacecraftMaterial; 00087 G4Material* m_cabinMaterial; 00088 G4Material* m_floorMaterial; 00089 G4Material* m_astronautMaterial; 00090 00091 G4VPhysicalVolume* m_physiWorld; 00092 00093 G4double m_worldSizeXY; 00094 G4double m_worldSizeZ; 00095 00096 G4double m_spacecraftRadius; 00097 G4double m_spacecraftLength; 00098 G4double m_spacecraftThickness; 00099 00100 G4double m_cabinRadius; 00101 G4double m_cabinLength; 00102 00103 G4double m_floorThickness; 00104 G4double m_floorWidth; 00105 G4double m_floorLength; 00106 G4double m_floorYcenter; 00107 00108 G4double m_astronautHeight; 00109 G4double m_astronautTopWidth; 00110 G4double m_astronautBottomWidth; 00111 G4double m_astronautPosition; 00112 00113 }; 00114 00115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 00116 00117 #endif