8#include <LHAPDF/LHAPDF.h>
9#include "LHAPDF/Reweighting.h"
25 for (
const auto& pdfstring :
m_outPDF) {
26 m_p1_vars.push_back(LHAPDF::mkPDF(pdfstring));
30 if (
auto pos = temp_name.find(
'/'); pos != std::string::npos)
41 return StatusCode::SUCCESS;
55 return StatusCode::FAILURE;
66 int pdgid1 = accPDGID1(*truthEvent);
67 int pdgid2 = accPDGID2(*truthEvent);
68 float X1 = accX1(*truthEvent);
69 float X2 = accX2(*truthEvent);
70 float Q = accQ(*truthEvent);
72 for (
size_t i = 0; i<
m_outPDF.size(); ++i) {
74 float reweight = LHAPDF::weightxxQ(pdgid1, pdgid2, X1, X2, Q,
75 static_cast<const LHAPDF::PDF*
>(
m_p0),
76 static_cast<const LHAPDF::PDF*
>(
m_p1_vars[i]));
79 handle(*eventInfo) = reweight;
82 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
SG::ReadHandleKey< xAOD::EventInfo > m_EventInfoKey
virtual StatusCode initialize() final
std::vector< LHAPDF::PDF * > m_p1_vars
Gaudi::Property< std::string > m_additionalPdfPath
Gaudi::Property< std::vector< std::string > > m_outPDF
Gaudi::Property< std::string > m_inPDF
std::vector< SG::WriteDecorHandleKey< xAOD::EventInfo > > m_reweightKeys
SG::ReadHandleKey< xAOD::TruthEventContainer > m_TruthEventKey
virtual StatusCode execute(const EventContext &ctx) const final
SG::ConstAccessor< T, ALLOC > ConstAccessor
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Handle class for adding a decoration to an object.
Select isolated Photons, Electrons and Muons.
TruthEventContainer_v1 TruthEventContainer
Declare the latest version of the truth event container.
TruthEvent_v1 TruthEvent
Typedef to implementation.