ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
Acts
ActsEvent
Root
AuxiliaryMeasurementHandler.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
ActsEvent/AuxiliaryMeasurementHandler.h
"
6
7
#include "
xAODAuxiliaryMeasurement/AuxiliaryMeasurementAuxContainer1D.h
"
8
#include "
xAODAuxiliaryMeasurement/AuxiliaryMeasurementAuxContainer2D.h
"
9
#include "
xAODAuxiliaryMeasurement/AuxiliaryMeasurementAuxContainer3D.h
"
10
#include "
xAODTracking/TrackSurfaceAuxContainer.h
"
11
12
#include "
AthenaBaseComps/AthCheckMacros.h
"
13
14
#include <format>
15
#include <functional>
16
17
namespace
ActsTrk
{
18
MsgStream&
AuxiliaryMeasurementHandler::msg
(
const
MSG::Level lvl)
const
{
19
return
m_msgPrinter
(lvl);
20
}
21
22
bool
AuxiliaryMeasurementHandler::msgLvl
(
const
MSG::Level lvl)
const
{
23
return
m_msgLevel
(lvl);
24
}
25
StatusCode
AuxiliaryMeasurementHandler::initialize
(
const
std::string& preFix,
26
bool
used
) {
27
if
(preFix.empty()) {
28
ATH_MSG_ERROR
(
"The prefix key of the auxiliary measurements must no be empty"
);
29
return
StatusCode::FAILURE;
30
}
31
m_surfaceKey
= std::format(
"{:}AuxiliarySurfaceContainer"
, preFix);
32
if
(!
m_surfaceKey
.initialize(
used
).isSuccess()) {
33
ATH_MSG_ERROR
(
"Failed to initialize "
<<
m_surfaceKey
.fullKey());
34
return
StatusCode::FAILURE;
35
}
36
m_viewKey
= preFix;
37
if
(!
m_viewKey
.initialize(
used
).isSuccess()) {
38
ATH_MSG_ERROR
(
"Failed to initialize the view element key "
<<
m_viewKey
.fullKey());
39
return
StatusCode::FAILURE;
40
}
41
unsigned
counter{1};
42
for
(
auto
& initMe : {&
m_writeKey1D
, &
m_writeKey2D
, &
m_writeKey3D
}){
43
(*initMe) = std::format(
"{:}AuxiliaryMeasContainer{:}D"
, preFix, counter++);
44
if
(!initMe->initialize(
used
).isSuccess()) {
45
ATH_MSG_ERROR
(
"Failed to initialize "
<<(*initMe).fullKey());
46
return
StatusCode::FAILURE;
47
}
48
}
49
return
StatusCode::SUCCESS;
50
}
51
template
<
typename
AuxCont_t,
typename
Cont_t>
52
StatusCode
AuxiliaryMeasurementHandler::MeasurementProvider::recordContainer
(
SG::WriteHandle<Cont_t>
& handle) {
53
ATH_CHECK
(handle.record(std::make_unique<Cont_t>(), std::make_unique<AuxCont_t>()));
54
return
StatusCode::SUCCESS;
55
}
56
57
58
AuxiliaryMeasurementHandler::MeasurementProvider::MeasurementProvider
(
const
EventContext& ctx,
59
const
Acts::GeometryContext& gctx,
60
const
AuxiliaryMeasurementHandler
* parent):
61
m_ctx
{ctx},
62
m_gctx
{gctx},
63
m_parent
{parent}{}
64
StatusCode
AuxiliaryMeasurementHandler::MeasurementProvider::setupContainers
() {
65
ATH_CHECK
(
m_viewHandle
.record(std::make_unique<xAOD::AuxiliaryMeasurementContainer>(
SG::VIEW_ELEMENTS
)));
66
ATH_CHECK
(
recordContainer<xAOD::AuxiliaryMeasurementAuxContainer1D>
(
m_handle1D
));
67
ATH_CHECK
(
recordContainer<xAOD::AuxiliaryMeasurementAuxContainer2D>
(
m_handle2D
));
68
ATH_CHECK
(
recordContainer<xAOD::AuxiliaryMeasurementAuxContainer3D>
(
m_handle3D
));
69
ATH_CHECK
(
recordContainer<xAOD::TrackSurfaceAuxContainer>
(
m_surfaceContainer
));
70
return
StatusCode::SUCCESS;
71
}
72
AuxiliaryMeasurementHandler::HandleReturn_t
73
AuxiliaryMeasurementHandler::makeHandle
(
const
EventContext& ctx,
74
const
Acts::GeometryContext& gctx)
const
{
75
if
(
m_surfaceKey
.empty()) {
76
return
HandleReturn_t
{
HandleStatus::emptyKey
};
77
}
78
MeasurementProvider
newHandle{ctx, gctx,
this
};
79
if
(!newHandle.
setupContainers
().isSuccess()) {
80
return
HandleReturn_t
{
HandleStatus::recordFail
};
81
}
82
return
HandleReturn_t
{std::move(newHandle)};
83
}
84
}
85
#undef RECORD_CONTAINER
AthCheckMacros.h
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
AuxiliaryMeasurementAuxContainer1D.h
AuxiliaryMeasurementAuxContainer2D.h
AuxiliaryMeasurementAuxContainer3D.h
AuxiliaryMeasurementHandler.h
TrackSurfaceAuxContainer.h
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider
Helper struct to create a new pseudo measurement.
Definition
AuxiliaryMeasurementHandler.h:38
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::m_handle2D
WriteHandle_t m_handle2D
Dedicated write handle to store 2D measurements.
Definition
AuxiliaryMeasurementHandler.h:98
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::m_parent
const AuxiliaryMeasurementHandler * m_parent
Definition
AuxiliaryMeasurementHandler.h:87
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::m_viewHandle
WriteHandle_t m_viewHandle
Write handle to the VIEW_Elements container containing all created measurements.
Definition
AuxiliaryMeasurementHandler.h:94
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::m_ctx
std::reference_wrapper< const EventContext > m_ctx
Definition
AuxiliaryMeasurementHandler.h:85
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::m_surfaceContainer
SurfaceHandle_t m_surfaceContainer
Definition
AuxiliaryMeasurementHandler.h:101
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::recordContainer
StatusCode recordContainer(SG::WriteHandle< Cont_t > &handle)
Definition
AuxiliaryMeasurementHandler.cxx:52
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::m_handle1D
WriteHandle_t m_handle1D
Dedicated write handle to store 1D measurements.
Definition
AuxiliaryMeasurementHandler.h:96
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::m_gctx
std::reference_wrapper< const Acts::GeometryContext > m_gctx
Definition
AuxiliaryMeasurementHandler.h:86
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::setupContainers
StatusCode setupContainers()
Setup method to record the Auxiliary measurement containers into StoreGate.
Definition
AuxiliaryMeasurementHandler.cxx:64
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::AuxiliaryMeasurementHandler
friend class AuxiliaryMeasurementHandler
Definition
AuxiliaryMeasurementHandler.h:40
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::MeasurementProvider
MeasurementProvider(MeasurementProvider &&other)=default
Default move constructor.
ActsTrk::AuxiliaryMeasurementHandler::MeasurementProvider::m_handle3D
WriteHandle_t m_handle3D
Dedicated write handle to store 2D + time measurements.
Definition
AuxiliaryMeasurementHandler.h:100
ActsTrk::AuxiliaryMeasurementHandler::m_writeKey2D
Key_t m_writeKey2D
Key to write the 2D measurements.
Definition
AuxiliaryMeasurementHandler.h:136
ActsTrk::AuxiliaryMeasurementHandler::msg
MsgStream & msg(const MSG::Level lvl) const
Return the reference to the msg logging stream.
Definition
AuxiliaryMeasurementHandler.cxx:18
ActsTrk::AuxiliaryMeasurementHandler::m_writeKey1D
Key_t m_writeKey1D
Key to write the 1D measurements.
Definition
AuxiliaryMeasurementHandler.h:134
ActsTrk::AuxiliaryMeasurementHandler::makeHandle
HandleReturn_t makeHandle(const EventContext &ctx, const Acts::GeometryContext &gctx) const
Creates a new MeasurementProvider and triggers the write of the container backend to StoreGate.
Definition
AuxiliaryMeasurementHandler.cxx:73
ActsTrk::AuxiliaryMeasurementHandler::HandleStatus::emptyKey
@ emptyKey
Definition
AuxiliaryMeasurementHandler.h:109
ActsTrk::AuxiliaryMeasurementHandler::HandleStatus::recordFail
@ recordFail
Definition
AuxiliaryMeasurementHandler.h:110
ActsTrk::AuxiliaryMeasurementHandler::HandleReturn_t
Acts::Result< MeasurementProvider, HandleStatus > HandleReturn_t
Definition
AuxiliaryMeasurementHandler.h:112
ActsTrk::AuxiliaryMeasurementHandler::initialize
StatusCode initialize(const std::string &preFix, bool used=true)
Initialize the write handle keys.
Definition
AuxiliaryMeasurementHandler.cxx:25
ActsTrk::AuxiliaryMeasurementHandler::msgLvl
bool msgLvl(const MSG::Level lvl) const
Returns whether the stream satisfies the logging level.
Definition
AuxiliaryMeasurementHandler.cxx:22
ActsTrk::AuxiliaryMeasurementHandler::m_viewKey
Key_t m_viewKey
Key to write the view container.
Definition
AuxiliaryMeasurementHandler.h:132
ActsTrk::AuxiliaryMeasurementHandler::m_msgLevel
std::function< bool(const MSG::Level)> m_msgLevel
Lambda to return the msg level from the parent's msg stream.
Definition
AuxiliaryMeasurementHandler.h:130
ActsTrk::AuxiliaryMeasurementHandler::m_writeKey3D
Key_t m_writeKey3D
Key to write the 2D + time measurements.
Definition
AuxiliaryMeasurementHandler.h:138
ActsTrk::AuxiliaryMeasurementHandler::m_msgPrinter
std::function< MsgStream &(const MSG::Level)> m_msgPrinter
Lambda to access the parent's msg stream.
Definition
AuxiliaryMeasurementHandler.h:128
ActsTrk::AuxiliaryMeasurementHandler::m_surfaceKey
SG::WriteHandleKey< xAOD::TrackSurfaceContainer > m_surfaceKey
Key to write the surfaces associated to the measurements.
Definition
AuxiliaryMeasurementHandler.h:140
SG::WriteHandle
Definition
StoreGate/StoreGate/WriteHandle.h:73
used
holding In fact this class is here in order to allow STL container for all features This class is sho...
ActsTrk
The AlignStoreProviderAlg loads the rigid alignment corrections and pipes them through the readout ge...
Definition
MdtCalibInput.h:31
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition
OwnershipPolicy.h:18
Generated on
for ATLAS Offline Software by
1.17.0