5#ifndef TRIGHLTJETHYPO_COMBINATIONSJETSTREAM_H
6#define TRIGHLTJETHYPO_COMBINATIONSJETSTREAM_H
40 friend std::stringstream&
operator << (std::stringstream&,
44 std::unique_ptr<IJetStream> neigh,
53 m_valid = k <= n and !jets.empty();
58 for (
const auto i : indices) {
m_data.push_back(
m_jets.at(i));}
62 virtual std::vector<std::size_t>
get()
override {
71 virtual bool bump()
override {
78 bool neigh_cycled =
m_neigh->bump();
79 if (!neigh_cycled) {
return false;}
85 for (
const auto i : indices) {
m_data.push_back(
m_jets.at(i));}
93 for (
const auto& i : indices) {
101 virtual bool valid()
const override {
108 virtual std::string
dump()
const override {
112 std::stringstream
ss;
124 std::unique_ptr<CombinationsGenerator>
m_combgen{
nullptr};
std::ostream & operator<<(std::ostream &, const CombinationsJetStream &)
generate all possible combinations of objects
std::vector< std::size_t > m_jets
virtual bool valid() const override
virtual bool bump() override
std::vector< std::size_t > m_data
virtual std::string dump() const override
std::unique_ptr< CombinationsGenerator > m_combgen
virtual std::vector< std::size_t > get() override
friend std::ostream & operator<<(std::ostream &, const CombinationsJetStream &)
std::unique_ptr< IJetStream > m_neigh
CombinationsJetStream(const std::vector< std::size_t > &jets, std::unique_ptr< IJetStream > neigh, std::size_t k, std::size_t id)