159 auto piovComplete = std::make_unique<xAOD::LumiBlockRangeContainer>();
160 auto piovCompleteAux = std::make_unique<xAOD::LumiBlockRangeAuxContainer>();
161 piovComplete->setStore( piovCompleteAux.get() );
163 auto piovUnfinished = std::make_unique<xAOD::LumiBlockRangeContainer>();
164 auto piovUnfinishedAux = std::make_unique<xAOD::LumiBlockRangeAuxContainer>();
165 piovUnfinished->setStore( piovUnfinishedAux.get() );
167 auto piovSuspect = std::make_unique<xAOD::LumiBlockRangeContainer>();
168 auto piovSuspectAux = std::make_unique<xAOD::LumiBlockRangeAuxContainer>();
169 piovSuspect->setStore( piovSuspectAux.get() );
174 auto iovr = std::make_unique<xAOD::LumiBlockRange>(*range);
175 piovSuspect->push_back(std::move(iovr));
186 tempLBColl.setStore( &tempAuxLBColl );
195 << (*i)->startRunNumber() <<
" LB " << (*i)->startLumiBlockNumber() <<
" events seen "
196 << (*ilast)->eventsSeen() <<
" expected " << (*i)->eventsExpected());
199 if( ((*i)->startRunNumber()==(*ilast)->startRunNumber()) &&
200 ((*i)->stopRunNumber()==(*ilast)->stopRunNumber()) &&
201 ((*i)->startLumiBlockNumber()==(*ilast)->startLumiBlockNumber()) &&
202 ((*i)->stopLumiBlockNumber()==(*ilast)->stopLumiBlockNumber()) ) {
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() );
209 ATH_MSG_VERBOSE(
"Merge Run " << (*i)->startRunNumber() <<
" LB " << (*i)->startLumiBlockNumber()
210 <<
" events seen " << iovr->
eventsSeen() <<
"+"
211 << (*i)->eventsSeen() <<
" and events expected "
218 iovr = tempLBColl.
push_back(std::make_unique<xAOD::LumiBlockRange>(*(*i)));
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));
234 else if(range->eventsSeen() > range->eventsExpected() ) {
235 piovSuspect->push_back(std::move(iovr));
238 piovUnfinished->push_back(std::move(iovr));
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()
250 << range->startRunNumber() <<
"," << range->startLumiBlockNumber()
251 <<
") eventsSeen = " << range->eventsSeen()
252 <<
", eventsExpected = " << range->eventsExpected()
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()
263 << range->startRunNumber() <<
"," << range->startLumiBlockNumber()
264 <<
") eventsSeen = " << range->eventsSeen()
265 <<
", eventsExpected = " << range->eventsExpected()
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()
275 << range->startRunNumber() <<
"," << range->startLumiBlockNumber()
276 <<
") eventsSeen = " << range->eventsSeen()
277 <<
", eventsExpected = " << range->eventsExpected()
284 if (!piovComplete->empty()) {
285 ATH_MSG_INFO(
"Write Complete LumiBlocks with size " << piovComplete->size());
289 "Complete LumiBlocks container with key "
291 <<
" already exists. Updating if there are missing LumiBlocks.");
295 for (
const auto range : *piovComplete) {
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())) {
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;
325 <<
" LumiBlockRangeContainer in output MetaDataStore");
331 if (!piovUnfinished->empty()) {
332 ATH_MSG_INFO(
"Write Unfinished LumiBlocks with size " << piovUnfinished->size());
336 "Unfinished LumiBlocks container with key "
338 <<
" already exists. Updating if there are missing LumiBlocks.");
342 for (
const auto range : *piovUnfinished) {
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())) {
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;
372 <<
" LumiBlockRangeContainer in output MetaDataStore");
378 if (!piovSuspect->empty()) {
379 ATH_MSG_INFO(
"Write Suspect LumiBlocks with size " << piovSuspect->size());
383 "Suspect LumiBlocks container with key "
385 <<
" already exists. Updating if there are missing LumiBlocks.");
389 for (
const auto range : *piovSuspect) {
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())) {
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;
419 <<
" LumiBlockRangeContainer in output MetaDataStore");
425 return(StatusCode::SUCCESS);