Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DIM__Shower__Lorentz_H
0002 #define DIM__Shower__Lorentz_H
0003 
0004 #include "ATOOLS/Org/Getter_Function.H"
0005 #include "ATOOLS/Phys/Flavour.H"
0006 #include "PHASIC++/Channels/CSS_Kinematics.H"
0007 #include "DIM/Tools/Kernel_Key.H"
0008 #include "DIM/Tools/Splitting.H"
0009 
0010 namespace DIM {
0011 
0012   class Shower;
0013 
0014   class Lorentz {
0015   protected:
0016 
0017     Kernel *p_sk;
0018     int     m_type;
0019 
0020     ATOOLS::Flavour m_fl[3];
0021 
0022     ATOOLS::Mass_Selector *p_ms;
0023 
0024     inline double Lam(const double &a,
0025               const double &b,
0026               const double &c) const
0027     {  return (a-b-c)*(a-b-c)-4.0*b*c; }
0028 
0029     void SetParams(Splitting &s,const PHASIC::Kin_Args &ff) const;
0030 
0031     int Update(Splitting &s,const PHASIC::Kin_Args &ff,
0032            const int mode) const;
0033 
0034   public:
0035 
0036     Lorentz(const Kernel_Key &k,const int type);
0037 
0038     virtual ~Lorentz();
0039 
0040     virtual double Value(const Splitting &s) const = 0;
0041     virtual double Jacobian(const Splitting &s) const = 0;
0042 
0043     virtual double Estimate(const Splitting &s) const = 0;
0044     virtual double Integral(const Splitting &s) const = 0;
0045 
0046     virtual bool GeneratePoint(Splitting &s) const = 0;
0047     virtual int Construct(Splitting &s,const int mode) const = 0;
0048 
0049     virtual bool Compute(Splitting &s) const = 0;
0050 
0051     virtual double MEPSWeight(const Splitting &s) const = 0;
0052 
0053     virtual double AsymmetryFactor(const Splitting &s) const;
0054 
0055     bool Allowed(const Splitting &s) const;
0056 
0057     bool SetLimits(Splitting &s) const;
0058 
0059     inline const ATOOLS::Flavour &Flav(const int i) const { return m_fl[i]; }
0060 
0061     inline void SetMS(ATOOLS::Mass_Selector *const ms) { p_ms=ms; }
0062 
0063   };// end of class Lorentz
0064 
0065   typedef ATOOLS::Getter_Function
0066   <Lorentz,Kernel_Key,std::less<std::string> > Lorentz_Getter;
0067 
0068 }// end of namepsace DIM
0069 
0070 #endif