# Macros # P - Prefix # AI - HIPA Beam Current PV # GATE - (optional) second gating PV record(bi, "$(P)SWITCH") { field(DESC, "Gates signal intensity measurement") field(DTYP, "Soft Channel") field(ZNAM, "Low") field(ONAM, "High") } record(bi, "$(P)SHUTTER") { field(DESC, "Optional extra gate for e.g. Camera") field(DTYP, "Soft Channel") field(ZNAM, "High") field(ONAM, "Low") field(INP, "$(GATE=0) CP") field(SCAN, "Passive") } record(ai, "$(P)BEAMCPY") { field(DESC, "Copy of $(AI)") field(DTYP, "Soft Channel") field(LINR, "LINEAR") field(INP, "$(AI) CP") field(SCAN, "Passive") } record(ai, "$(P)ACCTIME") { field(DESC, "Beam time accumulator") field(DTYP, "Soft Channel") field(LINR, "LINEAR") } record(calcout, "$(P)COUNTTIME") { field(DESC, "Computes Exposure Time") field(SCAN, ".1 second") field(INPA, "$(AI)") field(INPB, "$(P)SWITCH") field(INPC, "$(P)SHUTTER") field(INPD, "$(P)ACCTIME") field(CALC, "(B >= 1 && C == 0) ? D + 0.1 : D") field(OUT, "$(P)ACCTIME PP") field(OOPT, "On Change") field(DOPT, "Use CALC") } record(ai, "$(P)ACCINT") { field(DESC, "Beam intensity accumulator") field(DTYP, "Soft Channel") field(LINR, "LINEAR") } record(calcout, "$(P)BEAMINT") { field(DESC, "Computes Beam Intensity") field(SCAN, "Passive") field(INPA, "$(AI) CP") field(INPB, "$(P)SWITCH") field(INPC, "$(P)SHUTTER") field(INPD, "$(P)ACCINT") field(CALC, "(B >= 1 && C = 0) ? D + A : D") field(OUT, "$(P)ACCINT PP") field(OOPT, "On Change") field(DOPT, "Use CALC") field(FLNK, "$(P)PRESET-COUNTER") } record(ai, "$(P)PRESET") { field(DESC, "max intensity count preset") field(DTYP, "Soft Channel") field(LINR, "LINEAR") field(VAL, 0) } record(calcout, "$(P)PRESET-COUNTER") { field(DESC, "auto stops measurement at preset") field(SCAN, "Passive") field(INPA, "$(P)BEAMINT") field(INPB, "$(P)SWITCH") field(INPC, "$(P)SHUTTER") field(INPD, "$(P)PRESET") field(CALC, "(B >= 1 && D > 0 && A >= D && C == 0) ? 0 : 1") field(OUT, "$(P)SWITCH PP") field(OOPT, "When Zero") field(DOPT, "Use CALC") } record(calcout, "$(P)BEAMAVG") { field(SCAN, ".1 second") field(INPA, "$(P)ACCTIME") field(INPB, "$(P)ACCINT") field(CALC, "A > 0 ? B/A : 0") field(OOPT, "On Change") field(DOPT, "Use CALC") }