47 _mDp2inv = 1. / _mDp2;
53 c_meson_radius_inter = 1.5;
54 c_meson_radius_Dp = 5;
77 for (
int i = 0; i < _nd; i++ )
82 double prob = AmplitudeSquare();
87double EvtDToKSKpi0::twoBodyCMmom(
double rMassSq,
double d1m,
double d2m ) {
88 double kin1 = 1 - pow( d1m + d2m, 2 ) / rMassSq;
89 kin1 = kin1 >= 0 ? sqrt( kin1 ) : 1;
90 double kin2 = 1 - pow( d1m - d2m, 2 ) / rMassSq;
91 kin2 = kin2 >= 0 ? sqrt( kin2 ) : 1;
93 double ret = 0.5 * sqrt( rMassSq ) * kin1 * kin2;
97double EvtDToKSKpi0::dampingFactorSquare(
const double& cmmom,
const int& spin,
98 const double& mRadius ) {
99 double square = mRadius * mRadius * cmmom * cmmom;
100 double dfsq = 1 + square;
102 double dfsqres = dfsq + 8 + 2 * square + square * square;
105 double ret = ( spin == 2 ) ? dfsqres : dfsq;
110double EvtDToKSKpi0::spinFactor(
int spin,
double motherMass,
double daug1Mass,
111 double daug2Mass,
double daug3Mass,
double m12,
double m13,
113 if ( spin == 0 )
return 1;
115 double _mA = daug1Mass;
116 double _mB = daug2Mass;
117 double _mC = daug3Mass;
122 double massFactor = 1.0 / _mAB;
124 sFactor *= ( ( _mBC - _mAC ) + ( massFactor * ( motherMass * motherMass - _mC * _mC ) *
125 ( _mA * _mA - _mB * _mB ) ) );
130 double extraterm = ( ( _mAB - ( 2 * motherMass * motherMass ) - ( 2 * _mC * _mC ) ) +
131 massFactor * pow( motherMass * motherMass - _mC * _mC, 2 ) );
132 extraterm *= ( ( _mAB - ( 2 * _mA * _mA ) - ( 2 * _mB * _mB ) ) +
133 massFactor * pow( _mA * _mA - _mB * _mB, 2 ) );
135 sFactor -= extraterm;
142EvtComplex EvtDToKSKpi0::RBW(
int id,
double resmass,
double reswidth,
int spin ) {
143 double resmass2 = pow( resmass, 2 );
145 EvtVector4R
p1,
p2, p3;
146 double mass_daug1, mass_daug2, mass_daug3;
150 mass_daug1 = pi0Mass;
161 mass_daug2 = pi0Mass;
172 mass_daug3 = pi0Mass;
175 double rMassSq = (
p1 +
p2 ).mass2();
176 double m12 = (
p1 +
p2 ).mass2();
177 double m13 = (
p1 + p3 ).mass2();
178 double m23 = (
p2 + p3 ).mass2();
180 double rMass = sqrt( rMassSq );
185 double measureDaughterMoms = twoBodyCMmom( rMassSq, mass_daug1, mass_daug2 );
186 double nominalDaughterMoms = twoBodyCMmom( resmass2, mass_daug1, mass_daug2 );
190 frFactor = dampingFactorSquare( nominalDaughterMoms, spin, c_meson_radius_inter ) /
191 dampingFactorSquare( measureDaughterMoms, spin, c_meson_radius_inter );
193 double measureDaughterMoms2 =
194 twoBodyCMmom( c_motherMass * c_motherMass, rMass, mass_daug3 );
195 double nominalDaughterMoms2 =
196 twoBodyCMmom( c_motherMass * c_motherMass, resmass, mass_daug3 );
197 fdFactor = dampingFactorSquare( nominalDaughterMoms2, spin, c_meson_radius_Dp ) /
198 dampingFactorSquare( measureDaughterMoms2, spin, c_meson_radius_Dp );
200 double A = ( resmass2 - rMassSq );
201 double B = resmass2 * reswidth *
202 pow( measureDaughterMoms / nominalDaughterMoms, 2.0 * spin + 1 ) * frFactor /
204 double C = 1.0 / ( pow( A, 2 ) + pow( B, 2 ) );
206 EvtComplex ret( A *
C, B *
C );
207 ret *= sqrt( frFactor * fdFactor );
208 ret *= spinFactor( spin, c_motherMass, mass_daug1, mass_daug2, mass_daug3, m12, m13, m23 );
219EvtComplex EvtDToKSKpi0::Flatte(
int id,
double resmass,
double g1,
double rg2og1 ) {
220 double resmass2 = pow( resmass, 2 );
222 EvtVector4R
p1,
p2, p3;
223 double mass_daug1, mass_daug2, mass_daug3;
227 mass_daug1 = pi0Mass;
238 mass_daug2 = pi0Mass;
249 mass_daug3 = pi0Mass;
252 double rMassSq = (
p1 +
p2 ).mass2();
253 double m12 = (
p1 +
p2 ).mass2();
254 double m13 = (
p1 + p3 ).mass2();
255 double m23 = (
p2 + p3 ).mass2();
256 double rMass = sqrt( rMassSq );
260 double rhoetapi = 2 * twoBodyCMmom(
s, KsMass, KpMass ) / sqrt(
s );
261 double rhoKKbar = 2 * twoBodyCMmom(
s, etamass, pipMass ) / sqrt(
s );
262 double img = rhoetapi *
g1 + rhoKKbar *
g1 * rg2og1;
264 EvtComplex ret = EvtComplex( 1, 0 ) / EvtComplex( resmass * resmass -
s, -img );
269EvtComplex EvtDToKSKpi0::LASS(
int id,
double resmass,
double reswidth ) {
271 double resmass2 = pow( resmass, 2 );
273 EvtVector4R
p1,
p2, p3;
274 double mass_daug1, mass_daug2, mass_daug3;
278 mass_daug1 = pi0Mass;
289 mass_daug2 = pi0Mass;
300 mass_daug3 = pi0Mass;
303 double rMassSq = (
p1 +
p2 ).mass2();
304 double m12 = (
p1 +
p2 ).mass2();
305 double m13 = (
p1 + p3 ).mass2();
306 double m23 = (
p2 + p3 ).mass2();
308 double rMass = sqrt( rMassSq );
313 double measureDaughterMoms = twoBodyCMmom( rMassSq, mass_daug1, mass_daug2 );
314 double nominalDaughterMoms = twoBodyCMmom( resmass2, mass_daug1, mass_daug2 );
317 frFactor = dampingFactorSquare( nominalDaughterMoms, spin, c_meson_radius_inter ) /
318 dampingFactorSquare( measureDaughterMoms, spin, c_meson_radius_inter );
319 double measureDaughterMoms2 =
320 twoBodyCMmom( c_motherMass * c_motherMass, rMass, mass_daug3 );
321 double nominalDaughterMoms2 =
322 twoBodyCMmom( c_motherMass * c_motherMass, resmass, mass_daug3 );
323 fdFactor = dampingFactorSquare( nominalDaughterMoms2, spin, c_meson_radius_Dp ) /
324 dampingFactorSquare( measureDaughterMoms2, spin, c_meson_radius_Dp );
327 double q = measureDaughterMoms;
328 double g = reswidth * pow( measureDaughterMoms / nominalDaughterMoms, 2.0 * spin + 1 ) *
329 frFactor / sqrt( rMassSq );
332 const double _a = 0.113;
333 const double _r = -33.8;
335 const double _phiR = -109.7 * 3.141592653 / 180.0;
336 const double _B = 0.96;
337 const double _phiB = 0.1 * 3.141592653 / 180.0;
340 double cot_deltaB = ( 1.0 / ( _a *
q ) ) + 0.5 * _r *
q;
341 double qcot_deltaB = ( 1.0 / _a ) + 0.5 * _r *
q *
q;
344 EvtComplex expi2deltaB = EvtComplex( qcot_deltaB,
q ) / EvtComplex( qcot_deltaB, -
q );
345 EvtComplex resT = EvtComplex(
cos( _phiR + 2 * _phiB ),
sin( _phiR + 2 * _phiB ) ) * _R;
347 EvtComplex prop = EvtComplex( 1, 0 ) / EvtComplex( resmass2 - rMassSq, -(resmass)*g );
348 resT *= prop * ( resmass2 * reswidth / nominalDaughterMoms ) * expi2deltaB;
351 resT += EvtComplex(
cos( _phiB ),
sin( _phiB ) ) * _B *
352 (
cos( _phiB ) + cot_deltaB *
sin( _phiB ) ) * sqrt( rMassSq ) /
353 EvtComplex( qcot_deltaB, -
q );
355 resT *= sqrt( frFactor * fdFactor );
356 resT *= spinFactor( spin, c_motherMass, mass_daug1, mass_daug2, mass_daug3, m12, m13, m23 );
361double EvtDToKSKpi0::AmplitudeSquare() {
362 EvtVector4R dp1 = GetDaugMomLab( 0 );
363 EvtVector4R dp2 = GetDaugMomLab( 1 );
364 EvtVector4R dp3 = GetDaugMomLab( 2 );
369 const double K892pMass = 0.89176;
370 const double K892pWidth = 0.0503;
372 const double K892zeroMass = 0.89555;
373 const double K892zeroWidth = 0.0473;
375 const double a980pMass = 0.980;
376 const double c_g1 = 0.341;
377 const double c_g2og1 = 0.892;
379 const double K1410zeroMass = 1.421;
380 const double K1410zeroWidth = 0.236;
382 const double a1450pMass = 1.474;
383 const double a1450pWidth = 0.265;
385 const double SwaveKppi0Mass = 1.441;
386 const double SwaveKppi0Width = 0.193;
388 const double SwaveKspi0Mass = 1.441;
389 const double SwaveKspi0Width = 0.193;
391 EvtComplex temp( 0.0, 0.0 );
393 EvtComplex amp_K892p( 1, 0 );
394 EvtComplex amp_K892zero( -0.3903972065719, 0.1298035433874 );
395 EvtComplex amp_SwaveKppi0( -1.543197997647, 1.30109134697 );
396 EvtComplex amp_SwaveKspi0( -3.123793580183, -0.3449005761848 );
398 temp += amp_K892p * ( RBW( 1, K892pMass, K892pWidth, 1 ) );
399 temp += amp_K892zero * ( RBW( 2, K892zeroMass, K892zeroWidth, 1 ) );
400 temp += amp_SwaveKppi0 * ( LASS( 1, SwaveKppi0Mass, SwaveKppi0Width ) );
401 temp += amp_SwaveKspi0 * ( LASS( 2, SwaveKspi0Mass, SwaveKspi0Width ) );
403 double ret = pow(
abs( temp ), 2 );
404 return ( ret <= 0 ) ? 1e-20 : ret;
double sin(const BesAngle a)
double cos(const BesAngle a)
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
***************************************************************************************Pseudo Class RRes *****************************************************************************************Parameters and physical constants **Maarten sept ************************************************************************DOUBLE PRECISION xsmu **************************************************************************PARTICLE DATA all others are from PDG *Only resonances with known widths into electron pairs are sept ************************************************************************C Declarations C
void getName(std::string &name)
void decay(EvtParticle *p)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void setProb(double prob)
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)