ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetRecEvent
InDetRIO_OnTrack
src
TRTRIO_OnTrackErrorScaling.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
#include "
InDetRIO_OnTrack/TRTRIO_OnTrackErrorScaling.h
"
5
#include <iostream>
6
7
const
char
*
const
TRTRIO_OnTrackErrorScaling::s_names
[
TRTRIO_OnTrackErrorScaling::kNParamTypes
]={
8
"TRT Barrel"
,
9
"TRT Endcap"
10
};
11
12
namespace
{
13
inline
double
square(
double
a
) {
return
a
*
a
; }
14
}
15
16
CLID
TRTRIO_OnTrackErrorScaling::clid
()
const
{
17
return
ClassID_traits<CondCont<TRTRIO_OnTrackErrorScaling>
>::ID();
18
}
19
20
bool
TRTRIO_OnTrackErrorScaling::postProcess
() {
21
if
(
params
().
size
() !=
kNParamTypes
) {
22
std::stringstream message;
23
message <<
" TRTRIO_OnTrackErrorScaling: Expecting parameters for et least 2 parameters for"
;
24
for
(
const
auto
*
s_name
:
s_names
) {
25
message <<
" "
<<
s_name
;
26
}
27
message <<
"("
<<
kNParamTypes
<<
") for run2."
;
28
message <<
" But got "
<<
params
().size() <<
"."
;
29
throw
std::runtime_error( message.str() );
30
}
31
for
(
unsigned
int
idx=0; idx<
params
().size(); ++idx) {
32
if
(
params
()[idx].
size
() != 3) {
33
if
(
params
()[idx].
size
() == 2) {
34
params
()[idx].push_back(0.);
35
}
36
else
{
37
assert( idx <
kNParamTypes
);
38
std::stringstream message;
39
message <<
" TRTRIO_OnTrackErrorScaling: Expected 2 or 3 parameters for "
<<
s_names
[idx] <<
" but got "
<<
params
()[idx].size()
40
<<
"."
;
41
throw
std::runtime_error( message.str() );
42
}
43
}
44
}
45
return
true
;
46
}
47
48
Amg::MatrixX
TRTRIO_OnTrackErrorScaling::getScaledCovariance
(
Amg::MatrixX
&& cov_input,
49
bool
is_endcap,
50
double
mu)
const
51
{
52
Amg::MatrixX
newCov = std::move(cov_input);
53
double
a
= (is_endcap) ?
params
()[
kEndcap
][0] :
params
()[
kBarrel
][0];
54
double
b = (is_endcap) ?
params
()[
kEndcap
][1] :
params
()[
kBarrel
][1];
55
double
c = (is_endcap) ?
params
()[
kEndcap
][2] :
params
()[
kBarrel
][2];
56
newCov(0,0) *= square(
a
);
57
newCov(0,0) += square(b);
58
newCov(0,0) *= (1. + mu * c);
59
return
newCov;
60
}
61
62
CLID
uint32_t CLID
The Class ID type.
Definition
Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
size
size_t size() const
Number of registered mappings.
TRTRIO_OnTrackErrorScaling.h
s_name
std::atomic< const char * > ClassID_traits< ViewVector< DV > >::s_name
Definition
ViewVector.h:339
RIO_OnTrackErrorScaling::params
std::vector< std::vector< double > > & params()
Definition
RIO_OnTrackErrorScaling.h:29
TRTRIO_OnTrackErrorScaling::kBarrel
@ kBarrel
Definition
TRTRIO_OnTrackErrorScaling.h:20
TRTRIO_OnTrackErrorScaling::kEndcap
@ kEndcap
Definition
TRTRIO_OnTrackErrorScaling.h:21
TRTRIO_OnTrackErrorScaling::kNParamTypes
@ kNParamTypes
Definition
TRTRIO_OnTrackErrorScaling.h:22
TRTRIO_OnTrackErrorScaling::getScaledCovariance
Amg::MatrixX getScaledCovariance(Amg::MatrixX &&cov_input, bool is_endcap, double mu) const
Definition
TRTRIO_OnTrackErrorScaling.cxx:48
TRTRIO_OnTrackErrorScaling::clid
virtual CLID clid() const override final
Definition
TRTRIO_OnTrackErrorScaling.cxx:16
TRTRIO_OnTrackErrorScaling::postProcess
virtual bool postProcess() override final
Definition
TRTRIO_OnTrackErrorScaling.cxx:20
TRTRIO_OnTrackErrorScaling::s_names
static const char *const s_names[kNParamTypes]
Definition
TRTRIO_OnTrackErrorScaling.h:7
Amg::MatrixX
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
Definition
EventPrimitives.h:27
ClassID_traits
Default, invalid implementation of ClassID_traits.
Definition
Control/AthenaKernel/AthenaKernel/ClassID_traits.h:37
Generated on
for ATLAS Offline Software by
1.17.0