ATLAS Offline Software
RangeFilter.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include <algorithm>
6 
7 #include "./RangeFilter.h"
8 #include "./HypoJetPreds.h" // HypoJetPtGreater
9 
10 
11 RangeFilter::RangeFilter(std::size_t begin, std::size_t end):
12  m_begin(begin), m_end(end) {
13  if (begin > end) {throw std::out_of_range("RangeFilter begin > end");}
14  m_nToSort = end;
15 }
16 
17 
20  const std::unique_ptr<ITrigJetHypoInfoCollector>&) const {
21 
22  if (m_nToSort > jv.size()) {// too few jets
23  return HypoJetVector();
24  }
25 
26  auto filtered = HypoJetVector(jv.cbegin(), jv.cend());
27 
28  std::partial_sort(filtered.begin(),
29  filtered.begin() + m_end,
30  filtered.end(),
32 
33  return HypoJetVector(filtered.begin() + m_begin,
34  filtered.begin() + m_end);
35 }
36 
37 std::string RangeFilter::toString() const {
38  std::stringstream ss;
39  const void* address = static_cast<const void*>(this);
40  ss << "RangeFilter: (" << address << ") "
41  << "begin "<< m_begin << " end " << m_end << '\n';
42  return ss.str();
43 }
44 
45 
46 std::ostream& operator<<(std::ostream& os, const RangeFilter& cf){
47  os << cf.toString();
48  return os;
49 }
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
RangeFilter::m_nToSort
long unsigned int m_nToSort
Definition: RangeFilter.h:28
RangeFilter::m_end
std::size_t m_end
Definition: RangeFilter.h:27
HypoJetPtGreater
Definition: HypoJetPreds.h:19
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
RangeFilter::toString
virtual std::string toString() const override
Definition: RangeFilter.cxx:37
HypoJetVector
std::vector< pHypoJet > HypoJetVector
Definition: HypoJetDefs.h:27
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
RangeFilter
Definition: RangeFilter.h:12
RangeFilter.h
RangeFilter::RangeFilter
RangeFilter()
Definition: RangeFilter.h:15
RTTAlgmain.address
address
Definition: RTTAlgmain.py:55
RangeFilter::m_begin
std::size_t m_begin
Definition: RangeFilter.h:26
RangeFilter::filter
virtual HypoJetVector filter(const HypoJetVector &jv, const std::unique_ptr< ITrigJetHypoInfoCollector > &) const override
Definition: RangeFilter.cxx:19
HypoJetPreds.h
operator<<
std::ostream & operator<<(std::ostream &os, const RangeFilter &cf)
Definition: RangeFilter.cxx:46