PAASS
Software suite to Acquire and Analyze Data from Pixie16
set2cc.f
Go to the documentation of this file.
1 C ******************************************************************
2 C
3 C ******************************************************************
4 C BY J.R. BEENE AT HRIBF - LAST MODIFIED by WT MILNER 02/17/99
5 C ******************************************************************
6 C
7  SUBROUTINE set2cc(ID,IX,IY,IZ)
8 C
9 C ------------------------------------------------------------------
10 C COUNT 1 CHECK and COMPRESS (1D and 2D)
11 C ROUTINE TO ADD ONE COUNT PER CALL TO MEMORY HISTOGRAMS
12 C DIFFERS FROM COUNT1 IN THAT COMPRESSION AND RANGE CHECKING
13 C ARE DONE. IX,IY ARE RAW PARAMETER VALUES.
14 C !!!NOTE!!! requests to increment nonexistant histograms are
15 C igored without comment.
16 C ------------------------------------------------------------------
17 C
18  IMPLICIT NONE
19 C
20 C ------------------------------------------------------------------
21  common/sc17/ ioff(8000),iofh(8000),ndim(8000),nhpc(8000),
22  & lenx(8000),lenh(8000)
23 C
24  INTEGER*2 LENX, NDIM, NHPC
25  INTEGER*4 IOFF, IOFH
26  INTEGER*4 LENH
27 C ------------------------------------------------------------------
28  common/sc18/ icmp(4,8000),imin(4,8000),imax(4,8000),maxoff
29 C
30  INTEGER*2 ICMP, IMIN, IMAX
31  INTEGER*4 MAXOFF
32 C ------------------------------------------------------------------
33  INTEGER*4 ID,IX,IY,ICX,ICY,IC,NDX,IZ
34 C ------------------------------------------------------------------
35 C
36  IF(ndim(id).LE.0)RETURN !Check existance
37 C
38 C
39 C ICX=RSHIFT(IX,ICMP(1,ID)) !COMPRESS DEC fortran
40 
41  icx=ishft(ix,-icmp(1,id)) !COMPRESS ansi fortran
42 C
43 C ! CHECK X RANGE
44  IF(icx.LT.imin(1,id).OR.icx.GT.imax(1,id))RETURN
45  icx=icx-imin(1,id)
46  ic=icx
47  IF(ndim(id).EQ.2)THEN
48 C ICY=RSHIFT(IY,ICMP(2,ID)) !COMPRESS DEC fortran
49  icy=ishft(iy,-icmp(2,id)) !COMPRESS ansi fortran
50 C
51 C ! CHECK Y RANGE
52  IF(icy.LT.imin(2,id).OR.icy.GT.imax(2,id))RETURN
53  icy=icy-imin(2,id)
54  ic=icy*lenx(id)+icx !CHAN-OFF FOR 2-D
55  ENDIF
56 C
57  IF(nhpc(id).EQ.2) THEN !TST FOR FULL-WD CHAN
58  ndx=ioff(id)+ic !FULL-WD INDEX
59 c CALL MEM_ADD1_FW(NDX) !FULL-WD ADD-ONE
60  CALL mem_set_value_fw(ndx,iz) !HALF-WD ADD-ONE
61  RETURN
62  ELSE
63 C
64  ndx=iofh(id)+ic !HALF-WD INDEX
65  CALL mem_set_value_hw(ndx,iz) !HALF-WD ADD-ONE
66 c CALL MEM_ADD1_HW(NDX) !HALF-WD ADD-ONE
67  ENDIF
68 C
69  RETURN
70  END
71 
72 C ******************************************************************
73 C
74 C ******************************************************************
75 C BY J.R. BEENE AT HRIBF - LAST MODIFIED by WT MILNER 02/17/99
76 C ******************************************************************
77 C
78  SUBROUTINE get2cc(ID,IX,IY,IZ)
79 c
80 C
81 C ------------------------------------------------------------------
82 C COUNT 1 CHECK and COMPRESS (1D and 2D)
83 C ROUTINE TO ADD ONE COUNT PER CALL TO MEMORY HISTOGRAMS
84 C DIFFERS FROM COUNT1 IN THAT COMPRESSION AND RANGE CHECKING
85 C ARE DONE. IX,IY ARE RAW PARAMETER VALUES.
86 C !!!NOTE!!! requests to increment nonexistant histograms are
87 C igored without comment.
88 C ------------------------------------------------------------------
89 C
90  IMPLICIT NONE
91 C
92 C ------------------------------------------------------------------
93  common/sc17/ ioff(8000),iofh(8000),ndim(8000),nhpc(8000),
94  & lenx(8000),lenh(8000)
95 C
96  INTEGER*2 LENX, NDIM, NHPC
97  INTEGER*4 IOFF, IOFH
98  INTEGER*4 LENH
99 C ------------------------------------------------------------------
100  common/sc18/ icmp(4,8000),imin(4,8000),imax(4,8000),maxoff
101 C
102  INTEGER*2 ICMP, IMIN, IMAX
103  INTEGER*4 MAXOFF
104 C ------------------------------------------------------------------
105  INTEGER*4 ID,IX,IY,ICX,ICY,IC,NDX,IZ
106 C ------------------------------------------------------------------
107 
108  INTEGER*2 MEM_GET_VALUE_HW
109 
110  INTEGER*4 MEM_GET_VALUE_FW
111 C
112  IF(ndim(id).LE.0)RETURN !Check existance
113 C
114 C
115 C ICX=RSHIFT(IX,ICMP(1,ID)) !COMPRESS DEC fortran
116 
117  icx=ishft(ix,-icmp(1,id)) !COMPRESS ansi fortran
118 C
119 C ! CHECK X RANGE
120  IF(icx.LT.imin(1,id).OR.icx.GT.imax(1,id))RETURN
121  icx=icx-imin(1,id)
122  ic=icx
123  IF(ndim(id).EQ.2)THEN
124 C ICY=RSHIFT(IY,ICMP(2,ID)) !COMPRESS DEC fortran
125  icy=ishft(iy,-icmp(2,id)) !COMPRESS ansi fortran
126 C
127 C ! CHECK Y RANGE
128  IF(icy.LT.imin(2,id).OR.icy.GT.imax(2,id))RETURN
129  icy=icy-imin(2,id)
130  ic=icy*lenx(id)+icx !CHAN-OFF FOR 2-D
131  ENDIF
132 C
133  IF(nhpc(id).EQ.2) THEN !TST FOR FULL-WD CHAN
134  ndx=ioff(id)+ic !FULL-WD INDEX
135 c CALL MEM_ADD1_FW(NDX) !FULL-WD ADD-ONE
136  iz=mem_get_value_fw(ndx) !HALF-WD ADD-ONE
137 c print *,iz,'fw'
138  RETURN
139  ELSE
140 C
141  ndx=iofh(id)+ic !HALF-WD INDEX
142  iz=mem_get_value_hw(ndx) !HALF-WD ADD-ONE
143  print *,iz,'hw'
144 c CALL MEM_ADD1_HW(NDX) !HALF-WD ADD-ONE
145  ENDIF
146 C
147  RETURN
148  END
149 
150 c===============================================================================
subroutine set2cc(ID, IX, IY, IZ)
Definition: set2cc.f:8
subroutine get2cc(ID, IX, IY, IZ)
Definition: set2cc.f:79