00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 
00064 
00065 
00066 
00067 
00068 
00069 
00070 
00071 
00072 
00073 
00074 
00075 
00076 
00077 
00078 
00079 
00080 
00081 
00082 
00083 
00084 
00085 
00086 
00087 
00088 
00089 
00090 
00091 
00092 
00093 
00094 
00095 
00096 
00097 
00098 
00099 
00100 
00101 
00102 
00103 
00104 
00105 
00106 
00107 
00108 
00109 
00110 
00111 
00112 
00113 
00114 
00115 
00116 
00117 
00118 
00119 
00120 
00121 
00122 
00123 
00124 
00125 
00126 
00127 
00128 
00129 
00130 
00131 
00132 
00133 
00134 
00135 
00136 
00137 
00138 
00139 
00140 
00141 
00142 
00143 
00144 
00145 
00146 
00147 
00148 
00149 
00150 
00151 
00152       SUBROUTINE GLK_Initialize
00153 
00154 
00155 
00156       IMPLICIT NONE
00157 
00158       INCLUDE 'GLK.h'
00159       SAVE
00160 
00161 
00162 
00163 
00164       CHARACTER*1 BBS1, BBS2
00165       DATA BBS1 /'\\'/    
00166       DATA BBS2 /1H\ /    
00167 
00168       INTEGER init,i,k
00169       DATA init /0/
00170 
00171       IF(init .NE. 0) RETURN
00172       init=1
00173 
00174       m_out=16
00175       m_length=0
00176 
00177       m_KeyCol=0
00178 
00179       m_KeyTbr=0
00180       DO k=1,3
00181          m_TabRan(k)=1
00182       ENDDO
00183 
00184       DO k=1,80
00185          m_Color(k:k)=' '
00186       ENDDO
00187       m_Color(1:1)='%'
00188 
00189       DO i=1,m_idmax
00190          DO k=1,3
00191             m_index(i,k)=0
00192          ENDDO
00193          DO k=1,80
00194             m_titlc(i)(k:k)=' '
00195          ENDDO
00196       ENDDO
00197       DO k=1,m_LenmB
00198          m_b(k)=0d0
00199       ENDDO
00200 
00201       m_BS = BBS1      
00202 
00203 
00204       END
00205 
00206       SUBROUTINE GLK_Flush
00207 
00208 
00209 
00210       IMPLICIT NONE
00211       INCLUDE 'GLK.h'
00212       INTEGER i,k
00213 
00214       CALL GLK_Initialize
00215       m_length=0
00216       DO i=1,m_idmax
00217          DO k=1,3
00218             m_index(i,k)=0
00219          ENDDO
00220          DO k=1,80
00221             m_titlc(i)(k:k)=' '
00222          ENDDO
00223       ENDDO
00224       DO k=1,m_LenmB
00225          m_b(k)=0d0
00226       ENDDO
00227       END
00228 
00229       LOGICAL FUNCTION GLK_Exist(id)
00230 
00231 
00232 
00233       IMPLICIT NONE
00234       INCLUDE 'GLK.h'
00235       INTEGER id,lact
00236 
00237       CALL GLK_hadres(id,lact)
00238       GLK_Exist = lact .NE. 0
00239 
00240 
00241       END
00242 
00243       DOUBLE PRECISION FUNCTION GLK_hi(id,ib)
00244 
00245 
00246 
00247 
00248       IMPLICIT NONE
00249       INCLUDE 'GLK.h'
00250       INTEGER  id,ib
00251 
00252       INTEGER    ist,ist2,ist3,iflag2,ityphi,nch,idmem,lact
00253       SAVE idmem
00254       DATA idmem / -1256765/
00255 
00256       IF(id .EQ. idmem) goto 100
00257       idmem=id
00258 
00259       CALL GLK_hadres(id,lact)
00260       IF(lact .EQ. 0) THEN
00261         CALL GLK_Stop1(' GLK_hi: nonexisting histo id=',id)
00262       ENDIF
00263       ist  = m_index(lact,2)
00264       ist2 = ist+7
00265       ist3 = ist+11
00266 
00267       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
00268       ityphi   = mod(iflag2,10)
00269       IF(ityphi .NE. 1 .AND. ityphi.NE.3) THEN
00270          CALL GLK_Stop1(' GLK_hi: 1-dim histos only !!! id=',id)
00271       ENDIF
00272   100 continue
00273       nch  = nint(m_b(ist2+1))
00274       IF(ib .EQ. 0) THEN
00275 
00276          GLK_hi=   m_b(ist3 +1)
00277       ELSEIF(ib .GE. 1.and.ib .LE. nch) THEN
00278 
00279          GLK_hi=   m_b(ist +m_buf1+ib)
00280       ELSEIF(ib .EQ. nch+1) THEN
00281 
00282          GLK_hi=   m_b(ist3 +3)
00283       ELSE
00284 
00285          CALL GLK_Stop1(' GLK_hi: wrong binning id=',id)
00286       ENDIF
00287       END
00288 
00289       DOUBLE PRECISION FUNCTION  GLK_hie(id,ib)
00290 
00291 
00292 
00293 
00294       IMPLICIT NONE
00295       INCLUDE 'GLK.h'
00296 
00297       INTEGER    ist,ist2,ist3,iflag2,ityphi,nch,lact,ib,id
00298       SAVE       idmem
00299       INTEGER    idmem
00300       DATA idmem / -1256765/
00301 
00302       IF(id .EQ. idmem) goto 100
00303       idmem=id
00304 
00305       CALL GLK_hadres(id,lact)
00306       IF(lact .EQ. 0) THEN
00307         CALL GLK_Stop1(' GLK_hie: nonexisting histo id=',id)
00308       ENDIF
00309       ist  = m_index(lact,2)
00310       ist2 = ist+7
00311       ist3 = ist+11
00312 
00313       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
00314       ityphi   = mod(iflag2,10)
00315       IF(ityphi .NE. 1) THEN
00316         CALL GLK_Stop1(' GLK_hie: 1-dim histos only !!! id=',id)
00317       ENDIF
00318   100 CONTINUE
00319       nch  = m_b(ist2+1)
00320       IF(ib .EQ. 0) THEN
00321 
00322          GLK_hie=   dsqrt( dabs(m_b(ist3 +4)))
00323       ELSEIF(ib .GE. 1.and.ib .LE. nch) THEN
00324 
00325          GLK_hie=   dsqrt( dabs(m_b(ist+m_buf1+nch+ib)) )
00326       ELSEIF(ib .EQ. nch+1) THEN
00327 
00328          GLK_hie=   dsqrt( dabs(m_b(ist3 +6)))
00329       ELSE
00330 
00331          CALL GLK_Stop1('+++GLK_hie: wrong binning id= ',id)
00332       ENDIF
00333       END
00334 
00335       SUBROUTINE GLK_Fil1(id,xx,wtx)
00336 
00337 
00338 
00339 
00340       IMPLICIT NONE
00341       INCLUDE 'GLK.h'
00342       INTEGER           id
00343       DOUBLE PRECISION  xx,wtx
00344 
00345       INTEGER           ist,ist2,ist3,iflag2,ityphi,ipose1,iposx1,kposx1,kpose1,kx,nchx,lact
00346       DOUBLE PRECISION  x1,wt1,xl,factx,xu
00347 
00348       CALL GLK_hadres(id,lact)
00349 
00350       IF(lact .EQ. 0)  RETURN
00351       ist  = m_index(lact,2)
00352       ist2 = ist+7
00353       ist3 = ist+11
00354 
00355       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
00356       ityphi   = mod(iflag2,10)
00357       IF(ityphi .NE. 1)  CALL GLK_Stop1('+++GLK_Fil1: wrong id=  ',id)
00358       x1= xx
00359       wt1= wtx
00360       m_index(lact,3)=m_index(lact,3)+1
00361 
00362       m_b(ist3 +7)  =m_b(ist3 +7)   +1
00363 
00364       m_b(ist3 +8)  =m_b(ist3 +8)  +wt1
00365       m_b(ist3 +9)  =m_b(ist3 +9)  +wt1*x1
00366 
00367       nchx  =m_b(ist2 +1)
00368       xl    =m_b(ist2 +2)
00369       xu    =m_b(ist2 +3)
00370       factx =m_b(ist2 +4)
00371       IF(x1 .LT. xl) THEN
00372 
00373          iposx1 = ist3 +1
00374          ipose1 = ist3 +4
00375          kposx1 = 0
00376       ELSEIF(x1 .GT. xu) THEN
00377 
00378          iposx1 = ist3 +3
00379          ipose1 = ist3 +6
00380          kposx1 = 0
00381       ELSE
00382 
00383          iposx1 = ist3 +2
00384          ipose1 = ist3 +5
00385 
00386          kx = (x1-xl)*factx+1d0
00387          kx = MIN( MAX(kx,1) ,nchx)
00388          kposx1 = ist +m_buf1+kx
00389          kpose1 = ist +m_buf1+nchx+kx
00390       ENDIF
00391       m_b(iposx1) = m_b(iposx1)  +wt1
00392       m_b(ipose1) = m_b(ipose1)  +wt1*wt1
00393       IF( kposx1 .NE. 0) m_b(kposx1) = m_b(kposx1)  +wt1
00394       IF( kposx1 .NE. 0) m_b(kpose1) = m_b(kpose1)  +wt1*wt1
00395       END   
00396 
00397       SUBROUTINE GLK_Fil1diff(id,xx,wtx,yy,wty)
00398 
00399 
00400 
00401 
00402 
00403 
00404       IMPLICIT NONE
00405       INCLUDE 'GLK.h'
00406 
00407       INTEGER           id
00408       DOUBLE PRECISION  xx,wtx,yy,wty
00409 
00410       DOUBLE PRECISION  x1,x2,wt2,wt1,factx,xl,xu
00411       INTEGER           ist,ist2,ist3,iflag2,ityphi,kx,ke1,ie1,kx1,kx2,ke2,ix2,ie2,nchx,lact,ix1
00412 
00413       CALL GLK_hadres(id,lact)
00414 
00415       IF(lact .EQ. 0)  RETURN
00416       ist  = m_index(lact,2)
00417       ist2 = ist+7
00418       ist3 = ist+11
00419 
00420       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
00421       ityphi   = mod(iflag2,10)
00422       IF(ityphi .NE. 1) THEN
00423         CALL GLK_Stop1('GLK_Fil1diff: 1-dim histos only !!! id=',id)
00424       ENDIF
00425       x1= xx
00426       x2= yy
00427       wt1= wtx
00428       wt2= wty
00429       m_index(lact,3)=m_index(lact,3)+1
00430 
00431       m_b(ist3 +7)  =m_b(ist3 +7)   +1
00432 
00433       m_b(ist3 +8)  =m_b(ist3 +8)  +wt1*x1 - wt2*x2
00434       m_b(ist3 +9)  =m_b(ist3 +9)  +wt1*x1*x1 - wt2*x2*x2
00435 
00436       nchx  =m_b(ist2 +1)
00437       xl    =m_b(ist2 +2)
00438       xu    =m_b(ist2 +3)
00439       factx =m_b(ist2 +4)
00440 
00441       IF(x1 .LT. xl) THEN       
00442          ix1 = ist3 +1
00443          ie1 = ist3 +4
00444          kx1 = 0
00445       ELSEIF(x1 .GT. xu) THEN   
00446          ix1 = ist3 +3
00447          ie1 = ist3 +6
00448          kx1 = 0
00449       ELSE                      
00450          ix1 = ist3 +2
00451          ie1 = ist3 +5
00452          kx = (x1-xl)*factx+1d0
00453          kx = MIN( MAX(kx,1) ,nchx)
00454          kx1 = ist +m_buf1+kx
00455          ke1 = ist +m_buf1+nchx+kx
00456       ENDIF
00457 
00458       IF(x2 .LT. xl) THEN       
00459          ix2 = ist3 +1
00460          ie2 = ist3 +4
00461          kx2 = 0
00462       ELSEIF(x2 .GT. xu) THEN   
00463          ix2 = ist3 +3
00464          ie2 = ist3 +6
00465          kx2 = 0
00466       ELSE                      
00467          ix2 = ist3 +2
00468          ie2 = ist3 +5
00469          kx = (x2-xl)*factx+1d0
00470          kx = MIN( MAX(kx,1) ,nchx)
00471          kx2 = ist +m_buf1+kx
00472          ke2 = ist +m_buf1+nchx+kx
00473       ENDIF
00474 
00475       IF( ix1 .EQ. ix2 ) THEN
00476          m_b(ix1) = m_b(ix1)  +wt1-wt2
00477          m_b(ie1) = m_b(ie1)  +(wt1-wt2)**2
00478       ELSE
00479          m_b(ix1) = m_b(ix1)  +wt1
00480          m_b(ie1) = m_b(ie1)  +wt1*wt1
00481          m_b(ix2) = m_b(ix2)  -wt2
00482          m_b(ie2) = m_b(ie2)  +wt2*wt2
00483       ENDIF
00484       IF( kx1 .EQ. kx2 ) THEN
00485          IF( kx1 .NE. 0) THEN
00486             m_b(kx1) = m_b(kx1)  +wt1-wt2
00487             m_b(ke1) = m_b(ke1)  +(wt1-wt2)**2
00488          ENDIF
00489       ELSE
00490          IF( kx1 .NE. 0) THEN
00491             m_b(kx1) = m_b(kx1)  +wt1
00492             m_b(ke1) = m_b(ke1)  +wt1*wt1
00493          ENDIF
00494          IF( kx2 .NE. 0) THEN
00495             m_b(kx2) = m_b(kx2)  -wt2
00496             m_b(ke2) = m_b(ke2)  +wt2*wt2
00497          ENDIF
00498       ENDIF
00499       END   
00500 
00501       SUBROUTINE GLK_Fil2(id,x,y,wtw)
00502 
00503 
00504 
00505       IMPLICIT NONE     
00506       INCLUDE 'GLK.h'
00507       INTEGER           id
00508       DOUBLE PRECISION  x,y,wtw
00509 
00510       INTEGER           ist,iflag2,ityphi,ist2,ist3,nchx,nchy,ly,ky,k2,kx,lact,lx,k,l
00511       DOUBLE PRECISION  xx,yy,wt,factx,xl,yl,facty
00512 
00513       CALL GLK_hadres(id,lact)
00514       IF(lact .EQ. 0)  RETURN
00515       ist  = m_index(lact,2)
00516 
00517       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
00518       ityphi   = mod(iflag2,10)
00519       IF(ityphi .NE. 2) THEN
00520         CALL GLK_Stop1('GLK_Fil2: 2-dim histos only !!! id=',id)
00521       ENDIF
00522 
00523       ist2 = ist+7
00524       ist3 = ist+15
00525       xx= x
00526       yy= y
00527       wt= wtw
00528       m_index(lact,3)=m_index(lact,3)+1
00529 
00530       nchx  =m_b(ist2 +1)
00531       xl    =m_b(ist2 +2)
00532       factx =m_b(ist2 +4)
00533       kx=(xx-xl)*factx+1d0
00534       lx=2
00535       IF(kx .LT. 1)     lx=1
00536       IF(kx .GT. nchx)  lx=3
00537       l     = ist+34  +lx
00538       m_b(l)  = m_b(l)    +wt
00539       k     = ist+m_buf2  +kx
00540       IF(lx .EQ. 2) m_b(k)  =m_b(k)  +wt
00541       k2    = ist+m_buf2  +nchx+kx
00542       IF(lx .EQ. 2) m_b(k2) =m_b(k2) +wt**2
00543 
00544       nchy  =m_b(ist2 +5)
00545       yl    =m_b(ist2 +6)
00546       facty =m_b(ist2 +8)
00547       ky=(yy-yl)*facty+1d0
00548       ly=2
00549       IF(ky .LT. 1)    ly=1
00550       IF(ky .GT. nchy) ly=3
00551 
00552       l = ist3  +lx +3*(ly-1)
00553       m_b(l) =m_b(l)+wt
00554 
00555       k = ist+m_buf2 +kx +nchx*(ky-1)
00556       IF(lx .EQ. 2.and.ly .EQ. 2) m_b(k)=m_b(k)+wt
00557       END
00558 
00559       SUBROUTINE GLK_Book1(id,title,nnchx,xxl,xxu)
00560 
00561       IMPLICIT NONE
00562       INCLUDE 'GLK.h'
00563       INTEGER          id
00564       DOUBLE PRECISION xxl,xxu
00565       CHARACTER*80 title
00566 
00567       DOUBLE PRECISION xl,xu,ddx
00568       INTEGER          ist,nchx,ioplog,iopsla,ioperb,iflag2,ityphi,iflag1
00569       INTEGER          ist3,ist2,lengt2,lact,nnchx,iopsc2,iopsc1,j
00570       LOGICAL GLK_Exist
00571 
00572       CALL GLK_Initialize
00573       IF(GLK_Exist(id)) goto 900
00574       ist=m_length
00575       CALL GLK_hadres(0,lact)
00576 
00577       IF(lact .EQ. 0)
00578      $     CALL GLK_Stop1('GLK_Book1: to many histos !!!!!,   id= ',id)
00579       m_index(lact,1)=id
00580       m_index(lact,2)=m_length
00581       m_index(lact,3)=0
00582 
00583       CALL GLK_Copch(title,m_titlc(lact))
00584       nchx =nnchx
00585       IF(nchx .GT. m_MaxNb)
00586      $     CALL GLK_Stop1(' GLK_Book1: To many bins requested,id= ',id)
00587       xl   =xxl
00588       xu   =xxu
00589 
00590       lengt2 = m_length +2*nchx +m_buf1+1
00591       IF(lengt2 .GE. m_LenmB)
00592      $  CALL GLK_Stop1('GLK_Book1:too litle storage, m_LenmB= ',m_LenmB)
00593 
00594       DO j=m_length+1,lengt2+1
00595          m_b(j) = 0d0
00596       ENDDO
00597       m_length=lengt2
00598 
00599       ioplog   = 1
00600       iopsla   = 1
00601       ioperb   = 1
00602       iopsc1   = 1
00603       iopsc2   = 1
00604       iflag1   =
00605      $ ioplog+10*iopsla+100*ioperb+1000*iopsc1+10000*iopsc2
00606       ityphi   = 1
00607       iflag2   = ityphi
00608 
00609 
00610 
00611 
00612 
00613 
00614 
00615 
00616 
00617 
00618 
00619 
00620       m_b(ist +1)  = 9999999999999d0
00621       m_b(ist +2)  = 9d12 +     id*10 +9d0
00622       m_b(ist +3)  = 9d12 + iflag1*10 +9d0
00623       m_b(ist +4)  = 9d12 + iflag2*10 +9d0
00624 
00625       m_b(ist +5)  =  -100d0
00626       m_b(ist +6)  =   100d0
00627 
00628       m_b(ist +7)  =   0d0
00629 
00630       ist2         = ist+7
00631       m_b(ist2 +1) = nchx
00632       m_b(ist2 +2) = xl
00633       m_b(ist2 +3) = xu
00634       ddx = xu-xl
00635       IF(ddx .EQ. 0d0) CALL GLK_Stop1('+++GLK_Book1: xl=xu,  id= ',id)
00636       m_b(ist2 +4) = DFLOAT(nchx)/ddx
00637 
00638 
00639       ist3       = ist+11
00640       DO j=1,13
00641          m_b(ist3 +j)=0d0
00642       ENDDO
00643       RETURN
00644 
00645  900  CALL GLK_Retu1(' WARNING GLK_Book1: already exists id= ', id)
00646       END
00647 
00648       SUBROUTINE GLK_Retu1(mesage,id)
00649 
00650       IMPLICIT NONE
00651       INCLUDE 'GLK.h'
00652       SAVE
00653       INTEGER id
00654       CHARACTER*(*) mesage
00655 
00656       WRITE(m_out,'(a)')
00657      $          '++++++++++++++++++++++++++++++++++++++++++++++++++++++'
00658       WRITE(m_out,'(a,a,i10,a)')
00659      $                          '++ ', mesage, id, ' ++'
00660       WRITE(m_out,'(a)')
00661      $          '++++++++++++++++++++++++++++++++++++++++++++++++++++++'
00662       WRITE(6   ,'(a)')
00663      $          '++++++++++++++++++++++++++++++++++++++++++++++++++++++'
00664       WRITE(6   ,'(a,a,i10,a)')
00665      $                          '++ ', mesage, id, ' ++'
00666       WRITE(6   ,'(a)')
00667      $          '++++++++++++++++++++++++++++++++++++++++++++++++++++++'
00668       END
00669 
00670       SUBROUTINE GLK_Stop1(mesage,id)
00671 
00672       IMPLICIT NONE
00673       INCLUDE 'GLK.h'
00674       SAVE
00675       CHARACTER*(*) mesage
00676       INTEGER id
00677 
00678       WRITE(m_out,'(a)')
00679      $          '++++++++++++++++++++++++++++++++++++++++++++++++++++++'
00680       WRITE(m_out,'(a,a,i10,a)')
00681      $                          '++ ', mesage, id, ' ++'
00682       WRITE(m_out,'(a)')
00683      $          '++++++++++++++++++++++++++++++++++++++++++++++++++++++'
00684       WRITE(6   ,'(a)')
00685      $          '++++++++++++++++++++++++++++++++++++++++++++++++++++++'
00686       WRITE(6   ,'(a,a,i10,a)')
00687      $                          '++ ', mesage, id, ' ++'
00688       WRITE(6   ,'(a)')
00689      $          '++++++++++++++++++++++++++++++++++++++++++++++++++++++'
00690       STOP
00691       END
00692 
00693 
00694       SUBROUTINE GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2)
00695 
00696 
00697 
00698       IMPLICIT NONE
00699       INCLUDE 'GLK.h'
00700       INTEGER    id,ioplog,iopsla,ioperb,iopsc1,iopsc2
00701       INTEGER    ist,iflag1,lact
00702 
00703       CALL GLK_hadres(id,lact)
00704       IF(lact .EQ. 0) RETURN
00705       ist=m_index(lact,2)
00706 
00707       iflag1   = nint(m_b(ist+3)-9d0-9d12)/10
00708       ioplog = mod(iflag1,10)
00709       iopsla = mod(iflag1,100)/10
00710       ioperb = mod(iflag1,1000)/100
00711       iopsc1 = mod(iflag1,10000)/1000
00712       iopsc2 = mod(iflag1,100000)/10000
00713       END
00714 
00715       SUBROUTINE GLK_idopt(id,ch)
00716 
00717       IMPLICIT NONE
00718       INCLUDE 'GLK.h'
00719       INTEGER     id
00720       CHARACTER*4 ch
00721 
00722       INTEGER     lact,ist,ioplog,ioperb,iopsla,iopsc1,iopsc2,iflag1
00723 
00724       CALL GLK_hadres(id,lact)
00725       IF(lact .EQ. 0) RETURN
00726       ist=m_index(lact,2)
00727 
00728       CALL GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2)
00729       IF(ch .EQ.       'LOGY'  ) THEN
00730 
00731         ioplog = 2
00732       ELSEIF(ch .EQ.   'ERRO'  ) THEN
00733 
00734        ioperb  = 2
00735       ELSEIF(ch .EQ.   'SLAN'  ) THEN
00736 
00737        iopsla  = 2
00738       ELSEIF(ch .EQ.   'YMIN'  ) THEN
00739        iopsc1  = 2
00740       ELSEIF(ch .EQ.   'YMAX'  ) THEN
00741        iopsc2  = 2
00742       ENDIF
00743 
00744       iflag1   = ioplog+10*iopsla+100*ioperb+1000*iopsc1+10000*iopsc2
00745       m_b(ist+3) = 9d12 + iflag1*10 +9d0
00746       END
00747 
00748 
00749       SUBROUTINE GLK_BookFun1(id,title,nchx,xmin,xmax,func)
00750 
00751 
00752 
00753       IMPLICIT NONE
00754       INCLUDE 'GLK.h'
00755       INTEGER           id
00756       DOUBLE PRECISION  xmin,xmax,func
00757       CHARACTER*80 title
00758 
00759       DOUBLE PRECISION  yy(m_MaxNb)
00760       EXTERNAL func
00761       LOGICAL GLK_Exist
00762       INTEGER           ib,nchx
00763       DOUBLE PRECISION  xl,xu,x
00764 
00765       CALL GLK_Initialize
00766       IF(GLK_Exist(id)) GOTO 900
00767  15   xl=xmin
00768       xu=xmax
00769       CALL GLK_Book1(id,title,nchx,xl,xu)
00770 
00771       CALL GLK_idopt(id,'SLAN')
00772       IF(nchx .GT. 200) goto 901
00773       DO ib=1,nchx
00774          x= xmin +(xmax-xmin)/nchx*(ib-0.5d0)
00775          yy(ib) = func(x)
00776       ENDDO
00777       CALL GLK_Pak(id,yy)
00778       RETURN
00779  900  CALL GLK_Retu1('+++GLK_BookFun1: already exists id=',id)
00780       CALL GLK_Delet(id)
00781       GOTO 15
00782  901  CALL GLK_Stop1('+++GLK_BookFun1: to many bins, id=',id)
00783       END
00784 
00785       SUBROUTINE GLK_BookFun1I(id,title,nchx,xmin,xmax,func)
00786 
00787 
00788 
00789 
00790       IMPLICIT NONE
00791       INCLUDE 'GLK.h'
00792       INTEGER           id
00793       DOUBLE PRECISION  xmin,xmax,func
00794       CHARACTER*80 title
00795 
00796       DOUBLE PRECISION  yy(m_MaxNb)
00797       EXTERNAL func
00798       LOGICAL GLK_Exist
00799       INTEGER           ib,nchx
00800       DOUBLE PRECISION  xl,xu,x
00801       DOUBLE PRECISION  GLK_Gauss,a,b,Eeps,dx
00802 
00803       CALL GLK_Initialize
00804       IF(GLK_Exist(id)) GOTO 900
00805  15   xl=xmin
00806       xu=xmax
00807       CALL GLK_Book1(id,title,nchx,xl,xu)
00808       IF(nchx .GT. 200) goto 901
00809       Eeps = -0.01d0             
00810       dx = (xmax-xmin)/nchx
00811       DO ib=1,nchx
00812          a= xmin +dx*(ib-1)
00813          b= xmin +dx*ib
00814          yy(ib) = GLK_Gauss(func,a,b,Eeps)/dx   
00815       ENDDO
00816       CALL GLK_Pak(id,yy)
00817       RETURN
00818  900  CALL GLK_Retu1('+++GLK_BookFun1I: already exists id=',id)
00819       CALL GLK_Delet(id)
00820       GOTO 15
00821  901  CALL GLK_Stop1('+++GLK_BookFun1I: to many bins, id=',id)
00822       END
00823 
00824       SUBROUTINE GLK_BookFun1S(id,title,nchx,xmin,xmax,func)
00825 
00826 
00827 
00828 
00829       IMPLICIT NONE
00830       INCLUDE 'GLK.h'
00831       DOUBLE PRECISION  xmin,xmax,func
00832       EXTERNAL func
00833       INTEGER  id,nchx
00834       CHARACTER*80 title
00835 
00836       DOUBLE PRECISION  yy(m_MaxNb),yy1(0:m_MaxNb)
00837       LOGICAL GLK_Exist
00838       DOUBLE PRECISION  xl,xu,x3,x2,dx
00839       INTEGER           ib  
00840 
00841       CALL GLK_Initialize
00842       IF( GLK_Exist(id) ) GOTO 900
00843  15   xl=xmin
00844       xu=xmax
00845       CALL GLK_Book1(id,title,nchx,xl,xu)
00846 
00847 
00848       CALL GLK_idopt(id,'SLAN')
00849       IF(nchx.gt.200) GOTO 901
00850 
00851       yy1(0) = func(xmin)
00852       dx=(xmax-xmin)/nchx
00853 
00854       DO ib=1,nchx
00855          x2= xmin +dx*(ib-0.5d0)
00856          x3= x2 +dx*0.5d0
00857          yy(ib)  = func(x2)
00858          yy1(ib) = func(x3)
00859 
00860          yy(ib) = ( yy1(ib-1) +4*yy (ib) +yy1(ib))/6d0
00861       ENDDO
00862 
00863       CALL GLK_Pak(id,yy)
00864       RETURN
00865  900  CALL GLK_Retu1('+++GLK_BookFun1S: already exists, id=',id)
00866       CALL GLK_Delet(id)
00867       GOTO 15
00868  901  CALL GLK_Stop1(' +++GLK_BookFun1S: to many bins, id=',id)
00869       END
00870 
00871       DOUBLE PRECISION FUNCTION GLK_Gauss(f,a,b,Eeps)
00872 
00873 
00874 
00875 
00876 
00877 
00878 
00879 
00880 
00881 
00882       IMPLICIT NONE
00883       DOUBLE PRECISION  f,a,b,Eeps
00884 
00885       DOUBLE PRECISION  c1,c2,bb,s8,s16,y,aa,const,delta,eps,u
00886       INTEGER           i
00887 
00888       DOUBLE PRECISION  w(12),x(12)
00889       EXTERNAL f
00890       DATA const /1.0d-19/
00891       DATA w
00892      1/0.10122 85362 90376, 0.22238 10344 53374, 0.31370 66458 77887,
00893      2 0.36268 37833 78362, 0.02715 24594 11754, 0.06225 35239 38648,
00894      3 0.09515 85116 82493, 0.12462 89712 55534, 0.14959 59888 16577,
00895      4 0.16915 65193 95003, 0.18260 34150 44924, 0.18945 06104 55069/
00896       DATA x
00897      1/0.96028 98564 97536, 0.79666 64774 13627, 0.52553 24099 16329,
00898      2 0.18343 46424 95650, 0.98940 09349 91650, 0.94457 50230 73233,
00899      3 0.86563 12023 87832, 0.75540 44083 55003, 0.61787 62444 02644,
00900      4 0.45801 67776 57227, 0.28160 35507 79259, 0.09501 25098 37637/
00901 
00902       eps=abs(Eeps)
00903       delta=const*abs(a-b)
00904       GLK_Gauss=0d0
00905       aa=a
00906     5 y=b-aa
00907       IF(abs(y)  .LE.  delta) RETURN
00908     2 bb=aa+y
00909       c1=0.5d0*(aa+bb)
00910       c2=c1-aa
00911       s8=0d0
00912       s16=0d0
00913       DO 1 i=1,4
00914       u=x(i)*c2
00915     1 s8=s8+w(i)*(f(c1+u)+f(c1-u))
00916       DO 3 i=5,12
00917       u=x(i)*c2
00918     3 s16=s16+w(i)*(f(c1+u)+f(c1-u))
00919       s8=s8*c2
00920       s16=s16*c2
00921       IF(Eeps .LT. 0d0) THEN
00922         IF(abs(s16-s8)  .GT.  eps*abs(s16)) GOTO 4
00923       ELSE
00924         IF(abs(s16-s8)  .GT.  eps) GOTO 4
00925       ENDIF
00926       GLK_Gauss=GLK_Gauss+s16
00927       aa=bb
00928       GOTO 5
00929     4 y=0.5d0*y
00930       IF(abs(y)  .GT.  delta) GOTO 2
00931       WRITE(*,7)
00932       GLK_Gauss=0d0
00933       RETURN
00934     7 FORMAT(1x,36hgaus  ... too high accuracy required)
00935       END
00936 
00937 
00938 
00939       SUBROUTINE GLK_Book2(ID,TITLE,NCHX,XL,XU,NCHY,YL,YU)
00940 
00941       IMPLICIT NONE
00942       INCLUDE 'GLK.h'
00943       INTEGER           ID,NCHX,NCHY
00944       DOUBLE PRECISION  XL,XU,YL,YU
00945       CHARACTER*80 TITLE
00946 
00947       INTEGER   ist,lact,lengt2,j,nnchx,nnchy
00948       LOGICAL GLK_EXIST
00949 
00950       CALL GLK_Initialize
00951       IF(GLK_EXIST(ID)) GOTO 900
00952       ist=m_length
00953       CALL GLK_hadres(0,lact)
00954       IF(LACT .EQ. 0) GOTO 901
00955       m_index(LACT,1)=ID
00956       m_index(LACT,2)=m_length
00957       CALL GLK_COPCH(TITLE,M_TITLC(LACT))
00958       nnchx=NCHX
00959       nnchy=NCHY
00960       LENGT2 = M_LENGTH  +44+nnchx*nnchy
00961       IF(LENGT2 .GE. m_LenmB) GOTO 902
00962       DO 10 J=M_LENGTH+1,LENGT2+1
00963    10 m_b(J) = 0D0
00964       M_LENGTH=LENGT2
00965       m_b(ist+1)=nnchx
00966       m_b(ist+2)=XL
00967       m_b(ist+3)=XU
00968       m_b(ist+4)=float(nnchx)/(m_b(ist+3)-m_b(ist+2))
00969       m_b(ist+5)=nnchy
00970       m_b(ist+6)=YL
00971       m_b(ist+7)=YU
00972       m_b(ist+8)=float(nnchy)/(m_b(ist+7)-m_b(ist+6))
00973       RETURN
00974   900 CALL GLK_Retu1('GLK_Book2: histo already exists!!!! id=',id)
00975       RETURN
00976   901 CALL GLK_Stop1('GLK_Book2: too many histos !!!!! lact= ',LACT)
00977       RETURN
00978   902 CALL GLK_Stop1('GLK_Book2: too litle storage, m_LenmB=',m_LenmB)
00979       RETURN
00980       END
00981 
00982       SUBROUTINE GLK_PrintAll
00983 
00984       IMPLICIT NONE
00985       INCLUDE 'GLK.h'
00986       SAVE
00987       INTEGER i,id
00988 
00989       DO i=1,m_idmax
00990          id=m_index(i,1)
00991          IF(id .GT. 0) CALL GLK_Print(id)
00992       ENDDO
00993       END
00994 
00995       SUBROUTINE GLK_ListPrint(mout)
00996 
00997 
00998 
00999       IMPLICIT NONE
01000       INCLUDE 'GLK.h'
01001       INTEGER i,id
01002       CHARACTER*80 title
01003       INTEGER             nb,mout
01004       DOUBLE PRECISION    xmin,xmax
01005 
01006       WRITE(mout,*) 
01007      $'============================================================================================'
01008       WRITE(mout,*) 
01009      $'     ID                 TITLE                                                nb, xmin, xmax'
01010       DO i=1,m_idmax
01011          id=m_index(i,1)
01012          IF(id .NE. 0) THEN
01013             CALL GLK_hinbo1(id,title,nb,xmin,xmax)
01014             WRITE(mout,'(i8,a,a,i8,2g14.6)') id, '  ', title, nb,xmin,xmax
01015          ENDIF
01016       ENDDO
01017       END
01018 
01019 
01020 
01021       SUBROUTINE GLK_Print(id)
01022 
01023       IMPLICIT NONE
01024       INCLUDE 'GLK.h'
01025       INTEGER  id
01026 
01027       DOUBLE PRECISION xl,bind,xlow,z,er,avex,dx,fact,ovef,undf,bmax,bmin,deltb
01028       DOUBLE PRECISION sum,sumw,sumx
01029       INTEGER          ist,ist2,ist3,idec,k2,k1,kros,j,ind,i,n,i1,ky,nchy,kx,nent,iflag2,lmx
01030       INTEGER          ioplog,iopsla,ioperb,iopsc1,iopsc2,lact,ker,ityphi,kzer,k,ibn,nchx,istr
01031       LOGICAL llg
01032       CHARACTER*1 line(0:105),lchr(22),lb,lx,li,l0
01033       SAVE lb,lx,li,l0,lchr
01034       DATA lb,lx,li,l0 /' ','X','I','0'/
01035       DATA lchr/' ','1','2','3','4','5','6','7','8','9',
01036      $      'A','B','C','D','E','F','G','H','I','J','K','*'/
01037 
01038       CALL GLK_hadres(id,lact)
01039       IF(lact .EQ. 0) goto 900
01040       ist  = m_index(lact,2)
01041       ist2 = ist+7
01042       ist3 = ist+11
01043       idec    = nint(m_b(ist+2)-9d0-9d12)/10
01044       IF(idec .NE. id) WRITE(6,*) '++++GLK_PRINT: PANIC! ID,IDEC= ',ID,IDEC
01045       CALL GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2)
01046       ker    =  ioperb-1
01047       lmx = 67
01048       IF(ker .EQ. 1) lmx=54
01049       nent=m_index(lact,3)
01050       IF(nent  .EQ.  0)                          GOTO 901
01051       WRITE(m_out,1000) id,m_titlc(lact)
01052  1000 FORMAT('1',/,1X,I9,10X,A)
01053 
01054 
01055       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
01056       ityphi   = mod(iflag2,10)
01057       IF(ityphi .EQ. 2) GOTO 200
01058       IF( (ityphi.NE.1) .AND. (ityphi.NE.3) )
01059      $   CALL GLK_Stop1(' GLK_PRINT: wrong histo type, id=',id)
01060 
01061       nchx =   m_b(ist2 +1)
01062       xl   =   m_b(ist2 +2)
01063       dx   =  (  m_b(ist2 +3)-m_b(ist2 +2)  )/float(nchx)
01064 
01065       istr=ist+m_buf1+1
01066       bmin = m_b(istr)
01067       bmax = m_b(istr)+1d-5*abs(m_b(istr))  
01068       DO  ibn=istr,istr+nchx-1
01069          bmax = max(bmax,m_b(ibn))
01070          bmin = min(bmin,m_b(ibn))
01071       ENDDO
01072       IF(bmin  .EQ.  bmax)                       GOTO 903
01073       IF(iopsc1 .EQ. 2) bmin=m_b(ist +5)
01074       IF(iopsc2 .EQ. 2) bmax=m_b(ist +6)
01075 
01076       llg=ioplog .EQ. 2
01077       IF(llg.and.bmin .LE. 0d0) bmin=bmax/10000.d0
01078 
01079       deltb = bmax-bmin
01080       IF(deltb  .EQ.  0d0)                       GOTO 902
01081       fact  = (lmx-1)/deltb
01082       kzer  = -bmin*fact+1.00001d0
01083       IF(llg) fact=(lmx-1)/(log(bmax)-log(bmin))
01084       IF(llg) kzer=-log(bmin)*fact+1.00001d0
01085 
01086       undf = m_b(ist3 +1)
01087       ovef = m_b(ist3 +3)
01088       avex = 0d0
01089       sumw  = m_b(ist3 +8)
01090       sumx  = m_b(ist3 +9)
01091       IF(sumw .NE. 0d0) avex = sumx/sumw
01092       WRITE(m_out,'(4a15      )')  'nent',' sum','bmin','bmax'
01093       WRITE(m_out,'(i15,3e15.5)')   nent,   sum,  bmin,  bmax
01094       WRITE(m_out,'(4a15  )')      'undf','ovef','sumw','avex'
01095       WRITE(m_out,'(4e15.5)')       undf,  ovef,  sumw,  avex
01096 
01097       IF(llg) write(m_out,1105)
01098  1105 format(35x,17hlogarithmic scale)
01099 
01100       kzer=max0(kzer,0)
01101       kzer=min0(kzer,lmx)
01102       xlow=xl
01103       do 100 k=1,nchx
01104 
01105       do  45 j=1,105
01106    45 line(j)  =lb
01107 
01108       line(1)  =li
01109       line(lmx)=li
01110       ind=istr+k-1
01111       bind=m_b(ind)
01112       bind= max(bind,bmin)
01113       bind= min(bind,bmax)
01114       kros=(bind-bmin)*fact+1.0001d0
01115       IF(llg) kros=log(bind/bmin)*fact+1.0001d0
01116       k2=max0(kros,kzer)
01117       k2=min0(lmx,max0(1,k2))
01118       k1=min0(kros,kzer)
01119       k1=min0(lmx,max0(1,k1))
01120       do 50 j=k1,k2
01121    50 line(j)=lx
01122       line(kzer)=l0
01123       z=m_b(ind)
01124       IF(ker .NE. 1) THEN
01125         WRITE(m_out,'(a, f7.4,  a, d14.6,  132a1)')
01126      $             ' ', xlow,' ',     z,' ',(line(i),i=1,lmx)
01127       ELSE
01128         er=dsqrt(dabs(m_b(ind+nchx)))
01129         WRITE(m_out,'(a,f7.4,  a,d14.6,  a,d14.6, 132a1 )')
01130      $             ' ',xlow,' ',    z,' ',   er,' ',(line(i),i=1,lmx)
01131       ENDIF
01132       xlow=xlow+dx
01133   100 continue
01134       RETURN
01135 
01136 
01137 
01138   200 continue
01139       nchx=m_b(ist+1)
01140       nchy=m_b(ist+5)
01141       WRITE(m_out,2000) (lx,i=1,nchy)
01142  2000 format(1h ,10x,2hxx,100a1)
01143       do 300 kx=1,nchx
01144       do 250 ky=1,nchy
01145       k=ist +m_buf2 +kx+nchx*(ky-1)
01146       N=m_b(K)+1.99999D0
01147       n=max0(n,1)
01148       n=min0(n,22)
01149       IF(DABS(m_b(k)) .LT. 1D-20) n=1
01150       line(ky)=lchr(n)
01151   250 continue
01152       line(nchy+1)=lx
01153       i1=nchy+1
01154       WRITE(m_out,2100) (line(i),i=1,i1)
01155  2100 format(1h ,10x,1hx,100a1)
01156   300 continue
01157       WRITE(m_out,2000) (lx,i=1,nchy)
01158       RETURN
01159  900  CALL GLK_Retu1('GLK_PRINT: nonexisting histo',id)
01160       RETURN
01161  901  CALL GLK_Retu1('   GLK_PRINT: nent.eq.0',ID)
01162       RETURN
01163  902  CALL GLK_Retu1('   GLK_PRINT: wrong plotting limits, id=',id)
01164       RETURN
01165  903  CALL GLK_Retu1('   GLK_PRINT: bmin.eq.bmax, id=',id)
01166       END
01167 
01168       SUBROUTINE GLK_Operat(ida,chr,idb,idc,coef1,coef2)
01169 
01170       IMPLICIT NONE
01171       INCLUDE 'GLK.h'
01172       INTEGER           ida,idb,idc
01173       DOUBLE PRECISION  coef1,coef2
01174       CHARACTER*80      title
01175       CHARACTER*1       chr
01176 
01177       DOUBLE PRECISION  xl,xu
01178       INTEGER           ista,ista2,ista3,ncha,iflag2a,ityphia,lactb
01179       INTEGER           k,j,nchc,istc2,istc3,i1,j2,j3,j1,i2,i3,istc,istb2,istb3,nchb
01180       INTEGER           lacta,id,istb,nchx,iflag2b,ityphib,lactc
01181 
01182       CALL GLK_hadres(ida,lacta)
01183       IF(lacta .EQ. 0) RETURN
01184       ista  = m_index(lacta,2)
01185       ista2 = ista+7
01186       ista3 = ista+11
01187       ncha  = m_b(ista2+1)
01188 
01189       iflag2a   = nint(m_b(ista+4)-9d0-9d12)/10
01190       ityphia   = mod(iflag2a,10)
01191       IF(ityphia .NE. 1) CALL GLK_Stop1('GLK_Operat: 1-dim histos only, id=',id)
01192 
01193       CALL GLK_hadres(idb,lactb)
01194       IF(lactb .EQ. 0) RETURN
01195       istb  = m_index(lactb,2)
01196       istb2 = istb+7
01197       istb3 = istb+11
01198       nchb  = m_b(istb2+1)
01199       IF(nchb .NE. ncha) goto 900
01200 
01201       iflag2b   = nint(m_b(istb+4)-9d0-9d12)/10
01202       ityphib   = mod(iflag2b,10)
01203       IF(ityphib .NE. 1)  CALL GLK_Stop1('GLK_Operat: 1-dim histos only, id=',id)
01204 
01205       CALL GLK_hadres(idc,lactc)
01206       IF(lactc .EQ. 0) THEN
01207 
01208         CALL GLK_hinbo1(ida,title,nchx,xl,xu)
01209         CALL GLK_Book1(idc,title,nchx,xl,xu)
01210         CALL GLK_hadres(idc,lactc)
01211         istc  = m_index(lactc,2)
01212 
01213         m_b(istc+ 3)= m_b(ista +3)
01214       ENDIF
01215 
01216       m_index(lactc,3) = 1
01217 
01218       istc  =  m_index(lactc,2)
01219       istc2 =  istc+7
01220       istc3 =  istc+11
01221       nchc  =  m_b(istc2+1)
01222 
01223       IF(nchc .NE. ncha) goto 900
01224       IF(ncha .NE. nchb .OR. nchb .NE. nchc) GOTO 900
01225       DO k=1,ncha+3
01226          IF(k .GT. ncha) THEN
01227 
01228             j=k-ncha
01229             i1 = ista3 +j
01230             i2 = istb3 +j
01231             i3 = istc3 +j
01232             j1 = ista3 +3+j
01233             j2 = istb3 +3+j
01234             j3 = istc3 +3+j
01235          ELSE
01236 
01237             i1 = ista +m_buf1 +k
01238             i2 = istb +m_buf1 +k
01239             i3 = istc +m_buf1 +k
01240             j1 = ista +m_buf1 +ncha+k
01241             j2 = istb +m_buf1 +ncha+k
01242             j3 = istc +m_buf1 +ncha+k
01243          ENDIF
01244          IF    (chr .EQ. '+')   THEN
01245             m_b(i3) =    coef1*m_b(i1) +    coef2*m_b(i2)
01246             m_b(j3) = coef1**2*m_b(j1) + coef2**2*m_b(j2)
01247          ELSEIF(chr .EQ. '-')   THEN
01248             m_b(i3) = coef1*m_b(i1) - coef2*m_b(i2)
01249             m_b(j3) = coef1**2*m_b(j1) + coef2**2*m_b(j2)
01250          ELSEIF(chr .EQ. '*')   THEN
01251             m_b(j3) = (coef1*coef2)**2
01252      $           *(m_b(j1)*m_b(i2)**2 + m_b(j2)*m_b(i1)**2)
01253             m_b(i3) = coef1*m_b(i1) * coef2*m_b(i2)
01254          ELSEIF(chr .EQ. '/')   THEN
01255             IF(m_b(i2) .EQ. 0d0) THEN
01256                m_b(i3) = 0d0
01257                m_b(j3) = 0d0
01258             ELSE
01259 
01260 
01261                m_b(j3) = (coef1/coef2)**2 *m_b(j1) /m_b(i2)**2
01262      $                  +(coef1/coef2)**2 *m_b(j2) *(m_b(i1)/m_b(i2)**2)**2
01263                m_b(i3) = (coef1*m_b(i1) )/( coef2*m_b(i2))
01264             ENDIF
01265          ELSE
01266             GOTO 901
01267          ENDIF
01268       ENDDO
01269       RETURN
01270  900  WRITE(m_out,*) '+++++ GLK_Operat: non-equal no. bins ',ida,idb,idc
01271       WRITE(    6,*) '+++++ GLK_Operat: non-equal no. bins ',ida,idb,idc
01272       STOP
01273  901  WRITE(m_out,*) '+++++ GLK_Operat: wrong chr=',chr
01274       WRITE(    6,*) '+++++ GLK_Operat: wrong chr=',chr
01275       STOP
01276       END
01277 
01278       SUBROUTINE GLK_hinbo1(id,title,nchx,xl,xu)
01279 
01280       IMPLICIT NONE
01281       INCLUDE 'GLK.h'
01282       INTEGER           id,nchx
01283       DOUBLE PRECISION  xl,xu
01284       CHARACTER*80 title
01285       INTEGER           lact,ist,ist2
01286 
01287       CALL GLK_hadres(id,lact)
01288       IF(lact .EQ. 0) THEN
01289          CALL GLK_Stop1('+++STOP in GLK_hinbo1: wrong id=',id)
01290       ENDIF
01291       ist=m_index(lact,2)
01292       ist2   = ist+7
01293       nchx   = m_b(ist2 +1)
01294       xl     = m_b(ist2 +2)
01295       xu     = m_b(ist2 +3)
01296       title  = m_titlc(lact)
01297       END
01298 
01299       SUBROUTINE GLK_UnPak(id,a,chd1,idum)
01300 
01301 
01302 
01303 
01304       IMPLICIT NONE
01305       INCLUDE 'GLK.h'
01306       INTEGER           id,idum
01307       DOUBLE PRECISION  a(*)
01308       CHARACTER*(*) chd1
01309 
01310       INTEGER            lact,ist,ist2,iflag2,ityphi,local,nch,nchy,ib
01311 
01312       CALL GLK_hadres(id,lact)
01313       IF(lact .EQ. 0) goto 900
01314       ist   = m_index(lact,2)
01315       ist2  = ist+7
01316       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
01317       ityphi   = mod(iflag2,10)
01318       IF(ityphi .EQ. 1) THEN
01319          nch   = m_b(ist2 +1)
01320          local = ist +m_buf1
01321       ELSEIF(ityphi .EQ. 2) THEN
01322          nchy  = m_b(ist2+5)
01323          nch   = nch*nchy
01324          local = ist+ m_buf2
01325       ELSE
01326          CALL GLK_Stop1('+++GLK_UnPak: check type of histo id=',id)
01327       ENDIF
01328       do 10 ib=1,nch
01329       IF(chd1 .NE. 'ERRO') THEN
01330 
01331         a(ib) = m_b(local+ib)
01332       ELSE
01333 
01334         IF(ityphi .EQ. 2) goto 901
01335         a(ib) = dsqrt( dabs(m_b(local+nch+ib) ))
01336       ENDIF
01337    10 continue
01338       RETURN
01339  900  CALL GLK_Retu1('+++GLK_UnPak: nonexisting id=',id)
01340       RETURN
01341  901  CALL GLK_Retu1('+++GLK_UnPak: no errors, two-dim, id=',id)
01342       END
01343 
01344       SUBROUTINE GLK_Pak(id,a)
01345 
01346 
01347 
01348       IMPLICIT NONE
01349       INCLUDE 'GLK.h'
01350       INTEGER           id
01351       DOUBLE PRECISION  a(*)
01352 
01353       INTEGER           lact,ist,ist2,iflag2,ityphi,nch,local,ib,nchy
01354 
01355       CALL GLK_hadres(id,lact)
01356       IF(lact .EQ. 0) goto 900
01357       ist  = m_index(lact,2)
01358       ist2 = ist+7
01359 
01360       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
01361       ityphi   = mod(iflag2,10)
01362       IF(ityphi .EQ. 1) THEN
01363          nch   = m_b(ist2 +1)
01364          local = ist+m_buf1
01365       ELSEIF(ityphi .EQ. 2) THEN
01366          nchy  = m_b(ist2+5)
01367          nch   = nch*nchy
01368          local = ist+m_buf2
01369       ELSE
01370          CALL GLK_Stop1('+++GLK_Pak: wrong histo type, id=',id)
01371       ENDIF
01372       DO ib=1,nch
01373          m_b(local +ib) = a(ib)
01374       ENDDO
01375 
01376       m_index(lact,3)  = 1
01377       RETURN
01378   900 CONTINUE
01379       CALL GLK_Stop1('+++GLK_Pak: nonexisting id=',id)
01380       END
01381 
01382       SUBROUTINE GLK_Pake(id,a)
01383 
01384 
01385 
01386       IMPLICIT NONE
01387       INCLUDE 'GLK.h'
01388       INTEGER           id
01389       DOUBLE PRECISION  a(*)
01390 
01391       INTEGER           lact,ist,ist2,nch,iflag2,ityphi
01392       INTEGER           nb,ib
01393 
01394       CALL GLK_hadres(id,lact)
01395       IF(lact .EQ. 0) goto 901
01396       ist  = m_index(lact,2)
01397       ist2 = ist+7
01398       nch=m_b(ist2+1)
01399 
01400       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
01401       ityphi   = mod(iflag2,10)
01402       IF(ityphi .NE. 1) GOTO 900
01403       DO ib=1,nch
01404          m_b(ist+m_buf1+nch+ib) = a(ib)**2
01405       ENDDO
01406       CALL GLK_idopt( id,'ERRO')
01407       RETURN
01408   900 CALL GLK_Stop1('+++GLK_Pake: only for 1-dim hist, id=',id)
01409       RETURN
01410   901 CALL GLK_Stop1('+++GLK_Pake: nonexisting id=',id)
01411       END
01412 
01413 
01414       SUBROUTINE GLK_Range1(id,ylr,yur)
01415 
01416 
01417 
01418       IMPLICIT NONE
01419       INCLUDE 'GLK.h'
01420       INTEGER           id
01421       DOUBLE PRECISION  ylr,yur
01422 
01423       INTEGER           lact,ist,ist2,nch,ib,ioplog,iopsla,ioperb,iopsc1,iopsc2
01424       DOUBLE PRECISION  yl,yu
01425 
01426       CALL GLK_hadres(id,lact)
01427       IF(lact .EQ. 0) RETURN
01428       ist  = m_index(lact,2)
01429       ist2 = ist+7
01430       nch  = m_b(ist2 +1)
01431       yl   = m_b(ist+m_buf1+1)
01432       yu   = m_b(ist+m_buf1+1)
01433       DO ib=1,nch
01434          yl = min(yl,m_b(ist+m_buf1+ib))
01435          yu = max(yu,m_b(ist+m_buf1+ib))
01436       ENDDO
01437 
01438       yu = yu + 0.05*ABS(yu-yl)
01439 
01440 
01441 
01442       CALL GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2)
01443       IF(iopsc1 .EQ. 2) yl= m_b( ist +5)
01444       IF(iopsc2 .EQ. 2) yu= m_b( ist +6)
01445       ylr = yl
01446       yur = yu
01447       END
01448 
01449 
01450       SUBROUTINE GLK_hinbo2(id,nchx,xl,xu,nchy,yl,yu)
01451 
01452       IMPLICIT NONE
01453       INCLUDE 'GLK.h'
01454       INTEGER           id,nchx,nchy
01455       DOUBLE PRECISION  xl,xu,yl,yu
01456       INTEGER           lact,ist,ist2
01457 
01458       CALL GLK_hadres(id,lact)
01459       IF(lact .EQ. 0) goto 900
01460       ist  = m_index(lact,2)
01461       ist2 = ist+7
01462       nchx = m_b(ist2 +1)
01463       xl   = m_b(ist2 +2)
01464       xu   = m_b(ist2 +3)
01465       nchy = m_b(ist2 +5)
01466       yl   = m_b(ist2 +6)
01467       yu   = m_b(ist2 +7)
01468       RETURN
01469   900 CALL GLK_Stop1(' +++GLK_hinbo2: nonexisting histo id= ',id)
01470       END
01471 
01472 
01473       SUBROUTINE GLK_Ymaxim(id,wmax)
01474 
01475       IMPLICIT NONE
01476       INCLUDE 'GLK.h'
01477       INTEGER           id
01478       DOUBLE PRECISION  wmax
01479       INTEGER           lact,ist,jd,k
01480 
01481       IF(id .NE. 0) THEN
01482          CALL GLK_hadres(id,lact)
01483          IF(lact .EQ. 0) RETURN
01484          ist= m_index(lact,2)
01485          m_b(ist+6) =wmax
01486          CALL GLK_idopt(id,'YMAX')
01487       ELSE
01488          DO k=1,m_idmax
01489             IF(m_index(k,1) .EQ. 0) GOTO 20
01490             ist=m_index(k,2)
01491             jd =m_index(k,1)
01492             m_b(ist+6) =wmax
01493             CALL GLK_idopt(jd,'YMAX')
01494          ENDDO
01495  20      CONTINUE
01496       ENDIF
01497       END
01498 
01499       SUBROUTINE GLK_Yminim(id,wmin)
01500 
01501       IMPLICIT NONE
01502       INCLUDE 'GLK.h'
01503       INTEGER           id
01504       DOUBLE PRECISION  wmin
01505       INTEGER           lact,ist,k,jd
01506 
01507       IF(id .NE. 0) THEN
01508          CALL GLK_hadres(id,lact)
01509          IF(lact .EQ. 0) RETURN
01510          ist =m_index(lact,2)
01511          m_b(ist+5) =wmin
01512          CALL GLK_idopt(id,'YMIN')
01513       ELSE
01514          DO k=1,m_idmax
01515             IF(m_index(k,1) .EQ. 0) GOTO 20
01516             ist=m_index(k,2)
01517             jd =m_index(k,1)
01518             m_b(ist+5) =wmin
01519             CALL GLK_idopt(jd,'YMIN')
01520          ENDDO
01521  20      CONTINUE
01522       ENDIF
01523       END
01524 
01525       SUBROUTINE GLK_Reset(id,chd1)
01526 
01527       IMPLICIT NONE
01528       INCLUDE 'GLK.h'
01529       INTEGER       id
01530       CHARACTER*(*) chd1
01531       INTEGER  lact,ist,ist2,iflag2,ityphi,ist3,nchx,nch,local,nchy,j
01532 
01533       CALL GLK_hadres(id,lact)
01534       IF(lact .LE. 0) RETURN
01535       ist  =m_index(lact,2)
01536       ist2 = ist+7
01537 
01538       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
01539       ityphi   = mod(iflag2,10)
01540       IF(ityphi .EQ. 1) THEN
01541 
01542         ist3  = ist+11
01543         nchx  = m_b(ist2 +1)
01544         nch   = 2*nchx
01545         local = ist + m_buf1
01546       ELSEIF(ityphi .EQ. 2) THEN
01547 
01548         ist3  = ist+15
01549         nchx  = m_b(ist2 +1)
01550         nchy  = m_b(ist2 +5)
01551         nch   = nchx*nchy
01552         local = ist +m_buf2
01553       ELSE
01554          CALL GLK_Stop1('+++GLK_Reset: wrong type  id=',id)
01555       ENDIF
01556 
01557       DO j=ist3+1,local +nch
01558          m_b(j)    = 0d0
01559       ENDDO
01560 
01561       m_index(lact,3) = 0
01562       END
01563 
01564       SUBROUTINE GLK_Delet(id1)
01565 
01566 
01567 
01568 
01569       IMPLICIT NONE
01570       INCLUDE 'GLK.h'
01571       INTEGER           id1
01572 
01573       LOGICAL GLK_Exist
01574       INTEGER           id,lact,ist,ist2,nch,iflag2,ityphi,local,k,i,l,next,idec,nchx,nchy
01575 
01576       ID=ID1
01577       IF(id .EQ. 0) GOTO 300
01578       IF( .NOT. GLK_Exist(id)) GOTO 900
01579       CALL GLK_hadres(id,lact)
01580       ist  = m_index(lact,2)
01581       ist2 = ist+7
01582 
01583 
01584       idec    = nint(m_b(ist+2)-9d0-9d12)/10
01585       IF(idec .NE. id) WRITE(6,*)
01586      $     '++++GLK_DELET: ALARM! ID,IDEC= ',ID,IDEC
01587 
01588       nch  = m_b(ist2 +1)
01589       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
01590       ityphi   = MOD(iflag2,10)
01591       IF(ityphi .EQ. 1) THEN
01592 
01593         nchx  = m_b(ist2 +1)
01594         nch   = 2*nchx
01595 
01596         local = nch+m_buf1+1
01597       ELSEIF(ityphi .EQ. 2) THEN
01598 
01599         nchx  = m_b(ist2 +1)
01600         nchy  = m_b(ist2 +5)
01601         nch   = nchx*nchy
01602 
01603         local = nch+m_buf2+1
01604       ELSE
01605          CALL GLK_Stop1('+++GLK_Delet: wrong type id=',id)
01606       ENDIF
01607 
01608       next = ist+1 +local
01609 
01610       DO 15 k =next,m_length
01611       m_b(k-local)=m_b(k)
01612    15 CONTINUE
01613 
01614       m_length=m_length-local
01615 
01616       DO 20 k=m_length+1, m_length+local
01617    20 m_b(k)=0d0
01618 
01619       DO 25 l=lact+1,m_idmax
01620       IF(m_index(l,1) .NE. 0) m_index(l,2)=m_index(l,2)-local
01621    25 CONTINUE
01622 
01623       DO 30 l=lact+1,m_idmax
01624       m_index(l-1,1)=m_index(l,1)
01625       m_index(l-1,2)=m_index(l,2)
01626       m_index(l-1,3)=m_index(l,3)
01627       m_titlc(l-1)=m_titlc(l)
01628    30 CONTINUE
01629 
01630       m_index(m_idmax,1)=0
01631       m_index(m_idmax,2)=0
01632       m_index(m_idmax,3)=0
01633       do 50 k=1,80
01634    50 m_titlc(m_idmax)(k:k)=' '
01635       RETURN
01636 
01637 
01638   300 m_length=0
01639       DO 400 i=1,m_idmax
01640       DO 340 k=1,3
01641   340 m_index(i,k)=0
01642       DO 350 k=1,80
01643   350 m_titlc(i)(k:k)=' '
01644  400  CONTINUE
01645       RETURN
01646 
01647  900  CONTINUE
01648       CALL GLK_Retu1(' +++GLK_DELET: nonexisting histo id= ',id)
01649       END
01650 
01651 
01652       SUBROUTINE GLK_Copch(ch1,ch2)
01653 
01654       IMPLICIT NONE
01655 
01656       CHARACTER*80 ch1,ch2
01657       LOGICAL met
01658       INTEGER      i
01659 
01660       met = .FALSE.
01661       DO i=1,80
01662          IF( ch1(i:i) .EQ. '$' .or. met )   THEN
01663             ch2(i:i)=' '
01664             met=.TRUE.
01665          ELSE
01666             ch2(i:i)=ch1(i:i)
01667          ENDIF
01668       ENDDO
01669       END
01670 
01671       INTEGER FUNCTION GLK_jadre2(id)
01672 
01673 
01674 
01675 
01676       IMPLICIT NONE 
01677       INCLUDE 'GLK.h'
01678       INTEGER           id,i
01679 
01680       GLK_jadre2=0
01681       DO 1 i=1,m_idmax
01682       IF(m_index(i,1) .EQ. id) goto 2
01683     1 CONTINUE
01684 
01685       RETURN
01686 
01687     2 GLK_jadre2=i
01688       END
01689 
01690       SUBROUTINE GLK_hadres(id1,jadres)
01691 
01692 
01693 
01694 
01695 
01696 
01697 
01698 
01699       IMPLICIT NONE
01700       INCLUDE 'GLK.h'
01701       INTEGER       id1,jadres
01702       INTEGER       ist,i,id
01703 
01704       INTEGER iguess,jdlast,idlast
01705       DATA    iguess,jdlast,idlast /-2141593,-3141593,-3141593/
01706       SAVE    iguess,jdlast,idlast
01707 
01708       id=id1
01709 
01710 
01711       IF(id .EQ. 0) THEN
01712          DO i=1,m_idmax
01713             IF(m_index(i,1) .EQ. 0) GOTO 44
01714          ENDDO
01715          CALL GLK_Stop1('+++GLK_hadres: Too short m_index=',m_index)
01716  44      CONTINUE
01717          jadres = i
01718          RETURN
01719       ENDIF
01720 
01721 
01722       IF(jdlast .EQ. -3141593) GOTO 10
01723       IF(iguess .EQ. -2141593) GOTO 10
01724       IF(iguess .EQ. 0) GOTO 10
01725       IF(jdlast .EQ. 0) GOTO 10
01726 
01727 
01728       IF(jdlast .LT. 1 .OR. jdlast .GT. m_idmax) THEN
01729          WRITE(6,*) '+++++ hadres: jdlast=',jdlast
01730       ENDIF
01731       IF(m_index(jdlast,1) .EQ. id) THEN
01732          jadres = jdlast
01733 
01734 
01735          GOTO 20
01736       ENDIF
01737 
01738 
01739       IF(iguess .LT. 1 .OR. iguess .GT. m_idmax)  THEN
01740          WRITE(6,*)'+++++ hadres: iguess=',iguess
01741       ENDIF
01742       IF(m_index(iguess,1) .EQ. id) THEN
01743          jadres = iguess
01744 
01745 
01746          GOTO 20
01747       ENDIF
01748 
01749 
01750 
01751 
01752  10   CONTINUE
01753 
01754       DO i=1,m_idmax
01755          jadres=i
01756          IF(m_index(i,1) .EQ. id) GOTO 20
01757       ENDDO
01758 
01759 
01760 
01761       jadres=0
01762       RETURN
01763 
01764 
01765 
01766  20   CONTINUE
01767 
01768 
01769       DO i=1,m_idmax
01770          IF(m_index(i,1) .EQ. 0) GOTO 40
01771          IF(m_index(i,1) .EQ. idlast) THEN
01772             ist=m_index(i,2)
01773             IF(ist .GT. 0 .AND. ist .LT. m_LenmB) m_b(ist +7) = jadres
01774 
01775             GOTO 40
01776          ENDIF
01777       ENDDO
01778  40   CONTINUE
01779 
01780       iguess = m_b( m_index(jadres,2) +7)
01781       jdlast = jadres
01782       idlast = id
01783       END
01784 
01785 
01786 
01787 
01788 
01789 
01790       SUBROUTINE GLK_ReadFile(Dname)
01791 
01792       IMPLICIT NONE
01793       INCLUDE 'GLK.h'
01794       SAVE
01795       INTEGER ninph
01796       CHARACTER*60 Dname
01797 
01798       CALL GLK_Initialize
01799 
01800       WRITE(    *,*) 'GLK_ReadFile: Reading histos from ', Dname
01801       WRITE(m_out,*) 'GLK_ReadFile: Reading histos from ', Dname
01802       ninph = 21
01803       OPEN(ninph,file=Dname)           
01804       CALL GLK_hrfile(ninph,' ',' ')   
01805       CALL GLK_hrin(0,0,0)             
01806       CALL GLK_hrend(' ')              
01807       END
01808 
01809       SUBROUTINE GLK_WriteFile(Dname)
01810 
01811       IMPLICIT NONE
01812       INCLUDE 'GLK.h'
01813       SAVE
01814       INTEGER nouth
01815       CHARACTER*60 Dname
01816 
01817       CALL GLK_Initialize
01818 
01819       WRITE(    *,*) 'GLK_WriteFile: Writing histos into ', Dname
01820       WRITE(m_out,*) 'GLK_WriteFile: Writing histos into ', Dname
01821       nouth=22
01822       OPEN(nouth,file=Dname)           
01823       CALL GLK_hrfile(nouth,' ',' ')   
01824       CALL GLK_hrout(0,0,' ')          
01825       CALL GLK_hrend(' ')              
01826       END
01827 
01828       SUBROUTINE GLK_hrfile(nhruni,chd1,chd2)
01829 
01830       IMPLICIT NONE
01831       CHARACTER*(*) chd1,chd2
01832       INCLUDE 'GLK.h'
01833       SAVE
01834       INTEGER nhruni
01835 
01836       CALL GLK_Initialize
01837       m_huni=nhruni
01838       END
01839 
01840       SUBROUTINE GLK_hrout(idum1,idum2,chdum)
01841 
01842       IMPLICIT NONE
01843       CHARACTER*8 chdum
01844 
01845       INCLUDE 'GLK.h'
01846       SAVE
01847       INTEGER i,k,last,idum1,idum2
01848 
01849       CALL GLK_Initialize
01850       CALL GLK_hadres(0,last)
01851       IF(last.EQ.0) GOTO 900
01852       m_LenInd = last -1 
01853       WRITE(m_huni,'(6i10)')    m_version, m_LenInd, m_LenmB, m_Length
01854       WRITE(m_huni,'(6i10)')    ((m_index(i,k),k=1,3),i=1,m_LenInd)
01855       WRITE(m_huni,'(a80)')     (m_titlc(i),          i=1,m_LenInd)
01856       WRITE(m_huni,'(3d24.16)') (m_b(i), i=1,m_length)
01857       RETURN
01858  900  CONTINUE
01859       WRITE(m_out,*) '+++ GLK_hrout: no space in index'
01860       WRITE(    *,*) '+++ GLK_hrout: no space in index'
01861       END
01862 
01863 
01864       SUBROUTINE GLK_hrin(idum1,idum2,idum3)
01865 
01866 
01867 
01868 
01869 
01870 
01871 
01872       IMPLICIT NONE
01873       INCLUDE 'GLK.h'
01874       INTEGER        idum1,idum2,idum3
01875       INTEGER        l,lact,lenold,istn,idn,k,lenind3,nvrs3,nouth
01876       INTEGER        i,lengt3,lenma3
01877 
01878       INTEGER        lndex(m_idmax,3)
01879       CHARACTER*80   titld(m_idmax)
01880       LOGICAL GLK_Exist
01881 
01882       CALL GLK_Initialize
01883       nouth=m_huni
01884 
01885       READ(nouth,'(6i10)')   nvrs3,lenind3,lenma3,lengt3
01886       IF(m_length+lengt3 .GE. m_LenmB) GOTO 900
01887 
01888       IF(m_version .NE. nvrs3) WRITE(m_out,*)
01889      $ '+++++WARNING (GLK_hrin): histos produced by older version',nvrs3
01890       IF(m_version .NE. nvrs3) WRITE(6,*)
01891      $ '+++++WARNING (GLK_hrin): histos produced by older version',nvrs3
01892       DO i=1,m_idmax
01893          DO k=1,3
01894             lndex(i,k)=0
01895          ENDDO
01896       ENDDO
01897 
01898       IF(nvrs3. LT. 130) lenind3 = m_idmax
01899 
01900       READ(nouth,'(6i10)')  ((lndex(i,k),k=1,3),i=1,lenind3)
01901       READ(nouth,'(a80)')   (titld(i),          i=1,lenind3)
01902       lenold=m_length
01903 
01904       m_length=m_length+lengt3
01905       READ(nouth,'(3d24.16)') (m_b(i),i=lenold+1,m_length)
01906 
01907 
01908       CALL GLK_hadres(0,lact)
01909       DO l=1,lenind3
01910          IF(lact .EQ. 0) GOTO 901
01911          idn= lndex(l,1)
01912          IF(idn .EQ. 0) GOTO 100
01913 
01914  10      CONTINUE
01915          IF( GLK_Exist(idn) ) THEN
01916             idn = idn +1000000*(idn/iabs(idn))
01917             GOTO 10
01918          ENDIF
01919          m_index(lact,1)=idn
01920          m_index(lact,2)=lndex(l,2)+lenold
01921          m_index(lact,3)=lndex(l,3)
01922          m_titlc(lact)  =titld(l)
01923 
01924          istn  = m_index(lact,2)
01925          m_b(istn +2)  = 9d12 +     idn*10 +9d0
01926          lact=lact+1
01927       ENDDO
01928   100 CONTINUE
01929       RETURN
01930 
01931  900  CONTINUE
01932       CALL GLK_Stop1('++++ GLK_hrin: to litle space, m_LenmB= ',m_LenmB)
01933  901  CONTINUE
01934       CALL GLK_Stop1('++++ GLK_hrin: to many histos, m_idmax= ',m_idmax)
01935       END
01936 
01937 
01938       SUBROUTINE GLK_hrin2(idum1,idum2,idum3)
01939 
01940 
01941 
01942 
01943 
01944       IMPLICIT NONE
01945       INCLUDE 'GLK.h'
01946       INTEGER         idum1,idum2,idum3
01947 
01948       DOUBLE PRECISION  bz(m_LenmB)
01949       INTEGER           indez(m_idmax,3)
01950       CHARACTER*80      titlz(m_idmax)
01951       LOGICAL           GLK_Exist
01952       INTEGER           nouth,ist3,nchx,ist,ist2,ist3z,nchxz,istz
01953       INTEGER           ist2z,lact,lenmaz,lengtz,nvrsz,lenindz,lz,id,i,k
01954 
01955       CALL GLK_Initialize
01956       nouth=m_huni
01957 
01958       READ(nouth,'(6i10)')   nvrsz,lenindz,lenmaz,lengtz
01959 
01960       IF(m_version .NE. nvrsz) WRITE(m_out,*)
01961      $ '++++WARNING (GLK_hrin2): histos produced by older version',nvrsz
01962       IF(m_version .NE. nvrsz) WRITE(6,*)
01963      $ '++++WARNING (GLK_hrin2): histos produced by older version',nvrsz
01964 
01965 
01966       IF(nvrsz. LT. 130) lenindz = m_idmax
01967       DO i=1,m_idmax
01968          DO k=1,3
01969             indez(i,k)=0
01970          ENDDO
01971       ENDDO
01972 
01973       READ(nouth,'(6i10)')    ((indez(i,k),k=1,3),i=1,lenindz)
01974       READ(nouth,'(a80)')     (titlz(i) ,         i=1,lenindz)
01975       READ(nouth,'(3d24.16)') (bz(i),i=1,lengtz)
01976 
01977 
01978       DO lz=1,lenindz
01979          id= indez(lz,1)
01980          IF(id .EQ. 0) GOTO 200
01981          IF( .NOT. GLK_Exist(id)) THEN
01982             CALL GLK_Retu1('GLK_hrin2: unmached skipped histo ID=', id)
01983             GOTO 100
01984          ENDIF
01985 
01986          CALL GLK_hadres(id,lact)
01987          ist  = m_index(lact,2)
01988          ist2 = ist+7
01989          ist3 = ist+11
01990          nchx = m_b(ist2 +1)
01991 
01992          istz   = indez(lz,2)
01993          ist2z  = istz+7
01994          ist3z  = istz+11
01995          nchxz  = bz(ist2z +1)
01996          IF(nchx .NE. nchxz) THEN
01997             CALL GLK_Retu1('GLK_hrin2: non-equal bins, skipped ID=', id)
01998             GOTO 100
01999          ENDIF
02000 
02001 
02002          m_index(lact,3) = m_index(lact,3)+indez(lact,3)
02003 
02004          DO i=1,12
02005             m_b(ist3+i)=m_b(ist3+i) +bz(ist3z+i)
02006          ENDDO
02007 
02008          m_b(ist3+13)=max(m_b(ist3+13),m_b(ist3z+13))
02009 
02010          DO i= 1, 2*nchx
02011             m_b(ist+m_buf1+i)=m_b(ist+m_buf1+i) +bz(istz+m_buf1+i)
02012          ENDDO
02013  100     CONTINUE
02014       ENDDO
02015  200  CONTINUE
02016       END
02017 
02018       SUBROUTINE GLK_hrend(chdum)
02019 
02020       IMPLICIT NONE
02021       INCLUDE 'GLK.h'
02022       CHARACTER*(*) chdum
02023 
02024       CLOSE(m_huni)
02025       END
02026 
02027 
02028 
02029 
02030 
02031 
02032 
02033 
02034 
02035 
02036       SUBROUTINE GLK_PlInitialize(Lint,TeXfile)
02037 
02038 
02039 
02040 
02041 
02042 
02043 
02044 
02045 
02046 
02047       IMPLICIT NONE
02048       INCLUDE 'GLK.h'
02049       SAVE
02050       INTEGER Lint,noufig
02051       CHARACTER*60  TeXfile
02052 
02053 
02054       CALL GLK_PlInt(Lint)             
02055       noufig=11                        
02056       OPEN(noufig,file=TeXfile)        
02057       CALL GLK_PlCap(noufig)           
02058       END
02059 
02060       SUBROUTINE GLK_PlEnd
02061 
02062       IMPLICIT NONE
02063       INCLUDE 'GLK.h'
02064       SAVE
02065 
02066 
02067 
02068       IF( ABS(m_lint) .NE. 1) THEN
02069          WRITE(m_ltx,'(2A)') m_BS,'end{document}'
02070       ENDIF
02071       CLOSE(m_ltx)
02072       END
02073 
02074       SUBROUTINE GLK_PlInt(Lint)
02075 
02076       IMPLICIT NONE
02077       INCLUDE 'GLK.h'
02078       SAVE
02079       INTEGER Lint
02080 
02081       m_lint = Lint
02082       END
02083 
02084       SUBROUTINE GLK_PlCap(LtxUnit)
02085 
02086       IMPLICIT NONE
02087       INCLUDE 'GLK.h'
02088       INTEGER   LtxUnit,i,k
02089 
02090       CALL GLK_Initialize
02091       m_KeyTit= 0
02092       DO i=1,m_titlen
02093          DO k=1,80
02094             m_titch(i)(k:k)=' '
02095          ENDDO
02096       ENDDO
02097 
02098       m_tline = 1
02099       m_ltx=IABS(LtxUnit)
02100 
02101       IF( ABS(m_lint) .EQ. 0) THEN
02102 
02103          WRITE(m_ltx,'(A,A)') m_BS,'documentclass[12pt]{article}'
02104 
02105          WRITE(m_ltx,'(A,A)') m_BS,'textwidth  = 16cm'
02106          WRITE(m_ltx,'(A,A)') m_BS,'textheight = 18cm'
02107          WRITE(m_ltx,'(A,A)') m_BS,'begin{document}'
02108          WRITE(m_ltx,'(A)') '  '
02109       ELSEIF( ABS(m_lint) .EQ. 1) THEN
02110 
02111          WRITE(m_ltx,'(A)') '  '
02112       ELSEIF( ABS(m_lint) .EQ. 2) THEN
02113 
02114 
02115 
02116          WRITE(m_ltx,'(A,A)') m_BS,'documentclass[12pt,dvips]{article}'
02117          WRITE(m_ltx,'(A,A)') m_BS,'usepackage{amsmath}'
02118          WRITE(m_ltx,'(A,A)') m_BS,'usepackage{amssymb}'
02119 
02120          WRITE(m_ltx,'(A,A)') m_BS,'usepackage{epsfig}'
02121          WRITE(m_ltx,'(A,A)') m_BS,'usepackage{epic}'
02122          WRITE(m_ltx,'(A,A)') m_BS,'usepackage{eepic}'
02123          WRITE(m_ltx,'(A,A)') m_BS,'usepackage{color}' 
02124 
02125 
02126 
02127 
02128 
02129 
02130 
02131 
02132          WRITE(m_ltx,'(A,A)') m_BS,'begin{document}'
02133          WRITE(m_ltx,'(A,A)') m_BS,'pagestyle{empty}'
02134          WRITE(m_ltx,'(A)') '  '
02135       ELSE
02136          CALL GLK_Stop1('+++STOP in GLK_PlInt, wrong m_lint=',m_lint)
02137       ENDIF
02138       END
02139 
02140 
02141       SUBROUTINE GLK_Plot(id,ch1,ch2,kdum)
02142 
02143       IMPLICIT NONE
02144       INCLUDE 'GLK.h'
02145       CHARACTER CH1,CH2,CHR
02146       CHARACTER*80 TITLE
02147       INTEGER          id,kdum
02148       DOUBLE PRECISION YY(m_MaxNb),YER(m_MaxNb)
02149       LOGICAL GLK_EXIST
02150       INTEGER          idum,kax,kay,ioplog,iopsla,ioperb,iopsc1,iopsc2
02151       INTEGER          ker,nchx
02152       DOUBLE PRECISION XL,XU,DXL,DXU,yl,yu
02153 
02154       DATA CHR /' '/
02155 
02156       IF(.NOT.GLK_EXIST(ID)) GOTO 900
02157 
02158       CALL GLK_UNPAK(ID,YY ,'    ',IDUM)
02159       CALL GLK_UNPAK(ID,YER,'ERRO',IDUM)
02160       CALL GLK_HINBO1(ID,TITLE,NCHX,DXL,DXU)
02161       XL = DXL
02162       XU = DXU
02163       CALL GLK_RANGE1(ID,YL,YU)
02164       kax=1200
02165       kay=1200
02166       IF(CH1 .EQ. 'S') THEN
02167 
02168         BACKSPACE(m_ltx)
02169         BACKSPACE(m_ltx)
02170       ELSE
02171 
02172         CHR=CH1
02173         CALL GLK_Plfram1(ID,kax,kay)
02174       ENDIF
02175       WRITE(m_ltx,'(A)')     '%========== next plot (line) =========='
02176       WRITE(m_ltx,'(A,I10)') '%==== HISTOGRAM ID=',ID
02177       WRITE(m_ltx,'(A,A70 )')'% ',TITLE
02178 
02179       CALL GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2)
02180       ker = ioperb-1
02181       IF (iopsla .EQ. 2)  CHR='C'
02182 
02183       IF (CH2 .EQ. 'B')   CHR=' '
02184       IF (CH2 .EQ. '*')   CHR='*'
02185       IF (CH2 .EQ. 'C')   CHR='C'
02186 
02187       IF     (CHR .EQ. ' ') THEN
02188 
02189           CALL GLK_PlHist(kax,kay,NCHX,YL,YU,YY,KER,YER)
02190       ELSE IF(CHR .EQ. '*') THEN
02191 
02192           CALL GLK_PlHis2(kax,kay,NCHX,YL,YU,YY,KER,YER)
02193       ELSE IF(CHR .EQ. 'C') THEN
02194 
02195           CALL GLK_PlCirc(kax,kay,NCHX,YL,YU,YY)
02196       ENDIF
02197 
02198 
02199 
02200       WRITE(m_ltx,'(2A)') m_BS,'end{picture} % close entire picture '
02201       WRITE(m_ltx,'(2A)') m_BS,'end{figure}'
02202 
02203       RETURN
02204   900 CALL GLK_Retu1('+++GLK_PLOT: Nonexistig histo, skipped, id=' ,ID)
02205       END
02206 
02207       SUBROUTINE GLK_Plfram1(ID,kax,kay)
02208 
02209       IMPLICIT NONE
02210       INCLUDE 'GLK.h'
02211       INTEGER           ID,kax,kay
02212       CHARACTER*80 title
02213       DOUBLE PRECISION   TIPSY(20),TIPSX(20)
02214       DOUBLE PRECISION   XL,DXL,XU,DXU
02215       INTEGER            ntipy,ntipx,nchx,icont
02216       DOUBLE PRECISION   yu,yl
02217       DATA ICONT/0/
02218 
02219       ICONT=ICONT+1
02220       CALL GLK_HINBO1(ID,TITLE,NCHX,DXL,DXU)
02221       XL = DXL
02222       XU = DXU
02223       CALL GLK_RANGE1(ID,YL,YU)
02224 
02225       IF(ICONT .GT. 1) WRITE(m_ltx,'(2A)') m_BS,'newpage'
02226 
02227 
02228 
02229       WRITE(m_ltx,'(A)') ' '
02230       WRITE(m_ltx,'(A)') ' '
02231       WRITE(m_ltx,'(A)') 
02232 '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     $%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
02233       WRITE(m_ltx,'(A)') 
02234 '%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     $%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
02235       WRITE(m_ltx,'(2A)') m_BS,'begin{figure}[!ht]'
02236       WRITE(m_ltx,'(2A)') m_BS,'centering'
02237 
02238 
02239 
02240       WRITE(m_ltx,'(4A)') m_BS,'caption{',m_BS,'small'
02241       IF(M_KEYTIT.EQ.0) THEN
02242         WRITE(m_ltx,'(A)')     TITLE
02243       ELSE
02244         WRITE(m_ltx,'(A)')     m_titch(1)
02245       ENDIF
02246       WRITE(m_ltx,'(A)') '}'
02247 
02248 
02249 
02250       WRITE(m_ltx,'(A)') '% =========== big frame, title etc. ======='
02251       WRITE(m_ltx,'(4A)') m_BS,'setlength{',m_BS,'unitlength}{0.1mm}'
02252       WRITE(m_ltx,'(2A)') m_BS,'begin{picture}(1600,1500)'
02253       WRITE(m_ltx,'(4A)')
02254      $     m_BS,'put(0,0){',m_BS,'framebox(1600,1500){ }}'
02255       WRITE(m_ltx,'(A)') '% =========== small frame, labeled axis ==='
02256       WRITE(m_ltx,'(4A,I4,A,I4,A)')
02257      $    m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')'
02258       WRITE(m_ltx,'(4A,I4,A,I4,A)')
02259      $    m_BS,'put(0,0){',m_BS,'framebox( ',kax,',',kay,'){ }}'
02260       WRITE(m_ltx,'(A)') '% =========== x and y axis ================'
02261       CALL GLK_SAxisX(kax,XL,XU,NTIPX,TIPSX)
02262       CALL GLK_SAxisY(kay,YL,YU,NTIPY,TIPSY)
02263       WRITE(m_ltx,'(3A)') m_BS,'end{picture}}'
02264      $                ,'% end of plotting labeled axis'
02265       END
02266 
02267       SUBROUTINE GLK_SAxisX(kay,YL,YU,NLT,TIPSY)
02268 
02269 
02270       IMPLICIT NONE
02271       INCLUDE 'GLK.h'
02272       INTEGER           kay,NLT
02273       DOUBLE PRECISION  YL,YU,TIPSY(20)
02274 
02275       INTEGER           LY,JY,n,nts,k,lex
02276       DOUBLE PRECISION  DY,pds,scmx,p0s,ddys,yy0l,ddyl,pdl,p0l,yy0s
02277 
02278       DY= ABS(YU-YL)
02279       LY = NINT( LOG10(DY) -0.4999999d0 )
02280       JY = NINT(DY/10d0**LY)
02281       DDYL = DY*10d0**(-LY)
02282       IF( JY .EQ. 1)             DDYL = 10d0**LY*0.25d0
02283       IF( JY .GE. 2.AND.JY .LE. 3) DDYL = 10d0**LY*0.5d0
02284       IF( JY .GE. 4.AND.JY .LE. 6) DDYL = 10d0**LY*1.0d0
02285       IF( JY .GE. 7)             DDYL = 10d0**LY*2.0d0
02286       WRITE(m_ltx,'(A)') '% .......GLK_SAxisX........ '
02287       WRITE(m_ltx,'(A,I4)') '%  JY= ',JY
02288 
02289       NLT = INT(DY/DDYL)
02290       NLT = MAX0(MIN0(NLT,20),1)+1
02291       YY0L = NINT(YL/DDYL+0.5d0)*DDYL
02292       DDYS = DDYL/10d0
02293       YY0S = NINT(YL/DDYS+0.4999999d0)*DDYS
02294       P0L = kay*(YY0L-YL)/(YU-YL)
02295       PDL = kay*DDYL/(YU-YL)
02296       P0S = kay*(YY0S-YL)/(YU-YL)
02297       PDS = kay*DDYS/(YU-YL)
02298       NLT = INT(ABS(YU-YY0L)/DDYL+0.0000001d0)+1
02299       NTS = INT(ABS(YU-YY0S)/DDYS+0.0000001d0)+1
02300       DO 41 N=1,NLT
02301       TIPSY(N) =YY0L+ DDYL*(N-1)
02302   41  CONTINUE
02303       WRITE(m_ltx,1000)
02304      $ m_BS,'multiput('  ,P0L,  ',0)('  ,PDL,  ',0){'  ,NLT,  '}{',
02305      $ m_BS,'line(0,1){25}}',
02306      $ m_BS,'multiput('  ,P0S,  ',0)('  ,PDS,  ',0){'  ,NTS,  '}{',
02307      $ m_BS,'line(0,1){10}}'
02308       WRITE(m_ltx,1001)
02309      $ m_BS,'multiput('  ,P0L,  ','  ,kay,  ')('  ,PDL,  ',0){'  ,NLT,
02310      $ '}{'  ,m_BS,  'line(0,-1){25}}',
02311      $ m_BS,'multiput('  ,P0S,  ','  ,kay,  ')('  ,PDS,  ',0){'  ,NTS,
02312      $ '}{'  ,m_BS,  'line(0,-1){10}}'
02313  1000 FORMAT(2A,F8.2,A,F8.2,A,I4,3A)
02314  1001 FORMAT(2A,F8.2,A,I4,A,F8.2,A,I4,3A)
02315 
02316       SCMX = DMAX1(DABS(YL),DABS(YU))
02317       LEX  = NINT( LOG10(SCMX) -0.50001)
02318       DO 45 N=1,NLT
02319       K = NINT(kay*(TIPSY(N)-YL)/(YU-YL))
02320       IF(LEX .LT. 2.AND.LEX .GT. -1) THEN
02321 
02322       WRITE(m_ltx,'(2A,I4,5A,F8.3,A)')
02323      $ m_BS,'put(',K,',-25){',m_BS,'makebox(0,0)[t]{',m_BS,'large $ ',
02324      $ TIPSY(N), ' $}}'
02325       ELSE
02326 
02327       WRITE(m_ltx,'(2A,I4,5A,F8.3,2A,I4,A)')
02328      $ m_BS,'put(' ,K, ',-25){',m_BS,'makebox(0,0)[t]{',m_BS,'large $ ',
02329      $ TIPSY(N)/(10d0**LEX),m_BS,'cdot 10^{',LEX,'} $}}'
02330       ENDIF
02331   45  CONTINUE
02332       END
02333 
02334       SUBROUTINE GLK_SAxisY(kay,yl,yu,nlt,tipsy)
02335 
02336 
02337       IMPLICIT NONE
02338       INCLUDE 'GLK.h'
02339       INTEGER          kay,nlt
02340       DOUBLE PRECISION yl,yu,tipsy(20)
02341 
02342       DOUBLE PRECISION dy,ddyl,z0l,scmx,yy0s,ddys,yy0l,p0l,pds,p0s,pdl
02343       INTEGER          ly,jy,n,nts,k,lex
02344 
02345       DY= ABS(YU-YL)
02346       LY = NINT( LOG10(DY) -0.49999999d0 )
02347       JY = NINT(DY/10d0**LY)
02348       DDYL = DY*10d0**(-LY)
02349       IF( JY .EQ. 1)             DDYL = 10d0**LY*0.25d0
02350       IF( JY .GE. 2.AND.JY .LE. 3) DDYL = 10d0**LY*0.5d0
02351       IF( JY .GE. 4.AND.JY .LE. 6) DDYL = 10d0**LY*1.0d0
02352       IF( JY .GE. 7)             DDYL = 10d0**LY*2.0d0
02353       WRITE(m_ltx,'(A)') '% .......GLK_SAxisY........ '
02354       WRITE(m_ltx,'(A,I4)') '%  JY= ',JY
02355 
02356       NLT = INT(DY/DDYL)
02357       NLT = MAX0(MIN0(NLT,20),1)+1
02358       YY0L = NINT(YL/DDYL+0.4999999d0)*DDYL
02359       DDYS = DDYL/10d0
02360       YY0S = NINT(YL/DDYS+0.5d0)*DDYS
02361       P0L = kay*(YY0L-YL)/(YU-YL)
02362       PDL = kay*DDYL/(YU-YL)
02363       P0S = kay*(YY0S-YL)/(YU-YL)
02364       PDS = kay*DDYS/(YU-YL)
02365       NLT= INT(ABS(YU-YY0L)/DDYL+0.0000001d0) +1
02366       NTS= INT(ABS(YU-YY0S)/DDYS+0.0000001d0) +1
02367       DO 41 N=1,NLT
02368       TIPSY(N) =YY0L+ DDYL*(N-1)
02369   41  CONTINUE
02370 
02371       WRITE(m_ltx,1000)
02372      $ m_BS,'multiput(0,'  ,P0L,  ')(0,'  ,PDL  ,'){'  ,NLT,  '}{',
02373      $ m_BS,'line(1,0){25}}',
02374      $ m_BS,'multiput(0,'  ,P0S,  ')(0,'  ,PDS,  '){'  ,NTS,  '}{',
02375      $ m_BS,'line(1,0){10}}'
02376       WRITE(m_ltx,1001)
02377      $ m_BS,'multiput('  ,kay,  ','  ,P0L,  ')(0,'  ,PDL,  '){'  ,NLT,
02378      $ '}{',m_BS,'line(-1,0){25}}',
02379      $ m_BS,'multiput('  ,kay,  ','  ,P0S,  ')(0,'  ,PDS,  '){'  ,NTS,
02380      $ '}{',m_BS,'line(-1,0){10}}'
02381  1000 FORMAT(2A,F8.2,A,F8.2,A,I4,3A)
02382  1001 FORMAT(2A,I4,A,F8.2,A,F8.2,A,I4,3A)
02383 
02384       Z0L = kay*(-YL)/(YU-YL)
02385       IF(Z0L .GT. 0D0.AND.Z0L .LT. FLOAT(kay))
02386      $      WRITE(m_ltx,'(2A,F8.2,3A,I4,A)')
02387      $       m_BS,'put(0,'  ,Z0L,  '){',m_BS,'line(1,0){'  ,kay,  '}}'
02388 
02389       SCMX = DMAX1(DABS(YL),DABS(YU))
02390       LEX  = NINT( LOG10(SCMX) -0.50001d0)
02391       DO 45 N=1,NLT
02392       K = NINT(kay*(TIPSY(N)-YL)/(YU-YL))
02393       IF(LEX .LT. 2.AND.LEX .GT. -1) THEN
02394 
02395       WRITE(m_ltx,'(2A,I4,5A,F8.3,A)')
02396      $  m_BS,'put(-25,'  ,K,  '){',m_BS,'makebox(0,0)[r]{',
02397      $  m_BS,'large $ '  ,TIPSY(N),  ' $}}'
02398       ELSE
02399 
02400       WRITE(m_ltx,'(2A,I4,5A,F8.3,2A,I4,A)')
02401      $ m_BS,'put(-25,'  ,K,  '){',m_BS,'makebox(0,0)[r]{',
02402      $ m_BS,'large $ '
02403      $ ,TIPSY(N)/(10d0**LEX),  m_BS,'cdot 10^{'  ,LEX,  '} $}}'
02404       ENDIF
02405   45  CONTINUE
02406       END
02407 
02408       SUBROUTINE GLK_PlHist(kax,kay,nchx,yl,yu,yy,ker,yer)
02409 
02410 
02411 
02412       IMPLICIT NONE
02413       INCLUDE 'GLK.h'
02414       INTEGER           kax,kay,nchx,ker
02415       DOUBLE PRECISION  yl,yu,yy(*),yer(*)
02416       CHARACTER*80 FMT1
02417 
02418       INTEGER           IX0,ix2,idx,ie,ierr,idy,ib,iy0,iy1,ix1
02419 
02420       WRITE(m_ltx,'(4A,I4,A,I4,A)')
02421      $  m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')'
02422       WRITE(m_ltx,'(A)') '% ========== plotting primitives =========='
02423 
02424       IF(m_tline .EQ. 1) THEN
02425          WRITE(m_ltx,'(2A)') m_BS,'thicklines '
02426       ELSE
02427          WRITE(m_ltx,'(2A)') m_BS,'thinlines '
02428       ENDIF
02429 
02430       WRITE(m_ltx,'(8A)')
02431      $ m_BS,'newcommand{',m_BS,'x}[3]{',m_BS,'put(#1,#2){',
02432      $ m_BS,'line(1,0){#3}}}'
02433       WRITE(m_ltx,'(8A)')
02434      $ m_BS,'newcommand{',m_BS,'y}[3]{',m_BS,'put(#1,#2){',
02435      $ m_BS,'line(0,1){#3}}}'
02436       WRITE(m_ltx,'(8A)')
02437      $ m_BS,'newcommand{',m_BS,'z}[3]{',m_BS,'put(#1,#2){',
02438      $ m_BS,'line(0,-1){#3}}}'
02439 
02440       WRITE(m_ltx,'(8A)')
02441      $   m_BS,'newcommand{',m_BS,'e}[3]{',
02442      $   m_BS,'put(#1,#2){',m_BS,'line(0,1){#3}}}'
02443       IX0=0
02444       IY0=0
02445       DO 100 IB=1,NCHX
02446       IX1 = NINT(kax*(IB-0.00001)/NCHX)   
02447       IY1 = NINT(kay*(YY(IB)-YL)/(YU-YL)) 
02448       IDY = IY1-IY0
02449       IDX = IX1-IX0
02450       FMT1 = '(2(2A,I4,A,I4,A,I4,A))'
02451       IF( IDY .GE. 0) THEN
02452          IF(IY1 .GE. 0.AND.IY1 .LE. kay)
02453      $   WRITE(m_ltx,FMT1) m_BS,'y{',IX0,'}{',IY0,'}{',IDY,'}',
02454      $                     m_BS,'x{',IX0,'}{',IY1,'}{',IDX,'}'
02455       ELSE
02456          IF(IY1 .GE. 0.AND.IY1 .LE. kay)
02457      $   WRITE(m_ltx,FMT1) m_BS,'z{',IX0,'}{',IY0,'}{',-IDY,'}',
02458      $                     m_BS,'x{',IX0,'}{',IY1,'}{',IDX,'}'
02459       ENDIF
02460       IX0=IX1
02461       IY0=IY1
02462       IF(KER .EQ. 1) THEN
02463         IX2  = NINT(kax*(IB-0.5000d0)/NCHX)
02464         IERR = NINT(kay*((YY(IB)-YER(IB))-YL)/(YU-YL))
02465         IE = NINT(kay*YER(IB)/(YU-YL))
02466         IF(IY1 .GE. 0.AND.IY1 .LE. kay.and.abs(ierr) .LE. 9999
02467      $     .and.2*ie .LE. 9999) WRITE(m_ltx,8000) m_BS,IX2,IERR,IE*2
02468       ENDIF
02469  100  CONTINUE
02470 8000  FORMAT(4(A1,2He{,I4,2H}{,I5,2H}{,I4,1H}:1X ))
02471       WRITE(m_ltx,'(3A)') m_BS,'end{picture}}',
02472      $       ' % end of plotting histogram'
02473 
02474       m_tline= m_tline+1
02475       IF(m_tline .GT. 2) m_tline=1
02476       END
02477 
02478       SUBROUTINE GLK_PlHis2(kax,kay,nchx,yl,yu,yy,ker,yer)
02479 
02480 
02481 
02482       IMPLICIT NONE
02483       INCLUDE 'GLK.h'
02484       DOUBLE PRECISION  yl,yu,yy(*),yer(*)
02485       INTEGER           kax,kay,nchx,ker
02486 
02487       INTEGER           iy1,ierr,ie,ix1,irad1,irad2,ib
02488 
02489 
02490       WRITE(m_ltx,'(4A,I4,A,I4,A)')
02491      $ m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')'
02492       WRITE(m_ltx,'(A)') '% ========== plotting primitives =========='
02493 
02494       IRAD1= 6
02495       IRAD2=10
02496       IF(m_tline .EQ. 1) THEN
02497 
02498        WRITE(m_ltx,'(8A,I3,A)')
02499      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02500      $   m_BS,'put(#1,#2){',m_BS,'circle*{',IRAD1,'}}}'
02501       ELSEIF(m_tline .EQ. 2) THEN
02502 
02503        WRITE(m_ltx,'(8A,I3,A)')
02504      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02505      $   m_BS,'put(#1,#2){',m_BS,'circle{',IRAD1,'}}}'
02506       ELSEIF(m_tline .EQ. 3) THEN
02507 
02508        WRITE(m_ltx,'(8A,I3,A)')
02509      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02510      $   m_BS,'put(#1,#2){',m_BS,'circle*{',IRAD2,'}}}'
02511       ELSEIF(m_tline .EQ. 4) THEN
02512 
02513        WRITE(m_ltx,'(8A,I3,A)')
02514      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02515      $   m_BS,'put(#1,#2){',m_BS,'circle{',IRAD2,'}}}'
02516 
02517       ELSEIF(m_tline .EQ. 5) THEN
02518        WRITE(m_ltx,'(10A)')
02519      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02520      $   m_BS,'put(#1,#2){',m_BS,'makebox(0,0){$',m_BS,'diamond$}}}'
02521       ELSE
02522        WRITE(m_ltx,'(10A)')
02523      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02524      $   m_BS,'put(#1,#2){',m_BS,'makebox(0,0){$',m_BS,'star$}}}'
02525       ENDIF
02526 
02527       WRITE(m_ltx,'(8A)')
02528      $   m_BS,'newcommand{',m_BS,'E}[3]{',
02529      $   m_BS,'put(#1,#2){',m_BS,'line(0,1){#3}}}'
02530       DO 100 IB=1,NCHX
02531       IX1 = NINT(kax*(IB-0.5000d0)/NCHX)
02532       IY1 = NINT(kay*(YY(IB)-YL)/(YU-YL))
02533       IF(IY1 .GE. 0.AND.IY1 .LE. kay) WRITE(m_ltx,7000) m_BS,IX1,IY1
02534       IF(KER .EQ. 1) THEN
02535         IERR = NINT(kay*((YY(IB)-YER(IB))-YL)/(YU-YL))
02536         IE   = NINT(kay*YER(IB)/(YU-YL))
02537         IF(IY1 .GE. 0.AND.IY1 .LE. kay.and.abs(ierr) .LE. 9999
02538      $       .and.2*ie .LE. 9999) WRITE(m_ltx,8000) m_BS,IX1,IERR,IE*2
02539       ENDIF
02540  100  CONTINUE
02541 7000  FORMAT(4(A1,2HR{,I4,2H}{,I4,1H}:1X ))
02542 8000  FORMAT(4(A1,2HE{,I4,2H}{,I5,2H}{,I4,1H}:1X ))
02543       WRITE(m_ltx,'(3A)') m_BS,'end{picture}}',
02544      $    ' % end of plotting histogram'
02545 
02546       m_tline= m_tline+1
02547       IF(m_tline .GT. 6) m_tline=1
02548       END
02549 
02550       SUBROUTINE GLK_PlCirc(kax,kay,nchx,yl,yu,yy)
02551 
02552 
02553       IMPLICIT NONE
02554       INCLUDE 'GLK.h'
02555       INTEGER           kax,kay,nchx
02556       DOUBLE PRECISION  yl,yu,yy(*)
02557 
02558       INTEGER           IX(m_MaxNb),IY(m_MaxNb)
02559       DOUBLE PRECISION  ai0,dx,aj0,ds,facy,aj,ai
02560       INTEGER           ipnt,i,iter,ipoin,irad1,irad2
02561       DOUBLE PRECISION  GLK_AproF
02562 
02563 
02564 
02565 
02566       IRAD2=6
02567       IRAD1=3
02568 
02569       WRITE(m_ltx,'(4A,I4,A,I4,A)')
02570      $  m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')'
02571       WRITE(m_ltx,'(A)') '% ========== plotting primitives =========='
02572       IF(m_tline .EQ. 1) THEN
02573 
02574        DS = 10
02575        WRITE(m_ltx,'(8A,I3,A)')
02576      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02577      $   m_BS,'put(#1,#2){',m_BS,'circle*{',IRAD1,'}}}'
02578       ELSEIF(m_tline .EQ. 2) THEN
02579 
02580        DS = 10
02581        WRITE(m_ltx,'(8A,I3,A)')
02582      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02583      $   m_BS,'put(#1,#2){',m_BS,'circle{',IRAD1,'}}}'
02584       ELSEIF(m_tline .EQ. 3) THEN
02585 
02586        DS = 20
02587        WRITE(m_ltx,'(8A,I3,A)')
02588      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02589      $   m_BS,'put(#1,#2){',m_BS,'circle*{',IRAD2,'}}}'
02590       ELSEIF(m_tline .EQ. 4) THEN
02591 
02592        DS = 20
02593        WRITE(m_ltx,'(8A,I3,A)')
02594      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02595      $   m_BS,'put(#1,#2){',m_BS,'circle{',IRAD2,'}}}'
02596 
02597       ELSEIF(m_tline .EQ. 5) THEN
02598        DS = 20
02599        WRITE(m_ltx,'(10A)')
02600      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02601      $   m_BS,'put(#1,#2){',m_BS,'makebox(0,0){$',m_BS,'diamond$}}}'
02602       ELSE
02603        DS = 20
02604        WRITE(m_ltx,'(10A)')
02605      $   m_BS,'newcommand{',m_BS,'R}[2]{',
02606      $   m_BS,'put(#1,#2){',m_BS,'makebox(0,0){$',m_BS,'star$}}}'
02607       ENDIF
02608       FACY = kay/(YU-YL)
02609 
02610       AI  = 0.
02611       AJ  = (GLK_AproF( (AI/kax)*NCHX+0.5d0, NCHX, YY) -YL)*FACY
02612       IPNT =1
02613       IX(IPNT) = INT(AI)
02614       IY(IPNT) = INT(AJ)
02615       DX =  DS
02616       AI0 = AI
02617       AJ0 = AJ
02618 
02619       DO 100 IPOIN=2,3000
02620 
02621       DO  50 ITER=1,3
02622       AI  = AI0+DX
02623       AJ  = (GLK_AproF( (AI/kax)*NCHX+0.5d0, NCHX, YY) -YL)*FACY
02624       DX  = DX *DS/SQRT(DX**2 + (AJ-AJ0)**2)
02625   50  CONTINUE
02626       IF(INT(AJ) .GE. 0.AND.INT(AJ) .LE. kay.AND.INT(AI) .LE. kax) THEN
02627          IPNT = IPNT+1
02628          IX(IPNT) = INT(AI)
02629          IY(IPNT) = INT(AJ)
02630       ENDIF
02631       AI0 = AI
02632       AJ0 = AJ
02633       IF(INT(AI) .GT. kax) GOTO 101
02634  100  CONTINUE
02635  101  CONTINUE
02636       WRITE(m_ltx,7000) (m_BS,IX(I),IY(I), I=1,IPNT)
02637 7000  FORMAT(4(A1,2HR{,I4,2H}{,I4,1H}:1X ))
02638       WRITE(m_ltx,'(2A)') m_BS,'end{picture}} % end of plotting line'
02639 
02640       m_tline= m_tline+1
02641       IF(m_tline .GT. 2) m_tline=1
02642       END
02643 
02644       DOUBLE PRECISION  FUNCTION GLK_AproF(px,nch,yy)
02645 
02646 
02647       IMPLICIT NONE
02648       INTEGER           nch,ip
02649       DOUBLE PRECISION  px,yy(*),X,p
02650 
02651       X=PX
02652       IF(X .LT. 0.0.OR.X .GT. FLOAT(NCH+1)) THEN
02653         GLK_AproF= -1E-20
02654         RETURN
02655       ENDIF
02656       IP=INT(X)
02657       IF(IP .LT. 2)     IP=2
02658       IF(IP .GT. NCH-2) IP=NCH-2
02659       P=X-IP
02660       GLK_AproF =
02661      $     -(1./6.)*P*(P-1)*(P-2)  *YY(IP-1)
02662      $     +(1./2.)*(P*P-1)*(P-2)  *YY(IP  )
02663      $     -(1./2.)*P*(P+1)*(P-2)  *YY(IP+1)
02664      $     +(1./6.)*P*(P*P-1)      *YY(IP+2)
02665       END
02666 
02667       SUBROUTINE GLK_PlTitle(title)
02668 
02669       IMPLICIT NONE
02670       INCLUDE 'GLK.h'
02671       SAVE
02672       CHARACTER*80 title
02673 
02674       m_KeyTit=1
02675       CALL GLK_Copch(title,m_titch(1))
02676       END
02677 
02678       SUBROUTINE GLK_PlCapt(lines)
02679 
02680 
02681 
02682 
02683 
02684       IMPLICIT NONE
02685       CHARACTER*80 lines(*)
02686       INCLUDE 'GLK.h'
02687       SAVE
02688       INTEGER i
02689 
02690       m_KeyTit=0
02691       DO i=1,m_titlen
02692          m_titch(i)=lines(i)
02693          m_KeyTit= m_KeyTit+1
02694          IF(lines(i) .EQ. '% end-of-caption' ) GOTO 100
02695       ENDDO
02696       CALL GLK_Retu1(' WARNING from GLK_PlCapt: to many lines =',m_titlen)
02697  100  CONTINUE
02698       END
02699 
02700       SUBROUTINE GLK_PlLabel(lines)
02701 
02702 
02703 
02704 
02705       IMPLICIT NONE
02706       CHARACTER*80 lines(*)
02707       INCLUDE 'GLK.h'
02708       SAVE
02709       INTEGER i
02710 
02711       m_KeyTit=0
02712       DO i=1,m_titlen
02713          m_titch(i)=lines(i)
02714          m_KeyTit= m_KeyTit+1
02715          IF(lines(i) .EQ. '% end-of-label' ) GOTO 100
02716       ENDDO
02717       CALL GLK_Retu1(' WARNING from GLK_PlLabel: to many lines =',m_titlen)
02718  100  CONTINUE
02719 
02720 
02721 
02722       BACKSPACE(m_ltx)
02723       BACKSPACE(m_ltx)
02724 
02725       DO i=1,m_KeyTit
02726         WRITE(m_ltx,'(A)')     m_titch(i)
02727       ENDDO
02728 
02729 
02730 
02731       WRITE(m_ltx,'(2A)') m_BS,'end{picture} % close entire picture '
02732       IF(ABS(m_lint) .EQ. 2) THEN
02733          WRITE(m_ltx,'(A)') '%====== end of GLK_PlLabel =========='
02734       ELSE
02735          WRITE(m_ltx,'(2A)') m_BS,'end{figure}'
02736       ENDIF
02737       END
02738 
02739 
02740       SUBROUTINE GLK_Plot2(id,ch1,ch2,chmark,chxfmt,chyfmt)
02741 
02742 
02743 
02744 
02745 
02746 
02747 
02748 
02749 
02750 
02751 
02752 
02753 
02754 
02755 
02756 
02757 
02758 
02759 
02760 
02761 
02762 
02763 
02764 
02765 
02766 
02767       IMPLICIT NONE
02768       INTEGER id
02769       CHARACTER ch1,ch2,chmark*(*)
02770       CHARACTER*8 chxfmt,chyfmt
02771       INCLUDE 'GLK.h'
02772       SAVE
02773       DOUBLE PRECISION  yy(m_MaxNb),yer(m_MaxNb)
02774       CHARACTER*80 title
02775 
02776       LOGICAL GLK_Exist
02777       INTEGER kax,kay,incr,ker,nchx
02778       INTEGER iopsla,ioplog,ioperb,iopsc1,iopsc2,idum
02779       DOUBLE PRECISION   dxl,dxu,xu,xl,yu,yl
02780       CHARACTER chr
02781       DATA CHR /' '/
02782 
02783       CHARACTER*1 chre, chrp1
02784       PARAMETER ( chre = 'E', chrp1= 'R' )
02785       CHARACTER*2 chrp
02786 
02787       CHARACTER*1 chrx(12)
02788       DATA  chrx /'a','b','c','d','f','g','h','i','j','k','l','m'/
02789 
02790 
02791       IF(.NOT.GLK_Exist(id)) GOTO 900
02792 
02793       CALL GLK_UnPak(id,yy ,'    ',idum)
02794       CALL GLK_UnPak(id,yer,'ERRO',idum)
02795       CALL GLK_hinbo1(id,title,nchx,dxl,dxu)
02796 
02797       kax=1200
02798       kay=1200
02799       IF(CH1 .EQ. 'S') THEN
02800 
02801         incr=incr+1
02802         BACKSPACE(m_ltx)
02803         BACKSPACE(m_ltx)
02804       ELSE
02805 
02806         incr=1
02807         CHR=CH1
02808         CALL GLK_PlFrame(id,kax,kay,chxfmt,chyfmt)
02809 
02810         CALL GLK_Range1(id,yl,yu)
02811       ENDIF
02812 
02813       xl = dxl
02814       xu = dxu
02815 
02816       chrp= chrp1//chrx(incr)
02817       WRITE(m_ltx,'(A)')    '%=GLK_Plot2:  next plot (line) =========='
02818       WRITE(m_ltx,'(A,I10)')'%====HISTOGRAM ID=',ID
02819       WRITE(m_ltx,'(A,A70 )') '% ',TITLE
02820       CALL GLK_OptOut(id,ioplog,iopsla,ioperb,iopsc1,iopsc2)
02821       ker = ioperb-1
02822 
02823       IF (iopsla .EQ. 2) THEN
02824          CHR='C'
02825       ELSE
02826          CHR=' '
02827       ENDIF
02828 
02829       IF (CH2 .EQ. 'B')   CHR=' '
02830 
02831       IF (CH2 .EQ. '*')   CHR='*'
02832 
02833       IF (CH2 .EQ. 'R')   CHR='R'
02834 
02835       IF (CH2 .EQ. 'L')   CHR='L'
02836       IF (CH2 .EQ. 'C')   CHR='C'
02837 
02838       IF     (CHR .EQ. ' ') THEN
02839 
02840           CALL GLK_PlKont(kax,kay,nchx,yl,yu,yy,ker,yer)
02841       ELSE IF(CHR .EQ. '*' .OR. CHR .EQ. 'R'.OR. CHR .EQ. 'L') THEN
02842 
02843          CALL GLK_PlMark(kax,kay,nchx,yl,yu,yy,ker,yer,chmark,chr,chrp,chre)
02844       ELSE IF(CHR .EQ. 'C') THEN
02845 
02846           CALL GLK_PlCirc(kax,kay,nchx,yl,yu,yy)
02847       ENDIF
02848 
02849 
02850 
02851       WRITE(m_ltx,'(2A)') m_BS,'end{picture} % close entire picture '
02852       IF(ABS(m_lint) .EQ. 2) THEN
02853          WRITE(m_ltx,'(A)') '%== GLK_Plot2:  end of plot  =========='
02854       ELSE
02855          WRITE(m_ltx,'(2A)') m_BS,'end{figure}'
02856       ENDIF
02857       RETURN
02858   900 CALL GLK_Stop1('+++GLK_Plot2: Nonexistig histo, skipped, id= ',ID)
02859       END
02860 
02861       SUBROUTINE GLK_PlFrame(id,kax,kay,chxfmt,chyfmt)
02862 
02863       IMPLICIT NONE
02864       INTEGER id,kax,kay
02865       CHARACTER chxfmt*(*),chyfmt*(*)
02866       INCLUDE 'GLK.h'
02867       SAVE
02868 
02869       CHARACTER*80 title
02870       DOUBLE PRECISION    dxl,dxu,xl,xu,yl,yu
02871       INTEGER  icont,i,nchx
02872       DATA icont/0/
02873 
02874       icont=icont+1
02875       CALL GLK_hinbo1(id,title,nchx,dxl,dxu)
02876       xl = dxl
02877       xu = dxu
02878       CALL GLK_Range1(id,yl,yu)
02879 
02880       IF(icont .GT. 1) WRITE(m_ltx,'(2A)') m_BS,'newpage'
02881 
02882 
02883 
02884       WRITE(m_ltx,'(A)') ' '
02885       WRITE(m_ltx,'(A)') ' '
02886       WRITE(m_ltx,'(A)')
02887      $'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
02888       WRITE(m_ltx,'(A)')
02889      $'%%%%%%%%%%%%%%%%%%%%%%GLK_PlFrame%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%'
02890       IF(ABS(m_lint) .EQ. 2) THEN
02891          WRITE(m_ltx,'(2A)') m_BS,'noindent'
02892       ELSE
02893          WRITE(m_ltx,'(2A)') m_BS,'begin{figure}[!ht]'
02894          WRITE(m_ltx,'(2A)') m_BS,'centering'
02895          WRITE(m_ltx,'(2A)') m_BS,'htmlimage{scale=1.4}'
02896       ENDIF
02897 
02898 
02899 
02900       IF(ABS(m_lint) .NE. 2) THEN
02901          WRITE(m_ltx,'(6A)')
02902      $        m_BS,'caption{',m_BS,'footnotesize',m_BS,'sf'
02903          DO i=1,m_KeyTit
02904             WRITE(m_ltx,'(A)')     m_titch(i)
02905          ENDDO
02906          WRITE(m_ltx,'(A)') '}'
02907       ENDIF
02908 
02909 
02910 
02911       WRITE(m_ltx,'(A)') '% =========== big frame, title etc. ======='
02912       WRITE(m_ltx,'(4A)') m_BS,'setlength{',m_BS,'unitlength}{0.1mm}'
02913       WRITE(m_ltx,'(2A)') m_BS,'begin{picture}(1600,1500)'
02914       IF( m_lint .LT. 0) THEN
02915 
02916          WRITE(m_ltx,'(4A)')
02917      $        m_BS,'put(0,0){',m_BS,'framebox(1600,1500){ }}'
02918       ENDIF
02919       WRITE(m_ltx,'(A)') '% =========== small frame, labeled axis ==='
02920       WRITE(m_ltx,'(4A,I4,A,I4,A)')
02921      $    m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')'
02922       WRITE(m_ltx,'(4A,I4,A,I4,A)')
02923      $    m_BS,'put(0,0){',m_BS,'framebox( ',kax,',',kay,'){ }}'
02924       WRITE(m_ltx,'(A)') '% =========== x and y axis ================'
02925       CALL GLK_AxisX(kax,xl,xu,chxfmt)
02926       CALL GLK_AxisY(kay,yl,yu,chyfmt)
02927       WRITE(m_ltx,'(3A)') m_BS,'end{picture}}'
02928      $                ,'% end of plotting labeled axis'
02929       END
02930 
02931       SUBROUTINE GLK_AxisX(kay,yl,yu,chxfmt)
02932 
02933 
02934       IMPLICIT NONE
02935       INTEGER  kay
02936       DOUBLE PRECISION    yl,yu
02937       CHARACTER chxfmt*16
02938       INCLUDE 'GLK.h'
02939       SAVE
02940 
02941       CHARACTER*64 fmt1,fmt2
02942       PARAMETER (fmt1 = '(2A,F8.2,A,F8.2,A,I4,3A)')
02943       PARAMETER (fmt2 = '(2A,F8.2,A,I4,A,F8.2,A,I4,3A)')
02944       DOUBLE PRECISION   dy,ddy,ddyl,yy0l,ddys,yy0s,p0s,pds,scmx,p0l,pdl
02945       INTEGER ly,jy,nlt,nts,lex,k,n
02946       DOUBLE PRECISION  tipsy(20)
02947 
02948       dy= ABS(yu-yl)
02949       ly = NINT( LOG10(dy) -0.4999999d0 )
02950       jy = NINT(dy/10d0**ly)
02951       ddyl = dy*10d0**(-ly)
02952       IF( jy .EQ. 1)                 ddyl = 10d0**ly*0.25d0
02953       IF( jy .GE. 2 .AND. jy .LE. 3) ddyl = 10d0**ly*0.5d0
02954       IF( jy .GE. 4 .AND. jy .LE. 6) ddyl = 10d0**ly*1.0d0
02955       IF( jy .GE. 7)                 ddyl = 10d0**ly*2.0d0
02956       WRITE(m_ltx,'(A)') '% -------GLK_AxisX---- '
02957       WRITE(m_ltx,'(A,I4)') '%  JY= ',JY
02958 
02959       nlt = INT(dy/ddyl)
02960       nlt = MAX0(MIN0(nlt,20),1)+1
02961       yy0l = NINT(yl/ddyl+0.5d0)*ddyl
02962       ddys = ddyl/10d0
02963       yy0s = NINT(yl/ddys+0.4999999d0)*ddys
02964       p0l = kay*(yy0l-yl)/(yu-yl)
02965       pdl = kay*ddyl/(yu-yl)
02966       p0s = kay*(yy0s-yl)/(yu-yl)
02967       pds = kay*ddys/(yu-yl)
02968       nlt = INT(ABS(yu-yy0l)/ddyl+0.0000001d0)+1
02969       nts = INT(abs(yu-yy0s)/ddys+0.0000001d0)+1
02970       DO n=1,nlt
02971          tipsy(n) =yy0l+ ddyl*(n-1)
02972       ENDDO
02973       WRITE(m_ltx,fmt1)
02974      $ m_BS,'multiput('  ,P0L,  ',0)('  ,PDL,  ',0){'  ,NLT,  '}{',
02975      $ m_BS,'line(0,1){25}}',
02976      $ m_BS,'multiput('  ,P0S,  ',0)('  ,PDS,  ',0){'  ,NTS,  '}{',
02977      $ m_BS,'line(0,1){10}}'
02978       WRITE(m_ltx,fmt2)
02979      $ m_BS,'multiput('  ,P0L,  ','  ,kay,  ')('  ,PDL,  ',0){'  ,NLT,
02980      $ '}{'  ,m_BS,  'line(0,-1){25}}',
02981      $ m_BS,'multiput('  ,P0S,  ','  ,kay,  ')('  ,PDS,  ',0){'  ,NTS,
02982      $ '}{'  ,m_BS,  'line(0,-1){10}}'
02983 
02984       scmx = DMAX1(DABS(yl),DABS(YU))
02985       lex  = NINT( LOG10(scmx) -0.50001)
02986       DO n=1,nlt
02987          k = nint(kay*(tipsy(n)-yl)/(yu-yl))
02988          IF(lex .LE. 3 .AND. lex .GE. -3) THEN
02989 
02990            WRITE(m_ltx,'(2A,I4,5A,'//chxfmt//',A)')
02991      $     m_BS,'put(',K,',-25){',m_BS,'makebox(0,0)[t]{',
02992      $           m_BS,'Large $ ', TIPSY(N), ' $}}'
02993          ELSE
02994 
02995            WRITE(m_ltx,'(2A,I4,5A,'//chxfmt//',2A,I4,A)')
02996      $     m_BS,'put('  ,K,  ',-25){',m_BS,'makebox(0,0)[t]{',
02997      $     m_BS,'Large $ ',
02998      $     TIPSY(N)/(10d0**LEX),m_BS,'cdot 10^{',LEX,'} $}}'
02999          ENDIF
03000       ENDDO
03001       END
03002 
03003       SUBROUTINE GLK_AxisY(kay,yl,yu,chyfmt)
03004 
03005 
03006       IMPLICIT NONE
03007       INTEGER  kay
03008       DOUBLE PRECISION    yl,yu
03009       CHARACTER chyfmt*16
03010       INCLUDE 'GLK.h'
03011       SAVE
03012       DOUBLE PRECISION  tipsy(20)
03013 
03014       CHARACTER*64 fmt1,fmt2
03015       PARAMETER (fmt1 = '(2A,F8.2,A,F8.2,A,I4,3A)')
03016       PARAMETER (fmt2 = '(2A,I4,A,F8.2,A,F8.2,A,I4,3A)')
03017       INTEGER ly,jy,nlt,nts,lex,n,k
03018       DOUBLE PRECISION   ddyl,dy,yy0l,p0l,pdl,pds,scmx,z0l,p0s,yy0s,ddys
03019 
03020       dy= ABS(yu-yl)
03021       ly = NINT( log10(dy) -0.49999999d0 )
03022       jy = NINT(dy/10d0**ly)
03023       ddyl = dy*10d0**(-ly)
03024       IF( jy .EQ. 1)                 ddyl = 10d0**ly*0.25d0
03025       IF( jy .GE. 2 .AND. jy .LE. 3) ddyl = 10d0**ly*0.5d0
03026       IF( jy .GE. 4 .AND. jy .LE. 6) ddyl = 10d0**ly*1.0d0
03027       IF( jy .GE. 7)                 ddyl = 10d0**ly*2.0d0
03028       WRITE(m_ltx,'(A)') '% --------GLK_SAxisY------- '
03029       WRITE(m_ltx,'(A,I4)') '%  JY= ',JY
03030 
03031       nlt = INT(dy/ddyl)
03032       nlt = MAX0(MIN0(nlt,20),1)+1
03033       yy0l = NINT(yl/ddyl+0.4999999d0)*ddyl
03034       ddys = ddyl/10d0
03035       yy0s = nint(yl/ddys+0.5d0)*ddys
03036       p0l = kay*(yy0l-yl)/(yu-yl)
03037       pdl = kay*ddyl/(yu-yl)
03038       p0s = kay*(yy0s-yl)/(yu-yl)
03039       pds = kay*ddys/(yu-yl)
03040       nlt= INT(ABS(yu-yy0l)/ddyl+0.0000001d0) +1
03041       nts= INT(ABS(yu-yy0s)/ddys+0.0000001d0) +1
03042       DO N=1,NLT
03043          tipsy(n) =yy0l+ ddyl*(n-1)
03044       ENDDO
03045 
03046       WRITE(m_ltx,fmt1)
03047      $ m_BS,'multiput(0,'  ,P0L,  ')(0,'  ,PDL  ,'){'  ,NLT,  '}{', m_BS,'line(1,0){25}}',
03048      $ m_BS,'multiput(0,'  ,P0S,  ')(0,'  ,PDS,  '){'  ,NTS,  '}{', m_BS,'line(1,0){10}}'
03049       WRITE(m_ltx,fmt2)
03050      $ m_BS,'multiput('  ,kay,  ','  ,P0L,  ')(0,'  ,PDL,  '){'  ,NLT,
03051      $ '}{',m_BS,'line(-1,0){25}}',
03052      $ m_BS,'multiput('  ,kay,  ','  ,P0S,  ')(0,'  ,PDS,  '){'  ,NTS,
03053      $ '}{',m_BS,'line(-1,0){10}}'
03054 
03055       Z0L = kay*(-YL)/(YU-YL)
03056       IF( (Z0L .GT. 0D0) .AND. (Z0L .LT. FLOAT(kay)) )
03057      $ WRITE(m_ltx,'(2A,F8.2,3A,I4,A)') m_BS,'put(0,'  ,Z0L,  '){',m_BS,'line(1,0){'  ,kay,  '}}'
03058 
03059       SCMX = DMAX1(DABS(YL),DABS(YU))
03060       LEX  = NINT( LOG10(SCMX) -0.50001d0)
03061       DO n=1,nlt
03062          k = nint(kay*(tipsy(n)-yl)/(yu-yl))
03063          IF(lex .LE. 3 .AND. lex .GE. -3) THEN
03064 
03065             WRITE(m_ltx,'(2A,I4,5A,'//chyfmt//',A)')
03066      $           m_BS,'put(-25,'  ,K,  '){',m_BS,'makebox(0,0)[r]{',
03067      $           m_BS,'Large $ '  ,TIPSY(N),  ' $}}'
03068          ELSE
03069 
03070             WRITE(m_ltx,'(2A,I4,5A,'//chyfmt//',2A,I4,A)')
03071      $           m_BS,'put(-25,'  ,K,  '){',m_BS,'makebox(0,0)[r]{',
03072      $           m_BS,'Large $ ',
03073      $           TIPSY(N)/(10d0**LEX),  m_BS,'cdot 10^{'  ,LEX,  '} $}}'
03074       ENDIF
03075       ENDDO
03076       END
03077 
03078       SUBROUTINE GLK_PlKont(kax,kay,nchx,yl,yu,yy,ker,yer)
03079 
03080 
03081 
03082 
03083 
03084       IMPLICIT NONE
03085       INTEGER kax,kay,nchx,ker
03086       DOUBLE PRECISION   yl, yu, yy(*),yer(*),z0l
03087       INCLUDE 'GLK.h'
03088       SAVE
03089 
03090       CHARACTER*80 fmt1
03091       INTEGER  ix0,iy0,ib,ix1,iy1,ie,ierr,ix2,idy,idx
03092       DOUBLE PRECISION    yib
03093 
03094       WRITE(m_ltx,'(4A,I4,A,I4,A)') m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')'
03095       WRITE(m_ltx,'(A)') '% ========== plotting primitives =========='
03096 
03097       IF(m_KeyCol .EQ. 1) THEN
03098          WRITE(m_ltx,'(A)') m_Color
03099          m_KeyCol = 0
03100       ENDIF
03101 
03102       WRITE(m_ltx,'(8A)')
03103      $     m_BS,'newcommand{',m_BS,'x}[3]{',m_BS,'put(#1,#2){', m_BS,'line(1,0){#3}}}'
03104       WRITE(m_ltx,'(8A)')
03105      $     m_BS,'newcommand{',m_BS,'y}[3]{',m_BS,'put(#1,#2){', m_BS,'line(0,1){#3}}}'
03106       WRITE(m_ltx,'(8A)')
03107      $     m_BS,'newcommand{',m_BS,'z}[3]{',m_BS,'put(#1,#2){', m_BS,'line(0,-1){#3}}}'
03108 
03109       WRITE(m_ltx,'(8A)')
03110      $     m_BS,'newcommand{',m_BS,'e}[3]{', m_BS,'put(#1,#2){',m_BS,'line(0,1){#3}}}'
03111 
03112       ix0=0
03113       iy0=0
03114 
03115       z0l = kay*(-yl)/(yu-yl)
03116       IF( (z0l .GT. 0d0) .AND. (z0l .LT. FLOAT(kay)) )  iy0=z0l
03117       DO ib=1,nchx
03118          yib = yy(ib)
03119          ix1 = NINT(kax*(ib-0.00001d0)/nchx) 
03120          iy1 = NINT(kay*(yib-yl)/(yu-yl))    
03121          iy1 = MIN(MAX(iy1,-1),kay+1)        
03122          idx = ix1-ix0                       
03123          idy = iy1-iy0                       
03124          fmt1 = '(2(2a,i4,a,i4,a,i4,a))'
03125          IF(iy1 .GE. 0 .AND. iy1 .LE. kay) THEN
03126             IF( idy .GE. 0) THEN             
03127                WRITE(m_ltx,fmt1) m_BS,'y{',ix0,'}{',iy0,'}{',idy,'}',
03128      $                           m_BS,'x{',ix0,'}{',iy1,'}{',idx,'}'
03129             ELSE                             
03130                WRITE(m_ltx,fmt1) m_BS,'z{',IX0,'}{',IY0,'}{',-idy,'}',
03131      $                           m_BS,'x{',IX0,'}{',IY1,'}{',idx,'}'
03132             ENDIF
03133          ENDIF
03134          ix0=ix1
03135          iy0=iy1
03136          IF(ker .EQ. 1) THEN
03137             ix2  = NINT(kax*(ib-0.5000d0)/nchx)
03138             ierr = NINT(kay*((yy(ib)-yer(ib))-yl)/(yu-yl))  
03139             ie = NINT(kay*yer(ib)/(yu-yl))                  
03140 
03141             IF(ierr .LT. 0) THEN
03142                ie= ie+ierr
03143                ierr = 0
03144             ENDIF
03145             IF( (ierr+2*ie) .GT. kay) THEN
03146                ie= IABS(kay-ierr)/2
03147             ENDIF
03148             IF( (iy1.GE.0).AND.(iy1.LE. kay).AND.(ABS(1d0*ierr).LE.9999d0).AND.(2d0*ie.LE.9999d0) ) 
03149      $           WRITE(m_ltx,8000) m_BS,ix2,ierr,2*ie
03150          ENDIF
03151       ENDDO
03152 8000  FORMAT(4(A1,2He{,I4,2H}{,I5,2H}{,I4,1H}:1X ))
03153       WRITE(m_ltx,'(3A)') m_BS,'end{picture}}', ' % end of plotting histogram'
03154 
03155       m_tline= m_tline+1
03156       IF(m_tline .GT. 2) m_tline=1
03157       END
03158 
03159       SUBROUTINE GLK_PlMark(kax,kay,nchx,yl,yu,yy,ker,yer,chmark,chr,chr2,chr3)
03160 
03161 
03162 
03163 
03164 
03165       IMPLICIT NONE
03166       INTEGER     kax,kay,nchx,ker
03167       DOUBLE PRECISION       yl,yu, yy(*),yer(*)
03168       CHARACTER*1 chr
03169       CHARACTER   chmark*(*),chr2*(*),chr3*(*)
03170 
03171       INCLUDE 'GLK.h'
03172       SAVE
03173       INTEGER    ib,ix1,iy1,ierr,ie
03174 
03175       WRITE(m_ltx,'(4A,I4,A,I4,A)') m_BS,'put(300,250){',m_BS,'begin{picture}( ',kax,',',kay,')'
03176       WRITE(m_ltx,'(A)') '% ===GLK_PlMark: plotting primitives ======'
03177 
03178       IF(m_KeyCol .EQ. 1) THEN
03179          WRITE(m_ltx,'(A)') m_Color
03180          m_KeyCol = 0
03181       ENDIF
03182 
03183       WRITE(m_ltx,'(10A)') m_BS,'newcommand{',m_BS,chr2  , '}[2]{', m_BS,'put(#1,#2){',chmark,'}}'
03184 
03185       WRITE(m_ltx,'(10A)')
03186      $   m_BS,'newcommand{',m_BS,chr3  , '}[3]{', m_BS,'put(#1,#2){',m_BS,'line(0,1){#3}}}'
03187 
03188       DO ib=1,nchx
03189          IF(chr .EQ. '*') THEN
03190             ix1 = NINT(kax*(ib-0.5000d0)/nchx) 
03191          ELSEIF(chr .EQ. 'R') THEN
03192             ix1 = NINT(kax*(ib*1d0)/nchx)      
03193          ELSEIF(chr .EQ. 'L') THEN
03194             ix1 = NINT(kax*(ib-1d0)/nchx)      
03195          ELSE
03196             WRITE(6,*) '+++++ plamark: wrong line type:',chr
03197             RETURN
03198          ENDIF
03199          iy1 = NINT(kay*(yy(ib)-yl)/(yu-yl))
03200          IF(iy1 .GE. 0 .AND. iy1 .LE. kay)
03201      $   WRITE(m_ltx,'(A,A,A,I4,A,I4,A)')
03202      $               m_BS,chr2, '{' ,IX1, '}{' ,IY1, '}'
03203          IF(ker .EQ. 1) THEN
03204             ierr = NINT(kay*((yy(ib)-yer(ib))-yl)/(yu-yl)) 
03205             ie   = NINT(kay*yer(ib)/(yu-yl))               
03206 
03207             IF(ierr .LT. 0) THEN
03208                ie= ie+ierr
03209                ierr = 0
03210             ENDIF
03211             IF( (ierr+2*ie) .GT. kay) THEN
03212                ie= IABS(kay-ierr)/2
03213             ENDIF
03214             IF((iy1.GE.0) .AND.(iy1.LE.kay) .AND.(ABS(1d0*ierr).LE.9999d0) .AND.(2d0*ie.LE.9999d0))
03215      $      WRITE(m_ltx,'(A,A,A,I4,A,I5,A,I4,A)')
03216      $          m_BS, chr3,  '{'  ,IX1, '}{'  ,ierr, '}{'  ,2*ie,   '}'
03217          ENDIF
03218       ENDDO
03219       WRITE(m_ltx,'(3A)') m_BS,'end{picture}}',
03220      $    ' % end of plotting histogram'
03221       END
03222 
03223 
03224       SUBROUTINE GLK_PlTable(Npl,idl,capt,fmt,nch1,incr,npag)
03225 
03226 
03227 
03228 
03229 
03230 
03231 
03232 
03233 
03234 
03235 
03236       IMPLICIT NONE
03237 
03238       INTEGER        Npl,idl(*),nch1,incr,npag
03239       CHARACTER*(*)  capt(*)
03240       CHARACTER*(*)  fmt(3)
03241 
03242       INCLUDE 'GLK.h'
03243       SAVE
03244 
03245       CHARACTER*16 fmt1,fmt2,fmt3
03246       LOGICAL GLK_Exist
03247       INTEGER   i,j,k,n,nchx,nplt,idum,id1,id
03248       INTEGER   iopsc1,ioperb,iopsla,iopsc2,ioplog
03249       DOUBLE PRECISION     xl,xu,dxl,dxu,xi
03250       DOUBLE PRECISION     yyy(m_MaxNb),yer(m_MaxNb),bi(m_MaxNb,9),er(m_MaxNb,9)
03251       CHARACTER*80 title
03252       CHARACTER*1 Cn(9)
03253       DATA Cn /'1','2','3','4','5','6','7','8','9'/
03254 
03255 
03256       IF(.NOT.GLK_EXIST(ID)) GOTO 900
03257       IF(Npl .GT. 9 )     GOTO 901
03258       fmt1 = fmt(1)
03259       fmt2 = fmt(2)
03260       fmt3 = fmt(3)
03261 
03262 
03263       id1=idl(1)
03264       CALL GLK_hinbo1( id1,title,nchx,dxl,dxu)
03265       xl = dxl
03266       xu = dxu
03267       DO n=1,Npl
03268         CALL GLK_UnPak( idl(n),yyy ,'    ',idum)
03269         CALL GLK_UnPak( idl(n),yer ,'ERRO',idum)
03270         DO k=1,nchx
03271            bi(k,n)=yyy(k)
03272            er(k,n)=yer(k)
03273         ENDDO
03274       ENDDO
03275 
03276 
03277 
03278       WRITE(m_ltx,'(A)') ' '
03279       WRITE(m_ltx,'(A)') ' '
03280       WRITE(m_ltx,'(A)') '% ========================================='
03281       WRITE(m_ltx,'(A)') '% ============= begin table ==============='
03282       WRITE(m_ltx,'(2A)') m_BS,'begin{table}[!ht]'
03283       WRITE(m_ltx,'(2A)') m_BS,'centering'
03284 
03285 
03286 
03287       WRITE(m_ltx,'(4A)') m_BS,'caption{',m_BS,'small'
03288       DO i=1,m_KeyTit
03289         WRITE(m_ltx,'(A)')     m_titch(i)
03290       ENDDO
03291       WRITE(m_ltx,'(A)') '}'
03292 
03293 
03294 
03295       WRITE(m_ltx,'(20A)') m_BS,
03296 'begin{tabular}     $ {|',  ('|c',j=1,Npl+1),  '||}'
03297 
03298       WRITE(m_ltx,'(4A)') m_BS,'hline',m_BS,'hline'
03299 
03300 
03301 
03302       WRITE(m_ltx,'(2A)') capt(1),('&',capt(j+1),j=1,Npl)
03303 
03304       WRITE(m_ltx,'(2A)') m_BS,m_BS
03305       WRITE(m_ltx,'(2A)') m_BS,'hline'
03306 
03307 
03308 
03309 
03310 
03311       CALL GLK_OptOut(idl(1),ioplog,iopsla,ioperb,iopsc1,iopsc2)
03312       DO k=nch1,nchx,incr
03313         xi= dxl + (dxu-dxl)*k/(1d0*nchx)
03314         IF(iopsla.eq.2) xi= dxl + (dxu-dxl)*(k-0.5d0)/(1d0*nchx)
03315         IF(ioperb.eq.2) THEN
03316         WRITE(m_ltx,'(A,'//fmt1//','//Cn(Npl)//'(A,'//fmt2//',A,A,'//fmt3//'),  A)')
03317      $               '$', xi, ('$ & $', bi(k,j), m_BS, 'pm', er(k,j), j=1,Npl), '$'
03318         WRITE(m_ltx,'(2A)') m_BS,m_BS
03319         ELSE
03320         WRITE(m_ltx,'(A,'//fmt1//','//Cn(Npl)//'(A,'//fmt2//'),  A)')
03321      $               '$', xi, ('$ & $', bi(k,j), j=1,Npl), '$'
03322         WRITE(m_ltx,'(2A)') m_BS,m_BS
03323         ENDIF
03324       ENDDO
03325 
03326 
03327 
03328       WRITE(m_ltx,'(4A)') m_BS,'hline',m_BS,'hline'
03329       WRITE(m_ltx,'(2A)') m_BS,'end{tabular}'
03330       WRITE(m_ltx,'(2A)') m_BS,'end{table}'
03331       WRITE(m_ltx,'(A)') '% ============= end   table ==============='
03332       WRITE(m_ltx,'(A)') '% ========================================='
03333       IF(npag .NE. 0) WRITE(m_ltx,'(2A)') m_BS,'newpage'
03334 
03335       RETURN
03336  900  CALL GLK_Retu1('++++ GLK_PlTable: Nonexistig histo id=',ID)
03337       RETURN
03338  901  CALL GLK_Retu1('++++ GLK_PlTable: To many columns Nplt=',Nplt)
03339       END
03340 
03341       SUBROUTINE GLK_PlTable2(Npl,idl,ccapt,mcapt,fmt,chr1,chr2,chr3)
03342 
03343 
03344 
03345 
03346 
03347 
03348 
03349 
03350 
03351 
03352 
03353 
03354 
03355 
03356 
03357 
03358 
03359 
03360 
03361       IMPLICIT NONE
03362 
03363       INTEGER       Npl,idl(*)
03364       CHARACTER*(*) ccapt(*)
03365       CHARACTER*(*) fmt(3)
03366       CHARACTER*1   chr1,chr2,chr3
03367       CHARACTER*(*) mcapt
03368 
03369       INCLUDE 'GLK.h'
03370       SAVE
03371 
03372       CHARACTER*16 fmt1,fmt2,fmt3
03373       LOGICAL GLK_Exist
03374       INTEGER   iopsc1,ioperb,iopsla,iopsc2,ioplog
03375       INTEGER   i,j,k,n,idum,id1,id,nchx,Nplt
03376       DOUBLE PRECISION     xl,xu,xi,dxu,dxl
03377       DOUBLE PRECISION     yyy(m_MaxNb),yer(m_MaxNb),bi(m_MaxNb,9),er(m_MaxNb,9)
03378       CHARACTER*80 title
03379       CHARACTER*1 Cn(9)
03380       INTEGER   k1,k2,k3
03381       DATA Cn /'1','2','3','4','5','6','7','8','9'/
03382 
03383 
03384       IF(.NOT.GLK_EXIST(ID)) GOTO 900
03385       IF(Npl .GT. 9 )     GOTO 901
03386       fmt1 = fmt(1)
03387       fmt2 = fmt(2)
03388       fmt3 = fmt(3)
03389 
03390 
03391       id1 = idl(1)
03392       CALL GLK_hinbo1( id1,title,nchx,dxl,dxu)
03393       xl = dxl
03394       xu = dxu
03395       DO n=1,Npl
03396          CALL GLK_UnPak( idl(n),yyy ,'    ',idum)
03397          CALL GLK_UnPak( idl(n),yer ,'ERRO',idum)
03398          DO k=1,nchx
03399             bi(k,n)=yyy(k)
03400             er(k,n)=yer(k)
03401          ENDDO
03402       ENDDO
03403 
03404       IF(chr1 .EQ. ' ' ) THEN
03405 
03406 
03407 
03408          WRITE(m_ltx,'(A)') ' '
03409          WRITE(m_ltx,'(A)') ' '
03410          WRITE(m_ltx,'(A)') '% ========================================'
03411          WRITE(m_ltx,'(A)') '% ============ begin table ==============='
03412 
03413          IF(ABS(m_lint) .EQ. 2 ) THEN
03414             WRITE(m_ltx,'(2A)') m_BS,'noindent'
03415          ELSE
03416             WRITE(m_ltx,'(2A)') m_BS,'begin{table}[!ht]'
03417             WRITE(m_ltx,'(2A)') m_BS,'centering'
03418          ENDIF
03419 
03420 
03421 
03422          IF(ABS(m_lint) .NE. 2 ) THEN
03423             WRITE(m_ltx,'(6A)')
03424      $           m_BS,'caption{',m_BS,'footnotesize',m_BS,'sf'
03425             DO i=1,m_KeyTit
03426                WRITE(m_ltx,'(A)')     m_titch(i)
03427             ENDDO
03428             WRITE(m_ltx,'(A)') '}'
03429          ENDIF
03430 
03431 
03432 
03433          WRITE(m_ltx,'(20A)') m_BS,
03434 'begin{tabular}     $        {|',  ('|c',j=1,Npl+1),  '||}'
03435          WRITE(m_ltx,'(4A)') m_BS,'hline',m_BS,'hline'
03436 
03437 
03438 
03439          WRITE(m_ltx,'(2A)') ccapt(1),('&',ccapt(j+1),j=1,Npl)
03440 
03441 
03442 
03443       ELSEIF(chr1 .EQ. 'S' ) THEN
03444          DO i=1,7
03445             BACKSPACE(m_ltx)
03446          ENDDO
03447       ELSE
03448          WRITE(*,*) ' ++++ GLK_PlTable2: WRONG chr1 ' ,chr1
03449       ENDIF
03450 
03451       WRITE(m_ltx,'(2A)') m_BS,m_BS
03452       WRITE(m_ltx,'(2A)') m_BS,'hline'
03453 
03454 
03455 
03456 
03457       IF(mcapt .NE. ' ') THEN
03458          WRITE(m_ltx,'(3A,I2,A)') '& ',m_BS,'multicolumn{',Npl,'}{c||}{'
03459          WRITE(m_ltx,'(3A)') '     ',mcapt, ' }'
03460          WRITE(m_ltx,'(2A)') m_BS,m_BS
03461          WRITE(m_ltx,'(2A)') m_BS,'hline'
03462       ENDIF
03463 
03464 
03465 
03466 
03467 
03468 
03469       CALL GLK_OptOut(idl(1),ioplog,iopsla,ioperb,iopsc1,iopsc2)
03470 
03471 
03472       k1=1
03473       k2=nchx
03474       k3=1
03475       IF( m_KeyTbr .EQ. 1 ) THEN
03476          k1 = MAX(k1,m_TabRan(1))
03477          k2 = MIN(k2,m_TabRan(2))
03478          k3 = MAX(k3,m_TabRan(3))
03479          m_KeyTbr = 0
03480       ENDIF
03481 
03482       DO k=k1,k2,k3
03483          IF(chr2 .EQ. 'R') THEN
03484 
03485             xi= dxl + (dxu-dxl)*k/(1d0*nchx)
03486          ELSEIF(chr2 .EQ. 'L') THEN
03487 
03488             xi= dxl + (dxu-dxl)*(k-1d0)/(1d0*nchx)
03489          ELSE
03490 
03491             xi= dxl + (dxu-dxl)*(k-0.5d0)/(1d0*nchx)
03492          ENDIF
03493          IF(ioperb.eq.2) THEN
03494           WRITE(m_ltx,'(A,'//fmt1//','//Cn(Npl)//'(A,'//fmt2//',A,A,'//fmt3//'),  A)')
03495      $                '$', xi, ('$ & $', bi(k,j), m_BS, 'pm', er(k,j), j=1,Npl), '$'
03496           WRITE(m_ltx,'(2A)') m_BS,m_BS
03497          ELSE
03498           WRITE(m_ltx,'(A,'//fmt1//','//Cn(Npl)//'(A,'//fmt2//'),  A)')
03499      $                '$', xi, ('$ & $', bi(k,j), j=1,Npl), '$'
03500           WRITE(m_ltx,'(2A)') m_BS,m_BS
03501          ENDIF
03502       ENDDO
03503 
03504 
03505 
03506       WRITE(m_ltx,'(4A)') m_BS,'hline',m_BS,'hline'
03507       WRITE(m_ltx,'(2A)') m_BS,'end{tabular}'
03508       IF(ABS(m_lint) .EQ. 2 ) THEN
03509          WRITE(m_ltx,'(A)') '% ========================================'
03510       ELSE
03511          WRITE(m_ltx,'(2A)') m_BS,'end{table}'
03512       ENDIF
03513       WRITE(m_ltx,'(A)') '% ============= end   table =============='
03514       WRITE(m_ltx,'(A)') '% ========================================'
03515       IF(chr3 .EQ. 'E') THEN
03516          WRITE(m_ltx,'(2A)') m_BS,'newpage'
03517       ELSE
03518          WRITE(m_ltx,'(A)') '% ========================================'
03519       ENDIF
03520       RETURN
03521  900  CALL GLK_Retu1(' ++++ GLK_PlTable2: Nonexistig histo,id= ',ID)
03522       RETURN
03523  901  CALL GLK_Retu1(' ++++ GLK_PlTable2: To many columns Nplt= ',Nplt)
03524       END
03525 
03526 
03527       SUBROUTINE GLK_WtMon(mode,id,par1,par2,par3)
03528 
03529 
03530 
03531 
03532 
03533 
03534 
03535 
03536 
03537 
03538 
03539 
03540 
03541 
03542 
03543 
03544 
03545 
03546 
03547 
03548 
03549 
03550 
03551 
03552 
03553 
03554 
03555 
03556 
03557 
03558 
03559 
03560 
03561 
03562 
03563 
03564 
03565 
03566 
03567 
03568 
03569 
03570 
03571 
03572 
03573 
03574 
03575 
03576 
03577       IMPLICIT NONE
03578       INCLUDE 'GLK.h'
03579       INTEGER           mode,id
03580       DOUBLE PRECISION  par1,par2,par3
03581 
03582       INTEGER           idg,nevneg,nevzer,nevtot,nevove,nevacc,nbin,lact,ist3,ntot,ist,ist2
03583       DOUBLE PRECISION  xl,xu,errela,sswt,averwt,wwmax,swt,wt,wtmax,rn
03584 
03585       idg = -id
03586       IF(id .LE. 0) THEN
03587            CALL GLK_Stop1(' =====> GLK_WtMon: wrong id= ',id)
03588       ENDIF
03589       IF(mode .EQ. -1) THEN
03590 
03591            nbin = nint(dabs(par3))
03592            IF(nbin .GT. 100) nbin =100
03593            IF(nbin .EQ. 0)   nbin =1
03594            xl   =  par1
03595            xu   =  par2
03596            IF(xu .LE. xl) THEN
03597              xl = 0d0
03598              xu = 1d0
03599            ENDIF
03600            CALL GLK_hadres(idg,lact)
03601            IF(lact .EQ. 0) THEN
03602               CALL GLK_Book1(idg,' GLK_WtMon $',nbin,xl,xu)
03603            ELSE
03604               WRITE(m_out,*) ' WARNING GLK_WtMon: exists, id= ',id
03605               WRITE(    6,*) ' WARNING GLK_WtMon: exists, id= ',id
03606            ENDIF
03607       ELSEIF(mode .EQ. 0) THEN
03608 
03609          CALL GLK_hadres(idg,lact)
03610            IF(lact .EQ. 0) THEN
03611               WRITE(m_out,*) ' *****> GLK_WtMon: uninitialized, id= ',id
03612               WRITE(    6,*) ' *****> GLK_WtMon: uninitialized, id= ',id
03613               CALL GLK_Book1(idg,' GLK_WtMon $',1,0d0,1d0)
03614               CALL GLK_hadres(idg,lact)
03615            ENDIF
03616            wt   =par1
03617            wtmax=par2
03618            rn   =par3
03619 
03620            CALL GLK_Fil1(idg,wt,1d0)  
03621 
03622            ist  = m_index(lact,2)
03623            ist2 = ist+7
03624            ist3 = ist+11
03625 
03626            m_b(ist3+13)    = max( dabs(m_b(ist3+13)) ,dabs(wt))
03627            IF(wt .NE. 0d0) m_b(ist3+13)=m_b(ist3+13) *wt/dabs(wt)
03628 
03629            IF(wt .EQ. 0d0)        m_b(ist3+10) =m_b(ist3+10) +1d0
03630            IF(wt .GT. wtmax)      m_b(ist3+11) =m_b(ist3+11) +1d0
03631            IF(rn*wtmax .LE. wt)   m_b(ist3+12) =m_b(ist3+12) +1d0
03632       ELSEIF(mode .GE. 1 .OR. mode .LE. 10) THEN
03633 
03634          CALL GLK_hadres(idg,lact)
03635            IF(lact .EQ. 0) THEN
03636               CALL GLK_Stop1(' lack of initialization, id=',id)
03637            ENDIF
03638            ist    = m_index(lact,2)
03639            ist2   = ist+7
03640            ist3   = ist+11
03641            ntot   = nint(m_b(ist3 +7))
03642            swt    =      m_b(ist3 +8)
03643            sswt   =      m_b(ist3 +9)
03644            IF(ntot.LE.0 .OR. swt.EQ.0d0 )  THEN
03645               averwt=0d0
03646               errela=0d0
03647            ELSE
03648               averwt=swt/float(ntot)
03649               errela=sqrt(abs(sswt/swt**2-1d0/float(ntot)))
03650            ENDIF
03651            nevneg = m_b(ist3  +1) 
03652            nevzer = m_b(ist3 +10)
03653            nevove = m_b(ist3 +11)
03654            nevacc = m_b(ist3 +12)
03655            wwmax  = m_b(ist3 +13)
03656            nevtot = ntot
03657 
03658            par1   = averwt
03659            par2   = errela
03660            par3   = nevtot
03661            IF(mode .EQ. 2) THEN
03662               par1   = nevacc
03663               par2   = nevneg
03664               par3   = nevove
03665            ELSEIF(mode .EQ. 3) THEN
03666               par1   = nevneg
03667               par2   = wwmax
03668            ENDIF
03669 
03670 
03671            IF(mode .LE. 9) RETURN
03672            WRITE(m_out,1003) id, averwt, errela, wwmax
03673            WRITE(m_out,1004) nevtot,nevacc,nevneg,nevove,nevzer
03674            IF(mode .LE. 10) RETURN
03675            CALL GLK_Print(idg)
03676       ELSE
03677 
03678            CALL GLK_Stop1('+++GLK_WtMon: wrong mode=',mode)
03679       ENDIF
03680 
03681  1003 FORMAT(
03682      $  ' ======================= GLK_WtMon ========================='
03683      $/,'   id           averwt         errela            wwmax'
03684      $/,    i5,           e17.7,         f15.9,           e17.7)
03685  1004 FORMAT(
03686      $  ' -----------------------------------------------------------'
03687      $/,'      nevtot      nevacc      nevneg      nevove      nevzer'
03688      $/,   5i12)
03689       END
03690 
03691       SUBROUTINE GLK_CumHis(IdGen,id1,id2)
03692 
03693 
03694 
03695 
03696 
03697 
03698 
03699 
03700       IMPLICIT NONE
03701       INTEGER  IdGen,id1,id2
03702 
03703       INCLUDE 'GLK.h'
03704       SAVE
03705 
03706       CHARACTER*80 TITLE
03707       DOUBLE PRECISION    X(m_MaxNb),ER(m_MaxNb)
03708       LOGICAL GLK_EXIST
03709       DOUBLE PRECISION    swt,sswt,xsec,errel,tmin,tmax
03710       DOUBLE PRECISION    xscrnb,ERela,WtSup
03711       INTEGER  i,nbt,nevt
03712       DOUBLE PRECISION    GLK_hi,GLK_hie
03713 
03714       IF (GLK_Exist(id2)) GOTO 900
03715 
03716       CALL GLK_MgetNtot(IdGen,nevt)
03717       CALL GLK_MgetAve( IdGen,xscrnb,ERela,WtSup)
03718 
03719       IF(nevt .EQ. 0) GOTO 901
03720       CALL GLK_hinbo1(id1,title,nbt,tmin,tmax)
03721       swt  = GLK_hi( id1,0)     
03722       sswt = GLK_hie(id1,0)**2  
03723       DO i=1,nbt
03724          swt   = swt + GLK_hi( id1,i)
03725          sswt  = sswt+ GLK_hie(id1,i)**2
03726 
03727 
03728          xsec  = 0d0
03729          errel = 0d0
03730          IF(swt .NE. 0d0 .AND. nevt .NE. 0) THEN
03731             xsec  = swt*(xscrnb/nevt)
03732             errel = SQRT(ABS(sswt/swt**2-1d0/FLOAT(nevt)))
03733          ENDIF
03734          x(i)  = xsec
03735          er(i) = xsec*errel
03736       ENDDO
03737 
03738       CALL GLK_Book1(id2,title,nbt,tmin,tmax)
03739       CALL GLK_Pak(  id2,x)
03740       CALL GLK_Pake( id2,er)
03741       CALL GLK_idopt(id2,'ERRO')
03742       RETURN
03743  900  WRITE(6,*) '+++++ CUMHIS: ID2 exixsts!!',ID2
03744       RETURN
03745  901  WRITE(6,*) '+++++ CUMHIS: EMPTY HISTO ID=',ID1
03746       END
03747 
03748 
03749 
03750 
03751       SUBROUTINE GLK_RenHst(chak,IdGen,id1,id2)
03752 
03753 
03754 
03755 
03756 
03757 
03758 
03759 
03760 
03761 
03762       IMPLICIT NONE
03763       CHARACTER*4 CHAK
03764       INTEGER     IdGen,id1,id2
03765 
03766       INCLUDE 'GLK.h'
03767       SAVE
03768       CHARACTER*80 TITLE
03769       DOUBLE PRECISION        xscrnb,ERela,WtSup,tmin,tmax
03770       DOUBLE PRECISION        swt,fln10,fact
03771       INTEGER      i,nbt,nevt
03772       DOUBLE PRECISION    GLK_hi,GLK_hie
03773 
03774       IF( id2 .eq. id1) GOTO 900
03775 
03776       CALL GLK_MgetNtot(IdGen,nevt)
03777       CALL GLK_MgetAve( IdGen,xscrnb,ERela,WtSup)
03778 
03779       CALL GLK_hinbo1(id1,title,nbt,tmin,tmax)
03780       IF(     chak .EQ. 'NB  ') THEN
03781          fact = nbt*xscrnb/(nevt*(tmax-tmin))
03782          CALL GLK_Operat(id1,'+',id1,id2, fact, 0d0)
03783       ELSEIF( chak .EQ. 'NB10') THEN
03784          fln10 = log(10.)
03785          fact = nbt*xscrnb/(nevt*(tmax-tmin)*fln10)
03786          CALL GLK_Operat(id1,'+',id1,id2, fact, 0d0)
03787       ELSEIF( chak .EQ. 'UNIT') THEN
03788          swt  = GLK_hi(id1,0)
03789          DO i=1,nbt+1
03790             swt   = swt + GLK_hi(id1,i)
03791          ENDDO
03792          fact = nbt/((tmax-tmin))/swt
03793          CALL GLK_Operat(id1,'+',id1,id2, fact, 0d0)
03794       ELSEIF( chak .EQ. 'UN10') THEN
03795          swt  = GLK_hi(id1,0)
03796          DO i=1,nbt+1
03797             swt   = swt + GLK_hi(id1,i)
03798          ENDDO
03799          fact = nbt/((tmax-tmin)*log(10.))/swt
03800          CALL GLK_Operat(id1,'+',id1,id2, fact, 0d0)
03801       ELSEIF( chak .EQ. '    ') THEN
03802          CALL GLK_Operat(id1,'+',id1,id2, 1d0, 0d0)
03803       ELSE
03804          WRITE(6,*) '+++++ RENHST: wrong chak=',chak
03805       ENDIF
03806 
03807       RETURN
03808  900  WRITE(6,*) '+++++ RENHST: ID1=ID2=',ID1
03809       END
03810 
03811 
03812 
03813 
03814 
03815 
03816 
03817 
03818 
03819 
03820 
03821 
03822 
03823 
03824 
03825 
03826 
03827 
03828 
03829 
03830       SUBROUTINE GLK_Mbook(idm,title,nnchx,WTmax)
03831 
03832 
03833 
03834 
03835 
03836 
03837 
03838 
03839       IMPLICIT NONE
03840       INCLUDE 'GLK.h'
03841       SAVE
03842       INTEGER idm
03843       CHARACTER*80 title
03844       DOUBLE PRECISION   WTmax
03845 
03846       LOGICAL GLK_Exist
03847       INTEGER j,id,nnchx,nchx,lact,lengt2,ist,ist2,ist3
03848       INTEGER iopsc1, iopsc2, ioperb, ioplog, iopsla
03849       INTEGER iflag1, iflag2
03850       INTEGER ityphi
03851       DOUBLE PRECISION   xl,xu,ddx
03852 
03853       CALL GLK_Initialize
03854       id = -idm
03855       IF(GLK_Exist(id)) goto 900
03856       ist=m_length
03857       CALL GLK_hadres(0,lact)
03858 
03859       IF(lact .EQ. 0) CALL GLK_Stop1('GLK_Mbook: no space left,id= ',id)
03860       m_index(lact,1)=id
03861       m_index(lact,2)=m_length
03862       m_index(lact,3)=0
03863 
03864       CALL GLK_Copch(title,m_titlc(lact))
03865       nchx =nnchx
03866       IF(nchx .GT. m_MaxNb)
03867      $     CALL GLK_Stop1(' GLK_Mbook: Too many bins ,id= ',id)
03868       xl   = 0d0
03869       xu   = WTmax
03870 
03871       lengt2 = m_length +2*nchx +m_buf1+1
03872       IF(lengt2 .GE. m_LenmB)
03873      $  CALL GLK_Stop1('GLK_Mbook:too litle storage, m_LenmB= ',m_LenmB)
03874 
03875       DO j=m_length+1,lengt2+1
03876          m_b(j) = 0d0
03877       ENDDO
03878       m_length=lengt2
03879 
03880       ioplog   = 1
03881       iopsla   = 1
03882       ioperb   = 1
03883       iopsc1   = 1
03884       iopsc2   = 1
03885       iflag1   =
03886      $ ioplog+10*iopsla+100*ioperb+1000*iopsc1+10000*iopsc2
03887       ityphi   = 3  
03888       iflag2   = ityphi
03889 
03890 
03891 
03892 
03893 
03894 
03895 
03896 
03897 
03898 
03899 
03900 
03901       m_b(ist +1)  = 9999999999999d0
03902       m_b(ist +2)  = 9d12 +     id*10 +9d0
03903       m_b(ist +3)  = 9d12 + iflag1*10 +9d0
03904       m_b(ist +4)  = 9d12 + iflag2*10 +9d0
03905 
03906       m_b(ist +5)  =  -100d0
03907       m_b(ist +6)  =   100d0
03908 
03909       m_b(ist +7)  =   0d0
03910 
03911       ist2         = ist+7
03912       m_b(ist2 +1) = nchx
03913       m_b(ist2 +2) = xl
03914       m_b(ist2 +3) = xu
03915       ddx = xu-xl
03916       IF(ddx .EQ. 0d0)
03917      $     CALL GLK_Stop1(' GLK_Mbook:    xl=xu,              id= ',id)
03918       m_b(ist2 +4) = float(nchx)/ddx
03919 
03920 
03921       ist3       = ist+11
03922       DO j=1,13
03923          m_b(ist3 +j)=0d0
03924       ENDDO
03925       RETURN
03926 
03927  900  CALL GLK_Retu1(' WARNING GLK_Mbook: already exists id= ', id)
03928       END
03929 
03930 
03931       SUBROUTINE GLK_Mfill(idm,Wtm,rn)
03932 
03933 
03934 
03935 
03936 
03937 
03938 
03939 
03940       IMPLICIT NONE
03941       INTEGER idm
03942       DOUBLE PRECISION  Wtm,rn
03943       INCLUDE 'GLK.h'
03944       SAVE
03945       INTEGER id
03946       INTEGER lact, ist, ist2, ist3, iflag2, nchx, ityphi
03947       INTEGER iposx1,ipose1, kposx1, kpose1, kx
03948       DOUBLE PRECISION   Wt, deltx, factx, xlowedge
03949       DOUBLE PRECISION   xu, xl, x1, wtmax
03950 
03951       id = -idm
03952       Wt = Wtm
03953       CALL GLK_hadres(id,lact)
03954 
03955       IF(lact .EQ. 0)  
03956      $     CALL GLK_Stop1('+++GLK_Mfill: nonexisting id= ',id)
03957 
03958       ist  = m_index(lact,2)
03959       ist2 = ist+7
03960       ist3 = ist+11
03961 
03962       iflag2   = nint(m_b(ist+4)-9d0-9d12)/10
03963       ityphi   = mod(iflag2,10)
03964       IF(ityphi .NE. 3) CALL GLK_Stop1('+++GLK_Mfill: wrong id=  ',id)
03965       x1 =  Wt
03966       m_index(lact,3)=m_index(lact,3)+1
03967 
03968       m_b(ist3 +7)  =m_b(ist3 +7)  +1
03969       m_b(ist3 +8)  =m_b(ist3 +8)  +x1
03970       m_b(ist3 +9)  =m_b(ist3 +9)  +x1*x1
03971 
03972       nchx  = m_b(ist2 +1)
03973       xl    = m_b(ist2 +2)      
03974       xu    = m_b(ist2 +3)
03975       WtMax = xu
03976       factx = m_b(ist2 +4)      
03977       deltx = 1d0/factx
03978       IF(x1 .LT. xl) THEN
03979 
03980          iposx1 = ist3 +1
03981          ipose1 = ist3 +4
03982          m_b(iposx1) = m_b(iposx1)  +1d0
03983          m_b(ipose1) = m_b(ipose1)  +Wt
03984       ELSEIF(x1 .GT. xu) THEN
03985 
03986          iposx1 = ist3 +3
03987          ipose1 = ist3 +6
03988          kposx1 = 0
03989          m_b(iposx1) = m_b(iposx1)  +1d0
03990          m_b(ipose1) = m_b(ipose1)  +(Wt- WtMax)
03991       ELSE
03992 
03993          iposx1 = ist3 +2
03994          ipose1 = ist3 +5
03995          m_b(iposx1) = m_b(iposx1)  +1d0
03996          m_b(ipose1) = m_b(ipose1)  +Wt
03997 
03998          kx = (x1-xl)*factx+1d0
03999          kx = MIN( MAX(kx,1) ,nchx)
04000          kposx1 = ist +m_buf1+kx
04001          kpose1 = ist +m_buf1+nchx+kx
04002          xlowedge = deltx*(kx-1)
04003          m_b(kposx1) = m_b(kposx1)  +1d0
04004          m_b(kpose1) = m_b(kpose1)  +(Wt-xlowedge)
04005       ENDIF
04006 
04007 
04008 
04009       m_b(ist3+13) = MAX( DABS(m_b(ist3+13)) ,DABS(wt))
04010       IF(wt .NE. 0d0) m_b(ist3+13)=m_b(ist3+13) *wt/dabs(wt)
04011 
04012       IF(wt .EQ. 0d0)        m_b(ist3+10) =m_b(ist3+10) +1d0
04013       IF(wt .GT. wtmax)      m_b(ist3+11) =m_b(ist3+11) +1d0
04014       IF(rn*wtmax .LE. wt)   m_b(ist3+12) =m_b(ist3+12) +1d0
04015 
04016       END   
04017 
04018 
04019       SUBROUTINE GLK_MgetAll(idm,
04020      $     AveWt,ERela, WtSup, AvUnd, AvOve,
04021      $     Ntot,Nacc,Nneg,Nove,Nzer)
04022 
04023 
04024 
04025 
04026 
04027 
04028       IMPLICIT NONE
04029       INTEGER idm
04030       DOUBLE PRECISION   AveWt,ERela, WtSup, AvUnd, AvOve
04031       INTEGER Ntot,Nacc,Nneg,Nove,Nzer
04032       INCLUDE 'GLK.h'
04033       SAVE
04034       INTEGER id,ist,ist2,ist3,lact
04035       DOUBLE PRECISION   swt,sswt
04036 
04037       id= -idm
04038       CALL GLK_hadres(id,lact)
04039       IF(lact .EQ. 0)
04040      $     CALL GLK_Stop1('GLK_MgetAll:lack of initialization, id=',id)
04041       ist    = m_index(lact,2)
04042       ist2   = ist+7
04043       ist3   = ist+11
04044       Ntot   = nint(m_b(ist3 +7))
04045       swt    =      m_b(ist3 +8)
04046       sswt   =      m_b(ist3 +9)
04047       IF(Ntot.LE.0 .OR. swt.EQ.0d0 )  THEN
04048          AveWt=0d0
04049          ERela=0d0
04050       ELSE
04051          AveWt=swt/DFLOAT(Ntot)
04052          ERela=sqrt(abs(sswt/swt**2-1d0/float(Ntot)))
04053       ENDIF
04054       WtSup  = m_b(ist3 +13)
04055       AvUnd  = m_b(ist3 +4)/Ntot
04056       AvOve  = m_b(ist3 +6)/Ntot
04057       Nneg = m_b(ist3  +1)    
04058       Nzer = m_b(ist3 +10)
04059       Nove = m_b(ist3 +11)
04060       Nacc = m_b(ist3 +12)
04061 
04062 
04063 
04064 
04065 
04066 
04067 
04068 
04069 
04070 
04071 
04072 
04073       END
04074 
04075       SUBROUTINE GLK_MgetNtot(id,Ntot)
04076 
04077 
04078 
04079 
04080 
04081       IMPLICIT NONE
04082       INCLUDE 'GLK.h'
04083       SAVE
04084       INTEGER idm,id
04085       DOUBLE PRECISION   AveWt, ERela, WtSup, AvUnd, AvOve
04086       INTEGER Ntot, Nacc, Nneg, Nove, Nzer
04087 
04088       CALL GLK_MgetAll(id,
04089      $     AveWt,ERela, WtSup, AvUnd, AvOve,
04090      $     Ntot,Nacc,Nneg,Nove,Nzer)
04091       END
04092 
04093       SUBROUTINE GLK_MgetAve(id,AveWt,ERela,WtSup)
04094 
04095 
04096 
04097 
04098 
04099       IMPLICIT NONE
04100       INCLUDE 'GLK.h'
04101       SAVE
04102       INTEGER idm,id
04103       DOUBLE PRECISION   AveWt, ERela, WtSup, AvUnd, AvOve
04104       INTEGER Ntot, Nacc, Nneg, Nove, Nzer
04105 
04106       CALL GLK_MgetAll(id,
04107      $     AveWt,ERela, WtSup, AvUnd, AvOve,
04108      $     Ntot,Nacc,Nneg,Nove,Nzer)
04109       END
04110 
04111       SUBROUTINE GLK_Mprint(idm)
04112 
04113 
04114 
04115 
04116 
04117 
04118       IMPLICIT NONE
04119       INCLUDE 'GLK.h'
04120       SAVE
04121       INTEGER idm,id
04122       id= -idm
04123       CALL GLK_Print(id)
04124       END
04125 
04126 
04127 
04128 
04129 
04130 
04131 
04132 
04133 
04134       SUBROUTINE GLK_Clone1(id1,id2,title2)
04135 
04136 
04137 
04138       CHARACTER*80 title1, title2, title3
04139       INTEGER      i,nb
04140       DOUBLE PRECISION        xmin,xmax
04141 
04142       CALL GLK_hinbo1(id1,title1,nb,xmin,xmax)
04143       CALL GLK_Copch(title2,title3)
04144       CALL GLK_Book1(id2,title3,nb,xmin,xmax)
04145 
04146       END
04147 
04148       SUBROUTINE GLK_Ymimax(id,wmin,wmax)
04149 
04150 
04151 
04152       IMPLICIT NONE
04153       INTEGER id
04154       DOUBLE PRECISION  wmin,wmax
04155 
04156       CALL GLK_Yminim(id,wmin)
04157       CALL GLK_Ymaxim(id,wmax)
04158       END
04159 
04160 
04161       SUBROUTINE GLK_PLset(ch,xx)
04162 
04163 
04164 
04165 
04166 
04167       IMPLICIT NONE
04168       CHARACTER*4 CH
04169       DOUBLE PRECISION  xx
04170       INCLUDE 'GLK.h'
04171       SAVE
04172 
04173       IF(CH .EQ. 'DMOD') THEN
04174         m_tline = NINT(xx)
04175       ENDIF
04176       END
04177 
04178       SUBROUTINE GLK_SetNout(ilun)
04179 
04180 
04181 
04182 
04183 
04184       IMPLICIT NONE
04185       INCLUDE 'GLK.h'
04186       SAVE
04187       INTEGER ilun
04188 
04189       CALL GLK_Initialize
04190       m_out=ilun
04191       END
04192 
04193       SUBROUTINE GLK_GetYmin(id,ymin)
04194 
04195 
04196 
04197       IMPLICIT NONE
04198       INCLUDE 'GLK.h'
04199       INTEGER id
04200       DOUBLE PRECISION   ymin
04201       INTEGER lact,ist
04202 
04203       CALL GLK_hadres(id,lact)
04204       IF(lact .EQ. 0) RETURN
04205       ist= m_index(lact,2)
04206       ymin = m_b(ist+5)
04207       END
04208 
04209       SUBROUTINE GLK_GetYmax(id,ymax)
04210 
04211 
04212 
04213       IMPLICIT NONE
04214       INCLUDE 'GLK.h'
04215       INTEGER id
04216       DOUBLE PRECISION   ymax
04217       INTEGER lact,ist
04218 
04219       CALL GLK_hadres(id,lact)
04220       IF(lact .EQ. 0) RETURN
04221       ist= m_index(lact,2)
04222       ymax = m_b(ist+6)
04223       END
04224 
04225       SUBROUTINE GLK_SetYmin(id,ymin)
04226 
04227 
04228 
04229       IMPLICIT NONE
04230       INCLUDE 'GLK.h'
04231       INTEGER id
04232       DOUBLE PRECISION   ymin
04233       INTEGER lact,ist
04234 
04235       CALL GLK_hadres(id,lact)
04236       IF(lact .EQ. 0) RETURN
04237       ist= m_index(lact,2)
04238       m_b(ist+5) = ymin
04239       CALL GLK_idopt(id,'YMIN')
04240       END
04241 
04242       SUBROUTINE GLK_SetYmax(id,ymax)
04243 
04244 
04245 
04246       IMPLICIT NONE
04247       INCLUDE 'GLK.h'
04248       INTEGER id
04249       DOUBLE PRECISION   ymax
04250       INTEGER lact,ist
04251 
04252       CALL GLK_hadres(id,lact)
04253       IF(lact .EQ. 0) RETURN
04254       ist= m_index(lact,2)
04255       m_b(ist+6) = ymax
04256       CALL GLK_idopt(id,'YMAX')
04257       END
04258 
04259 
04260       SUBROUTINE GLK_GetYminYmax(id,ymin,ymax)
04261 
04262 
04263 
04264       IMPLICIT NONE
04265       INCLUDE 'GLK.h'
04266       INTEGER id
04267       DOUBLE PRECISION   ymin,ymax
04268 
04269       CALL GLK_GetYmin(id,ymin)
04270       CALL GLK_GetYmax(id,ymax)
04271       END
04272 
04273       SUBROUTINE GLK_SetYminYmax(id,ymin,ymax)
04274 
04275 
04276 
04277       IMPLICIT NONE
04278       INCLUDE 'GLK.h'
04279       INTEGER id
04280       DOUBLE PRECISION   ymin,ymax
04281 
04282       CALL GLK_SetYmin(id,ymin)
04283       CALL GLK_SetYmax(id,ymax)
04284       END
04285 
04286       SUBROUTINE GLK_CopyYmin(id1,id2)
04287 
04288 
04289 
04290       IMPLICIT NONE
04291       INCLUDE 'GLK.h'
04292       INTEGER id1,id2
04293       DOUBLE PRECISION   ymin
04294 
04295       CALL GLK_GetYmin(id1,ymin)
04296       CALL GLK_SetYmin(id2,ymin)
04297       END
04298 
04299       SUBROUTINE GLK_CopyYmax(id1,id2)
04300 
04301 
04302 
04303       IMPLICIT NONE
04304       INCLUDE 'GLK.h'
04305       INTEGER id1,id2
04306       DOUBLE PRECISION   ymax
04307 
04308       CALL GLK_GetYmax(id1,ymax)
04309       CALL GLK_SetYmax(id2,ymax)
04310       END
04311 
04312       SUBROUTINE GLK_SetColor(Color)
04313 
04314 
04315 
04316 
04317 
04318       IMPLICIT NONE
04319       INCLUDE 'GLK.h'
04320       CHARACTER*(*) Color
04321 
04322       CALL GLK_Copch(Color,m_Color)
04323 
04324       m_KeyCol = 1              
04325       END
04326 
04327       SUBROUTINE GLK_SetTabRan(i1,i2,i3)
04328 
04329 
04330 
04331 
04332 
04333 
04334       IMPLICIT NONE
04335       INCLUDE 'GLK.h'
04336       INTEGER i1,i2,i3
04337 
04338       m_KeyTbr = 1              
04339       m_TabRan(1) = i1
04340       m_TabRan(2) = i2
04341       m_TabRan(3) = i3
04342       END
04343 
04344       SUBROUTINE GLK_GetNb(id,Nb)
04345 
04346 
04347 
04348       IMPLICIT NONE
04349       INCLUDE 'GLK.h'
04350       INTEGER  id,Nb
04351 
04352       CHARACTER*80 title
04353       INTEGER lact,ist,ist2
04354 
04355       CALL GLK_hadres(id,lact)
04356       IF(lact .EQ. 0) THEN
04357          CALL GLK_Stop1('+++STOP in GLK_GetNb: wrong id=',id)
04358       ENDIF
04359       ist    = m_index(lact,2)
04360       ist2   = ist+7
04361       Nb     = m_b(ist2 +1)
04362       END
04363 
04364       SUBROUTINE GLK_GetBin(id,ib,Bin)
04365 
04366 
04367 
04368 
04369 
04370       IMPLICIT NONE
04371       INCLUDE 'GLK.h'
04372       INTEGER    id,ib
04373       DOUBLE PRECISION      Bin,GLK_hi
04374 
04375       Bin =  GLK_hi(id,ib)
04376       END
04377 
04378 
04379 
04380 
04381 
04382 
04383