34 model_name=
"DTopipienu";
72 width0_omega = 0.00849;
135 if(pid == -211) charm = 1;
137 double m2, q2, cosV, cosL, chi;
138 KinVGen(pi1, pi2, e, nu, charm,
m2, q2, cosV, cosL, chi);
139 double prob = calPDF(
m2, q2, cosV, cosL, chi);
152 boost.
set(vp4_KPi.
get(0), -vp4_KPi.
get(1), -vp4_KPi.
get(2), -vp4_KPi.
get(3));
165 double sinx =
C.cross(V).dot(D);
166 double cosx =
C.dot(D);
167 chi = sinx>0? acos(cosx): -acos(cosx);
168 if(charm==-1) chi=-chi;
171double EvtDTopipienu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi) {
191 for(
int index=first; index<last; index++)
197 ResonanceGS(m,
q, D0_mD, D0_mPi1, D0_mPi2, f11, f21, f31);
198 coef = getCoef(rho, phi);
206 ResonanceGS(m,
q, Dp_mD, Dp_mPi1, Dp_mPi2, f11, f21, f31);
207 coef = getCoef(rho, phi);
215 ResonancePGScbw(m,
q, f11, f21, f31);
216 coef = getCoef(rho_omega, phi_omega);
224 ResonanceSBugg(m,
q, f10);
225 coef = getCoef(rho_S, phi_S);
226 F10 = F10 + coef*f10;
231 std::cout<<
"No such form factor type!!!"<<std::endl;
238 double I,I1,I2,I3,I4,I5,I6,I7,I8,I9;
240 double cosV2 = cosV*cosV;
241 double sinV = sqrt(1.0-cosV2);
242 double sinV2 = sinV*sinV;
244 EvtComplex F1 = F10 + F11*cosV + F12*(1.5*cosV2-0.5);
245 EvtComplex F2 = F21*root1d2 + F22*cosV*root3d2;
246 EvtComplex F3 = F31*root1d2 + F32*cosV*root3d2;
248 I1 = 0.25*(
abs2(F1) + 1.5*sinV2*(
abs2(F2) +
abs2(F3) ) );
249 I2 = -0.25*(
abs2(F1) - 0.5*sinV2*(
abs2(F2) +
abs2(F3) ) );
250 I3 = -0.25*(
abs2(F2) -
abs2(F3) )*sinV2;
256 I9 =
imag(
conj(F3)*F2 )*sinV2*(-0.5);
258 double coschi =
cos(chi);
259 double sinchi =
sin(chi);
260 double sin2chi = 2.0*sinchi*coschi;
261 double cos2chi = 1.0 - 2.0*sinchi*sinchi;
263 double sinL = sqrt(1.-cosL*cosL);
264 double sinL2 = sinL*sinL;
265 double sin2L = 2.0*sinL*cosL;
266 double cos2L = 1.0 - 2.0*sinL2;
268 I = I1 + I2*cos2L + I3*sinL2*cos2chi + I4*sin2L*coschi + I5*sinL*coschi + I6*cosL + I7*sinL*sinchi + I8*sin2L*sinchi + I9*sinL2*sin2chi;
274 double pKPi = getPStar(massD, m,
q);
275 double mD2 = massD*massD;
281 double summDm = massD+m;
282 double V = V_0 /(1.0-q2/(mV2));
283 double A1 = A1_0/(1.0-q2/(mA2));
284 double A2 = A2_0/(1.0-q2/(mA2));
285 double A = summDm*A1;
286 double B = 2.0*massD*pKPi/summDm*V;
289 double H0 = 0.5/(m*
q)*((mD2-
m2-q2)*summDm*A1-4.0*(mD2*pKPi*pKPi)/summDm*A2);
295 double pStar = getPStar(m, massPi1, massPi2);
296 double pStar0 = getPStar(m0, massPi1, massPi2);
297 double alpha = sqrt(3.0*Pi*BF/(pStar0*width0));
300 double F = getF1(m, m0, massPi1, massPi2, rBW);
301 EvtComplex C(m02*(1.0+width0*getGx(m0, pStar0, massPi1, massPi2)/m0)*F, 0.0);
302 double AA = m02-
m2+width0*getFx(m02,
m2, pStar, pStar0, massPi1, massPi2);
303 double BB = -m0*getWidthrho(m, m0, width0, pStar, pStar0);
307 double alpham2 =
alpha*2.0;
308 F11 = amp*alpham2*
q*H0*root2;
309 F21 = amp*alpham2*
q*(Hp+Hm);
310 F31 = amp*alpham2*
q*(Hp-Hm);
315 double pKPi = getPStar(Dp_mD, m,
q);
316 double mD2 = Dp_mD*Dp_mD;
318 double m02 = m0_omega*m0_omega;
323 double summDm = Dp_mD+m;
324 double V = V_0 /(1.0-q2/(mV2));
325 double A1 = A1_0/(1.0-q2/(mA2));
326 double A2 = A2_0/(1.0-q2/(mA2));
327 double A = summDm*A1;
328 double B = 2.0*Dp_mD*pKPi/summDm*V;
330 double H0 = 0.5/(m*
q)*((mD2-
m2-q2)*summDm*A1-4.0*(mD2*pKPi*pKPi)/summDm*A2);
336 double pStar = getPStar(m, Dp_mPi1, Dp_mPi2);
337 double pStar0 = getPStar(m0_omega, Dp_mPi1, Dp_mPi2);
338 double alpha = sqrt(3.0*Pi*BF_omega/(pStar0*width0_omega));
341 double F = getF1(m, m0_omega, Dp_mPi1, Dp_mPi2, rBW);
347 double BB1 = -m0_omega*width0_omega;
351 pStar0 = getPStar(m0, Dp_mPi1, Dp_mPi2);
352 EvtComplex C2(mR2*(1.0+width0*getGx(m0, pStar0, Dp_mPi1, Dp_mPi2)/m0), 0.0);
353 double AA2 = mR2-
m2+width0*getFx(mR2,
m2, pStar, pStar0, Dp_mPi1, Dp_mPi2);
354 double BB2 = -m0*getWidthrho(m, m0, width0, pStar, pStar0);
359 double alpham2 =
alpha*2.0;
360 F11 = amp*alpham2*
q*H0*root2;
361 F21 = amp*alpham2*
q*(Hp+Hm);
362 F31 = amp*alpham2*
q*(Hp-Hm);
365void EvtDTopipienu::ResonanceSBugg(
double m,
double q,
EvtComplex& F10)
367 double pKPi = getPStar(Dp_mD, m,
q);
372 double sA = 0.41*mPi*mPi;
374 double mr2 = m0_S*m0_S;
385 Gamma1 = getrho(
m2,mPi)*getG1(
m2,mr)*(
m2-sA)/(mr2-sA);
386 Gamma2 = getrho(
m2,mKa)*0.6*getG1(
m2,mr)*(
m2/mr2)*
exp(-
alpha*fabs(
m2-4.0*mKa*mKa));
387 Gamma3 = getrho(
m2,mEt)*0.2*getG1(
m2,mr)*(
m2/mr2)*
exp(-
alpha*fabs(
m2-4.0*mEt*mEt));
388 if (m > 4*mPi) Gamma4 = ciR*mr*g4pi*(1.0+
exp(7.082-2.845*mr2))/(1.0+
exp(7.082-2.845*
m2));
390 double AA = mr2-
m2-getG1(
m2,mr)*(
m2-sA)*getZ(
m2, mr2)/(mr2-sA);
391 EvtComplex amp = ciR/(ciR*AA-ciM*(Gamma1+Gamma2+Gamma3+Gamma4));
392 F10 = amp*pKPi*Dp_mD/(1.0-q2/mA2);
395double EvtDTopipienu::getPStar(
double m,
double m1,
double m2)
400 double x =
s + s1 - s2;
401 double t = 0.25*
x*
x/
s - s1;
412double EvtDTopipienu::getF1(
double m,
double m0,
double m_c1,
double m_c2,
double rBW)
414 double pStar = getPStar(m, m_c1, m_c2);
415 double pStar0 = getPStar(m0, m_c1, m_c2);
416 double rBW2 = rBW*rBW;
417 double pStar2 = pStar*pStar;
418 double pStar02 = pStar0*pStar0;
419 double B = 1./sqrt(1.+rBW2*pStar2);
420 double B0 = 1./sqrt(1.+rBW2*pStar02);
421 double F = pStar/pStar0*
B/B0;
425double EvtDTopipienu::getF2(
double m,
double m0,
double m_c1,
double m_c2,
double rBW)
427 double pStar = getPStar(m, m_c1, m_c2);
428 double pStar0 = getPStar(m0, m_c1, m_c2);
429 double rBW2 = rBW*rBW;
430 double pStar2 = pStar*pStar;
431 double pStar02 = pStar0*pStar0;
432 double B = 1./sqrt((rBW2*pStar2-3.)*(rBW2*pStar2-3.)+9.*rBW2*pStar2);
433 double B0 = 1./sqrt((rBW2*pStar02-3.)*(rBW2*pStar02-3.)+9.*rBW2*pStar02);
434 double F = pStar2/pStar02*
B/B0;
438double EvtDTopipienu::getWidth0(
double m,
double m0,
double m_c1,
double m_c2,
double width0)
440 double pStar = getPStar(m, m_c1, m_c2);
441 double pStar0 = getPStar(m0, m_c1, m_c2);
442 double width = width0*pStar/pStar0*m0/m;
446double EvtDTopipienu::getWidth1(
double m,
double m0,
double m_c1,
double m_c2,
double width0,
double rBW)
448 double pStar = getPStar(m, m_c1, m_c2);
449 double pStar0 = getPStar(m0, m_c1, m_c2);
450 double F = getF1(m, m0, m_c1, m_c2, rBW);
451 double width = width0*pStar/pStar0*m0/m*F*F;
455double EvtDTopipienu::getWidth2(
double m,
double m0,
double m_c1,
double m_c2,
double width0,
double rBW)
457 double pStar = getPStar(m, m_c1, m_c2);
458 double pStar0 = getPStar(m0, m_c1, m_c2);
459 double F = getF2(m, m0, m_c1, m_c2, rBW);
460 double width = width0*pStar/pStar0*m0/m*F*F;
464EvtComplex EvtDTopipienu::getCoef(
double rho,
double phi)
470inline double EvtDTopipienu::getGx(
double m0,
double p0,
double m_c1,
double m_c2)
473 double MPI = 0.5*(m_c1+m_c2);
474 Gg = 3*MPI*MPI*log((m0+2*p0)/(2*MPI))/(Pi*p0*p0) + m0/(2*Pi*p0) - MPI*MPI*m0/(Pi*p0*p0*p0);
478inline double EvtDTopipienu::getFx(
double mr2,
double sx,
double p,
double p0,
double m_c1,
double m_c2)
481 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));
485inline double EvtDTopipienu::getHx(
double sx,
double p,
double m_c1,
double m_c2)
489 Hx = 2*p*log((m+2*p)/(m_c1+m_c2))/(Pi*m);
493inline double EvtDTopipienu::getdh(
double mr2,
double p0,
double m_c1,
double m_c2)
495 double mass = sqrt(mr2);
500inline double EvtDTopipienu::getG1(
double m2,
double Mr)
506 double gg1 = Mr*(b1+b2*
m2)*
exp(-(
m2-Mr2)/
A);
510inline double EvtDTopipienu::getZ(
double m2,
double Mr2)
512 double zz = (getRho(
m2,mPi)*log((1.0-getRho(
m2,mPi))/(1.0+getRho(
m2,mPi)))
513 -getRho(Mr2,mPi)*log((1.0-getRho(Mr2,mPi))/(1.0+getRho(Mr2,mPi))))/Pi;
518inline double EvtDTopipienu::getRho(
double m2,
double mX)
521 if ((1.0-4.0*mX*mX/
m2)>0)
522 rho = sqrt(1.0-4.0*mX*mX/
m2);
527inline EvtComplex EvtDTopipienu::getrho(
double m2,
double mX)
532 if ((1.0-4.0*mX*mX/
m2)>0)
533 rho = ciR*sqrt(1.0-4.0*mX*mX/
m2);
534 else rho = ciM*sqrt(4.0*mX*mX/
m2-1.0);
537inline double EvtDTopipienu::getWidthrho(
double m,
double m0,
double width0,
double p,
double p0 )
539 double widthRho = 0.0;
540 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
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)