diff --git a/Detector/MagneticFieldMap/CMakeLists.txt b/Detector/MagneticFieldMap/CMakeLists.txt index 4d5e608e6de9b806738a9cc018e728b6e8a3e3f3..ac154c8ae17f339802d26b7a1e5f638a87c62542 100644 --- a/Detector/MagneticFieldMap/CMakeLists.txt +++ b/Detector/MagneticFieldMap/CMakeLists.txt @@ -4,6 +4,7 @@ gaudi_add_module(MagneticFieldMap SOURCES src/GenericBFieldMapBrBz.cpp + src/GenericBFieldMapBrBzFactory.cpp LINK Gaudi::GaudiKernel ${DD4hep_COMPONENT_LIBRARIES} ${ROOT_LIBRARIES} diff --git a/Detector/MagneticFieldMap/src/GenericBFieldMapBrBzFactory.cpp b/Detector/MagneticFieldMap/src/GenericBFieldMapBrBzFactory.cpp new file mode 100644 index 0000000000000000000000000000000000000000..897d360a5b6fe64a87c03098c3157ea05e24173e --- /dev/null +++ b/Detector/MagneticFieldMap/src/GenericBFieldMapBrBzFactory.cpp @@ -0,0 +1,39 @@ +/* + * In this file, the xml is parsed and the GenericBFieldMapBrBz object is created and configured. + * + * -- Tao Lin <lintao AT ihep.ac.cn> + */ +#include "GenericBFieldMapBrBz.h" + + +#include <DD4hep/Version.h> +#if DD4HEP_VERSION_GE(0,24) +#include <DD4hep/detail/Handle.inl> +#else +#include <DD4hep/Handle.inl> +#endif + +#include <DD4hep/FieldTypes.h> + + +#include <DD4hep/DetFactoryHelper.h> +#include <XML/Utilities.h> + + +static dd4hep::Ref_t create_GenericBFieldMapBrBz(dd4hep::Detector& , + dd4hep::xml::Handle_t handle ) { + + // 1. retrieve the parameters from xml + dd4hep::xml::Component xmlParameter(handle); + + // 2. create the CartesianField + dd4hep::CartesianField obj; + GenericBFieldMapBrBz* ptr = new GenericBFieldMapBrBz(); + + obj.assign(ptr, xmlParameter.nameStr(), xmlParameter.typeStr()); + + return obj; + +} + +DECLARE_XMLELEMENT(GenericBFieldMapBrBz,create_GenericBFieldMapBrBz)