ATLAS Offline Software
MultiFilterTest.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
8 #include "gtest/gtest.h"
14 
15 
16 #include "../src/TLorentzVectorFactory.h"
17 #include "../src/TLorentzVectorAsIJet.h"
18 #include "../src/makeHypoJets.h"
19 #include "../src/makeRepeatedConditions.h"
20 
21 #include <vector>
22 #include <memory>
23 
24 
25 
26 TEST(MultiFilterTester, fourjets_twofilters) {
27 
28  EtaPairs cond_etas;
29  cond_etas.push_back(std::make_pair(0., 2.5));
30  cond_etas.push_back(std::make_pair(0., 1.5));
31 
32  // vector of two ConditionPtr s
33  // ConditionPtrs conditionPtrs = makeRepeatedConditions(cond_etas);
34 
35  std::vector<FilterPtr> filters{};
36 
37  for(const auto& ce : cond_etas) {
38  filters.push_back(std::make_unique<ConditionFilter>(makeRepeatedConditions(ce)));
39  }
40 
41  std::unique_ptr<ITrigJetHypoInfoCollector> deb(nullptr);
42 
43  std::vector<double> jet_eta{1.0, 0.5, 2.0, 4.0};
44  HypoJetVector tv = makeHypoJets(jet_eta);
45 
46  EXPECT_EQ(filters.size(), 2u);
47 
48  // apply the filters in a chain
49  auto fj = tv;
50  for (const auto& fp : filters) {
51  fj = fp->filter(tv, deb);
52  }
53 
54  EXPECT_EQ(fj.size(), 2u);
55 
56  auto etas = std::vector<double> {};
57  etas.reserve(fj.size());
58  std::transform(fj.begin(),
59  fj.end(),
60  std::back_inserter(etas),
61  [](const pHypoJet& hj){return hj->eta();});
62  std::sort(etas.begin(), etas.end());
63 
64  EXPECT_EQ(etas.size(), 2u);
65  EXPECT_DOUBLE_EQ(etas[0], 0.5);
66  EXPECT_DOUBLE_EQ(etas[1], 1.0);
67 
68 }
makeHypoJets
HypoJetVector makeHypoJets(const std::vector< double > &etas)
Definition: makeHypoJets.cxx:11
EtaPairs
std::vector< EtaPair > EtaPairs
Definition: makeRepeatedConditions.h:14
EtaConditionAbs.h
ITrigHypoJetVectorFilterConfig.h
makeRepeatedConditions
ConditionPtrs makeRepeatedConditions(const EtaPair &eta)
Definition: makeRepeatedConditions.cxx:11
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
pHypoJet
std::shared_ptr< const HypoJet::IJet > pHypoJet
Definition: HypoJetDefs.h:25
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
Definition: MultiFilterTest.cxx:6
trigmenu_modify_prescale_json.fp
fp
Definition: trigmenu_modify_prescale_json.py:53
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
HypoJetVector
std::vector< pHypoJet > HypoJetVector
Definition: HypoJetDefs.h:27
ITrigJetHypoInfoCollector.h
ConditionFilter.h
RepeatedCondition.h
checker_macros.h
Define macros for attributes used to control the static checker.
TEST
TEST(MultiFilterTester, fourjets_twofilters)
Definition: MultiFilterTest.cxx:26
EgEfficiencyCorr_testFixedInput.etas
list etas
Definition: EgEfficiencyCorr_testFixedInput.py:9