ATLAS Offline Software
Loading...
Searching...
No Matches
AuxiliaryMeasurementHandler.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6
10
11
12#include <format>
13#include <functional>
15
16#define RECORD_CONTAINER(HANDLE, AUXCONTAINER) \
17 if (!HANDLE.record(std::make_unique<ContType_t>(), \
18 std::make_unique<AUXCONTAINER>()).isSuccess()){ \
19 m_parent->m_msg<<MSG::FATAL<<"Failed to record " \
20 <<HANDLE.fullKey()<<endmsg; \
21 return StatusCode::FAILURE; \
22 }
23
24
25namespace ActsTrk{
26 StatusCode AuxiliaryMeasurementHandler::initialize(const std::string& preFix) {
27 unsigned counter{1};
28 for (auto& initMe : {&m_writeKey1D, &m_writeKey2D, &m_writeKey3D}){
29 (*initMe) = std::format("{:}AuxiliaryMeasContainer{:}D", preFix, counter++);
30 if (!initMe->initialize()) {
31 m_msg<<MSG::FATAL<<"Failed to initialize "<<(*initMe).fullKey()<<endmsg;
32 return StatusCode::FAILURE;
33 }
34 }
35 return StatusCode::SUCCESS;
36 }
37
39 const AuxiliaryMeasurementHandler* parent,
40 xAOD::TrackSurfaceContainer& surfaceBackend):
41 m_ctx{ctx},
42 m_parent{parent},
43 m_surfaceContainer{surfaceBackend}{}
52 xAOD::TrackSurfaceContainer& surfaceBackend) const {
53 MeasurementProvider newHandle{ctx, this, surfaceBackend};
54 if (!newHandle.setupContainers()) {
55 THROW_EXCEPTION("Failed to setup the auxillary handle");
56 }
57 return newHandle;
58 }
59}
60#undef RECORD_CONTAINER
#define endmsg
xAOD::AuxiliaryMeasurementContainer ContType_t
#define RECORD_CONTAINER(HANDLE, AUXCONTAINER)
Helper struct to create a new pseudo measurement.
StatusCode setupContainers()
Setup method to record the Auxiliary measurement containers into StoreGate.
MeasurementProvider(MeasurementProvider &&other)=default
Default move constructor.
StatusCode initialize(const std::string &preFix)
Initialize the write handle keys.
MeasurementProvider makeHandle(const EventContext &ctx, xAOD::TrackSurfaceContainer &surfaceBackend) const
Creates a new MeasurementProvider and triggers the write of the container backend to StoreGate.
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
AuxiliaryMeasurementAuxContainer1D_v1 AuxiliaryMeasurementAuxContainer1D
TrackSurfaceContainer_v1 TrackSurfaceContainer
AuxiliaryMeasurementAuxContainer3D_v1 AuxiliaryMeasurementAuxContainer3D
AuxiliaryMeasurementAuxContainer2D_v1 AuxiliaryMeasurementAuxContainer2D
AuxiliaryMeasurementContainer_v1 AuxiliaryMeasurementContainer
#define THROW_EXCEPTION(MESSAGE)
Definition throwExcept.h:10