ATLAS Offline Software
TrigBtagEmulationTool.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TrigBtagEmulationTool_H
6 #define TrigBtagEmulationTool_H
7 
11 #include "GaudiKernel/ToolHandle.h"
12 
13 #include "src/JetManagerTool.h"
16 
17 #include <string>
18 #include <vector>
19 #include <memory>
20 #include <map>
21 #include <unordered_map>
22 
23 namespace Trig {
24 
26  public extends<AthAlgTool, Trig::ITrigBtagEmulationTool> {
27 public:
28  TrigBtagEmulationTool(const std::string& type,
29  const std::string& name,
30  const IInterface* parent);
31  virtual ~TrigBtagEmulationTool() = default;
32 
33  virtual StatusCode initialize() override;
34 
35  // Interface
36  virtual const EmulContext& populateJetManagersTriggerObjects() const override;
37  virtual bool isPassed(const std::string& chain) const override;
38  virtual bool isPassed(const std::string& chain, const EmulContext&) const override;
39 
40 private:
41  bool isPassed(const TrigBtagEmulationChain&, const EmulContext&) const;
42  bool evaluate_L1(const TrigBtagEmulationChain&, const EmulContext&) const;
43  bool evaluate_HLT(const TrigBtagEmulationChain&, const EmulContext&) const;
44 
46  const std::vector<TrigBtagEmulationJet>& preselJets) const;
48  const std::vector<TrigBtagEmulationJet>& preselJets) const;
49 
50  void parse_preselection(const std::string& presel_part,
51  int& presel_multiplicity,
52  double& presel_ptcut,
53  double& presel_eta_min,
54  double& presel_eta_max) const;
55  void parse_dijetmass(const std::string& dijetmass,
56  double& dijet_mass,
57  double& dijet_minjetpt,
58  double& dijet_dphi,
59  double& dijet_deta) const;
60 
61  bool allocate_jets_to_chainParts(const std::vector<std::vector<bool>>& chainPart_jet_matrix,
62  const std::vector<std::string>& chainPartNames,
63  const std::vector<int>& multiplicities) const;
64 
65  std::vector<std::vector<bool>> evaluate_HLT_chainParts(const TrigBtagEmulationChain& chain,
66  const std::vector<TrigBtagEmulationJet>& jets,
67  int idx_begin,
68  int idx_end) const;
69 
71  const std::string& btagger) const;
72 
73  StatusCode addEmulatedChain(const std::string& name,
74  const std::vector< std::string >& definition);
75 
76  StatusCode checkInputChainExists(const std::string&) const;
78  EmulContext&) const;
79 
80 private:
81  PublicToolHandle<Trig::TrigDecisionTool> m_trigDec {this, "TrigDecisionTool", "",""};
82 
83  // Input properties
84  Gaudi::Property< std::string > m_inputChains_PFlow {this, "InputChain", "HLT_j45_pf_subjesgsc_ftf_L1J15", ""};
85 
86  // jet Managers
87  ToolHandle< Trig::JetManagerTool > m_manager_PFlow_cnt {this, "JM_PFlow_CNT", "",""};
88  ToolHandle< Trig::JetManagerTool > m_manager_EMTopo_presel {this, "JM_EMTopo_PRESEL", "",""};
89 
90  // Flavour Tagging
91  Gaudi::Property< std::map<std::string, double> > m_tagger_wp {this, "WorkingPoints", {}};
92  Gaudi::Property< std::map<std::string, std::string> > m_remapping {this, "FTD_Remapping", {}};
93 
94  // EMULATED CHAINS
95  Gaudi::Property< std::map< std::string, std::vector< std::string >>> m_emulatedChainDefinitions {this, "EmulatedChainDefinitions", {}, ""};
96 
97  std::unordered_map< std::string, std::unique_ptr<TrigBtagEmulationChain> > m_emulatedChains;
98  std::unique_ptr<FlavorTagDiscriminants::DL2HighLevel> m_dl2;
99 };
100 
101 } // namespace
102 
103 #endif
Trig::TrigBtagEmulationTool::populateJetManagersTriggerObjects
virtual const EmulContext & populateJetManagersTriggerObjects() const override
Definition: TrigBtagEmulationTool.cxx:482
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
Trig
The common trigger namespace for trigger analysis tools.
Definition: CaloTowerVecMon.h:44
Trig::TrigBtagEmulationTool::allocate_jets_to_chainParts
bool allocate_jets_to_chainParts(const std::vector< std::vector< bool >> &chainPart_jet_matrix, const std::vector< std::string > &chainPartNames, const std::vector< int > &multiplicities) const
Definition: TrigBtagEmulationTool.cxx:330
Trig::TrigBtagEmulationTool::m_manager_EMTopo_presel
ToolHandle< Trig::JetManagerTool > m_manager_EMTopo_presel
Definition: TrigBtagEmulationTool.h:88
Trig::TrigBtagEmulationJet
Definition: TrigBtagEmulationJet.h:17
Trig::TrigBtagEmulationTool
Definition: TrigBtagEmulationTool.h:26
Trig::JetManagerTool
Definition: JetManagerTool.h:30
TrigDecisionTool.h
ITrigBtagEmulationTool.h
Trig::TrigBtagEmulationTool::initialize
virtual StatusCode initialize() override
Definition: TrigBtagEmulationTool.cxx:38
Trig::TrigBtagEmulationChain
Definition: TrigBtagEmulationChain.h:18
Trig::TrigBtagEmulationTool::m_tagger_wp
Gaudi::Property< std::map< std::string, double > > m_tagger_wp
Definition: TrigBtagEmulationTool.h:91
Trig::TrigBtagEmulationTool::parse_dijetmass
void parse_dijetmass(const std::string &dijetmass, double &dijet_mass, double &dijet_minjetpt, double &dijet_dphi, double &dijet_deta) const
Definition: TrigBtagEmulationTool.cxx:298
Trig::TrigBtagEmulationTool::m_emulatedChains
std::unordered_map< std::string, std::unique_ptr< TrigBtagEmulationChain > > m_emulatedChains
Definition: TrigBtagEmulationTool.h:97
Trig::TrigBtagEmulationTool::m_trigDec
PublicToolHandle< Trig::TrigDecisionTool > m_trigDec
Definition: TrigBtagEmulationTool.h:81
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
TrigBtagEmulationChain.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trig::TrigBtagEmulationTool::evaluate_preselection
bool evaluate_preselection(const TrigBtagEmulationChain &chain, const std::vector< TrigBtagEmulationJet > &preselJets) const
Definition: TrigBtagEmulationTool.cxx:141
Trig::TrigBtagEmulationTool::parse_preselection
void parse_preselection(const std::string &presel_part, int &presel_multiplicity, double &presel_ptcut, double &presel_eta_min, double &presel_eta_max) const
Definition: TrigBtagEmulationTool.cxx:261
AthAlgTool.h
Trig::TrigBtagEmulationTool::m_manager_PFlow_cnt
ToolHandle< Trig::JetManagerTool > m_manager_PFlow_cnt
Definition: TrigBtagEmulationTool.h:87
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Trig::EmulContext
Definition: EmulContext.h:16
Trig::TrigBtagEmulationTool::m_dl2
std::unique_ptr< FlavorTagDiscriminants::DL2HighLevel > m_dl2
Definition: TrigBtagEmulationTool.h:98
Trig::TrigBtagEmulationTool::TrigBtagEmulationTool
TrigBtagEmulationTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: TrigBtagEmulationTool.cxx:31
ChainNameParser::multiplicities
std::vector< int > multiplicities(const std::string &chain)
Definition: ChainNameParser.cxx:202
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trig::TrigBtagEmulationTool::m_inputChains_PFlow
Gaudi::Property< std::string > m_inputChains_PFlow
Definition: TrigBtagEmulationTool.h:84
Trig::TrigBtagEmulationTool::retrieveTriggerObjects
StatusCode retrieveTriggerObjects(const Trig::JetManagerTool &, EmulContext &) const
Definition: TrigBtagEmulationTool.cxx:503
Trig::TrigBtagEmulationTool::m_remapping
Gaudi::Property< std::map< std::string, std::string > > m_remapping
Definition: TrigBtagEmulationTool.h:92
Trig::TrigBtagEmulationTool::isPassedBTagger
bool isPassedBTagger(const TrigBtagEmulationJet &jet, const std::string &btagger) const
Definition: TrigBtagEmulationTool.cxx:548
Trig::TrigBtagEmulationTool::m_emulatedChainDefinitions
Gaudi::Property< std::map< std::string, std::vector< std::string > > > m_emulatedChainDefinitions
Definition: TrigBtagEmulationTool.h:95
DL2HighLevel.h
Trig::TrigBtagEmulationTool::checkInputChainExists
StatusCode checkInputChainExists(const std::string &) const
Definition: TrigBtagEmulationTool.cxx:518
JetManagerTool.h
Trig::TrigBtagEmulationTool::addEmulatedChain
StatusCode addEmulatedChain(const std::string &name, const std::vector< std::string > &definition)
Definition: TrigBtagEmulationTool.cxx:534
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
Trig::TrigBtagEmulationTool::~TrigBtagEmulationTool
virtual ~TrigBtagEmulationTool()=default
Trig::TrigBtagEmulationTool::isPassed
virtual bool isPassed(const std::string &chain) const override
Definition: TrigBtagEmulationTool.cxx:57
Trig::TrigBtagEmulationTool::evaluate_HLT_chainParts
std::vector< std::vector< bool > > evaluate_HLT_chainParts(const TrigBtagEmulationChain &chain, const std::vector< TrigBtagEmulationJet > &jets, int idx_begin, int idx_end) const
Definition: TrigBtagEmulationTool.cxx:423
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
Trig::TrigBtagEmulationTool::evaluate_L1
bool evaluate_L1(const TrigBtagEmulationChain &, const EmulContext &) const
Definition: TrigBtagEmulationTool.cxx:81
Trig::TrigBtagEmulationTool::evaluate_dijetmass
bool evaluate_dijetmass(const TrigBtagEmulationChain &chain, const std::vector< TrigBtagEmulationJet > &preselJets) const
Definition: TrigBtagEmulationTool.cxx:221
Trig::TrigBtagEmulationTool::evaluate_HLT
bool evaluate_HLT(const TrigBtagEmulationChain &, const EmulContext &) const
Definition: TrigBtagEmulationTool.cxx:91