36 template <
class T,
class I >
48 distMax_( params.getParameter<double>(
"distMax" ) )
50 produces< TagInfosCollection >();
74 std::vector<bool> jets2_locks( h_jets2->size(),
false );
77 iend = h_jets1->end(), ijet = ibegin;
78 ijet != iend; ++ijet )
80 float matched_dR2 = 1e9;
81 int matched_index = -1;
86 jend = h_jets2->end(), jjet = jbegin;
87 jjet != jend; ++jjet )
89 int index=jjet - jbegin;
93 if( jets2_locks.at(index) )
continue;
95 float temp_dR2 =
reco::deltaR2(ijet->eta(),ijet->phi(),jjet->eta(),jjet->phi());
96 if ( temp_dR2 < matched_dR2 )
98 matched_dR2 = temp_dR2;
99 matched_index =
index;
105 if( matched_index>=0 && static_cast<size_t>(matched_index) < h_tagInfos->size() )
107 if ( matched_dR2 > distMax2 )
108 LogDebug(
"MatchedJetsFarApart") <<
"Matched jets separated by dR greater than distMax=" <<
distMax_;
111 jets2_locks.at(matched_index) =
true;
113 auto otherTagInfo = h_tagInfos->at( matched_index );
114 otherTagInfo.setJetRef( h_jets1->refAt( ijet - ibegin) );
115 mappedTagInfo = otherTagInfo;
120 mappedTagInfos->push_back( mappedTagInfo );
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
JetDeltaRTagInfoValueMapProducer< reco::Jet, reco::CATopJetTagInfo > RecoJetDeltaRTagInfoValueMapProducer
JetDeltaRTagInfoValueMapProducer(edm::ParameterSet const ¶ms)
~JetDeltaRTagInfoValueMapProducer() override
const edm::EDGetTokenT< typename edm::View< T > > srcToken_
const edm::EDGetTokenT< typename edm::View< I > > matchedTagInfosToken_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
#define DEFINE_FWK_MODULE(type)
std::vector< I > TagInfosCollection
const std::complex< double > I
void produce(edm::StreamID, edm::Event &iEvent, const edm::EventSetup &iSetup) const override
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
const edm::EDGetTokenT< typename edm::View< T > > matchedToken_
std::vector< T > JetsInput