34 model_name=
"D0Topipienu";
73 width0_omega = 0.00849;
136 if(pid == -211) charm = 1;
138 double m2, q2, cosV, cosL, chi;
139 KinVGen(pi1, pi2, e, nu, charm,
m2, q2, cosV, cosL, chi);
140 double prob = calPDF(
m2, q2, cosV, cosL, chi);
153 boost.
set(vp4_KPi.
get(0), -vp4_KPi.
get(1), -vp4_KPi.
get(2), -vp4_KPi.
get(3));
166 double sinx =
C.cross(V).dot(D);
167 double cosx =
C.dot(D);
168 chi = sinx>0? acos(cosx): -acos(cosx);
169 if(charm==-1) chi=-chi;
172double EvtD0Topipienu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi) {
192 for(
int index=first; index<last; index++)
198 ResonanceGS(m,
q, D0_mD, D0_mPi1, D0_mPi2, f11, f21, f31);
199 coef = getCoef(rho, phi);
207 ResonanceGS(m,
q, Dp_mD, Dp_mPi1, Dp_mPi2, f11, f21, f31);
208 coef = getCoef(rho, phi);
216 ResonancePGScbw(m,
q, f11, f21, f31);
217 coef = getCoef(rho_omega, phi_omega);
225 ResonanceSBugg(m,
q, f10);
226 coef = getCoef(rho_S, phi_S);
227 F10 = F10 + coef*f10;
232 std::cout<<
"No such form factor type!!!"<<std::endl;
239 double I,I1,I2,I3,I4,I5,I6,I7,I8,I9;
241 double cosV2 = cosV*cosV;
242 double sinV = sqrt(1.0-cosV2);
243 double sinV2 = sinV*sinV;
245 EvtComplex F1 = F10 + F11*cosV + F12*(1.5*cosV2-0.5);
246 EvtComplex F2 = F21*root1d2 + F22*cosV*root3d2;
247 EvtComplex F3 = F31*root1d2 + F32*cosV*root3d2;
249 I1 = 0.25*(
abs2(F1) + 1.5*sinV2*(
abs2(F2) +
abs2(F3) ) );
250 I2 = -0.25*(
abs2(F1) - 0.5*sinV2*(
abs2(F2) +
abs2(F3) ) );
251 I3 = -0.25*(
abs2(F2) -
abs2(F3) )*sinV2;
257 I9 =
imag(
conj(F3)*F2 )*sinV2*(-0.5);
259 double coschi =
cos(chi);
260 double sinchi =
sin(chi);
261 double sin2chi = 2.0*sinchi*coschi;
262 double cos2chi = 1.0 - 2.0*sinchi*sinchi;
264 double sinL = sqrt(1.-cosL*cosL);
265 double sinL2 = sinL*sinL;
266 double sin2L = 2.0*sinL*cosL;
267 double cos2L = 1.0 - 2.0*sinL2;
269 I = I1 + I2*cos2L + I3*sinL2*cos2chi + I4*sin2L*coschi + I5*sinL*coschi + I6*cosL + I7*sinL*sinchi + I8*sin2L*sinchi + I9*sinL2*sin2chi;
275 double pKPi = getPStar(massD, m,
q);
276 double mD2 = massD*massD;
282 double summDm = massD+m;
283 double V = V_0 /(1.0-q2/(mV2));
284 double A1 = A1_0/(1.0-q2/(mA2));
285 double A2 = A2_0/(1.0-q2/(mA2));
286 double A = summDm*A1;
287 double B = 2.0*massD*pKPi/summDm*V;
290 double H0 = 0.5/(m*
q)*((mD2-
m2-q2)*summDm*A1-4.0*(mD2*pKPi*pKPi)/summDm*A2);
296 double pStar = getPStar(m, massPi1, massPi2);
297 double pStar0 = getPStar(m0, massPi1, massPi2);
298 double alpha = sqrt(3.0*Pi*BF/(pStar0*width0));
301 double F = getF1(m, m0, massPi1, massPi2, rBW);
302 EvtComplex C(m02*(1.0+width0*getGx(m0, pStar0, massPi1, massPi2)/m0)*F, 0.0);
303 double AA = m02-
m2+width0*getFx(m02,
m2, pStar, pStar0, massPi1, massPi2);
304 double BB = -m0*getWidthrho(m, m0, width0, pStar, pStar0);
308 double alpham2 =
alpha*2.0;
309 F11 = amp*alpham2*
q*H0*root2;
310 F21 = amp*alpham2*
q*(Hp+Hm);
311 F31 = amp*alpham2*
q*(Hp-Hm);
316 double pKPi = getPStar(Dp_mD, m,
q);
317 double mD2 = Dp_mD*Dp_mD;
319 double m02 = m0_omega*m0_omega;
324 double summDm = Dp_mD+m;
325 double V = V_0 /(1.0-q2/(mV2));
326 double A1 = A1_0/(1.0-q2/(mA2));
327 double A2 = A2_0/(1.0-q2/(mA2));
328 double A = summDm*A1;
329 double B = 2.0*Dp_mD*pKPi/summDm*V;
331 double H0 = 0.5/(m*
q)*((mD2-
m2-q2)*summDm*A1-4.0*(mD2*pKPi*pKPi)/summDm*A2);
337 double pStar = getPStar(m, Dp_mPi1, Dp_mPi2);
338 double pStar0 = getPStar(m0_omega, Dp_mPi1, Dp_mPi2);
339 double alpha = sqrt(3.0*Pi*BF_omega/(pStar0*width0_omega));
342 double F = getF1(m, m0_omega, Dp_mPi1, Dp_mPi2, rBW);
348 double BB1 = -m0_omega*width0_omega;
352 pStar0 = getPStar(m0, Dp_mPi1, Dp_mPi2);
353 EvtComplex C2(mR2*(1.0+width0*getGx(m0, pStar0, Dp_mPi1, Dp_mPi2)/m0), 0.0);
354 double AA2 = mR2-
m2+width0*getFx(mR2,
m2, pStar, pStar0, Dp_mPi1, Dp_mPi2);
355 double BB2 = -m0*getWidthrho(m, m0, width0, pStar, pStar0);
360 double alpham2 =
alpha*2.0;
361 F11 = amp*alpham2*
q*H0*root2;
362 F21 = amp*alpham2*
q*(Hp+Hm);
363 F31 = amp*alpham2*
q*(Hp-Hm);
366void EvtD0Topipienu::ResonanceSBugg(
double m,
double q,
EvtComplex& F10)
368 double pKPi = getPStar(Dp_mD, m,
q);
373 double sA = 0.41*mPi*mPi;
375 double mr2 = m0_S*m0_S;
386 Gamma1 = getrho(
m2,mPi)*getG1(
m2,mr)*(
m2-sA)/(mr2-sA);
387 Gamma2 = getrho(
m2,mKa)*0.6*getG1(
m2,mr)*(
m2/mr2)*
exp(-
alpha*fabs(
m2-4.0*mKa*mKa));
388 Gamma3 = getrho(
m2,mEt)*0.2*getG1(
m2,mr)*(
m2/mr2)*
exp(-
alpha*fabs(
m2-4.0*mEt*mEt));
389 if (m > 4*mPi) Gamma4 = ciR*mr*g4pi*(1.0+
exp(7.082-2.845*mr2))/(1.0+
exp(7.082-2.845*
m2));
391 double AA = mr2-
m2-getG1(
m2,mr)*(
m2-sA)*getZ(
m2, mr2)/(mr2-sA);
392 EvtComplex amp = ciR/(ciR*AA-ciM*(Gamma1+Gamma2+Gamma3+Gamma4));
393 F10 = amp*pKPi*Dp_mD/(1.0-q2/mA2);
396double EvtD0Topipienu::getPStar(
double m,
double m1,
double m2)
401 double x =
s + s1 - s2;
402 double t = 0.25*
x*
x/
s - s1;
413double EvtD0Topipienu::getF1(
double m,
double m0,
double m_c1,
double m_c2,
double rBW)
415 double pStar = getPStar(m, m_c1, m_c2);
416 double pStar0 = getPStar(m0, m_c1, m_c2);
417 double rBW2 = rBW*rBW;
418 double pStar2 = pStar*pStar;
419 double pStar02 = pStar0*pStar0;
420 double B = 1./sqrt(1.+rBW2*pStar2);
421 double B0 = 1./sqrt(1.+rBW2*pStar02);
422 double F = pStar/pStar0*
B/B0;
426double EvtD0Topipienu::getF2(
double m,
double m0,
double m_c1,
double m_c2,
double rBW)
428 double pStar = getPStar(m, m_c1, m_c2);
429 double pStar0 = getPStar(m0, m_c1, m_c2);
430 double rBW2 = rBW*rBW;
431 double pStar2 = pStar*pStar;
432 double pStar02 = pStar0*pStar0;
433 double B = 1./sqrt((rBW2*pStar2-3.)*(rBW2*pStar2-3.)+9.*rBW2*pStar2);
434 double B0 = 1./sqrt((rBW2*pStar02-3.)*(rBW2*pStar02-3.)+9.*rBW2*pStar02);
435 double F = pStar2/pStar02*
B/B0;
439double EvtD0Topipienu::getWidth0(
double m,
double m0,
double m_c1,
double m_c2,
double width0)
441 double pStar = getPStar(m, m_c1, m_c2);
442 double pStar0 = getPStar(m0, m_c1, m_c2);
443 double width = width0*pStar/pStar0*m0/m;
447double EvtD0Topipienu::getWidth1(
double m,
double m0,
double m_c1,
double m_c2,
double width0,
double rBW)
449 double pStar = getPStar(m, m_c1, m_c2);
450 double pStar0 = getPStar(m0, m_c1, m_c2);
451 double F = getF1(m, m0, m_c1, m_c2, rBW);
452 double width = width0*pStar/pStar0*m0/m*F*F;
456double EvtD0Topipienu::getWidth2(
double m,
double m0,
double m_c1,
double m_c2,
double width0,
double rBW)
458 double pStar = getPStar(m, m_c1, m_c2);
459 double pStar0 = getPStar(m0, m_c1, m_c2);
460 double F = getF2(m, m0, m_c1, m_c2, rBW);
461 double width = width0*pStar/pStar0*m0/m*F*F;
465EvtComplex EvtD0Topipienu::getCoef(
double rho,
double phi)
471inline double EvtD0Topipienu::getGx(
double m0,
double p0,
double m_c1,
double m_c2)
474 double MPI = 0.5*(m_c1+m_c2);
475 Gg = 3*MPI*MPI*log((m0+2*p0)/(2*MPI))/(Pi*p0*p0) + m0/(2*Pi*p0) - MPI*MPI*m0/(Pi*p0*p0*p0);
479inline double EvtD0Topipienu::getFx(
double mr2,
double sx,
double p,
double p0,
double m_c1,
double m_c2)
482 Fx = mr2/(pow(p0,3))*(p*p*(getHx(sx,p,m_c1,m_c2)-getHx(mr2,p0,m_c1,m_c2))+(mr2-sx)*p0*p0*getdh(mr2,p0,m_c1,m_c2));
486inline double EvtD0Topipienu::getHx(
double sx,
double p,
double m_c1,
double m_c2)
490 Hx = 2*p*log((m+2*p)/(m_c1+m_c2))/(Pi*m);
494inline double EvtD0Topipienu::getdh(
double mr2,
double p0,
double m_c1,
double m_c2)
496 double mass = sqrt(mr2);
501inline double EvtD0Topipienu::getG1(
double m2,
double Mr)
507 double gg1 = Mr*(b1+b2*
m2)*
exp(-(
m2-Mr2)/
A);
511inline double EvtD0Topipienu::getZ(
double m2,
double Mr2)
513 double zz = (getRho(
m2,mPi)*log((1.0-getRho(
m2,mPi))/(1.0+getRho(
m2,mPi)))
514 -getRho(Mr2,mPi)*log((1.0-getRho(Mr2,mPi))/(1.0+getRho(Mr2,mPi))))/Pi;
519inline double EvtD0Topipienu::getRho(
double m2,
double mX)
522 if ((1.0-4.0*mX*mX/
m2)>0)
523 rho = sqrt(1.0-4.0*mX*mX/
m2);
528inline EvtComplex EvtD0Topipienu::getrho(
double m2,
double mX)
533 if ((1.0-4.0*mX*mX/
m2)>0)
534 rho = ciR*sqrt(1.0-4.0*mX*mX/
m2);
535 else rho = ciM*sqrt(4.0*mX*mX/
m2-1.0);
538inline double EvtD0Topipienu::getWidthrho(
double m,
double m0,
double width0,
double p,
double p0 )
540 double widthRho = 0.0;
541 widthRho = width0*pow(p/p0, 3)*(m0/m);
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)
EvtComplex exp(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
virtual ~EvtD0Topipienu()
void getName(std::string &name)
void decay(EvtParticle *p)
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)
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)