00001 #include "Ekhara/EkharaRandom.h" 00002 #include "Ekhara/cfortran.h" 00003 00004 #include "CLHEP/Random/RanluxEngine.h" 00005 #include <iostream> 00006 using namespace std; 00007 using namespace CLHEP; 00008 00009 HepRandomEngine* EkharaRandom::_randomEngine=0; 00010 00011 void EkharaRandom::setRandomEngine(CLHEP::HepRandomEngine* randomEngine){ 00012 _randomEngine=randomEngine; 00013 } 00014 00015 00016 double EkharaRandom::random(){ 00017 00018 if (_randomEngine==0){ 00019 cerr <<"No random engine available in " 00020 <<"EkharaRandom::random()."<<endl; 00021 } 00022 00023 return _randomEngine->flat(); 00024 } 00025 00026 00027 00028 double EkharaRandom::Flat( double min, double max){ 00029 00030 if ( min > max ) { 00031 cerr<< "min>max in EkharaRandom::Flat(" << min << "," << max << ")" <<endl; 00032 } 00033 00034 return EkharaRandom::random()*( max - min )+min; 00035 00036 } 00037 00038 double EkharaRandom::Flat(double max){ 00039 00040 return max*EkharaRandom::random(); 00041 00042 } 00043 00044 double EkharaRandom::Flat(){ 00045 00046 return EkharaRandom::random(); 00047 00048 } 00049 00050 void EkharaRandom::FlatArray(double* vect, const int size){ 00051 if(_randomEngine == 0) 00052 cout<<"Can not get randomEngine pointer in EkharaRandom::FlatArray"<<endl; 00053 else { 00054 _randomEngine->flatArray(size,vect); 00055 } 00056 } 00057 00058 FCALLSCSUB2(EkharaRandom::FlatArray,RANLXDF,ranlxdf,DOUBLEV,INT)