21 double getRadius(
const TLorentzVector&
vec,
const VRConfig& cfg) {
22 return std::max(
cfg.min, std::min(
cfg.max,
cfg.scale /
vec.Pt()));
30 const VRConfig& cfg) {
31 const size_t n_jets =
jets.size();
32 std::vector<VRJetDR>
min_dr(n_jets, {INFINITY,INFINITY});
33 for (
size_t iii = 0; iii < n_jets; iii++) {
35 const TLorentzVector j1p4 =
j1->p4();
36 const double j1_radius = getRadius(j1p4, cfg);
37 for (
size_t jjj = iii+1; jjj < n_jets; jjj++) {
39 const TLorentzVector j2p4 =
j2->p4();
40 const double j2_radius = getRadius(j2p4, cfg);
41 const double min_radius = std::min(j1_radius, j2_radius);
42 const double dR = j1p4.DeltaR(j2p4);
43 const double rel_dR = dR / min_radius;
46 for (
const size_t idx: {iii,jjj}) {
47 if (rel_dR <
min_dr.at(idx).relative) {
49 vrstruct.relative = rel_dR;
50 vrstruct.absolute = dR;
98 throw std::logic_error(
"unknown jet parameter lookup");
100 auto min_dr = getMinimumRelativeDR(jets, cfg);
101 for (
size_t iii = 0; iii < jets.size(); iii++) {
103 const auto drs = min_dr.at(iii);
std::vector< size_t > vec
SG::AuxElement::Decorator< float > m_rel_decorator
SG::AuxElement::ConstAccessor< float > m_mass_scale
SG::AuxElement::ConstAccessor< float > m_min_radius
VRJetParameters m_param_source
SG::AuxElement::Decorator< float > m_abs_decorator
SG::AuxElement::ConstAccessor< float > m_max_radius
VRJetOverlapDecorator(const VRJetOverlapConfig &=VRJetOverlapConfig())
void decorate(const xAOD::JetContainer &jets) const
Jet_v1 Jet
Definition of the current "jet version".
JetContainer_v1 JetContainer
Definition of the current "jet container version".
std::string absolute_name
VRJetOverlapConfig(VRJetParameters=VRJetParameters::RHO30MIN02MAX4)
VRJetParameters jet_parameters_source
std::string relative_name