11 #include "../../../dump.h"
12 #include "../../../dump.icc"
23 std::vector<eEmTobPtr>
28 const std::string&
name,
29 const IInterface*
parent) :
50 std::vector<std::vector<unsigned int>> (
s_NumCnt,
65 return StatusCode::SUCCESS;
84 auto collector = std::make_unique<DataCollector>();
85 collector->collect(
"eEmTobs in", eEmTobs);
90 auto selected_eEmTobs = std::vector<std::vector<eEmTobPtr>>();
93 collector->collect(
"selected eEmTobs containers", selected_eEmTobs);
98 auto selected_genericTobs =
99 std::vector<std::vector<GenTobPtr>>(selected_eEmTobs.size(),
100 std::vector<GenTobPtr>());
102 auto make_genericTob = [](
const auto& tob) {
103 return std::make_shared<GenericTob>(tob);
106 for (std::size_t
i = 0;
i != selected_eEmTobs.size(); ++
i){
109 std::back_inserter(selected_genericTobs[
i]),
113 collector->collect(
"Selected generic tob containers",
114 selected_genericTobs);
117 return l->Et() >
r->Et();
121 auto ports_out = std::make_unique<eEmSortSelectCountContainerPortsOut>();
126 auto& outputTobs = ports_out->m_O_eEmGenTob;
129 auto&
sel = selected_genericTobs[
i];
147 collector->collect(
"Sorted generic tob containers",
148 selected_genericTobs);
166 auto ntobs =
count_tobs(selected_genericTobs);
167 collector->collect(
"eEmSortSelectCount counts", ntobs);
171 std::vector<std::pair<std::size_t, unsigned>> bounded_counts;
172 bounded_counts.reserve(ntobs.size());
174 for(std::size_t
i = 0;
i != ntobs.size(); ++
i) {
175 bounded_counts.push_back({
181 std::vector<std::vector<short>> int_bit_vecs;
182 int_bit_vecs.reserve(bounded_counts.size());
186 std::cend(bounded_counts),
187 std::back_inserter(int_bit_vecs),
189 std::vector<short> bits(
p.second, 0);
193 if (ntob&1) {bits.at(
i) = 1;}
203 std::vector<short> int_bits;
204 for (
const auto&
v : int_bit_vecs) {
205 int_bits.insert(int_bits.end(), std::cbegin(
v), std::cend(
v));
211 int_bits.size() != (ports_out->m_O_Multiplicity)->
size()) {
214 <<
" obtained " << int_bits.size()
215 <<
" number bits in output ports "
216 << (ports_out->m_O_Multiplicity)->size());
217 return StatusCode::FAILURE;
221 auto& count_bits_out = ports_out->m_O_Multiplicity;
222 for (std::size_t
i = 0;
i != int_bits.size(); ++
i){
223 if (int_bits[
i] == 1) {
224 count_bits_out->set(
i);
226 count_bits_out->reset(
i);
232 std::stringstream
ss;
238 std::stringstream
ss;
249 CHECK(h_write.record(std::move(ports_out)));
250 return StatusCode::SUCCESS;
253 std::vector<eEmTobPtr>
256 auto eEmTobs = std::vector<eEmTobPtr>();
257 eEmTobs.reserve(
fifo.size());
261 std::back_inserter(eEmTobs),
263 return std::make_shared<eEmTob>(f);
272 std::vector<std::vector<eEmTobPtr>>& selectedTobs)
const {
288 std::vector<eEmTobPtr> s_tobs;
289 s_tobs.reserve(eEmTobs.size());
292 std::back_inserter(s_tobs),
295 selectedTobs.push_back(s_tobs);
299 return StatusCode::SUCCESS;
302 std::vector<std::size_t>
306 auto counts = std::vector<std::size_t>(
s_NumCnt, 0);
309 const auto& gTobs = tobContainerVector[
s_CntSelN[
i]];
318 for(std::size_t j{0}; j != etMin_etaRegs.size(); ++j) {
319 if (tob->Et() > etMin_etaRegs[j] and
320 tob->Eta() > etaMin_etaRegs[j] and
321 tob->Eta() <= etaMax_etaRegs[j]) {return true;}
332 std::stringstream
ss;
333 ss <<
"eEmSortSelectCountContainerAlgTool.name: " <<
name() <<
'\n'