50 return parseG4Value(node, key, fallback_unit, 0.0, logger);
57 auto gparticle_node = gopts->getOptionNode(
"gparticle");
59 vector<GparticlePtr> gparticles;
60 gparticles.reserve(gparticle_node.size());
62 for (
auto gparticle_item : gparticle_node) {
63 gparticles.emplace_back(std::make_shared<Gparticle>(
64 gopts->get_required_variable_in_option<
string>(gparticle_item,
"name"),
65 gopts->get_variable_in_option<
int>(gparticle_item,
"multiplicity", 1),
67 parseRequiredG4Value(gparticle_item,
"p",
"MeV", logger),
68 parseG4Value(gparticle_item,
"delta_p",
"MeV", 0, logger),
69 gopts->get_variable_in_option<
string>(gparticle_item,
"randomMomentumModel",
"uniform"),
71 parseG4Value(gparticle_item,
"theta",
"deg", 0, logger),
72 parseG4Value(gparticle_item,
"delta_theta",
"deg", 0, logger),
73 gopts->get_variable_in_option<
string>(gparticle_item,
"randomThetaModel",
"uniform"),
74 parseG4Value(gparticle_item,
"phi",
"deg", 0, logger),
75 parseG4Value(gparticle_item,
"delta_phi",
"deg", 0, logger),
77 parseG4Value(gparticle_item,
"vx",
"cm", 0, logger),
78 parseG4Value(gparticle_item,
"vy",
"cm", 0, logger),
79 parseG4Value(gparticle_item,
"vz",
"cm", 0, logger),
80 parseG4Value(gparticle_item,
"delta_vx",
"cm", 0, logger),
81 parseG4Value(gparticle_item,
"delta_vy",
"cm", 0, logger),
82 parseG4Value(gparticle_item,
"delta_vz",
"cm", 0, logger),
84 gopts->get_variable_in_option<
string>(gparticle_item,
"randomVertexModel",
"uniform"),