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