16#include <gtest/gtest.h>
21 constexpr auto proton_pid = 2212;
22 constexpr auto neutron_pid = 2112;
23 constexpr auto electron_pid = 11;
26 TEST(NeulandPointFilterTest, test_setters_getters)
28 auto filter = ParticleFilter{};
29 EXPECT_EQ(filter.GetMode(), ParticleFilter::Mode::pass);
30 EXPECT_EQ(filter.GetMinEnergy(), 0.);
31 EXPECT_EQ(filter.GetMaxEnergy(), 0.);
33 filter.SetMode(ParticleFilter::Mode::whitelist);
34 EXPECT_EQ(filter.GetMode(), ParticleFilter::Mode::whitelist);
36 filter.SetMaxEnergy(1.);
37 EXPECT_EQ(filter.GetMaxEnergy(), 1.);
39 filter.SetMinEnergy(1.);
40 EXPECT_EQ(filter.GetMinEnergy(), 1.);
43 EXPECT_EQ(filter.GetMode(), ParticleFilter::Mode::pass);
44 EXPECT_EQ(filter.GetMinEnergy(), 0.);
45 EXPECT_EQ(filter.GetMaxEnergy(), 0.);
48 TEST(NeulandPointFilterTest, test_global_closed_range)
52 constexpr auto test_energy_gev = 0.7;
53 point.SetEnergyLoss(test_energy_gev);
56 auto test_min_energy = 0.6;
57 auto test_max_energy = 0.9;
59 filter.SetMaxEnergy(test_max_energy);
61 EXPECT_TRUE(filter.IsPointAllowed(point));
63 test_min_energy = 0.8;
64 test_max_energy = 0.9;
65 filter.SetMinEnergy(test_min_energy);
66 filter.SetMaxEnergy(test_max_energy);
68 EXPECT_FALSE(filter.IsPointAllowed(point));
71 TEST(NeulandPointFilterTest, test_global_open_range)
75 auto test_energy_gev = 0.7;
76 point.SetEnergyLoss(test_energy_gev);
79 auto test_min_energy = 0.6;
80 auto test_max_energy = 0.2;
82 filter.SetMaxEnergy(test_max_energy);
84 EXPECT_TRUE(filter.IsPointAllowed(point));
86 test_energy_gev = 0.1;
87 point.SetEnergyLoss(test_energy_gev);
89 filter.SetMinEnergy(test_min_energy);
90 filter.SetMaxEnergy(test_max_energy);
92 EXPECT_TRUE(filter.IsPointAllowed(point));
94 test_energy_gev = 0.5;
95 point.SetEnergyLoss(test_energy_gev);
97 filter.SetMinEnergy(test_min_energy);
98 filter.SetMaxEnergy(test_max_energy);
100 EXPECT_FALSE(filter.IsPointAllowed(point));
103 test_min_energy = 0.2;
104 point.SetEnergyLoss(test_energy_gev);
106 filter.SetMinEnergy(test_min_energy);
107 filter.SetMaxEnergy(test_min_energy);
109 EXPECT_TRUE(filter.IsPointAllowed(point));
112 TEST(NeulandPointFilterTest, test_blacklist_mode)
114 auto filter = ParticleFilter{ ParticleFilter::Mode::blacklist };
118 proton_point.SetEnergyLoss(0.7);
122 neutron_point.SetEnergyLoss(0.7);
124 filter.AddParticle(
"proton", 0.6, 0.8);
125 EXPECT_FALSE(filter.IsPointAllowed(proton_point));
126 EXPECT_TRUE(filter.IsPointAllowed(neutron_point));
128 proton_point.SetEnergyLoss(0.5);
129 EXPECT_TRUE(filter.IsPointAllowed(proton_point));
132 TEST(NeulandPointFilterTest, test_whitelist_mode)
134 auto filter = ParticleFilter{ ParticleFilter::Mode::whitelist };
138 proton_point.SetEnergyLoss(0.7);
142 neutron_point.SetEnergyLoss(0.7);
144 filter.AddParticle(
"proton", 0.6, 0.8);
145 EXPECT_TRUE(filter.IsPointAllowed(proton_point));
146 EXPECT_FALSE(filter.IsPointAllowed(neutron_point));
148 proton_point.SetEnergyLoss(0.5);
149 EXPECT_FALSE(filter.IsPointAllowed(proton_point));
151 filter.AddParticle(
"proton");
152 EXPECT_TRUE(filter.IsPointAllowed(proton_point));
155 filter.AddParticle(
"proton", 0.6, 0.8);
158 TEST(NeulandPointFilterTest, test_multi_particles)
162 proton_point.SetEnergyLoss(0.7);
166 neutron_point.SetEnergyLoss(0.4);
170 electron_point.SetEnergyLoss(0.1);
172 auto filter = ParticleFilter{ ParticleFilter::Mode::blacklist };
173 filter.AddParticle(
"e-", 0., 1.);
175 EXPECT_FALSE(filter.IsPointAllowed(electron_point));
176 EXPECT_TRUE(filter.IsPointAllowed(proton_point));
177 EXPECT_TRUE(filter.IsPointAllowed(neutron_point));
179 filter.SetMode(ParticleFilter::Mode::whitelist);
181 EXPECT_TRUE(filter.IsPointAllowed(electron_point));
182 EXPECT_FALSE(filter.IsPointAllowed(proton_point));
183 EXPECT_FALSE(filter.IsPointAllowed(neutron_point));
void SetMinEnergy(double energy)
Set the global energy range with a minimum value.
void SetParticleId(int particle_id)