Back to home page

EIC code displayed by LXR

 
 

    


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   };// end of class Kernel
0055 
0056   typedef std::vector<Kernel*> Kernel_Vector;
0057 
0058 }// end of namepsace DIM
0059 
0060 #endif