/* hbook.h */ /* Burkhard Burow, University of Toronto, 1991. */ #ifndef __HBOOK_LOADED #define __HBOOK_LOADED 1 #include "cfortran.h" /* HBOOK Version 4. User Guide of October 28, 1987. */ /* Some internal routines, not in the guide, are given at the end. */ /* The variables of the following routines are DOUBLEV on all machines, except on the CRAY where they are FLOATV. Note that this implies C programmers 7.3.1.1 a) HFITL : P do not need to change their routines 7.3.1.1 b) HFITS : P when moving code to/from the CRAY. 7.3.1.2 HFITN : P [As long as these variables are 7.3.1.2 HFIT1 : P declared double[] in C, since 7.3.1.3 HDERI1: PAR, DER float==double on the CRAY.] 7.3.1.3 HDERI2: PAR, DER 7.3.1.3 HDERIN: PAR, DER 7.4.1 HPARAM: COEFF 7.4.2 HPARMN: COEFF */ /* Chapter 2 FUNDAMENTALS */ /* 2.1 Booking */ #define HBOOK1(ID,CHTITLE,NX,XMI,XMA,VMX) \ CCALLSFSUB6(HBOOK1,hbook1,INT,STRING,INT,FLOAT,FLOAT,FLOAT, \ ID,CHTITLE,NX,XMI,XMA,VMX) #define HBOOK2(ID,CHTITLE,NX,XMI,XMA,NY,YMI,YMA,VMX) \ CCALLSFSUB9(HBOOK2,hbook2,INT,STRING,INT,FLOAT,FLOAT,INT,FLOAT,FLOAT,FLOAT, \ ID,CHTITLE,NX,XMI,XMA,NY,YMI,YMA,VMX) #define HBOOKN(ID,CHTITLE,NVAR,CHRZPA,NPRIME,TAGS) \ CCALLSFSUB6(HBOOKN,hbookn,INT,STRING,INT,STRING,INT,STRINGV, \ ID,CHTITLE,NVAR,CHRZPA,NPRIME,TAGS) /* 2.2 Filling */ #define HFILL(ID,X,Y,WEIGHT) \ CCALLSFSUB4(HFILL,hfill,INT,FLOAT,FLOAT,FLOAT, ID,X,Y,WEIGHT) #define HFN(ID,X) CCALLSFSUB2(HFN,hfn,INT,FLOATV, ID,X) /* 2.3 Editing */ #define HISTDO() CCALLSFSUB0(HISTDO,histdo) #define HPRINT(ID) CCALLSFSUB1(HPRINT,hprint,INT, ID) /* 2.? Tables. Don't know where the doc. is other than the code. */ #define HTABLE(ID2,CHTITLE,NNX,XX0,XX1,NNY,YY0,YY1,VALMAX) \ CCALLSFSUB9(HTABLE,htable,INT,STRING,INT,FLOAT,FLOAT,INT,FLOAT,FLOAT,FLOAT, \ ID2,CHTITLE,NNX,XX0,XX1,NNY,YY0,YY1,VALMAX) /* Chapter 3 MORE ON BOOKING */ /* 3.1 Histograms with non-equidistant bins */ #define HBOOKB(ID,CHTITL,NCX,XBINS,VMX) \ CCALLSFSUB5(HBOOKB,hbookb,INT,STRING,INT,FLOATV,FLOAT, ID,CHTITL,NCX,XBINS,VMX) /* 3.2 Profile histograms */ #define HBPROF(ID,CHTITLE,NCX,XLO,XUP,YMIN,YMAX,CHOPT) \ CCALLSFSUB8(HBPROF,hbprof,INT,STRING,INT,FLOAT,FLOAT,FLOAT,FLOAT,STRING, \ ID,CHTITLE,NCX,XLO,XUP,YMIN,YMAX,CHOPT) /* 3.3 Rounding */ #define HBINSZ(YES_OR_NO) CCALLSFSUB1(HBINSZ,hbinsz,STRING, YES_OR_NO) /* 3.4 Projections, Slices, Bands */ #define HBPRO(ID,VMX) CCALLSFSUB2(HBPRO,hbpro,INT,FLOAT, ID,VMX) #define HBPROX(ID,VMX) CCALLSFSUB2(HBPROX,hbprox,INT,FLOAT, ID,VMX) #define HBPROY(ID,VMX) CCALLSFSUB2(HBPROY,hbproy,INT,FLOAT, ID,VMX) #define HBANDX(ID,YMI,YMA,VMX) \ CCALLSFSUB4(HBANDX,hbandx,INT,FLOAT,FLOAT,FLOAT, ID,YMI,YMA,VMX) #define HBANDY(ID,XMI,XMA,VMX) \ CCALLSFSUB4(HBANDY,hbandy,INT,FLOAT,FLOAT,FLOAT, ID,XMI,XMA,VMX) #define HBSLIX(ID,NSLI,VMX) CCALLSFSUB3(HBSLIX,hbslix,INT,INT,FLOAT, ID,NSLI,VMX) #define HBSLIY(ID,NSLI,VMX) CCALLSFSUB3(HBSLIY,hbsliy,INT,INT,FLOAT, ID,NSLI,VMX) /* 3.5 Statistics */ #define HBARX(ID) CCALLSFSUB1(HBARX,hbarx,INT, ID) #define HBARY(ID) CCALLSFSUB1(HBARY,hbary,INT, ID) /* 3.6 Copy, Reset and Delete */ #define HCOPY(ID1,ID2,CHTITL) CCALLSFSUB3(HCOPY,hcopy,INT,INT,STRING, ID1,ID2,CHTITL) #define HRESET(ID,CHTITL) CCALLSFSUB2(HRESET,hreset,INT,STRING, ID,CHTITL) #define HDELET(ID) CCALLSFSUB1(HDELET,hdelet,INT, ID) /* 3.7 Function Representation */ #define HBFUN1(ID,CHTITLE,NX,XMI,XMA,FUN) \ CCALLSFSUB6(HBFUN1,hbfun1,INT,STRING,INT,FLOAT,FLOAT,PVOID, \ ID,CHTITLE,NX,XMI,XMA,FUN) #define HBFUN2(ID,CHTITLE,NX,XMI,XMA,NY,YMI,YMA,FUN) \ CCALLSFSUB9(HBFUN2,hbfun2,INT,STRING,INT,FLOAT,FLOAT,INT,FLOAT,FLOAT,PVOID, \ ID,CHTITLE,NX,XMI,XMA,NY,YMI,YMA,FUN) #define HFUNC(ID,FUN) CCALLSFSUB2(HFUNC,hfunc,INT,PVOID, ID,FUN) #define HARRAY(ID,NWORDS,LOC) CCALLSFSUB3(HARRAY,harray,INT,INT,PINT, ID,NWORDS,LOC) /* Chapter 4 FILLING OPTIONS */ /* 4.1 Fast Filling Entries */ #define HF1(ID,X,WEIGHT) CCALLSFSUB3(HF1,hf1,INT,FLOAT,FLOAT, ID,X,WEIGHT) #define HF2(ID,X,Y,WEIGHT) \ CCALLSFSUB4(HF2,hf2,INT,FLOAT,FLOAT,FLOAT, ID,X,Y,WEIGHT) #define HFF1(ID,NID,X,W) CCALLSFSUB4(HFF1,hff1,INT,PINT,FLOAT,FLOAT, ID,NID,X,W) #define HFF2(ID,NID,X,Y,W) \ CCALLSFSUB5(HFF2,hff2,INT,PINT,FLOAT,FLOAT,FLOAT, ID,NID,X,Y,W) #define HFPAK1(ID,NID,V,N) CCALLSFSUB4(HFPAK1,hfpak1,INT,PINT,FLOATV,INT, ID,NID,V,N) #define HIPAK1(ID,NID,IV,N) CCALLSFSUB4(HIPAK1,hipak1,INT,PINT,INTV,INT, ID,NID,IV,N) /* 4.2 Global Filling */ #define HPAK(ID,CONTEN) CCALLSFSUB2(HPAK,hpak,INT,FLOATV, ID,CONTEN) #define HPAKE(ID,ERRORS) CCALLSFSUB2(HPAKE,hpake,INT,FLOATV, ID,ERRORS) /* Chapter % EDITING */ /* 5.1 Index and General Title */ #define HINDEX() CCALLSFSUB0(HINDEX,hindex) #define HTITLE(CHGTIT) CCALLSFSUB1(HTITLE,htitle,STRING, CHGTIT) /* 5.3 Graphic Choices (1-dimensional histogram) */ #define HPCHAR(IOPT,ICHA) CCALLSFSUB2(HPCHAR,hpchar,STRING,STRING, IOPT,ICHA) #define HBIGBI(ID,NCOL) CCALLSFSUB2(HBIGBI,hbigbi,INT,INT, ID,NCOL) /* 5.4 Scale Definition and Normalization */ #define HMAXIM(ID,CMAX) CCALLSFSUB2(HMAXIM,hmaxim,INT,FLOAT, ID,CMAX) #define HMINIM(ID,CMIN) CCALLSFSUB2(HMINIM,hminim,INT,FLOAT, ID,CMIN) #define HCOMPA(IDVECT,N) CCALLSFSUB2(HCOMPA,hcompa,INTV,INT, IDVECT,N) #define HNORMA(ID,XNORM) CCALLSFSUB2(HNORMA,hnorma,INT,FLOAT, ID,XNORM) #define HSCALE(ID,FACTOR) CCALLSFSUB2(HSCALE,hscale,INT,FLOAT, ID,FACTOR) /* 5.5 Page Control */ #define HSQUEZ(YES_OR_NO) CCALLSFSUB1(HSQUEZ,hsquez,STRING, YES_OR_NO) #define HPAGSZ(NLINES) CCALLSFSUB1(HPAGSZ,hpagsz,INT, NLINES) /* 5.6 Selective Editing */ #define HPHIST(ID,CHOICE,NUM) CCALLSFSUB3(HPHIST,hphist,INT,STRING,INT, ID,CHOICE,NUM) #define HPROT(ID,CHOICE,NUM) CCALLSFSUB3(HPROT,hprot,INT,STRING,INT, ID,CHOICE,NUM) #define HPSCAT(ID) CCALLSFSUB1(HPSCAT,hpscat,INT, ID) #define HPTAB(ID) CCALLSFSUB1(HPTAB,hptab,INT, ID) #define HPHS(ID) CCALLSFSUB1(HPHS,hphs,INT, ID) #define HPHST(ID) CCALLSFSUB1(HPHST,hphst,INT, ID) /* 5.7 Printing after System Error Recovery */ #define HPONCE() CCALLSFSUB0(HPONCE,hponce) /* Chapter 6 ACCESS TO INFORMATION */ /* 6.1 Testing if a histogram exists in memory */ PROTOCCALLSFFUN1(INT,HEXIST,hexist,INT) #define HEXIST(ID) CCALLSFFUN1(HEXIST,hexist,INT,ID) /* 6.2 List of histograms */ #define HID1(IDVECT,N) CCALLSFSUB2(HID1,hid1,INTV,PINT, IDVECT,N) #define HID2(IDVECT,N) CCALLSFSUB2(HID2,hid2,INTV,PINT, IDVECT,N) #define HIDALL(IDVECT,N) CCALLSFSUB2(HIDALL,hidall,INTV,PINT, IDVECT,N) /* 6.3 Number of Entries */ #define HNOENT(ID,NOENT) CCALLSFSUB2(HNOENT,hnoent,INT,PINT, ID,NOENT) /* 6.4 Contents */ #define HUNPAK(ID,CONTEN,CHOICE,NUM) \ CCALLSFSUB4(HUNPAK,hunpak,INT,FLOATV,STRING,INT, ID,CONTEN,CHOICE,NUM) PROTOCCALLSFFUN2(FLOAT,HI,hi,INT,INT) #define HI(ID,I) CCALLSFFUN2(HI,hi,INT,INT, ID,I) PROTOCCALLSFFUN3(FLOAT,HIJ,hij,INT,INT,INT) #define HIJ(ID,I,J) CCALLSFFUN3(HIJ,hij,INT,INT,INT, ID,I,J) PROTOCCALLSFFUN2(FLOAT,HX,hx,INT,FLOAT) #define HX(ID,X) CCALLSFFUN2(HX,hx,INT,FLOAT, ID,X) PROTOCCALLSFFUN3(FLOAT,HXY,hxy,INT,FLOAT,FLOAT) #define HXY(ID,X,Y) CCALLSFFUN3(HXY,hxy,INT,FLOAT,FLOAT, ID,X,Y) /* 6.5 Errors */ PROTOCCALLSFFUN2(FLOAT,HIE,hie,INT,INT) #define HIE(ID,I) CCALLSFFUN2(HIE,hie,INT,INT, ID,I) PROTOCCALLSFFUN2(FLOAT,HXE,hxe,INT,FLOAT) #define HXE(ID,X) CCALLSFFUN2(HXE,hxe,INT,FLOAT, ID,X) /* 6.6 Associated function */ PROTOCCALLSFFUN2(FLOAT,HIF,hif,INT,INT) #define HIF(ID,I) CCALLSFFUN2(HIF,hif,INT,INT, ID,I) /* 6.7 Abscissa to channel number */ #define HXI(ID,X,I) CCALLSFSUB3(HXI,hxi,INT,FLOAT,PINT, ID,X,I) #define HXYIJ(ID,X,Y,I,J) \ CCALLSFSUB5(HXYIJ,hxyij,INT,FLOAT,FLOAT,PINT,PINT, ID,X,Y,I,J) #define HIX(ID,I,X) CCALLSFSUB3(HIX,hix,INT,INT,PFLOAT, ID,I,X) #define HIJXY(ID,I,J,X,Y) \ CCALLSFSUB5(HIJXY,hijxy,INT,INT,INT,PFLOAT,PFLOAT, ID,I,J,X,Y) /* 6.8 Maximum and Minimum */ PROTOCCALLSFFUN1(FLOAT,HMAX,hmax,INT) #define HMAX(ID) CCALLSFFUN1(HMAX,hmax,INT, ID) PROTOCCALLSFFUN1(FLOAT,HMIN,hmin,INT) #define HMIN(ID) CCALLSFFUN1(HMIN,hmin,INT, ID) /* 6.9 Integrated contents */ PROTOCCALLSFFUN1(FLOAT,HSUM,hsum,INT) #define HSUM(ID) CCALLSFFUN1(HSUM,hsum,INT, ID) /* 6.10 Rebinning */ #define HREBIN(ID,X,Y,EX,EY,N,IFIRST,ILAST) \ CCALLSFSUB8(HREBIN,hrebin,INT,FLOATV,FLOATV,FLOATV,FLOATV,INT,INT,INT, \ ID,X,Y,EX,EY,N,IFIRST,ILAST) /* 6.11 Histogram address and definnition */ #define HLOCAT(ID,LOC) CCALLSFSUB2(HLOCAT,hlocat,INT,PINT, ID,LOC) #define HGIVE(ID,CHTITL,NX,XMI,XMA,NY,YMI,YMA,NWT,LOC) \ CCALLSFSUB10(HGIVE,hgive,INT,PSTRING,PINT,PFLOAT,PFLOAT,PINT,PFLOAT,PFLOAT,PINT,PINT,\ ID,CHTITL,NX,XMI,XMA,NY,YMI,YMA,NWT,LOC) #define HDUMP(ID) CCALLSFSUB1(HDUMP,hdump,INT, ID) /* 6.12 Statistics */ PROTOCCALLSFFUN4(FLOAT,HSTATI,hstati,INT,INT,STRING,INT) #define HSTATI(ID,ICASE,CHOICE,NUM) \ CCALLSFFUN4(HSTATI,hstati,INT,INT,STRING,INT, ID,ICASE,CHOICE,NUM) /* Chapter 7 OPERATIONS ON HISTOGRAMS, FITTINGS */ /* 7.1 Arithmetic */ #define HOPERA(ID1, CHOPERA, ID2, ID3, C1, C2) \ CCALLSFSUB6(HOPERA,hopera,INT,STRING,INT,INT,FLOAT,FLOAT, \ ID1, CHOPERA, ID2, ID3, C1, C2) /* 7.2 Statistical differences between histograms */ #define HDIFF(ID1,ID2,PROB,CHOPT) \ CCALLSFSUB4(HDIFF,hdiff,INT,INT,PFLOAT,STRING, ID1,ID2,PROB,CHOPT) /* 7.3 Fitting */ /* 7.3.1 Fitting with HBOOK */ /* 7.3.1.1 Histograms */ /* a) Long version */ #ifndef CRAY #define HFITL(ID,FUN,NP,P,CHI2,IC,SIG,COV,ST,PMI,PMA) \ CCALLSFSUB11(HFITL,hfitl,INT,PVOID,INT,DOUBLEV,PFLOAT,INT,FLOATV,FLOATV,FLOATV,FLOATV,FLOATV,\ ID,FUN,NP,P,CHI2,IC,SIG,COV,ST,PMI,PMA) #else #define HFITL(ID,FUN,NP,P,CHI2,IC,SIG,COV,ST,PMI,PMA) \ CCALLSFSUB11(HFITL,hfitl,INT,PVOID,INT,FLOATV,PFLOAT,INT,FLOATV,FLOATV,FLOATV,FLOATV,FLOATV,\ ID,FUN,NP,P,CHI2,IC,SIG,COV,ST,PMI,PMA) #endif /* b) Short version */ #ifndef CRAY #define HFITS(ID,FUN,NP,P,CHI2,IC,SIG) \ CCALLSFSUB7(HFITS,hfits,INT,PVOID,INT,DOUBLEV,PFLOAT,INT,FLOATV,\ ID,FUN,NP,P,CHI2,IC,SIG) #else #define HFITS(ID,FUN,NP,P,CHI2,IC,SIG) \ CCALLSFSUB7(HFITS,hfits,INT,PVOID,INT,FLOATV,PFLOAT,INT,FLOATV,\ ID,FUN,NP,P,CHI2,IC,SIG) #endif /* 7.3.1.2 Non-equidistant points in a multi-dimensional space */ #ifndef CRAY #define HFITN(X,Y,EY,NPTS,N1,NVAR,FUN,NP,P,CHI2,IC,SIG,COV,ST,PMI,PMA) \ CCALLSFSUB16(HFITN,hfitn,FLOATVV,FLOATV,FLOATV,INT,INT,INT,PVOID,INT,DOUBLEV,PFLOAT,INT,FLOATV,FLOATV,FLOATV,FLOATV,FLOATV,\ X,Y,EY,NPTS,N1,NVAR,FUN,NP,P,CHI2,IC,SIG,COV,ST,PMI,PMA) #define HFIT1(X,Y,EY,N,FUN,NP,P,CHI2,IC,SIG) \ CCALLSFSUB10(HFIT1,hfit1,FLOATV,FLOATV,FLOATV,INT,PVOID,INT,DOUBLEV,PFLOAT,INT,FLOATV,\ X,Y,EY,N,FUN,NP,P,CHI2,IC,SIG) #else #include "hfitn_cray.h" /* We have to generate this >15 arg. routine elsewhere for the CRAY. Note the change of DOUBLEV to FLOATV. #define HFITN(X,Y,EY,NPTS,N1,NVAR,FUN,NP,P,CHI2,IC,SIG,COV,ST,PMI,PMA) \ CCALLSFSUB16(HFITN,hfitn,FLOATVV,FLOATV,FLOATV,INT,INT,INT,PVOID,INT,FLOATV,PFLOAT,INT,FLOATV,FLOATV,FLOATV,FLOATV,FLOATV,\ X,Y,EY,NPTS,N1,NVAR,FUN,NP,P,CHI2,IC,SIG,COV,ST,PMI,PMA) */ #define HFIT1(X,Y,EY,N,FUN,NP,P,CHI2,IC,SIG) \ CCALLSFSUB10(HFIT1,hfit1,FLOATV,FLOATV,FLOATV,INT,PVOID,INT,FLOATV,PFLOAT,INT,FLOATV,\ X,Y,EY,N,FUN,NP,P,CHI2,IC,SIG) #endif /* 7.3.1.3 User Supplied Derivatives */ #ifndef CRAY #define HDERI1(ID,X,PAR,DER) \ CCALLSFSUB4(HDERI1,hderi1,INT,FLOATV,DOUBLEV,DOUBLEV, ID,X,PAR,DER) #define HDERI2(ID,X,Y,PAR,DER) \ CCALLSFSUB5(HDERI2,hderi2,INT,FLOATV,FLOATV,DOUBLEV,DOUBLEV, ID,X,Y,PAR,DER) #define HDERIN(X,PAR,DER) CCALLSFSUB3(HDERIN,hderin,FLOATV,DOUBLEV,DOUBLEV, X,PAR,DER) #else #define HDERI1(ID,X,PAR,DER) \ CCALLSFSUB4(HDERI1,hderi1,INT,FLOATV,FLOATV,FLOATV, ID,X,PAR,DER) #define HDERI2(ID,X,Y,PAR,DER) \ CCALLSFSUB5(HDERI2,hderi2,INT,FLOATV,FLOATV,FLOATV,FLOATV, ID,X,Y,PAR,DER) #define HDERIN(X,PAR,DER) CCALLSFSUB3(HDERIN,hderin,FLOATV,FLOATV,FLOATV, X,PAR,DER) #endif /* 7.3.1.4 Histogram Fitting with Special Functions */ #define HFITEX(ID,AA,BB,CHI2,IC,SIG) \ CCALLSFSUB6(HFITEX,hfitex,INT,PFLOAT,PFLOAT,PFLOAT,INT,FLOATV,\ ID,AA,BB,CHI2,IC,SIG) #define HFITGA(ID,C,AV,SD,CHI2,IC,SIG) \ CCALLSFSUB7(HFITGA,hfitga,INT,PFLOAT,PFLOAT,PFLOAT,PFLOAT,INT,FLOATV,\ ID,C,AV,SD,CHI2,IC,SIG) #define HFITPO(ID,NP,A,CHI2,IC,SIG) \ CCALLSFSUB6(HFITPO,hfitpo,INT,INT,FLOATV,PFLOAT,INT,FLOATV, ID,NP,A,CHI2,IC,SIG) /* 7.3.2 Equality-constrained fitting with HBOOK */ #define HLINEQ(ID,A,B,NC) \ CCALLSFSUB4(HLINEQ,hlineq,INT,FLOATVV,FLOATV,PFLOAT, ID,A,B,NC) /* 7.4 Parametrization */ /* 7.4.1 Histograms and plots */ #ifndef CRAY #define HPARAM(ID,IC,R2MIN,MAXPOW,COEFF,ITERM,NCO) \ CCALLSFSUB7(HPARAM,hparam,INT,INT,FLOAT,INT,DOUBLEV,INTV,PINT,\ ID,IC,R2MIN,MAXPOW,COEFF,ITERM,NCO) #else #define HPARAM(ID,IC,R2MIN,MAXPOW,COEFF,ITERM,NCO) \ CCALLSFSUB7(HPARAM,hparam,INT,INT,FLOAT,INT,FLOATV,INTV,PINT,\ ID,IC,R2MIN,MAXPOW,COEFF,ITERM,NCO) #endif #define HSETPR(CHNAME,VALUE) CCALLSFSUB2(HSETPR,hsetpr,STRING,FLOAT, CHNAME,VALUE) /* 7.4.2 Distributions */ #ifndef CRAY #define HPARMN(X,Y,EY,NP,NVAR,IC,R2MIN,MAXPOW,COEFF,ITERM,NCO) \ CCALLSFSUB11(HPARMN,hparmn,FLOATVV,FLOATV,FLOATV,INT,INT,INT,FLOAT,INT,DOUBLEV,INTV,PINT,\ X,Y,EY,NP,NVAR,IC,R2MIN,MAXPOW,COEFF,ITERM,NCO) #else #define HPARMN(X,Y,EY,NP,NVAR,IC,R2MIN,MAXPOW,COEFF,ITERM,NCO) \ CCALLSFSUB11(HPARMN,hparmn,FLOATVV,FLOATV,FLOATV,INT,INT,INT,FLOAT,INT,FLOATV,INTV,PINT,\ X,Y,EY,NP,NVAR,IC,R2MIN,MAXPOW,COEFF,ITERM,NCO) #endif /* 7.5 Smoothing */ #define HSMOOF(ID,ICASE,CHI2) CCALLSFSUB3(HSMOOF,hsmoof,INT,INT,PFLOAT, ID,ICASE,CHI2) #define HSPLI1(ID,IC,N,K,CHI2) \ CCALLSFSUB5(HSPLI1,hspli1,INT,INT,INT,INT,PFLOAT, ID,IC,N,K,CHI2) #define HSPLI2(ID,NX,NY,KX,KY) \ CCALLSFSUB5(HSPLI2,hspli2,INT,INT,INT,INT,INT, ID,NX,NY,KX,KY) PROTOCCALLSFFUN4(FLOAT,HSPFUN,hspfun,INT,FLOAT,INT,INT) #define HSPFUN(ID,X,N,K) CCALLSFFUN4(HSPFUN,hspfun,INT,FLOAT,INT,INT, ID,X,N,K) /* 7.6 Random Number Generation */ PROTOCCALLSFFUN1(FLOAT,HRNDM1,hrndm1,INT) #define HRNDM1(ID) CCALLSFFUN1(HRNDM1,hrndm1,INT, ID) PROTOCCALLSFFUN3(FLOAT,HRNDM2,hrndm2,INT,PFLOAT,PFLOAT) #define HRNDM2(ID,RX,RY) CCALLSFFUN3(HRNDM2,hrndm2,INT,PFLOAT,PFLOAT, ID,RX,RY) /* Chapter 8 MEMORY MANAGEMENT */ /* 8.1 Memory size control */ #define HLIMIT(NWPAW) CCALLSFSUB1(HLIMIT,hlimit,INT,NWPAW) /* 8.2 Directories */ #define HMDIR(CHDIR,CHOPT) CCALLSFSUB2(HMDIR,hmdir,STRING,STRING, CHDIR,CHOPT) #define HCDIR(CHDIR,CHOPT) CCALLSFSUB2(HCDIR,hcdir,PSTRING,STRING, CHDIR,CHOPT) #define HLDIR(CHDIR,CHOPT) CCALLSFSUB2(HLDIR,hldir,STRING,STRING, CHDIR,CHOPT) #define HPDIR(CHDIR,CHOPT) CCALLSFSUB2(HPDIR,hpdir,STRING,STRING, CHDIR,CHOPT) /* Chapter 9 INPUT/OUTPUT */ /* 9.1 Direct Access I/O */ /* 9.1.1 Open a RZ direct access file or map a Global Section */ #define HRFILE(LUN,CHDIR,CHOPT) \ CCALLSFSUB3(HRFILE,hrfile,INT,STRING,STRING, LUN,CHDIR,CHOPT) /* 9.1.2 Writing to a file */ #define HROUT(ID,ICYCLE,CHOPT) \ CCALLSFSUB3(HROUT,hrout,INT,PINT,STRING, ID,ICYCLE,CHOPT) /* 9.1.3 Reading from a direct-access file or Global Section */ #define HRIN(ID,ICYCLE,IOFSET) CCALLSFSUB3(HRIN,hrin,INT,INT,INT, ID,ICYCLE,IOFSET) /* 9.1.4 Scratching histogram in a file */ #define HSCR(ID,ICYCLE,CHOPT) CCALLSFSUB3(HSCR,hscr,INT,INT,STRING, ID,ICYCLE,CHOPT) /* 9.1.5 Close a file */ #define HREND(CHTOP) CCALLSFSUB1(HREND,hrend,STRING, CHTOP) /* 9.2 Reading files generated by HBBOK version 3 */ #define HFETCH(ID,LUN) CCALLSFSUB2(HFETCH,hfetch,INT,INT, ID,LUN) #define HREAD(ID,LUIN,IADDR,NWORDS,IOPT,NOMORE) \ CCALLSFSUB6(HREAD,hread,INT,INT,INT,INT,INT,INT, ID,LUIN,IADDR,NWORDS,IOPT,NOMORE) /* 9.3 Changing Logical unit numbers for output and message files */ #define HOUTPU(LOUT) CCALLSFSUB1(HOUTPU,houtpu,INT, LOUT) #define HERMES(LERR) CCALLSFSUB1(HERMES,hermes,INT, LERR) /* 9.? Late additions. See cern_root:[000000.doc]hbook.mem for info. */ #define HRPUT(ID,FILE_NAME,CHOPT) \ CCALLSFSUB3(HRPUT,hrput,INT,STRING,STRING, ID,FILE_NAME,CHOPT) #define HRGET(ID,FILE_NAME,CHOPT) \ CCALLSFSUB3(HRGET,hrget,INT,STRING,STRING, ID,FILE_NAME,CHOPT) #define HROPEN(LUN,TOPDIR,FILE_NAME,CHOPT,LREC,ISTAT) \ CCALLSFSUB6(HROPEN,hropen,INT,STRING,STRING,STRING,INT,PINT, LUN,TOPDIR,FILE_NAME,CHOPT,LREC,ISTAT) /* Chapter 10 N-TUPLES */ /* 10.3 Making projections */ #define HPROJ1(ID,IDN,ISEL,FUN,IFROM,ITO,IVARX) \ CCALLSFSUB7(HPROJ1,hproj1,INT,INT,INT,PVOID,INT,INT,INT, ID,IDN,ISEL,FUN,IFROM,ITO,IVARX) #define HPROJ2(ID,IDN,ISEL,FUN,IFROM,ITO,IVARX,IVARY) \ CCALLSFSUB8(HPROJ2,hproj2,INT,INT,INT,PVOID,INT,INT,INT,INT, ID,IDN,ISEL,FUN,IFROM,ITO,IVARX,IVARY) /* Chapter 11 SETTING OPTIONS */ #define HIDOPT(ID,OPTION) CCALLSFSUB2(HIDOPT,hidopt,INT,STRING, ID,OPTION) /* Some internal routines, not in the guide, but in HBOOK4.CAR. */ #define HGNPAR(IDN,CHROUT) CCALLSFSUB2(HGNPAR,hgnpar,INT,STRING, IDN,CHROUT) #define HGNF(IDN,IDNEVT,X,IERROR) \ CCALLSFSUB4(HGNF,hgnf,INT,INT,FLOATV,PINT, IDN,IDNEVT,X,IERROR) #endif /* __HBOOK_LOADED */