95 std::vector<edm::ValueMap<JetCorrFactors> > jetCorrs;
100 jetCorrs.push_back( *jetCorr );
105 std::vector<edm::Handle<reco::JetFloatAssociation::Container> > jetDiscriminators;
112 std::vector<edm::Handle<edm::View<reco::BaseTagInfo> > > jetTagInfos;
121 auto patJets = std::make_unique<std::vector<Jet>>();
123 auto tagInfosOut = std::make_unique<edm::OwnVector<reco::BaseTagInfo>>();
130 unsigned int idx = itJet - jets->begin();
133 Jet ajet( patJetRef );
137 ajet.setP4(ajet.correctedP4(0));
145 ajet.addJECFactors(jcf);
147 std::vector<std::string>
levels = jetCorrs[0][jetRef].correctionLabels();
148 if(
std::find(levels.begin(), levels.end(),
"L2L3Residual")!=levels.end()){
149 ajet.initializeJEC(jetCorrs[0][jetRef].jecLevel(
"L2L3Residual"));
151 else if(
std::find(levels.begin(), levels.end(),
"L3Absolute")!=levels.end()){
152 ajet.initializeJEC(jetCorrs[0][jetRef].jecLevel(
"L3Absolute"));
155 ajet.initializeJEC(jetCorrs[0][jetRef].jecLevel(
"Uncorrected"));
157 edm::LogWarning(
"L3Absolute not found") <<
"L2L3Residual and L3Absolute are not part of the jetCorrFactors\n" 158 <<
"of module " << jetCorrs[0][jetRef].jecSet() <<
". Jets will remain" 167 for (
size_t k=0;
k<jetDiscriminators.size(); ++
k) {
168 float value = (*jetDiscriminators[
k])[jetRef];
173 for (
size_t k=0;
k<jetTagInfos.size(); ++
k) {
178 if ((idx < taginfos.
size()) && (taginfos[idx].
jet() == jetRef)) {
179 match = taginfos.
ptrAt(idx);
183 if (itTI->jet() == jetRef) { match = taginfos.
ptrAt( itTI - taginfos.
begin() );
break; }
187 tagInfosOut->push_back( match->
clone() );
206 ajet.refToOrig_ = patJetRef->originalObjectRef();
GreaterByPt< Jet > pTComparator_
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
virtual BaseTagInfo * clone(void) const
clone
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Ptr< value_type > ptrAt(size_type i) const
edm::EDGetTokenT< edm::View< reco::Jet > > jetsToken_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< edm::EDGetTokenT< edm::View< reco::BaseTagInfo > > > tagInfoTokens_
std::vector< edm::EDGetTokenT< reco::JetFloatAssociation::Container > > discriminatorTokens_
Container::value_type value_type
const_iterator begin() const
Class for the storage of jet correction factors.
RefProd< PROD > getRefBeforePut()
bool isNonnull() const
Checks for non-null.
std::vector< std::string > discriminatorLabels_
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
const_iterator end() const
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
pat::PATUserDataHelper< pat::Jet > userDataHelper_
std::vector< std::string > tagInfoLabels_
std::vector< edm::EDGetTokenT< edm::ValueMap< JetCorrFactors > > > jetCorrFactorsTokens_