30 model_name=
"DsToKKmunu";
181 if(pid == -321) charm = 1;
183 double m2, q2, cosV, cosL, chi;
184 KinVGen(K,
pi, e, nu, charm,
m2, q2, cosV, cosL, chi);
185 double prob = calPDF(
m2, q2, cosV, cosL, chi);
200 boost.
set(vp4_KPi.
get(0), -vp4_KPi.
get(1), -vp4_KPi.
get(2), -vp4_KPi.
get(3));
213 double sinx =
C.cross(V).dot(D);
214 double cosx =
C.dot(D);
215 chi = sinx>0? acos(cosx): -acos(cosx);
216 if(charm==-1) chi=-chi;
219double EvtDsToKKmunu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi) {
220 double delta[5] = {0};
221 double amplitude[5] = {0};
252 double amplitude_temp, delta_temp;
254 for(
int index=1; index<nAmps; index++)
260 NRS(m,
q, rS, rS1, a_delta, b_delta, mA, m0_1430_S, width0_1430_S, amplitude_temp, delta_temp, f10,f40);
261 amplitude[index] = amplitude_temp;
262 delta[index] = delta_temp;
269 ResonanceP(m,
q, mV, mA, V_0, A1_0, A2_0, m0, width0, rBW, amplitude_temp, delta_temp, f11, f21, f31,f41);
270 amplitude[index] = amplitude_temp;
271 delta[index] = delta_temp;
272 coef = getCoef(rho, phi);
282 ResonanceP(m,
q, mV, mA, V_0, A1_0, A2_0, m0_1410, width0_1410, rBW, amplitude_temp, delta_temp, f11, f21, f31,f41);
283 amplitude[index] = amplitude_temp;
284 delta[index] = delta_temp;
285 coef = getCoef(rho_1410, phi_1410);
294 ResonanceD(m,
q, mV, mA, TV_0, T1_0, T2_0, m0_1430, width0_1430, rBW, amplitude_temp, delta_temp, f12, f22, f32);
295 amplitude[index] = amplitude_temp;
296 delta[index] = delta_temp;
297 coef = getCoef(rho_1430, phi_1430);
305 std::cout<<
"No such form factor type!!!"<<std::endl;
312 double I,I1,I2,I3,I4,I5,I6,I7,I8,I9;
314 double cosV2 = cosV*cosV;
315 double sinV = sqrt(1.0-cosV2);
316 double sinV2 = sinV*sinV;
318 double betaL =(1- mu*mu/q2);
320 EvtComplex F1 = F10 + F11*cosV + F12*(1.5*cosV2-0.5);
321 EvtComplex F2 = F21*root1d2 + F22*cosV*root3d2;
322 EvtComplex F3 = F31*root1d2 + F32*cosV*root3d2;
335 I1 = 0.25*(2- betaL)*betaL*
real((F1*(
conj(F1)))) + ((betaL/2.0)-(betaL*betaL/8.0))*(sinV2)*(
real((F2*
conj(F2))) +
real((F3*
conj(F3)))) + 0.5*(1- betaL)*betaL*
real((F4*(
conj(F4))));
338 I4 =
real((
conj(F2)*F1))*sinV*0.5*(betaL*betaL);
339 I5 =
real((
conj(F3)*F1 - ((1-betaL))*
conj(F4)*F2))*sinV*(betaL);
340 I6 = (betaL)*
real((
conj(F3)*F2*sinV2 + (1-betaL)*
conj(F4)*F1));
341 I7 =
imag((
conj(F2)*F1*sinV*(betaL)+sinV*(betaL)*(1-betaL)*
conj(F4)*F3));
342 I8 =
imag((
conj(F3)*F1))*sinV*(0.5)*(betaL*betaL);
343 I9 =
imag((
conj(F3)*F2))*sinV2*(-0.5)*(betaL*betaL);
357 double coschi =
cos(chi);
358 double sinchi =
sin(chi);
359 double sin2chi = 2.0*sinchi*coschi;
360 double cos2chi = 1.0 - 2.0*sinchi*sinchi;
362 double sinL = sqrt(1.-cosL*cosL);
363 double sinL2 = sinL*sinL;
364 double sin2L = 2.0*sinL*cosL;
365 double cos2L = 1.0 - 2.0*sinL2;
367 I = I1 + I2*cos2L + I3*sinL2*cos2chi + I4*sin2L*coschi + I5*sinL*coschi + I6*cosL + I7*sinL*sinchi + I8*sin2L*sinchi + I9*sinL2*sin2chi;
371void EvtDsToKKmunu::ResonanceP(
double m,
double q,
double mV,
double mA,
double V_0,
double A1_0,
double A2_0,
double m0,
double width0,
double rBW,
double& amplitude,
double&
delta,
EvtComplex& F11,
EvtComplex& F21,
EvtComplex& F31,
EvtComplex& F41)
373 double pKPi = getPStar(mD, m,
q);
380 double summDm = mD+m;
381 double V = V_0 /(1.0-q2/(mV2));
382 double A1 = A1_0/(1.0-q2/(mA2));
383 double A2 = A2_0/(1.0-q2/(mA2));
384 double A = summDm*A1;
385 double B = 2.0*mD*pKPi/summDm*V;
386 double A0 = ((mD+m)*A1-(mD-m)*A2)/(2*m);
389 double H0 = 0.5/(m*
q)*((mD2-
m2-q2)*summDm*A1-4.0*(mD2*pKPi*pKPi)/summDm*A2);
395 double B_Kstar = 0.4920;
396 double pStar0 = getPStar(m0, mPi, mK);
397 double alpha = sqrt(3.*Pi*B_Kstar/(pStar0*width0));
400 double F = getF1(m, m0, mPi, mK, rBW);
401 double width = getWidth1(m, m0, mPi, mK, width0, rBW);
405 double BB = -m0*width;
407 amplitude =
abs(amp);
410 double alpham2 =
alpha*2.0;
411 double alpham3 =
alpha*4.0;
412 F11 = amp*alpham2*
q*H0*root2;
413 F21 = amp*alpham2*
q*(Hp+Hm);
414 F31 = amp*alpham2*
q*(Hp-Hm);
415 F41 = amp*alpham3*
q*(mD*pKPi*A0/
q)*root2;
418void EvtDsToKKmunu::NRS(
double m,
double q,
double rS,
double rS1,
double a_delta,
double b_delta,
double mA,
double m0,
double width0,
double& amplitude,
double&
delta,
EvtComplex& F10,
EvtComplex& F40)
420 static const double tmp = (mK+mPi)*(mK+mPi);
425 double pKPi = getPStar(mD, m,
q);
426 double m_K0_1430 = m0;
427 double width_K0_1430 = width0;
428 double m2_K0_1430 = m_K0_1430*m_K0_1430;
429 double width = getWidth0(m, m_K0_1430, mPi, mK, width_K0_1430);
434 x = sqrt(
m2/tmp-1.0);
437 x = sqrt(m2_K0_1430/tmp-1.0);
439 Pm *= m_K0_1430*width_K0_1430/sqrt((m2_K0_1430-
m2)*(m2_K0_1430-
m2)+m2_K0_1430*width*width);
443 double pStar = getPStar(m, mPi, mK);
444 double delta_bg = atan(2.*a_delta*pStar/(2.+a_delta*b_delta*pStar*pStar));
445 delta_bg = (delta_bg>0)? delta_bg: (delta_bg+Pi);
447 double delta_K0_1430 = atan(m_K0_1430*width/(m2_K0_1430-
m2));
448 delta_K0_1430 = (delta_K0_1430>0)? delta_K0_1430: (delta_K0_1430+Pi);
449 delta = delta_bg + delta_K0_1430;
455 F10 = amp*pKPi*mD/(1.-q2/mA2);
456 F40 = amp*q2/(1-q2/mA2);
459void EvtDsToKKmunu::ResonanceD(
double m,
double q,
double mV,
double mA,
double TV_0,
double T1_0,
double T2_0,
double m0,
double width0,
double rBW,
double& amplitude,
double&
delta,
EvtComplex& F12,
EvtComplex& F22,
EvtComplex& F32)
461 double pKPi = getPStar(mD, m,
q);
468 double summDm = mD+m;
469 double TV = TV_0 /(1.0-q2/(mV2));
470 double T1 = T1_0/(1.0-q2/(mA2));
471 double T2 = T2_0/(1.0-q2/(mA2));
474 double F = getF2(m, m0, mPi, mK, rBW);
475 double width = getWidth2(m, m0, mPi, mK, width0, rBW);
478 double BB = -m0*width;
481 amplitude =
abs(amp);
484 F12 = amp*mD*pKPi/3.*((mD2-
m2-q2)*summDm*T1-mD2*pKPi*pKPi/summDm*T2);
485 F22 = amp*root2d3*mD*m*
q*pKPi*summDm*T1;
486 F32 = amp*root2d3*2.*mD2*m*
q*pKPi*pKPi/summDm*TV;
489double EvtDsToKKmunu::getPStar(
double m,
double m1,
double m2)
494 double x =
s + s1 - s2;
495 double t = 0.25*
x*
x/
s - s1;
500 std::cout <<
" Hello, pstar is less than 0.0" << std::endl;
506double EvtDsToKKmunu::getF1(
double m,
double m0,
double m_c1,
double m_c2,
double rBW)
508 double pStar = getPStar(m, m_c1, m_c2);
509 double pStar0 = getPStar(m0, m_c1, m_c2);
510 double rBW2 = rBW*rBW;
511 double pStar2 = pStar*pStar;
512 double pStar02 = pStar0*pStar0;
513 double B = 1./sqrt(1.+rBW2*pStar2);
514 double B0 = 1./sqrt(1.+rBW2*pStar02);
515 double F = pStar/pStar0*
B/B0;
519double EvtDsToKKmunu::getF2(
double m,
double m0,
double m_c1,
double m_c2,
double rBW)
521 double pStar = getPStar(m, m_c1, m_c2);
522 double pStar0 = getPStar(m0, m_c1, m_c2);
523 double rBW2 = rBW*rBW;
524 double pStar2 = pStar*pStar;
525 double pStar02 = pStar0*pStar0;
526 double B = 1./sqrt((rBW2*pStar2-3.)*(rBW2*pStar2-3.)+9.*rBW2*pStar2);
527 double B0 = 1./sqrt((rBW2*pStar02-3.)*(rBW2*pStar02-3.)+9.*rBW2*pStar02);
528 double F = pStar2/pStar02*
B/B0;
532double EvtDsToKKmunu::getWidth0(
double m,
double m0,
double m_c1,
double m_c2,
double width0)
534 double pStar = getPStar(m, m_c1, m_c2);
535 double pStar0 = getPStar(m0, m_c1, m_c2);
536 double width = width0*pStar/pStar0*m0/m;
540double EvtDsToKKmunu::getWidth1(
double m,
double m0,
double m_c1,
double m_c2,
double width0,
double rBW)
542 double pStar = getPStar(m, m_c1, m_c2);
543 double pStar0 = getPStar(m0, m_c1, m_c2);
544 double F = getF1(m, m0, m_c1, m_c2, rBW);
545 double width = width0*pStar/pStar0*m0/m*F*F;
549double EvtDsToKKmunu::getWidth2(
double m,
double m0,
double m_c1,
double m_c2,
double width0,
double rBW)
551 double pStar = getPStar(m, m_c1, m_c2);
552 double pStar0 = getPStar(m0, m_c1, m_c2);
553 double F = getF2(m, m0, m_c1, m_c2, rBW);
554 double width = width0*pStar/pStar0*m0/m*F*F;
558EvtComplex EvtDsToKKmunu::getCoef(
double rho,
double phi)
double sin(const BesAngle a)
double cos(const BesAngle a)
Evt3Rank3C conj(const Evt3Rank3C &t2)
double imag(const EvtComplex &c)
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
****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 checkSpinDaughter(int d1, EvtSpinType::spintype sp)
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)
void decay(EvtParticle *p)
void getName(std::string &name)
static int getStdHep(EvtId id)
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double dot(const EvtVector4R &v2) const
EvtVector4R cross(const EvtVector4R &v2)
void set(int i, double d)