ATLAS Offline Software
BTaggingEigenVectorRecompositionToolTester.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
7 #include <AsgTools/ToolHandle.h>
10 
11 
12 int main() {
13  bool retval = true;
14 
15  std::string taggerName = "MV2c10";
16  std::string workingPointName = "Continuous";
17 
18  asg::StandaloneToolHandle<IBTaggingEfficiencyTool> btag_eff_tool("BTaggingEfficiencyTool/BTagEffTest");
19  StatusCode code1 = btag_eff_tool.setProperty("ScaleFactorFileName","xAODBTaggingEfficiency/13TeV/2017-21-13TeV-MC16-CDI-2019-07-30_v1.root" );
20  StatusCode code2 = btag_eff_tool.setProperty("TaggerName", taggerName );
21  StatusCode code3 = btag_eff_tool.setProperty("OperatingPoint", workingPointName);
22  StatusCode code4 = btag_eff_tool.setProperty("JetAuthor", "AntiKt4EMTopoJets" );
23  StatusCode code5 = btag_eff_tool.setProperty("MinPt", 20. );
24  // Exclude certain original uncertainties from Eigenvector scheme so that
25  // it these uncertainties will be exclude from eigen vector recomposition.
26  // The original uncertainty names are separated by semicolon.
27  // Here exclude two uncertainties as an example.
28  // StatusCode code0 = btag_eff_tool.setProperty("ExcludeFromEigenVectorBTreatment","FT_EFF_PDF4LHC_np_19;JET_EffectiveNP_Mixed3");
29  StatusCode code6 = btag_eff_tool.initialize();
30  if (code1 != StatusCode::SUCCESS
31  || code2 != StatusCode::SUCCESS
32  || code3 != StatusCode::SUCCESS
33  || code4 != StatusCode::SUCCESS
34  || code5 != StatusCode::SUCCESS
35  || code6 != StatusCode::SUCCESS ){
36  std::cout << "Initialization of tool " << btag_eff_tool->name() << " failed! " << std::endl;
37  return -1;
38  }
39  else {
40  std::cout << "Initialization of tool " << btag_eff_tool->name() << " finished." << std::endl;
41  }
42 
43  asg::StandaloneToolHandle<IBTaggingEigenVectorRecompositionTool> evr_tool("BTaggingEigenVectorRecompositionTool/BTagEVRTest");
44  StatusCode code7 = evr_tool.setProperty("BTaggingEfficiencyTool", btag_eff_tool);
45  StatusCode code8 = evr_tool.initialize();
46  if (code7 != StatusCode::SUCCESS
47  ||code8 != StatusCode::SUCCESS ) {
48  std::cout << "Initialization of tool" << evr_tool->name() << " failed!" << std::endl;
49  } else {
50  std::cout << "Initialization of tool " << evr_tool->name() << " finished." << std::endl;
51  }
52 
53  const std::string label = "B";
54  const unsigned int evIdx = 0;
55 
67  std::vector<unsigned int> eigenIdxList = {1,2,3,4,5};
68  std::map<std::string, std::map<std::string, float>> coefficientMap = evr_tool->getCoefficientMap(label, eigenIdxList);
69 
80  std::vector<float> coeffs = evr_tool->getCoefficients(label, evIdx);
81 
90  std::vector<std::string> orig_nps = evr_tool->getListOfOriginalNuisanceParameters(label);
91 
100  int nEigen = evr_tool->getNumEigenVectors("B");
101  if (nEigen >= 0){
102  std::cout<<"There are "<<nEigen
103  <<" eigen vectors for flavour B."<<std::endl;
104  }
105 
106  return retval;
107 
108 }
PlotCalibFromCool.label
label
Definition: PlotCalibFromCool.py:78
IBTaggingEigenVectorRecompositionTool::getCoefficientMap
virtual 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 =0
Produce a coefficient map contains only eigenvectors that is showing in eigenIdxList and return it to...
IBTaggingEigenVectorRecompositionTool.h
LArCellBinning_test.retval
def retval
Definition: LArCellBinning_test.py:112
perfmonmt-refit.coeffs
coeffs
Definition: perfmonmt-refit.py:105
IBTaggingEfficiencyTool.h
asg::StandaloneToolHandle::initialize
StatusCode initialize()
initialize the tool, will fail if the tool was already initialized
Definition: StandaloneToolHandle.h:158
main
int main()
Definition: BTaggingEigenVectorRecompositionToolTester.cxx:12
asg::StandaloneToolHandle::setProperty
StatusCode setProperty(const std::string &name, T2 &&value)
Definition: StandaloneToolHandle.h:105
asg::StandaloneToolHandle
an "initializing" ToolHandle for stand-alone applications
Definition: StandaloneToolHandle.h:44
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
IBTaggingEigenVectorRecompositionTool::getListOfOriginalNuisanceParameters
virtual std::vector< std::string > getListOfOriginalNuisanceParameters(const std::string &label) const =0
Declare the interface that the class provides.
IBTaggingEigenVectorRecompositionTool::getNumEigenVectors
virtual int getNumEigenVectors(const std::string &label) const =0
StandaloneToolHandle.h
IBTaggingEigenVectorRecompositionTool::getCoefficients
virtual std::vector< float > getCoefficients(const std::string &label, const unsigned int evIdx) const =0
Returns a vector contains the coefficients value of the chosen label and the chosen eigenvector.
ToolHandle.h