18 previousGsfElectrons_ =
24 tokenElectronIsoVals_.push_back(
26 tokenElectronIsoVals_.push_back(
28 tokenElectronIsoVals_.push_back(
31 tokenElectronIsoVals_.push_back(
33 tokenElectronIsoVals_.push_back(
36 nDeps_ = tokenElectronIsoVals_.size();
41 auto cc = consumesCollector();
45 produces<reco::GsfElectronCollection>(outputCollectionLabel_);
53 auto outputElectrons_p = std::make_unique<reco::GsfElectronCollection>();
56 gedRegression_->setEvent(event);
57 gedRegression_->setEventContent(setup);
63 event.getByToken(previousGsfElectrons_, gedElectronHandle);
67 event.getByToken(pfCandidates_, pfCandidateHandle);
69 std::vector<edm::Handle<edm::ValueMap<float> > > isolationValueMaps(nDeps_);
71 for (
unsigned i = 0;
i < nDeps_; ++
i) {
72 event.getByToken(tokenElectronIsoVals_[
i], isolationValueMaps[i]);
76 std::map<reco::GsfTrackRef, const reco::PFCandidate*> gsfPFMap;
77 reco::PFCandidateCollection::const_iterator it = pfCandidateHandle->begin();
78 reco::PFCandidateCollection::const_iterator itend = pfCandidateHandle->end();
79 for (; it != itend; ++it) {
81 if (it->gsfTrackRef().isNonnull()) {
82 if (
abs(it->pdgId()) == 11)
83 gsfPFMap[it->gsfTrackRef()] = &(*it);
88 unsigned nele = gedElectronHandle->size();
89 for (
unsigned iele = 0; iele < nele; ++iele) {
95 isoVariables.
sumPhotonEt = (*(isolationValueMaps)[1])[myElectronRef];
97 isoVariables.
sumPUPt = (*(isolationValueMaps)[3])[myElectronRef];
106 std::map<reco::GsfTrackRef, const reco::PFCandidate*>::const_iterator itcheck =
107 gsfPFMap.find(newElectron.
gsfTrack());
109 if (itcheck != gsfPFMap.end()) {
115 myMvaOutput.status = 4;
122 if (gedRegression_) {
123 gedRegression_->modifyObject(newElectron);
125 outputElectrons_p->push_back(newElectron);
128 event.put(
std::move(outputElectrons_p), outputCollectionLabel_);
T getParameter(std::string const &) const
GsfTrackRef gsfTrack() const override
reference to a GsfTrack
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
float sumPUPt
sum pt of charged Particles not from PV (for Pu corrections)
void setPfIsolationVariables(const PflowIsolationVariables &iso)
void setMvaOutput(const MvaOutput &mo)
float sumPhotonEt
sum pt of PF photons // old float photonIso ;
GEDGsfElectronFinalizer(const edm::ParameterSet &)
Abs< T >::type abs(const T &t)
float sumNeutralHadronEt
sum pt of neutral hadrons // old float neutralHadronIso ;
~GEDGsfElectronFinalizer() override
ParameterSet const & getParameterSet(std::string const &) const
const MvaOutput & mvaOutput() const
void setPassPflowPreselection(bool flag)
void produce(edm::Event &, const edm::EventSetup &) override
float sumChargedHadronPt
sum-pt of charged Hadron // old float chargedHadronIso ;