diff --git a/Control/PileUpComps/src/PileUpEventLoopMgr.cxx b/Control/PileUpComps/src/PileUpEventLoopMgr.cxx index 36dee170be3fa026554dee48499384ad96206422..276cfde7c4525534aa820942db8e297a4e1dcbd9 100644 --- a/Control/PileUpComps/src/PileUpEventLoopMgr.cxx +++ b/Control/PileUpComps/src/PileUpEventLoopMgr.cxx @@ -348,8 +348,24 @@ StatusCode PileUpEventLoopMgr::nextEvent(int maxevt) xAOD::EventInfo *pOverEvent = new xAOD::EventInfo(); xAOD::EventAuxInfo *pOverEventAux = new xAOD::EventAuxInfo(); pOverEvent->setStore( pOverEventAux ); + + ATH_MSG_INFO("MN: #subevents in orig =" << pEvent->subEvents().size()); + if( pEvent->subEvents().size() > 1 ) { + ATH_MSG_INFO(" orig subev[1] link=" << pEvent->subEvents()[1].link() ); + } + // Copy the eventInfo data from origStream event *pOverEvent = *pEvent; + pOverEvent->clearSubEvents(); // start clean without any subevents + + ATH_MSG_INFO("MN: #subevents in copy =" << pOverEvent->subEvents().size()); + if( pOverEvent->subEvents().size() > 1 ) { + ATH_MSG_INFO(" copy subev[1] link=" << pOverEvent->subEvents()[1].link() ); + } + ATH_MSG_INFO("MN: #subevents in orig =" << pEvent->subEvents().size()); + if( pEvent->subEvents().size() > 1 ) { + ATH_MSG_INFO(" orig subev[1] link=" << pEvent->subEvents()[1].link() ); + } // Record the xAOD object(s): CHECK( m_evtStore->record( pOverEventAux, "McEventInfoAux." ) ); @@ -402,28 +418,29 @@ StatusCode PileUpEventLoopMgr::nextEvent(int maxevt) pOverEvent->setEventTypeBitmask( pEvent->eventTypeBitmask() | xAOD::EventInfo::IS_SIMULATION ); } - if(m_isEmbedding || m_isEventOverlayJobMC) - { + if(m_isEmbedding || m_isEventOverlayJobMC) { pOverEvent->setActualInteractionsPerCrossing(pEvent->actualInteractionsPerCrossing()); pOverEvent->setAverageInteractionsPerCrossing(pEvent->averageInteractionsPerCrossing()); - cout <<"MN: p2 " << m_isEmbedding <<" "<< m_isEventOverlayJobMC << endl; - } - if(m_isEventOverlayJob) - { - // Propagate core event flags - pOverEvent->setEventFlags(xAOD::EventInfo::Core, - pEventSignal->eventFlags(xAOD::EventInfo::Core) - | pEvent->eventFlags(xAOD::EventInfo::Core) ); - pOverEvent->setErrorState(xAOD::EventInfo::Core, - std::max( pEventSignal->errorState(xAOD::EventInfo::Core), - pEvent->errorState(xAOD::EventInfo::Core) ) ); - } + } + if(m_isEventOverlayJob) { + // Propagate core event flags + pOverEvent->setEventFlags(xAOD::EventInfo::Core, + pEventSignal->eventFlags(xAOD::EventInfo::Core) + | pEvent->eventFlags(xAOD::EventInfo::Core) ); + pOverEvent->setErrorState(xAOD::EventInfo::Core, + std::max( pEventSignal->errorState(xAOD::EventInfo::Core), + pEvent->errorState(xAOD::EventInfo::Core) ) ); + } ATH_MSG_VERBOSE ( "BCID =" << pOverEvent->bcid() ); + cout <<"MN: EventLoopMgr flags: " << m_isEmbedding <<", "<< m_isEventOverlayJob + << ", " << m_isEventOverlayJobMC << endl; + // when doing overlay add the hard-scatter event as sub-event if( m_isEventOverlayJob ) { - ATH_MSG_INFO ( "MN: add EventSignal" ); + ATH_MSG_INFO ( "MN: add EventSignal as first subev" ); puei->push_back( new xAOD::EventInfo( *pEventSignal ) ); + // link to the fresh EI added to the container: ElementLink< xAOD::EventInfoContainer > eilink( puei_sg_key, puei->size()-1, &*m_evtStore ); xAOD::EventInfo::SubEvent subev( 0, pOverEvent->subEvents().size(), xAOD::EventInfo::Signal, eilink ); @@ -437,7 +454,7 @@ StatusCode PileUpEventLoopMgr::nextEvent(int maxevt) { auto it = pEvent->subEvents().begin(); auto end = pEvent->subEvents().end(); - ATH_MSG_INFO ( "MN: nextEvent(): copy subevents " << (int)(end-it) ); + ATH_MSG_INFO ( "MN: copy subevents " << (int)(end-it) ); if( m_isEventOverlayJobMC ) { // we can skip the first sub-event when doing MC+MC overlay if( it != end ) ++it; @@ -456,6 +473,7 @@ StatusCode PileUpEventLoopMgr::nextEvent(int maxevt) if( addpEvent ) { ATH_MSG_INFO ( "MN: addpEvent" ); xAOD::EventInfo* ei = new xAOD::EventInfo( *pEvent ); + ei->clearSubEvents(); // MN: FIX - verify that subevents should be cleared! puei->push_back( ei ); // link to the fresh EI added to the container: ElementLink< xAOD::EventInfoContainer > eilink( puei_sg_key, puei->size()-1, &*m_evtStore );