#include "HADRONS++/ME_Library/Four_Body_MEs.H" #include "ATOOLS/Org/Message.H" #include "HADRONS++/Main/Tools.H" #include "METOOLS/Main/XYZFuncs.H" #include "ATOOLS/Math/Random.H" using namespace HADRONS; using namespace ATOOLS; using namespace METOOLS; using namespace std; void QQ_QQQQ_Spectator::SetModelParameters( GeneralModel _md ) { msg_Debugging()< "; for (size_t i=1;i<5;i++) msg_Debugging()< > spins(5); for(int h0=0; h0 outparts, int n_q, int n_g, bool m_anti) { for (size_t i=0;i<4;i+=2) { if (!outparts[i]->Flav().IsQuark() && !outparts[i]->Flav().IsDiQuark()) continue; int pos = ((outparts[i]->Flav().IsAnti() && outparts[i]->Flav().IsQuark()) || (!outparts[i]->Flav().IsAnti() && outparts[i]->Flav().IsDiQuark())) ? 2:1; outparts[i]->SetFlow(pos,-1); outparts[i+1]->SetFlow(3-pos,outparts[i]->GetFlow(pos)); } for (size_t i=0;i<4;i++) msg_Debugging()<<(*outparts[i])<<"\n"; return true; } DEFINE_ME_GETTER(HADRONS::QQ_QQQQ_Spectator,"QQ_QQQQ_Spectator") void ATOOLS::Getter:: PrintInfo(std::ostream &st,const size_t width) const { st<<"Example: $ B^{+} \\rightarrow u \\bar{c} u \\bar{d} $ \n\n" <<"Order: 0 = Scalar ($B^{+}$), 1 = spectator quark, " <<"2 = quark from decay line ($\\bar{c}$), " <<"3 = quark from W ($u$), 4 = anti quark from W ($\\bar{d}$) \n\n" <<"\\[ \\mathcal{M} = \\]" < > spins(5); for(int h0=0; h0 outparts, int n_q, int n_g, bool m_anti) { int pos = m_anti ? 2 : 1; outparts[p_i[2]-1]->SetFlow(pos,-1); outparts[p_i[1]-1]->SetFlow(3-pos,outparts[p_i[2]-1]->GetFlow(pos)); outparts[p_i[3]-1]->SetFlow(pos,-1); outparts[p_i[4]-1]->SetFlow(3-pos,outparts[p_i[3]-1]->GetFlow(pos)); return true; } DEFINE_ME_GETTER(HADRONS::Baryon_Diquark_3Quarks,"Baryon_Diquark_3Quarks") void ATOOLS::Getter:: PrintInfo(std::ostream &st,const size_t width) const { st< tau+ tau- Vec4D_Vector prod_moms; Flavour_Vector prod_flavs; prod_moms.push_back(p[p_i[0]]); prod_flavs.push_back(Flavour(kf_B)); prod_moms.push_back(p[p_i[1]]+p[p_i[2]]); prod_flavs.push_back(Flavour(kf_tau).Bar()); prod_moms.push_back(p[p_i[3]]+p[p_i[4]]); prod_flavs.push_back(Flavour(kf_tau)); XYZFunc F_prod(prod_moms,prod_flavs, m_anti); // decay process tau+ -> pi+ nub Vec4D_Vector decay1_moms; Flavour_Vector decay1_flavs; decay1_moms.push_back(p[p_i[1]]+p[p_i[2]]); decay1_flavs.push_back(Flavour(kf_tau).Bar()); decay1_moms.push_back(p[p_i[1]]); decay1_flavs.push_back(Flavour(kf_pi_plus)); decay1_moms.push_back(p[p_i[2]]); decay1_flavs.push_back(Flavour(kf_nutau).Bar()); XYZFunc F_decay1(decay1_moms,decay1_flavs, m_anti); // decay process tau- -> pi- nu Vec4D_Vector decay2_moms; Flavour_Vector decay2_flavs; decay2_moms.push_back(p[p_i[3]]+p[p_i[4]]); decay2_flavs.push_back(Flavour(kf_tau)); decay2_moms.push_back(p[p_i[3]]); decay2_flavs.push_back(Flavour(kf_pi_plus).Bar()); decay2_moms.push_back(p[p_i[4]]); decay2_flavs.push_back(Flavour(kf_nutau)); XYZFunc F_decay2(decay2_moms,decay2_flavs, m_anti); vector > spins(5); spins[0] = make_pair(p_i[0],0); spins[1] = make_pair(p_i[1],0); spins[3] = make_pair(p_i[3],0); for(int h2=0; h2<2; ++h2) { spins[2] = make_pair(p_i[2],h2); for(int h4=0; h4<2; ++h4) { spins[4] = make_pair(p_i[4],h4); Complex amp(0.0, 0.0); for (size_t htauplus=0; htauplus<2; ++htauplus) { for (size_t htauminus=0; htauminus<2; ++htauminus) { amp += Complex(0.0,-1.0) *F_prod.Y(1, htauplus, 2, htauminus, Complex(1.0, 0.0), Complex(1.0, 0.0)) *F_decay1.X(0, htauplus, decay1_moms[1], 2, h2, Complex(0.0, 0.0), Complex(1.0, 0.0)) *F_decay2.X(2, h4, decay2_moms[1], 0, htauminus, Complex(0.0, 0.0), Complex(1.0, 0.0)); } } Insert(amp,spins); } } } DEFINE_ME_GETTER(HADRONS::B_tautau_pinupinu,"B_tautau_pinupinu") void ATOOLS::Getter:: PrintInfo(std::ostream &st,const size_t width) const { st<