ATLAS Offline Software
MaxMultFilter.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include <algorithm>
6 
7 #include "./MaxMultFilter.h"
8 #include "./HypoJetPreds.h" // HypoJetPtGreater
9 
10 
11 MaxMultFilter::MaxMultFilter(std::size_t end, double etaMin, double etaMax):
12  m_end(end), m_etaMin(etaMin), m_etaMax(etaMax), m_nToSort(end) {}
13 
16  const std::unique_ptr<ITrigJetHypoInfoCollector>&) const {
17 
18  auto filtered = HypoJetVector();
19  std::copy_if(jv.begin(), jv.end(), std::back_inserter(filtered),
20  [this](const pHypoJet& jp){
21  return (std::abs(jp->eta())<this->m_etaMax && std::abs(jp->eta())>this->m_etaMin);} );
22 
23  auto nToSort = std::min(m_nToSort, filtered.size());
24 
25  std::partial_sort(filtered.begin(),
26  filtered.begin() + nToSort,
27  filtered.end(),
29 
30  filtered.resize(nToSort);
31 
32  return filtered;
33 }
34 
35 std::string MaxMultFilter::toString() const {
36  std::stringstream ss;
37  const void* address = static_cast<const void*>(this);
38  ss << "MaxMultFilter: (" << address << ") "
39  << " eta range [" << m_etaMin << ", " << m_etaMax << "]:"
40  << " end " << m_end << '\n';
41  return ss.str();
42 }
43 
44 
45 std::ostream& operator<<(std::ostream& os, const MaxMultFilter& cf){
46  os << cf.toString();
47  return os;
48 }
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
operator<<
std::ostream & operator<<(std::ostream &os, const MaxMultFilter &cf)
Definition: MaxMultFilter.cxx:45
HypoJetPtGreater
Definition: HypoJetPreds.h:19
MaxMultFilter::MaxMultFilter
MaxMultFilter()
Definition: MaxMultFilter.h:15
xAOD::etaMax
etaMax
Definition: HIEventShape_v2.cxx:46
MaxMultFilter::filter
virtual HypoJetVector filter(const HypoJetVector &jv, const std::unique_ptr< ITrigJetHypoInfoCollector > &) const override
Definition: MaxMultFilter.cxx:15
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
MaxMultFilter::m_etaMax
const double m_etaMax
Definition: MaxMultFilter.h:28
pHypoJet
std::shared_ptr< const HypoJet::IJet > pHypoJet
Definition: HypoJetDefs.h:25
MaxMultFilter
Definition: MaxMultFilter.h:12
AnalysisUtils::copy_if
Out copy_if(In first, const In &last, Out res, const Pred &p)
Definition: IFilterUtils.h:30
HypoJetVector
std::vector< pHypoJet > HypoJetVector
Definition: HypoJetDefs.h:27
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
min
#define min(a, b)
Definition: cfImp.cxx:40
MaxMultFilter::m_etaMin
const double m_etaMin
Definition: MaxMultFilter.h:27
MaxMultFilter::m_nToSort
const long unsigned int m_nToSort
Definition: MaxMultFilter.h:29
RTTAlgmain.address
address
Definition: RTTAlgmain.py:55
MaxMultFilter::m_end
const std::size_t m_end
Definition: MaxMultFilter.h:26
LArCellBinning.etaMin
etaMin
Definition: LArCellBinning.py:84
HypoJetPreds.h
MaxMultFilter.h
MaxMultFilter::toString
virtual std::string toString() const override
Definition: MaxMultFilter.cxx:35