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());
131 outputEvent->setEventFlags (det, 0);
138#if !defined(XAOD_ANALYSIS) && !defined(GENERATIONBASE)
140 if (std::abs(signalEvent->beamPosSigmaZ() - bkgEvent->beamPosSigmaZ()) > 1e-5f) {
141 ATH_MSG_ERROR(
"Beam spot size does not match between signal and background events ("
142 << signalEvent->beamPosSigmaZ() <<
" vs " << bkgEvent->beamPosSigmaZ() <<
")");
143 return StatusCode::FAILURE;
147 if (!beamSpotHandle.
isValid()) {
149 return StatusCode::FAILURE;
151 outputEvent->setBeamPos( beamSpotHandle->beamPos()[
Amg::x ],
152 beamSpotHandle->beamPos()[
Amg::y ],
153 beamSpotHandle->beamPos()[
Amg::z ] );
154 outputEvent->setBeamPosSigma( beamSpotHandle->beamSigma( 0 ),
155 beamSpotHandle->beamSigma( 1 ),
156 beamSpotHandle->beamSigma( 2 ) );
157 outputEvent->setBeamPosSigmaXY( beamSpotHandle->beamSigmaXY() );
158 outputEvent->setBeamTiltXZ( beamSpotHandle->beamTilt( 0 ) );
159 outputEvent->setBeamTiltYZ( beamSpotHandle->beamTilt( 1 ) );
160 outputEvent->setBeamStatus( beamSpotHandle->beamStatus() );
166 ATH_CHECK(outputEventH.
record(std::move(outputEvent), std::move(outputEventAux)));
167 ATH_MSG_DEBUG(
"Recorded output xAOD::EventInfo " << outputEventH.
name() <<
" in store " << outputEventH.
store());
170 return StatusCode::SUCCESS;