Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef PHASIC_Process_ME_Generator_Base_H
0002 #define PHASIC_Process_ME_Generator_Base_H
0003 
0004 #include "PHASIC++/Process/Process_Base.H"
0005 #include "ATOOLS/Org/Getter_Function.H"
0006 
0007 namespace ATOOLS { class Cluster_Amplitude; }
0008 namespace BEAM { class Beam_Spectra_Handler; }
0009 namespace PDF { class ISR_Handler; }
0010 namespace YFS { class YFS_Handler; }
0011 namespace MODEL { class Model_Base; }
0012 namespace REMNANTS { class Remnant_Handler; }
0013 
0014 namespace PHASIC {
0015 
0016   class ME_Generators;
0017 
0018   class ME_Generator_Base: public ATOOLS::Mass_Selector
0019   {
0020   private:
0021 
0022     std::string         m_name;
0023     ATOOLS::Flavour_Set m_psmass;
0024     ME_Generators*      p_gens;
0025     REMNANTS::Remnant_Handler *p_remnant;
0026 
0027     void RegisterDefaults();
0028     void RegisterDipoleParameters();
0029     void RegisterNLOParameters();
0030     template <typename T>
0031     void SetParameter(const std::string& param, const T& def);
0032 
0033     int ShiftMassesDefault(ATOOLS::Cluster_Amplitude *const ampl, ATOOLS::Vec4D cms);
0034     int ShiftMassesDIS(ATOOLS::Cluster_Amplitude *const ampl, ATOOLS::Vec4D cms);
0035 
0036   protected:
0037 
0038     int  m_massmode;
0039     void SetPSMasses();
0040 
0041   public:
0042 
0043     // constructor
0044     ME_Generator_Base(const std::string &name);
0045 
0046     // destructor
0047     virtual ~ME_Generator_Base();
0048 
0049     // member functions
0050     virtual bool Initialize(MODEL::Model_Base* const,
0051                 BEAM::Beam_Spectra_Handler* const,
0052                 PDF::ISR_Handler* const,
0053                 YFS::YFS_Handler* const) = 0;
0054 
0055     virtual Process_Base *InitializeProcess(const Process_Info &pi,
0056                                             bool add)=0;
0057     virtual int PerformTests() = 0;
0058     virtual bool NewLibraries() = 0;
0059 
0060     Process_Base *InitializeProcess
0061     (ATOOLS::Cluster_Amplitude *const ampl,const int mode,
0062      const std::string &gen="",const std::string &addname="");
0063 
0064     int ShiftMasses(ATOOLS::Cluster_Amplitude *const ampl);
0065 
0066     double Mass(const ATOOLS::Flavour &fl) const;
0067 
0068     static void ShowSyntax(const int mode);
0069 
0070     // inline functions
0071     inline std::string Name() const { return m_name; }
0072 
0073     inline int SetMassMode(const int mode)
0074     { int mm(m_massmode); m_massmode=mode; return mm; }
0075 
0076     inline int MassMode() { return m_massmode; }
0077 
0078     inline void SetGenerators(ME_Generators *const gens) { p_gens=gens; }
0079 
0080     inline ME_Generators *Generators() const { return p_gens; }
0081 
0082     virtual void SetModel(MODEL::Model_Base*) {};
0083 
0084     inline void SetRemnantHandler(REMNANTS::Remnant_Handler *remnant) {
0085       p_remnant = remnant;
0086     }
0087   };// end of class ME_Generator_Base
0088 
0089   struct ME_Generator_Key {
0090     ME_Generator_Key() {};
0091   };//end of struct ME_Generator_Key
0092 
0093   typedef ATOOLS::Getter_Function
0094   <ME_Generator_Base,ME_Generator_Key> ME_Generator_Getter;
0095 
0096 }// end of namespace PHASIC
0097 
0098 #endif