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 }