ATLAS Offline Software
BTaggingEigenVectorRecompositionTool.h
Go to the documentation of this file.
1 // Dear emacs, this is -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
5 */
6 
8 // BTaggingEigenVectorRecomposition.h, (c) ATLAS Detector software
10 
21 #ifndef CPBTAGGINGEIGENVECTORRECOMPOSITIONTOOL_H
22 #define CPBTAGGINGEIGENVECTORRECOMPOSITIONTOOL_H
23 
28 
29 #include <string>
30 #include <vector>
31 #include <map>
32 
33 #include "AsgTools/AsgTool.h"
34 #include "AsgTools/ToolHandle.h"
35 #include "AsgTools/AnaToolHandle.h"
36 
39 {
42 
43  public:
44 
45 
47  BTaggingEigenVectorRecompositionTool( const std::string& name );
48 
51 
57  std::vector<std::string> getListOfOriginalNuisanceParameters(const std::string& label) const;
58 
64  std::map<std::string, std::map<std::string, float>> getCoefficientMap(const std::string & label,
65  const std::vector<unsigned int>& eigenIdxList =
66  std::vector<unsigned int>()) const;
67 
74  std::vector<float> getCoefficients(const std::string & label, const unsigned int evIdx) const;
75 
76  // Return number of eigenvectors used for the chosen label.
77  int getNumEigenVectors(const std::string & label)const;
78 
85 
86  // this returns a list of systematics supported by the btaggingEfficiency tool handle
88 
93 
99 
104  bool isAffectedBySystematic( const CP::SystematicVariation & systematic ) const;
105 
106 
107  private:
108 
109  // memeber variable maps which has format:
110  // map<"Eigen_[flavour]_[index]", map<"[original uncertainty name]", coefficent value>
111  // One map for each flavour.
112  std::map<std::string, std::map<std::string, float>> m_coefficientMapB;
113  std::map<std::string, std::map<std::string, float>> m_coefficientMapC;
114  std::map<std::string, std::map<std::string, float>> m_coefficientMapT;
115  std::map<std::string, std::map<std::string, float>> m_coefficientMapLight;
116 
117  // contains list of original uncertainty names. The aim for having this
118  // is to keep the order of uncertainty names.
119  // One list for each flavour.
120  std::vector<std::string> m_NPnameListB;
121  std::vector<std::string> m_NPnameListC;
122  std::vector<std::string> m_NPnameListT;
123  std::vector<std::string> m_NPnameListLight;
124 
125  // BtaggingEfficiencyTool handle.
126  ToolHandle<IBTaggingEfficiencyTool> m_btageffTool;
127 
128 };
129 
130 #endif // CPBTAGGINGEIGENVECTORRECOMPOSITIONTOOL_H
BTaggingEigenVectorRecompositionTool::m_coefficientMapT
std::map< std::string, std::map< std::string, float > > m_coefficientMapT
Definition: BTaggingEigenVectorRecompositionTool.h:114
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
BTaggingEigenVectorRecompositionTool::recommendedSystematics
CP::SystematicSet recommendedSystematics() const
subset of systematics that are recommended by the btaggingEfficiency tool handle
Definition: BTaggingEigenVectorRecompositionTool.cxx:231
BTaggingEigenVectorRecompositionTool::isAffectedBySystematic
bool isAffectedBySystematic(const CP::SystematicVariation &systematic) const
returns true if the argument systematic is supported by the btaggingEfficiency tool handle
Definition: BTaggingEigenVectorRecompositionTool.cxx:223
PlotCalibFromCool.label
label
Definition: PlotCalibFromCool.py:78
BTaggingEigenVectorRecompositionTool::m_NPnameListT
std::vector< std::string > m_NPnameListT
Definition: BTaggingEigenVectorRecompositionTool.h:122
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
IBTaggingEigenVectorRecompositionTool.h
CP::SystematicVariation
Definition: SystematicVariation.h:47
BTaggingEigenVectorRecompositionTool::m_NPnameListC
std::vector< std::string > m_NPnameListC
Definition: BTaggingEigenVectorRecompositionTool.h:121
BTaggingEigenVectorRecompositionTool::m_coefficientMapC
std::map< std::string, std::map< std::string, float > > m_coefficientMapC
Definition: BTaggingEigenVectorRecompositionTool.h:113
ISystematicsTool.h
BTaggingEigenVectorRecompositionTool::m_coefficientMapB
std::map< std::string, std::map< std::string, float > > m_coefficientMapB
Definition: BTaggingEigenVectorRecompositionTool.h:112
IBTaggingEfficiencyTool.h
BTaggingEigenVectorRecompositionTool::m_coefficientMapLight
std::map< std::string, std::map< std::string, float > > m_coefficientMapLight
Definition: BTaggingEigenVectorRecompositionTool.h:115
BTaggingEigenVectorRecompositionTool::applySystematicVariation
StatusCode applySystematicVariation(const CP::SystematicSet &systConfig)
it indicates which systematic shifts are to be applied for all future calls no systematics for now,...
Definition: BTaggingEigenVectorRecompositionTool.cxx:211
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
BTaggingEigenVectorRecompositionTool::BTaggingEigenVectorRecompositionTool
BTaggingEigenVectorRecompositionTool(const std::string &name)
Create a proper constructor for Athena.
Definition: BTaggingEigenVectorRecompositionTool.cxx:9
BTaggingEigenVectorRecompositionTool::getCoefficientMap
std::map< std::string, std::map< std::string, float > > getCoefficientMap(const std::string &label, const std::vector< unsigned int > &eigenIdxList=std::vector< unsigned int >()) const
Produce a coefficient map contains only eigenvectors that is showing in eigenIdxList and return it to...
Definition: BTaggingEigenVectorRecompositionTool.cxx:108
BTaggingEigenVectorRecompositionTool::m_NPnameListLight
std::vector< std::string > m_NPnameListLight
Definition: BTaggingEigenVectorRecompositionTool.h:123
BTaggingEigenVectorRecompositionTool::affectingSystematics
CP::SystematicSet affectingSystematics() const
the list of all systematics this tool can be affected by
Definition: BTaggingEigenVectorRecompositionTool.cxx:205
AnaToolHandle.h
StatusCode.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
BTaggingEigenVectorRecompositionTool::~BTaggingEigenVectorRecompositionTool
virtual ~BTaggingEigenVectorRecompositionTool()
Create a constructor for standalone usage.
Definition: BTaggingEigenVectorRecompositionTool.cxx:15
BTaggingEigenVectorRecompositionTool::getCoefficients
std::vector< float > getCoefficients(const std::string &label, const unsigned int evIdx) const
Returns a vector contains the coefficients value of the chosen label and the chosen eigenvector.
Definition: BTaggingEigenVectorRecompositionTool.cxx:146
BTaggingEigenVectorRecompositionTool::m_NPnameListB
std::vector< std::string > m_NPnameListB
Definition: BTaggingEigenVectorRecompositionTool.h:120
BTaggingEigenVectorRecompositionTool::getListOfOriginalNuisanceParameters
std::vector< std::string > getListOfOriginalNuisanceParameters(const std::string &label) const
Return a vector which contains a list of original vector uncertainties names.
Definition: BTaggingEigenVectorRecompositionTool.cxx:84
BTaggingEigenVectorRecompositionTool::m_btageffTool
ToolHandle< IBTaggingEfficiencyTool > m_btageffTool
Definition: BTaggingEigenVectorRecompositionTool.h:126
BTaggingEigenVectorRecompositionTool::getNumEigenVectors
int getNumEigenVectors(const std::string &label) const
Definition: BTaggingEigenVectorRecompositionTool.cxx:187
ASG_TOOL_CLASS3
#define ASG_TOOL_CLASS3(CLASSNAME, INT1, INT2, INT3)
Definition: AsgToolMacros.h:85
BTaggingEigenVectorRecompositionTool
Definition: BTaggingEigenVectorRecompositionTool.h:39
CP::IReentrantSystematicsTool
interface for all CP tools supporting systematic variations within a reentrant algorithm
Definition: IReentrantSystematicsTool.h:58
ToolHandle.h
BTaggingEigenVectorRecompositionTool::initialize
StatusCode initialize()
Initialize BtaggingEfficiencyTool handle and retrieve coefficient map for all flavours.
Definition: BTaggingEigenVectorRecompositionTool.cxx:23
AsgTool.h
IBTaggingEigenVectorRecompositionTool
Definition: IBTaggingEigenVectorRecompositionTool.h:28