Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef AMEGIC_Amplitude_Amplitude_Group_H
0002 #define AMEGIC_Amplitude_Amplitude_Group_H
0003 
0004 #include "AMEGIC++/String/String_Handler.H"
0005 #include "AMEGIC++/Amplitude/Amplitude_Base.H"
0006 #include "ATOOLS/Org/Run_Parameter.H"
0007 #include "ATOOLS/Org/Message.H"
0008 
0009 #include <map>
0010 
0011 namespace AMEGIC {
0012 
0013   typedef std::vector<Amplitude_Base *>          Amplitude_List;
0014   typedef std::map<std::string, Amplitude_List>  Graph_Table;
0015 
0016   struct Graph_Family {
0017     int             was_clustered;
0018     int             znumber;
0019     int             topnumber;
0020     int             permnumber;
0021     Amplitude_List  graphs;
0022     std::string     banner;
0023   };
0024 
0025   typedef std::vector<Graph_Family *>    Graph_Families;
0026   
0027   class Amplitude_Group: public virtual Amplitude_Base {
0028     Amplitude_Base* GetSingleGraph(std::list<sknot*>&);
0029     Graph_Family * FindFamily(int zn, int tn, int pn);
0030   protected:
0031     std::vector<Amplitude_Base*> graphs;
0032     Graph_Table             graph_table;
0033     Graph_Families          family_table;
0034     std::string             groupname;          
0035   public:
0036     ~Amplitude_Group();
0037     bool IsGroup() { return true; }
0038     Complex Zvalue(String_Handler*,int);
0039     Complex Zvalue(int);
0040     Complex Zvalue(int,int*);
0041     void    PrintGraph();
0042     void FillCoupling(String_Handler*); 
0043     void ClearCalcList(); 
0044     void KillZList(); 
0045     void SetStringOn();   
0046     void SetStringOff();  
0047     void SetNumber(int& n); 
0048     void Add(Amplitude_Base*, int sign =1);
0049     int  Size();
0050     Amplitude_Base* operator[](const int i) { return (i<(int)graphs.size()) ? graphs[i] : 0; }
0051 
0052     Amplitude_Base* GetAmplitude(const int n);
0053     void BuildGlobalString(int*,int,Basic_Sfuncs*,ATOOLS::Flavour*,String_Handler*);
0054     
0055     const std::vector<int> &GetOrder();
0056    
0057   };
0058 
0059   /*! 
0060     \file
0061     \brief this file contains the class AMEGIC::Amplitude_Group
0062   
0063   */
0064 
0065   /*! \class Amplitude_Group
0066       \brief is the basis class for grouping Feynman amplitudes in
0067              Color_Group's or Super_Amplitudes
0068   */
0069 
0070   /*!
0071     \fn Amplitude_Base* Amplitude_Group::GetSingleGraph(std::list<sknot*>&)
0072     \brief
0073   */
0074 
0075   /*!
0076     \fn Complex Amplitude_Group::Zvalue(String_Handler * sh,int ihel) 
0077     \brief
0078   */
0079 
0080   /*!
0081     \fn Complex Amplitude_Group::Zvalue(int ihel,int* signlist) 
0082 
0083     void    PrintGraph()
0084     void FillCoupling(String_Handler* shand) 
0085     void ClearCalcList()
0086 
0087     void SetStringOn()  
0088     void SetStringOff() 
0089     void SetNumber(int& n) 
0090     void Add(Amplitude_Base* ab, int sign =1)
0091     int  Size() 
0092     Amplitude_Base* operator[](const int i) 
0093 
0094     Amplitude_Base* GetAmplitude(const int n)
0095     void BuildGlobalString(int*,int,Basic_Sfuncs*,ATOOLS::Flavour*,String_Handler*)
0096 
0097   */
0098 
0099 }
0100 #endif
0101 
0102 
0103 
0104 
0105 
0106 
0107 
0108 
0109 
0110 
0111 
0112