ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetConditions
TRT_ConditionsServices
src
TRT_DAQ_ConditionsSvc.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
/*----------------------------------------------------
6
* TRT_DAQ_ConditionsSvc.cxx
7
* Denver Whittington
8
*/
//-------------------------------------------------
9
10
// Header Includes
11
12
#include "
TRT_DAQ_ConditionsSvc.h
"
13
#include "
StoreGate/ReadCondHandle.h
"
14
18
TRT_DAQ_ConditionsSvc::TRT_DAQ_ConditionsSvc
(
const
std::string& name, ISvcLocator* pSvcLocator ) :
19
base_class( name, pSvcLocator ),
20
m_detStore
(
"DetectorStore"
,name),
21
m_FolderName
(
"/TDAQ/Resources/ATLAS/TRT/Robins"
)
// For run1 the name is /TDAQ/EnabledResources/ATLAS/TRT/Robins
22
{
23
// Get properties from job options
24
declareProperty(
"FolderName"
,
m_FolderName
);
25
declareProperty(
"DetectorStore"
,
m_detStore
);
26
}
27
31
TRT_DAQ_ConditionsSvc::~TRT_DAQ_ConditionsSvc
() =
default
;
32
36
StatusCode
TRT_DAQ_ConditionsSvc::initialize
() {
37
StatusCode
sc
(StatusCode::SUCCESS);
38
39
// Read key for Robins folder
40
ATH_CHECK
(
m_RobinsReadKey
.initialize());
41
42
// Get the TRT Identifier Helper.
43
ATH_CHECK
(
m_detStore
->retrieve(
m_TRT_ID_Helper
,
"TRT_ID"
));
44
45
return
sc
;
46
}
47
51
unsigned
int
TRT_DAQ_ConditionsSvc::RODid
(
const
Identifier
& ident ) {
52
int
barrel_ec =
m_TRT_ID_Helper
->barrel_ec( ident );
53
int
phi_module =
m_TRT_ID_Helper
->phi_module( ident );
54
int
layer_or_wheel =
m_TRT_ID_Helper
->layer_or_wheel( ident );
55
int
straw_layer =
m_TRT_ID_Helper
->straw_layer( ident );
56
57
int
partition = 0;
58
if
( barrel_ec == 1 ) partition = 0x31;
// Barrel A
59
else
if
( barrel_ec == -1 ) partition = 0x32;
// Barrel C
60
else
if
( barrel_ec == 2 ) partition = 0x33;
// Endcap A
61
else
if
( barrel_ec == -2 ) partition = 0x34;
// Endcap C
62
else
{
63
ATH_MSG_WARNING
(
"Invalid Barrel/EC identifier requested in RODid."
);
64
return
0;
65
}
66
67
int
phi
= phi_module + 1;
// [0,31] -> [1,32]
68
69
int
rodHalf = 0;
70
if
( abs(barrel_ec) == 2 ) {
71
if
( layer_or_wheel >= 0 && layer_or_wheel < 4 ) rodHalf = 2;
72
if
( layer_or_wheel == 4 && straw_layer >= 0 && straw_layer < 8 ) rodHalf = 1;
73
if
( layer_or_wheel == 4 && straw_layer >= 8 && straw_layer < 16 ) rodHalf = 2;
74
if
( layer_or_wheel == 5 && straw_layer >= 0 && straw_layer < 8 ) rodHalf = 2;
75
if
( layer_or_wheel == 5 && straw_layer >= 8 && straw_layer < 16 ) rodHalf = 1;
76
if
( layer_or_wheel >= 6 && layer_or_wheel < 14 ) rodHalf = 1;
77
}
78
79
int
thisRODid = partition*0x10000 +
phi
*0x100 + rodHalf;
80
return
thisRODid;
81
}
82
86
InDet::TRT_CondFlag
TRT_DAQ_ConditionsSvc::condSummaryStatus
(
87
const
Identifier
& ident ) {
88
89
SG::ReadCondHandle<CondAttrListCollection>
readHandle(
m_RobinsReadKey
);
90
const
CondAttrListCollection
* EnabledRods{*readHandle};
91
if
( !EnabledRods )
return
InDet::TRT_COND_NOINFO;
92
93
unsigned
int
thisRODid =
RODid
( ident );
94
95
return
condSummaryStatus
( thisRODid );
96
}
97
101
InDet::TRT_CondFlag
TRT_DAQ_ConditionsSvc::condSummaryStatus
(
unsigned
int
thisRODid ) {
102
103
SG::ReadCondHandle<CondAttrListCollection>
readHandle(
m_RobinsReadKey
);
104
const
CondAttrListCollection
* EnabledRods{*readHandle};
105
106
if
( !EnabledRods )
return
InDet::TRT_COND_NOINFO;
107
108
CondAttrListCollection::name_const_iterator
chanNameMapItr;
109
if
( EnabledRods->
name_size
() == 0 ) {
110
ATH_MSG_WARNING
(
m_FolderName
<<
" has no entries in it's ChanNameMap."
);
111
return
InDet::TRT_COND_NOINFO;
112
}
113
int
chanNum = -1;
114
std::string chanName =
""
;
115
for
( chanNameMapItr = EnabledRods->
name_begin
();
116
chanNameMapItr != EnabledRods->
name_end
(); ++chanNameMapItr ) {
117
chanNum = (*chanNameMapItr).first;
118
chanName = (*chanNameMapItr).second;
119
// Pull off last 6 characters from chanName and convert
120
// to an integer for comparison to identifier.
121
std::string ROD_Part = std::string( chanName, chanName.length()-6, 2 );
122
std::string ROD_Phi = std::string( chanName, chanName.length()-4, 2 );
123
std::string ROD_Half = std::string( chanName, chanName.length()-2, 2 );
124
125
unsigned
int
rod = 0;
126
127
// Convert string representation of hex representation of partition (detector) to integer
128
/* Partition number in string from database comes as hex number.
129
* Need to convert it to an integer. */
130
int
ROD_Part_int;
131
std::istringstream iss(ROD_Part);
132
iss >> ROD_Part_int;
133
switch
( ROD_Part_int ) {
134
case
31:
135
rod += 0x10000 * 0x31;
136
break
;
137
case
32:
138
rod += 0x10000 * 0x32;
139
break
;
140
case
33:
141
rod += 0x10000 * 0x33;
142
break
;
143
case
34:
144
rod += 0x10000 * 0x34;
145
break
;
146
}
147
148
// Convert string representation of hex representation of phi stack to integer
149
/* Phi stack number in string from database comes as hex number.
150
* Need to convert it to an integer. */
151
char
* extra =
nullptr
;
152
int
ROD_Phi_int = strtol( ROD_Phi.c_str(), &extra, 16 );
153
rod += ROD_Phi_int * 0x100;
154
155
rod += atoi(ROD_Half.c_str());
156
157
ATH_MSG_VERBOSE
(
"Comparing "
<< rod <<
" to "
<< thisRODid );
158
if
( rod == thisRODid )
break
;
159
}
160
if
( chanNameMapItr == EnabledRods->
name_end
() ) {
161
ATH_MSG_VERBOSE
( thisRODid <<
" not found in chanNameMap"
);
162
return
InDet::TRT_COND_BAD;
// SHOULD THIS BE NOINFO??
163
// Either this is unnecessary (ROD absence won't show up here)
164
// or the next checking step is redundant.
165
}
166
167
// Check for absence of AttributeList for this ROD.
168
CondAttrListCollection::const_iterator
chanAttrListPair;
169
chanAttrListPair = EnabledRods->
chanAttrListPair
( chanNum );
170
if
( chanAttrListPair == EnabledRods->
end
() ) {
171
ATH_MSG_VERBOSE
(
"Channel "
<< chanNum <<
" ("
<< chanName <<
") not found."
);
172
return
InDet::TRT_COND_BAD;
173
}
174
175
// Must have been present = GOOD.
176
ATH_MSG_VERBOSE
(
"Channel "
<< chanNum <<
" ("
<< chanName <<
") enabled in this event."
);
177
return
InDet::TRT_COND_GOOD;
178
}
179
183
StatusCode
TRT_DAQ_ConditionsSvc::finalize
() {
184
return
StatusCode::SUCCESS;
185
}
186
phi
Scalar phi() const
phi method
Definition
AmgMatrixBasePlugin.h:67
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
ReadCondHandle.h
TRT_DAQ_ConditionsSvc.h
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::name_begin
name_const_iterator name_begin() const
Access to Chan/Name pairs via iterators.
Definition
CondAttrListCollection.h:363
CondAttrListCollection::name_size
name_size_type name_size() const
number of Chan/Name pairs
Definition
CondAttrListCollection.h:376
CondAttrListCollection::name_end
name_const_iterator name_end() const
Definition
CondAttrListCollection.h:369
CondAttrListCollection::const_iterator
ChanAttrListMap::const_iterator const_iterator
Definition
CondAttrListCollection.h:62
CondAttrListCollection::name_const_iterator
ChanNameMap::const_iterator name_const_iterator
Definition
CondAttrListCollection.h:68
CondAttrListCollection::chanAttrListPair
const_iterator chanAttrListPair(ChanNum chanNum) const
Access to Chan/AttributeList pairs via channel number: returns map iterator.
Definition
CondAttrListCollection.h:300
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
TRT_DAQ_ConditionsSvc::condSummaryStatus
InDet::TRT_CondFlag condSummaryStatus(unsigned int)
ConditionsSummaryStatus for a ROD ID.
Definition
TRT_DAQ_ConditionsSvc.cxx:101
TRT_DAQ_ConditionsSvc::~TRT_DAQ_ConditionsSvc
virtual ~TRT_DAQ_ConditionsSvc()
Destructor //.
TRT_DAQ_ConditionsSvc::m_FolderName
std::string m_FolderName
Definition
TRT_DAQ_ConditionsSvc.h:66
TRT_DAQ_ConditionsSvc::m_TRT_ID_Helper
const TRT_ID * m_TRT_ID_Helper
Definition
TRT_DAQ_ConditionsSvc.h:69
TRT_DAQ_ConditionsSvc::finalize
virtual StatusCode finalize()
Finalize //.
Definition
TRT_DAQ_ConditionsSvc.cxx:183
TRT_DAQ_ConditionsSvc::m_RobinsReadKey
SG::ReadCondHandleKey< CondAttrListCollection > m_RobinsReadKey
Definition
TRT_DAQ_ConditionsSvc.h:72
TRT_DAQ_ConditionsSvc::initialize
virtual StatusCode initialize()
Initialize //.
Definition
TRT_DAQ_ConditionsSvc.cxx:36
TRT_DAQ_ConditionsSvc::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Definition
TRT_DAQ_ConditionsSvc.h:63
TRT_DAQ_ConditionsSvc::RODid
unsigned int RODid(const Identifier &)
Return ROD identifier //.
Definition
TRT_DAQ_ConditionsSvc.cxx:51
TRT_DAQ_ConditionsSvc::TRT_DAQ_ConditionsSvc
TRT_DAQ_ConditionsSvc(const std::string &, ISvcLocator *)
Constructor //.
Definition
TRT_DAQ_ConditionsSvc.cxx:18
Identifier
Definition
IdentifierFieldParser.cxx:14
Generated on
for ATLAS Offline Software by
1.17.0