Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 /// \file runAndEvent/RE04/src/RE04ParallelWor 26 /// \file runAndEvent/RE04/src/RE04ParallelWorldConstruction.cc 27 /// \brief Implementation of the RE04ParallelW 27 /// \brief Implementation of the RE04ParallelWorldConstruction class 28 // 28 // >> 29 // $Id: $ 29 // 30 // 30 #include "RE04ParallelWorldConstruction.hh" 31 #include "RE04ParallelWorldConstruction.hh" 31 << 32 #include "RE04ParallelWorldParam.hh" 32 #include "RE04ParallelWorldParam.hh" 33 33 34 #include "G4Box.hh" 34 #include "G4Box.hh" 35 #include "G4LogicalVolume.hh" 35 #include "G4LogicalVolume.hh" 36 #include "G4Material.hh" << 37 #include "G4PVParameterised.hh" << 38 #include "G4PVPlacement.hh" 36 #include "G4PVPlacement.hh" 39 #include "G4SystemOfUnits.hh" << 37 #include "G4PVParameterised.hh" >> 38 #include "G4Material.hh" >> 39 #include "G4SystemOfUnits.hh" 40 40 41 //....oooOO0OOooo........oooOO0OOooo........oo 41 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 42 RE04ParallelWorldConstruction ::RE04ParallelWo << 42 RE04ParallelWorldConstruction 43 : G4VUserParallelWorld(parallelWorldName), f << 43 ::RE04ParallelWorldConstruction(G4String& parallelWorldName) 44 { << 44 :G4VUserParallelWorld(parallelWorldName),fConstructed(false) 45 ; << 45 {;} 46 } << 47 46 48 //....oooOO0OOooo........oooOO0OOooo........oo 47 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 49 RE04ParallelWorldConstruction::~RE04ParallelWo 48 RE04ParallelWorldConstruction::~RE04ParallelWorldConstruction() 50 { << 49 {;} 51 ; << 52 } << 53 50 54 //....oooOO0OOooo........oooOO0OOooo........oo 51 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 55 void RE04ParallelWorldConstruction::Construct( 52 void RE04ParallelWorldConstruction::Construct() 56 { 53 { 57 if (fConstructed) return; << 54 if(fConstructed) return; 58 fConstructed = true; 55 fConstructed = true; 59 56 60 // 57 // 61 // World 58 // World 62 // 59 // 63 G4VPhysicalVolume* ghostWorld = GetWorld(); 60 G4VPhysicalVolume* ghostWorld = GetWorld(); 64 G4LogicalVolume* worldLogical = ghostWorld-> 61 G4LogicalVolume* worldLogical = ghostWorld->GetLogicalVolume(); 65 62 66 // 63 // 67 // material defined in the mass world 64 // material defined in the mass world 68 // 65 // 69 G4Material* water = G4Material::GetMaterial( 66 G4Material* water = G4Material::GetMaterial("G4_WATER"); 70 67 71 // 68 // 72 // parallel world placement box 69 // parallel world placement box 73 // 70 // 74 G4VSolid* paraBox = new G4Box("paraBox", 5.0 << 71 G4VSolid* paraBox = new G4Box("paraBox",5.0*cm,30.0*cm,5.0*cm); 75 G4LogicalVolume* paraBoxLogical = new G4Logi << 72 G4LogicalVolume* paraBoxLogical = new G4LogicalVolume(paraBox,water, 76 new G4PVPlacement(0, G4ThreeVector(-25.0 * c << 73 "paraBox"); 77 false, 0); << 74 new G4PVPlacement(0,G4ThreeVector(-25.0*cm,0.,0.),paraBoxLogical, >> 75 "paraBox",worldLogical,false,0); 78 76 79 // 77 // 80 // mother of parallel world parameterized vo 78 // mother of parallel world parameterized volumes 81 // 79 // 82 G4VSolid* paraMom = new G4Box("paraMom", 20. << 80 G4VSolid* paraMom = new G4Box("paraMom",20.0*cm,40.0*cm,20.0*cm); 83 G4LogicalVolume* paraMomLogical = new G4Logi << 81 G4LogicalVolume* paraMomLogical = new G4LogicalVolume(paraMom,0,"paraMom"); 84 new G4PVPlacement(0, G4ThreeVector(10.0 * cm << 82 new G4PVPlacement(0,G4ThreeVector(10.0*cm,0.,0.),paraMomLogical,"paraMom", 85 false, 0); << 83 worldLogical,false,0); 86 84 87 // 85 // 88 // parallel world parameterized volumes 86 // parallel world parameterized volumes 89 // 87 // 90 G4VSolid* paraPara = new G4Box("paraPara", 5 << 88 G4VSolid* paraPara = new G4Box("paraPara",5.0*cm,15.0*cm,10.0*cm); 91 G4LogicalVolume* paraParaLogical = new G4Log << 89 G4LogicalVolume* paraParaLogical = new G4LogicalVolume(paraPara,water, >> 90 "paraPara"); 92 RE04ParallelWorldParam* param = new RE04Para 91 RE04ParallelWorldParam* param = new RE04ParallelWorldParam(); 93 new G4PVParameterised("paraPara", paraParaLo << 92 new G4PVParameterised("paraPara",paraParaLogical,paraMomLogical, >> 93 kXAxis, 2, param); >> 94 94 } 95 } 95 96