ROOT logo
// @(#)root/mathmore:$Id: GSLRndmEngines.h 21553 2007-12-21 10:55:46Z moneta $
// Author: L. Moneta, A. Zsenei   08/2005 

 /**********************************************************************
  *                                                                    *
  * Copyright (c) 2004 ROOT Foundation,  CERN/PH-SFT                   *
  *                                                                    *
  * This library is free software; you can redistribute it and/or      *
  * modify it under the terms of the GNU General Public License        *
  * as published by the Free Software Foundation; either version 2     *
  * of the License, or (at your option) any later version.             *
  *                                                                    *
  * This library is distributed in the hope that it will be useful,    *
  * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   *
  * General Public License for more details.                           *
  *                                                                    *
  * You should have received a copy of the GNU General Public License  *
  * along with this library (see file COPYING); if not, write          *
  * to the Free Software Foundation, Inc., 59 Temple Place, Suite      *
  * 330, Boston, MA 02111-1307 USA, or contact the author.             *
  *                                                                    *
  **********************************************************************/

// Header file for class GSLRandom
// 
// Created by: moneta  at Sun Nov 21 16:26:03 2004
// 
// Last update: Sun Nov 21 16:26:03 2004
// 
#ifndef ROOT_Math_GSLRndmEngines
#define ROOT_Math_GSLRndmEngines

#include <string>
#include <vector>

namespace ROOT {
namespace Math {

  //struct GSLRngType; 
  //struct GSLRng; 
  //class  GSLRng; 
  //class GSLRngType;
  //typedef gsl_rng GSLRng; 
  //typedef gsl_rng_type GSLRngType; 
   class GSLRngWrapper; 

   //_________________________________________________________________
   /**
      GSLRandomEngine
      Base class for all GSL random engines, 
      normally user instantiate the derived classes
      which creates internally the generator.

      The main GSL generators (see 
      <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">
      here</A>) are available as derived classes 
      In addition to generate uniform numbers it provides method for 
      generating numbers according to pre-defined distributions 
      using the GSL functions from 
      <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distributions.html">
      GSL random number distributions</A>. 


       
      @ingroup Random
   */ 
   class GSLRandomEngine { 

   public: 

     /** 
         default constructor. No creation of rng is done. 
         If then Initialize() is called an engine is created 
         based on default GSL type (MT) 
     */
      GSLRandomEngine();  

      /** 
          create from an existing rng. 
          User manage the rng pointer which is then deleted olny by calling Terminate()
      */
      GSLRandomEngine( GSLRngWrapper * rng) : 
         fRng(rng) , 
         fCurTime(0)
      {}

      /**
         initialize the generator 
         If no rng is present the default one based on Mersenne and Twister is created 
       */
      void Initialize();

      /**
         delete pointer to contained rng 
       */
      void Terminate(); 

      /**
         no operation, rng is delete in Terminate()
      */
      virtual ~GSLRandomEngine() {}

      /**
         Generate a  random number between ]0,1]
         0 is excluded and 1 is included
      */
      double operator() () const;  

      /** 
          Generate an integer number between [0,max-1] (including 0 and max-1)
          if max is larger than available range of algorithm 
          an error message is printed and zero is returned
      */
      unsigned int RndmInt(unsigned int max) const; 

      /**
         Generate an array of random numbers. 
         The iterators points to the random numbers 
      */
      template<class Iterator> 
      void RandomArray(Iterator begin, Iterator end) const { 
         for ( Iterator itr = begin; itr != end; ++itr ) { 
            *itr = this->operator()(); 
         }
      }

      /**
         Generate an array of random numbers 
         The iterators points to the random numbers 
      */
      void RandomArray(double * begin, double * end) const;  

      /**
         return name of generator
      */ 
      std::string Name() const; 

      /**
         return the state size of generator 
      */ 
      unsigned int Size() const; 
    
      /** 
          set the random generator seed 
      */ 
      void SetSeed(unsigned int seed) const; 


