ATLAS Offline Software
Loading...
Searching...
No Matches
JetGroupUnion.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "./JetGroupUnion.h"
6#include <set>
7#include <string>
8#include <algorithm>
9#include <sstream>
10
11
12JetGroupUnion::JetGroupUnion(const std::vector<std::size_t>& siblings,
13 const CondInd2JetGroupsInds& satisfiedBy) {
14
15 // make a vector of the jet indices that satisfy the sibling Conditions
16 // with no duplicates
17
18 for (const auto& s :siblings){
19 m_jetIndices.insert(m_jetIndices.end(),
20 satisfiedBy.at(s).cbegin(),
21 satisfiedBy.at(s).cend()
22 );
23 }
24
25 std::sort(m_jetIndices.begin(),
26 m_jetIndices.end());
27
28 auto iter = std::unique(m_jetIndices.begin(),
29 m_jetIndices.end());
30
31 m_jetIndices.resize(iter-m_jetIndices.begin());
32 m_done = false;
33}
34
35
36std::vector<std::size_t> JetGroupUnion::next(const Collector& collector){
37 if(collector){
38 std::stringstream sstr;
39 sstr << "no of indices " << m_jetIndices.size()
40 << " done " << std::boolalpha << m_done;
41 collector->collect("JetGroupUnion::next()", sstr.str());
42 }
43
44 if (m_done) {
45 return std::vector<std::size_t>();
46 }
47
48 m_done = true;
49 return m_jetIndices;
50}
51
52bool JetGroupUnion::valid() const {return true;}
std::map< int, std::vector< std::size_t > > CondInd2JetGroupsInds
std::unique_ptr< ITrigJetHypoInfoCollector > Collector
virtual void collect(const std::string &, const std::string &)=0
std::vector< std::size_t > m_jetIndices
JetGroupUnion(const std::vector< std::size_t > &siblings, const CondInd2JetGroupsInds &satisfiedBy)
virtual std::vector< std::size_t > next(const Collector &) override
virtual bool valid() const override
DataModel_detail::iterator< DVL > unique(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of unique for DataVector/List.
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.