ANAPAW/Analyzer/encファイルの書き方
enc ファイルで行うのは、rawdata(idata, id) を処理して val(x, y)に詰めていく作業。
val 配列は、anapaw 側で頭から読まれていくので隙間を開けず1から順に詰めなくてはならない。というか、val 配列のサイズを必要最低限にするためにこのような仕様になっていると思われる。
一列目、val(1,y) には ana ファイルで呼び出す際の id を入れ、2列目以降にデータを詰める。これにより、ana ファイルで analyzer,id,id,x 書いたときに、analyzer 番目の Analyzer で詰めた val(1,y)=id となる val(x,y) を表すことになる。
例
割りと最低限のenc
val の2列目に raw data, 3列目に calibrated data を入れる。
SUBROUTINE enc○○(val,nx,ny,naok,
& rawdata,nhitdata,hitdet,nhitdet,ndet,ndata)
implicit none
include 'analyslogic.fh'
include 'analysevent.fh'
include 'commonprm.fh'
include '○○prm.fh'
1 INTEGER nx, ny, ndet, ndata, naok
INTEGER rawdata(ndata,ndet)
INTEGER nhitdata(ndet)
INTEGER hitdet(ndet)
INTEGER nhitdet
REAL val(nx,ny)
integer iHit, id
if (initencflag([analyzer])) then
call load○○prm
initencflag([analyzer]) = .false.
endif
naok = 0
do iHit = 1,nHitDet ! hit した detector 数ループ
id = hitDet(iHit) ! iHit 番目の detector 番号
naok = naok + 1 ! val配列を1列目から順番に詰めるための番号
val(1,naok) = id ! 1番目にはidを入れる
val(2,naok) = rawdata(1, id) ! raw E
val(3,naok) = calprm(1,id)*rawdata(1, id)+calprm(2,id) ! cal E
enddo
return
end