Changeset 3613 in Sophya for trunk/SophyaLib
- Timestamp:
- Apr 30, 2009, 7:07:46 PM (16 years ago)
- Location:
- trunk/SophyaLib
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/Samba/alm.cc
r3510 r3613 20 20 21 21 //alm.ReSize(nlmax); 22 this->ReSizeRow(nlmax+1); 23 RandomGenerator rg(1, false); 24 GenFromCl(clin, fwhm, rg); 22 this->ReSizeRow(nlmax+1); 23 GenFromCl(clin, fwhm, *(RandomGeneratorInterface::GetGlobalRandGenP()) ); 25 24 } 26 25 … … 29 28 */ 30 29 template <class T> 31 Alm<T>::Alm(const TVector<T>& clin, const r_8 fwhm, RandomGenerator & rg)30 Alm<T>::Alm(const TVector<T>& clin, const r_8 fwhm, RandomGeneratorInterface & rg) 32 31 { 33 32 int_4 nlmax= clin.NElts()-1; … … 41 40 42 41 template <class T> 43 void Alm<T>::GenFromCl(const TVector<T> & clin, const r_8 fwhm, RandomGenerator & rg)42 void Alm<T>::GenFromCl(const TVector<T> & clin, const r_8 fwhm, RandomGeneratorInterface & rg) 44 43 { 45 44 /*======================================================================= -
trunk/SophyaLib/Samba/alm.h
r3510 r3613 6 6 #define ALM_SEEN 7 7 8 #include " stsrand.h"8 #include "randinterf.h" 9 9 #include "nbmath.h" 10 10 #include "triangmtx.h" … … 26 26 Alm(const TVector<T> & clin, const r_8 fwhm) ; 27 27 //! Constructor, generates alm from a cl vector, using the specified random generator object 28 Alm(const TVector<T> & clin, const r_8 fwhm, RandomGenerator 28 Alm(const TVector<T> & clin, const r_8 fwhm, RandomGeneratorInterface& rg); 29 29 30 30 //! Resize with a new lmax … … 41 41 42 42 private: 43 void GenFromCl(const TVector<T> & clin, const r_8 fwhm, RandomGenerator & rg);43 void GenFromCl(const TVector<T> & clin, const r_8 fwhm, RandomGeneratorInterface& rg); 44 44 }; 45 45 -
trunk/SophyaLib/Samba/sphericaltransformserver.cc
r3572 r3613 6 6 #include "sphericaltransformserver.h" 7 7 #include "tvector.h" 8 #include "stsrand.h"9 8 #include "nbmath.h" 10 9 #include "timing.h" … … 156 155 template<class T> 157 156 SphericalTransformServer<T>::SphericalTransformServer() 158 : rg _(1, false)157 : rgp_(RandomGeneratorInterface::GetGlobalRandGenP()) 159 158 { 160 159 fftIntfPtr_=new FFTPackServer(true); // preserveinput = true … … 164 163 //! Constructor with the specification of a RandomGenerator object to be used by GenerateFromCl 165 164 template<class T> 166 SphericalTransformServer<T>::SphericalTransformServer(RandomGenerator const& rg)167 : rg _(rg)165 SphericalTransformServer<T>::SphericalTransformServer(RandomGeneratorInterface& rg) 166 : rgp_(&rg) 168 167 { 169 168 fftIntfPtr_=new FFTPackServer(true); // preserveinput = true … … 1312 1311 // Alm<T> a2lme = almFromCl(Cle, fwhm); 1313 1312 // Alm<T> a2lmb = almFromCl(Clb, fwhm); 1314 Alm<T> a2lme(Cle, fwhm, rg_);1315 Alm<T> a2lmb(Clb, fwhm, rg_);1313 Alm<T> a2lme(Cle, fwhm, *rgp_); 1314 Alm<T> a2lmb(Clb, fwhm, *rgp_); 1316 1315 1317 1316 GenerateFromAlm(sphq,sphu,pixelSizeIndex,a2lme,a2lmb); … … 1330 1329 { 1331 1330 1332 Alm<T> alm(Cl, fwhm, rg_);1331 Alm<T> alm(Cl, fwhm, *rgp_); 1333 1332 GenerateFromAlm(sph,pixelSizeIndex, alm ); 1334 1333 } -
trunk/SophyaLib/Samba/sphericaltransformserver.h
r3510 r3613 5 5 #include "fftservintf.h" 6 6 #include "fftpserver.h" 7 #include " stsrand.h"7 #include "randinterf.h" 8 8 #include "alm.h" 9 9 #include "lambdaBuilder.h" … … 19 19 public: 20 20 21 SphericalTransformServer();22 SphericalTransformServer(RandomGenerator const& rg);21 explicit SphericalTransformServer(); 22 explicit SphericalTransformServer(RandomGeneratorInterface& rg); 23 23 virtual ~SphericalTransformServer(); 24 24 void SetFFTServer(FFTServerInterface* srv=NULL); … … 107 107 108 108 FFTServerInterface* fftIntfPtr_; 109 mutable RandomGenerator rg_;109 mutable RandomGeneratorInterface* rgp_; 110 110 111 111 }; -
trunk/SophyaLib/TArray/utilarr.cc
r3572 r3613 5 5 #include "machdefs.h" 6 6 #include "utilarr.h" 7 #include " stsrand.h"7 #include "randr48.h" 8 8 9 9 // Classe utilitaires … … 20 20 */ 21 21 22 / /! Constructor23 /*! 24 \param typ : generat or type25 \param m : mean parameter of the generator (if needed)26 \param s : sigma parameter of the generator (if needed)22 /*! 23 \brief constructor using a global default random generator ( RandomGeneratorInterface::GetGlobalRandGenP() ) 24 \param typ : generated random numbers distribution type: C_RND_Flat,C_RND_Gaussian,C_RND_Poisson,C_RND_Exponential 25 \param mean : mean value of the distribution 26 \param sigma : standard deviation of the distribution 27 27 */ 28 static RandomGenerator* uarg_ = NULL; 29 RandomSequence::RandomSequence(int typ, double m, double s) 30 { 31 typ_ = (typ == Flat) ? Flat : Gaussian; 32 mean_ = m; 33 sig_ = s; 34 if (uarg_ == NULL) uarg_ = new RandomGenerator(1024, true); 35 } 28 RandomSequence::RandomSequence(int typ, double mean, double sigma) 29 { 30 typ_ = (typ == Flat) ? C_RND_Flat: C_RND_Gaussian ; 31 mean_ = mean; 32 sig_ = sigma; 33 rgp_ = RandomGeneratorInterface::GetGlobalRandGenP(); 34 } 35 36 37 /*! 38 \brief constructor with the specification of a RandomGenerator object to be used. 39 \param rgen : RandomGeneratorInterface object that should stay valid as long as the RandomSequence object exist. 40 \param typ : generated random numbers distribution type: C_RND_Flat,C_RND_Gaussian,C_RND_Poisson,C_RND_Exponential 41 \param mean : mean value of the distribution 42 \param sigma : standard deviation of the distribution 43 */ 44 RandomSequence::RandomSequence(RandomGeneratorInterface& rgen, RNDTypes rtyp, double mean, double sigma) 45 { 46 typ_ = rtyp; 47 mean_ = mean; 48 sig_ = sigma; 49 rgp_ = &rgen; 50 } 51 36 52 RandomSequence::~RandomSequence() 37 53 { 38 54 } 39 55 40 //! Return random sequence values. 41 /*! 42 \return If typ = Flat : return [-1,+1]*sig + mean 43 \return If typ = Gaussian : return gaussian distributed 44 with \b mean mean and sigma \b sig 45 */ 46 double RandomSequence::Rand() 47 { 48 if (typ_ == Flat) 49 return(uarg_->Flatpm1()*sig_ + mean_); 50 else return(uarg_->Gaussian(sig_, mean_)); 51 } 52 56 double RandomSequence::Next() const 57 { 58 switch (typ_) { 59 case C_RND_Flat : 60 return rgp_->Flatpm1()*sig_ + mean_; 61 break; 62 case C_RND_Gaussian : 63 return rgp_->Gaussian(sig_, mean_); 64 break; 65 case C_RND_Poisson : 66 return rgp_->Poisson(mean_); 67 break; 68 case C_RND_Exponential : 69 return rgp_->Exponential(); 70 break; 71 default : 72 return rgp_->Flat01(); 73 break; 74 75 } 76 } 77 78 //! \brief Return the next random number 53 79 MuTyV & RandomSequence::Value(sa_size_t k) const 54 80 { 55 if (typ_ == Flat) retv_ = uarg_->Flatpm1()*sig_ + mean_; 56 else retv_ = uarg_->Gaussian(sig_, mean_); 81 retv_ = Next(); 57 82 return retv_; 58 83 } -
trunk/SophyaLib/TArray/utilarr.h
r2917 r3613 8 8 #include "machdefs.h" 9 9 #include "mutyv.h" 10 #include "randinterf.h" 10 11 11 12 #include <stdlib.h> … … 56 57 57 58 explicit RandomSequence(int typ = RandomSequence::Gaussian, double m=0., double s=1.); 59 explicit RandomSequence(RandomGeneratorInterface& rgen, RNDTypes rtyp=C_RND_Gaussian, double mean=0., double sigma=1.); 58 60 virtual ~RandomSequence(); 59 61 virtual MuTyV & Value(sa_size_t k) const ; 60 double Rand();62 double Next() const ; 61 63 62 64 protected: 63 inttyp_; //!< random generation type65 RNDTypes typ_; //!< random generation type 64 66 double mean_, sig_; //!< generation parameters mean and sigma (if needed) 65 67 mutable MuTyV retv_; 68 mutable RandomGeneratorInterface* rgp_; 66 69 }; 67 70
Note:
See TracChangeset
for help on using the changeset viewer.