#include "AHADIC++/Tools/Cluster.H" #include "ATOOLS/Org/Message.H" using namespace AHADIC; using namespace ATOOLS; std::set Cluster::s_clusters = std::set(); Cluster::Cluster(std::pair parts) : m_parts(parts), m_momentum(m_parts.first->Momentum()+m_parts.second->Momentum()) { s_clusters.insert(this); } Cluster::Cluster(Proto_Particle * part1,Proto_Particle * part2) : m_momentum(part1->Momentum()+part2->Momentum()) { bool barit(false); if ((part1->Flavour().IsQuark() && part1->Flavour().IsAnti()) || (part1->Flavour().IsDiQuark() && !part1->Flavour().IsAnti())) barit = true; m_parts.first = barit?part2:part1; m_parts.second = barit?part1:part2; s_clusters.insert(this); } Cluster::~Cluster() { if (s_clusters.find(this)==s_clusters.end()) { msg_Error()<<"Did not find cluster ["<::iterator sit = s_clusters.begin(); s_clusters.erase(sit); delete *sit; } } } namespace AHADIC { std::ostream& operator<<(std::ostream& str, const Cluster &cluster) { str<<"Cluster ["<Flavour()<<", " <Flavour()<<"] " <<"("<Momentum(); s<<"Cluster List with "<