ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkTools
TrkRIO_OnTrackCreator
src
RIO_OnTrackErrorScalingDbOverrideCondAlg.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
TrkRIO_OnTrack/RIO_OnTrackErrorScaling.h
"
6
#include "
RIO_OnTrackErrorScalingDbOverrideCondAlg.h
"
7
#include "
RIO_OnTrackErrorScalingKit.h
"
8
#include "
CxxUtils/checker_macros.h
"
9
10
RIO_OnTrackErrorScalingDbOverrideCondAlg::RIO_OnTrackErrorScalingDbOverrideCondAlg
(
const
std::string& name, ISvcLocator* pSvcLocator)
11
: ::
AthCondAlgorithm
(name, pSvcLocator)
12
,
m_condSvc
{
"CondSvc"
, name}
13
{
14
}
15
16
StatusCode
RIO_OnTrackErrorScalingDbOverrideCondAlg::initialize
() {
17
ATH_CHECK
(
m_condSvc
.retrieve());
18
if
(
m_writeKey
.key().empty()) {
19
ATH_MSG_FATAL
(
"No conditions data write key specified."
);
20
}
21
ATH_CHECK
(
m_writeKey
.initialize());
22
m_errorScalingDataKit
= &(
RIO_OnTrackErrorScalingKitManager::instance
().
kit
(
m_errorScalingTypeName
));
23
unsigned
int
n_parameters_total=0;
24
unsigned
int
n_parameter_sets =
m_errorScalingDataKit
->nParametres();
25
if
(n_parameter_sets>0) {
26
if
(!
m_nParameterPerSet
.empty()) {
27
if
(
m_nParameterPerSet
.size() != n_parameter_sets) {
28
ATH_MSG_FATAL
(
"PrametersPerSet must either be empty or match the number of parameters of the error scaling class "
<<
m_errorScalingTypeName
);
29
return
StatusCode::FAILURE;
30
}
31
32
for
(
unsigned
int
n_parameters :
m_nParameterPerSet
) {
33
n_parameters_total += n_parameters;
34
}
35
36
m_useNParametersPerSet
=
m_nParameterPerSet
;
37
}
38
else
{
39
unsigned
int
n_parameters_per_set=
m_errorScalingParameters
.size()/n_parameter_sets;
40
n_parameters_total = n_parameter_sets * n_parameters_per_set;
41
m_useNParametersPerSet
.clear();
42
m_useNParametersPerSet
.reserve(n_parameter_sets);
43
for
(
unsigned
int
param_set_i=0; param_set_i<n_parameter_sets; ++param_set_i ) {
44
m_useNParametersPerSet
.push_back( n_parameters_per_set);
45
}
46
ATH_MSG_VERBOSE
(
"init n_parameters_total="
<< n_parameters_total <<
" =?= "
<<
m_errorScalingParameters
.size()
47
<<
" n_parameters_per_set="
<< n_parameters_per_set );
48
}
49
if
(n_parameters_total !=
m_errorScalingParameters
.size()) {
50
ATH_MSG_FATAL
(
"Number of parameters in ErorScalingParameters does not match expectation. Estimated "
<< n_parameters_total
51
<<
" parameters in total for the "
<< n_parameter_sets <<
" parameter sets of "
<<
m_errorScalingTypeName
52
<<
" but got "
<<
m_errorScalingParameters
.size());
53
return
StatusCode::FAILURE;
54
}
55
}
56
if
(
msgLvl
(MSG::VERBOSE)) {
57
for
(
unsigned
int
param_i=0; param_i<
m_errorScalingDataKit
->nParametres(); ++param_i) {
58
ATH_MSG_VERBOSE
(
"No error scaling parameters for "
<<
m_writeKey
.key() <<
" "
<<
m_errorScalingDataKit
->paramNames()[param_i]
59
<<
" n-params="
60
<<
m_useNParametersPerSet
[param_i]);
61
}
62
}
63
if
(n_parameters_total==0 && !
m_errorScalingParameters
.empty()) {
64
ATH_MSG_FATAL
(
"ErorScalingParameters expected to be empty for "
<<
m_errorScalingTypeName
) ;
65
return
StatusCode::FAILURE;
66
}
67
68
return
StatusCode::SUCCESS;
69
}
70
71
namespace
{
72
EventIDBase timestamp (
int
t)
73
{
74
return
{EventIDBase::UNDEFNUM,
// run
75
EventIDBase::UNDEFEVT,
// event
76
static_cast<
EventIDBase::number_type
>
(t)};
77
}
78
79
EventIDBase infiniteIOVEend() {
80
return
timestamp(std::numeric_limits<int>::max() - 1);
81
}
82
83
template
<
typename
T>
84
std::ostream &
operator<<
(std::ostream &out,
const
std::vector<T> &
a
) {
85
for
(
const
T &elm :
a
) {
86
out
<<
" "
<< elm;
87
}
88
return
out
;
89
}
90
}
91
92
93
StatusCode
RIO_OnTrackErrorScalingDbOverrideCondAlg::execute
(
const
EventContext& ctx)
const
{
94
SG::WriteCondHandle<RIO_OnTrackErrorScaling>
write_handle(
m_writeKey
, ctx);
95
if
(!write_handle.
isValid
()) {
96
EventIDRange range(timestamp(0),infiniteIOVEend());
97
std::unique_ptr<RIO_OnTrackErrorScaling> error_scaling(
m_errorScalingDataKit
->create() );
98
std::vector<float>::const_iterator param_iter =
m_errorScalingParameters
.begin();
99
unsigned
int
set_i=0;
100
for
(
unsigned
int
n_params :
m_useNParametersPerSet
) {
101
// cppcheck-suppress assertWithSideEffect
102
assert( set_i < error_scaling->params().
size
() );
103
error_scaling->params()[set_i].clear();
104
error_scaling->params()[set_i].reserve(n_params);
105
for
(
unsigned
int
param_i=0; param_i<n_params; ++param_i, ++param_iter) {
106
assert( param_iter !=
m_errorScalingParameters
.end() );
107
error_scaling->params()[set_i].push_back( *param_iter );
108
}
109
++set_i;
110
}
111
112
// dump error scaling parameters
113
if
(
msgLvl
(MSG::VERBOSE)) {
114
for
(
unsigned
int
param_i=0; param_i<
m_errorScalingDataKit
->nParametres(); ++param_i) {
115
if
(param_i>= error_scaling->params().size()) {
116
ATH_MSG_FATAL
(
"No error scaling parameters for "
<< write_handle.
key
() <<
" "
<<
m_errorScalingDataKit
->paramNames()[param_i] <<
"."
);
117
return
StatusCode::FAILURE;
118
}
119
120
ATH_MSG_VERBOSE
(
"Parameters for "
<< write_handle.
key
() <<
" "
<<
m_errorScalingDataKit
->paramNames()[param_i] << error_scaling->params()[param_i] );
121
122
}
123
}
124
125
if
(!error_scaling->postProcess()) {
126
ATH_MSG_ERROR
(
"Conditions data for "
<< write_handle.
key
() <<
" not valid."
);
127
return
StatusCode::FAILURE;
128
}
129
if
(write_handle.
record
(range, std::move(error_scaling)).isFailure()) {
130
ATH_MSG_FATAL
(
"Could not record RIO_OnTrackErrorScaling "
<< write_handle.
key
()
131
<<
" with EventRange "
<< range
132
<<
" into Conditions Store"
);
133
return
StatusCode::FAILURE;
134
}
135
}
136
return
StatusCode::SUCCESS;
137
}
138
139
140
StatusCode
RIO_OnTrackErrorScalingDbOverrideCondAlg::finalize
() {
141
return
StatusCode::SUCCESS;
142
}
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
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
RIO_OnTrackErrorScalingDbOverrideCondAlg.h
RIO_OnTrackErrorScalingKit.h
RIO_OnTrackErrorScaling.h
size
size_t size() const
Number of registered mappings.
operator<<
std::ostream & operator<<(std::ostream &lhs, const TestGaudiProperty &rhs)
Definition
TestGaudiProperty.cxx:69
checker_macros.h
Define macros for attributes used to control the static checker.
AthCommonAlgorithm< Gaudi::Algorithm >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition
AthCommonMsg.h:30
AthCondAlgorithm
Base class for conditions algorithms.
Definition
AthCondAlgorithm.h:22
KitManager< RIO_OnTrackErrorScalingKit >::instance
static KitManager< RIO_OnTrackErrorScalingKit > & instance()
Definition
KitManager.h:50
KitManager::kit
const T_KitInterface & kit(const std::string &name) const
Definition
KitManager.h:45
RIO_OnTrackErrorScalingDbOverrideCondAlg::m_condSvc
ServiceHandle< ICondSvc > m_condSvc
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.h:43
RIO_OnTrackErrorScalingDbOverrideCondAlg::m_writeKey
SG::WriteCondHandleKey< RIO_OnTrackErrorScaling > m_writeKey
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.h:41
RIO_OnTrackErrorScalingDbOverrideCondAlg::m_nParameterPerSet
Gaudi::Property< std::vector< unsigned int > > m_nParameterPerSet
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.h:32
RIO_OnTrackErrorScalingDbOverrideCondAlg::RIO_OnTrackErrorScalingDbOverrideCondAlg
RIO_OnTrackErrorScalingDbOverrideCondAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.cxx:10
RIO_OnTrackErrorScalingDbOverrideCondAlg::finalize
StatusCode finalize() override
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.cxx:140
RIO_OnTrackErrorScalingDbOverrideCondAlg::initialize
StatusCode initialize() override
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.cxx:16
RIO_OnTrackErrorScalingDbOverrideCondAlg::m_errorScalingDataKit
const RIO_OnTrackErrorScalingKit * m_errorScalingDataKit
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.h:44
RIO_OnTrackErrorScalingDbOverrideCondAlg::execute
StatusCode execute(const EventContext &ctx) const override
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.cxx:93
RIO_OnTrackErrorScalingDbOverrideCondAlg::m_errorScalingParameters
Gaudi::Property< std::vector< float > > m_errorScalingParameters
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.h:35
RIO_OnTrackErrorScalingDbOverrideCondAlg::m_useNParametersPerSet
std::vector< unsigned int > m_useNParametersPerSet
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.h:45
RIO_OnTrackErrorScalingDbOverrideCondAlg::m_errorScalingTypeName
Gaudi::Property< std::string > m_errorScalingTypeName
Definition
RIO_OnTrackErrorScalingDbOverrideCondAlg.h:38
SG::WriteCondHandle
Definition
WriteCondHandle.h:26
SG::WriteCondHandle::key
const std::string & key() const
Definition
WriteCondHandle.h:44
SG::WriteCondHandle::record
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
Definition
WriteCondHandle.h:161
SG::WriteCondHandle::isValid
bool isValid() const
Definition
WriteCondHandle.h:252
python.AthDsoLogger.out
out
Definition
AthDsoLogger.py:70
Generated on
for ATLAS Offline Software by
1.17.0