Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:02

0001 #ifndef DIRE__Shower__Kernel_H
0002 #define DIRE__Shower__Kernel_H
0003 
0004 #include "DIRE/Shower/Lorentz.H"
0005 #include "DIRE/Shower/Gauge.H"
0006 #include "DIRE/Tools/Weight.H"
0007 
0008 #include <vector>
0009 
0010 namespace DIRE {
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     double m_ef;
0023     int    m_type, m_mode, m_on;
0024 
0025   public:
0026 
0027     Kernel(Shower *const ps,Kernel_Key key);
0028 
0029     ~Kernel();
0030 
0031     double Value(const Splitting &s) const;
0032 
0033     Weight GetWeight(const Splitting &s,const double &o,
0034              const Weight *w=NULL) const;
0035 
0036     bool GeneratePoint(Splitting &s) const;
0037 
0038     double Integral(Splitting &s) const;
0039 
0040     int Construct(Splitting &s,const int mode) const;
0041 
0042     std::string Class() const;
0043 
0044     inline bool Allowed(const Splitting &s)
0045     { return p_lf->Allowed(s)&&p_gf->Allowed(s); }
0046 
0047     inline Lorentz *LF() const { return p_lf; } 
0048     inline Gauge   *GF() const { return p_gf; } 
0049 
0050     inline Shower *PS() const { return p_ps; }
0051 
0052     inline int Type() const { return m_type; }
0053     inline int Mode() const { return m_mode; }
0054 
0055     inline int On() const { return m_on; }
0056 
0057     inline void SetOn(const int &on) { m_on=on; }
0058 
0059     inline void SetEF(const double &ef) { m_ef=ef; }
0060 
0061   };// end of class Kernel
0062 
0063   typedef std::vector<Kernel*> Kernel_Vector;
0064 
0065 }// end of namepsace DIRE
0066 
0067 #endif