ATLAS Offline Software
Loading...
Searching...
No Matches
SimpleJetStream Class Reference

#include <SimpleJetStream.h>

Inheritance diagram for SimpleJetStream:
Collaboration diagram for SimpleJetStream:

Public Member Functions

 SimpleJetStream (const std::vector< std::size_t > &jets, std::unique_ptr< IJetStream > neigh, std::size_t id)
virtual std::vector< std::size_t > get () override
virtual bool bump () override
virtual bool valid () const override
virtual std::string dump () const override

Private Attributes

std::vector< std::size_t > m_jets
std::size_t m_ind {0}
std::unique_ptr< IJetStreamm_neigh {nullptr}
std::size_t m_id {}
std::size_t m_data {}
bool m_valid {false}

Friends

std::ostream & operator<< (std::ostream &os, const SimpleJetStream &js)

Detailed Description

Definition at line 26 of file SimpleJetStream.h.

Constructor & Destructor Documentation

◆ SimpleJetStream()

SimpleJetStream::SimpleJetStream ( const std::vector< std::size_t > & jets,
std::unique_ptr< IJetStream > neigh,
std::size_t id )
inline

Definition at line 35 of file SimpleJetStream.h.

37 :
38 m_jets(jets),
39 m_neigh(std::move(neigh)),
40 m_id{id}
41 {
42 m_valid = !jets.empty();
43 if(m_valid) {
44 m_data = m_jets.at(0);
45 m_ind = 0;
46 }
47 }
std::vector< std::size_t > m_jets
std::unique_ptr< IJetStream > m_neigh

Member Function Documentation

◆ bump()

virtual bool SimpleJetStream::bump ( )
inlineoverridevirtual

Implements IJetStream.

Definition at line 56 of file SimpleJetStream.h.

56 {
57 // if there is a neighbor, try bumping it.
58 bool cycled{false};
59 if (m_neigh) {
60 bool neigh_cycled = m_neigh->bump();
61
62 if (!neigh_cycled) {return false;}
63
64 // neighbor has cycled as a result of bumping.
65 ++m_ind;
66 cycled = m_ind == m_jets.size();
67
68 if (cycled) {m_ind = 0;}
69
70 m_data = m_jets.at(m_ind);
71 return cycled;
72 } else {
73
74 // no neighbor
75
76 ++m_ind;
77
78 cycled = m_ind == m_jets.size();
79
80 if(cycled) {
81 m_ind = 0;
82 }
83 m_data = m_jets.at(m_ind);
84 return cycled;
85 }
86 }

◆ dump()

virtual std::string SimpleJetStream::dump ( ) const
inlineoverridevirtual

Implements IJetStream.

Definition at line 97 of file SimpleJetStream.h.

97 {
98 std::ostringstream ss;
99 auto result = m_neigh ? m_neigh->dump() : "";
100 ss<< *this << '\n';
101 result += ss.str();
102 return result;
103 }
static Double_t ss

◆ get()

virtual std::vector< std::size_t > SimpleJetStream::get ( )
inlineoverridevirtual

Implements IJetStream.

Definition at line 50 of file SimpleJetStream.h.

50 {
51 auto result = m_neigh ? m_neigh->get() : std::vector<std::size_t>();
52 result.push_back(m_data);
53 return result;
54 }

◆ valid()

virtual bool SimpleJetStream::valid ( ) const
inlineoverridevirtual

Implements IJetStream.

Definition at line 90 of file SimpleJetStream.h.

90 {
91 if (!m_valid) {return false;}
92
93 if (m_neigh) {return m_neigh->valid();}
94 return true;
95 }

◆ operator<<

std::ostream & operator<< ( std::ostream & os,
const SimpleJetStream & js )
friend

Definition at line 9 of file SimpleJetStream.cxx.

10 {
11
12 os << "SimpleJetStream id " << js.m_id
13 << " m_valid " << std::boolalpha << js.m_valid
14 << " no of jets: " << js.m_jets.size()
15 << " m_ind " << js.m_ind;
16 return os;
17}

Member Data Documentation

◆ m_data

std::size_t SimpleJetStream::m_data {}
private

Definition at line 110 of file SimpleJetStream.h.

110{};

◆ m_id

std::size_t SimpleJetStream::m_id {}
private

Definition at line 109 of file SimpleJetStream.h.

109{};

◆ m_ind

std::size_t SimpleJetStream::m_ind {0}
private

Definition at line 107 of file SimpleJetStream.h.

107{0};

◆ m_jets

std::vector<std::size_t> SimpleJetStream::m_jets
private

Definition at line 106 of file SimpleJetStream.h.

◆ m_neigh

std::unique_ptr<IJetStream> SimpleJetStream::m_neigh {nullptr}
private

Definition at line 108 of file SimpleJetStream.h.

108{nullptr};

◆ m_valid

bool SimpleJetStream::m_valid {false}
private

Definition at line 111 of file SimpleJetStream.h.

111{false};

The documentation for this class was generated from the following file: