The Gaudi Framework  v41r0 (bdbe7744)
Loading...
Searching...
No Matches
selector.cpp
Go to the documentation of this file.
1/***********************************************************************************\
2* (c) Copyright 1998-2026 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\***********************************************************************************/
13#include <algorithm>
14#include <atomic>
15
16namespace Gaudi {
17 namespace TestSuite {
18
20 : public Functional::FilterPredicate<bool( const Gaudi::Range_<Gaudi::TestSuite::MyTrack::ConstVector>& )> {
21 public:
22 CountSelectedTracks( const std::string& name, ISvcLocator* pSvc )
23 : FilterPredicate( name, pSvc, { "InputData", "MyOutTracks" } ) {}
24
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 {
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:
45 mutable std::atomic<long> m_tracksCount{ 0 };
46 mutable std::atomic<long> m_eventsCount{ 0 };
47 };
48
49 DECLARE_COMPONENT( CountSelectedTracks )
50 } // namespace TestSuite
51} // namespace Gaudi
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition MsgStream.h:198
#define DECLARE_COMPONENT(type)
Useful class for representation of "sequence" of the objects through the range of valid iterators.
Definition Range.h:81
size_t size() const
size of the sequence (number of elements)
Definition Range.h:127
StatusCode initialize() override
Definition selector.cpp:25
CountSelectedTracks(const std::string &name, ISvcLocator *pSvc)
Definition selector.cpp:22
bool operator()(const Gaudi::Range_< Gaudi::TestSuite::MyTrack::ConstVector > &in_tracks) const override
Definition selector.cpp:33
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition ISvcLocator.h:42
This class is used for returning status codes from appropriate routines.
Definition StatusCode.h:64
details::FilterPredicate< Signature, Traits_, details::isLegacy< Traits_ > > FilterPredicate
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...
Definition __init__.py:1