37 if (lx.second != rx.second)
return (lx.second < rx.second);
38 if (lx.first->particles_in().size() != rx.first->particles_in().size())
return (lx.first->particles_in().size() < rx.first->particles_in().size());
39 if (lx.first->particles_out().size() != rx.first->particles_out().size())
return (lx.first->particles_out().size() < rx.first->particles_out().size());
41 std::vector<int> lx_id_in;
42 lx_id_in.reserve(lx.first->particles_in().size());
43 std::vector<int> rx_id_in;
44 rx_id_in.reserve(rx.first->particles_in().size());
45 for (
const ConstGenParticlePtr& pp: lx.first->particles_in()) lx_id_in.emplace_back(pp->pid());
46 for (
const ConstGenParticlePtr& pp: rx.first->particles_in()) rx_id_in.emplace_back(pp->pid());
47 std::sort(lx_id_in.begin(), lx_id_in.end());
48 std::sort(rx_id_in.begin(), rx_id_in.end());
49 for (
unsigned int i = 0; i < lx_id_in.size(); i++)
if (lx_id_in[i] != rx_id_in[i])
return (lx_id_in[i] < rx_id_in[i]);
51 std::vector<int> lx_id_out;
52 lx_id_out.reserve(lx.first->particles_out().size());
53 std::vector<int> rx_id_out;
54 rx_id_out.reserve(rx.first->particles_out().size());
55 for (
const ConstGenParticlePtr& pp: lx.first->particles_in()) lx_id_out.emplace_back(pp->pid());
56 for (
const ConstGenParticlePtr& pp: rx.first->particles_in()) rx_id_out.emplace_back(pp->pid());
57 std::sort(lx_id_out.begin(), lx_id_out.end());
58 std::sort(rx_id_out.begin(), rx_id_out.end());
59 for (
unsigned int i = 0; i < lx_id_out.size(); i++)
if (lx_id_out[i] != rx_id_out[i])
return (lx_id_out[i] < rx_id_out[i]);
61 std::vector<double> lx_mom_in;
62 std::vector<double> rx_mom_in;
63 for (
const ConstGenParticlePtr& pp: lx.first->particles_in()) lx_mom_in.emplace_back(pp->momentum().e());
64 for (
const ConstGenParticlePtr& pp: rx.first->particles_in()) rx_mom_in.emplace_back(pp->momentum().e());
65 std::sort(lx_mom_in.begin(), lx_mom_in.end());
66 std::sort(rx_mom_in.begin(), rx_mom_in.end());
67 for (
unsigned int i = 0; i < lx_mom_in.size(); i++)
if (lx_mom_in[i] != rx_mom_in[i])
return (lx_mom_in[i] < rx_mom_in[i]);
69 std::vector<double> lx_mom_out;
70 std::vector<double> rx_mom_out;
71 for (
const ConstGenParticlePtr& pp: lx.first->particles_in()) lx_mom_out.emplace_back(pp->momentum().e());
72 for (
const ConstGenParticlePtr& pp: rx.first->particles_in()) rx_mom_out.emplace_back(pp->momentum().e());
73 std::sort(lx_mom_out.begin(), lx_mom_out.end());
74 std::sort(rx_mom_out.begin(), rx_mom_out.end());
75 for (
unsigned int i = 0; i < lx_mom_out.size(); i++)
if (lx_mom_out[i] != rx_mom_out[i])
return (lx_mom_out[i] < rx_mom_out[i]);
bool operator()(ConstGenParticlePtr lx, ConstGenParticlePtr rx) const
comparison of two particles