diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetHypoToolConfig.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetHypoToolConfig.h new file mode 100644 index 0000000000000000000000000000000000000000..e2b94371427f27c9aa21f686fa3419552760549c --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetHypoToolConfig.h @@ -0,0 +1,25 @@ +#ifndef TRIGHLTJETHYPO_ITRIGJETHYPOTOOLCONFIG_H +#define TRIGHLTJETHYPO_ITRIGJETHYPOTOOLCONFIG_H + +#include "GaudiKernel/IAlgTool.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJetGrouper.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerBridge.h" + +class ITrigJetHypoToolConfig : virtual public ::IAlgTool { + +public: + DeclareInterfaceID(ITrigJetHypoToolConfig, 1, 0); + virtual ~ITrigJetHypoToolConfig(){}; + + virtual StatusCode checkVals() const = 0; + + + // allow non-standard cleaners to be added to the cleaner factory. + virtual std::vector<std::shared_ptr<ICleaner>> getCleaners() const = 0; + + virtual std::unique_ptr<IJetGrouper> getJetGrouper() const = 0; + virtual Conditions getConditions() const = 0; + +}; +#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetHypoToolMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetHypoToolMT.h new file mode 100644 index 0000000000000000000000000000000000000000..6340c74ab40cb0b70da5ba3de01ad58b3f29bb1e --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/ITrigJetHypoToolMT.h @@ -0,0 +1,25 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGHLTJETHYPO_ITRIGJETHYPOTOOLMT_H +#define TRIGHLTJETHYPO_ITRIGJETHYPOTOOLMT_H + +#include "GaudiKernel/IAlgTool.h" +#include "xAODJet/JetContainer.h" + +#include "DecisionHandling/TrigCompositeUtils.h" + +using TrigCompositeUtils::Decision; +using TrigCompositeUtils::DecisionContainer; + +class ITrigJetHypoToolMT : virtual public ::IAlgTool { + +public: + DeclareInterfaceID(ITrigJetHypoToolMT, 1, 0); + virtual ~ITrigJetHypoToolMT(){}; + virtual StatusCode decide(const xAOD::JetContainer*, + std::unique_ptr<DecisionContainer>&, + const DecisionContainer*) const = 0; +}; +#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.cxx new file mode 100644 index 0000000000000000000000000000000000000000..fc26f284bb1d91e25bf88b154c9bb4e49361b2d9 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.cxx @@ -0,0 +1,91 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// ******************************************************************** +// +// NAME: TrigJetHypoToolMT_EtaEt.cxx +// PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo +// +// +// ******************************************************************** + +#include "TrigJetHypoToolConfig_EtaEt.h" + +#include "GaudiKernel/StatusCode.h" + +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/conditionsFactory2.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsSorter.h" + +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/SingleJetGrouper.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/xAODJetAsIJetFactory.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/groupsMatcherFactory.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerFactory.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/TrigHLTJetHypoHelper2.h" + +#include "DecisionHandling/TrigCompositeUtils.h" + +using TrigCompositeUtils::DecisionID; +using TrigCompositeUtils::Decision; +using TrigCompositeUtils::DecisionContainer; + +TrigJetHypoToolConfig_EtaEt::TrigJetHypoToolConfig_EtaEt(const std::string& type, + const std::string& name, + const IInterface* parent) : + base_class(type, name, parent){ + +} + + +TrigJetHypoToolConfig_EtaEt::~TrigJetHypoToolConfig_EtaEt(){ +} + +StatusCode TrigJetHypoToolConfig_EtaEt::initialize() { + CHECK(checkVals()); + return StatusCode::SUCCESS; +} + + + + +Conditions TrigJetHypoToolConfig_EtaEt::getConditions() const { + auto conditions = conditionsFactoryEtaEt(m_etaMins, + m_etaMaxs, + m_EtThresholds, + m_asymmetricEtas); + std::sort(conditions.begin(), conditions.end(), ConditionsSorter()); + + return conditions; +} + + +std::unique_ptr<IJetGrouper> TrigJetHypoToolConfig_EtaEt::getJetGrouper() const { + return std::make_unique<SingleJetGrouper>(); +} + +StatusCode TrigJetHypoToolConfig_EtaEt::checkVals() const { + if (m_EtThresholds.size() != m_etaMins.size() or + m_EtThresholds.size() != m_etaMaxs.size() or + m_asymmetricEtas.size() != m_etaMaxs.size()){ + + ATH_MSG_ERROR(name() + << ": mismatch between number of thresholds " + << "and eta min, max boundaries or asymmetric eta flags: " + << m_EtThresholds.size() << " " + << m_etaMins.size() << " " + << m_etaMaxs.size() << " " + << m_asymmetricEtas.size() << " " + ); + + return StatusCode::FAILURE; + } + return StatusCode::SUCCESS; +} + +std::vector<std::shared_ptr<ICleaner>> +TrigJetHypoToolConfig_EtaEt::getCleaners() const { + std::vector<std::shared_ptr<ICleaner>> v; + return v; +} + + diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.h new file mode 100644 index 0000000000000000000000000000000000000000..23c7a81f6e9398f1eefe457f9b6f0d5c68e45d45 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.h @@ -0,0 +1,76 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGJETHYPOTOOLConfig_ETAET_H +#define TRIGJETHYPOTOOLConfig_ETAET_H +/******************************************************************** + * + * NAME: TrigJetHypoToolConfig_EtaEtTool.h + * PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo + * + * + *********************************************************************/ + + +#include "ITrigJetHypoToolConfig.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h" +#include "DecisionHandling/HLTIdentifier.h" +#include "AthenaBaseComps/AthAlgTool.h" +#include "DecisionHandling/TrigCompositeUtils.h" +#include "AthenaMonitoring/GenericMonitoringTool.h" + +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ICleaner.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJetGrouper.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerBridge.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h" + +class TrigJetHypoToolConfig_EtaEt: +public extends<AthAlgTool, ITrigJetHypoToolConfig> { + + public: + + TrigJetHypoToolConfig_EtaEt(const std::string& type, + const std::string& name, + const IInterface* parent); + virtual ~TrigJetHypoToolConfig_EtaEt(); + + virtual StatusCode initialize() override; + virtual std::vector<std::shared_ptr<ICleaner>> getCleaners() const override; + virtual std::unique_ptr<IJetGrouper> getJetGrouper() const override; + virtual Conditions getConditions() const override; + + private: + + Gaudi::Property<std::vector<double>> + m_EtThresholds{this, "EtThresholds", {}, "Etthresholds by eta region"}; + + Gaudi::Property<std::vector<double>> + m_etaMins{this, "eta_mins", {}, "Eta min for eta regions"}; + + Gaudi::Property<std::vector<double>> + m_etaMaxs{this, "eta_maxs", {}, "Eta max for eta regions"}; + + Gaudi::Property<std::vector<int>> + m_asymmetricEtas{this, "asymmetricEtas", {}, "Apply asym. eta cuts"}; + + Gaudi::Property<std::string> + m_matchingAlg{this, "matchingAlg", {}, "matcher alg"}; + + + + + StatusCode checkVals() const; + + // Monitored variables... + /* + declareMonitoredVariable("NJet", m_njet); + declareMonitoredVariable("Et", m_et); + declareMonitoredVariable("Eta", m_eta); + declareMonitoredVariable("Phi", m_phi); +*/ + + +}; +#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.cxx new file mode 100644 index 0000000000000000000000000000000000000000..d1a74fa45ace0f3bbfa8850d9297e34b8724d3e7 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.cxx @@ -0,0 +1,215 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +// ******************************************************************** +// +// NAME: TrigJetHypoToolMT.cxx +// PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo +// +// +// ******************************************************************** + +#include "TrigJetHypoToolMT.h" + +#include "GaudiKernel/StatusCode.h" + +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/conditionsFactory2.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsSorter.h" + +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/SingleJetGrouper.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/xAODJetAsIJetFactory.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/groupsMatcherFactory.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerFactory.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/TrigHLTJetHypoHelper2.h" + +#include "DecisionHandling/HLTIdentifier.h" +#include "DecisionHandling/TrigCompositeUtils.h" + +using TrigCompositeUtils::DecisionID; +using TrigCompositeUtils::Decision; +using TrigCompositeUtils::DecisionContainer; + +TrigJetHypoToolMT::TrigJetHypoToolMT(const std::string& type, + const std::string& name, + const IInterface* parent) : + base_class(type, name, parent), + m_decisionId(HLT::Identifier::fromToolName(name)) { +} + + +TrigJetHypoToolMT::~TrigJetHypoToolMT(){ +} + +StatusCode TrigJetHypoToolMT::initialize(){ + m_conditions = m_config->getConditions(); + return StatusCode::SUCCESS; +} + +StatusCode TrigJetHypoToolMT::finalize(){ + return StatusCode::SUCCESS; +} + +StatusCode TrigJetHypoToolMT::decide(const xAOD::JetContainer* jets, + bool& pass) const { + + pass = false; + HypoJetVector hypoJets(jets->size()); + + std::transform(jets -> begin(), + jets -> end(), + hypoJets.begin(), + xAODJetAsIJetFactory()); + + // make a new CleanerMatcher every event + auto matcher = groupsMatcherFactory(m_conditions); + auto grouper = m_config->getJetGrouper(); + auto helper = TrigHLTJetHypoHelper2(m_cleaners, + std::move(grouper), + std::move(matcher)); + + /* apply cleaning and hypothesis alg */ + ATH_MSG_DEBUG("hypo helper start... " << m_chainName + << " no of jets ... " + << jets->size() + << "..."); + + // steady_clock::time_point t = steady_clock::now(); + + try{ + pass = !jets->empty() && (m_acceptAll || helper.pass(hypoJets)); + } catch(std::exception& e){ + ATH_MSG_ERROR("Exception raised by the TrigHLTJetHypoHelper2: " + << e.what()); + return StatusCode::FAILURE; + } + + // accumulateTime(steady_clock::now() - t); + + ATH_MSG_DEBUG("hypo testing done chain " << m_chainName + << " no of input jets " << jets->size() + << " pass " << pass ); + + if(m_dumpJets){writeDebug(pass, helper.passedJets(), helper.failedJets());} + + // delete the xAOD::Jet wrappers + for(auto i : hypoJets){delete i;} + + return StatusCode::SUCCESS; +} + +StatusCode +TrigJetHypoToolMT::decide(const xAOD::JetContainer* jets, + std::unique_ptr<DecisionContainer>& nDecisions, + const DecisionContainer* oDecisions) const{ + + if(oDecisions->size() != 1) { + ATH_MSG_ERROR ("expected 1 previous decision, found "<< oDecisions->size()); + return StatusCode::FAILURE; + } + + auto previousDecision = (*oDecisions)[0]; + + const TrigCompositeUtils::DecisionIDContainer previousDecisionIDs{ + TrigCompositeUtils::decisionIDs(previousDecision).begin(), + TrigCompositeUtils::decisionIDs( previousDecision ).end() + }; + + if (TrigCompositeUtils::passed(m_decisionId.numeric(), previousDecisionIDs)){ + bool pass; + CHECK(decide(jets, pass)); + if (pass) { + auto decision = TrigCompositeUtils::newDecisionIn(nDecisions.get()); + TrigCompositeUtils::addDecisionID(m_decisionId, decision); + } + } + + return StatusCode::SUCCESS; +} + + +void TrigJetHypoToolMT::setCleaners() { + // set up a cleaner factory with known jet cleaners + // Allow the configurer to add in new jet cleaners. + + if (m_cleaningAlg != "noCleaning"){ + + CleanerFactory cleanerFactory(//basic cleaning + m_n90Threshold, + m_presamplerThreshold, + m_negativeEThreshold, + //loose cleaning + m_fSampMaxLooseThreshold, + m_etaLooseThreshold, + m_emfLowLooseThreshold, + m_emfHighLooseThreshold, + m_hecfLooseThreshold, + //tight cleaning + m_fSampMaxTightThreshold, + m_etaTightThreshold, + m_emfLowTightThreshold, + m_emfHighTightThreshold, + m_hecfTightThreshold, + //long-lived particle cleaning + m_fSampMaxLlpThreshold, + m_negELlpThreshold, + m_hecfLlpThreshold, + m_hecqLlpThreshold, + m_avLarQFLlpThreshold, + m_cleaningAlg); + + m_cleaners.push_back(cleanerFactory.make()); + } + + auto cleaners = m_config->getCleaners(); // sub class supplied cleaners + m_cleaners.insert(m_cleaners.end(), cleaners.begin(), cleaners.end()); + ATH_MSG_INFO("No of Cleaners " << m_cleaners.size()); +} + +void TrigJetHypoToolMT::writeDebug(bool pass, + const HypoJetVector& passedJets, + const HypoJetVector& failedJets + ) const{ + ATH_MSG_INFO("Writing debug start" << m_chainName << "..."); + + if(pass){ + std::cout<<m_chainName<< " event passed \n"; + } else { + std::cout<<m_chainName<< " event failed \n"; + } + + for (auto j : passedJets) { + auto p4 = j->p4(); + std::cout<<"\nHYPODUMP passed TrigJetHypoToolImp Et: " + << p4.Et() + << " eta " + << j->eta() + << " px " + << p4.Px() + << " py " + << p4.Py() + << " pz " + << p4.Pz() + << " E " + << p4.E() + << '\n'; + } + + for (auto j : failedJets) { + auto p4 = j->p4(); + std::cout<<"\nHYPODUMP failed TrigJetHypoToolImp Et: " + << p4.Et() + << " eta " + << j->eta() + << " px " + << p4.Px() + << " py " + << p4.Py() + << " pz " + << p4.Pz() + << " E " + << p4.E() + << '\n'; + } + +} diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.h new file mode 100644 index 0000000000000000000000000000000000000000..cf2ccc2bf8e4f3ab64962633186c6f31fee5662d --- /dev/null +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolMT.h @@ -0,0 +1,170 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGJETHYPOTOOLMT_H +#define TRIGJETHYPOTOOLMT_H +/******************************************************************** + * + * NAME: TrigJetHypoToolMT.h + * PACKAGE: Trigger/TrigHypothesis/TrigHLTJetHypo + * + * + *********************************************************************/ + + +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h" +#include "DecisionHandling/HLTIdentifier.h" +#include "AthenaBaseComps/AthAlgTool.h" +#include "DecisionHandling/TrigCompositeUtils.h" +#include "AthenaMonitoring/GenericMonitoringTool.h" + +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ICleaner.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJetGrouper.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerBridge.h" +#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h" + +#include "ITrigJetHypoToolMT.h" +#include "ITrigJetHypoToolConfig.h" + +class TrigJetHypoToolMT: public extends<AthAlgTool, ITrigJetHypoToolMT> { + + public: + + TrigJetHypoToolMT(const std::string& type, + const std::string& name, + const IInterface* parent); + virtual ~TrigJetHypoToolMT(); + virtual StatusCode initialize() override; + virtual StatusCode finalize() override; + + protected: + // ITrigJetHypoToolMT interface + virtual StatusCode decide(const xAOD::JetContainer*, + std::unique_ptr<DecisionContainer>&, + const DecisionContainer*) const override; + + private: + + HLT::Identifier m_decisionId; + + Conditions m_conditions; + + bool m_dumpJets{false}; + + void setCleaners(); + + void writeDebug(bool, + const HypoJetVector&, + const HypoJetVector&) const; + + StatusCode decide(const xAOD::JetContainer*, bool& pass) const; + + + private: + + std::vector<CleanerBridge> m_cleaners; + + ToolHandle<ITrigJetHypoToolConfig> m_config { + this, "HypoConfigurer", {}, "Configurer to set up TrigHLTJetHypoHelper2"}; + + + // Cleaning parameters + + Gaudi::Property<std::string> + m_cleaningAlg{this, "cleaningAlg", "noCleaning", "Cleaning Alg"}; + + //basic cleaning + Gaudi::Property<float> + m_n90Threshold{this, "n90CleaningThreshold", 2., "" }; + + Gaudi::Property<float> + m_presamplerThreshold{this, "presamplerCleaningThreshold", 0.9, ""}; + + Gaudi::Property<float> + m_negativeEThreshold{this, "negativeECleaningThreshold", -60e3, ""};//60 GeV + + Gaudi::Property<float> + m_qmeanThreshold {this, "qmeanCleaningThreshold", 0.8, ""}; + + Gaudi::Property<float> + m_hecQThreshold {this, "HECQCleaningThreshold", 0.5, ""}; + + Gaudi::Property<float> + m_hecFThreshold {this, "HECfCleaningThreshold", 0.5, ""}; + + Gaudi::Property<float> + m_larQThreshol {this, "LArQCleaningThreshold", 0.8, ""}; + + Gaudi::Property<float> + m_emFThreshold {this, "EMfCleaningThreshold", 0.95, ""}; + + + //loose cleaning + Gaudi::Property<float> + m_fSampMaxLooseThreshold {this, "fracSamplingMaxLooseThreshold", 0.8, ""}; + + Gaudi::Property<float> + m_etaLooseThreshold{this, "etaLooseThreshold", 2.0, ""}; + + Gaudi::Property<float> + m_emfLowLooseThreshold{this, "EMfLowLooseThreshold", 0.10, ""}; + + Gaudi::Property<float> + m_emfHighLooseThreshold{this, "EMfHighLooseThreshold", 0.99, ""}; + + Gaudi::Property<float> + m_hecfLooseThreshold{this, "HECfLooseThreshold", 0.85, ""}; + + //tight cleaning + Gaudi::Property<float> + m_fSampMaxTightThreshold{this, "fracSamplingMaxTightThreshold", 0.8, ""}; + + Gaudi::Property<float> + m_etaTightThreshold {this, "etaTightThreshold", 2.0, ""}; + + Gaudi::Property<float> + m_emfLowTightThreshold{this, "EMfLowTightThreshold", 0.10, ""}; + + Gaudi::Property<float> + m_emfHighTightThreshold{this, "EMfHighTightThreshold", 0.99, ""}; + + Gaudi::Property<float> + m_hecfTightThreshold{this, "HECfTightThreshold", 0.85, ""}; + + //long-lived particle cleaning + Gaudi::Property<float> + m_fSampMaxLlpThreshold {this, "fracSamplingMaxLlpThreshold", 0.85, ""}; + + Gaudi::Property<float> + m_negELlpThreshold{this, "negativeELlpThreshold", 10e3, ""}; // 10 GeV + + Gaudi::Property<float> + m_hecfLlpThreshold{this, "HECfLlpThreshold", 0.5, ""}; + + Gaudi::Property<float> + m_hecqLlpThreshold{this, "HECQLlpThreshold", 0.5, ""}; + + Gaudi::Property<float> + m_avLarQFLlpThreshold{this, "AverageLArQFLlpThreshold", 0.8*65535, ""}; + + Gaudi::Property<std::string> + m_chainName{this, "chain_name", {}, "chain name (dbg)"}; + + Gaudi::Property<bool> + m_acceptAll{this, "AcceptAll", false, "flag to turn of hypo"}; + + + + // Monitored variables... + /* + declareMonitoredVariable("NJet", m_njet); + declareMonitoredVariable("Et", m_et); + declareMonitoredVariable("Eta", m_eta); + declareMonitoredVariable("Phi", m_phi); +*/ + + +}; +#endif diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx index c3825b35ab60b1c0cf7adf638857a3979750ba6b..ae11950e5f222d8f6880732ae220fac2a61eda35 100644 --- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx +++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx @@ -11,6 +11,9 @@ #include "../TrigJetHypoAlg.h" #include "../TrigJetHypoTool_EtaEt.h" +#include "../TrigJetHypoToolConfig_EtaEt.h" +#include "../TrigJetHypoToolMT.h" + DECLARE_COMPONENT( TrigHLTJetHypo2 ) DECLARE_COMPONENT( TrigJetHypoAlg ) @@ -24,3 +27,6 @@ DECLARE_COMPONENT( TrigHLTJetHypo_TLATool ) DECLARE_COMPONENT( TrigJetHypoTool_EtaEt ) + +DECLARE_COMPONENT(TrigJetHypoToolMT) +DECLARE_COMPONENT(TrigJetHypoToolConfig_EtaEt)