From 5af05c24c1596301d694a5f751ff5e18c7a74db2 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Wed, 24 Feb 2016 18:05:17 +0100 Subject: [PATCH] added iodelay with setttings --- ...erv1.11.17 => eigerDetectorServerv1.11.18} | Bin 268630 -> 268630 bytes .../slsDetectorFunctionList.c | 8 ++- .../slsDetector/slsDetector.cpp | 49 ++++++++++++------ slsDetectorSoftware/slsDetector/slsDetector.h | 6 ++- .../slsDetector/slsDetectorCommand.cpp | 2 +- .../slsDetectorAnalysis/energyConversion.cpp | 8 ++- .../slsDetectorAnalysis/energyConversion.h | 6 ++- .../slsDetectorFunctionList.h | 2 +- .../slsDetectorServer_funcs.c | 5 +- 9 files changed, 60 insertions(+), 26 deletions(-) rename slsDetectorSoftware/eigerDetectorServer/bin/{eigerDetectorServerv1.11.17 => eigerDetectorServerv1.11.18} (71%) diff --git a/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv1.11.17 b/slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv1.11.18 similarity index 71% rename from slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv1.11.17 rename to slsDetectorSoftware/eigerDetectorServer/bin/eigerDetectorServerv1.11.18 index e21545f5db4506ab86c17ba7d3230ecb61f124a5..8612c3cb564f69235d1496b7bc8a6f29518b53c4 100755 GIT binary patch delta 28814 zcmb`weOy(=_CLO74jcgyH^?&xhX(-#6%-W>1r_y}PiR>9lt)8FMMcHJ!Z<1xniV?e zps8VLVQCi=J64)lR$5wg!_vaS(k_-2cJZc#p6`41o+A%+@9*=+Z@*rq@W~o%a4>^&A26FUJu9I&E8oHAeckD~{A3EBR z5mL?4JFO+vhiW@@A>=%3@EAp|9g6Q9OGq=DuJ)mE>Y)-fkkGgow%@ZCjZ0;9p2G@z zss*mpyP%^Xe|4;)Br7V7S0v8W@X~mzlS#u_;_}Rf&RPL*&2;4OgTCEN&j9bl7$ZvtN74uq;BdMbxvx*Yc;6^9xk-*X~o*#7SKkZY`= z`ykp|WsyDbh(BcMG02JbPG>uMh0xx4>}aq1Y3~B&-8;&+x7BR8e`1oN5Qw}fL?)Pe z?`P?~XF^nEZ$DDUPW4_$8dzfdnC?vl21CBtka1A(^|i+DPqHWmv$Ah=!LEq>f>lBJ zfSmvjWEJsIbe|`yiI4Va5RH)b(O^Dw8a-?N_=ix{1eF% zpVt<@UX}R#w)m$M9bc#vv?Xk8lnsR2TPgI+DTyy?i!X6>T-+AFDMs>dY>Q_u5?`X> z3-6AYIYw66wgJB>8q%e{9(tyYTM$E2swqq_vhOZ-jW^ANlf*Z*#h=cR_?vC_U?lf!ABbQYQ1%h)F~Db&!+OoQWDaq=^?Pd>B0p3G98@@CnC9~X_QQ-UsWOYM_K|C`J>qYwpvvl!DWY%GeXhLJq z*8<3oO&Hz*uZJ>+_a)@)<`E(6m9(y8)8-MO>|beq^o_xrM=U4jSl)>K^yQs`{Lu&# zt@LEqMvNk-@!x1RZDc6@$7)tEawPr7K;}Lwn*B7=M6Tm)6xpZ2kBthYugyBNV-(hk zzAa;md)JqRjP@6b*RRfH?$3`DYB!FKqVEr8{`Y=I`<7tfsVsTS{cU+Rr}%meoPiAG zZw*zvHG?bfxuVGs_WIbpq>@$dn|`Qj92TuJnt;0F16axg6H>2b!o$MyDZcEN2?3oZ z7FdGvOF|WsSvkDwkav0?LKEFt`g>t){=@{m%jK-|Bp0%XC9fOL=1w|F6XT^yvFzFV zVg--zYyXTGdSo24WDKK664;)MD4Lkg&SZ%3pszzcCI>@uF*DykNpJBO^Lro?dggBP zVG|z+fthk2up^P@W-fDd`@j@`vXtdc2_nshHco+N{rnMQ8+39mJ36hu9EjWWVBdbl z+LGG=OK!Ad$?aFnlBa7?Q9k2w+AopC&xl|_GrH)nec`;U8Li2t2YbO8JZ>Y`A5V=oYWeSlnKjvw2o1sbZ#Cy?pzd|GL!oH?yo+KapCNKHCo#&z>zT z&gy6Pr;i6P|A(T?SLR4Z1?!V)fbe_ps)#Z91x{ko3;7JOAW{mASNhe8c(6XNcmw~YSUlli7o9dB zj+M+!A-7n~+(0@Yja{3IuCrm*h3xq14(!2f8H>x=PuW4box)j<`DWvQB6R4_YBB=Z z=K1GP7m4W^|FkzdvY?m4Vbd0Brp;YA0NJ2op`F}Bq+sAVQyr2XT+~dH+$A=M{bR8f zKQ(MA8@HsBgX!@lm+5oeSXS=6z#OW~jUX^s?NV(9v}65b+56*61upcZ5~5sYyOmmY zLOIVaDRl)Y9rH^Hm12>j#OUQS*{qc97M9FV)IoZh^4uvc3&)o2WA)4Z3$;4I;JH*1 zyv+*#xm}~llI9QEx^}dIk`@fwg?6;Al7{)lFSVl)NehdFsZG7DiZXPUqKbEnU^@IO z$^|6UBonJInAbJ36-OjEEUh?_1qb_hmD(w*6*iNVteDp|xK+Dgw99VAktaCVgvUG6 zq!MO%{1LJriDU-qNiBrTO6e-8<5;|RlkaA{ub1!Xc-IUJ!5K-RN~#r35Ft9o{@Oq| z1O-*;UcoCIAZQ3v_X1~>VATp4V}D^Hcw*Y~#DPg|#ne+U$;RGE<%*MR>?82ZeUZrt zM$2UW`4QtziMPQP)hTJ=`r=iQm@eqcZ0Izi?X*a07Qq1XI>lSpqX>8338T1J6co+~ z9$~Q5T}V#F`6A`8>U_U`C(H^d9ayN83`|i{AuM&(L(}qGI_P){gD;Wu(A|0*e*9MP zW-cou!V(LVJGn4VJVeK9zStqmqGamc9q7Wwt_&^guFu!@igjG?P#i(3pl(&n%7TNi zMLcYjhe9>D$SL6fqR%mU&K(v@jEVMR?_$pbQq9i3Lc6;G^F-Rp* z@0SkDVb@lMd$?VMX7M_1;29SDXhin|f3KO_VTWeu$wg?uvLEeTm<&54JA$CaSG#`J ze5f0jK#zFvCH)QG`yyDNV~j|%kc!|?;shVG(43W2ZfJo24P)%PwzcQA77kMU%?4Lt zpkO@r;c3EiH=dDrZo|_Z&rNu$c&-CzXScMYjg~azl4q~BrFC`fDTzoX&t7j!bY(O1qN$z@*spm(G)YYR zH8e@gb3FcjG7q>rnKvGkvdv~?qeJ;Lymy!QRJ=QQ#1eFL|zg4;xT(vnZ=4sGLs zl%&-!C={%t=z^upG^sax(&|UcZnJW0sOuKAL4ZHClvO?w=vMZo5TSwBtU+W8b6Fia zbcN^?VcDx^l7Y-L+E-tU z*1Dc6m>(p9US*Z9`ug^(8f-!mn7>|2Mq)mi4fM97;HqEa=P71&HG`=S_~W`gKdl!4|QPdBz~r zywNfaPlQg<2v+fGNT0t9)Z0w&EYhd!pj4TVyk$c2H`CjvWg*2ZTYSClh<&!dFe-+N zSe^4e+w)|f@Ihkn*QyPH7L7G4(A!;w-~`j4B6jo1P_ha(>CHmt`O!^-nWZ?I9V+%@ z^=mt@=Zm}0lB>)zK8SraTfB= zv-7XXLO9(XH<8G#ZI5W#rcZJ@%q6?jS{qKd|6Ul0x zdX6M$LZ5cMEA*aJS=-zza=lRRrmzasoAY!#Nfuqbdos}?ojE;|LZ)cao=RwumWyg< z;Hd5}nSMrq*qY;5MZINvVP5aM#T>nHL7G4$XpJY{a!-kw{wIK$cr<%B zTPdzd-US!^6v?HKv*pt`-$Vro1`V?kBbE()O!U28>U9s3&U=uags(1|D zNn$cw)j^`GcqKXWuXTTNCac&ooSbCWwuIAPE;4m%DCTDT)^NST3^UMQRqE#Bte|CbY3Pw%ewuzQ*?SiFLSf%U*le+kg~vn0pieU3iN*?37?iF4YD;yv)1RSj*m!T1C^J#F0~~7^j{L zW{H!vc*n9T`>a5peqB4Y(^f`Fan%g$-m3?pM}g2Q9*YNj5H@tD65ry3 z!D)Z>fyA{w?o^VSSlo^XvXiCnh$h=u{*EDZa13U4VJB7ALC9m-VJvNDZ_=Hq`=V$8 zVLNt)(8n&dQG4(irtVsfbkmY#9hn@{mHyD362rk3ANhv3YiJlbmgcu2K~8ocW@EUkZ^HNO?@Tx+KF*O_&#FWa!k6K>wI zCyM4>U?=xPV>!9Dr#Bn5*B@$hVaxUgu$gl%h- z{^c%o*+s`t#P0u%m(v`1qa*CXnyOPnzqzS_plyb{_?Yz-W3E(1INzqV;I(+iha(W?<;lUPuFQ~d|G ztsJnRUU-w$y{exu?e`-ySknGcLq%DGH9{FHG)pk0CZUJ;mW+8`TZ0|=zZ3!V{5e*= zKb&eqoWX`3=<1uA(XL~xaOcBV-hq*H;U#wTK(w>y5~nZA!g?%?dr|jN&^o!J_n$JR8B2*_NmFlH|#1B`3Qb&oRlf zwUrzTc&4=MjA-pP$s|r#g`tE(x$Ok4kUW31;>l^pGtsO}Lzbuv8UJ@KI;WjJ#w)3% zZD&R8!MmQ{r4*T!v~D6!5k1Z*H&CSx>&Xf#$B@13RAnEJ)N;{SD}`vSGi#n3#3Bxw zu*jz!j7H&*b1;@Tv$BK#!ct>>eO`d5UPMLaErYQ@*S?Rs`49_O^xufA&6x%kry3;4 zs!>96RTRy-$f~Pi#Z;~O9bY@jXUu2g-tZ0B`G1yn_AE2mMv;Cj+t!zTXv0^Jsz5sH z9OMmW&p#7OQ*lVMZzkhMyvbz8ly0xl$Lmc(as`%kl%PtR9ga8%{ONr^_Ez;$G>mleWc)Av zi?OuEort3MVJU#}lP*B{2UyUDp>$ZVC{@{t55viPhw_ylzV1lu#{yWvsf9R-Yd94x zlJ)6_=`j5$xbAo?Tl--bI^oveG<$0wyY|sSWc19BqlLB~&!xlC(GgDP&-8BD(d3pr z#=bu@z|q-}SuFAFG}1|P_?RnjcwhEumK(cqb|M{?1=EH1d1Ez_go?dNj5uGy(Si$( z0q7X}7_monhfUq(G%R&YL-e|+%U@Rg!`E5xr*p>-(@qrhQg`iNcWLzSbs;AHugxc- zE5{L0y3RA~46FIn57FK5>HT6vsWpD61u|tNDp;q!T*dv%1HfZIDP#R%lczX6=Z5--sSTSe$<_C4w|wvsj-f&ca2`5N9Mgnc2Ta@Ygj@s; z^;o12L^=&L+3f``_;MPvrXd-;W~G}e=r{)wX(M_)GkqC~jdtpnQN9B-0?s1_nw1CF z3w`=l55LR`z6|Q7Y1g+p4f|}TD`L!r@BLdp6{iQLK%ASI?thb~UO{O-?hij^4RK}H zzw|NEZf0d9KF*x)q*B0>52+W7gdQEp{J(l}&QZ;L)-==|`{sz*DdJZ64db+9GwlNW0mLz$uk6K2 zt#y)MN^1b0d)q~C-((>Rv}+>1TdIqFKQq(U_ss|!Xi}7csfw~Gg{Yfm61giFp|ogF zAx>l5vE*t84pIYD78Mtv0iOHLX}rpa$bl(DJNVE(FwlLgSk2c#KJy(^;U`HMx4ACR zcSHm0c(Odg%?{Y8gCg9-=faTlXZ0zb1Q>DjhA=o>Qroz9p(*8 zQOqp^t{5x~3A1abrhThNLwL(*UcSPz zFCs6)4|2~i!itt@ZAbRf!9)8mzE0dm6zTJC?_QSuZ7({aoRxhWjkT@%+mVHPZbQ9f z(L;i1L@oRk)6(;vtH5J-xmx>dZS4rJr6?|~=qJD*C-N881b_7JBKkog5{G!fF>m$_ z;JjP65%bKfE4Rf)vP3I$ATh>K%W-{4%5o?9neSn|B6nx8w!c3h4ntJ$f`y?Ts{)RZ`m zW$arda=W6g#$e6#d0|lTK_NyM0*&S{(-q&Sk-35$zyW~D;x2e6S;f&n9sRCt<| z?QgQ_S4NR7T%AoKxhaWsVP9X_&{xbu9Ep^C?5~Anf@x%>HAFw|(_?$rIsps$Nmjev zthlXX8-ECM7WQyuum3O_-}st;=;gapoL}jaO&NJvS7+x5min(Ju`-|fS8pGf(m@}k znb=Hs+yLFbFj?rJ$@7mdaD!Yo{iC|*Z;bucN^y#*@n}akEj;459;XzEdVGzF`8%GL zc-pZ-lx1dxx`?=w=Q$@4U!8>z@lDZ5SAq>|m`r>Ql{Gv{+(wPnN3wkd3;yvD5^$*W z$0%wXg$-F*cUFCEs>i5}f&tEmF;hPOP|VNE2pzSb?f7Le-Lej&^JU?`h8507NQ&jy zTdEwXscac_*@166wYGExUWB|m+}A;TQAsMd+p)AO1^Bo-#{NryZ0Fxrp4r=hZ!52` z^ehO$QlRT!1^#?mHVkejFwKE)E3kAG@FpqG{cq&0lt!+LISB0p_GDR& zuk|qRF)L4=Zo7c7`DSH}cE}oUG1r+X!%58El}zp9!?yhv%L=Y{cD@Ph6jpLQ#5fvr zg!N-p*ZYKzPSRbsdAIO8Qm^nkikHz=iC@o614#t$Je34?R7UTS*r6=_w;mp&Pf4(o zXv{08lEgzte|w5JH=1e5PBymbfquDsF_(dn?%~Jf7Ld z8gBfKIamLmVf5)mEb@1b&+A8jkD?n7u*<(srDNP#>doP(8jEgjrDI}P@U2j6YLah# zPS^{3gXKVC47IccWrSF+qcU!31$rp2FO)}~7X`fKW2 z#-e@ko516nnL@?MyTqpgzZ-ayKFqO}7U9JS;`q!rDF6*NzsGVcX^D{GwJi9w0PneYwQ!Z`OZ|2amkVq z>+BQVS@xX|=-1m=ygkHg+;lTtr>(estH+g$v41_ES?r;Oo_HHkumL}!Loz~X;eyh_ zT_5*26gBHc%XiUwFy3V@Su3kzC2NemZnXRy(<~=hdaE|B;=OP6_+apbwVnW2?3&HA zf6*ooT(Md->y5_em}!w-r&xr_MW^8m#iCqV2g_-SB`D*|wQKK4OYgVX)(~6Spt_}8efMQpWc#D*Jy(VUQ}sETHzBU ze-rR6KhU6SwDaQx(*y+wsNYdR9QQGjk@?ryd$v7d-Os$8R=|4fX2~OlyVw`~ReEjNGBk5(FP>k2ZJkdyc zJD4k2H8q!-JMRWr?cpPvaOvuV~gTfB+vB5t!+W063CKRb+{ z4cJ??#jQIJ4em1zvF{jdza%No>5rYkbK6fnXM<8Pz&k84FCf2|~1#L6* ztggktWhllWNM;d3chRweN9d&oP&%gR>;ReU#7_m3B)i^Sf|6dpHG=dQVmU0y2ArMC zB$0ki4(%p18lhD$bk<=ZvTyZ7Z$}rPdGhQC(uZ1Za2%fx88%VN?g$aIv+R@Y0v!Ch zN)zE`i}n>-RFP20yS++7XKwqeN)yXkRI+r}MO(Bv)K;aLHwqR6@g)%?md?D$t0KuT z-_}~qd|Gch^EP+yMxuNlyx3x#+v4**oH;X$o4b*4I&+3CryF^mxC#rvm(#Cs?`Sg8 zI1$Ns#(HjvCZQ8+rB(>Y8O}(D$#ARV8=&BfF z%xj_%q0_gBXAt*`AzkRCNF5jzL-6BW{e8JcNYsD;&0H;;%V}aS3w@^z=DGKfDBE{2 z#M>}(k{P4(A7lS%pBQlqcjjtGB%WI*xQCog72XHq-mxm`*6-;{lb?I>qRcp`%FBhHyJ<@xTQDgPcts?ns`jq zs@^1o-j~B`dy^=du|*OG>%{bUL9F1p@gUxJODEp9TM!p^yDTl)V5awtMlEwqw|whK zcV8H{BoN;~G07$!(_Wu!?N zvv@gV%+1Icn4;uDlk=;F-=|8by37z019)R!66D&XOGy8@wS>T^365;g%8-+_xnrj3J$22}ck-M>5;*LC z8E(Shzp64hPFH2ZXHw2kekzgl_nK@LBWp?76IOGzAL$W3{+yJ7#MLZze3;V{v;{QY zG8w@>;b}g-9~owxT!i-#d`~~}9i3dtO9qiZull{BZOddChxF8+j3Q?=GWQ)ox|4}K zbpRPe?|0I1TL+LBI`%VOJ%IFayB|yC*z53sJ8z655w_4I(tpD9Lwl#7-4-Wfb` z5b5J_f2%s~-mbR1LF7r&sYdeoo2hxd=*DD=NhXts#{=Filu@p>;=v>YNG+oD#eT#^ zjh)vHA%A#0P~O6wc9_?tkmHjZ1jb5A0ZyZT_(JAiy=ty)lcpq;VNrnxXlHQ`s z;3;~ZP%>7})XO(JZmtv!b4833|t2!L)3hukRJUKb@>GPAf6fz9`-%l0k0M zDkLp{=T9Wzci}!i+xAQ(-x{5p%`|QnFU}&jOR`x@3>9Z!re?`rtqZcgAYcq{PtUO45yeq8RrmZtu$?7&(?q_OvN^I@gII||H_5@uW#&Ogm?1lb zcIDLt@@R>_I)~JVWh`Vqx6UPfj58zgp1_Z2@0h_|Z}G;t#IL8O7A8O1cU>jsOuWTn z!n?Me!6cT)w;JxSkRQRnolOFG?mU!7mRxZ5E8WFm~l@rpYA5>LNb?TnYjBhlso?Gb!1H;@!*4UNCwSH<|R2OGW@RU z6mek4zs(^J&@2m2T0}xoA8PK_nrv7^imA^r?!A~iO0x=h$zsyq%}17+StohTVszrO zn>Q{dQ>phlK6VNDHB76eaQyCJrrx95x@Hc-#TzSJE}0!QCs~ixE{>SU)l9C;(IzC? zQ#0*yfM3ofy`tunNnUZ-hos^thvw7?Ja`cjU8eA(vq?|hbq8^udABO-G6L(coV8xF z#IdaCrEm3|W_|7LGNSF8>ZP6g^sSzYLigX7+R?OuCz$4TyLA!h1hV{EYL;f!N8%K1@Dxo2P}InRZ%gLoWj;Y2ukHv7N6hkQIKn5R5WOkrot)F^&2rl%*% z{06`)G=o~^-^4p6+2dqTuLV+DXPlRJDaOgl^}nt=3*;nq#&Z2Qxp&wCadhQ4H!g3P zPtGG+)gm&pEWjjo7J8_9-wXBtUcuvLAw6Qgbhf=*NFF1D7HFQs!fnPW|5%*zr{a_! ziOMipk6xDwt+}#LGl}(hYQFW`R5;1dk56BX%ug5b^e0H5?U&UgiMTD4gCetR@oR}k zhmeI9Gx=k$R&FX(oPuIP(6K^fg0gT2pT2=iqPI{lY#@OlawR3VL6 zHqGaz5`y3M@T3wF8_*5LcS$fQIe2>CbqZ+OFT%G0;v)NzSE$H~t-dDB)B5te`v zx(gO$=yLrtURTXD@s=eqX7ckvp2W!q^xD#`WjHNalFB2?$S#j1*|KM7{1d9tG90`) zi;6Rx`)(tq!X+D9jP;ZFSo$|7VM|KP=JWc6&ZHo2B`ToyIeORn*2+sKeU zR~_eK#+GxjTz$$vPceso)X&ApkB2q=%5zP8`gZKyuHNEh+et`Bt~d&+6Jxc4U;FDG za`k;}-jg5u@!IV$UBfw;E|?#AjzswMYfJ)q_!}kSou8z+vvNm0sDtXs)mlw!Au08dkem6&i zNQ7+(aKvM2mQ)l<)}vT|k@WCbYL&QP;83$@IBms2l$(H?&tvuoz9W(^5;&YN?IE$9 z&Px=c_FK3|pl(W398lO(?jeDs@SB~&2spvks*HGLng76)R-fg`H}8vaVF4+F(wJD^ z%#e1cj-#^#(=zcvPi+bDZ^Ss&fZ$P)VA7PJRr5xG84Ap251$pYkF}YPkot;A77{a84o6m zA$6zYhnLIJ+G<>P@ozM?{8i&RXI}R*3HMl*+M;mX`!*=N!O3lz=0P+0@;WcyPhRs_ zR*d&8PzFDZa3P{bjj$CSAYF*tvU1@GGdXv|w&OMOI`vp~Qo07t{~T-TK@!@jz7-0! z%|TQo%UuRz2}-)UJeXG>L|MKZp8VXE*B>O08<(eJw~f00bu!zxebCli5@zDnN3g_w zhJD2A$XzvidGH|=VatomcJhO`Q z@p8oXr?*Ayi&$cf&qng3v>Az^O8WG!RwBYPiS7MwnRIb z$wy~-{9AD6zuqKko$1MoJm)wG@yN5Z=z9`#?l|cme)0q&#m!7kiXTGg2Sq#W8@1eK z$;$&C+t1@R1qa-1XT#T=4am+{PM5;4#RVq7wm4&viS2c#IWW}?Y^;?I^G z_|Cv1ZHa^UJQ->4;oz+r=Ms0}gW^Nc6ZE}VJo^L=BHq2hYfq3D=!pwF|6OdU5^QDf zk`D+yewABJl9zn*_DJ=x!X00gWHBIr9`DK1%P~_2yidmT$~%eQE;3r9Pr$t16bV;sZP4ztKxIBNNb_!d4q)=b_y zrkh$Rf(yj4pDe8(&IWC_qz!9FD+X_`?bKPZAA1BtJ3Q1@@hO>W@Os1ws(*`z4=&}V&&eJ7 zNI5svk_hKA8^=ljp?3-`1d`;F+`qCVJ`679V?mZ?VJlIz84SB8u zD!Q~E@bNWYD?zaUN1DmbZMK`hxzmo-w(@@y4`*tuvQ^$BUv;6s)!8<>)5WgzYObx> zhrZi|o~z{5-RVeLe}KF6pg)Cmw-OX}E{2zq!W4D9RlzQsT2!T1rb>Hct28#)<{eA# zCxusX?YDnW+um1Fb@)oW{q~i5`EF^;^OrVO@Rs8)`QLo)+7UOk%b{$+v*BP$VywQt(XAF$0w%>^^Yj@WGZs5&{^yR`t z`<*z&ekV3Ye~S12)1CT%{xW3i8~8-F75){#kfmxm*d`#`v~rnxS@A! z9qtC)O;8}!X6aAwa~_y(zcaP{?JsdwJpao*rI=s4haM_Sv)`HN-tKOXYY+c_@wcb{ z57?-6o@R?2OdoVL^-Wmx(2^B7S*FEH@=VL;NXEZk1|y}QnC-wj2z8=c;T#k;_R{`~Zodv^vY3^Lq< z;{6D2U;FLNq71+&a~ttQrz=twg}B@8k6y+TNk%6DU8pV6? zJY%=7cfzyYZr_lGXOrFj6y#7ByPehG8E>~g2ReoFJ51=1ZnWEX3WjpK{Y40-&35~% z`xV6yX}9n9$1@4f^LUQ6+YglDX|da1+sM;b(s18R76o7KaEnVk9?#}6kJ7#q0XkP{1dW|| z+wD)(0JgNk#n|mn3hSh{!X?8ZSiF^HiGzY99oC8G`yZvzq>R@-N=J1s0v0W`OT~Mw z-M(#OD_kbt8|?P&WjyUMIt^#J<&V+m$yV^^=#9h>sMT(-fRU8yR=85TeIKMNM_b`4 z?Dkh+8Rcdx+))@@^jvQXE1>>{tyb#mk&l1tFMkj2%lJ3{B6*~h_M)*Hd4`p~HDq|a zN{1)nPQsmxI~8{t?yqZrc;3q3-->5*2DghRb>X2!;+f4; ziXg6n&lI539$qM(o#OfP;_02ukBg^I5&u>^eapFBJcDz1=sG;RsXRq{7Vw$k8I{Zn z*FoG({=9fJ^5f!B!@m{89$DPJjy_9{a{LW>xa$#>T(!We(Y7U<=o^&huBYRiH6(v` zJ)LK~Y5_xot@j4%X^;RP`80jfwLv96W+24g7Y#qBd|wG2>8v4nQwd#a{4ql%zwEIs z+(geiOMs8&bO!yggjaA{=6qfyKNZ+Ul+hQ6@s~X+fzf{6Mh`pQE4I^Lr#2SB!_NO8 zaVlw4@#^%Jc>T3mU|$ihzcq>1-5S;^80xjxMDhBC_A27c>1*+NJzMZ@(y*!g`g8P6 zV^f++;H1hO=(owNy)WEJe~W0!g+BQrghlI0f*-0Xd$4)@Ug-=%3GOm(-9;0^VW}In z2;_UfXIv%t=w3w$=p*=U)Z)IzKi@@18~;%lg&xB{;2A+My1qg)LE&5W(X~d3#6XjH$SZV! zkz(>2D)_Wl=*N!txL4^CO!OVE(jX%(0BaFH_9~s^TA^a1DoS9}-HDBvkuUSZca#Fo#OFzXGmMQJ3Kq? z)776PIu=Z}&96~EGPOe-L~9ns7D4nPEJ}?V1y-|YM|bfmEJ~ek3I<_O>YOWHg+-~e zkf2Qx>QXOwg+-}z0XJ0AgKnK*A8%OEbYDA-xb+~Swi9xyceZWQK^jDiopPX9f$jCz zsg)Q#i&g4n;z?EX9iul4i~QAGML(18w$BgK!Nko6>D9L!>)<~T=kM}58${|j+s`&S zg1GsXtH^YU5;dxQ_jld|uP;myoMY?!77ZrOmm#Z($G=UFy9J>0fD%OREfJJK-1{g^ zF$RnmxPL3mtJ*?!kQL^1+sTcTRXjM)G2)bN&2Jf zO_fGBBJ2tT(+hmpDf*-uNg~Cx_)xSLWZU@<;7iv=m3FUDl!Wi^vTk?jOBtmax9v*C{Bv^HAzY@b>gGfs=0}MWV zxU-=dS->{bXqZY!g>6R%!*GJRWxM2J=;A~>CEEVuZtyjT==M+zc?1D$EAljC5$e0g z_M?{}gNn#Y^)YmHLL}KB)04on9P<2Z>jMoV2;63?2{KF~fyjkfh6hA{@L z#^=Hecd#4h=fVxcP*?az81S{j!ZRWa1CVYuiboAUDX=}Vw?-QJi(PwCq@m06SkTA5 zX9zLIZd62Zllz__!gW7h_bbY{BYcM-t;|yJZyw{hC1w_!)RD_%Fvr8ToW*&q%$7xss^#vYA~{e@`>(e%r!;n2pF?4 zHkW&UY)kF zbi%qV(j)qFdPprKpP&OJQzG(^PLSfAPw5Ictr8Ui=+`8?PBp9sT`5NgJ`k`~B{ir9 zlswtKLM6Kef24%p#JhF@#^v;hO0sfcm@|_8BQN>XFud>-P*Q|*f0e8(0(9wC4 zNTZ-jn>bI^B;h~0NaqD@ZRWg8C6CpE-$}NAMkQlU0(QvTtt#im5Go}d1x;b+av-Em z&L84kyJQDnt0boeh$PwIcU75+O36tY)##*>hlIjob-FPW!4M2sDq!rb5A-e-m(g`F`rB}QlMFkDsU9fjxu z2~SeV3>BgpC7h>{z_H+;F5zO8xLW|rt~K&l!1uI~O{0~*-=Mn_ISjFM& z4qw3*+eC-W643|&aV-K|d{l+G08ZEGE+L?owW9Y`l}#~FP%P>Y=rTklvvNU~V|ST> zckKclm&;;R+2sxe_DFs!YRt~*phyi}HmJ&X&``;h3@@rmss#6i?Fl}xMQd7m44d5M)% zsn#c;>q(WYD&|$68y+mQmtuB^>IUOup??RAAf-Yx?8)ilDdBBeLn7AQzfMra&T~UWCpCG6VG7{W=L)32sgAfRVy4_UC zrYeADy@QT!sWjyW%3f0Yc{!E0*`Luf!6_daKsFcC3MTqGIeY&e4E75cb4exfRe zGof#tq+e2%f#sl|k?_wdIW!jS+^LhQToGzZH9B>} zyLN$&tJ46L%&mr+$&&v*Rk@rCSX!ym9Mw>q4Mr9DH4ywrW^dF2PLuprm3w|^2&3-F zJn>6IZ-Nr~OT&ah7@Eom_85mXK!}iQfX8%IxfBPuOc&v?K;Mfg4Z3AL(8Yc$=tYu_ zd>OPKur!&+9>{9|Eadqsiib@lpH!ef87Us8Rnq6H42&UN3b>3MAVM)xhdaX+o6`VG zdgm@Gnb*v-&Lgy6EVBQ}c;1v|g2k`nMKGIBZ}!<2^t4uv{b zYr9zQ3x-~kn#_pEBz<6=e^Qly!`DQHaA!oM4FhoaMm4G=y+%=7kLY@;A*%9YBL~mH5CLOSxnOj~PpmWa zE<6de45Kb%RiX;7%HegH2C*@KW2BgDm2AxiEW7Q3dMxV3403*Xm+G54mpzicQziaZ@Jq9Mzo8PW zk_wSw==~m+#LcBZm}G~a!O^K`;G$1R?Hssd>A?5ol<*DBoyy*7|&-eyTYsOS?k*sfu6EDE! zQuMn>`k*_KzR%}k!wEP?(l0`^6JQymJ~ve5#CbUJrY_IdsEYr;$K6%NHvl0A+bM~X zjwxAawxWSFzAu*h3w2IS$4os zkE8(}E8&+QPblP&cShx_zcnOyy<&wDiq7N*gO@4%Y_*$%&J(l5Zc{GLB~H=-q3qu4*Vg<=yyR?`ox1SBj4|;O8(^!dbuvf z-=HeboB}NKs6Qr{4+55!N_v>8?5^Y|>#;dmuYym`7=Ns7;U$pkfKeFREj;a#p?BDR zEa0l%Jir~JxCS<9!hld!*;m0!FBv9yHUKSM8}Jwk4sYHBbYTV1nX>g4$U04cBPEP_ z&gu?W@uVXD0&eSPN-i7q2njTb@3kOT>HLAdf>&ICaRtVxB>FN2A#E5aoTXioo`DFt z91Ki`6!4%*o-v_;R3NYrJD4)i-O)RCFo9bTvKfHo^b34NC2yVqEUh2-1|m$*Wu6Lr z2Zc~&EBGszM+{J!C-5h=PH0+QH+&~D9ZD9!Nq>>46r^9_gQ8+(JL?xK0TOg=6 zc(qF(QBVs0`O|dp*Xr_u?nMb9Lb6E0bD@B+xKto0r%)wHCxMV*7=-odSz#ubAA*p_ zuUY^X%MN!#!6Lv80f$uOPZz+_B0lS8z{?JTe^!-*RKPM& zga5?ByaRBe-mWY9`vw+wOn|NdplKKAxVm=7CPnB|A^B5PQVt6`CRo>WR6MY-W2Njm zPaRIWiw0G)!5a8nSTIMzNZIe50$eTOeJXh=3j+NmT!otdCf{?#(5sL0M)2k8_z3~1KTwTBWX>`2Q24U$jhp7u^F(m zZ^-Ma@^)>DJwi|*^^ZhCkO?E?OE@$S{KDbLOCeWO(lr&ZjMxyII`G$jFqjIT0@9H# zLi?dr2@qmgK&#LPRC39?6&<_Qg{7dE=vsz8jXJ;rScXyPA(hmjJt>g%)2Ps0K+l#i zDtJ}}`cVnrPzpg67ZA8i9S~>NFpLJB!PH$;TJhlW^a331jp61mcL+O1MrxX~f=B zE0|1IRprJ_td6Rr|E7}hRSqwi@vxG&3<^;N2Y{JCK{B{-)>5^dz{(QTE zXEk7fs6jgi8sYeGEi4x-+1^4$QIBSFeuRC2ckKclR~SC=94~Iw9)&T!=Ur~VX%v2B zdp8ckQRyry2W-{lhA%>*5c5PDDEtYe&LY6^lK#9(3N8cQBjIDvV=Q2)M|e9u!mp`h zOD^kUGsKG_Xj7FTT?V12yXgjR;lA$hwvgioiFh3l%LLM2v!hh!BT@5f+tL z1T0f!gjFRQ;84d_DFO#60ee8Nkp0=<@uiVK)Jen_2#NEp1foWKV}*4syVLm|O0EfyJ}DhHdeHpq~T>;;;3fge|7VG6eQ&3Ka`7dZu+w?@F_ zQec)!wuu<7lJF`h1kkZsMLvlRO8`4M+<~bLi#aA)E7_f|kXfG9i91l2G=a0r#>5VkBmu`(l zk?{enM5Ga-`@^mEfNx6vG^l$D{L;$NlhiI`#}P1CB*S8r9M0l-KO1@t+l_JE?Wj^! zLJH7utmJze8NdWs&iLpHD)|BKC90(VAwE#>%Rd{2%y#z&U!;zY87;oq0hSXZ<^fgd zDh4R~k3ryfw6x-fE%giSam8#vC0dM^I4SQ1l?=bhi+(Zm3jb3W#$DonQAsa%#H$Rq k?udrBt9UK==$TyZ^efzbJ&mXRYDghRZAHHt{@MNi0UUxEaR2}S delta 28406 zcmb__4_uB{|NnK)UAIbdl}ajgt0;sbgeZgyA!N(Hxmn0$LfhJ&tQcF2i4!MVh_Pi4 zTN`$>F_~C4_T-uE$;M=3Pd0{)XW8QZz0Y->TYt9a`}@6qzu)zGUAwN&`Fzgje9q_J z`J8jz*;ntWU%jUmyyP6F(44UKYo2t=E>fv+?{gyaO~iX&rju_A8g!TCx9mln_8o4? z2=QadtzIC0`_8p$Lr4^>^%y}C_eHhtN=OQuruL*=)Atpq{)BeTV|zTi)2>DAg6ELj z$n+dn>YdZll)bF0qQogGjZ$QrtLcrgc}^C+&D!;}W?C{#Q9H{_y23#Ux7tOTzu9mAP1+qa!!&MOEN!SnYmw+=RYyo@%uvNm5fDZsp zmT)ZKU4RoLoB((u;3x@efL8*xNH`hrQ|@R`Wkc$|h&D$(iL$RY?6?yNV|zLeAc?HD zbAQ@BorQJ5BY&T@OMfTYy_6Mq52D>qv%}pVq213h?;f3eyH{(bN5;o03IWSH!7|#? z!-*yLm;qL0J=&5OR@q}dNnkNiqdO<%m`vH4Ddk;3*DEi|Db}i(G-Y@DoUNhRIZFew z0XqS1#giA3_AN~*iwuI&tE?(2+$TYFkIhqBf<7 z+cTTCzo^RgtfuYxS7dv3)ArTpjP_h5rzv7hh3p_4ppihY6wCG%P1_3`1Lrquub1>| znznDaAlnP{_S}avW{#N^HtoPq%ML|N+h3g~+l!mFZ>f>(B~9D6uaNCK8@K27>%7a+ zp|mlgU+3L9vcsOH?Qgrt_KK$M?^eq8%BJlH91}a&wEdvqlPhdr-4yYG9Dv3(ZU3;; z7=Vh{YGj%tfpXvrP1}z;G*r{H{n#E!e6!kUe~n! zvohIU-?aTqtt1gIjSrytuJ+lNGL*fEVI^xNjC838$ZJo+JUqf^wHhk!S;4CzjLX0c@PSi|y$ zJV|?&uvy$o37xg4kP$?aAy7!-Cnr6Wh`Q8#fGF zLb|c6VSVTucLn;>VHWz%Ja&E92+{%n4QEq_2h+FDvz+0>>D%j>`-pJ%({KwJiMJ7i z=C~*2qq@Vk7e#^&Rb5%kqvSvV_qS z{!F(a-q)+&bYv*MykNy!*SPZWOmrK>-b>m=T$s9d+P?i`uzZCv^~5tQew+mf*gEcM zq4IcN_Vc)Qtvcpd1F{Q(6^o|q|8k#qa!*2grLmmj9oW3_(T*YAC$uDk_xVk512SLA z6VBF6?CKzhOzBB&yO=d)2(_(ZJ5xH*UZw1G%5Y<#eO)F6qGt`$9(gzm_eXm`z_>@D zZI=0{9eF%6b+Ln8%H#ktjAi1#Df`w;hDb4)tbEF92m0{TK5_y^nCk*Ri;QFj!1#{xb8CEsN zpY|zc*XLm9a%govdo(@RF??-$kfEXw)@7b%?sEZy`LU`Lf3{)Xm#By=Ym?c*CmyU>{8o;klS3Z&Bcc9M(`jb$|%Qyg3#TToB?rpeX-_Rf>K%iKCBjS|A1UwDPSx|F45 zjzX7xWtpLbv|{HLJt8D(ME3dO6Jw%sT<9AGL^;Q{D;4aRQpqkWr*q<4W*6it*&+{# z*~({(rto`0b1912-^fLtTcjpYqZAQVv&3&Mh$b~7nk|XEHD%L{X1I|O=ZAiSo8h`i zTp(~dU88~7jGS=VHyg^H&aUQkqt;*L-?xOm1vBGfZ?_$iCTw!I|GP--ZU(?{i z{c@GOe(_2ym?bQId}?;X0PYdgR7n!Z8k$#+E2fhS|2Y6BZGam@a`BQJ{9*O(0^J$X(zHQ!9~z z4pQh=i7heJf~RS;ed`G^^~SV$x&1|EalMERet3R~XCR(u@Wf`q^#q>ocpkwMn-A9m zLLgxsSg?v`I+I}Dx;t@WyZ#oG+tJ~JMr^vCl6ppL7U-eW5I(MZB~I0pb<3LdTQ6}4 z*LCfh;hvH>gzLHmO>sf4lO+=Ix=tr-G~hsH&FS?2C15+P=`F`WV6JhN?+D(P9g{-v zuIbGRa)ZfkR+j7QNW`&uqv*W5%rc<|`^R1v_F-OYy16quofn*Y%!uOEcO5f=wwpz9 z(N!ag|3qU%u^z-lg3te8{-W)Ie^c`d>vu67!hkTp>0LZwe$#F|VSdwgJYjy*W;|hj z(|T68YzCRlEF&MzDrb2cGMN=D5B6~%XhFJ|w<=%cCK0*l(3zEvlof*)Jq6E92Pba? zA`HJ^GmCj)kbgfbe9BL(exe!uymQPV)sXXS%?rcnrVdPfwG-WVkJYSf%i65)#(GyX zX%zc>Su2*i!jBwl5N7f4l_zrM1&BEI6R|pYixTMwIT4c4mfr3H_vf^xtQYON-zsxw zv-FkY$UuGALLUsnF3WsLWJOl6-q-6vH|WMsXc3t#d<=Z!`3U`C05u1-69(B09rj?sbKBDO^VpjFa57j|<7fG8*n9b2>{k9b;>{9P zZIE(=)Qg=t0(R~e;gT3!&pt?q8ODJ9qp*@;JFq2`9X%94*NtJBuXLj8IqJ+>G1he@*D#RA64pCy`jnX2V+Ao%TzYpf+f&eq zuIj)t<9&TsxnejcAx2)y<>iZ&zo7D^zpP|68{S0uotZj<{eyXvryQ<&>);}` zpwO3m>1Yt!HTR7Hm`KD%u~QQc*z?v%tji)2)vkGp$KWj_BE?nhF9eBF29*7|8Xr)` z&TSk@0-4{Y5PH*<#cc|P_|pKOc+A@r>bxDZw6cUv{`9dUtYTA$|A17%y|J(AB?bNY z#s(hTZJ0ikb-)UZ{=D9p|A3U7UD>%!U4pLnYh2Vc zI7b{p`KKEYD4twJ#t6qoAokU+FjNV4Y$8X!^QsF9>GCNvSlidUvD<8vI>qkrlh=AU zT;|$ErWOZvi7WoIwq;x6(?%sOiKP~Yl2a_FIGnU+JBtU=xI7u1-Raz2EOSc_GKrOJ z33u)0P!P);>PvH4H3+A*paa8n>0aCFjpeGDbaL;Sx2-KW6>WQL_|z|D{2-PT&9Kuz zp)Kz}8}{lc!+n~SWAtigR#4iOO)QD012b4*Nx0|kCRy4#u$Y}L3G%;6{<{B_nXJBa z5Y2uUbL&L2SFyZNK{R_FCe?|(w>^mttlqF=39Qj*F7-PG(P!GTxYxU~0k8Y9+}FL? zTs;5&x;NR(%3tqK2i{`!uZPgf9hqgPzW>RC$JSgk1Q?{R40tz+Tv~IRMSK|U9I4UE z?ODmra9Fi+XD9lUGrI-gBJ>Tktr?N_itj$sz)llxR)iAhIF5#7YnHOQ0*A?XS8L| ze+jXR)1mPpbWlD!R~k-kLw)h&kkFo6=K2QLnC?q67eR~RSn9&qKX$kF7*wgzZ}e&w zysu-oGM$Zl%eUh_^ig%ySmRwlF-Am-Uh5Yt`Jx?%L;AsvIUdpRHMYKQ1$Pud>gW`Q z){XzYQxedvSlQo0i4RuRAm8}RflVt5EUo9SGM7F2SrD=pJ->>j?HMsxY+^(rNHT(N_k>V=rqB7t?`bxwyGE4S@hfqNhD4~VXk-~P-Zhm+a=BKjc78O(Ja-J zDSKI5Su&e#gj(QMYEDa0c_m67O~L3D;D~qce|2kR`Kq?u@=?fD5L&8v6`0edsv_r z?+X<{ZZyc_2ShimLgw5*!Z{i?^JWL9)Dx*}+6NvqAw$pQl^@__Mh|@7PcJ&sBwSp@#}3qLz3;QI54(y~ z^yxg7x4IL3>{*@BW8)hb$Ls!dm_t&?P53(bT6{-m!2phTS^(D0>G>P{I}cL^$>1wkW6?rR_$?rwPZ~l8r3& zcnD3X$5Cb|*~LnZ2RJX#l%(FQ{P<8}5o-oLc1m9xCSm=>+As+^!P+osB(mCQ_Rdj1 zeCAV62#Y?H=|$H4_~7DuGEVTE`4~~Huto5(_M)Bqu7O<>FZb>4z6X^GgC=F-3yXDVbNafA8BrE z%Z&gQ_jw;W_%O5=;{X0$1hDWYkuG#WeB&vkQ^CoE{AG+(;kZ_l)U%%Ov8SlK^< zhQHt52=C@p2bKzT=s9pJNj7MPge{9#)MYb_Gwr1vM`te`J`p>V1LK)@)gun+56ojL zs-7VltFH?2-{0}C+3)YhV$Y5v3v?4}!&uqbAgW;pa(0&QkSiM9w^AgR6eX&sUck|P zlbH6;P~?b=e}>R~tysZ7L)%{y`6kEJ$VtZTV0jfHO3~(DU33s~}3o8|;<7NLpqQ;91d@T&FXr;4To ztwfuL(WXQIehM&cMl%y_D62xnD&^GAVz=kG;NxS&^4d7iYD(Bz;BojT!alqeOZr!^ znA5*H`S;NgIDa^zDUa!UhhF7F<21!|g6AzHzMb}N7c!!4nx;5i6*JF0{;Pg~sL{Pb zFgK0vxyr30vE1JOS8p@fttrEygAps5O&_}iUIL_OV*=_IsM{^UjxJ4yIK7= z0X`dbPD)~qFq4QX^n8{@Uhwx#%mY)ksdS~2*|ZC*b4#6()5RfoqM@-wy?%<)<#}_N zA&;Vecx#a7%~OUvrN`umr~Ab#T7x{L^MvA{YJG0K$`h*$g_U*?ws+9xR=@{(h(ldk zx(wRWfKVGT>E>YGFr89QR(LVA!!GDu6IkfB8a)%6&g_kg`>HR#N8A!G81c93EGxX! zohH_?ic8_-S$6%>@St6tAzqxpV^}2Y6VWj8E+3X$6HIQfO#Js*R#4+h=kH>rHQ{6_ ztEySoLDvS3L*N3h-_vJCEKBuxhMQ>0tan-7ychB@i$Y!JGK?#;XHa{?!qr9jm%} zEL=CsaF@Iw<4Dc$!>vaIEI7sH+3lL*=EDm99l$RAV0PAzB-oEXj6@v9{JXpF)>dF{ zM4>V~&KP{lJy!5jTej}snIvUHZ4aNpjYxDgYjjIDK@u#y*hyEi>+%Y*0AQmmK5{wb zxIyu5?8n+kWc|K`YtIq4;rb!JMqg{sDt>&1Y}^<3QzvR3zEh(`XIc7Jj%CUkfWOT76c-6TfyWuM;c5Pfx7yuSK+>j!>YWrb}W;pb>?>YN)-u)tfv z(HkY!I3{f9r8(N0^?HhB+zRUX^Dv1HY&KZ7qrF+Tj_fc7yDPDlX1z)s?M-_Xe#zW# zzujp>wWhqJAE7s7>p~o)Ete~hrfRfsGOM{gQB;40gvI_6WY#o|vWslmFFixF48wSA zq@!vS;TEN6`(=AHEBj@Tn^tXr8?LdsU%I$y^%6Y5YZk%J@7?aYFXPu2h%45&^~1o) zdDA=+%cAZEfX5jTVI6rIJQn2zvrq44`i?R_*uuG%b#Z(r9#z7U{}V(< zUSXMdtQ*e?{_`8o#qxg}LSOM=r+?!p71QcE(Y2G5^&*z}#}4zTI*qRG!2If8 z&xH%GdKPm?mbUQI=WHFFg!Y+e7azhXRslzQ7TR$jCx3^fj4o^#FaNyw6otdOEJJUj zD;nXBKzDka<1^P;sbj<->wiCS!sr@}<{yxQi6uu4mV^wMzvaIS*3B49sWb*lifJ^M zC#$-@)gwu_yOEDyn$2$YjAYjHF0Aaq1dpUlNsYzx#j{McpQIOjShYRKE2#i20|n1s zpwmAeJK_uFMZHG*tn3HGN~Gg@IcNz65>8E{ z3QTKAmmlI6(b+Q5tO`| z`@$|AR>tbTwt)(vrx#px7M8IpR@UT)>l9tCPdnN&HW2Lx8@0>hnXwUQ4{X$aO!5(* z7gscD7iVoDkX()BgH6Q8cWgp~NtZ7bQv=e4M>&z6e5;A1cNv?k(dF<1#R7zPUNDKp z)9@Xoapz_4icW8s$67VIY`X1&6FEuDW8ulU>v^e}bT^MZjQ8pMf|>Mi#!PcNbG3!> z`uts6Vhi$w*<)Oa6b3$--H{(|Mc(ijm(|er%pzN+2lpm9mGmVv zYY{)}OS;gkVYXUd(t_}9{fWi)hZl(?fI>qxs$k;*SDjO6$>n>bJ zd_H!3?U!LT?lkDv3;m)BH^Rv}?z%=F@5bFj$!H%Z*eR#!N-*;T&j=;K&QQjzW4s`g zv?boWG?a81G;_KPZWBrci{VAd7AY~(&deKnxj<)47r0*K$(rCU@W377Y8dHBXKvw% zVPw#dWPPE4_lbVvjeawaIp}rXdC4%{%w3LzlCYI{$Jz}ah*pwynYs=f{1+mfZV<_O zRxgU?u+l-Fwl%s{8mR2 zLaoj=?@nYJaTU{teWtJFIMx_$PR7(8i{>s7BzU}w6bVY5j)G5#6U&WUibSb`C33t& zlY(XyXr#A~k8RXjzof914S!88bR97@u~Xz%?P5B%XsZh$EWkC z&ZLXmG`abjdX;C!kxsVNor$-Jj?dvGk;J$ArN(;8@!|+@#ELKlkez+6kgQ> z;d7oRM3X*r(lVY9Mf%eTB|ImJ;QVBu(VlWuvt|eJSOtbYlcfy%`G^Qx#K`?3P;H{=~|_~o9YU8f1XB>_Qn zN}rmjXEu#aIAyr=#D3h;iv+n%lpFDht~?_`@kG?b!8mqwGnG-Mk;tP$VKh{Cc) zs?O(8y)nhBe<7aL5HI;zgH7@^p4pr9@k+@NVm0LHO3lf+zw+xc4OyVz$D0C|bDa*}j@8XXyJ!w`#!$0J%pOwx{z@xe;}MFPp36liEJQGA+lH{!$LzK=#V43#K;Kreooq_1#DPBJ|{ zn$(D9yok4G%cJSMXfQOD*q&DmCU3btT4andbRIuFlXT@Xx)49xheOCV>hWkJ`4XV3 zVFX9|Jb5@4-uP}jZwQW@P7NpHgE9&PYq6nR)+M9R@t)_FQ6&6>C%lYBGHHZJf(blr z1jZgTo)?TDLp)MfG{`rI@EXwgOJ+D|TNWXi;XThKqsXReqz~~*eP|5h^eJu?uenOP zvYQj|1ArhGUNVxb?w@*Ha*ovK08wCJji(vVP+-@**7gLsn~%0kjuLGRJ~&{hEo~Gz zY4VtyB^ki^`tIhjW07C`J}b`I=Fq;Yc;#5~hTG)*hU)sv+IygWn#T_%lYZtY8t{X8T{2djDboxdF$Z|$cx0a`#S&i2Q^u3!<|#O( zi$RGtp7eK{a>2m$I>s#%NJs;`(UvrUTrxXHX|$UwkD5%5i`PgDF&Rrx*XcZM3VG5z zH9@0YXWFW#K#OiuWl(lL#r>v{kKCr}Zm-eKFvB$Rx!cq-W2^`S<#ZI%Q|k;k{7dfs z7~p9M5?;owI;@*gqv757{>R9V5BqoO$4h54>fiAyuNSbRf5-Ja*(zY!zvDo@(@LJE zVM}@7Ow!3btx}_5w++{9{Vm*Y-Av+5?(&^8$$VF&+^~+L?RDFE<}5^euURC+)!mRQ z6ywfzSV=Vm)FLA`zbcYAQ0fJBPgtcSEx zEo#4DPaZKBiQ}j9a@X4i^1LTV94`+bPCRZN=3w2g(ZCZtYaR)AM&TB?nU~Ci z-e)G^eE~m>cmJ8XPa5I}Ts8)nSqnT0e@`Fzr1gtT!L8 zT1ci)pKkolLUOZ%UU=b**h8bF@^#L{lgBP1-8-da z8m{W?@CqRwyeCZ$MR20vG>Na#X-`Yq_D#KZwkp~|3t#X?C@&&Ib8ldo)g4fyZS+%7 z!M0cV>?mVtZF55`w+)qR8~ykQ_@vSHUoSVq>2r>@%ua8lxugcowb2(D^vxS>zqi)t z>*e^e(MJB!*X&~53~p^&8S|T6DbyT9y{>Xg2?-WoFnHt=@`~GRnRC3_bL&zpO*fa2 zNN0;iz1ne07F>6Zrcuw!JT;31ndhYA{Rq#=BBRW63h}$x&pwp_$BpCkWt zo11T_-wm1fZ)6T}n_F!(xMGW(Ltb-aAs1xFrHF*|SOe|SiX#gp@S5Yq%>ADy?jGrB z0%JIHi@iMNc{0l_y~?0&F_@P;Pv&+|G}@vYqQod%t@E(Fv}mvE&N>h4TMI-}E|!OR zQb_YtJR=t+l3gU0uw4B5ew_$nb80D zRls|UwpX=pC>R~-TdtMlce#Hd6~;v7J89(i-Mrvs@`Y=lu4Zx%`dULicAKAJz;(NY z(IR=m9OSIOttC^<^UF0-hedcTa%31@aZno+$zxt28)!x%uY83JC0G{Mk>~nn6tC)R zWU6to6_WX6H_t32gXn@}URH=r$X$GDo!Q7I+~FrgBe$OtoTID@;_yC_ z-zp@J&|8FS8_8<71v!TCZ=vMhNJ9J+^W#>o^lA*o-rSy`pvu;U8@#mfR=H8#M8g_yzi39Be&Vp^=}K z$(Ye=^C;_+x4^VLir^Hi2Hu9OKWz~@GWPK_3j26H_@gZgy+M=R=Zuz zRpQ^?5B&9?9f~ap&YrHv9+f3b`9cdXe3cC9`Qvn{e{;im*g_)}Y@=3<{Aiqqk)QPQ zu&9!SDctEbSoBAnVZ26yf)-}N`WM7p^FXivE|vVaK+gx{$BR7YH7M}fQlY>=ZY?IE zJ{KG8eZNpYgd*2E@S79!irk=OrWls^9=od@aE0$y@-;hV~MzB#fuOPJZ;rERvE!%F9@Fc9Je0nfqlM#J!B_L~qmA7WlFSZJxYJ zZ@Vt(klSj`bC+GDYb$rz6oDp~L^MUprbsl+vt{oh{v`L3_yVP$PwSzjEK2H!i8i?C zr3IM0_yJ%MOoH&aeVc8&LUm!N8nU>ZaP4EK8%~HT|DjpxrtwKss4ey;C&Kk zOM9O@Pt1$YY2@?qyw-+2`Qqz5>L7lNb7nLAQ}SKnB=rYhJ)^HuQPw4hfiq|H+LYVp z5Fwa+sM$PH)ES-2XH?>yixMocW4Ftaw8I#6gJG{1R}Vc^a(jJ4<6~Jk&08Wf>H5pv9HnTtxHNZ0=lAd zGCX9-9@!U3qT;S2kT8ubBN~^S-gJzF_7mSWT~d@5;$*i4d`T>`qDQMn?XA&n)Rf8+ z>DU!GqdSJ%xjhQv^U>#l637R3SURpgAEDoBYi6e=M_KaadZviPM@IbN2_@1C!~ux zD^?>Py{kJ%`8ULwANzz%_sEJvqfvb+S=l_Y5(h~~#_+;Q96Dx|@`_4w(&O+XFpZJ& zRP&-!ICMJPftQ~`i4({pKLz+9&V@cD6GlBX%`tcV6pVZ*zD>Xw%1L=lC=2(e@-*_{ zY>8XZ3|9;s>Yz`FZ~v!|fi>h-pq)WYU~6ZK`W)-D`DqAz;F>MDip(+jJiQ-M`88PPy>_GRzwn!1kq`Nc=STv5 z`W(OhFQkUDySD4+$gjjx6rzpj-@eUneTAJ~pdbq+XSrHUw$f)(cv&?GXr))hQPyV? zHL`amudXI<`#zHd1~EoSVnm!q_Mp5wPsaWw?(dg3eNDcie;>@NzlH(7YX=LkQTgku4 z8}8IS-KO0k9?rDIG+XLD@^u^f>k3;;EBd4>{n5{cKbH8o4gD&Wr+1;l>E%hhtPA}K zvn%dO{mq@rRoW%XcDO5jgyjC3%o5BA#gQxxvJkp!t+BF;CYMms=wv~3L-$a8Mq;L%o96}$bZG({oq zcKhF4@U&p&33yI})RA~*+Up0?XpMc`Rux35me6Iy#2d?+Tt z?%)|^x4#BF&9>W%6Hyva%zTR=D6!jL2V+`qxBtCLQA}ZW`yTA>OtE;@!;PcnY3SAr&SVHhRdZhy9h7d%G?biM%a zx@gCx;)du;_v2YB8gSuYM!__mU&HS_M|+J=0VjbL7s!dX-ToqGf*(N{muQ0tUP{0d zw|O5uHoX8Yn45uXA?$=CVd@sd%ro+h0A* z)f_sNMDUCp8a`%0&Y%(FUK}4erWey~SuNwcFoH23*&u?JyJ` zgHdX1w{vJ~)25~L%T0OI*W(%dn{v-o6;oXWbrtNj(49!|mcptUP#yc$V|{6=0|E z83Hub^IY+C&*$63vrRcaDxTgK_$Bf5spEF>45;A2EAb3V=kfaU9G@Yc9SeExO0Y}j z+r&fTN5vz8UlPd9hq-+vU577^>t3WGuBu9E;i5{oZQ*+QKINIK=on|ck$=33&gEq< zQfHE2>#>@8n#{EaRdOwX4_`}Pa!tVN9=O>F(eVq)cNfs%&Uz!iQ$QD)ukBIEje6Vs z^|abq0(>N=)9JNZUdm~abCgPcJZBqLM0XJLje3+<$`v--de~KUD&X8-Y&t;W`K#OM zV&1NVwlo_ETbB}qn%i#`Dyf5lz4|(+mYR(=Tl*b?pl**!{s2LnSNZMDG?3pcrEc7Q zoVMd@U#CmWb!7t0)t&U0>2(;ft_IWjwP8B%C`t!+A!Z#!yNCHv)j)Q|yFdmDpURPy_EKK(Fl%Rk#iBh7yxq~PE8cR{uC{oorg z>HQVpWSF#G6C>&-t&b6{!lYF37O%QV>vi?(Cao_Pw7N;_bx+Vu`k+A2>L#r(<)oAb zn*Z33c^~GXrSvs7VucLlu-j@r<1Kmw|4?Ko!R&eo$pnUP+)ZCF6C?&wz=PhRea!^H zZ&LWwx9De%_sGA~g$VTGztaFSIS0}U{K((w1Xl%=$Y1_<{zCnW`KdkB-B~B$U+?`Eo35%~C;GpH%wV$YVl4e@7+ zfd!Fm!`rkinPOf6*1ATi*QpISg+{59;GhQy zb%_qZCn2?4IpOs3J7-2_TGCmkC@dO zm3n6L*!}b)a~miY`Kx|EJuBaBUmTzViJLdls}FK}*gxUtAM*<~ur%6iH*9nmar3ED zk?9nr(}?E7KR5(hAE+Xr!q)l&8c3YuRO*|=qdufZ-TW}PAC^aYPdH@&_dZPH&3?Dg zSjQ(HrZ>$25EYqo>=8(0yxTf{MB9-mL7AQoeFm1`)zD{PwrJJ$8KQ|-U7zju3j$rA z?IXpjuFt?)@hUu&TEYaauFv+dyyz%B;1-sSfzM&(|4?}4DE?qCZNVphOmjTd2M-<8 zAmY7`(Nk_=@VbtLiqh?L(+)404GjO`V|vZ4Bi6J|$%@h=qN$$VG#ePcr-J_Inyk`r z4Q`hsh<5O;mGmY2xHL?J#V4Y_K-;QM!j`U@N;^j=O7!;+NjEs_ZMNR0s2g#O03Hi< zugAm+P)WIZ1}lKx$fus6bKN>0#%?lOQTjx35Lo#2GccF2#pL(T&_rh!;59z{bK29~ zB}>rSp8uQ%TZn4g`ZKMfSY>UQx9MjT>rdPr`YFXaYjgRHP9|7rZI9Q{7!&=qWaB_n ztnKU{^gSY$+iMSKf7{XfG=gB!wE>zyXkFQXfu=HoRo8Ztm|$!;MBUfe{^M@)H3{$bP)%6`4s2WDX-Xs1r{4CXmnnq` z&r9$zwReIi*}&72z_J|t+S*q6n}!jX%~lm)nm|ahEwsI9HX)jARgh`439Ip!9ZU~s z=W_mKh-nDw3cpZOe^FPYgqr#y-K-Ih2wovtJC|!TqZ?v7f)61 zq{FQY7#(o|?_t2`xWCebfAPX1V0cMuJU&)UdC0pujBKHNZrB;IrYJ1|Ujbany+1QO z7Lri_*a`i>pFFM747l+_I1g}D=J9}1nl6qT~(^H(Y;LKv83mE)S*GjIdt+u97ht-~x&NKvn)I2198?^QWrP60pMv z=Cdks&wvJ2NcwNU5AZ{N-|^(Lrce^av(B0Z<$6>B6=9IJ7^*6B4}*1%geRzES~^(W zl5mzv+6jM{CgFUQv^>}_bc-Drsb_fnODdI(q}@q<)i6#~e)yG+NsegTim{@*c#o>w2CP&{_#;(0m4FF2=)X`&qQafN zFvUklfJ`>K!U;OXDoTr5qnqngmAHva5hme9Dw!I=v%WBO_Yy0oQf>sGD{ADN8ovJv z(_^_0uEQDY40^X|D%mIWBIoTkTP3eU(KKD+vsE%P3HU1##6x(Q=c;lb67pV<_{*x&uLSth z62765_uz;`2C2J(psnQlzclq2j8PS&_~Js^{VnOG3!DDZq-UvuC4(r#c0(L@A?Hiu2y|jG6x|{ z;w1ec&sRuq5r2We@ zE;k>VksjZRNA@RtU0ZxFW$~<<0 zUoBu6fgU!Md=8LGPw_aVlAh=HU=GQW!4>2H;fi4f+#04>Ukq5{Tenfk+!UTx4cC4H zuI)(tt;b_+DB?S-O@n%h&7woV)^Dn09q1J4IjxT%5qt zbvo}i_^Jray*U_1<}7su6qd%Fz6Ra5P^81Qo-Hsw_&a>f(+|amH_!UoG=r?+=e{;| z&z*V@=rUtC&y!e2M8xfpa1Gw|3otIvTdML|8N`#~d;X!4t%yh>?c~)0Y7usnYVitC zNhzk|NX=f|kYO5`#Y;QBz!8#7x=J=y0hYtIK|PiRY3VJA$I5fO2D8bR@J3aca2-~XUfAYs6+2z@ zua)>uR8zx1YWIF$C5O^6o^(U+<5&{c zV8% z8*`?G65l~pwy)q7HQ1cwUjdzr7(c9SAqC*;fVU&x9ps6ZO+7lmMsBLny`4K|aUEn* zh3$e>Wp@rQylfih2`L?>ZTB~o?8xAE(2V~X$iodqyRWbqBmoYS+)&Tu2^}b&RQO-J z`{HN^zP85j5Pvh0PC3vrx%&GGT5+L2F8>IXgvVhLQiuMDdNckb@i-{W{r(nU89x4x zsbp<7I!FQhbFqUd0^S{?V+Z5EQ6&X?0L$?6e+%Ik23Ts}|9yB^1mH+x0{$PN5OQe* ze+~7(=nnPx|D@(ByK3NK#j?X)xS-I0)L%d=m5j}YK+=2xop64%29;opp@D!Npw%y9 zMgj3EIa~_*a|XYFQ7V}&Tylkk=Rg49AM(%0RY`0h8l)QrV0{w);m8jG$m99}c)lEP zI|N+Oh`~Np`P~XwY9!z&1}JZY|3oDTP7vsh6yTCd7Q-JEDPUknip&Yvk-7tMs`^YG zI!F};;$)RY^0X_aL0;cY16`KEC=h~e$>jU5U}c+&HSiBrxi3^6 zWAtl}@h+x;zvR=t9dP;uJg)YgRf1Yd)ROuJu6=?^wn2lA0BfHNywKn@iJz+u)ekEj zPS}3AO4gbSv=b5=I5j;5Ov2 zgzqYPA^`;&a9LWYWJw~XQEL!bI;+a}5kRC#I0gp?djQJ;EikJe1bhf*U>&pqwim6Y}=_eL!US9-E&q+Mab;U^|_MUpd zWVxm)cayO?suKST_U+XT19oVsk_BbxuNn9bqC%Snyj*NLh?V&R_?4q_?l2j9Cj7-< zEf$EK=$9<}!5yED#JGVH{s0q?MK>8A9lpZ5egTiG12$GiG0wyOD2(wv?@BFBqXG&+ zP;BrCL8X&X2RKi{3y>%{CD6J8_&B3~m^TDk)6hRGR8`)^j7`#I!@2{fU!cbomK(2WF* zL^4cMNs$%sehDvyK&gNeCHxWwEC4J84#UT+_RyFk$ifa_ZAb@PE$PpyBm|(d6u3_q z4!8Je%&5R1=!hA8EmS0PPscEo{0k~3xyZO%h`8j|yUBE?p zMn~*jQsI#_LH7C$kyQh(a@bBP^t=-=ic4ECLFqShDW4)z!>Jqz#(10U|CDwz<6WJ(xYr31z2FU=Z` zBI5+KM5GeJ`(SS(=<6hXBE*Fm9a;{bptd2!DhRBS;7OJ2Kg_dkn7R)sf%YB_RHiCH z!oQLv-G|5k*??ulho4u;RV(OKiT_=Epx{?-m8 iH+<;M&w-A9R>_@i!rZrtdE!k|Jn^=zxM})l=l=zV!#~Ra diff --git a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c index 530831068..a10cd7e01 100644 --- a/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c +++ b/slsDetectorSoftware/eigerDetectorServer/slsDetectorFunctionList.c @@ -536,7 +536,7 @@ int getDefaultSettingsTau_in_nsec(){ } -int setModule(sls_detector_module myMod, int* gain, int* offset){ +int setModule(sls_detector_module myMod, int* gain, int* offset,int* delay){ int retval[2]; int i; @@ -560,6 +560,12 @@ int setModule(sls_detector_module myMod, int* gain, int* offset){ printf("offset[%d]:%d\n",i,detectorOffset[i]); }else cprintf(RED,"offset not set\n"); } + + if(setIODelay(*delay, -1)!= (*delay)){ + cprintf(RED,"could not set iodelay %d\n",*delay); + return FAIL; + } + //copy module locally if (detectorModules) copyModule(detectorModules,&myMod); diff --git a/slsDetectorSoftware/slsDetector/slsDetector.cpp b/slsDetectorSoftware/slsDetector/slsDetector.cpp index 310bca9f0..424ce1bf6 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetector.cpp @@ -2658,6 +2658,7 @@ int slsDetector::setModule(int reg, int imod){ sls_detector_module myModule; int* g=0; int* o=0; + int* iod=0; #ifdef VERBOSE std::cout << "slsDetector set module " << std::endl; @@ -2726,14 +2727,14 @@ int slsDetector::setModule(int reg, int imod){ ads[i]=-1; myModule.adcs=ads; } - ret=setModule(myModule,g,o); + ret=setModule(myModule,g,o,iod); } return ret; }; -int slsDetector::setModule(sls_detector_module module, int* gainval, int* offsetval){ +int slsDetector::setModule(sls_detector_module module, int* gainval, int* offsetval, int* iodelay){ int fnum=F_SET_MODULE; int retval; @@ -2757,6 +2758,8 @@ int slsDetector::setModule(sls_detector_module module, int* gainval, int* offset controlSocket->SendDataOnly(gainval,sizeof(int)*thisDetector->nGain); if((thisDetector->nOffset) && (offsetval)) controlSocket->SendDataOnly(offsetval,sizeof(int)*thisDetector->nOffset); + if(thisDetector->myDetectorType == EIGER) + controlSocket->SendDataOnly(iodelay,sizeof(int)); controlSocket->ReceiveDataOnly(&ret,sizeof(ret)); if (ret!=FAIL) { @@ -3116,10 +3119,13 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise string ssettings; int* gainval=0, *offsetval=0; + int* iodelay=0; if(thisDetector->nGain) gainval=new int[thisDetector->nGain]; if(thisDetector->nOffset) offsetval=new int[thisDetector->nOffset]; + if(thisDetector->myDetectorType == EIGER) + iodelay = new int; int ret=0; @@ -3269,7 +3275,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise #ifdef VERBOSE cout << "the settings file name is "<myDetectorType, myMod)) { + if (!readSettingsFile(settingsfname,thisDetector->myDetectorType, myMod,iodelay)) { //if it didnt open, try default settings file ostringstream ostfn_default; switch(thisDetector->myDetectorType){ @@ -3289,7 +3295,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise #ifdef VERBOSE cout << settingsfname << endl; #endif - if (!readSettingsFile(settingsfname,thisDetector->myDetectorType, myMod)) { + if (!readSettingsFile(settingsfname,thisDetector->myDetectorType, myMod,iodelay)) { //if default doesnt work, return error std::cout << "Could not open settings file" << endl; setErrorMask((getErrorMask())|(SETTINGS_FILE_NOT_OPEN)); @@ -3334,7 +3340,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise } //if everything worked, set module**** - setModule(*myMod,gainval,offsetval); + setModule(*myMod,gainval,offsetval,iodelay); } } @@ -6155,9 +6161,9 @@ int slsDetector::writeConfigurationFile(ofstream &outfile, int id){ -int slsDetector::writeSettingsFile(string fname, int imod){ +int slsDetector::writeSettingsFile(string fname, int imod, int* iodelay){ - return writeSettingsFile(fname,thisDetector->myDetectorType, detectorModules[imod]); + return writeSettingsFile(fname,thisDetector->myDetectorType, detectorModules[imod], iodelay); }; @@ -6168,6 +6174,7 @@ int slsDetector::loadSettingsFile(string fname, int imod) { sls_detector_module *myMod=NULL; int* gainval=0; int* offsetval=0; + int *iodelay=0; if(thisDetector->nGain){ gainval=new int[thisDetector->nGain]; for(int i=0;inGain;i++) @@ -6178,6 +6185,8 @@ int slsDetector::loadSettingsFile(string fname, int imod) { for(int i=0;inOffset;i++) offsetval[i] = -1; } + if(thisDetector->myDetectorType == EIGER) + iodelay = new int;*iodelay=0; string fn=fname; fn=fname; int mmin=0, mmax=setNumberOfModules(); @@ -6197,13 +6206,14 @@ int slsDetector::loadSettingsFile(string fname, int imod) { ostfn << ".sn" << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER, im); fn=ostfn.str(); } - myMod=readSettingsFile(fn, thisDetector->myDetectorType); + myMod=readSettingsFile(fn, thisDetector->myDetectorType,myMod,iodelay); + if (myMod) { myMod->module=im; //settings is saved in myMod.reg for all except mythen if(thisDetector->myDetectorType!=MYTHEN) myMod->reg=thisDetector->currentSettings; - setModule(*myMod,gainval,offsetval); + setModule(*myMod,gainval,offsetval,iodelay); deleteModule(myMod); if(gainval) delete[] gainval; if(offsetval) delete[] offsetval; @@ -6216,9 +6226,9 @@ int slsDetector::loadSettingsFile(string fname, int imod) { int slsDetector::saveSettingsFile(string fname, int imod) { - sls_detector_module *myMod=NULL; int ret=FAIL; + int *iod = 0; int mmin=0, mmax=setNumberOfModules(); if (imod>=0) { @@ -6227,13 +6237,18 @@ int slsDetector::saveSettingsFile(string fname, int imod) { } for (int im=mmin; immyDetectorType == EIGER) + if(thisDetector->myDetectorType == EIGER){ ostfn << fname << ".sn" << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER); - else + } else ostfn << fname << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER,im); if ((myMod=getModule(im))) { - ret=writeSettingsFile(ostfn.str(), thisDetector->myDetectorType, *myMod); - deleteModule(myMod); + + if(thisDetector->myDetectorType == EIGER){ + iod = new int; + *iod = (int)setDAC((dacs_t)-1,IO_DELAY,0,-1); + } + ret=writeSettingsFile(ostfn.str(), thisDetector->myDetectorType, *myMod,iod); + deleteModule(myMod); } } return ret; @@ -6284,6 +6299,7 @@ int slsDetector::loadCalibrationFile(string fname, int imod) { string fn=fname; int* gainval=0; int* offsetval=0; + int* iodelay=0; if(thisDetector->nGain){ gainval=new int[thisDetector->nGain]; for(int i=0;inGain;i++) @@ -6315,7 +6331,8 @@ int slsDetector::loadCalibrationFile(string fname, int imod) { } fn=ostfn.str(); if((myMod=getModule(im))){ - + iodelay = new int; + *iodelay = (int)setDAC(-1,IO_DELAY,0); //extra gain and offset if(thisDetector->nGain){ if(readCalibrationFile(fn,gainval, offsetval,thisDetector->myDetectorType)==FAIL) @@ -6325,7 +6342,7 @@ int slsDetector::loadCalibrationFile(string fname, int imod) { if(readCalibrationFile(fn,myMod->gain, myMod->offset)==FAIL) return FAIL; } - setModule(*myMod,gainval,offsetval); + setModule(*myMod,gainval,offsetval,iodelay); deleteModule(myMod); if(gainval) delete[]gainval; diff --git a/slsDetectorSoftware/slsDetector/slsDetector.h b/slsDetectorSoftware/slsDetector/slsDetector.h index 66c08783e..a86c85081 100644 --- a/slsDetectorSoftware/slsDetector/slsDetector.h +++ b/slsDetectorSoftware/slsDetector/slsDetector.h @@ -494,11 +494,12 @@ class slsDetector : public slsDetectorUtils, public energyConversion { writes a trim/settings file for module number imod - the values will be read from the current detector structure \param fname name of the file to be written \param imod module number + \param iodelay io delay (detector specific) \returns OK or FAIL if the file could not be written \sa ::sls_detector_module sharedSlsDetector mythenDetector::writeSettingsFile(string, int) */ using energyConversion::writeSettingsFile; - int writeSettingsFile(string fname, int imod); + int writeSettingsFile(string fname, int imod, int* iodelay=0); /** @@ -908,10 +909,11 @@ class slsDetector : public slsDetectorUtils, public energyConversion { \param module module to be set - must contain correct module number and also channel and chip registers \param gainval pointer to extra gain values \param offsetval pointer to extra offset values + \param iodelay iodelay (detector specific) \returns current register value \sa ::sls_detector_module */ - int setModule(sls_detector_module module, int* gainval, int* offsetval); + int setModule(sls_detector_module module, int* gainval, int* offsetval,int* iodelay); //virtual int setModule(sls_detector_module module); /** diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index d2322c301..4591026e2 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -3070,7 +3070,7 @@ string slsDetectorCommand::cmdSettings(int narg, char *args[], int action) { string sval=string(args[1]); #ifdef VERBOSE std::cout<< " trimfile " << sval << std::endl; -#endif +#endif if (action==GET_ACTION) { //create file names myDet->saveSettingsFile(sval, -1); diff --git a/slsDetectorSoftware/slsDetectorAnalysis/energyConversion.cpp b/slsDetectorSoftware/slsDetectorAnalysis/energyConversion.cpp index 2d8be5c56..24537f98f 100644 --- a/slsDetectorSoftware/slsDetectorAnalysis/energyConversion.cpp +++ b/slsDetectorSoftware/slsDetectorAnalysis/energyConversion.cpp @@ -163,7 +163,7 @@ int energyConversion::writeCalibrationFile(string fname, int *gain, int *offset, /* I/O */ -slsDetectorDefs::sls_detector_module* energyConversion::readSettingsFile(string fname, detectorType myDetectorType, sls_detector_module *myMod){ +slsDetectorDefs::sls_detector_module* energyConversion::readSettingsFile(string fname, detectorType myDetectorType, sls_detector_module *myMod, int* iodelay){ @@ -353,10 +353,12 @@ slsDetectorDefs::sls_detector_module* energyConversion::readSettingsFile(string infile.open(myfname.c_str(),ifstream::binary); if (infile.is_open()) { infile.read((char*) myMod->dacs,sizeof(dacs_t)*(myMod->ndac)); + infile.read((char*) iodelay,sizeof(iodelay)); infile.read((char*) myMod->chanregs,sizeof(int)*(myMod->nchan)); #ifdef VERBOSE for(int i=0;indac;i++) std::cout << "dac " << i << ":" << myMod->dacs[i] << std::endl; + std::cout << "iodelay:" << *iodelay << std::endl; #endif if(infile.eof()){ cout< If it is NULL a new module structure will be created + \param iodelay io delay (detector specific) \returns the pointer to myMod or NULL if reading the file failed */ - sls_detector_module* readSettingsFile(string fname, detectorType myDetectorType, sls_detector_module* myMod=NULL); + sls_detector_module* readSettingsFile(string fname, detectorType myDetectorType, sls_detector_module* myMod=NULL, int* iodelay=0); /** writes a trim/settings file \param fname name of the file to be written \param myDetectorType detector type (needed for number of channels, chips, dacs etc.) \param mod module structure which has to be written to file + \param iodelay io delay (detector specific) \returns OK or FAIL if the file could not be written \sa ::sls_detector_module mythenDetector::writeSettingsFile(string, sls_detector_module) */ - int writeSettingsFile(string fname, detectorType myDetectorType, sls_detector_module mod); + int writeSettingsFile(string fname, detectorType myDetectorType, sls_detector_module mod, int* iodelay=0); /** allocates the momery for a detector module structure \param myDetectorType detector type (needed for number of channels, chips, dacs etc.) diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h b/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h index 62fb82bcd..f4313e6b0 100644 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorFunctionList.h @@ -70,7 +70,7 @@ int getChip(sls_detector_chip *myChip); #ifdef EIGERD -int setModule(sls_detector_module myMod, int* gain, int* offset); +int setModule(sls_detector_module myMod, int* gain, int* offset,int* delay); int getModule(sls_detector_module *myMod, int* gain, int* offset); #else int setModule(sls_detector_module myMod); diff --git a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c index 29e13ffeb..0d43281bd 100755 --- a/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c +++ b/slsDetectorSoftware/slsDetectorServer/slsDetectorServer_funcs.c @@ -1807,6 +1807,7 @@ int set_module(int file_des) { #ifdef EIGERD int *myGain = (int*)malloc(getNumberOfGainsPerModule()*sizeof(int)); int *myOffset = (int*)malloc(getNumberOfOffsetsPerModule()*sizeof(int)); + int *myIODelay = (int*)malloc(sizeof(int)); #endif int *myChip=(int*)malloc(getNumberOfChipsPerModule()*sizeof(int)); int *myChan=(int*)malloc(getNumberOfChannelsPerModule()*sizeof(int)); @@ -1861,6 +1862,7 @@ int set_module(int file_des) { #ifdef EIGERD n = receiveData(file_des,myGain,sizeof(int)*getNumberOfGainsPerModule(),INT32); n = receiveData(file_des,myOffset,sizeof(int)*getNumberOfOffsetsPerModule(),INT32); + n = receiveData(file_des,myIODelay,sizeof(int),INT32); #endif if (ret>=0) ret=OK; @@ -1876,6 +1878,7 @@ int set_module(int file_des) { printf("gain[%d]:%d\t%f\n",i,myGain[i],((double)myGain[i]/1000)); for(i=0;i