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; }
static void zeroHeep(void) { goto_xy(1,1);print("Heep is empty!!!");inkey(); sortie(70); }
void armboard::LCD::goto_x( unsigned char x ){ goto_xy( x, _clcd_y ); }
extern void dispatcher(Queue* in, Queue* out, pthread_mutex_t *mutex){ pthread_mutex_lock(mutex); if (!is_empty(in)){ uint8_t packet_length = queue_head(in); if (in->count >= packet_length){ uint8_t count = dequeue(in); t_command command = dequeue(in); printf ("%s receive packet with command %i\n", KNRM, command); switch (command){ case INIT: init(in); acknowledge(out); break; case SET_DIAM_WHEELS: set_diam_wheels(in); acknowledge(out); break; case SET_WHEELS_SPACING: set_wheels_spacing(in); acknowledge(out); break; case SET_PID_TRSL: set_pid_trsl(in); acknowledge(out); break; case SET_PID_ROT: set_pid_rot(in); acknowledge(out); break; case SET_TRSL_ACC: set_trsl_acc(in); acknowledge(out); break; case SET_TRSL_DEC: set_trsl_dec(in); acknowledge(out); break; case SET_TRSL_MAXSPEED: set_trsl_max(in); acknowledge(out); break; case SET_ROT_ACC: set_rot_acc(in); acknowledge(out); break; case SET_ROT_DEC: set_rot_dec(in); acknowledge(out); break; case SET_ROT_MAXSPEED: set_rot_max(in); acknowledge(out); break; case SET_DELTA_MAX_ROT: set_delta_max_rot(in); acknowledge(out); break; case SET_DELTA_MAX_TRSL: set_delta_max_trsl(in); acknowledge(out); break; case SET_PWM: set_pwm(in); acknowledge(out); break; case SET_X: set_x(in); acknowledge(out); break; case SET_Y: set_y(in); acknowledge(out); break; case SET_THETA: set_theta(in); acknowledge(out); break; case TELEMETRY: set_telemetry(in); acknowledge(out); break; case SET_DEBUG: set_debug(in); acknowledge(out); break; case GOTO_XY: goto_xy(in); acknowledge(out); break; case GOTO_THETA: goto_theta(in); acknowledge(out); break; case FREE: execute_free(in); acknowledge(out); break; case STOP_ASAP: stop_asap(in); acknowledge(out); break; case MOVE_TRSL: move_trsl(in); acknowledge(out); break; case MOVE_ROT: move_rot(in); acknowledge(out); break; case RECALAGE: execute_recalage(in); acknowledge(out); break; case CURVE: curve(in); acknowledge(out); break; case GET_POSITION: getPosition(out); break; case GET_PID_TRSL: getPIDtrsl(out); break; case GET_PID_ROT: getPIDRot(out); break; case GET_SPEEDS: getSpeed(out); break; case GET_WHEELS: getWheels(out); break; case GET_DELTA_MAX: getDeltaMax(out); break; case GET_VECTOR_TRSL: getVectorTrsl (out); break; case GET_VECTOR_ROT: getVectorRot (out); break; default: printf ("/!\\ command error: %i\n", command); send_error(out, COULD_NOT_READ); break; } } } pthread_mutex_unlock(mutex); }
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; }
void main() { int i, j; directvideo = 0; for(;;) { clrscr(); goto_xy(0, 0); textcolor( BLACK ); textbackground( RED ); switch( popup( main_menu, "fdhx", 4,5, 16, BORDER )) { case 0: clrscr(); switch( popup( sub_menu1, "spcdx", 5, 5, 16, BORDER )) { case 0: clrscr(); goto_xy( 24, 20 ); cprintf("你选择了文件显示功能"); getch(); break; case 1: clrscr(); goto_xy( 24, 20 ); cprintf("你选择了文件打印功能"); getch(); break; case 2: clrscr(); goto_xy( 24, 20 ); cprintf("你选择了文件拷贝功能"); getch(); break; case 3: clrscr(); goto_xy(24,20); cprintf("你选择了文件删除功能"); getch(); break; case 4: break; default: break; } break; case 1: clrscr(); switch( popup( sub_menu2, "brx", 3, 5, 16, BORDER )) { case 0: clrscr(); goto_xy(24,20); cprintf("你选择了BOOT区备份功能"); getch(); break; case 1: clrscr(); goto_xy(24,20); cprintf("你选择了BOOT区恢复功能"); getch(); break; case 2: break; default: break; } break; case 2: clrscr(); switch( popup( sub_menu3, "of", 3, 5, 16, BORDER )) { case 0: clrscr(); goto_xy( 24, 20 ); cprintf("你选择了打印图形功能"); getch(); break; case 1: clrscr(); goto_xy(24,20); cprintf("你选择了打印文本功能"); getch(); break; case 2: break; default: break; } break; case 3: case -1: return 0; default: break; } } }
/* Send the page to the printer. */ static int fmlbp_print_page(gx_device_printer *pdev, FILE *prn_stream) { int line_size = gdev_mem_bytes_per_scan_line((gx_device *)pdev); #ifdef FMLBP_NOPAPERSIZE char data[LINE_SIZE*2]; #else byte *data = (byte *)gs_malloc(gs_lib_ctx_get_non_gc_memory_t(), 1, line_size, "fmlpr_print_page(data)"); if(data == NULL) return_error(gs_error_VMerror); #endif/*FMLBP_NOPAPERSIZE*/ /* initialize */ fwrite(can_inits, sizeof(can_inits), 1, prn_stream); fprintf(prn_stream, "%c%c%d!I", PU1, 0); /* 100% */ #ifndef OLD_FMLBP_400DPI fprintf(prn_stream, "%c%c%d!A", PU1, (int)(pdev->x_pixels_per_inch)); /* 240dpi or 400dpi */ #endif/*!OLD_FMLBP_400DPI*/ #ifndef FMLBP_NOPAPERSIZE fprintf(prn_stream, "%c%c%s!F", PU1, gdev_fmlbp_paper_size(pdev)); /* Paper size */ #endif/*!FMLBP_NOPAPERSIZE*/ /* Send each scan line in turn */ { int lnum; byte rmask = (byte)(0xff << (-pdev->width & 7)); for ( lnum = 0; lnum < pdev->height; lnum++ ) { byte *end_data = data + line_size; int s = gdev_prn_copy_scan_lines(pdev, lnum, (byte *)data, line_size); if(s < 0) return_error(s); /* Mask off 1-bits beyond the line width. */ end_data[-1] &= rmask; /* Remove trailing 0s. */ while ( end_data > data && end_data[-1] == 0 ) end_data--; if ( end_data != data ) { int num_cols = 0; int out_count = 0; byte *out_data = data; while(out_data < end_data && *out_data == 0) { num_cols += 8; out_data++; } out_count = end_data - out_data; /* move down */ /* move across */ goto_xy(prn_stream, num_cols, lnum); /* transfer raster graphics */ fprintf(prn_stream, "%c%c%d;%d;0!a", PU1, out_count, out_count*8 ); /* send the row */ fwrite(out_data, sizeof(byte), out_count, prn_stream); } } } /* eject page */ fputc(0x0c,prn_stream); fflush(prn_stream); #ifndef FMLBP_NOPAPERSIZE gs_free(gs_lib_ctx_get_non_gc_memory_t(), (char *)data, line_size, sizeof(byte), "fmlbp_print_page(data)"); #endif/*!FMLBP_NOPAPERSIZE*/ return 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; }
static void prtcllist(int key) { char fullname[STRSIZ]; char hlp[60]; char p1[60], p2[60]; int i, j, pnum; linelist ln; int tabMax,tabSz; static int nTot,nFirst; tabMax=ycons -7; if (key==0) { scrcolor(FGmain,BGmain); for (i = 2; i <= 24; i++) { goto_xy(1,i); clr_eol(); } goto_xy(14,3); scrcolor(Blue,BGmain); print("List of particles (antiparticles)"); nTot=0; nFirst=1; } else { if (nTot <= 3 *tabMax ) return; switch (key) { case KB_DOWN : nFirst+=3; break; case KB_UP : nFirst-=3; break; case KB_PAGED: nFirst +=3*tabMax; break; case KB_PAGEU: nFirst -=3*tabMax; break; } if (nFirst <1) nFirst=1; if (nTot-nFirst+3<3*tabMax ) nFirst=1+3*((nTot+2)/3) -3*tabMax; clrbox(1,4,79,5+tabMax); } goto_xy(3,5); scrcolor(FGmain,BGmain); for(i=0,ln=prtcls_tab.strings; ln; ln=ln->next ) { sscanf(ln->line,"%[^|]%*c%[^|]%*c%[^|]%*c%*[^|]%*c%*[^|]%*c%*[^|]%*c%*[^|]%*c%*[^|]%*c%[^|]", fullname,p1,p2,hlp); trim(p1); locateinbase(p1,&pnum); trim(hlp); if (prtclbase[pnum-1].top != NULL && strcmp(hlp,"*") != 0) { i++; if (i>=nFirst && (i-nFirst)/3 <tabMax ) { print("%s",p1); if (strcmp(p1,p2) == 0) print(" "); else print("(%s)",p2); trim(fullname); print("- %s",fullname); j = i % 3; if (j == 0) goto_xy(3,where_y() + 1); else goto_xy(3 + 26 * j,where_y()); } } } nTot=i; tabSz=MIN((nTot+2)/3,tabMax); chepbox(1,4,79,5+tabSz); if (nFirst >1 ) { goto_xy(72,4); print("PgUp"); } if (nFirst+3*tabSz <= nTot ) { goto_xy(72,5+tabMax); print("PgDn"); } scrcolor(FGmain,BGmain); }
void clear_scr(void) { goto_xy(0, 0); puts("\033[2J"); goto_xy(0, 0); }
int enter(void) { int i, y0,scat; int redres; char ** items=NULL; char * errpos=NULL; char * arrpos=NULL; int curh=0; prtcllist(0); scrcolor(Red,BGmain); y0 = ycons; errTxt=NULL; label_1: if(y0<maxRow()) y0++; for(;y0>ycons;y0--){goto_xy(1,y0); clr_eol();} if(arrpos) strncpy(arrpos,"->",2); redres=input(y0,"s_ent_1", "Enter process: ",processch,errpos?errpos-processch+1:1,SSTRLEN); switch (redres) { case KB_F1: /* Help */ show_help("s_ent_1"); goto label_1; case KB_ESC: clrbox(1,2,maxCol(),24); return 1; } /* Case */ arrpos=strstr(processch,"->"); if(arrpos) strncpy(arrpos,", ",2); else { errTxt="'->' is absent "; goto label_1; } if( strchr(processch,',')<arrpos ) scat=1; else scat=0; if(items) free(items); items=stritems(" ,",processch); for(i=0,nin=0,nout=0,n_x=0,curh=0; items[i]; i++) { char name[100]; sscanf(items[i],"%[^, ]", name); if(strlen(name)>7) {errTxt="Too long name"; break;} if(strlen(name)==0){errTxt="Empty item"; break;} if(items[i]>arrpos && strlen(name) == 3 && name[1] == '*' && (name[2] == 'X' || name[2] == 'x') && isdigit(name[0])) {n_x += name[0]-'0'; nout +=name[0]-'0';} else { if(curh==MAXINOUT-1){errTxt="Too many particles"; break;} if(items[i]>arrpos) nout++; else nin++; if(nin>2){errTxt="Too many incoming particles"; break;} if(enter_h(&y0,name,curh,scat)) break; curh++; } } errpos=items[i]; free(items); items=NULL; if(errpos && !errTxt) { sprintf(err_Txt,"wrong definition of %d-th particle",i+1); errTxt=err_Txt; } if(errTxt) goto label_1; if(nout<2) { errTxt="The number of outgoing particles should exceed 1"; goto label_1; } if(nin<1) { errTxt="Incoming particle(s) is not defined"; goto label_1; } if(errpos||nin+nout>MAXINOUT) {if(!errTxt) errTxt=errtxt; goto label_1; } y0++; if(y0>=maxRow()-1) {y0=maxRow()-1; goto_xy(1,y0); clr_eol();} if(restrict_p(y0,1, "Exclude diagrams with ","s_ent_4",limpch,liminsp) ) goto label_1; for(nilprtcl(LimQ), i=0;i<liminsp[i].who;i++) if(liminsp[i].how <0) { liminsp[i].how =-liminsp[i].how; addlim(LimQ,liminsp[i].who,liminsp[i].how,0); } y0++; if(y0>=maxRow()-1) {y0=maxRow()-1; goto_xy(1,y0); clr_eol();} if(n_x && restrict_p(y0,0,"Exclude X-particles ","s_ent_5",deloutch,limout) ) goto label_1; for(i=nin+nout;i<MAXINOUT;i++) hadrons[i].name[0]=0; strncpy(arrpos,"->",2); return 0; }
static int enter_h(int * y,char* name,int num,int scat) { int i,m,j=0; int redres; shortstr hadrch; char ** items; char * errpos=NULL; locateinbase(name,&j); if(j) { if(pseudop(j)) return -1; strcpy(hadrons[num].name,name); strcpy(hadrons[num].contents,name); hadrons[num].parton[0] = j; hadrons[num].pow = 1; if(!scat && num==0 && strcmp(prtclbase1[j].massidnt,"0")==0) { errTxt="Decay of massless particle."; return -1; } if(name[strlen(name)-1]=='%') { if( !scat || nout||strcmp(prtclbase1[j].massidnt,"0") || (prtclbase1[j].spin!=1 && prtclbase1[j].spin!=2) || strchr("LR",prtclbase1[j].hlp) ) { errTxt="This particle can not be polarized"; return -1; } else hadrons[num].polarized[0]=1; } else hadrons[num].polarized[0]=0; return 0; } for(i=0;i<num;i++) if(!strcmp(hadrons[i].name,name)) { strcpy(hadrons[num].name,name); strcpy(hadrons[num].contents,hadrons[i].contents); hadrons[num].pow=hadrons[i].pow; for(j=0;j<hadrons[num].pow;j++) { hadrons[num].parton[j]=hadrons[i].parton[j]; if(nout) hadrons[num].polarized[j]=0; else hadrons[num].polarized[j]=hadrons[i].polarized[j]; } return 0; } hadrch[0]=0; for(i=num;i<MAXINOUT;i++) if(!strcmp(hadrons[i].name,name)) { strcpy(hadrch,hadrons[i].contents); break; } if(*y>=maxRow()-1) { goto_xy(1,*y); clr_eol();} else (*y)++; do { m=errpos? errpos-hadrch+1: 0; do { char direction[100]; sprintf(direction,"composit '%s' consists of: ",name); redres=input(*y, "s_ent_2", direction, hadrch, m , SSTRLEN); if(redres==KB_ESC) return 1; } while (redres!=KB_ENTER && redres!=KB_ESC); if (redres == KB_ESC || strcmp(hadrch,"") == 0) return 1; items=stritems(" ,",hadrch); for(m=0,hadrons[num].pow=0; items[m]; m++) { char name[100]; if(hadrons[num].pow>=100) {errTxt="too many partons";break;} sscanf(items[m],"%[^ ,]",name); locateinbase(name,&j); if (j==0 || pseudop(j)) { errTxt= "This particle is absent in the model"; break;} if(!scat && num==0 && strcmp(prtclbase1[j].massidnt,"0")==0) { errTxt="Decay of massless particle."; break; } if(name[strlen(name)-1]=='%') { if( !scat || nout||strcmp(prtclbase1[j].massidnt,"0") || (prtclbase1[j].spin!=1 && prtclbase1[j].spin!=2) || strchr("LR",prtclbase1[j].hlp) ) { errTxt="This particle can not be polarized"; break; } else hadrons[num].polarized[hadrons[num].pow]=1; } else hadrons[num].polarized[hadrons[num].pow]=0; hadrons[num].parton[hadrons[num].pow++]=j; } errpos=items[m]; if(!errpos) { for(i=0;i<hadrons[num].pow;i++) for(j=i+1;j<hadrons[num].pow;j++) if(hadrons[num].parton[i]==hadrons[num].parton[j]) { errpos=items[j]; errTxt="duplicate parton"; } } strcpy(hadrons[num].name,name); strcpy(hadrons[num].contents,hadrch); free(items); } while(errpos); return 0; }
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); }
static void clearstatistic(void) {int i; for (i = 17; i < 24; i++) { goto_xy(1,i); clr_eol();} }
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); } } for(i=0; i<n;i++) free(namelist[i]); 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; }
void cheplabel(void) { int key; char fname[STRSIZ]; FILE *f; while(1) { { int X=20,Y=1; scrcolor(FGmain,BGmain); goto_xy(X,Y); print("Skobeltsyn Institute of Nuclear Physics,"); goto_xy(X+8,Y+1); print("Moscow State University."); } { int Y=5; scrcolor(Blue,LightGray); goto_xy(7,Y); print("CalcHEP - a package for Calculation in High Energy Physics"); scrcolor(FGmain,BGmain); goto_xy(15,Y+1); print("Version 2.4.4; Last correction August 23,2006"); } { int Y=7; scrcolor(FGmain,BGmain); goto_xy(3,Y+2);print(" Author of the package:"); scrcolor(Blue,LightGray); print(" Alexander Pukhov"); scrcolor(FGmain,BGmain); goto_xy(14,Y+3);print("For contacts:"); scrcolor(Blue,LightGray); goto_xy(28,Y+3);print("email: <*****@*****.**>"); goto_xy(28,Y+4);print("http://theory.sinp.msu.ru/~pukhov/calchep.html"); goto_xy(28,Y+5);print("http://www.ifh.de/~pukhov/calchep.html"); } { int Y=14; scrcolor(FGmain,BGmain); goto_xy(5,Y);print("The package contains codes written by:"); scrcolor(Blue,LightGray); goto_xy(10,Y+1); scrcolor(Blue,LightGray); print("M.Donckt,V.Edneral,V.Ilyin,D.Kovalenko,A.Kryukov,G.Lepage,A.Semenov"); /* print("G.Belanger,F.Boudjema,A.Djouadi,V.Edneral,V.Ilyin,J.-L.Kneur,"); goto_xy(10,Y+2); print("A.Kryukov,G.Lepage,G.Moultaka,A.Semenov"); */ } { int Y=17; scrcolor(FGmain,BGmain); goto_xy(5,Y);print("The BS models for CalcHEP were developed in collaboration with:"); scrcolor(Blue,LightGray); goto_xy(10,Y+1); scrcolor(Blue,LightGray); print("G.Belanger,A.Belyaev,F.Boudjema,A.Semenov"); } { int X1=19, X2=61, Y1=21, Y2=Y1+2; scrcolor(FGmain,BGmain); goto_xy(X1+2,Y1-1); print("Press F9 or click the box below to get"); scrcolor(Blue,LightGray); chepbox(X1,Y1,X2,Y2); goto_xy(X1+3,Y1+1); print("References and Contributions "); /* goto_xy(X1+3,Y1+2); print(" and relative information. "); */ scrcolor(FGmain,BGmain); goto_xy(3,Y2+1); print("This information is available during the session by means of the F9 key"); clearTypeAhead(); key= inkey(); if(key==KB_F9 || ( key==KB_MOUSE && mouse_info.row>=Y1 && mouse_info.row<=Y2 && mouse_info.col >=X1 && mouse_info.col<=X2 ) ) { sprintf(fname,"%s%cCITE",pathtocomphep,f_slash); f=fopen(fname,"r"); showtext (1, 1, 80,1,"",f); fclose(f); break; } if(key !=KB_MOUSE) break; } } clr_scr(FGmain,BGmain); }
int qcdmen_(void) { void * pscr=NULL; int mode; int returnCode=0; initStrFun(0); L10:{ char strmen[]="\030" " parton dist. alpha OFF " " alpha(MZ)= ZZZZ " " nf = NF " " order= NNLO " " mb(mb)= MbMb " " Mtop(pole)= Mtp " " Alpha(Q) plot " " Qren = RRR " " Qpdf1= FF1 " " Qpdf2= FF2 " " Qshow= FFS "; if(alphaPDF) { int k=0; //printf("alphaPDF=%d sf_alpha[0]=%p sf_alpha[1]=%p\n", alphaPDF,sf_alpha[0],sf_alpha[1]); switch(alphaPDF) { case 1: if(sf_alpha[0]) k=1; else if(sf_alpha[1]) k=2; break; case 2: if(sf_alpha[1]) k=2; else if(sf_alpha[0]) k=1; break; } if(k) improveStr(strmen,"OFF","pdf%d",k); } improveStr(strmen,"ZZZZ","%.4f", alphaMZ); improveStr(strmen,"NF","%d",alphaNF); if(alphaOrder==1) improveStr(strmen,"NNLO","%-.4s","LO"); else if(alphaOrder==2) improveStr(strmen,"NNLO","%-.4s","NLO"); else alphaOrder=3; improveStr(strmen,"MbMb","%.3f", MbMb); improveStr(strmen,"Mtp","%.2f", Mtp); improveStr(strmen,"RRR","%-.16s", Rscale_str); improveStr(strmen,"FF1","%-.16s", F1scale_str); improveStr(strmen,"FF2","%-.16s", F2scale_str); improveStr(strmen,"FFS","%-.16s", Sscale_str); menu1(54,8,"QCD alpha",strmen,"n_alpha",&pscr,&mode); } switch (mode) { case 0: if(returnCode) init_alpha(); return returnCode; case 1: { char alphaMen[100]="\006" " OFF " " pdf1 " " pdf2 "; int k=0; menu1(54,12,"alpha",alphaMen,"",NULL,&k); if(k)alphaPDF=k-1; if(alphaPDF && !sf_alpha[alphaPDF-1]) messanykey(20,20,"WARNING! This pdf does not define alphaQCD "); } break; case 2: { double alphaMZ_old=alphaMZ; if(correctDouble(3,15,"Enter new value ",&alphaMZ,1)) returnCode=1; if(alphaMZ>0 && alphaMZ<0.3) returnCode=1; else { alphaMZ=alphaMZ_old; messanykey(5,15,"Your input is out of alphaMZ range"); } } break; case 3: { int NF_old=alphaNF; if(correctInt(3,15,"Enter new value ",&alphaNF,1)) { if(alphaNF<=6 && alphaNF>=3) returnCode=1; else { messanykey(5,15,"NF out of range"); alphaNF=NF_old;} } } break; case 4: { char lomen[]="\010" " LO " " NLO " " NNLO "; void *pscrlo=NULL; int k=0; menu1(52,12,"",lomen,"",&pscrlo,&k); if(k) { alphaOrder=k; returnCode=1; put_text(&pscrlo);} } break; case 5: correctDouble(3,15,"Enter new value ",&MbMb,1); break; case 6: correctDouble(3,15,"Enter new value ",&Mtp,1); break; case 7: { void * screen; int i; static double qMin=1, qMax=1000; static int nPoints=100; if(returnCode) init_alpha(); get_text(1,1,maxCol(),maxRow(),&screen); if(correctDouble(40 ,15 ,"Q_min=",&qMin,0)&& qMin>=0.5 && correctDouble(40 ,16 ,"Q_max=",&qMax,0)&& qMax>qMin && correctInt(33,17,"number of points=" ,&nPoints,0) && nPoints>3&& nPoints<=150) { double *f[3]={NULL,NULL,NULL}; double *ff[3]={NULL,NULL,NULL}; char buff[3][100]; char* Y[3]={buff[0],buff[1],buff[2]}; switch(alphaOrder) { case 1: sprintf(Y[0],"MSbar LO"); break; case 2: sprintf(Y[0],"MSbar NLO"); break; case 3: sprintf(Y[0],"MSbar NNLO"); break; default:sprintf(Y[0],"MSbar"); } int N,k; f[0]=(double*) malloc(nPoints*sizeof(double)); int xLog= (qMin>0 && qMax/qMin >10)? 1 : 0; for(i=0;i<nPoints;i++) { double z=(i+0.5)/(double)(nPoints),q; if(xLog) q=pow(qMin,1-z)*pow(qMax,z); else q=qMin*(1-z)+qMax*z; f[0][i]=alpha_0(q); // printf("i=%d %E\n",i,f[0][i]); } N=1; for(k=0;k<2;k++) if(sf_alpha[k]) { char buff[300]; strFunName(k+1,Y[N]); char *p=strstr(Y[N],"(proton"); if(p) p[0]=0; else { p=strstr(Y[N],"(anti-proton"); if(p) p[0]=0; } f[N]=(double*) malloc(nPoints*sizeof(double)); for(i=0;i<nPoints;i++) { double z=(i+0.5)/(double)(nPoints),q; if(xLog) q=pow(qMin,1-z)*pow(qMax,z); else q=qMin*(1-z)+qMax*z; f[N][i]=(*sf_alpha[k])(q); } N++; } int dim[3]; for(i=0;i<N;i++) dim[i]=nPoints; // printf("N=%d Y[0]=%s\n Y[1]=%s\n Y[2]=%s\n", N,Y[0],Y[1],Y[2]); // plot_Nar(NULL, "Alpha(Q)", log10(qMin), log10(qMax),"log10(Q/GeV)", nPoints, N, f,ff,Y); plot_Nar(NULL, "Alpha(Q)", qMin,qMax,"Q/GeV", xLog, N, dim,f,ff,Y); for(k=0;k<N;k++) free(f[k]); } else messanykey(40,18, " Correct input is \n" " 0.5<= Q_min <Q_max\n" " number of points <=150 and >=4"); put_text(&screen); } break; case 8: { int npos=1,rc; do { char mess[200]; goto_xy(2,12); print("Renorm. scale: "); if(str_redact(Rscale_str,npos,60)==KB_ENTER) returnCode=1; goto_xy(2,12); clr_eol(); rc=initScales(Rscale_str,F1scale_str,F2scale_str,Sscale_str, mess); if(rc) messanykey(10,10,mess); } while(rc); } break; case 9: { int npos=1,rc; do { char mess[200]; goto_xy(2,12); print("Fct1.scale: "); if(str_redact(F1scale_str,npos,60)==KB_ENTER) returnCode=1; goto_xy(2,12); clr_eol(); rc=initScales(Rscale_str,F1scale_str,F2scale_str,Sscale_str, mess); if(rc) messanykey(10,10,mess); } while(rc); } break; case 10: { int npos=1,rc; do { char mess[200]; goto_xy(2,12); print("Fct1.scale: "); if(str_redact(F2scale_str,npos,60)==KB_ENTER) returnCode=1; goto_xy(2,12); clr_eol(); rc=initScales(Rscale_str,F1scale_str,F2scale_str,Sscale_str, mess); if(rc) messanykey(10,10,mess); } while(rc); } break; case 11: { int npos=1,rc; do { char mess[200]; goto_xy(2,12); print("Shworing scale: "); if(str_redact(Sscale_str,npos,60)==KB_ENTER) returnCode=1; goto_xy(2,12); clr_eol(); rc=initScales(Rscale_str,F1scale_str,F2scale_str,Sscale_str,mess); if(rc) messanykey(10,10,mess); } while(rc); } break; } goto L10; }