#ifndef METOOLS_Explicit_Vertex_Key_H #define METOOLS_Explicit_Vertex_Key_H #include "METOOLS/Explicit/Dipole_Info.H" #include "ATOOLS/Phys/Flavour.H" #include "ATOOLS/Org/STL_Tools.H" #include namespace MODEL { class Model_Base; class Single_Vertex; } namespace METOOLS { class Current; class Vertex; class Color_Calculator; class Lorentz_Calculator; struct Vertex_Key { private: Vertex_Key (const std::vector &j, Current *const c,MODEL::Model_Base *const model, MODEL::Single_Vertex *const mv=NULL,const std::string &p="", Vertex *const v=NULL,Color_Calculator *const cc=NULL, Lorentz_Calculator *const lc=NULL); public: Current *p_c, *p_k, *p_kt; std::vector m_j; MODEL::Model_Base *p_model; MODEL::Single_Vertex *p_mv; std::string m_p; size_t m_n; mutable int m_d; mutable std::string m_id; mutable Vertex *p_v; mutable Color_Calculator *p_cc; mutable Lorentz_Calculator *p_lc; Dipole_Info *p_dinfo; int m_stype; static ATOOLS::AutoDelete_Vector s_objects; static Vertex_Key *New (const std::vector &j, Current *const c,MODEL::Model_Base *const model, MODEL::Single_Vertex *const mv=NULL,const std::string &p="", Vertex *const v=NULL,Color_Calculator *const cc=NULL, Lorentz_Calculator *const lc=NULL); void Delete(); std::string Type() const; const std::string &ID() const; ATOOLS::Flavour Fl(const size_t &i) const; Current *J(const size_t &i) const; };// end of struct Vertex_Key }// end of namespace METOOLS #endif