C...Program to plot event properties in gamma-gamma, gamma-p and p-p.

      DIMENSION IDC(6),IDD(3)

C...Read in histograms.
      CALL GREAD('gout.33')

C...Start HPLOT.
      OPEN(20,FILE='hout.33',STATUS='unknown',FORM='formatted')
      CALL HPLINT(7879)
      CALL HPLCAP(-20)
      CALL HPLOPT('UTIT',1)
      CALL HPLOPT('NBOX',1)
      CALL HPLSET('YLAB',0.80)
      CALL HPLSET('YHTI',1.00)
      CALL HPLSET('XLAB',1.60)
      CALL HPLSET('XSIZ',15.5)
      CALL HPLSET('YSIZ',18.)
      CALL HPLSET('XMGL',2.0)
      CALL HPLSET('XMGR',0.5)
      CALL HPLSET('YMGL',1.5)
      CALL HPLSET('YMGU',0.5)

C...Loop over plots: decide on linear or log y scale and size histogram.
      DO 200 IPL=0,9
      CALL HPLSET('YSIZ',22.0)
      CALL HPLZON(1,2,1,' ')
      LOGSC=0
      IF(IPL.EQ.5) LOGSC=1
      IF(LOGSC.EQ.0) THEN
        CALL HPLOPT('LINY',1)
      ELSE
        CALL HPLOPT('LOGY',1)
      ENDIF
      IDC(1)=1+10*IPL
      IDC(2)=2+10*IPL
      IDC(3)=3+10*IPL
      IDC(4)=4+10*IPL
      IDC(5)=5+10*IPL
      IDC(6)=6+10*IPL
      IF(LOGSC.EQ.0) THEN
        CALL NCOMPA(6,IDC)
      ELSE
        CALL NCOMPL(6,IDC)
      ENDIF

C...Plot first histogram with V*V, V*D, V*A.
      CALL HPLSET('DMOD',1.0)
      CALL HPLOT(IDC(1),'H',' ',0)
      CALL HPLSET('DMOD',2.0)
      CALL HPLOT(IDC(2),'S',' ',0)
      CALL HPLSET('DMOD',4.0)
      CALL HPLOT(IDC(3),'S',' ',0)
      IF(IPL.EQ.0) CALL HPLAX('pT','dN(hard)/d(pT)')
      IF(IPL.EQ.1) CALL HPLAX('ET','dN/d(ET)')
      IF(IPL.EQ.2) CALL HPLAX('y','d(ET)/dy')
      IF(IPL.EQ.3) CALL HPLAX('N(ch)','Prob(N(ch))')
      IF(IPL.EQ.4) CALL HPLAX('y','dN(ch)/dy')
      IF(IPL.EQ.5) CALL HPLAX('pT','dN(ch)/d(pT)')
      IF(IPL.EQ.6) CALL HPLAX('delta-y-max','dN/d(delta-y-max)')
      IF(IPL.EQ.7) CALL HPLAX('ET','dN(jet)/d(ET)')
      IF(IPL.EQ.8) CALL HPLAX('eta','dN(jet)/d(eta)')
      IF(IPL.EQ.9) CALL HPLAX('pT remnant','Prob(pT remnant)')

C...Plot second histogram with D*D, D*A, A*A.
      CALL HPLSET('DMOD',1.0)
      CALL HPLOT(IDC(4),'H',' ',0)
      CALL HPLSET('DMOD',2.0)
      CALL HPLOT(IDC(5),'S',' ',0)
      CALL HPLSET('DMOD',4.0)
      CALL HPLOT(IDC(6),'S',' ',0)
      IF(IPL.EQ.0) CALL HPLAX('pT','dN(hard)/d(pT)')
      IF(IPL.EQ.1) CALL HPLAX('ET','dN/d(ET)')
      IF(IPL.EQ.2) CALL HPLAX('y','d(ET)/dy')
      IF(IPL.EQ.3) CALL HPLAX('N(ch)','Prob(N(ch))')
      IF(IPL.EQ.4) CALL HPLAX('y','dN(ch)/dy')
      IF(IPL.EQ.5) CALL HPLAX('pT','dN(ch)/d(pT)')
      IF(IPL.EQ.6) CALL HPLAX('delta-y-max','dN/d(delta-y-max)')
      IF(IPL.EQ.7) CALL HPLAX('ET','dN(jet)/d(ET)')
      IF(IPL.EQ.8) CALL HPLAX('eta','dN(jet)/d(eta)')
      IF(IPL.EQ.9) CALL HPLAX('pT remnant','Prob(pT remnant)')

