#include <DetectorConstruction.hh>
Definition at line 18 of file DetectorConstruction.hh.
DetectorConstruction::DetectorConstruction | ( | ) |
Definition at line 27 of file DetectorConstruction.cc.
00028 { 00029 DefineMaterials(); 00030 00031 //define geometrical parameters 00032 // 00033 m_cabinRadius = 50*cm; 00034 m_cabinLength = 80*cm; 00035 m_spacecraftThickness = 2*cm; 00036 00037 m_floorThickness = 2*cm; 00038 00039 m_astronautHeight = 50*cm; 00040 m_astronautTopWidth = 40*cm; 00041 m_astronautBottomWidth = 60*cm; 00042 }
DetectorConstruction::~DetectorConstruction | ( | ) |
void DetectorConstruction::SetWorldMaterial | ( | G4String | materialChoice | ) |
Definition at line 320 of file DetectorConstruction.cc.
00321 { 00322 // search the material by its name 00323 G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice); 00324 if (pttoMaterial) m_worldMaterial = pttoMaterial; 00325 }
void DetectorConstruction::SetSpacecraftMaterial | ( | G4String | materialChoice | ) |
Definition at line 329 of file DetectorConstruction.cc.
00330 { 00331 // search the material by its name 00332 G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice); 00333 if (pttoMaterial) m_spacecraftMaterial = pttoMaterial; 00334 }
void DetectorConstruction::SetCabinMaterial | ( | G4String | materialChoice | ) |
Definition at line 338 of file DetectorConstruction.cc.
00339 { 00340 // search the material by its name 00341 G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice); 00342 if (pttoMaterial) m_cabinMaterial = pttoMaterial; 00343 }
void DetectorConstruction::SetFloorMaterial | ( | G4String | materialChoice | ) |
Definition at line 347 of file DetectorConstruction.cc.
00348 { 00349 // search the material by its name 00350 G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice); 00351 if (pttoMaterial) m_floorMaterial = pttoMaterial; 00352 }
void DetectorConstruction::SetAstronautMaterial | ( | G4String | materialChoice | ) |
Definition at line 356 of file DetectorConstruction.cc.
00357 { 00358 // search the material by its name 00359 G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice); 00360 if (pttoMaterial) m_astronautMaterial = pttoMaterial; 00361 }
void DetectorConstruction::SetWorldSizeXY | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetWorldSizeZ | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetSpacecraftRadius | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetSpacecraftLength | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetSpacecraftThickness | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetCabinRadius | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetCabinLength | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetFloorThickness | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetFloorWidth | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetFloorLength | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetFloorYcenter | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetAstronautHeight | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetAstronautTopWidth | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetAstronautBottomWidth | ( | G4double | val | ) | [inline] |
void DetectorConstruction::SetAstronautPosition | ( | G4double | val | ) | [inline] |
G4VPhysicalVolume * DetectorConstruction::Construct | ( | ) |
Definition at line 51 of file DetectorConstruction.cc.
00052 { 00053 return ConstructVolumes(); 00054 }
void DetectorConstruction::UpdateGeometry | ( | ) |
Definition at line 367 of file DetectorConstruction.cc.
00368 { 00369 G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes()); 00370 }
G4Material* DetectorConstruction::GetWorldMaterial | ( | ) | [inline] |
G4Material* DetectorConstruction::GetSpacecraftMaterial | ( | ) | [inline] |
G4Material* DetectorConstruction::GetCabinMaterial | ( | ) | [inline] |
G4Material* DetectorConstruction::GetFloorMaterial | ( | ) | [inline] |
G4Material* DetectorConstruction::GetAstronautMaterial | ( | ) | [inline] |
G4double DetectorConstruction::GetWorldSizeXY | ( | ) | [inline] |
Definition at line 61 of file DetectorConstruction.hh.
Referenced by PrimaryGeneratorAction::GeneratePrimaries().
00061 {return m_worldSizeXY;};
G4double DetectorConstruction::GetWorldSizeZ | ( | ) | [inline] |
Definition at line 62 of file DetectorConstruction.hh.
Referenced by PrimaryGeneratorAction::GeneratePrimaries().
00062 {return m_worldSizeZ;};
G4double DetectorConstruction::GetSpacecraftRadius | ( | ) | [inline] |
G4double DetectorConstruction::GetSpacecraftLength | ( | ) | [inline] |
G4double DetectorConstruction::GetSpacecraftThickness | ( | ) | [inline] |
G4double DetectorConstruction::GetCabinRadius | ( | ) | [inline] |
G4double DetectorConstruction::GetCabinLength | ( | ) | [inline] |
G4double DetectorConstruction::GetFloorThickness | ( | ) | [inline] |
G4double DetectorConstruction::GetFloorWidth | ( | ) | [inline] |
G4double DetectorConstruction::GetFloorLength | ( | ) | [inline] |
G4double DetectorConstruction::GetFloorYcenter | ( | ) | [inline] |
G4double DetectorConstruction::GetAstronautHeight | ( | ) | [inline] |
G4double DetectorConstruction::GetAstronautTopWidth | ( | ) | [inline] |
G4double DetectorConstruction::GetAstronautBottomWidth | ( | ) | [inline] |
G4double DetectorConstruction::GetAstronautPosition | ( | ) | [inline] |
void DetectorConstruction::PrintParameters | ( | ) |
Definition at line 288 of file DetectorConstruction.cc.
Referenced by ConstructVolumes().
00289 { 00290 G4cout << "\n---------------------------------------------------------\n"; 00291 G4cout 00292 << "---> World : (" << m_worldSizeXY/m << " X " << m_worldSizeXY/m << " X " 00293 << m_worldSizeZ/m << ") m of " 00294 << m_worldMaterial->GetName() << G4endl; 00295 G4cout 00296 << "---> Spacecraft : radius = " << G4BestUnit(m_spacecraftRadius,"Length") 00297 << "\t length = " << G4BestUnit(m_spacecraftLength,"Length") 00298 << "\t thickness = " << G4BestUnit(m_spacecraftThickness,"Length") 00299 << "\t material : " << m_spacecraftMaterial->GetName() << G4endl; 00300 G4cout 00301 << "---> Cabin : radius = " << G4BestUnit(m_cabinRadius,"Length") 00302 << "\t length = " << G4BestUnit(m_cabinLength,"Length") 00303 << "\t material : " << m_cabinMaterial->GetName() << G4endl; 00304 G4cout 00305 << "---> Floor : thickness = " << G4BestUnit(m_floorThickness,"Length") 00306 << "\t width = " << G4BestUnit(m_floorWidth,"Length") 00307 << "\t length = " << G4BestUnit(m_floorLength,"Length") 00308 << "\t material : " << m_floorMaterial->GetName() << G4endl; 00309 G4cout 00310 << "---> Astronaut : height = " << G4BestUnit(m_astronautHeight,"Length") 00311 << "\t bottom width = " << G4BestUnit(m_astronautBottomWidth,"Length") 00312 << "\t top width = " << G4BestUnit(m_astronautTopWidth,"Length") 00313 << "\t material : " << m_astronautMaterial->GetName() << G4endl; 00314 G4cout << "\n---------------------------------------------------------\n"; 00315 G4cout << G4endl; 00316 }
void DetectorConstruction::DefineMaterials | ( | ) | [private] |
Definition at line 58 of file DetectorConstruction.cc.
Referenced by DetectorConstruction().
00059 { 00060 // 00061 // define simple materials 00062 // 00063 G4double Z,A,density; 00064 00065 G4Material* Al = 00066 new G4Material("Aluminium", Z=13., A=26.98*g/mole, density=2.700*g/cm3); 00067 00068 // 00069 // build compounds from Elements 00070 // 00071 G4Element* H = new G4Element("Hydrogen" ,"H" , Z=1., A= 1.01*g/mole); 00072 G4Element* N = new G4Element("Nitrogen" ,"N" , Z=7., A=14.01*g/mole); 00073 G4Element* O = new G4Element("Oxygen" ,"O" , Z=8., A=16.00*g/mole); 00074 00075 G4int ncomponents, natoms; 00076 G4double fractionmass; 00077 00078 G4Material* Air = 00079 new G4Material("Air", density= 1.290*mg/cm3, ncomponents=2); 00080 Air->AddElement(N, fractionmass=70.*perCent); 00081 Air->AddElement(O, fractionmass=30.*perCent); 00082 00083 G4Material* H2O = 00084 new G4Material("Water", density= 1.000*g/cm3, ncomponents=2); 00085 H2O->AddElement(H, natoms=2); 00086 H2O->AddElement(O, natoms=1); 00087 00088 // Vacuum standard definition... 00089 // 00090 G4Material* Vacuum = 00091 new G4Material("Galactic", Z=1., A=1.01*g/mole, density= 1.e-10*g/cm3, 00092 kStateGas, 2.73*kelvin, 3.e-18*pascal); 00093 00094 //associate materials 00095 // 00096 m_worldMaterial = Vacuum; 00097 m_spacecraftMaterial = m_floorMaterial = Al; 00098 m_cabinMaterial = Air; 00099 m_astronautMaterial = H2O; 00100 00101 // Print 00102 // 00103 G4cout << *(G4Material::GetMaterialTable()) << G4endl; 00104 }
G4VPhysicalVolume * DetectorConstruction::ConstructVolumes | ( | ) | [private] |
Definition at line 108 of file DetectorConstruction.cc.
Referenced by Construct(), and UpdateGeometry().
00109 { 00110 // Cleanup old geometry 00111 G4GeometryManager::GetInstance()->OpenGeometry(); 00112 G4PhysicalVolumeStore::GetInstance()->Clean(); 00113 G4LogicalVolumeStore::GetInstance()->Clean(); 00114 G4SolidStore::GetInstance()->Clean(); 00115 00116 //define geometrical parameters 00117 // 00118 m_spacecraftRadius = m_cabinRadius + m_spacecraftThickness; 00119 m_spacecraftLength = m_cabinLength + 2*m_spacecraftThickness; 00120 00121 m_floorYcenter = - 0.5*m_cabinRadius; 00122 G4double floorYtop = m_floorYcenter + 0.5*m_floorThickness; 00123 G4double floorYbottom = m_floorYcenter - 0.5*m_floorThickness; 00124 m_floorWidth = 00125 2*std::sqrt(m_cabinRadius*m_cabinRadius - floorYbottom*floorYbottom); 00126 m_floorLength = m_cabinLength; 00127 00128 m_worldSizeXY = 2.2*m_spacecraftRadius; 00129 m_worldSizeZ = 1.1*m_spacecraftLength; 00130 00131 m_astronautPosition = floorYtop + 0.5*m_astronautHeight; 00132 00133 00134 // World volume 00135 // 00136 00137 G4Box* 00138 solidWorld = new G4Box("World", //its name 00139 m_worldSizeXY/2,m_worldSizeXY/2,m_worldSizeZ/2); //its size 00140 00141 G4LogicalVolume* 00142 logicWorld = new G4LogicalVolume(solidWorld, //its solid 00143 m_worldMaterial, //its material 00144 "World"); //its name 00145 00146 m_physiWorld = new G4PVPlacement(0, //no rotation 00147 G4ThreeVector(), //at (0,0,0) 00148 logicWorld, //its logical volume 00149 "World", //its name 00150 0, //its mother volume 00151 false, //no boolean operation 00152 0); //copy number 00153 00154 // SpaceCraft volume 00155 // 00156 G4Tubs* 00157 solidSpacecraft = new G4Tubs("Spacecraft", //name 00158 0*cm, m_spacecraftRadius, //r1, r2 00159 0.5*m_spacecraftLength, //half-length 00160 0., twopi); //teta1, teta2 00161 00162 G4LogicalVolume* 00163 logicSpacecraft = new G4LogicalVolume(solidSpacecraft, //solid 00164 m_spacecraftMaterial, //material 00165 "Spacecraft"); //name 00166 00167 new G4PVPlacement(0, //no rotation 00168 G4ThreeVector(0,0,0), //position 00169 logicSpacecraft, //logicalVolume 00170 "Spacecraft", //name 00171 logicWorld, //mother 00172 false, //no boolean 00173 0); //copy nb 00174 00175 // Cabin 00176 // 00177 G4Tubs* 00178 solidCabin = new G4Tubs("Cabin", //name 00179 0*cm, m_cabinRadius, //r1, r2 00180 0.5*m_cabinLength, //half-length 00181 0., 360*deg); //teta1, teta2 00182 00183 G4LogicalVolume* 00184 logicCabin = new G4LogicalVolume(solidCabin, //solid 00185 m_cabinMaterial, //material 00186 "Cabin"); //name 00187 00188 new G4PVPlacement(0, //no rotation 00189 G4ThreeVector(0,0,0), //position 00190 logicCabin, //logicalVolume 00191 "Cabin", //name 00192 logicSpacecraft, //mother 00193 false, //no boolean 00194 0); //copy nb 00195 00196 00197 // Floor 00198 // 00199 G4Box* 00200 solidFloor = new G4Box("Floor", //name 00201 m_floorWidth/2,m_floorLength/2,m_floorThickness/2); //size 00202 00203 G4LogicalVolume* 00204 logicFloor = new G4LogicalVolume(solidFloor, m_floorMaterial, "Floor"); 00205 00206 //rotation matrix to place the floor within cabin 00207 G4RotationMatrix* rotm1 = new G4RotationMatrix(); 00208 rotm1->rotateX(90*deg); 00209 00210 new G4PVPlacement(rotm1, //rotation 00211 G4ThreeVector(0,m_floorYcenter,0), //position 00212 logicFloor, //logicalVolume 00213 "Floor", //name 00214 logicCabin, //mother 00215 false, //no boolean 00216 0); //copy nb 00217 00218 // Astronaut 00219 // 00220 G4Trd* 00221 solidAstronaut = new G4Trd("Astronaut", //name 00222 0.5 * m_astronautBottomWidth, //dx1 00223 0.5 * m_astronautTopWidth, //dx2 00224 0.5 * m_astronautBottomWidth, //dy1 00225 0.5 * m_astronautTopWidth, //dy2 00226 0.5 * m_astronautHeight); //dz 00227 00228 00229 G4LogicalVolume* 00230 logicAstronaut = new G4LogicalVolume(solidAstronaut, //solid 00231 m_astronautMaterial, //material 00232 "Astronaut"); //name 00233 00234 //rotation matrix to place astronaut within cabin 00235 G4RotationMatrix* rotm2 = new G4RotationMatrix(); 00236 rotm2->rotateX(90*deg); 00237 00238 //translation vector to place astronaut within cabin 00239 G4ThreeVector position = G4ThreeVector(0.,m_astronautPosition,0.); 00240 00241 new G4PVPlacement(rotm2, //no rotation 00242 position, //position 00243 logicAstronaut, //logicalVolume 00244 "Astronaut", //name 00245 logicCabin, //mother 00246 false, //no boolean 00247 0); //copy nb 00248 //colour attributes 00249 // 00250 00251 G4VisAttributes* colourWhite= new G4VisAttributes(G4Colour(1.,1.,1.)); 00252 colourWhite->SetVisibility(true); 00253 colourWhite->SetForceSolid(false); 00254 00255 G4VisAttributes* colourGrey= new G4VisAttributes(G4Colour(0.5,0.5,0.5)); 00256 colourGrey->SetVisibility(true); 00257 colourGrey->SetForceSolid(false); 00258 00259 G4VisAttributes* colourCyan= new G4VisAttributes(G4Colour(0.,1.,1.)); 00260 colourCyan->SetVisibility(true); 00261 colourCyan->SetForceSolid(false); 00262 00263 G4VisAttributes* colourMagenta= new G4VisAttributes(G4Colour(1.,0.,1.)); 00264 colourMagenta->SetVisibility(true); 00265 colourMagenta->SetForceSolid(true); 00266 00267 G4VisAttributes* colourBlue= new G4VisAttributes(G4Colour(0.,0.,1.)); 00268 colourBlue->SetVisibility(true); 00269 colourBlue->SetForceSolid(false); 00270 00271 logicWorld->SetVisAttributes(colourGrey); 00272 logicSpacecraft->SetVisAttributes(colourCyan); 00273 logicCabin->SetVisAttributes(colourCyan); 00274 logicFloor->SetVisAttributes(colourWhite); 00275 logicAstronaut->SetVisAttributes(colourBlue); 00276 00277 //print parameters 00278 // 00279 PrintParameters(); 00280 00281 // always return Physical World 00282 // 00283 return m_physiWorld; 00284 }
G4Material* DetectorConstruction::m_worldMaterial [private] |
Definition at line 86 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DefineMaterials(), GetWorldMaterial(), PrintParameters(), and SetWorldMaterial().
G4Material* DetectorConstruction::m_spacecraftMaterial [private] |
Definition at line 87 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DefineMaterials(), GetSpacecraftMaterial(), PrintParameters(), and SetSpacecraftMaterial().
G4Material* DetectorConstruction::m_cabinMaterial [private] |
Definition at line 88 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DefineMaterials(), GetCabinMaterial(), PrintParameters(), and SetCabinMaterial().
G4Material* DetectorConstruction::m_floorMaterial [private] |
Definition at line 89 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DefineMaterials(), GetFloorMaterial(), PrintParameters(), and SetFloorMaterial().
G4Material* DetectorConstruction::m_astronautMaterial [private] |
Definition at line 90 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DefineMaterials(), GetAstronautMaterial(), PrintParameters(), and SetAstronautMaterial().
G4VPhysicalVolume* DetectorConstruction::m_physiWorld [private] |
G4double DetectorConstruction::m_worldSizeXY [private] |
Definition at line 94 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), GetWorldSizeXY(), PrintParameters(), and SetWorldSizeXY().
G4double DetectorConstruction::m_worldSizeZ [private] |
Definition at line 95 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), GetWorldSizeZ(), PrintParameters(), and SetWorldSizeZ().
G4double DetectorConstruction::m_spacecraftRadius [private] |
Definition at line 97 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), GetSpacecraftRadius(), PrintParameters(), and SetSpacecraftRadius().
G4double DetectorConstruction::m_spacecraftLength [private] |
Definition at line 98 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), GetSpacecraftLength(), PrintParameters(), and SetSpacecraftLength().
G4double DetectorConstruction::m_spacecraftThickness [private] |
Definition at line 99 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DetectorConstruction(), GetSpacecraftThickness(), PrintParameters(), and SetSpacecraftThickness().
G4double DetectorConstruction::m_cabinRadius [private] |
Definition at line 101 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DetectorConstruction(), GetCabinRadius(), PrintParameters(), and SetCabinRadius().
G4double DetectorConstruction::m_cabinLength [private] |
Definition at line 102 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DetectorConstruction(), GetCabinLength(), PrintParameters(), and SetCabinLength().
G4double DetectorConstruction::m_floorThickness [private] |
Definition at line 104 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DetectorConstruction(), GetFloorThickness(), PrintParameters(), and SetFloorThickness().
G4double DetectorConstruction::m_floorWidth [private] |
Definition at line 105 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), GetFloorWidth(), PrintParameters(), and SetFloorWidth().
G4double DetectorConstruction::m_floorLength [private] |
Definition at line 106 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), GetFloorLength(), PrintParameters(), and SetFloorLength().
G4double DetectorConstruction::m_floorYcenter [private] |
Definition at line 107 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), GetFloorYcenter(), and SetFloorYcenter().
G4double DetectorConstruction::m_astronautHeight [private] |
Definition at line 109 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DetectorConstruction(), GetAstronautHeight(), PrintParameters(), and SetAstronautHeight().
G4double DetectorConstruction::m_astronautTopWidth [private] |
Definition at line 110 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DetectorConstruction(), GetAstronautTopWidth(), PrintParameters(), and SetAstronautTopWidth().
G4double DetectorConstruction::m_astronautBottomWidth [private] |
Definition at line 111 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), DetectorConstruction(), GetAstronautBottomWidth(), PrintParameters(), and SetAstronautBottomWidth().
G4double DetectorConstruction::m_astronautPosition [private] |
Definition at line 112 of file DetectorConstruction.hh.
Referenced by ConstructVolumes(), GetAstronautPosition(), and SetAstronautPosition().