Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  master (da3d77e1)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
selector.cpp
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
12 #include <GaudiTestSuite/MyTrack.h>
13 #include <algorithm>
14 #include <atomic>
15 
16 namespace Gaudi {
17  namespace TestSuite {
18 
19  class CountSelectedTracks final
20  : public Functional::FilterPredicate<bool( const Gaudi::Range_<Gaudi::TestSuite::MyTrack::ConstVector>& )> {
21  public:
23  : FilterPredicate( name, pSvc, { KeyValue{ "InputData", "MyOutTracks" } } ) {}
24 
25  StatusCode initialize() override {
26  StatusCode sc = FilterPredicate::initialize();
27  if ( !sc ) return sc;
28  m_tracksCount = 0;
29  m_eventsCount = 0;
30  return sc;
31  }
32 
33  bool operator()( const Gaudi::Range_<Gaudi::TestSuite::MyTrack::ConstVector>& in_tracks ) const override {
34  ++m_eventsCount;
35  m_tracksCount += in_tracks.size();
36  return true;
37  }
38 
39  StatusCode finalize() override {
40  info() << "extracted " << m_tracksCount << " tracks in " << m_eventsCount << " events" << endmsg;
41  return FilterPredicate::finalize();
42  }
43 
44  private:
47  };
48 
49  DECLARE_COMPONENT( CountSelectedTracks )
50  } // namespace TestSuite
51 } // namespace Gaudi
52 
53 #ifndef TestSuite
54 // include ourself replacing "TestSuite" with "Examples"
55 namespace Gaudi::Examples {
57 }
58 # define TestSuite Examples
59 # include "selector.cpp"
60 #endif
TestSuite
#define TestSuite
Definition: selector.cpp:58
Gaudi::TestSuite::CountSelectedTracks::operator()
bool operator()(const Gaudi::Range_< Gaudi::TestSuite::MyTrack::ConstVector > &in_tracks) const override
Definition: selector.cpp:33
std::string
STL class.
MyTrack.h
ISvcLocator
Definition: ISvcLocator.h:46
Gaudi::TestSuite::MyTrack
Definition: MyTrack.h:45
Gaudi::TestSuite::CountSelectedTracks::finalize
StatusCode finalize() override
Definition: selector.cpp:39
Gaudi::TestSuite::CountSelectedTracks::initialize
StatusCode initialize() override
Definition: selector.cpp:25
Gaudi::Functional::details::FilterPredicate
Definition: FilterPredicate.h:23
Gaudi::Functional::FilterPredicate
details::FilterPredicate< Signature, Traits_, details::isLegacy< Traits_ > > FilterPredicate
Definition: FilterPredicate.h:68
selector.cpp
Gaudi::TestSuite::CountSelectedTracks::m_eventsCount
std::atomic< long > m_eventsCount
Definition: selector.cpp:46
Gaudi::Range_::size
size_t size() const
size of the sequence (number of elements)
Definition: Range.h:149
Gaudi::Examples
Definition: Collision.h:20
StatusCode
Definition: StatusCode.h:65
Gaudi::TestSuite::CountSelectedTracks::CountSelectedTracks
CountSelectedTracks(const std::string &name, ISvcLocator *pSvc)
Definition: selector.cpp:22
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
std::atomic< long >
Gaudi::TestSuite::CountSelectedTracks
Definition: selector.cpp:20
Gaudi
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...
Definition: __init__.py:1
Gaudi::Range_
Definition: Range.h:94
ConditionsStallTest.name
name
Definition: ConditionsStallTest.py:77
DECLARE_COMPONENT
#define DECLARE_COMPONENT(type)
Definition: PluginServiceV1.h:46
Gaudi::TestSuite::CountSelectedTracks::m_tracksCount
std::atomic< long > m_tracksCount
Definition: selector.cpp:45
FilterPredicate.h