gfields
Loading...
Searching...
No Matches
gmagneto.cc
Go to the documentation of this file.
1// gemc
2#include "gfactory.h"
3
4// gfields
5#include "gmagneto.h"
6#include "gfield_options.h"
7
8// #include "G4TransportationManager.hh"
9// #include "G4PropagatorInField.hh"
10
11
12GMagneto::GMagneto(const std::shared_ptr<GOptions>& gopts) : GBase(gopts, GMAGNETO_LOGGER) {
13 fields_map = std::make_shared<gFieldMap>();
14 fields_manager = std::make_shared<gFieldMgrMap>();
15
16 GManager gFieldManager(gopts);
17
18 // TODO: this should be done in gemc instead and passed to gmagneto? could be kept here
19 std::vector<GFieldDefinition> field_definition_array = gfields::get_GFieldDefinition(gopts);
20
21 for (auto& field_definition : field_definition_array) {
22 std::string name = field_definition.name;
23 log->info(1, field_definition);
24
25 if (fields_map->find(name) == fields_map->end()) {
26 fields_map->emplace(name, gFieldManager.LoadAndRegisterObjectFromLibrary<GField>(field_definition.gfieldPluginName(), gopts));
27 fields_map->at(name)->load_field_definitions(field_definition);
28 fields_manager->emplace(name, fields_map->at(name)->create_FieldManager());
29 }
30 }
31
32 // TODO: add min and max steps
33 // G4TransportationManager::GetTransportationManager()->GetPropagatorInField()->SetLargestAcceptableStep(10);
34}
Abstract base class representing a magnetic field.
Definition gfield.h:62
GMagneto(const std::shared_ptr< GOptions > &gopts)
Constructs a GMagneto object and loads field definitions from options.
Definition gmagneto.cc:12
constexpr const char * GMAGNETO_LOGGER
Definition gfield.h:13
std::vector< GFieldDefinition > get_GFieldDefinition(const std::shared_ptr< GOptions > &gopts)