#include "AMEGIC++/Main/Pol_Info.H" #include "ATOOLS/Math/MathTools.H" #include "ATOOLS/Org/Message.H" #include "ATOOLS/Org/My_MPI.H" #include "ATOOLS/Org/Scoped_Settings.H" using namespace AMEGIC; using namespace ATOOLS; std::ostream & AMEGIC::operator<<(std::ostream & s, Pol_Info & pi) { s<<" Pol_Info : "<0) { type=new int[num]; factor=new double[num]; for(int i=0;i0) { type = new int[num]; factor = new double[num]; for(int i=0;i(); m_pol2 = s["BEAM_2"].SetDefault(0.).Get(); // Also can be given as a percentage // assuming a minimum abs value of 1 if(abs(m_pol1) > 1 && abs(m_pol1) <= 100) m_pol1/=100; if(abs(m_pol2) > 1 && abs(m_pol2) <= 100) m_pol2/=100; } Pol_Info::Pol_Info(const ATOOLS::Flavour& fl) { int dof = 1; pol_type='s'; if(fl.IsFermion()) { dof = 2;pol_type='h';}; if(fl.IsVector() && fl.Mass()==0.0) { dof = 2;pol_type='c';} if(fl.IsVector() && fl.Mass()!=0.0) { #ifdef Explicit_Pols dof=3; #else dof=1; #endif pol_type='c'; } if(fl.IsTensor()) dof=5; Init(dof); if(!fl.IsTensor()) { int tf[3] = {mt::p_m, mt::p_p, mt::p_l }; for(int j=0;j >* pol, std::vector* sign) { pol->clear(); sign->clear(); std::vector cc;cc.push_back(8);cc.push_back(8); sign->push_back(1); switch(num){ case mt::p_t1: cc[0]=mt::p_p;cc[1]=mt::p_p; pol->push_back(cc); break; case mt::p_t2: cc[0]=mt::p_p;cc[1]=mt::p_l; pol->push_back(cc); break; case mt::p_t3: cc[0]=mt::p_p;cc[1]=mt::p_m; pol->push_back(cc); cc[0]=mt::p_l;cc[1]=mt::p_l; pol->push_back(cc); sign->push_back(-1); break; case mt::p_t4: cc[0]=mt::p_m;cc[1]=mt::p_l; pol->push_back(cc); break; case mt::p_t5: cc[0]=mt::p_m;cc[1]=mt::p_m; pol->push_back(cc); break; default: msg_Error()<<"ERROR in Tensor_Struc::GetPolCombos : "<