49 bool operator()(
const std::pair<ConstGenVertexPtr,int>& lx,
const std::pair<ConstGenVertexPtr,int>& rx )
const
51 if (lx.second!=rx.second)
return (lx.second < rx.second);
52 if (lx.first->particles_in().size()!=rx.first->particles_in().size())
return (lx.first->particles_in().size()<rx.first->particles_in().size());
53 if (lx.first->particles_out().size()!=rx.first->particles_out().size())
return (lx.first->particles_out().size()<rx.first->particles_out().size());
55 std::vector<int> lx_id_in;
56 std::vector<int> rx_id_in;
57 for (ConstGenParticlePtr pp: lx.first->particles_in()) lx_id_in.push_back(pp->pid());
58 for (ConstGenParticlePtr pp: rx.first->particles_in()) rx_id_in.push_back(pp->pid());
59 std::sort(lx_id_in.begin(),lx_id_in.end());
60 std::sort(rx_id_in.begin(),rx_id_in.end());
61 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]);
63 std::vector<int> lx_id_out;
64 std::vector<int> rx_id_out;
65 for (ConstGenParticlePtr pp: lx.first->particles_in()) lx_id_out.push_back(pp->pid());
66 for (ConstGenParticlePtr pp: rx.first->particles_in()) rx_id_out.push_back(pp->pid());
67 std::sort(lx_id_out.begin(),lx_id_out.end());
68 std::sort(rx_id_out.begin(),rx_id_out.end());
69 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]);
71 std::vector<double> lx_mom_in;
72 std::vector<double> rx_mom_in;
73 for (ConstGenParticlePtr pp: lx.first->particles_in()) lx_mom_in.push_back(pp->momentum().e());
74 for (ConstGenParticlePtr pp: rx.first->particles_in()) rx_mom_in.push_back(pp->momentum().e());
75 std::sort(lx_mom_in.begin(),lx_mom_in.end());
76 std::sort(rx_mom_in.begin(),rx_mom_in.end());
77 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]);
79 std::vector<double> lx_mom_out;
80 std::vector<double> rx_mom_out;
81 for (ConstGenParticlePtr pp: lx.first->particles_in()) lx_mom_out.push_back(pp->momentum().e());
82 for (ConstGenParticlePtr pp: rx.first->particles_in()) rx_mom_out.push_back(pp->momentum().e());
83 std::sort(lx_mom_out.begin(),lx_mom_out.end());
84 std::sort(rx_mom_out.begin(),rx_mom_out.end());
85 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]);
88 return (lx.first<lx.first);