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