37{
39
43
45 std::unique_ptr<SG::WriteCondHandle<TRTCond::StrawStatusSummary>> strawStatusHTSummaryHandle{};
48 }
49
50 bool alreadyPresent = strawStatusHandle.
isValid();
51 alreadyPresent &= strawStatusPermHandle.
isValid();
52 alreadyPresent &= strawStatusSummaryHandle.
isValid();
53 alreadyPresent &= strawStatusHTHandle.
isValid();
54 if (strawStatusHTSummaryHandle != nullptr) {
55 alreadyPresent &= strawStatusHTSummaryHandle->isValid();
56 }
57 if(alreadyPresent){
59 return StatusCode::SUCCESS;
60 }
61 auto outputStrawStatus = std::make_unique<TRTCond::StrawStatusData>(
m_trtId->straw_hash_max());
62 auto outputStrawStatusPerm = std::make_unique<TRTCond::StrawStatusData>(
m_trtId->straw_hash_max());
63 auto outputStrawStatusSummary = std::make_unique<TRTCond::StrawStatusSummary>(
m_trtId->straw_hash_max());
64
65 auto outputStrawStatusHT = std::make_unique<TRTCond::StrawStatusData>(
m_trtId->straw_hash_max());
66 std::unique_ptr<TRTCond::StrawStatusSummary> outputStrawStatusHTSummary{};
68 outputStrawStatusHTSummary = std::make_unique<TRTCond::StrawStatusSummary>(
m_trtId->straw_hash_max());
69 }
70
71 SG::ReadCondHandle<StrawStatusContainer> strawReadHandle{
m_strawReadKey, ctx};
72 if (!strawReadHandle.
isValid()) {
74 return StatusCode::FAILURE;
75 }
77 if (!strawReadHandle.
range(range)) {
79 return StatusCode::FAILURE;
80 }
81 ATH_MSG_DEBUG(
"Retrieved " << strawReadHandle.
key() <<
" with validity " << range);
82
84 if (!strawPermReadHandle.
isValid()) {
86 return StatusCode::FAILURE;
87 }
88 EventIDRange rangePerm;
89 if (!strawPermReadHandle.
range(rangePerm)) {
90 ATH_MSG_ERROR(
"Failed to get validity range of " << strawPermReadHandle.
key());
91 return StatusCode::FAILURE;
92 }
93 ATH_MSG_DEBUG(
"Retrieved " << strawPermReadHandle.
key() <<
" with validity " << rangePerm);
94
95 SG::ReadCondHandle<StrawStatusContainer> strawHTReadHandle{
m_strawHTReadKey, ctx};
96 if (!strawHTReadHandle.
isValid()) {
98 return StatusCode::FAILURE;
99 }
100 EventIDRange rangeHT;
101 if (!strawHTReadHandle.
range(rangeHT)) {
102 ATH_MSG_ERROR(
"Failed to get validity range of " << strawHTReadHandle.
key());
103 return StatusCode::FAILURE;
104 }
105 ATH_MSG_DEBUG(
"Retrieved " << strawHTReadHandle.
key() <<
" with validity " << rangeHT);
106
108 if(statC==nullptr) {
110 return StatusCode::FAILURE;
111 }
113 if(statPermC==nullptr) {
114 ATH_MSG_ERROR(
"Null pointer to the straw permanent status container");
115 return StatusCode::FAILURE;
116 }
118 if(statHTC==nullptr) {
119 ATH_MSG_ERROR(
"Null pointer to the straw HT status container");
120 return StatusCode::FAILURE;
121 }
122
123
124
125 for (std::vector<Identifier>::const_iterator it =
m_trtId->straw_layer_begin(); it !=
m_trtId->straw_layer_end(); ++it ) {
126
127 int nstraws = 0;
128
129 nstraws =
m_trtId->straw_max( *it) + 1;
130 if (nstraws <= 0){
132 return StatusCode::FAILURE;
133 }
135
136 for (
int i=0;
i<nstraws ;
i++) {
137 Identifier offlineID =
m_trtId->straw_id( *it, i);
139 int lay =
m_trtId->layer_or_wheel( offlineID) ;
141 TRTCond::ExpandedIdentifier expID= TRTCond::ExpandedIdentifier(
m_trtId->barrel_ec(offlineID),
m_trtId->layer_or_wheel(offlineID),
143 m_trtId->straw(offlineID),level );
144
145 unsigned int status = statC->get(expID).getstatus();
146 const IdentifierHash hashId =
m_trtId->straw_hash(offlineID);
147 outputStrawStatus->setStatus(hashId, status);
148
149 unsigned int statusPerm = statPermC->get(expID).getstatus();
150 outputStrawStatusPerm->setStatus(hashId, statusPerm);
151
152 unsigned int statusHT = statHTC->get(expID).getstatus();
153 outputStrawStatusHT->setStatus(hashId, statusHT);
154
155 if (status or statusPerm) {
156 ATH_MSG_VERBOSE(
" The sector " << det <<
" " << lay <<
" " <<
phi <<
" has status " << status <<
" and permanent " << statusPerm);
157 }
158
159 constexpr unsigned int statusBitmask = 1 << 8;
160 bool statusBool{}, statusPermBool{}, statusHTBool{};
161 if (status == 1) statusBool = true;
162 else if (status == 0) statusBool = false;
163 else statusBool =
static_cast<bool>((
status & statusBitmask) >> 8);
164
165 if (statusPerm == 1) statusPermBool = true;
166 else if (statusPerm == 0) statusPermBool = false;
167 else statusPermBool = static_cast<bool>((statusPerm & statusBitmask) >> 8);
168
169 if (statusHT == 1) statusHTBool = true;
170 else if (statusHT==0) statusHTBool = false;
171 else statusHTBool = static_cast<bool>((statusHT & statusBitmask) >> 8);
172
173 outputStrawStatusSummary->setStatus(hashId, statusBool || statusPermBool);
174 if (outputStrawStatusHTSummary != nullptr) {
175 outputStrawStatusHTSummary->setStatus(hashId, statusHTBool);
176 }
177 }
178 }
179
180
181 if (strawStatusHandle.
record(range, std::move(outputStrawStatus)).isFailure()) {
183 << " with EventRange " << range
184 << " into Conditions Store");
185 return StatusCode::FAILURE;
186 }
187
188 if (strawStatusPermHandle.
record(rangePerm, std::move(outputStrawStatusPerm)).isFailure()) {
190 << " with EventRange " << rangePerm
191 << " into Conditions Store");
192 return StatusCode::FAILURE;
193 }
194
195 if (strawStatusHTHandle.
record(rangeHT, std::move(outputStrawStatusHT)).isFailure()) {
197 << " with EventRange " << rangeHT
198 << " into Conditions Store");
199 return StatusCode::FAILURE;
200 }
201
202 EventIDRange rangeCombined = EventIDRange::intersect (range, rangePerm);
203 if (strawStatusSummaryHandle.
record(rangeCombined, std::move(outputStrawStatusSummary)).isFailure()) {
205 << " with EventRange " << rangeCombined
206 << " into Conditions Store");
207 return StatusCode::FAILURE;
208 }
209
210 if (strawStatusHTSummaryHandle != nullptr && strawStatusHTSummaryHandle->record(rangeHT, std::move(outputStrawStatusHTSummary)).isFailure()) {
212 << " with EventRange " << rangeHT
213 << " into Conditions Store");
214 return StatusCode::FAILURE;
215 }
216
217 return StatusCode::SUCCESS;
218}
Scalar phi() const
phi method
#define ATH_MSG_VERBOSE(x)
bool range(EventIDRange &r)
const std::string & key() const
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
SG::WriteCondHandleKey< TRTCond::StrawStatusData > m_strawStatusHTWriteKey
SG::WriteCondHandleKey< TRTCond::StrawStatusData > m_strawStatusWriteKey
SG::ReadCondHandleKey< StrawStatusContainer > m_strawHTReadKey
SG::ReadCondHandleKey< StrawStatusContainer > m_strawReadKey
SG::WriteCondHandleKey< TRTCond::StrawStatusSummary > m_strawStatusSummaryWriteKey
TRTCond::StrawStatusMultChanContainer StrawStatusContainer
SG::ReadCondHandleKey< StrawStatusContainer > m_strawPermReadKey
SG::WriteCondHandleKey< TRTCond::StrawStatusData > m_strawStatusPermWriteKey
SG::WriteCondHandleKey< TRTCond::StrawStatusSummary > m_strawStatusHTSummaryWriteKey