ATLAS Offline Software
EmergingJetsFilterTool.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 // EmergingJetsFilterTool.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_ptCut(100000.0),
28  m_etaCut(2.5),
29  m_nJetsRequired(4)
30  {
31  declareInterface<DerivationFramework::ISkimmingTool>(this);
32  declareProperty("TrigDecisionTool", m_tdt, "Tool to access the trigger decision");
33  declareProperty("Triggers", m_triggers = std::vector< std::string >());
34  declareProperty("JetPtCut", m_ptCut);
35  declareProperty("JetEtaCut", m_etaCut);
36  declareProperty("nJetsRequired", m_nJetsRequired);
37  }
38 
39 // Destructor
41 }
42 
43 // Athena initialize and finalize
45 {
46  ATH_MSG_VERBOSE("initialize() ...");
47 
48  if(m_tdt.retrieve().isFailure()) {
49  ATH_MSG_FATAL("Failed to retrieve tool: " << m_tdt);
50  return StatusCode::FAILURE;
51  }
52  ATH_MSG_INFO("Retrieved tool: " << m_tdt);
53  ATH_CHECK(m_jetSGKey.initialize());
54 
55  return StatusCode::SUCCESS;
56 
57 }
59 {
60  ATH_MSG_VERBOSE("finalize() ...");
61  ATH_MSG_INFO("Processed "<< m_ntot <<" events, "<< m_npass<<" events passed filter ");
62  ATH_MSG_INFO(m_nptpass << " jets passed " << m_ptCut << " *0.001 GeV pt cut");
63  return StatusCode::SUCCESS;
64 }
65 
66 // The filter itself
68 {
69 
70  ++m_ntot;
71  bool thisEventPasses = false;
72  bool passedTrigger = false;
73 
74  // check for events passing triggers
75  if( m_triggers.size() > 0 ){
76  passedTrigger = false;
77 
78  for( unsigned int i = 0; i < m_triggers.size(); i++ ){
79  int decision = m_tdt->isPassed( m_triggers.at(i) );
80  if( decision == 1 ){
81  passedTrigger = true;
82  break;
83  }
84  }
85  }
86 
87  // if no triggers passed, event fails filter
88  if( !passedTrigger ) return thisEventPasses;
89 
90 
91  // access jet container
93  if( !jets.isValid() ) {
94  msg(MSG::WARNING) << "No Jet container found, will skip this event" << endmsg;
95  return false;
96  }
97  msg(MSG::DEBUG) << "size of Jet container is " << jets->size() << endmsg;
98 
99  // count number of jets passing pt + eta cuts
100  int nJetsPassed = 0;
101  for( unsigned int i = 0; i < jets->size(); ++i ){
102  const xAOD::Jet* jet = jets->at(i);
103  if( (jet->pt() < m_ptCut) || (std::abs(jet->eta()) > m_etaCut) ) continue;
104  nJetsPassed += 1;
105  ATH_MSG_INFO( "pt cut passing jet pt: " << jet->pt() * 0.001);
106  }
107 
108  m_nptpass = nJetsPassed;
109 
110  // require certain number of jets
111  if( nJetsPassed >= m_nJetsRequired ){
112  ++m_npass;
113  thisEventPasses = true;
114  }
115 
116  return thisEventPasses;
117 
118 }
119 
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
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
DerivationFramework::EmergingJetsFilterTool::initialize
StatusCode initialize()
Definition: EmergingJetsFilterTool.cxx:44
Feature.h
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::EmergingJetsFilterTool::eventPassesFilter
virtual bool eventPassesFilter() const
Check that the current event passes this filter.
Definition: EmergingJetsFilterTool.cxx:67
DerivationFramework::EmergingJetsFilterTool::m_triggers
std::vector< std::string > m_triggers
Definition: EmergingJetsFilterTool.h:51
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
lumiFormat.i
int i
Definition: lumiFormat.py:92
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
DerivationFramework::EmergingJetsFilterTool::m_etaCut
double m_etaCut
Definition: EmergingJetsFilterTool.h:58
DerivationFramework::EmergingJetsFilterTool::EmergingJetsFilterTool
EmergingJetsFilterTool(const std::string &t, const std::string &n, const IInterface *p)
Constructor with parameters.
Definition: EmergingJetsFilterTool.cxx:19
DerivationFramework::EmergingJetsFilterTool::m_tdt
ToolHandle< Trig::TrigDecisionTool > m_tdt
Definition: EmergingJetsFilterTool.h:50
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DerivationFramework::EmergingJetsFilterTool::m_ptCut
double m_ptCut
Definition: EmergingJetsFilterTool.h:57
DerivationFramework::EmergingJetsFilterTool::~EmergingJetsFilterTool
~EmergingJetsFilterTool()
Destructor.
Definition: EmergingJetsFilterTool.cxx:40
DerivationFramework::EmergingJetsFilterTool::m_nJetsRequired
int m_nJetsRequired
Definition: EmergingJetsFilterTool.h:59
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
DEBUG
#define DEBUG
Definition: page_access.h:11
DerivationFramework::EmergingJetsFilterTool::finalize
StatusCode finalize()
Definition: EmergingJetsFilterTool.cxx:58
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
AthAlgTool
Definition: AthAlgTool.h:26
EmergingJetsFilterTool.h
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
TrackParticleContainer.h