ATLAS Offline Software
EmergingJetsHighPtFilterTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // EmergingJetsHighPtFilterTool.cxx, (c) ATLAS Detector software
8 
10 #include <vector>
11 #include <string>
13 
17 
18 // Constructor
20  const std::string& n,
21  const IInterface* p ) :
22  AthAlgTool(t,n,p),
23  m_tdt("Trig::TrigDecisionTool/TrigDecisionTool"),
24  m_ntot(0),
25  m_npass(0),
26  m_nptpass(0),
27  m_nhighptpass(0),
28  m_ptCut(100000.0),
29  m_highPtCut(300000.0),
30  m_etaCut(2.5),
31  m_nJetsRequired(4),
32  m_nHighPtJetsRequired(1)
33  {
34  declareInterface<DerivationFramework::ISkimmingTool>(this);
35  declareProperty("TrigDecisionTool", m_tdt, "Tool to access the trigger decision");
36  declareProperty("Triggers", m_triggers = std::vector< std::string >());
37  declareProperty("JetPtCut", m_ptCut);
38  declareProperty("JetHighPtCut", m_highPtCut);
39  declareProperty("JetEtaCut", m_etaCut);
40  declareProperty("nJetsRequired", m_nJetsRequired);
41  declareProperty("nHighPtJetsRequired", m_nHighPtJetsRequired);
42  }
43 
44 // Destructor
46 }
47 
48 // Athena initialize and finalize
50 {
51  ATH_MSG_VERBOSE("initialize() ...");
52 
53  if(m_tdt.retrieve().isFailure()) {
54  ATH_MSG_FATAL("Failed to retrieve tool: " << m_tdt);
55  return StatusCode::FAILURE;
56  }
57  ATH_MSG_INFO("Retrieved tool: " << m_tdt);
58 
59  ATH_CHECK(m_jetSGKey.initialize());
60 
61  return StatusCode::SUCCESS;
62 
63 }
65 {
66  ATH_MSG_VERBOSE("finalize() ...");
67  ATH_MSG_INFO("Processed " << m_ntot << " events, " << m_npass << " events passed filter ");
68  //ATH_MSG_INFO(m_nptpass << " jets passed " << m_ptCut << " GeV pt cut");
69  //ATH_MSG_INFO(m_nhighptpass << " jets passed " << m_highPtCut << " GeV high-pt cut");
70  return StatusCode::SUCCESS;
71 }
72 
73 // The filter itself
75 {
76 
77  ++m_ntot;
78  bool thisEventPasses = false;
79  bool passedTrigger = false;
80 
81  // check for events passing triggers
82  if( m_triggers.size() > 0 ){
83  passedTrigger = false;
84 
85  for( unsigned int i = 0; i < m_triggers.size(); i++ ){
86  int decision = m_tdt->isPassed( m_triggers.at(i) );
87  if( decision == 1 ){
88  passedTrigger = true;
89  break;
90  }
91  }
92  }
93 
94  // if no triggers passed, event fails filter
95  if( !passedTrigger ) return thisEventPasses;
96 
97 
98  // access jet container
100  if( !jets.isValid() ) {
101  msg(MSG::WARNING) << "No Jet container found, will skip this event" << endmsg;
102  return false;
103  }
104  msg(MSG::DEBUG) << "size of Jet container is " << jets->size() << endmsg;
105 
106  // count number of jets passing pt + eta cuts
107  int nJetsPassed = 0;
108  // count number of high-pt jets passing pt + eta cuts + high-pt cut
109  int nHighPtJetsPassed = 0;
110  for ( unsigned int i = 0; i < jets->size(); ++i ) {
111  const xAOD::Jet* jet = jets->at(i);
112  if ( (jet->pt() < m_ptCut) || (std::abs(jet->eta()) > m_etaCut) ) continue;
113  nJetsPassed += 1;
114  ATH_MSG_INFO( "pt cut passing jet pt: " << jet->pt() * 0.001);
115  if ( jet->pt() < m_highPtCut ) continue;
116  nHighPtJetsPassed += 1;
117  ATH_MSG_INFO( "high-pt cut passing jet pt: " << jet->pt() * 0.001);
118  }
119 
120  m_nptpass = nJetsPassed;
121  m_nhighptpass = nHighPtJetsPassed;
122 
123  // require certain number of jets
124  if ( (nJetsPassed >= m_nJetsRequired) && (nHighPtJetsPassed >= m_nHighPtJetsRequired) ) {
125  ++m_npass;
126  thisEventPasses = true;
127  }
128 
129  return thisEventPasses;
130 
131 }
132 
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
DerivationFramework::EmergingJetsHighPtFilterTool::m_triggers
std::vector< std::string > m_triggers
Definition: EmergingJetsHighPtFilterTool.h:51
FeatureContainer.h
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Feature.h
DerivationFramework::EmergingJetsHighPtFilterTool::finalize
StatusCode finalize()
Definition: EmergingJetsHighPtFilterTool.cxx:64
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ChainGroup.h
DerivationFramework::EmergingJetsHighPtFilterTool::m_ptCut
double m_ptCut
Definition: EmergingJetsHighPtFilterTool.h:58
DerivationFramework::EmergingJetsHighPtFilterTool::eventPassesFilter
virtual bool eventPassesFilter() const
Check that the current event passes this filter.
Definition: EmergingJetsHighPtFilterTool.cxx:74
DerivationFramework::EmergingJetsHighPtFilterTool::EmergingJetsHighPtFilterTool
EmergingJetsHighPtFilterTool(const std::string &t, const std::string &n, const IInterface *p)
Constructor with parameters.
Definition: EmergingJetsHighPtFilterTool.cxx:19
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
lumiFormat.i
int i
Definition: lumiFormat.py:92
DerivationFramework::EmergingJetsHighPtFilterTool::m_nHighPtJetsRequired
int m_nHighPtJetsRequired
Definition: EmergingJetsHighPtFilterTool.h:62
beamspotman.n
n
Definition: beamspotman.py:731
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
EmergingJetsHighPtFilterTool.h
DerivationFramework::EmergingJetsHighPtFilterTool::~EmergingJetsHighPtFilterTool
~EmergingJetsHighPtFilterTool()
Destructor.
Definition: EmergingJetsHighPtFilterTool.cxx:45
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
DerivationFramework::EmergingJetsHighPtFilterTool::m_highPtCut
double m_highPtCut
Definition: EmergingJetsHighPtFilterTool.h:59
DEBUG
#define DEBUG
Definition: page_access.h:11
DerivationFramework::EmergingJetsHighPtFilterTool::m_etaCut
double m_etaCut
Definition: EmergingJetsHighPtFilterTool.h:60
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
AthAlgTool
Definition: AthAlgTool.h:26
DerivationFramework::EmergingJetsHighPtFilterTool::m_tdt
ToolHandle< Trig::TrigDecisionTool > m_tdt
Definition: EmergingJetsHighPtFilterTool.h:50
DerivationFramework::EmergingJetsHighPtFilterTool::initialize
StatusCode initialize()
Definition: EmergingJetsHighPtFilterTool.cxx:49
DerivationFramework::EmergingJetsHighPtFilterTool::m_nJetsRequired
int m_nJetsRequired
Definition: EmergingJetsHighPtFilterTool.h:61
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
TrackParticleContainer.h