/*
 * MTRandomEngine.hh
 *
 *  Created on: Aug 18, 2009
 *      Author: mertens
 */

#ifndef PNDMTRANDOMENGINE_HH_
#define PNDMTRANDOMENGINE_HH_

#include "EvtGenBase/EvtRandomEngine.hh"

#include <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_real.hpp>
#include <boost/random/variate_generator.hpp>

class PndMTRandomEngine : EvtRandomEngine
{
public:
	PndMTRandomEngine(const unsigned long int& seed, const double& min = 0., const double& max = 1.);
	virtual void seed(const unsigned long int& seed);
	virtual double random();

private:
	PndMTRandomEngine(): fEngine(), fRealDist(0., 1.), fBoostRealDist(fEngine, fRealDist){};
	boost::mt19937 fEngine;
	boost::uniform_real<> fRealDist;
	boost::variate_generator<boost::mt19937&, boost::uniform_real<> > fBoostRealDist;

};

#endif /* PNDMTRANDOMENGINE_HH_ */
