ATLAS Offline Software
ConditionFilter.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 "./ConditionFilter.h"
8 
10  m_conditions(std::move(conditions)) {
11 }
12 
13 
14 struct FilterPred{
15 
16  FilterPred(const ConditionPtr& cptr,
17  const std::unique_ptr<ITrigJetHypoInfoCollector>& collector):
18  m_cptr(cptr), m_collector(collector) {
19  }
20 
21  bool operator() (pHypoJet pjet) {
22  auto hjv = HypoJetVector{pjet};
23  return m_cptr->isSatisfied(hjv, m_collector);
24  }
25 
27  const std::unique_ptr<ITrigJetHypoInfoCollector>& m_collector;
28 };
29 
32  const std::unique_ptr<ITrigJetHypoInfoCollector>& collector) const {
33 
34 
35  if (m_conditions.empty()) {
36  return jv;
37  }
38 
39  auto filtered = HypoJetVector(jv.cbegin(), jv.cend());
40  auto filtered_begin = filtered.begin();
41  auto filtered_end = filtered.end();
42 
43  for (const auto& cptr : m_conditions) {
44  filtered_end = std::partition(filtered_begin,
45  filtered_end,
46  FilterPred(cptr, collector));
47  }
48 
49  filtered.resize(filtered_end - filtered_begin);
50 
51  return filtered;
52 }
53 
54 std::string ConditionFilter::toString() const {
55  std::stringstream ss;
56  const void* address = static_cast<const void*>(this);
57  ss << "ConditionFilter: (" << address << ")\n"
58  << "Conditions [" << m_conditions.size() << "]:\n";
59  for (const auto& c : m_conditions) {
60  if (c) {
61  ss << " " << c->toString() << "\n\n";
62  }
63  }
64 
65  return ss.str();
66 }
67 
68 
69 std::ostream& operator<<(std::ostream& os, const ConditionFilter& cf){
70  os << cf.toString();
71  return os;
72 }
FilterPred::FilterPred
FilterPred(const ConditionPtr &cptr, const std::unique_ptr< ITrigJetHypoInfoCollector > &collector)
Definition: ConditionFilter.cxx:16
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
pHypoJet
std::shared_ptr< const HypoJet::IJet > pHypoJet
Definition: HypoJetDefs.h:25
FilterPred::m_cptr
const ConditionPtr & m_cptr
Definition: ConditionFilter.cxx:26
HypoJetVector
std::vector< pHypoJet > HypoJetVector
Definition: HypoJetDefs.h:27
ConditionPtr
std::unique_ptr< IRepeatedCondition > ConditionPtr
Definition: RepeatedConditionsDefs.h:19
ReadFromCoolCompare.os
os
Definition: ReadFromCoolCompare.py:231
ConditionFilter::filter
virtual HypoJetVector filter(const HypoJetVector &jv, const std::unique_ptr< ITrigJetHypoInfoCollector > &) const override
Definition: ConditionFilter.cxx:31
RTTAlgmain.address
address
Definition: RTTAlgmain.py:55
FilterPred::m_collector
const std::unique_ptr< ITrigJetHypoInfoCollector > & m_collector
Definition: ConditionFilter.cxx:27
operator<<
std::ostream & operator<<(std::ostream &os, const ConditionFilter &cf)
Definition: ConditionFilter.cxx:69
ConditionPtrs
std::vector< ConditionPtr > ConditionPtrs
Definition: RepeatedConditionsDefs.h:20
ConditionFilter.h
StateLessPT_NewConfig.partition
partition
Definition: StateLessPT_NewConfig.py:49
ConditionFilter
Definition: ConditionFilter.h:12
ConditionFilter::m_conditions
ConditionPtrs m_conditions
Definition: ConditionFilter.h:28
ConditionFilter::ConditionFilter
ConditionFilter()
Definition: ConditionFilter.h:15
FilterPred::operator()
bool operator()(pHypoJet pjet)
Definition: ConditionFilter.cxx:21
python.compressB64.c
def c
Definition: compressB64.py:93
FilterPred
Definition: ConditionFilter.cxx:14
ConditionFilter::toString
virtual std::string toString() const override
Definition: ConditionFilter.cxx:54