Geant4 Cross Reference |
1 // -*- C++ -*- 2 // 3 // ----------------------------------------------------------------------- 4 // HEP Random 5 // --- RandExponential --- 6 // inlined functions implementation file 7 // ----------------------------------------------------------------------- 8 // This file is part of Geant4 (simulation toolkit for HEP). 9 10 // ======================================================================= 11 // Gabriele Cosmo - Created: 19th August 1998 12 // ======================================================================= 13 14 #include <cmath> // for log() 15 16 namespace CLHEP { 17 18 inline RandExponential::RandExponential(HepRandomEngine & anEngine, 19 double mean ) 20 : HepRandom(), localEngine(&anEngine, do_nothing_deleter()), defaultMean(mean) {} 21 22 inline RandExponential::RandExponential(HepRandomEngine * anEngine, 23 double mean ) 24 : HepRandom(), localEngine(anEngine), defaultMean(mean) {} 25 26 //------------- 27 28 inline double RandExponential::shoot(HepRandomEngine* anEngine) { 29 return -std::log(anEngine->flat()); 30 } 31 32 inline double RandExponential::shoot(HepRandomEngine* anEngine, 33 double mean) { 34 return -std::log(anEngine->flat())*mean; 35 } 36 37 //------------- 38 39 inline double RandExponential::fire() { 40 return -std::log(localEngine->flat())*defaultMean; 41 } 42 43 inline double RandExponential::fire(double mean) { 44 return -std::log(localEngine->flat())*mean; 45 } 46 47 } // namespace CLHEP 48