#include <EvtDalitzFlatPdf.hh>
Inheritance diagram for EvtDalitzFlatPdf:
Public Member Functions | |
EvtDalitzFlatPdf (const EvtDalitzPlot &dp) | |
EvtDalitzFlatPdf (const EvtDalitzFlatPdf &other) | |
virtual | ~EvtDalitzFlatPdf () |
virtual EvtPdf< EvtDalitzPoint > * | clone () const |
virtual EvtValError | compute_integral (int N) const |
virtual EvtDalitzPoint | randomPoint () |
double | evaluate (const EvtDalitzPoint &p) const |
EvtPdfMax< EvtDalitzPoint > | findMax (const EvtPdf< EvtDalitzPoint > &pc, int N) |
EvtValError | findGenEff (const EvtPdf< EvtDalitzPoint > &pc, int N, int nFindMax) |
void | setItg (EvtValError itg) |
EvtValError | getItg () const |
EvtValError | getItg (int N) const |
virtual EvtValError | compute_integral () const |
EvtValError | compute_mc_integral (const EvtPdf< EvtDalitzPoint > &pc, int N) |
EvtPredGen< EvtPdfGen< EvtDalitzPoint >, EvtPdfPred< EvtDalitzPoint > > | accRejGen (const EvtPdf< EvtDalitzPoint > &pc, int nMax, double factor=1.) |
Protected Member Functions | |
virtual double | pdf (const EvtDalitzPoint &) const |
Protected Attributes | |
EvtDalitzPlot | _dp |
EvtValError | _itg |
Definition at line 22 of file EvtDalitzFlatPdf.hh.
EvtDalitzFlatPdf::EvtDalitzFlatPdf | ( | const EvtDalitzPlot & | dp | ) |
Definition at line 14 of file EvtDalitzFlatPdf.cc.
Referenced by clone().
00015 : EvtPdf<EvtDalitzPoint>(), _dp(dp) 00016 {}
EvtDalitzFlatPdf::EvtDalitzFlatPdf | ( | const EvtDalitzFlatPdf & | other | ) |
Definition at line 18 of file EvtDalitzFlatPdf.cc.
00019 : EvtPdf<EvtDalitzPoint>(other), _dp(other._dp) 00020 {}
EvtDalitzFlatPdf::~EvtDalitzFlatPdf | ( | ) | [virtual] |
EvtPredGen<EvtPdfGen<EvtDalitzPoint >,EvtPdfPred<EvtDalitzPoint > > EvtPdf< EvtDalitzPoint >::accRejGen | ( | const EvtPdf< EvtDalitzPoint > & | pc, | |
int | nMax, | |||
double | factor = 1. | |||
) | [inherited] |
EvtPdf< EvtDalitzPoint > * EvtDalitzFlatPdf::clone | ( | ) | const [virtual] |
Implements EvtPdf< EvtDalitzPoint >.
Definition at line 25 of file EvtDalitzFlatPdf.cc.
References EvtDalitzFlatPdf().
00026 { 00027 return new EvtDalitzFlatPdf(*this); 00028 }
virtual EvtValError EvtPdf< EvtDalitzPoint >::compute_integral | ( | ) | const [inline, virtual, inherited] |
Reimplemented in EvtPdfSum< EvtDalitzPoint >.
Definition at line 92 of file EvtPdf.hh.
00094 { printf("Analytic integration of PDF is not defined\n"); assert(0); return compute_integral();}
EvtValError EvtDalitzFlatPdf::compute_integral | ( | int | N | ) | const [virtual] |
Reimplemented from EvtPdf< EvtDalitzPoint >.
Definition at line 35 of file EvtDalitzFlatPdf.cc.
References _dp, and EvtDalitzPlot::getArea().
00036 { 00037 return EvtValError(_dp.getArea(N),0.); 00038 }
EvtValError EvtPdf< EvtDalitzPoint >::compute_mc_integral | ( | const EvtPdf< EvtDalitzPoint > & | pc, | |
int | N | |||
) | [inherited] |
double EvtPdf< EvtDalitzPoint >::evaluate | ( | const EvtDalitzPoint & | p | ) | const [inline, inherited] |
EvtValError EvtPdf< EvtDalitzPoint >::findGenEff | ( | const EvtPdf< EvtDalitzPoint > & | pc, | |
int | N, | |||
int | nFindMax | |||
) | [inherited] |
EvtPdfMax<EvtDalitzPoint > EvtPdf< EvtDalitzPoint >::findMax | ( | const EvtPdf< EvtDalitzPoint > & | pc, | |
int | N | |||
) | [inherited] |
EvtValError EvtPdf< EvtDalitzPoint >::getItg | ( | int | N | ) | const [inline, inherited] |
Definition at line 87 of file EvtPdf.hh.
00087 { 00088 if(!_itg.valueKnown()) _itg = compute_integral(N); 00089 return _itg; 00090 }
EvtValError EvtPdf< EvtDalitzPoint >::getItg | ( | ) | const [inline, inherited] |
Definition at line 83 of file EvtPdf.hh.
00083 { 00084 if(!_itg.valueKnown()) _itg = compute_integral(); 00085 return _itg; 00086 }
double EvtDalitzFlatPdf::pdf | ( | const EvtDalitzPoint & | ) | const [protected, virtual] |
EvtDalitzPoint EvtDalitzFlatPdf::randomPoint | ( | ) | [virtual] |
Reimplemented from EvtPdf< EvtDalitzPoint >.
Definition at line 40 of file EvtDalitzFlatPdf.cc.
References _dp, EvtCyclic3::BC, EvtCyclic3::CA, EvtRandom::Flat(), EvtDalitzPlot::qAbsMax(), EvtDalitzPlot::qAbsMin(), and x.
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 }
void EvtPdf< EvtDalitzPoint >::setItg | ( | EvtValError | itg | ) | [inline, inherited] |
EvtDalitzPlot EvtDalitzFlatPdf::_dp [protected] |
Definition at line 37 of file EvtDalitzFlatPdf.hh.
Referenced by compute_integral(), and randomPoint().
EvtValError EvtPdf< EvtDalitzPoint >::_itg [mutable, protected, inherited] |