00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <cmath>
00016
00017 namespace CLHEP {
00018
00019 inline RandExponential::RandExponential(HepRandomEngine & anEngine,
00020 double mean )
00021 : HepRandom(), localEngine(&anEngine, do_nothing_deleter()), defaultMean(mean) {}
00022
00023 inline RandExponential::RandExponential(HepRandomEngine * anEngine,
00024 double mean )
00025 : HepRandom(), localEngine(anEngine), defaultMean(mean) {}
00026
00027
00028
00029 inline double RandExponential::shoot(HepRandomEngine* anEngine) {
00030 return -std::log(anEngine->flat());
00031 }
00032
00033 inline double RandExponential::shoot(HepRandomEngine* anEngine,
00034 double mean) {
00035 return -std::log(anEngine->flat())*mean;
00036 }
00037
00038
00039
00040 inline double RandExponential::fire() {
00041 return -std::log(localEngine->flat())*defaultMean;
00042 }
00043
00044 inline double RandExponential::fire(double mean) {
00045 return -std::log(localEngine->flat())*mean;
00046 }
00047
00048 }