@@ -1030,114 +1030,4 @@ int processVertex(TOPOTYPE *TopoInf, int pointsremaining, int level)
10301030}
10311031
10321032// #] processVertex :
1033- // #[ GenTopologies :
1034-
1035- #define TOPO_MAXVERT 10
1036-
1037- int GenTopologies (PHEAD WORD *term, WORD level)
1038- {
1039- Options *opt = new Options;
1040- int nlegs, nloops, i, identical;
1041- TERMINFO info;
1042- WORD *t, *t1, *tstop;
1043- TOPOTYPE TopoInf;
1044- SETS s;
1045- //
1046- info.term = term;
1047- info.level = level;
1048- info.diaoffset = AR.funoffset ;
1049- info.flags = 0 ;
1050-
1051- t = term + info.diaoffset ; // the function
1052- t1 = t + FUNHEAD; // its arguments
1053- tstop = t + t[1 ];
1054-
1055- info.externalset = t1[7 ];
1056- info.internalset = t1[9 ];
1057-
1058- s = &(Sets[t1[5 ]]);
1059- TopoInf.nvert = s->last - s->first ;
1060- TopoInf.vert = &(SetElements[s->first ]);
1061-
1062- nloops = t1[1 ];
1063- nlegs = t1[3 ];
1064-
1065- info.numextern = nlegs;
1066-
1067- for ( i = 0 ; i <= MAXLEGS; i++ ) { TopoInf.cmind [i] = TopoInf.cmaxd [i] = 0 ; }
1068-
1069- t1 += 10 ;
1070- if ( t1 < tstop && t1[0 ] == -SETSET ) {
1071- TopoInf.vertmax = &(SetElements[Sets[t1[1 ]].first ]);
1072- t1 += 2 ;
1073- }
1074- else TopoInf.vertmax = NULL ;
1075-
1076- info.flags |= TOPOLOGIESONLY; // this is the topologies_ function after all.
1077- if ( t1 < tstop && t1[0 ] == -SNUMBER ) {
1078- if ( ( t1[1 ] & WITHOUTNODES ) == WITHOUTNODES ) info.flags |= WITHOUTNODES;
1079- if ( ( t1[1 ] & WITHEDGES ) == WITHEDGES ) info.flags |= WITHEDGES;
1080- if ( ( t1[1 ] & WITHBLOCKS ) == WITHBLOCKS ) info.flags |= WITHBLOCKS;
1081- if ( ( t1[1 ] & WITHONEPISETS ) == WITHONEPISETS ) info.flags |= WITHONEPISETS;
1082- opt->values [GRCC_OPT_1PI] = ( t1[1 ] & ONEPARTI ) == ONEPARTI;
1083- // opt->values[GRCC_OPT_NoTadpole] = ( t1[1] & NOTADPOLE ) == NOTADPOLE;
1084- opt->values [GRCC_OPT_NoTadpole] = ( t1[1 ] & NOSNAIL ) == NOSNAIL;
1085- opt->values [GRCC_OPT_No1PtBlock] = ( t1[1 ] & NOTADPOLE ) == NOTADPOLE;
1086- // opt->values[GRCC_OPT_NoExtSelf] = ( t1[1] & NOEXTSELF ) == NOEXTSELF;
1087-
1088- // if ( ( t1[1] & WITHINSERTIONS ) == WITHINSERTIONS ) {
1089- // opt->values[GRCC_OPT_No2PtL1PI] = True;
1090- // opt->values[GRCC_OPT_NoAdj2PtV] = True;
1091- // opt->values[GRCC_OPT_No2PtL1PI] = True;
1092- // }
1093- opt->values [GRCC_OPT_SymmInitial] = ( t1[1 ] & WITHSYMMETRIZEI ) == WITHSYMMETRIZEI;
1094- opt->values [GRCC_OPT_SymmFinal] = ( t1[1 ] & WITHSYMMETRIZEF ) == WITHSYMMETRIZEF;
1095- }
1096-
1097- info.numdia = 0 ;
1098- info.numtopo = 1 ;
1099-
1100- opt->setOutAG (ProcessDiagram, &info);
1101- opt->setOutMG (ProcessTopology, &info);
1102- //
1103- // Now we should sum over all possible vertices and run MGraph for
1104- // each combination. This is done by recursion in the processVertex routine
1105- // First load up the relevant arrays.
1106- //
1107-
1108- // First the external nodes.
1109-
1110- if ( nlegs == -2 ) {
1111- nlegs = 2 ;
1112- identical = 1 ;
1113- }
1114- for ( i = 0 ; i < nlegs; i++ ) {
1115- TopoInf.cldeg [i] = 1 ; TopoInf.clnum [i] = 1 ; TopoInf.clext [i] = -1 ;
1116- }
1117- int points = 2 *nloops-2 +nlegs;
1118-
1119- if ( identical == 1 ) { /* Only propagator topologies..... */
1120- nlegs = 1 ;
1121- TopoInf.clnum [0 ] = 2 ;
1122- }
1123- TopoInf.ncl = nlegs;
1124- TopoInf.opt = opt;
1125-
1126- if ( points >= MAXPOINTS ) {
1127- MLOCK (ErrorMessageLock);
1128- MesPrint (" GenTopologies: %d loops and %d legs considered excessive" ,nloops,nlegs);
1129- MUNLOCK (ErrorMessageLock);
1130- Terminate (-1 );
1131- }
1132- if ( processVertex (&TopoInf,points,0 ) != 0 ) {
1133- MLOCK (ErrorMessageLock);
1134- MesPrint (" Called from GenTopologies with %d loops and %d legs" ,nloops,nlegs);
1135- MUNLOCK (ErrorMessageLock);
1136- Terminate (-1 );
1137- }
1138- delete opt;
1139- return (0 );
1140- }
1141-
1142- // #] GenTopologies :
11431033
0 commit comments