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
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099 }
0100 #endif
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112