static int cerror(int n,char* s) { /* - generate error message occur in color package - 08/01/90 */ fprintf(stderr,"***** %s\n",s); if (n > CERRLEV1) fprintf(stderr,"Error %u in colorf.c \n",n), sortie(55); else if (n > CERRLEV2) sortie(56); return 0; }
void save_sos(int ercode) { unsigned nproc; csdiagram cd; marktp mark; if (ercode == -2) /* User Break */ { finish(); sortie(20); /* Restart */ } if (ercode == -1) /* Heap is empty */ { mark.blk_=NULL; mark.pos_=0; release_(&mark); } /* Heap is empty, continue */ /* TooLargeNumber */ /* TooManyIdentifiers */ /* RangeCheckError */ if ((ercode < 0) || (ercode == 7) || (ercode == 11) || (ercode == 12)) /* Restart */ { saveent(10); nproc = ftell(diagrq) - sizeof(cd); fseek(diagrq,nproc,SEEK_SET); FREAD1(cd,diagrq); cd.status = -2; fseek(diagrq,nproc,SEEK_SET); FWRITE1(cd,diagrq); finish(); sortie(20); /* Restart */ } /* not disk space */ if ((ercode == 40)) { finish(); sortie(65); /* End of work */ } if(ercode ==14) { messanykey(10,10," Check model !"); finish(); sortie(62); } }
double usrfun(char * name) { fprintf(stdout," usrfun(char* name) is called with parameter %s\n" "But is not defined!\n",name); sortie(54); return 0.; }
static int input(int y0, char*hlp, char*directive, char*text, int cur, int lim) { if(errTxt) { goto_xy(1,y0+1); scrcolor(FGmain,BGmain); clr_eol(); print("%s","Error: "); scrcolor(Red,BGmain); print("%s",errTxt); scrcolor(FGmain,BGmain); if(blind) { printf("%s\n",errTxt); sortie(110);} be_be(); errTxt=NULL; } for(;;) { int rc; goto_xy(1,y0); scrcolor(FGmain,BGmain); print("%s",directive); rc=str_redact(text,cur, lim); switch(rc) { case KB_UP: case KB_DOWN: case KB_PAGED: case KB_PAGEU: prtcllist(rc); continue; case KB_F1: show_help(hlp); continue; } return rc; } }
void sngpos_(char *lv, int * ndec, int * nclust, char *lvaux) { int i, k,ln[2]; int ierr[2]; char lvaux_cp[2][10]; if (lv[0] == 1 && lv[1] == 2 && lv[2] == 0 && nin_int == 2) { lvaux[0] = 0; *ndec = 0; *nclust = 0; return; } for (i = 0; i < nout_int - 1; ++i) { for (k = 0; k < 2; k++) { ierr[k]=lvdiff_(lv,kinmtc_1[i].lvout[k],lvaux_cp[k]); if (!ierr[k]) ierr[k] = !isknown(lvaux_cp[k],i+1); if (!ierr[k]) ln[k]=strlen(kinmtc_1[i].lvout[k])+strlen(lvaux_cp[k]); } if (! (ierr[0]&&ierr[1]) ) { *ndec = i+1; if((!ierr[0]) && (!ierr[1])) k=(ln[0]<ln[1])? 1:2; else k=ierr[0]?2:1; *nclust = k; strcpy( lvaux,lvaux_cp[k-1]); return; } } printf("error in sngpos_\n"); sortie(51); }
int loadModel(int check,int ugForce) { varrec recForGG; errorText[0]=0; if( (!check)&&(lastModel == n_model) ) return 1; if( !readvars(check,&recForGG) ) if(blind) sortie(125); else return 0; if( !readparticles(check,ugForce)) if(blind) sortie(125); else return 0; if( recForGG.need!=-1) { nmodelvar++; *(modelvars+nmodelvar)=recForGG; } if( !readlagrangian(check,ugForce)) if(blind) sortie(125); else return 0; filldecaylist(); readEXTLIB(); lastModel = n_model; return 1; }
static void f10_key_prog_for22(int x) { if( mess_y_n(15,15," Quit session? ")) { finish(); sortie(0); } }
void f10_key_prog(int x) { if ( mess_y_n(56,maxRow()-5," Quit session? ")) { saveent(menulevel); finish(); sortie(0); } }
static void f10_key_prog (int x) { if( mess_y_n(15,15," Quit session? ")) { w_sess__(NULL); finish(); sortie(0); } }
static void wAbort(void) { saveent(menulevel); messanykey(5,20,"Error in writing on the disk. \n" "Check the existence of the \n" "'tmp' and 'results' directories \n" "or the existence of free disk space"); finish(); sortie(65); /* End of work */ }
void n_comphep(void) { clr_scr(FGmain,BGmain); while(checkParam()) if(mess_y_n(15,15, "Quit the session?")) {w_sess__(NULL); return;} else change_parameter(54,7,0); do { int err=monte_carlo_menu(); switch(err) { case 1:printf("Energy is too small!\n"); sortie(123); case 2:printf("Can not evaluate cuts limlts\n"); sortie(124); case 3:printf("Can not evaluate regularization paremeters"); sortie(125); } } while(!mess_y_n(15,15,"Quit session?")); w_sess__(NULL); }
char* parseVertex(int v, int forReduce) { int j; int sgn=1; char *pstr, *pstr2; for (j = 0; j < MAX(1,vcs.valence[v]); j++) { momsubst[j]=vcs.vertlist[v][vertexes[v].subst[j]-1].moment; indsubst[j]=vcs.vertlist[v][vertexes[v].subst[j]-1].lorentz; } r_reading0=vertexes[v].r_vert; forR_code=forReduce; pstr = (char *) readExpression(vertexes[v].lgrnptr->description, rd_rcode, act_rcode, free); if(rderrcode) { if(forReduce) outFileClose(); finish(); sortie(60); } if (vcs.valence[v] == 3 && prtclbase1[vcs.vertlist[v][0].partcl].cdim == 8 && prtclbase1[vcs.vertlist[v][1].partcl].cdim == 8 && prtclbase1[vcs.vertlist[v][2].partcl].cdim == 8) { if (vertexes[v].subst[0] > vertexes[v].subst[1]) sgn = -sgn; if (vertexes[v].subst[1] > vertexes[v].subst[2]) sgn = -sgn; if (vertexes[v].subst[0] > vertexes[v].subst[2]) sgn = -sgn; } if(sgn==1) { pstr2=m_alloc(strlen(pstr)); strcpy(pstr2,pstr+2); } else { pstr2=m_alloc(strlen(pstr)+8); sprintf(pstr2,"(-1)*(%s)",pstr+2); } free(pstr); return pstr2; }
int checkDir(char * dirName) { DIR *dirPtr=opendir(dirName); struct dirent * dp; int res=0; if(!dirPtr) { char buff[200]; sprintf(buff,"mkdir %s",dirName); res=system(buff); if(res) { sprintf(buff,"Fatal error. Directory\n%s\n" "is absent and can not be created",dirName); sortie(99); } return 0; } while((dp=readdir(dirPtr))) if(strcmp(dp->d_name,".")&&strcmp(dp->d_name,"..")) { closedir(dirPtr); return 1; } closedir(dirPtr); return 0; }
int imkmom(double P1, double P2) { int i, j, k, l,ns; char lvbuf[PLISTLEN]; int ndim; physValRec * pList; beta[0]=sf_be[0]; beta[1]=sf_be[1]; if(nin_int==2) { if(nout_int==1) ndim=1; else { ndim = nout_int * 3 - 5; if (sf_num[0]) ndim++; if (sf_num[1]) ndim++; tfact0 = 2*M_PI*389379660.0; } }else { tfact0 = 2*M_PI; if(nout_int==2) ndim=1; else ndim = nout_int * 3 - 7;} for (i=0; i < nin_int + nout_int; i++) pinf_int(Nsub,i+1,pm+i,NULL); nout1 = nout_int - 1; if(nout1>DEPTH) return 0; nvposx = nin_int + nout_int + 1; nvposy = nvposx + 1; nvpos0 = nvposy + 1; /* * NVOUT( , ) FILLING */ for (i = 0; i < nout1; ++i) for (k = 0; k < 2; ++k) { if (kinmtc_1[i].lvout[k][1]) nvout[i][k] = nvpos0++; else nvout[i][k] = kinmtc_1[i].lvout[k][0]; } nvin[0] = nvpos0++; for (i = 1; i < nout1; ++i) { nvin[i]=0; for (j = 0; j < i; ++j) for (k = 0; k < 2; ++k) { if (eqvect_(kinmtc_1[i].lvin, kinmtc_1[j].lvout[k])) { nvin[i] = nvout[j][k]; lnkbab[i] = j; lnkleg[i] = k; } } if(!nvin[i]) { fprintf(stderr,"Error in kinematics \n"); sortie(52); } } for (i = 0; i < nout1; ++i) for (k = 0; k < 2; ++k) { REAL ss = 0; int pn; for(j=0; (pn=kinmtc_1[i].lvout[k][j]);j++) ss += pm[pn - 1]; summas[i][k] = ss; } if (nin_int == 2) { REAL m1=sf_num[0]?sf_mass[0]:pm[0]; REAL m2=sf_num[1]?sf_mass[1]:pm[1]; incomkin(m1, m2, P1, P2, &sqrt_S, &pcm, &rapidity); ssmin=pm[0]+pm[1]; if(ssmin<summas[0][0]+summas[0][1]) ssmin=summas[0][0]+summas[0][1]; ssmin*=ssmin; if( sf_num[0] && sf_num[1] ) {sbot=0;stop=4*pcm*pcm;} else if(sf_num[0]){sbot=m2*m2; stop=sbot+2*pcm*(pcm+sqrt(pcm*pcm+sbot));} else if(sf_num[1]){sbot=m1*m1; stop=sbot+2*pcm*(pcm+sqrt(pcm*pcm+sbot));} else stop = sqrt_S*sqrt_S; ssmax=stop; } else { REAL m1=pm[0]; rapidity=log((P1+sqrt(P1*P1+m1*m1))/m1 ) ; } for(i = 0; i < nout1; ++i) { nsph[i] = 0; for(k=0;k<2;k++) { for(ns=0; ns<10;ns++) { sph_inf[i][ns].ncsreg[k] = 0; sph_inf[i][ns].ncscut[k] = 0; sph_inf[i][ns].tcscut[k]=0; } nmsreg[i][k] = 0; nmscut[i][k] = 0; } } nss=0; for(l=0; invreg_1[l].lvinvr[0]; l++) { int orig=1, ll=0; for(;ll<l;ll++) {if( invreg_1[ll].nextrg == l+1) { orig=0; break;}} if(orig) { sngpos_(invreg_1[l].lvinvr, &i, &k, lvbuf); if (i==0) nss = l+1; else { i--; k--; if (lvbuf[0] == 0) nmsreg[i][k] = l+1; else { for (ns = 0; ns <nsph[i]; ++ns) if (eqvect_(lvbuf,sph_inf[i][ns].lvpole)) { sph_inf[i][ns].ncsreg[k] = l+1; break; } if(ns==nsph[i] && ns<10) { nsph[i]++; strcpy(sph_inf[i][ns].lvpole,lvbuf); if (spole_(invreg_1[l].lvinvr))sph_inf[i][ns].itypep = -2; else sph_inf[i][ns].itypep = -1; sph_inf[i][ns].ncsreg[k] = l+1; } } } } } for(l=0;l<nCuts;l++) if( invcut_1[l].key[0] == 'M') for(pList=invcut_1[l].pLists;pList;pList=pList->next) { char buff[20]; strcpy(buff,pList->pstr); coninv_(buff); sngpos_(buff, &i, &k, lvbuf); if (i == 0) rancor_(&ssmin, &ssmax, 0., 1., l+1); else if (lvbuf[0] == 0) nmscut[i-1][k-1] = l+1; else { i--; k--; for (ns = 0; ns < nsph[i ]; ++ns) { if (eqvect_(lvbuf, sph_inf[i][ns].lvpole)) { sph_inf[i][ns].ncscut[k] = l+1; break; } } if(ns==nsph[i] && ns <10 ) { nsph[i]++; strcpy(sph_inf[i][ns].lvpole,lvbuf); sph_inf[i][ns].itypep = 2; sph_inf[i][ns].ncscut[k] = l+1; } } } if(nin_int==2 && ssmin>=ssmax) return 0; if(nin_int==2) for(l=0;l<nCuts;l++) { int m; invcut_ tc=invcut_1[l]; /* if( tc.key[0]=='T' && tc.key[1]!='^' && tc.minon && tc.pLists && tc.pLists->pstr[1]==0 ) for(pList=invcut_1[l].pLists;pList;pList=pList->next)for(m=1;m<=2;m++) { char str[4]; strcpy(str+1,pList->pstr); str[0]=m; sngpos_(str, &i, &k, lvbuf); { i--; k--; for (ns = 0; ns < nsph[i ]; ++ns) { if(eqvect_(lvbuf, sph_inf[i][ns].lvpole) &&strcmp(kinmtc_1[i].lvout[k],str+1)==0) { sph_inf[i][ns].tcscut[k] = l+1; break; } } } } */ } for(i = 0; i < nout1; ++i) { if (nsph[i] == 0) { nsph[i] = 1; sph_inf[i][0].lvpole[0] = (i == 0 && nin_int == 1 )? nvposx:1; sph_inf[i][0].lvpole[1] = 0; sph_inf[i][0].itypep = 1; } else { ns = nsph[i]-1; if(sph_inf[i][ns].ncsreg[0] || sph_inf[i][ns].ncsreg[1]) sph_inf[i][0].itypep *=-1; } } for(i = 0; i<nout1; ++i) { REAL wesum = 0; for (ns = 0; ns<nsph[i]; ++ns) { int nwe = 0; for (k = 0; k < 2; ++k) for (l = sph_inf[i][ns].ncsreg[k];l;l=invreg_1[l-1].nextrg) ++nwe; if (sph_inf[i][ns].itypep >= 0) ++nwe; sph_inf[i][ns].sph_we = nwe; wesum += nwe; } for (ns = 0; ns <nsph[i]; ++ns) sph_inf[i][ns].sph_we /= wesum; } #ifdef DEBUG for (i = 0; i < nout1; ++i) { printf("Decay number %d nmscut= (%d,%d) nmsreg = (%d,%d)\n", i, nmscut[i][0], nmscut[i][1], nmsreg[i][0], nmsreg[i][1]); {int l,c; printf("kinematics= ("); for (l=0;c= kinmtc_1[i].lvin[l];l++) printf("%d",c); printf(")->("); for (l=0;c=kinmtc_1[i].lvout[0][l];l++) printf("%d",c); printf(")+("); for (l=0;c=kinmtc_1[i].lvout[1][l];l++) printf("%d",c); printf(")\n"); } printf(" summas=(%f,%f)\n",summas[i][0],summas[i][1]); for (ns = 0; ns < nsph[i]; ++ns) { int c; printf(" Sphere number = %d weight=%f type=%d \n", ns, sph_inf[i][ns].sph_we, sph_inf[i][ns].itypep); printf(" pole vector("); for(k=0; c=sph_inf[i][ns].lvpole[k]; k++) printf("%d",c); printf(")\n"); printf(" ncsreg=(%d,%d) ncscut=(%d,%d) tcscut=(%d,%d) \n", sph_inf[i][ns].ncsreg[0], sph_inf[i][ns].ncsreg[1], sph_inf[i][ns].ncscut[0], sph_inf[i][ns].ncscut[1], sph_inf[i][ns].tcscut[0], sph_inf[i][ns].tcscut[1]); } } #endif return ndim; } /* mkmom_ */
int runVegas(void) { int i; double sd; double avgi; char mess[25]; FILE * iprt = NULL; int mode=1; void * pscr=NULL; static int n_Line=7; i=imkmom(inP1,inP2); if(veg_Ptr&&veg_Ptr->ndim!=i)clearGrid(); if(!veg_Ptr) veg_Ptr=vegas_init(i,50); if(nin_int == 2) strcpy(mess, "Cross section[pb]"); else strcpy(mess, " Width[Gev] "); /* ** save current session parameters */ w_sess__(NULL); /* ** open protocol and resulting files */ { char fname[50]; sprintf(fname,"%sprt_%d",outputDir,nSess); iprt=fopen(fname,"a"); if(ftell(iprt)==0) { fprintf(iprt," CalcHEP kinematics module \n The session parameters:\n"); w_sess__(iprt); fprintf(iprt,"===================================\n"); } } /* ** initkinematics */ while(correctHistList()) editHist(); /* *** Main cycle */ if(!integral.old || n_Line==7) { n_Line=7; scrcolor(Blue, BGmain); // printLn(iprt,&n_Line," #IT %20s Error %% nCall chi**2",mess); printLn(iprt,&n_Line," #IT %s Error[%%] nCalls Eff. chi^2",mess); } for(;;) { static int worn=1; char strmen[]="\030" " nSess = N2_1 " " nCalls = N1_1 " " Set Distributions " "*Start integration " " Display Distributions " " Clear statistic " " Freeze grid OFF " " Clear grid " " Event Cubes NCUBE " " Generate Events "; improveStr(strmen,"N1_1","%d",integral.ncall[0]); improveStr(strmen,"N2_1","%d",integral.itmx[0]); improveStr(strmen,"NCUBE","%d",EventGrid); if(integral.freeze) improveStr(strmen,"OFF","ON"); menu1(54,7,"",strmen,"n_veg_*",&pscr,&mode); switch(mode) { case 0: if(iprt) fclose(iprt); return 0; case 1: correctInt(50,12,"Enter new value ",&integral.itmx[0],1); break; case 2: correctLong(50,12,"Enter new value ",&integral.ncall[0],1); break; case 3: editHist(); break; case 4: if(veg_Ptr->fMax && !integral.freeze) { if(!mess_y_n(15,15,"You have event generator prepared.\n" " The answer 'Y' will start Vegas session \nwhich destroys it." " To save the event generator answer 'N' \nand set " " ' Freeze grid' ON")) break; else { free(veg_Ptr->fMax); veg_Ptr->fMax=NULL; veg_Ptr->nCubes=0;} } for (i = 1; i <= integral.itmx[0]; ++i) { double sum; char errtxt[100]=""; int k; if(integral.ncall[0]==0) break; nCall=0; negPoints=0; badPoints=0; hFill=1; if(vegas_int(veg_Ptr, integral.ncall[0],1.5*(!integral.freeze), func_, &avgi, &sd) ) break; integral.old=1; negPoints/=nCall; badPoints/=nCall; integral.nCallTot+=nCall; scrcolor(FGmain,BGmain); printLn(iprt,&n_Line,"%4d %12.4E %10.2E %8d %s", ++integral.n_it, avgi,avgi? 100*sd/(double)fabs(avgi):0.,nCall,effInfo()); if(negPoints<0) sprintf(errtxt+strlen(errtxt)," Negative points %.1G%%;", -100*negPoints/(avgi-2*negPoints)); if(badPoints) sprintf(errtxt+strlen(errtxt), "Bad Precision %.1G%%;",100*badPoints/(avgi-2*negPoints)); if(errtxt[0]) { scrcolor(Red,BGmain); printLn(iprt,&n_Line,"%s",errtxt); } integral.s0+=sd*sd; integral.s1+=avgi; integral.s2+=avgi*avgi; } integral.In=integral.s1/integral.n_it; integral.dI=sqrt(integral.s0)/integral.n_it; if(integral.n_it<=1 || integral.s0==0 ) integral.khi2=0; else integral.khi2=(integral.s2-integral.s1*integral.s1/integral.n_it)*integral.n_it/(integral.n_it-1)/fabs(integral.s0); scrcolor(FGmain,BGmain); printLn(iprt,&n_Line," < > %12.4E %10.2E %8d %7.7s %-7.1G" , integral.In, fabs(integral.In)? 100*integral.dI/(double)fabs(integral.In):0., integral.nCallTot, effInfo(), integral.khi2); if(histTab.strings) { char fname[20]; FILE * d; sprintf(fname,"distr_%d",nSess); d=fopen(fname,"w"); wrt_hist2(d,Process); fclose(d); } messanykey(54,11,"Integration is over"); /* integral.freeze=0; */ break; case 5: showHist(54,10,Process); break; case 6: clearStatistics(-1); messanykey(54,13,"Old results for integral\n" "and distributions\nare deleted."); break; case 7: integral.freeze=!integral.freeze; break; case 8: if(!integral.freeze || mess_y_n(15,15,"The information for Event Generator will be lost\n OK?")) { int ndim=veg_Ptr->ndim; vegas_finish(veg_Ptr); veg_Ptr=vegas_init(ndim,50); messanykey(57,11,"OK"); } break; case 9: if(correctLong(50,12,"Enter new value ",&EventGrid,1)) { if(veg_Ptr->fMax) {free(veg_Ptr->fMax); veg_Ptr->fMax=NULL;veg_Ptr->nCubes=0;}} break; case 10: if( !veg_Ptr || !veg_Ptr->fMax) { char * mess="Before event generation one has to launch Vegas session with freezed grid\n" "to prepare generator"; if(blind) { printf("%s\n",mess); sortie(200);} else messanykey(4,13,mess); } else runEvents(); } } }
static void zeroHeep(void) { goto_xy(1,1);print("Heep is empty!!!");inkey(); sortie(70); }
void MainFrame::Enregistrer() { int i, j, k; tinyxml2::XMLDocument fichier; tinyxml2::XMLNode *racine; tinyxml2::XMLNode *elementMatrice; tinyxml2::XMLElement *elementLignes; tinyxml2::XMLElement *elementColonnes; tinyxml2::XMLElement *elementNom; tinyxml2::XMLElement *elementValeur; tinyxml2::XMLDeclaration *declaration; wxFileDialog dialogueOuverture(this, _("Enregistrer dans un fichier XML : "), "", "","XML files (*.XML)|*.XML", wxFD_SAVE|wxFD_OVERWRITE_PROMPT);; //On demande à l'utilisateur d'indiquer un fichier. if (dialogueOuverture.ShowModal() == wxID_CANCEL) { return; //Si l'utilisateur annule, on sort de la fonction } //Ouverture du fichier pour l'écriture wxFileOutputStream sortie(dialogueOuverture.GetPath()); if (!sortie.IsOk()) { wxLogError("Impossible d'ouvrir le fichier. '%s'", dialogueOuverture.GetPath()); return; //Si le fichier ne s'ouvre pas on sort de la fonction } declaration = fichier.NewDeclaration(); fichier.InsertFirstChild(declaration); //on ajoute une déclaration au début du fichier (<?xml version="1.0" encoding="UTF-8"?>) racine = fichier.NewElement("variable"); fichier.InsertEndChild(racine); //on ajoute ensuite le premier noeud (<variable></variable>) for(i=0; i<26; i++) { if (m_conteneurVariables.Existe(65+i)) //pour chaque matrice existante, on ajoute les données correspondantes : { elementMatrice = fichier.NewElement("matrice"); racine->InsertEndChild(elementMatrice); elementNom = fichier.NewElement("nom"); std::string nomVariable = new char(65+i); elementNom->SetText(nomVariable.c_str()); elementMatrice->InsertEndChild(elementNom); elementLignes = fichier.NewElement("lignes"); elementLignes->SetText(m_conteneurVariables.Variable(65+i).ObtenirLignes()); elementMatrice->InsertEndChild(elementLignes); elementColonnes = fichier.NewElement("colonnes"); elementColonnes->SetText(m_conteneurVariables.Variable(65+i).ObtenirColonnes()); elementMatrice->InsertEndChild(elementColonnes); //On utilise deux boucles pour ajouter toutes les valeurs de la matrice au fichier. for (j=0 ; j<m_conteneurVariables.Variable(65+i).ObtenirLignes(); j++) { for (k=0; k<m_conteneurVariables.Variable(65+i).ObtenirColonnes(); k++) { elementValeur = fichier.NewElement("valeur"); elementValeur->SetText(m_conteneurVariables.Variable(65+i).ObtenirValeur(j,k)); elementMatrice->InsertEndChild(elementValeur); } } } } fichier.SaveFile(dialogueOuverture.GetPath()); }
int viewresults(void) { int k,kmenu; void * pscr = NULL; shortstr newname; int dirStat=checkDir("results"); if(dirStat==0){messanykey(10,15,"directory RESULTS is empty"); return 1;} kmenu = 1; label_1: menu1(10,10,"","\010" " View " " Delete " " Rename ","s_res",&pscr,&kmenu); switch (kmenu) { case 0: return 0; case 1: viewDir("results"); break; case 2: if(dirStat==2) { char mess[]="Can not clean dir 'results' because it contains the LOCK file"; if(blind) { printf("%s\n",mess); sortie(102);} else { messanykey(3,13,mess); break;} } if ( mess_y_n( 6,13," Delete files ") ) { struct dirent **namelist; int n,i; n = scandir("./results", &namelist, NULL, NULL); for(i=0; i<n;i++) { char buff[100]; if(strcmp(namelist[i]->d_name,"aux") && strcmp(namelist[i]->d_name,"..") && strcmp(namelist[i]->d_name,".") ) { sprintf(buff,"rm -rf results/%s",namelist[i]->d_name); if(unlink(buff+7)) system(buff); } } free(namelist); } put_text(&pscr); return 1; case 3: strcpy(newname," "); while(1) { void * pscr3; get_text(1,maxRow(),maxCol(),maxRow(),&pscr3); goto_xy(1,maxRow()); print("Enter new name: "); k = str_redact(newname,1,30); if (k == KB_ESC) { goto_xy(1,24); clr_eol(); goto label_1; } if (k == KB_ENTER) { trim(newname); if(rename("results",newname)==0) { char command[200]; mkdir("results",0755); sprintf(command," cp -rp %s/aux results",newname); system(command); put_text(&pscr); put_text(&pscr3); return 1; } else messanykey(10,15," Can't rename the directory"); } put_text(&pscr3); } } goto label_1; }
int runVegas(void) { int i; double sd; double avgi; char mess[25]; FILE * iprt = NULL; int mode=1; void * pscr=NULL; static int n_Line=0; if(blind) vegas_control=NULL; else vegas_control=infoLine; i=imkmom(inP1,inP2); if(veg_Ptr&&veg_Ptr->dim!=i)clearGrid(); if(!veg_Ptr) veg_Ptr=vegas_init(i,func_,50); if(nin_int == 2) strcpy(mess, "Cross section[pb]"); else strcpy(mess, " Width[Gev] "); /* ** save current session parameters */ w_sess__(NULL); /* ** open protocol and resulting files */ { char fname[50]; sprintf(fname,"%sprt_%d",outputDir,nSess); iprt=fopen(fname,"a"); } /* ** initkinematics */ while(correctHistList()) editHist(); if(integral.old) { if(!n_Line) n_Line=9;} else { w_sess__(iprt); n_Line=8; } /* *** Main cycle */ for(;;) { int fz; char strmen[]="\030" " nSess = N2_1 " " nCalls = N1_1 " " Set Distributions " "*Start integration " " Display Distributions " " Clear statistic " " Freeze grid OFF " " Clear grid " " Event Cubes NCUBE " " Num. of events=NE " " Generate Events "; if(integral.freeze) { fz=1; improveStr(strmen,"OFF","ON"); improveStr(strmen,"NCUBE","%d",EventGrid); } else { fz=0; strmen[ 030*8+2]=0; } improveStr(strmen,"N1_1","%d",integral.ncall[fz]); improveStr(strmen,"N2_1","%d",integral.itmx[fz]); improveStr(strmen,"NE","%d",nEvents); menu1(54,7,"",strmen,"n_veg_*",&pscr,&mode); switch(mode) { case 0: w_sess__(NULL); if(iprt) fclose(iprt); return 0; case 1: correctInt(50,12,"Enter new value ", integral.itmx+fz,1); break; case 2: correctLong(50,12,"Enter new value ",integral.ncall+fz,1);break; case 3: editHist(); break; case 4: if(veg_Ptr->fMax && !integral.freeze) { free(veg_Ptr->fMax); veg_Ptr->fMax=NULL; veg_Ptr->evnCubes=0; } if(!veg_Ptr->fMax && integral.freeze) { setEventCubes(veg_Ptr, EventGrid); EventGrid=veg_Ptr->evnCubes; } for (i = 1; i <= integral.itmx[fz]; ++i) { char errtxt[100]=""; long nCall; if(integral.ncall[0]==0) break; negPoints=0; badPoints=0; hFill=1; nCall=vegas_int(veg_Ptr, integral.ncall[fz],1.5*(!fz),nPROCSS,&avgi, &sd); if(nCall<0) { messanykey(10,10,"NaN in integrand"); break;} if(nCall==0) break; integral.old=1; negPoints/=nCall; badPoints/=nCall; integral.nCallTot+=nCall; scrcolor(FGmain,BGmain); printLn(iprt,&n_Line,"%4d %12.4E %10.2E %8d %s", ++integral.n_it, avgi,avgi? 100*sd/(double)fabs(avgi):0.,nCall,effInfo()); if(negPoints<0) sprintf(errtxt+strlen(errtxt)," Negative points %.1G%%;", -100*negPoints/(avgi-2*negPoints)); if(badPoints) sprintf(errtxt+strlen(errtxt), "Bad Precision %.1G%%;",100*badPoints/(avgi-2*negPoints)); if(errtxt[0]) { scrcolor(Red,BGmain); printLn(iprt,&n_Line,"%s",errtxt); } integral.s0+=sd*sd; integral.s1+=avgi; integral.s2+=avgi*avgi; } integral.In=integral.s1/integral.n_it; integral.dI=sqrt(integral.s0)/integral.n_it; if(integral.n_it<=1 || integral.s0==0 ) integral.khi2=0; else integral.khi2=(integral.s2-integral.s1*integral.s1/integral.n_it)*integral.n_it/(integral.n_it-1)/fabs(integral.s0); scrcolor(FGmain,BGmain); printLn(iprt,&n_Line," < > %12.4E %10.2E %8d %7.7s %-7.1G" , integral.In, fabs(integral.In)? 100*integral.dI/(double)fabs(integral.In):0., integral.nCallTot, effInfo(), integral.khi2); if(histTab.strings) { char fname[20]; FILE * d; sprintf(fname,"distr_%d",nSess); d=fopen(fname,"w"); wrt_hist2(d,Process); fclose(d); } messanykey(54,11,"Integration is over"); /* integral.freeze=0; */ break; case 5: showHist(54,10,Process); break; case 6: clearStatistics(-1); messanykey(54,13,"Old results for integral\n" "and distributions\nare deleted."); break; case 7: if(veg_Ptr->fMax && integral.freeze) { if(mess_y_n(15,15,"You have event generator prepared.\n" " Setting the flag \"OFF\" will destroy it." " Press 'Y' to confirm.")) integral.freeze=0; } else integral.freeze=!integral.freeze; break; case 8: if(!integral.freeze || mess_y_n(15,15,"The information for Event Generator will be lost\n OK?")) { int ndim=veg_Ptr->dim; vegas_finish(veg_Ptr); veg_Ptr=vegas_init(ndim,func_,50); messanykey(57,11,"OK"); } break; case 9: if(correctLong(50,12,"Enter new value ",&EventGrid,1)) { if(veg_Ptr->fMax) {free(veg_Ptr->fMax); veg_Ptr->fMax=NULL;} printf("EventGrid=%d\n",EventGrid); setEventCubes(veg_Ptr, EventGrid); EventGrid=veg_Ptr->evnCubes; } break; case 10: correctInt(50,15,"",&nEvents,1); break; case 11: if( !veg_Ptr || !veg_Ptr->fMax) { char * mess="Before event generation one has to launch Vegas session with freezed grid\n" "to prepare generator"; if(blind) { printf("%s\n",mess); sortie(200);} else messanykey(4,13,mess); } else runEvents(); } } }
HuntAction::HuntAction(const Vect<2, s32>& pos, const Vect<2, s32>& mamouth,s32 number) : _pos(pos), _mamouth(mamouth), _number(number) { Pin<36> sortie("PE4");//PE4, green sortie.setMode(PinMode::OUTPUT); sortie.setValue(false); }
enum Error HuntAction::doAction(void) { io << "DO HUNT\n"; // Let Benoit do its job ! Pin<36> sortie("PE4");//PE4, green sortie.setMode(PinMode::OUTPUT); Pin<38> entree("PE6");//PE6, yellow entree.setMode(PinMode::INPUT); /*Pin<38> entree2("PE6"); entree.setMode(PinMode::INPUT); while(1) { io << entree.getValue() << " " << entree2.getValue() << "\n"; }*/ trajectoryManager().lookAt(_mamouth); while(!trajectoryManager().isEnded()) { if(robot().getValue()) { return SKATING; } } Vect<2, s32> look = _mamouth; for (int i=0; i<_number && nb_balls > 0; i++, nb_balls--) { //io << "sending " << i << " soon\n"; // trajectoryManager().gotoDistance(20); // while(!trajectoryManager().isEnded()) {} // Vect<2, s32> look = _mamouth; // look[0] -= OFFSET*_number/2; // //int look = 85-(OFFSET*_number/2)/10; // trajectoryManager().lookAt(look); // //trajectoryManager().gotoAngle(look); // while(!trajectoryManager().isEnded()) { // if (robot().getValue()) { // trajectoryManager().gotoDistance(-50); // while(!trajectoryManager().isEnded()) { // robot().unlock(); // } // } // } look.coord(0) += _mamouth.coord(0) + i * 12; trajectoryManager().lookAt(look); while(!trajectoryManager().isEnded()) { if(robot().getValue()) { return SKATING; } } io << "start sending" << i<<"\n"; sortie.setValue(true); s16 anti_bounce = 0; while(anti_bounce < ANTI_BOUNCE_LIMIT) { if(entree.getValue() == true) { //attendre que la carte lanceballe commence anti_bounce++; } else { anti_bounce = 0; } } sortie.setValue(false); anti_bounce = 0; while(anti_bounce < ANTI_BOUNCE_LIMIT) { if(entree.getValue() == false) { //attendre que la carte lanceballe finisse anti_bounce++; } else { anti_bounce = 0; } } look[0]+=OFFSET; look += OFFSET/10; } //io << "finished\n"; trajectoryManager().gotoDistance(-150); while(trajectoryManager().isEnded()){ if (robot().getValue()) { robot().unlock(); } if (check_for_collision(60)) { return IMPOSSIBLE; } }; _static_priority = 0; return SUCCESS; }
int main(int argc,char** argv) { int n; char icon[200]; char title[30]; blind=0; for( n=1;n<argc;n++) { if(strcmp(argv[n],"--version")==0) { printf("%s\n",VERSION_); exit(0); } if(strcmp(argv[n],"-blind")==0&& n<argc-1 ) { blind=1; inkeyString=argv[++n]; } else if (strcmp(argv[n],"+blind")==0 ) blind=2; } if(!writeLockFile(".lock")) { fprintf(stderr,"locked by other n_calchep. See .lock\n"); exit(100); } setenv("CALCHEP",rootDir,0); sprintf(pathtocalchep,"%s%c",rootDir,f_slash); sprintf(pathtohelp,"%shelp%c",pathtocalchep,f_slash); sprintf(icon,"%s/include/icon",pathtocalchep); sprintf(title,"CalcHEP_%s/num", VERSION); f3_key[2]=f5_key_prog; f3_mess[2]="Options"; f3_key[3]=f6_key_prog; f3_mess[3]="Results"; f3_key[5]=f8_key_prog; f3_mess[5]="Calc"; f3_key[6]=f9_key_prog; f3_mess[6]="Ref"; f3_key[7]=f10_key_prog; f3_mess[7]="Quit"; { int size=100; for(;;) { compDir=realloc(compDir,size+20); if(getcwd(compDir,size)) break; else size*=2; } strcat(compDir,"/aux"); libDir=malloc(strlen(compDir)+20); sprintf(libDir,"%s/so_generated",compDir); modelNum=1; calchepDir=getenv("CALCHEP"); if(!calchepDir) calchepDir=interface_ext.CALCHEP; ForceUG=interface_ext.forceUG; } /* ** initialization of the session */ link_process(PtrInterface_ext); start1(title,icon,"calchep.ini;../calchep.ini",&xw_error); nPROCSS=sysconf(_SC_NPROCESSORS_ONLN); if(r_sess__(NULL)==-1) { char buff[200]; int pdg[11]={21,1,-1,2,-2,3,-3,4,-4,5,-5}; int k,ok=0; strcpy(buff,"{p*\\09"); for(k=0;k<11;k++) { char*ch=pdg2name(pdg[k]); if(ch) { if(ok) strcat(buff,","); strcat(buff,ch); ok=1; } } strcat(buff,"}"); if(ok) { int blind0=blind; char*inkeyString0=inkeyString; inkeyString=buff; blind=1; edittable(1,4,&compTab,1,"n_comp",0); blind=blind0; inkeyString=inkeyString0; fillCompositeArray(); strcpy(buff,"{%\\09T(p*)\\09 50{%\\09J(p*,p*)\\09 0.5}"); inkeyString=buff; blind=1; edittable(1,4,&cutTab,1,"n_cut",0); blind=blind0; inkeyString=inkeyString0; } } { char *ch=getenv("nParProc"); if(ch) sscanf(ch,"%d",&nPROCSS); } goto_xy(10,10); print("Calculation of constraints. Please, be patient."); escpressed(); n_comphep(); finish(); sortie(0); }
int main(int argc,char** argv) { /*=================================== 0 - First start. 1 - Model menu. 2 - Enter process menu. 3 - Feynman diagrams menu; squaring. 4 - Squared diagram menu; symbolic calculation. 5 - Write results; new process. 10 -Restart symbolic calculations ==========================================================*/ /* 0-Start; 1-Restart; 2-Heap Error,3-Edit Model,4-UserBreak */ void *pscr1=NULL,*pscr2=NULL,*pscr3=NULL,*pscr4=NULL,*pscr5=NULL; int k1=1,k2=1,k3=1,k4=1,k5=1; int n; int pid=0; char LOCKtxt[]="Directory 'results/' contains the .lock file created by n_calchep.\n" "To continue you may a)Close the n_calchep session, or b)Rename 'results/',\n"; blind=0; strcpy(pathtocalchep,argv[0]); for(n=strlen(pathtocalchep)-1; n && pathtocalchep[n]!=f_slash; n--); pathtocalchep[n-3]=0; for ( n=1;n<argc;n++) { if (strcmp(argv[n],"-blind")==0 && n<argc-1 ) { blind=1; inkeyString=argv[++n]; } if (strcmp(argv[n],"+blind")==0 ) blind=2; if (strcmp(argv[n],"--version")==0 ) { printf("%s\n", VERSION_); exit(0);} } if(!writeLockFile(".lock")) { fprintf(stderr,"locked by other s_calchep. See .lock file\n"); exit(100); } strcpy(pathtouser,""); sprintf(pathtohelp,"%shelp%c",pathtocalchep,f_slash); outputDir="results/"; { char * icon=(char *) malloc(strlen(pathtocalchep)+20); char title[30]; int err; sprintf(icon,"%s/include/icon",pathtocalchep); sprintf(title,"CalcHEP_%s/symb", VERSION); err=start1(title,icon,"calchep.ini",&xw_error); if(err && blind==0) { printf("Error:You have launched interactive session for version compiled without X11 library.\n"); printf(" Presumably X11 development package is not installed in your computer.\n"); printf(" In this case directory /usr/include/X11/ is empty.\n"); printf("Options: a) Use blind session; b) Update Linux and recompile CalcHEP \n"); printf("Name of needed package\n"); printf(" libX11-devel Fedora/Scientific Linux/CYGWIN/Darwin(MAC)\n"); printf(" libX11-dev Ubuntu/Debian\n"); printf(" xorg-x11-devel SUSE\n"); exit(66); } free(icon); } fillModelMenu(); f3_key[0]=f3_key_prog; f3_mess[0]="Model"; f3_key[1]=f4_key_prog; f3_mess[1]="Diagrams"; f3_key[2]=f5_key_prog; f3_mess[2]="Switches"; f3_key[3]=f6_key_prog; f3_mess[3]="Results"; f3_mess[4]="Del"; f3_mess[5]="UnDel"; f3_key[6]=f9_key_prog; f3_mess[6]="Ref"; f3_key[7]=f10_key_prog; f3_mess[7]="Quit"; restoreent(&menulevel); if(!blind && menulevel<2) cheplabel(); switch (menulevel) { case 10: case 6: case 5: case 4: case 3: readModelFiles("./models",n_model); modelinfo(); loadModel(0,forceUG); processinfo(); diagramsinfo(); k1=n_model; break; case 2: k1=n_model; readModelFiles("./models",n_model); break; } switch (menulevel) { case 2: menuhelp(); goto label_20; case 3: goto label_31; case 4: goto label_40; case 5: goto label_50; case 6: case 10: goto restart2; } label_10: /* Menu2(ModelMenu): */ f3_key[0]=NULL; /*models*/ f3_key[1]=NULL; /*diagrams*/ menulevel = 1; forceUG=0; menuhelp(); for(;;) { showheap(); k1=n_model; menu1(56,4,"",modelmenu,"s_1",&pscr1,&k1); if(k1 == 0) { if( mess_y_n(56,4,"Quit session")) {n_model=0; saveent(menulevel); goto exi; } } else if(k1 == maxmodel+1) { clrbox(1,4,55,18); makenewmodel(); menuhelp(); } else if (k1 > 0) { int err=0; put_text(&pscr1); if(k1!=n_model || ldModelStatus==0) { err=readModelFiles("./models",k1);} n_model=k1; if(err){ if(blind) sortie(133); else goto label_10;} else goto label_20; } } label_20: /* Menu3:Enter Process */ f3_key[0]=NULL; f3_key[1]=NULL; menulevel = 2; saveent(menulevel); modelinfo(); k2 = 1; do { char strmen[]="\026" " Enter Process " " Force Unit.Gauge= OFF" " Edit model " " Numerical Evaluation " "======================" " Delete model "; if(forceUG)improveStr(strmen,"OFF","ON"); menu1(56,4,"",strmen,"s_2_*",&pscr2,&k2); switch (k2) { case 0: goto_xy(1,1); clr_eol(); goto label_10; case 2: forceUG=!forceUG; modelinfo(); break; case 3: editModel(1); break; case 4: numcheck(); case 5: break; case 6: if(deletemodel(n_model)) { goto_xy(1,1); clr_eol(); n_model=1; ldModelStatus=0; fillModelMenu(); goto label_10; } } } while (k2 != 1); if(!loadModel(0,forceUG)) goto label_20; label_21: f3_key[0]=NULL; f3_key[1]=NULL; menulevel=2; checkAuxDir(n_model); errorcode=enter(); /* Enter a process */ newCodes=0; showheap(); if (errorcode) /* 'Esc' pressed */ { menuhelp(); goto label_20;} errorcode=construct(); /* unSquared diagrams */ if (errorcode) { if(blind) { printf("Processes of this type are absent\n"); sortie(111); } else { messanykey(5,22,"Processes of this type are absent"); clrbox(1,19,80,24); goto label_21; } } else if(!blind) { int dirStat=checkDir("results"); if(dirStat!=0) { messanykey( 10,10,"There are files in directory 'results/'.\n" "To continue you has to clean or rename this directory."); viewresults(); if(checkDir("results")!=0) goto label_21; } clr_scr(FGmain,BGmain); modelinfo(); processinfo(); diagramsinfo(); goto label_31; } label_30: /* Menu4: Squaring,...*/ clr_scr(FGmain,BGmain); modelinfo(); processinfo(); diagramsinfo(); label_31: f3_key[0]=f3_key_prog; f3_key[1]=NULL; menulevel=3; k3 = 1; do { menu1(56,4,"","\026" " View diagrams " /* " Amplitude calculation" */ " Square diagrams " " Write down processes ","s_squa_*",&pscr3,&k3); switch (k3) { case 0: clrbox(1,2,55,11); menuhelp(); goto label_20; case 1: viewfeyndiag(1); break; case 3: { FILE*f=fopen("results/list_prc.txt","w"); int k,ndel,ncalc,nrest; char process[100]; long recpos; menup=fopen(MENUP_NAME,"r"); for(k=1;;k++) { int err=rd_menu(1,k,process,&ndel,&ncalc,&nrest,&recpos); if(!err) break; trim(process); fprintf(f,"%s\n",process); } fclose(f); fclose(menup); messanykey(20,14,"See file 'results/list_prc.txt'"); } break; /* case 2: messanykey(10,10,"Not implemented yet"); Amplitudes(); */ } } while (k3 != 2); if (!squaring()) goto label_30; /* process is absent */ clear_tmp(); saveent(menulevel); restoreent(&menulevel); label_40: /* Menu5: View squared diagrams..... */ f3_key[0]=f3_key_prog; f3_key[1]=f4_key_prog; menulevel=4; clr_scr(FGmain,BGmain); modelinfo(); processinfo(); diagramsinfo(); sq_diagramsinfo(); /* ???????? */ k4=1; saveent(menulevel); pscr4=NULL; for(;;) { int res; menu1(56,4,"","\026" " View squared diagrams" " Symbolic calculations" " Make&Launch n_calchep" " Make n_calchep " " REDUCE program " ,"s_calc_*",&pscr4,&k4); res=checkDir("results"); if(res==1) { int n_calchep_id=setLockFile("results/.lock"); if(n_calchep_id) unLockFile(n_calchep_id); else res=2; } switch (k4) { case 0: if (mess_y_n(50,3,"Return to previous menu?"))goto label_30; break; case 1: viewsqdiagr(); break; case 2: /* Compute all diagrams */ restart2: f3_key[0]=f3_key_prog; f3_key[1]=f4_key_prog; menulevel=4; if(!nPROCSS ) calcallproc(); else { int *pids=malloc(sizeof(int)*nPROCSS); int *pipes=malloc(2*sizeof(int)*nPROCSS); int **qd=malloc(sizeof(int*)*nPROCSS); int totD=sqDiagList(qd, nPROCSS); int totC,nProc; int k; fflush(NULL); for(k=0;k<nPROCSS;k++) { int* kpipe=pipes+2*k; pipe(kpipe); pids[k]=fork(); if(pids[k]==0) { close(kpipe[0]); calcWithFork(k,qd[k],kpipe[1]); exit(0); } } for(k=0;k<nPROCSS;k++) close(pipes[2*k+1]); infoLine(0.); for(nProc=nPROCSS,totC=0;nProc;) { int one; int err; nProc=0; for(k=0;k<nPROCSS;k++) if(pids[k]) { if(waitpid(pids[k],NULL,WNOHANG)==0) { nProc++; if(read(pipes[2*k],&one,sizeof(int)))totC+=one; } else { for(;read(pipes[2*k],&one,sizeof(int))>0;) totC+=one; pids[k]=0; } } if(infoLine((double)totC/(double)totD)) for(k=0;k<nPROCSS;k++) if(pids[k]) kill(pids[k],SIGUSR1); } infoLine(2); for(k=0;k<nPROCSS;k++) { char ctlgName[100]; char command[200]; sprintf(ctlgName,"%s_%d",CATALOG_NAME,k); if(access(ctlgName,R_OK)==0) { sprintf(command," cat %s >> %s", ctlgName,CATALOG_NAME); system(command); unlink(ctlgName); } } if(totC) newCodes=1; updateMenuQ(); for(k=0;k<nPROCSS;k++) close(pipes[2*k]); free(pids); free(pipes); for(k=0;k<nPROCSS;k++) free(qd[k]); free(qd); } sq_diagramsinfo(); if(!continuetest()) break; showheap(); put_text(&pscr4); break; case 3: { static char keystr[12]="]{{[{"; if(res==2) messanykey(3,10,LOCKtxt); else inkeyString=keystr; } break; case 4: if(res==2) messanykey(3,10,LOCKtxt); else { char command[100]; saveent(menulevel); chdir("results"); makeVandP(0,"../models",n_model,2,pathtocalchep); finish(); sortie(22); } case 5: mk_reduceprograms(); break; } if(k4==2 && continuetest()) { put_text(&pscr4); break; } } label_50: k5=1; pscr5=NULL; menulevel=5; saveent(menulevel); sq_diagramsinfo(); for(;;) { int n_calchep_id; menu1(56,4,"","\026" " C code " " C-compiler " " Edit Linker " " REDUCE code " " MATHEMATICA code " " FORM code " " Enter new process " ,"s_out_*",&pscr5,&k5); if((k5==1||k5==2)&&pid) { int epid=waitpid(pid,NULL,WNOHANG); if(epid) pid=0; else { messanykey(3,10,"This option is frozen while n_calchep runs or is compiled"); continue; } } switch (k5) { case 0: goto label_40; break; case 1: c_prog(); newCodes=0; saveent(menulevel); break; case 2: if(newCodes) { c_prog(); newCodes=0; saveent(menulevel);} n_calchep_id=setLockFile("results/.lock"); if(n_calchep_id) { if(nPROCSS) { chdir("results"); makeVandP(0,"../models",n_model,2,pathtocalchep); pCompile(); if(access("./n_calchep",X_OK)==0) { fflush(NULL); pid=fork(); if(pid==0) { system("./n_calchep"); exit(0); } } else messanykey(15,15,"n_calchep is not generated"); chdir("../"); } else { fflush(NULL); pid=fork(); if(pid==0) { if(chdir("results")==0) { char*command=malloc(100+strlen(pathtocalchep)); makeVandP(0,"../models",n_model,2,pathtocalchep); sprintf(command,"xterm -e %s/sbin/make__n_calchep %d", pathtocalchep,n_model); system(command); free(command); system("./n_calchep"); } exit(0); } } unLockFile(n_calchep_id); } break; case 3: if(edittable(1,1,&modelTab[4],1," ",0)) { char fName[STRSIZ]; sprintf(fName,"%smodels%c%s%d.mdl",pathtouser,f_slash,mdFls[4],n_model); writetable( &modelTab[4],fName); } break; case 4: makeReduceOutput(); break; case 5: makeMathOutput(); break; case 6: makeFormOutput(); break; case 7: put_text(&pscr5); clrbox(1,2,55,11); menuhelp(); goto label_20; } } exi: finish(); sortie(0); return 0; }
static void xw_error(void) { sortie(80);}
int main(int argc,char** argv) { /*=================================== 0 - First start. 1 - Model menu. 2 - Enter process menu. 3 - Feynman diagrams menu; squaring. 4 - Squared diagram menu; symbolic calculation. 5 - Write results; new process. 10 -Restart symbolic calculations ==========================================================*/ /* 0-Start; 1-Restart; 2-Heap Error,3-Edit Model,4-UserBreak */ void *pscr1=NULL,*pscr2=NULL,*pscr3=NULL,*pscr4=NULL,*pscr5=NULL; int k1=1,k2=1,k3=1,k4=1,k5=1; int n; int pid=0; char LOCKtxt[]="Directory 'results/' contains the .lock file created by n_calchep.\n" "To continue you may a)Close the n_calchep session, or b)Rename 'results/',\n"; blind=0; strcpy(pathtocomphep,argv[0]); for(n=strlen(pathtocomphep)-1; n && pathtocomphep[n]!=f_slash; n--); pathtocomphep[n-3]=0; for ( n=1;n<argc;n++) { if (strcmp(argv[n],"-blind")==0 && n<argc-1 ) { blind=1; inkeyString=argv[++n]; } if (strcmp(argv[n],"+blind")==0 ) blind=2; } if(!writeLockFile(".lock")) { fprintf(stderr,"locked by other s_calchep. See .lock file\n"); exit(100); } strcpy(pathtouser,""); sprintf(pathtohelp,"%shelp%c",pathtocomphep,f_slash); outputDir="results/"; { char * icon=(char *) malloc(strlen(pathtocomphep)+10); int err; sprintf(icon,"%sicon",pathtocomphep); err=start1("CalcHEP/symb",icon,"calchep.ini",&xw_error); if(err && blind==0) { printf("Error:You have launched interactive session for version compiled without X11 library.\n"); printf("Options: a) Use blind session; b) Recompile CalcHEP with X11\n"); exit(66); } free(icon); } fillModelMenu(); f3_key[0]=f3_key_prog; f3_mess[0]="Model"; f3_key[1]=f4_key_prog; f3_mess[1]="Diagrams"; f3_key[2]=f5_key_prog; f3_mess[2]="Switches"; f3_key[3]=f6_key_prog; f3_mess[3]="Results"; f3_mess[4]="Del"; f3_mess[5]="UnDel"; f3_key[6]=f9_key_prog; f3_mess[6]="Ref"; f3_key[7]=f10_key_prog; f3_mess[7]="Quit"; restoreent(&menulevel); if(!blind && menulevel<2) cheplabel(); switch (menulevel) { case 10: case 6: case 5: case 4: case 3: readModelFiles("./models",n_model); modelinfo(); loadModel(0,forceUG); processinfo(); diagramsinfo(); case 2: k1=n_model; case 1: break; } switch (menulevel) { case 2: menuhelp(); goto label_20; case 3: goto label_31; case 4: goto label_40; case 5: goto label_50; case 6: case 10: goto restart2; } label_10: /* Menu2(ModelMenu): */ f3_key[0]=NULL; /*models*/ f3_key[1]=NULL; /*diagrams*/ menulevel = 1; forceUG=0; menuhelp(); for(;;) { showheap(); k1=n_model; menu1(56,4,"",modelmenu,"s_1",&pscr1,&k1); n_model=k1; if(n_model == 0) { if( mess_y_n(56,4,"Quit session")) { saveent(menulevel); goto exi; } } else if(n_model == maxmodel+1) { clrbox(1,4,55,18); makenewmodel(); menuhelp(); } else if (n_model > 0) { put_text(&pscr1); goto label_20; } } label_20: /* Menu3:Enter Process */ f3_key[0]=NULL; f3_key[1]=NULL; menulevel = 2; saveent(menulevel); readModelFiles("./models",n_model); modelinfo(); k2 = 1; do { char strmen[]="\026" " Enter Process " " Force Unit.Gauge OFF " " Edit model " " Delete model "; if(forceUG)improveStr(strmen,"OFF","ON"); menu1(56,4,"",strmen,"s_2_*",&pscr2,&k2); switch (k2) { case 0: goto_xy(1,1); clr_eol(); goto label_10; case 2: forceUG=!forceUG; modelinfo(); break; case 3: editModel(1); break; case 4: if ( deletemodel(n_model) ) { goto_xy(1,1); clr_eol(); n_model=1; fillModelMenu(); goto label_10; } else readModelFiles("./models",n_model); } } while (k2 != 1); loadModel(0,forceUG); label_21: f3_key[0]=NULL; f3_key[1]=NULL; menulevel=2; errorcode=enter(); /* Enter a process */ newCodes=0; showheap(); if (errorcode) /* 'Esc' pressed */ { menuhelp(); goto label_20;} errorcode=construct(); /* unSquared diagrams */ if (errorcode) { if(blind) { printf("Processes of this type are absent\n"); sortie(111); } else { messanykey(5,22,"Processes of this type are absent"); clrbox(1,19,80,24); goto label_21; } } else if(!blind) { int dirStat=checkDir("results"); if(dirStat!=0) { messanykey( 10,10,"There are files in directory 'results/'.\n" "To continue you has to clean or rename this directory."); viewresults(); if(checkDir("results")!=0) goto label_21; } clr_scr(FGmain,BGmain); modelinfo(); processinfo(); diagramsinfo(); goto label_31; } label_30: /* Menu4: Squaring,...*/ clr_scr(FGmain,BGmain); modelinfo(); processinfo(); diagramsinfo(); label_31: f3_key[0]=f3_key_prog; f3_key[1]=NULL; menulevel=3; k3 = 1; do { menu1(56,4,"","\026" " View diagrams " /* " Amplitude calculation" */ " Squaring technique " " Write down processes ","s_squa_*",&pscr3,&k3); switch (k3) { case 0: clrbox(1,2,55,11); menuhelp(); goto label_20; case 1: viewfeyndiag(1); break; case 3: { FILE*f=fopen("results/list_prc.txt","w"); int k,ndel,ncalc,nrest; char process[100]; long recpos; menup=fopen(MENUP_NAME,"r"); for(k=1;;k++) { int err=rd_menu(1,k,process,&ndel,&ncalc,&nrest,&recpos); if(!err) break; trim(process); fprintf(f,"%s\n",process); } fclose(f); fclose(menup); messanykey(20,14,"See file 'results/list_prc.txt'"); } break; /* case 2: messanykey(10,10,"Not implemented yet"); Amplitudes(); */ } } while (k3 != 2); if (!squaring()) goto label_30; /* process is absent */ clear_tmp(); saveent(menulevel); restoreent(&menulevel); label_40: /* Menu5: View squared diagrams..... */ f3_key[0]=f3_key_prog; f3_key[1]=f4_key_prog; menulevel=4; clr_scr(FGmain,BGmain); modelinfo(); processinfo(); diagramsinfo(); sq_diagramsinfo(); /* ???????? */ k4=1; saveent(menulevel); pscr4=NULL; for(;;) { int res; menu1(56,4,"","\026" " View squared diagrams" " Symbolic calculations" " Make&Launch n_calchep" " Make n_calchep " " REDUCE program " ,"s_calc_*",&pscr4,&k4); res=checkDir("results"); if(res==1) { int n_calchep_id=setLockFile("results/.lock"); if(n_calchep_id) unLockFile(n_calchep_id); else res=2; } switch (k4) { case 0: if (mess_y_n(50,3,"Return to previous menu?"))goto label_30; break; case 1: viewsqdiagr(); break; case 2: /* Compute all diagrams */ restart2: f3_key[0]=f3_key_prog; f3_key[1]=f4_key_prog; menulevel=4; calcallproc(); sq_diagramsinfo(); if(!continuetest()) break; showheap(); put_text(&pscr4); break; case 3: { static char keystr[12]="]{{[{"; if(res==2) messanykey(3,10,LOCKtxt); else inkeyString=keystr; } break; case 4: if(res==2) messanykey(3,10,LOCKtxt); else { char command[100]; FILE *f=fopen("results/EXTLIB","w"); fprintf(f,"EXTLIB=\"%s\"\nexport EXTLIB\n",EXTLIB); fclose(f); saveent(menulevel); { char command[100]; sprintf(command,"cd results; $CALCHEP/bin/make_VandP ../models %d",n_model); system(command); } finish(); sortie(22); } case 5: mk_reduceprograms(); break; } if(k4==2 && continuetest()) { put_text(&pscr4); break; } } label_50: k5=1; pscr5=NULL; menulevel=5; saveent(menulevel); for(;;) { int n_calchep_id; menu1(56,4,"","\026" " C code " " C-compiler " " Edit Linker " " REDUCE code " " MATHEMATICA code " " FORM code " " Enter new process " ,"s_out_*",&pscr5,&k5); if((k5==1||k5==2)&&pid) { int epid=waitpid(pid,NULL,WNOHANG); if(epid) pid=0; else { messanykey(3,10,"This option is frozen while n_calchep runs or is compiled"); continue; } } switch (k5) { case 0: goto label_40; break; case 1: c_prog(); newCodes=0; saveent(menulevel); break; case 2: if(newCodes) { c_prog(); newCodes=0; saveent(menulevel);} pid=fork(); if(pid==0) { char * command; n_calchep_id=setLockFile("results/.lock"); if(n_calchep_id) { command=(char*)malloc(strlen(pathtocomphep)+strlen(EXTLIB)+100); sprintf(command,"EXTLIB=\"%s\"\n" "export EXTLIB\n" "cd results\n" "xterm -e %s/make__n_calchep %d", EXTLIB,pathtocomphep,n_model); system(command); sprintf(command,"cd results; ./n_calchep"); unLockFile(n_calchep_id); system(command); free(command); } exit(0); } break; case 3: if(edittable(1,1,&modelTab[4],1," ",0)) { char fName[STRSIZ]; readEXTLIB(); sprintf(fName,"%smodels%c%s%d.mdl",pathtouser,f_slash,mdFls[4],n_model); writetable( &modelTab[4],fName); } break; case 4: makeReduceOutput(); break; case 5: makeMathOutput(); break; case 6: makeFormOutput(); break; case 7: put_text(&pscr5); clrbox(1,2,55,11); menuhelp(); goto label_20; } } exi: finish(); sortie(0); return 0; }
void menu0(int col,int row,char* label, char* menstr , void (**funcKey)(int) ,char** funcKeyMess, void ** hscr, int* kk) { int i, j, k, col1, npage,lastrow; long lastpage; int ink; int ncol; void * pscr; int fkPos[11]; int height; char fmt[20]; int lastLine; /* colors */ int label_fg =Yellow; int label_bg =Blue; int help_fg1 =White; int help_fg2 =Black; int help_bg =DarkGray; int box_fg =White; int box_bg =DarkGray; int star_fg =Red; int page_fg =Black; int actFunc_fg=Black; int actFunc_bg=White; int pasFunc_fg=White; int pasFunc_bg=DarkGray; /* save colors */ int fcolor_tmp=fColor; int bcolor_tmp=bColor; void *hscr_=NULL; if(hscr==NULL) hscr=&hscr_; lastLine=maxRow(); if (funcKey == NULL) for (i=0;i<11;i++) fkPos[i]=0; else { int xx; scrcolor(FGmain,BGmain); goto_xy(1,lastLine); clr_eol(); xx=0; for (j=0;j<10;j++) { if(funcKey[j] && funcKeyMess[j]) xx=xx+4+strlen(funcKeyMess[j]);} xx= (80 - xx )/2 ; goto_xy(xx,lastLine); for (i=0;i<10;i++) { fkPos[i]=where_x(); if (funcKey[i] && funcKeyMess[i]) { scrcolor(help_fg1,help_bg); print(" F%i-",i+1); scrcolor(help_fg2,help_bg); print(funcKeyMess[i]); } } fkPos[10]=where_x(); } clearTypeAhead(); if (*kk < 0) *kk = -(*kk); ncol=menstr[0]; sprintf(fmt,"%%%d.%ds",ncol,ncol); height=strlen(menstr)/ncol; if(height==0) { *kk=0; return; } if (row+height+1 >lastLine-2) height=lastLine-3-row; lastpage = 1+ (strlen(menstr)/ncol -1)/height ; if(label[0] ==0 || row == 1) { if (*hscr == NULL) get_text(col,row,col+ncol+1,row+2,hscr);} else { char label_[STRSIZ]; int shft,sz; if (*hscr == NULL) get_text(col,row-1,col+ncol+1,row+2,hscr); for(i=0;i<ncol+2;i++) label_[i]=' '; label_[ncol+2]=0; sz=strlen(label); if(sz >ncol+2) {shft=0;sz=ncol+2;} else shft=(ncol+2 -sz)/2; memcpy(label_+shft,label,sz); scrcolor(label_fg,label_bg); goto_xy(col,row-1); print(label_); } get_text(col,row + 3,col + ncol + 1,row + height + 1,&pscr); if (*kk <= 0 || *kk > lastpage * height ) { npage = 1; k = 1; } else { k = ((*kk) - 1) % height + 1; npage = ((*kk) - 1) / height + 1; } col1 = col + 1; label_1: scrcolor(box_fg,box_bg); chepbox(col,row,col + ncol + 1,row + height + 1); scrcolor(star_fg,box_bg); goto_xy(col+1,row); print("<"); /* goto_xy(col+1,row + height+1); print("?"); */ scrcolor(page_fg,box_bg); if (npage > 1) { goto_xy(col + ncol - 2,row); print("PgUp"); } if (npage < lastpage) { goto_xy(col + ncol - 2,row + height + 1); print("PgDn"); } if(npage<lastpage) lastrow=height; else lastrow = (strlen(menstr)/ncol)%height; lastrow=0; scrcolor(pasFunc_fg,pasFunc_bg); for (j = 1; j <= height; j++) { int shift; goto_xy(col + 1,row + j); shift=1+(j-1 + (npage-1)*height)*ncol; if(shift<strlen(menstr)) {print(fmt,menstr+shift );lastrow++;} else print(fmt," "); } scrcolor(actFunc_fg,actFunc_bg); if (k > lastrow) k = lastrow; goto_xy(col + 1,row + k); if (lastrow) print(fmt,menstr+1+(k-1+(npage-1)*height)*ncol); while (1) { int jump=1,mousePos; scrcolor(pasFunc_fg,pasFunc_bg); ink = inkey(); /* mouse filter */ if ((ink==KB_MOUSE)&&(mouse_info.but1 == 2)) { if (mouse_info.row == lastLine ) for(i=0; i<10;i++) if ((mouse_info.col > fkPos[i]) && (mouse_info.col < fkPos[i+1])) { if (i==9)ink='0'; else ink='1'+i;} if ( (mouse_info.col >= col ) && (mouse_info.col <=col+ncol+1) ) { mousePos = mouse_info.row - row; if (col+ncol+1-mouse_info.col <4) { if (mousePos==0) ink=KB_PAGEU; if (mousePos==height+1) ink=KB_PAGED; } if ((mousePos == 0 ) && ( mouse_info.col-col <4)) ink=KB_ESC; if ((mousePos < 0)&&(mousePos >= height)) { if (mousePos > k) {ink=KB_DOWN; jump=mousePos - k;} if (mousePos < k) {ink=KB_UP; jump=k - mousePos;} if (mousePos==k ) ink=KB_ENTER; } } } /* end of filter */ if (lastrow == 0) goto label_3; label_4: switch (ink) { case KB_MOUSE: if (mouse_info.but1 != 2) break; if (mouse_info.row == lastLine ) for(i=0; i<10;i++) if ((mouse_info.col > fkPos[i]) && (mouse_info.col < fkPos[i+1])) { if (i==9)ink='0'; else ink='1'+i; goto label_4; } if ( (mouse_info.col < col ) || (mouse_info.col >col+ncol+1) || (mouse_info.row < row ) || (mouse_info.row >row+height+1) ) break; mousePos = mouse_info.row - row; if ((mousePos == 0 ) && ( mouse_info.col-col <4)) ink=KB_ESC; if ((mousePos != 0)&&(mousePos != height+1)) { if (mousePos > k) { ink=KB_DOWN; jump=mousePos - k;} if (mousePos < k ) { ink=KB_UP; jump=k - mousePos;} } if (col+ncol+1-mouse_info.col <4) { if (mousePos==0) ink=KB_PAGEU; if (mousePos==height+1) ink=KB_PAGED; } if (mousePos==k ) ink=KB_ENTER; if (ink!=KB_MOUSE) goto label_4; break; case KB_DOWN: if(k==lastrow) { if(npage < lastpage) { k=1; npage++; goto label_1; } else { be_be(); break; } }else {ink= KB_RIGHT; goto label_4;} case KB_UP: if(k==1) { if (npage > 1) { k=height; npage--; goto label_1; } else{ be_be(); break; } } else {ink= KB_LEFT; goto label_4;} case KB_LEFT: goto_xy(col1,row + k); print(fmt,menstr+1+(k-1+(npage-1)*height)*ncol); k = k - jump; if (k == 0) k = lastrow; scrcolor(actFunc_fg,actFunc_bg); goto_xy(col1,row + k); print(fmt,menstr+1+(k-1+(npage-1)*height)*ncol); break; case KB_RIGHT: goto_xy(col1,row + k); print(fmt,menstr+1+(k-1+(npage-1)*height)*ncol); k = k + jump ; if(k > lastrow) k = 1; scrcolor(actFunc_fg,actFunc_bg); goto_xy(col1,row + k); print(fmt,menstr+1+(k-1+(npage-1)*height)*ncol); break; case KB_ENTER: scrcolor(box_fg,box_bg); chepbox(col,row,col+ncol+1,row+2); put_text(&pscr); goto_xy(col1,row + 1); scrcolor(actFunc_fg,actFunc_bg); print(fmt,menstr+1+(k-1+(npage-1)*height)*ncol); *kk = (npage - 1) * height + k; goto_xy(1,lastLine);scrcolor(FGmain,BGmain); clr_eol(); if(hscr==&hscr_) put_text(hscr); refresh_scr(); escpressed(); return; case KB_BACKSP: case KB_ESC: goto label_3; case KB_PAGEU: if (npage > 1) { npage--; goto label_1; } else be_be(); break; case KB_PAGED: if (npage < lastpage) { npage++; goto label_1; } else be_be(); break; case '1': case'2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '0': case KB_F1: case KB_F2: case KB_F3: case KB_F4: case KB_F5: case KB_F6: case KB_F7: case KB_F8: case KB_F9: case KB_F10: { int fk; if (funcKey==NULL) break; if ( ink>='0' && ink <='9') { fk=ink-'0';if (fk==0) fk=10;} else fk=ink-KB_F1+1; if ((funcKey[fk-1]) != NULL) { void * saveHlp; get_text(1,lastLine,maxCol(),lastLine,&saveHlp); scrcolor(box_fg,box_bg); goto_xy(col+1,row); print("%c",boxFrame[1]); goto_xy(1,lastLine);scrcolor(FGmain,BGmain);clr_eol(); (*funcKey[fk-1])((npage-1)*height+k); put_text(&saveHlp); scrcolor(star_fg,box_bg); goto_xy(col+1,row); print("<"); } break; } case 6: /* ^F */ case 'f': case 'F': { char name[32]=""; int key=correctStr(5,23,"Enter name(Esc for exit):",name,30,1); if(key) { char * x=strstr(menstr+1,name); if(x==NULL) { if(blind) sortie(121); else messanykey(10,10, "Not detected"); break; } k= ((x-menstr)-1)/menstr[0]; npage = k/ height + 1; k = k% height + 1; goto label_1; } } break; } } label_3: put_text(hscr); put_text(&pscr); scrcolor(fcolor_tmp,bcolor_tmp); goto_xy(1,lastLine); clr_eol(); *kk = 0; }
int viewresults(void) { int k,kmenu; void * pscr = NULL; shortstr newname; int dirStat=checkDir("results"); if(dirStat==0){messanykey(10,15,"directory RESULTS is empty"); return 1;} kmenu = 1; label_1: menu1(10,10,"","\010" " View " " Delete " " Rename ","s_res",&pscr,&kmenu); switch (kmenu) { case 0: return 0; case 1: viewDir("results"); break; case 2: if(dirStat==2) { char mess[]="Can not clean dir 'results' because it contains the LOCK file"; if(blind) { printf("%s\n",mess); sortie(102);} else { messanykey(3,13,mess); break;} } if ( mess_y_n( 6,13," Delete files ") ) system("rm -r results; mkdir results"); put_text(&pscr); return 1; case 3: strcpy(newname," "); while(1) { void * pscr3; get_text(1,maxRow(),maxCol(),maxRow(),&pscr3); goto_xy(1,maxRow()); print("Enter new name: "); k = str_redact(newname,1,30); if (k == KB_ESC) { goto_xy(1,24); clr_eol(); goto label_1; } if (k == KB_ENTER) { trim(newname); if(rename("results",newname)==0) { mkdir("results",-1); put_text(&pscr); put_text(&pscr3); return 1; } else messanykey(10,15," Can't rename the directory"); } put_text(&pscr3); } } goto label_1; }