PROC autofocus(VAL INT A, P, VAL REAL xintr, xinti, CHAN REAL dinp0?, dinp1?, CHAN REAL res!) | [(A/P)*2] CHAN REAL doutp: | [A*2] CHAN REAL32 soutp: | [A*4] CHAN REAL routp: | [A] CHAN REAL boutp: | [A/2] CHAN REAL coutp: | PAR | datadist(A,dinp0?,doutp!,doutp!) | PAR i=0 FOR ((A/P)-1) | PAR j=0 FOR ((A/P)-1) | PAR | split(A,doutp[(i*2)+j]?,soutp[(i*3)+(j*3)]!,soutp[((i*3)+(j*3))+1]!, | soutp[((i*3)+(j*3))+2]!) | rangeintp1(xintr,xinti,soutp[(i*6)+(j*5)]?,routp[(i*12)+(j*11)]!) | rangeintp2(xintr,xinti,soutp[((i*6)+(j*3))+1]?,routp[((i*12)+(j*8))+1]!, | routp[((i*12)+(j*8))+2]!) | rangeintp3(xintr,xinti,soutp[((i*6)+(j*1))+2]?,routp[((i*12)+(j*3))+3]!, | routp[((i*12)+(j*3))+4]!,routp[((i*12)+(j*3))+5]!) | PAR j=0 FOR (A/P) | beamintp(xintr,xinti,routp[(i*12)+(j*4)]?,routp[((i*12)+(j*4))+1]!, | routp[((i*12)+(j*4))+2]!,boutp[(i*3)+j]!) | PAR j=0 FOR (A/P) | corr(boutp[i]?,boutp[i+3]?,coutp[i]!) | corrsum(coutp?,coutp?,coutp?,res!) | : |
|