ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetConditions
SCT_ConditionsAlgorithms
src
SCT_ReadCalibChipNoiseCondAlg.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 "
SCT_ReadCalibChipNoiseCondAlg.h
"
6
7
#include "
FillFromStringUtility.h
"
8
9
#include "
Identifier/IdentifierHash.h
"
10
#include "
InDetIdentifier/SCT_ID.h
"
11
#include "
SCT_ConditionsData/SCT_ConditionsParameters.h
"
12
#include "
SCT_ConditionsTools/SCT_ReadCalibChipDefs.h
"
13
14
#include <limits>
15
#include <memory>
16
17
using namespace
SCT_ConditionsData
;
18
using namespace
SCT_ReadCalibChipDefs
;
19
20
SCT_ReadCalibChipNoiseCondAlg::SCT_ReadCalibChipNoiseCondAlg
(
const
std::string& name, ISvcLocator* pSvcLocator)
21
: ::
AthCondAlgorithm
(name, pSvcLocator)
22
{
23
}
24
25
StatusCode
SCT_ReadCalibChipNoiseCondAlg::initialize
() {
26
ATH_MSG_DEBUG
(
"initialize "
<< name());
27
28
// Get SCT helper
29
ATH_CHECK
(
detStore
()->retrieve(
m_id_sct
,
"SCT_ID"
));
30
31
// Read Cond Handle
32
ATH_CHECK
(
m_readKey
.initialize());
33
// Write Cond Handle
34
ATH_CHECK
(
m_writeKey
.initialize());
35
36
return
StatusCode::SUCCESS;
37
}
38
39
StatusCode
SCT_ReadCalibChipNoiseCondAlg::execute
(
const
EventContext& ctx)
const
{
40
ATH_MSG_DEBUG
(
"execute "
<< name());
41
42
// Write Cond Handle
43
SG::WriteCondHandle<SCT_NoiseCalibData>
writeHandle{
m_writeKey
, ctx};
44
// Do we have a valid Write Cond Handle for current time?
45
if
(writeHandle.
isValid
()) {
46
ATH_MSG_DEBUG
(
"CondHandle "
<< writeHandle.
fullKey
() <<
" is already valid."
47
<<
". In theory this should not be called, but may happen"
48
<<
" if multiple concurrent events are being processed out of order."
);
49
return
StatusCode::SUCCESS;
50
}
51
52
// Read Cond Handle
53
SG::ReadCondHandle<CondAttrListCollection>
readHandle{
m_readKey
, ctx};
54
const
CondAttrListCollection
* readCdo{*readHandle};
55
if
(readCdo==
nullptr
) {
56
ATH_MSG_FATAL
(
"Null pointer to the read conditions object"
);
57
return
StatusCode::FAILURE;
58
}
59
// Add dependency
60
writeHandle.
addDependency
(readHandle);
61
ATH_MSG_INFO
(
"Size of CondAttrListCollection "
<< readHandle.
fullKey
() <<
" readCdo->size()= "
<< readCdo->
size
());
62
ATH_MSG_INFO
(
"Range of input is "
<< readHandle.
getRange
());
63
64
// Construct the output Cond Object and fill it in
65
std::unique_ptr<SCT_NoiseCalibData> writeCdo{std::make_unique<SCT_NoiseCalibData>()};
66
67
// Initialization
68
const
float
errVal{std::numeric_limits<float>::quiet_NaN()};
69
for
(
unsigned
int
m{0}; m!=
NUMBER_OF_MODULES
; ++m) {
70
for
(
unsigned
int
p{0}; p!=
N_NOISEOCC
; ++p) {
71
for
(
unsigned
int
c{0}; c!=
CHIPS_PER_MODULE
; ++c) {
72
(*writeCdo)[m][p][c]=errVal;
73
}
74
}
75
}
76
77
// loop over collection
78
CondAttrListCollection::const_iterator
itLoop{readCdo->
begin
()};
79
CondAttrListCollection::const_iterator
itLoop_end{readCdo->
end
()};
80
for
(; itLoop!=itLoop_end; ++itLoop) {
81
CondAttrListCollection::ChanNum
chanNum{itLoop->first};
82
const
coral::AttributeList& anAttrList{itLoop->second};
83
// Convert chanNum=offlineID into identifier
84
Identifier32
moduleId{chanNum};
85
//find the corresponding hash
86
const
IdentifierHash
hashId{
m_id_sct
->wafer_hash(moduleId)};
87
//find the index to the module (hash is for each side), to use as index into array
88
const
unsigned
int
moduleIdx{hashId/
SIDES_PER_MODULE
};
89
SCT_ModuleNoiseCalibData
& theseCalibData{(*writeCdo)[moduleIdx]};
90
insertNoiseOccFolderData
(theseCalibData, anAttrList);
91
}
92
93
// Record the output cond object
94
if
(writeHandle.
record
(std::move(writeCdo)).isFailure()) {
95
ATH_MSG_FATAL
(
"Could not record SCT_NoiseCalibData "
<< writeHandle.
key
()
96
<<
" with EventRange "
<< writeHandle.
getRange
()
97
<<
" into Conditions Store"
);
98
return
StatusCode::FAILURE;
99
}
100
ATH_MSG_INFO
(
"recorded new CDO "
<< writeHandle.
key
() <<
" with range "
<< writeHandle.
getRange
() <<
" into Conditions Store"
);
101
102
return
StatusCode::SUCCESS;
103
}
104
105
StatusCode
SCT_ReadCalibChipNoiseCondAlg::finalize
() {
106
ATH_MSG_DEBUG
(
"finalize "
<< name());
107
return
StatusCode::SUCCESS;
108
}
109
110
void
111
SCT_ReadCalibChipNoiseCondAlg::insertNoiseOccFolderData
(
SCT_ModuleNoiseCalibData
& theseCalibData,
const
coral::AttributeList& folderData) {
112
for
(
int
i{0}; i!=
N_NOISEOCC
; ++i) {
113
SCT_ModuleCalibParameter
& datavec{theseCalibData[i]};
114
std::string dbData{((folderData)[
noiseOccDbParameterNames
[i]]).data<std::string>()};
115
fillArrayFromString(dbData, datavec);
116
}
117
}
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
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
FillFromStringUtility.h
IdentifierHash.h
SCT_ConditionsParameters.h
header file containing the number of elements and enumerated type of parameters which may be retrieve...
SCT_ID.h
This is an Identifier helper class for the SCT subdetector.
SCT_ModuleCalibParameter
std::array< float, SCT_ConditionsData::CHIPS_PER_MODULE > SCT_ModuleCalibParameter
typedef for SCT_ReadCalibChipGainCondAlg, SCT_ReadCalibChipNoiseCondAlg, SCT_ReadCalibChipDataTool.
Definition
SCT_ModuleCalibParameter.h:27
SCT_ModuleNoiseCalibData
std::array< SCT_ModuleCalibParameter, SCT_ConditionsData::N_NOISEOCC > SCT_ModuleNoiseCalibData
Typedef for data object used in SCT_ReadCalibChipNoiseCondAlg and SCT_ReadCalibChipDataTool.
Definition
SCT_ModuleNoiseCalibData.h:26
SCT_ReadCalibChipDefs.h
SCT_ReadCalibChipNoiseCondAlg.h
AthCommonAlgorithm< Gaudi::Algorithm >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
AthCondAlgorithm
Base class for conditions algorithms.
Definition
AthCondAlgorithm.h:22
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number.
Definition
CondAttrListCollection.h:51
CondAttrListCollection::end
const_iterator end() const
Definition
CondAttrListCollection.h:314
CondAttrListCollection::begin
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
Definition
CondAttrListCollection.h:308
CondAttrListCollection::size
size_type size() const
number of Chan/AttributeList pairs
Definition
CondAttrListCollection.h:321
CondAttrListCollection::const_iterator
ChanAttrListMap::const_iterator const_iterator
Definition
CondAttrListCollection.h:62
CondAttrListCollection::ChanNum
unsigned int ChanNum
Definition
CondAttrListCollection.h:54
Identifier32
Definition
Identifier32.h:28
IdentifierHash
This is a "hash" representation of an Identifier.
Definition
IdentifierHash.h:25
SCT_ReadCalibChipNoiseCondAlg::insertNoiseOccFolderData
static void insertNoiseOccFolderData(SCT_ModuleNoiseCalibData &theseCalibData, const coral::AttributeList &folderData)
Definition
SCT_ReadCalibChipNoiseCondAlg.cxx:111
SCT_ReadCalibChipNoiseCondAlg::finalize
virtual StatusCode finalize() override final
Definition
SCT_ReadCalibChipNoiseCondAlg.cxx:105
SCT_ReadCalibChipNoiseCondAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override final
Definition
SCT_ReadCalibChipNoiseCondAlg.cxx:39
SCT_ReadCalibChipNoiseCondAlg::m_writeKey
SG::WriteCondHandleKey< SCT_NoiseCalibData > m_writeKey
Definition
SCT_ReadCalibChipNoiseCondAlg.h:38
SCT_ReadCalibChipNoiseCondAlg::SCT_ReadCalibChipNoiseCondAlg
SCT_ReadCalibChipNoiseCondAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition
SCT_ReadCalibChipNoiseCondAlg.cxx:20
SCT_ReadCalibChipNoiseCondAlg::m_id_sct
const SCT_ID * m_id_sct
Handle to SCT ID helper.
Definition
SCT_ReadCalibChipNoiseCondAlg.h:39
SCT_ReadCalibChipNoiseCondAlg::m_readKey
SG::ReadCondHandleKey< CondAttrListCollection > m_readKey
Definition
SCT_ReadCalibChipNoiseCondAlg.h:37
SCT_ReadCalibChipNoiseCondAlg::initialize
virtual StatusCode initialize() override final
Definition
SCT_ReadCalibChipNoiseCondAlg.cxx:25
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
SG::ReadCondHandle::fullKey
const DataObjID & fullKey() const
Definition
ReadCondHandle.h:60
SG::ReadCondHandle::getRange
const EventIDRange & getRange()
Definition
ReadCondHandle.h:241
SG::WriteCondHandle
Definition
WriteCondHandle.h:26
SG::WriteCondHandle::key
const std::string & key() const
Definition
WriteCondHandle.h:44
SG::WriteCondHandle::addDependency
void addDependency(const EventIDRange &range)
Definition
WriteCondHandle.h:279
SG::WriteCondHandle::getRange
const EventIDRange & getRange() const
Definition
WriteCondHandle.h:93
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
SG::WriteCondHandle::fullKey
const DataObjID & fullKey() const
Definition
WriteCondHandle.h:45
SCT_ConditionsData
Definition
SCT_ConditionsParameters.h:17
SCT_ConditionsData::NUMBER_OF_MODULES
@ NUMBER_OF_MODULES
Definition
SCT_ConditionsParameters.h:19
SCT_ConditionsData::SIDES_PER_MODULE
@ SIDES_PER_MODULE
Definition
SCT_ConditionsParameters.h:18
SCT_ConditionsData::CHIPS_PER_MODULE
@ CHIPS_PER_MODULE
Definition
SCT_ConditionsParameters.h:20
SCT_ConditionsData::N_NOISEOCC
@ N_NOISEOCC
Definition
SCT_ConditionsParameters.h:22
SCT_ReadCalibChipDefs
Definition
SCT_ReadCalibChipDefs.h:14
SCT_ReadCalibChipDefs::noiseOccDbParameterNames
const std::array< std::string, SCT_ConditionsData::N_NOISEOCC > noiseOccDbParameterNames
Definition
SCT_ReadCalibChipDefs.h:21
Generated on
for ATLAS Offline Software by
1.17.0