Go to the documentation of this file.00001 #ifndef GammaNumericalGenerator_H
00002 #define GammaNumericalGenerator_H
00003 #include "FastSimulation/Utilities/interface/BaseNumericalRandomGenerator.h"
00004
00005 #include <cmath>
00010 class RandomEngine;
00011
00012 class GammaNumericalGenerator : public BaseNumericalRandomGenerator
00013 {
00014 public:
00015
00017 GammaNumericalGenerator(const RandomEngine* engine,
00018 double a=0,double b=0,double x1=0,double x2=0) :
00019 BaseNumericalRandomGenerator(engine,x1,x2,1000),
00020 a_(a),b_(b),valid(false) {
00021
00022 if(a>0&&b>0)
00023 {
00024 valid=true;
00025 initialize();
00026 }
00027 }
00028
00030 virtual ~GammaNumericalGenerator() {}
00031
00033 double gamma() const { return generate(); }
00034
00035 double gamma_exp() const {return generateExp();}
00036
00037 double gamma_lin() const {return generateLin();}
00038
00040 virtual double function(double x) { return ersatzt(x); }
00041
00042 inline bool isValid() const {return valid;}
00043
00044 private:
00045
00047 double ersatzt(double x) {
00048 double bt=b_*x;
00049 return b_*pow(bt,a_-1)*exp(-bt);
00050 }
00051
00052
00053 double a_,b_;
00054 bool valid;
00055 };
00056
00057 #endif