Fill metaDataStore and ntuples.
148 {
149
150
151
153
154 auto piovComplete = std::make_unique<xAOD::LumiBlockRangeContainer>();
155 auto piovCompleteAux = std::make_unique<xAOD::LumiBlockRangeAuxContainer>();
156 piovComplete->setStore( piovCompleteAux.get() );
157
158 auto piovUnfinished = std::make_unique<xAOD::LumiBlockRangeContainer>();
159 auto piovUnfinishedAux = std::make_unique<xAOD::LumiBlockRangeAuxContainer>();
160 piovUnfinished->setStore( piovUnfinishedAux.get() );
161
162 auto piovSuspect = std::make_unique<xAOD::LumiBlockRangeContainer>();
163 auto piovSuspectAux = std::make_unique<xAOD::LumiBlockRangeAuxContainer>();
164 piovSuspect->setStore( piovSuspectAux.get() );
165
169 auto iovr = std::make_unique<xAOD::LumiBlockRange>(*range);
170 piovSuspect->push_back(std::move(iovr));
171 }
172 }
173
177
178
181 tempLBColl.setStore( &tempAuxLBColl );
182
183
184
190 << (*i)->startRunNumber() << " LB " << (*i)->startLumiBlockNumber() << " events seen "
191 << (*ilast)->eventsSeen() << " expected " << (*i)->eventsExpected());
193 while (i != ie) {
194 if( ((*i)->startRunNumber()==(*ilast)->startRunNumber()) &&
195 ((*i)->stopRunNumber()==(*ilast)->stopRunNumber()) &&
196 ((*i)->startLumiBlockNumber()==(*ilast)->startLumiBlockNumber()) &&
197 ((*i)->stopLumiBlockNumber()==(*ilast)->stopLumiBlockNumber()) ) {
198
199 if((*ilast)->eventsExpected()!=(*i)->eventsExpected()) {
200 ATH_MSG_WARNING(
"Error: tmpLBColl with run " << (*i)->startRunNumber() <<
" LB " << (*i)->startLumiBlockNumber() <<
" events expected "
201 << (*ilast)->eventsExpected() << " and " << (*i)->eventsExpected() );
202 }
203 else {
204 ATH_MSG_VERBOSE(
"Merge Run " << (*i)->startRunNumber() <<
" LB " << (*i)->startLumiBlockNumber()
205 <<
" events seen " << iovr->
eventsSeen() <<
"+"
206 << (*i)->eventsSeen() << " and events expected "
208
210 }
211 }
212 else {
213 iovr = tempLBColl.
push_back(std::make_unique<xAOD::LumiBlockRange>(*(*i)));
214
218
220 }
222 }
223
224 for (const auto range : tempLBColl) {
225 auto iovr = std::make_unique<xAOD::LumiBlockRange>(*range);
226 if(
range->eventsSeen() ==
range->eventsExpected() ) {
227 piovComplete->push_back(std::move(iovr));
228 }
229 else if(
range->eventsSeen() >
range->eventsExpected() ) {
230 piovSuspect->push_back(std::move(iovr));
231 }
232 else {
233 piovUnfinished->push_back(std::move(iovr));
234 }
235 }
236 }
237
238
239 if(!piovComplete->empty()) {
240 ATH_MSG_DEBUG(
"Number of Complete LumiBlocks:" << piovComplete->size() );
241 for (const auto range : *piovComplete) {
243 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
244 << "):("
245 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
246 <<
") eventsSeen = " <<
range->eventsSeen()
247 <<
", eventsExpected = " <<
range->eventsExpected()
248 << " ]");
249 }
250 }
251
252 if(!piovUnfinished->empty()) {
253 ATH_MSG_DEBUG(
"Number of Unfinished LumiBlocks:" << piovUnfinished->size() );
254 for (const auto range : *piovUnfinished) {
256 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
257 << "):("
258 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
259 <<
") eventsSeen = " <<
range->eventsSeen()
260 <<
", eventsExpected = " <<
range->eventsExpected()
261 << " ]");
262 }
263 }
264 if(!piovSuspect->empty()) {
265 ATH_MSG_DEBUG(
"Number of Suspect LumiBlocks:" << piovSuspect->size() );
266 for (const auto range : *piovSuspect) {
268 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
269 << "):("
270 <<
range->startRunNumber() <<
"," <<
range->startLumiBlockNumber()
271 <<
") eventsSeen = " <<
range->eventsSeen()
272 <<
", eventsExpected = " <<
range->eventsExpected()
273 << " ]");
274 }
275 }
276
277
278
279 if (!piovComplete->empty()) {
280 ATH_MSG_INFO(
"Write Complete LumiBlocks with size " << piovComplete->size());
281
284 "Complete LumiBlocks container with key "
286 << " already exists. Updating if there are missing LumiBlocks.");
289
290 for (const auto range : *piovComplete) {
291
293 for (const auto existing : *complete) {
294 if ((existing->startRunNumber() ==
range->startRunNumber()) &&
295 (existing->stopRunNumber() ==
range->stopRunNumber()) &&
296 (existing->startLumiBlockNumber() ==
range->startLumiBlockNumber()) &&
297 (existing->stopLumiBlockNumber() ==
range->stopLumiBlockNumber()) &&
298 (existing->eventsSeen() ==
range->eventsSeen()) &&
299 (existing->eventsExpected() ==
range->eventsExpected())) {
301 break;
302 }
303 }
305 continue;
306 }
307
309 "Copying LumiBlock: [ ("
310 <<
range->startRunNumber() <<
"," <<
range->stopLumiBlockNumber()
311 <<
"):(" <<
range->startRunNumber() <<
","
312 <<
range->stopLumiBlockNumber()
313 <<
") eventsSeen = " <<
range->eventsSeen()
314 <<
", eventsExpected = " <<
range->eventsExpected() <<
" ]");
315 *complete->push_back(std::make_unique<xAOD::LumiBlockRange>()) = *
range;
316 }
317 } else {
320 << " LumiBlockRangeContainer in output MetaDataStore");
323 }
324 }
325
326 if (!piovUnfinished->empty()) {
327 ATH_MSG_INFO(
"Write Unfinished LumiBlocks with size " << piovUnfinished->size());
328
331 "Unfinished LumiBlocks container with key "
333 << " already exists. Updating if there are missing LumiBlocks.");
336
337 for (const auto range : *piovUnfinished) {
338
340 for (const auto existing : *unfinished) {
341 if ((existing->startRunNumber() ==
range->startRunNumber()) &&
342 (existing->stopRunNumber() ==
range->stopRunNumber()) &&
343 (existing->startLumiBlockNumber() ==
range->startLumiBlockNumber()) &&
344 (existing->stopLumiBlockNumber() ==
range->stopLumiBlockNumber()) &&
345 (existing->eventsSeen() ==
range->eventsSeen()) &&
346 (existing->eventsExpected() ==
range->eventsExpected())) {
348 break;
349 }
350 }
352 continue;
353 }
354
356 "Copying LumiBlock: [ ("
357 <<
range->startRunNumber() <<
"," <<
range->stopLumiBlockNumber()
358 <<
"):(" <<
range->startRunNumber() <<
","
359 <<
range->stopLumiBlockNumber()
360 <<
") eventsSeen = " <<
range->eventsSeen()
361 <<
", eventsExpected = " <<
range->eventsExpected() <<
" ]");
362 *unfinished->push_back(std::make_unique<xAOD::LumiBlockRange>()) = *
range;
363 }
364 } else {
367 << " LumiBlockRangeContainer in output MetaDataStore");
370 }
371 }
372
373 if (!piovSuspect->empty()) {
374 ATH_MSG_INFO(
"Write Suspect LumiBlocks with size " << piovSuspect->size());
375
378 "Suspect LumiBlocks container with key "
380 << " already exists. Updating if there are missing LumiBlocks.");
383
384 for (const auto range : *piovSuspect) {
385
387 for (const auto existing : *suspect) {
388 if ((existing->startRunNumber() ==
range->startRunNumber()) &&
389 (existing->stopRunNumber() ==
range->stopRunNumber()) &&
390 (existing->startLumiBlockNumber() ==
range->startLumiBlockNumber()) &&
391 (existing->stopLumiBlockNumber() ==
range->stopLumiBlockNumber()) &&
392 (existing->eventsSeen() ==
range->eventsSeen()) &&
393 (existing->eventsExpected() ==
range->eventsExpected())) {
395 break;
396 }
397 }
399 continue;
400 }
401
403 "Copying LumiBlock: [ ("
404 <<
range->startRunNumber() <<
"," <<
range->stopLumiBlockNumber()
405 <<
"):(" <<
range->startRunNumber() <<
","
406 <<
range->stopLumiBlockNumber()
407 <<
") eventsSeen = " <<
range->eventsSeen()
408 <<
", eventsExpected = " <<
range->eventsExpected() <<
" ]");
409 *suspect->push_back(std::make_unique<xAOD::LumiBlockRange>()) = *
range;
410 }
411 } else {
414 << " LumiBlockRangeContainer in output MetaDataStore");
417 }
418 }
419
420 return(StatusCode::SUCCESS);
421}
#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.