ATLAS Offline Software
Trig3VarComboHypoTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef DECISIONHANDLING_TRIG3VARCOMBOHYPOTOOL_H
6 #define DECISIONHANDLING_TRIG3VARCOMBOHYPOTOOL_H
7 
9 
12 
15 
17 
18  public:
19  enum ComboHypoVars { UNDEF=-1, MASSWISO=0};
20 
21  Trig3VarComboHypoTool(const std::string& type,
22  const std::string& name,
23  const IInterface* parent);
24 
25  virtual StatusCode initialize() override;
26  private:
27 
28  static constexpr float FLOATDEFAULT = std::numeric_limits<float>::lowest();
29 
31  struct VarInfo {
32  std::string varTag{""};
34  size_t index{0};
35  std::string monToolName{""};
36 
37  bool useMin{false};
39  bool useMax{false};
41 
42  bool legA_is_MET{false};
44  bool legB_is_MET{false};
46  bool legC_is_MET{false};
48 
50  bool validate(std::string& errmsg) const;
52  std::string rangeStr() const {
53  return (useMin ? std::to_string(varMin) + " < " : "") + varTag + (useMax ? " < " + std::to_string(varMax): "");
54  }
55  bool test(float value) const {
56  return (useMin ? value > varMin : true) && (useMax ? value < varMax : true);
57  }
58 
59  };
60 
62  using KineInfo = std::tuple<float,float,float>;
63  using Combination = std::vector<Combo::LegDecision>;
64 
67  StatusCode decide(Combo::LegDecisionsMap& passingLegs, const EventContext& /*ctx*/) const final;
68 
70  bool executeAlgStep(const Combination& combination, const VarInfo&, std::vector<float>& values) const;
72  float compute(const std::tuple<KineInfo,KineInfo,KineInfo>& kinetrio, ComboHypoVars var) const;
73 
74  bool fillLegDecisions_diffLeg(std::tuple<Combo::LegDecision,Combo::LegDecision,Combo::LegDecision>& legtrio, const Combination& combination, uint32_t legA, uint32_t legB, uint32_t legC) const;
75  bool fillTrioKinematics(std::tuple<KineInfo,KineInfo,KineInfo>& kinetrio, const Combination& combination, const VarInfo& varInfo) const;
76  bool fillKineInfo(KineInfo& kinematics, Combo::LegDecision decision, bool isMET) const;
77 
79  // flags
80  Gaudi::Property<std::vector<std::string>> m_varTag_vec {this, "Variables" , {""}, "Variables to cut on"};
81  Gaudi::Property<std::vector<bool> > m_useMin_vec {this, "UseMinVec" , {false}, "Array with the apply_min_cut setting"};
82  Gaudi::Property<std::vector<bool> > m_useMax_vec {this, "UseMaxVec" , {false}, "Array with the apply_max_cut setting"};
83 
84  //legs
85  Gaudi::Property<std::vector<uint32_t>> m_legA_vec {this, "LegAVec" , {0}, "Array with the first Leg ID"};
86  Gaudi::Property<std::vector<uint32_t>> m_legB_vec {this, "LegBVec" , {0}, "Array with the second Leg ID"};
87  Gaudi::Property<std::vector<uint32_t>> m_legC_vec {this, "LegCVec" , {0}, "Array with the third Leg ID"};
88  Gaudi::Property<std::vector< bool >> m_isLegA_MET_vec {this, "IsLegA_METVec", {false}, "Array with the first Leg MET identifier"};
89  Gaudi::Property<std::vector< bool >> m_isLegB_MET_vec {this, "IsLegB_METVec", {false}, "Array with the second Leg MET identifier"};
90  Gaudi::Property<std::vector< bool >> m_isLegC_MET_vec {this, "IsLegC_METVec", {false}, "Array with the third Leg MET identifier"};
91 
92  // cuts
93  Gaudi::Property<std::vector<float>> m_varMin_vec {this, "LowerCutVec", {FLOATDEFAULT}, "Array with the lower cut for legs pair"};
94  Gaudi::Property<std::vector<float>> m_varMax_vec {this, "UpperCutVec", {FLOATDEFAULT}, "Array with the upper cut for legs pair"};
95 
96  // monitoring
97  ToolHandleArray<GenericMonitoringTool> m_monTool_vec {this, "MonTools", {}, "Monitoring tools" };
98 
100  std::vector<VarInfo> m_varInfo_vec;
101 
102 }; // DECISIONHANDLING_TRIG3VARCOMBOHYPOTOOL_H
103 #endif
Trig3VarComboHypoTool::VarInfo::var
ComboHypoVars var
Definition: Trig3VarComboHypoTool.h:33
Trig3VarComboHypoTool::fillKineInfo
bool fillKineInfo(KineInfo &kinematics, Combo::LegDecision decision, bool isMET) const
Definition: Trig3VarComboHypoTool.cxx:469
beamspotnt.var
var
Definition: bin/beamspotnt.py:1393
Trig3VarComboHypoTool::VarInfo
Organise info per var selection in a struct.
Definition: Trig3VarComboHypoTool.h:31
Trig3VarComboHypoTool::m_monTool_vec
ToolHandleArray< GenericMonitoringTool > m_monTool_vec
Definition: Trig3VarComboHypoTool.h:97
Trig3VarComboHypoTool::m_useMax_vec
Gaudi::Property< std::vector< bool > > m_useMax_vec
Definition: Trig3VarComboHypoTool.h:82
Trig3VarComboHypoTool::m_legA_vec
Gaudi::Property< std::vector< uint32_t > > m_legA_vec
Definition: Trig3VarComboHypoTool.h:85
Trig3VarComboHypoTool::VarInfo::useMin
bool useMin
Definition: Trig3VarComboHypoTool.h:37
Trig3VarComboHypoTool::VarInfo::legA
uint32_t legA
Definition: Trig3VarComboHypoTool.h:43
Trig3VarComboHypoTool::m_isLegC_MET_vec
Gaudi::Property< std::vector< bool > > m_isLegC_MET_vec
Definition: Trig3VarComboHypoTool.h:90
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
Trig3VarComboHypoTool::compute
float compute(const std::tuple< KineInfo, KineInfo, KineInfo > &kinetrio, ComboHypoVars var) const
Computation of the variables from the specified kinematics.
Definition: Trig3VarComboHypoTool.cxx:496
index
Definition: index.py:1
Trig3VarComboHypoTool
Definition: Trig3VarComboHypoTool.h:16
Trig3VarComboHypoTool::m_varInfo_vec
std::vector< VarInfo > m_varInfo_vec
Internal variables for more efficient config lookup.
Definition: Trig3VarComboHypoTool.h:100
Trig3VarComboHypoTool::VarInfo::legC_is_MET
bool legC_is_MET
Definition: Trig3VarComboHypoTool.h:46
athena.value
value
Definition: athena.py:124
Trig3VarComboHypoTool::m_legB_vec
Gaudi::Property< std::vector< uint32_t > > m_legB_vec
Definition: Trig3VarComboHypoTool.h:86
Trig3VarComboHypoTool::decide
StatusCode decide(Combo::LegDecisionsMap &passingLegs, const EventContext &) const final
Override the ComboHypoToolBase::decide in order to optimise combination generation This is to avoid e...
Definition: Trig3VarComboHypoTool.cxx:128
ComboHypoToolBase
Base class for tools which cut on properties of multi-object or multi-leg chains. User should derive ...
Definition: ComboHypoToolBase.h:26
Combo::LegDecisionsMap
std::map< TrigCompositeUtils::DecisionID, std::vector< ElementLink< TrigCompositeUtils::DecisionContainer > > > LegDecisionsMap
LegDecisionsMap For a given chain leg key, this map holds all Decision Objects which are active on th...
Definition: IComboHypoTool.h:28
MuonR4::to_string
std::string to_string(const SectorProjector proj)
Definition: MsTrackSeeder.cxx:66
Trig3VarComboHypoTool::VarInfo::useMax
bool useMax
Definition: Trig3VarComboHypoTool.h:39
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
Trig3VarComboHypoTool::FLOATDEFAULT
static constexpr float FLOATDEFAULT
Definition: Trig3VarComboHypoTool.h:28
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:808
Trig3VarComboHypoTool::m_useMin_vec
Gaudi::Property< std::vector< bool > > m_useMin_vec
Definition: Trig3VarComboHypoTool.h:81
Trig3VarComboHypoTool::VarInfo::varMin
float varMin
Definition: Trig3VarComboHypoTool.h:38
Trig3VarComboHypoTool::VarInfo::legB
uint32_t legB
Definition: Trig3VarComboHypoTool.h:45
TrigCompositeUtils.h
GenericMonitoringTool.h
Trig3VarComboHypoTool::VarInfo::legA_is_MET
bool legA_is_MET
Definition: Trig3VarComboHypoTool.h:42
Trig3VarComboHypoTool::m_isLegA_MET_vec
Gaudi::Property< std::vector< bool > > m_isLegA_MET_vec
Definition: Trig3VarComboHypoTool.h:88
Trig3VarComboHypoTool::VarInfo::legB_is_MET
bool legB_is_MET
Definition: Trig3VarComboHypoTool.h:44
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trig3VarComboHypoTool::executeAlgStep
bool executeAlgStep(const Combination &combination, const VarInfo &, std::vector< float > &values) const
Implementation of selection on individual variables.
Definition: Trig3VarComboHypoTool.cxx:361
Trig3VarComboHypoTool::m_legC_vec
Gaudi::Property< std::vector< uint32_t > > m_legC_vec
Definition: Trig3VarComboHypoTool.h:87
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Trig3VarComboHypoTool::VarInfo::varMax
float varMax
Definition: Trig3VarComboHypoTool.h:40
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
Trig3VarComboHypoTool::fillTrioKinematics
bool fillTrioKinematics(std::tuple< KineInfo, KineInfo, KineInfo > &kinetrio, const Combination &combination, const VarInfo &varInfo) const
Definition: Trig3VarComboHypoTool.cxx:441
Trig3VarComboHypoTool::UNDEF
@ UNDEF
Definition: Trig3VarComboHypoTool.h:19
Trig3VarComboHypoTool::VarInfo::validate
bool validate(std::string &errmsg) const
Check consistency of single var config.
Definition: Trig3VarComboHypoTool.cxx:37
Trig3VarComboHypoTool::Combination
std::vector< Combo::LegDecision > Combination
Definition: Trig3VarComboHypoTool.h:63
ComboHypoToolBase.h
Trig3VarComboHypoTool::m_varTag_vec
Gaudi::Property< std::vector< std::string > > m_varTag_vec
Gaudi configuration hooks.
Definition: Trig3VarComboHypoTool.h:80
Trig3VarComboHypoTool::VarInfo::test
bool test(float value) const
Definition: Trig3VarComboHypoTool.h:55
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
Trig3VarComboHypoTool::ComboHypoVars
ComboHypoVars
Definition: Trig3VarComboHypoTool.h:19
Trig3VarComboHypoTool::fillLegDecisions_diffLeg
bool fillLegDecisions_diffLeg(std::tuple< Combo::LegDecision, Combo::LegDecision, Combo::LegDecision > &legtrio, const Combination &combination, uint32_t legA, uint32_t legB, uint32_t legC) const
Definition: Trig3VarComboHypoTool.cxx:405
Trig3VarComboHypoTool::VarInfo::rangeStr
std::string rangeStr() const
Generate range string for printing.
Definition: Trig3VarComboHypoTool.h:52
Trig3VarComboHypoTool::VarInfo::monToolName
std::string monToolName
Definition: Trig3VarComboHypoTool.h:35
Trig3VarComboHypoTool::MASSWISO
@ MASSWISO
Definition: Trig3VarComboHypoTool.h:19
HLTIdentifier.h
Trig3VarComboHypoTool::m_varMin_vec
Gaudi::Property< std::vector< float > > m_varMin_vec
Definition: Trig3VarComboHypoTool.h:93
Trig3VarComboHypoTool::Trig3VarComboHypoTool
Trig3VarComboHypoTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: Trig3VarComboHypoTool.cxx:31
Trig3VarComboHypoTool::KineInfo
std::tuple< float, float, float > KineInfo
alias for convenience, will contain eta/phi/pt info
Definition: Trig3VarComboHypoTool.h:62
Trig3VarComboHypoTool::m_isLegB_MET_vec
Gaudi::Property< std::vector< bool > > m_isLegB_MET_vec
Definition: Trig3VarComboHypoTool.h:89
Trig3VarComboHypoTool::VarInfo::varTag
std::string varTag
Definition: Trig3VarComboHypoTool.h:32
Trig3VarComboHypoTool::m_varMax_vec
Gaudi::Property< std::vector< float > > m_varMax_vec
Definition: Trig3VarComboHypoTool.h:94
Trig3VarComboHypoTool::initialize
virtual StatusCode initialize() override
Definition: Trig3VarComboHypoTool.cxx:61
Trig3VarComboHypoTool::VarInfo::legC
uint32_t legC
Definition: Trig3VarComboHypoTool.h:47
Combo::LegDecision
std::pair< TrigCompositeUtils::DecisionID, ElementLink< TrigCompositeUtils::DecisionContainer > > LegDecision
LegDecision keeps a given Decision Object associated with a specific leg when being used inside a sin...
Definition: IComboHypoTool.h:33