#include "METOOLS/Explicit/Lorentz_Calculator.H" #include "METOOLS/Currents/C_Scalar.H" #include "METOOLS/Explicit/Vertex.H" #include "MODEL/Main/Single_Vertex.H" using namespace ATOOLS; namespace METOOLS { template class SSSS_Calculator: public Lorentz_Calculator { public: typedef CScalar CScalarType; SSSS_Calculator(const Vertex_Key &key): Lorentz_Calculator(key) {} std::string Label() const { return "SSSS"; } CObject *Evaluate(const CObject_Vector &jj) { const CScalarType &a(*jj[0]->Get()); const CScalarType &e(*jj[1]->Get()); const CScalarType &b(*jj[2]->Get()); CScalarType *j(CScalarType::New(a*e*b)); j->SetS(a.S()|e.S()|b.S()); return j; } };// end of class SSSS_Calculator template class SSSS_Calculator; }// end of namespace METOOLS using namespace METOOLS; DECLARE_GETTER(SSSS_Calculator,"DSSSS", Lorentz_Calculator,Vertex_Key); Lorentz_Calculator *ATOOLS::Getter >:: operator()(const Vertex_Key &key) const { return new SSSS_Calculator(key); } void ATOOLS::Getter >:: PrintInfo(std::ostream &str,const size_t width) const { str<<"SSSS vertex"; }