ATLAS Offline Software
CollisionFilterAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
9 
10 
11 CollisionFilterAlg::CollisionFilterAlg(const std::string& name, ISvcLocator* pSvcLocator)
12  : AthReentrantAlgorithm(name, pSvcLocator)
13  , m_calofilter("CaloTimeFilterTool")
14  , m_mbtsfilter("MBTSTimeFilterTool"){
15  declareProperty( "CaloTimeFilterTool", m_calofilter, "The instance of the CaloTimeFilterTool" );
16  declareProperty( "MBTSTimeFilterTool", m_mbtsfilter, "The instance of the MBTSTimeFilterTool" );
17 }
18 
20 {
21  ATH_MSG_DEBUG ("initialize()");
22 
24  if (m_doCaloTimeFilter) {
25  ATH_CHECK(m_calofilter.retrieve());
26  }
28 
30  if (m_doMBTSTimeFilter) {
31  ATH_CHECK(m_mbtsfilter.retrieve());
32  }
34 
35  ATH_MSG_DEBUG ("initialize() successful");
36 
37  return StatusCode::SUCCESS;
38 }
39 
40 
42 CollisionFilterAlg::execute(const EventContext& ctx) const
43 {
44  StatusCode sc = StatusCode::SUCCESS;
45 
46  ATH_MSG_DEBUG ("execute()");
47 
48  if (m_counter % m_prescale == 0)
49  ATH_MSG_DEBUG ("Now processing event : " << m_counter);
50  ++m_counter;
51 
53 
54  bool pass(false);
55 
58 
60 
61  if (m_doCaloTimeFilter) {
62  sc = m_calofilter->getTimeDifference(Calo, m_LArTimeKey, ctx);
63  if ( sc.isFailure() ) {
64  ATH_MSG_WARNING (m_calofilter.propertyName() << ": Failed to execute tool " << m_calofilter.type());
65  return StatusCode::SUCCESS;
66  }
67  if (Calo.passCut) {
68  ATH_MSG_DEBUG ("Event accepted by CaloTimeFilter.");
69  ++m_caloaccept;
70  } else
71  ATH_MSG_DEBUG ("Event rejected by CaloTimeFilter.");
72  }
73 
75 
76  if (m_doMBTSTimeFilter) {
77  sc = m_mbtsfilter->getTimeDifference(MBTS, m_MBTS_key,ctx);
78  if ( sc.isFailure() ) {
79  ATH_MSG_WARNING (m_mbtsfilter.propertyName() << ": Failed to execute tool " << m_mbtsfilter.type());
80  return StatusCode::SUCCESS;
81  }
82  if (MBTS.passCut) {
83  ATH_MSG_DEBUG ("Event accepted by MBTSTimeFilter.");
84  ++m_mbtsaccept;
85  } else
86  ATH_MSG_DEBUG ("Event rejected by MBTSTimeFilter.");
87  }
88 
90 
91  if (m_doCaloTimeFilter) pass = pass || Calo.passCut;
92  if (m_doMBTSTimeFilter) pass = pass || MBTS.passCut;
94  ATH_MSG_DEBUG ("Event accepted as collision ? " << pass);
95  setFilterPassed (pass,ctx); // This skips the execution of following algs for this event
96  }
97 
99  if (Calo.passCut && MBTS.passCut) ++m_overlap;
100 
102 
103  ATH_MSG_DEBUG ("execute() successful");
104 
105  return StatusCode::SUCCESS;
106 }
107 
108 
110 {
111  ATH_MSG_DEBUG ("finalize()");
112 
113  if (m_doCaloTimeFilter) ATH_MSG_INFO ("CaloTimeFilter : Processed " << m_counter << " events, accepted " << m_caloaccept << " events.");
114  if (m_doMBTSTimeFilter) ATH_MSG_INFO ("MBTSTimeFilter : Processed " << m_counter << " events, accepted " << m_mbtsaccept << " events.");
115 
117  ATH_MSG_INFO ("Overlapping accept : " << m_overlap << " events.");
118 
119  return StatusCode::SUCCESS;
120 }
121 
122 
CollisionFilterAlg::m_calofilter
ToolHandle< ICaloTimeFilterTool > m_calofilter
Definition: CollisionFilterAlg.h:32
TimingFilterInformation
Simple helper struct used to obtain the timing information by the IMBTSTimeFilter and ICaloTimerFilte...
Definition: TimingFilterInformation.h:10
Calo
Definition: CaloTrackingGeometryBuilder.h:15
CollisionFilterAlg::m_mbtsfilter
ToolHandle< IMBTSTimeFilterTool > m_mbtsfilter
Definition: CollisionFilterAlg.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MBTSTimeFilterTool.h
CollisionFilterAlg::m_prescale
Gaudi::Property< unsigned int > m_prescale
Definition: CollisionFilterAlg.h:39
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TimingFilterInformation::passCut
bool passCut
Definition: TimingFilterInformation.h:12
CollisionFilterAlg::CollisionFilterAlg
CollisionFilterAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: CollisionFilterAlg.cxx:11
CollisionFilterAlg::m_doMBTSTimeFilter
Gaudi::Property< bool > m_doMBTSTimeFilter
Definition: CollisionFilterAlg.h:41
CollisionFilterAlg::m_caloaccept
std::atomic< unsigned int > m_caloaccept
Definition: CollisionFilterAlg.h:46
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
CollisionFilterAlg::m_MBTS_key
SG::ReadHandleKey< TileCellContainer > m_MBTS_key
Definition: CollisionFilterAlg.h:35
jet::CombMassComp::Calo
@ Calo
Definition: UncertaintyEnum.h:197
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CollisionFilterAlg::finalize
virtual StatusCode finalize() override
Definition: CollisionFilterAlg.cxx:109
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
CollisionFilterAlg::m_overlap
std::atomic< unsigned int > m_overlap
Definition: CollisionFilterAlg.h:48
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CollisionFilterAlg::m_counter
std::atomic< unsigned int > m_counter
Definition: CollisionFilterAlg.h:44
CollisionFilterAlg::m_LArTimeKey
SG::ReadHandleKey< LArCollisionTime > m_LArTimeKey
Definition: CollisionFilterAlg.h:36
CollisionFilterAlg.h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CollisionFilterAlg::execute
virtual StatusCode execute(const EventContext &ctx) const override
Definition: CollisionFilterAlg.cxx:42
CollisionFilterAlg::m_doCaloTimeFilter
Gaudi::Property< bool > m_doCaloTimeFilter
Definition: CollisionFilterAlg.h:40
CollisionFilterAlg::initialize
virtual StatusCode initialize() override
Definition: CollisionFilterAlg.cxx:19
AthReentrantAlgorithm::setFilterPassed
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Definition: AthReentrantAlgorithm.h:139
CaloTimeFilterTool.h
CollisionFilterAlg::m_mbtsaccept
std::atomic< unsigned int > m_mbtsaccept
Definition: CollisionFilterAlg.h:47