![]() |
![]() |
Public Member Functions | |
void | beginEvent () |
std::vector< double > | operator() (const reco::PFTauRef &tau) const |
RecoTauDiscriminantFromDiscriminator (const edm::ParameterSet &pset) | |
Private Types | |
typedef std::pair < edm::InputTag, edm::Handle < reco::PFTauDiscriminator > > | DiscInfo |
Private Attributes | |
std::vector< DiscInfo > | discriminators_ |
Definition at line 19 of file RecoTauDiscriminantFromDiscriminator.cc.
typedef std::pair<edm::InputTag, edm::Handle<reco::PFTauDiscriminator> > reco::tau::RecoTauDiscriminantFromDiscriminator::DiscInfo [private] |
Definition at line 26 of file RecoTauDiscriminantFromDiscriminator.cc.
reco::tau::RecoTauDiscriminantFromDiscriminator::RecoTauDiscriminantFromDiscriminator | ( | const edm::ParameterSet & | pset | ) | [explicit] |
Definition at line 30 of file RecoTauDiscriminantFromDiscriminator.cc.
References discriminators_, edm::ParameterSet::existsAs(), edm::ParameterSet::getParameter(), and GlobalPosition_Frontier_DevDB_cff::tag.
:RecoTauDiscriminantPlugin(pset) { if (pset.existsAs<edm::InputTag>("discSrc")) { discriminators_.push_back(std::make_pair( pset.getParameter<edm::InputTag>("discSrc"), edm::Handle<reco::PFTauDiscriminator>())); } else { // Get multiple discriminators. This supports the case when the MVAHelper // class might be dealing with multiple tau collections (training) std::vector<edm::InputTag> discriminators = pset.getParameter<std::vector<edm::InputTag> >("discSrc"); BOOST_FOREACH(const edm::InputTag& tag, discriminators) { discriminators_.push_back(std::make_pair( tag, edm::Handle<reco::PFTauDiscriminator>())); } } }
void reco::tau::RecoTauDiscriminantFromDiscriminator::beginEvent | ( | ) | [virtual] |
Reimplemented from reco::tau::RecoTauDiscriminantPlugin.
Definition at line 49 of file RecoTauDiscriminantFromDiscriminator.cc.
References discriminators_, reco::tau::RecoTauEventHolderPlugin::evt(), and edm::Event::getByLabel().
{ BOOST_FOREACH(DiscInfo& discInfo, discriminators_) { evt()->getByLabel(discInfo.first, discInfo.second); } }
std::vector< double > reco::tau::RecoTauDiscriminantFromDiscriminator::operator() | ( | const reco::PFTauRef & | tau | ) | const [virtual] |
Implements reco::tau::RecoTauDiscriminantPlugin.
Definition at line 55 of file RecoTauDiscriminantFromDiscriminator.cc.
References discriminators_, error, i, edm::Ref< C, T, F >::id(), edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::keyProduct(), edm::second(), and metsig::tau.
{ edm::ProductID tauProdId = tau.id(); for (size_t i = 0; i < discriminators_.size(); ++i) { // Check if the discriminator actually exists if (!discriminators_[i].second.isValid()) continue; const reco::PFTauDiscriminator& disc = *(discriminators_[i].second); if (tauProdId == disc.keyProduct().id()) return std::vector<double>(1, (disc)[tau]); } // Can only reach this point if not appropriate discriminator is defined for // the passed tau. std::stringstream error; error << "Couldn't find a PFTauDiscriminator usable with given tau." << std::endl << " Input tau has product id: " << tau.id() << std::endl; for (size_t i = 0; i < discriminators_.size(); ++i ) { error << "disc: " << discriminators_[i].first; error << " isValid: " << discriminators_[i].second.isValid(); if (discriminators_[i].second.isValid()) { error << " product: " << discriminators_[i].second->keyProduct().id(); } error << std::endl; } edm::LogError("BadDiscriminatorConfiguration") << error.str(); return std::vector<double>(1,-999); }
std::vector<DiscInfo> reco::tau::RecoTauDiscriminantFromDiscriminator::discriminators_ [private] |
Definition at line 27 of file RecoTauDiscriminantFromDiscriminator.cc.
Referenced by beginEvent(), operator()(), and RecoTauDiscriminantFromDiscriminator().