51 ATH_MSG_ERROR(
"Could not get background xAOD::EventInfo " << bkgEvent.
name() <<
" from store " << bkgEvent.
store());
52 return StatusCode::FAILURE;
58 ATH_MSG_ERROR(
"Could not get signal xAOD::EventInfo " << signalEvent.
name() <<
" from store " << signalEvent.
store());
59 return StatusCode::FAILURE;
61 ATH_MSG_DEBUG(
"Found signal xAOD::EventInfo " << signalEvent.
name() <<
" in store " << signalEvent.
store());
63 auto outputEvent = std::make_unique<xAOD::EventInfo>();
64 auto outputEventAux = std::make_unique<xAOD::EventAuxInfo>();
65 outputEvent->setStore (outputEventAux.get());
68 *outputEvent = *bkgEvent;
70 outputEvent->clearSubEvents();
73 outputEvent->setEventNumber(signalEvent->eventNumber());
77 if (signalEvent->mcChannelNumber() == 0) {
83 outputEvent->setMCChannelNumber(signalEvent->mcChannelNumber());
87 ATH_MSG_WARNING(
"Signal mcChannelNumber (" << signalEvent->mcChannelNumber()
88 <<
") and provided mcChannelNumber (" <<
m_mcChannelNumber.value() <<
") do not match.");
90 outputEvent->setMCChannelNumber(signalEvent->mcChannelNumber());
93 if (signalEvent->mcEventNumber() == 0) {
94 if (signalEvent->eventNumber() != 0) {
95 ATH_MSG_WARNING(
"Signal mcEventNumber is 0, setting it to match the eventNumber (" << signalEvent->eventNumber() <<
")");
96 outputEvent->setMCEventNumber(signalEvent->eventNumber());
99 return StatusCode::FAILURE;
102 outputEvent->setMCEventNumber(signalEvent->mcEventNumber());
105 if (signalEvent->mcEventWeights().empty()) {
106 ATH_MSG_ERROR(
"Signal mcEventWeights are empty. This should not happen.");
107 return StatusCode::FAILURE;
109 outputEvent->setMCEventWeights(signalEvent->mcEventWeights());
129 outputEvent->setEventFlags (det, 0);
135#if !defined(XAOD_ANALYSIS) && !defined(GENERATIONBASE)
137 if (std::abs(signalEvent->beamPosSigmaZ() - bkgEvent->beamPosSigmaZ()) > 1e-5f) {
138 ATH_MSG_ERROR(
"Beam spot size does not match between signal and background events ("
139 << signalEvent->beamPosSigmaZ() <<
" vs " << bkgEvent->beamPosSigmaZ() <<
")");
140 return StatusCode::FAILURE;
144 if (!beamSpotHandle.
isValid()) {
146 return StatusCode::FAILURE;
148 outputEvent->setBeamPos( beamSpotHandle->beamPos()[
Amg::x ],
149 beamSpotHandle->beamPos()[
Amg::y ],
150 beamSpotHandle->beamPos()[
Amg::z ] );
151 outputEvent->setBeamPosSigma( beamSpotHandle->beamSigma( 0 ),
152 beamSpotHandle->beamSigma( 1 ),
153 beamSpotHandle->beamSigma( 2 ) );
154 outputEvent->setBeamPosSigmaXY( beamSpotHandle->beamSigmaXY() );
155 outputEvent->setBeamTiltXZ( beamSpotHandle->beamTilt( 0 ) );
156 outputEvent->setBeamTiltYZ( beamSpotHandle->beamTilt( 1 ) );
157 outputEvent->setBeamStatus( beamSpotHandle->beamStatus() );
163 ATH_CHECK(outputEventH.
record(std::move(outputEvent), std::move(outputEventAux)));
164 ATH_MSG_DEBUG(
"Recorded output xAOD::EventInfo " << outputEventH.
name() <<
" in store " << outputEventH.
store());
167 return StatusCode::SUCCESS;