Offline analysis of S100 data files R21_0 - R21_99 (162Eu setting)
first WR ts
First timestamp of R21_0 0x17CA09154AE3E636
Epoch converter says ...
GMT: Saturday, April 27, 2024 4:36:35.223 AM
Your time zone: Saturday, April 27, 2024 5:36:35.223 AM GMT+01:00 DST
last WR ts
First timestamp of R21_100 0x17CA16C1904150CE
GMT: Saturday, April 27, 2024 8:47:08.772 AM
Your time zone: Saturday, April 27, 2024 9:47:08.772 AM GMT+01:00 DST
FEE64 configuration
FEE64 a b c
g h
d e f
a b c d e f g h
DSSSD#1 15 3 12 9 1 5 2 4
DSSSD#2 11 7 16 10 14 13 6 8
n+n Ohmic FEE64s 2, 4, 6, 8
Data analysis assumes
- all LEC ADC data channels with valid ADC offset included (1012 of 1024 channels)
LEC calibration ADC offset only
- no clustering
- no multiplex timestamp correction
- no p+n junction side - n+n Ohmic side correlation time gates
- FEE64 *not* DSSSD strip ordering
- hardware - slow comparator setting p+n junction FEE64s 100keV, n+n Ohmic FEE64s 150keV
- LEC energy difference +/-168keV
- HEC energy difference +/- 1.68GeV
- valid LEC events
DSSSD #1
p+n junction side multiplicity = 1 and n+n Ohmic side multiplicity = 1
DSSSD #2
0 < p+n junction side multiplicity < 8
and
0 < n+n Ohmic side multiplicity < 8
151keV < LEC energy < 1008keV
to select candidate beta events and veto higher energy events e.g. light ions
standalone analysis of AIDA data, no downstream veto detector
- valid HEC events
p+n junction side multiplicity > 0 and n+n Ohmic side multiplicity > 0
(x,y) strips corresponding to maximum energy
p+n junction and n+n Ohmic side HEC
- HEC veto
p+n junction side multiplicity > 0 or n+n Ohmic side multiplicity > 0
- per pixel implant-decay correlations
- end of event
difference in WR timestamp between successive ADC data items > 2500
Attachments 1-4
per DSSSD p+n junction - n+n Ohmic strip time difference for HEC and LEC events (2us/channel) linear and log scale
- observe large (> 32us) time differences (on log scale)
- range of time differences increases with multiplicity ( DSSSD#1 cf. DSSSD#2 LEC events)
- distribution of HEC time differences can probably be understood in terms of most/all channels of ASIC being active during HEC event with low LEC thresholds
- AIDA is a triggerless DAQ producing streams of ADC data items *not* events
at high instantaneous rates when events are constructed they may become aggregated in time i.e. > 32us readout time of all channels of one ASIC
- To investigate impose additional end of event criterion
difference in first and last WR timestamp of event < 33us
Attachments 5-6
per DSSSD p+n junction - n+n Ohmic strip time difference for HEC and LEC events (2us/channel) linear and log scale
- blue original end of event criteria, cyan new end of event criteria
- as expected range of time differences is restricted to +/- 32us
- observe somewhat higher fraction of events with low time differences
DSSSD #1 10363098 of 16104322 (64%) events +/-2us
DSSSD #2 860454912 of 1766618199 (49%) events +/-2us
Attachment 7
per DSSSD p+n junction - n+n Ohmic strip time difference for LEC events - x-axis 2us/channel, y-axis 20keV /channel
Attachment 8 per FEE64 LEC data rate (Hz) 268ms/channel
Attachment 9 per FEE64 LEC data rate (Hz) 268ms/channel: 150keV < energy < 1500keV
Attachment 10 per FEE64 LEC data rate (Hz) 268ms/channel: energy > 1500keV
- observe high instantaneous rate on spill
- rate dominated by low energy (<1500keV) events
- rate of higher energy events dominated by on spill events i.e. light ions as expected
- significant deadtime on spill for n+n Ohmic FEE64s, low deadtime off spill
- deadtime low/zero for p+n junction FEE64s on/off spill
Attachment 11 per FEE64 LEC hit pattern: 150keV < energy < 1500keV
Attachment 12 per FEE64 LEC hit pattern: energy > 1500keV
Attachment 13 per FEE64 HEC data rate (Hz) 268ms/channel
Attachment 14 per FEE64 HEC data rate (Hz) 268ms/channel: 100MeV < energy < 1000MeV
Attachment 15 per FEE64 HEC data rate (Hz) 268ms/channel: energy > 1000MeV
- rate dominated by low energy (>1GeV) events
- all HEC events on spill as expected (note FEE64 #7 has a single hot channel which can be disabled in software)
- significant deadtime on spill for n+n Ohmic FEE64s, low deadtime off spill
- deadtime low/zero for p+n junction FEE64s on/off spill
Attachment 16 per DSSSD p+n junction versus n+n Ohmic LEC energy - x-axis & y-axis 20keV/channel
Attachment 17 per DSSSD p+n junction versus n+n Ohmic HEC energy - x-axis & y-axis 20MeV/channel
Attachment 18 per DSSSD p+n junction versus n+n Ohmic HEC strip hit pattern: all HEC events
Attachment 19 per DSSSD p+n junction versus n+n Ohmic HEC strip hit pattern
DSSSD #1 ions stopped in DSSSD #1 i.e. DSSSD #2 HEC multiplicity = 0
DSSSD #1 shows x-y gate used ( 270 < x < 370, 20 < y < 90 ) to identify 166Tb implants
DSSSD #2 ions stopped in DSSSD #2 *and* in transmission (can establish which ions stop in DSSSD#2 from DSSSD#2 HEC energy versus DSSSD#1 HEC energy - see
https://elog.ph.ed.ac.uk/DESPEC/672
Attachment 20
DSSSD#1 HEC energy (20MeV/channel) versus HEC-LEC dt (1s/channel)
DSSSD#1 LEC energy (20keV/channel) versus HEC-LEC dt (1s/channel)
DSSSD#1 HEC strip # versus HEC-LEC dt (1s/channel)
- Observe # events in every third channel is lower
- Probably reflects implant-decay correlation livetime
For example (choosing some numbers for illustrative purposes)
on spill: HEC livetime 75%, LEC livetime 75% (FEE64 deadtime common for HEC and LEC data) => implant decay correlation livetime 56%
off spill: HEC live time 75%, LEC livetime 100% => implant decay correlation livetime 75%
- Observe 'hot' x channels 315, 318, 321, 324 - disabled for further analysis
- Do not observe any 'hot' y channels
Attachments 21 & 22
DSSSD#1 per pixel HEC-LEC time (1s/channel): x,y,z gated to select 166Tb events
Naive (parent-daughter decay only, flat background) fit for data t=0-26s ( t1/2 = 27.1(3)s )
Fit ignores data for t=0, 3, 6, 10, 13, 16, 19, 22s to avoid bias of differences in implant-decay correlation deadtime
Suggestion of structure at c. 30s period? Does this reflect spill stucture? 10x spill cycles (30s), 9s spill off, ... etc
Sum of x,y,z gated HEC events (s2112 - see attachment 19) = 670441
Elapsed time of dataset 4h11m = 15060s
# pixels = 100 x 70 = 7000
=> # x,y,z gated HEC events per pixel = 670441/7000/15060 = 0.0064/s or mean time between x,y,z gated HEC event = 157s (estimate needs to be corrected for HEC deadtime)
Sum of implant decay correlations (s2220 - see attachment 21) t=0-150s = 273508 - flat background estimated as 150 x 500 = 75000 = 198508
=> efficiency c. 30% (presumably low due to implant-decay deadtime, LEC multiplicity, per pixel correlations and no clustering)
Summary
$64,000 question - what is the origin of the high instantaneous rate on spill for DSSSD#1 ? On my to do list.
Attachment 23
LEC multiplicity with/without HEC data in event
per DSSSD LEC p+n junction multiplicity versus n+n Ohmic multiplicity
per DSSSD LEC p+n junction multiplicity versus n+n Ohmic multiplicity z_hec=1 and z_hec=2
With HEC data
DSSSD#1 p+n junction multiplicity ~ 17, n+n Ohmic multiplicity ~28
DSSSD#2 p+n junction multiplicity ~ 40, n+n Ohmic multiplicity ~23
Assume 200Hz HEC events => DSSSD#1 LEC rate = 200 x ( 17 + 28 ) => 9k LEC data items cf. >100k LEC data items (attachments 8 & 13)
i.e. not due to HEC events
Added by TD 10.2.26
Analysis data files from R21_0 to R21_99 (as above)
Total data items = 21339100747
Total ADC events = 1072214006
Attachments 24-26 DSSSD#1 per pixel HEC-LEC time (3s/channel): x,y,z gated to select 166Tb events - common x and y scales - log and lin plots shown
blue - HEC-LEC 'forward correlations'
cyan - LEC-HEC 'backward correlations'
Attachments 27-28 DSSSD#1 per pixel HEC-LEC time (3s/channel): x,y,z gated to select 166Tb events - common x and y scales - log and lin plots shown
s2226 - HEC-LEC 'forward correlations'
s2224 - LEC-HEC 'backward correlations'
difference s2226-s2224
|
*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 s 512 512
2700 s 512 512
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*8 items, items_old, events, events_old
INTEGER i
INTEGER*2 i2(2), i2_2(4)
INTEGER i4, i4_2(2)
INTEGER*8 i8, first_ts_value
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, * ) ' *** S100 - implantdecay - November 2024'
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/S100/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
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
WRITE( 6, 9010 ) items, FLOAT( items - items_old ) / delta_t,
+ events, FLOAT( events - events_old ) / delta_t,
+ pulser, FLOAT( pulser - pulser_old ) / delta_t
items_old = items
events_old = events
pulser_old = pulser
t2_old = t2
... 1382 more lines ...
|