54 std::vector<BDSParallelWorldInfo> worlds;
57 for (
const auto& pl : placements)
59 if (!pl.sequence.empty())
61 G4bool samplerWorldRequired =
false;
65 if (sType != BDSSamplerType::none)
67 samplerWorldRequired =
true;
72 worlds.push_back(info);
79 G4bool buildSamplerWorld,
80 G4bool buildPlacementFieldsWorld)
86 std::vector<G4VUserParallelWorld*> worldsRequiringPhysics;
89 if (buildSamplerWorld)
92 massWorld->RegisterParallelWorld(samplerWorld);
96 G4int samplerWorldID = massWorld->GetNumberOfParallelWorld() - 1;
97 massWorldBDS->SetSamplerWorldID(samplerWorldID);
99 acceleratorModel->RegisterParallelWorld(samplerWorld);
100 worldsRequiringPhysics.push_back(
dynamic_cast<G4VUserParallelWorld*
>(samplerWorld));
105 massWorld->RegisterParallelWorld(curvilinearWorld);
106 massWorld->RegisterParallelWorld(curvilinearBridgeWorld);
109 acceleratorModel->RegisterParallelWorld(curvilinearWorld);
110 acceleratorModel->RegisterParallelWorld(curvilinearBridgeWorld);
115 for (
const auto& info : worldInfos)
117 if (info.curvilinearWorld)
121 massWorld->RegisterParallelWorld(cLWorld);
122 massWorld->RegisterParallelWorld(cLBridgeWorld);
123 acceleratorModel->RegisterParallelWorld(cLWorld);
124 acceleratorModel->RegisterParallelWorld(cLBridgeWorld);
126 if (info.samplerWorld)
129 acceleratorModel->RegisterParallelWorld(sWorld);
130 worldsRequiringPhysics.push_back(
dynamic_cast<G4VUserParallelWorld*
>(sWorld));
131 massWorld->RegisterParallelWorld(sWorld);
141 importanceWorldGeometryFile,
142 importanceVolumeMapFile);
143 acceleratorModel->RegisterParallelWorld(importanceWorld);
144 massWorld->RegisterParallelWorld(importanceWorld);
145 worldsRequiringPhysics.push_back(
dynamic_cast<G4VUserParallelWorld*
>(importanceWorld));
149 if (buildPlacementFieldsWorld)
152 acceleratorModel->RegisterParallelWorld(placementFieldsPW);
153 massWorld->RegisterParallelWorld(placementFieldsPW);
156 return worldsRequiringPhysics;