Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:09:47

0001 #ifndef AMEGIC_Main_Single_Process_External_H
0002 #define AMEGIC_Main_Single_Process_External_H
0003 
0004 #include "AMEGIC++/Main/Process_Base.H"
0005 
0006 #include "AMEGIC++/Main/Polarisation.H"
0007 #include "PHASIC++/Process/Tree_ME2_Base.H"
0008 
0009 namespace AMEGIC {
0010   class Helicity;
0011   class Phase_Space_Generator;
0012   class Single_Process_External: public Process_Base {
0013 
0014   typedef std::set<std::pair<size_t,size_t> >     Combination_Set;
0015   typedef std::map<size_t,ATOOLS::Flavour_Vector> CFlavVector_Map;
0016 
0017   private:
0018     PHASIC::Tree_ME2_Base *p_me2;
0019     size_t m_pn;
0020     bool                    m_newlib, m_keep_zero_procs;
0021     Polarisation            m_pol;
0022     double                  m_iresult;
0023 
0024     Combination_Set m_ccombs;
0025     CFlavVector_Map m_cflavs;
0026 
0027     Single_Process_External        * p_partner;
0028     /*------------------------------------------------------------------------------
0029 
0030       Constructors
0031 
0032       ------------------------------------------------------------------------------*/
0033   public:
0034 
0035     Single_Process_External();
0036     ~Single_Process_External();
0037     
0038     bool Combinable(const size_t &idi,const size_t &idj);
0039 
0040     const ATOOLS::Flavour_Vector &CombinedFlavour(const size_t &idij);
0041 
0042     bool FillIntegrator(PHASIC::Phase_Space_Handler *const psh);
0043    private:
0044 
0045     /*------------------------------------------------------------------------------
0046 
0047       Initializing libraries, amplitudes, etc.
0048 
0049       ------------------------------------------------------------------------------*/
0050   public:
0051     void                AddChannels(std::list<std::string>*);
0052     bool                NewLibs() {return 0;}
0053     bool                FoundMappingFile(std::string &,std::string &);
0054     int                 InitAmplitude(Amegic_Model *,Topology *,
0055                       std::vector<Process_Base *> &,
0056                       std::vector<Process_Base *> &);
0057     bool                SetUpIntegrator();
0058     Amplitude_Handler * GetAmplitudeHandler()          { return 0;}
0059     Helicity *          GetHelicity()                  { return 0; }    
0060     double              Result()                       { return m_iresult; } 
0061 
0062     int                             NumberOfDiagrams() { return 0; }
0063     AMEGIC::Point                 * Diagram(int i)     { return 0; }
0064     /*------------------------------------------------------------------------------
0065 
0066       Process management
0067 
0068       ------------------------------------------------------------------------------*/
0069   public:
0070     std::string      LibName()                          { return std::string("");     }
0071     std::string      PSLibName()                        { return std::string("");   }
0072     AMEGIC::Process_Base   * Partner() const            { return p_partner;     }
0073     void             Minimize();
0074 
0075     /*------------------------------------------------------------------------------
0076 
0077       Calculating total cross sections
0078 
0079       ------------------------------------------------------------------------------*/
0080   public:
0081     double Partonic(const ATOOLS::Vec4D_Vector&,
0082                     ATOOLS::Variations_Mode varmode,
0083                     int mode);
0084     double         DSigma(const ATOOLS::Vec4D_Vector &,bool);
0085     double         operator()(const ATOOLS::Vec4D *);
0086 
0087   };
0088 }
0089 
0090 
0091 
0092 #endif