#include "PHASIC++/Channels/Rambo.H" #include "PHASIC++/Channels/Channel_Generator.H" #include "PHASIC++/Channels/Multi_Channel.H" #include "PHASIC++/Process/Process_Base.H" #include "PHASIC++/Process/ME_Generator_Base.H" #include "ATOOLS/Org/Message.H" #include "ATOOLS/Math/Random.H" #include using namespace PHASIC; using namespace ATOOLS; Rambo::Rambo(size_t _nin,size_t _nout,const Flavour * fl, const Mass_Selector* _ms) : p_masssel(_ms) { std::vector masses(_nin+_nout, 0.0); for (short int i=0;i<_nin+_nout;i++) { masses[i]=0.0; for (size_t j(0);jMass(fl[i][j]) : fl[i][j].Mass(); masses[i]/=fl[i].Size(); } Init(_nin,_nout, masses); } Rambo::Rambo(size_t _nin,std::vector masses) : p_masssel(NULL) { Init(_nin, masses.size()-_nin, masses); } void Rambo::Init(const size_t& _nin, const size_t& _nout, const std::vector& masses) { m_nin = _nin; m_nout = _nout; xm2 = new double[m_nin+m_nout+1]; p2 = new double[m_nin+m_nout+1]; E = new double[m_nin+m_nout+1]; p_ms = new double[m_nin+m_nout+1]; p_rans = 0; m_rannum = 0; massflag = 0; for (short int i=0;iGet()-1; S = sqrt(1-C*C); F = 2*M_PI*ran->Get(); Q = -log( std::min( 1.0-1.e-10, std::max(1.e-10,ran->Get()*ran->Get()) ) ); p[i] = Vec4D(Q, Q*S*::sin(F), Q*S*cos(F), Q*C); R += p[i]; } RMAS = sqrt(R.Abs2()); B = (-1)*Vec3D(R)/RMAS; G = R[0]/RMAS; A = 1.0/(1.0+G); X = ET/RMAS; for(i=m_nin;iitmax) break; x -= f0/(x*g0); } double wt2 = 1.; double wt3 = 0.; double v; // Calculate Momenta + Weight for (short int i=m_nin;iitmax) break; x -= f0/(x*g0); } // Construct Momenta for (short int i=m_nin;iAdd(new Rambo(p_proc->NIn(),p_proc->NOut(), &p_proc->Flavours().front(), p_proc->Generator())); return 0; } };// end of class Rambo_Channel_Generator }// end of namespace PHASIC DECLARE_GETTER(Rambo_Channel_Generator,"Rambo", Channel_Generator,Channel_Generator_Key); Channel_Generator *ATOOLS::Getter :: operator()(const Channel_Generator_Key &args) const { return new Rambo_Channel_Generator(args); } void ATOOLS::Getter:: PrintInfo(std::ostream &str,const size_t width) const { str<<"Rambo integrator"; }