File indexing completed on 2024-04-06 12:23:21
0001 #include <cppunit/extensions/HelperMacros.h>
0002 #include "DataFormats/Candidate/interface/LeafCandidate.h"
0003 #include "PhysicsTools/CandUtils/interface/Thrust.h"
0004 using namespace reco;
0005
0006 class testThrust : public CppUnit::TestFixture {
0007 CPPUNIT_TEST_SUITE(testThrust);
0008 CPPUNIT_TEST(checkAll);
0009 CPPUNIT_TEST_SUITE_END();
0010
0011 public:
0012 void setUp() {}
0013 void tearDown() {}
0014 void checkAll();
0015 };
0016
0017 CPPUNIT_TEST_SUITE_REGISTRATION(testThrust);
0018
0019 void testThrust::checkAll() {
0020 {
0021 std::vector<LeafCandidate> cands;
0022 cands.push_back(LeafCandidate(+1, Particle::LorentzVector(1, 1, 0, 1)));
0023 cands.push_back(LeafCandidate(+1, Particle::LorentzVector(-1, -1, 0, 1)));
0024 Thrust t(cands.begin(), cands.end());
0025 CPPUNIT_ASSERT(fabs(t.thrust() - 1.0) < 1.e-6);
0026 }
0027 {
0028 std::vector<LeafCandidate> cands;
0029 cands.push_back(LeafCandidate(+1, Particle::LorentzVector(0.7, 0.5, 0, 1)));
0030 cands.push_back(LeafCandidate(+1, Particle::LorentzVector(-0.7, -0.5, 0, 1)));
0031 Thrust t(cands.begin(), cands.end());
0032 CPPUNIT_ASSERT(fabs(t.thrust() - 1.0) < 1.e-6);
0033 }
0034 {
0035 std::vector<LeafCandidate> cands;
0036 cands.push_back(LeafCandidate(+1, Particle::LorentzVector(1, 0, 0, 1)));
0037 cands.push_back(LeafCandidate(+1, Particle::LorentzVector(0, 1, 0, 1)));
0038 Thrust t(cands.begin(), cands.end());
0039 CPPUNIT_ASSERT(fabs(t.thrust() - sqrt(2.0) / 2) < 1.e-6);
0040 }
0041 {
0042 std::vector<LeafCandidate> cands;
0043 cands.push_back(LeafCandidate(+1, Particle::LorentzVector(1, 0, 0, 1)));
0044 cands.push_back(LeafCandidate(+1, Particle::LorentzVector(0, 1, 0, 1)));
0045 cands.push_back(LeafCandidate(+1, Particle::LorentzVector(1, 1, 0, 1)));
0046 Thrust t(cands.begin(), cands.end());
0047 CPPUNIT_ASSERT(t.thrust() > 0.5);
0048 CPPUNIT_ASSERT(fabs(t.axis().z()) < 1.e-4);
0049 }
0050 }