Page MenuHomeHEPForge

D119.id502.diff
No OneTemporary

D119.id502.diff

diff --git a/EvtGenBase/EvtDalitzReso.hh b/EvtGenBase/EvtDalitzReso.hh
--- a/EvtGenBase/EvtDalitzReso.hh
+++ b/EvtGenBase/EvtDalitzReso.hh
@@ -87,11 +87,11 @@
WA76
};
- EvtDalitzReso() : _typeN( NON_RES ){};
+ EvtDalitzReso() : m_typeN( NON_RES ){};
EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes,
NumType typeN, double alpha = 0.0 ) :
- _dp( dp ), _pairRes( pairRes ), _typeN( typeN ), _alpha( alpha ){};
+ m_dp( dp ), m_pairRes( pairRes ), m_typeN( typeN ), m_alpha( alpha ){};
EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng,
EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin,
@@ -124,106 +124,109 @@
EvtDalitzReso* clone() const { return new EvtDalitzReso( *this ); }
- EvtComplex evaluate( const EvtDalitzPoint& p );
+ EvtComplex evaluate( const EvtDalitzPoint& p ) const;
- void set_fd( double R ) { _vd.set_f( R ); }
- void set_fb( double R ) { _vb.set_f( R ); }
+ void set_fd( double R ) { m_vd.set_f( R ); }
+ void set_fb( double R ) { m_vb.set_f( R ); }
void addFlatteParam( const EvtFlatteParam& param )
{
- _flatteParams.push_back( param );
+ m_flatteParams.push_back( param );
}
private:
- EvtComplex psFactor( double& ma, double& mb, double& m );
- EvtComplex psFactor( double& ma1, double& mb1, double& ma2, double& mb2,
- double& m );
- EvtComplex propGauss( const double& m0, const double& s0, const double& m );
+ EvtComplex psFactor( const double& ma, const double& mb,
+ const double& m ) const;
+ EvtComplex psFactor( const double& ma1, const double& mb1, const double& ma2,
+ const double& mb2, const double& m ) const;
+ EvtComplex propGauss( const double& m0, const double& s0,
+ const double& m ) const;
EvtComplex propBreitWigner( const double& m0, const double& g0,
- const double& m );
+ const double& m ) const;
EvtComplex propBreitWignerRel( const double& m0, const double& g0,
- const double& m );
+ const double& m ) const;
EvtComplex propBreitWignerRel( const double& m0, const EvtComplex& g0,
- const double& m );
+ const double& m ) const;
EvtComplex propBreitWignerRelCoupled( const double& m0, const EvtComplex& g1,
- const EvtComplex& g2, const double& m );
+ const EvtComplex& g2,
+ const double& m ) const;
EvtComplex propGounarisSakurai( const double& m0, const double& g0,
const double& k0, const double& m,
- const double& g, const double& k );
+ const double& g, const double& k ) const;
inline double GS_f( const double& m0, const double& g0, const double& k0,
- const double& m, const double& k );
- inline double GS_h( const double& m, const double& k );
- inline double GS_dhods( const double& m0, const double& k0 );
- inline double GS_d( const double& m0, const double& k0 );
+ const double& m, const double& k ) const;
+ inline double GS_h( const double& m, const double& k ) const;
+ inline double GS_dhods( const double& m0, const double& k0 ) const;
+ inline double GS_d( const double& m0, const double& k0 ) const;
EvtComplex numerator( const EvtDalitzPoint& p, const EvtTwoBodyKine& vb,
- const EvtTwoBodyKine& vd );
- double angDep( const EvtDalitzPoint& p );
- EvtComplex mixFactor( EvtComplex prop, EvtComplex prop_mix );
- EvtComplex Fvector( double s, int index );
- EvtComplex lass( double s );
- EvtComplex flatte( const double& m );
-
- inline EvtComplex sqrtCplx( double in )
+ const EvtTwoBodyKine& vd ) const;
+ double angDep( const EvtDalitzPoint& p ) const;
+ EvtComplex mixFactor( EvtComplex prop, EvtComplex prop_mix ) const;
+ EvtComplex Fvector( double s, int index ) const;
+ EvtComplex lass( double s ) const;
+ EvtComplex flatte( const double& m ) const;
+
+ inline EvtComplex sqrtCplx( double in ) const
{
return ( in > 0 ) ? EvtComplex( sqrt( in ), 0 )
: EvtComplex( 0, sqrt( -in ) );
}
// Dalitz plot
- EvtDalitzPlot _dp;
+ EvtDalitzPlot m_dp;
// Pairing indices:
- EvtCyclic3::Pair _pairAng; // angular
- EvtCyclic3::Pair _pairRes; // resonance
+ EvtCyclic3::Pair m_pairAng; // angular
+ EvtCyclic3::Pair m_pairRes; // resonance
// Spin
- EvtSpinType::spintype _spin;
+ EvtSpinType::spintype m_spin;
// Numerator type
- NumType _typeN;
+ NumType m_typeN;
// Nominal mass and width
- double _m0, _g0;
+ double m_m0, m_g0;
// Vertices
- EvtTwoBodyVertex _vb;
- EvtTwoBodyVertex _vd;
+ EvtTwoBodyVertex m_vb;
+ EvtTwoBodyVertex m_vd;
// Daughter masses
- double _massFirst, _massSecond;
+ double m_massFirst, m_massSecond;
// variables for electromagnetic mass mixing
- double _m0_mix, _g0_mix, _delta_mix;
- EvtComplex _amp_mix;
+ double m_m0_mix, m_g0_mix, m_delta_mix;
+ EvtComplex m_amp_mix;
// variables for coupled Breit-Wigner
- double _g1, _g2;
- CouplingType _coupling2;
+ double m_g1, m_g2;
+ CouplingType m_coupling2;
// variables for Blatt-Weisskopf form factors
- double _f_b, _f_d;
+ double m_f_b, m_f_d;
// K-matrix
- int _kmatrix_index;
- EvtComplex _fr12prod, _fr13prod, _fr14prod, _fr15prod;
- double _s0prod;
+ int m_kmatrix_index;
+ EvtComplex m_fr12prod, m_fr13prod, m_fr14prod, m_fr15prod;
+ double m_s0prod;
// LASS
- double _a;
- double _r;
- double _Blass;
- double _phiB;
- double _R;
- double _phiR;
- double _cutoff;
- bool _scaleByMOverQ;
+ double m_a;
+ double m_r;
+ double m_Blass;
+ double m_phiB;
+ double m_R;
+ double m_phiR;
+ double m_cutoff;
+ bool m_scaleByMOverQ;
//Nonresonant
- double _alpha;
+ double m_alpha;
// Flatte
- std::vector<EvtFlatteParam> _flatteParams;
+ std::vector<EvtFlatteParam> m_flatteParams;
};
#endif
diff --git a/EvtGenModels/EvtD0ToKspipi.hh b/EvtGenModels/EvtD0ToKspipi.hh
new file mode 100644
--- /dev/null
+++ b/EvtGenModels/EvtD0ToKspipi.hh
@@ -0,0 +1,71 @@
+#ifndef EVTD0TOKSPIPI_HH
+#define EVTD0TOKSPIPI_HH
+
+#include "EvtGenBase/EvtComplex.hh"
+#include "EvtGenBase/EvtDalitzPoint.hh"
+#include "EvtGenBase/EvtDalitzReso.hh"
+#include "EvtGenBase/EvtDecayAmp.hh"
+
+#include <string>
+#include <utility>
+#include <vector>
+
+class EvtParticle;
+
+class EvtD0ToKspipi : public EvtDecayAmp {
+ public:
+ std::string getName() override;
+ EvtDecayBase* clone() override;
+
+ void init() override;
+ void initProbMax() override;
+ void decay( EvtParticle* parent ) override;
+
+ private:
+ // Calculate the total amplitude given the Dalitz plot point
+ EvtComplex calcTotAmp( const EvtDalitzPoint& point ) const;
+
+ // Set particle IDs and PDG masses
+ void setPDGValues();
+
+ // Setup the Dalitz plot resonances and their amplitude coefficients
+ void initResonances();
+
+ // Daughter IDs (updated according to decay file ordering)
+ int m_d0 = 0;
+ int m_d1 = 1;
+ int m_d2 = 2;
+
+ // Resonance lineshape and complex amplitude coefficient pair
+ typedef std::pair<EvtDalitzReso, EvtComplex> ResAmpPair;
+
+ // Vector of (resonance, coeff) pairs
+ std::vector<ResAmpPair> m_resonances;
+
+ // IDs of the relevant particles
+ EvtId m_BP;
+ EvtId m_BM;
+ EvtId m_B0;
+ EvtId m_B0B;
+ EvtId m_D0;
+ EvtId m_D0B;
+ EvtId m_KM;
+ EvtId m_KP;
+ EvtId m_K0;
+ EvtId m_K0B;
+ EvtId m_KL;
+ EvtId m_KS;
+ EvtId m_PIM;
+ EvtId m_PIP;
+
+ // Flavor of the B parent and D
+ EvtId m_bFlavor;
+ EvtId m_dFlavor;
+
+ // Masses of the relevant particles
+ double m_mD0;
+ double m_mKs;
+ double m_mPi;
+ double m_mK;
+};
+#endif
diff --git a/History.md b/History.md
--- a/History.md
+++ b/History.md
@@ -8,6 +8,9 @@
https://phab.hepforge.org/Dxyz
+17 Jun 2024 John Back
+* D119: Add EvtD0ToKspipi DP model, courtesy of Camille Normand (LHCb).
+
===
## R02-02-01
diff --git a/src/EvtGenBase/EvtDalitzReso.cpp b/src/EvtGenBase/EvtDalitzReso.cpp
--- a/src/EvtGenBase/EvtDalitzReso.cpp
+++ b/src/EvtGenBase/EvtDalitzReso.cpp
@@ -43,47 +43,48 @@
EvtDalitzReso::EvtDalitzReso( const EvtDalitzPlot& dp, Pair pairAng, Pair pairRes,
EvtSpinType::spintype spin, double m0, double g0,
NumType typeN, double f_b, double f_d ) :
- _dp( dp ),
- _pairAng( pairAng ),
- _pairRes( pairRes ),
- _spin( spin ),
- _typeN( typeN ),
- _m0( m0 ),
- _g0( g0 ),
- _massFirst( dp.m( first( pairRes ) ) ),
- _massSecond( dp.m( second( pairRes ) ) ),
- _m0_mix( -1. ),
- _g0_mix( 0. ),
- _delta_mix( 0. ),
- _amp_mix( 0., 0. ),
- _g1( -1. ),
- _g2( -1. ),
- _coupling2( Undefined ),
- _f_b( f_b ),
- _f_d( f_d ),
- _kmatrix_index( -1 ),
- _fr12prod( 0., 0. ),
- _fr13prod( 0., 0. ),
- _fr14prod( 0., 0. ),
- _fr15prod( 0., 0. ),
- _s0prod( 0. ),
- _a( 0. ),
- _r( 0. ),
- _Blass( 0. ),
- _phiB( 0. ),
- _R( 0. ),
- _phiR( 0. ),
- _cutoff( -1. ),
- _scaleByMOverQ( false ),
- _alpha( 0. )
+ m_dp( dp ),
+ m_pairAng( pairAng ),
+ m_pairRes( pairRes ),
+ m_spin( spin ),
+ m_typeN( typeN ),
+ m_m0( m0 ),
+ m_g0( g0 ),
+ m_massFirst( dp.m( first( pairRes ) ) ),
+ m_massSecond( dp.m( second( pairRes ) ) ),
+ m_m0_mix( -1. ),
+ m_g0_mix( 0. ),
+ m_delta_mix( 0. ),
+ m_amp_mix( 0., 0. ),
+ m_g1( -1. ),
+ m_g2( -1. ),
+ m_coupling2( Undefined ),
+ m_f_b( f_b ),
+ m_f_d( f_d ),
+ m_kmatrix_index( -1 ),
+ m_fr12prod( 0., 0. ),
+ m_fr13prod( 0., 0. ),
+ m_fr14prod( 0., 0. ),
+ m_fr15prod( 0., 0. ),
+ m_s0prod( 0. ),
+ m_a( 0. ),
+ m_r( 0. ),
+ m_Blass( 0. ),
+ m_phiB( 0. ),
+ m_R( 0. ),
+ m_phiR( 0. ),
+ m_cutoff( -1. ),
+ m_scaleByMOverQ( false ),
+ m_alpha( 0. )
{
- _vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ),
- _dp.bigM(), _spin );
- _vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
- _vb.set_f( _f_b ); // Default values for Blatt-Weisskopf factors are 0.0 and 1.5.
- _vd.set_f( _f_d );
- assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I &&
- _typeN != K_MATRIX_II ); // single BW cannot be K-matrix
+ m_vb = EvtTwoBodyVertex( m_m0, m_dp.m( EvtCyclic3::other( m_pairRes ) ),
+ m_dp.bigM(), m_spin );
+ m_vd = EvtTwoBodyVertex( m_massFirst, m_massSecond, m_m0, m_spin );
+ m_vb.set_f(
+ m_f_b ); // Default values for Blatt-Weisskopf factors are 0.0 and 1.5.
+ m_vd.set_f( m_f_d );
+ assert( m_typeN != K_MATRIX && m_typeN != K_MATRIX_I &&
+ m_typeN != K_MATRIX_II ); // single BW cannot be K-matrix
}
// Breit-Wigner with electromagnetic mass mixing
@@ -91,47 +92,48 @@
EvtSpinType::spintype spin, double m0, double g0,
NumType typeN, double m0_mix, double g0_mix,
double delta_mix, EvtComplex amp_mix ) :
- _dp( dp ),
- _pairAng( pairAng ),
- _pairRes( pairRes ),
- _spin( spin ),
- _typeN( typeN ),
- _m0( m0 ),
- _g0( g0 ),
- _massFirst( dp.m( first( pairRes ) ) ),
- _massSecond( dp.m( second( pairRes ) ) ),
- _m0_mix( m0_mix ),
- _g0_mix( g0_mix ),
- _delta_mix( delta_mix ),
- _amp_mix( amp_mix ),
- _g1( -1. ),
- _g2( -1. ),
- _coupling2( Undefined ),
- _f_b( 0.0 ),
- _f_d( 1.5 ),
- _kmatrix_index( -1 ),
- _fr12prod( 0., 0. ),
- _fr13prod( 0., 0. ),
- _fr14prod( 0., 0. ),
- _fr15prod( 0., 0. ),
- _s0prod( 0. ),
- _a( 0. ),
- _r( 0. ),
- _Blass( 0. ),
- _phiB( 0. ),
- _R( 0. ),
- _phiR( 0. ),
- _cutoff( -1. ),
- _scaleByMOverQ( false ),
- _alpha( 0. )
+ m_dp( dp ),
+ m_pairAng( pairAng ),
+ m_pairRes( pairRes ),
+ m_spin( spin ),
+ m_typeN( typeN ),
+ m_m0( m0 ),
+ m_g0( g0 ),
+ m_massFirst( dp.m( first( pairRes ) ) ),
+ m_massSecond( dp.m( second( pairRes ) ) ),
+ m_m0_mix( m0_mix ),
+ m_g0_mix( g0_mix ),
+ m_delta_mix( delta_mix ),
+ m_amp_mix( amp_mix ),
+ m_g1( -1. ),
+ m_g2( -1. ),
+ m_coupling2( Undefined ),
+ m_f_b( 0.0 ),
+ m_f_d( 1.5 ),
+ m_kmatrix_index( -1 ),
+ m_fr12prod( 0., 0. ),
+ m_fr13prod( 0., 0. ),
+ m_fr14prod( 0., 0. ),
+ m_fr15prod( 0., 0. ),
+ m_s0prod( 0. ),
+ m_a( 0. ),
+ m_r( 0. ),
+ m_Blass( 0. ),
+ m_phiB( 0. ),
+ m_R( 0. ),
+ m_phiR( 0. ),
+ m_cutoff( -1. ),
+ m_scaleByMOverQ( false ),
+ m_alpha( 0. )
{
- _vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ),
- _dp.bigM(), _spin );
- _vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
- _vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
- _vd.set_f( 1.5 );
+ m_vb = EvtTwoBodyVertex( m_m0, m_dp.m( EvtCyclic3::other( m_pairRes ) ),
+ m_dp.bigM(), m_spin );
+ m_vd = EvtTwoBodyVertex( m_massFirst, m_massSecond, m_m0, m_spin );
+ m_vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
+ m_vd.set_f( 1.5 );
// single BW (with electromagnetic mixing) cannot be K-matrix
- assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II );
+ assert( m_typeN != K_MATRIX && m_typeN != K_MATRIX_I &&
+ m_typeN != K_MATRIX_II );
}
// coupled Breit-Wigner
@@ -139,50 +141,50 @@
Pair pairRes, EvtSpinType::spintype spin,
double m0, NumType typeN, double g1, double g2,
CouplingType coupling2 ) :
- _dp( dp ),
- _pairAng( pairAng ),
- _pairRes( pairRes ),
- _spin( spin ),
- _typeN( typeN ),
- _m0( m0 ),
- _g0( -1. ),
- _massFirst( dp.m( first( pairRes ) ) ),
- _massSecond( dp.m( second( pairRes ) ) ),
- _m0_mix( -1. ),
- _g0_mix( 0. ),
- _delta_mix( 0. ),
- _amp_mix( 0., 0. ),
- _g1( g1 ),
- _g2( g2 ),
- _coupling2( coupling2 ),
- _f_b( 0.0 ),
- _f_d( 1.5 ),
- _kmatrix_index( -1 ),
- _fr12prod( 0., 0. ),
- _fr13prod( 0., 0. ),
- _fr14prod( 0., 0. ),
- _fr15prod( 0., 0. ),
- _s0prod( 0. ),
- _a( 0. ),
- _r( 0. ),
- _Blass( 0. ),
- _phiB( 0. ),
- _R( 0. ),
- _phiR( 0. ),
- _cutoff( -1. ),
- _scaleByMOverQ( false ),
- _alpha( 0. )
+ m_dp( dp ),
+ m_pairAng( pairAng ),
+ m_pairRes( pairRes ),
+ m_spin( spin ),
+ m_typeN( typeN ),
+ m_m0( m0 ),
+ m_g0( -1. ),
+ m_massFirst( dp.m( first( pairRes ) ) ),
+ m_massSecond( dp.m( second( pairRes ) ) ),
+ m_m0_mix( -1. ),
+ m_g0_mix( 0. ),
+ m_delta_mix( 0. ),
+ m_amp_mix( 0., 0. ),
+ m_g1( g1 ),
+ m_g2( g2 ),
+ m_coupling2( coupling2 ),
+ m_f_b( 0.0 ),
+ m_f_d( 1.5 ),
+ m_kmatrix_index( -1 ),
+ m_fr12prod( 0., 0. ),
+ m_fr13prod( 0., 0. ),
+ m_fr14prod( 0., 0. ),
+ m_fr15prod( 0., 0. ),
+ m_s0prod( 0. ),
+ m_a( 0. ),
+ m_r( 0. ),
+ m_Blass( 0. ),
+ m_phiB( 0. ),
+ m_R( 0. ),
+ m_phiR( 0. ),
+ m_cutoff( -1. ),
+ m_scaleByMOverQ( false ),
+ m_alpha( 0. )
{
- _vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ),
- _dp.bigM(), _spin );
- _vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
- _vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
- _vd.set_f( 1.5 );
- assert( _coupling2 != Undefined );
- assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I &&
- _typeN != K_MATRIX_II ); // coupled BW cannot be K-matrix
- assert( _typeN != LASS ); // coupled BW cannot be LASS
- assert( _typeN != NBW ); // for coupled BW, only relativistic BW
+ m_vb = EvtTwoBodyVertex( m_m0, m_dp.m( EvtCyclic3::other( m_pairRes ) ),
+ m_dp.bigM(), m_spin );
+ m_vd = EvtTwoBodyVertex( m_massFirst, m_massSecond, m_m0, m_spin );
+ m_vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
+ m_vd.set_f( 1.5 );
+ assert( m_coupling2 != Undefined );
+ assert( m_typeN != K_MATRIX && m_typeN != K_MATRIX_I &&
+ m_typeN != K_MATRIX_II ); // coupled BW cannot be K-matrix
+ assert( m_typeN != LASS ); // coupled BW cannot be LASS
+ assert( m_typeN != NBW ); // for coupled BW, only relativistic BW
}
// K-Matrix (A&S)
@@ -191,52 +193,53 @@
EvtComplex fr12prod, EvtComplex fr13prod,
EvtComplex fr14prod, EvtComplex fr15prod,
double s0prod ) :
- _dp( dp ),
- _pairRes( pairRes ),
- _typeN( typeN ),
- _m0( 0. ),
- _g0( 0. ),
- _massFirst( dp.m( first( pairRes ) ) ),
- _massSecond( dp.m( second( pairRes ) ) ),
- _m0_mix( -1. ),
- _g0_mix( 0. ),
- _delta_mix( 0. ),
- _amp_mix( 0., 0. ),
- _g1( -1. ),
- _g2( -1. ),
- _coupling2( Undefined ),
- _f_b( 0. ),
- _f_d( 0. ),
- _kmatrix_index( -1 ),
- _fr12prod( fr12prod ),
- _fr13prod( fr13prod ),
- _fr14prod( fr14prod ),
- _fr15prod( fr15prod ),
- _s0prod( s0prod ),
- _a( 0. ),
- _r( 0. ),
- _Blass( 0. ),
- _phiB( 0. ),
- _R( 0. ),
- _phiR( 0. ),
- _cutoff( -1. ),
- _scaleByMOverQ( false ),
- _alpha( 0. )
+ m_dp( dp ),
+ m_pairRes( pairRes ),
+ m_typeN( typeN ),
+ m_m0( 0. ),
+ m_g0( 0. ),
+ m_massFirst( dp.m( first( pairRes ) ) ),
+ m_massSecond( dp.m( second( pairRes ) ) ),
+ m_m0_mix( -1. ),
+ m_g0_mix( 0. ),
+ m_delta_mix( 0. ),
+ m_amp_mix( 0., 0. ),
+ m_g1( -1. ),
+ m_g2( -1. ),
+ m_coupling2( Undefined ),
+ m_f_b( 0. ),
+ m_f_d( 0. ),
+ m_kmatrix_index( -1 ),
+ m_fr12prod( fr12prod ),
+ m_fr13prod( fr13prod ),
+ m_fr14prod( fr14prod ),
+ m_fr15prod( fr15prod ),
+ m_s0prod( s0prod ),
+ m_a( 0. ),
+ m_r( 0. ),
+ m_Blass( 0. ),
+ m_phiB( 0. ),
+ m_R( 0. ),
+ m_phiR( 0. ),
+ m_cutoff( -1. ),
+ m_scaleByMOverQ( false ),
+ m_alpha( 0. )
{
- assert( _typeN == K_MATRIX || _typeN == K_MATRIX_I || _typeN == K_MATRIX_II );
- _spin = EvtSpinType::SCALAR;
+ assert( m_typeN == K_MATRIX || m_typeN == K_MATRIX_I ||
+ m_typeN == K_MATRIX_II );
+ m_spin = EvtSpinType::SCALAR;
if ( nameIndex == "Pole1" )
- _kmatrix_index = 1;
+ m_kmatrix_index = 1;
else if ( nameIndex == "Pole2" )
- _kmatrix_index = 2;
+ m_kmatrix_index = 2;
else if ( nameIndex == "Pole3" )
- _kmatrix_index = 3;
+ m_kmatrix_index = 3;
else if ( nameIndex == "Pole4" )
- _kmatrix_index = 4;
+ m_kmatrix_index = 4;
else if ( nameIndex == "Pole5" )
- _kmatrix_index = 5;
+ m_kmatrix_index = 5;
else if ( nameIndex == "f11prod" )
- _kmatrix_index = 6;
+ m_kmatrix_index = 6;
else
assert( 0 );
}
@@ -246,197 +249,212 @@
double g0, double a, double r, double B,
double phiB, double R, double phiR, double cutoff,
bool scaleByMOverQ ) :
- _dp( dp ),
- _pairRes( pairRes ),
- _typeN( LASS ),
- _m0( m0 ),
- _g0( g0 ),
- _massFirst( dp.m( first( pairRes ) ) ),
- _massSecond( dp.m( second( pairRes ) ) ),
- _m0_mix( -1. ),
- _g0_mix( 0. ),
- _delta_mix( 0. ),
- _amp_mix( 0., 0. ),
- _g1( -1. ),
- _g2( -1. ),
- _coupling2( Undefined ),
- _f_b( 0.0 ),
- _f_d( 1.5 ),
- _kmatrix_index( -1 ),
- _fr12prod( 0., 0. ),
- _fr13prod( 0., 0. ),
- _fr14prod( 0., 0. ),
- _fr15prod( 0., 0. ),
- _s0prod( 0. ),
- _a( a ),
- _r( r ),
- _Blass( B ),
- _phiB( phiB ),
- _R( R ),
- _phiR( phiR ),
- _cutoff( cutoff ),
- _scaleByMOverQ( scaleByMOverQ ),
- _alpha( 0. )
+ m_dp( dp ),
+ m_pairRes( pairRes ),
+ m_typeN( LASS ),
+ m_m0( m0 ),
+ m_g0( g0 ),
+ m_massFirst( dp.m( first( pairRes ) ) ),
+ m_massSecond( dp.m( second( pairRes ) ) ),
+ m_m0_mix( -1. ),
+ m_g0_mix( 0. ),
+ m_delta_mix( 0. ),
+ m_amp_mix( 0., 0. ),
+ m_g1( -1. ),
+ m_g2( -1. ),
+ m_coupling2( Undefined ),
+ m_f_b( 0.0 ),
+ m_f_d( 1.5 ),
+ m_kmatrix_index( -1 ),
+ m_fr12prod( 0., 0. ),
+ m_fr13prod( 0., 0. ),
+ m_fr14prod( 0., 0. ),
+ m_fr15prod( 0., 0. ),
+ m_s0prod( 0. ),
+ m_a( a ),
+ m_r( r ),
+ m_Blass( B ),
+ m_phiB( phiB ),
+ m_R( R ),
+ m_phiR( phiR ),
+ m_cutoff( cutoff ),
+ m_scaleByMOverQ( scaleByMOverQ ),
+ m_alpha( 0. )
{
- _spin = EvtSpinType::SCALAR;
- _vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
- _vd.set_f( 1.5 ); // Default values for Blatt-Weisskopf factors.
+ m_spin = EvtSpinType::SCALAR;
+ m_vd = EvtTwoBodyVertex( m_massFirst, m_massSecond, m_m0, m_spin );
+ m_vd.set_f( 1.5 ); // Default values for Blatt-Weisskopf factors.
}
//Flatte
EvtDalitzReso::EvtDalitzReso( const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes,
double m0 ) :
- _dp( dp ),
- _pairRes( pairRes ),
- _typeN( FLATTE ),
- _m0( m0 ),
- _g0( 0. ),
- _massFirst( dp.m( first( pairRes ) ) ),
- _massSecond( dp.m( second( pairRes ) ) ),
- _m0_mix( -1. ),
- _g0_mix( 0. ),
- _delta_mix( 0. ),
- _amp_mix( 0., 0. ),
- _g1( -1. ),
- _g2( -1. ),
- _coupling2( Undefined ),
- _f_b( 0. ),
- _f_d( 0. ),
- _kmatrix_index( -1 ),
- _fr12prod( 0., 0. ),
- _fr13prod( 0., 0. ),
- _fr14prod( 0., 0. ),
- _fr15prod( 0., 0. ),
- _s0prod( 0. ),
- _a( 0. ),
- _r( 0. ),
- _Blass( 0. ),
- _phiB( 0. ),
- _R( 0. ),
- _phiR( 0. ),
- _cutoff( -1. ),
- _scaleByMOverQ( false ),
- _alpha( 0. )
+ m_dp( dp ),
+ m_pairRes( pairRes ),
+ m_typeN( FLATTE ),
+ m_m0( m0 ),
+ m_g0( 0. ),
+ m_massFirst( dp.m( first( pairRes ) ) ),
+ m_massSecond( dp.m( second( pairRes ) ) ),
+ m_m0_mix( -1. ),
+ m_g0_mix( 0. ),
+ m_delta_mix( 0. ),
+ m_amp_mix( 0., 0. ),
+ m_g1( -1. ),
+ m_g2( -1. ),
+ m_coupling2( Undefined ),
+ m_f_b( 0. ),
+ m_f_d( 0. ),
+ m_kmatrix_index( -1 ),
+ m_fr12prod( 0., 0. ),
+ m_fr13prod( 0., 0. ),
+ m_fr14prod( 0., 0. ),
+ m_fr15prod( 0., 0. ),
+ m_s0prod( 0. ),
+ m_a( 0. ),
+ m_r( 0. ),
+ m_Blass( 0. ),
+ m_phiB( 0. ),
+ m_R( 0. ),
+ m_phiR( 0. ),
+ m_cutoff( -1. ),
+ m_scaleByMOverQ( false ),
+ m_alpha( 0. )
{
- _spin = EvtSpinType::SCALAR;
+ m_spin = EvtSpinType::SCALAR;
}
-EvtComplex EvtDalitzReso::evaluate( const EvtDalitzPoint& x )
+EvtComplex EvtDalitzReso::evaluate( const EvtDalitzPoint& x ) const
{
- double m = sqrt( x.q( _pairRes ) );
+ double m = sqrt( x.q( m_pairRes ) );
- if ( _typeN == NON_RES )
+ if ( m_typeN == NON_RES )
return EvtComplex( 1.0, 0.0 );
- if ( _typeN == NON_RES_LIN )
+ if ( m_typeN == NON_RES_LIN )
return m * m;
- if ( _typeN == NON_RES_EXP )
- return exp( -_alpha * m * m );
+ if ( m_typeN == NON_RES_EXP )
+ return exp( -m_alpha * m * m );
// do use always hash table (speed up fitting)
- if ( _typeN == K_MATRIX || _typeN == K_MATRIX_I || _typeN == K_MATRIX_II )
- return Fvector( m * m, _kmatrix_index );
+ if ( m_typeN == K_MATRIX || m_typeN == K_MATRIX_I || m_typeN == K_MATRIX_II )
+ return Fvector( m * m, m_kmatrix_index );
- if ( _typeN == LASS )
+ if ( m_typeN == LASS )
return lass( m * m );
- if ( _typeN == FLATTE )
+ if ( m_typeN == FLATTE )
return flatte( m );
EvtComplex amp( 1.0, 0.0 );
- if ( fabs( _dp.bigM() - x.bigM() ) > 0.000001 ) {
- _vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ),
- x.bigM(), _spin );
- _vb.set_f( _f_b );
+ if ( fabs( m_dp.bigM() - x.bigM() ) > 0.000001 ) {
+ EvtGenReport( EVTGEN_WARNING, "EvtGen" )
+ << "Warning in EvtDalitzReso::evaluate."
+ << "The mass of the mother has changed from " << m_dp.bigM()
+ << " to " << x.bigM() << ". " << std::endl;
}
- EvtTwoBodyKine vb( m, x.m( EvtCyclic3::other( _pairRes ) ), x.bigM() );
- EvtTwoBodyKine vd( _massFirst, _massSecond, m );
+
+ EvtTwoBodyKine vb( m, x.m( EvtCyclic3::other( m_pairRes ) ), x.bigM() );
+ EvtTwoBodyKine vd( m_massFirst, m_massSecond, m );
EvtComplex prop( 0, 0 );
- if ( _typeN == NBW ) {
- prop = propBreitWigner( _m0, _g0, m );
- } else if ( _typeN == GAUSS_CLEO || _typeN == GAUSS_CLEO_ZEMACH ) {
- prop = propGauss( _m0, _g0, m );
+ if ( m_typeN == NBW ) {
+ prop = propBreitWigner( m_m0, m_g0, m );
+ } else if ( m_typeN == GAUSS_CLEO || m_typeN == GAUSS_CLEO_ZEMACH ) {
+ prop = propGauss( m_m0, m_g0, m );
} else {
- if ( _coupling2 == Undefined ) {
+ if ( m_coupling2 == Undefined ) {
// single BW
- double g = ( _g0 <= 0. || _vd.pD() <= 0. )
- ? -_g0
- : _g0 * _vd.widthFactor( vd ); // running width
- if ( _typeN == GS_CLEO || _typeN == GS_CLEO_ZEMACH ) {
+ double g = ( m_g0 <= 0. || m_vd.pD() <= 0. )
+ ? -m_g0
+ : m_g0 * m_vd.widthFactor( vd ); // running width
+ if ( m_typeN == GS_CLEO || m_typeN == GS_CLEO_ZEMACH ) {
// Gounaris-Sakurai (GS)
- prop = propGounarisSakurai( _m0, fabs( _g0 ), _vd.pD(), m, g,
+ prop = propGounarisSakurai( m_m0, fabs( m_g0 ), m_vd.pD(), m, g,
vd.p() );
} else {
// standard relativistic BW
- prop = propBreitWignerRel( _m0, g, m );
+ prop = propBreitWignerRel( m_m0, g, m );
}
} else {
// coupled width BW
EvtComplex G1, G2;
- switch ( _coupling2 ) {
+ switch ( m_coupling2 ) {
case PicPic: {
- G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
- static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
- G2 = _g2 * _g2 * psFactor( mPic, mPic, m );
+ G1 = m_g1 * m_g1 * psFactor( m_massFirst, m_massSecond, m );
+ static const double mPic = EvtPDL::getMass(
+ EvtPDL::getId( "pi+" ) );
+ G2 = m_g2 * m_g2 * psFactor( mPic, mPic, m );
break;
}
case PizPiz: {
- G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
- static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
- G2 = _g2 * _g2 * psFactor( mPiz, mPiz, m );
+ G1 = m_g1 * m_g1 * psFactor( m_massFirst, m_massSecond, m );
+ static const double mPiz = EvtPDL::getMass(
+ EvtPDL::getId( "pi0" ) );
+ G2 = m_g2 * m_g2 * psFactor( mPiz, mPiz, m );
break;
}
case PiPi: {
- G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
- static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
- static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
- G2 = _g2 * _g2 * psFactor( mPic, mPic, mPiz, mPiz, m );
+ G1 = m_g1 * m_g1 * psFactor( m_massFirst, m_massSecond, m );
+ static const double mPic = EvtPDL::getMass(
+ EvtPDL::getId( "pi+" ) );
+ static const double mPiz = EvtPDL::getMass(
+ EvtPDL::getId( "pi0" ) );
+ G2 = m_g2 * m_g2 * psFactor( mPic, mPic, mPiz, mPiz, m );
break;
}
case KcKc: {
- G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
- static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
- G2 = _g2 * _g2 * psFactor( mKc, mKc, m );
+ G1 = m_g1 * m_g1 * psFactor( m_massFirst, m_massSecond, m );
+ static const double mKc = EvtPDL::getMass(
+ EvtPDL::getId( "K+" ) );
+ G2 = m_g2 * m_g2 * psFactor( mKc, mKc, m );
break;
}
case KzKz: {
- G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
- static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
- G2 = _g2 * _g2 * psFactor( mKz, mKz, m );
+ G1 = m_g1 * m_g1 * psFactor( m_massFirst, m_massSecond, m );
+ static const double mKz = EvtPDL::getMass(
+ EvtPDL::getId( "K0" ) );
+ G2 = m_g2 * m_g2 * psFactor( mKz, mKz, m );
break;
}
case KK: {
- G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
- static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
- static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
- G2 = _g2 * _g2 * psFactor( mKc, mKc, mKz, mKz, m );
+ G1 = m_g1 * m_g1 * psFactor( m_massFirst, m_massSecond, m );
+ static const double mKc = EvtPDL::getMass(
+ EvtPDL::getId( "K+" ) );
+ static const double mKz = EvtPDL::getMass(
+ EvtPDL::getId( "K0" ) );
+ G2 = m_g2 * m_g2 * psFactor( mKc, mKc, mKz, mKz, m );
break;
}
case EtaPic: {
- G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
- static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
- static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
- G2 = _g2 * _g2 * psFactor( mEta, mPic, m );
+ G1 = m_g1 * m_g1 * psFactor( m_massFirst, m_massSecond, m );
+ static const double mEta = EvtPDL::getMass(
+ EvtPDL::getId( "eta" ) );
+ static const double mPic = EvtPDL::getMass(
+ EvtPDL::getId( "pi+" ) );
+ G2 = m_g2 * m_g2 * psFactor( mEta, mPic, m );
break;
}
case EtaPiz: {
- G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
- static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
- static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
- G2 = _g2 * _g2 * psFactor( mEta, mPiz, m );
+ G1 = m_g1 * m_g1 * psFactor( m_massFirst, m_massSecond, m );
+ static const double mEta = EvtPDL::getMass(
+ EvtPDL::getId( "eta" ) );
+ static const double mPiz = EvtPDL::getMass(
+ EvtPDL::getId( "pi0" ) );
+ G2 = m_g2 * m_g2 * psFactor( mEta, mPiz, m );
break;
}
case PicPicKK: {
- static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
- //G1 = _g1*_g1*psFactor(mPic,mPic,m);
- G1 = _g1 * psFactor( mPic, mPic, m );
- static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
- static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
- //G2 = _g2*_g2*psFactor(mKc,mKc,mKz,mKz,m);
- G2 = _g2 * psFactor( mKc, mKc, mKz, mKz, m );
+ static const double mPic = EvtPDL::getMass(
+ EvtPDL::getId( "pi+" ) );
+ G1 = m_g1 * psFactor( mPic, mPic, m );
+ static const double mKc = EvtPDL::getMass(
+ EvtPDL::getId( "K+" ) );
+ static const double mKz = EvtPDL::getMass(
+ EvtPDL::getId( "K0" ) );
+ G2 = m_g2 * psFactor( mKc, mKc, mKz, mKz, m );
break;
}
default:
@@ -447,28 +465,28 @@
break;
}
// calculate standard couple BW propagator
- if ( _coupling2 != WA76 )
- prop = _g1 * propBreitWignerRelCoupled( _m0, G1, G2, m );
+ if ( m_coupling2 != WA76 )
+ prop = m_g1 * propBreitWignerRelCoupled( m_m0, G1, G2, m );
}
}
amp *= prop;
// Compute form-factors (Blatt-Weisskopf penetration factor)
- amp *= _vb.formFactor( vb );
- amp *= _vd.formFactor( vd );
+ amp *= m_vb.formFactor( vb );
+ amp *= m_vd.formFactor( vd );
// Compute numerator (angular distribution)
amp *= numerator( x, vb, vd );
// Compute electromagnetic mass mixing factor
- if ( _m0_mix > 0. ) {
+ if ( m_m0_mix > 0. ) {
EvtComplex prop_mix;
- if ( _typeN == NBW ) {
- prop_mix = propBreitWigner( _m0_mix, _g0_mix, m );
+ if ( m_typeN == NBW ) {
+ prop_mix = propBreitWigner( m_m0_mix, m_g0_mix, m );
} else {
- assert( _g1 < 0. ); // running width only
- double g_mix = _g0_mix * _vd.widthFactor( vd );
- prop_mix = propBreitWignerRel( _m0_mix, g_mix, m );
+ assert( m_g1 < 0. ); // running width only
+ double g_mix = m_g0_mix * m_vd.widthFactor( vd );
+ prop_mix = propBreitWignerRel( m_m0_mix, g_mix, m );
}
amp *= mixFactor( prop, prop_mix );
}
@@ -476,7 +494,8 @@
return amp;
}
-EvtComplex EvtDalitzReso::psFactor( double& ma, double& mb, double& m )
+EvtComplex EvtDalitzReso::psFactor( const double& ma, const double& mb,
+ const double& m ) const
{
if ( m > ( ma + mb ) ) {
EvtTwoBodyKine vd( ma, mb, m );
@@ -490,14 +509,15 @@
}
}
-EvtComplex EvtDalitzReso::psFactor( double& ma1, double& mb1, double& ma2,
- double& mb2, double& m )
+EvtComplex EvtDalitzReso::psFactor( const double& ma1, const double& mb1,
+ const double& ma2, const double& mb2,
+ const double& m ) const
{
return 0.5 * ( psFactor( ma1, mb1, m ) + psFactor( ma2, mb2, m ) );
}
EvtComplex EvtDalitzReso::propGauss( const double& m0, const double& s0,
- const double& m )
+ const double& m ) const
{
// Gaussian
double gauss = 1. / sqrt( EvtConst::twoPi ) / s0 *
@@ -506,14 +526,14 @@
}
EvtComplex EvtDalitzReso::propBreitWigner( const double& m0, const double& g0,
- const double& m )
+ const double& m ) const
{
// non-relativistic BW
return sqrt( g0 / EvtConst::twoPi ) / ( m - m0 - EvtComplex( 0.0, g0 / 2. ) );
}
-EvtComplex EvtDalitzReso::propBreitWignerRel( const double& m0,
- const double& g0, const double& m )
+EvtComplex EvtDalitzReso::propBreitWignerRel( const double& m0, const double& g0,
+ const double& m ) const
{
// relativistic BW with real width
return 1. / ( m0 * m0 - m * m - EvtComplex( 0., m0 * g0 ) );
@@ -521,7 +541,7 @@
EvtComplex EvtDalitzReso::propBreitWignerRel( const double& m0,
const EvtComplex& g0,
- const double& m )
+ const double& m ) const
{
// relativistic BW with complex width
return 1. / ( m0 * m0 - m * m - EvtComplex( 0., m0 ) * g0 );
@@ -530,15 +550,16 @@
EvtComplex EvtDalitzReso::propBreitWignerRelCoupled( const double& m0,
const EvtComplex& g1,
const EvtComplex& g2,
- const double& m )
+ const double& m ) const
{
// relativistic coupled BW
return 1. / ( m0 * m0 - m * m - ( g1 + g2 ) );
}
-EvtComplex EvtDalitzReso::propGounarisSakurai( const double& m0, const double& g0,
- const double& k0, const double& m,
- const double& g, const double& k )
+EvtComplex EvtDalitzReso::propGounarisSakurai( const double& m0,
+ const double& g0, const double& k0,
+ const double& m, const double& g,
+ const double& k ) const
{
// Gounaris-Sakurai parameterization of pi+pi- P wave. PRD, Vol61, 112002. PRL, Vol21, 244.
// Expressions taken from BAD637v4, after fixing the imaginary part of the BW denominator: i M_R Gamma_R(s) --> i sqrt(s) Gamma_R(s)
@@ -549,7 +570,7 @@
inline double EvtDalitzReso::GS_f( const double& m0, const double& g0,
const double& k0, const double& m,
- const double& k )
+ const double& k ) const
{
// m: sqrt(s)
// m0: nominal resonance mass
@@ -560,66 +581,66 @@
( m0 * m0 - m * m ) * k0 * k0 * GS_dhods( m0, k0 ) );
}
-inline double EvtDalitzReso::GS_h( const double& m, const double& k )
+inline double EvtDalitzReso::GS_h( const double& m, const double& k ) const
{
return 2. / EvtConst::pi * k / m *
- log( ( m + 2. * k ) / ( 2. * _massFirst ) );
+ log( ( m + 2. * k ) / ( 2. * m_massFirst ) );
}
-inline double EvtDalitzReso::GS_dhods( const double& m0, const double& k0 )
+inline double EvtDalitzReso::GS_dhods( const double& m0, const double& k0 ) const
{
return GS_h( m0, k0 ) * ( 0.125 / ( k0 * k0 ) - 0.5 / ( m0 * m0 ) ) +
0.5 / ( EvtConst::pi * m0 * m0 );
}
-inline double EvtDalitzReso::GS_d( const double& m0, const double& k0 )
+inline double EvtDalitzReso::GS_d( const double& m0, const double& k0 ) const
{
- return 3. / EvtConst::pi * _massFirst * _massFirst / ( k0 * k0 ) *
- log( ( m0 + 2. * k0 ) / ( 2. * _massFirst ) ) +
+ return 3. / EvtConst::pi * m_massFirst * m_massFirst / ( k0 * k0 ) *
+ log( ( m0 + 2. * k0 ) / ( 2. * m_massFirst ) ) +
m0 / ( 2. * EvtConst::pi * k0 ) -
- _massFirst * _massFirst * m0 / ( EvtConst::pi * k0 * k0 * k0 );
+ m_massFirst * m_massFirst * m0 / ( EvtConst::pi * k0 * k0 * k0 );
}
EvtComplex EvtDalitzReso::numerator( const EvtDalitzPoint& x,
const EvtTwoBodyKine& vb,
- const EvtTwoBodyKine& vd )
+ const EvtTwoBodyKine& vd ) const
{
EvtComplex ret( 0., 0. );
// Non-relativistic Breit-Wigner
- if ( NBW == _typeN ) {
+ if ( NBW == m_typeN ) {
ret = angDep( x );
}
// Standard relativistic Zemach propagator
- else if ( RBW_ZEMACH == _typeN ) {
- ret = _vd.phaseSpaceFactor( vd, EvtTwoBodyKine::AB ) * angDep( x );
+ else if ( RBW_ZEMACH == m_typeN ) {
+ ret = m_vd.phaseSpaceFactor( vd, EvtTwoBodyKine::AB ) * angDep( x );
}
// Standard relativistic Zemach propagator
- else if ( RBW_ZEMACH2 == _typeN ) {
- ret = _vd.phaseSpaceFactor( vd, EvtTwoBodyKine::AB ) *
- _vb.phaseSpaceFactor( vb, EvtTwoBodyKine::AB ) * angDep( x );
- if ( _spin == EvtSpinType::VECTOR ) {
+ else if ( RBW_ZEMACH2 == m_typeN ) {
+ ret = m_vd.phaseSpaceFactor( vd, EvtTwoBodyKine::AB ) *
+ m_vb.phaseSpaceFactor( vb, EvtTwoBodyKine::AB ) * angDep( x );
+ if ( m_spin == EvtSpinType::VECTOR ) {
ret *= -4.;
- } else if ( _spin == EvtSpinType::TENSOR ) {
+ } else if ( m_spin == EvtSpinType::TENSOR ) {
ret *= 16. / 3.;
- } else if ( _spin != EvtSpinType::SCALAR )
+ } else if ( m_spin != EvtSpinType::SCALAR )
assert( 0 );
}
// Kuehn-Santamaria normalization:
- else if ( RBW_KUEHN == _typeN ) {
- ret = _m0 * _m0 * angDep( x );
+ else if ( RBW_KUEHN == m_typeN ) {
+ ret = m_m0 * m_m0 * angDep( x );
}
// CLEO amplitude
- else if ( ( RBW_CLEO == _typeN ) || ( GS_CLEO == _typeN ) ||
- ( RBW_CLEO_ZEMACH == _typeN ) || ( GS_CLEO_ZEMACH == _typeN ) ||
- ( GAUSS_CLEO == _typeN ) || ( GAUSS_CLEO_ZEMACH == _typeN ) ) {
- Index iA = other( _pairAng ); // A = other(BC)
- Index iB = common( _pairRes, _pairAng ); // B = common(AB,BC)
- Index iC = other( _pairRes ); // C = other(AB)
+ else if ( ( RBW_CLEO == m_typeN ) || ( GS_CLEO == m_typeN ) ||
+ ( RBW_CLEO_ZEMACH == m_typeN ) || ( GS_CLEO_ZEMACH == m_typeN ) ||
+ ( GAUSS_CLEO == m_typeN ) || ( GAUSS_CLEO_ZEMACH == m_typeN ) ) {
+ Index iA = other( m_pairAng ); // A = other(BC)
+ Index iB = common( m_pairRes, m_pairAng ); // B = common(AB,BC)
+ Index iC = other( m_pairRes ); // C = other(AB)
double M = x.bigM();
double mA = x.m( iA );
@@ -630,20 +651,20 @@
double qCA = x.q( combine( iC, iA ) );
double M2 = M * M;
- double m02 = ( ( RBW_CLEO_ZEMACH == _typeN ) ||
- ( GS_CLEO_ZEMACH == _typeN ) ||
- ( GAUSS_CLEO_ZEMACH == _typeN ) )
+ double m02 = ( ( RBW_CLEO_ZEMACH == m_typeN ) ||
+ ( GS_CLEO_ZEMACH == m_typeN ) ||
+ ( GAUSS_CLEO_ZEMACH == m_typeN ) )
? qAB
- : _m0 * _m0;
+ : m_m0 * m_m0;
double mA2 = mA * mA;
double mB2 = mB * mB;
double mC2 = mC * mC;
- if ( _spin == EvtSpinType::SCALAR )
+ if ( m_spin == EvtSpinType::SCALAR )
ret = EvtComplex( 1., 0. );
- else if ( _spin == EvtSpinType::VECTOR ) {
+ else if ( m_spin == EvtSpinType::VECTOR ) {
ret = qCA - qBC + ( M2 - mC2 ) * ( mB2 - mA2 ) / m02;
- } else if ( _spin == EvtSpinType::TENSOR ) {
+ } else if ( m_spin == EvtSpinType::TENSOR ) {
double x1 = qBC - qCA + ( M2 - mC2 ) * ( mA2 - mB2 ) / m02;
double x2 = M2 - mC2;
double x3 = qAB - 2 * M2 - 2 * mC2 + x2 * x2 / m02;
@@ -657,30 +678,30 @@
return ret;
}
-double EvtDalitzReso::angDep( const EvtDalitzPoint& x )
+double EvtDalitzReso::angDep( const EvtDalitzPoint& x ) const
{
// Angular dependece for factorizable amplitudes
// unphysical cosines indicate we are in big trouble
double cosTh = x.cosTh(
- _pairAng, _pairRes ); // angle between common(reso,ang) and other(reso)
+ m_pairAng, m_pairRes ); // angle between common(reso,ang) and other(reso)
if ( fabs( cosTh ) > 1. ) {
EvtGenReport( EVTGEN_INFO, "EvtGen" ) << "cosTh " << cosTh << std::endl;
assert( 0 );
}
// in units of half-spin
- return EvtdFunction::d( EvtSpinType::getSpin2( _spin ), 2 * 0, 2 * 0,
+ return EvtdFunction::d( EvtSpinType::getSpin2( m_spin ), 2 * 0, 2 * 0,
acos( cosTh ) );
}
-EvtComplex EvtDalitzReso::mixFactor( EvtComplex prop, EvtComplex prop_mix )
+EvtComplex EvtDalitzReso::mixFactor( EvtComplex prop, EvtComplex prop_mix ) const
{
- double Delta = _delta_mix * ( _m0 + _m0_mix );
+ double Delta = m_delta_mix * ( m_m0 + m_m0_mix );
return 1 / ( 1 - Delta * Delta * prop * prop_mix ) *
- ( 1 + _amp_mix * Delta * prop_mix );
+ ( 1 + m_amp_mix * Delta * prop_mix );
}
-EvtComplex EvtDalitzReso::Fvector( double s, int index )
+EvtComplex EvtDalitzReso::Fvector( double s, int index ) const
{
assert( index >= 1 && index <= 6 );
@@ -696,11 +717,11 @@
double g[5][5]; // Coupling constants. The first index is the pole index. The second index is the decay channel
double ma[5]; // Pole masses. The unit is in GeV
- int solution = ( _typeN == K_MATRIX )
+ int solution = ( m_typeN == K_MATRIX )
? 3
- : ( ( _typeN == K_MATRIX_I )
+ : ( ( m_typeN == K_MATRIX_I )
? 1
- : ( ( _typeN == K_MATRIX_II ) ? 2 : 0 ) );
+ : ( ( m_typeN == K_MATRIX_II ) ? 2 : 0 ) );
if ( solution == 0 ) {
std::cout << "EvtDalitzReso::Fvector() error. Kmatrix solution incorrectly chosen ! "
<< std::endl;
@@ -965,7 +986,7 @@
//This is not correct!
//(1-ipK) != (1-iKp)
- static EvtMatrix<EvtComplex> mat;
+ static thread_local EvtMatrix<EvtComplex> mat;
mat.setRange(
5 ); // Try to do in only the first time. DEFINE ALLOCATION IN CONSTRUCTOR.
@@ -998,59 +1019,59 @@
} else {
//this calculates fprod Factors
value += U1j[0];
- value += U1j[1] * _fr12prod;
- value += U1j[2] * _fr13prod;
- value += U1j[3] * _fr14prod;
- value += U1j[4] * _fr15prod;
+ value += U1j[1] * m_fr12prod;
+ value += U1j[2] * m_fr13prod;
+ value += U1j[3] * m_fr14prod;
+ value += U1j[4] * m_fr15prod;
- value *= ( 1 - _s0prod ) / ( s - _s0prod ) * smallTerm;
+ value *= ( 1 - m_s0prod ) / ( s - m_s0prod ) * smallTerm;
}
return value;
}
//replace Breit-Wigner with LASS
-EvtComplex EvtDalitzReso::lass( double s )
+EvtComplex EvtDalitzReso::lass( double s ) const
{
- EvtTwoBodyKine vd( _massFirst, _massSecond, sqrt( s ) );
+ EvtTwoBodyKine vd( m_massFirst, m_massSecond, sqrt( s ) );
double q = vd.p();
- double GammaM = _g0 * _vd.widthFactor( vd ); // running width;
+ double GammaM = m_g0 * m_vd.widthFactor( vd ); // running width;
//calculate the background phase motion
- double cot_deltaB = 1.0 / ( _a * q ) + 0.5 * _r * q;
+ double cot_deltaB = 1.0 / ( m_a * q ) + 0.5 * m_r * q;
double deltaB = atan( 1.0 / cot_deltaB );
- double totalB = deltaB + _phiB;
+ double totalB = deltaB + m_phiB;
//calculate the resonant phase motion
- double deltaR = atan( ( _m0 * GammaM / ( _m0 * _m0 - s ) ) );
- double totalR = deltaR + _phiR;
+ double deltaR = atan( ( m_m0 * GammaM / ( m_m0 * m_m0 - s ) ) );
+ double totalR = deltaR + m_phiR;
//sum them up
EvtComplex bkgB, resT;
- bkgB = EvtComplex( _Blass * sin( totalB ), 0 ) *
+ bkgB = EvtComplex( m_Blass * sin( totalB ), 0 ) *
EvtComplex( cos( totalB ), sin( totalB ) );
- resT = EvtComplex( _R * sin( deltaR ), 0 ) *
+ resT = EvtComplex( m_R * sin( deltaR ), 0 ) *
EvtComplex( cos( totalR ), sin( totalR ) ) *
EvtComplex( cos( 2 * totalB ), sin( 2 * totalB ) );
EvtComplex T;
- if ( _cutoff > 0 && sqrt( s ) > _cutoff )
+ if ( m_cutoff > 0 && sqrt( s ) > m_cutoff )
T = resT;
else
T = bkgB + resT;
- if ( _scaleByMOverQ )
+ if ( m_scaleByMOverQ )
T *= ( sqrt( s ) / q );
return T;
}
-EvtComplex EvtDalitzReso::flatte( const double& m )
+EvtComplex EvtDalitzReso::flatte( const double& m ) const
{
EvtComplex w;
- for ( vector<EvtFlatteParam>::const_iterator param = _flatteParams.begin();
- param != _flatteParams.end(); ++param ) {
+ for ( vector<EvtFlatteParam>::const_iterator param = m_flatteParams.begin();
+ param != m_flatteParams.end(); ++param ) {
double m1 = ( *param ).m1();
double m2 = ( *param ).m2();
double g = ( *param ).g();
@@ -1059,7 +1080,7 @@
( 1 - ( ( m1 + m2 ) * ( m1 + m2 ) ) / ( m * m ) ) ) );
}
- EvtComplex denom = _m0 * _m0 - m * m - EvtComplex( 0, 1 ) * w;
+ EvtComplex denom = m_m0 * m_m0 - m * m - EvtComplex( 0, 1 ) * w;
return EvtComplex( 1.0, 0.0 ) / denom;
}
diff --git a/src/EvtGenModels/EvtD0ToKspipi.cpp b/src/EvtGenModels/EvtD0ToKspipi.cpp
new file mode 100644
--- /dev/null
+++ b/src/EvtGenModels/EvtD0ToKspipi.cpp
@@ -0,0 +1,331 @@
+#include "EvtGenModels/EvtD0ToKspipi.hh"
+
+#include "EvtGenBase/EvtDecayTable.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtPatches.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtVector4R.hh"
+
+#include <iostream>
+
+std::string EvtD0ToKspipi::getName()
+{
+ return "D0TOKSPIPI";
+}
+
+EvtDecayBase* EvtD0ToKspipi::clone()
+{
+ return new EvtD0ToKspipi;
+}
+
+void EvtD0ToKspipi::init()
+{
+ // Check that there are 0 arguments
+ checkNArg( 0 );
+
+ // Check parent and daughter types
+ checkNDaug( 3 );
+ checkSpinDaughter( 0, EvtSpinType::SCALAR );
+ checkSpinDaughter( 1, EvtSpinType::SCALAR );
+ checkSpinDaughter( 2, EvtSpinType::SCALAR );
+ checkSpinParent( EvtSpinType::SCALAR );
+
+ // Set the particle IDs and PDG masses
+ setPDGValues();
+
+ // Set the EvtId of the three D0 daughters
+ const int nDaug = 3;
+ std::vector<EvtId> dau;
+ for ( int index = 0; index < nDaug; index++ ) {
+ dau.push_back( getDaug( index ) );
+ }
+
+ // Look for K0bar h+ h-. The order will be K[0SL] h+ h-
+ for ( int index = 0; index < nDaug; index++ ) {
+ if ( ( dau[index] == m_K0B ) || ( dau[index] == m_KS ) ||
+ ( dau[index] == m_KL ) ) {
+ m_d0 = index;
+ } else if ( dau[index] == m_PIP ) {
+ m_d1 = index;
+ } else if ( dau[index] == m_PIM ) {
+ m_d2 = index;
+ } else {
+ EvtGenReport( EVTGEN_ERROR, "EvtD0ToKspipi" )
+ << "Daughter " << index << " has wrong ID" << std::endl;
+ }
+ }
+
+ // Setup the Dalitz plot resonances and their amplitude coefficients
+ initResonances();
+}
+
+void EvtD0ToKspipi::initProbMax()
+{
+ setProbMax( 6000.0 );
+}
+
+void EvtD0ToKspipi::decay( EvtParticle* p )
+{
+ // Phase space generation and 4-momenta
+ p->initializePhaseSpace( getNDaug(), getDaugs() );
+ const EvtVector4R p0 = p->getDaug( m_d0 )->getP4();
+ const EvtVector4R p1 = p->getDaug( m_d1 )->getP4();
+ const EvtVector4R p2 = p->getDaug( m_d2 )->getP4();
+
+ // Squared invariant masses
+ const double mSq01 = ( p0 + p1 ).mass2();
+ const double mSq02 = ( p0 + p2 ).mass2();
+ const double mSq12 = ( p1 + p2 ).mass2();
+
+ // For the decay amplitude
+ EvtComplex amp( 0.0, 0.0 );
+
+ // Flavor of the D meson
+ m_dFlavor = p->getId();
+
+ // Direct and conjugated Dalitz points
+ const EvtDalitzPoint pointD0( m_mKs, m_mPi, m_mPi, mSq02, mSq12, mSq01 );
+ const EvtDalitzPoint pointD0b( m_mKs, m_mPi, m_mPi, mSq01, mSq12, mSq02 );
+
+ // Check if the D is from a B+- -> D0 K+- decay with the appropriate model
+ EvtParticle* parent = p->getParent();
+ if ( parent != nullptr &&
+ EvtDecayTable::getInstance()->getDecayFunc( parent )->getName() ==
+ "BTODDALITZCPK" ) {
+ const EvtId parId = parent->getId();
+ if ( ( parId == m_BP ) || ( parId == m_BM ) || ( parId == m_B0 ) ||
+ ( parId == m_B0B ) ) {
+ m_bFlavor = parId;
+
+ // D0 parent particle is a B meson from the BTODDALITZCPK decay model.
+ // D0 decay amplitude combines the interference of D0 and D0bar.
+ // Read the D decay parameters from the B decay model.
+ // Gamma angle in radians
+ const double gamma =
+ EvtDecayTable::getInstance()->getDecayFunc( parent )->getArg( 0 );
+ // Strong phase in radians
+ const double delta =
+ EvtDecayTable::getInstance()->getDecayFunc( parent )->getArg( 1 );
+ // Ratio between B -> D0 K and B -> D0bar K
+ const double rB =
+ EvtDecayTable::getInstance()->getDecayFunc( parent )->getArg( 2 );
+
+ // Direct and conjugated amplitudes
+ const EvtComplex ampD0 = calcTotAmp( pointD0 );
+ const EvtComplex ampD0b = calcTotAmp( pointD0b );
+
+ if ( m_bFlavor == m_BP || m_bFlavor == m_B0 ) {
+ // B+ or B0
+ const EvtComplex iPhase( 0.0, delta + gamma );
+ const EvtComplex expo( exp( iPhase ) );
+ amp = ampD0b + rB * expo * ampD0;
+ } else {
+ // B- or B0bar
+ const EvtComplex iPhase( 0.0, delta - gamma );
+ const EvtComplex expo( exp( iPhase ) );
+ amp = ampD0 + rB * expo * ampD0b;
+ }
+ }
+ } else if ( !parent ) {
+ // D0 has no parent particle. Use direct or conjugated amplitude
+ if ( m_dFlavor == m_D0 ) {
+ amp = calcTotAmp( pointD0 );
+ } else {
+ amp = calcTotAmp( pointD0b );
+ }
+ }
+
+ // Set the decay vertex amplitude
+ vertex( amp );
+}
+
+EvtComplex EvtD0ToKspipi::calcTotAmp( const EvtDalitzPoint& point ) const
+{
+ // Initialise the total amplitude
+ EvtComplex totAmp( 0.0, 0.0 );
+ // Check that the Dalitz plot point is OK
+ if ( point.isValid() == false ) {
+ return totAmp;
+ }
+
+ // Add the resonance amplitudes by iterating over the (resonance, coeff) pairs.
+ // This includes the BW and LASS lineshapes, as well as the K-matrix contributions
+ for ( auto& [res, amp] : m_resonances ) {
+ // Evaluate the resonance amplitude and multiply by the coeff
+ totAmp += res.evaluate( point ) * amp;
+ }
+ // Return the total amplitude
+ return totAmp;
+}
+
+void EvtD0ToKspipi::initResonances()
+{
+ // Dalitz plot model from combined BaBar and BELLE paper hep-ex/1804.06153
+
+ // Define the Dalitz plot axes
+ const EvtCyclic3::Pair AB = EvtCyclic3::AB;
+ const EvtCyclic3::Pair AC = EvtCyclic3::AC;
+ const EvtCyclic3::Pair BC = EvtCyclic3::BC;
+
+ // Define the particle spin and lineshape types
+ const EvtSpinType::spintype vector = EvtSpinType::VECTOR;
+ const EvtSpinType::spintype tensor = EvtSpinType::TENSOR;
+ const EvtDalitzReso::NumType RBW = EvtDalitzReso::RBW_CLEO_ZEMACH;
+ const EvtDalitzReso::NumType KMAT = EvtDalitzReso::K_MATRIX;
+
+ // Define the Dalitz plot
+ const EvtDalitzPlot DP( m_mKs, m_mPi, m_mPi, m_mD0, 0, 0 );
+
+ // Clear the internal vector of (resonance, coeff) pairs
+ m_resonances.clear();
+
+ // rho BW
+ const EvtDalitzReso rhoBW( DP, AB, BC, vector, 0.77155, 0.13469, RBW, 5.0,
+ 1.5 );
+ const EvtComplex rhoCoeff( 1.0, 0.0 );
+ m_resonances.push_back( std::make_pair( rhoBW, rhoCoeff ) );
+
+ // Omega BW
+ const EvtDalitzReso omegaBW( DP, AB, BC, vector, 0.78265, 0.00849, RBW, 5.0,
+ 1.5 );
+ const EvtComplex omegaCoeff( -0.019829903319132, 0.033339785741436 );
+ m_resonances.push_back( std::make_pair( omegaBW, omegaCoeff ) );
+
+ // K*(892)- BW
+ const EvtDalitzReso KstarBW( DP, BC, AB, vector, 0.893709298220334,
+ 0.047193287094108, RBW, 5.0, 1.5 );
+ const EvtComplex KstarCoeff( -1.255025021860793, 1.176780750003210 );
+ m_resonances.push_back( std::make_pair( KstarBW, KstarCoeff ) );
+
+ // K*0(1430)- LASS
+ const double LASS_F = 0.955319683174069;
+ const double LASS_phi_F = 0.001737032480754;
+ const double LASS_R = 1.0;
+ const double LASS_phi_R = -1.914503836666840;
+ const double LASS_a = 0.112673863011817;
+ const double LASS_r = -33.799002116066454;
+ const EvtDalitzReso Kstar0_1430LASS = EvtDalitzReso(
+ DP, AB, 1.440549945739415, 0.192611512914605, LASS_a, LASS_r, LASS_F,
+ LASS_phi_F, LASS_R, LASS_phi_R, false, -1.0 );
+ const EvtComplex Kstar0_1430Coeff( -0.386469884688245, 2.330315087713914 );
+ m_resonances.push_back( std::make_pair( Kstar0_1430LASS, Kstar0_1430Coeff ) );
+
+ // K*2(1430)- BW
+ const EvtDalitzReso Kstar2_1430BW( DP, BC, AB, tensor, 1.4256, 0.0985, RBW,
+ 5.0, 1.5 );
+ const EvtComplex Kstar2_1430Coeff( 0.914470111251261, -0.885129049790117 );
+ m_resonances.push_back( std::make_pair( Kstar2_1430BW, Kstar2_1430Coeff ) );
+
+ // K*(1680)- BW
+ const EvtDalitzReso Kstar_1680BW( DP, BC, AB, vector, 1.717, 0.322, RBW,
+ 5.0, 1.5 );
+ const EvtComplex Kstar_1680Coeff( -1.560837188791231, -2.916210561577914 );
+ m_resonances.push_back( std::make_pair( Kstar_1680BW, Kstar_1680Coeff ) );
+
+ // K*(1410)- BW
+ const EvtDalitzReso Kstar_1410BW( DP, BC, AB, vector, 1.414, 0.232, RBW,
+ 5.0, 1.5 );
+ const EvtComplex Kstar_1410Coeff( -0.046795079734847, 0.283085379985959 );
+ m_resonances.push_back( std::make_pair( Kstar_1410BW, Kstar_1410Coeff ) );
+
+ // K*(892)+ DCS BW
+ const EvtDalitzReso Kstar_DCSBW( DP, BC, AC, vector, 0.893709298220334,
+ 0.047193287094108, RBW, 5.0, 1.5 );
+ const EvtComplex Kstar_DCSCoeff( 0.121693743404499, -0.110206354657867 );
+ m_resonances.push_back( std::make_pair( Kstar_DCSBW, Kstar_DCSCoeff ) );
+
+ // K*0(1430)+ DCS LASS
+ const EvtDalitzReso Kstar0_1430_DCSLASS = EvtDalitzReso(
+ DP, AC, 1.440549945739415, 0.192611512914605, LASS_a, LASS_r, LASS_F,
+ LASS_phi_F, LASS_R, LASS_phi_R, false, -1.0 );
+ const EvtComplex Kstar0_1430_DCSCoeff( -0.101484805664368, 0.032368302993344 );
+ m_resonances.push_back(
+ std::make_pair( Kstar0_1430_DCSLASS, Kstar0_1430_DCSCoeff ) );
+
+ // K*2(1430)+ DCS BW
+ const EvtDalitzReso Kstar2_1430_DCSBW( DP, AB, AC, tensor, 1.4256, 0.0985,
+ RBW, 5.0, 1.5 );
+ const EvtComplex Kstar2_1430_DCSCoeff( 0.000699701539252, -0.102571188336701 );
+ m_resonances.push_back(
+ std::make_pair( Kstar2_1430_DCSBW, Kstar2_1430_DCSCoeff ) );
+
+ // K*(1410)+ DCS BW
+ const EvtDalitzReso Kstar_1410_DCSBW( DP, BC, AC, vector, 1.414, 0.232, RBW,
+ 5.0, 1.5 );
+ const EvtComplex Kstar_1410_DCSCoeff( -0.181330401419455, 0.103990039950039 );
+ m_resonances.push_back(
+ std::make_pair( Kstar_1410_DCSBW, Kstar_1410_DCSCoeff ) );
+
+ // f2(1270) BW
+ const EvtDalitzReso f2_1270BW( DP, AB, BC, tensor, 1.2751, 0.1842, RBW, 5.0,
+ 1.5 );
+ const EvtComplex f2_1270Coeff( 1.151785277682948, -0.845612891825272 );
+ m_resonances.push_back( std::make_pair( f2_1270BW, f2_1270Coeff ) );
+
+ // rho(1450) BW
+ const EvtDalitzReso rho_1450BW( DP, AB, BC, vector, 1.465, 0.400, RBW, 5.0,
+ 1.5 );
+ const EvtComplex rho_1450Coeff( -0.597963342540235, 2.787903868470057 );
+ m_resonances.push_back( std::make_pair( rho_1450BW, rho_1450Coeff ) );
+
+ // K-matrix pole 1
+ const double sProd0 = -0.07;
+ const EvtDalitzReso pole1( DP, BC, "Pole1", KMAT, 0, 0, 0, 0, sProd0 );
+ const EvtComplex p1Coeff( 3.122415682166643, 7.928823290976309 );
+ m_resonances.push_back( std::make_pair( pole1, p1Coeff ) );
+
+ // K-matrix pole 2
+ const EvtDalitzReso pole2( DP, BC, "Pole2", KMAT, 0, 0, 0, 0, sProd0 );
+ const EvtComplex p2Coeff( 11.139907856904129, 4.948420661321371 );
+ m_resonances.push_back( std::make_pair( pole2, p2Coeff ) );
+
+ // K-matrix pole 3
+ const EvtDalitzReso pole3( DP, BC, "Pole3", KMAT, 0, 0, 0, 0, sProd0 );
+ const EvtComplex p3Coeff( 29.146102368470210, -0.053588781806890 );
+ m_resonances.push_back( std::make_pair( pole3, p3Coeff ) );
+
+ // K-matrix pole 4
+ const EvtDalitzReso pole4( DP, BC, "Pole4", KMAT, 0, 0, 0, 0, sProd0 );
+ const EvtComplex p4Coeff( 6.631556203215280, -8.455370251307063 );
+ m_resonances.push_back( std::make_pair( pole4, p4Coeff ) );
+
+ // K-matrix pole 5 is not included since its amplitude coefficient is zero
+
+ // K-matrix slowly varying part
+ const EvtComplex fProd11( -4.724094278696236, -6.511009103363590 );
+ const EvtComplex fProd12( -23.289333360304212, -12.215597571354197 );
+ const EvtComplex fProd13( -1.860311896516422, -32.982507366353126 );
+ const EvtComplex fProd14( -13.638752211193912, -22.339804683783186 );
+ const EvtComplex fProd15( 0.0, 0.0 );
+
+ const EvtDalitzReso KMSVP( DP, BC, "f11prod", KMAT, fProd12 / fProd11,
+ fProd13 / fProd11, fProd14 / fProd11,
+ fProd15 / fProd11, sProd0 );
+ m_resonances.push_back( std::make_pair( KMSVP, fProd11 ) );
+}
+
+void EvtD0ToKspipi::setPDGValues()
+{
+ // Set the EvtIds
+ m_BP = EvtPDL::getId( "B+" );
+ m_BM = EvtPDL::getId( "B-" );
+ m_B0 = EvtPDL::getId( "B0" );
+ m_B0B = EvtPDL::getId( "anti-B0" );
+ m_D0 = EvtPDL::getId( "D0" );
+ m_D0B = EvtPDL::getId( "anti-D0" );
+ m_KM = EvtPDL::getId( "K-" );
+ m_KP = EvtPDL::getId( "K+" );
+ m_K0 = EvtPDL::getId( "K0" );
+ m_K0B = EvtPDL::getId( "anti-K0" );
+ m_KL = EvtPDL::getId( "K_L0" );
+ m_KS = EvtPDL::getId( "K_S0" );
+ m_PIM = EvtPDL::getId( "pi-" );
+ m_PIP = EvtPDL::getId( "pi+" );
+
+ // Set the particle masses
+ m_mD0 = EvtPDL::getMeanMass( m_D0 );
+ m_mKs = EvtPDL::getMeanMass( m_KS );
+ m_mPi = EvtPDL::getMeanMass( m_PIP );
+ m_mK = EvtPDL::getMeanMass( m_KP );
+}
diff --git a/src/EvtGenModels/EvtModelReg.cpp b/src/EvtGenModels/EvtModelReg.cpp
--- a/src/EvtGenModels/EvtModelReg.cpp
+++ b/src/EvtGenModels/EvtModelReg.cpp
@@ -56,6 +56,7 @@
#include "EvtGenModels/EvtBtoXsll.hh"
#include "EvtGenModels/EvtCBTo3piMPP.hh"
#include "EvtGenModels/EvtCBTo3piP00.hh"
+#include "EvtGenModels/EvtD0ToKspipi.hh"
#include "EvtGenModels/EvtD0gammaDalitz.hh"
#include "EvtGenModels/EvtD0mixDalitz.hh"
#include "EvtGenModels/EvtDDalitz.hh"
@@ -286,6 +287,7 @@
modelist.registerModel( new EvtDMix );
modelist.registerModel( new EvtD0mixDalitz );
modelist.registerModel( new EvtD0gammaDalitz );
+ modelist.registerModel( new EvtD0ToKspipi );
modelist.registerModel( new EvtbTosllAli );
modelist.registerModel( new EvtBaryonPCR );

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 18, 7:22 PM (10 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3800938
Default Alt Text
D119.id502.diff (62 KB)

Event Timeline