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

Algorithm converting traccc measurements (device buffer) to xAOD clusters (host container). More...

#include <TracccMeasurementConverterAlg.h>

Inheritance diagram for ActsTrk::TracccMeasurementConverterAlg:

Public Member Functions

virtual StatusCode initialize () override
 Function initializing the algorithm.
virtual StatusCode execute (const EventContext &ctx) const override
 Function executing the algorithm.
virtual StatusCode finalize () override
 Function finalizing the algorthm.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

const std::unordered_map< uint64_t, Identifier > * m_detrayToAthena {}
 The athena <-> detray identifier map.
const PixelIDm_pixelID {nullptr}
 Conversion helpers (to retrieve module design, hash, etc.) {.
const SCT_IDm_stripID {nullptr}
Gaudi::Property< std::string > m_idHelperName
const InDetDD::PixelDetectorManagerm_pixelManager {nullptr}
const InDetDD::SCT_DetectorManagerm_stripManager {nullptr}
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared
Bolean variable deciding weather the conversion includes cell to cluster association
Gaudi::Property< bool > m_convertClustersWithCells
The input device resident cluster, measurement and cell collection names

{@

SG::ReadHandleKey< traccc::edm::measurement_collection::buffer > m_inputMeasKey
SG::ReadHandleKey< traccc::edm::silicon_cluster_collection::buffer > m_inputClusterKey
SG::ReadHandleKey< traccc::edm::silicon_cell_collection::buffer > m_inputCellsKey
The output host resident cluster container names

{@

SG::WriteHandleKey< xAOD::PixelClusterContainerm_outputPixelKey
SG::WriteHandleKey< xAOD::StripClusterContainerm_outputStripKey
The host memory resource tool to use for memory allocations
ToolHandle< AthDevice::IMemoryResourceToolm_hostMR
The copy tool used for copying data from device
ToolHandle< AthDevice::ICopyToolm_copy
The detector description service providing the Athena<->Detray ID map
ServiceHandle< ActsTrk::IDeviceDetectorDescriptionProviderSvcm_detDescSvc
std::atomic< int > m_nPix = 0
 The object counters for debug prints in finalize method {.
std::atomic< int > m_nStrip = 0
std::atomic< int > m_nMeas = 0

Detailed Description

Algorithm converting traccc measurements (device buffer) to xAOD clusters (host container).

This algorithm retrieves the input traccc measurement collection device buffer from the event store, copies the data to host buffer and converts the traccc measurements to xAOD clusters. In case the clusters require the associated RDOs (e.g. for truth matching), the algorithm also retrieves the traccc cluster collection device buffer from the event store, and uses the cell indices stored in the traccc clusters to construct an RDO list associated with each xAOD cluster.

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

Definition at line 58 of file TracccMeasurementConverterAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode ActsTrk::TracccMeasurementConverterAlg::execute ( const EventContext & ctx) const
overridevirtual

Function executing the algorithm.

Definition at line 137 of file TracccMeasurementConverterAlg.cxx.

138{
139 // ---- Retrieve measurements (always needed) ----
140 auto measurements = SG::makeHandle(m_inputMeasKey, ctx);
141 ATH_CHECK(measurements.isValid());
142
143 auto copy = m_copy->copy(ctx);
144
145 traccc::edm::measurement_collection::buffer traccc_measurements_buffer{
146 copy->get_size(*measurements), m_hostMR->mr()};
147 copy->setup(traccc_measurements_buffer)->ignore();
148 (*copy)(*measurements, traccc_measurements_buffer)->wait();
149
150 traccc::edm::measurement_collection::const_device traccc_measurements(
151 traccc_measurements_buffer);
152
153 // ---- Optionally retrieve clusters and cells ----
154 std::optional<traccc::edm::silicon_cluster_collection::buffer> traccc_clusters_buffer;
155 std::optional<traccc::edm::silicon_cell_collection::buffer> traccc_cells_buffer;
156 std::optional<traccc::edm::silicon_cluster_collection::const_device> traccc_clusters;
157 std::optional<traccc::edm::silicon_cell_collection::const_device> traccc_cells;
158
160 ATH_MSG_DEBUG("Read " << traccc_measurements.size() << " traccc measurements from " << m_inputMeasKey.key());
161 ATH_MSG_DEBUG("Read traccc clusters from '"
162 << m_inputClusterKey.key()
163 << "' and will convert them with associated cells.");
164
165 SG::ReadHandle<traccc::edm::silicon_cluster_collection::buffer> clusters{
166 m_inputClusterKey, ctx};
167 ATH_CHECK(clusters.isValid());
168 SG::ReadHandle<traccc::edm::silicon_cell_collection::buffer> cells{
169 m_inputCellsKey, ctx};
170 ATH_CHECK(cells.isValid());
171
172 traccc_clusters_buffer.emplace(copy->get_sizes(*clusters), m_hostMR->mr());
173 copy->setup(*traccc_clusters_buffer)->wait();
174 (*copy)(*clusters, *traccc_clusters_buffer)->wait();
175
176 traccc_cells_buffer.emplace(copy->get_size(*cells), m_hostMR->mr());
177 copy->setup(*traccc_cells_buffer)->wait();
178 (*copy)(*cells, *traccc_cells_buffer)->wait();
179
180 traccc_clusters.emplace(*traccc_clusters_buffer);
181 ATH_MSG_DEBUG("Copied " << traccc_clusters->size() << " clusters.");
182
183 traccc_cells.emplace(*traccc_cells_buffer);
184 ATH_MSG_DEBUG("Copied " << traccc_cells->size() << " cells.");
185 } else {
186 ATH_MSG_DEBUG("Read traccc measurements from '"
187 << m_inputMeasKey.key()
188 << "' and will convert them without associated cells.");
189 }
190
191 // ---- Count pixel vs strip ----
192 const auto [n_pixels, n_strips] = countPixelStrip(traccc_measurements);
193
194 // ---- Create output containers ----
195 auto [pixel_cont, pixel_aux] =
197 auto [strip_cont, strip_aux] =
199
200 // ---- Convert ----
201 auto pixItr = pixel_cont->begin();
202 auto stripItr = strip_cont->begin();
203
204 std::size_t pixel_idx = 0;
205 std::size_t strip_idx = 0;
206
207 for (std::size_t i = 0; i < traccc_measurements.size(); ++i) {
208 const auto& meas = traccc_measurements.at(i);
209 const uint64_t detrayId = meas.surface_link().value();
210 const Identifier athenaId = m_detrayToAthena->at(detrayId);
211
212 // ---- Pixel ----
213 if (meas.dimensions() == 2u) {
214 xAOD::PixelCluster* xaod_pcl = *pixItr;
215 ++pixItr;
216
217 // once seeding will come into play, we will need to keep track of the
218 // mapping between traccc and xAOD clusters. The reason for this is
219 // because the traccc measurements are all in one collection, and the
220 // xAOD clusters are in two separate collections (pixel and strip)
221 // if (traccc_to_xaod_cluster_map != nullptr) {
222 // (*traccc_to_xaod_cluster_map)[meas.identifier()] = pixel_idx;
223 // }
224
225 const IdentifierHash Pixel_ModuleHash =
226 m_pixelID->wafer_hash(athenaId);
227 const InDetDD::SiDetectorElement* pDE =
228 m_pixelManager->getDetectorElement(Pixel_ModuleHash);
229 const InDetDD::PixelModuleDesign* design(
230 dynamic_cast<const InDetDD::PixelModuleDesign*>(
231 &pDE->design()));
232 if(design == nullptr){
233 ATH_MSG_FATAL("Could not retrieve module design for pixel module hash " << Pixel_ModuleHash);
234 return StatusCode::FAILURE;
235 }
236
237 fillPixelCluster(meas, athenaId, m_pixelID, m_pixelManager, *xaod_pcl,
238 pixel_idx + strip_idx);
239
241 const auto cluster = traccc_clusters->at(meas.cluster_index());
242
243 std::vector<Identifier> rdoList;
244 rdoList.reserve(cluster.cell_indices().size());
245 int phiIndicesMax = -1;
246 int etaIndicesMax = -1;
247 int phiIndicesMin = std::numeric_limits<int>::max();
248 int etaIndicesMin = std::numeric_limits<int>::max();
249
250 for (const unsigned int cell_idx : cluster.cell_indices()) {
251 const auto& cell = traccc_cells->at(cell_idx);
252
253 int const phiIndex = cell.channel0();
254 int const etaIndex = cell.channel1();
255
256 phiIndicesMax = std::max(phiIndicesMax, phiIndex);
257 etaIndicesMax = std::max(etaIndicesMax, etaIndex);
258 phiIndicesMin = std::min(phiIndicesMin, phiIndex);
259 etaIndicesMin = std::min(etaIndicesMin, etaIndex);
260
261 Identifier const hit_id =
262 m_pixelID->pixel_id(athenaId, phiIndex, etaIndex);
263 rdoList.push_back(hit_id);
264 }
265
266 double const colWidth = static_cast<double>((etaIndicesMax - etaIndicesMin) + 1);
267 double const rowWidth = static_cast<double>((phiIndicesMax - phiIndicesMin) + 1);
268 double const etaWidth =
269 design->widthFromColumnRange(etaIndicesMin, etaIndicesMax);
270 double const phiWidth = design->widthFromRowRange(phiIndicesMin, phiIndicesMax);
271
272 InDet::SiWidth siWidth(Amg::Vector2D(rowWidth, colWidth),
273 Amg::Vector2D(phiWidth, etaWidth));
274
275 float width0 = phiWidth / rowWidth;
276 float width1 = etaWidth / colWidth;
277 Eigen::Matrix<float, 2, 2> localCovariance =
278 Eigen::Matrix<float, 2, 2>::Zero();
279 localCovariance(0, 0) = width0 * width0 / 12.0f;
280 localCovariance(1, 1) = width1 * width1 / 12.0f;
281
282 Eigen::Matrix<float, 2, 1> localPosition(meas.local_position()[0], meas.local_position()[1]);
283 xaod_pcl->setMeasurement<2>(Pixel_ModuleHash, localPosition,
284 localCovariance);
285
286 std::sort(rdoList.begin(), rdoList.end());
287 xaod_pcl->setIdentifier(rdoList.front().get_compact());
288 xaod_pcl->setRDOlist(std::move(rdoList));
289 xaod_pcl->setChannelsInPhiEta(siWidth.colRow()[0],
290 siWidth.colRow()[1]);
291 float width_phiRZ = static_cast<float>(siWidth.widthPhiRZ()[1]);
292 xaod_pcl->setWidthInEta(width_phiRZ);
293
294 }
295 ++pixel_idx;
296
297 // ---- Strip ----
298 } else {
299 xAOD::StripCluster* xaod_scl = *stripItr;
300 ++stripItr;
301
302 // see comment above for pixel clusters, the same applies here
303 // if (traccc_to_xaod_cluster_map != nullptr) {
304 // (*traccc_to_xaod_cluster_map)[meas.identifier()] = strip_idx;
305 // }
306 const IdentifierHash Strip_ModuleHash =
307 m_stripID->wafer_hash(athenaId);
308 const InDetDD::SiDetectorElement* pDE =
309 m_stripManager->getDetectorElement(Strip_ModuleHash);
310
311 fillStripCluster(meas, athenaId, m_stripID, m_stripManager, *xaod_scl,
312 pixel_idx + strip_idx);
313
315 const auto cluster = traccc_clusters->at(meas.cluster_index());
316
317 std::vector<Identifier> rdoList;
318 rdoList.reserve(cluster.cell_indices().size());
319 int phiIndicesMax = -1;
320 int phiIndicesMin = std::numeric_limits<int>::max();
321
322 for (const unsigned int cell_idx : cluster.cell_indices()) {
323 const auto& cell = traccc_cells->at(cell_idx);
324
325 // (m_stripID->barrel_ec(athenaId) != 0) <=> endcap strip
326 // => we are working with polar coordinates (r,phi)
327 // and we have to swap the indices
328 int const phiIndex = (m_stripID->barrel_ec(athenaId) != 0)
329 ? cell.channel1()
330 : cell.channel0();
331
332 phiIndicesMax = std::max(phiIndicesMax, phiIndex);
333 phiIndicesMin = std::min(phiIndicesMin, phiIndex);
334 Identifier const hit_id =
335 m_stripID->strip_id(athenaId, int(phiIndex));
336 rdoList.push_back(hit_id);
337 }
338
339 std::sort(rdoList.begin(), rdoList.end());
340 const int firstStrip = m_stripID->strip(rdoList.front());
341 const int lastStrip = m_stripID->strip(rdoList.back());
342
343 const InDetDD::SCT_ModuleSideDesign* design;
344 if (pDE->isBarrel()) {
345 design = (static_cast<const InDetDD::SCT_ModuleSideDesign*>(
346 &pDE->design()));
347 } else {
348 design = (static_cast<const InDetDD::StripStereoAnnulusDesign*>(
349 &pDE->design()));
350 }
351
352 const int row = m_stripID->row(rdoList.front());
353 const int firstStrip1D = design->strip1Dim(firstStrip, row);
354 const int lastStrip1D = design->strip1Dim(lastStrip, row);
355 const InDetDD::SiCellId cell1(firstStrip1D);
356 const InDetDD::SiCellId cell2(lastStrip1D);
357 const InDetDD::SiLocalPosition firstStripPos(
358 pDE->rawLocalPositionOfCell(cell1));
359 const InDetDD::SiLocalPosition lastStripPos(
360 pDE->rawLocalPositionOfCell(cell2));
361 const InDetDD::SiLocalPosition centre(
362 (firstStripPos + lastStripPos) * 0.5);
363 const std::pair<InDetDD::SiLocalPosition, InDetDD::SiLocalPosition>
364 ends(design->endsOfStrip(centre));
365 const double stripLength(
366 std::abs(ends.first.xEta() - ends.second.xEta()));
367 const double width =
368 design->stripPitch() * (lastStrip - firstStrip + 1);
369
370 double const phiWidth = static_cast<double>((phiIndicesMax - phiIndicesMin) + 1);
371 InDet::SiWidth siWidth(Amg::Vector2D(phiWidth, 1),
372 Amg::Vector2D(width, stripLength));
373
374 xaod_scl->setIdentifier(rdoList.front().get_compact());
375 xaod_scl->setRDOlist(std::move(rdoList));
376 xaod_scl->setChannelsInPhi(siWidth.colRow()[0]);
377
378 }
379 ++strip_idx;
380 }
381 }
382
383 ATH_MSG_DEBUG("Converted " << pixel_idx << " pixel clusters, " << strip_idx
384 << " strip clusters");
385
386 m_nMeas += traccc_measurements.size();
387 m_nPix += pixel_idx;
388 m_nStrip += strip_idx;
389
390 // ---- Write outputs ----
391 SG::WriteHandle<xAOD::PixelClusterContainer> pixelHandle{m_outputPixelKey,
392 ctx};
393 ATH_CHECK(pixelHandle.record(std::move(pixel_cont), std::move(pixel_aux)));
394
395 SG::WriteHandle<xAOD::StripClusterContainer> stripHandle{m_outputStripKey,
396 ctx};
397 ATH_CHECK(stripHandle.record(std::move(strip_cont), std::move(strip_aux)));
398
399 return StatusCode::SUCCESS;
400}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_DEBUG(x)
const double width
SG::ReadHandleKey< traccc::edm::measurement_collection::buffer > m_inputMeasKey
SG::WriteHandleKey< xAOD::StripClusterContainer > m_outputStripKey
SG::ReadHandleKey< traccc::edm::silicon_cell_collection::buffer > m_inputCellsKey
SG::ReadHandleKey< traccc::edm::silicon_cluster_collection::buffer > m_inputClusterKey
ToolHandle< AthDevice::IMemoryResourceTool > m_hostMR
std::atomic< int > m_nPix
The object counters for debug prints in finalize method {.
const PixelID * m_pixelID
Conversion helpers (to retrieve module design, hash, etc.) {.
const std::unordered_map< uint64_t, Identifier > * m_detrayToAthena
The athena <-> detray identifier map.
SG::WriteHandleKey< xAOD::PixelClusterContainer > m_outputPixelKey
const InDetDD::SCT_DetectorManager * m_stripManager
const InDetDD::PixelDetectorManager * m_pixelManager
virtual double stripPitch(const SiLocalPosition &chargePos) const =0
give the strip pitch (dependence on position needed for forward)
virtual int strip1Dim(int strip, int row) const override
only relevant for SCT.
virtual std::pair< SiLocalPosition, SiLocalPosition > endsOfStrip(const SiLocalPosition &position) const override=0
give the ends of strips
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
Amg::Vector2D rawLocalPositionOfCell(const SiCellId &cellId) const
Returns position (center) of cell.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
void setChannelsInPhiEta(int channelsInPhi, int channelsInEta)
Sets the dimensions of the cluster in numbers of channels in phi (x) and eta (y) directions.
void setRDOlist(const std::vector< Identifier > &rdolist)
Sets the list of identifiers of the channels building the cluster.
void setWidthInEta(float widthInEta)
Sets the width of the cluster in eta (y) direction.
void setRDOlist(const std::vector< Identifier > &rdolist)
Sets the list of identifiers of the channels building the cluster.
void setChannelsInPhi(int channelsInPhi)
Sets the dimensions of the cluster in numbers of channels in phi (x).
void setMeasurement(const DetectorIDHashType idHash, MeasVector< N > locPos, MeasMatrix< N > locCov)
Sets IdentifierHash, local position and local covariance of the measurement.
void setIdentifier(const DetectorIdentType measId)
Sets the full Identifier of the measurement.
void fillPixelCluster(const MEAS &meas, const Identifier &athenaId, const PixelID *pixelID, const InDetDD::PixelDetectorManager *pixelManager, xAOD::PixelCluster &xaod_pcl, std::size_t combinedIndex)
void fillStripCluster(const MEAS &meas, const Identifier &athenaId, const SCT_ID *stripID, const InDetDD::SCT_DetectorManager *stripManager, xAOD::StripCluster &xaod_scl, std::size_t combinedIndex)
std::pair< std::unique_ptr< ContainerT >, std::unique_ptr< AuxContainerT > > makeOutputContainer(const EventContext &ctx, int n)
std::pair< int, int > countPixelStrip(const traccc::edm::measurement_collection::const_device &measurements)
Count the number of measurements 2D (pixel) vs 1D (strip).
Eigen::Matrix< double, 2, 1 > Vector2D
row
Appending html table to final .html summary file.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
bool copy
Definition calibdata.py:26
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
Definition EtaPhiLUT.cxx:23
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
StripCluster_v1 StripCluster
Define the version of the strip cluster class.
PixelCluster_v1 PixelCluster
Define the version of the pixel cluster class.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ finalize()

StatusCode ActsTrk::TracccMeasurementConverterAlg::finalize ( )
overridevirtual

Function finalizing the algorthm.

Definition at line 402 of file TracccMeasurementConverterAlg.cxx.

403{
404 ATH_MSG_DEBUG("Finalizing.");
405
406 ATH_MSG_DEBUG("Received total number of measurements = " << m_nMeas
407 << ", of which pixel clusters = " << m_nPix
408 << " and strip clusters = " << m_nStrip);
409
410 ATH_MSG_DEBUG("Successfully finalized");
411 return StatusCode::SUCCESS;
412}

◆ initialize()

StatusCode ActsTrk::TracccMeasurementConverterAlg::initialize ( )
overridevirtual

Function initializing the algorithm.

Definition at line 19 of file TracccMeasurementConverterAlg.cxx.

20{
21 ATH_MSG_DEBUG("Initializing.");
22
23 ATH_CHECK(m_hostMR.retrieve());
24 ATH_CHECK(m_copy.retrieve());
25
26 ATH_CHECK(m_inputMeasKey.initialize());
29
30 ATH_CHECK(m_outputPixelKey.initialize());
31 ATH_CHECK(m_outputStripKey.initialize());
32
34 ATH_CHECK(detStore()->retrieve(m_stripID, "SCT_ID"));
35 ATH_CHECK(detStore()->retrieve(m_pixelManager, "ITkPixel"));
36 ATH_CHECK(detStore()->retrieve(m_stripManager, "ITkStrip"));
37
38 m_detrayToAthena = &m_detDescSvc->detrayToAthenaMap();
39
40 ATH_MSG_DEBUG("Successfully initialized");
41 return StatusCode::SUCCESS;
42}
ServiceHandle< ActsTrk::IDeviceDetectorDescriptionProviderSvc > m_detDescSvc
const ServiceHandle< StoreGateSvc > & detStore() const

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, HypoBase, InputMakerBase, and PyAthena::Alg.

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_convertClustersWithCells

Gaudi::Property<bool> ActsTrk::TracccMeasurementConverterAlg::m_convertClustersWithCells
private
Initial value:
{
this, "ConvertClustersWithCells", true,
"Whether to associate cells with the clusters."}

Definition at line 73 of file TracccMeasurementConverterAlg.h.

73 {
74 this, "ConvertClustersWithCells", true,
75 "Whether to associate cells with the clusters."};

◆ m_copy

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

Definition at line 104 of file TracccMeasurementConverterAlg.h.

104 {
105 this, "CopyProviderTool", "", "Vecmem copy provider tool"};

◆ m_detDescSvc

ServiceHandle<ActsTrk::IDeviceDetectorDescriptionProviderSvc> ActsTrk::TracccMeasurementConverterAlg::m_detDescSvc
private
Initial value:
{
this, "DetectorDescriptionSvc", "ActsTrk::JSONDeviceDetectorDescriptionProviderSvc"}

Definition at line 107 of file TracccMeasurementConverterAlg.h.

107 {
108 this, "DetectorDescriptionSvc", "ActsTrk::JSONDeviceDetectorDescriptionProviderSvc"};

◆ m_detrayToAthena

const std::unordered_map<uint64_t, Identifier>* ActsTrk::TracccMeasurementConverterAlg::m_detrayToAthena {}
private

The athena <-> detray identifier map.

Definition at line 118 of file TracccMeasurementConverterAlg.h.

118{};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_hostMR

ToolHandle<AthDevice::IMemoryResourceTool> ActsTrk::TracccMeasurementConverterAlg::m_hostMR
private
Initial value:
{
this, "HostMR", "", "Host memory resource tool"}

Definition at line 101 of file TracccMeasurementConverterAlg.h.

101 {
102 this, "HostMR", "", "Host memory resource tool"};

◆ m_idHelperName

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

Definition at line 124 of file TracccMeasurementConverterAlg.h.

124 {this, "IDHelperName", "PixelID",
125 "Pixel-like ID helper name to retrieve from DetectorStore"};

◆ m_inputCellsKey

SG::ReadHandleKey<traccc::edm::silicon_cell_collection::buffer> ActsTrk::TracccMeasurementConverterAlg::m_inputCellsKey
private
Initial value:
{
this, "InputCells", "TracccCells",
"Input traccc cell collection buffer"}

Definition at line 85 of file TracccMeasurementConverterAlg.h.

85 {
86 this, "InputCells", "TracccCells",
87 "Input traccc cell collection buffer"};

◆ m_inputClusterKey

SG::ReadHandleKey<traccc::edm::silicon_cluster_collection::buffer> ActsTrk::TracccMeasurementConverterAlg::m_inputClusterKey
private
Initial value:
{
this, "InputClusters", "TracccClusters",
"Input traccc cluster collection buffer"}

Definition at line 82 of file TracccMeasurementConverterAlg.h.

82 {
83 this, "InputClusters", "TracccClusters",
84 "Input traccc cluster collection buffer"};

◆ m_inputMeasKey

SG::ReadHandleKey<traccc::edm::measurement_collection::buffer> ActsTrk::TracccMeasurementConverterAlg::m_inputMeasKey
private
Initial value:
{
this, "InputMeasurements", "TracccMeasurements",
"Input traccc measurement collection buffer"}

Definition at line 79 of file TracccMeasurementConverterAlg.h.

79 {
80 this, "InputMeasurements", "TracccMeasurements",
81 "Input traccc measurement collection buffer"};

◆ m_nMeas

std::atomic<int> ActsTrk::TracccMeasurementConverterAlg::m_nMeas = 0
mutableprivate

Definition at line 114 of file TracccMeasurementConverterAlg.h.

◆ m_nPix

std::atomic<int> ActsTrk::TracccMeasurementConverterAlg::m_nPix = 0
mutableprivate

The object counters for debug prints in finalize method {.

Definition at line 112 of file TracccMeasurementConverterAlg.h.

◆ m_nStrip

std::atomic<int> ActsTrk::TracccMeasurementConverterAlg::m_nStrip = 0
mutableprivate

Definition at line 113 of file TracccMeasurementConverterAlg.h.

◆ m_outputPixelKey

SG::WriteHandleKey<xAOD::PixelClusterContainer> ActsTrk::TracccMeasurementConverterAlg::m_outputPixelKey
private
Initial value:
{
this, "OutputPixelClusters", "ITkTracccPixelClusters",
"Output xAOD pixel cluster container"}

Definition at line 92 of file TracccMeasurementConverterAlg.h.

92 {
93 this, "OutputPixelClusters", "ITkTracccPixelClusters",
94 "Output xAOD pixel cluster container"};

◆ m_outputStripKey

SG::WriteHandleKey<xAOD::StripClusterContainer> ActsTrk::TracccMeasurementConverterAlg::m_outputStripKey
private
Initial value:
{
this, "OutputStripClusters", "ITkTracccStripClusters",
"Output xAOD strip cluster container"}

Definition at line 95 of file TracccMeasurementConverterAlg.h.

95 {
96 this, "OutputStripClusters", "ITkTracccStripClusters",
97 "Output xAOD strip cluster container"};

◆ m_pixelID

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

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

Definition at line 122 of file TracccMeasurementConverterAlg.h.

122{nullptr};

◆ m_pixelManager

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

Definition at line 127 of file TracccMeasurementConverterAlg.h.

127{nullptr};

◆ m_stripID

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

Definition at line 123 of file TracccMeasurementConverterAlg.h.

123{nullptr};

◆ m_stripManager

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

Definition at line 128 of file TracccMeasurementConverterAlg.h.

128{nullptr};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


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