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