#include <EvtBreitWignerPdf.hh>
Inheritance diagram for EvtBreitWignerPdf:
Public Member Functions | |
EvtPredGen< EvtPdfGen< EvtPoint1D >, EvtPdfPred< EvtPoint1D > > | accRejGen (const EvtPdf< EvtPoint1D > &pc, int nMax, double factor=1.) |
EvtPdf< EvtPoint1D > * | clone () const |
virtual EvtValError | compute_integral (int N) const |
virtual EvtValError | compute_integral () const |
EvtValError | compute_mc_integral (const EvtPdf< EvtPoint1D > &pc, int N) |
double | evaluate (const EvtPoint1D &p) const |
EvtBreitWignerPdf (const EvtBreitWignerPdf &other) | |
EvtBreitWignerPdf (double min, double max, double m0, double g0) | |
EvtValError | findGenEff (const EvtPdf< EvtPoint1D > &pc, int N, int nFindMax) |
EvtPdfMax< EvtPoint1D > | findMax (const EvtPdf< EvtPoint1D > &pc, int N) |
double | g0 () const |
EvtValError | getItg (int N) const |
EvtValError | getItg () const |
double | m0 () const |
double | pdf (const EvtPoint1D &x) const |
double | pdfIntegral (double m) const |
double | pdfIntegralInverse (double x) const |
virtual EvtPoint1D | randomPoint () |
void | setItg (EvtValError itg) |
virtual | ~EvtBreitWignerPdf () |
Protected Attributes | |
EvtValError | _itg |
double | _max |
double | _min |
Private Attributes | |
double | _g0 |
double | _m0 |
|
00022 : EvtIntegPdf1D(min,max), _m0(m0), _g0(g0) 00023 {}
|
|
|
|
00032 {}
|
|
|
|
Implements EvtPdf< EvtPoint1D >. 00027 { 00028 return new EvtBreitWignerPdf(*this); 00029 }
|
|
00095 { return compute_integral(); }
|
|
Reimplemented from EvtPdf< EvtPoint1D >. 00030 { 00031 double x1 = pdfIntegral(_min); 00032 double x2 = pdfIntegral(_max); 00033 return EvtValError(x2-x1,0.); 00034 }
|
|
|
|
|
|
|
|
|
|
00037 { return _g0; }
|
|
00087 { 00088 if(!_itg.valueKnown()) _itg = compute_integral(N); 00089 return _itg; 00090 }
|
|
00083 { 00084 if(!_itg.valueKnown()) _itg = compute_integral(); 00085 return _itg; 00086 }
|
|
00036 { return _m0; }
|
|
Implements EvtPdf< EvtPoint1D >. 00036 { 00037 double m = x.value(); 00038 if((0 == (m - _m0)) && (0. == _g0)) { 00039 00040 printf("Delta function Breit-Wigner\n"); 00041 assert(0); 00042 } 00043 00044 double ret = _g0/EvtConst::twoPi/((m-_m0)*(m-_m0)+_g0*_g0/4); 00045 00046 return ret; 00047 }
|
|
Implements EvtIntegPdf1D. 00051 { 00052 double itg = 0; 00053 if(_g0 == 0) { 00054 00055 if(m > _m0) itg = 1.; 00056 else 00057 if(m < _m0) itg = 0.; 00058 else 00059 itg = 0.5; 00060 } 00061 else itg = atan((m-_m0)/(_g0/2.))/EvtConst::pi + 0.5; 00062 00063 return itg; 00064 }
|
|
Implements EvtIntegPdf1D. 00068 { 00069 if(x < 0 || x > 1) { 00070 00071 printf("Invalid integral value %f\n",x); 00072 assert(0); 00073 } 00074 00075 double m = _m0; 00076 if(_g0 != 0) m = _m0 + (_g0/2.)*tan(EvtConst::pi*(x-0.5)); 00077 00078 return m; 00079 }
|
|
Reimplemented from EvtPdf< EvtPoint1D >. 00038 { 00039 double itgmin = pdfIntegral(_min); 00040 double itgmax = pdfIntegral(_max); 00041 double itgrnd = EvtRandom::Flat(itgmin,itgmax); 00042 00043 return EvtPoint1D(_min,_max,pdfIntegralInverse(itgrnd)); 00044 }
|
|
00081 {_itg = itg; }
|
|
|
|
|
|
|
|
|
|
|