File indexing completed on 2025-04-19 09:10:02
0001 #ifndef DIM__Shower__Kernel_H
0002 #define DIM__Shower__Kernel_H
0003
0004 #include "DIM/Shower/Lorentz.H"
0005 #include "DIM/Shower/Gauge.H"
0006 #include "DIM/Tools/Weight.H"
0007
0008 #include <vector>
0009
0010 namespace DIM {
0011
0012 class Shower;
0013
0014 class Kernel {
0015 private:
0016
0017 Shower *p_ps;
0018
0019 Lorentz *p_lf;
0020 Gauge *p_gf;
0021
0022 int m_type, m_mode, m_on;
0023
0024 public:
0025
0026 Kernel(Shower *const ps,Kernel_Key key);
0027
0028 ~Kernel();
0029
0030 double Value(const Splitting &s) const;
0031
0032 MC_Weight GetWeight(const Splitting &s,const double &o,
0033 const MC_Weight *w=NULL) const;
0034
0035 bool GeneratePoint(Splitting &s) const;
0036
0037 double Integral(Splitting &s) const;
0038
0039 int Construct(Splitting &s,const int mode) const;
0040
0041 inline bool Allowed(const Splitting &s)
0042 { return p_lf->Allowed(s)&&p_gf->Allowed(s); }
0043
0044 inline Lorentz *LF() const { return p_lf; }
0045 inline Gauge *GF() const { return p_gf; }
0046
0047 inline Shower *PS() const { return p_ps; }
0048
0049 inline int Type() const { return m_type; }
0050 inline int Mode() const { return m_mode; }
0051
0052 inline int On() const { return m_on; }
0053
0054 };
0055
0056 typedef std::vector<Kernel*> Kernel_Vector;
0057
0058 }
0059
0060 #endif