#include <EvtDalitzFlatPdf.hh>
Inheritance diagram for EvtDalitzFlatPdf:
Public Member Functions | |
EvtPredGen< EvtPdfGen< EvtDalitzPoint >, EvtPdfPred< EvtDalitzPoint > > | accRejGen (const EvtPdf< EvtDalitzPoint > &pc, int nMax, double factor=1.) |
virtual EvtPdf< EvtDalitzPoint > * | clone () const |
virtual EvtValError | compute_integral () const |
virtual EvtValError | compute_integral (int N) const |
EvtValError | compute_mc_integral (const EvtPdf< EvtDalitzPoint > &pc, int N) |
double | evaluate (const EvtDalitzPoint &p) const |
EvtDalitzFlatPdf (const EvtDalitzFlatPdf &other) | |
EvtDalitzFlatPdf (const EvtDalitzPlot &dp) | |
EvtValError | findGenEff (const EvtPdf< EvtDalitzPoint > &pc, int N, int nFindMax) |
EvtPdfMax< EvtDalitzPoint > | findMax (const EvtPdf< EvtDalitzPoint > &pc, int N) |
EvtValError | getItg (int N) const |
EvtValError | getItg () const |
virtual EvtDalitzPoint | randomPoint () |
void | setItg (EvtValError itg) |
virtual | ~EvtDalitzFlatPdf () |
Protected Member Functions | |
virtual double | pdf (const EvtDalitzPoint &) const |
Protected Attributes | |
EvtDalitzPlot | _dp |
EvtValError | _itg |
|
00015 : EvtPdf<EvtDalitzPoint>(), _dp(dp) 00016 {}
|
|
00019 : EvtPdf<EvtDalitzPoint>(other), _dp(other._dp) 00020 {}
|
|
00023 {}
|
|
|
|
Implements EvtPdf< EvtDalitzPoint >. 00026 { 00027 return new EvtDalitzFlatPdf(*this); 00028 }
|
|
Reimplemented in EvtPdfSum< EvtDalitzPoint >. 00094 { printf("Analytic integration of PDF is not defined\n"); assert(0); return compute_integral();}
|
|
Reimplemented from EvtPdf< EvtDalitzPoint >. 00036 { 00037 return EvtValError(_dp.getArea(N),0.); 00038 }
|
|
|
|
|
|
|
|
|
|
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 }
|
|
Implements EvtPdf< EvtDalitzPoint >. 00031 {
00032 return 1.;
00033 }
|
|
Reimplemented from EvtPdf< EvtDalitzPoint >. 00041 { 00042 // To obtain a uniform distribution generate 00043 // in terms of q's. Generate in a box that circumscribes the 00044 // Dalitz plot. Accept points inside. If there are two 00045 // many unsuccessful attempts it's a hint that the Dalitz plot 00046 // area is tiny compared to the box. It's a pathological 00047 // case. Abort. 00048 00049 EvtCyclic3::Pair pair1 = EvtCyclic3::BC; 00050 EvtCyclic3::Pair pair2 = EvtCyclic3::CA; 00051 00052 int n = 0; 00053 int maxTries = 1000; 00054 while(n++ < maxTries) { 00055 00056 double q1 = EvtRandom::Flat(_dp.qAbsMin(pair1),_dp.qAbsMax(pair2)); 00057 double q2 = EvtRandom::Flat(_dp.qAbsMin(pair2),_dp.qAbsMax(pair2)); 00058 00059 EvtDalitzCoord point(pair1,q1,pair2,q2); 00060 EvtDalitzPoint x(_dp,point); 00061 00062 if(x.isValid()) return x; 00063 } 00064 00065 printf("No point generated for dalitz plot after %d tries\n",maxTries); 00066 assert(0); 00067 }
|
|
00081 {_itg = itg; }
|
|
|
|
Reimplemented in EvtPdfSum< EvtDalitzPoint >. |