optics-rs 0.8.2

Rust port of EPICS synApps optics module
Documentation
grecord(ao,"$(P)Bragg_H")
{
	field(DESC,"Miller index H")
	field(PINI,"YES")
	field(OUT,"$(P)Bragg_2d_spacing.B PP MS")
	field(DOL,"1")
	field(DRVH,"15")
	field(HOPR,"15")
}
grecord(ao,"$(P)Bragg_K")
{
	field(DESC,"Miller index k")
	field(PINI,"YES")
	field(OUT,"$(P)Bragg_2d_spacing.C PP MS")
	field(DOL,"1")
	field(DRVH,"15")
	field(HOPR,"15")
}
grecord(ao,"$(P)Bragg_L")
{
	field(DESC,"Miller index l")
	field(PINI,"YES")
	field(OUT,"$(P)Bragg_2d_spacing.D PP MS")
	field(DOL,"1")
	field(DRVH,"15")
	field(HOPR,"15")
}
grecord(ao,"$(P)Bragg_a")
{
	field(DESC,"Lattice constant")
	field(PINI,"YES")
	field(OUT,"$(P)Bragg_2d_spacing.E PP MS")
	field(DOL,"5.43102")
	field(PREC,"5")
	field(EGUF,"20")
	field(EGUL,"0.1")
	field(EGU,"Angstroms")
	field(DRVH,"20")
	field(DRVL,"0.1")
	field(HOPR,"20")
	field(LOPR,"0.1")
}
grecord(transform,"$(P)Bragg_2d_spacing")
{
	field(DESC,"Calculate 2d crystal spacing")
	field(CLCA,"0")
	field(CLCE,"5.43102")
	field(CLCF,"e/sqr(b*b+c*c+d*d)")
	field(CLCG,"2*f")
	field(INPB,"$(P)Bragg_H.VAL NPP NMS")
	field(INPC,"$(P)Bragg_K.VAL NPP NMS")
	field(INPD,"$(P)Bragg_L.VAL NPP NMS")
	field(INPE,"$(P)Bragg_a.VAL NPP NMS")
	field(OUTA,"$(P)Kohzu_run.VAL PP MS")
	field(EGU,"Angstroms")
	field(PREC,"5")
}
grecord(bo,"$(P)Kohzu_flink")
{
	field(DISV,"0")
	field(SDIS,"$(P)Kohzu_run.VAL NPP NMS")
	field(FLNK,"$(P)Kohzu_put.PROCPP PP MS")
}
grecord(bo,"$(P)Kohzu_run")
{
	field(DESC,"Disable Kohzu_poke")
	field(ZNAM,"Manual")
	field(ONAM,"Auto")
}
grecord(fanout,"$(P)mTheta_flink")
{
	field(LNK1,"$(P)BraggBackProp.PROCPP PP MS")
	field(LNK2,"$(P)Bragg_limits.PROCPP PP MS")
}
grecord(transform,"$(P)Bragg_ELT")
{
	field(DESC,"Calc energy,wavelength,theta")
	field(FLNK,"$(P)Kohzu_flink.PROC PP MS")
	field(CLCA,"12.3984244")
	field(CLCB,"a/c")
	field(CLCC,"a/b")
	field(CLCD,"asin(min(1,c/f))/D2R")
	field(CLCE,"min(i,max(j,d))")
	field(CLCG,"f*sin(d*D2R)")
	field(CLCH,"a/g")
	field(INPI,"$(P)$(M_THETA).HLM NPP NMS")
	field(INPJ,"$(P)$(M_THETA).LLM NPP NMS")
	field(OUTE,"$(P)Bragg_theta.VAL PP MS")
	field(OUTG,"$(P)Bragg_lambda.VAL PP MS")
	field(OUTH,"$(P)Bragg_E.VAL PP MS")
	field(PREC,"5")
}
grecord(transform,"$(P)Kohzu_put")
{
	field(SDIS,"$(P)BraggBackProp.PACT NPP NMS")
	field(INPC,"$(P)Bragg_ELT.E PP MS")
	field(OUTC,"$(P)$(M_THETA).VAL PP MS")
	field(PREC,"5")
}
grecord(transform,"$(P)Bragg_limits")
{
	field(DESC,"Calc energy,wavelen,lim")
	field(CLCD,"12.3984244")
	field(CLCE,"c*sin(a*D2R)")
	field(CLCF,"c*sin(b*D2R)")
	field(CLCG,"d/f")
	field(CLCH,"d/e")
	field(INPA,"$(P)$(M_THETA).HLM NPP NMS")
	field(INPB,"$(P)$(M_THETA).LLM NPP NMS")
	field(PREC,"5")
}
grecord(transform,"$(P)Bragg_readback")
{
	field(DESC,"Bragg readback calc")
	field(CLCC,"b*sin(a*D2R)")
	field(CLCD,"12.3984244")
	field(CLCE,"d/c")
	field(INPA,"$(P)$(M_THETA).RBV NPP NMS")
	field(PREC,"5")
}
grecord(ao,"$(P)Bragg_E")
{
	field(DESC,"Bragg Energy (keV)")
	field(OUT,"$(P)Bragg_E_put.VAL PP MS")
	field(PREC,"4")
	field(EGU,"keV")
	field(DRVH,"200")
	field(HOPR,"200")
}
grecord(ao,"$(P)Bragg_lambda")
{
	field(DESC,"Bragg Wavelength (Angstroms)")
	field(OUT,"$(P)Bragg_ELT.C PP MS")
	field(PREC,"4")
	field(EGU,"Angstroms")
	field(DRVH,"20")
	field(DRVL,"0.05")
	field(HOPR,"200")
}
grecord(ao,"$(P)Bragg_theta")
{
	field(DESC,"Bragg angle (degrees)")
	field(OUT,"$(P)Bragg_ELT.D PP MS")
	field(PREC,"5")
	field(EGU,"degrees")
	field(DRVH,"90")
	field(HOPR,"90")
}
grecord(ao,"$(P)BraggBackProp")
{
	field(OUT,"$(P)Bragg_ELT.D PP MS")
	field(DOL,"$(P)$(M_THETA).VAL NPP NMS")
	field(OMSL,"closed_loop")
	field(PREC,"5")
}
grecord(motor,"$(P)$(M_THETA)")
{
	field(DESC,"theta")
	field(DTYP,"OMS VME58")
	field(FLNK,"$(P)mTheta_flink.PROCPP PP MS")
	field(DIR,"Neg")
	field(VELO,"1")
	field(BDST,"0.01")
	field(BVEL,"1")
	field(BACC,"0.2")
	field(RDBL,"$(P)HeidEncoderRead_m1.VAL PP MS")
	field(RLNK,"$(P)Bragg_readback.PROC PP MS")
	field(MRES,"4.0e-06")
	field(RRES,"-1")
	field(PREC,"7")
	field(EGU,"degrees")
	field(DHLM,"360")
	field(DLLM,"-360")
	field(RDBD,"0.001")
	field(TWV,"1")
}
grecord(transform,"$(P)Bragg_2d_put")
{
	field(CLCB,"a")
	field(CLCC,"a")
	field(INPA,"$(P)Bragg_2d_spacing.G PP MS")
	field(OUTA,"$(P)Bragg_ELT.F PP MS")
	field(OUTB,"$(P)Bragg_readback.B PP MS")
	field(OUTC,"$(P)Bragg_limits.C PP MS")
}
grecord(swait,"$(P)Kohzu_done")
{
	field(DESC,"Kohzu done moving")
	field(SCAN,"I/O Intr")
	field(PINI,"YES")
	field(INAN,"$(P)$(M_THETA).DMOV")
	field(CALC,"(a)=1")
	field(OOPT,"Transition To Non-zero")
	field(DOLD,"1")
}
grecord(bo,"$(P)Bragg_E_inc")
{
	field(DISV,"0")
	field(SDIS,"$(P)Bragg_E_inc.VAL NPP NMS")
	field(FLNK,"$(P)Bragg_E_tweak.PROC PP MS")
}
grecord(transform,"$(P)Bragg_E_tweak")
{
	field(CLCE,"a?c+d:b?c-d:c")
	field(INPA,"$(P)Bragg_E_inc.VAL NPP NMS")
	field(INPB,"$(P)Bragg_E_dec.VAL NPP NMS")
	field(INPC,"$(P)Bragg_E.VAL NPP NMS")
	field(INPD,"0.1")
	field(OUTE,"$(P)Bragg_E.VAL PP MS")
	field(PREC,"4")
}
grecord(bo,"$(P)Bragg_E_dec")
{
	field(DISV,"0")
	field(SDIS,"$(P)Bragg_E_dec.VAL NPP NMS")
	field(FLNK,"$(P)Bragg_E_tweak.PROC PP MS")
}
grecord(bo,"$(P)Bragg_lambda_inc")
{
	field(DISV,"0")
	field(SDIS,"$(P)Bragg_lambda_inc.VAL NPP NMS")
	field(FLNK,"$(P)Bragg_lambda_tweak.PROC PP MS")
}
grecord(transform,"$(P)Bragg_lambda_tweak")
{
	field(CLCE,"a?c+d:b?c-d:c")
	field(INPA,"$(P)Bragg_lambda_inc.VAL NPP NMS")
	field(INPB,"$(P)Bragg_lambda_dec.VAL NPP NMS")
	field(INPC,"$(P)Bragg_lambda.VAL NPP NMS")
	field(INPD,"0.1")
	field(OUTE,"$(P)Bragg_lambda.VAL PP MS")
	field(PREC,"4")
}
grecord(bo,"$(P)Bragg_lambda_dec")
{
	field(DISV,"0")
	field(SDIS,"$(P)Bragg_lambda_dec.VAL NPP NMS")
	field(FLNK,"$(P)Bragg_lambda_tweak.PROC PP MS")
}
grecord(bo,"$(P)Bragg_theta_inc")
{
	field(DISV,"0")
	field(SDIS,"$(P)Bragg_theta_inc.VAL NPP NMS")
	field(FLNK,"$(P)Bragg_theta_tweak.PROC PP MS")
}
grecord(transform,"$(P)Bragg_theta_tweak")
{
	field(CLCE,"a?c+d:b?c-d:c")
	field(INPA,"$(P)Bragg_theta_inc.VAL NPP NMS")
	field(INPB,"$(P)Bragg_theta_dec.VAL NPP NMS")
	field(INPC,"$(P)Bragg_theta.VAL NPP NMS")
	field(INPD,"0.1")
	field(OUTE,"$(P)Bragg_theta.VAL PP MS")
	field(PREC,"4")
}
grecord(bo,"$(P)Bragg_theta_dec")
{
	field(DISV,"0")
	field(SDIS,"$(P)Bragg_theta_dec.VAL NPP NMS")
	field(FLNK,"$(P)Bragg_theta_tweak.PROC PP MS")
}
grecord(ao,"$(P)Bragg_E_put")
{
	field(DESC,"Bragg Energy (keV)")
	field(OUT,"$(P)Bragg_ELT.B PP MS")
	field(PREC,"4")
	field(EGU,"keV")
	field(DRVH,"200")
	field(HOPR,"200")
}
grecord(ai,"$(P)HeidEncoderRead_m1")
{
	field(DESC,"Heidenhain AWE 1024 read")
	field(DTYP,"Heidenhein Encoder")
	field(INP,"#L10 A$(A) @2")
	field(PREC,"5")
}