30 bool useIsolationValues = iConfig.
getParameter<
bool>(
"useIsolationValues") ;
31 if ( useIsolationValues ) {
32 if( ! iConfig.
exists(
"isolationValues") )
34 <<
"Missing ParameterSet isolationValues" ;
67 produces<edm::ValueMap<reco::SuperClusterRef> >(
PFSCValueMap_);
75 std::auto_ptr<reco::GsfElectronCoreCollection>
78 std::auto_ptr<reco::GsfElectronCollection>
81 std::auto_ptr<reco::SuperClusterCollection>
84 std::auto_ptr<reco::BasicClusterCollection>
87 std::auto_ptr<reco::PreshowerClusterCollection>
93 std::auto_ptr<edm::ValueMap<reco::SuperClusterRef> >
130 unsigned ncand=(
status)?pfCandidates->size():0;
132 for(
unsigned i=0;
i<ncand; ++
i ) {
155 pfClusters_.push_back(std::vector<const reco::PFCluster *>());
165 if(blockRef.
isNull())
continue;
263 std::ostringstream err;
264 err<<
" cannot get PFCandidates: "
278 std::ostringstream err;
279 err<<
" cannot get GSFTracks: "
291 std::vector<const reco::PFCluster *> & pfClusters,
295 if(myPFClusterRef.
isNull())
return;
298 pfClusters.push_back(&myPFCluster);
310 myPFCluster.
seed()));
318 myPFClusterRef->hitsAndFractions(),plane));
324 unsigned basicClusterCounter=0;
327 for(
unsigned iGSF=0;iGSF<
size;++iGSF)
330 for(
unsigned ibc=0;ibc<nbc;++ibc)
335 ++basicClusterCounter;
343 unsigned psClusterCounter=0;
346 for(
unsigned iGSF=0;iGSF<
size;++iGSF)
349 for(
unsigned ibc=0;ibc<nbc;++ibc)
363 for(
unsigned iGSF=0;iGSF<
size;++iGSF)
379 unsigned ncand=(
status)?pfCandidates->size():0;
380 for(
unsigned i=0;
i<ncand; ++
i ) {
393 unsigned ngsf=gsfTracks->size();
394 std::vector<float>
values;
395 for(
unsigned igsf=0;igsf<ngsf;++igsf)
398 std::map<reco::GsfTrackRef,float>::const_iterator itcheck=
gsfMvaMap_.find(theTrackRef);
402 values.push_back(-99.);
408 values.push_back(itcheck->second);
411 filler.
insert(gsfTracks,values.begin(),values.end());
422 unsigned ngsf=gsfTracks->size();
423 std::vector<reco::SuperClusterRef>
values;
424 for(
unsigned igsf=0;igsf<ngsf;++igsf)
427 std::map<reco::GsfTrackRef,reco::SuperClusterRef>::const_iterator itcheck=
scMap_.find(theTrackRef);
435 values.push_back(itcheck->second);
438 filler.
insert(gsfTracks,values.begin(),values.end());
446 for(
unsigned iGSF=0;iGSF<nGSF;++iGSF)
456 for(
unsigned ibc=0;ibc<nbasics;++ibc)
470 edm::LogError(
"PFElectronTranslator") <<
" Major problem in PFElectron Translator" << std::endl;
497 for(
unsigned ibc=0;ibc<nbasics;++ibc)
501 const std::vector< std::pair<DetId, float> > & v1 =
basicClusters_[iGSF][ibc].hitsAndFractions();
503 for( std::vector< std::pair<DetId, float> >::const_iterator diIt = v1.begin();
512 for(
unsigned ips=0;ips<nps;++ips)
527 superClusters.push_back(mySuperCluster);
534 unsigned refindex=pfbe.
index();
539 for(;myDaughterCandidate!=itend;++myDaughterCandidate)
550 return *myPFCandidate;
558 for(
unsigned iGSF=0;iGSF<nGSF;++iGSF)
562 std::map<reco::GsfTrackRef,reco::SuperClusterRef>::const_iterator
566 gsfElectronCores.push_back(myElectronCore);
573 for(
unsigned iGSF=0;iGSF<
size;++iGSF)
583 const std::vector<reco::GsfPFRecTrackRef>& ambPFRecTracks(GsfEl->
GsftrackRefPF()->convBremGsfPFRecTrackRef());
584 unsigned ntracks=ambPFRecTracks.size();
585 for(
unsigned it=0;it<ntracks;++it) {
586 tracks.push_back(ambPFRecTracks[it]->gsfTrackRef());
596 for(
unsigned iGSF=0;iGSF<
size;++iGSF)
626 for(
unsigned it=0;it<ntracks;++it) {
631 if( isolationValues.size() != 0 ) {
639 gsfelectrons.push_back(myElectron);
std::vector< std::vector< const reco::PFCluster * > > pfClusters_
T getParameter(std::string const &) const
std::string PFPreshowerClusterCollection_
Abstract base class for a PFBlock element (track, cluster...)
const math::XYZPoint & position() const
cluster centroid position
void setCtfTrack(const TrackRef &closestCtfTrack, float ctfGsfOverlap)
void setP4(P4Kind kind, const LorentzVector &p4, float p4Error, bool setCandidate)
void MustacheID(const CaloClusterPtrVector &clusters, int &nclusters, float &EoutsideMustache)
std::string PFMVAValueMap_
bool fetchCandidateCollection(edm::Handle< reco::PFCandidateCollection > &c, const edm::InputTag &tag, const edm::Event &iEvent) const
double rawEcalEnergy() const
return corrected Ecal energy
void addHitAndFraction(DetId id, float fraction)
virtual const LorentzVector & p4() const GCC11_FINAL
four-momentum Lorentz vector
Particle flow cluster, see clustering algorithm in PFClusterAlgo.
virtual void produce(edm::Event &, const edm::EventSetup &) override
void createGsfElectronCoreRefs(const edm::OrphanHandle< reco::GsfElectronCoreCollection > &gsfElectronCoreHandle)
std::map< reco::GsfTrackRef, float > gsfMvaMap_
virtual const_iterator end() const
last daughter const_iterator
std::vector< edm::Handle< edm::ValueMap< double > > > IsolationValueMaps
std::vector< reco::CaloClusterPtrVector > basicClusterPtr_
std::vector< reco::GsfElectronCoreRef > gsfElectronCoreRefs_
double pflowPhiWidth() const
void setMvaInput(const MvaInput &mi)
void insert(const H &h, I begin, I end)
void createBasicClusterPtrs(const edm::OrphanHandle< reco::BasicClusterCollection > &basicClustersHandle)
bool exists(std::string const ¶meterName) const
checks if a parameter exists
const std::vector< std::pair< DetId, float > > & hitsAndFractions() const
void setSeed(const CaloClusterPtr &r)
list of used xtals by DetId // now inherited by CaloCluster
std::string GsfElectronCollection_
void setPfIsolationVariables(const PflowIsolationVariables &iso)
void setPhiWidth(double pw)
void setMvaOutput(const MvaOutput &mo)
double pflowEtaWidth() const
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
void fillSCRefValueMap(edm::Event &iEvent, edm::ValueMap< reco::SuperClusterRef >::Filler &filler) const
const ElementsInBlocks & elementsInBlocks() const
std::vector< PFCandidatePtr > pfCandidates(const PFJet &jet, int particleId, bool sort=true)
reco::TrackRef trackRef() const
AlgoId algo() const
algorithm identifier
void setPflowSuperCluster(const SuperClusterRef &scl)
void setEtaWidth(double ew)
std::vector< reco::GsfTrackRef > GsfTrackRef_
bool isNull() const
Checks for null.
void fillMVAValueMap(edm::Event &iEvent, edm::ValueMap< float >::Filler &filler)
const CaloID & caloID() const
const reco::PFCandidate & correspondingDaughterCandidate(const reco::PFCandidate &cand, const reco::PFBlockElement &pfbe) const
std::vector< SuperCluster > SuperClusterCollection
collection of SuperCluser objectr
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
std::vector< GsfElectronCore > GsfElectronCoreCollection
std::vector< reco::PreshowerClusterCollection > preshowerClusters_
virtual const_iterator begin() const
first daughter const_iterator
virtual PFClusterRef clusterRef() const
void createSuperClusterGsfMapRefs(const edm::OrphanHandle< reco::SuperClusterCollection > &superClustersHandle)
std::vector< PreshowerCluster > PreshowerClusterCollection
collection of PreshowerCluster objects
std::vector< int > gsfPFCandidateIndex_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
edm::InputTag inputTagPFCandidateElectrons_
std::vector< reco::CandidatePtr > CandidatePtr_
edm::InputTag inputTagPFCandidates_
std::vector< std::vector< reco::GsfTrackRef > > ambiguousGsfTracks_
std::map< reco::GsfTrackRef, reco::SuperClusterRef > scMap_
edm::InputTag inputTagGSFTracks_
float mva_e_pi() const
mva for electron-pion discrimination
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
double rawEnergy() const
raw uncorrected energy (sum of energies of component BasicClusters)
reco::PFCandidateElectronExtraRef electronExtraRef() const
return a reference to the electron extra
DetId seed() const
return DetId of seed
void fetchGsfCollection(edm::Handle< reco::GsfTrackCollection > &c, const edm::InputTag &tag, const edm::Event &iEvent) const
std::string PFBasicClusterCollection_
void createBasicCluster(const reco::PFBlockElement &, reco::BasicClusterCollection &basicClusters, std::vector< const reco::PFCluster * > &, const reco::PFCandidate &coCandidate) const
std::vector< reco::SuperClusterCollection > superClusters_
XYZPointD XYZPoint
point in space with cartesian internal representation
std::vector< reco::CaloClusterPtrVector > preshowerClusterPtr_
void createSuperClusters(const reco::PFCandidateCollection &, reco::SuperClusterCollection &superClusters) const
void addPreshowerCluster(const CaloClusterPtr &r)
add reference to constituent BasicCluster
void getAmbiguousGsfTracks(const reco::PFBlockElement &PFBE, std::vector< reco::GsfTrackRef > &) const
std::string GsfElectronCoreCollection_
std::vector< BasicCluster > BasicClusterCollection
collection of BasicCluster objects
std::vector< edm::InputTag > inputTagIsoVals_
void addCluster(const CaloClusterPtr &r)
add reference to constituent BasicCluster
std::vector< reco::BasicClusterCollection > basicClusters_
Particle reconstructed by the particle flow algorithm.
std::vector< reco::TrackRef > kfTrackRef_
void createPreshowerCluster(const reco::PFBlockElement &PFBE, reco::PreshowerClusterCollection &preshowerClusters, unsigned plane) const
PFElectronTranslator(const edm::ParameterSet &)
reco::GsfTrackRef gsfTrackRef() const
std::string PFSCValueMap_
GsfPFRecTrackRef GsftrackRefPF() const
std::string PFSuperClusterCollection_
void createGsfElectronCores(reco::GsfElectronCoreCollection &) const
virtual ParticleType particleId() const
void createGsfElectrons(const reco::PFCandidateCollection &, const IsolationValueMaps &isolationValues, reco::GsfElectronCollection &)
void addAmbiguousGsfTrack(const reco::GsfTrackRef &t)
void createPreshowerClusterPtrs(const edm::OrphanHandle< reco::PreshowerClusterCollection > &preshowerClustersHandle)
tuple size
Write out results.
double deltaP() const
uncertainty on 3-momentum
void setPreshowerEnergy(double preshowerEnergy)