################################################################################ # # Detector: 0-d (intensity) # ################################################################################ record(sseq, "$(P)$(INSTANCE):det:FullTrigger"){ # field(DO1, "1") # field(LNK1, "$(P)$(INSTANCE):DimCalc.PROC PP") field(STR2, "Set") field(LNK2, "$(P)NDSA:NewArray PP") field(STR3, "Acquire") field(LNK3, "$(P)NDSA:Acquire PP") field(STR4, "Acquiring") field(LNK4, "$(P)$(INSTANCE):det:Acquire PP") } record(acalcout, "$(P)$(INSTANCE):DimCalc") { field(DTYP, "Soft Channel") field(DESC, "Setting Dims of NDSA") field(A, "$(XSIZE)") field(B, "$(YSIZE)") field(CALC, "ARR(A){0,0}+ARR(B)>>1") field(SIZE, "NELM") field(OUT, "$(P)$(NDSA):Dimensions PP NMS") field(DISV, "1") field(NELM, "2") } record(busy, "$(P)$(INSTANCE):det:Acquire"){ field(ZNAM, "Done") field(ONAM, "Acquiring") } record(calcout, "$(P)$(INSTANCE):det:triggerCalc") { field(INPA, "$(P)$(INSTANCE):det:Acquire CP") field(CALC, "A") field(OOPT, "Transition To Non-zero") field(OUT, "$(P)$(INSTANCE):det:triggerPyDEV.RVAL PP") field(FLNK, "$(P)$(INSTANCE):det:triggerPyDEV.PROC") } #TODO make XSIZE here a PV? And then same PV could be used for DimCalc record(bo, "$(P)$(INSTANCE):det:triggerPyDEV"){ field(DTYP, "pydev") field(OUT, "@$(OBJ).detectorUpdate(zeroD = False, nbins=$(XSIZE))") } record(ai, "$(P)$(INSTANCE):det:intensity"){ field(DTYP, "pydev") field(INP, "@pydev.iointr('new_intensity')") field(SCAN, "I/O Intr") field(PREC, "4") field(FLNK, "$(P)$(INSTANCE):det:AcquireDone") } record(dfanout, "$(P)$(INSTANCE):det:AcquireDone"){ field(DOL, "0") field(OUTA, "$(P)$(INSTANCE):det:Acquire PP") } ################################################################################ # # Detector: 2-d Image # # ################################################################################ record(waveform, "$(P)$(INSTANCE):raw_image"){ field(DTYP, "pydev") field(INP, "@pydev.iointr('raw_image')") field(SCAN, "I/O Intr") field(PREC, "4") field(NELM, "$(SIZE)") field(FTVL, "$(FTVL)") field(FLNK, "$(P)$(INSTANCE):imageTransfer") } record(acalcout, "$(P)$(INSTANCE):imageTransfer") { field(DTYP, "Soft Channel") field(DESC, "") field(INAA, "$(P)$(INSTANCE):raw_image") field(CALC, "AA") field(SIZE, "NELM") field(OUT, "$(P)$(NDSA):ArrayIn PP NMS") field(DISV, "1") field(NELM, "$(SIZE)") } record(waveform, "$(P)$(INSTANCE):h_coord"){ field(DTYP, "pydev") field(INP, "@pydev.iointr('h_coord')") field(SCAN, "I/O Intr") field(PREC, "4") field(NELM, "$(XSIZE)") field(FTVL, "FLOAT") } record(waveform, "$(P)$(INSTANCE):v_coord"){ field(DTYP, "pydev") field(INP, "@pydev.iointr('v_coord')") field(SCAN, "I/O Intr") field(PREC, "4") field(NELM, "$(YSIZE)") field(FTVL, "FLOAT") }