34 model_name=
"DToKSKpi0";
51 _mDp2inv = 1. / _mDp2;
57 c_meson_radius_inter = 1.5;
58 c_meson_radius_Dp = 5;
83 for(
int i=0; i<_nd; i++){
87 double prob = AmplitudeSquare();
92double EvtDToKSKpi0::twoBodyCMmom(
double rMassSq,
double d1m,
double d2m){
93 double kin1 = 1 - pow(d1m + d2m,2) / rMassSq;
94 kin1 = kin1 >= 0 ? sqrt(kin1) : 1;
95 double kin2 = 1 - pow(d1m - d2m,2) / rMassSq;
96 kin2 = kin2 >= 0 ? sqrt(kin2) : 1;
98 double ret = 0.5 * sqrt(rMassSq) * kin1 * kin2;
102double EvtDToKSKpi0::dampingFactorSquare(
const double &cmmom,
const int &spin,
const double &mRadius){
103 double square = mRadius * mRadius * cmmom * cmmom;
104 double dfsq = 1 + square;
106 double dfsqres = dfsq + 8 + 2 * square + square * square;
109 double ret = (spin == 2) ? dfsqres : dfsq;
114double EvtDToKSKpi0::spinFactor(
int spin,
double motherMass,
double daug1Mass,
double daug2Mass,
double daug3Mass,
115 double m12,
double m13,
double m23){
116 if(spin == 0)
return 1;
118 double _mA = daug1Mass;
119 double _mB = daug2Mass;
120 double _mC = daug3Mass;
125 double massFactor = 1.0 / _mAB;
127 sFactor *= ((_mBC - _mAC) + (massFactor * (motherMass * motherMass - _mC * _mC) * (_mA * _mA - _mB * _mB)));
131 double extraterm = ((_mAB - (2 * motherMass * motherMass) - (2 * _mC * _mC))
132 + massFactor * pow(motherMass * motherMass - _mC * _mC,2));
133 extraterm *= ((_mAB - (2 * _mA * _mA) - (2 * _mB * _mB)) + 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);
146 double mass_daug1, mass_daug2, mass_daug3;
149 mass_daug1 = pi0Mass;
159 mass_daug2 = pi0Mass;
169 mass_daug3 = pi0Mass;
172 double rMassSq = (
p1+
p2).mass2();
173 double m12 = (
p1+
p2).mass2();
174 double m13 = (
p1+
p3).mass2();
175 double m23 = (
p2+
p3).mass2();
177 double rMass = sqrt(rMassSq);
182 double measureDaughterMoms = twoBodyCMmom(rMassSq, mass_daug1, mass_daug2);
183 double nominalDaughterMoms = twoBodyCMmom(resmass2, mass_daug1, mass_daug2);
186 frFactor = dampingFactorSquare(nominalDaughterMoms, spin, c_meson_radius_inter) / dampingFactorSquare(measureDaughterMoms, spin, c_meson_radius_inter);
188 double measureDaughterMoms2 = twoBodyCMmom(c_motherMass*c_motherMass, rMass, mass_daug3);
189 double nominalDaughterMoms2 = twoBodyCMmom(c_motherMass*c_motherMass, resmass, mass_daug3);
190 fdFactor = dampingFactorSquare(nominalDaughterMoms2, spin, c_meson_radius_Dp) / dampingFactorSquare(measureDaughterMoms2, spin, c_meson_radius_Dp);
192 double A = (resmass2 - rMassSq);
193 double B = resmass2 * reswidth * pow(measureDaughterMoms / nominalDaughterMoms, 2.0 * spin + 1) * frFactor / sqrt(rMassSq);
194 double C = 1.0 / (pow(A,2) + pow(B,2));
197 ret *= sqrt(frFactor*fdFactor);
198 ret *= spinFactor(spin, c_motherMass, mass_daug1, mass_daug2, mass_daug3, m12, m13, m23);
208EvtComplex EvtDToKSKpi0::Flatte(
int id,
double resmass,
double g1,
double rg2og1){
209 double resmass2 = pow(resmass,2);
212 double mass_daug1, mass_daug2, mass_daug3;
215 mass_daug1 = pi0Mass;
225 mass_daug2 = pi0Mass;
235 mass_daug3 = pi0Mass;
238 double rMassSq = (
p1+
p2).mass2();
239 double m12 = (
p1+
p2).mass2();
240 double m13 = (
p1+
p3).mass2();
241 double m23 = (
p2+
p3).mass2();
242 double rMass = sqrt(rMassSq);
246 double rhoetapi = 2*twoBodyCMmom(
s, KsMass, KpMass)/sqrt(
s);
247 double rhoKKbar = 2*twoBodyCMmom(
s, etamass, pipMass)/sqrt(
s);
248 double img = rhoetapi*
g1 + rhoKKbar*
g1*rg2og1;
256EvtComplex EvtDToKSKpi0::LASS(
int id,
double resmass,
double reswidth){
258 double resmass2 = pow(resmass,2);
261 double mass_daug1, mass_daug2, mass_daug3;
264 mass_daug1 = pi0Mass;
274 mass_daug2 = pi0Mass;
284 mass_daug3 = pi0Mass;
287 double rMassSq = (
p1+
p2).mass2();
288 double m12 = (
p1+
p2).mass2();
289 double m13 = (
p1+
p3).mass2();
290 double m23 = (
p2+
p3).mass2();
292 double rMass = sqrt(rMassSq);
297 double measureDaughterMoms = twoBodyCMmom(rMassSq, mass_daug1, mass_daug2);
298 double nominalDaughterMoms = twoBodyCMmom(resmass2, mass_daug1, mass_daug2);
300 frFactor = dampingFactorSquare(nominalDaughterMoms, spin, c_meson_radius_inter) / dampingFactorSquare(measureDaughterMoms, spin, c_meson_radius_inter);
301 double measureDaughterMoms2 = twoBodyCMmom(c_motherMass*c_motherMass, rMass, mass_daug3);
302 double nominalDaughterMoms2 = twoBodyCMmom(c_motherMass*c_motherMass, resmass, mass_daug3);
303 fdFactor = dampingFactorSquare(nominalDaughterMoms2, spin, c_meson_radius_Dp) / dampingFactorSquare(measureDaughterMoms2, spin, c_meson_radius_Dp);
306 double q = measureDaughterMoms;
307 double g = reswidth * pow(measureDaughterMoms / nominalDaughterMoms, 2.0 * spin + 1) * frFactor / sqrt(rMassSq);
310 const double _a = 0.113;
311 const double _r = -33.8;
313 const double _phiR = -109.7*3.141592653/180.0;
314 const double _B = 0.96;
315 const double _phiB = 0.1*3.141592653/180.0;
318 double cot_deltaB = (1.0 / (_a *
q)) + 0.5 * _r *
q;
319 double qcot_deltaB = (1.0 / _a) + 0.5 * _r *
q *
q;
326 resT *= prop * (resmass2 * reswidth / nominalDaughterMoms) * expi2deltaB;
331 resT *= sqrt(frFactor*fdFactor);
332 resT *= spinFactor(spin, c_motherMass, mass_daug1, mass_daug2, mass_daug3, m12, m13, m23);
337double EvtDToKSKpi0::AmplitudeSquare(){
345 const double K892pMass = 0.89176;
346 const double K892pWidth = 0.0503;
348 const double K892zeroMass = 0.89555;
349 const double K892zeroWidth = 0.0473;
351 const double a980pMass = 0.980;
352 const double c_g1 = 0.341;
353 const double c_g2og1 = 0.892;
355 const double K1410zeroMass = 1.421;
356 const double K1410zeroWidth = 0.236;
358 const double a1450pMass = 1.474;
359 const double a1450pWidth = 0.265;
361 const double SwaveKppi0Mass = 1.441;
362 const double SwaveKppi0Width = 0.193;
364 const double SwaveKspi0Mass = 1.441;
365 const double SwaveKspi0Width = 0.193;
370 EvtComplex amp_K892zero(-0.3903972065719,0.1298035433874);
371 EvtComplex amp_SwaveKppi0(-1.543197997647,1.30109134697);
372 EvtComplex amp_SwaveKspi0(-3.123793580183,-0.3449005761848);
374 temp += amp_K892p*(RBW(1,K892pMass,K892pWidth,1));
375 temp += amp_K892zero*(RBW(2,K892zeroMass,K892zeroWidth,1));
376 temp += amp_SwaveKppi0*(LASS(1,SwaveKppi0Mass,SwaveKppi0Width));
377 temp += amp_SwaveKspi0*(LASS(2,SwaveKspi0Mass,SwaveKspi0Width));
379 double ret = pow(
abs(temp),2);
380 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)