Show
Ignore:
Timestamp:
06/22/09 13:17:49 (15 years ago)
Author:
smidl
Message:

merging works for merger_mx

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/stat/emix.h

    r394 r395  
    235235        mprod (){}; 
    236236        mprod (Array<mpdf*> mFacs ){set_elements( mFacs );}; 
    237         void set_elements(Array<mpdf*> mFacs ) { 
     237        void set_elements(Array<mpdf*> mFacs , bool own=false) { 
    238238                 
    239                 set_elements(mFacs); 
    240                  
     239                compositepdf::set_elements(mFacs,own); 
     240                dls.set_size(mFacs.length()); 
     241                epdfs.set_size(mFacs.length()); 
     242                                 
    241243                ep=&dummy; 
    242244                RV rv=getrv ( true ); 
    243                 set_rv ( rv );dummy.set_parameters ( rv._dsize() ); 
     245                set_rv ( rv ); 
     246                dummy.set_parameters ( rv._dsize() ); 
    244247                setrvc ( ep->_rv(),rvc ); 
    245248                // rv and rvc established = > we can link them with mpdfs 
     
    270273                return res; 
    271274        } 
     275        vec evallogcond_m(const mat &Dt, const vec &cond) { 
     276                vec tmp(Dt.cols()); 
     277                for(int i=0;i<Dt.cols(); i++){ 
     278                        tmp(i) = evallogcond(Dt.get_col(i),cond); 
     279                } 
     280                return tmp; 
     281        }; 
     282        vec evallogcond_m(const Array<vec> &Dt, const vec &cond) { 
     283                vec tmp(Dt.length()); 
     284                for(int i=0;i<Dt.length(); i++){ 
     285                        tmp(i) = evallogcond(Dt(i),cond); 
     286                } 
     287                return tmp;              
     288        }; 
     289 
     290 
    272291        //TODO smarter... 
    273292        vec samplecond ( const vec &cond ) { 
     
    294313 
    295314        ~mprod() {}; 
    296 }; 
     315        //! Load from structure with elements: 
     316        //!  \code 
     317        //! { class='mprod'; 
     318        //!   mpdfs = (..., ...);     // list of mpdfs in the order of chain rule 
     319        //! } 
     320        //! \endcode 
     321        //!@} 
     322        void from_setting(const Setting &set){ 
     323                Array<mpdf*> Atmp; //temporary Array 
     324                UI::get(Atmp,set, "mpdfs"); 
     325                set_elements(Atmp,true); 
     326        } 
     327         
     328}; 
     329UIREGISTER(mprod); 
    297330 
    298331//! Product of independent epdfs. For dependent pdfs, use mprod.