C...Mix models to produce summed histograms.
      CALL HPLSET('YSIZ',18.0)
      CALL HPLZON(1,1,1,' ')
      IDD(1)=7+10*IPL
      IDD(2)=8+10*IPL     
      IDD(3)=9+10*IPL
      IF(LOGSC.EQ.0) THEN
        CALL NCOMPA(3,IDD)
      ELSE
        CALL NCOMPL(3,IDD)
      ENDIF
      
C...Plot third histogram with comparison gamma-gamma, gamma-p and p-p.
      CALL HPLSET('DMOD',1.0)
      CALL HPLOT(IDD(1),'H',' ',0)
      CALL HPLSET('DMOD',2.0)
      CALL HPLOT(IDD(2),'S',' ',0)
      CALL HPLSET('DMOD',4.0)
      CALL HPLOT(IDD(3),'S',' ',0)
      IF(IPL.EQ.0) CALL HPLAX('pT','dN(hard)/d(pT)')
      IF(IPL.EQ.1) CALL HPLAX('ET','dN/d(ET)')
      IF(IPL.EQ.2) CALL HPLAX('y','d(ET)/dy')
      IF(IPL.EQ.3) CALL HPLAX('N(ch)','Prob(N(ch))')
      IF(IPL.EQ.4) CALL HPLAX('y','dN(ch)/dy')
      IF(IPL.EQ.5) CALL HPLAX('pT','dN(ch)/d(pT)')
      IF(IPL.EQ.6) CALL HPLAX('delta-y-max','dN/d(delta-y-max)')
      IF(IPL.EQ.7) CALL HPLAX('ET','dN(jet)/d(ET)')
      IF(IPL.EQ.8) CALL HPLAX('eta','dN(jet)/d(eta)')
      IF(IPL.EQ.9) CALL HPLAX('pT remnant','Prob(pT remnant)')
  200 CONTINUE

C...Finish off.
      CALL HPLEND
      END
 
C*********************************************************************
 
      SUBROUTINE GREAD(FILE)
      COMMON/PAWC/HIST(50000)
      CHARACTER*(*) FILE
      CHARACTER TITLE*60,FILNAM*60
      DIMENSION VAL(5)

C...Find and open file for READ.
      INUM=24
      FILNAM=FILE//' '
      OPEN(INUM,FILE=FILNAM,STATUS='old',FORM='formatted')
      CALL HLIMIT(50000)

C...Loop over histograms and book them.
  100 READ(INUM,'(I5,5X,A60)',END=120) ID,TITLE
      READ(INUM,'(I5,2E14.6)') NX,XMIN,XMAX
      CALL HBOOK1(ID,TITLE,NX,XMIN,XMAX,0.)
      DX=(XMAX-XMIN)/NX

C...Read histogram contents, in groups of five.
      DO 110 IXG=1,(NX+4)/5
      READ(INUM,'(5E14.6)') (VAL(IXV),IXV=1,5)
      DO 110 IXV=1,5
      IX=5*IXG+IXV-5
      IF(IX.LE.NX) THEN
        X=XMIN+(IX-0.5)*DX
        CALL HF1(ID,X,VAL(IXV))        
      ENDIF
  110 CONTINUE

C...Add copy histogram for sums.
      CALL HBOOK1(ID+1000,TITLE,NX,XMIN,XMAX,0.)

C...Go to next histogram; finish.
      GOTO 100
  120 CONTINUE
      CLOSE(INUM)

      RETURN
      END
 
C*********************************************************************
 
      SUBROUTINE GRDREP(FILE)
C...Copy of GREAD to read and replace (overwrite) existing histogram.
C...Assumes GREAD has already been called.
      COMMON/PAWC/HIST(50000)
      CHARACTER*(*) FILE
      CHARACTER TITLE*60,FILNAM*60
      DIMENSION VAL(5)

C...Find and open file for READ.
      INUM=25
      FILNAM='/home/surya11/torsjo/'//FILE//' '
      OPEN(INUM,FILE=FILNAM,STATUS='old',FORM='formatted')
