Exemplo n.º 1
0
/*
 * 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;
    }
}
Exemplo n.º 2
0
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);

}
Exemplo n.º 3
0
/*
* 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);
}
Exemplo n.º 4
0
/*
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");
    }

}