Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DIRE__Shower__Lorentz_H
0002 #define DIRE__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 "DIRE/Tools/Kernel_Key.H"
0008 #include "DIRE/Tools/Splitting.H"
0009 
0010 namespace DIRE {
0011 
0012   class Shower;
0013 
0014   class Lorentz {
0015   protected:
0016 
0017     Kernel *p_sk;
0018     int     m_type;
0019 
0020     ATOOLS::Flavour_Vector m_fl;
0021 
0022     const 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 int mode) const;
0032 
0033   public:
0034 
0035     Lorentz(const Kernel_Key &k,const int type);
0036 
0037     virtual ~Lorentz();
0038 
0039     virtual double Value(const Splitting &s) const = 0;
0040     virtual double Jacobian(const Splitting &s) const = 0;
0041 
0042     virtual double Estimate(const Splitting &s) const = 0;
0043     virtual double Integral(const Splitting &s) const = 0;
0044 
0045     virtual bool GeneratePoint(Splitting &s) const = 0;
0046     virtual int Construct(Splitting &s,const int mode) const = 0;
0047     virtual bool Cluster(Splitting &s,const int mode) const = 0;
0048 
0049     virtual void SetMS(ATOOLS::Mass_Selector *const ms);
0050 
0051     virtual bool Allowed(const Splitting &s) const;
0052 
0053     bool SetLimits(Splitting &s) const;
0054 
0055     inline const ATOOLS::Flavour &Flav(const int i) const { return m_fl[i]; }
0056     inline const ATOOLS::Flavour_Vector &Flavs() const { return m_fl; }
0057 
0058     inline void SetMS(const ATOOLS::Mass_Selector *const ms) { p_ms=ms; }
0059 
0060   };// end of class Lorentz
0061 
0062   typedef ATOOLS::Getter_Function
0063   <Lorentz,Kernel_Key,std::less<std::string> > Lorentz_Getter;
0064 
0065 }// end of namepsace DIRE
0066 
0067 #endif