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