      /** @name Random Distributions 
          Implemented using the  
          <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Distributions.html">
          GSL Random number Distributions</A>
      **/
      //@{
      /**
         Gaussian distribution - default method is Box-Muller (polar method)
      */
      double Gaussian(double sigma) const; 

      /**
         Gaussian distribution - Ziggurat method
      */
      double GaussianZig(double sigma) const;  

      /**
         Gaussian distribution - Ratio method
      */
      double GaussianRatio(double sigma) const; 
      /**
         Gaussian Tail distribution
      */
      double GaussianTail(double a, double sigma) const; 
  
      /**
         Bivariate Gaussian distribution with correlation
      */
      void Gaussian2D(double sigmaX, double sigmaY, double rho, double &x, double &y) const;
    
      /**
         Exponential distribution
      */
      double Exponential(double mu) const;

      /**
         Cauchy distribution
      */
      double Cauchy(double a) const; 

      /**
         Landau distribution
      */
      double Landau() const; 

      /**
         Gamma distribution
      */
      double Gamma(double a, double b) const;

      /**
         Log Normal distribution
      */
      double LogNormal(double zeta, double sigma) const;

      /**
         Chi square distribution
      */
      double ChiSquare(double nu) const;

      /**
         F distrbution
      */
      double FDist(double nu1, double nu2) const;
    
      /**
         t student distribution
      */
      double tDist(double nu) const;

      /**
         generate random numbers in a 2D circle of radious 1 
      */
      void Dir2D(double &x, double &y) const; 

      /**
         generate random numbers in a 3D sphere of radious 1 
      */
      void Dir3D(double &x, double &y, double &z) const; 
  
      /**
         Poisson distribution
      */
      unsigned int Poisson(double mu) const;

      /**
         Binomial distribution
      */
      unsigned int Binomial(double p, unsigned int n) const;

      /**
         Multinomial distribution
      */
      std::vector<unsigned int> Multinomial( unsigned int ntot, const std::vector<double> & p ) const; 

      //@}
  
      

   protected: 

   private: 

      GSLRngWrapper * fRng;               // pointer to GSL generator wrapper
      mutable unsigned int  fCurTime;      // current time used to seed the generator

   }; 
   
   //_____________________________________________________________________________________
   /**
      Mersenne-Twister generator
      gsl_rng_mt19937 from 
      <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      
      @ingroup Random
   */
   class GSLRngMT : public GSLRandomEngine { 
   public: 
      GSLRngMT(); 
   };

   //_____________________________________________________________________________________
   /**
      Ranlux generator (James, Luscher) (defaul luxury)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngRanLux : public GSLRandomEngine { 
   public: 
      GSLRngRanLux(); 
   };

   //_____________________________________________________________________________________
   /**
      Second generation of Ranlux generator (with  luxury level of 2)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngRanLux2 : public GSLRandomEngine { 
   public: 
      GSLRngRanLux2(); 
   };

   //_____________________________________________________________________________________
   /**
      48 bits version of Second generation of Ranlux generator (with  luxury level of 2)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngRanLux48 : public GSLRandomEngine { 
   public: 
      GSLRngRanLux48(); 
   };


   //_____________________________________________________________________________________
   /**
      Tausworthe generator by L'Ecuyer
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngTaus : public GSLRandomEngine { 
   public: 
      GSLRngTaus(); 
   };

   //_____________________________________________________________________________________
   /**
      Lagged Fibonacci generator by Ziff
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */
   class GSLRngGFSR4 : public GSLRandomEngine { 
   public: 
      GSLRngGFSR4(); 
   };

   //_____________________________________________________________________________________
   /**
      Combined multiple recursive  generator (L'Ecuyer)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */ 
   class GSLRngCMRG : public GSLRandomEngine { 
   public: 
      GSLRngCMRG(); 
   };

   //_____________________________________________________________________________________
   /**
      5-th order multiple recursive  generator (L'Ecuyer, Blouin and Coutre)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Random-number-generator-algorithms.html">here</A>

      @ingroup Random
   */ 
   class GSLRngMRG : public GSLRandomEngine { 
   public: 
      GSLRngMRG(); 
   };

