Changeset 507 for library/bdm/stat/merger.h
- Timestamp:
- 08/12/09 15:37:43 (15 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/stat/merger.h
r488 r507 42 42 */ 43 43 44 class merger_base : public compositepdf, publicepdf {44 class merger_base : public epdf { 45 45 protected: 46 //! Elements of composition 47 Array<shared_ptr<mpdf> > mpdfs; 48 46 49 //! Data link for each mpdf in mpdfs 47 50 Array<datalink_m2e*> dls; 51 48 52 //! Array of rvs that are not modelled by mpdfs at all, \f$ z_i \f$ 49 53 Array<RV> rvzs; 54 50 55 //! Data Links for extension \f$ f(z_i|x_i,y_i) \f$ 51 56 Array<datalink_m2e*> zdls; 57 52 58 //! number of support points 53 59 int Npoints; 60 54 61 //! number of sources 55 62 int Nsources; … … 77 84 //! @{ 78 85 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) { 83 88 } 84 89 85 90 //!Constructor from sources 86 merger_base ( const Array< mpdf*> &S, bool own = false);91 merger_base ( const Array<shared_ptr<mpdf> > &S ); 87 92 88 93 //! 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; 91 96 Nsources = mpdfs.length(); 92 97 //set sizes … … 95 100 zdls.set_size ( Sources.length() ); 96 101 97 rv = getrv ( /* checkoverlap = */ false ); 102 rv = get_composite_rv ( mpdfs, /* checkoverlap = */ false ); 103 98 104 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 100 111 // join rv and rvc - see descriprion 101 112 rv.add ( rvc ); … … 325 336 //!\name Constructors 326 337 //!@{ 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 331 345 //! 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 ); 334 348 Nsources = S.length(); 335 349 } 350 336 351 //! Set internal parameters used in approximation 337 352 void set_parameters ( int Ncoms0 = DFLT_Ncoms, double effss_coef0 = DFLT_effss_coef ) {