EICrecon
JANA based reconstruction for the EPIC detector
Loading...
Searching...
No Matches
ActsGeometryProvider.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-3.0-or-later
2// Copyright (C) 2015 - 2024 Julia Hrdinka, Whitney Armstrong, Wouter Deconinck, Dmitry Romanov
3
4#pragma once
5
6// ACTS
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>
21#include <array>
22#include <cstdint>
23#include <map>
24#include <memory>
25#include <string>
26#include <unordered_map>
27
28namespace dd4hep::rec {
29class Surface;
30}
31
36void draw_surfaces(std::shared_ptr<const Acts::TrackingGeometry> trk_geo,
37 std::shared_ptr<spdlog::logger> init_log, const std::string& fname);
38
40public:
42 virtual ~ActsGeometryProvider() = default;
43
44 using VolumeSurfaceMap = std::unordered_map<uint64_t, const Acts::Surface*>;
45
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;
49
50 const dd4hep::Detector* dd4hepDetector() const { return m_dd4hepDetector; }
51
54 std::shared_ptr<const Acts::TrackingGeometry> trackingGeometry() const { return m_trackingGeo; }
55
56 std::shared_ptr<const Acts::MagneticFieldProvider> getFieldProvider() const;
57
58 double centralMagneticField() const {
59 return m_dd4hepDetector->field().magneticField({0, 0, 0}).z() *
60 (Acts::UnitConstants::T / dd4hep::tesla);
61 }
62
63 const VolumeSurfaceMap& surfaceMap() const { return m_surfaces; }
64
65 std::map<int64_t, dd4hep::rec::Surface*> getDD4hepSurfaceMap() const { return m_surfaceMap; }
66
67 const Acts::GeometryContext& getActsGeometryContext() const { return m_trackingGeoCtx; }
68 const Acts::MagneticFieldContext& getActsMagneticFieldContext() const {
69 return m_magneticFieldCtx;
70 }
71 const Acts::CalibrationContext& getActsCalibrationContext() const { return m_calibrationCtx; }
72
74 std::shared_ptr<spdlog::logger> getActsRelatedLogger() const { return m_log; }
75
79 std::shared_ptr<spdlog::logger> getActsInitRelatedLogger() const { return m_init_log; }
80
81private:
86 const dd4hep::Detector* m_dd4hepDetector = nullptr;
87
89 std::map<int64_t, dd4hep::rec::Surface*> m_surfaceMap;
90
92#if Acts_VERSION_MAJOR >= 45
93 Acts::GeometryContext m_trackingGeoCtx = Acts::GeometryContext::dangerouslyDefaultConstruct();
94#else
95 Acts::GeometryContext m_trackingGeoCtx;
96#endif
97
99 Acts::MagneticFieldContext m_magneticFieldCtx;
100
102 Acts::CalibrationContext m_calibrationCtx;
103
105 std::shared_ptr<const Acts::TrackingGeometry> m_trackingGeo{nullptr};
106
108 VolumeSurfaceMap m_surfaces;
109
111 std::shared_ptr<const Acts::MagneticFieldProvider> m_magneticField = nullptr;
112
114 std::shared_ptr<spdlog::logger> m_log;
115
119 std::shared_ptr<spdlog::logger> m_init_log;
120
122 Acts::ViewConfig m_containerView{.color = {220, 220, 220}}; // alto
123 Acts::ViewConfig m_volumeView{.color = {220, 220, 0}}; // barberry yellow
124 Acts::ViewConfig m_sensitiveView{.color = {0, 180, 240}}; // picton blue
125 Acts::ViewConfig m_passiveView{.color = {240, 180, 0}}; // lightning yellow
126 Acts::ViewConfig m_gridView{.color = {220, 0, 0}}; // scarlet red
127 bool m_objWriteIt{false};
128 bool m_plyWriteIt{false};
129 std::string m_outputTag{""};
130 std::string m_outputDir{""};
131
132public:
133 void setObjWriteIt(bool writeit) { m_objWriteIt = writeit; }
134 bool getObjWriteIt() const { return m_objWriteIt; }
135 void setPlyWriteIt(bool writeit) { m_plyWriteIt = writeit; }
136 bool getPlyWriteIt() const { return m_plyWriteIt; }
137
138 void setOutputTag(std::string tag) { m_outputTag = tag; }
139 std::string getOutputTag() const { return m_outputTag; }
140 void setOutputDir(std::string dir) { m_outputDir = dir; }
141 std::string getOutputDir() const { return m_outputDir; }
142
143 using Color = Acts::Color;
144 void setContainerView(std::array<int, 3> c) { m_containerView.color = Color(c); }
145 const Acts::ViewConfig& getContainerView() const { return m_containerView; }
146 void setVolumeView(std::array<int, 3> c) { m_volumeView.color = Color(c); }
147 const Acts::ViewConfig& getVolumeView() const { return m_volumeView; }
148 void setSensitiveView(std::array<int, 3> c) { m_sensitiveView.color = Color(c); }
149 const Acts::ViewConfig& getSensitiveView() const { return m_sensitiveView; }
150 void setPassiveView(std::array<int, 3> c) { m_passiveView.color = Color(c); }
151 const Acts::ViewConfig& getPassiveView() const { return m_passiveView; }
152 void setGridView(std::array<int, 3> c) { m_gridView.color = Color(c); }
153 const Acts::ViewConfig& getGridView() const { return m_gridView; }
154};
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