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