42 ATH_MSG_ERROR(
"Could not get signal xAOD::EventInfo " << signalEvent.
name() <<
" from store " << signalEvent.
store());
43 return StatusCode::FAILURE;
45 float sig_beamPosSigmaZ=-1;
47 sig_beamPosSigmaZ=signalEvent->beamPosSigmaZ();
52 ATH_MSG_DEBUG(
"Found signal xAOD::EventInfo " << signalEvent.
name() <<
" in store " << signalEvent.
store()<<
" : "<<*signalEvent<<
" beamspot size z="<<sig_beamPosSigmaZ);
56 ATH_CHECK(outputEvent.
record(std::make_unique<xAOD::EventInfo>(), std::make_unique<xAOD::EventAuxInfo>()));
58 ATH_MSG_ERROR(
"Could not record output xAOD::EventInfo " << outputEvent.
name() <<
" to store " << outputEvent.
store());
59 return StatusCode::FAILURE;
61 ATH_MSG_DEBUG(
"Recorded output xAOD::EventInfo " << outputEvent.
name() <<
" in store " << outputEvent.
store());
64 *outputEvent = *signalEvent;
67 outputEvent->setRunNumber( ctx.eventID().run_number() );
68 outputEvent->setEventNumber( ctx.eventID().event_number() );
69 outputEvent->setLumiBlock( ctx.eventID().lumi_block() );
70 outputEvent->setTimeStamp( ctx.eventID().time_stamp() );
73 if (outputEvent->mcChannelNumber() == 0) {
82 ATH_MSG_WARNING(
"Input mcChannelNumber (" << signalEvent->mcChannelNumber()
83 <<
") and provided mcChannelNumber (" <<
m_mcChannelNumber.value() <<
") do not match.");
87 if (signalEvent->mcEventNumber() == 0) {
88 if (signalEvent->eventNumber() != 0) {
89 ATH_MSG_WARNING(
"Input mcEventNumber is 0, setting it to match the eventNumber (" << signalEvent->eventNumber() <<
")");
90 outputEvent->setMCEventNumber(signalEvent->eventNumber());
93 return StatusCode::FAILURE;
97 if (signalEvent->mcEventWeights().empty()) {
98 ATH_MSG_ERROR(
"Input mcEventWeights are empty. This should not happen.");
99 return StatusCode::FAILURE;
104 outputEvent->setMCEventWeights (signalEvent->mcEventWeights());
107#if !defined(XAOD_ANALYSIS) && !defined(GENERATIONBASE)
109 if (!beamSpotHandle.
isValid()) {
111 return StatusCode::FAILURE;
113 outputEvent->setBeamPos( beamSpotHandle->beamPos()[
Amg::x ],
114 beamSpotHandle->beamPos()[
Amg::y ],
115 beamSpotHandle->beamPos()[
Amg::z ] );
116 outputEvent->setBeamPosSigma( beamSpotHandle->beamSigma( 0 ),
117 beamSpotHandle->beamSigma( 1 ),
118 beamSpotHandle->beamSigma( 2 ) );
119 outputEvent->setBeamPosSigmaXY( beamSpotHandle->beamSigmaXY() );
120 outputEvent->setBeamTiltXZ( beamSpotHandle->beamTilt( 0 ) );
121 outputEvent->setBeamTiltYZ( beamSpotHandle->beamTilt( 1 ) );
122 outputEvent->setBeamStatus( beamSpotHandle->beamStatus() );
125 ATH_MSG_DEBUG(
"Output xAOD::EventInfo " << outputEvent.
name() <<
" : " << *outputEvent<<
" beamspot size z="<<outputEvent->beamPosSigmaZ());
127 return StatusCode::SUCCESS;
An algorithm to produce an updated final xAOD::EventInfo with possible run number,...
virtual StatusCode initialize() override
EventInfoUpdateFromContextAlg(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< uint32_t > m_mcChannelNumber
virtual StatusCode execute(const EventContext &ctx) const override
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
SG::ReadHandleKey< xAOD::EventInfo > m_signalInputKey
SG::WriteHandleKey< xAOD::EventInfo > m_outputKey