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 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 initialize (const JetTagComputerRecord &record)
 
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
 
void setupDone ()
 
virtual ~JetTagComputer ()
 

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, AlCaHLTBitMon_QueryRunRegistry::string, 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

void CombinedMVAJetTagComputer::initialize ( const JetTagComputerRecord record)
virtual

Reimplemented from GenericMVAJetTagComputer.

Definition at line 50 of file CombinedMVAJetTagComputer.cc.

References computers, Exception, edm::eventsetup::EventSetupRecord::get(), cmsHarvester::index, GenericMVAJetTagComputer::initialize(), diffTwoXMLs::label, edm::ESHandle< class >::product(), contentValuesCheck::ss, and JetTagComputer::uses().

50  {
51 
52  std::map<std::string, int> indexMap;
53  int index = 0;
54  int nonameIndex = 0;
55 
56  for(std::vector<Computer>::iterator iter = computers.begin();
57  iter != computers.end(); ++iter) {
58 
59  edm::ESHandle<JetTagComputer> computerHandle;
60  record.get(iter->name, computerHandle);
61  if (!iter->computer) {
62  iter->computer = computerHandle.product();
63 
64  // finalize the JetTagComputer glue setup
65  std::vector<std::string> inputLabels(iter->computer->getInputLabels());
66 
67  // backward compatible case, use default tagInfo
68  if (inputLabels.empty()) {
69  std::ostringstream ss;
70  ss << "tagInfo" << ++nonameIndex;
71  inputLabels.push_back(ss.str());
72  }
73  for(std::vector<std::string>::const_iterator label =
74  inputLabels.begin();
75  label != inputLabels.end(); ++label) {
76  if (indexMap.find(*label) == indexMap.end()) {
77  uses(index, *label);
78  indexMap[*label] = index;
79  iter->indices.push_back(index++);
80  } else {
81  iter->indices.push_back(indexMap[*label]);
82  }
83  }
84  } else {
85  // A sanity check. This should never fail.
86  if(iter->computer != computerHandle.product()) {
87  throw cms::Exception("LogicError") << "CombinedMVAJetTagComputer::initialize. Pointer to JetTagComputer changed!\n";
88  }
89  }
90 
91  const GenericMVAJetTagComputer *mvaComputer =
92  dynamic_cast<const GenericMVAJetTagComputer*>(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  }
102 }
std::vector< Computer > computers
virtual void initialize(const JetTagComputerRecord &)
void get(HolderT &iHolder) const
void uses(unsigned int id, const std::string &label)
T const * product() const
Definition: ESHandle.h:86
TaggingVariableList CombinedMVAJetTagComputer::taggingVariables ( const TagInfoHelper info) const
virtual

Reimplemented from GenericMVAJetTagComputer.

Definition at line 105 of file CombinedMVAJetTagComputer.cc.

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

106 {
107  TaggingVariableList vars;
108  std::vector<const BaseTagInfo*> tagInfos;
109 
110  for(std::vector<Computer>::const_iterator iter = computers.begin();
111  iter != computers.end(); ++iter) {
112  if (!iter->computer)
113  throw cms::Exception("LogicError")
114  << "JetTagComputer \"" << iter->name
115  << "\" is not available in "
116  "CombinedMVAJetTagComputer::"
117  "taggingVariables()" << std::endl;
118 
119  tagInfos.clear();
120  for(std::vector<int>::const_iterator i = iter->indices.begin();
121  i != iter->indices.end(); ++i)
122  tagInfos.push_back(&info.getBase(*i));
123 
124  if (iter->variables) {
125  const GenericMVAJetTagComputer *mvaComputer =
126  dynamic_cast<const GenericMVAJetTagComputer*>(
127  iter->computer);
128  vars.insert(mvaComputer->taggingVariables(info));
129  }
130 
131  if (iter->discriminator)
133  (*iter->computer)(TagInfoHelper(tagInfos)));
134  }
135 
136  return vars;
137 }
int i
Definition: DBlmapReader.cc:9
static const TGPicture * info(bool iBackgroundIsBlack)
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
private