CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
CombinedMVAJetTagComputer Class Reference

#include <CombinedMVAJetTagComputer.h>

Inheritance diagram for CombinedMVAJetTagComputer:
GenericMVAJetTagComputer JetTagComputer

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 ()
 
- Public Member Functions inherited from GenericMVAJetTagComputer
virtual float discriminator (const TagInfoHelper &info) const
 
 GenericMVAJetTagComputer (const edm::ParameterSet &parameters)
 
virtual reco::TaggingVariableList taggingVariables (const reco::BaseTagInfo &tagInfo) const
 
virtual ~GenericMVAJetTagComputer ()
 
- Public Member Functions inherited from JetTagComputer
const std::vector< std::string > & getInputLabels () const
 
 JetTagComputer ()
 
 JetTagComputer (const edm::ParameterSet &configuration)
 
float operator() (const reco::BaseTagInfo &info) const
 
float operator() (const TagInfoHelper &helper) const
 
virtual ~JetTagComputer ()
 

Private Member Functions

void setEventSetup (const edm::EventSetup &es, bool pass) const
 

Private Attributes

std::vector< Computercomputers
 

Additional Inherited Members

- Protected Member Functions inherited from JetTagComputer
virtual float discriminator (const reco::BaseTagInfo &) const
 
void uses (unsigned int id, const std::string &label)
 
void uses (const std::string &label)
 

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.

26  :
28 {
29  std::vector<edm::ParameterSet> computers =
30  params.getParameter< std::vector<edm::ParameterSet> >(
31  "jetTagComputers");
32 
33  for(std::vector<edm::ParameterSet>::const_iterator iter =
34  computers.begin(); iter != computers.end(); ++iter) {
35 
36  Computer computer;
37  computer.name = iter->getParameter<std::string>("jetTagComputer");
38  computer.discriminator = iter->getParameter<bool>("discriminator");
39  computer.variables = iter->getParameter<bool>("variables");
40  computer.computer = 0;
41 
42  this->computers.push_back(computer);
43  }
44 }
std::vector< Computer > computers
GenericMVAJetTagComputer(const edm::ParameterSet &parameters)
CombinedMVAJetTagComputer::~CombinedMVAJetTagComputer ( )
virtual

Definition at line 46 of file CombinedMVAJetTagComputer.cc.

47 {
48 }

Member Function Documentation

virtual void CombinedMVAJetTagComputer::passEventSetup ( const edm::EventSetup es) const
inlinevirtual

Reimplemented from GenericMVAJetTagComputer.

Definition at line 26 of file CombinedMVAJetTagComputer.h.

References setEventSetup().

27  {
28  setEventSetup(es, true);
29  }
virtual void setEventSetup(const edm::EventSetup &es) const
virtual void CombinedMVAJetTagComputer::setEventSetup ( const edm::EventSetup es) const
inlinevirtual

Reimplemented from GenericMVAJetTagComputer.

Definition at line 20 of file CombinedMVAJetTagComputer.h.

References GenericMVAJetTagComputer::setEventSetup().

Referenced by passEventSetup().

21  {
22  setEventSetup(es, false);
24  }
virtual void setEventSetup(const edm::EventSetup &es) const
virtual void setEventSetup(const edm::EventSetup &es) const
void CombinedMVAJetTagComputer::setEventSetup ( const edm::EventSetup es,
bool  pass 
) const
private

Definition at line 50 of file CombinedMVAJetTagComputer.cc.

References computers, edm::hlt::Exception, edm::EventSetup::get(), getHLTprescales::index, diffTwoXMLs::label, GenericMVAJetTagComputer::passEventSetup(), edm::ESHandle< class >::product(), and JetTagComputer::uses().

52 {
53  std::map<std::string, int> indexMap;
54  int index = 0;
55  int nonameIndex = 0;
56 
57  for(std::vector<Computer>::iterator iter = computers.begin();
58  iter != computers.end(); ++iter) {
59  if (!iter->computer) {
61  es.get<JetTagComputerRecord>().get(
62  iter->name, computer);
63  iter->computer = computer.product();
64 
65  // finalize the JetTagComputer glue setup
66  std::vector<std::string> inputLabels(
67  iter->computer->getInputLabels());
68 
69  // backward compatible case, use default tagInfo
70  if (inputLabels.empty()) {
71  std::ostringstream ss;
72  ss << "tagInfo" << ++nonameIndex;
73  inputLabels.push_back(ss.str());
74  }
75 
76  for(std::vector<std::string>::const_iterator label =
77  inputLabels.begin();
78  label != inputLabels.end(); ++label) {
79  if (indexMap.find(*label) == indexMap.end()) {
80  const_cast<CombinedMVAJetTagComputer*>(
81  this)->uses(index, *label);
82  indexMap[*label] = index;
83  iter->indices.push_back(index++);
84  } else
85  iter->indices.push_back(
86  indexMap[*label]);
87  }
88  }
89 
90  const GenericMVAJetTagComputer *mvaComputer =
91  dynamic_cast<const GenericMVAJetTagComputer*>(
92  iter->computer);
93  if (iter->variables && !mvaComputer)
94  throw cms::Exception("LogicError")
95  << "JetTagComputer \"" << iter->name
96  << "\" is not an MVAJetTagCompputer, "
97  "but tagging variables have been "
98  "requested." << std::endl;
99 
100  if (!pass || iter->discriminator)
101  iter->computer->setEventSetup(es);
102  else if (mvaComputer)
103  mvaComputer->passEventSetup(es);
104  }
105 }
std::vector< Computer > computers
virtual void passEventSetup(const edm::EventSetup &es) const
void uses(unsigned int id, const std::string &label)
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
TaggingVariableList CombinedMVAJetTagComputer::taggingVariables ( const TagInfoHelper info) const
virtual

Reimplemented from GenericMVAJetTagComputer.

Definition at line 108 of file CombinedMVAJetTagComputer.cc.

References reco::btau::algoDiscriminator, computers, edm::hlt::Exception, JetTagComputer::TagInfoHelper::getBase(), i, reco::TaggingVariableList::insert(), and GenericMVAJetTagComputer::taggingVariables().

109 {
110  TaggingVariableList vars;
111  std::vector<const BaseTagInfo*> tagInfos;
112 
113  for(std::vector<Computer>::iterator iter = computers.begin();
114  iter != computers.end(); ++iter) {
115  if (!iter->computer)
116  throw cms::Exception("LogicError")
117  << "JetTagComputer \"" << iter->name
118  << "\" is not available in "
119  "CombinedMVAJetTagComputer::"
120  "taggingVariables()" << std::endl;
121 
122  tagInfos.clear();
123  for(std::vector<int>::const_iterator i = iter->indices.begin();
124  i != iter->indices.end(); ++i)
125  tagInfos.push_back(&info.getBase(*i));
126 
127  if (iter->variables) {
128  const GenericMVAJetTagComputer *mvaComputer =
129  dynamic_cast<const GenericMVAJetTagComputer*>(
130  iter->computer);
131  vars.insert(mvaComputer->taggingVariables(info));
132  }
133 
134  if (iter->discriminator)
136  (*iter->computer)(TagInfoHelper(tagInfos)));
137  }
138 
139  return vars;
140 }
int i
Definition: DBlmapReader.cc:9
std::vector< Computer > computers
void insert(const TaggingVariable &variable, bool delayed=false)
virtual reco::TaggingVariableList taggingVariables(const reco::BaseTagInfo &tagInfo) const

Member Data Documentation

std::vector<Computer> CombinedMVAJetTagComputer::computers
mutableprivate