ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrk::DeviceDetectorDescriptionSvc Class Reference

Service providing the static device detector description. More...

#include <DeviceDetectorDescriptionSvc.h>

Inheritance diagram for ActsTrk::DeviceDetectorDescriptionSvc:

Public Member Functions

virtual StatusCode initialize () override
 Function initializing and executing the geometry conversion.
virtual const std::vector< StaticCondEntry > & staticCondEntries () const override
 Static per-module entries, indexed like the detector conditions description.

Private Attributes

ServiceHandle< StoreGateSvc > m_detStore {this, "DetectorStore", "StoreGateSvc/DetectorStore"}
ToolHandle< AthDevice::ICopyTool > m_copy
 The copy tool used for copying data to device.
Gaudi::Property< std::string > m_hostDetectorName
Gaudi::Property< std::string > m_deviceDetectorName
Gaudi::Property< std::string > m_geoIdMappingObjectName
const PixelID * m_pixelID {nullptr}
 Conversion helpers (to retrieve module design, hash, etc.) {.
const SCT_ID * m_stripID {nullptr}
Gaudi::Property< std::string > m_pixelIdHelperName
Gaudi::Property< std::string > m_stripIdHelperName
const InDetDD::PixelDetectorManager * m_pixelManager {nullptr}
const InDetDD::SCT_DetectorManager * m_stripManager {nullptr}
std::vector< StaticCondEntry > m_staticCondEntries
std::shared_ptr< const Acts::TrackingGeometry > m_trackingGeometry
std::map< Identifier, moduleInfo > m_atlasModuleInfo
ServiceHandle< ActsTrk::ITrackingGeometrySvc > m_trackingGeometrySvc {this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"}
The host and device memory resources tools to use for memory allocations
ToolHandle< AthDevice::IMemoryResourcesTool > m_MRs
The output object names
Gaudi::Property< std::string > m_deviceDesignObjectName
Gaudi::Property< std::string > m_hostDesignObjectName

Detailed Description

Service providing the static device detector description.

This service populates the detector description data which does not change during the run and is needed for executing track reconstruction on GPU: traccc digitization config: module segmnentation info used in clustering detray detector: the tracking geometry on the device athena<->acts<->detray ID map

All objects are recorded to detector store as pointers to device objects, apart from the athena<->detray ID map. Additionally the digitization object is stored in detector store as host object, which is needed for EDM conversions.

Being a service, it is initialized before any algorithm in both serial and multi-threaded jobs, so that the objects can be retrieved from the detector store during the initialization of the algorithms. The per-module conditions (eg. lorentz shift) are written by DeviceDetectorDescriptionCondAlg.

Author
Neža Ribarič neza..nosp@m.riba.nosp@m.ric@c.nosp@m.ern..nosp@m.ch

Definition at line 103 of file DeviceDetectorDescriptionSvc.h.

Member Function Documentation

◆ initialize()

StatusCode ActsTrk::DeviceDetectorDescriptionSvc::initialize ( )
overridevirtual

Function initializing and executing the geometry conversion.

Definition at line 24 of file DeviceDetectorDescriptionSvc.cxx.

25{
26 ATH_MSG_DEBUG("Initializing device detector description provider service ");
27
28 ATH_CHECK(m_MRs.retrieve());
29 ATH_CHECK(m_copy.retrieve());
30 ATH_CHECK(m_detStore.retrieve());
31
34 ATH_CHECK(m_detStore->retrieve(m_pixelManager, "ITkPixel"));
35 ATH_CHECK(m_detStore->retrieve(m_stripManager, "ITkStrip"));
36
37 std::map<Acts::GeometryIdentifier, Identifier> actsToAthena;
38 std::unordered_map<uint64_t, Identifier> detrayToAthenaMap;
39 std::unordered_map<Identifier, uint64_t> athenaToDetrayMap;
40
41 int nPix = 0, nStrip = 0, nEC = 0, nBar = 0;
42 std::vector<Acts::GeometryIdentifier> actsHGTD;
43 if (!m_trackingGeometrySvc.empty()) {
44
45 // ---- 1. Get ACTS Tracking Geometry, populate Athena<->ACTS maps and fill module design (segmentation) information ----
46 // all of these are static upon construction through the run
47
49 m_trackingGeometry = m_trackingGeometrySvc->trackingGeometry();
50
51 m_trackingGeometry->visitSurfaces([&](const Acts::Surface *surface) {
52 if (!surface) return;
53 const auto *actsElement = getActsDetectorElement(surface);
54 if (!actsElement){
55 ATH_MSG_DEBUG("Could not find matching Acts detector element for surface with geometryId " << surface->geometryId());
56 return;
57 }
58
59 const ActsTrk::DetectorType detType = actsElement->detectorType();
60 if (detType == ActsTrk::DetectorType::Hgtd) {
61 // skip HGTD surfaces for now
62 // currently no time info is being used in traccc
63 ATH_MSG_VERBOSE("Found HGTD surface with geometryId " << surface->geometryId());
64 actsHGTD.push_back(surface->geometryId());
65 return;
66 }
67 if (detType != ActsTrk::DetectorType::Pixel && detType != ActsTrk::DetectorType::Sct) {
68 ATH_MSG_DEBUG("Found non-pixel, non-strip detector element with geometryId " << surface->geometryId());
69 return;
70 }
71 const auto *detElem = dynamic_cast<const InDetDD::SiDetectorElement*>(actsElement->upstreamDetectorElement());
72 if (!detElem) {
73 ATH_MSG_DEBUG("Could not find matching Athena silicon detector element for surface with geometryId " << surface->geometryId());
74 return;
75 }
76
77 Identifier athenaID;
78 moduleInfo thismod;
79 // NOTE: lorentz_shift_x/y intentionally left at their default
80 // (0.f) — they're not used for design-shape grouping and are
81 // computed per-IOV by DeviceDetectorDescriptionCondAlg, so no
82 // Lorentz-tool call happens here.
83
84 thismod.isAnnulus = false;
85 thismod.pixel = false;
86 thismod.equidistant_binning = true;
87
88 switch (detType) {
90 ++nPix;
91 athenaID = detElem->identify();
92 const auto* p_design = static_cast<const InDetDD::PixelModuleDesign*>(&detElem->design());
93
94 thismod.pixel = true;
95 thismod.side = 2; // for pixel
96
97 std::vector<traccc::scalar> row_centres;
98 std::vector<traccc::scalar> column_centres;
99
100 // pixels with cross design
101 // the middle four rows and columns are double pitch
102 if ((m_pixelID->barrel_ec(athenaID) == 0 && m_pixelID->layer_disk(athenaID) > 0) ||
103 (m_pixelID->barrel_ec(athenaID) != 0 && m_pixelID->layer_disk(athenaID) > 1)) {
104
105 thismod.equidistant_binning = false;
106
107 for(int row = 0; row < p_design->rows(); row++){
108
109 std::array<InDetDD::PixelDiodeTree::CellIndexType, 2>
111 row, 0);
112 InDetDD::PixelDiodeTree::DiodeProxyWithPosition si_param(
113 p_design->diodeProxyFromIdxCachePosition(diode_idx));
114
115 (row_centres).push_back(si_param.position()[0]-0.5*si_param.width()[0]);
116 if(row == p_design->rows()-1){
117 (row_centres).push_back(si_param.position()[0]+0.5*si_param.width()[0]);
118 }
119
120 float leading_edge = si_param.position()[0] - 0.5f*si_param.width()[0];
121 float trailing_edge = si_param.position()[0] + 0.5f*si_param.width()[0];
122 float midpoint = (leading_edge + trailing_edge) / 2.f;
123 if(std::abs(midpoint - si_param.position()[0]) > 1e-6f){
124 ATH_MSG_ERROR("Row " << row << " edge midpoint " << midpoint
125 << " != geometry centre " << si_param.position()[0]
126 << " (diff=" << midpoint - si_param.position()[0] << ")");
127 }
128
129 }
130 for(int col = 0; col < p_design->columns(); col++){
131
132 std::array<InDetDD::PixelDiodeTree::CellIndexType, 2>
134 0, col);
135 InDetDD::PixelDiodeTree::DiodeProxyWithPosition si_param(
136 p_design->diodeProxyFromIdxCachePosition(diode_idx));
137
138 (column_centres).push_back(si_param.position()[1]-0.5*si_param.width()[1]);
139 if(col == p_design->columns()-1){
140 (column_centres).push_back(si_param.position()[1]+0.5*si_param.width()[1]);
141 }
142
143 float leading_edge = si_param.position()[1] - 0.5f*si_param.width()[1];
144 float trailing_edge = si_param.position()[1] + 0.5f*si_param.width()[1];
145 float midpoint = (leading_edge + trailing_edge) / 2.f;
146 if(std::abs(midpoint - si_param.position()[1]) > 1e-6f){
147 ATH_MSG_ERROR("Column " << col << " edge midpoint " << midpoint
148 << " != geometry centre " << si_param.position()[1]
149 << " (diff=" << midpoint - si_param.position()[1] << ")");
150 }
151
152 }
153
154 }
155
156 thismod.row_centres = row_centres;
157 thismod.column_centres = column_centres;
158
159 thismod.module_width = p_design->width();
160 thismod.module_length = p_design->length();
161 thismod.rows = p_design->rows();
162 thismod.columns = p_design->columns();
163 break;
164 }
166 ++nStrip;
167 const Identifier moduleID = m_stripID->module_id(detElem->identify());
168 const IdentifierHash moduleHash = m_stripID->wafer_hash(moduleID);
169 const int side = m_stripID->side(detElem->identify());
170 athenaID = m_stripID->wafer_id(moduleHash + side);
171
172 thismod.pixel = false;
173 thismod.side = side;
174 thismod.columns = 1; // for strip
175
176 if (m_stripID->barrel_ec(athenaID) == 0) {
177 ++nBar;
178 const auto* s_design = static_cast<const InDetDD::SCT_BarrelModuleSideDesign*>(&detElem->design());
179
180 thismod.module_width = s_design->width();
181 thismod.module_length = s_design->length();
182 thismod.rows = s_design->cells();
183 } else {
184 ++nEC;
185 const auto* annulus_design = static_cast<const InDetDD::StripStereoAnnulusDesign*>(&detElem->design());
186 const InDetDD::SiCellId annulus_cell = detElem->cellIdFromIdentifier(athenaID);
187 const double pitch_row = annulus_design->phiPitchPhi(annulus_cell);
188 const int nDiodes = annulus_design->diodesInRow(0.);
189 const double max_phi = nDiodes * pitch_row;
190 thismod.module_width = -max_phi;
191 // this could be the halfway point in radius, number is arbitrary
192 // const double radius = annulus_design->centreR();
193 thismod.module_length = 0.2; //radius;
194 thismod.rows = nDiodes;
195 thismod.isAnnulus = true;
196 }
197 break;
198 }
199 default:
200 // unreachable, see filter above
201 return;
202 }
203
204 m_atlasModuleInfo[athenaID] = thismod;
205 const auto geo_id = surface->geometryId();
206 actsToAthena[geo_id] = athenaID;
207
208 });
209
210 ATH_MSG_DEBUG(nPix << " Atlas Pixel modules found.");
211 ATH_MSG_DEBUG(nStrip << " Atlas Strip modules found, " << nBar << " in barrel and " << nEC << " in the endcap");
212 ATH_MSG_DEBUG("Wrote segmentation info for " << m_atlasModuleInfo.size() << " modules");
213
214 // ---- 2. Get Detray Tracking Geometry and populate Detray<->ACTS map ----
215 ATH_MSG_INFO("Loading detray detector");
216
217 int found_detray = 0;
218 int missing_detray = 0;
219 int missing_detray_passives = 0;
220
221 auto hostDetector = m_trackingGeometrySvc->detrayGeometry();
222 const auto& itkDetector = hostDetector->as<traccc::itk_detector>();
223 for (const auto& surface : itkDetector.surfaces()) {
224 const auto geo_id = surface.source;
225 const Acts::GeometryIdentifier acts_geom_id{geo_id};
226 auto sf = detray::tracking_surface{itkDetector, surface};
227 const auto detray_id = sf.identifier().value();
228
229 if (auto pIdPair = actsToAthena.find(acts_geom_id); pIdPair != actsToAthena.end()) {
230 auto athena_id = pIdPair->second;
231 detrayToAthenaMap[detray_id] = athena_id;
232 athenaToDetrayMap[athena_id] = detray_id;
233 found_detray++;
234 } else {
235 if (std::find(actsHGTD.begin(), actsHGTD.end(), acts_geom_id) != actsHGTD.end()) {
236 ATH_MSG_VERBOSE("ACTS surface with key " << acts_geom_id << " is HGTD, detray id: " << detray_id);
237 continue;
238 }
239 ATH_MSG_VERBOSE("ACTS surface with key " << acts_geom_id << " was not translated to detray geometry.");
240 missing_detray++;
241 if (surface.is_sensitive()) continue;
242 ATH_MSG_VERBOSE("found this passive surface in detray: " << acts_geom_id);
243 missing_detray_passives++;
244 }
245 }
246
247 ATH_MSG_DEBUG("Traccc detector has " << found_detray << " surfaces matching ACTS and " << missing_detray << " additional surfaces, out of which " << missing_detray_passives << " are not sensitive.");
248
249 // ---- 3. Deduplicate the designs ----
250 // there are only a handful of unique module designs, only store unique values
251 // and populate the detray<->acts<->athena geometry ID relationship map
252 std::map<designKey, unsigned int> designLookup;
253 unsigned int nextDesignId = 0;
254
255 const std::size_t nSurfaces = itkDetector.surfaces().size();
256 m_staticCondEntries.resize(nSurfaces);
257
258 auto idMapping = std::make_unique<ActsTrk::GeometryIdMapping>();
259 idMapping->reserve(nSurfaces);
260
261 for (std::size_t condIndex = 0; condIndex < nSurfaces; ++condIndex) {
262 const auto& surface = itkDetector.surfaces()[condIndex];
263 if (!surface.is_sensitive()) {
264 ATH_MSG_VERBOSE("Skipping passive surface with geometryId " << surface.source);
265 continue;
266 }
267 const auto geo_id = surface.source;
268 const Acts::GeometryIdentifier acts_geom_id{geo_id};
269 auto sf = detray::tracking_surface{itkDetector, surface};
270 const auto detray_id = sf.identifier().value();
271
272 StaticCondEntry entry;
273 entry.detrayGeometryId = detray::geometry::identifier{detray_id};
274 entry.actsGeometryId = acts_geom_id.value();
275
276 auto detrayIt = detrayToAthenaMap.find(detray_id);
277 std::optional<Identifier> athenaId;
278 if (detrayIt != detrayToAthenaMap.end()) {
279 athenaId = detrayIt->second;
280 auto modIt = m_atlasModuleInfo.find(*athenaId);
281 if (modIt != m_atlasModuleInfo.end()) {
282 const moduleInfo& thismod = modIt->second;
283
284 const int nBinsX = thismod.rows;
285 const int nBinsY = thismod.pixel ? thismod.columns : 1;
286
287 auto edgesX = makeEquidistantEdges(0.5f * thismod.module_width, nBinsX);
288 auto edgesY = makeEquidistantEdges(0.5f * thismod.module_length, nBinsY);
289
290 if(!thismod.equidistant_binning){
291 edgesX = thismod.row_centres;
292 edgesY = thismod.column_centres;
293 }
294
295 designKey key{thismod.pixel, thismod.isAnnulus, edgesX, edgesY,
296 std::abs(thismod.module_width), thismod.module_length};
297
298 const auto [it, inserted] = designLookup.try_emplace(key, nextDesignId);
299 entry.designId = it->second;
300 if (inserted) ++nextDesignId;
301
302 entry.athenaId = *athenaId;
303 entry.hasAthenaModule = true;
304 entry.isPixel = thismod.pixel;
305 }
306 }else{
307 if (std::find(actsHGTD.begin(), actsHGTD.end(), acts_geom_id) != actsHGTD.end()) {
308 ATH_MSG_VERBOSE("ACTS surface with key " << acts_geom_id << " is HGTD, detray id: " << detray_id);
309 continue;
310 }
311 ATH_MSG_ERROR("Could not find matching Athena module for detray surface with geometryId " << detray_id);
312 return StatusCode::FAILURE;
313 }
314
315 idMapping->addEntry(detray_id, acts_geom_id.value(), athenaId);
316 // condIndex is the row of this surface in the detector conditions description
317 idMapping->addDetDescIndex(detray_id, static_cast<unsigned int>(condIndex));
318 m_staticCondEntries[condIndex] = entry;
319 }
320
321
322 // ---- 4. Write detector design object ----
323 auto hostDesign = std::make_unique<traccc::detector_design_description::host>(*m_MRs->hostMR());
324 hostDesign->resize(designLookup.size());
325 for (const auto& [key, id] : designLookup) {
326 hostDesign->design_id()[id] = static_cast<int>(id);
327
328 hostDesign->dimensions()[id] = key.pixel ? 2 : 1;
329
330 if(!key.isAnnulus){
331 hostDesign->bin_edges_x()[id].assign(key.edgesX.begin(), key.edgesX.end());
332 hostDesign->bin_edges_y()[id].assign(key.edgesY.begin(), key.edgesY.end());
333 hostDesign->subspace()[id] = std::array<detray::dindex_type<traccc::default_algebra>, 2u>{0u, 1u};
334 }else{
335 hostDesign->bin_edges_y()[id].assign(key.edgesX.begin(), key.edgesX.end());
336 hostDesign->bin_edges_x()[id].assign(key.edgesY.begin(), key.edgesY.end());
337 hostDesign->subspace()[id] = std::array<detray::dindex_type<traccc::default_algebra>, 2u>{1u, 0u};
338 }
339
340 }
341
342 std::vector<unsigned int> designSizes(hostDesign->size());
343 for (std::size_t i = 0; i < hostDesign->size(); ++i) {
344 auto thisDesign = hostDesign->at(i);
345 designSizes[i] = std::max(
346 static_cast<unsigned int>(thisDesign.bin_edges_x().size()),
347 static_cast<unsigned int>(thisDesign.bin_edges_y().size()));
348 }
349
350 auto initCopy = m_copy->copy(EventContext{});
351 auto deviceDesign = std::make_unique<traccc::detector_design_description::buffer>(
352 designSizes, m_MRs->mainMR(), m_MRs->hostMR(),
353 vecmem::data::buffer_type::resizable);
354 (*initCopy).setup(*deviceDesign)->wait();
355 (*initCopy)(vecmem::get_data(*hostDesign), *deviceDesign)->wait();
356
357 constexpr bool allowMods = false;
358 ATH_CHECK(m_detStore->record(std::move(deviceDesign), m_deviceDesignObjectName.value(), allowMods));
359 ATH_CHECK(m_detStore->record(std::move(hostDesign), m_hostDesignObjectName.value(), allowMods));
360 ATH_CHECK(m_detStore->record(std::move(idMapping), m_geoIdMappingObjectName.value(), allowMods));
361
362 auto deviceDetector = std::make_unique<traccc::detector_buffer>();
363 deviceDetector->set<traccc::itk_detector>(
364 detray::get_buffer(itkDetector, m_MRs->mainMR(), const_cast<vecmem::copy&>(*initCopy)));
365 ATH_CHECK(m_detStore->record(std::move(deviceDetector), m_deviceDetectorName.value(), allowMods));
366
367 ATH_MSG_DEBUG("Recorded host and device detector design description: " << m_hostDesignObjectName.value() << ", " << m_deviceDesignObjectName.value());
368
369 } else {
370 ATH_MSG_FATAL("Tracking Geometry empty!!");
371 return StatusCode::FAILURE;
372 }
373
374
375 return StatusCode::SUCCESS;
376}
const ActsDetectorElement * getActsDetectorElement(const Acts::Surface &surf)
Attempts to retrieve the ActsDetectorElement associated to the passed ActsSurface.
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_VERBOSE(x,...)
#define ATH_MSG_INFO(x,...)
#define ATH_MSG_FATAL(x,...)
const PixelID * m_pixelID
Conversion helpers (to retrieve module design, hash, etc.) {.
const InDetDD::SCT_DetectorManager * m_stripManager
ToolHandle< AthDevice::ICopyTool > m_copy
The copy tool used for copying data to device.
ToolHandle< AthDevice::IMemoryResourcesTool > m_MRs
Gaudi::Property< std::string > m_geoIdMappingObjectName
Gaudi::Property< std::string > m_deviceDesignObjectName
ServiceHandle< ActsTrk::ITrackingGeometrySvc > m_trackingGeometrySvc
const InDetDD::PixelDetectorManager * m_pixelManager
std::shared_ptr< const Acts::TrackingGeometry > m_trackingGeometry
std::map< Identifier, moduleInfo > m_atlasModuleInfo
Gaudi::Property< std::string > m_hostDesignObjectName
Gaudi::Property< std::string > m_deviceDetectorName
static constexpr std::array< PixelDiodeTree::CellIndexType, 2 > makeCellIndex(T local_x_idx, T local_y_idx)
Create a 2D cell index from the indices in local-x (phi, row) and local-y (eta, column) direction.
DetectorType
Simple enum to Identify the Type of the ACTS sub detector.
@ Pixel
Inner detector legacy.
std::vector< traccc::scalar > makeEquidistantEdges(float halfWidth, int nBins)
m_data push_back(elt)
row
Appending html table to final .html summary file.
@ u
Enums for curvilinear frames.
Definition ParamDefs.h:77
@ nStrip
Get number of strips.
Definition TauDefs.h:204
std::vector< traccc::scalar > row_centres
std::vector< traccc::scalar > column_centres

◆ staticCondEntries()

virtual const std::vector< StaticCondEntry > & ActsTrk::DeviceDetectorDescriptionSvc::staticCondEntries ( ) const
inlineoverridevirtual

Static per-module entries, indexed like the detector conditions description.

Definition at line 114 of file DeviceDetectorDescriptionSvc.h.

114 {
115 return m_staticCondEntries;
116 }

Member Data Documentation

◆ m_atlasModuleInfo

std::map<Identifier, moduleInfo> ActsTrk::DeviceDetectorDescriptionSvc::m_atlasModuleInfo
private

Definition at line 172 of file DeviceDetectorDescriptionSvc.h.

◆ m_copy

ToolHandle<AthDevice::ICopyTool> ActsTrk::DeviceDetectorDescriptionSvc::m_copy
private
Initial value:
{
this, "CopyProviderTool", "", "Vecmem copy provider tool"}

The copy tool used for copying data to device.

Definition at line 130 of file DeviceDetectorDescriptionSvc.h.

130 {
131 this, "CopyProviderTool", "", "Vecmem copy provider tool"};

◆ m_detStore

ServiceHandle<StoreGateSvc> ActsTrk::DeviceDetectorDescriptionSvc::m_detStore {this, "DetectorStore", "StoreGateSvc/DetectorStore"}
private

Definition at line 120 of file DeviceDetectorDescriptionSvc.h.

120{this, "DetectorStore", "StoreGateSvc/DetectorStore"};

◆ m_deviceDesignObjectName

Gaudi::Property<std::string> ActsTrk::DeviceDetectorDescriptionSvc::m_deviceDesignObjectName
private
Initial value:
{
this, "DeviceDigitizationObjectName", "",
"Traccc device digitization object"}

Definition at line 143 of file DeviceDetectorDescriptionSvc.h.

143 {
144 this, "DeviceDigitizationObjectName", "",
145 "Traccc device digitization object"};

◆ m_deviceDetectorName

Gaudi::Property<std::string> ActsTrk::DeviceDetectorDescriptionSvc::m_deviceDetectorName
private
Initial value:
{
this, "DeviceDetectorName", "",
"StoreGate name for the device (buffer) detector object"}

Definition at line 137 of file DeviceDetectorDescriptionSvc.h.

137 {
138 this, "DeviceDetectorName", "",
139 "StoreGate name for the device (buffer) detector object"};

◆ m_geoIdMappingObjectName

Gaudi::Property<std::string> ActsTrk::DeviceDetectorDescriptionSvc::m_geoIdMappingObjectName
private
Initial value:
{
this, "GeoIdMappingObjectName", "",
"StoreGate name for the detray/acts/athena geo id mapping"}

Definition at line 151 of file DeviceDetectorDescriptionSvc.h.

151 {
152 this, "GeoIdMappingObjectName", "",
153 "StoreGate name for the detray/acts/athena geo id mapping"};

◆ m_hostDesignObjectName

Gaudi::Property<std::string> ActsTrk::DeviceDetectorDescriptionSvc::m_hostDesignObjectName
private
Initial value:
{
this, "HostDigitizationObjectName", "",
"Traccc host digitization object"}

Definition at line 146 of file DeviceDetectorDescriptionSvc.h.

146 {
147 this, "HostDigitizationObjectName", "",
148 "Traccc host digitization object"};

◆ m_hostDetectorName

Gaudi::Property<std::string> ActsTrk::DeviceDetectorDescriptionSvc::m_hostDetectorName
private
Initial value:
{
this, "HostDetectorName", "",
"Detray host detector object"}

Definition at line 133 of file DeviceDetectorDescriptionSvc.h.

133 {
134 this, "HostDetectorName", "",
135 "Detray host detector object"};

◆ m_MRs

ToolHandle<AthDevice::IMemoryResourcesTool> ActsTrk::DeviceDetectorDescriptionSvc::m_MRs
private
Initial value:
{
this, "MemoryResourcesTool", "",
"The memory resources tool to use for allocating memory on the device"}

Definition at line 124 of file DeviceDetectorDescriptionSvc.h.

124 {
125 this, "MemoryResourcesTool", "",
126 "The memory resources tool to use for allocating memory on the device"};

◆ m_pixelID

const PixelID* ActsTrk::DeviceDetectorDescriptionSvc::m_pixelID {nullptr}
private

Conversion helpers (to retrieve module design, hash, etc.) {.

Definition at line 157 of file DeviceDetectorDescriptionSvc.h.

157{nullptr};

◆ m_pixelIdHelperName

Gaudi::Property<std::string> ActsTrk::DeviceDetectorDescriptionSvc::m_pixelIdHelperName
private
Initial value:
{this, "PixelIDHelperName", "PixelID",
"Pixel-like ID helper name to retrieve from DetectorStore"}

Definition at line 159 of file DeviceDetectorDescriptionSvc.h.

159 {this, "PixelIDHelperName", "PixelID",
160 "Pixel-like ID helper name to retrieve from DetectorStore"};

◆ m_pixelManager

const InDetDD::PixelDetectorManager* ActsTrk::DeviceDetectorDescriptionSvc::m_pixelManager {nullptr}
private

Definition at line 164 of file DeviceDetectorDescriptionSvc.h.

164{nullptr};

◆ m_staticCondEntries

std::vector<StaticCondEntry> ActsTrk::DeviceDetectorDescriptionSvc::m_staticCondEntries
private

Definition at line 169 of file DeviceDetectorDescriptionSvc.h.

◆ m_stripID

const SCT_ID* ActsTrk::DeviceDetectorDescriptionSvc::m_stripID {nullptr}
private

Definition at line 158 of file DeviceDetectorDescriptionSvc.h.

158{nullptr};

◆ m_stripIdHelperName

Gaudi::Property<std::string> ActsTrk::DeviceDetectorDescriptionSvc::m_stripIdHelperName
private
Initial value:
{this, "StripIDHelperName", "SCT_ID",
"Strip-like ID helper name to retrieve from DetectorStore"}

Definition at line 161 of file DeviceDetectorDescriptionSvc.h.

161 {this, "StripIDHelperName", "SCT_ID",
162 "Strip-like ID helper name to retrieve from DetectorStore"};

◆ m_stripManager

const InDetDD::SCT_DetectorManager* ActsTrk::DeviceDetectorDescriptionSvc::m_stripManager {nullptr}
private

Definition at line 165 of file DeviceDetectorDescriptionSvc.h.

165{nullptr};

◆ m_trackingGeometry

std::shared_ptr<const Acts::TrackingGeometry> ActsTrk::DeviceDetectorDescriptionSvc::m_trackingGeometry
private

Definition at line 171 of file DeviceDetectorDescriptionSvc.h.

◆ m_trackingGeometrySvc

ServiceHandle<ActsTrk::ITrackingGeometrySvc> ActsTrk::DeviceDetectorDescriptionSvc::m_trackingGeometrySvc {this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"}
private

Definition at line 174 of file DeviceDetectorDescriptionSvc.h.

174{this, "TrackingGeometrySvc", "ActsTrackingGeometrySvc"};

The documentation for this class was generated from the following files: