39 return StatusCode::SUCCESS;
48 if ( !jetReadHandle.
isValid() ) {
50 return StatusCode::FAILURE;
53 std::vector<const xAOD::Jet*> jets;
54 jets.reserve( jetReadHandle->size() );
64 std::vector<std::pair<float, const xAOD::TrackMeasurementValidation*>> hitCoord;
66 for (
const auto* hit : *HitsXRelToBeamspot) {
67 auto localX = HitsXRelToBeamspot(*hit);
68 auto localY = HitsYRelToBeamspot(*hit);
69 float phi = std::atan2(localY, localX);
70 hitCoord.emplace_back(
phi,hit);
78 std::vector<std::pair<float, const xAOD::TrackMeasurementValidation*>> closeHits;
79 std::vector<ElementLink<xAOD::TrackMeasurementValidationContainer> > vectorEL;
80 double jetPhi =
jet->phi();
83 for (
const auto& [hitPhi, hit]: hitCoord) {
84 float dPhi = std::abs(jetPhi-hitPhi);
85 while (dPhi >
M_PI) {dPhi -= 2. *
M_PI; dPhi = std::abs(dPhi);}
88 closeHits.emplace_back(dPhi, hit);
93 std::sort(closeHits.begin(), closeHits.end(),[](
const auto& p1,
const auto& p2) { return p1 < p2; });
94 closeHits.resize(std::min(
int(
m_maxHits),
int(closeHits.size())));
96 for (
const auto& [
phi, hit]: closeHits) {
101 hitAssociation(*
jet) = std::move(vectorEL);
104 return StatusCode::SUCCESS;
109 return StatusCode::SUCCESS;
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define CHECK(...)
Evaluate an expression and check for errors.
Handle class for reading a decoration on an object.
Handle class for adding a decoration to an object.
An algorithm that can be simultaneously executed in multiple threads.
ElementLink implementation for ROOT usage.
virtual StatusCode execute(const EventContext &) const override
SG::WriteDecorHandleKey< xAOD::JetContainer > m_hitAssociationKey
Gaudi::Property< int > m_maxHits
SG::ReadHandleKey< xAOD::TrackMeasurementValidationContainer > m_inputPixHitCollectionKey
JetHitAssociationAlg(const std::string &name, ISvcLocator *pSvcLocator)
SG::ReadDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_HitsXRelToBeamspotKey
Gaudi::Property< float > m_dPhiHitToJet
SG::ReadHandleKey< xAOD::JetContainer > m_jetCollectionKey
SG::ReadDecorHandleKey< xAOD::TrackMeasurementValidationContainer > m_HitsYRelToBeamspotKey
virtual StatusCode initialize() override
virtual StatusCode finalize() override
Handle class for reading a decoration on an object.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
Handle class for adding a decoration to an object.
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
Jet_v1 Jet
Definition of the current "jet version".