CMS 3D CMS Logo

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

#include <MuonTagger.h>

Inheritance diagram for MuonTagger:
JetTagComputer

Public Member Functions

virtual float discriminator (const TagInfoHelper &tagInfo) const override
 
void initialize (const JetTagComputerRecord &) override
 
 MuonTagger (const edm::ParameterSet &)
 
- 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

const std::string m_gbrForestLabel
 
btag::LeptonSelector m_selector
 
const bool m_useAdaBoost
 
const bool m_useCondDB
 
const bool m_useGBRForest
 
const edm::FileInPath m_weightFile
 
std::unique_ptr< TMVAEvaluatormvaID
 

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

Implementation of muon b-tagging using a softmax multilayer perceptron neural network

Author
Andrea 'fwyzard' Bocci, Universita' di Firenze

Definition at line 14 of file MuonTagger.h.

Constructor & Destructor Documentation

MuonTagger::MuonTagger ( const edm::ParameterSet cfg)

Definition at line 18 of file MuonTagger.cc.

References mvaID, and JetTagComputer::uses().

18  :
19  m_selector(cfg),
20  m_useCondDB(cfg.getParameter<bool>("useCondDB")),
21  m_gbrForestLabel(cfg.existsAs<std::string>("gbrForestLabel") ? cfg.getParameter<std::string>("gbrForestLabel") : ""),
22  m_weightFile(cfg.existsAs<edm::FileInPath>("weightFile") ? cfg.getParameter<edm::FileInPath>("weightFile") : edm::FileInPath()),
23  m_useGBRForest(cfg.existsAs<bool>("useGBRForest") ? cfg.getParameter<bool>("useGBRForest") : false),
24  m_useAdaBoost(cfg.existsAs<bool>("useAdaBoost") ? cfg.getParameter<bool>("useAdaBoost") : false)
25 {
26  uses("smTagInfos");
27  mvaID.reset(new TMVAEvaluator());
28 }
T getParameter(std::string const &) const
const bool m_useGBRForest
Definition: MuonTagger.h:27
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:186
const std::string m_gbrForestLabel
Definition: MuonTagger.h:25
const bool m_useAdaBoost
Definition: MuonTagger.h:28
btag::LeptonSelector m_selector
Definition: MuonTagger.h:23
void uses(unsigned int id, const std::string &label)
const edm::FileInPath m_weightFile
Definition: MuonTagger.h:26
const bool m_useCondDB
Definition: MuonTagger.h:24
std::unique_ptr< TMVAEvaluator > mvaID
Definition: MuonTagger.h:30

Member Function Documentation

float MuonTagger::discriminator ( const TagInfoHelper tagInfo) const
overridevirtual

Reimplemented from JetTagComputer.

Definition at line 50 of file MuonTagger.cc.

References reco::SoftLeptonProperties::deltaR, f, JetTagComputer::TagInfoHelper::get(), i, infinity, info(), SiPixelRawToDigiRegional_cfi::inputs, btag::LeptonSelector::isNegative(), reco::TemplatedSoftLeptonTagInfo< REF >::leptons(), m_selector, mvaID, reco::TemplatedSoftLeptonTagInfo< REF >::properties(), reco::SoftLeptonProperties::ptRel, random, reco::SoftLeptonProperties::ratio, fileCollector::seed, reco::SoftLeptonProperties::sip2dsig, reco::SoftLeptonProperties::sip3dsig, and GlobalPosition_Frontier_DevDB_cff::tag.

