Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DIM__Main__Gamma_H
0002 #define DIM__Main__Gamma_H
0003 
0004 #include "DIM/Shower/Shower.H"
0005 #include "PHASIC++/Process/Subprocess_Info.H"
0006 #include "ATOOLS/Phys/Cluster_Amplitude.H"
0007 
0008 namespace PHASIC {
0009   class Process_Base;
0010   class Single_Process;
0011 }
0012 
0013 namespace DIM {
0014 
0015   struct Weight_Key {
0016     size_t m_ij, m_k;
0017     inline Weight_Key(const size_t &ij,const size_t &k):
0018       m_ij(ij), m_k(k) {}
0019     inline bool operator<(const Weight_Key &wk) const
0020     { return m_ij<wk.m_ij?true:(m_ij>wk.m_ij?false:m_k<wk.m_k); }
0021   };// end of struct Weight_Key
0022 
0023   std::ostream &operator<<(std::ostream &str,const Weight_Key &k);
0024 
0025   struct Weight_Value {
0026     PHASIC::Process_Base *p_proc;
0027     const Kernel *p_sf;
0028     double m_me, m_b, m_muf2, m_mur2, m_muq2;
0029     inline Weight_Value(PHASIC::Process_Base *const proc=NULL):
0030       p_proc(proc), p_sf(NULL), m_me(0.0), m_b(0.0),
0031       m_muf2(0.0), m_mur2(0.0), m_muq2(0.0) {}
0032   };// end of struct Weight_Value
0033 
0034   std::ostream &operator<<(std::ostream &str,const Weight_Value &w);
0035 
0036   typedef std::map<Weight_Key,Weight_Value> Weight_Map;
0037 
0038   class MCatNLO;
0039 
0040   class Gamma {
0041   private:
0042 
0043     MCatNLO *p_dire;
0044     Shower  *p_shower;
0045 
0046     ATOOLS::Mass_Selector *p_ms;
0047 
0048     double m_weight;
0049 
0050     Weight_Value Differential(ATOOLS::Cluster_Amplitude *const ampl,
0051                   const ATOOLS::nlo_type::code type=ATOOLS::nlo_type::lo,
0052                   const std::string add="") const;
0053 
0054     Weight_Map CalculateWeight(ATOOLS::Cluster_Amplitude *const ampl);
0055 
0056     MC_Weight TrialWeight(ATOOLS::Cluster_Amplitude *const ampl);
0057 
0058   public:
0059 
0060     Gamma(MCatNLO *const dire,Shower *const shower);
0061 
0062     bool Reject();
0063 
0064     inline double Weight() const { return m_weight; }
0065 
0066   };// end of class Gamma
0067 
0068 }// end of namespace DIM
0069 
0070 #endif