   //_____________________________________________________________________________________
   /**
      BSD rand() generator  
      gsl_rmg_rand from 
      <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Unix-random-number-generators.html">here</A>
      
      @ingroup Random
   */
   class GSLRngRand : public GSLRandomEngine { 
   public: 
      GSLRngRand(); 
   };

   //_____________________________________________________________________________________
   /**
      RANMAR generator 
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Unix-random-number-generators.html">here</A>

      @ingroup Random
   */
   class GSLRngRanMar : public GSLRandomEngine { 
   public: 
      GSLRngRanMar(); 
   };

   //_____________________________________________________________________________________
   /**
      MINSTD generator (Park and Miller)
      see <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Unix-random-number-generators.html">here</A>

      @ingroup Random
   */
   class GSLRngMinStd : public GSLRandomEngine { 
   public: 
      GSLRngMinStd(); 
   };
  



} // namespace Math
} // namespace ROOT


#endif /* ROOT_Math_GSLRndmEngines */

 GSLRndmEngines.h:1
 GSLRndmEngines.h:2
 GSLRndmEngines.h:3
 GSLRndmEngines.h:4
 GSLRndmEngines.h:5
 GSLRndmEngines.h:6
 GSLRndmEngines.h:7
 GSLRndmEngines.h:8
 GSLRndmEngines.h:9
 GSLRndmEngines.h:10
 GSLRndmEngines.h:11
 GSLRndmEngines.h:12
 GSLRndmEngines.h:13
 GSLRndmEngines.h:14
 GSLRndmEngines.h:15
 GSLRndmEngines.h:16
 GSLRndmEngines.h:17
 GSLRndmEngines.h:18
 GSLRndmEngines.h:19
 GSLRndmEngines.h:20
 GSLRndmEngines.h:21
 GSLRndmEngines.h:22
 GSLRndmEngines.h:23
 GSLRndmEngines.h:24
 GSLRndmEngines.h:25
 GSLRndmEngines.h:26
 GSLRndmEngines.h:27
 GSLRndmEngines.h:28
 GSLRndmEngines.h:29
 GSLRndmEngines.h:30
 GSLRndmEngines.h:31
 GSLRndmEngines.h:32
 GSLRndmEngines.h:33
 GSLRndmEngines.h:34
 GSLRndmEngines.h:35
 GSLRndmEngines.h:36
 GSLRndmEngines.h:37
 GSLRndmEngines.h:38
 GSLRndmEngines.h:39
 GSLRndmEngines.h:40
 GSLRndmEngines.h:41
 GSLRndmEngines.h:42
 GSLRndmEngines.h:43
 GSLRndmEngines.h:44
 GSLRndmEngines.h:45
 GSLRndmEngines.h:46
 GSLRndmEngines.h:47
 GSLRndmEngines.h:48
 GSLRndmEngines.h:49
 GSLRndmEngines.h:50
 GSLRndmEngines.h:51
 GSLRndmEngines.h:52
 GSLRndmEngines.h:53
 GSLRndmEngines.h:54
 GSLRndmEngines.h:55
 GSLRndmEngines.h:56
 GSLRndmEngines.h:57
 GSLRndmEngines.h:58
 GSLRndmEngines.h:59
 GSLRndmEngines.h:60
 GSLRndmEngines.h:61
 GSLRndmEngines.h:62
 GSLRndmEngines.h:63
 GSLRndmEngines.h:64
 GSLRndmEngines.h:65
 GSLRndmEngines.h:66
 GSLRndmEngines.h:67
 GSLRndmEngines.h:68
 GSLRndmEngines.h:69
 GSLRndmEngines.h:70
 GSLRndmEngines.h:71
 GSLRndmEngines.h:72
 GSLRndmEngines.h:73
 GSLRndmEngines.h:74
 GSLRndmEngines.h:75
 GSLRndmEngines.h:76
 GSLRndmEngines.h:77
 GSLRndmEngines.h:78
 GSLRndmEngines.h:79
 GSLRndmEngines.h:80
 GSLRndmEngines.h:81
 GSLRndmEngines.h:82
 GSLRndmEngines.h:83
 GSLRndmEngines.h:84
 GSLRndmEngines.h:85
 GSLRndmEngines.h:86
 GSLRndmEngines.h:87
 GSLRndmEngines.h:88
 GSLRndmEngines.h:89
 GSLRndmEngines.h:90
 GSLRndmEngines.h:91
 GSLRndmEngines.h:92
 GSLRndmEngines.h:93
 GSLRndmEngines.h:94
 GSLRndmEngines.h:95
 GSLRndmEngines.h:96
 GSLRndmEngines.h:97
 GSLRndmEngines.h:98
 GSLRndmEngines.h:99
 GSLRndmEngines.h:100
 GSLRndmEngines.h:101
 GSLRndmEngines.h:102
 GSLRndmEngines.h:103
 GSLRndmEngines.h:104
 GSLRndmEngines.h:105
 GSLRndmEngines.h:106
 GSLRndmEngines.h:107
 GSLRndmEngines.h:108
 GSLRndmEngines.h:109
 GSLRndmEngines.h:110
 GSLRndmEngines.h:111
 GSLRndmEngines.h:112
 GSLRndmEngines.h:113
 GSLRndmEngines.h:114
 GSLRndmEngines.h:115
 GSLRndmEngines.h:116
 GSLRndmEngines.h:117
 GSLRndmEngines.h:118
 GSLRndmEngines.h:119
 GSLRndmEngines.h:120
 GSLRndmEngines.h:121
 GSLRndmEngines.h:122
 GSLRndmEngines.h:123
 GSLRndmEngines.h:124
 GSLRndmEngines.h:125
 GSLRndmEngines.h:126
 GSLRndmEngines.h:127
 GSLRndmEngines.h:128
 GSLRndmEngines.h:129
 GSLRndmEngines.h:130
 GSLRndmEngines.h:131
 GSLRndmEngines.h:132
 GSLRndmEngines.h:133
 GSLRndmEngines.h:134
 GSLRndmEngines.h:135
 GSLRndmEngines.h:136
 GSLRndmEngines.h:137
 GSLRndmEngines.h:138
 GSLRndmEngines.h:139
 GSLRndmEngines.h:140
 GSLRndmEngines.h:141
 GSLRndmEngines.h:142
 GSLRndmEngines.h:143
 GSLRndmEngines.h:144
 GSLRndmEngines.h:145
 GSLRndmEngines.h:146
 GSLRndmEngines.h:147
 GSLRndmEngines.h:148
 GSLRndmEngines.h:149
 GSLRndmEngines.h:150
 GSLRndmEngines.h:151
 GSLRndmEngines.h:152
 GSLRndmEngines.h:153
 GSLRndmEngines.h:154
 GSLRndmEngines.h:155
 GSLRndmEngines.h:156
 GSLRndmEngines.h:157
 GSLRndmEngines.h:158
 GSLRndmEngines.h:159
 GSLRndmEngines.h:160
 GSLRndmEngines.h:161
 GSLRndmEngines.h:162
 GSLRndmEngines.h:163
 GSLRndmEngines.h:164
 GSLRndmEngines.h:165
 GSLRndmEngines.h:166
 GSLRndmEngines.h:167
 GSLRndmEngines.h:168
 GSLRndmEngines.h:169
 GSLRndmEngines.h:170
 GSLRndmEngines.h:171
 GSLRndmEngines.h:172
 GSLRndmEngines.h:173
 GSLRndmEngines.h:174
 GSLRndmEngines.h:175
 GSLRndmEngines.h:176
 GSLRndmEngines.h:177
 GSLRndmEngines.h:178
 GSLRndmEngines.h:179
 GSLRndmEngines.h:180
 GSLRndmEngines.h:181
 GSLRndmEngines.h:182
 GSLRndmEngines.h:183
 GSLRndmEngines.h:184
 GSLRndmEngines.h:185
 GSLRndmEngines.h:186
 GSLRndmEngines.h:187
 GSLRndmEngines.h:188
 GSLRndmEngines.h:189
 GSLRndmEngines.h:190
 GSLRndmEngines.h:191
 GSLRndmEngines.h:192
 GSLRndmEngines.h:193
 GSLRndmEngines.h:194
 GSLRndmEngines.h:195
 GSLRndmEngines.h:196
 GSLRndmEngines.h:197
 GSLRndmEngines.h:198
 GSLRndmEngines.h:199
 GSLRndmEngines.h:200
 GSLRndmEngines.h:201
 GSLRndmEngines.h:202
 GSLRndmEngines.h:203
 GSLRndmEngines.h:204
 GSLRndmEngines.h:205
 GSLRndmEngines.h:206
 GSLRndmEngines.h:207
 GSLRndmEngines.h:208
 GSLRndmEngines.h:209
 GSLRndmEngines.h:210
 GSLRndmEngines.h:211
 GSLRndmEngines.h:212
 GSLRndmEngines.h:213
 GSLRndmEngines.h:214
 GSLRndmEngines.h:215
 GSLRndmEngines.h:216
 GSLRndmEngines.h:217
 GSLRndmEngines.h:218
 GSLRndmEngines.h:219
 GSLRndmEngines.h:220
 GSLRndmEngines.h:221
 GSLRndmEngines.h:222
 GSLRndmEngines.h:223
 GSLRndmEngines.h:224
 GSLRndmEngines.h:225
 GSLRndmEngines.h:226
 GSLRndmEngines.h:227
 GSLRndmEngines.h:228
 GSLRndmEngines.h:229
 GSLRndmEngines.h:230
 GSLRndmEngines.h:231
 GSLRndmEngines.h:232
 GSLRndmEngines.h:233
 GSLRndmEngines.h:234
 GSLRndmEngines.h:235
 GSLRndmEngines.h:236
 GSLRndmEngines.h:237
 GSLRndmEngines.h:238
 GSLRndmEngines.h:239
 GSLRndmEngines.h:240
 GSLRndmEngines.h:241
 GSLRndmEngines.h:242
 GSLRndmEngines.h:243
 GSLRndmEngines.h:244
 GSLRndmEngines.h:245
 GSLRndmEngines.h:246
 GSLRndmEngines.h:247
 GSLRndmEngines.h:248
 GSLRndmEngines.h:249
 GSLRndmEngines.h:250
 GSLRndmEngines.h:251
 GSLRndmEngines.h:252
 GSLRndmEngines.h:253
 GSLRndmEngines.h:254
 GSLRndmEngines.h:255
 GSLRndmEngines.h:256
 GSLRndmEngines.h:257
 GSLRndmEngines.h:258
 GSLRndmEngines.h:259
 GSLRndmEngines.h:260
 GSLRndmEngines.h:261
 GSLRndmEngines.h:262
 GSLRndmEngines.h:263
 GSLRndmEngines.h:264
 GSLRndmEngines.h:265
 GSLRndmEngines.h:266
 GSLRndmEngines.h:267
 GSLRndmEngines.h:268
 GSLRndmEngines.h:269
 GSLRndmEngines.h:270
 GSLRndmEngines.h:271
 GSLRndmEngines.h:272
 GSLRndmEngines.h:273
 GSLRndmEngines.h:274
 GSLRndmEngines.h:275
 GSLRndmEngines.h:276
 GSLRndmEngines.h:277
 GSLRndmEngines.h:278
 GSLRndmEngines.h:279
 GSLRndmEngines.h:280
 GSLRndmEngines.h:281
 GSLRndmEngines.h:282
 GSLRndmEngines.h:283
 GSLRndmEngines.h:284
 GSLRndmEngines.h:285
 GSLRndmEngines.h:286
 GSLRndmEngines.h:287
 GSLRndmEngines.h:288
 GSLRndmEngines.h:289
 GSLRndmEngines.h:290
 GSLRndmEngines.h:291
 GSLRndmEngines.h:292
 GSLRndmEngines.h:293
 GSLRndmEngines.h:294
 GSLRndmEngines.h:295
 GSLRndmEngines.h:296
 GSLRndmEngines.h:297
 GSLRndmEngines.h:298
 GSLRndmEngines.h:299
 GSLRndmEngines.h:300
 GSLRndmEngines.h:301
 GSLRndmEngines.h:302
 GSLRndmEngines.h:303
 GSLRndmEngines.h:304
 GSLRndmEngines.h:305
 GSLRndmEngines.h:306
 GSLRndmEngines.h:307
 GSLRndmEngines.h:308
 GSLRndmEngines.h:309
 GSLRndmEngines.h:310
 GSLRndmEngines.h:311
 GSLRndmEngines.h:312
 GSLRndmEngines.h:313
 GSLRndmEngines.h:314
 GSLRndmEngines.h:315
 GSLRndmEngines.h:316
 GSLRndmEngines.h:317
 GSLRndmEngines.h:318
 GSLRndmEngines.h:319
 GSLRndmEngines.h:320
 GSLRndmEngines.h:321
 GSLRndmEngines.h:322
 GSLRndmEngines.h:323
 GSLRndmEngines.h:324
 GSLRndmEngines.h:325
 GSLRndmEngines.h:326
 GSLRndmEngines.h:327
 GSLRndmEngines.h:328
 GSLRndmEngines.h:329
 GSLRndmEngines.h:330
 GSLRndmEngines.h:331
 GSLRndmEngines.h:332
 GSLRndmEngines.h:333
 GSLRndmEngines.h:334
 GSLRndmEngines.h:335
 GSLRndmEngines.h:336
 GSLRndmEngines.h:337
 GSLRndmEngines.h:338
 GSLRndmEngines.h:339
 GSLRndmEngines.h:340
 GSLRndmEngines.h:341
 GSLRndmEngines.h:342
 GSLRndmEngines.h:343
 GSLRndmEngines.h:344
 GSLRndmEngines.h:345
 GSLRndmEngines.h:346
 GSLRndmEngines.h:347
 GSLRndmEngines.h:348
 GSLRndmEngines.h:349
 GSLRndmEngines.h:350
 GSLRndmEngines.h:351
 GSLRndmEngines.h:352
 GSLRndmEngines.h:353
 GSLRndmEngines.h:354
 GSLRndmEngines.h:355
 GSLRndmEngines.h:356
 GSLRndmEngines.h:357
 GSLRndmEngines.h:358
 GSLRndmEngines.h:359
 GSLRndmEngines.h:360
 GSLRndmEngines.h:361
 GSLRndmEngines.h:362
 GSLRndmEngines.h:363
 GSLRndmEngines.h:364
 GSLRndmEngines.h:365
 GSLRndmEngines.h:366
 GSLRndmEngines.h:367
 GSLRndmEngines.h:368
 GSLRndmEngines.h:369
 GSLRndmEngines.h:370
 GSLRndmEngines.h:371
 GSLRndmEngines.h:372
 GSLRndmEngines.h:373
 GSLRndmEngines.h:374
 GSLRndmEngines.h:375
 GSLRndmEngines.h:376
 GSLRndmEngines.h:377
 GSLRndmEngines.h:378
 GSLRndmEngines.h:379
 GSLRndmEngines.h:380
 GSLRndmEngines.h:381
 GSLRndmEngines.h:382
 GSLRndmEngines.h:383
 GSLRndmEngines.h:384
 GSLRndmEngines.h:385
 GSLRndmEngines.h:386
 GSLRndmEngines.h:387
 GSLRndmEngines.h:388
 GSLRndmEngines.h:389
 GSLRndmEngines.h:390
 GSLRndmEngines.h:391
 GSLRndmEngines.h:392
 GSLRndmEngines.h:393
 GSLRndmEngines.h:394
 GSLRndmEngines.h:395
 GSLRndmEngines.h:396
 GSLRndmEngines.h:397
 GSLRndmEngines.h:398
 GSLRndmEngines.h:399
 GSLRndmEngines.h:400
 GSLRndmEngines.h:401
 GSLRndmEngines.h:402