19 previousGsfElectrons_ = consumes<reco::GsfElectronCollection>(cfg.
getParameter<
edm::InputTag>(
"previousGsfElectronsTag"));
31 nDeps_ = tokenElectronIsoVals_.size();
38 gedRegression_.reset(plugin);
40 gedRegression_->setConsumes(sumes);
42 gedRegression_.reset(
nullptr);
45 produces<reco::GsfElectronCollection> (outputCollectionLabel_);
56 auto outputElectrons_p = std::make_unique<reco::GsfElectronCollection>();
58 if( gedRegression_ ) {
59 gedRegression_->setEvent(event);
60 gedRegression_->setEventContent(setup);
66 event.getByToken(previousGsfElectrons_,gedElectronHandle);
70 event.getByToken(pfCandidates_,pfCandidateHandle);
72 std::vector< edm::Handle< edm::ValueMap<float> > > isolationValueMaps(nDeps_);
74 for(
unsigned i=0;
i < nDeps_ ; ++
i) {
75 event.getByToken(tokenElectronIsoVals_[
i],isolationValueMaps[i]);
79 std::map<reco::GsfTrackRef, const reco::PFCandidate* > gsfPFMap;
80 reco::PFCandidateCollection::const_iterator it = pfCandidateHandle->begin();
81 reco::PFCandidateCollection::const_iterator itend = pfCandidateHandle->end() ;
82 for(;it!=itend;++it) {
84 if( it->gsfTrackRef().isNonnull()) {
85 if(
abs(it->pdgId())==11)
86 gsfPFMap[it->gsfTrackRef()]=&(*it);
92 unsigned nele=gedElectronHandle->size();
93 for(
unsigned iele=0; iele<nele;++iele) {
99 isoVariables.
sumPhotonEt = (*(isolationValueMaps)[1])[myElectronRef];
101 isoVariables.
sumPUPt = (*(isolationValueMaps)[3])[myElectronRef];
110 std::map<reco::GsfTrackRef, const reco::PFCandidate * >::const_iterator itcheck=gsfPFMap.find(newElectron.
gsfTrack());
112 if(itcheck!=gsfPFMap.end()) {
118 myMvaOutput.status = 4 ;
124 if( gedRegression_ ) {
125 gedRegression_->modifyObject(newElectron);
127 outputElectrons_p->push_back(newElectron);
130 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
auto_ptr< JetDefinition::Plugin > plugin
float sumPUPt
sum pt of charged Particles not from PV (for Pu corrections)
def setup(process, global_tag, zero_tesla=False)
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 ;
T get(const Candidate &c)