Compare commits

...

2 commits

Author SHA1 Message Date
Stephan I. Böttcher
0522212797 AHEPAM: make %.SETH 2025-06-23 20:41:01 +02:00
Stephan I. Böttcher
97a062fa7d AHEPAM: SETH (sparse) event parser 2025-06-23 20:40:18 +02:00
2 changed files with 93 additions and 6 deletions

View file

@ -1,7 +1,7 @@
#!/usr/bin/gawk -i
function isE(d,c) {
if (!/^ED/ || $3!=d || $4!=c) return 0
if (!/^EDB?/ || $3!=d || $4!=c) return 0
Ch = NDCh * d + c
T0 = $2
A = $7/1024
@ -15,7 +15,7 @@ function isE(d,c) {
}
function isEE() {
if (!/^ED/) return 0
if (!/^EDB?/) return 0
d = $3
c = $4
Ch = NDCh * d + c
@ -32,7 +32,7 @@ function isEE() {
function isCC() {
N = 0
if (!/^ED /) return 0
if (!/^EDB? /) return 0
if (NE && ($2 > T0+20 || $2+20 < T0)) {
N = NE
TE0 = T0
@ -67,6 +67,85 @@ function isCC() {
return N
}
BEGIN {
tBGO = 10
tTRIG = 12
cBGO[ 3] = 0
cBGO[12] = 1
cBGO[20] = 2
cHET[11] = 0
cTRIG[ 0] = 0
cTRIG[ 1] = 1
cTRIG[ 2] = 2
cTRIG[ 4] = 3
cTRIG[ 5] = 4
cTRIG[ 6] = 5
cTRIG[ 7] = 6
cTRIG[ 8] = 7
cTRIG[ 9] = 8
cTRIG[10] = 9
cTRIG[13] = 10
cTRIG[14] = 11
cTRIG[15] = 12
cTRIG[16] = 13
cTRIG[17] = 14
cTRIG[18] = 15
cTRIG[19] = 16
cTRIG[21] = 17
cTRIG[22] = 18
cTRIG[23] = 19
}
function isSETH() {
tBGO=10
if (!isCC()) return
EBGO0 = 0
EBGO1 = 0
EHETB = EE[11]
EHETA = EE[35]
if (EE[ 3]>tBGO && EE[12]>tBGO && EE[20]>tBGO) {
EBGO0 = EE[ 3]+EE[12]+EE[20]
if (6*EE[ 3]<EBGO0 || 6*EE[12]<EBGO0 || 6*EE[20]<EBGO0) EBGO0=0
if (2*EE[ 3]>EBGO0 || 2*EE[12]>EBGO0 || 2*EE[20]>EBGO0) EBGO0=0
}
if (EE[27]>tBGO && EE[36]>tBGO && EE[44]>tBGO) {
EBGO1 = EE[27]+EE[36]+EE[44]
if (6*EE[27]<EBGO1 || 6*EE[36]<EBGO1 || 6*EE[44]<EBGO1) EBGO1=0
if (2*EE[27]>EBGO1 || 2*EE[36]>EBGO1 || 2*EE[44]>EBGO1) EBGO1=0
}
ETRIG0 = 0
ETRIG1 = 0
for (i in cTRIG) {
if (EE[i] > ETRIG0) {
ETRIG0 = EE[i]
iTRIG0 = i
}
if (EE[i+24] > ETRIG1) {
ETRIG1 = EE[i+24]
iTRIG1 = i+24
}
}
return 1
}
function doSETH() {
printf "%.0f %g %g %g %g %d %g %d %g\n", TE0+EPOCH, \
EBGO0, EBGO1, EHETB, EHETA, \
iTRIG0, ETRIG0, iTRIG1, ETRIG1
for (i in cBGO) printf " %g", EE[i]
for (i in cBGO) printf " %g", EE[i+24]
printf "\n"
}
function doSETHBGO() {
printf "%.0f %g %g %g %g %d %g %d %g", TE0+EPOCH, \
EBGO0, EBGO1, EHETB, EHETA, \
iTRIG0, ETRIG0, iTRIG1, ETRIG1
for (i in cBGO) printf " %g", EE[i]
for (i in cBGO) printf " %g", EE[i+24]
printf "\n"
}
function doCC() {
printf "%.0f %d", TE0+EPOCH, N
for (i=0; i<NCh; i++)
@ -186,7 +265,7 @@ BEGIN {
function doS() {
N = 0
if (!/[SE]D /) return N
if (!/[SE]DB? /) return N
if (NS && ($2 > TS0+20 || $2 < TS0-20)) {
save = $0
for (d in ELINES) {
@ -198,6 +277,7 @@ function doS() {
A = $7/1024
B = $8/1024
P = $9/0x4000
EE = A*BANANA(d,c, P)
Ba = $10/0x4000
n0 = 0
S0 = 0
@ -212,7 +292,7 @@ function doS() {
for (i in SLINES[d]) {
$0 = SLINES[d][i]
if ($2 > T0+40 || $2 < T0-20) continue
print d, c, T0, A, P, Phase(P), E, $2-T0, S0, $(4+c), ($(4+c)-S0)/E
print d, c, T0, A, P, Phase(P), EE, $2-T0, S0, $(4+c), ($(4+c)-S0)/EE
}
N++
}
@ -246,6 +326,11 @@ BEGIN {
ph0 = -0.505601 # ± 3.072e-05
ph1 = 1.94725 # ± 0.00051
ph2 = -0.139787 # ± 0.0009408
# 2025-06-20-seth-slice1-5
ph0 = -0.478111483533659
ph1 = 2.01807600727152
ph2 = 0.105023207228584
}
function Phase(P) {
@ -349,7 +434,6 @@ BEGIN {
# 2025-06-20-seth-slice1-5
# integer fit: -3686 /2¹⁴, 16027 /2¹⁴, 12898 /2¹⁵, 24618 /2¹⁵,
for (d=0;d<8;d++) for (c=0;c<24;c++) {
# full fit
B0[d,c] = -3686 / 0x4000
B2[d,c] = 16027 / 0x4000
B3[d,c] = 12898 / 0x8000

View file

@ -38,6 +38,9 @@ EE=E
%.hist: %.AHA
./AHEPAM.awk 'isEE(){doHIST(Ch,$(EE))}' resV=$(resV) $< > $@
%.SETH: %.AHA
./AHEPAM.awk 'isSETH(){doSETHBGO()}' $< > $@
CUT=P
CUT_P=&&P>-0.398&&P<=-0.105
CUT_nP=&&(P<=-0.398||P>-0.105)