50  {
51 
52  float bestTag = - std::numeric_limits<float>::infinity(); // default value, used if there are no leptons associated to this jet
54 
55  std::mt19937_64 random;
56  std::uniform_real_distribution<float> dist(0.f,1.f);
57 
58  // If there are multiple leptons, look for the highest tag result
59  for (unsigned int i=0; i<info.leptons(); i++) {
60  const reco::SoftLeptonProperties& properties = info.properties(i);
61  if(!m_selector(properties)) continue;
62  bool flip(false);
63  if(m_selector.isNegative()) {
64  int seed=1+round(10000.*properties.deltaR);
65  random.seed(seed);
66  float rndm = dist(random);
67  if(rndm<0.5) flip=true;
68  }
69  //for negative tagger, flip 50% of the negative signs to positive value
70  float sip3dsig = flip ? -properties.sip3dsig : properties.sip3dsig;
71  float sip2dsig = flip ? -properties.sip2dsig : properties.sip2dsig;
72 
73  std::map<std::string,float> inputs;
74  inputs["TagInfo1.sip3d"] = sip3dsig;
75  inputs["TagInfo1.sip2d"] = sip2dsig;
76  inputs["TagInfo1.ptRel"] = properties.ptRel;
77  inputs["TagInfo1.deltaR"] = properties.deltaR;
78  inputs["TagInfo1.ratio"] = properties.ratio;
79 
80  float tag = mvaID->evaluate(inputs);
81  // Transform output between 0 and 1
82  tag = (tag+1.0)/2.0;
83  if(tag>bestTag) bestTag = tag;
84  }
85 
86  return bestTag;
87 }
int i
Definition: DBlmapReader.cc:9
static const TGPicture * info(bool iBackgroundIsBlack)
TRandom random
Definition: MVATrainer.cc:138
const SoftLeptonProperties & properties(size_t i) const
btag::LeptonSelector m_selector
Definition: MuonTagger.h:23
const double infinity
double f[11][100]
bool isNegative() const
std::unique_ptr< TMVAEvaluator > mvaID
Definition: MuonTagger.h:30
void MuonTagger::initialize ( const JetTagComputerRecord record)
overridevirtual

Reimplemented from JetTagComputer.

Definition at line 30 of file MuonTagger.cc.

References edm::FileInPath::fullPath(), edm::eventsetup::EventSetupRecord::get(), edm::eventsetup::DependentRecordImplementation< RecordT, ListT >::getRecord(), m_gbrForestLabel, m_useAdaBoost, m_useCondDB, m_useGBRForest, m_weightFile, mvaID, and makeLayoutFileForGui::variables.

31 {
32  // variable names and order need to be the same as in the training
33  std::vector<std::string> variables({"TagInfo1.sip3d", "TagInfo1.sip2d", "TagInfo1.ptRel", "TagInfo1.deltaR", "TagInfo1.ratio"});
34  std::vector<std::string> spectators;
35 
36  if (m_useCondDB)
37  {
38  const GBRWrapperRcd & gbrWrapperRecord = record.getRecord<GBRWrapperRcd>();
39 
40  edm::ESHandle<GBRForest> gbrForestHandle;
41  gbrWrapperRecord.get(m_gbrForestLabel.c_str(), gbrForestHandle);
42 
43  mvaID->initializeGBRForest(gbrForestHandle.product(), variables, spectators, m_useAdaBoost);
44  }
45  else
46  mvaID->initialize("Color:Silent:Error", "BDT", m_weightFile.fullPath(), variables, spectators, m_useGBRForest, m_useAdaBoost);
47 }
const bool m_useGBRForest
Definition: MuonTagger.h:27
const std::string m_gbrForestLabel
Definition: MuonTagger.h:25
const bool m_useAdaBoost
Definition: MuonTagger.h:28
void get(HolderT &iHolder) const
const edm::FileInPath m_weightFile
Definition: MuonTagger.h:26
const bool m_useCondDB
Definition: MuonTagger.h:24
std::unique_ptr< TMVAEvaluator > mvaID
Definition: MuonTagger.h:30
std::string fullPath() const
Definition: FileInPath.cc:165

Member Data Documentation

const std::string MuonTagger::m_gbrForestLabel
private

Definition at line 25 of file MuonTagger.h.

Referenced by initialize().

btag::LeptonSelector MuonTagger::m_selector
private

Definition at line 23 of file MuonTagger.h.

Referenced by discriminator().

const bool MuonTagger::m_useAdaBoost
private

Definition at line 28 of file MuonTagger.h.

Referenced by initialize().

const bool MuonTagger::m_useCondDB
private

Definition at line 24 of file MuonTagger.h.

Referenced by initialize().

const bool MuonTagger::m_useGBRForest
private

Definition at line 27 of file MuonTagger.h.

Referenced by initialize().

const edm::FileInPath MuonTagger::m_weightFile
private

Definition at line 26 of file MuonTagger.h.

Referenced by initialize().

std::unique_ptr<TMVAEvaluator> MuonTagger::mvaID
private

Definition at line 30 of file MuonTagger.h.

Referenced by discriminator(), initialize(), and MuonTagger().