45 std::unique_ptr<SG::WriteCondHandle<TRTCond::StrawStatusSummary>> strawStatusHTSummaryHandle{};
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();
59 return StatusCode::SUCCESS;
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());
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());
72 if (!strawReadHandle.
isValid()) {
74 return StatusCode::FAILURE;
77 if (!strawReadHandle.
range(range)) {
79 return StatusCode::FAILURE;
81 ATH_MSG_DEBUG(
"Retrieved " << strawReadHandle.
key() <<
" with validity " << range);
84 if (!strawPermReadHandle.
isValid()) {
86 return StatusCode::FAILURE;
88 EventIDRange rangePerm;
89 if (!strawPermReadHandle.
range(rangePerm)) {
90 ATH_MSG_ERROR(
"Failed to get validity range of " << strawPermReadHandle.
key());
91 return StatusCode::FAILURE;
93 ATH_MSG_DEBUG(
"Retrieved " << strawPermReadHandle.
key() <<
" with validity " << rangePerm);
96 if (!strawHTReadHandle.
isValid()) {
98 return StatusCode::FAILURE;
100 EventIDRange rangeHT;
101 if (!strawHTReadHandle.
range(rangeHT)) {
102 ATH_MSG_ERROR(
"Failed to get validity range of " << strawHTReadHandle.
key());
103 return StatusCode::FAILURE;
105 ATH_MSG_DEBUG(
"Retrieved " << strawHTReadHandle.
key() <<
" with validity " << rangeHT);
110 return StatusCode::FAILURE;
113 if(statPermC==
nullptr) {
114 ATH_MSG_ERROR(
"Null pointer to the straw permanent status container");
115 return StatusCode::FAILURE;
118 if(statHTC==
nullptr) {
119 ATH_MSG_ERROR(
"Null pointer to the straw HT status container");
120 return StatusCode::FAILURE;
125 for (std::vector<Identifier>::const_iterator it =
m_trtId->straw_layer_begin(); it !=
m_trtId->straw_layer_end(); ++it ) {
129 nstraws =
m_trtId->straw_max( *it) + 1;
132 return StatusCode::FAILURE;
136 for (
int i=0; i<nstraws ;i++) {
138 int det =
m_trtId->barrel_ec( offlineID) ;
139 int lay =
m_trtId->layer_or_wheel( offlineID) ;
143 m_trtId->straw(offlineID),level );
145 unsigned int status = statC->
get(expID).getstatus();
147 outputStrawStatus->setStatus(hashId, status);
149 unsigned int statusPerm = statPermC->
get(expID).getstatus();
150 outputStrawStatusPerm->
setStatus(hashId, statusPerm);
152 unsigned int statusHT = statHTC->
get(expID).getstatus();
153 outputStrawStatusHT->
setStatus(hashId, statusHT);
155 if (status or statusPerm) {
156 ATH_MSG_VERBOSE(
" The sector " << det <<
" " << lay <<
" " <<
phi <<
" has status " << status <<
" and permanent " << statusPerm);
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);
165 if (statusPerm == 1) statusPermBool =
true;
166 else if (statusPerm == 0) statusPermBool =
false;
167 else statusPermBool =
static_cast<bool>((statusPerm & statusBitmask) >> 8);
169 if (statusHT == 1) statusHTBool =
true;
170 else if (statusHT==0) statusHTBool =
false;
171 else statusHTBool =
static_cast<bool>((statusHT & statusBitmask) >> 8);
173 outputStrawStatusSummary->setStatus(hashId, statusBool || statusPermBool);
174 if (outputStrawStatusHTSummary !=
nullptr) {
175 outputStrawStatusHTSummary->setStatus(hashId, statusHTBool);
181 if (strawStatusHandle.
record(range, std::move(outputStrawStatus)).isFailure()) {
183 <<
" with EventRange " << range
184 <<
" into Conditions Store");
185 return StatusCode::FAILURE;
188 if (strawStatusPermHandle.
record(rangePerm, std::move(outputStrawStatusPerm)).isFailure()) {
190 <<
" with EventRange " << rangePerm
191 <<
" into Conditions Store");
192 return StatusCode::FAILURE;
195 if (strawStatusHTHandle.
record(rangeHT, std::move(outputStrawStatusHT)).isFailure()) {
197 <<
" with EventRange " << rangeHT
198 <<
" into Conditions Store");
199 return StatusCode::FAILURE;
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;
210 if (strawStatusHTSummaryHandle !=
nullptr && strawStatusHTSummaryHandle->record(rangeHT, std::move(outputStrawStatusHTSummary)).isFailure()) {
212 <<
" with EventRange " << rangeHT
213 <<
" into Conditions Store");
214 return StatusCode::FAILURE;
217 return StatusCode::SUCCESS;