CMS 3D CMS Logo

Classes | Public Member Functions | Private Member Functions | Private Attributes

CombinedMVAJetTagComputer Class Reference

#include <CombinedMVAJetTagComputer.h>

Inheritance diagram for CombinedMVAJetTagComputer:
GenericMVAJetTagComputer JetTagComputer

List of all members.

Classes

struct  Computer

Public Member Functions

 CombinedMVAJetTagComputer (const edm::ParameterSet &parameters)
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< Computercomputers

Detailed Description

Definition at line 15 of file CombinedMVAJetTagComputer.h.


Constructor & Destructor Documentation

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.

{
}

Member Function Documentation

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().

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;
}

Member Data Documentation

std::vector<Computer> CombinedMVAJetTagComputer::computers [mutable, private]