00001 
00014 #ifndef ARX_UI_H
00015 #define ARX_UI_H
00016 
00017 
00018 #include "arx.h"
00019 #include "stat/loggers_ui.h"
00020 
00041 class UIARX : public UIbuilder {
00042 public:
00043         UIARX() :UIbuilder ( "ARXest" ) {};
00044         bdmroot* build ( Setting &S ) const {
00045                 RV *yrv;  UIbuild(S["y"],yrv);
00046                 RV *rrv; UIbuild(S["rgr"],rrv);
00047                 int ylen = yrv->_dsize();
00048                 int rgrlen = rrv->_dsize();
00049                 
00050                 
00051                 mat V0;
00052                 if ( S.exists ( "dV0" ) ) {
00053                         V0=diag ( getvec(S["dV0"]) );
00054                 }
00055                 else {
00056                         V0=concat ( 1e-3*ones ( ylen ), 1e-5*ones ( rgrlen ) );
00057                 }
00058                 double nu0;
00059                 if ( S.exists ( "nu0" ) ) {
00060                         nu0=double(S["nu0"]);
00061                 }
00062                 else {
00063                         nu0 = rgrlen+ylen+2;
00064                 }
00065                 double frg;
00066                 if ( S.exists ( "frg" ) ) {
00067                         frg = S["frg"];
00068                 }
00069                 else {
00070                         frg = 1.0;
00071                 }
00072                 ARX* A=new ARX;
00073                 A->set_parameters(frg);
00074                 A->set_statistics(ylen,V0, nu0);
00075                 A->set_drv(concat(*yrv,*rrv));
00076                 
00077                 
00078                 A->set_rv(RV("{theta r }", vec_2(ylen*rgrlen, ylen*ylen)));
00079                 delete yrv; delete rrv;
00080                 return A;
00081         };
00082 };
00083 
00084 UIREGISTER ( UIARX );
00085 
00086 #endif // DS_UI_H