File indexing completed on 2026-04-01 07:51:30
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #include "RE04ParallelWorldConstruction.hh"
0030
0031 #include "RE04ParallelWorldParam.hh"
0032
0033 #include "G4Box.hh"
0034 #include "G4LogicalVolume.hh"
0035 #include "G4Material.hh"
0036 #include "G4PVParameterised.hh"
0037 #include "G4PVPlacement.hh"
0038 #include "G4SystemOfUnits.hh"
0039
0040
0041 RE04ParallelWorldConstruction ::RE04ParallelWorldConstruction(G4String& parallelWorldName)
0042 : G4VUserParallelWorld(parallelWorldName), fConstructed(false)
0043 {
0044 ;
0045 }
0046
0047
0048 RE04ParallelWorldConstruction::~RE04ParallelWorldConstruction()
0049 {
0050 ;
0051 }
0052
0053
0054 void RE04ParallelWorldConstruction::Construct()
0055 {
0056 if (fConstructed) return;
0057 fConstructed = true;
0058
0059
0060
0061
0062 G4VPhysicalVolume* ghostWorld = GetWorld();
0063 G4LogicalVolume* worldLogical = ghostWorld->GetLogicalVolume();
0064
0065
0066
0067
0068 G4Material* water = G4Material::GetMaterial("G4_WATER");
0069
0070
0071
0072
0073 G4VSolid* paraBox = new G4Box("paraBox", 5.0 * cm, 30.0 * cm, 5.0 * cm);
0074 G4LogicalVolume* paraBoxLogical = new G4LogicalVolume(paraBox, water, "paraBox");
0075 new G4PVPlacement(0, G4ThreeVector(-25.0 * cm, 0., 0.), paraBoxLogical, "paraBox", worldLogical,
0076 false, 0);
0077
0078
0079
0080
0081 G4VSolid* paraMom = new G4Box("paraMom", 20.0 * cm, 40.0 * cm, 20.0 * cm);
0082 G4LogicalVolume* paraMomLogical = new G4LogicalVolume(paraMom, 0, "paraMom");
0083 new G4PVPlacement(0, G4ThreeVector(10.0 * cm, 0., 0.), paraMomLogical, "paraMom", worldLogical,
0084 false, 0);
0085
0086
0087
0088
0089 G4VSolid* paraPara = new G4Box("paraPara", 5.0 * cm, 15.0 * cm, 10.0 * cm);
0090 G4LogicalVolume* paraParaLogical = new G4LogicalVolume(paraPara, water, "paraPara");
0091 RE04ParallelWorldParam* param = new RE04ParallelWorldParam();
0092 new G4PVParameterised("paraPara", paraParaLogical, paraMomLogical, kXAxis, 2, param);
0093 }