ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonCalib
MuonCalibDbOperations
src
MuonCalibDefaultCalibrationSource.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// this
6
#include "
MuonCalibDbOperations/MuonCalibDefaultCalibrationSource.h
"
7
8
#include "
MuonCalibDbOperations/CoolInserter.h
"
9
10
// MuonCalibStandAloneBase
11
#include "
MuonCalibStandAloneBase/RegionSelectorBase.h
"
12
13
// MuonCalibMath
14
#include "
MuonCalibMath/SamplePoint.h
"
15
16
// MuonCalibIdentifier//MuonCalibIdentifier
17
#include "
MuonCalibIdentifier/MdtCalibCreationFlags.h
"
18
19
// c-c++
20
#include <fstream>
21
#include <sstream>
22
23
namespace
MuonCalib
{
24
MuonCalibDefaultCalibrationSource::~MuonCalibDefaultCalibrationSource
() =
default
;
25
MuonCalibDefaultCalibrationSource::MuonCalibDefaultCalibrationSource
(
const
std::string &t,
const
std::string &n,
const
IInterface *p) :
26
AthAlgTool
(t, n, p) {
27
declareInterface<IMuonCalibConditionsSource>(
this
);
28
declareProperty
(
"T0Regions"
,
m_t0_region_str
);
29
declareProperty
(
"T0"
,
m_t0
);
30
declareProperty
(
"TimeSlewingAppliedT0"
,
m_time_slewing_applied_t0
);
31
declareProperty
(
"BFieldCorrectionAppliedT0"
,
m_bfield_applied_t0
);
32
declareProperty
(
"RtRegions"
,
m_rt_region_str
);
33
declareProperty
(
"RtFiles"
,
m_rt_files
);
34
declareProperty
(
"TimeSlewingAppliedRt"
,
m_time_slewing_applied_rt
);
35
declareProperty
(
"BFieldCorrectionAppliedRt"
,
m_bfield_applied_rt
);
36
}
37
38
StatusCode
MuonCalibDefaultCalibrationSource::initialize
() {
39
// get region selection service
40
ATH_CHECK
(
m_reg_sel_svc
.retrieve());
41
// check matching lengths
42
if
(
m_t0_region_str
.size() !=
m_t0
.size()) {
43
ATH_MSG_FATAL
(
"Configuration error: T0Regions and T0 have different size!"
);
44
return
StatusCode::FAILURE;
45
}
46
if
(
m_rt_region_str
.size() !=
m_rt_files
.size()) {
47
ATH_MSG_FATAL
(
"Configuration error: RtRegions and RtFiles have different size!"
);
48
return
StatusCode::FAILURE;
49
}
50
// initialize regions
51
ATH_CHECK
(
initialize_regions
(
m_t0_region_str
,
m_t0_regions
));
52
initialize_creation_flags
(
m_time_slewing_applied_t0
,
m_bfield_applied_t0
,
m_t0_regions
.size(),
m_creation_flags_t0
);
53
ATH_CHECK
(
initialize_regions
(
m_rt_region_str
,
m_rt_regions
));
54
initialize_creation_flags
(
m_time_slewing_applied_rt
,
m_bfield_applied_rt
,
m_rt_regions
.size(),
m_creation_flags_rt
);
55
// load rt files
56
ATH_CHECK
(
load_rt_files
());
57
return
StatusCode::SUCCESS;
58
}
59
60
bool
MuonCalibDefaultCalibrationSource::insert_calibration
(
bool
store_t0,
bool
store_rt) {
61
if
(store_t0 && !
store_t0_fun
()) {
return
false
; }
62
if
(store_rt && !
store_rt_fun
()) {
return
false
; }
63
return
true
;
64
}
65
66
StatusCode
MuonCalibDefaultCalibrationSource::initialize_regions
(
const
std::vector<std::string> ®_str,
67
std::vector<std::unique_ptr<RegionSelectorBase> > ®_vec) {
68
for
(
const
std::string ® : reg_str) {
69
std::unique_ptr<RegionSelectorBase>
r
=
RegionSelectorBase::GetRegion
(reg);
70
if
(!
r
) {
71
ATH_MSG_FATAL
(
"Error in region "
<< reg);
72
return
StatusCode::FAILURE;
73
}
74
reg_vec.emplace_back(std::move(
r
));
75
}
76
return
StatusCode::SUCCESS;
77
}
78
79
void
MuonCalibDefaultCalibrationSource::initialize_creation_flags
(
const
std::vector<bool> &ts_applied,
80
const
std::vector<bool> &bf_applied,
unsigned
int
n_regions,
81
std::vector<unsigned int> &flags) {
82
for
(
unsigned
int
i = 0; i < n_regions; i++) {
83
unsigned
int
flag(0);
84
if
(i < ts_applied.size() && ts_applied[i]) { flag |=
MuonCalib::TIME_SLEWING_CORRECTION_APPLIED
; }
85
if
(i < bf_applied.size() && bf_applied[i]) { flag |=
MuonCalib::B_FIELD_CORRECTIONS_APPLIED
; }
86
flags.push_back(flag);
87
}
88
}
89
90
inline
StatusCode
MuonCalibDefaultCalibrationSource::load_rt_files
() {
91
for
(
const
auto
& fname :
m_rt_files
) {
92
std::string line;
93
std::ifstream rtf(fname.c_str());
94
if
(!rtf.good()) {
95
ATH_MSG_FATAL
(
"Cannot open rt file '"
<< fname <<
"'!"
);
96
return
StatusCode::FAILURE;
97
}
98
std::map<int, SamplePoint> pts;
99
// read dummy line
100
std::getline(rtf, line);
101
int
i(0);
102
while
(!rtf.eof()) {
103
std::getline(rtf, line);
104
std::istringstream ln_str(line);
105
double
r
, t, s;
106
ln_str >>
r
;
107
ln_str >> t;
108
ln_str >> s;
109
if
(rtf.eof())
break
;
110
SamplePoint
pt(t,
r
, s);
111
pts[i] = pt;
112
i++;
113
}
114
m_rt_points
.push_back(pts);
115
}
116
return
StatusCode::SUCCESS;
117
}
118
119
inline
bool
MuonCalibDefaultCalibrationSource::store_t0_fun
() {
120
const
std::vector<NtupleStationId> &
regions
(
m_reg_sel_svc
->GetStationsInRegions());
121
for
(
const
auto
& region :
regions
) {
122
MuonFixedId
fid(region.FixedId());
123
for
(
unsigned
int
i = 0; i <
m_t0_regions
.size(); i++) {
124
if
(
m_t0_regions
[i]->
Result
(fid)) {
125
m_inserter
->StartT0Chamber(region);
126
while
(
m_inserter
->AppendT0(
m_t0
[i], 5, 0.0)) {}
127
m_inserter
->StoreT0Chamber(region, std::string(
"default"
),
m_creation_flags_t0
[i]);
128
// break;
129
}
130
}
131
}
132
return
true
;
133
}
134
135
inline
bool
MuonCalibDefaultCalibrationSource::store_rt_fun
() {
136
const
std::vector<NtupleStationId> &
regions
(
m_reg_sel_svc
->GetStationsInRegions());
137
for
(
const
auto
& region :
regions
) {
138
MuonFixedId
fid(region.FixedId());
139
for
(
unsigned
int
i = 0; i <
m_rt_regions
.size(); i++) {
140
if
(
m_rt_regions
[i]->
Result
(fid)) {
141
m_inserter
->StoreRtChamber(region,
m_rt_points
[i], std::string(
"default"
),
m_creation_flags_rt
[i]);
142
break
;
143
}
144
}
145
}
146
return
true
;
147
}
148
149
}
// namespace MuonCalib
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition
AthMsgStreamMacros.h:34
Result
ICscStripFitter::Result Result
Definition
CalibCscStripFitter.cxx:13
CoolInserter.h
MdtCalibCreationFlags.h
MuonCalibDefaultCalibrationSource.h
regions
static const std::vector< std::string > regions
Definition
MuonTriggerSFFilesTest.cxx:21
RegionSelectorBase.h
SamplePoint.h
AthAlgTool::AthAlgTool
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Definition
AthAlgTool.cxx:16
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
MuonCalib::IMuonCalibConditionsSource::m_inserter
CoolInserter * m_inserter
Definition
IMuonCalibConditionsSource.h:31
MuonCalib::MuonCalibDefaultCalibrationSource::~MuonCalibDefaultCalibrationSource
virtual ~MuonCalibDefaultCalibrationSource()
MuonCalib::MuonCalibDefaultCalibrationSource::m_rt_points
std::vector< std::map< int, SamplePoint > > m_rt_points
Definition
MuonCalibDefaultCalibrationSource.h:52
MuonCalib::MuonCalibDefaultCalibrationSource::m_reg_sel_svc
ServiceHandle< RegionSelectionSvc > m_reg_sel_svc
Definition
MuonCalibDefaultCalibrationSource.h:54
MuonCalib::MuonCalibDefaultCalibrationSource::m_time_slewing_applied_rt
std::vector< bool > m_time_slewing_applied_rt
Definition
MuonCalibDefaultCalibrationSource.h:43
MuonCalib::MuonCalibDefaultCalibrationSource::m_rt_region_str
std::vector< std::string > m_rt_region_str
Definition
MuonCalibDefaultCalibrationSource.h:41
MuonCalib::MuonCalibDefaultCalibrationSource::m_bfield_applied_t0
std::vector< bool > m_bfield_applied_t0
Definition
MuonCalibDefaultCalibrationSource.h:39
MuonCalib::MuonCalibDefaultCalibrationSource::store_t0_fun
bool store_t0_fun()
Definition
MuonCalibDefaultCalibrationSource.cxx:119
MuonCalib::MuonCalibDefaultCalibrationSource::m_t0_region_str
std::vector< std::string > m_t0_region_str
Definition
MuonCalibDefaultCalibrationSource.h:36
MuonCalib::MuonCalibDefaultCalibrationSource::m_bfield_applied_rt
std::vector< bool > m_bfield_applied_rt
Definition
MuonCalibDefaultCalibrationSource.h:44
MuonCalib::MuonCalibDefaultCalibrationSource::MuonCalibDefaultCalibrationSource
MuonCalibDefaultCalibrationSource(const std::string &t, const std::string &n, const IInterface *p)
constructor
Definition
MuonCalibDefaultCalibrationSource.cxx:25
MuonCalib::MuonCalibDefaultCalibrationSource::m_rt_files
std::vector< std::string > m_rt_files
Definition
MuonCalibDefaultCalibrationSource.h:42
MuonCalib::MuonCalibDefaultCalibrationSource::store_rt_fun
bool store_rt_fun()
Definition
MuonCalibDefaultCalibrationSource.cxx:135
MuonCalib::MuonCalibDefaultCalibrationSource::m_t0_regions
std::vector< std::unique_ptr< RegionSelectorBase > > m_t0_regions
Definition
MuonCalibDefaultCalibrationSource.h:50
MuonCalib::MuonCalibDefaultCalibrationSource::m_time_slewing_applied_t0
std::vector< bool > m_time_slewing_applied_t0
Definition
MuonCalibDefaultCalibrationSource.h:38
MuonCalib::MuonCalibDefaultCalibrationSource::m_creation_flags_t0
std::vector< unsigned int > m_creation_flags_t0
Definition
MuonCalibDefaultCalibrationSource.h:47
MuonCalib::MuonCalibDefaultCalibrationSource::insert_calibration
bool insert_calibration(bool store_t0, bool store_rt)
insert calibration
Definition
MuonCalibDefaultCalibrationSource.cxx:60
MuonCalib::MuonCalibDefaultCalibrationSource::m_t0
std::vector< float > m_t0
Definition
MuonCalibDefaultCalibrationSource.h:37
MuonCalib::MuonCalibDefaultCalibrationSource::m_rt_regions
std::vector< std::unique_ptr< RegionSelectorBase > > m_rt_regions
Definition
MuonCalibDefaultCalibrationSource.h:50
MuonCalib::MuonCalibDefaultCalibrationSource::initialize_regions
StatusCode initialize_regions(const std::vector< std::string > ®_str, std::vector< std::unique_ptr< RegionSelectorBase > > ®)
Definition
MuonCalibDefaultCalibrationSource.cxx:66
MuonCalib::MuonCalibDefaultCalibrationSource::initialize_creation_flags
void initialize_creation_flags(const std::vector< bool > &ts_applied, const std::vector< bool > &bf_applied, unsigned int n_regions, std::vector< unsigned int > &flags)
Definition
MuonCalibDefaultCalibrationSource.cxx:79
MuonCalib::MuonCalibDefaultCalibrationSource::load_rt_files
StatusCode load_rt_files()
Definition
MuonCalibDefaultCalibrationSource.cxx:90
MuonCalib::MuonCalibDefaultCalibrationSource::m_creation_flags_rt
std::vector< unsigned int > m_creation_flags_rt
Definition
MuonCalibDefaultCalibrationSource.h:48
MuonCalib::MuonCalibDefaultCalibrationSource::initialize
StatusCode initialize()
initialize
Definition
MuonCalibDefaultCalibrationSource.cxx:38
MuonCalib::MuonFixedId
Implements fixed identifiers not dependent upon Athena Identifier for internal use in the calibration...
Definition
MuonFixedId.h:50
MuonCalib::RegionSelectorBase::GetRegion
static std::unique_ptr< RegionSelectorBase > GetRegion(const std::string &input)
create a region from a string
Definition
RegionSelectorBase.cxx:13
MuonCalib::SamplePoint
This class provides a sample point for the BaseFunctionFitter.
Definition
SamplePoint.h:15
r
int r
Definition
globals.cxx:22
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition
CscCalcPed.cxx:21
MuonCalib::TIME_SLEWING_CORRECTION_APPLIED
@ TIME_SLEWING_CORRECTION_APPLIED
Definition
MdtCalibCreationFlags.h:10
MuonCalib::B_FIELD_CORRECTIONS_APPLIED
@ B_FIELD_CORRECTIONS_APPLIED
Definition
MdtCalibCreationFlags.h:10
Generated on
for ATLAS Offline Software by
1.17.0