Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

EvtDalitzFlatPdf Class Reference

#include <EvtDalitzFlatPdf.hh>

Inheritance diagram for EvtDalitzFlatPdf:

EvtPdf< EvtDalitzPoint > List of all members.

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< EvtDalitzPointfindMax (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

Constructor & Destructor Documentation

EvtDalitzFlatPdf::EvtDalitzFlatPdf const EvtDalitzPlot dp  ) 
 

00015   : EvtPdf<EvtDalitzPoint>(), _dp(dp)
00016 {}

EvtDalitzFlatPdf::EvtDalitzFlatPdf const EvtDalitzFlatPdf other  ) 
 

00019   : EvtPdf<EvtDalitzPoint>(other), _dp(other._dp)
00020 {}

EvtDalitzFlatPdf::~EvtDalitzFlatPdf  )  [virtual]
 

00023 {}


Member Function Documentation

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 >.

00026 {
00027   return new EvtDalitzFlatPdf(*this);
00028 }

virtual EvtValError EvtPdf< EvtDalitzPoint >::compute_integral  )  const [inline, virtual, inherited]
 

Reimplemented in EvtPdfSum< EvtDalitzPoint >.

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 >.

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]
 

00065                                     { 
00066     if(p.isValid()) return pdf(p); 
00067     else return 0.;
00068   }

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]
 

00087                                   {
00088     if(!_itg.valueKnown()) _itg = compute_integral(N);
00089     return _itg;
00090   }

EvtValError EvtPdf< EvtDalitzPoint >::getItg  )  const [inline, inherited]
 

00083                              {
00084     if(!_itg.valueKnown()) _itg = compute_integral();
00085     return _itg;
00086   }

double EvtDalitzFlatPdf::pdf const EvtDalitzPoint  )  const [protected, virtual]
 

Implements EvtPdf< EvtDalitzPoint >.

00031 {
00032   return 1.;
00033 }

EvtDalitzPoint EvtDalitzFlatPdf::randomPoint  )  [virtual]
 

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 }

void EvtPdf< EvtDalitzPoint >::setItg EvtValError  itg  )  [inline, inherited]
 

00081 {_itg = itg; }


Member Data Documentation

EvtDalitzPlot EvtDalitzFlatPdf::_dp [protected]
 

EvtValError EvtPdf< EvtDalitzPoint >::_itg [mutable, protected, inherited]
 

Reimplemented in EvtPdfSum< EvtDalitzPoint >.


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:04:30 2011 for BOSS6.5.5 by  doxygen 1.3.9.1