118 bool validWriteCondHandle{
true};
122 if (writeHandleData[i].
isValid()) {
123 ATH_MSG_DEBUG(
"CondHandle " << writeHandleData[i].fullKey() <<
" is already valid."
124 <<
". In theory this should not be called, but may happen"
125 <<
" if multiple concurrent events are being processed out of order.");
127 validWriteCondHandle =
false;
131 if (writeHandleInfo.
isValid()) {
133 <<
". In theory this should not be called, but may happen"
134 <<
" if multiple concurrent events are being processed out of order.");
136 validWriteCondHandle =
false;
138 if (validWriteCondHandle)
return StatusCode::SUCCESS;
144 if (readCdo[i]==
nullptr) {
145 ATH_MSG_FATAL(
"Null pointer to the read conditions object " << readHandle[i].key());
146 return StatusCode::FAILURE;
151 ATH_MSG_INFO(
"Size of CondAttrListCollection " << readHandle[i].fullKey() <<
" readCdo->size()= " << readCdo[i]->size());
152 ATH_MSG_INFO(
"Range of input is " << readHandle[i].getRange());
158 if (elements==
nullptr) {
160 return StatusCode::FAILURE;
168 std::unique_ptr<SCT_CalibDefectData> writeCdoData[
NFEATURES]{
nullptr,
nullptr};
170 writeCdoData[i] = std::make_unique<SCT_CalibDefectData>();
172 std::unique_ptr<SCT_AllGoodStripInfo> writeCdoInfo{std::make_unique<SCT_AllGoodStripInfo>()};
176 (*writeCdoInfo)[w][s]=
true;
188 for (; itLoop!=itLoop_end; ++itLoop) {
190 const coral::AttributeList &anAttrList{(*itLoop).second};
196 m_id_sct->get_other_side(hashId0, hashId1);
211 const std::string &gaindefectb{(anAttrList[
"defectBeginChannel"]).
data<std::string>()};
212 const std::string &gaindefecte{(anAttrList[
"defectEndChannel"]).
data<std::string>()};
214 const std::string &parValue{(anAttrList[
"defectParameter"]).
data<std::string>()};
217 std::vector<unsigned int> gaindefectbvec;
218 fillEmptyVectorFromString(gaindefectb, gaindefectbvec);
219 std::vector<unsigned int> gaindefectevec;
220 fillEmptyVectorFromString(gaindefecte, gaindefectevec);
221 std::vector<unsigned int> defectTypevec;
222 fillEmptyVectorFromString(defectType, defectTypevec);
223 std::vector<double> parValuevec;
224 fillEmptyVectorFromString(parValue, parValuevec);
227 long unsigned int gainvec_size{gaindefectbvec.size()};
228 for (
long unsigned int i{0}; i<gainvec_size; ++i) {
231 ATH_MSG_DEBUG(
"Defect type " << defectTypevec[i] <<
" is not defined! This defect is ignored.");
234 theseDefects.
begDefects.push_back(gaindefectbvec[i]);
235 theseDefects.
endDefects.push_back(gaindefectevec[i]);
236 theseDefects.
parValue.push_back(coerceToFloatRange(parValuevec[i]));
241 for (
unsigned int i{0}; i<theseDefects.
begDefects.size(); ++i) {
243 bool ignoreDefect{
false};
259 if (not ignoreDefect) {
264 const unsigned int waferId0{hashId0};
267 thisWaferIsGoodData0[side0StripNumber] =
false;
269 const unsigned int waferId1{hashId1};
272 thisWaferIsGoodData1[side1StripNumber] =
false;
285 if (not (writeCdoData[i]->addModule(moduleId, theseDefects))) {
286 ATH_MSG_ERROR(
"Unable to add module " << moduleId <<
" to NPtGain defect map");
287 return StatusCode::RECOVERABLE;
289 ATH_MSG_DEBUG(
"Defects for module " << moduleId <<
" added to NPG defect map");
291 }
else if (i==
NOISE) {
293 ATH_MSG_DEBUG(
"No NoiseOccupancy defects for module " << moduleId);
296 if (not (writeCdoData[i]->addModule(moduleId, theseDefects))) {
297 ATH_MSG_ERROR(
"Unable to add module " << moduleId <<
" to NoiseOccupancy defect map");
298 return StatusCode::RECOVERABLE;
300 ATH_MSG_DEBUG(
"Defects for module " << moduleId <<
" added to NoiseOccupancy defect map");
307 ATH_MSG_DEBUG(
"There are " << writeCdoInfo->size() <<
" elements in " << writeHandleInfo.
key());
308 if (writeHandleInfo.
record(std::move(writeCdoInfo)).isFailure()) {
309 ATH_MSG_FATAL(
"Could not record SCT_AllGoodStripInfo " << writeHandleInfo.
key()
310 <<
" with EventRange " << writeHandleInfo.
getRange() <<
" into Conditions Store");
311 return StatusCode::FAILURE;
313 ATH_MSG_INFO(
"recorded new CDO " << writeHandleInfo.
key() <<
" with range " << writeHandleInfo.
getRange() <<
" into Conditions Store");
315 ATH_MSG_DEBUG(
"There are " << writeCdoData[i]->size() <<
" elements in " << writeHandleData[i].key());
316 if (writeHandleData[i].record(std::move(writeCdoData[i])).isFailure()) {
317 ATH_MSG_FATAL(
"Could not record SCT_CalibDefectData " << writeHandleData[i].key()
318 <<
" with EventRange " << writeHandleData[i].getRange() <<
" into Conditions Store");
319 return StatusCode::FAILURE;
321 ATH_MSG_INFO(
"recorded new CDO " << writeHandleData[i].key() <<
" with range " << writeHandleData[i].getRange() <<
" into Conditions Store");
324 return StatusCode::SUCCESS;