ATLAS Offline Software
EnhancedBiasWeightCompAlg.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 TRIG_ENHANCEDBIASWEIGHTCOMPALG_H
6 #define TRIG_ENHANCEDBIASWEIGHTCOMPALG_H
7 
10 #include "TrigConfData/HLTMenu.h"
15 
16 #include <vector>
17 #include <string>
18 
19 #include <tbb/concurrent_hash_map.h>
20 #include <tbb/concurrent_unordered_map.h>
21 
28  public:
29 
30  EnhancedBiasWeightCompAlg(const std::string& name, ISvcLocator* svcLoc);
31 
32  virtual StatusCode initialize() override;
33  virtual StatusCode start() override;
34  virtual StatusCode execute(const EventContext& context) const override;
35  virtual StatusCode stop() override;
36 
37  private:
43  class EBChainInfo {
44  public:
46 
47  std::string getName() const {return m_id.name();}
49  double getTotalPrescale() const {return m_totalPrescale;}
50  bool getIsRandom() const {return (getName().find("HLT_noalg_L1RD") != std::string::npos);}
51  bool getIsNoPS() const {return (getName().find("noPS") != std::string::npos);}
52  bool getIsDisabled() const {return (m_totalPrescale <= 0);}
53 
54  void setTotalPrescale(const double& prescale) {m_totalPrescale = prescale;}
55 
56  private:
59 
62  };
63 
68  struct EBResult {
69  double weight {1.0};
71  };
72 
73  SG::ReadHandleKey<TrigConf::HLTMenu> m_HLTMenuKey{this, "HLTTriggerMenu", "DetectorStore+HLTTriggerMenu", "HLT Menu"};
74  PublicToolHandle<Trig::TrigDecisionTool> m_tdt{this, "TrigDecisionTool", "Trig::TrigDecisionTool/TrigDecisionTool", "TrigDecisionTool"};
75  SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> m_finalDecisionKey{ this, "FinalDecisionKey", "", "Final stage of all decisions" };
76 
77  SG::ReadCondHandleKey<TrigConf::HLTPrescalesSet> m_HLTPrescaleSetInputKey {this, "HLTPrescales", "HLTPrescales", "HLT prescales set"};
78  SG::ReadCondHandleKey<TrigConf::L1PrescalesSet> m_L1PrescaleSetInputKey {this, "L1Prescales", "L1Prescales", "L1 prescales set"};
79 
80  Gaudi::Property<std::map<std::string, std::vector<std::string>>> m_chainToHLTSeed {this, "ChainToItemMap", {}, "Map for HLT seeded chains" };
81 
83  EBResult calculateEBWeight(const std::vector<EBChainInfo>& EBChains) const;
84 
86  StatusCode fillTotalPrescaleForChains(const EventContext& context, std::vector<EBChainInfo>& EBChains) const;
87 
89  std::vector<EBChainInfo> getPassedEBChains() const;
90 
92  bool checkIfTriggeredByRandomChain(const std::vector<EBChainInfo>& EBChain) const;
93 
95  std::vector<std::string> parseItems(const std::string& itemStr);
96 
98  std::vector<HLT::Identifier> m_EBChainIds;
99 
101  std::map<HLT::Identifier, std::vector<std::string>> m_EBChainIdToItem;
102 
104  mutable std::string m_outputFilename ATLAS_THREAD_SAFE;
105 
107  mutable tbb::concurrent_vector<std::pair<double, bool>> m_ebWeights ATLAS_THREAD_SAFE;
108 
110  mutable tbb::concurrent_unordered_map<int, double> m_eventToWeight ATLAS_THREAD_SAFE;
111 
112 };
113 
114 #endif //TRIG_ENHANCEDBIASWEIGHTCOMPALG_H
HLTPrescalesSet.h
EnhancedBiasWeightCompAlg::EBChainInfo::getName
std::string getName() const
Definition: EnhancedBiasWeightCompAlg.h:47
EnhancedBiasWeightCompAlg::EBChainInfo::EBChainInfo
EBChainInfo(const HLT::Identifier &id)
Definition: EnhancedBiasWeightCompAlg.h:45
TrigCompositeUtils::DecisionID
unsigned int DecisionID
Definition: TrigComposite_v1.h:27
EnhancedBiasWeightCompAlg::getPassedEBChains
std::vector< EBChainInfo > getPassedEBChains() const
Get list of Enhanced Bias chains that cound have passed.
Definition: EnhancedBiasWeightCompAlg.cxx:174
EnhancedBiasWeightCompAlg::parseItems
std::vector< std::string > parseItems(const std::string &itemStr)
Parse list of l1 items.
Definition: EnhancedBiasWeightCompAlg.cxx:216
EnhancedBiasWeightCompAlg::m_EBChainIds
std::vector< HLT::Identifier > m_EBChainIds
Available EB chains' IDs from HLT Menu.
Definition: EnhancedBiasWeightCompAlg.h:98
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
TrigCompositeUtils.h
EnhancedBiasWeightCompAlg::m_EBChainIdToItem
std::map< HLT::Identifier, std::vector< std::string > > m_EBChainIdToItem
L1 items for EB chains from HLT Menu.
Definition: EnhancedBiasWeightCompAlg.h:101
EnhancedBiasWeightCompAlg::m_HLTMenuKey
SG::ReadHandleKey< TrigConf::HLTMenu > m_HLTMenuKey
Definition: EnhancedBiasWeightCompAlg.h:73
EnhancedBiasWeightCompAlg::EBChainInfo::getIsRandom
bool getIsRandom() const
Definition: EnhancedBiasWeightCompAlg.h:50
EnhancedBiasWeightCompAlg::start
virtual StatusCode start() override
Definition: EnhancedBiasWeightCompAlg.cxx:30
TrigDecisionTool.h
L1PrescalesSet.h
SG::ReadHandleKey< TrigConf::HLTMenu >
EnhancedBiasWeightCompAlg::checkIfTriggeredByRandomChain
bool checkIfTriggeredByRandomChain(const std::vector< EBChainInfo > &EBChain) const
Check if any of random chains passed.
Definition: EnhancedBiasWeightCompAlg.cxx:210
EnhancedBiasWeightCompAlg::fillTotalPrescaleForChains
StatusCode fillTotalPrescaleForChains(const EventContext &context, std::vector< EBChainInfo > &EBChains) const
Retrieve total prescales (L1 * HLT) for chains into map.
Definition: EnhancedBiasWeightCompAlg.cxx:123
EnhancedBiasWeightCompAlg::calculateEBWeight
EBResult calculateEBWeight(const std::vector< EBChainInfo > &EBChains) const
Calculate EB result based on total prescales of chains.
Definition: EnhancedBiasWeightCompAlg.cxx:152
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
EnhancedBiasWeightCompAlg
Compute Enhanced Bias weights for the events.
Definition: EnhancedBiasWeightCompAlg.h:27
EnhancedBiasWeightCompAlg::EBChainInfo::m_id
HLT::Identifier m_id
HLTID of the chain.
Definition: EnhancedBiasWeightCompAlg.h:58
EnhancedBiasWeightCompAlg::ATLAS_THREAD_SAFE
tbb::concurrent_unordered_map< int, double > m_eventToWeight ATLAS_THREAD_SAFE
Map of event number to index in m_ebWeights vector to be saved in xml.
Definition: EnhancedBiasWeightCompAlg.h:110
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
EnhancedBiasWeightCompAlg::m_chainToHLTSeed
Gaudi::Property< std::map< std::string, std::vector< std::string > > > m_chainToHLTSeed
Definition: EnhancedBiasWeightCompAlg.h:80
EnhancedBiasWeightCompAlg::ATLAS_THREAD_SAFE
tbb::concurrent_vector< std::pair< double, bool > > m_ebWeights ATLAS_THREAD_SAFE
List of calculated weight + unbiased flag pairs to be saved in xml.
Definition: EnhancedBiasWeightCompAlg.h:107
EnhancedBiasWeightCompAlg::EBChainInfo::setTotalPrescale
void setTotalPrescale(const double &prescale)
Definition: EnhancedBiasWeightCompAlg.h:54
EnhancedBiasWeightCompAlg::EBResult
Store result of EB weight calculation.
Definition: EnhancedBiasWeightCompAlg.h:68
EnhancedBiasWeightCompAlg::ATLAS_THREAD_SAFE
std::string m_outputFilename ATLAS_THREAD_SAFE
Name of xml output file.
Definition: EnhancedBiasWeightCompAlg.h:104
EnhancedBiasWeightCompAlg::m_L1PrescaleSetInputKey
SG::ReadCondHandleKey< TrigConf::L1PrescalesSet > m_L1PrescaleSetInputKey
Definition: EnhancedBiasWeightCompAlg.h:78
EnhancedBiasWeightCompAlg::EBChainInfo::m_totalPrescale
double m_totalPrescale
Value of total prescale L1 * HLT.
Definition: EnhancedBiasWeightCompAlg.h:61
HLT::Identifier
Definition: TrigCompositeUtils/TrigCompositeUtils/HLTIdentifier.h:20
EnhancedBiasWeightCompAlg::EBChainInfo::getTotalPrescale
double getTotalPrescale() const
Definition: EnhancedBiasWeightCompAlg.h:49
TrigCompositeContainer.h
EnhancedBiasWeightCompAlg::EBResult::weight
double weight
Definition: EnhancedBiasWeightCompAlg.h:69
EnhancedBiasWeightCompAlg::EBResult::isUnbiased
uint8_t isUnbiased
Definition: EnhancedBiasWeightCompAlg.h:70
AthReentrantAlgorithm.h
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
EnhancedBiasWeightCompAlg::EBChainInfo
Store necessary information for weight computing for Enhanced Bias chain.
Definition: EnhancedBiasWeightCompAlg.h:43
EnhancedBiasWeightCompAlg::EBChainInfo::getId
TrigCompositeUtils::DecisionID getId() const
Definition: EnhancedBiasWeightCompAlg.h:48
EnhancedBiasWeightCompAlg::m_tdt
PublicToolHandle< Trig::TrigDecisionTool > m_tdt
Definition: EnhancedBiasWeightCompAlg.h:74
SG::ReadCondHandleKey< TrigConf::HLTPrescalesSet >
EnhancedBiasWeightCompAlg::stop
virtual StatusCode stop() override
Definition: EnhancedBiasWeightCompAlg.cxx:51
EnhancedBiasWeightCompAlg::initialize
virtual StatusCode initialize() override
Definition: EnhancedBiasWeightCompAlg.cxx:14
EnhancedBiasWeightCompAlg::EBChainInfo::getIsDisabled
bool getIsDisabled() const
Definition: EnhancedBiasWeightCompAlg.h:52
HLT::Identifier::name
std::string name() const
reports human redable name if it is enabled or, empty string
Definition: HLTIdentifier.cxx:14
EnhancedBiasWeightCompAlg::EBChainInfo::getIsNoPS
bool getIsNoPS() const
Definition: EnhancedBiasWeightCompAlg.h:51
HLTMenu.h
EnhancedBiasWeightCompAlg::m_HLTPrescaleSetInputKey
SG::ReadCondHandleKey< TrigConf::HLTPrescalesSet > m_HLTPrescaleSetInputKey
Definition: EnhancedBiasWeightCompAlg.h:77
EnhancedBiasWeightCompAlg::m_finalDecisionKey
SG::ReadHandleKey< TrigCompositeUtils::DecisionContainer > m_finalDecisionKey
Definition: EnhancedBiasWeightCompAlg.h:75
EnhancedBiasWeightCompAlg::execute
virtual StatusCode execute(const EventContext &context) const override
Definition: EnhancedBiasWeightCompAlg.cxx:80
EnhancedBiasWeightCompAlg::EnhancedBiasWeightCompAlg
EnhancedBiasWeightCompAlg(const std::string &name, ISvcLocator *svcLoc)
Definition: EnhancedBiasWeightCompAlg.cxx:11