#ifndef ATOOLS_Phys_Weight_Info_H #define ATOOLS_Phys_Weight_Info_H #include "ATOOLS/Math/MathTools.H" #include "ATOOLS/Phys/Event_Weights.H" #include #include namespace ATOOLS { struct PDF_Info { int m_fl1, m_fl2; double m_x1, m_x2, m_muf12, m_muf22, m_xf1, m_xf2; PDF_Info(const int &fl1=0, const int &fl2=0, const double &x1=0.,const double &x2=0., const double &muf12=0.,const double &muf22=0., const double &xf1=0.,const double &xf2=0.) : m_fl1(fl1), m_fl2(fl2), m_x1(x1), m_x2(x2), m_muf12(muf12), m_muf22(muf22), m_xf1(xf1), m_xf2(xf2) {} }; // end of struct PDF_Info inline std::ostream & operator<<(std::ostream & s, const ATOOLS::PDF_Info & pi) { s<<" pdf1 = ("< m_txfl; Cluster_Sequence_Info(const double &w=1.0, const double &f=1.0, const double &c=0.0) : m_pdfwgt(w), m_flux(f), m_ct(c) {} inline void AddSplitting(const double& ta,const double& tb, const double& xa, const double& xb, const int& fla, const int& flb) { m_txfl.push_back(Cluster_Step(ta,tb,xa,xb,fla,flb)); } inline void AddFlux(const double& f) { m_flux*=f; } inline void AddWeight(const double& w) { m_pdfwgt*=w; } inline void AddCounterTerm(const double& c, const double& xp, size_t i) { m_ct+=c; if (i==0) m_txfl.back().m_xap=xp; if (i==1) m_txfl.back().m_xbp=xp; } inline void AddPDFRatio(const double& n,const double& d) { m_txfl.back().m_pdfrationumerator=n; m_txfl.back().m_pdfratiodenominator=d; } }; std::ostream & operator<<(std::ostream & s, const ATOOLS::Cluster_Sequence_Info & csi); struct DADS_Info { public: double m_wgt, m_x1, m_x2; long unsigned int m_fl1, m_fl2; DADS_Info(const double &wgt, const double &x1,const double &x2, const long unsigned int &fl1, const long unsigned int &fl2): m_wgt(wgt), m_x1(x1), m_x2(x2), m_fl1(fl1), m_fl2(fl2) {} }; inline std::ostream & operator<<(std::ostream & s, const ATOOLS::DADS_Info & dadsi) { s<<"DADS: wgt="< m_wren,m_wfac,m_bkw; double m_x1, m_x2, m_y1, m_y2, m_mur2, m_muf2[2]; int m_fl1, m_fl2, m_swap; size_t m_oqcd, m_oew; Cluster_Sequence_Info m_clusseqinfo; std::vector m_dadsinfos; std::vector m_rdainfos; ME_Weight_Info(): m_type(mewgttype::none), m_relqcdcpl(0), m_B(0.0), m_VI(0.0), m_KP(0.0), m_K(0.0), m_wren(2,0.0), m_wfac(32,0.0), m_x1(1.0), m_x2(1.0), m_y1(1.0), m_y2(1.0), m_mur2(0.0), m_muf2{0.0,0.0}, m_fl1(0), m_fl2(0), m_swap(0), m_oqcd(0), m_oew(0), m_clusseqinfo() {} ME_Weight_Info& operator*=(const double &scal); void Reset(); }; std::ostream & operator<<(std::ostream & s, const ATOOLS::ME_Weight_Info & mwi); } #endif