Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:18:31

0001 /*******************************************************************************
0002  * Copyright (c) The JETSCAPE Collaboration, 2018
0003  *
0004  * Modular, task-based framework for simulating all aspects of heavy-ion collisions
0005  * 
0006  * For the list of contributors see AUTHORS.
0007  *
0008  * Report issues at https://github.com/JETSCAPE/JETSCAPE/issues
0009  *
0010  * or via email to bugs.jetscape@gmail.com
0011  *
0012  * Distributed under the GNU General Public License 3.0 (GPLv3 or later).
0013  * See COPYING for details.
0014  ******************************************************************************/
0015 
0016 #include "LiquefierBase.h"
0017 #include "gtest/gtest.h"
0018 
0019 #include<vector>
0020 
0021 using namespace Jetscape;
0022 
0023 // check function to add a droplet and Clear
0024 TEST(LiquefierBaseTest, TEST_add_a_droplet_and_Clear) {
0025     LiquefierBase lqf;
0026     EXPECT_EQ(0, lqf.get_dropletlist_size());
0027 
0028     Droplet a_drop;
0029     lqf.add_a_droplet(a_drop);
0030     EXPECT_EQ(1, lqf.get_dropletlist_size());
0031 
0032     lqf.Clear();
0033     EXPECT_EQ(0, lqf.get_dropletlist_size());
0034 }
0035 
0036 
0037 TEST(LiquefierBaseTest, TEST_filter_partons) {
0038     LiquefierBase lqf;
0039     FourVector p_test1(1.0, 0.0, 0.0, 1.0);  // px, py, pz, E
0040     FourVector x_test1(0.0, 0.0, 0.0, 1.0);  // x, y, z, t
0041     Parton test1(0, 21, 0, p_test1, x_test1);  // 21 = gluon
0042     
0043     FourVector p_test2(3.0, 0.0, 0.0, 3.0);
0044     FourVector x_test2(0.0, 0.0, 0.0, 1.0);
0045     Parton test2(0, 21, 0, p_test2, x_test2);
0046     
0047     std::vector<Parton> pOut;
0048 
0049     pOut.push_back(test1);
0050     pOut.push_back(test2);
0051     lqf.filter_partons(pOut);
0052     EXPECT_EQ(2, pOut.size());
0053     EXPECT_EQ(lqf.get_drop_stat(), pOut[0].pstat());
0054     EXPECT_EQ(0, pOut[1].pstat());
0055     pOut.clear();
0056     
0057     // test a negative particle
0058     FourVector p_test3(3.0, 0.0, 0.0, 3.0);
0059     FourVector x_test3(0.0, 0.0, 0.0, 1.0);
0060     Parton test3(0, 21, -1, p_test3, x_test3);
0061     pOut.push_back(test3);
0062     lqf.filter_partons(pOut);
0063     EXPECT_EQ(1, pOut.size());
0064     for(const auto &iparton : pOut)
0065         EXPECT_EQ(lqf.get_drop_stat(), iparton.pstat());
0066     pOut.clear();
0067     
0068     // test a negative particle and a soft particle
0069     pOut.push_back(test1);
0070     pOut.push_back(test3);
0071     lqf.filter_partons(pOut);
0072     EXPECT_EQ(2, pOut.size());
0073     for(const auto &iparton : pOut)
0074         EXPECT_EQ(lqf.get_drop_stat(), iparton.pstat());
0075     pOut.clear();
0076     
0077     // test a negative particle and a hard particle
0078     pOut.push_back(test2);
0079     pOut.push_back(test3);
0080     lqf.filter_partons(pOut);
0081     EXPECT_EQ(2, pOut.size());
0082     EXPECT_EQ(0, pOut[0].pstat());
0083     EXPECT_EQ(lqf.get_drop_stat(), pOut[1].pstat());
0084     pOut.clear();
0085 }
0086 
0087 
0088 TEST(LiquefierBaseTest, TEST_check_energy_momentum_conservation) {
0089     LiquefierBase lqf;
0090     FourVector p_test1(1.0, 0.0, 0.0, 1.0);  // px, py, pz, E
0091     FourVector x_test1(0.0, 0.0, 0.0, 1.0);  // x, y, z, t
0092     Parton test1(0, 21, 0, p_test1, x_test1);  // 21 = gluon
0093     
0094     FourVector p_test2(3.0, 0.0, 0.0, 3.0);
0095     FourVector x_test2(0.0, 0.0, 0.0, 1.0);
0096     Parton test2(0, 21, 0, p_test2, x_test2);
0097     
0098     std::vector<Parton> pIn;
0099     std::vector<Parton> pOut;
0100 
0101     pIn.push_back(test1);
0102     pOut.push_back(test2);
0103     lqf.check_energy_momentum_conservation(pIn, pOut);
0104     EXPECT_EQ(1, pIn.size());
0105     EXPECT_EQ(2, pOut.size());
0106     EXPECT_DOUBLE_EQ(pIn[0].p(0), pOut[0].p(0) + pOut[1].p(0));
0107     EXPECT_DOUBLE_EQ(pIn[0].p(1), pOut[0].p(1) + pOut[1].p(1));
0108     EXPECT_DOUBLE_EQ(pIn[0].p(2), pOut[0].p(2) + pOut[1].p(2));
0109     EXPECT_DOUBLE_EQ(pIn[0].p(3), pOut[0].p(3) + pOut[1].p(3));
0110     pIn.clear();
0111     pOut.clear();
0112 }
0113 
0114 
0115 // check function to add a hydro source term
0116 TEST(LiquefierBaseTest, TEST_add_hydro_source) {
0117     LiquefierBase lqf;
0118 
0119     FourVector p_test1(1.0, 0.0, 0.0, 1.0);  // px, py, pz, E
0120     FourVector x_test1(0.0, 0.0, 0.0, 1.0);  // x, y, z, t
0121     Parton test1(0, 21, 0, p_test1, x_test1);  // 21 = gluon
0122     
0123     FourVector p_test2(3.0, 0.0, 0.0, 3.0);
0124     FourVector x_test2(0.0, 0.0, 0.0, 1.0);
0125     Parton test2(0, 21, 0, p_test2, x_test2);
0126     
0127     std::vector<Parton> pIn;
0128     std::vector<Parton> pOut;
0129     pIn.push_back(test1);
0130     pIn.push_back(test2);
0131 
0132     // test when pOut.size() == 0
0133     lqf.add_hydro_sources(pIn, pOut);
0134     EXPECT_EQ(0, lqf.get_dropletlist_size());
0135     pIn.clear();
0136     pOut.clear();
0137     lqf.Clear();
0138 
0139     // test when pOut == pIn (hard parton)
0140     pIn.push_back(test2);
0141     pOut.push_back(test2);
0142     lqf.add_hydro_sources(pIn, pOut);
0143     EXPECT_EQ(0, lqf.get_dropletlist_size());
0144     EXPECT_EQ(1, pIn.size());
0145     EXPECT_EQ(1, pOut.size());
0146     pIn.clear();
0147     pOut.clear();
0148     lqf.Clear();
0149     
0150     // test when pOut == pIn (soft parton)
0151     pIn.push_back(test1);
0152     pOut.push_back(test1);
0153     lqf.add_hydro_sources(pIn, pOut);
0154     EXPECT_EQ(1, lqf.get_dropletlist_size());
0155     EXPECT_EQ(1, pIn.size());
0156     EXPECT_EQ(1, pOut.size());
0157     EXPECT_DOUBLE_EQ(p_test1.t(), (lqf.get_a_droplet(0).get_pmu())[0]);
0158     EXPECT_DOUBLE_EQ(p_test1.x(), (lqf.get_a_droplet(0).get_pmu())[1]);
0159     EXPECT_DOUBLE_EQ(x_test1.t(), (lqf.get_a_droplet(0).get_xmu())[0]);
0160     pIn.clear();
0161     pOut.clear();
0162     lqf.Clear();
0163 
0164     // test a negative particle
0165     FourVector p_test3(3.0, 0.0, 0.0, 3.0);
0166     FourVector x_test3(0.0, 0.0, 0.0, 1.0);
0167     Parton test3(0, 21, -1, p_test3, x_test3);
0168     pIn.push_back(test2);
0169     pOut.push_back(test3);
0170     lqf.add_hydro_sources(pIn, pOut);
0171     EXPECT_EQ(1, lqf.get_dropletlist_size());
0172     EXPECT_DOUBLE_EQ(p_test3.t(), (lqf.get_a_droplet(0).get_pmu())[0]);
0173     EXPECT_DOUBLE_EQ(p_test3.x(), (lqf.get_a_droplet(0).get_pmu())[1]);
0174     EXPECT_DOUBLE_EQ(x_test3.t(), (lqf.get_a_droplet(0).get_xmu())[0]);
0175     EXPECT_EQ(1, pIn.size());
0176     EXPECT_EQ(2, pOut.size());
0177     pIn.clear();
0178     pOut.clear();
0179     lqf.Clear();
0180     
0181     // test a negative particle and a soft particle
0182     pIn.push_back(test2);
0183     pOut.push_back(test1);
0184     pOut.push_back(test3);
0185     lqf.add_hydro_sources(pIn, pOut);
0186     EXPECT_EQ(1, lqf.get_dropletlist_size());
0187     EXPECT_DOUBLE_EQ(p_test2.t(), (lqf.get_a_droplet(0).get_pmu())[0]);
0188     EXPECT_DOUBLE_EQ(p_test2.x(), (lqf.get_a_droplet(0).get_pmu())[1]);
0189     EXPECT_DOUBLE_EQ(x_test2.t(), (lqf.get_a_droplet(0).get_xmu())[0]);
0190     EXPECT_EQ(1, pIn.size());
0191     EXPECT_EQ(3, pOut.size());
0192     pIn.clear();
0193     pOut.clear();
0194     lqf.Clear();
0195 
0196     // test a negative particle and a hard particle
0197     pIn.push_back(test1);
0198     pOut.push_back(test2);
0199     pOut.push_back(test3);
0200     lqf.add_hydro_sources(pIn, pOut);
0201     EXPECT_EQ(1, lqf.get_dropletlist_size());
0202     EXPECT_DOUBLE_EQ(p_test1.t() - p_test2.t(),
0203                      (lqf.get_a_droplet(0).get_pmu())[0]);
0204     EXPECT_DOUBLE_EQ(p_test1.x() - p_test2.x(),
0205                      (lqf.get_a_droplet(0).get_pmu())[1]);
0206     EXPECT_DOUBLE_EQ((x_test1.t() + x_test2.t())/2.,
0207                      (lqf.get_a_droplet(0).get_xmu())[0]);
0208     EXPECT_EQ(1, pIn.size());
0209     EXPECT_EQ(3, pOut.size());
0210     pIn.clear();
0211     pOut.clear();
0212     lqf.Clear();
0213 
0214     // test a soft particle in pIn only
0215     //pIn.push_back(test1);
0216     //lqf.add_hydro_sources(pIn, pOut);
0217     //EXPECT_EQ(1, lqf.get_dropletlist_size());
0218     //EXPECT_DOUBLE_EQ(p_test1.t(), (lqf.get_a_droplet(0).get_pmu())[0]);
0219     //EXPECT_DOUBLE_EQ(p_test1.x(), (lqf.get_a_droplet(0).get_pmu())[1]);
0220     //EXPECT_DOUBLE_EQ(x_test1.t(), (lqf.get_a_droplet(0).get_xmu())[0]);
0221     //EXPECT_EQ(0, pIn.size());
0222     //EXPECT_EQ(0, pOut.size());
0223     //pIn.clear();
0224     //pOut.clear();
0225     //lqf.Clear();
0226 }