/* * print integrals in the list */ static void print_integrals(MBLOCK *mblk, FILE *outfile) { INT1D_INFO *p1; p1 = mblk->int1dinf->next; while (p1 != NULL) { float ppm1, ppm2; ppm1 = psnd_calc_pos(p1->left, PAR->xref, PAR->aref, PAR->bref, DAT->irc, TRUE, AXIS_UNITS_PPM, DAT->isize, PAR->swhold, PAR->sfd, NULL, NULL); ppm2 = psnd_calc_pos(p1->right, PAR->xref, PAR->aref, PAR->bref, DAT->irc, TRUE, AXIS_UNITS_PPM, DAT->isize, PAR->swhold, PAR->sfd, NULL, NULL); if (outfile) fprintf(outfile," Range: %6d%6d, %.4f %.4f ppm. Area: %g\n", p1->left, p1->right,ppm1,ppm2, p1->sum); else psnd_printf(mblk," Range: %6d%6d, %.4f %.4f ppm. Area: %g\n", p1->left, p1->right,ppm1,ppm2, p1->sum); p1 = p1->next; } }
void psnd_lp(MBLOCK *mblk, PBLOCK *par) { int dum1 = 1; char string[100]; psnd_printf(mblk," Current T%d\n\n", par->icrdir); psnd_printf(mblk," Spec Freq.= %10.3f\n", par->sfd); psnd_printf(mblk," Spec Width = %10.3f\n", par->swhold); psnd_printf(mblk," Refer chan = %10.3f\n", par->xref); psnd_printf(mblk," Refer aref = %10.3f\n", par->aref); psnd_printf(mblk," Refer bref = %10.3f\n", par->bref); if (par->dspshift != 0.0) psnd_printf(mblk," DSP shift = %10.3f\n", par->dspshift); psnd_printf(mblk," PRE MODE = %15s\n", set_premode(par->ipre)); psnd_printf(mblk," R start-stop= %5d -%5d\n", par->irstrt, par->irstop); if (par->nlpc) { psnd_printf(mblk," LP lpc type = %15s\n", set_lpctype(par->lpc)); psnd_printf(mblk," LP mode = %15s\n", set_lpcmode(par->lpcmode)); psnd_printf(mblk," LP #poles = %5d\n", par->npoles); if (par->lpcmode != PREDICT_GAP) psnd_printf(mblk," LP size = %5d\n", par->nfut); psnd_printf(mblk," LP moveroots= %15s\n", set_lpcroots(par->mroot)); if (par->lpc == PREDICT_HSVD) { psnd_printf(mblk," LP replace = %15s\n", set_lpcreplace(par->replace)); psnd_printf(mblk," LP tolerance= %10.0g\n", par->toler); } if (par->lpcmode == PREDICT_GAP) psnd_printf(mblk," LP gap st-sp= %5d -%5d\n", par->ngap1, par->ngap2); psnd_printf(mblk," LPstart-stop= %5d -%5d\n", par->nstart, par->nstop); } psnd_printf(mblk," Window = %15s\n", set_windowmode(par->iwindo)); if (par->iwindo != NOWIN) { if (par->iwindo == SNWIN || par->iwindo == SQWIN || par->iwindo == KSWIN) psnd_printf(mblk," Shift = %10.3f\n", par->rsh); if (par->iwindo == EMWIN || par->iwindo == CDWIN || par->iwindo == GMWIN) psnd_printf(mblk," Line Broad = %10.3f\n", par->rlb); if (par->iwindo == GMWIN) psnd_printf(mblk," Gauss Broad = %10.3f\n", par->gn); if (par->iwindo == TMWIN) psnd_printf(mblk," Trapzium Wdw= %5d\n", par->itm); psnd_printf(mblk," W start-stop= %5d -%5d\n", par->iwstrt, par->iwstop); } if (par->watwa) { psnd_printf(mblk," Watwa shape = Cos^%d\n", par->iopt); psnd_printf(mblk," Watwa width = %10.0f\n", par->kc); psnd_printf(mblk," Watwa shift = %10.2f\n", par->wshift); } if (par->ifft != NOFFT) { psnd_printf(mblk," FFT MODE = %15s\n", set_ftmode(par->ifft)); psnd_printf(mblk," Zero Fill = %2d\n", par->nzf); if (par->ftscale != 0.0 && par->ftscale != 1.0) psnd_printf(mblk," Scale 1st = %.2f\n", par->ftscale); } if (par->hilbert) psnd_printf(mblk," %15s\n", set_hilberttr(par->hilbert)); if (par->iphase != NOPHA) { psnd_printf(mblk," PHASE = %15s\n", set_fasemode(par->iphase)); if (par->iphase == DOPHA) { psnd_printf(mblk," 0 ord phase = %10.3f\n", par->ahold); psnd_printf(mblk," 1 ord phase = %10.3f\n", par->bhold); psnd_printf(mblk," I0 phase pnt= %5d\n", par->ihold); } } if (premode[par->irever] == NOREV) psnd_printf(mblk," %15s\n", set_revmode(par->irever)); if (par->ibase != NOBAS) { psnd_printf(mblk," BASEL. TYPE = %15s\n", set_baselnmode(par->ibase)); if (par->iterms2) { psnd_printf(mblk," L poly terms= %5d\n", par->iterms2); psnd_printf(mblk," H poly terms= %5d\n", par->iterms); } else psnd_printf(mblk," # poly terms= %5d\n", par->iterms); psnd_printf(mblk," B start-stop= %5d -%5d\n", par->ibstrt, par->ibstop); } if (par->waterfit) { psnd_printf(mblk," Waterfit pos= %5d\n", par->waterpos); psnd_printf(mblk," Waterfit wid= %5d\n", par->waterwid); } psnd_printf(mblk," STORE MODE = %15s\n", set_postmode(par->ipost)); /* psnd_printf(mblk," OUTFILE MODE= %15s\n", set_outmode(par->ifilut)); */ psnd_printf(mblk," S start-stop= %5d -%5d\n", par->isstrt, par->isstop); }
/* * Integrate peaks */ void psnd_integrate1d(MBLOCK *mblk, float x1, float x2) { int i; int i1 = round(x1); int i2 = round(x2); int lim1 = min(i1, i2); int lim2 = max(i1, i2); int xmin, xmax; float sum0, sum1, sum, ymin, ymax, yrange,xx; char *label; POPUP_INFO *popinf = mblk->popinf + POP_INT1D; lim1 = max(1, lim1); lim2 = max(1, lim2); lim1 = min(DAT->isize, lim1); lim2 = min(DAT->isize, lim2); mblk->int1dinf->left = min(lim1,lim2); mblk->int1dinf->right = max(lim1,lim2); update_labels(mblk); lim1 = mblk->int1dinf->left; lim2 = mblk->int1dinf->right; /* * ... determine integral over visible area (and min and max) */ for (i=0,sum0=0;i<DAT->isize;i++) sum0 += DAT->xreal[i]; if (sum0 == 0) sum0 = 1; /* * * ... determine integral over selected area (and min and max) * ... and draw the intensity lines * */ g_append_object(mblk->spar[S_REAL].obj_id); g_set_foreground(mblk->spar[S_REAL].color); for (i=lim1,sum=0,xmin=lim1,xmax=lim1;i<=lim2;i++) { sum += DAT->xreal[i-1]; g_moveto((float) i, DAT->xreal[i-1]); g_lineto((float) i, 0.0); } /* * * ... calc integral * */ g_set_foreground(mblk->spar[S_REAL].color3); minmax(DAT->xreal,DAT->isize,&(DAT->ylimit[0]),&(DAT->ylimit[1])); sum1=0; yrange = (DAT->ylimit[1] - DAT->ylimit[0])/ sum0; for (i=lim1;i<lim2;i++) { sum1 += yrange * DAT->xreal[i-1]; DAT->work1[i-1] = sum1; } /* * Try to move integral on top of peak */ xx=DAT->ylimit[0]; for (i=lim1;i<lim2;i++) { if (xx < (DAT->xreal[i-1]-DAT->work1[i-1])) xx = DAT->xreal[i-1]-DAT->work1[i-1]; } /* * But not outside window */ if (DAT->work1[lim2-2]+xx>DAT->ylimit[1]) xx -= -DAT->ylimit[1] + (DAT->work1[lim2-2] + xx); xx += (DAT->ylimit[1] - DAT->ylimit[0])/100; for (i=lim1;i<lim2;i++) { DAT->work1[i-1] += xx; } /* * Draw integral */ g_moveto((float) lim1, DAT->work1[lim1-1]); for (i=lim1;i<lim2;i++) { g_lineto((float)i, DAT->work1[i-1]); } /* * Print label */ g_moveto((float) lim1, DAT->work1[lim1-1]+(DAT->work1[lim2-2]-DAT->work1[lim1-1])/2); label = psnd_sprintf_temp("%.2e", sum); /* g_set_motif_realtextrotation(1); g_set_textdirection(90);*/ g_label(label); /* g_set_textdirection(0);*/ g_set_foreground(mblk->spar[S_REAL].color); g_close_object(mblk->spar[S_REAL].obj_id); g_plotall(); /* g_set_motif_realtext rotation(0);*/ mblk->int1dinf->sum = sum; if (popinf->visible) add_integral(mblk); psnd_printf(mblk," Range: %6d%6d Area: %g\n", lim1, lim2, sum); }
/* c c..... aim: lists parameters from parms c..... iunit integer : fortran io unit c..... string character*(*) : string to be printed above parameters c..... parms real array of iopt*ntnpar elements c..... : parmeter array c..... iopt == [0,1,2,3,4] : iopt=0 : main parameters c..... iopt>0 : iopt times ntnpar parameters c..... skip non-relevant parameters if iopt=1 c..... ntnpar integer : number of tn parameters c */ static void parmes(MBLOCK *mblk, int iunit, char *string, float *parms, PBLOCK *dpar, int iopt, int alldata) { int i; OLD3D_PAR_RECORD *tpr; psnd_printf(mblk," %s\n",string); if (iopt == 0) { if (parms) { tpr = (OLD3D_PAR_RECORD*) parms; psnd_printf(mblk," AQ dir = %10d\n", tpr->iaqdir); psnd_printf(mblk," Nextproc dir= %10d\n", tpr->next_dir); } } else { /* *.......spectral frequency (domain) */ psnd_printf(mblk," Spec Freq.="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f", (dpar+i)->sfd); psnd_printf(mblk,"\n"); /* *.......spectral width */ psnd_printf(mblk," Spec Width ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f", (dpar+i)->swhold); psnd_printf(mblk,"\n"); /* *.......reference channel */ psnd_printf(mblk," Refer chan ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f", (dpar+i)->xref); psnd_printf(mblk,"\n"); /* *.......reference aref */ psnd_printf(mblk," Refer aref ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f", (dpar+i)->aref); psnd_printf(mblk,"\n"); /* *.......reference aref */ psnd_printf(mblk," Refer bref ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f", (dpar+i)->bref); psnd_printf(mblk,"\n"); /* *.......dsp shift */ psnd_printf(mblk," DSP shift ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f", (dpar+i)->dspshift); psnd_printf(mblk,"\n"); /* *.......pre process mode */ psnd_printf(mblk," PRE MODE ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_premode((dpar+i)->ipre)); psnd_printf(mblk,"\n"); psnd_printf(mblk," R start-stop="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d -%5d", (dpar+i)->irstrt, (dpar+i)->irstop); psnd_printf(mblk,"\n"); /* * Linear prediction */ if (alldata || dpar->nlpc) { psnd_printf(mblk," LP lpc type ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_lpctype((dpar+i)->lpc)); psnd_printf(mblk,"\n"); psnd_printf(mblk," LP mode ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_lpcmode((dpar+i)->lpcmode)); psnd_printf(mblk,"\n"); psnd_printf(mblk," LP #poles ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d", (dpar+i)->npoles); psnd_printf(mblk,"\n"); psnd_printf(mblk," LP size ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d", (dpar+i)->nfut); psnd_printf(mblk,"\n"); psnd_printf(mblk," LP moveroots="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_lpcroots((dpar+i)->mroot)); psnd_printf(mblk,"\n"); psnd_printf(mblk," LP replace ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_lpcreplace((dpar+i)->replace)); psnd_printf(mblk,"\n"); psnd_printf(mblk," LP tolerance="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.0g", (dpar+i)->toler); psnd_printf(mblk,"\n"); psnd_printf(mblk," LP gap st-sp="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d -%5d", (dpar+i)->ngap1, (dpar+i)->ngap2); psnd_printf(mblk,"\n"); psnd_printf(mblk," LPstart-stop="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d -%5d", (dpar+i)->nstart, (dpar+i)->nstop); psnd_printf(mblk,"\n"); } /* *.......windows */ if (iopt == 1) { int i=0,iwindo = abs((dpar)->iwindo); if (iwindo != NOWIN) { psnd_printf(mblk," Window = %15s\n", set_windowmode((dpar+i)->iwindo)); if (iwindo == SNWIN || iwindo == SQWIN || iwindo == KSWIN) { psnd_printf(mblk," Shift = %10.3f\n", (dpar+i)->rsh); } if (iwindo == EMWIN || iwindo == CDWIN || iwindo == GMWIN) { psnd_printf(mblk," Line Broad = %10.3f\n", (dpar+i)->rlb); } if (iwindo == GMWIN) { psnd_printf(mblk," Gauss Broad = %10.3f\n", (dpar+i)->gn); } if (iwindo == TMWIN) { psnd_printf(mblk," Trapzium Wdw= %5d\n", (dpar+i)->itm); } psnd_printf(mblk," W start-stop= %5d -%5d\n", (dpar+i)->iwstrt, (dpar+i)->iwstop); } } else { psnd_printf(mblk," Window ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_windowmode((dpar+i)->iwindo)); psnd_printf(mblk,"\n"); psnd_printf(mblk," Shift ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f", (dpar+i)->rsh); psnd_printf(mblk,"\n"); psnd_printf(mblk," Line Broad ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f", (dpar+i)->rlb); psnd_printf(mblk,"\n"); psnd_printf(mblk," Gauss Broad ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f", (dpar+i)->gn); psnd_printf(mblk,"\n"); psnd_printf(mblk," Trapzium Wdw="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d", (dpar+i)->itm); psnd_printf(mblk,"\n"); psnd_printf(mblk," W start-stop="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d -%5d", (dpar+i)->iwstrt, (dpar+i)->iwstop); psnd_printf(mblk,"\n"); } /* * Water Wash */ if (alldata || dpar->watwa) { psnd_printf(mblk," Watwa shape ="); for (i=0;i<iopt;i++) psnd_printf(mblk," Cos^%d", (dpar+i)->iopt); psnd_printf(mblk,"\n"); psnd_printf(mblk," Watwa width ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.0f", (dpar+i)->kc); psnd_printf(mblk,"\n"); psnd_printf(mblk," Watwa shift ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.2f", (dpar+i)->wshift); psnd_printf(mblk,"\n"); } /* *.......fft */ if (alldata || abs((dpar)->ifft) != NOFFT) { psnd_printf(mblk," FFT MODE ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_ftmode((dpar+i)->ifft)); psnd_printf(mblk,"\n"); psnd_printf(mblk," Zero Fill ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %2d", (dpar+i)->nzf); psnd_printf(mblk,"\n"); psnd_printf(mblk," Scale 1st ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %.2f", (dpar+i)->ftscale); psnd_printf(mblk,"\n"); } /* * Hilbert transform */ if (alldata || (dpar)->hilbert) { psnd_printf(mblk," "); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_hilberttr((dpar+i)->hilbert)); psnd_printf(mblk,"\n"); } /* *.......phase */ if (alldata || abs((dpar)->iphase) != NOPHA) { psnd_printf(mblk," PHASE ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_fasemode(abs((dpar+i)->iphase))); psnd_printf(mblk,"\n"); if (abs((dpar)->iphase) == DOPHA) { psnd_printf(mblk," 0 ord phase ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f",(dpar+i)->ahold); psnd_printf(mblk,"\n"); psnd_printf(mblk," 1 ord phase ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %10.3f", (dpar+i)->bhold); psnd_printf(mblk,"\n"); psnd_printf(mblk," I0 phase pnt="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d", (dpar+i)->ihold); psnd_printf(mblk,"\n"); } } /* *......reversing */ if (alldata || abs((dpar)->irever) != NOREV) { psnd_printf(mblk," "); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_revmode((dpar+i)->irever)); psnd_printf(mblk,"\n"); } /* *.......baseline */ if (alldata || abs((dpar)->ibase) != NOBAS) { psnd_printf(mblk," BASEL. TYPE ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_baselnmode((dpar+i)->ibase)); psnd_printf(mblk,"\n"); psnd_printf(mblk," L poly terms="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d", (dpar+i)->iterms2); psnd_printf(mblk,"\n"); psnd_printf(mblk," H poly terms="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d", (dpar+i)->iterms); psnd_printf(mblk,"\n"); psnd_printf(mblk," B start-stop="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d -%5d", (dpar+i)->ibstrt, (dpar+i)->ibstop); psnd_printf(mblk,"\n"); } /* * Water fit */ if (alldata || (dpar)->waterfit) { psnd_printf(mblk," Waterfit pos="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d", (dpar+i)->waterpos); psnd_printf(mblk,"\n"); psnd_printf(mblk," Waterfit wid="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d", (dpar+i)->waterwid); psnd_printf(mblk,"\n"); } /* *.......post process modes */ psnd_printf(mblk," STORE MODE ="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_postmode((dpar+i)->ipost)); psnd_printf(mblk,"\n"); /* *.......files */ /* psnd_printf(mblk," OUTFILE MODE="); for (i=0;i<iopt;i++) psnd_printf(mblk," %15s", set_outmode((dpar+i)->ifilut)); psnd_printf(mblk,"\n"); */ psnd_printf(mblk," S start-stop="); for (i=0;i<iopt;i++) psnd_printf(mblk," %5d -%5d", (dpar+i)->isstrt, (dpar+i)->isstop); psnd_printf(mblk,"\n"); } }