Skip to content
Snippets Groups Projects
Commit 0c706471 authored by Julian Pychy's avatar Julian Pychy
Browse files

generator: switched to Mersenne twister RNG

parent c85a5a8f
No related branches found
No related tags found
No related merge requests found
//************************************************************************//
// //
// Copyright 2014 Bertram Kopf (bertram@ep1.rub.de) //
// Julian Pychy (julian@ep1.rub.de) //
// - Ruhr-Universität Bochum //
// //
// This file is part of Pawian. //
// //
// Pawian 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 3 of the License, or //
// (at your option) any later version. //
// //
// Pawian 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 Pawian. If not, see <http://www.gnu.org/licenses/>. //
// //
//************************************************************************//
// Copyright 2014 Julian Pychy
#include <stdio.h>
#include <math.h>
#include <iostream>
#include "PspGen/EvtMTRandomEngine.hh"
double EvtMTRandomEngine::random(){
return _variateGenerator();
}
EvtMTRandomEngine::EvtMTRandomEngine() :
_seed(1),
_engine(_seed),
_variateGenerator(_engine, boost::random::uniform_real_distribution<>(0.,1.))
{
}
EvtMTRandomEngine::EvtMTRandomEngine(unsigned long int seed) :
_seed(seed),
_engine(_seed),
_variateGenerator(_engine, boost::random::uniform_real_distribution<>(0.,1.))
{
}
void EvtMTRandomEngine::reset(){
_variateGenerator.engine().seed(_seed);
_variateGenerator.distribution().reset();
}
//************************************************************************//
// //
// Copyright 2014 Bertram Kopf (bertram@ep1.rub.de) //
// Julian Pychy (julian@ep1.rub.de) //
// - Ruhr-Universität Bochum //
// //
// This file is part of Pawian. //
// //
// Pawian 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 3 of the License, or //
// (at your option) any later version. //
// //
// Pawian 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 Pawian. If not, see <http://www.gnu.org/licenses/>. //
// //
//************************************************************************//
// EvtMTRandomEngine class definition file. -*- C++ -*-
// Copyright 2014 Julian Pychy
#pragma once
#include "PspGen/EvtRandomEngine.hh"
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_real_distribution.hpp>
#include <boost/random/variate_generator.hpp>
#include <boost/random/normal_distribution.hpp>
class EvtMTRandomEngine : public EvtRandomEngine {
public:
EvtMTRandomEngine();
EvtMTRandomEngine(unsigned long int seed);
virtual void reset();
virtual double random();
private:
unsigned long int _seed;
boost::random::mt19937 _engine;
boost::variate_generator<boost::random::mt19937&, boost::random::uniform_real_distribution<> > _variateGenerator;
};
......@@ -43,8 +43,7 @@
#include "PspGen/EvtGenKine.hh"
#include "PspGen/EvtRandom.hh"
#include "PspGen/EvtRandomEngine.hh"
#include "PspGen/EvtSimpleRandomEngine.hh"
#include "PspGen/EvtMTRandomEngine.hh"
#include "PspGen/EvtVector4R.hh"
#include "Event/Event.hh"
......@@ -119,7 +118,7 @@ void PwaGen::generate(std::shared_ptr<AbsLh> theLh, fitParams& theFitParams){
counterFsp++;
}
EvtSimpleRandomEngine myRandom(GlobalEnv::instance()->parser()->randomSeed());
EvtMTRandomEngine myRandom(GlobalEnv::instance()->parser()->randomSeed());
EvtRandom::setRandomEngine(&myRandom);
bool generateEvents=true;
int noOfAcceptedEvts=0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment