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

#include <EvtBreitWignerPdf.hh>

Inheritance diagram for EvtBreitWignerPdf:

Public Member Functions

 EvtBreitWignerPdf (double min, double max, double m0, double g0)
 EvtBreitWignerPdf (const EvtBreitWignerPdf &other)
virtual ~EvtBreitWignerPdf ()
double pdf (const EvtPoint1D &x) const
EvtPdf< EvtPoint1D > * clone () const
double pdfIntegral (double m) const
double pdfIntegralInverse (double x) const
double m0 () const
double g0 () const
Public Member Functions inherited from EvtIntegPdf1D
 EvtIntegPdf1D (double min, double max)
 EvtIntegPdf1D (const EvtIntegPdf1D &)
virtual ~EvtIntegPdf1D ()
virtual EvtValError compute_integral () const
virtual EvtPoint1D randomPoint ()
Public Member Functions inherited from EvtPdf< EvtPoint1D >
 EvtPdf ()
virtual ~EvtPdf ()
double evaluate (const EvtPoint1D &p) const
EvtPdfMax< EvtPoint1DfindMax (const EvtPdf< EvtPoint1D > &pc, int N)
EvtValError findGenEff (const EvtPdf< EvtPoint1D > &pc, int N, int nFindMax)
void setItg (EvtValError itg)
EvtValError getItg () const
EvtValError compute_mc_integral (const EvtPdf< EvtPoint1D > &pc, int N)
EvtPredGen< EvtPdfGen< EvtPoint1D >, EvtPdfPred< EvtPoint1D > > accRejGen (const EvtPdf< EvtPoint1D > &pc, int nMax, double factor=1.)

Additional Inherited Members

Protected Attributes inherited from EvtIntegPdf1D
double _min
double _max
Protected Attributes inherited from EvtPdf< EvtPoint1D >
EvtValError _itg

Detailed Description

Definition at line 17 of file EvtBreitWignerPdf.hh.

Constructor & Destructor Documentation

◆ EvtBreitWignerPdf() [1/2]

EvtBreitWignerPdf::EvtBreitWignerPdf ( double min,
double max,
double m0,
double g0 )

Definition at line 21 of file EvtBreitWignerPdf.cc.

22 : EvtIntegPdf1D( min, max ), _m0( m0 ), _g0( g0 ) {}
#define min(a, b)
#define max(a, b)
EvtIntegPdf1D(double min, double max)

Referenced by clone(), and EvtBreitWignerPdf().

◆ EvtBreitWignerPdf() [2/2]

EvtBreitWignerPdf::EvtBreitWignerPdf ( const EvtBreitWignerPdf & other)

Definition at line 24 of file EvtBreitWignerPdf.cc.

25 : EvtIntegPdf1D( other ), _m0( other._m0 ), _g0( other._g0 ) {}
Index other(Index i, Index j)

◆ ~EvtBreitWignerPdf()

EvtBreitWignerPdf::~EvtBreitWignerPdf ( )
virtual

Definition at line 27 of file EvtBreitWignerPdf.cc.

27{}

Member Function Documentation

◆ clone()

EvtPdf< EvtPoint1D > * EvtBreitWignerPdf::clone ( ) const
inlinevirtual

Implements EvtPdf< EvtPoint1D >.

Definition at line 25 of file EvtBreitWignerPdf.hh.

25{ return new EvtBreitWignerPdf( *this ); }
EvtBreitWignerPdf(double min, double max, double m0, double g0)

◆ g0()

double EvtBreitWignerPdf::g0 ( ) const
inline

Definition at line 33 of file EvtBreitWignerPdf.hh.

33{ return _g0; }

Referenced by EvtBreitWignerPdf().

◆ m0()

double EvtBreitWignerPdf::m0 ( ) const
inline

Definition at line 32 of file EvtBreitWignerPdf.hh.

32{ return _m0; }

Referenced by EvtBreitWignerPdf().

◆ pdf()

double EvtBreitWignerPdf::pdf ( const EvtPoint1D & x) const
virtual

Implements EvtPdf< EvtPoint1D >.

Definition at line 29 of file EvtBreitWignerPdf.cc.

29 {
30 double m = x.value();
31 if ( ( 0 == ( m - _m0 ) ) && ( 0. == _g0 ) )
32 {
33
34 printf( "Delta function Breit-Wigner\n" );
35 assert( 0 );
36 }
37
38 double ret = _g0 / EvtConst::twoPi / ( ( m - _m0 ) * ( m - _m0 ) + _g0 * _g0 / 4 );
39
40 return ret;
41}
Double_t x[10]
static const double twoPi
Definition EvtConst.hh:28

◆ pdfIntegral()

double EvtBreitWignerPdf::pdfIntegral ( double m) const
virtual

Implements EvtIntegPdf1D.

Definition at line 43 of file EvtBreitWignerPdf.cc.

43 {
44 double itg = 0;
45 if ( _g0 == 0 )
46 {
47
48 if ( m > _m0 ) itg = 1.;
49 else if ( m < _m0 ) itg = 0.;
50 else itg = 0.5;
51 }
52 else itg = atan( ( m - _m0 ) / ( _g0 / 2. ) ) / EvtConst::pi + 0.5;
53
54 return itg;
55}
static const double pi
Definition EvtConst.hh:27

◆ pdfIntegralInverse()

double EvtBreitWignerPdf::pdfIntegralInverse ( double x) const
virtual

Implements EvtIntegPdf1D.

Definition at line 57 of file EvtBreitWignerPdf.cc.

57 {
58 if ( x < 0 || x > 1 )
59 {
60
61 printf( "Invalid integral value %f\n", x );
62 assert( 0 );
63 }
64
65 double m = _m0;
66 if ( _g0 != 0 ) m = _m0 + ( _g0 / 2. ) * tan( EvtConst::pi * ( x - 0.5 ) );
67
68 return m;
69}

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