19 auto gsystem_node = gopts->getOptionNode(
"gsystem");
22 systems.reserve(gsystem_node.size());
24 auto exp = gopts->getRequiredScalarString(
"experiment");
25 auto run = gopts->getRequiredScalarInt(
"runno");
26 auto dbhost = gopts->getRequiredScalarString(
"sql");
27 auto ascii_db = gopts->getRequiredScalarString(
"ascii_db");
29 for (
auto gsystem_item : gsystem_node) {
30 auto factory = gopts->get_variable_in_option<std::string>(gsystem_item,
"factory",
37 std::make_shared<GSystem>(
40 gopts->get_required_variable_in_option<std::string>(gsystem_item,
"name"),
44 gopts->get_variable_in_option<std::string>(gsystem_item,
"variation",
"default"),
45 gopts->get_optional_variable_in_option<std::string>(gsystem_item,
"annotations")
54std::vector<GModifier>
getModifiers(
const std::shared_ptr<GOptions>& gopts) {
55 std::vector<GModifier> gmods;
57 auto gmodifier_node = gopts->getOptionNode(
"gmodifier");
59 for (
auto gmodifier_item : gmodifier_node) {
61 gopts->get_required_variable_in_option<std::string>(gmodifier_item,
"name"),
62 gopts->get_optional_variable_in_option<std::string>(gmodifier_item,
"shift"),
63 gopts->get_optional_variable_in_option<std::string>(gmodifier_item,
"tilt"),
64 gopts->get_variable_in_option<
bool>(gmodifier_item,
"isPresent",
true));
82 help =
"A system definition includes the geometry location, factory and variation \n \n";
83 help +=
"Possible factories are: \n";
89 R
"RAWS(Example: -gsystem="[{name: b1}]")RAWS";
91 std::vector<GVariable> gsystem = {
93 "system name (mandatory). For ascii factories, it may include the path to the file"},
95 {
"variation",
"default",
"geometry variation"},
96 {
"annotations", std::nullopt,
97 "optional system annotations. Examples: \"mats_only\" "},
98 {
"digitization", std::nullopt,
99 "optional digitization plugin name when it differs from the system name (shared plugin, e.g. \"ecal\" "
100 "for the EC and PCAL systems)"}};
104 help =
"The volume modifier can shift, tilt, or delete a volume from the gworld \n \n";
105 help += R
"RAWS(Example: -gmodifier="[{name: targetCell, tilt: '0*deg, 0*deg, -10*deg'}]")RAWS";
107 std::vector<GVariable> gmodifier = {
109 {
"shift", std::nullopt,
"volume shift added to existing position"},
110 {
"tilt", std::nullopt,
"volume tilt added to existing rotation"},
111 {
"isPresent",
true,
"If set to false, remove the volume from the world"}
113 goptions.defineOption(
"gmodifier",
"modify volume existence or placement", gmodifier, help);
116 help +=
"Command line Example: -root=\"G4Box 25*cm 24*cm 40*cm G4_WATER\"\n";
117 help +=
"YAML file example: root: G4Box, 24*cm, 24*cm, 40*cm, G4_WATER\n";
123 help +=
"Example (sqlite file): -sql=myGeometry.sqlite\n";
129 help +=
"Example: -ascii_db=/path/to/geometry/text/files\n";
134 goptions.defineOption(
GVariable(
"experiment",
"examples",
"experiment selection"),
135 "Each experiment has a subset of unique systems.\n \nExample: -experiment=clas12\n");
139 "Run number used to select the geometry/conditions variation loaded from the\n"
140 "database; all systems share it. This is distinct from -run, the run number\n"
141 "assigned to generated events.\n \nExample: -runno=11\n");
Conventions and shared constants for the detector-system module.
std::vector< SystemPtr > SystemList
Option definitions and extraction helpers for the gsystem module.
constexpr const char * GSFACTORY_LOGGER
constexpr const char * GSYSTEM_LOGGER
constexpr const char * GVOLUME_LOGGER
constexpr const char * GWORLD_LOGGER
constexpr const char * GMATERIAL_LOGGER
constexpr RequiredValue REQUIRED
constexpr char GSYSTEMSQLITETDEFAULTFILE[]
Default sqlite DB filename used when the user does not specify one.
constexpr char GSYSTEMCADTFACTORYLABEL[]
GOptions defineOptions()
Define and return all option groups required by the gsystem module.
constexpr char ROOTDEFINITION[]
constexpr char GSYSTEMMYSQLTFACTORYLABEL[]
constexpr char GSYSTEMSASCIISEARCHDIR[]
Default search directory for ASCII factory files.
constexpr char GSYSTEMSQLITETFACTORYLABEL[]
constexpr char GSYSTEMASCIIFACTORYLABEL[]
std::vector< GModifier > getModifiers(const std::shared_ptr< GOptions > &gopts)
Build a list of volume modifiers from options.
constexpr char ROOTWORLDGVOLUMENAME[]
Canonical name for the ROOT/world gvolume entry.
SystemList getSystems(const std::shared_ptr< GOptions > &gopts)
Build a list of systems from options.