49{
50
52
53
54
55 G4double env_sizeXY = 10*m, env_sizeZ = 10*m;
56 G4Material* env_mat = nist->FindOrBuildMaterial(
"G4_Galactic");
57
58
59
60 G4bool checkOverlaps = true;
61
62
63
64
65 G4double world_sizeXY = 1.2*env_sizeXY;
66 G4double world_sizeZ = 1.2*env_sizeZ;
67 G4Material* world_mat = nist->FindOrBuildMaterial(
"G4_AIR");
68
69 auto solidWorld =
new G4Box(
"World",
70 0.5 * world_sizeXY, 0.5 * world_sizeXY, 0.5 * world_sizeZ);
71
73 world_mat,
74 "World");
75
77 G4ThreeVector(),
78 logicWorld,
79 "World",
80 nullptr,
81 false,
82 0,
83 checkOverlaps);
84
85
86
87
88 auto solidEnv =
new G4Box(
"Envelope",
89 0.5 * env_sizeXY, 0.5 * env_sizeXY, 0.5 * env_sizeZ);
90
92 env_mat,
93 "Envelope");
94
96 G4ThreeVector(),
97 logicEnv,
98 "Envelope",
99 logicWorld,
100 false,
101 0,
102 checkOverlaps);
103
104
105 auto dumpPos = G4ThreeVector(0, 0, 0);
106 auto dumpMat = nist->FindOrBuildMaterial("G4_CONCRETE");
107 auto dumpShape1 =
new G4Box(
"dumpShape1", 1*m, 1*m, 0.5*m);
108
109 auto dumpCutoutPos = G4ThreeVector(0, 0, -5.1*cm);
110 auto dumpCutoutShape =
new G4Tubs(
"DumpCutoutShape", 0*cm, 10*cm, 90/2*cm, 0, 2*M_PI);
111
113 dumpCutoutPos);
114
116 dumpMat,
117 "dump");
118
120 dumpPos,
121 dumpLogical,
122 "dump",
123 logicEnv,
124 false,
125 0,
126 checkOverlaps);
127
128
129
131
132
133
134
135 return physWorld;
136}
G4LogicalVolume * fScoringVolume