BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDalitzResPdf Class Reference

#include <EvtDalitzResPdf.hh>

Inheritance diagram for EvtDalitzResPdf:

Public Member Functions

 EvtDalitzResPdf (const EvtDalitzPlot &dp, double m0, double g0, EvtCyclic3::Pair pairRes)
 EvtDalitzResPdf (const EvtDalitzResPdf &other)
virtual ~EvtDalitzResPdf ()
EvtPdf< EvtDalitzPoint > * clone () const
virtual EvtValError compute_integral (int N) const
virtual EvtDalitzPoint randomPoint ()
double pdfMaxValue () const
Public Member Functions inherited from EvtPdf< EvtDalitzPoint >
 EvtPdf ()
virtual ~EvtPdf ()
double evaluate (const EvtDalitzPoint &p) const
EvtPdfMax< EvtDalitzPointfindMax (const EvtPdf< EvtDalitzPoint > &pc, int N)
EvtValError findGenEff (const EvtPdf< EvtDalitzPoint > &pc, int N, int nFindMax)
void setItg (EvtValError itg)
EvtValError getItg () 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

Additional Inherited Members

Protected Attributes inherited from EvtPdf< EvtDalitzPoint >
EvtValError _itg

Detailed Description

Definition at line 31 of file EvtDalitzResPdf.hh.

Constructor & Destructor Documentation

◆ EvtDalitzResPdf() [1/2]

EvtDalitzResPdf::EvtDalitzResPdf ( const EvtDalitzPlot & dp,
double m0,
double g0,
EvtCyclic3::Pair pairRes )

Definition at line 21 of file EvtDalitzResPdf.cc.

23 : EvtPdf<EvtDalitzPoint>(), _dp( dp ), _m0( _m0 ), _g0( _g0 ), _pair( pair ) {}

Referenced by clone(), and EvtDalitzResPdf().

◆ EvtDalitzResPdf() [2/2]

EvtDalitzResPdf::EvtDalitzResPdf ( const EvtDalitzResPdf & other)

Definition at line 25 of file EvtDalitzResPdf.cc.

27 , _dp( other._dp )
28 , _m0( other._m0 )
29 , _g0( other._g0 )
30 , _pair( other._pair ) {}
Index other(Index i, Index j)

◆ ~EvtDalitzResPdf()

EvtDalitzResPdf::~EvtDalitzResPdf ( )
virtual

Definition at line 32 of file EvtDalitzResPdf.cc.

32{}

Member Function Documentation

◆ clone()

EvtPdf< EvtDalitzPoint > * EvtDalitzResPdf::clone ( ) const
inlinevirtual

Implements EvtPdf< EvtDalitzPoint >.

Definition at line 38 of file EvtDalitzResPdf.hh.

38{ return new EvtDalitzResPdf( *this ); }
EvtDalitzResPdf(const EvtDalitzPlot &dp, double m0, double g0, EvtCyclic3::Pair pairRes)

◆ compute_integral()

EvtValError EvtDalitzResPdf::compute_integral ( int N) const
virtual

Definition at line 34 of file EvtDalitzResPdf.cc.

34 {
35 assert( N != 0 );
36
37 EvtCyclic3::Pair i = _pair;
39
40 // Trapezoidal integral
41
42 double dh = ( _dp.qAbsMax( j ) - _dp.qAbsMin( j ) ) / ( (double)N );
43 double sum = 0;
44
45 int ii;
46 for ( ii = 1; ii < N; ii++ )
47 {
48
49 double x = _dp.qAbsMin( j ) + ii * dh;
50 double min = ( _dp.qMin( i, j, x ) - _m0 * _m0 ) / _m0 / _g0;
51 double max = ( _dp.qMax( i, j, x ) - _m0 * _m0 ) / _m0 / _g0;
52 double itg = 1 / EvtConst::pi * ( atan( max ) - atan( min ) );
53 sum += itg;
54 }
55 EvtValError ret( sum * dh, 0. );
56
57 return ret;
58}
Double_t x[10]
#define min(a, b)
#define max(a, b)
static const double pi
Definition EvtConst.hh:27
Index next(Index i)

◆ pdf()

double EvtDalitzResPdf::pdf ( const EvtDalitzPoint & x) const
protectedvirtual

Implements EvtPdf< EvtDalitzPoint >.

Definition at line 88 of file EvtDalitzResPdf.cc.

88 {
89 EvtCyclic3::Pair i = _pair;
90 double dq = x.q( i ) - _m0 * _m0;
91 return 1 / EvtConst::pi * _g0 * _m0 / ( dq * dq + _g0 * _g0 * _m0 * _m0 );
92}

◆ pdfMaxValue()

double EvtDalitzResPdf::pdfMaxValue ( ) const

Definition at line 94 of file EvtDalitzResPdf.cc.

94{ return 1 / ( EvtConst::pi * _g0 * _m0 ); }

◆ randomPoint()

EvtDalitzPoint EvtDalitzResPdf::randomPoint ( )
virtual

Reimplemented from EvtPdf< EvtDalitzPoint >.

Definition at line 60 of file EvtDalitzResPdf.cc.

60 {
61 // Random point generation must be done in a box encompassing the
62 // Dalitz plot
63
64 EvtCyclic3::Pair i = _pair;
66 double min = 1 / EvtConst::pi * atan( ( _dp.qAbsMin( i ) - _m0 * _m0 ) / _m0 / _g0 );
67 double max = 1 / EvtConst::pi * atan( ( _dp.qAbsMax( i ) - _m0 * _m0 ) / _m0 / _g0 );
68
69 int n = 0;
70 while ( n++ < 1000 )
71 {
72
73 double qj = EvtRandom::Flat( _dp.qAbsMin( j ), _dp.qAbsMax( j ) );
74 double r = EvtRandom::Flat( min, max );
75 double qi = tan( EvtConst::pi * r ) * _g0 * _m0 + _m0 * _m0;
76 EvtDalitzCoord x( i, qi, j, qj );
77 EvtDalitzPoint ret( _dp, x );
78 if ( ret.isValid() ) return ret;
79 }
80
81 // All generated points turned out to be outside of the Dalitz plot
82 // (in the outer box)
83
84 printf( "No point generated for dalitz plot after 1000 tries\n" );
85 abort();
86}
const Int_t n
static double Flat()
Definition EvtRandom.cc:69

The documentation for this class was generated from the following files: