00001 #ifndef FastSimulation_Utilities_LandauFluctuationGenerator_H 00002 #define FastSimulation_Utilities_LandauFluctuationGenerator_H 00003 00004 #include "FastSimulation/Utilities/interface/BaseNumericalRandomGenerator.h" 00005 00006 #include <cmath> 00007 00018 class RandomEngine; 00019 00020 class LandauFluctuationGenerator : public BaseNumericalRandomGenerator 00021 { 00022 public: 00023 00025 LandauFluctuationGenerator(const RandomEngine* engine) : 00026 BaseNumericalRandomGenerator(engine,-3.5,25.) { 00027 initialize(); 00028 } 00029 00031 virtual ~LandauFluctuationGenerator() {} 00032 00034 double landau() const { return generate(); } 00035 00037 virtual double function(double x) { return ersatzt(x); } 00038 00039 private: 00040 00042 double ersatzt(double x) { 00043 return std::exp(-0.5 * ( x + std::exp(-x) )) / std::sqrt (2. *M_PI); 00044 } 00045 }; 00046 #endif