30 model_name=
"DsToKKenu";
101 Pi = atan2(0.0,-1.0);
103 root2d3 = sqrt(2./3);
144 if(pid == -321) charm = 1;
146 double m2, q2, cosV, cosL, chi;
147 KinVGen(K,
pi, e, nu, charm,
m2, q2, cosV, cosL, chi);
148 double prob = calPDF(
m2, q2, cosV, cosL, chi);
162 boost.
set(vp4_KPi.
get(0), -vp4_KPi.
get(1), -vp4_KPi.
get(2), -vp4_KPi.
get(3));
175 double sinx =
C.cross(V).dot(D);
176 double cosx =
C.dot(D);
177 chi = sinx>0? acos(cosx): -acos(cosx);
178 if(charm==-1) chi=-chi;
181double EvtDsToKKenu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi) {
182 double delta[5] = {0};
183 double amplitude[5] = {0};
204 double amplitude_temp, delta_temp;
206 for(
int index=0; index<nAmps; index++)
220 ResonanceSf0(m,
q, mA, m0, g1, g2, amplitude_temp, delta_temp, f10);
221 amplitude[index] = amplitude_temp;
222 delta[index] = delta_temp;
223 coef = getCoef(rho_f0, phi_f0);
224 F10 = F10 + coef*f10;
230 ResonanceP(m,
q, mV, mA, V_0, A1_0, A2_0, m0, width0, rBW, amplitude_temp, delta_temp, f11, f21, f31);
231 amplitude[index] = amplitude_temp;
232 delta[index] = delta_temp;
233 coef = getCoef(rho, phi);
242 ResonanceP(m,
q, mV, mA, V_0, A1_0, A2_0, m0_1410, width0_1410, rBW, amplitude_temp, delta_temp, f11, f21, f31);
243 amplitude[index] = amplitude_temp;
244 delta[index] = delta_temp;
245 coef = getCoef(rho_1410, phi_1410);
253 ResonanceD(m,
q, mV, mA, TV_0, T1_0, T2_0, m0_1430, width0_1430, rBW, amplitude_temp, delta_temp, f12, f22, f32);
254 amplitude[index] = amplitude_temp;
255 delta[index] = delta_temp;
256 coef = getCoef(rho_1430, phi_1430);
264 std::cout<<
"No such form factor type!!!"<<std::endl;
271 double I,I1,I2,I3,I4,I5,I6,I7,I8,I9;
273 double cosV2 = cosV*cosV;
274 double sinV = sqrt(1.0-cosV2);
275 double sinV2 = sinV*sinV;
277 EvtComplex F1 = F10 + F11*cosV + F12*(1.5*cosV2-0.5);
278 EvtComplex F2 = F21*root1d2 + F22*cosV*root3d2;
279 EvtComplex F3 = F31*root1d2 + F32*cosV*root3d2;
281 I1 = 0.25*(
abs2(F1) + 1.5*sinV2*(
abs2(F2) +
abs2(F3) ) );
282 I2 = -0.25*(
abs2(F1) - 0.5*sinV2*(
abs2(F2) +
abs2(F3) ) );
283 I3 = -0.25*(
abs2(F2) -
abs2(F3) )*sinV2;
289 I9 =
imag(
conj(F3)*F2 )*sinV2*(-0.5);
291 double coschi =
cos(chi);
292 double sinchi =
sin(chi);
293 double sin2chi = 2.0*sinchi*coschi;
294 double cos2chi = 1.0 - 2.0*sinchi*sinchi;
296 double sinL = sqrt(1.-cosL*cosL);
297 double sinL2 = sinL*sinL;
298 double sin2L = 2.0*sinL*cosL;
299 double cos2L = 1.0 - 2.0*sinL2;
301 I = I1 + I2*cos2L + I3*sinL2*cos2chi + I4*sin2L*coschi + I5*sinL*coschi + I6*cosL + I7*sinL*sinchi + I8*sin2L*sinchi + I9*sinL2*sin2chi;
305void EvtDsToKKenu::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)
307 double pKPi = getPStar(mD, m,
q);
314 double summDm = mD+m;
315 double V = V_0 /(1.0-q2/(mV2));
316 double A1 = A1_0/(1.0-q2/(mA2));
317 double A2 = A2_0/(1.0-q2/(mA2));
318 double A = summDm*A1;
319 double B = 2.0*mD*pKPi/summDm*V;
322 double H0 = 0.5/(m*
q)*((mD2-
m2-q2)*summDm*A1-4.0*(mD2*pKPi*pKPi)/summDm*A2);
329 double pStar0 = getPStar(m0, mK1, mK2);
331 double alpha = sqrt(3.0*Pi*BF/(pStar0*width0));
334 double F = getF1(m, m0, mK1, mK2, rBW);
335 double width = getWidth1(m, m0, mK1, mK2, width0, rBW);
339 double BB = -m0*width;
341 amplitude =
abs(amp);
344 double alpham2 =
alpha*2.0;
345 F11 = amp*alpham2*
q*H0*root2;
346 F21 = amp*alpham2*
q*(Hp+Hm);
347 F31 = amp*alpham2*
q*(Hp-Hm);
415void EvtDsToKKenu::ResonanceSf0(
double m,
double q,
double mA,
double m0,
double g1,
double g2,
double& amplitude,
double&
delta,
EvtComplex& F10)
417 double pKPi = getPStar(mD, m,
q);
426 double aa3 = m2f0-
m2;
427 bb3 = getrho(
m2,mPi)*
g1 + getrho(
m2,mK1)*g2;
430 amplitude =
abs(amp);
433 F10 = amp*pKPi*mD/(1.0-q2/mA2);
437void EvtDsToKKenu::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)
439 double pKPi = getPStar(mD, m,
q);
446 double summDm = mD+m;
447 double TV = TV_0 /(1.0-q2/(mV2));
448 double T1 = T1_0/(1.0-q2/(mA2));
449 double T2 = T2_0/(1.0-q2/(mA2));
452 double F = getF2(m, m0, mK1, mK2, rBW);
453 double width = getWidth2(m, m0, mK1, mK2, width0, rBW);
456 double BB = -m0*width;
459 amplitude =
abs(amp);
462 F12 = amp*mD*pKPi/3.*((mD2-
m2-q2)*summDm*T1-mD2*pKPi*pKPi/summDm*T2);
463 F22 = amp*root2d3*mD*m*
q*pKPi*summDm*T1;
464 F32 = amp*root2d3*2.*mD2*m*
q*pKPi*pKPi/summDm*TV;
473 if ((1.0-4.0*mX*mX/
m2)>0)
474 rho = ciR*sqrt(1.0-4.0*mX*mX/
m2);
475 else rho = ciM*sqrt(4.0*mX*mX/
m2-1.0);
479double EvtDsToKKenu::getPStar(
double m,
double m1,
double m2)
484 double x =
s + s1 - s2;
485 double t = 0.25*
x*
x/
s - s1;
496double EvtDsToKKenu::getF1(
double m,
double m0,
double m_c1,
double m_c2,
double rBW)
498 double pStar = getPStar(m, m_c1, m_c2);
499 double pStar0 = getPStar(m0, m_c1, m_c2);
500 double rBW2 = rBW*rBW;
501 double pStar2 = pStar*pStar;
502 double pStar02 = pStar0*pStar0;
503 double B = 1./sqrt(1.+rBW2*pStar2);
504 double B0 = 1./sqrt(1.+rBW2*pStar02);
505 double F = pStar/pStar0*
B/B0;
509double EvtDsToKKenu::getF2(
double m,
double m0,
double m_c1,
double m_c2,
double rBW)
511 double pStar = getPStar(m, m_c1, m_c2);
512 double pStar0 = getPStar(m0, m_c1, m_c2);
513 double rBW2 = rBW*rBW;
514 double pStar2 = pStar*pStar;
515 double pStar02 = pStar0*pStar0;
516 double B = 1./sqrt((rBW2*pStar2-3.)*(rBW2*pStar2-3.)+9.*rBW2*pStar2);
517 double B0 = 1./sqrt((rBW2*pStar02-3.)*(rBW2*pStar02-3.)+9.*rBW2*pStar02);
518 double F = pStar2/pStar02*
B/B0;
522double EvtDsToKKenu::getWidth0(
double m,
double m0,
double m_c1,
double m_c2,
double width0)
524 double pStar = getPStar(m, m_c1, m_c2);
525 double pStar0 = getPStar(m0, m_c1, m_c2);
526 double width = width0*pStar/pStar0*m0/m;
530double EvtDsToKKenu::getWidth1(
double m,
double m0,
double m_c1,
double m_c2,
double width0,
double rBW)
532 double pStar = getPStar(m, m_c1, m_c2);
533 double pStar0 = getPStar(m0, m_c1, m_c2);
534 double F = getF1(m, m0, m_c1, m_c2, rBW);
535 double width = width0*pStar/pStar0*m0/m*F*F;
539double EvtDsToKKenu::getWidth2(
double m,
double m0,
double m_c1,
double m_c2,
double width0,
double rBW)
541 double pStar = getPStar(m, m_c1, m_c2);
542 double pStar0 = getPStar(m0, m_c1, m_c2);
543 double F = getF2(m, m0, m_c1, m_c2, rBW);
544 double width = width0*pStar/pStar0*m0/m*F*F;
548EvtComplex EvtDsToKKenu::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)
double abs2(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 getName(std::string &name)
void decay(EvtParticle *p)
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)