ATLAS Offline Software
Loading...
Searching...
No Matches
TrigMuonEFHypoTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRIGMUONHYPO_TRIGMUONEFHYPOTOOL_H
6#define TRIGMUONHYPO_TRIGMUONEFHYPOTOOL_H 1
11#include "GaudiKernel/SystemOfUnits.h"
12
13// include Muon SelectionTool for quality criteria
15
16class StoreGateSvc;
18 enum { MaxNumberTools = 20 };
19 public:
20 TrigMuonEFHypoTool(const std::string& type, const std::string & name, const IInterface* parent);
22
37 virtual StatusCode initialize() override;
38 StatusCode decide(std::vector<TrigMuonEFHypoTool::MuonEFInfo>& toolInput) const ;
39 float getdphi(float phi1, float phi2) const;
40 private:
41 bool passedQualityCuts(const xAOD::Muon* muon) const;
42 bool decideOnSingleObject(TrigMuonEFHypoTool::MuonEFInfo& input, size_t cutIndex) const;
43 StatusCode inclusiveSelection(std::vector<TrigMuonEFHypoTool::MuonEFInfo>& toolInput) const;
44 StatusCode multiplicitySelection(std::vector<TrigMuonEFHypoTool::MuonEFInfo>& toolInput) const;
45
47 // Properties:
48 Gaudi::Property< bool > m_nscan {
49 this, "NarrowScan", false, "Apply narrow scan" };
50 Gaudi::Property< float > m_conesize {
51 this, "ConeSize", 0.5, "Narrow scan cone size" };
52 Gaudi::Property< bool > m_muonqualityCut {
53 this, "MuonQualityCut", false, "Ignore selection" };
54 Gaudi::Property< std::vector<std::vector<double>> > m_ptBins {
55 this, "PtBins", { {0, 2.5} }, "Bins range of each pT threshold" };
56 Gaudi::Property< std::vector<std::vector<double>> > m_ptThresholds {
57 this, "PtThresholds", { {5.49*Gaudi::Units::GeV} }, "Track pT requirement ( separate threshold for each muon )" };
58 Gaudi::Property< bool > m_acceptAll {
59 this, "AcceptAll", false, "Ignore selection" };
60 Gaudi::Property<bool> m_decisionPerRoI {
61 this, "DecisionPerRoI", true, "Is multiplicity requirement refering to muons ( false ) or RoIs with muons ( true ), relevant only in when multiplicity > 1" };
62 Gaudi::Property<bool> m_threeStationCut{
63 this, "RequireThreeStations", false, "Apply cut on N GoodPrecisionLayers in endcaps"};
64 Gaudi::Property<bool> m_doSA{
65 this, "RequireSAMuons", false, "Apply cut on SA muons (otherwise require combined muons)"};
66 Gaudi::Property< float > m_d0min {
67 this, "MinimumD0", 0., "lower d0 cut (mm)"};
68 Gaudi::Property< bool > m_checkOvlp {
69 this, "RemoveOverlaps", false, "do overlap removal"};
70 Gaudi::Property<bool> m_runCommissioningChain{
71 this, "RunCommissioningChain", false, "Apply a looser requirement according to absence of NSW"};
72
73 // Other members:
74 std::vector<size_t> m_bins={0};
75 ToolHandle< GenericMonitoringTool > m_monTool { this, "MonTool", "", "Monitoring tool" };
76 ToolHandle<CP::IMuonSelectionTool> m_muonSelTool{this, "MuonSelectionTool", "CP::MuonSelectionTool/MuonSelectionTool", "Tool for muon quality selection"};
77 xAOD::Muon::TrackParticleType m_type;
78
79
80};
81#endif
void decisionIDs(const Decision *d, DecisionIDContainer &id)
Extracts DecisionIDs stored in the Decision object.
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
The Athena Transient Store API.
StatusCode multiplicitySelection(std::vector< TrigMuonEFHypoTool::MuonEFInfo > &toolInput) const
StatusCode decide(std::vector< TrigMuonEFHypoTool::MuonEFInfo > &toolInput) const
Gaudi::Property< bool > m_runCommissioningChain
std::vector< size_t > m_bins
Gaudi::Property< float > m_conesize
bool passedQualityCuts(const xAOD::Muon *muon) const
Gaudi::Property< bool > m_checkOvlp
Gaudi::Property< bool > m_nscan
Gaudi::Property< float > m_d0min
Gaudi::Property< bool > m_acceptAll
Gaudi::Property< bool > m_threeStationCut
float getdphi(float phi1, float phi2) const
Gaudi::Property< std::vector< std::vector< double > > > m_ptThresholds
virtual StatusCode initialize() override
ToolHandle< GenericMonitoringTool > m_monTool
TrigMuonEFHypoTool(const std::string &type, const std::string &name, const IInterface *parent)
Gaudi::Property< bool > m_decisionPerRoI
Gaudi::Property< std::vector< std::vector< double > > > m_ptBins
StatusCode inclusiveSelection(std::vector< TrigMuonEFHypoTool::MuonEFInfo > &toolInput) const
Gaudi::Property< bool > m_muonqualityCut
HLT::Identifier m_decisionId
ToolHandle< CP::IMuonSelectionTool > m_muonSelTool
bool decideOnSingleObject(TrigMuonEFHypoTool::MuonEFInfo &input, size_t cutIndex) const
Gaudi::Property< bool > m_doSA
xAOD::Muon::TrackParticleType m_type
std::set< DecisionID > DecisionIDContainer
Muon_v1 Muon
Reference the current persistent version:
const TrigCompositeUtils::DecisionIDContainer previousDecisionIDs
MuonEFInfo(TrigCompositeUtils::Decision *d, const xAOD::Muon *m, const TrigCompositeUtils::Decision *previousDecision)
TrigCompositeUtils::Decision * decision