61 const double mk0 = 0.497614;
62 const double mass_Kaon = 0.49368;
64 const double mass_Pi0 = 0.1349766;
65 const double meta = 0.547862;
71 sck = mass_Kaon * mass_Kaon;
73 snpi = mass_Pi0 * mass_Pi0;
81 int GG[4][4] = { { 1, 0, 0, 0 }, { 0, -1, 0, 0 }, { 0, 0, -1, 0 }, { 0, 0, 0, -1 } };
82 for (
int i = 0; i < 4; i++ )
84 for (
int j = 0; j < 4; j++ ) { G[i][j] = GG[i][j]; }
123 double P1[4], P2[4], P3[4];
138 value = calDalEva( P1, P2, P3 );
143double EvtDTopiEtaEta::calDalEva(
double P1[],
double P2[],
double P3[] ) {
153 PDF[0] = Spin_factor( P1, P2, P3, 0, 30, ma0, Ga0 );
154 PDF[1] = Spin_factor( P1, P3, P2, 0, 30, ma0, Ga0 );
157 for (
int i = 0; i < 2; i++ )
160 pdf = pdf + cof * PDF[i];
162 module = conj( pdf ) * pdf;
163 value =
real( module );
164 return ( value <= 0 ) ? 1e-20 : value;
167EvtComplex EvtDTopiEtaEta::Spin_factor(
double P1[],
double P2[],
double P3[],
int spin,
168 int flag,
double mass_R,
double width_R ) {
171 double R[4],
s[3], sp2,
B[2];
173 for (
int i = 0; i < 4; i++ ) {
R[i] = P1[i] + P2[i]; }
175 s[1] = dot( P1, P1 );
176 s[2] = dot( P2, P2 );
179 EvtComplex amp, prop, prop1, prop2;
182 EvtComplex rhokk, rhopieta;
185 if (
flag == 0 ) prop = one;
186 if (
flag == 1 ) prop = propagatorRBW( mass_R, width_R,
s[0],
s[1],
s[2], 3.0, 0 );
189 rhokk = Flatte_rhoab(
s[0], snk, sck );
190 rhopieta = Flatte_rhoab(
s[0], scpi, seta );
192 1.0 / ( mass_R * mass_R -
s[0] - ci * ( 0.341 * rhopieta + 0.341 * 0.892 * rhokk ) );
197 qKsK = 0.25 * (
s[0] + 3.899750596e-03 ) * (
s[0] + 3.899750596e-03 ) /
s[0] -
199 if ( qKsK > 0 ) rhokk = 2.0 * sqrt( qKsK /
s[0] ) * one;
200 if ( qKsK < 0 ) rhokk = 2.0 * sqrt( qKsK /
s[0] ) * ci;
201 rhopieta = Flatte_rhoab(
s[0], snpi, seta );
203 1.0 / ( mass_R * mass_R -
s[0] - ci * ( 0.341 * rhopieta + 0.341 * 0.892 * rhokk ) );
207 else if ( spin == 1 )
209 if (
flag == 0 ) { prop = EvtComplex( 1.0, 0.0 ); }
210 if (
flag == 1 ) { prop = propagatorRBW( mass_R, width_R,
s[0],
s[1],
s[2], 3.0, 1 ); }
211 if (
flag == 2 ) { prop = propagatorGS( mass_R, width_R,
s[0],
s[1],
s[2], 3.0, 1 ); }
214 prop1 = propagatorGS( mass_R, width_R,
s[0],
s[1],
s[2], 3.0, 1 );
215 prop2 = propagatorRBW( 0.78266, 0.01358,
s[0],
s[1],
s[2], 3.0, 1 );
216 prop = prop1 * prop2;
221 B[0] = barrier( 1,
s[0],
s[1],
s[2], 3.0, mass_R );
222 B[1] = barrier( 1, sD,
s[0], sp2, 5.0, mD );
224 for (
int i = 0; i < 4; i++ ) { tmp += T1[i] * t1[i] * G[i][i]; }
225 amp = tmp * prop *
B[0] *
B[1];
227 else if ( spin == 2 )
229 double T2[4][4], t2[4][4];
232 B[0] = barrier( 2,
s[0],
s[1],
s[2], 3.0, mass_R );
233 B[1] = barrier( 2, sD,
s[0], sp2, 5.0, mD );
235 for (
int i = 0; i < 4; i++ )
237 for (
int j = 0; j < 4; j++ ) { tmp += T2[i][j] * t2[j][i] * G[j][j] * G[i][i]; }
239 if (
flag == 0 ) prop = one;
240 if (
flag == 1 ) prop = propagatorRBW( mass_R, width_R,
s[0],
s[1],
s[2], 3.0, 2 );
241 amp = tmp * prop *
B[0] *
B[1];
243 else { cout <<
"Only S, P, D wave allowed" << endl; }
247double EvtDTopiEtaEta::dot(
double* a1,
double* a2 ) {
249 for (
int i = 0; i != 4; i++ ) {
Dot += a1[i] * a2[i] * G[i][i]; }
253double EvtDTopiEtaEta::Qabcs(
double sa,
double sb,
double sc ) {
254 double Qabcs = ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb;
255 if ( Qabcs < 0 ) Qabcs = 1e-16;
259double EvtDTopiEtaEta::barrier(
double l,
double sa,
double sb,
double sc,
double r,
262 double q0 = Qabcs( sa0, sb, sc );
263 double z0 = q0 * r * r;
264 double q = Qabcs( sa, sb, sc );
271 if ( l == 1 ) F = sqrt( ( 1 + z0 ) / ( 1 + z ) );
272 if ( l == 2 ) F = sqrt( ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ) );
276void EvtDTopiEtaEta::calt1(
double daug1[],
double daug2[],
double t1[] ) {
279 for (
int i = 0; i != 4; i++ )
281 pa[i] = daug1[i] + daug2[i];
282 qa[i] = daug1[i] - daug2[i];
286 for (
int i = 0; i != 4; i++ ) { t1[i] = qa[i] - pq / p * pa[i]; }
289void EvtDTopiEtaEta::calt2(
double daug1[],
double daug2[],
double t2[][4] ) {
292 calt1( daug1, daug2, t1 );
294 for (
int i = 0; i != 4; i++ ) { pa[i] = daug1[i] + daug2[i]; }
296 for (
int i = 0; i != 4; i++ )
298 for (
int j = 0; j != 4; j++ )
299 { t2[i][j] = t1[i] * t1[j] - 1.0 / 3 * r * ( G[i][j] - pa[i] * pa[j] / p ); }
303double EvtDTopiEtaEta::wid(
double mass,
double sa,
double sb,
double sc,
double r,
int l ) {
304 double widm( 0. ),
q( 0. ), q0( 0. );
306 double m = sqrt( sa );
307 q = Qabcs( sa, sb, sc );
308 q0 = Qabcs( sa0, sb, sc );
315 if ( l == 1 ) F = sqrt( ( 1 + z0 ) / ( 1 + z ) );
316 if ( l == 2 ) F = sqrt( ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ) );
317 widm = pow(
t, l + 0.5 ) *
mass / m * F * F;
321EvtComplex EvtDTopiEtaEta::propagatorRBW(
double mass,
double width,
double sa,
double sb,
322 double sc,
double r,
int l ) {
324 1.0 / (
mass *
mass - sa - ci *
mass * width * wid(
mass, sa, sb, sc, r, l ) );
328double EvtDTopiEtaEta::h(
double m,
double q ) {
329 double h = 2.0 / pi *
q / m * log( ( m + 2 *
q ) / ( 0.13957 + 0.134976 ) );
333double EvtDTopiEtaEta::dh(
double mass,
double q0 ) {
334 double dh = h(
mass, q0 ) * ( 1.0 / ( 8 * q0 * q0 ) - 1.0 / ( 2 *
mass *
mass ) ) +
339double EvtDTopiEtaEta::f(
double mass,
double sx,
double q0,
double q ) {
340 double m = sqrt( sx );
341 double f =
mass *
mass / ( pow( q0, 3 ) ) *
342 (
q *
q * ( h( m,
q ) - h(
mass, q0 ) ) +
347double EvtDTopiEtaEta::d(
double mass,
double q0 ) {
348 double cmpi = 0.5 * ( 0.13957 + 0.134976 );
349 double mpi2 = cmpi * cmpi;
350 double d = 3.0 / pi *
mpi2 / ( q0 * q0 ) * log( (
mass + 2 * q0 ) / ( 2 * cmpi ) ) +
351 mass / ( 2 * pi * q0 ) - ( mpi2 *
mass ) / ( pi * pow( q0, 3 ) );
355EvtComplex EvtDTopiEtaEta::propagatorGS(
double mass,
double width,
double sa,
double sb,
356 double sc,
double r,
int l ) {
357 double q = Qabcs( sa, sb, sc );
359 double q0 = Qabcs( sa0, sb, sc );
362 EvtComplex prop = ( 1 + d(
mass, q0 ) * width /
mass ) /
364 ci *
mass * width * wid(
mass, sa, sb, sc, r, l ) );
368EvtComplex EvtDTopiEtaEta::Flatte_rhoab(
double sa,
double sb,
double sc ) {
369 double q = ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb;
371 if (
q > 0 ) { rho = 2.0 * sqrt(
q / sa ) * one; }
372 if (
q < 0 ) { rho = 2.0 * sqrt( -
q / sa ) * ci; }
376EvtComplex EvtDTopiEtaEta::propagatorFlatte(
double mass,
double width,
double sx,
double* sb,
378 const double g1sq = 0.5468 * 0.5468;
379 const double g2sq = 0.23 * 0.23;
380 EvtComplex rho1 = Flatte_rhoab( sx, sb[0], sc[0] );
381 EvtComplex rho2 = Flatte_rhoab( sx, sb[1], sc[1] );
382 EvtComplex prop = 1.0 / (
mass *
mass - sx - ci * ( g1sq * rho1 + g2sq * rho2 ) );
float Dot(vector3 v1, vector3 v2)
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
virtual ~EvtDTopiEtaEta()
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)
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
complex_t R(double Q2, double M2, double G, double Mp2, double Mm2)