![]() |
![]() |
#include <CombinedMVAJetTagComputer.h>
Classes | |
struct | Computer |
Public Member Functions | |
CombinedMVAJetTagComputer (const edm::ParameterSet ¶meters) | |
virtual void | passEventSetup (const edm::EventSetup &es) const |
virtual void | setEventSetup (const edm::EventSetup &es) const |
virtual reco::TaggingVariableList | taggingVariables (const TagInfoHelper &info) const |
virtual | ~CombinedMVAJetTagComputer () |
Private Member Functions | |
void | setEventSetup (const edm::EventSetup &es, bool pass) const |
Private Attributes | |
std::vector< Computer > | computers |
Definition at line 15 of file CombinedMVAJetTagComputer.h.
CombinedMVAJetTagComputer::CombinedMVAJetTagComputer | ( | const edm::ParameterSet & | parameters | ) |
Definition at line 25 of file CombinedMVAJetTagComputer.cc.
References CombinedMVAJetTagComputer::Computer::computer, computers, CombinedMVAJetTagComputer::Computer::discriminator, edm::ParameterSet::getParameter(), CombinedMVAJetTagComputer::Computer::name, and CombinedMVAJetTagComputer::Computer::variables.
: GenericMVAJetTagComputer(params) { std::vector<edm::ParameterSet> computers = params.getParameter< std::vector<edm::ParameterSet> >( "jetTagComputers"); for(std::vector<edm::ParameterSet>::const_iterator iter = computers.begin(); iter != computers.end(); ++iter) { Computer computer; computer.name = iter->getParameter<std::string>("jetTagComputer"); computer.discriminator = iter->getParameter<bool>("discriminator"); computer.variables = iter->getParameter<bool>("variables"); computer.computer = 0; this->computers.push_back(computer); } }
CombinedMVAJetTagComputer::~CombinedMVAJetTagComputer | ( | ) | [virtual] |
Definition at line 46 of file CombinedMVAJetTagComputer.cc.
{ }
virtual void CombinedMVAJetTagComputer::passEventSetup | ( | const edm::EventSetup & | es | ) | const [inline, virtual] |
Reimplemented from GenericMVAJetTagComputer.
Definition at line 26 of file CombinedMVAJetTagComputer.h.
References setEventSetup().
{ setEventSetup(es, true); }
void CombinedMVAJetTagComputer::setEventSetup | ( | const edm::EventSetup & | es, |
bool | pass | ||
) | const [private] |
Definition at line 50 of file CombinedMVAJetTagComputer.cc.
References computers, Exception, edm::EventSetup::get(), getHLTprescales::index, label, GenericMVAJetTagComputer::passEventSetup(), edm::ESHandle< T >::product(), and JetTagComputer::uses().
{ std::map<std::string, int> indexMap; int index = 0; int nonameIndex = 0; for(std::vector<Computer>::iterator iter = computers.begin(); iter != computers.end(); ++iter) { if (!iter->computer) { edm::ESHandle<JetTagComputer> computer; es.get<JetTagComputerRecord>().get( iter->name, computer); iter->computer = computer.product(); // finalize the JetTagComputer glue setup std::vector<std::string> inputLabels( iter->computer->getInputLabels()); // backward compatible case, use default tagInfo if (inputLabels.empty()) { std::ostringstream ss; ss << "tagInfo" << ++nonameIndex; inputLabels.push_back(ss.str()); } for(std::vector<std::string>::const_iterator label = inputLabels.begin(); label != inputLabels.end(); ++label) { if (indexMap.find(*label) == indexMap.end()) { const_cast<CombinedMVAJetTagComputer*>( this)->uses(index, *label); indexMap[*label] = index; iter->indices.push_back(index++); } else iter->indices.push_back( indexMap[*label]); } } const GenericMVAJetTagComputer *mvaComputer = dynamic_cast<const GenericMVAJetTagComputer*>( iter->computer); if (iter->variables && !mvaComputer) throw cms::Exception("LogicError") << "JetTagComputer \"" << iter->name << "\" is not an MVAJetTagCompputer, " "but tagging variables have been " "requested." << std::endl; if (!pass || iter->discriminator) iter->computer->setEventSetup(es); else if (mvaComputer) mvaComputer->passEventSetup(es); } }
virtual void CombinedMVAJetTagComputer::setEventSetup | ( | const edm::EventSetup & | es | ) | const [inline, virtual] |
Reimplemented from GenericMVAJetTagComputer.
Definition at line 20 of file CombinedMVAJetTagComputer.h.
Referenced by passEventSetup().
{ setEventSetup(es, false); GenericMVAJetTagComputer::setEventSetup(es); }
TaggingVariableList CombinedMVAJetTagComputer::taggingVariables | ( | const TagInfoHelper & | info | ) | const [virtual] |
Reimplemented from GenericMVAJetTagComputer.
Definition at line 108 of file CombinedMVAJetTagComputer.cc.
References reco::btau::algoDiscriminator, computers, Exception, JetTagComputer::TagInfoHelper::getBase(), i, reco::TaggingVariableList::insert(), and GenericMVAJetTagComputer::taggingVariables().
{ TaggingVariableList vars; std::vector<const BaseTagInfo*> tagInfos; for(std::vector<Computer>::iterator iter = computers.begin(); iter != computers.end(); ++iter) { if (!iter->computer) throw cms::Exception("LogicError") << "JetTagComputer \"" << iter->name << "\" is not available in " "CombinedMVAJetTagComputer::" "taggingVariables()" << std::endl; tagInfos.clear(); for(std::vector<int>::const_iterator i = iter->indices.begin(); i != iter->indices.end(); ++i) tagInfos.push_back(&info.getBase(*i)); if (iter->variables) { const GenericMVAJetTagComputer *mvaComputer = dynamic_cast<const GenericMVAJetTagComputer*>( iter->computer); vars.insert(mvaComputer->taggingVariables(info)); } if (iter->discriminator) vars.insert(btau::algoDiscriminator, (*iter->computer)(TagInfoHelper(tagInfos))); } return vars; }
std::vector<Computer> CombinedMVAJetTagComputer::computers [mutable, private] |
Definition at line 46 of file CombinedMVAJetTagComputer.h.
Referenced by CombinedMVAJetTagComputer(), setEventSetup(), and taggingVariables().