7#include <Acts/Definitions/Units.hpp>
8#include <Acts/Geometry/GeometryContext.hpp>
9#include <Acts/Geometry/TrackingGeometry.hpp>
10#include <Acts/MagneticField/MagneticFieldContext.hpp>
11#include <Acts/MagneticField/MagneticFieldProvider.hpp>
12#include <Acts/Surfaces/Surface.hpp>
13#include <Acts/Utilities/CalibrationContext.hpp>
14#include <Acts/Visualization/ViewConfig.hpp>
15#include <DD4hep/Detector.h>
16#include <DD4hep/Fields.h>
17#include <Evaluator/DD4hepUnits.h>
18#include <Math/GenVector/Cartesian3D.h>
19#include <Math/GenVector/DisplacementVector3D.h>
20#include <spdlog/logger.h>
26#include <unordered_map>
36void draw_surfaces(std::shared_ptr<const Acts::TrackingGeometry> trk_geo,
37 std::shared_ptr<spdlog::logger> init_log,
const std::string& fname);
46 virtual void initialize(
const dd4hep::Detector* dd4hep_geo, std::string material_file,
47 std::shared_ptr<spdlog::logger> log,
48 std::shared_ptr<spdlog::logger> init_log)
final;
54 std::shared_ptr<const Acts::TrackingGeometry>
trackingGeometry()
const {
return m_trackingGeo; }
59 return m_dd4hepDetector->field().magneticField({0, 0, 0}).z() *
60 (Acts::UnitConstants::T / dd4hep::tesla);
69 return m_magneticFieldCtx;
86 const dd4hep::Detector* m_dd4hepDetector =
nullptr;
89 std::map<int64_t, dd4hep::rec::Surface*> m_surfaceMap;
92#if Acts_VERSION_MAJOR >= 45
93 Acts::GeometryContext m_trackingGeoCtx = Acts::GeometryContext::dangerouslyDefaultConstruct();
95 Acts::GeometryContext m_trackingGeoCtx;
99 Acts::MagneticFieldContext m_magneticFieldCtx;
102 Acts::CalibrationContext m_calibrationCtx;
105 std::shared_ptr<const Acts::TrackingGeometry> m_trackingGeo{
nullptr};
111 std::shared_ptr<const Acts::MagneticFieldProvider> m_magneticField =
nullptr;
114 std::shared_ptr<spdlog::logger> m_log;
119 std::shared_ptr<spdlog::logger> m_init_log;
122 Acts::ViewConfig m_containerView{.color = {220, 220, 220}};
123 Acts::ViewConfig m_volumeView{.color = {220, 220, 0}};
124 Acts::ViewConfig m_sensitiveView{.color = {0, 180, 240}};
125 Acts::ViewConfig m_passiveView{.color = {240, 180, 0}};
126 Acts::ViewConfig m_gridView{.color = {220, 0, 0}};
127 bool m_objWriteIt{
false};
128 bool m_plyWriteIt{
false};
129 std::string m_outputTag{
""};
130 std::string m_outputDir{
""};
153 const Acts::ViewConfig&
getGridView()
const {
return m_gridView; }
void draw_surfaces(std::shared_ptr< const Acts::TrackingGeometry > trk_geo, std::shared_ptr< spdlog::logger > init_log, const std::string &fname)
Definition ActsGeometryProvider.h:39
void setOutputTag(std::string tag)
Definition ActsGeometryProvider.h:138
void setGridView(std::array< int, 3 > c)
Definition ActsGeometryProvider.h:152
std::string getOutputTag() const
Definition ActsGeometryProvider.h:139
const VolumeSurfaceMap & surfaceMap() const
Definition ActsGeometryProvider.h:63
std::map< int64_t, dd4hep::rec::Surface * > getDD4hepSurfaceMap() const
Definition ActsGeometryProvider.h:65
std::shared_ptr< spdlog::logger > getActsInitRelatedLogger() const
Definition ActsGeometryProvider.h:79
const dd4hep::Detector * dd4hepDetector() const
Definition ActsGeometryProvider.h:50
bool getPlyWriteIt() const
Definition ActsGeometryProvider.h:136
const Acts::ViewConfig & getPassiveView() const
Definition ActsGeometryProvider.h:151
virtual void initialize(const dd4hep::Detector *dd4hep_geo, std::string material_file, std::shared_ptr< spdlog::logger > log, std::shared_ptr< spdlog::logger > init_log) final
Definition ActsGeometryProvider.cc:130
void setSensitiveView(std::array< int, 3 > c)
Definition ActsGeometryProvider.h:148
const Acts::ViewConfig & getSensitiveView() const
Definition ActsGeometryProvider.h:149
const Acts::GeometryContext & getActsGeometryContext() const
Definition ActsGeometryProvider.h:67
ActsGeometryProvider()
Definition ActsGeometryProvider.h:41
const Acts::ViewConfig & getGridView() const
Definition ActsGeometryProvider.h:153
void setPassiveView(std::array< int, 3 > c)
Definition ActsGeometryProvider.h:150
std::shared_ptr< const Acts::MagneticFieldProvider > getFieldProvider() const
Definition ActsGeometryProvider.cc:284
void setVolumeView(std::array< int, 3 > c)
Definition ActsGeometryProvider.h:146
double centralMagneticField() const
Definition ActsGeometryProvider.h:58
void setContainerView(std::array< int, 3 > c)
Definition ActsGeometryProvider.h:144
std::shared_ptr< spdlog::logger > getActsRelatedLogger() const
ACTS general logger that is used for running ACTS.
Definition ActsGeometryProvider.h:74
const Acts::ViewConfig & getVolumeView() const
Definition ActsGeometryProvider.h:147
std::string getOutputDir() const
Definition ActsGeometryProvider.h:141
virtual ~ActsGeometryProvider()=default
std::unordered_map< uint64_t, const Acts::Surface * > VolumeSurfaceMap
Definition ActsGeometryProvider.h:44
const Acts::CalibrationContext & getActsCalibrationContext() const
Definition ActsGeometryProvider.h:71
const Acts::ViewConfig & getContainerView() const
Definition ActsGeometryProvider.h:145
void setObjWriteIt(bool writeit)
Definition ActsGeometryProvider.h:133
const Acts::MagneticFieldContext & getActsMagneticFieldContext() const
Definition ActsGeometryProvider.h:68
std::shared_ptr< const Acts::TrackingGeometry > trackingGeometry() const
Definition ActsGeometryProvider.h:54
bool getObjWriteIt() const
Definition ActsGeometryProvider.h:134
Acts::Color Color
Definition ActsGeometryProvider.h:143
void setPlyWriteIt(bool writeit)
Definition ActsGeometryProvider.h:135
void setOutputDir(std::string dir)
Definition ActsGeometryProvider.h:140
Definition ActsGeometryProvider.h:28