c      CALL HLIMIT(50000)

C...Loop over histograms and book them.
  100 READ(INUM,'(I5,5X,A60)',END=120) ID,TITLE
      READ(INUM,'(I5,2E14.6)') NX,XMIN,XMAX
      CALL HDELET(ID)
      CALL HBOOK1(ID,TITLE,NX,XMIN,XMAX,0.)
      DX=(XMAX-XMIN)/NX

C...Read histogram contents, in groups of five.
      DO 110 IXG=1,(NX+4)/5
      READ(INUM,'(5E14.6)') (VAL(IXV),IXV=1,5)
      DO 110 IXV=1,5
      IX=5*IXG+IXV-5
      IF(IX.LE.NX) THEN
        X=XMIN+(IX-0.5)*DX
        CALL HF1(ID,X,VAL(IXV))        
      ENDIF
  110 CONTINUE

C...Add copy histogram for sums.
      CALL HBOOK1(ID+1000,TITLE,NX,XMIN,XMAX,0.)

C...Go to next histogram; finish.
      GOTO 100
  120 CONTINUE
      CLOSE(INUM)

      RETURN
      END
 
C*********************************************************************
 
      SUBROUTINE NCOMPA(ND,ID)
      DIMENSION ID(*),CONTEN(100)
      CHARACTER*80 TITLE
 
      XMIN=1E20
      XMAX=-1E20
      DO 100 J=1,100
  100 CONTEN(J)=0.
      CALL HGIVE(ID(1),TITLE,NX,XL,XU,NY,YL,YU,NWT,LOC)
 
      DO 110 I=1,ND
      CALL HUNPAK(ID(I),CONTEN,' ',0)
      DO 110 J=1,NX
      IF(CONTEN(J).GT.XMAX) XMAX=CONTEN(J)
      IF(CONTEN(J).LT.XMIN) XMIN=CONTEN(J)
  110 CONTINUE
 
      XMAXP=1.04*XMAX
      XMINP=MIN(0.,1.04*XMIN)
c      WRITE(6,*) XMAX,XMIN,XMAXP,XMINP
 
      DO 120 I=1,ND
      CALL HMAXIM(ID(I),XMAXP)
  120 CALL HMINIM(ID(I),XMINP)
 
      RETURN
      END
 
C*********************************************************************
 
      SUBROUTINE NCOMPL(ND,ID)
      DIMENSION ID(*),CONTEN(100)
      CHARACTER*80 TITLE
 
      XMIN=1E20
      XMAX=1E-20
      DO 100 J=1,100
  100 CONTEN(J)=0.
      CALL HGIVE(ID(1),TITLE,NX,XL,XU,NY,YL,YU,NWT,LOC)
 
      DO 110 I=1,ND
      CALL HUNPAK(ID(I),CONTEN,' ',0)
      DO 110 J=1,NX
      IF(CONTEN(J).GT.XMAX) XMAX=CONTEN(J)
  110 IF(CONTEN(J).GT.1E-20.AND.CONTEN(J).LT.XMIN) XMIN=CONTEN(J)
 
      XMAXP=XMAX*(XMAX/XMIN)**0.03
      XMINP=XMIN*(XMIN/XMAX)**0.03
c      WRITE(6,*) XMAX,XMIN,XMAXP,XMINP
 
      DO 120 I=1,ND
      CALL HMAXIM(ID(I),XMAXP)
  120 CALL HMINIM(ID(I),XMINP)
 
      RETURN
      END
 
C*********************************************************************
 
      SUBROUTINE NPLOT(ID,ISYM,SIZE)
      DIMENSION CONTEN(100),XVAL(100)
      CHARACTER*80 TITLE

      CALL HGIVE(ID,TITLE,NX,XL,XU,NY,YL,YU,NWT,LOC)
      DO 100 IX=1,NX
  100 XVAL(IX)=XL+(IX-0.5)*(XU-XL)/NX
      CALL HUNPAK(ID,CONTEN,' ',0)
      DO 110 IX=NX+1,100
      XVAL(IX)=0.  
  110 CONTEN(IX)=0.   

      CALL HPLSYM(XVAL,CONTEN,NX,ISYM,SIZE,' ')

      RETURN
      END
