ATLAS Offline Software
RangeFilterTest.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"
11 
12 
13 #include "../src/TLorentzVectorFactory.h"
14 #include "../src/TLorentzVectorAsIJet.h"
15 
16 #include <vector>
17 #include <memory>
18 
19 HypoJetVector::value_type make_jet(double eta, double pt){
20  // TLorentzVectorFactory makes massless vecotrs, so e = p
21  TLorentzVector tlv = TLorentzVectorFactory().make(eta, pt);
22  pHypoJet hjet(nullptr);
23  hjet.reset(new TLorentzVectorAsIJet(tlv));
24  return hjet;
25 }
26 
27 TEST(RangeFilterTester, construction) {
28  // constructor throws id begin index > end index
29  EXPECT_NO_THROW({RangeFilter(0,0);});
30  EXPECT_NO_THROW({RangeFilter(1,1);});
31  EXPECT_THROW({RangeFilter(1,0);}, std::out_of_range);
32 }
33 
34 TEST(RangeFilterTester, insufficient0) {
35  auto rf = RangeFilter(0, 3);
36  HypoJetVector tv{};
37 
38  std::unique_ptr<ITrigJetHypoInfoCollector> deb(nullptr);
39 
40  auto fj = rf.filter(tv, deb);
41  EXPECT_EQ(fj.size(), 0u);
42 
43  tv.push_back(make_jet(0, 2.));
44 
45  fj = rf.filter(tv, deb);
46  EXPECT_EQ(fj.size(), 0u);
47 
48  tv.push_back(make_jet(0, 1.));
49 
50  fj = rf.filter(tv, deb);
51  EXPECT_EQ(fj.size(), 0u);
52 
53  tv.push_back(make_jet(0, 3.));
54 
55  fj = rf.filter(tv, deb);
56  EXPECT_EQ(fj.size(), 3u);
57 
58  EXPECT_GT(fj[0]->pt(), fj[1]->pt());
59  EXPECT_GT(fj[1]->pt(), fj[2]->pt());
60 }
61 
62 TEST(RangeFilterTester, insufficient1) {
63  auto rf = RangeFilter(1, 3);
64  HypoJetVector tv{};
65  tv.push_back(make_jet(0, 2.));
66  tv.push_back(make_jet(0, 1.));
67 
68  std::unique_ptr<ITrigJetHypoInfoCollector> deb(nullptr);
69 
70  auto fj = rf.filter(tv, deb);
71  EXPECT_EQ(fj.size(), 0u);
72 
73 }
74 
75 TEST(RangeFilterTester, run2TLA) {
76  auto rf = RangeFilter(1, 3);
77  HypoJetVector tv{};
78  tv.push_back(make_jet(0, 2.));
79  tv.push_back(make_jet(0, 1.));
80  tv.push_back(make_jet(0, 0.5));
81 
82  std::unique_ptr<ITrigJetHypoInfoCollector> deb(nullptr);
83 
84  auto fj = rf.filter(tv, deb);
85  EXPECT_EQ(fj.size(), 2u);
86 
87 }
TLorentzVectorFactory
Definition: TLorentzVectorFactory.h:13
make_jet
HypoJetVector::value_type make_jet(double eta, double pt)
Definition: RangeFilterTest.cxx:19
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
test_pyathena.pt
pt
Definition: test_pyathena.py:11
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
pHypoJet
std::shared_ptr< const HypoJet::IJet > pHypoJet
Definition: HypoJetDefs.h:25
TEST
TEST(RangeFilterTester, construction)
Definition: RangeFilterTest.cxx:27
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
ATLAS_NO_CHECK_FILE_THREAD_SAFETY
Definition: RangeFilterTest.cxx:6
HypoJetVector
std::vector< pHypoJet > HypoJetVector
Definition: HypoJetDefs.h:27
TLorentzVectorFactory::make
virtual TLorentzVector make(double eta, double et) const override
Definition: TLorentzVectorFactory.h:15
RangeFilter
Definition: RangeFilter.h:12
RangeFilter.h
TLorentzVectorAsIJet
Definition: TLorentzVectorAsIJet.h:12
ITrigJetHypoInfoCollector.h
checker_macros.h
Define macros for attributes used to control the static checker.