From 996402684fe5cd85c21987105a275838bcc1d4b5 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Fri, 30 Oct 2020 15:35:21 +0100 Subject: [PATCH 01/17] Start work on optimizing of how job groups propagate up a hypo tree. Job group propagation is correct but inefficient in the presence of identical conditions. Jet group propagation is currently handled in the following manner. Let a parent condition P have n siblings: S_1... S_n Let J_1... J_2 be the jet groups that pass each of the n siblings. JetGroupProduct finds all the distinct job groups formed by selecting one jet group from is taken fron each of the J_i. Only distinct jet groups are retained. Distinct job groups are those obtained by flattening the JobGroup calculated by the combination process, and discounting differences due to the order of the jets. When the siblings are identical Conditions, the same jets pass each of the conditions. The combination process can be optimized. The optimazation exploits the repetion that is _always_ present for identical Conditions. As an example, let J_1 = J_2 = J_3 = {1,2,3}. Then the combinations are - excluding repeated jets - {1,2,3}, {1,3,2}, {2, 1, 3}, {2, 3, 1}, {3, 1, 2}, {3, 2, 1}. After repetition removal, we are left with {1,2,3}. Further we only need to look at jets passing C_1. This optimatiztion replaces n repeated Conditions of capacity = 1 by a single Condition of capacity n. After initially allocating jets to Conditions, a further test needs now to be made: were there enough distinct jets to satisfy the n conditions - i.e. were there at least n jets fulfilling the condition. To this end, the IConditionMT interface is extended by ICheckedCapacityCondition. This PABC provides a checking function: bool capacitySatisfied(const HypoJetVector&,..) which will be passed the selected jets as an argument. Currently, the sole implementation is CheckedCapacityCondition. This commit uses this CheckedCapacityCondition. However the hypo trees remain as before, and no checks are made. It is therefor expected that they will be no visible effects at this stage. --- .../src/CapacityCheckedCondition.h | 60 +++++++++++++++++++ .../src/CapacityCheckedConditionsDefs.h | 23 +++++++ .../TrigHLTJetHypo/src/FastReducer.cxx | 6 +- .../TrigHLTJetHypo/src/FastReducer.h | 7 ++- .../src/FastReductionMatcher.cxx | 2 +- .../TrigHLTJetHypo/src/FastReductionMatcher.h | 11 ++-- .../src/ICapacityCheckedCondition.h | 37 ++++++++++++ .../TrigJetHypoToolConfig_fastreduction.cxx | 27 ++++++--- .../src/TrigJetHypoToolConfig_fastreduction.h | 6 +- .../src/groupsMatcherFactoryMT.cxx | 2 +- .../src/groupsMatcherFactoryMT.h | 3 +- 11 files changed, 161 insertions(+), 23 deletions(-) create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedConditionsDefs.h create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h new file mode 100644 index 000000000000..05ae970c2dc8 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h @@ -0,0 +1,60 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGHLTJETHYPO_CAPACITYCHECKEDCONDITIONMT_H +#define TRIGHLTJETHYPO_CAPACITYCHECKEDCONDITIONMT_H + +/******************************************************************** + * + * NAME: CapacityCheckedConditionMT.h + * PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo + * + * AUTHOR: P. Sherwood + * + * an implementation of the ICapacityCheckedConditionMT PABC. + * + *********************************************************************/ + +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/HypoJetDefs.h" +#include "ICapacityCheckedCondition.h" + +#include <memory> +#include <string> + + +class ITrigJetHypoInfoCollector; + +class CapacityCheckedCondition: public ICapacityCheckedCondition { + public: + CapacityCheckedCondition(std::unique_ptr<IConditionMT> cp): + m_condition{std::move(cp)} { + } + + virtual ~CapacityCheckedCondition(){ + } + + virtual bool + capacitySatisfied(const HypoJetVector& v, + const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override { + return m_condition -> capacity() <= v.size(); + } + + virtual bool isSatisfied(const HypoJetVector& v, + const std::unique_ptr<ITrigJetHypoInfoCollector>& c) const override { + return m_condition -> isSatisfied(v, c); + } + + virtual unsigned int capacity() const override { + return m_condition -> capacity(); + } + + virtual std::string toString() const noexcept override { + return m_condition -> toString(); + } + + private: + std::unique_ptr<IConditionMT> m_condition; +}; + +#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedConditionsDefs.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedConditionsDefs.h new file mode 100644 index 000000000000..f26ccc1bc85c --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedConditionsDefs.h @@ -0,0 +1,23 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGHLTJETHYPO_CAPCACITYCHECKEDCONDITIONSDEFSMT_H +#define TRIGHLTJETHYPO_CAPCACITYCHECKEDCONDITIONSDEFSMT_H +/******************************************************************** + * + * NAME: ConditionsDefs.h + * PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo + * + * AUTHOR: P. Sherwood + *********************************************************************/ + +#include <string> +#include <memory> +#include "./ICapacityCheckedCondition.h" + +using ConditionPtr = std::unique_ptr<ICapacityCheckedCondition>; +using ConditionPtrs = std::vector<ConditionPtr>; +using ConditionPtrsIter = ConditionPtrs::iterator; + +#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx index 49c56a2e1377..d06fc94dbcbc 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx @@ -38,7 +38,7 @@ struct IndexVecComp{ FastReducer::FastReducer(const HypoJetGroupCIter& groups_b, const HypoJetGroupCIter& groups_e, - const ConditionsMT& conditions, + const ConditionPtrs& conditions, const Tree& tree, const std::vector<std::vector<int>>& sharedConditions, xAODJetCollector& jetCollector, @@ -328,7 +328,7 @@ bool FastReducer::propagate_(std::size_t child, auto jg_product = JetGroupProduct(siblings, m_satisfiedBy); - // obtain the next product of hob groups passing siblings + // obtain the next product of jet groups passing siblings auto next = jg_product.next(collector); // step through the jet groups found by combining ghe child groups @@ -351,7 +351,7 @@ bool FastReducer::propagate_(std::size_t child, m_jg2elemjgs[i].end()); } - // if any of the elemetal jet group indices are repeated, + // if any of the elemental jet group indices are repeated, // stop processing of the new jet group. (do not allow sharing for // among leaf nodes. Sharing is handled by processing > 1 leaf groups // each of which does not share. diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h index 5aba889c93be..2b331ff63f45 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h @@ -6,7 +6,8 @@ #define TRIGHLTJETHYPO_FASTREDUCER_H -#include "./ConditionsDefsMT.h" +// #include "./ConditionsDefsMT.h" +#include "./CapacityCheckedConditionsDefs.h" #include "./Tree.h" #include "./JetGroupProduct.h" #include "./JetGroupIndAllocator.h" @@ -30,7 +31,7 @@ class FastReducer { FastReducer(const HypoJetGroupCIter& groups_b, const HypoJetGroupCIter& groups_e, - const ConditionsMT& conditionObjects, + const ConditionPtrs& conditionObjects, const Tree& conditionsTree, const std::vector<std::vector<int>>& sharedConditions, xAODJetCollector& jetCollector, @@ -47,7 +48,7 @@ class FastReducer { private: - const ConditionsMT& m_conditions; + const ConditionPtrs& m_conditions; /** tree structure for Conditions objects. The conditions tree gives relations among conditions (eg parent-child diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.cxx index 7f78b0ca100e..4dfffac4ca42 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.cxx @@ -12,7 +12,7 @@ -FastReductionMatcher::FastReductionMatcher(ConditionsMT conditions, +FastReductionMatcher::FastReductionMatcher(ConditionPtrs conditions, const Tree& tree, const std::vector<std::vector<int>>& sharedNodes): m_conditions(std::move(conditions)), diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.h index b7fe4d2eb747..e931455ca555 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.h @@ -7,7 +7,8 @@ #include "./IGroupsMatcherMT.h" -#include "./ConditionsDefsMT.h" +//#include "./ConditionsDefsMT.h" +#include "./CapacityCheckedConditionsDefs.h" #include "./Tree.h" using TreeVec = std::vector<std::size_t>; @@ -16,9 +17,9 @@ class ITrigJetHypoInfoCollector; class FastReductionMatcher: public IGroupsMatcherMT { public: - FastReductionMatcher(ConditionsMT, - const Tree&, - const std::vector<std::vector<int>>&); + FastReductionMatcher(ConditionPtrs, + const Tree&, + const std::vector<std::vector<int>>&); /** determine whether a set of jets satisfies all hypo conditions. @@ -42,7 +43,7 @@ class FastReductionMatcher: public IGroupsMatcherMT { private: - ConditionsMT m_conditions; + ConditionPtrs m_conditions; /** tree structure for Conditions objects. The conditions tree gives relations among conditions (eg parent-child diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h new file mode 100644 index 000000000000..93e2d155a217 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h @@ -0,0 +1,37 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGHLTJETHYPO_ICAPACITYCHECKEDCONDITIONMT_H +#define TRIGHLTJETHYPO_ICAPACITYCHECKEDCONDITIONMT_H + +/******************************************************************** + * + * NAME: ICapacityCheckedConditionMT.h + * PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo + * + * AUTHOR: P. Sherwood + * + * extend IConditionMT by adding a method that checks whether the + * capacity of the Condition has been attained. + * + *********************************************************************/ + +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/HypoJetDefs.h" +#include "IConditionMT.h" + +#include <string> + + +class ITrigJetHypoInfoCollector; + +class ICapacityCheckedCondition: public IConditionMT { + public: + virtual ~ICapacityCheckedCondition(){} + + virtual bool capacitySatisfied(const HypoJetVector&, + const std::unique_ptr<ITrigJetHypoInfoCollector>&) const = 0; + +}; + +#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.cxx index 051697a152ed..4c4e6691b6d2 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.cxx @@ -15,6 +15,7 @@ #include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerFactory.h" #include "TrigHLTJetHypo/TrigHLTJetHypoUtils/TrigHLTJetHypoHelper2.h" #include "./groupsMatcherFactoryMT.h" +#include "./CapacityCheckedCondition.h" #include "TrigCompositeUtils/TrigCompositeUtils.h" @@ -126,20 +127,32 @@ StatusCode TrigJetHypoToolConfig_fastreduction::initialize() { -std::optional<ConditionsMT> -TrigJetHypoToolConfig_fastreduction::getConditions() const { +std::optional<ConditionPtrs> +TrigJetHypoToolConfig_fastreduction::getCapacityCheckedConditions() const { - ConditionsMT conditions; + ConditionPtrs conditions; // collect the Conditions objects from the various sources // return an invalid optional if any src signals a problem + for(const auto& cm : m_conditionMakers){ - conditions.push_back(cm->getCondition()); + conditions.push_back(std::make_unique<CapacityCheckedCondition>(std::move(cm->getCondition()))); } - - return std::make_optional<ConditionsMT>(std::move(conditions)); + + return std::make_optional<ConditionPtrs>(std::move(conditions)); } +std::optional<ConditionsMT> +TrigJetHypoToolConfig_fastreduction::getConditions() const { + /* obtain an unchecked set of conditions */ + + ConditionsMT conditions; + for(const auto& cm : m_conditionMakers){ + conditions.push_back(std::move(cm->getCondition())); + } + + return std::make_optional<ConditionsMT>(std::move(conditions)); +} // following function not used for treeless hypos std::size_t @@ -156,7 +169,7 @@ TrigJetHypoToolConfig_fastreduction::getJetGrouper() const { std::unique_ptr<IGroupsMatcherMT> TrigJetHypoToolConfig_fastreduction::getMatcher () const { - auto opt_conds = getConditions(); + auto opt_conds = getCapacityCheckedConditions(); if(!opt_conds.has_value()){ return std::unique_ptr<IGroupsMatcherMT>(nullptr); diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h index 5625120313e9..2e70bf1b8167 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h @@ -14,7 +14,7 @@ #include "ITrigJetHypoToolConfig.h" -#include "./ConditionsDefsMT.h" +#include "./CapacityCheckedConditionsDefs.h" #include "TrigCompositeUtils/HLTIdentifier.h" #include "AthenaBaseComps/AthAlgTool.h" #include "TrigCompositeUtils/TrigCompositeUtils.h" @@ -57,6 +57,8 @@ public extends<AthAlgTool, ITrigJetHypoToolConfig> { this, "sharedVector", {}, "nodeID groups for nodes that see input jets"}; std::vector<std::vector<int>> m_sharedNodes{}; - + + std::optional<ConditionPtrs> getCapacityCheckedConditions() const; + }; #endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.cxx index 100bfcc525f3..a580b25257e5 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.cxx @@ -47,7 +47,7 @@ groupsMatcherFactoryMT_Partitions (ConditionsMT&& conditions){ std::unique_ptr<IGroupsMatcherMT> -groupsMatcherFactoryMT_FastReduction (ConditionsMT&& conditions, +groupsMatcherFactoryMT_FastReduction (ConditionPtrs&& conditions, const std::vector<std::size_t>& treeVec, const std::vector<std::vector<int>>& sharedNodes){ diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.h index 5b6d1f1f25cc..1865de3d94bf 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/groupsMatcherFactoryMT.h @@ -7,6 +7,7 @@ #include "./IGroupsMatcherMT.h" #include "./ConditionsDefsMT.h" +#include "./CapacityCheckedConditionsDefs.h" #include <memory> std::unique_ptr<IGroupsMatcherMT> @@ -20,7 +21,7 @@ groupsMatcherFactoryMT_Partitions(ConditionsMT&&); std::unique_ptr<IGroupsMatcherMT> -groupsMatcherFactoryMT_FastReduction(ConditionsMT&&, +groupsMatcherFactoryMT_FastReduction(ConditionPtrs&&, const std::vector<std::size_t>& treeVec, const std::vector<std::vector<int>>&); #endif -- GitLab From f63d87ad96961e01629cf43a721c203e0f26b8f8 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Mon, 2 Nov 2020 10:54:26 +0100 Subject: [PATCH 02/17] Add check to ensure coapacity of a condition is reached by the satisfying jet groups. This check is used in particular to ensure that there are suficient jets to satisfy single Conditions wich represent multiple identical conditions. such single Conditions are part of an optimisation to reduce the computation time for identical Conditions. src/ICapacityCheckedCondition.h change the capacitySatisfied method to take a muliplicity (std::size_T) instead of a JetGroup. src/CapacityCheckedCondition.h adjust for interface change src/FastReducer.h,cxx add capacityCheck to findInitialJobGroups() --- .../src/CapacityCheckedCondition.h | 7 +++--- .../TrigHLTJetHypo/src/FastReducer.cxx | 25 +++++++++++++++++++ .../TrigHLTJetHypo/src/FastReducer.h | 2 ++ .../src/ICapacityCheckedCondition.h | 5 ++-- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h index 05ae970c2dc8..82974e9107fe 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h @@ -35,9 +35,10 @@ class CapacityCheckedCondition: public ICapacityCheckedCondition { } virtual bool - capacitySatisfied(const HypoJetVector& v, - const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override { - return m_condition -> capacity() <= v.size(); + capacitySatisfied(std::size_t jgMultiplicity, + const Collector&) const override { + + return m_condition -> capacity() <= jgMultiplicity; } virtual bool isSatisfied(const HypoJetVector& v, diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx index d06fc94dbcbc..6826dbb9a2e9 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx @@ -180,12 +180,21 @@ bool FastReducer::findInitialJetGroups(const std::vector<int>& leaves, } // check all leaf conditions are satisfied + /* for (const auto& i : leaves) { auto& satisfiedBy = m_satisfiedBy.at(i); if (satisfiedBy.empty()) { return false; } } + */ + + // check all leaf conditions are satisfied + for (const auto& i : leaves) { + if (!capacitySatisfied(i, collector)) { + return false; + } + } /* For the special but important case where all leaf nodes have @@ -502,3 +511,19 @@ void FastReducer::recordJetGroup(std::size_t ind, bool FastReducer::pass() const { return m_pass; } + +bool FastReducer::capacitySatisfied(std::size_t ind, + const Collector& collector) const { + // Check that the number of satisfying job groups is sufficient to + // satisfy the capacity of the Condition. Uses include handling + // of Conditions which represent multiple identical conditions. + + auto jgMult = m_satisfiedBy.at(ind).size(); + auto capSat = m_conditions.at(ind) -> capacitySatisfied(jgMult, collector); + if (!capSat and collector) { + collector -> collect("FastReduce", "Condition " + std::to_string(ind) + + " unsatisfied capacity, aborting"); + } + + return capSat; +} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h index 2b331ff63f45..59c0a4d44daa 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h @@ -115,6 +115,8 @@ class FastReducer { void collectLeafJets(xAODJetCollector& jetCollector, const Collector& collector) const; + bool capacitySatisfied(std::size_t ind, + const Collector& collector) const; }; #endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h index 93e2d155a217..033ce81570cf 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h @@ -21,6 +21,7 @@ #include "IConditionMT.h" #include <string> +typedef std::unique_ptr<ITrigJetHypoInfoCollector> Collector; class ITrigJetHypoInfoCollector; @@ -29,8 +30,8 @@ class ICapacityCheckedCondition: public IConditionMT { public: virtual ~ICapacityCheckedCondition(){} - virtual bool capacitySatisfied(const HypoJetVector&, - const std::unique_ptr<ITrigJetHypoInfoCollector>&) const = 0; + virtual bool capacitySatisfied(std::size_t jgMultiplicity, + const Collector&) const = 0; }; -- GitLab From 4e40f58ec4bc08ad482b22c4acec99c7aa8d0604 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Tue, 3 Nov 2020 14:32:36 +0100 Subject: [PATCH 03/17] minor syntax changes + dead code removal --- .../python/TrigJetHypoToolConfig.py | 9 ++++---- .../python/testChainDictMaker.py | 21 ++++++++++++++++++- .../src/CapacityCheckedCondition.h | 8 +++---- .../TrigHLTJetHypo/src/FastReducer.cxx | 9 -------- .../TrigHLTJetHypo/src/FastReductionMatcher.h | 1 - 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py index e5a870341f8a..62e5a185c5e0 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py @@ -183,17 +183,18 @@ def _tests(): chainNameDecoder = DictFromChainName.DictFromChainName() chain_names = ( + '2j80_2j60_L1J20', 'j80_0eta240_2j60_320eta490_L1J20', 'j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20', ) - for cn in chain_names: + for cn in chain_names[:1]: chain_dict = chainNameDecoder.getChainDict(cn) - trigJetHypoToolFromDict(chain_dict) + print ('\nchain name: ', cn) + print (trigJetHypoToolFromDict(chain_dict(cn))) if __name__ == '__main__': unittest.main() - # run _tests outide untit tests so as to see stdout - # _tests() + # other local tests have been moved to testChainDictMaker.py diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py index b60f1b83b9fe..42d7d53e798c 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py @@ -10,7 +10,9 @@ from TriggerMenuMT.HLTMenuConfig.Menu.Physics_pp_run3_v1 import ( from TriggerMenuMT.HLTMenuConfig.Menu.ChainDefInMenu import ChainProp from TriggerMenuMT.HLTMenuConfig.Menu.DictFromChainName import dictFromChainName - +from chainDict2jetLabel import chainDict2jetLabel +from TrigJetHypoToolConfig import trigJetHypoToolFromDict + def testChainDictMaker(): chain_props = [ @@ -20,6 +22,10 @@ def testChainDictMaker(): ChainProp(name='HLT_j80_j60_L1J15', l1SeedThresholds=['FSNOSEED']*2, groups=MultiJetGroup), + ChainProp(name='HLT_2j80_3j60_L1J15', + l1SeedThresholds=['FSNOSEED']*2, groups=MultiJetGroup), + + ChainProp(name='HLT_j0_HTSEP1000htSEP100etSEP0eta320_L1J15', l1SeedThresholds=['FSNOSEED'], groups=MultiJetGroup), @@ -45,3 +51,16 @@ if __name__ == '__main__': for d in dicts: print('') print (d) + + print ('\n chain_labels:\n') + + for d in dicts: + print (d[0]) + print (chainDict2jetLabel(d[1])) + print () + + print ('\nMaking TrigJetHypoTool for each dictiomary\n') + for d in dicts: + print (d[0]) + print (trigJetHypoToolFromDict(d[1])) + print () diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h index 82974e9107fe..1455d594aca7 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h @@ -38,20 +38,20 @@ class CapacityCheckedCondition: public ICapacityCheckedCondition { capacitySatisfied(std::size_t jgMultiplicity, const Collector&) const override { - return m_condition -> capacity() <= jgMultiplicity; + return m_condition->capacity() <= jgMultiplicity; } virtual bool isSatisfied(const HypoJetVector& v, const std::unique_ptr<ITrigJetHypoInfoCollector>& c) const override { - return m_condition -> isSatisfied(v, c); + return m_condition->isSatisfied(v, c); } virtual unsigned int capacity() const override { - return m_condition -> capacity(); + return m_condition->capacity(); } virtual std::string toString() const noexcept override { - return m_condition -> toString(); + return m_condition->toString(); } private: diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx index 6826dbb9a2e9..8ab15e1744ae 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx @@ -179,15 +179,6 @@ bool FastReducer::findInitialJetGroups(const std::vector<int>& leaves, } } - // check all leaf conditions are satisfied - /* - for (const auto& i : leaves) { - auto& satisfiedBy = m_satisfiedBy.at(i); - if (satisfiedBy.empty()) { - return false; - } - } - */ // check all leaf conditions are satisfied for (const auto& i : leaves) { diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.h index e931455ca555..62210f404a39 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReductionMatcher.h @@ -7,7 +7,6 @@ #include "./IGroupsMatcherMT.h" -//#include "./ConditionsDefsMT.h" #include "./CapacityCheckedConditionsDefs.h" #include "./Tree.h" -- GitLab From 406a827db02ad9a39949cdf8e9064fcff5652cae Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Wed, 4 Nov 2020 09:52:13 +0100 Subject: [PATCH 04/17] adding explanatory comments to TrigJetHypoToolConfig.py --- .../TrigHLTJetHypo/python/treeVisitors.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py index cc704db08835..fbdf5b60bf49 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py @@ -181,7 +181,6 @@ class ConditionsDictMaker(object): def makeDict(self, params): - # conditions example: ['10et,0eta320', '20et'] conditions = self.get_conditions(params) @@ -256,8 +255,21 @@ class ConditionsDictMaker(object): result.append(cdict) + + # Example: input condition string: + # + # 260et,320eta490 + # + # result: + # + # [ + # defaultdict(<class 'dict'>, {'et': {'min': '260000.0', 'max': 'inf'}, + # 'eta': {'min': '3.2', 'max': '4.9'}}) + # ] + msgs = ['ConditionsDict OK'] error = False + print ('ConditionsDictMaker::makeDict(), result', result) return result, error, msgs -- GitLab From e6076074831a7333fe80da25497369d08aa3c82a Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Wed, 4 Nov 2020 10:04:03 +0100 Subject: [PATCH 05/17] responding to reviewers comments --- .../python/TrigJetHypoToolConfig.py | 19 +------------------ .../TrigHLTJetHypo/src/FastReducer.cxx | 6 +++--- .../TrigHLTJetHypo/src/FastReducer.h | 2 -- 3 files changed, 4 insertions(+), 23 deletions(-) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py index 62e5a185c5e0..444e216e55dd 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py @@ -176,25 +176,8 @@ class TestDebugFlagIsFalse(unittest.TestCase): self.assertFalse(tool.visit_debug) -def _tests(): - from TriggerMenuMT.HLTMenuConfig.Menu import DictFromChainName - - chainNameDecoder = DictFromChainName.DictFromChainName() - - chain_names = ( - '2j80_2j60_L1J20', - 'j80_0eta240_2j60_320eta490_L1J20', - 'j80_0eta240_2j60_320eta490_j0_dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass_L1J20', - ) - for cn in chain_names[:1]: - chain_dict = chainNameDecoder.getChainDict(cn) - - print ('\nchain name: ', cn) - print (trigJetHypoToolFromDict(chain_dict(cn))) - - -if __name__ == '__main__': +If __name__ == '__main__': unittest.main() # other local tests have been moved to testChainDictMaker.py diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx index 8ab15e1744ae..f4f36af1ae37 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx @@ -497,7 +497,7 @@ void FastReducer::recordJetGroup(std::size_t ind, << " et " << ip->et(); } ss1 << '\n'; - collector -> collect(ss0.str(), ss1.str()); + collector->collect(ss0.str(), ss1.str()); } bool FastReducer::pass() const { return m_pass; } @@ -510,9 +510,9 @@ bool FastReducer::capacitySatisfied(std::size_t ind, // of Conditions which represent multiple identical conditions. auto jgMult = m_satisfiedBy.at(ind).size(); - auto capSat = m_conditions.at(ind) -> capacitySatisfied(jgMult, collector); + auto capSat = m_conditions.at(ind)->capacitySatisfied(jgMult, collector); if (!capSat and collector) { - collector -> collect("FastReduce", "Condition " + std::to_string(ind) + collector->collect("FastReduce", "Condition " + std::to_string(ind) + " unsatisfied capacity, aborting"); } diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h index 59c0a4d44daa..e92217ae5e43 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h @@ -5,8 +5,6 @@ #ifndef TRIGHLTJETHYPO_FASTREDUCER_H #define TRIGHLTJETHYPO_FASTREDUCER_H - -// #include "./ConditionsDefsMT.h" #include "./CapacityCheckedConditionsDefs.h" #include "./Tree.h" #include "./JetGroupProduct.h" -- GitLab From b0e643ec23d31b6f244d4aa716554f4938316d8e Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Wed, 4 Nov 2020 12:31:10 +0100 Subject: [PATCH 06/17] typo fix --- .../TrigHLTJetHypo/python/TrigJetHypoToolConfig.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py index 444e216e55dd..a1e5c78989eb 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py @@ -177,7 +177,7 @@ class TestDebugFlagIsFalse(unittest.TestCase): -If __name__ == '__main__': +if __name__ == '__main__': unittest.main() # other local tests have been moved to testChainDictMaker.py -- GitLab From b22ff12818f669c2207307cc824cdb0c8c30cc60 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Wed, 11 Nov 2020 18:58:50 +0100 Subject: [PATCH 07/17] add doc directory --- .../TrigHLTJetHypo/doc/C++/._ConfigToCode.tex | Bin 0 -> 423 bytes .../TrigHLTJetHypo/doc/C++/ConfigToCode.tex | 456 ++++++++++++++++++ .../doc/C++/Pictures/._AlgTools.tex | Bin 0 -> 2372 bytes .../doc/C++/Pictures/._hypopass.tex | Bin 0 -> 360 bytes .../doc/C++/Pictures/AlgTools.tex | 63 +++ .../doc/C++/Pictures/hypopass.tex | 40 ++ ..._ConditionsToolSetterFastreduction_seq.tex | Bin 0 -> 2372 bytes .../doc/Python/Pictures/._Config_seq.tex | Bin 0 -> 2372 bytes .../ConditionsToolSetterFastreduction_seq.tex | 97 ++++ .../doc/Python/Pictures/Config_seq.tex | 92 ++++ 10 files changed, 748 insertions(+) create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/._ConfigToCode.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/ConfigToCode.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._AlgTools.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._hypopass.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/AlgTools.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/hypopass.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._ConditionsToolSetterFastreduction_seq.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._Config_seq.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/ConditionsToolSetterFastreduction_seq.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/._ConfigToCode.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/._ConfigToCode.tex new file mode 100644 index 0000000000000000000000000000000000000000..2624b674dba7af7d4320ac83457844d009f1da1a GIT binary patch literal 423 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFff(^X&|3*Iglm-IEI7-L6m`XFp2=# zlhL#>L&XIc7^IT(bM+Dn3UX5QauSP6N{drdQW8s2l>>sIW~cyZEd~Y^gu2|+l0=}I zM6390Ul-4k)ZEbG)S{5Y^kR?>Mn51C$-rQaMLkftPhwJPPJCW&esOkcVOf@GPH~}$ zc}{j|Not8%R%U)7Q1i!t#ql7MT0Xu5x|4w+sURn_xWvF<0SAZ&w1E*qGr(vlmx1%s ziI&6q(SmQvd&=bg|9*V+&Dm*Dp_k5BN!?~Y_H&8K6yLj=t8ag?&`({j|2T2ds+9M; unKo4Y=Usa%zHm~SW#DbClRw0*ew(GAy;*wsWY~kNtR20}6t`@xF8}~yX>J|> literal 0 HcmV?d00001 diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/ConfigToCode.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/ConfigToCode.tex new file mode 100644 index 000000000000..6f589dbf6fd7 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/ConfigToCode.tex @@ -0,0 +1,456 @@ +\documentclass{beamer} + +% \usepackage{beamerthemesplit} // Activate for custom appearance + +\title{The Trigger Jet Hypo - Concept and C++ Implmentation} +\author{P Sherwood} +\date{05 November 2020} + +\addtobeamertemplate{navigation symbols}{}{% + \usebeamerfont{footline}% + \usebeamercolor[fg]{footline}% + \hspace{1em}% + \insertframenumber/\inserttotalframenumber +} +\usepackage{xcolor} +\usepackage{caption} +\usepackage{subcaption} + + +\begin{document} + +\frame{\titlepage} +% \begin{frame} +% \frametitle{Outline} +% \begin{quotation} +% My mind is clearer now - at last all too well I can see where we all soon will be +% \end{quotation} +% \tableofcontents[pausesections] +%\end{frame} + + + +%\subsection {Tree Structures} +%\subsection{HypoTrees} +%\subsection{ConditionTrees} +%\subsection{Dynamic Programming} + +%\part{The Jet Hypo as a Tree} +%\frame{\partpage +% +%%{ +% \frametitle{Part 1: Fast Reduction Generalities} +% } +%} + +\frame +{ + \frametitle{Past and Present} + +\begin{block}{History} +\begin{description} +\item[Run 1] Write an Athena Component (then Algorithm, now AlgTool) for each new idea. +\item[Run 2] Bipartite Graph of jets and Conditions. Solve with Ford-Fulkerson Alfgorithm +\item[Long Shutdown] AlgTool trees. +\item[Current] FastReduction +\end{description} +\end{block} + +\begin{block}{Goal} +We wish to provide a framework that allows all hypos (current and as yet unthought of) to +be handled in a common way. +\end{block} + } + +\frame{ +\frametitle{FastReduction - Building blocks.} + +\begin{block}{Elements} +\begin{description} +\item[Jet Group] a vector of (not necessarily xAOD) jets objects. +\item [Condition] an object that tests whether a jet group passes some conditions +\end{description} +\end{block} + +\begin{block}{Trees - A Hierarchical Structure of Conditions} +\begin{itemize} +\item nodes represent Condition objects +\item child nodes represent "earlier" conditions. +\item There is a single root node. +\end{itemize} +\end{block} + +} + +\frame{ +\frametitle{Very Simple Examples} + +\begin{minipage}[T]{0.68\linewidth} +\begin{block}{Single Condition Chain (eg j60)} +Any jet with $E_t > 60$ is passed to . +\end{block} + +\end{minipage}%\hfill +\begin{minipage}[T]{0.28\linewidth} + +%\includegraphics[trim = 10mm 0mm 10mm 10mm, clip,width=.9\textwidth, scale = 0.1]{Pictures/conditionsTree_1} +\includegraphics[trim = 10mm 0mm 10mm 10mm, clip, scale = 0.5]{Pictures/conditionsTree_1} +\end{minipage} + +\begin{minipage}[T]{0.68\linewidth} +\begin{block}{Two Condition Chain (eg j80\_j60)} + +\begin{description} +\item[ $E_t(j1)= 70, E_t(j2) = 70$] Fails +\item[ $E_t(j1)= 90, E_t(j2) = 70$] (j1, j2) passed to root +\item[ $E_t(j1)= 90, E_t(j2) = 90$] (j1, j2), (j2, j1) passed to root +\end{description} + + +\end{block} + +\end{minipage}%\hfill +\begin{minipage}[T]{0.28\linewidth} + +\includegraphics[trim = 10mm 0mm 10mm 10mm, clip,scale=0.5]{Pictures/conditionsTree_2} +\end{minipage} +} + +\frame +{ + \frametitle{What are the actions of the jet hypo?} + \begin{block}{} + \begin{enumerate} +\item read in the reconstructed jet container +\item split the container of $n$ jets into $n$ containers of 1 jet +\item present the single jets to conditions at the bottom of the tree +\item event fails if there is an unsatisfied Condition. +\item combine the jets passing these single jet cuts into {\it new} jet groups. Groups with duplicate jets rejected. +\item pass the combined job groups to the parent +\item repeat the procedure. If the root node is reached by some job~group, the hypo passes, otherwise it fails. +\item report any jet that participates in any jet group that reaches the root node to the Trigger framework (for BJets..) +\end{enumerate} +\end{block} +} + + +\frame +{ +\frametitle{Determining node processing order} + +\begin{minipage}[T]{0.58\linewidth} +\begin{block}{Need for node scheduling} +All sibling nodes must be processed before their parents. Siblings are equidistant from root, but varying distance from +their descendant leaf nodes. Use a \alert{priority queue} with highest priority given to the deepest nodes +\end{block} + +\begin{block}{What is a priority queue?} +Queue - like but highest priority out first. +STL provides an implementation. +\end{block} +\begin{block}{Initialize with leaf nodes} +Nodes 8-14 processed before 3. +\end{block} + +\end{minipage}%\hfill +\begin{minipage}[T]{0.38\linewidth} + +\includegraphics[trim = 10mm 0mm 10mm 10mm, clip,width=.9\textwidth]{Pictures/conditionsTree} +\end{minipage} +% +%\begin{block}{What is a priority queue?} +%\end{block} +% +%\begin{block}{Why use a priority queue?} +%\end{block} +} + + + \frame +{ +\frametitle{Data Structures and Growth} +\begin{block}{Indexed Objects} +The algorithm keeps track of indices assigned to Condtion objects and jet groups. Propagation deals with indices. Satisfaction +is tested using Jet Group and Condition objects +\end{block} + +\begin{block}{Data Structures} +\begin{itemize} +\item index to Condition look-up table. Fixed +\item index to Jet group look-up table. \alert{Grows} +\item parent Condition Vector. Used to determine Condition parent and siblings +\item Condition to satisfying job group indices (index $\rightarrow$ [indices])/ \alert{Grows} +\item jobGroup index to elemental (incoming) jet groups. Convenience structure to quickly obtain jets for a combined jet group. \alert{Grows} +\end{itemize} + +\end{block} + +} + + +\begin{frame}[fragile=singleslide] +\frametitle{Fast Reduction - DAta Structures} + + +\begin{minipage}[t]{0.48\linewidth} +\begin{block}{Tree: node representaton} +\includegraphics[trim = 10mm 0mm 10mm 10mm, clip, scale=0.15]{Pictures/conditionsTree} +\end{block} +%\begin{block}{Chain Label} +% +%\begin{tiny} +%partgen([] partgen([] simple([(neta, 84et)(peta, 84et)]))\\ +% combgen([]qjet([(170qjmass190)])\\ +% partgen([]\\ +% combgen([] \\ +% dijet([(70djmass90)])\\ +% simple([(10et)(11et)]))\\ +% combgen([] \\ +% dijet([(71djmass91)])\\ +% simple([(12et)(13et)])))))\\ +% +%\end{tiny} +%\end{block} +\end{minipage}\hfill +\begin{minipage}[t]{0.48\linewidth} +\begin{block}{Tree: Conditions Parent Table representation} +\begin{center} +\begin{tiny} +[0 0 1 \alert{2} \alert{2} 0 5 6 7 \alert{8} \alert{8} 6 11 \alert{12} \alert{12} ] + +Leaf nodes in \alert{red} + +\end{tiny} +\end{center} +\end{block} +\end{minipage} +\begin{minipage}[t]{0.38\linewidth} +\begin{block}{satisfiedBy} +\begin{center} +\begin{tiny} +\begin{tabular}{r|l} +Cond indx& jet groups indices\\ \hline +0: & [] \\ +1: & [] \\ +2: & [] \\ +3: & [] \\ +4: & [] \\ +5: & [] \\ +6: & [] \\ +7: & [] \\ +8: & [] \\ +9: & [] \\ +10:& [] \\ +11:& [] \\ +12:& [] \\ +13:& [] \\ +14:& [] \\ +\end{tabular} +\end{tiny} +\end{center} +\end{block} +\end{minipage}\hfill +\begin{minipage}[t]{0.58\linewidth} +\begin{block}{Conditions Table} +\begin{tiny} +\begin{tabular}{ll} + 0: & AcceptAllConditionMT\\ + 1: & AcceptAllConditionMT\\ + 2: & AcceptAllConditionMT\\ + 3: & EtConditionMT 84000 \\ + & EtaConditionSignedMT etaMin -3.2 etaMax 0 \\ + 4: & EtConditionMT Et threshold: 84000 \\ + & EtaConditionSignedMT etaMin 0 etaMax 3.2 \\ + 5: & QjetMassConditionMT: mass min: 170000 mass max: 190000 \\ + 6: & AcceptAllConditionMT\\ + 7: & DijetMassConditionMT mass min: 70000 mass max: 90000 \\ + 8: & AcceptAllConditionMT\\ + 9: & EtConditionMT Et threshold: 10000 \\ + 10: & EtConditionMT Et threshold: 11000 \\ + 11: & DijetMassConditionMT mass min: 71000 mass max: 91000\\ + 12: & AcceptAllConditionMT\\ + 13: & EtConditionMT (0x646cea0) Et threshold: 12000 \\ + 14: & EtConditionMT (0x646ceb0) Et threshold: 13000 \\ +\end{tabular} +\end{tiny} +\end{block} +\end{minipage} +\end{frame} + + +\begin{frame}[fragile=singleslide] +\frametitle{SatisfiedBy table at the end of processing} + + +%\begin{minipage}[t]{0.48\linewidth} +%\begin{block}{Chain Label} +% +%\begin{tiny} +%partgen([] partgen([] simple([(neta, 84et)(peta, 84et)]))\\ +% combgen([]qjet([(170qjmass190)])\\ +% partgen([]\\ +% combgen([] \\ +% dijet([(70djmass90)])\\ +% simple([(10et)(11et)]))\\ +% combgen([] \\ +% dijet([(71djmass91)])\\ +% simple([(12et)(13et)])))))\\ +% +%\end{tiny} +%\end{block} +%\end{minipage}\hfill +%\begin{minipage}[t]{0.48\linewidth} +%\begin{block}{Conditions Parent Table} +%\begin{center} +%\begin{tiny} +%[0 0 1 \alert{2} \alert{2} 0 5 6 7 \alert{8} \alert{8} 6 11 \alert{12} \alert{12} ] +% +%Leaf nodes in \alert{red} +% +%\end{tiny} +%\end{center} +%\end{block} +%\end{minipage} +\begin{minipage}[t]{0.48\linewidth} +\begin{block}{failing event} +\begin{center} +\begin{tiny} +\begin{tabular}{r|l} +Cond indx& jet groups indices\\ \hline +0: & [] \\ +1: & [] \\ +2: & [] \\ +3: & [1] \\ +4: & [] \\ +5: & [] \\ +6: & [] \\ +7: & [] \\ +8: & [] \\ +9: & [1 2 3 4 5 6 7] \\ +10:& [1 2 3 4 5 6 7] \\ +11:& [] \\ +12:& [] \\ +13:& [1 2 3 4 5 6 7] \\ +14:& [1 2 3 4 5 6 7] \\ +\end{tabular} +\end{tiny} +\end{center} +\end{block} +\end{minipage} +\begin{minipage}[t]{0.48\linewidth} +\begin{block}{passing event} +\begin{center} +\begin{tiny} +\begin{tabular}{r|l} +Cond indx& jet groups indices\\ \hline +0: & [16] \\ +1: & [7 12 13 9 8 14 11] \\ +2: & [7 12 13 9 8 14 11] \\ +3: & [1 3 5 6] \\ +4: & [0 2 4] \\ +5: & [15] \\ +6: & [15] \\ +7: & [7 9 11] \\ +8: & [7 8 9 10 11] \\ +9: & [0 1 4 6] \\ +10: & [0 1 6] \\ +11: & [7 9 11] \\ +12: & [7 8 9 10 11] \\ +13: & [0 1 4 6] \\ +14: & [0 1 6] \\ +\end{tabular} +\end{tiny} +\end{center} +\end{block} +\end{minipage}\hfill +\end{frame} + +% +% \section{FastReduction Configuration} +%\part{Fast Reduction Configuration} +%\frame{\partpage} +% + \frame +{ +\frametitle{C++ Athena Component Structure} +\includegraphics[trim = 0mm 0mm 0mm 10mm, clip, width=0.9\textwidth]{Pictures/AlgTools} + + +} + + \frame +{ +\frametitle{Jet Hypo C++ Mechanics} + +\begin{block}{Classes} +\begin{description} +\item[TrigJetHypoAlgMT] Interacts with Trigger Framework: decides +retrieves Decision objects, retrieves jet collection, passes these to each TrigJetHypoToolMT +\item[TrigJetHypoToolMT] Represents a chain hypo. Decides +whether the jet hypo should run, sends jet collection, to TrigJetHypoHelperTool] +reports a list of jets participating in a positive decision +\item[TrigJetHypoHelperToolMT] Attribute of TrigJetHypoTool. Receives jets, runs FastJet. +\item +\end{description} +\end{block} +} + +\frame +{ +\frametitle{TrigJetHypoHelperTool MT C++} +\begin{block}{TrigJetHypoHelperTool MT attributes} +\begin{description} +\item[JetGrouper ] Splits incoming jet collection into smaller groups of a specified size. +\item[Matcher ] Matcher - Passes the jet groups to Conditions. Keeps track of Condition satisfaction. +\item[ITrigJetHypoToolConfig] class to supply the above attributes +\end{description} +\end{block} +} + +\frame{ +\frametitle{ITrigJetHypoToolConfig implementation for FastReduction} + +TrigJetHypoToolConfig\_fastreduction + +\begin{block}{JetGrouper} +SingleJetGrouper: splits incoming jet collection of $n$ jets to $n$ collections of +1 jet. These are massed to the Matcher +\end{block} + +\begin{block}{Matcher} +FastReductionMatcher: Instantiates FastReducer with the jet group collection. +Run FastReducer. Reports FastReducer result. +\end{block} + +\begin{block}{ConditionMakers} +AlgToolArray. Each Condition is instantiated by an an element of this array. +The ConditionMakers are asked for their Conditions when the Matcher is +instantiated. The Matcher receives the Conditions +\end{block} +} + + + \frame +{ +\frametitle{AlgTool Configuration} + +How do we initialise all these C++ AlgTools? + +Thats what the python configuration code does. + +That story is for next time. +} + +\frame +{ +\frametitle{Afterthoughts} +\begin{itemize} +\item Dumping data structures +\item identical Conditions +\item Code/history clean up +\end{itemize} +} + + + + \end{document} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._AlgTools.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._AlgTools.tex new file mode 100644 index 0000000000000000000000000000000000000000..4773333bcb39ff589a6e9f0ec66aa6bd7b967fe2 GIT binary patch literal 2372 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 AlmGw# literal 0 HcmV?d00001 diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._hypopass.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._hypopass.tex new file mode 100644 index 0000000000000000000000000000000000000000..b2325735546137768e499af6a9a6c3046c7ffe28 GIT binary patch literal 360 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFff_{X&|3514t7A9795aAj-fxJ^<Mj zXxf;8e2};R1A|m@ey(0(K|xNcUQS|hNojFvN=jl$s&YUuL=Pi~(qdpxL8!}3ElC8b zNwkX3_I2?rNzDx{PAv*aOfLp0Wdy2auw!5lMW`<<O)N^xE6L1DWti`NA{M0T`K3MD zAUdfaC$qT3z+eFfhzHaSwhqJqa}fk*p}v8Eg`u@+TB1?1g=M03aYkZMW?p)VwXun_ mn~SNbg|3^qi>0oKi>bM;g}I@ruB(ZWqobvnqnVMBB?ABlw?F3q literal 0 HcmV?d00001 diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/AlgTools.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/AlgTools.tex new file mode 100644 index 000000000000..c47d915990ea --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/AlgTools.tex @@ -0,0 +1,63 @@ +\documentclass[11pt]{amsart} +\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots. +\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} + +\umlsimpleclass{TrigJetHypoAlgMT}{ +}{} + +\umlsimpleclass[right=4cm of TrigJetHypoAlgMT] {TrigJetHypoToolMT}{ +}{} +\umlsimpleclass[below=2cm of TrigJetHypoToolMT] {TrigJetHypoToolHelper}{}{} +\umlclass[left=3cm of TrigJetHypoToolHelper, type=Interface] {ITrigJetHypoToolConfig}{}{+ getMatcher()\\ ++ getGrouper()\\} +\umlclass[below=2cm of ITrigJetHypoToolConfig] {TrigJetHypoToolConfig-fastreducer}{}{- getConditions\\ +} + +\umlclass[right=3cm of TrigJetHypoToolConfig-fastreducer, type=Interface] {ITrigJetConditionConfig}{}{+getCondition()} + +\umlsimpleclass[below left=2.5cm and -1.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-et} +\umlsimpleclass[below =3.5cm and -0.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-eta} +\umlsimpleclass[below right =4.5cm and -3.5 of ITrigJetConditionConfig] {TrigJetConditionConfig-moment} + + +\umluniassoc[mult=*]{TrigJetHypoAlgMT}{TrigJetHypoToolMT} +\umluniassoc[mult=1]{TrigJetHypoToolMT}{TrigJetHypoToolHelper} +\umluniassoc[mult=1]{TrigJetHypoToolHelper}{ITrigJetHypoToolConfig} +\umluniassoc[mult=*]{TrigJetHypoToolConfig-fastreducer}{ITrigJetConditionConfig} +\umlimpl{TrigJetHypoToolConfig-fastreducer}{ITrigJetHypoToolConfig} +\umlimpl{TrigJetConditionConfig-et}{ITrigJetConditionConfig} +\umlimpl{TrigJetConditionConfig-eta}{ITrigJetConditionConfig} +\umlimpl{TrigJetConditionConfig-moment}{ITrigJetConditionConfig} + + + +\end{tikzpicture} + + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/hypopass.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/hypopass.tex new file mode 100644 index 000000000000..d6ae9a162561 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/hypopass.tex @@ -0,0 +1,40 @@ +\documentclass[11pt]{amsart} +\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots. +\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} + +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} +\usepackage{tikz} +\usetikzlibrary{positioning} + +\begin{document} + + +\begin{tikzpicture}[scale=3, ->, >=stealth, shorten >=1pt, auto, node distance = 2.8cm, on grid, semithick, +nd/.style={circle,draw=blue!50, thick,minimum size=15mm}, dots/.style={draw=black!50, thick,minimum size=15mm}] + \node[nd] (0) {$c_0$}; + \node (d1) [below=of 0] {...}; + \node[nd] (11) [left=of d1] {$c_{11}$}; + \node[nd] (10) [left=of 11] {$c_{10}$}; + \node[nd] (12) [right=of d1] {$c_{1n_1-1}$}; + \node[nd] (13) [right=of 12] {$c_{1n_1}$}; + +% \node[nd] (4) [below =of 10] {$c_{20}$}; +% \node[nd] (5) [below =of 20] {$c_{2n_2}$}; +% \node[nd] (5) [below right=of 3] {$c_5$}; + +% \path (0) edge [red] node [swap] {2/2} (1) +% edge [red] node {2/1`} (2) +% (1) edge [red] node [swap] {3/2} (3) +% edge node [near start] {1/0} (4) +% (2) edge node [near start] {1/0} (3) +% edge [red] node {1/1} (4) +% (3) edge [red] node [swap] {2/2} (5) +% (4) edge [red] node {3/1} (5); +\end{tikzpicture}. + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._ConditionsToolSetterFastreduction_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._ConditionsToolSetterFastreduction_seq.tex new file mode 100644 index 0000000000000000000000000000000000000000..bfe9c923a4710dab8ccdefce29d02cc3ee002108 GIT binary patch literal 2372 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 Co+SqW literal 0 HcmV?d00001 diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._Config_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._Config_seq.tex new file mode 100644 index 0000000000000000000000000000000000000000..4f8d0e996cb4b405fb24446fff344ae6e588610d GIT binary patch literal 2372 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 BBG>=` literal 0 HcmV?d00001 diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/ConditionsToolSetterFastreduction_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/ConditionsToolSetterFastreduction_seq.tex new file mode 100644 index 000000000000..29e94b2791ac --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/ConditionsToolSetterFastreduction_seq.tex @@ -0,0 +1,97 @@ +\documentclass[11pt]{amsart} +\usepackage[left=10px,right=10px,top=10px,bottom=10px,paperwidth=12in]{geometry} % See geometry.pdf to learn the layout options. There are lots. +%\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} +\begin{umlseqdiag} +\umlobject [class=Node] {tree} +\umlobject [class=ConditionsToolSetterFastReduction, x=5] {toolSetter} +\begin{umlcall}[op={mod(self)}, dt=5]{tree}{toolSetter} + \umlcreatecall[class=Node, x=12]{toolSetter}{root} + \begin{umlcall}[op={attach(tree)}, dt=5]{toolSetter}{root} + \end{umlcall} + \begin{umlcall}[op={check\_scenarios}, dt=5]{toolSetter}{root} + \end{umlcall} + \begin{umlcall}[op={remove\_combgen}, dt=5]{toolSetter}{root} + \end{umlcall} + \begin{umlcall}[op={split\_leaves}, dt=5]{toolSetter}{root} + \end{umlcall} + \begin{umlcall}[op={find\_shared}, dt=5]{toolSetter}{root} + \end{umlcall} + \begin{umlcall}[op={set\_ids(par=0, id=0)}, dt=5]{toolSetter}{root} + \end{umlcall} + \umlcreatecall[class=map, x=9]{toolSetter}{conditionsMap} + \begin{umlcall}[op={fillConditionsMap)(conditionsMap)}]{toolSetter}{root} + \end{umlcall} + \begin{umlcallself}[op={map\_2\_vec(conditionsMap)}, return=conditionsVec]{toolSetter} + \end{umlcallself} + \umlcreatecall[class=map, x=9]{toolSetter}{tree-map} + \begin{umlcall}[op={fill\_tree\_map(tree-map)}]{toolSetter}{toolSetter} + \end{umlcall} + \begin{umlcallself}[op={map\_2\_vec(tree-map)}, return=treeVec]{toolSetter} + \end{umlcallself} + \umlcreatecall[class=TrigJetHypoToolConfig-fastreduction, x=15]{toolSetter}{confTool} + \begin{umlcall}[op={attach(conditionsVec)}]{toolSetter}{confTool} + \end{umlcall} + \begin{umlcall}[op={attach(treeVec)}]{toolSetter}{confTool} + \end{umlcall} + \begin{umlcall}[op={attach(sharedVector)}]{toolSetter}{confTool} + \end{umlcall} + \umlcreatecall[class=TrigJetHypoToolHelperMT, x=11]{toolSetter}{helperTool} + \begin{umlcall}[op={attach(configTool)}]{toolSetter}{helperTool} + \end{umlcall} +\end{umlcall} +% \umlcreatecall[class=TrigJetHypoTool, x=25.7]{trigJetHypoToolFromDict}{tool} +% \begin{umlcall}[op={chaindict}, dt=5, return=helper]{trigJetHypoToolFromDict}{trigJetHypoToolHelperFromDict} +% \umlcreatecall[class=ChainLabel, x=13]{trigJetHypoToolHelperFromDict}{label} +% \umlcreatecall[class=ConditionsToolSetterFastReduction, x=19]{trigJetHypoToolHelperFromDict} {t-setter} +% \umlcreatecall[class=ChainLabelParser, x=13.7]{trigJetHypoToolHelperFromDict} {parser} +% \begin{umlcall}[op={parse(label)}, dt=5, return=tree]{trigJetHypoToolHelperFromDict}{parser} +% \umlcreatecall[class=Node, x=16.5]{parser}{tree} +% \end{umlcall} +% \umlcreatecall[class=TreeParameterExpander, x=13.7]{trigJetHypoToolHelperFromDict} {visitor} +% \begin{umlcall}[op={accept(visitor)}, dt=5]{trigJetHypoToolHelperFromDict}{tree} +% \end{umlcall} +% \begin{umlcall}[op={accept(t-setter)}, dt=5]{trigJetHypoToolHelperFromDict}{tree} +% \begin{umlcall}[op={mod(tree)}, return=helper, dt=5]{tree}{t-setter} +% \umlcreatecall[class=TrigJetHypoHelperTool, x=23]{t-setter} {helper} +% \end{umlcall} +% \begin{umlcallself}[op=attach(helper)]{tree} +% \end{umlcallself} +% \end{umlcall} +% \end{umlcall} +% \begin{umlcall}[op={attach(helper)}, dt=5]{trigJetHypoToolFromDict}{tool} +% \end{umlcall} +%\end{umlcall} +\end{umlseqdiag} + + + +\end{tikzpicture} + + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex new file mode 100644 index 000000000000..38ea8c4f7317 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex @@ -0,0 +1,92 @@ +\documentclass[11pt]{amsart} +\usepackage[left=10px,right=10px,top=10px,bottom=10px,paperwidth=12in]{geometry} % See geometry.pdf to learn the layout options. There are lots. +%\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} +\begin{umlseqdiag} +\umlobject [no ddots] {menu} +\umlobject [class=JC, x=3.7] {trigJetHypoToolFromDict} +\umlobject [class=JC, x=9.5] {trigJetHypoToolHelperFromDict} +\begin{umlcall}[op={chaindict}, dt=5, return=tool]{menu}{trigJetHypoToolFromDict} + \umlcreatecall[class=TrigJetHypoTool, x=25.7]{trigJetHypoToolFromDict}{tool} + \begin{umlcall}[op={chaindict}, dt=5, return=helper]{trigJetHypoToolFromDict}{trigJetHypoToolHelperFromDict} + \umlcreatecall[class=ChainLabel, x=13]{trigJetHypoToolHelperFromDict}{label} + \umlcreatecall[class=ConditionsToolSetterFastReduction, x=19]{trigJetHypoToolHelperFromDict} {t-setter} + \umlcreatecall[class=ChainLabelParser, x=13.7]{trigJetHypoToolHelperFromDict} {parser} + \begin{umlcall}[op={parse(label)}, dt=5, return=tree]{trigJetHypoToolHelperFromDict}{parser} + \umlcreatecall[class=Node, x=16.5]{parser}{tree} + \end{umlcall} + \umlcreatecall[class=TreeParameterExpander, x=13.7]{trigJetHypoToolHelperFromDict} {visitor} + \begin{umlcall}[op={accept(visitor)}, dt=5]{trigJetHypoToolHelperFromDict}{tree} + \end{umlcall} + \begin{umlcall}[op={accept(t-setter)}, dt=5]{trigJetHypoToolHelperFromDict}{tree} + \begin{umlcall}[op={mod(tree)}, return=helper, dt=5]{tree}{t-setter} + \umlcreatecall[class=TrigJetHypoHelperTool, x=23]{t-setter} {helper} + \end{umlcall} + \begin{umlcallself}[op=attach(helper)]{tree} + \end{umlcallself} + \end{umlcall} + \end{umlcall} + \begin{umlcall}[op={attach(helper)}, dt=5]{trigJetHypoToolFromDict}{tool} + \end{umlcall} +\end{umlcall} +\end{umlseqdiag} + + +%\umlsimpleclass{TrigJetHypoAlgMT}{ +%}{} +% +%\umlsimpleclass[right=4cm of TrigJetHypoAlgMT] {TrigJetHypoToolMT}{ +%}{} +%\umlsimpleclass[below=2cm of TrigJetHypoToolMT] {TrigJetHypoToolHelper}{}{} +%\umlclass[left=3cm of TrigJetHypoToolHelper, type=Interface] {ITrigJetHypoToolConfig}{}{+ getMatcher()\\ +%+ getGrouper()\\} +%\umlclass[below=2cm of ITrigJetHypoToolConfig] {TrigJetHypoToolConfig-fastreducer}{}{- getConditions\\ +%} +% +%\umlclass[right=3cm of TrigJetHypoToolConfig-fastreducer, type=Interface] {ITrigJetConditionConfig}{}{+getCondition()} +% +%\umlsimpleclass[below left=2.5cm and -1.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-et} +%\umlsimpleclass[below =3.5cm and -0.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-eta} +%\umlsimpleclass[below right =4.5cm and -3.5 of ITrigJetConditionConfig] {TrigJetConditionConfig-moment} +% +% +%\umluniassoc[mult=*]{TrigJetHypoAlgMT}{TrigJetHypoToolMT} +%\umluniassoc[mult=1]{TrigJetHypoToolMT}{TrigJetHypoToolHelper} +%\umluniassoc[mult=1]{TrigJetHypoToolHelper}{ITrigJetHypoToolConfig} +%\umluniassoc[mult=*]{TrigJetHypoToolConfig-fastreducer}{ITrigJetConditionConfig} +%\umlimpl{TrigJetHypoToolConfig-fastreducer}{ITrigJetHypoToolConfig} +%\umlimpl{TrigJetConditionConfig-et}{ITrigJetConditionConfig} +%\umlimpl{TrigJetConditionConfig-eta}{ITrigJetConditionConfig} +%\umlimpl{TrigJetConditionConfig-moment}{ITrigJetConditionConfig} +% +% + +\end{tikzpicture} + + +\end{document} \ No newline at end of file -- GitLab From be6bd26de5637755ba99c5c454a163fae499dc03 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Wed, 11 Nov 2020 19:07:33 +0100 Subject: [PATCH 08/17] Reuce the combinatoric load due to identical leaf Conditions. Keep track of how often a Condition is used (eg 10j40 uses the Et=40 threshold condition 10 times) For repeated identical coinditions, instantiate a C++ single CapapcityCheckedCondition with multiplicity n) rather than n CompoundCondiutions. --- .../ConditionsToolSetterFastReduction.py | 8 ++++-- .../python/TrigJetHypoToolConfig.py | 1 - .../TrigHLTJetHypo/python/node.py | 4 +-- .../python/testChainDictMaker.py | 9 ++++++ .../TrigHLTJetHypo/python/treeVisitors.py | 28 ++++++++++++------- .../src/CapacityCheckedCondition.h | 8 ++++-- .../src/TrigJetConditionConfig_compound.cxx | 14 +++++++++- .../src/TrigJetConditionConfig_compound.h | 5 +++- 8 files changed, 57 insertions(+), 20 deletions(-) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py index 5f6f0b9a76d9..fe8636e62c4e 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py @@ -134,8 +134,11 @@ class ConditionsToolSetterFastReduction(object): # compound_condition_tools: # elemental condition maker AlgToolshelper by the compound condition # AlgTool - compound_condition_tools = [] - for c in node.conf_attrs: # loop over conditions + compound_condition_tools = [] + + # loop over elements of node.conf_attrs. The elements are (dict, int) + # in t is multiplicity, dict holds Condition paramters. + for c, mult in node.conf_attrs: condition_tools = [] # elemental conditions for this compounnd ct. for k, v in c.items(): # loop over elemental conditions condition_tool = self._get_tool_instance(k) @@ -157,6 +160,7 @@ class ConditionsToolSetterFastReduction(object): # create compound condition from elemental condition compoundCondition_tool =self._get_tool_instance('compound') compoundCondition_tool.conditionMakers = condition_tools + compoundCondition_tool.multiplicity = mult # add compound condition to list compound_condition_tools.append(compoundCondition_tool) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py index a1e5c78989eb..81cc8ce2f4d4 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py @@ -28,7 +28,6 @@ def trigJetHypoToolHelperFromDict_(chain_label, tree = parser.parse() - #expand strings of cuts to a cut dictionary visitor = TreeParameterExpander() tree.accept(visitor) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py index 358e4e69bdad..f235ae4f0ccc 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py @@ -26,8 +26,8 @@ class Node(object): self.parameters = '' self.children = [] self.conf_attrs = [] # list of dictionaries - self.tool = None - self.compound_condition_tools = [] + # self.tool = None + # self.compound_condition_tools = [] # self.tree_top kludge carensure top level tools get chain name # as Tool name self.tree_top = False diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py index 42d7d53e798c..312abad23137 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/testChainDictMaker.py @@ -37,6 +37,15 @@ def testChainDictMaker(): ChainProp(name='HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20', l1SeedThresholds=['FSNOSEED'], groups=MultiJetGroup), + + ChainProp(name='HLT_10j40_L1J15', + l1SeedThresholds=['FSNOSEED'], groups=MultiJetGroup), + + + # ChainProp(name='HLT_j70_j50 _0eta490_invm1000j50_dphi20_deta40_L1J20', + # l1SeedThresholds=['FSNOSEED']*2, + # groups=MultiJetGroup), + ] result = [] diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py index fbdf5b60bf49..3d931d3cbdd5 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py @@ -134,12 +134,16 @@ class ConditionsDictMaker(object): cut vals. Example: makeDict('(10et,0eta320)') - returns the tuple dict, error, msgs : + returns the tuple: ([dict0, dict1,...] , error, msgs]: ( - {'eta_maxs': [3.2], 'EtThresholds': [10000.0], 'eta_mins': [0.0], 'asymmetricEtas': [0]}, - - False, - ['OK'] + [ + {'eta_maxs': [3.2], + 'EtThresholds': [10000.0], + 'eta_mins': [0.0], + 'asymmetricEtas': [0]} + ], + False, + ['OK'] ) dijets: parameter strings looks like '40mass, 0dphi20' @@ -184,12 +188,18 @@ class ConditionsDictMaker(object): # conditions example: ['10et,0eta320', '20et'] conditions = self.get_conditions(params) + # keep track of identical conditions (mult > 1) + + mult_conditions = defaultdict(int) + for c in conditions: mult_conditions[c] += 1 + result = [] msgs = [] - for c in conditions: # there is a parameter string for each condition + + # process each parameter string once. + for c, mult in mult_conditions.items(): # c is ciondition string cdict = defaultdict(dict) - print ('processing condition', c) toks = c.split(',') # parameters in par string are separated by ',' toks = [t.strip() for t in toks] @@ -244,7 +254,6 @@ class ConditionsDictMaker(object): sf = scaleFactors(attr) if lo: - print (attr, lo) # find the python proxy class name limits_dict['min'] = scale_limit(lo, sf) @@ -253,7 +262,7 @@ class ConditionsDictMaker(object): cdict[attr] = limits_dict - result.append(cdict) + result.append((cdict, mult)) # append dictionary and mult. # Example: input condition string: @@ -269,7 +278,6 @@ class ConditionsDictMaker(object): msgs = ['ConditionsDict OK'] error = False - print ('ConditionsDictMaker::makeDict(), result', result) return result, error, msgs diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h index 1455d594aca7..cbc892003689 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h @@ -27,8 +27,9 @@ class ITrigJetHypoInfoCollector; class CapacityCheckedCondition: public ICapacityCheckedCondition { public: - CapacityCheckedCondition(std::unique_ptr<IConditionMT> cp): - m_condition{std::move(cp)} { + CapacityCheckedCondition(std::unique_ptr<IConditionMT> cp, + std::size_t mult): + m_condition{std::move(cp)}, m_multiplicity{mult} { } virtual ~CapacityCheckedCondition(){ @@ -38,7 +39,7 @@ class CapacityCheckedCondition: public ICapacityCheckedCondition { capacitySatisfied(std::size_t jgMultiplicity, const Collector&) const override { - return m_condition->capacity() <= jgMultiplicity; + return m_multiplicity <= jgMultiplicity; } virtual bool isSatisfied(const HypoJetVector& v, @@ -56,6 +57,7 @@ class CapacityCheckedCondition: public ICapacityCheckedCondition { private: std::unique_ptr<IConditionMT> m_condition; + std::size_t m_multiplicity; }; #endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx index 15b50208dedc..dc64bcd5af3b 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx @@ -6,6 +6,7 @@ Instantiator for ET Condition */ #include "TrigJetConditionConfig_compound.h" +#include "CapacityCheckedCondition.h" #include "GaudiKernel/StatusCode.h" #include "./CompoundConditionMT.h" #include <vector> @@ -30,11 +31,22 @@ ConditionMT TrigJetConditionConfig_compound::getCondition() const { elements.push_back(el->getCondition()); } - return std::make_unique<CompoundConditionMT>(elements); + auto cc = std::make_unique<CompoundConditionMT>(elements); + + // if (m_multiplicity == 1) {return cc;} + + return CapacityCheckedCondition(std::move(cc), m_multiplicity); } StatusCode TrigJetConditionConfig_compound::checkVals() const { + + if (m_multiplicity < 1) { + ATH_MSG_ERROR("m_multiplicity = " + std::to_string(m_multiplicity) + + "expected > 0"); + return StatusCode::FAILURE; + } + return StatusCode::SUCCESS; } diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h index 155ca8527e0c..3bf5f7969ede 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h @@ -29,7 +29,10 @@ public extends<AthAlgTool, ITrigJetConditionConfig> { ToolHandleArray<ITrigJetConditionConfig> m_elementConditions{ this, "conditionMakers", {}, "elemental conditions makers for a leaf node."}; - + + Gaudi::Property<std::size_t> m_multiplicity {this, "multiplicity", {1}, + "no. of occurences of identical condition"}; + StatusCode checkVals() const; }; -- GitLab From ad3a635ff7d7408afd28f60745b189810c3904fc Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Thu, 12 Nov 2020 19:07:21 +0100 Subject: [PATCH 09/17] Reduce the number of combinations to calculate in the jet hypo tree by replacing identical conditions by a single CapacityCheckedCondition --- .../ConditionsToolSetterFastReduction.py | 19 +++--- .../python/TrigJetHypoToolConfig.py | 1 + .../ITrigJetCapacityCheckedConditionConfig.h | 21 +++++++ ...TrigJetConditionConfig_capacitychecked.cxx | 60 +++++++++++++++++++ .../TrigJetConditionConfig_capacitychecked.h | 40 +++++++++++++ .../src/TrigJetConditionConfig_compound.cxx | 11 +--- .../src/TrigJetConditionConfig_compound.h | 3 - .../TrigJetHypoToolConfig_fastreduction.cxx | 4 +- .../src/TrigJetHypoToolConfig_fastreduction.h | 4 +- .../src/components/TrigHLTJetHypo_entries.cxx | 2 + 10 files changed, 139 insertions(+), 26 deletions(-) create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetCapacityCheckedConditionConfig.h create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.cxx create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.h diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py index fe8636e62c4e..74ee2687f722 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py @@ -51,7 +51,8 @@ class ConditionsToolSetterFastReduction(object): 'smc': [CompFactory.TrigJetConditionConfig_smc, 0], 'jvt': [CompFactory.TrigJetConditionConfig_jvt, 0], 'all': [CompFactory.TrigJetConditionConfig_acceptAll, 0], - 'compound': [CompFactory.TrigJetConditionConfig_compound, 0], + 'capacitychecked': + [CompFactory.TrigJetConditionConfig_capacitychecked, 0], 'fastreduction': [CompFactory.TrigJetHypoToolConfig_fastreduction, 0], 'helper': [CompFactory.TrigJetHypoToolHelperMT, 0], } @@ -134,7 +135,7 @@ class ConditionsToolSetterFastReduction(object): # compound_condition_tools: # elemental condition maker AlgToolshelper by the compound condition # AlgTool - compound_condition_tools = [] + outer_condition_tools = [] # loop over elements of node.conf_attrs. The elements are (dict, int) # in t is multiplicity, dict holds Condition paramters. @@ -157,15 +158,15 @@ class ConditionsToolSetterFastReduction(object): condition_tools.append(condition_tool) - # create compound condition from elemental condition - compoundCondition_tool =self._get_tool_instance('compound') - compoundCondition_tool.conditionMakers = condition_tools - compoundCondition_tool.multiplicity = mult + # create capacitychecked condition from elemental condition + condition_tool =self._get_tool_instance('capacitychecked') + condition_tool.conditionMakers = condition_tools + condition_tool.multiplicity = mult - # add compound condition to list - compound_condition_tools.append(compoundCondition_tool) + # add capacitychecked condition to list + outer_condition_tools.append(condition_tool) - return compound_condition_tools + return outer_condition_tools def _mod_leaf(self, node): """ Add Condition tools to For a leaf node.""" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py index 81cc8ce2f4d4..692285a23d31 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py @@ -124,6 +124,7 @@ def trigJetHypoToolFromDict(chain_dict): # controls whether debug visitor is sent to helper tool debug = False # SET TO False WHEN COMMITTING + debug = True # SET TO False WHEN COMMITTING tool.visit_debug = debug log.debug('%s', tool) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetCapacityCheckedConditionConfig.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetCapacityCheckedConditionConfig.h new file mode 100644 index 000000000000..5575a997442b --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetCapacityCheckedConditionConfig.h @@ -0,0 +1,21 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ +#ifndef TRIGHLTJETHYPO_ITRIGJETCAPACITYCHECKEDCONDITIONCONFIG_H +#define TRIGHLTJETHYPO_ITRIGJETCAPACITYCHECKEDCONDITIONCONFIG_H + +#include "GaudiKernel/IAlgTool.h" +#include "./CapacityCheckedConditionsDefs.h" + +class ITrigJetCapacityCheckedConditionConfig : virtual public ::IAlgTool { + +public: + DeclareInterfaceID(ITrigJetCapacityCheckedConditionConfig, 1, 0); + virtual ~ITrigJetCapacityCheckedConditionConfig(){}; + + virtual ConditionPtr getCapacityCheckedCondition() const = 0; + + virtual bool addToCapacity(std::size_t) = 0; + virtual std::size_t capacity() const = 0; +}; +#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.cxx new file mode 100644 index 000000000000..123e6b6610aa --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.cxx @@ -0,0 +1,60 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +/* + Instantiator for ET Condition + */ +#include "TrigJetConditionConfig_capacitychecked.h" +#include "CapacityCheckedCondition.h" +#include "GaudiKernel/StatusCode.h" +#include "./CompoundConditionMT.h" +#include <vector> + + +TrigJetConditionConfig_capacitychecked::TrigJetConditionConfig_capacitychecked(const std::string& type, + const std::string& name, + const IInterface* parent) : + base_class(type, name, parent){ + +} + + +StatusCode TrigJetConditionConfig_capacitychecked::initialize() { + return StatusCode::SUCCESS; +} + + +ConditionPtr +TrigJetConditionConfig_capacitychecked::getCapacityCheckedCondition() const { + std::vector<ConditionMT> elements; + for(const auto& el : m_elementConditions){ + elements.push_back(el->getCapacityCheckedCondition()); + } + + auto cc = std::make_unique<CompoundConditionMT>(elements); + + return std::make_unique<CapacityCheckedCondition>(std::move(cc), + m_multiplicity); +} + + +StatusCode TrigJetConditionConfig_capacitychecked::checkVals() const { + + if (m_multiplicity < 1) { + ATH_MSG_ERROR("m_multiplicity = " + std::to_string(m_multiplicity) + + "expected > 0"); + return StatusCode::FAILURE; + } + + return StatusCode::SUCCESS; +} + +bool TrigJetConditionConfig_capacitychecked::addToCapacity(std::size_t) { + return false; +} + +std::size_t TrigJetConditionConfig_capacitychecked::capacity() const { + return getCapacityCheckedCondition()->capacity(); +} + diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.h new file mode 100644 index 000000000000..35485469b294 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.h @@ -0,0 +1,40 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGJETCONDITIONCONFIG_CAPACITYCHECKED_H +#define TRIGJETCONDITIONCONFIG_CAPACITYCHECKED_H + +#include "CapacityCheckedConditionsDefs.h" + +#include "ITrigJetCapacityCheckedConditionConfig.h" +#include "AthenaBaseComps/AthAlgTool.h" + +class TrigJetConditionConfig_capacitychecked: +public extends<AthAlgTool, ITrigJetCapacityCheckedConditionConfig> { + + public: + + TrigJetConditionConfig_capacitychecked(const std::string& type, + const std::string& name, + const IInterface* parent); + + virtual StatusCode initialize() override; + virtual ConditionPtr getCapacityCheckedCondition() const override; + + virtual bool addToCapacity(std::size_t) override; + virtual std::size_t capacity() const override; + + private: + + ToolHandleArray<ITrigJetCapacityCheckedConditionConfig> m_elementConditions{ + this, "conditionMakers", {}, + "elemental conditions makers for a leaf node."}; + + Gaudi::Property<std::size_t> m_multiplicity {this, "multiplicity", {1}, + "no. of occurences of identical condition"}; + + StatusCode checkVals() const; + +}; +#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx index dc64bcd5af3b..8e909a8f5565 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx @@ -31,22 +31,13 @@ ConditionMT TrigJetConditionConfig_compound::getCondition() const { elements.push_back(el->getCondition()); } - auto cc = std::make_unique<CompoundConditionMT>(elements); + return std::make_unique<CompoundConditionMT>(elements); - // if (m_multiplicity == 1) {return cc;} - - return CapacityCheckedCondition(std::move(cc), m_multiplicity); } StatusCode TrigJetConditionConfig_compound::checkVals() const { - if (m_multiplicity < 1) { - ATH_MSG_ERROR("m_multiplicity = " + std::to_string(m_multiplicity) + - "expected > 0"); - return StatusCode::FAILURE; - } - return StatusCode::SUCCESS; } diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h index 3bf5f7969ede..1e87533c8e4e 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h @@ -30,9 +30,6 @@ public extends<AthAlgTool, ITrigJetConditionConfig> { this, "conditionMakers", {}, "elemental conditions makers for a leaf node."}; - Gaudi::Property<std::size_t> m_multiplicity {this, "multiplicity", {1}, - "no. of occurences of identical condition"}; - StatusCode checkVals() const; }; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.cxx index 4c4e6691b6d2..f3c733065114 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.cxx @@ -136,7 +136,7 @@ TrigJetHypoToolConfig_fastreduction::getCapacityCheckedConditions() const { // return an invalid optional if any src signals a problem for(const auto& cm : m_conditionMakers){ - conditions.push_back(std::make_unique<CapacityCheckedCondition>(std::move(cm->getCondition()))); + conditions.push_back(std::move(cm->getCapacityCheckedCondition())); } return std::make_optional<ConditionPtrs>(std::move(conditions)); @@ -148,7 +148,7 @@ TrigJetHypoToolConfig_fastreduction::getConditions() const { ConditionsMT conditions; for(const auto& cm : m_conditionMakers){ - conditions.push_back(std::move(cm->getCondition())); + conditions.push_back(std::move(cm->getCapacityCheckedCondition())); } return std::make_optional<ConditionsMT>(std::move(conditions)); diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h index 2e70bf1b8167..edf444e7fd3e 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h @@ -25,7 +25,7 @@ #include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJetGrouper.h" #include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerBridge.h" #include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h" -#include "./ITrigJetConditionConfig.h" +#include "./ITrigJetCapacityCheckedConditionConfig.h" class TrigJetHypoToolConfig_fastreduction: public extends<AthAlgTool, ITrigJetHypoToolConfig> { @@ -47,7 +47,7 @@ public extends<AthAlgTool, ITrigJetHypoToolConfig> { private: - ToolHandleArray<ITrigJetConditionConfig> m_conditionMakers{ + ToolHandleArray<ITrigJetCapacityCheckedConditionConfig> m_conditionMakers{ this, "conditionMakers", {}, "hypo tree node to conditiionMaker map"}; Gaudi::Property<std::vector<std::size_t>> m_treeVec{ diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx index 4a5ea51baf2b..acc90aaba655 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx @@ -35,6 +35,7 @@ #include "../TrigJetConditionConfig_acceptAll.h" #include "../TrigJetConditionConfig_moment.h" #include "../TrigJetConditionConfig_compound.h" +#include "../TrigJetConditionConfig_capacitychecked.h" // #include "../NotHelperTool.h" @@ -90,6 +91,7 @@ DECLARE_COMPONENT(TrigJetConditionConfig_jvt) DECLARE_COMPONENT(TrigJetConditionConfig_acceptAll) DECLARE_COMPONENT(TrigJetConditionConfig_moment) DECLARE_COMPONENT(TrigJetConditionConfig_compound) +DECLARE_COMPONENT(TrigJetConditionConfig_capacitychecked) DECLARE_COMPONENT(TrigJetConditionConfig_qjet_mass) DECLARE_COMPONENT(TrigJetHypoAlgMT) -- GitLab From 7ba867cf9487c070f139b2307055459a0914e764 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Fri, 13 Nov 2020 09:43:09 +0100 Subject: [PATCH 10/17] set jet hypo python debug flag to False --- .../TrigHLTJetHypo/python/TrigJetHypoToolConfig.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py index 692285a23d31..81cc8ce2f4d4 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py @@ -124,7 +124,6 @@ def trigJetHypoToolFromDict(chain_dict): # controls whether debug visitor is sent to helper tool debug = False # SET TO False WHEN COMMITTING - debug = True # SET TO False WHEN COMMITTING tool.visit_debug = debug log.debug('%s', tool) -- GitLab From 8fc33924eaaa0fa5c7013f0c072831ff46104ced Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Fri, 13 Nov 2020 11:09:48 +0100 Subject: [PATCH 11/17] remove OSX metafiles, add to the documentation files --- .../TrigHLTJetHypo/doc/C++/._ConfigToCode.tex | Bin 423 -> 0 bytes .../doc/C++/Pictures/._AlgTools.tex | Bin 2372 -> 0 bytes .../doc/C++/Pictures/._hypopass.tex | Bin 360 -> 0 bytes ..._ConditionsToolSetterFastreduction_seq.tex | Bin 2372 -> 0 bytes .../doc/Python/Pictures/._Config_seq.tex | Bin 2372 -> 0 bytes .../ConditionsToolSetterFastreduction_seq.tex | 17 +++- .../doc/Python/Pictures/Config_seq.tex | 8 +- .../Pictures/Node_treeParameterExpander.tex | 75 ++++++++++++++++ .../TreeParameterExpanderVister_seq.tex | 58 +++++++++++++ .../doc/Python/Pictures/class_overview.tex | 61 +++++++++++++ .../Python/Pictures/helpertool_instance.tex | 81 ++++++++++++++++++ .../doc/Python/Pictures/node.tex | 73 ++++++++++++++++ .../doc/Python/Pictures/recursive.tex | 39 +++++++++ .../doc/Python/Pictures/visitor.tex | 40 +++++++++ 14 files changed, 445 insertions(+), 7 deletions(-) delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/._ConfigToCode.tex delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._AlgTools.tex delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._hypopass.tex delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._ConditionsToolSetterFastreduction_seq.tex delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._Config_seq.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Node_treeParameterExpander.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/TreeParameterExpanderVister_seq.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/class_overview.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/helpertool_instance.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/node.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/recursive.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/visitor.tex diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/._ConfigToCode.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/._ConfigToCode.tex deleted file mode 100644 index 2624b674dba7af7d4320ac83457844d009f1da1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFff(^X&|3*Iglm-IEI7-L6m`XFp2=# zlhL#>L&XIc7^IT(bM+Dn3UX5QauSP6N{drdQW8s2l>>sIW~cyZEd~Y^gu2|+l0=}I zM6390Ul-4k)ZEbG)S{5Y^kR?>Mn51C$-rQaMLkftPhwJPPJCW&esOkcVOf@GPH~}$ zc}{j|Not8%R%U)7Q1i!t#ql7MT0Xu5x|4w+sURn_xWvF<0SAZ&w1E*qGr(vlmx1%s ziI&6q(SmQvd&=bg|9*V+&Dm*Dp_k5BN!?~Y_H&8K6yLj=t8ag?&`({j|2T2ds+9M; unKo4Y=Usa%zHm~SW#DbClRw0*ew(GAy;*wsWY~kNtR20}6t`@xF8}~yX>J|> diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._AlgTools.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._AlgTools.tex deleted file mode 100644 index 4773333bcb39ff589a6e9f0ec66aa6bd7b967fe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2372 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 AlmGw# diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._hypopass.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/C++/Pictures/._hypopass.tex deleted file mode 100644 index b2325735546137768e499af6a9a6c3046c7ffe28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFff_{X&|3514t7A9795aAj-fxJ^<Mj zXxf;8e2};R1A|m@ey(0(K|xNcUQS|hNojFvN=jl$s&YUuL=Pi~(qdpxL8!}3ElC8b zNwkX3_I2?rNzDx{PAv*aOfLp0Wdy2auw!5lMW`<<O)N^xE6L1DWti`NA{M0T`K3MD zAUdfaC$qT3z+eFfhzHaSwhqJqa}fk*p}v8Eg`u@+TB1?1g=M03aYkZMW?p)VwXun_ mn~SNbg|3^qi>0oKi>bM;g}I@ruB(ZWqobvnqnVMBB?ABlw?F3q diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._ConditionsToolSetterFastreduction_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._ConditionsToolSetterFastreduction_seq.tex deleted file mode 100644 index bfe9c923a4710dab8ccdefce29d02cc3ee002108..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2372 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 Co+SqW diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._Config_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/._Config_seq.tex deleted file mode 100644 index 4f8d0e996cb4b405fb24446fff344ae6e588610d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2372 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 BBG>=` diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/ConditionsToolSetterFastreduction_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/ConditionsToolSetterFastreduction_seq.tex index 29e94b2791ac..abd2b4e93b11 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/ConditionsToolSetterFastreduction_seq.tex +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/ConditionsToolSetterFastreduction_seq.tex @@ -1,5 +1,5 @@ \documentclass[11pt]{amsart} -\usepackage[left=10px,right=10px,top=10px,bottom=10px,paperwidth=12in]{geometry} % See geometry.pdf to learn the layout options. There are lots. +\usepackage[left=10px,right=10px,top=10px,bottom=10px,paperwidth=12in, paperheight=12in]{geometry} % See geometry.pdf to learn the layout options. There are lots. %\geometry{a4paper} % ... or a4paper or a5paper or ... %\geometry{landscape} % Activate for for rotated page geometry %\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent @@ -31,13 +31,22 @@ \umlobject [class=Node] {tree} \umlobject [class=ConditionsToolSetterFastReduction, x=5] {toolSetter} \begin{umlcall}[op={mod(self)}, dt=5]{tree}{toolSetter} - \umlcreatecall[class=Node, x=12]{toolSetter}{root} + \umlcreatecall[class=Node, x=15]{toolSetter}{root} \begin{umlcall}[op={attach(tree)}, dt=5]{toolSetter}{root} \end{umlcall} \begin{umlcall}[op={check\_scenarios}, dt=5]{toolSetter}{root} \end{umlcall} + \begin{umlcall}[op={set\_conditions(root)}]{toolSetter}{toolSetter} + \begin{umlcall}[op={mod\_leaf(node)}]{toolSetter}{toolSetter} + \umlcreatecall[class=TrigJetConditionConfig\_compound, x=11]{toolSetter}{anon} + \begin{umlcall}[op={attach(anon)}]{toolSetter}{root} + \end{umlcall} + \end{umlcall} + \end{umlcall} \begin{umlcall}[op={remove\_combgen}, dt=5]{toolSetter}{root} \end{umlcall} + \begin{umlcall}[op={remo\_combgen}, dt=5]{toolSetter}{root} + \end{umlcall} \begin{umlcall}[op={split\_leaves}, dt=5]{toolSetter}{root} \end{umlcall} \begin{umlcall}[op={find\_shared}, dt=5]{toolSetter}{root} @@ -45,7 +54,7 @@ \begin{umlcall}[op={set\_ids(par=0, id=0)}, dt=5]{toolSetter}{root} \end{umlcall} \umlcreatecall[class=map, x=9]{toolSetter}{conditionsMap} - \begin{umlcall}[op={fillConditionsMap)(conditionsMap)}]{toolSetter}{root} + \begin{umlcall}[op={fillConditionsMap(conditionsMap)}]{toolSetter}{root} \end{umlcall} \begin{umlcallself}[op={map\_2\_vec(conditionsMap)}, return=conditionsVec]{toolSetter} \end{umlcallself} @@ -64,6 +73,8 @@ \umlcreatecall[class=TrigJetHypoToolHelperMT, x=11]{toolSetter}{helperTool} \begin{umlcall}[op={attach(configTool)}]{toolSetter}{helperTool} \end{umlcall} + \begin{umlcall}[op={attach(helperTool)}]{toolSetter}{toolSetter} + \end{umlcall} \end{umlcall} % \umlcreatecall[class=TrigJetHypoTool, x=25.7]{trigJetHypoToolFromDict}{tool} % \begin{umlcall}[op={chaindict}, dt=5, return=helper]{trigJetHypoToolFromDict}{trigJetHypoToolHelperFromDict} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex index 38ea8c4f7317..c0e6c0ec60b7 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex @@ -33,7 +33,7 @@ \umlobject [class=JC, x=9.5] {trigJetHypoToolHelperFromDict} \begin{umlcall}[op={chaindict}, dt=5, return=tool]{menu}{trigJetHypoToolFromDict} \umlcreatecall[class=TrigJetHypoTool, x=25.7]{trigJetHypoToolFromDict}{tool} - \begin{umlcall}[op={chaindict}, dt=5, return=helper]{trigJetHypoToolFromDict}{trigJetHypoToolHelperFromDict} + \begin{umlcall}[op={chaindict}, dt=5, return=t-setter.helper]{trigJetHypoToolFromDict}{trigJetHypoToolHelperFromDict} \umlcreatecall[class=ChainLabel, x=13]{trigJetHypoToolHelperFromDict}{label} \umlcreatecall[class=ConditionsToolSetterFastReduction, x=19]{trigJetHypoToolHelperFromDict} {t-setter} \umlcreatecall[class=ChainLabelParser, x=13.7]{trigJetHypoToolHelperFromDict} {parser} @@ -44,11 +44,11 @@ \begin{umlcall}[op={accept(visitor)}, dt=5]{trigJetHypoToolHelperFromDict}{tree} \end{umlcall} \begin{umlcall}[op={accept(t-setter)}, dt=5]{trigJetHypoToolHelperFromDict}{tree} - \begin{umlcall}[op={mod(tree)}, return=helper, dt=5]{tree}{t-setter} + \begin{umlcall}[op={mod(tree)}, dt=5]{tree}{t-setter} \umlcreatecall[class=TrigJetHypoHelperTool, x=23]{t-setter} {helper} + \begin{umlcallself}[op=attach(helper)]{t-setter} + \end{umlcallself} \end{umlcall} - \begin{umlcallself}[op=attach(helper)]{tree} - \end{umlcallself} \end{umlcall} \end{umlcall} \begin{umlcall}[op={attach(helper)}, dt=5]{trigJetHypoToolFromDict}{tool} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Node_treeParameterExpander.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Node_treeParameterExpander.tex new file mode 100644 index 000000000000..0609043bb0f9 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Node_treeParameterExpander.tex @@ -0,0 +1,75 @@ +\documentclass[11pt]{amsart} +\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots. +\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} + +\umlclass{Node}{ +}{ + int:node\_id=None\\ + int:parent\_id=None\\ + + string:scenario='simple'\\ + string:parameters=(260et,320eta490)\\ + list:children\\ + list$<$dict$>$:conf\_attrs=[0]\\ + AlgTool:tool=None\\ + list$<$AlgTool$>$:compound\_condition\_tools \\ + bool:tree\_top=True\\ +} +\umluniassoc[mult=0..*]{Node}{Node} + +%\umlsimpleclass[right=4cm of TrigJetHypoAlgMT] {TrigJetHypoToolMT}{ +%}{} +%\umlsimpleclass[below=2cm of TrigJetHypoToolMT] {TrigJetHypoToolHelper}{}{} +%\umlclass[left=3cm of TrigJetHypoToolHelper, type=Interface] {ITrigJetHypoToolConfig}{}{+ getMatcher()\\ +%+ getGrouper()\\} +%\umlclass[below=2cm of ITrigJetHypoToolConfig] {TrigJetHypoToolConfig-fastreducer}{}{- getConditions\\ +%} +% +%\umlclass[right=3cm of TrigJetHypoToolConfig-fastreducer, type=Interface] {ITrigJetConditionConfig}{}{+getCondition()} +% +%\umlsimpleclass[below left=2.5cm and -1.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-et} +%\umlsimpleclass[below =3.5cm and -0.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-eta} +%\umlsimpleclass[below right =4.5cm and -3.5 of ITrigJetConditionConfig] {TrigJetConditionConfig-moment} +% +% +%\umluniassoc[mult=*]{TrigJetHypoAlgMT}{TrigJetHypoToolMT} +%\umluniassoc[mult=1]{TrigJetHypoToolMT}{TrigJetHypoToolHelper} +%\umluniassoc[mult=1]{TrigJetHypoToolHelper}{ITrigJetHypoToolConfig} +%\umluniassoc[mult=*]{TrigJetHypoToolConfig-fastreducer}{ITrigJetConditionConfig} +%\umlimpl{TrigJetHypoToolConfig-fastreducer}{ITrigJetHypoToolConfig} +%\umlimpl{TrigJetConditionConfig-et}{ITrigJetConditionConfig} +%\umlimpl{TrigJetConditionConfig-eta}{ITrigJetConditionConfig} +%\umlimpl{TrigJetConditionConfig-moment}{ITrigJetConditionConfig} +% +% + +\end{tikzpicture} + + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/TreeParameterExpanderVister_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/TreeParameterExpanderVister_seq.tex new file mode 100644 index 000000000000..fd158684dd08 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/TreeParameterExpanderVister_seq.tex @@ -0,0 +1,58 @@ +\documentclass[11pt]{amsart} +\usepackage[left=10px,right=10px,top=10px,bottom=10px,paperwidth=12in]{geometry} % See geometry.pdf to learn the layout options. There are lots. +%\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} +\begin{umlseqdiag} +\umlobject [class=JC, x=9.5] {trigJetHypoToolHelperFromDict} +\umlobject [class=Node, x=22.5] {tree} +\umlcreatecall[class=TreeParameterExpander, x=13.7, dt=10]{trigJetHypoToolHelperFromDict} {visitor} +\begin{umlcall}[op={mod(tree)}]{trigJetHypoToolHelperFromDict}{visitor} + \umlcreatecall[class=TreeParameterExpander-simple, x=18.7]{visitor}{expander} + \begin{umlcall}[op={accept(visitor)}, dt=5]{visitor}{tree} + \begin{umlfragment} [type=loop, name=childloop] + \begin{umlcall}[op={mod(node=self)}]{tree}{visitor} + \end{umlcall} + \begin{umlcreatecall}[class=ConditionDictMaker, x=19]{visitor}{cdm} + \end{umlcreatecall} + \begin{umlcall}[op={makeDict(node.parameters)}, return=dict, dt=5]{visitor}{cdm} + \end{umlcall} + \begin{umlcall} [op={attach(dict)}, dt=5, name=nodemod] {visitor}{tree} + \end{umlcall} + \end{umlfragment} + \umlnote[x=25, y = -13, width=100]{childloop}{navigate tree by modifing child nodes, then self} + \end{umlcall} +\end{umlcall} + +\umlnote[x=2]{trigJetHypoToolHelperFromDict}{using a visitor, for each node in a Conditions tree, attach a dictionary of elemental conditions and their explicit values} +\end{umlseqdiag} + + +\end{tikzpicture} + + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/class_overview.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/class_overview.tex new file mode 100644 index 000000000000..742a99e205fa --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/class_overview.tex @@ -0,0 +1,61 @@ +\documentclass[11pt]{amsart} +\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots. +\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} + +\umlsimpleclass[x=0, y=2]{TrigJetHypoAlg} +\umlsimpleclass[x=0, y=0]{TrigJetHypoTool} +\umlsimpleclass[x=0, y=-2]{TrigJetHypoToolHelper} +\umlsimpleclass[x=-6, y=-2, fill=white]{FastReductionMatcher} +\umlsimpleclass[x=6, y=-2, fill=white]{TrigJetGrouper} +\umlsimpleclass[x=-6, y=-4, fill=white]{FastReducer} + + +\umlclass[x=0, y=-4]{TrigJetHypoTooHelperConfig-fastreduction}{+ getMatcher()\\+getGrouper()\\}{- treeVector:list$<$int$>$} +\umlclass[x=0, y=-7]{ConditionMaker}{+ getCondition()}{stuff to make a Condition} + +\umluniassoc[mult=*, pos=0.65]{TrigJetHypoAlg}{TrigJetHypoTool} +\umluniassoc[mult=1, pos=0.65]{TrigJetHypoTool}{TrigJetHypoToolHelper} +\umluniassoc[mult=1, pos=0.65]{TrigJetHypoToolHelper}{TrigJetHypoTooHelperConfig-fastreduction} +\umluniassoc[mult=*, pos=0.65]{TrigJetHypoTooHelperConfig-fastreduction}{ConditionMaker} +\umluniassoc[mult=1, pos=0.65]{TrigJetHypoToolHelper}{FastReductionMatcher} +\umluniassoc[mult=1, pos=0.65]{TrigJetHypoToolHelper}{TrigJetGrouper} +\umluniassoc[mult=1, pos=0.65]{FastReductionMatcher}{FastReducer} + + +\umlnote[x=6, y=0]{TrigJetHypoToolHelper}{No semantics} +\umlnote[x=-6, y=-0]{FastReductionMatcher}{semantics here} +\umlnote[x=6, y=-7]{ConditionMaker}{Provide a Condition for the Matcher} + + + + +\end{tikzpicture} + + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/helpertool_instance.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/helpertool_instance.tex new file mode 100644 index 000000000000..a4b417d8b0d5 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/helpertool_instance.tex @@ -0,0 +1,81 @@ +\documentclass[11pt]{amsart} +\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots. +\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} + +\umlclass{TrigJetHypoToolHelperMT}{ +}{ + name:string='helper\_0\_fn\_n1p0'\\ + %HypoConfigurer=TrigJetHypoToolConfig\_fastreduction('fastreduction\_0\_fn'\\ + %conditionMakers=PrivateToolHandleArray(['TrigJetConditionConfig\_acceptAll/all\_0\_fn','TrigJetConditionConfig\_compound/% compound\_0\_fn']), treeVector=[0, 0], sharedVector=[1]), + int:node\_id=1\\ + int:parent\_id=0\\ +} + +\umlclass [x=10] {TrigJetHypoToolConfig-fastreduction} {}{ +list:treeVector= [0, 0] \\ +list:sharedVector=[1]\\ +int:node\_id=1\\ +int:parent\_id=0\\ +%%name:string='TrigJetHypoToolConfig\_fastreduction('fastreduction\_0\_fn'\\ +conditionMakers:PrivateToolHandleArray=[\\ +\hspace{20pt}TrigJetConditionConfig\_acceptAll\\ +\hspace{20pt}TrigJetConditionConfig\_compound]\\ +} +\umluniassoc[mult=1]{TrigJetHypoToolHelperMT}{TrigJetHypoToolConfig-fastreduction} + +%\umlsimpleclass[right=4cm of TrigJetHypoAlgMT] {TrigJetHypoToolMT}{ +%}{} +%\umlsimpleclass[below=2cm of TrigJetHypoToolMT] {TrigJetHypoToolHelper}{}{} +%\umlclass[left=3cm of TrigJetHypoToolHelper, type=Interface] {ITrigJetHypoToolConfig}{}{+ getMatcher()\\ +%+ getGrouper()\\} +%\umlclass[below=2cm of ITrigJetHypoToolConfig] {TrigJetHypoToolConfig-fastreducer}{}{- getConditions\\ +%} +% +%\umlclass[right=3cm of TrigJetHypoToolConfig-fastreducer, type=Interface] {ITrigJetConditionConfig}{}{+getCondition()} +% +%\umlsimpleclass[below left=2.5cm and -1.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-et} +%\umlsimpleclass[below =3.5cm and -0.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-eta} +%\umlsimpleclass[below right =4.5cm and -3.5 of ITrigJetConditionConfig] {TrigJetConditionConfig-moment} +% +% +%\umluniassoc[mult=*]{TrigJetHypoAlgMT}{TrigJetHypoToolMT} +%\umluniassoc[mult=1]{TrigJetHypoToolMT}{TrigJetHypoToolHelper} +%\umluniassoc[mult=1]{TrigJetHypoToolHelper}{ITrigJetHypoToolConfig} +%\umluniassoc[mult=*]{TrigJetHypoToolConfig-fastreducer}{ITrigJetConditionConfig} +%\umlimpl{TrigJetHypoToolConfig-fastreducer}{ITrigJetHypoToolConfig} +%\umlimpl{TrigJetConditionConfig-et}{ITrigJetConditionConfig} +%\umlimpl{TrigJetConditionConfig-eta}{ITrigJetConditionConfig} +%\umlimpl{TrigJetConditionConfig-moment}{ITrigJetConditionConfig} +% +% + +\end{tikzpicture} + + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/node.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/node.tex new file mode 100644 index 000000000000..b7b4c883da70 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/node.tex @@ -0,0 +1,73 @@ +\documentclass[11pt]{amsart} +\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots. +\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} + +\umlclass{Node}{ +}{ + int:node\_id=None\\ + int:parent\_id=None\\ + + string:scenario='simple'\\ + string:parameters={\color{red}(260et,320eta490)}\\ + list:children=[]\\ + list$<$dict$>$:conf\_attrs={\color{blue}[\{'et', \{'min': '260000.0', 'max': 'inf'\}, 'eta': \{'min': '3.2', 'max': '4.9'\}\}]}\\ + bool:tree\_top=True\\ +} +\umluniassoc[mult=0..*, recursive=-90|0|5.6cm, pos=0.95]{Node}{Node} + +%\umlsimpleclass[right=4cm of TrigJetHypoAlgMT] {TrigJetHypoToolMT}{ +%}{} +%\umlsimpleclass[below=2cm of TrigJetHypoToolMT] {TrigJetHypoToolHelper}{}{} +%\umlclass[left=3cm of TrigJetHypoToolHelper, type=Interface] {ITrigJetHypoToolConfig}{}{+ getMatcher()\\ +%+ getGrouper()\\} +%\umlclass[below=2cm of ITrigJetHypoToolConfig] {TrigJetHypoToolConfig-fastreducer}{}{- getConditions\\ +%} +% +%\umlclass[right=3cm of TrigJetHypoToolConfig-fastreducer, type=Interface] {ITrigJetConditionConfig}{}{+getCondition()} +% +%\umlsimpleclass[below left=2.5cm and -1.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-et} +%\umlsimpleclass[below =3.5cm and -0.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-eta} +%\umlsimpleclass[below right =4.5cm and -3.5 of ITrigJetConditionConfig] {TrigJetConditionConfig-moment} +% +% +%\umluniassoc[mult=*]{TrigJetHypoAlgMT}{TrigJetHypoToolMT} +%\umluniassoc[mult=1]{TrigJetHypoToolMT}{TrigJetHypoToolHelper} +%\umluniassoc[mult=1]{TrigJetHypoToolHelper}{ITrigJetHypoToolConfig} +%\umluniassoc[mult=*]{TrigJetHypoToolConfig-fastreducer}{ITrigJetConditionConfig} +%\umlimpl{TrigJetHypoToolConfig-fastreducer}{ITrigJetHypoToolConfig} +%\umlimpl{TrigJetConditionConfig-et}{ITrigJetConditionConfig} +%\umlimpl{TrigJetConditionConfig-eta}{ITrigJetConditionConfig} +%\umlimpl{TrigJetConditionConfig-moment}{ITrigJetConditionConfig} +% +% + +\end{tikzpicture} + + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/recursive.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/recursive.tex new file mode 100644 index 000000000000..bd48b48cc335 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/recursive.tex @@ -0,0 +1,39 @@ +\documentclass[11pt]{amsart} +\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots. +\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} + +\umlclass{A}{}{list$<$A$>$} +\umlsimpleclass[x=5]{B} + +\umluniassoc[mult=0..*, recursive=-90|0|2cm, pos=0.95]{B}{B} + +\end{tikzpicture} + + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/visitor.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/visitor.tex new file mode 100644 index 000000000000..231453c2b108 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/visitor.tex @@ -0,0 +1,40 @@ +\documentclass[11pt]{amsart} +\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots. +\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} + +\umlclass{A}{accept(visitor)}{children::list$<$A$>$} +\umlclass[x=5]{Visitor}{mod(A)}{} + +\umlnote[y=-4, width=100]{A}{accept(visitor)\{\\for (c : children)\{\\ \ c.accept(visitor)\\ \ visitor.mod(self)\\ \}} +\umlnote[x=5, y=-4, width=100]{Visitor}{mod(A)\{\\do something to or with A\\ \} } + +\end{tikzpicture} + + +\end{document} \ No newline at end of file -- GitLab From 93fb2af0c6967cb025ac651e5452ebd8c889ab79 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Mon, 16 Nov 2020 17:55:02 +0100 Subject: [PATCH 12/17] Jet Trig Hypo update presentations in the doc directory --- .../Python/JetTriggerPythonConfiguration.tex | 300 ++++++++++++++++++ 1 file changed, 300 insertions(+) create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/JetTriggerPythonConfiguration.tex diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/JetTriggerPythonConfiguration.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/JetTriggerPythonConfiguration.tex new file mode 100644 index 000000000000..135ba2a3252a --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/JetTriggerPythonConfiguration.tex @@ -0,0 +1,300 @@ +\documentclass{beamer} + +% \usepackage{beamerthemesplit} // Activate for custom appearance + +\title{The Trigger Jet Hypo - Python Configuration} +\author{P Sherwood} +\date{10 November 2020} + +\addtobeamertemplate{navigation symbols}{}{% + \usebeamerfont{footline}% + \usebeamercolor[fg]{footline}% + \hspace{1em}% + \insertframenumber/\inserttotalframenumber +} +\usepackage{xcolor} +\usepackage{caption} +\usepackage{subcaption} +\usepackage{wrapfig} + + +\begin{document} + +\frame{\titlepage} +% \begin{frame} +% \frametitle{Outline} +% \begin{quotation} +% My mind is clearer now - at last all too well I can see where we all soon will be +% \end{quotation} +% \tableofcontents[pausesections] +%\end{frame} + + + +%\subsection {Tree Structures} +%\subsection{HypoTrees} +%\subsection{ConditionTrees} +%\subsection{Dynamic Programming} + +%\part{The Jet Hypo as a Tree} +%\frame{\partpage +% +%%{ +% \frametitle{Part 1: Fast Reduction Generalities} +% } +%} + +\frame + { + \frametitle{Context} + + \begin{block}{High level: C++} + At initialisation, the Trigger Framework: + \begin{itemize} +\item instantiates 1 JetHypoTool per chain. +\item instantiates 1 JetHypoAlgorithm +\item passes the tools to the Algorithm +\end{itemize} +\end{block} + +\begin{block}{Role of the python configuration} +Provide the initialisation for any JetHypoAlgTool and its helper AlgTool classes +\end{block} +} + + +\frame + { + \frametitle{Jet Hypo AlgTool structure (C++)} + \begin{block}{} + %\begin{wrapfigure}{l}{0.82\linewidth} + \begin{minipage}[T]{0.75\linewidth} + \includegraphics[trim = 20mm 130mm 0mm 25mm, clip, width= 0.98\linewidth]{Pictures/class_overview} + \end{minipage}% + % \end{wrapfigure} AlgTools to be intialised in yellow + \begin{minipage}[T]{0.25\linewidth} + \begin{small} + Yellow: AlgTools to be intialised by jet~trig python\\ + {\bf C++ and python classes have same structure} + + \vspace{3mm} + Red: Non-component objects instantiated by HelperConfig + \end{small} + \end{minipage} + \end{block} + \begin{block}{} + Experience so far: different hypo approaches can be encapsulated in the Matcher (FastReduction, AlgTrees, Maxflow...) + \end{block} +} + +\frame + { + \frametitle{Overview of the jet trigger python configuration} + \begin{block}{Goal} + Create python instances of TrigJetHypoTool and associated classes in order to initialise the corresponding C++ classes + \end{block} + \begin{block}{Classes to be initialised for each chain} + \begin{itemize} + \item TrigJetHypoToolMT + \item TrigJetHypoToolHelperMT + \item TrigJetHypoToolHelperConfig\_fastreduction + \item multiple TrigJetConditionConfig + \end{itemize} + + + \end{block} + +} + +\frame{ + \frametitle{How do we do it?} + + \begin{block}{View from 35 000 ft} + + \begin{enumerate} + \item Trigger fromework sends us a chain dict. + \item chain dict $\rightarrow$ chain label + \item chain label $\rightarrow$ node tree + \item process node tree to recover python AlgTools + \end {enumerate} + \end{block} +} + +\begin{frame}[fragile] + \frametitle{Chain Label examples} + + \begin{block}{chain label examples: scenario = `simple'} + \begin{itemize} + \item 'simple([(38et, 0eta320)])', + \item 'simple([(38et, 0eta320)(40et, 0eta320)])', + \item 'simple([(38et, 0eta320, 011jvt)])', + \end{itemize} + \end{block} + + \begin{block}{chain label examples: scenario $\neq$ `simple'} + and([]\\ + \makebox[1cm]{}{simple([(30et,500neta)(30et,peta500)])}\\ + \makebox[1cm]{}combgen([(10et,0eta320)]\\ + \makebox[2cm]{}dijet([(34djmass,26djdphi)])\\ + \makebox[2cm]{}simple([(10et,0eta320)(20et,0eta320)]\\ + \makebox[1cm]{})\\ + ) + \end{block} +\end{frame} + + +\frame{ + \frametitle{Concepts} + \begin{block}{TrigJetHypoToolHelperMT} + \begin{description} +\item[Tree] A graph where each node has a single parent, except the rroot node. Each node as zero or more children. +\item [Jet Group] a vector of jets +\item[Condition] A predicate that accepts a jet group. +\item[Grouper] A device that splits jet groups into smaller jet groups +\item[Matcher] A device that presents jet froups to Conditions +\end{description} + \end{block} + \begin{block}{FastReduction} + \begin{description} +\item[ Condition Tree] Expresses hierarchical relations among Conditions +\item[FastReducer] Class that performs FastReduction +\end{description} +\end{block} + } + +\frame{ + \frametitle{Input to the jet hypo python configuration} + +\begin{block}{ChainDict} +\begin{itemize} +\item Menu code: chain name $\rightarrow$ chainDict (type dict) +\item chainDict includes a key 'scenario', value type = string. +\item if scenario is `simple', use other entries in the chain dict to construct the chain label (string) +\item otherwise, use the chainDict['scenario'] as the chain label. +\end{itemize} +\end{block} + +\begin{block}{why is scenario `simple' different?} +To maintain the approach used in Run 2 +\end{block} +} + +\frame{ + \frametitle{chain label $\rightarrow$ node tree} + \begin{block}{chain label vs node treel} + \begin{center} + \begin{tabular}{|l|c|c|} \hline + & label & node tree \\ \hline + type & string & node objects \\ + par-child &nested parens & child elements \\ + extendable & no & typically via visitors \\ + \hline + \end{tabular} + \end{center} + +% \begin{itemize} +% \item chain label is structured - legal chain labels conform to a syntax +% \item the syntax allows for the prescription of a tree through nested parentheses. +% \item chain label contains information on Conditions (cut predicates) +% \end{itemize} + \end{block} +\begin{block}{Why have a node tree as well?} +Chain label and Node tree: same tree structure. Nodes allow python mechanics to set up AlgTools +\end{block} + +\begin{block}{Node tree creation and evolution} +\begin{itemize} +\item JetTrigParser reads the chain label. Syntax is checked. Creates initial node tree. +\item Attributes of the nodes modifiable (are python objects!) +\item Code organisation: encapsulate node modification actions in visitors - avoid complex Node class. +\end{itemize} + +\end{block} +} + +\frame{ + \frametitle{chain label $\rightarrow$ node tree} + \begin{block}{chain label} + \begin{itemize} + \item chain label is structured - legal chain labels conform to a syntax + \item the syntax allows for the prescription of a tree through nested parentheses. + \item chain label contains information on Conditions (cut predicates) + \end{itemize} + \end{block} +\begin{block}{} +chain label this describes a graph, with Conditions being associated with certain nodes. The nodes are organised +in a tree. + \end{block} + +\begin{block}{conversion to a a node tree} +\begin{itemize} +\item node tree is tree made of node instances, Each node contains data, and a list of child nodes. +\item the node tree has the strupwdcture prescribed by the chain label. +\item the conversion from chain label to node tree is done using Jet +\end{itemize} + +\end{block} +} + +\frame{ + \frametitle{What the jet hypo python configuration does} +Takes the chainDict obtained by processing the chain name (menu group), and produce the python version of +the jet hypo AlgTool and its Helper tool + +The Helper tool knows nothing about the specifics of the chain or the hypo strategy - it coordinates only its Grouper and its Matcher. + +The correct Grouper and Matcher are hardwired into the FastReductionConfigTool. This supplies the tree structure (as a vector of ints) +It obtains the Conditions for the Matcher from its own ConditionsConfigTools +} + +\frame{ + \frametitle{Recursive Classes = Trees} + \begin{block}{UML representations of a tree} + \includegraphics[trim = 10mm 230mm 0mm 20mm, clip, width= 1.0\linewidth]{Pictures/recursive} +\end{block} + + \begin{block}{Visitor and Trees} + \begin{minipage}[T]{0.55\linewidth} + \includegraphics[trim = 10mm 195mm 60mm 25mm, clip, width= 1.0\linewidth]{Pictures/visitor} + \end{minipage}% + \begin{minipage}[T]{0.45\linewidth} + A: navigation\\Visitor: functionality.\\\mbox{}\\ + New visitors can be introduced with modifying A. + \end{minipage} + \end{block} + + } + + +\frame +{ + \frametitle{The visitors, and what they do} + % \begin{minipage}[T]{0.7\linewidth} +\begin{block}{HLT\_j260\_320eta490\_L1J75\_31ETA49} + \includegraphics[trim = 10mm 190mm 0mm 10mm, clip, width= 0.8\linewidth]{Pictures/node} + \end{block} + %\end{minipage}% + + \begin{block}{T} + \begin{description} +\item[TreeParameterExpander\_ visitor] Modifies node: attach a conf\_attr list of dictionaries + \item[ConditionsToolSetterFastReduction\_visitor] Modifies self: attaches a TrigJetHypoToolHelperMT instance + \end{description} + \end{block} + } + + \frame +{ + \frametitle{TrigJetHypoToolHelperMT instance} + \includegraphics[trim = 10mm 210mm 0mm 10mm, clip, width= \linewidth]{Pictures/helpertool_instance} + + Four AlgTools are visible here: + \begin{description} +\item[TrigJetHypoToolHelperMT] C++ version will use a Matcher and a Grouper to match jet Groups to confitions +\item [TrigJetHypoToolConfig\_fastreduction] Supplies the FastReduction Matcher and Grouper to the Helper +\item [ToolHandleArray] Two ConditionMakers that supply the AcceptAll and Compound Conditions used by the Config tool +to construct the Matcher. +\end{description} + } + + \end{document} -- GitLab From 37bd6406727e5144305f7c2373a06eb4bb99f3cb Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Tue, 17 Nov 2020 16:30:18 +0100 Subject: [PATCH 13/17] Contuiing work on optimisation for identical Conditions Use CapacityCheckedConditoin for FastReducer. This class is used to replace mutiple identical CompoundConditions. It contains a single CompoundCondition object, and has multiplicity attribute. This contains a CompoundCondition. The CapacityCheckedCondition forwards isSatisfied to the contained CompoundCondition. When checking whether a Condition is satisfied FastReducer no longer requres that at least a single jet group satisfies the Condition. Instead it requires enough jet groups pass to satisfy the mutliplicity condition. The multiplicity for non-identical Conditions is set to 1. The IConditionMT interface was modied to remove the noexcept attribute for the toString() method. noaccept was not a valid attribite as the method consumes memory. The many implementation classes are affected. --- .../ConditionsToolSetterFastReduction.py | 3 +- .../python/ConditionsToolSetterHT.py | 6 ++- .../TrigHLTJetHypo/python/node.py | 6 ++- .../src/AcceptAllConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/AcceptAllConditionMT.h | 2 +- .../src/CapacityCheckedCondition.cxx | 41 +++++++++++++++++++ .../src/CapacityCheckedCondition.h | 37 ++++++----------- .../src/CompoundConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/CompoundConditionMT.h | 2 +- .../TrigHLTJetHypo/src/DijetConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/DijetConditionMT.h | 2 +- .../src/DijetDEtaConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/DijetDEtaConditionMT.h | 2 +- .../src/DijetDPhiConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/DijetDPhiConditionMT.h | 2 +- .../src/DijetMassConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/DijetMassConditionMT.h | 2 +- .../TrigHLTJetHypo/src/EtConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/EtConditionMT.h | 2 +- .../TrigHLTJetHypo/src/EtaConditionAbsMT.cxx | 2 +- .../TrigHLTJetHypo/src/EtaConditionAbsMT.h | 2 +- .../src/EtaConditionSignedMT.cxx | 2 +- .../TrigHLTJetHypo/src/EtaConditionSignedMT.h | 2 +- .../src/EtaEtAsymmetricConditionMT.cxx | 2 +- .../src/EtaEtAsymmetricConditionMT.h | 2 +- .../TrigHLTJetHypo/src/EtaEtConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/EtaEtConditionMT.h | 2 +- .../TrigHLTJetHypo/src/FastReducer.cxx | 4 +- .../TrigHLTJetHypo/src/HTConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/HTConditionMT.h | 2 +- .../src/ICapacityCheckedCondition.h | 4 +- .../TrigHLTJetHypo/src/IConditionMT.h | 2 +- .../TrigHLTJetHypo/src/JVTConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/JVTConditionMT.h | 2 +- .../TrigHLTJetHypo/src/MomentConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/MomentConditionMT.h | 2 +- .../src/QjetMassConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/QjetMassConditionMT.h | 2 +- .../TrigHLTJetHypo/src/SMCConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/SMCConditionMT.h | 2 +- .../TrigHLTJetHypo/src/TLAConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/TLAConditionMT.h | 2 +- ...TrigJetConditionConfig_capacitychecked.cxx | 2 +- .../TrigJetConditionConfig_capacitychecked.h | 3 +- 44 files changed, 108 insertions(+), 68 deletions(-) create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.cxx diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py index 74ee2687f722..ae3da0d3eab1 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py @@ -290,7 +290,8 @@ class ConditionsToolSetterFastReduction(object): else: # must have a tool for Gaudi to instantiate in - cmap[node.node_id] = self._get_tool_instance('all') + cmap[node.node_id] = self._get_tool_instance('capacitychecked') + cmap[node.node_id].conditionMakers = [self._get_tool_instance('all')] for cn in node.children: self._fill_conditions_map(cn, cmap) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterHT.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterHT.py index c2a8236c6df6..4af4a67d4c26 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterHT.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterHT.py @@ -73,7 +73,11 @@ class ConditionsToolSetterHT(object): conditionMaker = self._get_tool_instance('htcondition') config_tool = self._get_tool_instance('htconfig') cut_windows = {} - [cut_windows.update(d) for d in node.conf_attrs] + + # HT not handled by FastReducer. Cut mulitplicity must be 1. + for d in node.conf_attrs: assert d[1] == 1 + + [cut_windows.update(d[0]) for d in node.conf_attrs] print (cut_windows) conditionMaker.htmin = cut_windows['ht']['min'] conditionMaker.etmin = cut_windows['et']['min'] diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py index f235ae4f0ccc..f0b8899affad 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py @@ -26,12 +26,16 @@ class Node(object): self.parameters = '' self.children = [] self.conf_attrs = [] # list of dictionaries + + # filled in by a CondtionsTollSetter: + self.compound_condition_tools = [] # self.tool = None # self.compound_condition_tools = [] # self.tree_top kludge carensure top level tools get chain name # as Tool name self.tree_top = False - + self.tool = None + def set_ids(self, node_id, parent_id): "Set ids of nodes in a tree" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.cxx index ade70fd5f59c..e5be218d4c4a 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.cxx @@ -41,7 +41,7 @@ AcceptAllConditionMT::isSatisfied(const HypoJetVector& ips, -std::string AcceptAllConditionMT::toString() const noexcept { +std::string AcceptAllConditionMT::toString() const { std::stringstream ss; ss << "AcceptAllConditionMT (" << this << ") capacity " << m_capacity <<'\n'; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.h index a60b7ef77358..e45dbffbbfac 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.h @@ -31,7 +31,7 @@ class AcceptAllConditionMT: public IConditionMT{ const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; virtual unsigned int capacity() const override{return m_capacity;} - std::string toString() const noexcept override; + std::string toString() const override; private: diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.cxx new file mode 100644 index 000000000000..bcf2cfe05335 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.cxx @@ -0,0 +1,41 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#include "./CapacityCheckedCondition.h" + +#include <memory> +#include <string> + + +CapacityCheckedCondition::CapacityCheckedCondition(std::unique_ptr<IConditionMT> cp, std::size_t mult): + m_condition{std::move(cp)}, m_multiplicity{mult} {} + + +CapacityCheckedCondition::~CapacityCheckedCondition(){} + +bool +CapacityCheckedCondition::multiplicitySatisfied(std::size_t jgMultiplicity, + const Collector&) const { + return m_multiplicity <= jgMultiplicity; +} + +bool +CapacityCheckedCondition::isSatisfied(const HypoJetVector& v, + const std::unique_ptr<ITrigJetHypoInfoCollector>& c) const { + return m_condition->isSatisfied(v, c); +} + +unsigned int CapacityCheckedCondition::capacity() const { + return m_condition->capacity(); +} + +std::string CapacityCheckedCondition::toString() const { + std::stringstream ss; + const void* address = static_cast<const void*>(this); + + ss << "CapacityCheckedCondition (" << address << ") Multiplicity: " + << m_multiplicity << '\n' << m_condition->toString(); + + return ss.str(); +} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h index 2fa2d65d906f..e01bcc13918d 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CapacityCheckedCondition.h @@ -28,35 +28,24 @@ class ITrigJetHypoInfoCollector; class CapacityCheckedCondition: public ICapacityCheckedCondition { public: CapacityCheckedCondition(std::unique_ptr<IConditionMT> cp, - std::size_t mult): - m_condition{std::move(cp)}, m_capacity{mult} { - } - - virtual ~CapacityCheckedCondition(){ - } + std::size_t mult); + virtual ~CapacityCheckedCondition(); virtual bool - capacitySatisfied(std::size_t jgMultiplicity, - const Collector&) const override { - return m_capacity <= jgMultiplicity; - } - - virtual bool isSatisfied(const HypoJetVector& v, - const std::unique_ptr<ITrigJetHypoInfoCollector>& c) const override { - return m_condition->isSatisfied(v, c); - } - - virtual unsigned int capacity() const override { - return m_condition->capacity(); - } + multiplicitySatisfied(std::size_t jgMultiplicity, + const Collector&) const override; + virtual bool + isSatisfied(const HypoJetVector& v, + const std::unique_ptr<ITrigJetHypoInfoCollector>& c) const override; - virtual std::string toString() const noexcept override { - return m_condition->toString(); - } + virtual unsigned int capacity() const override; - private: + virtual std::string toString() const override; + +private: + std::unique_ptr<IConditionMT> m_condition; - std::size_t m_capacity; + std::size_t m_multiplicity; }; #endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.cxx index a602f937d89d..088143641b6c 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.cxx @@ -53,7 +53,7 @@ bool CompoundConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string CompoundConditionMT::toString() const noexcept { +std::string CompoundConditionMT::toString() const { std::stringstream ss; ss << "CompoundConditionMT (" << this << ") Capacity: " << m_capacity << '\n'; for(const auto& el :m_elements){ diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.h index c6f1763d6bbd..afee9f9c322a 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.h @@ -35,7 +35,7 @@ class CompoundConditionMT: public IConditionMT{ virtual unsigned int capacity() const override{return m_capacity;} - std::string toString() const noexcept override; + std::string toString() const override; private: std::vector<ConditionMT> m_elements; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.cxx index a88f89e887f6..87f62bd663b5 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.cxx @@ -79,7 +79,7 @@ DijetConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string DijetConditionMT::toString() const noexcept { +std::string DijetConditionMT::toString() const { std::stringstream ss; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.h index 7a1be3e9d7c9..30dd5f02eac1 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.h @@ -38,7 +38,7 @@ class DijetConditionMT: public IConditionMT{ bool isSatisfied(const HypoJetVector&, const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - std::string toString() const noexcept override; + std::string toString() const override; virtual unsigned int capacity() const override{return s_capacity;} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.cxx index 004a0830ffd8..95f35a43e783 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.cxx @@ -59,7 +59,7 @@ DijetDEtaConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string DijetDEtaConditionMT::toString() const noexcept { +std::string DijetDEtaConditionMT::toString() const { std::stringstream ss; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.h index 3eae0b759e0d..99057cecf2a3 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.h @@ -31,7 +31,7 @@ class DijetDEtaConditionMT: public IConditionMT{ bool isSatisfied(const HypoJetVector&, const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - std::string toString() const noexcept override; + std::string toString() const override; virtual unsigned int capacity() const override{return s_capacity;} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.cxx index 2d425350a680..331fa0ee6e79 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.cxx @@ -60,7 +60,7 @@ DijetDPhiConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string DijetDPhiConditionMT::toString() const noexcept { +std::string DijetDPhiConditionMT::toString() const { std::stringstream ss; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.h index 1665b15593ac..c906dc198efa 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.h @@ -32,7 +32,7 @@ class DijetDPhiConditionMT: public IConditionMT{ bool isSatisfied(const HypoJetVector&, const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - std::string toString() const noexcept override; + std::string toString() const override; virtual unsigned int capacity() const override{return s_capacity;} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.cxx index 2c3794d4df98..09faa0c68371 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.cxx @@ -60,7 +60,7 @@ DijetMassConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string DijetMassConditionMT::toString() const noexcept { +std::string DijetMassConditionMT::toString() const { std::stringstream ss; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.h index 1b070c7da93f..9b6f3f6168c0 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.h @@ -31,7 +31,7 @@ class DijetMassConditionMT: public IConditionMT{ bool isSatisfied(const HypoJetVector&, const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - std::string toString() const noexcept override; + std::string toString() const override; virtual unsigned int capacity() const override{return s_capacity;} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.cxx index 0491bdc2e1ef..60e37d0c1724 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.cxx @@ -49,7 +49,7 @@ EtConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string EtConditionMT::toString() const noexcept { +std::string EtConditionMT::toString() const { std::stringstream ss; ss << "EtConditionMT (" << this << ") " << " Et threshold: " diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.h index fcc51d03037e..6eccf0584364 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.h @@ -32,7 +32,7 @@ class EtConditionMT: public IConditionMT{ virtual unsigned int capacity() const override{return s_capacity;} - std::string toString() const noexcept override; + std::string toString() const override; private: double m_min; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.cxx index 24843e14553f..874c5c337489 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.cxx @@ -50,7 +50,7 @@ EtaConditionAbsMT::isSatisfied(const HypoJetVector& ips, } -std::string EtaConditionAbsMT::toString() const noexcept { +std::string EtaConditionAbsMT::toString() const { std::stringstream ss; ss << "EtaConditionAbsMT (" << this << ") Capacity: " << s_capacity << " etaMin "<< m_min diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.h index 680df3722671..f91f7a1153b1 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.h @@ -31,7 +31,7 @@ class EtaConditionAbsMT: public IConditionMT{ const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; virtual unsigned int capacity() const override{return s_capacity;} - std::string toString() const noexcept override; + std::string toString() const override; private: diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.cxx index 78e8c49fbfbb..99cea4deae50 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.cxx @@ -49,7 +49,7 @@ EtaConditionSignedMT::isSatisfied(const HypoJetVector& ips, } -std::string EtaConditionSignedMT::toString() const noexcept { +std::string EtaConditionSignedMT::toString() const { std::stringstream ss; ss << "EtaConditionSignedMT (" << this << ") etaMin " << m_min diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.h index 8f6e54c1de4d..5b2a8f9fc9a4 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.h @@ -32,7 +32,7 @@ class EtaConditionSignedMT: public IConditionMT{ const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; virtual unsigned int capacity() const override{return s_capacity;} - std::string toString() const noexcept override; + std::string toString() const override; private: diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.cxx index 5b93f2b60402..d3159eed9a28 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.cxx @@ -59,7 +59,7 @@ EtaEtAsymmetricConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string EtaEtAsymmetricConditionMT::toString() const noexcept { +std::string EtaEtAsymmetricConditionMT::toString() const { std::stringstream ss; ss << "EtaEtAsymmetric ConditionMT: etaMin " << m_etaMin diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.h index 833a5d4975e0..406f2339f852 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.h @@ -32,7 +32,7 @@ class EtaEtAsymmetricConditionMT: public IConditionMT{ bool isSatisfied(const HypoJetVector&, const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - std::string toString() const noexcept override; + std::string toString() const override; virtual unsigned int capacity() const override {return s_capacity;} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.cxx index b0ebff00139a..ff62ff3ee0aa 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.cxx @@ -57,7 +57,7 @@ EtaEtConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string EtaEtConditionMT::toString() const noexcept { +std::string EtaEtConditionMT::toString() const { std::stringstream ss; ss << "EtaEtConditionMT (" << this << ") etaMin " << m_etaMin diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.h index 041ec51bdf3f..f6d2167b9acd 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.h @@ -34,7 +34,7 @@ class EtaEtConditionMT: public IConditionMT{ const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; virtual unsigned int capacity() const override{return s_capacity;} - std::string toString() const noexcept override; + std::string toString() const override; private: diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx index f4f36af1ae37..52bc8957cd4f 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx @@ -510,10 +510,10 @@ bool FastReducer::capacitySatisfied(std::size_t ind, // of Conditions which represent multiple identical conditions. auto jgMult = m_satisfiedBy.at(ind).size(); - auto capSat = m_conditions.at(ind)->capacitySatisfied(jgMult, collector); + auto capSat = m_conditions.at(ind)->multiplicitySatisfied(jgMult, collector); if (!capSat and collector) { collector->collect("FastReduce", "Condition " + std::to_string(ind) - + " unsatisfied capacity, aborting"); + + " unsatisfied multiplicity, aborting"); } return capSat; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/HTConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/HTConditionMT.cxx index bcc456d1a53a..2f92a1fd0fe4 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/HTConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/HTConditionMT.cxx @@ -55,7 +55,7 @@ HTConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string HTConditionMT::toString() const noexcept { +std::string HTConditionMT::toString() const { std::stringstream ss; ss << "HTConditionMT: htMin: " << m_htMin; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/HTConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/HTConditionMT.h index e8c6495f9ad2..62116f422f23 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/HTConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/HTConditionMT.h @@ -41,7 +41,7 @@ class HTConditionMT: public IConditionMT{ bool isSatisfied(const HypoJetVector&, const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - std::string toString() const noexcept override; + std::string toString() const override; virtual unsigned int capacity() const override {return s_capacity;} private: diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h index 033ce81570cf..c49ea11ab1f8 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ICapacityCheckedCondition.h @@ -30,8 +30,8 @@ class ICapacityCheckedCondition: public IConditionMT { public: virtual ~ICapacityCheckedCondition(){} - virtual bool capacitySatisfied(std::size_t jgMultiplicity, - const Collector&) const = 0; + virtual bool multiplicitySatisfied(std::size_t jgMultiplicity, + const Collector&) const = 0; }; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/IConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/IConditionMT.h index 625d9f460b3e..6602ae1ec015 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/IConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/IConditionMT.h @@ -27,7 +27,7 @@ class IConditionMT { const std::unique_ptr<ITrigJetHypoInfoCollector>&) const = 0; virtual unsigned int capacity() const = 0; - virtual std::string toString() const noexcept = 0; + virtual std::string toString() const = 0; }; #endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/JVTConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/JVTConditionMT.cxx index 33ae1d96e902..4c1d1478f2ae 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/JVTConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/JVTConditionMT.cxx @@ -69,7 +69,7 @@ bool JVTConditionMT::isSatisfied(const HypoJetVector& ips, const std::unique_ptr } -std::string JVTConditionMT::toString() const noexcept { +std::string JVTConditionMT::toString() const { std::stringstream ss; const void* address = static_cast<const void*>(this); diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/JVTConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/JVTConditionMT.h index 26a664897aa5..c6e30f571370 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/JVTConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/JVTConditionMT.h @@ -27,7 +27,7 @@ class JVTConditionMT: public IConditionMT{ bool isSatisfied(const HypoJetVector&, const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - std::string toString() const noexcept override; + std::string toString() const override; virtual unsigned int capacity() const override{return s_capacity;} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.cxx index 69afa905687c..a21f70f9bd2a 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.cxx @@ -69,7 +69,7 @@ MomentConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string MomentConditionMT::toString() const noexcept { +std::string MomentConditionMT::toString() const { std::stringstream ss; ss << "MomentConditionMT (" << this << ") " << " Et threshold: " diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.h index 7df35ec1517c..2b64cd20afb5 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.h @@ -32,7 +32,7 @@ class MomentConditionMT: public IConditionMT{ virtual unsigned int capacity() const override{return s_capacity;} - std::string toString() const noexcept override; + std::string toString() const override; private: double m_min; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.cxx index b89e470090ea..7c43be00a41e 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.cxx @@ -63,7 +63,7 @@ QjetMassConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string QjetMassConditionMT::toString() const noexcept { +std::string QjetMassConditionMT::toString() const { std::stringstream ss; diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.h index 97b7a6b51836..0ded1bfecfd9 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.h @@ -31,7 +31,7 @@ class QjetMassConditionMT: public IConditionMT{ bool isSatisfied(const HypoJetVector&, const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - std::string toString() const noexcept override; + std::string toString() const override; virtual unsigned int capacity() const override{return s_capacity;} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.cxx index 1b4236cc8b24..ac6208366c8f 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.cxx @@ -50,7 +50,7 @@ SMCConditionMT::isSatisfied(const HypoJetVector& ips, } -std::string SMCConditionMT::toString() const noexcept { +std::string SMCConditionMT::toString() const { std::stringstream ss; ss << "SMCConditionMT (" << this << ") mass min " << m_min diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.h index 67d3e7f0ee97..3f81c4362a8b 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.h @@ -31,7 +31,7 @@ class SMCConditionMT: public IConditionMT{ const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; virtual unsigned int capacity() const override{return s_capacity;} - std::string toString() const noexcept override; + std::string toString() const override; private: diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.cxx index c10020b311bf..6f3e363d5c4f 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.cxx @@ -87,7 +87,7 @@ bool TLAConditionMT::isSatisfied(const HypoJetVector& ips, m_massMax > mass; } -std::string TLAConditionMT::toString() const noexcept { +std::string TLAConditionMT::toString() const { std::stringstream ss; ss << "TLAConditionMT: etaMin " << m_etaMin diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.h index ca2cff693e35..fbb7c6119fc2 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.h @@ -40,7 +40,7 @@ class TLAConditionMT: public IConditionMT{ bool isSatisfied(const HypoJetVector&, const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - std::string toString() const noexcept override; + std::string toString() const override; virtual unsigned int capacity() const override {return s_capacity;} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.cxx index 123e6b6610aa..94be844cd6b0 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.cxx @@ -29,7 +29,7 @@ ConditionPtr TrigJetConditionConfig_capacitychecked::getCapacityCheckedCondition() const { std::vector<ConditionMT> elements; for(const auto& el : m_elementConditions){ - elements.push_back(el->getCapacityCheckedCondition()); + elements.push_back(el->getCondition()); } auto cc = std::make_unique<CompoundConditionMT>(elements); diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.h index 35485469b294..7f7b4031ef89 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_capacitychecked.h @@ -8,6 +8,7 @@ #include "CapacityCheckedConditionsDefs.h" #include "ITrigJetCapacityCheckedConditionConfig.h" +#include "ITrigJetConditionConfig.h" #include "AthenaBaseComps/AthAlgTool.h" class TrigJetConditionConfig_capacitychecked: @@ -27,7 +28,7 @@ public extends<AthAlgTool, ITrigJetCapacityCheckedConditionConfig> { private: - ToolHandleArray<ITrigJetCapacityCheckedConditionConfig> m_elementConditions{ + ToolHandleArray<ITrigJetConditionConfig> m_elementConditions{ this, "conditionMakers", {}, "elemental conditions makers for a leaf node."}; -- GitLab From d0ca55ffe70df54894f77966374294c04dda2127 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Wed, 18 Nov 2020 17:05:50 +0100 Subject: [PATCH 14/17] Add Conditi. Add doc files.on multiplicity check to FastReducer::propgate_() --- .../Python/JetTriggerPythonConfiguration.tex | 205 ++++++++++++------ .../doc/Python/Pictures/Config_seq.tex | 52 ++--- .../TreeParameterExpanderVisitor_seq.tex | 61 ++++++ .../doc/Python/Pictures/class_overview.tex | 21 +- .../doc/Python/Pictures/hypoStateMachine.tex | 91 ++++++++ .../doc/Python/Pictures/node.tex | 30 +-- .../TrigHLTJetHypo/src/FastReducer.cxx | 7 +- 7 files changed, 321 insertions(+), 146 deletions(-) create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/TreeParameterExpanderVisitor_seq.tex create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/hypoStateMachine.tex diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/JetTriggerPythonConfiguration.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/JetTriggerPythonConfiguration.tex index 135ba2a3252a..d8058c3980af 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/JetTriggerPythonConfiguration.tex +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/JetTriggerPythonConfiguration.tex @@ -74,16 +74,16 @@ Provide the initialisation for any JetHypoAlgTool and its helper AlgTool classes % \end{wrapfigure} AlgTools to be intialised in yellow \begin{minipage}[T]{0.25\linewidth} \begin{small} - Yellow: AlgTools to be intialised by jet~trig python\\ - {\bf C++ and python classes have same structure} + {\bf Yellow:} AlgTools to be initialised by jet~trig python\\ + {\it C++ \& python classes are isomorphic} - \vspace{3mm} - Red: Non-component objects instantiated by HelperConfig + \hrulefill\\ + {\bf Red:} Non-component objects instantiated by HelperConfig \end{small} \end{minipage} \end{block} \begin{block}{} - Experience so far: different hypo approaches can be encapsulated in the Matcher (FastReduction, AlgTrees, Maxflow...) + Experience from Run 2: different hypo approaches can be encapsulated in the Matcher (FastReduction, AlgTrees, Maxflow...) \end{block} } @@ -112,9 +112,9 @@ Provide the initialisation for any JetHypoAlgTool and its helper AlgTool classes \begin{block}{View from 35 000 ft} \begin{enumerate} - \item Trigger fromework sends us a chain dict. - \item chain dict $\rightarrow$ chain label - \item chain label $\rightarrow$ node tree + \item Trigger framework sends a chain dict. + \item chain dict $\rightarrow$ chain label (hierarchical tree representation) + \item chain label $\rightarrow$ node tree (hierarchical tree representation) \item process node tree to recover python AlgTools \end {enumerate} \end{block} @@ -131,7 +131,7 @@ Provide the initialisation for any JetHypoAlgTool and its helper AlgTool classes \end{itemize} \end{block} - \begin{block}{chain label examples: scenario $\neq$ `simple'} + \begin{block}{chain label examples: scenario $\neq$ `simple', nested scenarios} and([]\\ \makebox[1cm]{}{simple([(30et,500neta)(30et,peta500)])}\\ \makebox[1cm]{}combgen([(10et,0eta320)]\\ @@ -144,39 +144,29 @@ Provide the initialisation for any JetHypoAlgTool and its helper AlgTool classes \frame{ - \frametitle{Concepts} - \begin{block}{TrigJetHypoToolHelperMT} - \begin{description} -\item[Tree] A graph where each node has a single parent, except the rroot node. Each node as zero or more children. -\item [Jet Group] a vector of jets -\item[Condition] A predicate that accepts a jet group. -\item[Grouper] A device that splits jet groups into smaller jet groups -\item[Matcher] A device that presents jet froups to Conditions -\end{description} - \end{block} - \begin{block}{FastReduction} - \begin{description} -\item[ Condition Tree] Expresses hierarchical relations among Conditions -\item[FastReducer] Class that performs FastReduction -\end{description} -\end{block} - } -\frame{ - \frametitle{Input to the jet hypo python configuration} +\frametitle{chainDict $\rightarrow$ chain label (chanDict2jetLabel.py)} +% \frametitle{What's the deal with the `simple' scenario?} +\begin{block}{hypo scenarios} +`hypoScenario' is a key in the chainDict. Its values decides how the chain label is constructed. +\end{block} -\begin{block}{ChainDict} +\begin{block}{hypoScenario = `simple'} \begin{itemize} -\item Menu code: chain name $\rightarrow$ chainDict (type dict) -\item chainDict includes a key 'scenario', value type = string. -\item if scenario is `simple', use other entries in the chain dict to construct the chain label (string) -\item otherwise, use the chainDict['scenario'] as the chain label. +\item The `simple' scenario maintains continuity with Run 2 chains. +\item The chain names and chainDict remain as before remain as in Run 2. +\item The jet trig python code assembles the chain label from various entries in the chainDict. \end{itemize} -\end{block} +\end{block} -\begin{block}{why is scenario `simple' different?} -To maintain the approach used in Run 2 +\begin{block}{otherwise...} +\begin{itemize} +\item The `hypoScenario' key in the chain dict contains the chain label +which is taken from the chain name. {\it ex:}~HLT\_j0\_{\color{red}vbenf}{\color{blue}SEP30etSEP34mass35SEP50fbet}\_L1J20 +\item scenario ({\color{red}vbenf}) identifies a string template which is filled in using {\color{blue}parameters} in hypoScenario. +\end{itemize} \end{block} + } \frame{ @@ -184,7 +174,7 @@ To maintain the approach used in Run 2 \begin{block}{chain label vs node treel} \begin{center} \begin{tabular}{|l|c|c|} \hline - & label & node tree \\ \hline + & ChainLabel & node tree \\ \hline type & string & node objects \\ par-child &nested parens & child elements \\ extendable & no & typically via visitors \\ @@ -213,20 +203,16 @@ Chain label and Node tree: same tree structure. Nodes allow python mechanics to } \frame{ - \frametitle{chain label $\rightarrow$ node tree} + \frametitle{ChainLabel $\rightarrow$ node tree: Generalities} \begin{block}{chain label} \begin{itemize} \item chain label is structured - legal chain labels conform to a syntax \item the syntax allows for the prescription of a tree through nested parentheses. - \item chain label contains information on Conditions (cut predicates) + \item chain label contains information on Conditions (cut vars, window cuts) and child nodes. \end{itemize} \end{block} -\begin{block}{} -chain label this describes a graph, with Conditions being associated with certain nodes. The nodes are organised -in a tree. - \end{block} - -\begin{block}{conversion to a a node tree} + +\begin{block}{conversion to a node tree} \begin{itemize} \item node tree is tree made of node instances, Each node contains data, and a list of child nodes. \item the node tree has the strupwdcture prescribed by the chain label. @@ -237,23 +223,57 @@ in a tree. } \frame{ - \frametitle{What the jet hypo python configuration does} -Takes the chainDict obtained by processing the chain name (menu group), and produce the python version of -the jet hypo AlgTool and its Helper tool - -The Helper tool knows nothing about the specifics of the chain or the hypo strategy - it coordinates only its Grouper and its Matcher. - -The correct Grouper and Matcher are hardwired into the FastReductionConfigTool. This supplies the tree structure (as a vector of ints) -It obtains the Conditions for the Matcher from its own ConditionsConfigTools +\frametitle{ChainLabel Syntax} + +Alphabet: $\Sigma=$\{[a-z][0-9],\}. +\begin{center} +\begin{tabular}{lll} +{\it lower} & $\rightarrow$ & $a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z$\\ +{\it digit \it} & $\rightarrow$ &$0|1|2|3|4|5|6|7|8|9$\\ +{\it parR}& $\rightarrow$ & ) \\ +{\it parL } & $\rightarrow$ &( \\ +{\it braL} & $\rightarrow$ &[ \\ +{\it braR \it} & $\rightarrow$ &] \\ +{\it comma \it} & $\rightarrow$ &, \\ +{\it scenario \it}& $\rightarrow$ & {\it name, parL, windowList, \{scenario\}, parR }\\ +{\it name \it} & $\rightarrow$ &{\it lower,\{lower\}} \\ +{\it windowList \it} & $\rightarrow$ & {\it braL window, \{comma, window\}, braR \it}\\ +{\it window \it} & $\rightarrow$ &{\it \{digit\}, lower, \{lower\}, \{digit\}} \\ +{\it scenarioList \it} & $\rightarrow$ &{\color{red}{\it scenario} $|$ {\it scenario scenarioList} } \\ +{\it label$_S$ \it} & $\rightarrow$ &{\it scenarioList} \\ +\end{tabular} +\end{center} + +The scenarioList is what allows nesting (recursion). } +\frame{ + \frametitle{ChainLabel $\rightarrow$ node tree: Parsing} +% \begin{block}{} +% \begin{itemize} +% \item The parser checks the ChainLabel obeys the syntax (else ERROR) +% \item Creates an isomorphic node tree +% \end{itemize} +% \end{block} + + \begin{block}{} + \begin{minipage}[T]{0.5\linewidth} + \includegraphics[trim = 30mm 0mm 30mm 30mm, clip, width= \linewidth]{Pictures/hypoStateMachine} + \end{minipage}% + \begin{minipage}[T]{0.5\linewidth} + The parser ensures correct ChainLabel syntax (else Error Condition), node tree ismorphic to the ChainLabel. + \end{minipage} + \end{block} + +} + \frame{ \frametitle{Recursive Classes = Trees} \begin{block}{UML representations of a tree} \includegraphics[trim = 10mm 230mm 0mm 20mm, clip, width= 1.0\linewidth]{Pictures/recursive} \end{block} - \begin{block}{Visitor and Trees} + \begin{block}{Visitors traverse Trees} \begin{minipage}[T]{0.55\linewidth} \includegraphics[trim = 10mm 195mm 60mm 25mm, clip, width= 1.0\linewidth]{Pictures/visitor} \end{minipage}% @@ -271,13 +291,14 @@ It obtains the Conditions for the Matcher from its own ConditionsConfigTools \frametitle{The visitors, and what they do} % \begin{minipage}[T]{0.7\linewidth} \begin{block}{HLT\_j260\_320eta490\_L1J75\_31ETA49} - \includegraphics[trim = 10mm 190mm 0mm 10mm, clip, width= 0.8\linewidth]{Pictures/node} - \end{block} - %\end{minipage}% - - \begin{block}{T} + \includegraphics[trim = 10mm 180mm 0mm 20mm, clip, width= 0.8\linewidth]{Pictures/node} + + \begin{description} +\item[TreeParameterExpander\_visitor] Modifies node: attach a conf\_attr list of dictionaries +\end{description} +\end{block} +\begin{block}{} \begin{description} -\item[TreeParameterExpander\_ visitor] Modifies node: attach a conf\_attr list of dictionaries \item[ConditionsToolSetterFastReduction\_visitor] Modifies self: attaches a TrigJetHypoToolHelperMT instance \end{description} \end{block} @@ -285,16 +306,60 @@ It obtains the Conditions for the Matcher from its own ConditionsConfigTools \frame { - \frametitle{TrigJetHypoToolHelperMT instance} - \includegraphics[trim = 10mm 210mm 0mm 10mm, clip, width= \linewidth]{Pictures/helpertool_instance} - - Four AlgTools are visible here: - \begin{description} -\item[TrigJetHypoToolHelperMT] C++ version will use a Matcher and a Grouper to match jet Groups to confitions -\item [TrigJetHypoToolConfig\_fastreduction] Supplies the FastReduction Matcher and Grouper to the Helper -\item [ToolHandleArray] Two ConditionMakers that supply the AcceptAll and Compound Conditions used by the Config tool -to construct the Matcher. -\end{description} + \frametitle{Python TrigJetHypoTool creation: Sequence Overview} + \begin{block}{} + \includegraphics[trim = 0mm 0mm 0mm 0mm, clip, width= \linewidth]{Pictures/Config_seq} + \end{block} + } + + + \frame +{ + \frametitle{Python TrigJetHypoTool creation: TreeExpander\_Visitor} + \begin{block}{} + \includegraphics[trim = 0mm 0mm 0mm 0mm, clip, width= \linewidth]{Pictures/TreeParameterExpanderVisitor_seq} + \end{block} + } + + \frame +{ + \frametitle{Python TrigJetHypoTool creation: TreeToolSetterFastReduction Visitor} + \begin{block}{} + \begin{minipage}[T]{0.45\linewidth} + \includegraphics[trim = 0mm 0mm 100mm 0mm, clip, width= \linewidth]{Pictures/ConditionsToolSetterFastreduction_seq} + \end{minipage}% + \begin{minipage}[T]{0.55\linewidth} + Non-leaf nodes $\rightarrow$ AcceptAll nodes\\ + Collect information from tree to: + \begin{itemize} + \item build tree vector + \item instantiate ConditionMakers + \end{itemize} + \end{minipage} + + \end{block} } + + \end{document} + +\frame{ + \frametitle{Concepts} + \begin{block}{TrigJetHypoToolHelperMT} + \begin{description} +\item[Tree] A graph where each node has a single parent, except the rroot node. Each node as zero or more children. +\item [Jet Group] a vector of jets +\item[Condition] A predicate that accepts a jet group. +\item[Grouper] A device that splits jet groups into smaller jet groups +\item[Matcher] A device that presents jet froups to Conditions +\end{description} + \end{block} + \begin{block}{FastReduction} + \begin{description} +\item[ Condition Tree] Expresses hierarchical relations among Conditions +\item[FastReducer] Class that performs FastReduction +\end{description} +\end{block} + } + diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex index c0e6c0ec60b7..ca40ecdb9f2f 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/Config_seq.tex @@ -41,52 +41,28 @@ \umlcreatecall[class=Node, x=16.5]{parser}{tree} \end{umlcall} \umlcreatecall[class=TreeParameterExpander, x=13.7]{trigJetHypoToolHelperFromDict} {visitor} - \begin{umlcall}[op={accept(visitor)}, dt=5]{trigJetHypoToolHelperFromDict}{tree} - \end{umlcall} - \begin{umlcall}[op={accept(t-setter)}, dt=5]{trigJetHypoToolHelperFromDict}{tree} - \begin{umlcall}[op={mod(tree)}, dt=5]{tree}{t-setter} - \umlcreatecall[class=TrigJetHypoHelperTool, x=23]{t-setter} {helper} - \begin{umlcallself}[op=attach(helper)]{t-setter} - \end{umlcallself} + \begin{umlfragment}[type=navigate tree] + \begin{umlcall}[op={accept(visitor)}, dt=5]{trigJetHypoToolHelperFromDict}{tree} + \end{umlcall} + \end{umlfragment} + \begin{umlcall}[op={mod(tree)}, dt=5]{trigJetHypoToolHelperFromDict}{t-setter} + \begin{umlfragment}[type=navigate tree] + \begin{umlcall}[op={accept(self)}, dt=5]{t-setter}{tree} \end{umlcall} + \end{umlfragment} + \umlcreatecall[class=TrigJetHypoHelperTool, x=23]{t-setter} {helper} + \begin{umlcallself}[op=attach(helper)]{t-setter} + \end{umlcallself} \end{umlcall} + \end{umlcall} \begin{umlcall}[op={attach(helper)}, dt=5]{trigJetHypoToolFromDict}{tool} \end{umlcall} \end{umlcall} + \end{umlseqdiag} - - -%\umlsimpleclass{TrigJetHypoAlgMT}{ -%}{} -% -%\umlsimpleclass[right=4cm of TrigJetHypoAlgMT] {TrigJetHypoToolMT}{ -%}{} -%\umlsimpleclass[below=2cm of TrigJetHypoToolMT] {TrigJetHypoToolHelper}{}{} -%\umlclass[left=3cm of TrigJetHypoToolHelper, type=Interface] {ITrigJetHypoToolConfig}{}{+ getMatcher()\\ -%+ getGrouper()\\} -%\umlclass[below=2cm of ITrigJetHypoToolConfig] {TrigJetHypoToolConfig-fastreducer}{}{- getConditions\\ -%} -% -%\umlclass[right=3cm of TrigJetHypoToolConfig-fastreducer, type=Interface] {ITrigJetConditionConfig}{}{+getCondition()} -% -%\umlsimpleclass[below left=2.5cm and -1.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-et} -%\umlsimpleclass[below =3.5cm and -0.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-eta} -%\umlsimpleclass[below right =4.5cm and -3.5 of ITrigJetConditionConfig] {TrigJetConditionConfig-moment} -% -% -%\umluniassoc[mult=*]{TrigJetHypoAlgMT}{TrigJetHypoToolMT} -%\umluniassoc[mult=1]{TrigJetHypoToolMT}{TrigJetHypoToolHelper} -%\umluniassoc[mult=1]{TrigJetHypoToolHelper}{ITrigJetHypoToolConfig} -%\umluniassoc[mult=*]{TrigJetHypoToolConfig-fastreducer}{ITrigJetConditionConfig} -%\umlimpl{TrigJetHypoToolConfig-fastreducer}{ITrigJetHypoToolConfig} -%\umlimpl{TrigJetConditionConfig-et}{ITrigJetConditionConfig} -%\umlimpl{TrigJetConditionConfig-eta}{ITrigJetConditionConfig} -%\umlimpl{TrigJetConditionConfig-moment}{ITrigJetConditionConfig} -% -% - \end{tikzpicture} +JC: abbreviation for TrigJetToolConfig.py \end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/TreeParameterExpanderVisitor_seq.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/TreeParameterExpanderVisitor_seq.tex new file mode 100644 index 000000000000..367437df048c --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/TreeParameterExpanderVisitor_seq.tex @@ -0,0 +1,61 @@ +\documentclass[11pt]{amsart} +\usepackage[left=10px,right=10px,top=10px,bottom=10px,paperwidth=12in]{geometry} % See geometry.pdf to learn the layout options. There are lots. +%\geometry{a4paper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{xstring} +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage[english]{babel} +\usepackage{tikz} +\usepackage{ifthen} +\usepackage{calc} +%\usepackage{pfgopts} +\usepackage{tikz-uml} +\usetikzlibrary{positioning} +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} +%\maketitle +%\section{} +%\subsection{} + + +\begin{tikzpicture} +\begin{umlseqdiag} +\umlobject [class=JC, x=9.5] {trigJetHypoToolHelperFromDict} +\umlobject [class=Node, x=27.5] {tree} +\umlcreatecall[class=TreeParameterExpander, x=13.7, dt=10]{trigJetHypoToolHelperFromDict} {visitor} +\begin{umlcall}[op={mod(tree)}]{trigJetHypoToolHelperFromDict}{visitor} + \umlcreatecall[class=TreeParameterExpander-simple, x=18.7]{visitor}{expander} + \begin{umlcall}[op={mod(tree)}, dt=5]{visitor}{expander} + \begin{umlcall}[op={accept(visitor)}, dt=5]{expander}{tree} + \begin{umlfragment} [type=loop, name=childloop] + \begin{umlcall}[op={mod(node=self)}]{tree}{expander} + \end{umlcall} + \begin{umlcreatecall}[class=ConditionDictMaker, x=25]{expander}{cdm} + \end{umlcreatecall} + \begin{umlcall}[op={makeDict(node.parameters)}, return=dict, dt=5]{expander}{cdm} + \end{umlcall} + \begin{umlcall} [op={attach(dict)}, dt=5, name=nodemod] {expander}{tree} + \end{umlcall} + \end{umlfragment} + \end{umlcall} + + \umlnote[x=23, y = -13, width=150]{childloop}{navigate tree by modifing child nodes, then self} + \end{umlcall} +\end{umlcall} + +\umlnote[x=3]{trigJetHypoToolHelperFromDict}{using a visitor, for each node in a Conditions tree, attach a dictionary of elemental conditions and their explicit values} +\end{umlseqdiag} + + +\end{tikzpicture} + + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/class_overview.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/class_overview.tex index 742a99e205fa..82ff8199e795 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/class_overview.tex +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/class_overview.tex @@ -28,12 +28,13 @@ \begin{tikzpicture} -\umlsimpleclass[x=0, y=2]{TrigJetHypoAlg} +\umlsimpleclass[x=0, y=2, fill=white]{TrigJetHypoAlg} \umlsimpleclass[x=0, y=0]{TrigJetHypoTool} \umlsimpleclass[x=0, y=-2]{TrigJetHypoToolHelper} -\umlsimpleclass[x=-6, y=-2, fill=white]{FastReductionMatcher} -\umlsimpleclass[x=6, y=-2, fill=white]{TrigJetGrouper} -\umlsimpleclass[x=-6, y=-4, fill=white]{FastReducer} +\umlsimpleclass[x=-7, y=-2, fill=white]{IMatcher} +\umlsimpleclass[x=-7, y=-4, fill=red!20]{FastReductionMatcher} +\umlsimpleclass[x=5, y=-2, fill=red!20]{TrigJetGrouper} +\umlsimpleclass[x=-7, y=-6, fill=red!20]{FastReducer} \umlclass[x=0, y=-4]{TrigJetHypoTooHelperConfig-fastreduction}{+ getMatcher()\\+getGrouper()\\}{- treeVector:list$<$int$>$} @@ -43,14 +44,16 @@ \umluniassoc[mult=1, pos=0.65]{TrigJetHypoTool}{TrigJetHypoToolHelper} \umluniassoc[mult=1, pos=0.65]{TrigJetHypoToolHelper}{TrigJetHypoTooHelperConfig-fastreduction} \umluniassoc[mult=*, pos=0.65]{TrigJetHypoTooHelperConfig-fastreduction}{ConditionMaker} -\umluniassoc[mult=1, pos=0.65]{TrigJetHypoToolHelper}{FastReductionMatcher} +\umluniassoc[mult=1, pos=0.65]{TrigJetHypoToolHelper}{IMatcher} +\umlimpl[pos=0.65]{FastReductionMatcher}{IMatcher} \umluniassoc[mult=1, pos=0.65]{TrigJetHypoToolHelper}{TrigJetGrouper} \umluniassoc[mult=1, pos=0.65]{FastReductionMatcher}{FastReducer} - -\umlnote[x=6, y=0]{TrigJetHypoToolHelper}{No semantics} -\umlnote[x=-6, y=-0]{FastReductionMatcher}{semantics here} -\umlnote[x=6, y=-7]{ConditionMaker}{Provide a Condition for the Matcher} +\umlnote[x=-7, y=2, width=140]{TrigJetHypoAlg}{Initialised by trig framework\\- not jet trig python} +\umlnote[x=-7, y=0, width=140]{TrigJetHypoTool}{Trig framework interaction\\Delegate work to Helper} +\umlnote[x=4, y=0]{TrigJetHypoToolHelper}{No semantics} +\umlnote[x=5, y=-8, width=100]{ConditionMaker}{Provides 1 Condition for the Matcher} +\umlnote[x=-9, y=-8, width=100]{FastReducer}{Semantics and key data structures here} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/hypoStateMachine.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/hypoStateMachine.tex new file mode 100644 index 000000000000..e39824d02718 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/hypoStateMachine.tex @@ -0,0 +1,91 @@ +\documentclass[11pt]{amsart} +\usepackage{geometry} % See geometry.pdf to learn the layout options. There are lots. +\geometry{letterpaper} % ... or a4paper or a5paper or ... +%\geometry{landscape} % Activate for for rotated page geometry +%\usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{epstopdf} +\usepackage{tikz} +\usetikzlibrary{automata} +\usetikzlibrary{positioning} + +\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} + +\title{Brief Article} +\author{The Author} +%\date{} % Activate to display a given date or no date + +\begin{document} + +\begin{tikzpicture}[node distance=3cm, on grid, semithick, inner sep= 2pt]%, bend angle=45] + +\node [state] (q_1) {$q_1$}; +\node [initial right, state, below right = of q_1] (q_0) {$q_0$}; +\node [state] (q_2) [above left = of q_1]{$q_{2}$}; +\node [state] (q_3) [above right= of q_1]{$q_3$}; +\node [state] (q_4) [above right = of q_3]{$q_4$}; +\node [state] (q_5) [right=of q_4] {$q_5$}; +\node [state] (q_6) [above right=of q_5] {$q_6$}; +\node [state, accepting] (q_7) [below right=of q_5] {$q_7$}; +\node [state, accepting] (q_e) [below right= of q_3] {$e$}; +\node [state] (q_8) [right =of q_7] {$q_8$}; +\node [state] (q_9) [below right=of q_0] {$q_9$}; + +\path [->] + (q_0) [bend left] edge node {C} (q_1) + (q_0) edge node {K} (q_e) + (q_1) edge node {K}(q_e) + (q_1) [bend left] edge node {(}(q_3) + (q_1) [bend left] edge node {C}(q_2) + (q_2) [bend left] edge node {$\epsilon$}(q_1) + (q_3) [bend left] edge node {$\epsilon$}(q_4) + (q_4) edge node {K}(q_e) + (q_4) edge node {[}(q_5) + (q_5) edge node {C,D,Co} (q_6) + (q_6) edge node {$\epsilon$} (q_5) + (q_7) [bend left] edge node {)}(q_8) + (q_8) [bend left] edge node {$\epsilon$}(q_7) + (q_5) [bend left] edge node {]}(q_7) + (q_5) edge node {K}(q_e) + (q_7) edge node {K}(q_e) + (q_7) edge node {C}(q_9) + (q_9) edge node {$\epsilon$}(q_1) + ; + + +\end{tikzpicture} + +\begin{center} +\begin{tabular}{|l|l|l|} \hline +function & diagram & comment \\ \hline + start & - &\\ + scenario & $q_0$ & expect character, set $1^{st}$ scenario name char\\ + scenario & $q_1, q_2 $ & accumulate scenario name\\ + scenario & $q_3$ & push node stack, clear name\\ + start\_params & $q_4$& expect '['\\ + params & $q_5, q_6$& accumulate scenario parameters\\ + end\_params & $q_7,$& set attr parameters stack top, clear params\\ + end\_params &$q_8$& collapse parens: stack pop; add child; clear name, pars\\ + end\_params &$q_9$& add char to scenario name\\ + error & $e$& raise exception \\ +\hline +\end{tabular} +\end{center} +$$\Sigma = \{\epsilon,a-z0-9][)(,\}.\ \epsilon\text{ is the empty string}$$ + +Abbreviations: +\begin{center} +\begin{tabular}{ll} +C & \{a-z\}\\ +Co& , \\ +D & \{0-9\}\\ +% $\sim$\{\dots\} & $\Sigma$\textbackslash \{\dots\} \\ +K & $\Sigma$\textbackslash \{all other out symbols for the node\} \\ +\end{tabular} +\end{center} + + + + +\end{document} \ No newline at end of file diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/node.tex b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/node.tex index b7b4c883da70..b5b3147221fe 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/node.tex +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/doc/Python/Pictures/node.tex @@ -11,6 +11,7 @@ \usepackage{tikz} \usepackage{ifthen} \usepackage{calc} +\usepackage{pbox} %\usepackage{pfgopts} \usepackage{tikz-uml} \usetikzlibrary{positioning} @@ -36,36 +37,13 @@ string:scenario='simple'\\ string:parameters={\color{red}(260et,320eta490)}\\ list:children=[]\\ - list$<$dict$>$:conf\_attrs={\color{blue}[\{'et', \{'min': '260000.0', 'max': 'inf'\}, 'eta': \{'min': '3.2', 'max': '4.9'\}\}]}\\ + list$<$dict$>$:conf\_attrs={\color{blue}[\{'et': \{'min': '260000.0', 'max': 'inf'\},}\\ \makebox[4cm]{}{\color{blue}'eta': \{'min': '3.2', 'max': '4.9'\}\}]}\\ bool:tree\_top=True\\ } \umluniassoc[mult=0..*, recursive=-90|0|5.6cm, pos=0.95]{Node}{Node} +\umlnote[x = 10, y=2, width=120] {Node}{{\color{red} params} filled in by Parser -%\umlsimpleclass[right=4cm of TrigJetHypoAlgMT] {TrigJetHypoToolMT}{ -%}{} -%\umlsimpleclass[below=2cm of TrigJetHypoToolMT] {TrigJetHypoToolHelper}{}{} -%\umlclass[left=3cm of TrigJetHypoToolHelper, type=Interface] {ITrigJetHypoToolConfig}{}{+ getMatcher()\\ -%+ getGrouper()\\} -%\umlclass[below=2cm of ITrigJetHypoToolConfig] {TrigJetHypoToolConfig-fastreducer}{}{- getConditions\\ -%} -% -%\umlclass[right=3cm of TrigJetHypoToolConfig-fastreducer, type=Interface] {ITrigJetConditionConfig}{}{+getCondition()} -% -%\umlsimpleclass[below left=2.5cm and -1.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-et} -%\umlsimpleclass[below =3.5cm and -0.5cm of ITrigJetConditionConfig] {TrigJetConditionConfig-eta} -%\umlsimpleclass[below right =4.5cm and -3.5 of ITrigJetConditionConfig] {TrigJetConditionConfig-moment} -% -% -%\umluniassoc[mult=*]{TrigJetHypoAlgMT}{TrigJetHypoToolMT} -%\umluniassoc[mult=1]{TrigJetHypoToolMT}{TrigJetHypoToolHelper} -%\umluniassoc[mult=1]{TrigJetHypoToolHelper}{ITrigJetHypoToolConfig} -%\umluniassoc[mult=*]{TrigJetHypoToolConfig-fastreducer}{ITrigJetConditionConfig} -%\umlimpl{TrigJetHypoToolConfig-fastreducer}{ITrigJetHypoToolConfig} -%\umlimpl{TrigJetConditionConfig-et}{ITrigJetConditionConfig} -%\umlimpl{TrigJetConditionConfig-eta}{ITrigJetConditionConfig} -%\umlimpl{TrigJetConditionConfig-moment}{ITrigJetConditionConfig} -% -% +TreeExpanderVisitor adds defaults, fills in {\color{blue} conf\_attrs}} \end{tikzpicture} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx index 52bc8957cd4f..870b26b0f427 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.cxx @@ -317,8 +317,6 @@ bool FastReducer::propagate_(std::size_t child, // child == 0 do not attempt to process parent of node. if(child == 0){return true;} - // par is parent of the child (and siblings) passed to this method. - bool par_satisfied{false}; // calculate the external product of the jet groups // eg if condition c1 is satisfied by jg11 and jg12, while its only @@ -380,7 +378,6 @@ bool FastReducer::propagate_(std::size_t child, if (m_conditions[par]->isSatisfied(jg, collector)){// par is a tree ind. // get an index for this set of elementarys jhob groups indices - par_satisfied = true; m_satisfiedBy[par].push_back(cur_jg); m_jg2elemjgs[cur_jg] = elem_jgs; @@ -390,6 +387,10 @@ bool FastReducer::propagate_(std::size_t child, next = jg_product.next(collector); } + // check if enough job groups pass the parent condition + bool par_satisfied = + m_conditions[par]->multiplicitySatisfied(m_satisfiedBy[par].size(), + collector); if(collector and !par_satisfied){ collector->collect("FastReducer", "Condition node " + std::to_string(par) + -- GitLab From f8a5c72ff091205a72c28388432949b952b5e880 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Fri, 20 Nov 2020 14:44:32 +0100 Subject: [PATCH 15/17] more het hypo tweaks for the use of CapacityChecked Condition, + some dead code removeal --- .../ConditionsToolSetterFastReduction.py | 3 +- .../python/ConditionsToolSetterTree.py | 257 ------------------ .../TrigHLTJetHypo/python/ToolSetter.py | 183 ------------- .../python/TrigJetHypoToolConfig.py | 26 +- .../TrigHLTJetHypo/python/jetlabel_tester.py | 22 +- .../TrigHLTJetHypo/python/treeVisitors.py | 61 +---- .../src/TrigJetConditionConfig_acceptAll.cxx | 5 +- 7 files changed, 16 insertions(+), 541 deletions(-) delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterTree.py delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/python/ToolSetter.py diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py index ae3da0d3eab1..f1fc114989c1 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py @@ -138,7 +138,7 @@ class ConditionsToolSetterFastReduction(object): outer_condition_tools = [] # loop over elements of node.conf_attrs. The elements are (dict, int) - # in t is multiplicity, dict holds Condition paramters. + # in t is multiplicity, dict holds Condition parameters. for c, mult in node.conf_attrs: condition_tools = [] # elemental conditions for this compounnd ct. for k, v in c.items(): # loop over elemental conditions @@ -292,6 +292,7 @@ class ConditionsToolSetterFastReduction(object): # must have a tool for Gaudi to instantiate in cmap[node.node_id] = self._get_tool_instance('capacitychecked') cmap[node.node_id].conditionMakers = [self._get_tool_instance('all')] + cmap[node.node_id].multiplicity = len(node.children) for cn in node.children: self._fill_conditions_map(cn, cmap) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterTree.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterTree.py deleted file mode 100644 index 22068d617e32..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterTree.py +++ /dev/null @@ -1,257 +0,0 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -"""Instantiates TrigJetHypoToolConfig_flownetwork AlgTool -from a hypo tree.""" - -from __future__ import print_function - - -from AthenaConfiguration.ComponentFactory import CompFactory - -from collections import defaultdict - -class ConditionsToolSetterTree(object): - """Visitor to set instantiated AlgTools to a jet hypo tree""" - - from TrigHLTJetHypo.ConditionsToolSetterFastReduction import ConditionsToolSetterFastReduction - JetMoments = ConditionsToolSetterFastReduction.JetMoments - - def __init__(self, name): - - self.name = name - # for simple, use TrigJetConditionConfig_etaet. Needs to be - # completed because simple can conain any single jet condition - self.tool_factories = { - 'eta': [CompFactory.TrigJetConditionConfig_abs_eta, 0], - 'peta': [CompFactory.TrigJetConditionConfig_signed_eta, 0], - 'neta': [CompFactory.TrigJetConditionConfig_signed_eta, 0], - 'et': [CompFactory.TrigJetConditionConfig_et, 0], - 'djmass': [CompFactory.TrigJetConditionConfig_dijet_mass, 0], - 'djdphi': [CompFactory.TrigJetConditionConfig_dijet_dphi, 0], - 'djdeta': [CompFactory.TrigJetConditionConfig_dijet_deta, 0], - 'qjmass': [CompFactory.TrigJetConditionConfig_qjet_mass, 0], - 'smc': [CompFactory.TrigJetConditionConfig_smc, 0], - 'jvt': [CompFactory.TrigJetConditionConfig_jvt, 0], - 'compound': [CompFactory.TrigJetConditionConfig_compound, 0], - 'leaf': [CompFactory.TrigJetHypoToolConfig_leaf, 0], - 'helper': [CompFactory.TrigJetHypoToolHelperMT, 0], - 'combgen_helper': [CompFactory.CombinationsHelperTool, 0], - 'not': [CompFactory.NotHelperTool, 0], - 'and': [CompFactory.AndHelperTool, 0], - 'agree': [CompFactory.AgreeHelperTool, 0], - 'or': [CompFactory.OrHelperTool, 0], - 'combgen': [CompFactory.TrigJetHypoToolConfig_combgen, 0], - 'partgen': [CompFactory.TrigJetHypoToolConfig_partgen, 0], - } - for var in self.JetMoments: - self.tool_factories['mom'+var] = [CompFactory.TrigJetConditionConfig_moment, 0] - - self.mod_router = { - 'z': self._mod_z, - 'not': self.mod_logical_unary, - 'and': self.mod_logical_binary, - 'agree': self.mod_logical_binary, - 'or': self.mod_logical_binary, - 'combgen': self._mod_combgen, # shared with partgen - 'partgen': self._mod_combgen, # shared with combgen - 'simple': self._mod_leaf, - 'etaet': self._mod_leaf, - 'dijet': self._mod_leaf, - 'qjet': self._mod_leaf, - } - - # map conaining parent child ids for the node - self.treeMap = {0: 0} - - # map containing the a list of Condition factory AlgTools for scenario - self.conditionMakers = defaultdict(list) - - def not_supported_yet(self, node): - raise NotImplementedError( - 'ConditionsToolSetter: scenarion not yet supported: ' + node.scenario) - - - def illegal(self, node): - raise RuntimeError( - 'ConditionsToolSetter: illegal scenario: %s' + node.scenario) - - def _mod_z(self, node): - """z is the root node: process its children""" - - for cn in node.children: - self.mod_router[cn.scenario](cn) - - def mod_logical_binary(self, node): - """Set the HypoConfigTool instance the 'and' and 'or' scenarios - these take two predicates""" - - scen = node.scenario - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - self.tool_factories[scen][1] += 1 - - tool = klass(name=name) - - tool.lhs = node.children[0].tool - tool.rhs = node.children[1].tool - - tool.node_id = node.node_id - tool.parent_id = node.parent_id - - node.tool = tool - - def mod_logical_unary(self, node): - """Set the HypoConfigTool instance for the 'not' scenario - this takes a single predicate""" - - scen = node.scenario - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - self.tool_factories[scen][1] += 1 - - tool = klass(name=name) - - tool.hypoTool = node.children[0].tool - - tool.node_id = node.node_id - tool.parent_id = node.parent_id - - node.tool = tool - - def _mod_combgen(self, node): - """Set the HypoConfigTool instance for the combgen or partgeen scenario - these take different condifiguration tools.""" - - config_tool = self._get_tool_instance(node.scenario) - - compound_condition_tools = self._make_compound_condition_tools(node) - config_tool.conditionMakers = compound_condition_tools - # for combinational nodes, the connection between job groups and - # child helper tools is done via a matcher. Provide the helper - # tool children to the condig class which uses them to - # construct the matcher. - config_tool.children = [child.tool for child in node.children] - - nodestr = 'n%dp%d' % (node.node_id, node.parent_id) - helper_tool = self._get_tool_instance('combgen_helper', extra=nodestr) - - helper_tool.HypoConfigurer = config_tool - - helper_tool.node_id = node.node_id - helper_tool.parent_id = node.parent_id - - node.tool = helper_tool - - def _get_tool_instance(self, key, extra=''): - - klass = self.tool_factories[key][0] - sn = self.tool_factories[key][1] - - name = '%s_%d' % (key, sn) - if extra: name += '_' + extra - tool = klass(name=name) - self.tool_factories[key][1] += 1 - return tool - - def _make_compound_condition_tools(self, node): - - # compound_condition_tools: - # elemental condition maker AlgToolshelper by the compound condition - # AlgTool - compound_condition_tools = [] - for c in node.conf_attrs: # loop over conditions - condition_tools = [] # elemental conditions for this compounnd ct. - for k, v in c.items(): # loop over elemental conditions - condition_tool = self._get_tool_instance(k) - for lim, val in v.items(): # lim: min, max - setattr(condition_tool, lim, val) - - # SPECIAL CASE: Moment tool needs the name of the - # moment as well as the min. max cuts: - if (k.startswith ('mom')): - moment = k[len('mom'):] - if moment in self.JetMoments: - condition_tool.moment = self.JetMoments[moment] - else: raise RuntimeError('%s not supported' % (moment)) - # END SPECIAL CASE - - condition_tools.append(condition_tool) - - # create compound condition from elemental condition - compoundCondition_tool =self._get_tool_instance('compound') - compoundCondition_tool.conditionMakers = condition_tools - - # add compound condition to list - compound_condition_tools.append(compoundCondition_tool) - - return compound_condition_tools - - def _mod_leaf(self, node): - """For a leaf node, fill in - 1. map conaining parent child ids for the node - 2. map conainting the AlgTool used to instanitiate the node Conditions - """ - - self.treeMap[node.node_id] = node.parent_id - - # - # parameters: (10et,0eta320)(20et) - # conf_attrs: [2]: (is a list of length 2) - # defaultdict(<type 'dict'>, {'et': {'max': 'inf', 'min': '10000.0'}, - # 'eta': {'max': '3.2', 'min': '0.0'}}) - # defaultdict(<type 'dict'>, {'et': {'max': 'inf', 'min': '20000.0'}}) - - - # make a config tool and provide it with condition makers - config_tool = self._get_tool_instance('leaf') - compound_condition_tools = self._make_compound_condition_tools(node) - config_tool.conditionMakers = compound_condition_tools - - nodestr = 'n%dp%d' % (node.node_id, node.parent_id) - helper_tool = self._get_tool_instance('helper', extra=nodestr) - - helper_tool.HypoConfigurer = config_tool - helper_tool.node_id = node.node_id - helper_tool.parent_id = node.parent_id - - node.tool = helper_tool - - def report(self): - wid = max(len(k) for k in self.tool_factories.keys()) - rep = '\n%s: ' % self.__class__.__name__ - - rep += '\n'.join( - ['%s: %d' % (k.ljust(wid), v[1]) - for k, v in self.tool_factories.items()]) - - return rep - - - def mod(self, node): - """Entry mode for this module. Uses a (usaully compound) hypo tree node. - - The Tools set in the tree nodes are TrigJetConditionConfig_XXX - objects. These are factories for Condition objects - - The tree use used to - = find the tree vector (node-parent relationsships) - = find the node - Condition factory relationships - = instantiate and return a TrigJetHypoToolConfig_flownetwork instance. - """ - - # navigate the tree filling in node-parent and node- Condtion factory - # relations - - self.mod_router[node.scenario](node) - - def __str__(self): - s = '%s: treeMap: %s, conditionMakers [%d]: ' % ( - self.__class__.__name__, - str(self.treeMap), - len(self.conditionMakers)) - - if self.conditionMakers: - s += '\n' - for cm in self.conditionMakers.values(): - s += cm.__class__.__name__ + '\n' - - return s diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ToolSetter.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ToolSetter.py deleted file mode 100644 index e23af42ec6db..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ToolSetter.py +++ /dev/null @@ -1,183 +0,0 @@ -"""Instantiates AlgTools from parameters stored in a node instance""" - -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -from TrigHLTJetHypo.TrigHLTJetHypoConf import ( - TrigJetHypoToolConfig_simple, - TrigJetConditionConfig_et, - TrigJetConditionConfig_abs_eta, - TrigJetConditionConfig_dijet_mass, - TrigJetConditionConfig_dijet_deta, - TrigJetConditionConfig_dijet_dphi, - TrigJetHypoToolConfig_simple_partition, - TrigJetHypoToolConfig_dijet, - NotHelperTool, - AndHelperTool, - OrHelperTool, - TrigJetHypoToolHelperMT, - CombinationsHelperTool, - TrigJetHypoToolConfig_combgen, - TrigJetHypoToolConfig_partgen, -) - -from TrigHLTJetHypoUnitTests.TrigHLTJetHypoUnitTestsConf import ( - AgreeHelperTool, -) - -class ToolSetter(object): - """Visitor to set instantiated AlgTools to a jet hypo tree""" - - def __init__(self, name): - - self.tool_factories = { - 'simple': [TrigJetHypoToolConfig_simple, 0], - 'simplepartition': [TrigJetHypoToolConfig_simple_partition, 0], - 'not': [NotHelperTool, 0], - 'and': [AndHelperTool, 0], - 'agree': [AgreeHelperTool, 0], - 'or': [OrHelperTool, 0], - 'dijet': [TrigJetHypoToolConfig_dijet, 0], - 'combgen': [TrigJetHypoToolConfig_combgen, 0], - 'partgen': [TrigJetHypoToolConfig_partgen, 0], - 'et': [TrigJetConditionConfig_et, 0], - 'eta': [TrigJetConditionConfig_abs_eta, 0], - 'dijet_mass': [TrigJetConditionConfig_dijet_mass, 0], - 'dijet_deta': [TrigJetConditionConfig_dijet_deta, 0], - 'dijet_dphi': [TrigJetConditionConfig_dijet_dphi, 0], - } - - self.mod_router = { - 'not': self.mod_logical_unary, - 'and': self.mod_logical_binary, - 'agree': self.mod_logical_binary, - 'or': self.mod_logical_binary, - 'simple': self.mod_simple, - 'simplepartition': self.mod_simple, - 'combgen': self.mod_combgen, # shared with partgen - 'partgen': self.mod_combgen, # shared with combgen - 'dijet': self.mod_dijet, - } - - def mod_logical_binary(self, node): - """Set the HypoConfigTool instance the 'and' and 'or' scenarios - these take two predicates""" - - scen = node.scenario - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - self.tool_factories[scen][1] += 1 - - tool = klass(name=name) - - # print 'ToolSetter, setting lhs ', node.children[0].tool - tool.lhs = node.children[0].tool - tool.rhs = node.children[1].tool - - tool.node_id = node.node_id - tool.parent_id = node.parent_id - - node.tool = tool - - - def mod_logical_unary(self, node): - """Set the HypoConfigTool instance for the 'not' scenario - this takes a single predicate""" - - scen = node.scenario - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - self.tool_factories[scen][1] += 1 - - tool = klass(name=name) - - # print 'ToolSetter, setting lhs ', node.children[0].tool - tool.hypoTool = node.children[0].tool - - tool.node_id = node.node_id - tool.parent_id = node.parent_id - - node.tool = tool - - - def mod_combgen(self, node): - """Set the HypoConfigTool instance for the 'not' scenario - this takes a single predicate""" - - scen = node.scenario - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - self.tool_factories[scen][1] += 1 - - config_tool = klass(name=name+'_config') - config_tool.children = [child.tool for child in node.children] - [setattr(config_tool, k, v) for k, v in node.conf_attrs.items()] - - helper_tool = CombinationsHelperTool(name=name+'_helper') - helper_tool.HypoConfigurer = config_tool - - helper_tool.node_id = node.node_id - helper_tool.parent_id = node.parent_id - - node.tool = helper_tool - - def mod_simple(self, node): - """Set the HypoConfigTool instance in a hypo tree node""" - - scen = node.scenario - klass = self.tool_factories[scen][0] - - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - - self.tool_factories[scen][1] += 1 - - - - config_tool = klass(name=name+'_config') - [setattr(config_tool, k, v) for k, v in node.conf_attrs.items()] - - helper_tool = TrigJetHypoToolHelperMT(name=name+'_helper') - helper_tool.HypoConfigurer = config_tool - helper_tool.node_id = node.node_id - helper_tool.parent_id = node.parent_id - - node.tool = helper_tool - - def mod_dijet(self, node): - """Set the HypoConfigTool instance in a hypo tree node""" - - scen = node.scenario - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - - self.tool_factories[scen][1] += 1 - - config_tool = klass(name=name+'_config') - [setattr(config_tool, k, v) for k, v in node.conf_attrs.items()] - helper_tool = TrigJetHypoToolHelperMT(name=name+'_helper') - helper_tool.HypoConfigurer = config_tool - - helper_tool.node_id = node.node_id - helper_tool.parent_id = node.parent_id - - node.tool = helper_tool - - def mod(self, node): - """Set the HypoConfigTool instance according to the scenario. - Note: node.accept must perform depth first navigation to ensure - child tools are set.""" - - self.mod_router[node.scenario](node) - - def report(self): - wid = max(len(k) for k in self.tool_factories.keys()) - rep = '\n%s: ' % self.__class__.__name__ - - rep += '\n'.join( - ['%s: %d' % (k.ljust(wid), v[1]) - for k, v in self.tool_factories.items()]) - - return rep diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py index 692285a23d31..f433cd6f8264 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py @@ -4,7 +4,6 @@ from __future__ import print_function from AthenaConfiguration.ComponentFactory import CompFactory from TrigHLTJetHypo.treeVisitors import TreeParameterExpander -from TrigHLTJetHypo.ConditionsToolSetterTree import ConditionsToolSetterTree from TrigHLTJetHypo.ConditionsToolSetterFastReduction import ( ConditionsToolSetterFastReduction, ) @@ -46,28 +45,8 @@ def trigJetHypoToolHelperFromDict_(chain_label, log.info('trigJetHypoToolFromDict chain_name %s', chain_name) - # debug flag to be relayed to C++ objects - tool = None - - if toolSetter is None: - toolSetter = ConditionsToolSetterTree(chain_name) - tree.accept(modifier=toolSetter) - tool = tree.tool - else: - - if toolSetter.__class__.__name__ in ( - 'ConditionsToolSetterFastReduction', - 'ConditionsToolSetterHT'): - toolSetter.mod(tree) - tool = toolSetter.tool - - elif toolSetter.__class__.__name__ in ( - 'ConditionsToolSetterTree',): - tree.accept(modifier=toolSetter) - tool = tree.tool - else: - toolSetter = ConditionsToolSetterTree(chain_name) - tool = tree.tool + toolSetter.mod(tree) + tool = toolSetter.tool log.debug(visitor.report()) @@ -124,7 +103,6 @@ def trigJetHypoToolFromDict(chain_dict): # controls whether debug visitor is sent to helper tool debug = False # SET TO False WHEN COMMITTING - debug = True # SET TO False WHEN COMMITTING tool.visit_debug = debug log.debug('%s', tool) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/jetlabel_tester.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/jetlabel_tester.py index b65e0c0dd963..696fd829fe2f 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/jetlabel_tester.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/jetlabel_tester.py @@ -5,11 +5,10 @@ from __future__ import print_function from ChainLabelParser import ChainLabelParser from TrigHLTJetHypo.treeVisitors import TreeParameterExpander -from TrigHLTJetHypo.ConditionsToolSetterTree import ConditionsToolSetterTree -from TrigHLTJetHypo.ConditionsToolSetterFlowNetwork import ( - ConditionsToolSetterFlowNetwork,) +from TrigHLTJetHypo.ConditionsToolSetterFastReduction import ( + ConditionsToolSetterFastReduction,) -def compile(label, setter=None, expand=False, do_dump=False, do_print=False): +def compile(label, setter, expand=False, do_dump=False, do_print=False): print ('compile:', label) parser = ChainLabelParser(label, debug=False) @@ -22,13 +21,12 @@ def compile(label, setter=None, expand=False, do_dump=False, do_print=False): visitor = TreeParameterExpander() tree.accept(visitor) + if setter is not None: + setter.mod(tree) + print ('compile: tree.scenario', tree.scenario) - if setter is not None: - if setter.__class__.__name__ == 'ConditionsToolSetterFlowNetwork': - setter.mod(tree) - else: - raise NotImplementedError('Unknown setter ' + setter.__class__.__name__) + if do_print: print ('\nnode dumping top node only:\n') @@ -67,13 +65,11 @@ if __name__ == '__main__': print('index', index) label = test_strings[index] - setter = None - unused_setter0 = ConditionsToolSetterTree('toolSetter') - unised_setter1 = ConditionsToolSetterFlowNetwork('fnToolSetter') + setter = ConditionsToolSetterFastReduction('toolSetterFastReduction') tree = compile(label, setter=setter, expand=True, do_dump=True) - print ('tvec: %s' % str(setter.treeVec)) + print ('tvec: %s' % str(setter.tool)) print ('svec: %s' % setter.shared) print ('conditionsVec [%d]: %s' % (len(setter.conditionsVec), str(setter.conditionsVec))) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py index 3d931d3cbdd5..c4c92e78b557 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/treeVisitors.py @@ -4,8 +4,6 @@ from __future__ import absolute_import from .constants import lchars -from TrigHLTJetHypo.ToolSetter import ToolSetter - import re from collections import defaultdict @@ -198,7 +196,7 @@ class ConditionsDictMaker(object): # process each parameter string once. - for c, mult in mult_conditions.items(): # c is ciondition string + for c, mult in mult_conditions.items(): # c is condition string cdict = defaultdict(dict) toks = c.split(',') # parameters in par string are separated by ',' toks = [t.strip() for t in toks] @@ -452,60 +450,3 @@ class TreeParameterExpander(object): return self.expander.report() -def _test(s): - - from .ChainLabelParser import ChainLabelParser - parser = ChainLabelParser(s) - - parser.debug = True - - tree = parser.parse() - print(tree.dump()) - # exapnd the window cuts (strings) obtained from the chain label - # to attributes and floating point numbers, set defaults - # for unspecified vallues - visitor = TreeParameterExpander() - tree.accept(visitor) - - tree.set_ids(0, 0) - tree.accept(visitor) - print(visitor.report()) - print(tree.dump()) - - # set the node attribute node.tool to be the hypo Al\gTool. - print('sending in the ToolSetter visitor') - ts_visitor = ToolSetter(s) - tree.accept_cf(ts_visitor) - print(ts_visitor.report()) - - - # print tree.dump() - print(tree.tool) # printing a Gaudi tool prints its nested tools - - -def test(index): - from .test_cases import test_strings - import sys - if index not in range(len(test_strings)): - print ('expected int in [0,%d) ] on comand line, got %s' % ( - len(test_strings), c)) - sys.exit() - - print('index', index) - print('========== Test %d ==============' % index) - s = test_strings[index] - print(s) - _test(s) - - -if __name__ == '__main__': - import sys - - c = ''.join(sys.argv[1:]) - ic = -1 - try: - ic = int(c) - except Exception: - print('expected int on command line, got ',c) - sys.exit() - test(ic) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.cxx index a83a16d65baa..d7d9cbbe2b9e 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.cxx @@ -19,9 +19,8 @@ ConditionMT TrigJetConditionConfig_acceptAll::getCondition() const { -bool TrigJetConditionConfig_acceptAll::addToCapacity(std::size_t cap) { - m_capacity += cap; - return true; +bool TrigJetConditionConfig_acceptAll::addToCapacity(std::size_t ) { + return false; } -- GitLab From b4ba3a13e59df0591322c1d3016aec9fc364af63 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Sat, 21 Nov 2020 23:41:20 +0100 Subject: [PATCH 16/17] Set CapacityCheckedCondition multiplicity to 1 for inner hypo tree nodes. Remove obsoloete files. --- .../ConditionsToolSetterFastReduction.py | 4 +- .../python/ConditionsToolSetterFlowNetwork.py | 390 ------------------ .../python/FlowNetworkSetter.py | 257 ------------ .../TrigHLTJetHypo/src/AndHelperTool.cxx | 71 ---- .../TrigHLTJetHypo/src/AndHelperTool.h | 58 --- .../src/CombinationsHelperTool.cxx | 184 --------- .../src/CombinationsHelperTool.h | 72 ---- .../TrigHLTJetHypo/src/NotHelperTool.cxx | 66 --- .../TrigHLTJetHypo/src/NotHelperTool.h | 56 --- .../TrigHLTJetHypo/src/OrHelperTool.cxx | 72 ---- .../TrigHLTJetHypo/src/OrHelperTool.h | 59 --- .../src/components/TrigHLTJetHypo_entries.cxx | 8 - 12 files changed, 2 insertions(+), 1295 deletions(-) delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFlowNetwork.py delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/python/FlowNetworkSetter.py delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/AndHelperTool.cxx delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/AndHelperTool.h delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/CombinationsHelperTool.cxx delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/CombinationsHelperTool.h delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/NotHelperTool.cxx delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/NotHelperTool.h delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/OrHelperTool.cxx delete mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/src/OrHelperTool.h diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py index f1fc114989c1..4c40fe3ef828 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFastReduction.py @@ -138,7 +138,7 @@ class ConditionsToolSetterFastReduction(object): outer_condition_tools = [] # loop over elements of node.conf_attrs. The elements are (dict, int) - # in t is multiplicity, dict holds Condition parameters. + # int is multiplicity, dict holds Condition parameters. for c, mult in node.conf_attrs: condition_tools = [] # elemental conditions for this compounnd ct. for k, v in c.items(): # loop over elemental conditions @@ -292,7 +292,7 @@ class ConditionsToolSetterFastReduction(object): # must have a tool for Gaudi to instantiate in cmap[node.node_id] = self._get_tool_instance('capacitychecked') cmap[node.node_id].conditionMakers = [self._get_tool_instance('all')] - cmap[node.node_id].multiplicity = len(node.children) + cmap[node.node_id].multiplicity = 1 for cn in node.children: self._fill_conditions_map(cn, cmap) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFlowNetwork.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFlowNetwork.py deleted file mode 100644 index 8be5b07f24ca..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/ConditionsToolSetterFlowNetwork.py +++ /dev/null @@ -1,390 +0,0 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration - -"""Instantiates TrigJetHypoToolConfig_flownetwork AlgTool -from a hypo tree.""" - -from __future__ import print_function - -from AthenaConfiguration.ComponentFactory import CompFactory -from TrigHLTJetHypo.node import Node - -from collections import defaultdict - -import copy - - -def is_leaf(node): - return node.scenario in ('simple', 'etaet', 'dijet', 'qjet') - - -def is_inner(node): - return node.scenario in ('root', 'and', 'combgen', 'partgen') - - -class ConditionsToolSetterFlowNetwork(object): - - """Visitor to set instantiated AlgTools to a jet hypo tree""" - - from TrigHLTJetHypo.ConditionsToolSetterFastReduction import ConditionsToolSetterFastReduction - JetMoments = ConditionsToolSetterFastReduction.JetMoments - - def __init__(self, name): - - self.name = name - # for simple, use TrigJetConditionConfig_etaet. Needs to be - # completed because simple can conain any single jet condition - self.tool_factories = { - 'eta': [CompFactory.TrigJetConditionConfig_abs_eta, 0], - 'peta': [CompFactory.TrigJetConditionConfig_signed_eta, 0], - 'neta': [CompFactory.TrigJetConditionConfig_signed_eta, 0], - 'et': [CompFactory.TrigJetConditionConfig_et, 0], - 'djmass': [CompFactory.TrigJetConditionConfig_dijet_mass, 0], - 'djdphi': [CompFactory.TrigJetConditionConfig_dijet_dphi, 0], - 'djdeta': [CompFactory.TrigJetConditionConfig_dijet_deta, 0], - 'qjmass': [CompFactory.TrigJetConditionConfig_qjet_mass, 0], - 'smc': [CompFactory.TrigJetConditionConfig_smc, 0], - 'all': [CompFactory.TrigJetConditionConfig_acceptAll, 0], - 'compound': [CompFactory.TrigJetConditionConfig_compound, 0], - 'flownetwork': [CompFactory.TrigJetHypoToolConfig_flownetwork, 0], - 'helper': [CompFactory.TrigJetHypoToolHelperMT, 0], - } - for var in self.JetMoments: - self.tool_factories['mom'+var] = [CompFactory.TrigJetConditionConfig_moment, 0] - - # map conaining parent child ids for the node - self.treeMap = {0: 0} - - # map containing the a list of Condition factory AlgTools for scenario - self.conditionMakers = defaultdict(list) - - def _set_conditions(self, node): - """attach Conditions to leaf nodes""" - - self._mod_leaf(node) - - for cn in node.children: - self._set_conditions(cn) - - - def _remove_combgen(self, node): - """Combination nodes represent parent children relationships. - The child may be a subtree. For now, the parent will be in the - child list at position 0, and the child subtree in position 1.""" - - parent_children = {} - ipos = 0 - - # identify the combgen nodes, and rotate them - for cn in node.children: - if cn.scenario == 'combgen': - assert (len(cn.children) == 2) - parent_children[ipos] = cn.children - ipos += 1 - - # rotate the first combgen child (parent) into the position of the - # combgen node, and set its child node. - for pos, p_c in parent_children.items(): - node.children[pos] = p_c[0] - node.children[pos].children = [p_c[1]] - - for cn in node.children: - self._remove_combgen(cn) - - def _remove_scenario(self, node, scenario): - """Remove Partgen nodes by adding their children to their - parent's children.""" - - def remove_scenario(node, scenario): - for cn in node.children: - if cn.scenario == scenario: - node.children.remove(cn) - node.children.extend(cn.children) - return True - - return False - - more = True - while(more): - more = remove_scenario(node, scenario) - - for cn in node.children: - self._remove_scenario(cn, scenario) - - - def _get_tool_instance(self, key, extra=''): - - klass = self.tool_factories[key][0] - sn = self.tool_factories[key][1] - - name = '%s_%d_fn' % (key, sn) - if extra: name += '_' + extra - tool = klass(name=name) - self.tool_factories[key][1] += 1 - return tool - - def _make_compound_condition_tools(self, node): - - # compound_condition_tools: - # elemental condition maker AlgToolshelper by the compound condition - # AlgTool - compound_condition_tools = [] - for c in node.conf_attrs: # loop over conditions - condition_tools = [] # elemental conditions for this compounnd ct. - for k, v in c.items(): # loop over elemental conditions - condition_tool = self._get_tool_instance(k) - for lim, val in v.items(): # lim: min, max - setattr(condition_tool, lim, val) - - # SPECIAL CASE: Moment tool needs the name of the - # moment as well as the min. max cuts: - if (k.startswith ('mom')): - moment = k[len('mom'):] - if moment in self.JetMoments: - condition_tool.moment = self.JetMoments[moment] - else: raise RuntimeError('%s not supported' % (moment)) - # END SPECIAL CASE - - condition_tools.append(condition_tool) - - # create compound condition from elemental condition - compoundCondition_tool =self._get_tool_instance('compound') - compoundCondition_tool.conditionMakers = condition_tools - - # add compound condition to list - compound_condition_tools.append(compoundCondition_tool) - - return compound_condition_tools - - def _mod_leaf(self, node): - """ Add Condition tools to For a leaf node.""" - - if not is_leaf(node): - return - - # parameters: (10et,0eta320)(20et) - # conf_attrs: [2]: (is a list of length 2) - # defaultdict(<type 'dict'>, {'et': {'max': 'inf', 'min': '10000.0'}, - # 'eta': {'max': '3.2', 'min': '0.0'}}) - # defaultdict(<type 'dict'>, {'et': {'max': 'inf', 'min': '20000.0'}}) - - - # make a config tool and provide it with condition makers - - - node.compound_condition_tools = self._make_compound_condition_tools( - node) - - def _split_leaves(self, node): - """Recursively replace leaf nodes with >1 Condition tools by nodes with - one Condition tool.""" - - def split_leaves(node): - for cn in node.children: - if is_leaf(cn): - if len(cn.compound_condition_tools) > 1: - new_children = [] - new_node = copy.deepcopy(cn) - # set scenarrio to other than leaf results in - # the assignement of an acceptall condition - new_node.scenario = 'inserted' - new_node.compound_condition_tools = [] - for ct in cn.compound_condition_tools: - new_children.append(copy.deepcopy(cn)) - new_children[-1].compound_condition_tools = [ct] - new_children[-1].conf_attrs = [] - new_node.children.extend(new_children) - node.children.remove(cn) - node.children.append(new_node) - return True # return after first modification - - return False - - - more = True - while(more): - more = split_leaves(node) - - for cn in node.children: - self._split_leaves(cn) - - - def _find_shared(self, node, shared): - """Determine which nodes are "shared" - shared nodes - are nodes that see the input jet collection. There - more than one set of shared nodes. These are generated - if an "And" not is present in the hypo tree""" - - - if node.scenario == 'root': - for cn in node.children: - self._find_shared(cn, shared) - - elif node.scenario == 'and': - for cn in node.children: - shared.append([]) - self._find_shared(cn, shared) - - elif node.scenario == 'partgen': - for cn in node.children: - self._find_shared(cn, shared) - - elif node.scenario == 'inserted': - for cn in node.children: - self._find_shared(cn, shared) - - elif is_leaf(node): - if len(node.children) == 0: - if len(shared) == 0: - shared.append([node]) - else: - shared[-1].append(node) - - else: - for cn in node.children: - self._find_shared(cn, shared) - - else: - raise RuntimeError('%s illegal node. scenario: %s' % - (self.__class__.__name__, - node.scenario)) - - return shared - - - - def report(self): - wid = max(len(k) for k in self.tool_factories.keys()) - rep = '\n%s: ' % self.__class__.__name__ - - rep += '\n'.join( - ['%s: %d' % (k.ljust(wid), v[1]) - for k, v in self.tool_factories.items()]) - - return rep - - def _fill_tree_map(self, node, tmap): - tmap[node.node_id] = node.parent_id - - for cn in node.children: - self._fill_tree_map(cn, tmap) - - - def _fill_conditions_map(self, node, cmap): - if is_leaf(node): - - assert (len(node.compound_condition_tools) == 1) - cmap[node.node_id] = node.compound_condition_tools[0] - - else: - # must have a tool for Gaudi to instantiate in - cmap[node.node_id] = self._get_tool_instance('all') - - for cn in node.children: - self._fill_conditions_map(cn, cmap) - - - def _map_2_vec(self, amap): - - vec = [0 for i in range(len(amap))] - for nid, value in amap.items(): - vec[nid] = value - return vec - - def _check_scenarios(self, node): - if not(is_inner(node) or is_leaf(node)): - raise RuntimeError( - 'ConditionsToolSetter: illegal scenario: %s' % node.scenario) - - for cn in node.children: - self._check_scenarios(cn) - - def mod(self, node): - """Entry point for this module. - Modifies a (usually compound) hypo tree node to - reduce it to form from whuch the treevector, conditionsVector and - sharedNodes list can be extracted. These will be used to initialise - FlowNetworkBuilder. - - In particular: all leaf nodes will have a single ConmpoundCondition - All other nodes will be assigned an AcceptAll condition. - """ - - # navigate the tree filling in node-parent and node- Condtion factory - # relations - - print ('%s: starts' % self.__class__.__name__) - - - print ('%s: start step 1' % self.__class__.__name__) - - # Alg step 1: add root node - root = Node(scenario='root') - root.children = [node] - - print ('%s: checking scenarios' % self.__class__.__name__) - - self._check_scenarios(root) - - print ('%s: setting conditions' % self.__class__.__name__) - # add Condition builders to leaf nodes. - self._set_conditions(root) - - print ('%s: removing combgen' % self.__class__.__name__) - # Alg step 2: remove combgen nodes - self._remove_combgen(root) - - print ('%s: split leaves' % self.__class__.__name__) - # Alg step 3: split leaf nodes with multiple Conditions with a - # single Condition - self._split_leaves(root) - - ## print ('%s: remove partgen' % self.__class__.__name__) - # Alg step 4: remove partgen nodes - # single Condition - ## self._remove_scenario(root, 'partgen') - - # Alg step 5: identify the leaf nodes that are to shared - # ie that see the input jet collection. Then remove And nodes - shared = [] - slist = self._find_shared(root, shared) - self._remove_scenario(root, 'and') - - # remove top stub node - assert len(root.children) == 1 - root = root.children[0] - root.set_ids(node_id=0, parent_id = 0) - - # would like to pass a list of lists to the C++ tools - # but this cannot be done using Gaudi::Properties. - # use -1 to separate the list sections all entries of which - # are >= 0. - - self.shared = [] - for ilist in slist: - for n in ilist: - self.shared.append(n.node_id) - self.shared.append(-1) - - self.shared = self.shared[:-1] # remnove trailing -1 - - tree_map = {} - self._fill_tree_map(root, tree_map) - self.treeVec = self._map_2_vec(tree_map) - - conditionsMap = {} - self._fill_conditions_map(root, conditionsMap) - self.conditionsVec = self._map_2_vec(conditionsMap) - - # make a config tool and provide it with condition makers - config_tool = self._get_tool_instance('flownetwork') - config_tool.conditionMakers = self.conditionsVec - config_tool.treeVector = self.treeVec - config_tool.sharedVector = self.shared - - nodestr = 'n%dp%d' % (node.node_id, node.parent_id) - helper_tool = self._get_tool_instance('helper', extra=nodestr) - helper_tool.HypoConfigurer = config_tool - helper_tool.node_id = node.node_id - helper_tool.parent_id = node.parent_id - - self.tool = helper_tool diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/FlowNetworkSetter.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/FlowNetworkSetter.py deleted file mode 100644 index 3e71406c6022..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/FlowNetworkSetter.py +++ /dev/null @@ -1,257 +0,0 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -"""Instantiates TrigJetHypoToolConfig_flownetwork AlgTool -from a hypo tree.""" - - -from __future__ import print_function - -from TrigHLTJetHypo.TrigHLTJetHypoConf import ( - TrigJetConditionConfig_abs_eta, - TrigJetConditionConfig_et, - TrigJetHypoToolHelperMT, - CombinationsHelperTool, - TrigJetHypoToolConfig_flownetwork, - ) - -from node import rotate - -from collections import defaultdict - -class FlowNetworkSetter(object): - """Visitor to set instantiated AlgTools to a jet hypo tree""" - - def __init__(self, name): - - self.name = name - # for simple, use TrigJetConditionConfig_etaet. Needs to be - # completed because simple can conain any single jet condition - self.tool_factories = { - 'et': [TrigJetConditionConfig_et, 0], - 'eta': [TrigJetConditionConfig_abs_eta, 0], - } - - self.nodeToParent=defaultdict(list) - self.nodeToConditionTool=defaultdict(list) - - self.mod_router = { - 'not': self.not_supported_yet, - 'and': self.illegal, - 'agree': self.not_supported_yet, - 'or': self.not_supported_yet, - 'simple': self._mod_leaf, - 'etaet': self._mod_leaf, - 'simplepartition': self.not_supported_yet, - 'combgen': self.illegal, - 'partgen': self._mod_partition, - 'dijet': self._mod_leaf, - } - - # map conaining parent child ids for the node - self.treeMap = {} - - # map containing the a list of Condition factory AlgTools for scenario - self.conditionMakers = {} - - def not_supported_yet(self, node): - raise NotImplementedError( - 'FlowNetworkSetter: scenarion not yet supported: ' + node.scenario) - - - def illegal(self, node): - raise RuntimeError( - 'FlowNetworkSetter: illegal scenario: %s' + node.scenario) - - def mod_logical_binary(self, node): - """Set the HypoConfigTool instance the 'and' and 'or' scenarios - these take two predicates""" - - scen = node.scenario - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - self.tool_factories[scen][1] += 1 - - tool = klass(name=name) - - tool.lhs = node.children[0].tool - tool.rhs = node.children[1].tool - - tool.node_id = node.node_id - tool.parent_id = node.parent_id - - node.tool = tool - - - def mod_logical_unary(self, node): - """Set the HypoConfigTool instance for the 'not' scenario - this takes a single predicate""" - - scen = node.scenario - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - self.tool_factories[scen][1] += 1 - - tool = klass(name=name) - - tool.hypoTool = node.children[0].tool - - tool.node_id = node.node_id - tool.parent_id = node.parent_id - - node.tool = tool - - - def mod_combgen(self, node): - """Set the HypoConfigTool instance for the 'not' scenario - this takes a single predicate""" - - scen = node.scenario - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - self.tool_factories[scen][1] += 1 - - config_tool = klass(name=name+'_config') - config_tool.children = [child.tool for child in node.children] - [setattr(config_tool, k, v) for k, v in node.conf_attrs.items()] - - helper_tool = CombinationsHelperTool(name=name+'_helper') - helper_tool.HypoConfigurer = config_tool - - helper_tool.node_id = node.node_id - helper_tool.parent_id = node.parent_id - - node.tool = helper_tool - - def mod_simple(self, node): - """Set the TrigJetHypoToolHelperMT instance in a hypo tree node. - This Algtool will have a TrigJetHypoToolConfig_flownetwork - instance as an attribute, which it will use to configure itself. - """ - - scen = node.scenario - sn = self.tool_factories[scen][1] - self.tool_factories[scen][1] += 1 - - config_tool = TrigJetHypoToolConfig_flownetwork - [setattr(config_tool, k, v) for k, v in node.conf_attrs.items()] - - name = '%s_helper_%d' % (scen, sn) - helper_tool = TrigJetHypoToolHelperMT(name=name) - helper_tool.HypoConfigurer = config_tool - helper_tool.node_id = node.node_id - helper_tool.parent_id = node.parent_id - - node.tool = helper_tool - - def _mod_partition(self, node): - - scen = node.scenario - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - name = '%s_%d' % (scen, sn) - - self.tool_factories[scen][1] += 1 - config_tool = klass(name=name) - - self.treeMap[node.node_id] = node.parent_id - self.conditionMakers[node.node_id].append(config_tool) - - - def _mod_leaf(self, node): - """For a leaf node, fill in - 1. map conaining parent child ids for the node - 2. map conainting the AlgTool used to instanitiate the node Conditions - """ - - self.treeMap[node.node_id] = node.parent_id - - scen = node.scenario - - for k, v in node.conf_attrs.items(): - - klass = self.tool_factories[scen][0] - sn = self.tool_factories[scen][1] - - name = '%s_%d' % (scen, sn) - config_tool = klass(name=name) - setattr(config_tool, k, v) - self.conditionMakers[node.node_id].append(config_tool) - self.tool_factories[scen][1] += 1 - - # klass = self.tool_factories[scen][0] - # sn = self.tool_factories[scen][1] - # name = '%s_%d' % (scen, sn) - - # self.tool_factories[scen][1] += 1 - - # config_tool = klass(name=name) - # [setattr(config_tool, k, v) for k, v in node.conf_attrs.items()] - # self.conditionMakers[node.node_id] = config_tool - - for cn in node.children: - self.mod_router[cn.scenario](cn) - - def report(self): - wid = max(len(k) for k in self.tool_factories.keys()) - rep = '\n%s: ' % self.__class__.__name__ - - rep += '\n'.join( - ['%s: %d' % (k.ljust(wid), v[1]) - for k, v in self.tool_factories.items()]) - - return rep - - - def mod(self, node): - """Entry mode for this module. Uses a (usaully compound) hypo tree node. - - The Tools set in the tree nodes are TrigJetConditionConfig_XXX - objects. These are factories for Condition objects - - The tree use used to - = find the tree vector (node-parent relationsships) - = find the node - Condition factory relationships - = instantiate and return a TrigJetHypoToolConfig_flownetwork instance. - """ - - new_node = rotate(node) - new_node.set_ids(0, 0) - - # navigate the tree filling in node-parent and node- Condtion factory - # relations - self.mod_router[new_node.scenario](new_node) - - config_tool = TrigJetHypoToolConfig_flownetwork() - - treeVec = [0 for i in range(len(self.treeMap))] - for n, p in self.treeMap.items(): - treeVec[n] = p - - config_tool.treeVector = treeVec - - conditionMakers = [None for i in range(len(self.treeMap))] - for n, p in self.conditionMakers.items(): - conditionMakers[n] = p - - - assert None not in conditionMakers - - config_tool.conditionMakers = conditionMakers - - self.tool = TrigJetHypoToolHelperMT( - name='TrigJetHypoToolConfig_flownetwor_helper') - - self.tool.HypoConfigurer = config_tool - - def __str__(self): - s = '%s: treeMap: %s, conditionMakers [%d]: ' % ( - self.__class__.__name__, - str(self.treeMap), - len(self.conditionMakers)) - - if self.conditionMakers: - s += '\n' - for cm in self.conditionMakers.values(): - s += cm.__class__.__name__ + '\n' - - return s diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AndHelperTool.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AndHelperTool.cxx deleted file mode 100644 index 7cbaf6684e2a..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AndHelperTool.cxx +++ /dev/null @@ -1,71 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -// ******************************************************************** -// -// NAME: AndHelperTool.cxx -// PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo -// -// -// ******************************************************************** - -#include "AndHelperTool.h" - -#include "GaudiKernel/StatusCode.h" -#include "./ITrigJetHypoInfoCollector.h" -#include "./nodeIDPrinter.h" -#include "./JetTrigTimer.h" -#include <sstream> - -AndHelperTool::AndHelperTool(const std::string& type, - const std::string& name, - const IInterface* parent) : - base_class(type, name, parent){ -} - - -bool -AndHelperTool::pass(HypoJetVector& jets, - xAODJetCollector& jetCollector, - const std::unique_ptr<ITrigJetHypoInfoCollector>& collector) const { - ATH_MSG_DEBUG("AndHelperTool::pass... " << jets.size() << " jets"); - - JetTrigTimer timer; - if(collector){ - timer.start(); - } - bool pass = m_lhs->pass(jets, jetCollector, collector); - if (pass){ - ATH_MSG_DEBUG("LHS passed"); - pass = m_rhs->pass(jets, jetCollector, collector); - ATH_MSG_DEBUG("RHS " <<std::boolalpha << pass); - } else { - ATH_MSG_DEBUG("LHS failed"); - } - - if (collector){ - timer.stop(); - collector->collect(name(), nodeIDPrinter(name(), - m_nodeID, - m_parentNodeID, - pass, - timer.readAndReset())); - } - return pass; - -} - -std::string AndHelperTool::toString() const{ - return nodeIDPrinter(name(), m_nodeID, m_parentNodeID); -} - -StatusCode AndHelperTool::getDescription(ITrigJetHypoInfoCollector& c) const { - c.collect(name(), toString()); - return m_lhs->getDescription(c) & m_rhs->getDescription(c); -} - -std::size_t AndHelperTool::requiresNJets() const { - return m_lhs->requiresNJets() + m_rhs->requiresNJets(); -} - diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AndHelperTool.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AndHelperTool.h deleted file mode 100644 index 55d6ebab34d0..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AndHelperTool.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef TRIGHLTJETHYPO_ANDHELPERTOOLMT_H -#define TRIGHLTJETHYPO_ANDHELPERTOOLMT_H -/******************************************************************** - * - * NAME: AndHelperTool.h - * PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo - * - * - *********************************************************************/ - -#include "AthenaBaseComps/AthAlgTool.h" - -#include "TrigHLTJetHypo/ITrigJetHypoToolHelperMT.h" -#include "ITrigJetHypoToolConfig.h" -#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/HypoJetDefs.h" -#include "./ITrigJetHypoInfoCollector.h" - -class ITrigJetHypoInfoCollector; -class xAODJetCollector; - -class AndHelperTool: public extends<AthAlgTool, ITrigJetHypoToolHelperMT> { - - public: - - AndHelperTool(const std::string& type, - const std::string& name, - const IInterface* parent); - - bool pass(HypoJetVector&, - xAODJetCollector&, - const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - - virtual StatusCode getDescription(ITrigJetHypoInfoCollector&) const override; - virtual std::string toString() const override; - virtual std::size_t requiresNJets() const override; - - private: - - ToolHandle<ITrigJetHypoToolHelperMT> m_lhs { - this, "lhs", {}, "LHS boolean binary expression"}; - - ToolHandle<ITrigJetHypoToolHelperMT> m_rhs { - this, "rhs", {}, "RHS boolean binary expression"}; - - - Gaudi::Property<int> - m_parentNodeID {this, "parent_id", {}, "hypo tool tree parent node id"}; - - Gaudi::Property<int> - m_nodeID {this, "node_id", {}, "hypo tool tree node id"}; - - -}; -#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CombinationsHelperTool.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CombinationsHelperTool.cxx deleted file mode 100644 index 63cadefa74e1..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CombinationsHelperTool.cxx +++ /dev/null @@ -1,184 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#include "./CombinationsHelperTool.h" -#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CombinationsGrouper.h" -#include "./ITrigJetHypoInfoCollector.h" -#include "./nodeIDPrinter.h" -#include "./JetTrigTimer.h" -#include "./DebugInfoCollector.h" - -#include <sstream> - -CombinationsHelperTool::CombinationsHelperTool(const std::string& type, - const std::string& name, - const IInterface* parent) : - base_class(type, name, parent){ - -} - -StatusCode CombinationsHelperTool::initialize() { - - auto opt_conditions = m_config->getConditions(); - if(!opt_conditions.has_value()){ - ATH_MSG_ERROR("Error setting conditions"); - return StatusCode::FAILURE; - } - m_conditions = std::move(*opt_conditions); - - m_grouper = m_config->getJetGrouper(); - m_matcher = m_config->getMatcher(); - - return StatusCode::SUCCESS; -} - - -void -CombinationsHelperTool::collectData(const std::string& setuptime, - const std::string& exetime, - const std::unique_ptr<ITrigJetHypoInfoCollector>& collector, - - bool pass) const { - if(!collector){return;} - for(const auto& c: m_conditions){ - collector->collect("Condition", c->toString()); - } - auto helperInfo = nodeIDPrinter(name(), - m_nodeID, - m_parentNodeID, - pass, - exetime + setuptime - ); - - collector->collect(name(), helperInfo); -} - - -struct HypoJetSelector{ - // Selector jets according to OR of ocnditions objects. - // This predicate is intended to be used with an STL algorithm - HypoJetSelector(const ConditionsMT& conditions, - const std::unique_ptr<ITrigJetHypoInfoCollector>&collector ): - m_conditions(conditions), m_collector(collector){ - } - - bool operator()(pHypoJet j){ - - if(m_conditions.empty()){return true;} - - std::vector<pHypoJet> v{j}; - for(const auto& c : m_conditions) - { - if (c->isSatisfied(v, m_collector)) // there is a satisfied condition - { - return true; - } - } - - return false; // no condition satisfied - } - const ConditionsMT& m_conditions; - const std::unique_ptr<ITrigJetHypoInfoCollector>& m_collector; -}; - - -bool -CombinationsHelperTool::pass(HypoJetVector& jets, - xAODJetCollector& jetCollector, - const std::unique_ptr<ITrigJetHypoInfoCollector>& collector) const { - /* seek first jet group that passes all children */ - - // create vector of vector of jets - - JetTrigTimer exeTimer; - JetTrigTimer setupTimer; - - if(collector){ - std::string msg = "No of jets " + std::to_string(jets.size()); - collector->collect(name(), msg); - } - - - setupTimer.start(); - - auto end_iter = jets.end(); - - if(!m_conditions.empty()){ - - HypoJetSelector selector(m_conditions, collector); - - // use conditions objects to select jets - end_iter = std::partition(jets.begin(), - jets.end(), - selector); - } - - auto begin = jets.begin(); - std::vector<HypoJetGroupVector> jetGroupsVec = - m_grouper->group(begin, end_iter); - - setupTimer.stop(); - exeTimer.start(); - - bool passed{false}; - - if(collector){ - collector->collect(name(), - "size jetGroupsVec " + std::to_string(jetGroupsVec.size())); - } - for(auto& jetGroupVec : jetGroupsVec){ - ATH_MSG_DEBUG("No of groups" << jetGroupVec.size()); - - auto passes = m_matcher->match(jetGroupVec.begin(), - jetGroupVec.end(), - jetCollector, - collector); - - if(!passes.has_value()){ - ATH_MSG_ERROR("Matcher cannot determine result. Config error?"); - return false; - } - - passed = *passes; - if(passed){ - exeTimer.stop(); - collectData(setupTimer.readAndReset(), - exeTimer.readAndReset(), - collector, - passed); - - return passed; - } - } - - exeTimer.stop(); - collectData(setupTimer.readAndReset(), - exeTimer.readAndReset(), - collector, - passed); - - return passed; -} - - -std::string CombinationsHelperTool::toString() const{ - std::stringstream ss; - std::string msg = nodeIDPrinter(name(), m_nodeID, m_parentNodeID) + "\n"; - msg += "Conditions:\nNo. of conditions " - + std::to_string(m_conditions.size()) + '\n'; - for(const auto& cond : m_conditions){ msg += cond->toString() + "\n";} - msg += "Grouper:\n" + m_grouper -> toString() + '\n'; - msg += "Matcher:\n" + m_matcher -> toString() + '\n'; - return msg; -} - -StatusCode -CombinationsHelperTool::getDescription(ITrigJetHypoInfoCollector& c) const { - c.collect(name(), toString()); - return StatusCode::SUCCESS; - -} -std::size_t CombinationsHelperTool::requiresNJets() const { - return m_config->requiresNJets(); -} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CombinationsHelperTool.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CombinationsHelperTool.h deleted file mode 100644 index 99146e94ad9f..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CombinationsHelperTool.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -/* IAlg tool that splits up incomming jets and sends then to its children */ - -#ifndef TRIGHLTJETHYPO_COMBINATIONSHELPERTOOL_H -#define TRIGHLTJETHYPO_COMBINATIONSHELPERTOOL_H - -#include "AthenaBaseComps/AthAlgTool.h" - -#include "TrigHLTJetHypo/ITrigJetHypoToolHelperMT.h" -#include "ConditionsDefsMT.h" -#include "ITrigJetHypoToolConfig.h" -#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/HypoJetDefs.h" - -class ITrigJetInfoCollector; -class xAODJetCollector; - -class CombinationsHelperTool: public extends<AthAlgTool, ITrigJetHypoToolHelperMT> { - public: - - CombinationsHelperTool(const std::string& type, - const std::string& name, - const IInterface* parent); - - - virtual StatusCode initialize() override; - - virtual bool pass(HypoJetVector&, - xAODJetCollector&, - const std::unique_ptr<ITrigJetHypoInfoCollector>& - ) const override; - - virtual std::size_t requiresNJets() const override; - - virtual StatusCode getDescription(ITrigJetHypoInfoCollector&) const override; - virtual std::string toString() const override; - - private: - - // Used to generate helper objects foe TrigHLTJetHelper - // from user supplied values - ToolHandle<ITrigJetHypoToolConfig> m_config { - this, "HypoConfigurer", {}, "Configurer to set up TrigHLTJetHypoHelper2"}; - - // Object to make jet groups. Jet groups - // are vectors of jets selected from a jet vector - // which is, in this case, the incoming jet vector. - std::unique_ptr<IJetGrouper> m_grouper; - - ConditionsMT m_conditions; - - - Gaudi::Property<int> - m_parentNodeID {this, "parent_id", {}, "hypo tool tree parent node id"}; - - Gaudi::Property<int> - m_nodeID {this, "node_id", {}, "hypo tool tree node id"}; - - // Object that matches jet groups with ITrigJetHypoToolHelper objects - std::unique_ptr<IGroupsMatcherMT> m_matcher; - - - void collectData(const std::string& setuptime, - const std::string& exetime, - const std::unique_ptr<ITrigJetHypoInfoCollector>&, - bool) const; - - -}; -#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/NotHelperTool.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/NotHelperTool.cxx deleted file mode 100644 index 0973a2396421..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/NotHelperTool.cxx +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -// ******************************************************************** -// -// NAME: NotHelperTool.cxx -// PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo -// -// -// ******************************************************************** - -#include "NotHelperTool.h" - -#include "GaudiKernel/StatusCode.h" -#include "./ITrigJetHypoInfoCollector.h" -#include "./nodeIDPrinter.h" -#include "./JetTrigTimer.h" - -#include <sstream> - -NotHelperTool::NotHelperTool(const std::string& type, - const std::string& name, - const IInterface* parent) : - base_class(type, name, parent){ -} - -bool -NotHelperTool::pass(HypoJetVector& jets, - xAODJetCollector& jetCollector, - const std::unique_ptr<ITrigJetHypoInfoCollector>& collector) const { - ATH_MSG_DEBUG("NotHelperTool::pass... " << jets.size() << " jets"); - - JetTrigTimer timer; - if(collector){ - timer.start(); - } - - auto pass = !m_hypoTool->pass(jets, jetCollector, collector); - if (collector){ - timer.stop(); - collector->collect(name(), nodeIDPrinter(name(), - m_nodeID, - m_parentNodeID, - pass, - timer.readAndReset())); - } - - return pass; -} - -std::string NotHelperTool::toString() const{ - return nodeIDPrinter(name(), m_nodeID, m_parentNodeID); -} - - - - -StatusCode NotHelperTool::getDescription(ITrigJetHypoInfoCollector& c) const { - c.collect(name(), toString()); - return m_hypoTool->getDescription(c); -} - -std::size_t NotHelperTool::requiresNJets() const { - return m_hypoTool->requiresNJets(); -} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/NotHelperTool.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/NotHelperTool.h deleted file mode 100644 index c997d0cfb9b6..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/NotHelperTool.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collabnotation -*/ - -#ifndef TRIGJETNOTTOOLMT_H -#define TRIGJETNOTTOOLMT_H -/******************************************************************** - * - * NAME: TrigJetNotToolMT.h - * PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo - * - * - *********************************************************************/ - - -#include "AthenaBaseComps/AthAlgTool.h" - -#include "TrigHLTJetHypo/ITrigJetHypoToolHelperMT.h" -#include "ITrigJetHypoToolConfig.h" -#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/HypoJetDefs.h" - -class ITrigJetInfoCollector; -class xAODJetCollector; - -class NotHelperTool: public extends<AthAlgTool, ITrigJetHypoToolHelperMT> { - - public: - - NotHelperTool(const std::string& type, - const std::string& name, - const IInterface* parent); - - bool pass(HypoJetVector&, - xAODJetCollector&, - const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - - virtual std::size_t requiresNJets() const override; - - virtual StatusCode getDescription(ITrigJetHypoInfoCollector&) const override; - virtual std::string toString() const override ; - - private: - - - ToolHandle<ITrigJetHypoToolHelperMT> m_hypoTool { - this, "hypoTool", {}, "predicate to be inverted"}; - - Gaudi::Property<int> - m_parentNodeID {this, "parent_id", {}, "hypo tool tree parent node id"}; - - Gaudi::Property<int> - m_nodeID {this, "node_id", {}, "hypo tool tree node id"}; - -}; -#endif - diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/OrHelperTool.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/OrHelperTool.cxx deleted file mode 100644 index 75c3200a9912..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/OrHelperTool.cxx +++ /dev/null @@ -1,72 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -// ******************************************************************** -// -// NAME: OrHelperTool.cxx -// PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo -// -// -// ******************************************************************** - -#include "OrHelperTool.h" -#include "./ITrigJetHypoInfoCollector.h" -#include "./nodeIDPrinter.h" -#include "./JetTrigTimer.h" - -#include "GaudiKernel/StatusCode.h" -#include <sstream> - -OrHelperTool::OrHelperTool(const std::string& type, - const std::string& name, - const IInterface* parent) : - base_class(type, name, parent){ -} - - -bool -OrHelperTool::pass(HypoJetVector& jets, - xAODJetCollector& jetCollector, - const std::unique_ptr<ITrigJetHypoInfoCollector>& collector) const { - ATH_MSG_DEBUG("OrHelperTool::pass... " << jets.size() << " jets"); - - JetTrigTimer timer; - if(collector){ - timer.start(); - } - - bool pass = m_lhs->pass(jets, jetCollector, collector); - if (pass){ - ATH_MSG_DEBUG("LHS passed"); - return pass; - } else { - pass = m_rhs->pass(jets, jetCollector, collector); - ATH_MSG_DEBUG("RHS " <<std::boolalpha << pass); - } - - if (collector){ - timer.stop(); - collector->collect(name(), nodeIDPrinter(name(), - m_nodeID, - m_parentNodeID, - pass, - timer.readAndReset())); - } - - return pass; -} - -std::string OrHelperTool::toString() const{ - return nodeIDPrinter(name(), m_nodeID, m_parentNodeID); -} - - -StatusCode OrHelperTool::getDescription(ITrigJetHypoInfoCollector& c) const { - c.collect(name(), toString()); - return m_lhs->getDescription(c) & m_rhs->getDescription(c); -} - -std::size_t OrHelperTool::requiresNJets() const { - return m_lhs->requiresNJets() + m_rhs->requiresNJets(); -} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/OrHelperTool.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/OrHelperTool.h deleted file mode 100644 index c858194bf2c4..000000000000 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/OrHelperTool.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef TRIGHLTJETHYPO_ORHELPERTOOLMT_H -#define TRIGHLTJETHYPO_ORHELPERTOOLMT_H -/******************************************************************** - * - * NAME: OrHelperTool.h - * PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo - * - * - *********************************************************************/ - -#include "AthenaBaseComps/AthAlgTool.h" - -#include "TrigHLTJetHypo/ITrigJetHypoToolHelperMT.h" -#include "ITrigJetHypoToolConfig.h" -#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/HypoJetDefs.h" - -class xAODJetCollector; - -class OrHelperTool: public extends<AthAlgTool, ITrigJetHypoToolHelperMT> { - - public: - - OrHelperTool(const std::string& type, - const std::string& name, - const IInterface* parent); - - bool pass(HypoJetVector&, - xAODJetCollector&, - const std::unique_ptr<ITrigJetHypoInfoCollector>&) const override; - - virtual StatusCode getDescription(ITrigJetHypoInfoCollector&) const override; - - virtual std::size_t requiresNJets() const override; - - virtual std::string toString() const override; - - - private: - - ToolHandle<ITrigJetHypoToolHelperMT> m_lhs { - this, "lhs", {}, "LHS boolean binary expression"}; - - ToolHandle<ITrigJetHypoToolHelperMT> m_rhs { - this, "rhs", {}, "RHS boolean binary expression"}; - - Gaudi::Property<int> - m_parentNodeID {this, "parent_id", {}, "hypo tool tree parent node id"}; - - Gaudi::Property<int> - m_nodeID {this, "node_id", {}, "hypo tool tree node id"}; - - -}; - -#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx index acc90aaba655..2c1486abdb3b 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx @@ -38,14 +38,10 @@ #include "../TrigJetConditionConfig_capacitychecked.h" // -#include "../NotHelperTool.h" -#include "../AndHelperTool.h" -#include "../OrHelperTool.h" #include "../TrigJetHypoToolMT.h" #include "../TrigJetHypoToolHelperMT.h" #include "../TrigJetTLAHypoAlgMT.h" #include "../TrigJetTLAHypoToolMT.h" -#include "../CombinationsHelperTool.h" #include "TrigHLTJetHypo/TrigHLTJetHypoUtils/BasicCleanerTool.h" #include "TrigHLTJetHypo/TrigHLTJetHypoUtils/AntiCleanerTool.h" #include "TrigHLTJetHypo/TrigHLTJetHypoUtils/EtaEtCleanerTool.h" @@ -70,9 +66,6 @@ DECLARE_COMPONENT(TrigJetHypoToolConfig_partgen) DECLARE_COMPONENT(TrigJetHypoToolConfig_fastreduction) DECLARE_COMPONENT(TrigJetHypoToolConfig_leaf) DECLARE_COMPONENT(TrigJetHypoToolConfig_ht) -DECLARE_COMPONENT(NotHelperTool) -DECLARE_COMPONENT(AndHelperTool) - DECLARE_COMPONENT(OrHelperTool) DECLARE_COMPONENT(TrigHLTJetHypo_SMC) DECLARE_COMPONENT(TrigHLTJetHypo_HT) DECLARE_COMPONENT(TrigHLTJetHypo_TLA) @@ -99,7 +92,6 @@ DECLARE_COMPONENT(TrigJetHypoToolMT) DECLARE_COMPONENT(TrigJetTLAHypoAlgMT) DECLARE_COMPONENT(TrigJetTLAHypoToolMT) DECLARE_COMPONENT(TrigJetHypoToolHelperMT) -DECLARE_COMPONENT(CombinationsHelperTool) DECLARE_COMPONENT(BasicCleanerTool) DECLARE_COMPONENT(AntiCleanerTool) -- GitLab From 6cfeb80510717062e395fc9ac8395dee2d019a87 Mon Sep 17 00:00:00 2001 From: sherwood <peter.sherwood@cern.ch> Date: Tue, 24 Nov 2020 11:19:25 +0100 Subject: [PATCH 17/17] update copyright statements --- Trigger/TrigHypothesis/TrigHLTJetHypo/python/jetlabel_tester.py | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.cxx | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.h | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.cxx | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.h | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.cxx | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.h | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.cxx | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.h | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.cxx | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.h | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.cxx | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.h | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.cxx | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.h | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.cxx | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.h | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.cxx | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.h | 2 +- .../TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.cxx | 2 +- .../TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.h | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.cxx | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.h | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h | 2 +- .../TrigHLTJetHypo/src/ITrigJetCapacityCheckedConditionConfig.h | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.cxx | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.h | 2 +- .../TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.cxx | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.h | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.cxx | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.h | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.cxx | 2 +- Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.h | 2 +- .../TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.cxx | 2 +- .../TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.h | 2 +- .../TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx | 2 +- .../TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h | 2 +- .../TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h | 2 +- 39 files changed, 39 insertions(+), 39 deletions(-) diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/jetlabel_tester.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/jetlabel_tester.py index 696fd829fe2f..5741fdbf50b8 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/jetlabel_tester.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/jetlabel_tester.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration """Utility to test whether a string is a legal jet chain label""" from __future__ import print_function diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py index f0b8899affad..0b21c6895110 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/node.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration """ Node - represents a tree structure. scenario and parameters which are strings filled in while parsing a jet hyp[o label. A visitor is used to convert diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.cxx index e5be218d4c4a..073719bbe194 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ # #include "./AcceptAllConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.h index e45dbffbbfac..801cc2f8a9ad 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/AcceptAllConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_ACCEPTALLMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.cxx index 088143641b6c..af5cb4b646a4 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ # #include "./CompoundConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.h index afee9f9c322a..0e707306cf3b 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/CompoundConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_COMPOUNDCONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.cxx index 87f62bd663b5..ab69025c4b9d 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "./DijetConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.h index 30dd5f02eac1..04cbf3635d1c 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_DIJETCONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.cxx index 95f35a43e783..c100fec837cc 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "./DijetDEtaConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.h index 99057cecf2a3..c48870c8491e 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDEtaConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_DIJETDETACONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.cxx index 331fa0ee6e79..567bcaa29aa5 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "./DijetDPhiConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.h index c906dc198efa..8a4038456e41 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetDPhiConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_DIJETDPHICONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.cxx index 09faa0c68371..37a455694117 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "./DijetMassConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.h index 9b6f3f6168c0..0d12562b400a 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/DijetMassConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_DIJETMASSCONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.cxx index 60e37d0c1724..4c6560f02fa1 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ # #include "./EtConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.h index 6eccf0584364..8ddd463eb264 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_ETCONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.cxx index 874c5c337489..db606451a340 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ # #include "./EtaConditionAbsMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.h index f91f7a1153b1..068042b9b7cb 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionAbsMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_ETACONDITIONABSMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.cxx index 99cea4deae50..9bf9e30a203f 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ # #include "./EtaConditionSignedMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.h index 5b2a8f9fc9a4..41096c513d26 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaConditionSignedMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_ETACONDITIONSIGNEDMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.cxx index d3159eed9a28..bee5de795ed2 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "./EtaEtAsymmetricConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.h index 406f2339f852..5a1168cbc2f9 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtAsymmetricConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_ETAETASYMMETRICCONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.cxx index ff62ff3ee0aa..3522bc51cd86 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ # #include "./EtaEtConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.h index f6d2167b9acd..e3cd7de895ab 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/EtaEtConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_ETAETCONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h index e92217ae5e43..9cb957d1dfe4 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/FastReducer.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_FASTREDUCER_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetCapacityCheckedConditionConfig.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetCapacityCheckedConditionConfig.h index 5575a997442b..a565dde99f7d 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetCapacityCheckedConditionConfig.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetCapacityCheckedConditionConfig.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_ITRIGJETCAPACITYCHECKEDCONDITIONCONFIG_H #define TRIGHLTJETHYPO_ITRIGJETCAPACITYCHECKEDCONDITIONCONFIG_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.cxx index a21f70f9bd2a..ea09ac6a9406 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ # #include "./MomentConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.h index 2b64cd20afb5..2eee67c3330f 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/MomentConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_MOMENTCONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.cxx index 7c43be00a41e..11302690ace4 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "./QjetMassConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.h index 0ded1bfecfd9..f491e41fd951 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/QjetMassConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_QJETMASSCONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.cxx index ac6208366c8f..02b601e0bb45 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ # #include "./SMCConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.h index 3f81c4362a8b..6d76bd3830c0 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/SMCConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_SMCCONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.cxx index 6f3e363d5c4f..8070a10e628e 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "./TLAConditionMT.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.h index fbb7c6119fc2..76ab676d052e 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TLAConditionMT.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGHLTJETHYPO_TLACONDITIONMT_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.cxx index d7d9cbbe2b9e..9b4f8c042161 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include "TrigJetConditionConfig_acceptAll.h" diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.h index 891d47158683..8c6df007dd53 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_acceptAll.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGJETCONDITIONCONFIG_ACCEPTALL_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx index 8e909a8f5565..86480d98253d 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /* diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h index 1e87533c8e4e..7d31b7f72a66 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetConditionConfig_compound.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGJETCONDITIONCONFIG_COMPOUND_H diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h index edf444e7fd3e..008405edf4d5 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_fastreduction.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGJETHYPOTOOLCONFIG_FASTREDUCTION_H -- GitLab