ATLAS Offline Software
MV2Tag.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef JETTAGTOOLS_MV2TAG_H
6 #define JETTAGTOOLS_MV2TAG_H
7 
8 /******************************************************
9  @class MV2Tag
10  Neural-net tagger combining weights of IP3D, SV1 and
11  JetFitterCombNN
12  @ author L. Vacavant
13 ********************************************************/
14 
17 #include <string>
18 #include <map>
19 #include <list>
20 #include "MVAUtils/BDT.h"
22 #include "TLorentzVector.h"
23 
24 namespace Analysis {
25 
26  class MV2Tag : public extends<AthAlgTool, IMultivariateJetTagger>
27  {
28  public:
29  MV2Tag(const std::string& name,
30  const std::string& n,
31  const IInterface*);
32 
36  virtual ~MV2Tag() = default;
37  virtual StatusCode initialize()override ;
38 
39  virtual
41  const std::map<std::string,double>& inputs,
42  const std::string& jetauthor) const override;
43 
44 
45  private:
46 
47  std::string m_taggerNameBase; // unique name for regular and flip versions
48  std::string m_varStrName;
49 
51  SG::ReadCondHandleKey<JetTagCalibCondData> m_readKey{this, "HistosKey", "JetTagCalibHistosKey", "Key of input (derived) JetTag calibration data"};
53  std::string m_MV2CalibAlias;
54  std::string m_xAODBaseName;
55 
56  std::map<std::string, double > m_defaultvals;
58  std::map<std::string, std::string > m_MVTM_name_translations;
60  std::map<std::string, std::string > m_MVTM_name_backtrans;
61 
62 
63  const unsigned m_nClasses=3;//b,u,c probabilities. It might be better to read from calib file for future
64  //const bool m_writeRootFile=false;//Developer option
65  mutable std::atomic<bool> m_disableAlgo;
66  mutable std::atomic<int> m_warnCounter;
67 
71  std::string m_runModus;
72 
73  float d0sgn_wrtJet(const TLorentzVector& jet, const TLorentzVector& trk, float d0sig) const;
74  float z0sgn_wrtJet(float trackTheta, float trackZ0, float jetEta) const;
75 
76  std::vector<float>
77  CreateVariables (const std::map<std::string, double> &inputs,
78  const std::vector<std::string>& inputVars) const;
79 
80  std::vector<float>
81  GetMulticlassResponse(const std::vector<float>& vars,
82  const MVAUtils::BDT* bdt) const
83  {
84  std::vector<float> v(m_nClasses,-1);
85  return (vars.size() ? bdt->GetMultiResponse(vars,m_nClasses) : v);
86  }
87  double GetClassResponse (const std::vector<float>& vars,
88  const MVAUtils::BDT* bdt) const
89  {
90  return (vars.size() ? bdt->GetGradBoostMVA(vars) : -9.);
91  }
92 
93 
94  }; // End class
95 
96 } // End namespace
97 
98 #endif
Analysis::MV2Tag::m_taggerNameBase
std::string m_taggerNameBase
Definition: MV2Tag.h:57
Analysis::MV2Tag::initialize
virtual StatusCode initialize() override
Definition: MV2Tag.cxx:57
Analysis::MV2Tag::GetClassResponse
double GetClassResponse(const std::vector< float > &vars, const MVAUtils::BDT *bdt) const
Definition: MV2Tag.h:97
Analysis::MV2Tag::CreateVariables
std::vector< float > CreateVariables(const std::map< std::string, double > &inputs, const std::vector< std::string > &inputVars) const
Definition: MV2Tag.cxx:181
JetTagCalibCondData.h
Analysis::MV2Tag::GetMulticlassResponse
std::vector< float > GetMulticlassResponse(const std::vector< float > &vars, const MVAUtils::BDT *bdt) const
Definition: MV2Tag.h:91
Analysis::MV2Tag::m_MVTM_name_backtrans
std::map< std::string, std::string > m_MVTM_name_backtrans
Map from names in calibration file to names in tool input.
Definition: MV2Tag.h:70
MVAUtils::BDT
Simplified Boosted Regression Tree, support TMVA, lgbm, and xgboost.
Definition: BDT.h:34
Analysis::MV2Tag::m_warnCounter
std::atomic< int > m_warnCounter
Definition: MV2Tag.h:76
postInclude.inputs
inputs
Definition: postInclude.SortInput.py:15
Analysis::MV2Tag::assignProbability
virtual void assignProbability(xAOD::BTagging *BTag, const std::map< std::string, double > &inputs, const std::string &jetauthor) const override
Definition: MV2Tag.cxx:75
Analysis::MV2Tag::d0sgn_wrtJet
float d0sgn_wrtJet(const TLorentzVector &jet, const TLorentzVector &trk, float d0sig) const
Definition: MV2Tag.cxx:162
Analysis::MV2Tag::m_defaultvals
std::map< std::string, double > m_defaultvals
Definition: MV2Tag.h:66
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
Analysis::MV2Tag::m_varStrName
std::string m_varStrName
Definition: MV2Tag.h:58
IMultivariateJetTagger.h
beamspotman.n
n
Definition: beamspotman.py:731
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Analysis::MV2Tag::m_xAODBaseName
std::string m_xAODBaseName
Definition: MV2Tag.h:64
AthAlgTool.h
BDT.h
xAOD::BTagging_v1
Definition: BTagging_v1.h:39
Analysis::MV2Tag::m_nClasses
const unsigned m_nClasses
Definition: MV2Tag.h:73
Analysis::MV2Tag::z0sgn_wrtJet
float z0sgn_wrtJet(float trackTheta, float trackZ0, float jetEta) const
Definition: MV2Tag.cxx:173
Analysis::MV2Tag::MV2Tag
MV2Tag(const std::string &name, const std::string &n, const IInterface *)
Definition: MV2Tag.cxx:34
Analysis
The namespace of all packages in PhysicsAnalysis/JetTagging.
Definition: BTaggingCnvAlg.h:20
Analysis::MV2Tag::m_readKey
SG::ReadCondHandleKey< JetTagCalibCondData > m_readKey
Key of calibration data:
Definition: MV2Tag.h:61
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Analysis::MV2Tag::m_disableAlgo
std::atomic< bool > m_disableAlgo
Definition: MV2Tag.h:75
Analysis::MV2Tag::m_MV2CalibAlias
std::string m_MV2CalibAlias
Definition: MV2Tag.h:63
Analysis::MV2Tag::m_runModus
std::string m_runModus
This switch is needed to indicate what to do.
Definition: MV2Tag.h:81
SG::ReadCondHandleKey
Definition: ReadCondHandleKey.h:20
MVAUtils::BDT::GetGradBoostMVA
float GetGradBoostMVA(const std::vector< float > &values) const
python.PyAthena.v
v
Definition: PyAthena.py:157
Analysis::MV2Tag::~MV2Tag
virtual ~MV2Tag()=default
Implementations of the methods defined in the abstract base class.
xAODType::BTag
@ BTag
The object is a b-tagging object.
Definition: ObjectType.h:60
Analysis::MV2Tag::m_forceMV2CalibrationAlias
bool m_forceMV2CalibrationAlias
Definition: MV2Tag.h:62
MVAUtils::BDT::GetMultiResponse
std::vector< float > GetMultiResponse(const std::vector< float > &values, unsigned int numClasses) const
Get response of the forest, for multiclassification (e.g.
Analysis::MV2Tag::m_MVTM_name_translations
std::map< std::string, std::string > m_MVTM_name_translations
Map from names in tool input to names in calibration file.
Definition: MV2Tag.h:68