| Attachment 25: |
implantdecay.f
*trigger
128
*oned
0..15 s 65536
20..35 s 65536
40..55 s 65536
60..75 s 64
80..96 s 64
100..115 s 65536
120..135 s 65536
140..155 s 65536
200..215 s 65536
250..254 s 4096
300..331 s 65536
400..405 s 65536
1400..1403 s 65536
2130..2131 s 65536
2030..2031 s 65536
2200..2201 s 65536
2210..2211 s 65536
2220..2229 s 1024
3030..3033 s 4096
*twod
1000..1001 s 4096 4096
1100..1101 s 512 512
2000..2003 s 512 512
2010..2011 s 512 512
2020..2021 s 1024 1024
2040..2049 s 512 512
2100..2101 s 512 512
2110..2113 s 512 512
2120..2127 s 1024 1024
2300..2301 s 1024 1024
2400..2401 s 1024 1024
2500..2501 s 1024 1024
2600..2601 s 1024 1024
3000..3001 s 512 512
3010..3011 s 1024 1024
3020..3021 s 512 512
3040..3041 s 512 512
*vars
*sort
C 201..232 s 65536
C 250..254 s 4096
C 2500..2505 s 1024 1024
C----67---------------------------------------------------------------72------80
SUBROUTINE init
IMPLICIT none
SAVE
C
C External functions
C
EXTERNAL dtime
C
INTEGER and, lshift, rshift, bb18order
C
LOGICAL btest
C
REAL float, secnds
C
C Parameter variables
C
INTEGER max
PARAMETER (max = 4096)
C
C Local variables
C
INTEGER adc_data, asic, ch, chx, channel, channel_ident
INTEGER count, data(0:4095), disc
INTEGER dsssd_a( 6 ), dsssd_b( 6 ), dsssd_c( 6 ), dsssd_d( 6 )
INTEGER dsssd_e( 6 ), dsssd_f( 6 ), dsssd_g( 6 ), dsssd_h( 6 )
INTEGER*8 dt, tsdata(0:4096), itsdata(0:4096)
INTEGER ediff, fee(32)
INTEGER hec_e_sum_x(2), hec_e_sum_y(2)
INTEGER hec_e_x_max(2), hec_e_y_max(2)
INTEGER hec_e_x_max_ch(2), hec_e_y_max_ch(2)
INTEGER lec_e(2), lec_x(2), lec_y(2)
INTEGER hec_x(2), hec_y(2)
INTEGER m_veto, veto( 1:64 )
INTEGER*8 e_time, e_time_old
INTEGER i
INTEGER*2 i2(2), i2_2(4)
INTEGER i4, i4_2(2)
INTEGER*8 i8, first_ts_value
INTEGER*8 items, items_old, events, events_old
INTEGER idata(0:4095), ierr, information, information_index
INTEGER invalid_id, j, j1, j1_old, j2, j2_old, k
INTEGER j3, j3_old, j4, j4_old
INTEGER l, m, mbs_data(0:3), module, m_disc, ptr, lec(8)
INTEGER m_p_lec(8), m_n_lec(8), m_p_hec(8), m_n_hec(8)
INTEGER sc_channel
INTEGER scaler( 32 ), scaler_old( 32 ), range, time_warp, total
INTEGER*8 timestamp, ts
INTEGER ts28, ts48, ts64
INTEGER*8 old_ts( 8, 2 ), ts_old
INTEGER implant_e( 0:383, 0:127, 1:8 )
INTEGER*8 implant_ts( 0:383, 0:127, 1:8 )
INTEGER*8 decay_ts( 0:383, 0:127, 1:8 )
INTEGER*8 dts( 0:511 ), cts( 0:511 ), min_dts( 0:511 )
INTEGER type, w(0:31), zzz, pulser, pulser_old
INTEGER z_lec, z_lec_veto, z_hec
C
LOGICAL hit(0:4095), ihit(0:4095)
LOGICAL first_event, next_event, first_ts
LOGICAL implant1, implant2, decay1, decay2, other1, other2
LOGICAL dt_tag, warp
LOGICAL first_info_code_4, first_info_code_5
REAL c(0:7), delta_t, gain(0:max-1), offset(0:max-1)
REAL t1, t2, t2_old
DOUBLE PRECISION rates( 32 ), t3, t4, t4_old, t5
C----67---------------------------------------------------------------72------80
C
C Namelists
C
NAMELIST /variables/ gain, offset, c, w,
+ dsssd_a, dsssd_b, dsssd_c, dsssd_d,
+ dsssd_e, dsssd_f, dsssd_g, dsssd_h, veto
C----67---------------------------------------------------------------72------80
C
C Common variables
C
INTEGER*2 gdata(0:15)
C
COMMON /fdata/ gdata
C
C Common variables
C
INTEGER*2 gid(0:15)
C
COMMON /fid/ gid
C
C Common variables
C
INTEGER mult
C
COMMON /fmult/ mult
C
EQUIVALENCE ( i8, i4_2(1) )
EQUIVALENCE ( i4, i2(1) )
C
C----67---------------------------------------------------------------72------80
WRITE ( 6, * ) ' *** FEB25 - implantdecay - March 2025'
WRITE ( 6, * ) ' *** Entry init commences'
C Initialise counters
events = 0
events_old = 0
pulser = 0
pulser_old = 0
time_warp = 0
invalid_id = 0
first_ts = .TRUE.
first_info_code_4 = .false.
first_info_code_5 = .false.
t3 = 0.0D+00
t4 = 0.0D+00
t4_old = 0.0D+00
C Initialise event data
DO i = 0, 4095
data( i ) = 0
tsdata(i) = 0
hit( i ) = .FALSE.
ENDDO
DO i = 1, 32
fee(i) = 0
ENDDO
DO i = 0, 511
min_dts( i ) = 999999999
cts( i ) = 0
ENDDO
first_event = .true.
next_event = .false.
ts_old = 0
e_time_old = 0
count = 0
total = 0
DO i = 0, 4095
gain( i ) = 1.0
offset( i ) = 0.0
ENDDO
DO i = 0, 31
w( i ) = 0
ENDDO
DO i = 0, 7
c( i ) = 1.0
ENDDO
DO i = 1, 64
veto(i) = -1
ENDDO
DO i = 1, 32
scaler( i ) = 0
scaler_old( i ) = 0
rates( i ) = 0.0
ENDDO
DO i = 1, 6
DO j = 1, 2
old_ts( i, j ) = 0
ENDDO
ENDDO
DO i = 0, 383
DO j = 0, 127
DO k = 1, 8
implant_ts( i, j, k ) = 0
decay_ts( i, j , k ) = 0
implant_e( i, j, k ) = 0
ENDDO
ENDDO
ENDDO
C Initialise time
t1 = SECNDS(0.0)
C Read program variables via NAMELIST I/O
OPEN( 1, FILE = '/home/td/FEB25/variables.dat',
+ IOSTAT = ierr )
IF ( ierr.NE.0 ) THEN
WRITE( 6, * ) ' *** OPEN I/O error:', ierr
ENDIF
READ( 1, NML = variables, IOSTAT = ierr )
IF ( ierr.NE.0 ) THEN
WRITE( 6, * ) ' *** READ I/O error:', ierr
ENDIF
CLOSE( 1, IOSTAT = ierr )
IF ( ierr.NE.0 ) THEN
WRITE( 6, * ) ' *** CLOSE I/O error:', ierr
ENDIF
OPEN( 20, FILE = '/home/td/FEB25/20',STATUS='NEW',IOSTAT=ierr )
IF ( ierr.NE.0 ) THEN
WRITE( 6, * ) ' *** OPEN I/O error:', ierr
ENDIF
OPEN( 21, FILE = '/home/td/FEB25/21',STATUS='NEW',IOSTAT=ierr )
IF ( ierr.NE.0 ) THEN
WRITE( 6, * ) ' *** OPEN I/O error:', ierr
ENDIF
C Display program variables
DO i = 0, 511, 8
WRITE( 6, 9001 ) i, i+7, ( gain( j ), j = i, i+7 )
ENDDO
DO i = 0, 511, 8
WRITE( 6, 9002 ) i, i+7, ( offset( j ), j = i, i+7 )
ENDDO
DO i = 0, 7, 8
WRITE( 6, 9003 ) i, i+7, ( c(j), j = 1, 8 )
ENDDO
DO i = 0, 31, 8
WRITE( 6, 9004 ) i, i+7, ( w(j), j = i, i+7 )
ENDDO
DO i = 1, 2
WRITE( 6, 9005 ) i, dsssd_a(i), dsssd_b(i),
+ dsssd_c(i), dsssd_d(i),
+ dsssd_e(i), dsssd_f(i),
+ dsssd_g(i), dsssd_h(i)
ENDDO
WRITE ( 6, * ) ' *** Entry init ends'
RETURN
C----67---------------------------------------------------------------72------80
ENTRY sortin
items = items + 1
IF ( MOD( items, 10000000 ).EQ.0 ) THEN
t2 = SECNDS( t1 )
delta_t = t2 - t2_old
... 1425 more lines ...
|