Produces pat::PFParticle's. More...
#include <PhysicsTools/PatAlgos/interface/PATPFParticleProducer.h>
Public Member Functions | |
PATPFParticleProducer (const edm::ParameterSet &iConfig) | |
virtual void | produce (edm::Event &iEvent, const edm::EventSetup &iSetup) |
~PATPFParticleProducer () | |
Private Member Functions | |
void | fetchCandidateCollection (edm::Handle< edm::View< reco::PFCandidate > > &c, const edm::InputTag &tag, const edm::Event &iSetup) const |
Private Attributes | |
bool | addEfficiencies_ |
bool | addGenMatch_ |
bool | addResolutions_ |
pat::helper::EfficiencyLoader | efficiencyLoader_ |
bool | embedGenMatch_ |
bool | embedPFCandidate_ |
std::vector< edm::InputTag > | genMatchSrc_ |
edm::InputTag | pfCandidateSrc_ |
GreaterByPt< PFParticle > | pTComparator_ |
pat::helper::KinResolutionsLoader | resolutionLoader_ |
pat::PATUserDataHelper < pat::PFParticle > | userDataHelper_ |
bool | useUserData_ |
Produces pat::PFParticle's.
The PATPFParticleProducer produces analysis-level pat::PFParticle's starting from a collection of objects of reco::PFCandidate.
Definition at line 44 of file PATPFParticleProducer.h.
PATPFParticleProducer::PATPFParticleProducer | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 26 of file PATPFParticleProducer.cc.
References addEfficiencies_, addGenMatch_, addResolutions_, efficiencyLoader_, embedGenMatch_, edm::ParameterSet::exists(), edm::ParameterSet::existsAs(), genMatchSrc_, edm::ParameterSet::getParameter(), pfCandidateSrc_, resolutionLoader_, and useUserData_.
: userDataHelper_ ( iConfig.getParameter<edm::ParameterSet>("userData") ) { // general configurables pfCandidateSrc_ = iConfig.getParameter<edm::InputTag>( "pfCandidateSource" ); // MC matching configurables addGenMatch_ = iConfig.getParameter<bool> ( "addGenMatch" ); if (addGenMatch_) { embedGenMatch_ = iConfig.getParameter<bool> ( "embedGenMatch" ); if (iConfig.existsAs<edm::InputTag>("genParticleMatch")) { genMatchSrc_.push_back(iConfig.getParameter<edm::InputTag>( "genParticleMatch" )); } else { genMatchSrc_ = iConfig.getParameter<std::vector<edm::InputTag> >( "genParticleMatch" ); } } // Efficiency configurables addEfficiencies_ = iConfig.getParameter<bool>("addEfficiencies"); if (addEfficiencies_) { efficiencyLoader_ = pat::helper::EfficiencyLoader(iConfig.getParameter<edm::ParameterSet>("efficiencies")); } // Resolution configurables addResolutions_ = iConfig.getParameter<bool>("addResolutions"); if (addResolutions_) { resolutionLoader_ = pat::helper::KinResolutionsLoader(iConfig.getParameter<edm::ParameterSet>("resolutions")); } // Check to see if the user wants to add user data useUserData_ = false; if ( iConfig.exists("userData") ) { useUserData_ = true; } // produces vector of muons produces<std::vector<PFParticle> >(); }
PATPFParticleProducer::~PATPFParticleProducer | ( | ) |
Definition at line 67 of file PATPFParticleProducer.cc.
{ }
void PATPFParticleProducer::fetchCandidateCollection | ( | edm::Handle< edm::View< reco::PFCandidate > > & | c, |
const edm::InputTag & | tag, | ||
const edm::Event & | iSetup | ||
) | const [private] |
Definition at line 140 of file PATPFParticleProducer.cc.
References trackerHits::c, Exception, newFWLiteAna::found, and edm::Event::getByLabel().
Referenced by produce().
{ bool found = iEvent.getByLabel(tag, c); if(!found ) { std::ostringstream err; err<<" cannot get PFCandidates: " <<tag<<std::endl; edm::LogError("PFCandidates")<<err.str(); throw cms::Exception( "MissingProduct", err.str()); } }
void PATPFParticleProducer::produce | ( | edm::Event & | iEvent, |
const edm::EventSetup & | iSetup | ||
) | [virtual] |
Implements edm::EDProducer.
Definition at line 71 of file PATPFParticleProducer.cc.
References pat::PATUserDataHelper< ObjectType >::add(), addGenMatch_, pat::PATObject< ObjectType >::addGenParticleRef(), efficiencyLoader_, embedGenMatch_, pat::PATObject< ObjectType >::embedGenParticle(), pat::helper::KinResolutionsLoader::enabled(), pat::helper::EfficiencyLoader::enabled(), fetchCandidateCollection(), genMatchSrc_, edm::Event::getByLabel(), i, customizeTrackingMonitorSeedNumber::idx, j, n, pat::helper::EfficiencyLoader::newEvent(), pat::helper::KinResolutionsLoader::newEvent(), pfParticleProducer_cfi::patPFParticles, reco::tau::pfCandidates(), pfCandidateSrc_, pTComparator_, edm::Event::put(), resolutionLoader_, pat::helper::EfficiencyLoader::setEfficiencies(), pat::helper::KinResolutionsLoader::setResolutions(), python::multivaluedict::sort(), userDataHelper_, and useUserData_.
{ // Get the collection of PFCandidates from the event edm::Handle<edm::View<reco::PFCandidate> > pfCandidates; fetchCandidateCollection(pfCandidates, pfCandidateSrc_, iEvent ); // prepare the MC matching std::vector<edm::Handle<edm::Association<reco::GenParticleCollection> > > genMatches(genMatchSrc_.size()); if (addGenMatch_) { for (size_t j = 0, nd = genMatchSrc_.size(); j < nd; ++j) { iEvent.getByLabel(genMatchSrc_[j], genMatches[j]); } } if (efficiencyLoader_.enabled()) efficiencyLoader_.newEvent(iEvent); if (resolutionLoader_.enabled()) resolutionLoader_.newEvent(iEvent, iSetup); // loop over PFCandidates std::vector<PFParticle> * patPFParticles = new std::vector<PFParticle>(); for (edm::View<reco::PFCandidate>::const_iterator itPFParticle = pfCandidates->begin(); itPFParticle != pfCandidates->end(); ++itPFParticle) { // construct the PFParticle from the ref -> save ref to original object unsigned int idx = itPFParticle - pfCandidates->begin(); edm::RefToBase<reco::PFCandidate> pfCandidatesRef = pfCandidates->refAt(idx); PFParticle aPFParticle(pfCandidatesRef); if (addGenMatch_) { for(size_t i = 0, n = genMatches.size(); i < n; ++i) { reco::GenParticleRef genPFParticle = (*genMatches[i])[pfCandidatesRef]; aPFParticle.addGenParticleRef(genPFParticle); } if (embedGenMatch_) aPFParticle.embedGenParticle(); } if (efficiencyLoader_.enabled()) { efficiencyLoader_.setEfficiencies( aPFParticle, pfCandidatesRef ); } if (resolutionLoader_.enabled()) { resolutionLoader_.setResolutions(aPFParticle); } if ( useUserData_ ) { userDataHelper_.add( aPFParticle, iEvent, iSetup ); } // add sel to selected patPFParticles->push_back(aPFParticle); } // sort pfCandidates in pt std::sort(patPFParticles->begin(), patPFParticles->end(), pTComparator_); // put genEvt object in Event std::auto_ptr<std::vector<PFParticle> > ptr(patPFParticles); iEvent.put(ptr); }
bool pat::PATPFParticleProducer::addEfficiencies_ [private] |
Definition at line 68 of file PATPFParticleProducer.h.
Referenced by PATPFParticleProducer().
bool pat::PATPFParticleProducer::addGenMatch_ [private] |
Definition at line 62 of file PATPFParticleProducer.h.
Referenced by PATPFParticleProducer(), and produce().
bool pat::PATPFParticleProducer::addResolutions_ [private] |
Definition at line 71 of file PATPFParticleProducer.h.
Referenced by PATPFParticleProducer().
Definition at line 69 of file PATPFParticleProducer.h.
Referenced by PATPFParticleProducer(), and produce().
bool pat::PATPFParticleProducer::embedGenMatch_ [private] |
Definition at line 63 of file PATPFParticleProducer.h.
Referenced by PATPFParticleProducer(), and produce().
bool pat::PATPFParticleProducer::embedPFCandidate_ [private] |
Definition at line 61 of file PATPFParticleProducer.h.
std::vector<edm::InputTag> pat::PATPFParticleProducer::genMatchSrc_ [private] |
Definition at line 64 of file PATPFParticleProducer.h.
Referenced by PATPFParticleProducer(), and produce().
Definition at line 60 of file PATPFParticleProducer.h.
Referenced by PATPFParticleProducer(), and produce().
Definition at line 66 of file PATPFParticleProducer.h.
Referenced by produce().
Definition at line 72 of file PATPFParticleProducer.h.
Referenced by PATPFParticleProducer(), and produce().
Definition at line 75 of file PATPFParticleProducer.h.
Referenced by produce().
bool pat::PATPFParticleProducer::useUserData_ [private] |
Definition at line 74 of file PATPFParticleProducer.h.
Referenced by PATPFParticleProducer(), and produce().