00001 //-------------------------------------------------------------------------- 00002 // 00003 // Module: EepipiRandom.h 00004 // 00005 // Description: routines to unify random numbers using Bes random service 00006 // 00007 // Modification history: 00008 // 00009 // Ping RG Feb. 16, 2009 Module created 00010 // 00011 //------------------------------------------------------------------------ 00012 // 00013 00014 #include "../Eepipi/EepipiRandom.h" 00015 00016 #include "CLHEP/Random/RanluxEngine.h" 00017 #include <iostream> 00018 using namespace std; 00019 using namespace CLHEP; 00020 00021 HepRandomEngine* EepipiRandom::_randomEngine=0; 00022 00023 void EepipiRandom::setRandomEngine(CLHEP::HepRandomEngine* randomEngine){ 00024 _randomEngine=randomEngine; 00025 } 00026 00027 00028 double EepipiRandom::random(){ 00029 00030 if (_randomEngine==0){ 00031 cerr <<"No random engine available in " 00032 <<"EepipiRandom::random()."<<endl; 00033 } 00034 return _randomEngine->flat(); 00035 } 00036 00037 00038 00039 double EepipiRandom::Flat( double min, double max){ 00040 00041 if ( min > max ) { 00042 cerr<< "min>max in EepipiRandom::Flat(" << min << "," << max << ")" <<endl; 00043 } 00044 00045 return EepipiRandom::random()*( max - min )+min; 00046 00047 } 00048 00049 double EepipiRandom::Flat(double max){ 00050 00051 return max*EepipiRandom::random(); 00052 00053 } 00054 00055 double EepipiRandom::Flat(){ 00056 00057 return EepipiRandom::random(); 00058 00059 } 00060 00061 void EepipiRandom::FlatArray(double* vect, const int size){ 00062 if(_randomEngine == 0) cout<<"Can not get randomEngine pointer in EepipiRandom::FlatArray"<<endl; 00063 else _randomEngine->flatArray(size,vect); 00064 } 00065 00066 00067