58 g2 = 4.21 * 0.165 * mf0;
97 Pi = atan2( 0.0, -1.0 );
99 root2d3 = sqrt( 2. / 3 );
100 root1d2 = sqrt( 0.5 );
101 root3d2 = sqrt( 1.5 );
139 if ( pid == -321 ) charm = 1;
141 double m2, q2, cosV, cosL, chi;
142 KinVGen( K,
pi, e, nu, charm,
m2, q2, cosV, cosL, chi );
143 double prob = calPDF(
m2, q2, cosV, cosL, chi );
150 double& cosV,
double& cosL,
double& chi ) {
158 boost.
set( vp4_KPi.
get( 0 ), -vp4_KPi.
get( 1 ), -vp4_KPi.
get( 2 ), -vp4_KPi.
get( 3 ) );
160 cosV = vp4_Kp.
dot( vp4_KPi ) / ( vp4_Kp.
d3mag() * vp4_KPi.
d3mag() );
162 boost.
set( vp4_W.
get( 0 ), -vp4_W.
get( 1 ), -vp4_W.
get( 2 ), -vp4_W.
get( 3 ) );
164 cosL = vp4_Lepp.
dot( vp4_W ) / ( vp4_Lepp.
d3mag() * vp4_W.
d3mag() );
171 double sinx =
C.cross( V ).dot( D );
172 double cosx =
C.dot( D );
173 chi = sinx > 0 ? acos( cosx ) : -acos( cosx );
174 if ( charm == -1 ) chi = -chi;
177double EvtDsToKKenu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi ) {
178 double delta[5] = { 0 };
179 double amplitude[5] = { 0 };
180 double m = sqrt(
m2 );
181 double q = sqrt( q2 );
184 EvtComplex F10( 0.0, 0.0 );
185 EvtComplex F11( 0.0, 0.0 );
186 EvtComplex F21( 0.0, 0.0 );
187 EvtComplex F31( 0.0, 0.0 );
188 EvtComplex F12( 0.0, 0.0 );
189 EvtComplex F22( 0.0, 0.0 );
190 EvtComplex F32( 0.0, 0.0 );
192 EvtComplex f10( 0.0, 0.0 );
193 EvtComplex f11( 0.0, 0.0 );
194 EvtComplex f21( 0.0, 0.0 );
195 EvtComplex f31( 0.0, 0.0 );
196 EvtComplex f12( 0.0, 0.0 );
197 EvtComplex f22( 0.0, 0.0 );
198 EvtComplex f32( 0.0, 0.0 );
199 EvtComplex coef( 0.0, 0.0 );
200 double amplitude_temp, delta_temp;
202 for (
int index = 0; index < nAmps; index++ )
204 switch ( type[index] )
216 ResonanceSf0( m,
q, mA, m0, g1, g2, amplitude_temp, delta_temp, f10 );
217 amplitude[index] = amplitude_temp;
218 delta[index] = delta_temp;
219 coef = getCoef( rho_f0, phi_f0 );
220 F10 = F10 + coef * f10;
225 ResonanceP( m,
q, mV, mA, V_0, A1_0, A2_0, m0, width0, rBW, amplitude_temp, delta_temp,
227 amplitude[index] = amplitude_temp;
228 delta[index] = delta_temp;
229 coef = getCoef( rho, phi );
230 F11 = F11 + coef * f11;
231 F21 = F21 + coef * f21;
232 F31 = F31 + coef * f31;
238 ResonanceP( m,
q, mV, mA, V_0, A1_0, A2_0, m0_1410, width0_1410, rBW, amplitude_temp,
239 delta_temp, f11, f21, f31 );
240 amplitude[index] = amplitude_temp;
241 delta[index] = delta_temp;
242 coef = getCoef( rho_1410, phi_1410 );
243 F11 = F11 + coef * f11;
244 F21 = F21 + coef * f21;
245 F31 = F31 + coef * f31;
250 ResonanceD( m,
q, mV, mA, TV_0, T1_0, T2_0, m0_1430, width0_1430, rBW, amplitude_temp,
251 delta_temp, f12, f22, f32 );
252 amplitude[index] = amplitude_temp;
253 delta[index] = delta_temp;
254 coef = getCoef( rho_1430, phi_1430 );
255 F12 = F12 + coef * f12;
256 F22 = F22 + coef * f22;
257 F32 = F32 + coef * f32;
261 std::cout <<
"No such form factor type!!!" << std::endl;
268 double I, I1, I2, I3, I4, I5, I6, I7, I8, I9;
270 double cosV2 = cosV * cosV;
271 double sinV = sqrt( 1.0 - cosV2 );
272 double sinV2 = sinV * sinV;
274 EvtComplex F1 = F10 + F11 * cosV + F12 * ( 1.5 * cosV2 - 0.5 );
275 EvtComplex F2 = F21 * root1d2 + F22 * cosV * root3d2;
276 EvtComplex F3 = F31 * root1d2 + F32 * cosV * root3d2;
278 I1 = 0.25 * (
abs2( F1 ) + 1.5 * sinV2 * (
abs2( F2 ) +
abs2( F3 ) ) );
279 I2 = -0.25 * (
abs2( F1 ) - 0.5 * sinV2 * (
abs2( F2 ) +
abs2( F3 ) ) );
280 I3 = -0.25 * (
abs2( F2 ) -
abs2( F3 ) ) * sinV2;
281 I4 =
real(
conj( F1 ) * F2 ) * sinV * 0.5;
282 I5 =
real(
conj( F1 ) * F3 ) * sinV;
283 I6 =
real(
conj( F2 ) * F3 ) * sinV2;
284 I7 =
imag(
conj( F2 ) * F1 ) * sinV;
285 I8 =
imag(
conj( F3 ) * F1 ) * sinV * 0.5;
286 I9 =
imag(
conj( F3 ) * F2 ) * sinV2 * ( -0.5 );
288 double coschi =
cos( chi );
289 double sinchi =
sin( chi );
290 double sin2chi = 2.0 * sinchi * coschi;
291 double cos2chi = 1.0 - 2.0 * sinchi * sinchi;
293 double sinL = sqrt( 1. - cosL * cosL );
294 double sinL2 = sinL * sinL;
295 double sin2L = 2.0 * sinL * cosL;
296 double cos2L = 1.0 - 2.0 * sinL2;
298 I = I1 + I2 * cos2L + I3 * sinL2 * cos2chi + I4 * sin2L * coschi + I5 * sinL * coschi +
299 I6 * cosL + I7 * sinL * sinchi + I8 * sin2L * sinchi + I9 * sinL2 * sin2chi;
303void EvtDsToKKenu::ResonanceP(
double m,
double q,
double mV,
double mA,
double V_0,
304 double A1_0,
double A2_0,
double m0,
double width0,
double rBW,
305 double& amplitude,
double& delta,
EvtComplex& F11,
307 double pKPi = getPStar( mD, m,
q );
308 double mD2 = mD * mD;
310 double m02 = m0 * m0;
312 double mV2 = mV * mV;
313 double mA2 = mA * mA;
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 ) *
323 ( ( mD2 -
m2 - q2 ) * summDm * A1 - 4.0 * ( mD2 * pKPi * pKPi ) / summDm * A2 );
330 double pStar0 = getPStar( m0, mK1, mK2 );
332 double alpha = sqrt( 3.0 * Pi * BF / ( pStar0 * width0 ) );
335 double F = getF1( m, m0, mK1, mK2, rBW );
336 double width = getWidth1( m, m0, mK1, mK2, width0, rBW );
338 EvtComplex
C( m0 * width0 * F, 0.0 );
339 double AA = m02 -
m2;
340 double BB = -m0 * width;
341 EvtComplex amp =
C / EvtComplex( AA, BB );
342 amplitude =
abs( amp );
343 delta = atan2(
imag( amp ),
real( amp ) );
345 double alpham2 =
alpha * 2.0;
346 F11 = amp * alpham2 *
q * H0 * root2;
347 F21 = amp * alpham2 *
q * ( Hp + Hm );
348 F31 = amp * alpham2 *
q * ( Hp - Hm );
418void EvtDsToKKenu::ResonanceSf0(
double m,
double q,
double mA,
double m0,
double g1,
419 double g2,
double& amplitude,
double& delta,
421 double pKPi = getPStar( mD, m,
q );
424 double mA2 = mA * mA;
426 EvtComplex ciR( 1.0, 0.0 );
427 EvtComplex ciM( 0.0, 1.0 );
428 EvtComplex bb3( 0.0, 0.0 );
430 double aa3 = m2f0 -
m2;
431 bb3 = getrho(
m2, mPi ) * g1 + getrho(
m2, mK1 ) * g2;
433 EvtComplex amp = ciR / ( ciR * aa3 - ciM * bb3 );
434 amplitude =
abs( amp );
435 delta = atan2(
imag( amp ),
real( amp ) );
437 F10 = amp * pKPi * mD / ( 1.0 - q2 / mA2 );
440void EvtDsToKKenu::ResonanceD(
double m,
double q,
double mV,
double mA,
double TV_0,
441 double T1_0,
double T2_0,
double m0,
double width0,
double rBW,
442 double& amplitude,
double& delta,
EvtComplex& F12,
444 double pKPi = getPStar( mD, m,
q );
445 double mD2 = mD * mD;
447 double m02 = m0 * m0;
449 double mV2 = mV * mV;
450 double mA2 = mA * mA;
451 double summDm = mD + m;
452 double TV = TV_0 / ( 1.0 - q2 / ( mV2 ) );
453 double T1 = T1_0 / ( 1.0 - q2 / ( mA2 ) );
454 double T2 = T2_0 / ( 1.0 - q2 / ( mA2 ) );
457 double F = getF2( m, m0, mK1, mK2, rBW );
458 double width = getWidth2( m, m0, mK1, mK2, width0, rBW );
459 EvtComplex
C( m0 * width0 * F, 0.0 );
460 double AA = m02 -
m2;
461 double BB = -m0 * width;
463 EvtComplex amp =
C / EvtComplex( AA, BB );
464 amplitude =
abs( amp );
465 delta = atan2(
imag( amp ),
real( amp ) );
467 F12 = amp * mD * pKPi / 3. *
468 ( ( mD2 -
m2 - q2 ) * summDm * T1 - mD2 * pKPi * pKPi / summDm * T2 );
469 F22 = amp * root2d3 * mD * m *
q * pKPi * summDm * T1;
470 F32 = amp * root2d3 * 2. * mD2 * m *
q * pKPi * pKPi / summDm * TV;
473EvtComplex EvtDsToKKenu::getrho(
double m2,
double mX ) {
474 EvtComplex rho( 0.0, 0.0 );
475 EvtComplex ciR( 1.0, 0.0 );
476 EvtComplex ciM( 0.0, 1.0 );
477 if ( ( 1.0 - 4.0 * mX * mX /
m2 ) > 0 ) rho = ciR * sqrt( 1.0 - 4.0 * mX * mX /
m2 );
478 else rho = ciM * sqrt( 4.0 * mX * mX /
m2 - 1.0 );
482double EvtDsToKKenu::getPStar(
double m,
double m1,
double m2 ) {
486 double x =
s + s1 - s2;
487 double t = 0.25 *
x *
x /
s - s1;
489 if (
t > 0.0 ) { p = sqrt(
t ); }
498double EvtDsToKKenu::getF1(
double m,
double m0,
double m_c1,
double m_c2,
double rBW ) {
499 double pStar = getPStar( m, m_c1, m_c2 );
500 double pStar0 = getPStar( m0, m_c1, m_c2 );
501 double rBW2 = rBW * rBW;
502 double pStar2 = pStar * pStar;
503 double pStar02 = pStar0 * pStar0;
504 double B = 1. / sqrt( 1. + rBW2 * pStar2 );
505 double B0 = 1. / sqrt( 1. + rBW2 * pStar02 );
506 double F = pStar / pStar0 *
B / B0;
510double 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 );
518 1. / sqrt( ( rBW2 * pStar02 - 3. ) * ( rBW2 * pStar02 - 3. ) + 9. * rBW2 * pStar02 );
519 double F = pStar2 / pStar02 *
B / B0;
523double EvtDsToKKenu::getWidth0(
double m,
double m0,
double m_c1,
double m_c2,
525 double pStar = getPStar( m, m_c1, m_c2 );
526 double pStar0 = getPStar( m0, m_c1, m_c2 );
527 double width = width0 * pStar / pStar0 * m0 / m;
531double EvtDsToKKenu::getWidth1(
double m,
double m0,
double m_c1,
double m_c2,
double width0,
533 double pStar = getPStar( m, m_c1, m_c2 );
534 double pStar0 = getPStar( m0, m_c1, m_c2 );
535 double F = getF1( m, m0, m_c1, m_c2, rBW );
536 double width = width0 * pStar / pStar0 * m0 / m * F * F;
540double EvtDsToKKenu::getWidth2(
double m,
double m0,
double m_c1,
double m_c2,
double width0,
542 double pStar = getPStar( m, m_c1, m_c2 );
543 double pStar0 = getPStar( m0, m_c1, m_c2 );
544 double F = getF2( m, m0, m_c1, m_c2, rBW );
545 double width = width0 * pStar / pStar0 * m0 / m * F * F;
549EvtComplex EvtDsToKKenu::getCoef(
double rho,
double phi ) {
550 EvtComplex coef( rho *
cos( phi ), rho *
sin( phi ) );
Evt3Rank3C conj(const Evt3Rank3C &t2)
double imag(const EvtComplex &c)
double abs2(const EvtComplex &c)
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
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 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)