The Gaudi Framework  v36r16 (ea80daf8)
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-2019 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 \***********************************************************************************/
11 #include <algorithm>
12 #include <atomic>
13 
15 
16 // Event Model related classes
17 #include "GaudiExamples/MyTrack.h"
18 
19 namespace Gaudi {
20  namespace Examples {
21 
22  class CountSelectedTracks final
23  : public Functional::FilterPredicate<bool( const Gaudi::Range_<Gaudi::Examples::MyTrack::ConstVector>& )> {
24  public:
26  : FilterPredicate( name, pSvc,
27  { KeyValue{ "InputData", Functional::concat_alternatives( "BogusLocation", "MoreBogus",
28  "MyOutTracks" ) } } ) {}
29 
30  StatusCode initialize() override {
31  StatusCode sc = FilterPredicate::initialize();
32  if ( !sc ) return sc;
33  m_tracksCount = 0;
34  m_eventsCount = 0;
35  return sc;
36  }
37 
38  bool operator()( const Gaudi::Range_<Gaudi::Examples::MyTrack::ConstVector>& in_tracks ) const override {
39  ++m_eventsCount;
40  m_tracksCount += in_tracks.size();
41  return true;
42  }
43 
44  StatusCode finalize() override {
45  info() << "extracted " << m_tracksCount << " tracks in " << m_eventsCount << " events" << endmsg;
46  return FilterPredicate::finalize();
47  }
48 
49  private:
52  };
53 
54  DECLARE_COMPONENT( CountSelectedTracks )
55  } // namespace Examples
56 } // namespace Gaudi
std::string
STL class.
ISvcLocator
Definition: ISvcLocator.h:46
Gaudi::Examples::CountSelectedTracks::initialize
StatusCode initialize() override
Definition: selector.cpp:30
Gaudi::Functional::details::FilterPredicate
Definition: FilterPredicate.h:25
Gaudi::Functional::FilterPredicate
details::FilterPredicate< Signature, Traits_, details::isLegacy< Traits_ > > FilterPredicate
Definition: FilterPredicate.h:70
Gaudi::Range_::size
size_t size() const
size of the sequence (number of elements)
Definition: Range.h:150
TimingHistograms.name
name
Definition: TimingHistograms.py:25
StatusCode
Definition: StatusCode.h:65
MyTrack.h
Gaudi::Examples::CountSelectedTracks::m_tracksCount
std::atomic< long > m_tracksCount
Definition: selector.cpp:50
Gaudi::Examples::CountSelectedTracks
Definition: selector.cpp:23
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:203
std::atomic< long >
Gaudi
Header file for std:chrono::duration-based Counters.
Definition: __init__.py:1
Gaudi::Range_
Definition: Range.h:95
Gaudi::Examples::CountSelectedTracks::m_eventsCount
std::atomic< long > m_eventsCount
Definition: selector.cpp:51
DECLARE_COMPONENT
#define DECLARE_COMPONENT(type)
Definition: PluginServiceV1.h:46
Gaudi::Examples::CountSelectedTracks::CountSelectedTracks
CountSelectedTracks(const std::string &name, ISvcLocator *pSvc)
Definition: selector.cpp:25
Gaudi::Examples::CountSelectedTracks::operator()
bool operator()(const Gaudi::Range_< Gaudi::Examples::MyTrack::ConstVector > &in_tracks) const override
Definition: selector.cpp:38
Gaudi::Functional::concat_alternatives
std::string concat_alternatives(std::initializer_list< std::string > c)
Definition: FunctionalUtilities.h:27
FilterPredicate.h
Gaudi::Examples::CountSelectedTracks::finalize
StatusCode finalize() override
Definition: selector.cpp:44