Show
Ignore:
Timestamp:
08/12/09 15:37:43 (15 years ago)
Author:
vbarta
Message:

removed class compositepdf; keeping mpdfs of mprod and merger_base in shared pointers

Files:
1 modified

Legend:

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

    r488 r507  
    4242*/ 
    4343 
    44 class merger_base : public compositepdf, public epdf { 
     44class merger_base : public epdf { 
    4545protected: 
     46        //! Elements of composition 
     47        Array<shared_ptr<mpdf> > mpdfs; 
     48 
    4649        //! Data link for each mpdf in mpdfs 
    4750        Array<datalink_m2e*> dls; 
     51 
    4852        //! Array of rvs that are not modelled by mpdfs at all, \f$ z_i \f$ 
    4953        Array<RV> rvzs; 
     54 
    5055        //! Data Links for extension \f$ f(z_i|x_i,y_i) \f$ 
    5156        Array<datalink_m2e*> zdls; 
     57 
    5258        //! number of support points 
    5359        int Npoints; 
     60 
    5461        //! number of sources 
    5562        int Nsources; 
     
    7784        //! @{ 
    7885 
    79         //!Empty constructor 
    80         merger_base () : compositepdf() { 
    81                 DBG = false; 
    82                 dbg_file = NULL; 
     86        //! Default constructor 
     87        merger_base () : Npoints(0), Nsources(0), DBG(false), dbg_file(0) { 
    8388        } 
    8489 
    8590        //!Constructor from sources 
    86         merger_base ( const Array<mpdf*> &S, bool own = false ); 
     91        merger_base ( const Array<shared_ptr<mpdf> > &S ); 
    8792 
    8893        //! Function setting the main internal structures 
    89         void set_sources ( const Array<mpdf*> &Sources, bool own ) { 
    90                 compositepdf::set_elements ( Sources, own ); 
     94        void set_sources ( const Array<shared_ptr<mpdf> > &Sources ) { 
     95                mpdfs = Sources; 
    9196                Nsources = mpdfs.length(); 
    9297                //set sizes 
     
    95100                zdls.set_size ( Sources.length() ); 
    96101 
    97                 rv = getrv ( /* checkoverlap = */ false ); 
     102                rv = get_composite_rv ( mpdfs, /* checkoverlap = */ false ); 
     103 
    98104                RV rvc; 
    99                 setrvc ( rv, rvc );  // Extend rv by rvc! 
     105                // Extend rv by rvc! 
     106                for ( int i = 0; i < mpdfs.length(); i++ ) { 
     107                        RV rvx = mpdfs ( i )->_rvc().subt ( rv ); 
     108                        rvc.add ( rvx ); // add rv to common rvc 
     109                } 
     110 
    100111                // join rv and rvc - see descriprion 
    101112                rv.add ( rvc ); 
     
    325336        //!\name Constructors 
    326337        //!@{ 
    327         merger_mix () {}; 
    328         merger_mix ( const Array<mpdf*> &S, bool own = false ) { 
    329                 set_sources ( S, own ); 
    330         }; 
     338        merger_mix ():Ncoms(0), effss_coef(0), stop_niter(0) { } 
     339 
     340        merger_mix ( const Array<shared_ptr<mpdf> > &S ): 
     341                Ncoms(0), effss_coef(0), stop_niter(0) { 
     342                set_sources ( S ); 
     343        } 
     344 
    331345        //! Set sources and prepare all internal structures 
    332         void set_sources ( const Array<mpdf*> &S, bool own ) { 
    333                 merger_base::set_sources ( S, own ); 
     346        void set_sources ( const Array<shared_ptr<mpdf> > &S ) { 
     347                merger_base::set_sources ( S ); 
    334348                Nsources = S.length(); 
    335349        } 
     350 
    336351        //! Set internal parameters used in approximation 
    337352        void set_parameters ( int Ncoms0 = DFLT_Ncoms, double effss_coef0 = DFLT_effss_coef ) {