Fill metaDataStore and ntuples.
153 {
154
155
156
158
159 auto piovComplete = std::make_unique<xAOD::LumiBlockRangeContainer>();
160 auto piovCompleteAux = std::make_unique<xAOD::LumiBlockRangeAuxContainer>();
161 piovComplete->setStore( piovCompleteAux.get() );
162
163 auto piovUnfinished = std::make_unique<xAOD::LumiBlockRangeContainer>();
164 auto piovUnfinishedAux = std::make_unique<xAOD::LumiBlockRangeAuxContainer>();
165 piovUnfinished->setStore( piovUnfinishedAux.get() );
166
167 auto piovSuspect = std::make_unique<xAOD::LumiBlockRangeContainer>();
168 auto piovSuspectAux = std::make_unique<xAOD::LumiBlockRangeAuxContainer>();
169 piovSuspect->setStore( piovSuspectAux.get() );
170
174 auto iovr = std::make_unique<xAOD::LumiBlockRange>(*range);
175 piovSuspect->push_back(std::move(iovr));
176 }
177 }
178
182
183
186 tempLBColl.setStore( &tempAuxLBColl );
187
188
189
195 << (*i)->startRunNumber() << " LB " << (*i)->startLumiBlockNumber() << " events seen "
196 << (*ilast)->eventsSeen() << " expected " << (*i)->eventsExpected());
198 while (i != ie) {
199 if( ((*i)->startRunNumber()==(*ilast)->startRunNumber()) &&
200 ((*i)->stopRunNumber()==(*ilast)->stopRunNumber()) &&
201 ((*i)->startLumiBlockNumber()==(*ilast)->startLumiBlockNumber()) &&
202 ((*i)->stopLumiBlockNumber()==(*ilast)->stopLumiBlockNumber()) ) {
203
204 if((*ilast)->eventsExpected()!=(*i)->eventsExpected()) {
205 ATH_MSG_WARNING(
"Error: tmpLBColl with run " << (*i)->startRunNumber() <<
" LB " << (*i)->startLumiBlockNumber() <<
" events expected "
206 << (*ilast)->eventsExpected() << " and " << (*i)->eventsExpected() );
207 }
208 else {
209 ATH_MSG_VERBOSE(
"Merge Run " << (*i)->startRunNumber() <<
" LB " << (*i)->startLumiBlockNumber()
210 <<
" events seen " << iovr->
eventsSeen() <<
"+"
211 << (*i)->eventsSeen() << " and events expected "
213
215 }
216 }
217 else {
218 iovr = tempLBColl.
push_back(std::make_unique<xAOD::LumiBlockRange>(*(*i)));
219
223
225 }
227 }
228
229 for (const auto range : tempLBColl) {
230 auto iovr = std::make_unique<xAOD::LumiBlockRange>(*range);
231 if(
range->eventsSeen() ==
range->eventsExpected() ) {
232 piovComplete->push_back(std::move(iovr));
233 }
234 else if(
range->eventsSeen() >
range->eventsExpected() ) {
235 piovSuspect->push_back(std::move(iovr));
236 }
237 else {
238 piovUnfinished->push_back(std::move(iovr));
239 }
240 }
241 }
242
243
244 if(!piovComplete->empty()) {
245 ATH_MSG_DEBUG(
"Number of Complete LumiBlocks:" << piovComplete->size() );
246 for (const auto range : *piovComplete) {
248 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
249 << "):("
250 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
251 <<
") eventsSeen = " <<
range->eventsSeen()
252 <<
", eventsExpected = " <<
range->eventsExpected()
253 << " ]");
254 }
255 }
256
257 if(!piovUnfinished->empty()) {
258 ATH_MSG_DEBUG(
"Number of Unfinished LumiBlocks:" << piovUnfinished->size() );
259 for (const auto range : *piovUnfinished) {
261 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
262 << "):("
263 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
264 <<
") eventsSeen = " <<
range->eventsSeen()
265 <<
", eventsExpected = " <<
range->eventsExpected()
266 << " ]");
267 }
268 }
269 if(!piovSuspect->empty()) {
270 ATH_MSG_DEBUG(
"Number of Suspect LumiBlocks:" << piovSuspect->size() );
271 for (const auto range : *piovSuspect) {
273 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
274 << "):("
275 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
276 <<
") eventsSeen = " <<
range->eventsSeen()
277 <<
", eventsExpected = " <<
range->eventsExpected()
278 << " ]");
279 }
280 }
281
282
283
284 if (!piovComplete->empty()) {
285 ATH_MSG_INFO(
"Write Complete LumiBlocks with size " << piovComplete->size());
286
289 "Complete LumiBlocks container with key "
291 << " already exists. Updating if there are missing LumiBlocks.");
294
295 for (const auto range : *piovComplete) {
296
298 for (const auto existing : *complete) {
299 if ((existing->startRunNumber() ==
range->startRunNumber()) &&
300 (existing->stopRunNumber() ==
range->stopRunNumber()) &&
301 (existing->startLumiBlockNumber() ==
range->startLumiBlockNumber()) &&
302 (existing->stopLumiBlockNumber() ==
range->stopLumiBlockNumber()) &&
303 (existing->eventsSeen() ==
range->eventsSeen()) &&
304 (existing->eventsExpected() ==
range->eventsExpected())) {
306 break;
307 }
308 }
310 continue;
311 }
312
314 "Copying LumiBlock: [ ("
315 <<
range->startRunNumber() <<
"," <<
range->stopLumiBlockNumber()
316 <<
"):(" <<
range->startRunNumber() <<
","
317 <<
range->stopLumiBlockNumber()
318 <<
") eventsSeen = " <<
range->eventsSeen()
319 <<
", eventsExpected = " <<
range->eventsExpected() <<
" ]");
320 *complete->push_back(std::make_unique<xAOD::LumiBlockRange>()) = *
range;
321 }
322 } else {
325 << " LumiBlockRangeContainer in output MetaDataStore");
328 }
329 }
330
331 if (!piovUnfinished->empty()) {
332 ATH_MSG_INFO(
"Write Unfinished LumiBlocks with size " << piovUnfinished->size());
333
336 "Unfinished LumiBlocks container with key "
338 << " already exists. Updating if there are missing LumiBlocks.");
341
342 for (const auto range : *piovUnfinished) {
343
345 for (const auto existing : *unfinished) {
346 if ((existing->startRunNumber() ==
range->startRunNumber()) &&
347 (existing->stopRunNumber() ==
range->stopRunNumber()) &&
348 (existing->startLumiBlockNumber() ==
range->startLumiBlockNumber()) &&
349 (existing->stopLumiBlockNumber() ==
range->stopLumiBlockNumber()) &&
350 (existing->eventsSeen() ==
range->eventsSeen()) &&
351 (existing->eventsExpected() ==
range->eventsExpected())) {
353 break;
354 }
355 }
357 continue;
358 }
359
361 "Copying LumiBlock: [ ("
362 <<
range->startRunNumber() <<
"," <<
range->stopLumiBlockNumber()
363 <<
"):(" <<
range->startRunNumber() <<
","
364 <<
range->stopLumiBlockNumber()
365 <<
") eventsSeen = " <<
range->eventsSeen()
366 <<
", eventsExpected = " <<
range->eventsExpected() <<
" ]");
367 *unfinished->push_back(std::make_unique<xAOD::LumiBlockRange>()) = *
range;
368 }
369 } else {
372 << " LumiBlockRangeContainer in output MetaDataStore");
375 }
376 }
377
378 if (!piovSuspect->empty()) {
379 ATH_MSG_INFO(
"Write Suspect LumiBlocks with size " << piovSuspect->size());
380
383 "Suspect LumiBlocks container with key "
385 << " already exists. Updating if there are missing LumiBlocks.");
388
389 for (const auto range : *piovSuspect) {
390
392 for (const auto existing : *suspect) {
393 if ((existing->startRunNumber() ==
range->startRunNumber()) &&
394 (existing->stopRunNumber() ==
range->stopRunNumber()) &&
395 (existing->startLumiBlockNumber() ==
range->startLumiBlockNumber()) &&
396 (existing->stopLumiBlockNumber() ==
range->stopLumiBlockNumber()) &&
397 (existing->eventsSeen() ==
range->eventsSeen()) &&
398 (existing->eventsExpected() ==
range->eventsExpected())) {
400 break;
401 }
402 }
404 continue;
405 }
406
408 "Copying LumiBlock: [ ("
409 <<
range->startRunNumber() <<
"," <<
range->stopLumiBlockNumber()
410 <<
"):(" <<
range->startRunNumber() <<
","
411 <<
range->stopLumiBlockNumber()
412 <<
") eventsSeen = " <<
range->eventsSeen()
413 <<
", eventsExpected = " <<
range->eventsExpected() <<
" ]");
414 *suspect->push_back(std::make_unique<xAOD::LumiBlockRange>()) = *
range;
415 }
416 } else {
419 << " LumiBlockRangeContainer in output MetaDataStore");
422 }
423 }
424
425 return(StatusCode::SUCCESS);
426}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
DataModel_detail::const_iterator< DataVector > const_iterator
value_type push_back(value_type pElem)
Add an element to the end of the collection.
uint32_t eventsSeen() const
Get the number of seen/processed events in this luminosity block range.
void setEventsSeen(uint32_t value)
Set the number of seen/processed events in this luminosity block range.
uint32_t startRunNumber() const
Get the run number of the start time of the range.
uint32_t eventsExpected() const
Get the number of expected events in this luminosity block range.
uint32_t startLumiBlockNumber() const
Get the luminosity block of the start time of the range.
bool exists(const std::string &filename)
does a file exist
LumiBlockRange_v1 LumiBlockRange
Declare the latest version of the class.
LumiBlockRangeAuxContainer_v1 LumiBlockRangeAuxContainer
Declare the latest version of the auxiliary container.