#include <Dalitz.h>
Public Member Functions | |
Dalitz () | |
Dalitz (int binNum) | |
TComplex | Amplitude (double x, double y, double z) |
double | Phase (double x, double y, double z, int Babar=1) |
bool | Point_on_DP (double x, double y) |
bool | Point_on_DP2 (double x, double y) |
TComplex | CLEO_resAmp (double mAC, double mBC, double mAB, double mA, double mB, double mC, double _ampl, double _theta, double _gamma, double _bwm, int _spin) |
TComplex | resAmp (double mAC, double mBC, double mAB, double mA, double mB, double mC, double _ampl, double _theta, double _gamma, double _bwm, int _spin) |
TComplex | f_980 (double mPP, double mR, double _ampl, double _theta) |
TComplex | sakurai (double mkp, double mkm, double mpp, double _ampl, double _theta, double gamma_r, double m_r) |
TComplex | Babar_sakurai (double mkp, double mkm, double mpp, double _ampl, double _theta, double gamma_r, double m_r) |
TComplex | Babar_resAmp (double mAC, double mBC, double mAB, double mB, double mA, double mC, double _ampl, double _theta, double _gamma, double _bwm, int _spin) |
TComplex | Babar_Amplitude (double x, double y, double z) |
TComplex | CLEO_Amplitude (double x, double y, double z) |
int | getBin (double mx, double my, double mz) |
Private Attributes | |
int | N |
Static Private Attributes | |
static double | PI = 3.1415926 |
static const int | Nbin = 1000 |
Definition at line 30 of file Dalitz.h.
Dalitz::Dalitz | ( | ) |
Definition at line 21 of file Dalitz.cxx.
References N.
00021 { 00022 N = 8; // Default bins if not specified 00023 }
Dalitz::Dalitz | ( | int | binNum | ) |
Definition at line 26 of file Dalitz.cxx.
References N.
00026 { 00027 N = binNum; // Set bin number 00028 } // end constructor
TComplex Dalitz::Amplitude | ( | double | x, | |
double | y, | |||
double | z | |||
) |
Definition at line 31 of file Dalitz.cxx.
References cos(), f_980(), genRecEmupikp::i, resAmp(), sakurai(), and sin().
Referenced by Phase().
00031 { 00032 00033 //PRD 73, 112009(2006) Belle 00034 //for D0 particle 1: K particle 2: pi- particle 3: pi+ 00035 //the right order is: (1,2), (1,3), (3,2) 00036 double m_mass[4] = {1.86450, 0.497648, 0.139570, 0.139570}; //mass 00037 00038 TComplex D0(0.0,0.0); 00039 00040 //x, y, z already squared, need to get back the mass!!!! 00041 x = sqrt(x); 00042 y = sqrt(y); 00043 z = sqrt(z); 00044 00045 // Array for resonances 00046 TComplex DK2piRes[19]; 00047 00048 //x->3 y->2 z->1 00049 DK2piRes[0] = sakurai(x, y, z, 1.00, 0.0, 0.1503, 0.7758);//RHO(770) 00050 DK2piRes[1] = resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 0.0314,110.8, 0.00849,0.78259,1);//OMEGA 00051 DK2piRes[2] = f_980(z, 0.980, 0.365, 201.9);//F_0(980) 00052 DK2piRes[3] = resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 1.32, 348, 0.1851, 1.2754, 2);//F_2(1270) 00053 DK2piRes[4] = resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 1.44, 82, 0.173, 1.434, 0);//F_0(1370) hep-ph 0009168 00054 DK2piRes[5] = sakurai(x, y, z, 0.66, 9, 0.400, 1.465);//RHO(1450) 00055 DK2piRes[6] = resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 1.43, 212, 0.454, 0.519, 0);//Sigma(600) 00056 DK2piRes[7] = resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 0.23, 237, 0.101, 1.050, 0);//Sigma 00057 DK2piRes[8] = resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 1.644, 132.1, 0.0508, 0.89166,1);//K*(892)- 00058 DK2piRes[9] = resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 0.61, 113, 0.232, 1.414, 1);//K*(1410)- 00059 DK2piRes[10] = resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 2.15, 353.6, 0.294, 1.412, 0);//K*_0(1430)- 00060 DK2piRes[11] = resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 0.88, 318.7, 0.0985, 1.4256, 2);//K*_2(1430)- 00061 DK2piRes[12] = resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 1.39, 103, 0.322, 1.717, 1);//K*(1680)- 00062 DK2piRes[13] = resAmp(y, z, x, m_mass[2], m_mass[1], m_mass[3], 0.144, 320.3, 0.0508, 0.89166,1);//K*(892)+ 00063 DK2piRes[14] = resAmp(y, z, x, m_mass[2], m_mass[1], m_mass[3], 0.45, 254, 0.232, 1.414, 1);//K*(1410)+ 00064 DK2piRes[15] = resAmp(y, z, x, m_mass[2], m_mass[1], m_mass[3], 0.47, 88, 0.294, 1.412, 0);//K*_0(1430)+ 00065 DK2piRes[16] = resAmp(y, z, x, m_mass[2], m_mass[1], m_mass[3], 0.25, 265, 0.0985, 1.4256, 2);//K*_2(1430)+ 00066 DK2piRes[17] = resAmp(y, z, x, m_mass[2], m_mass[1], m_mass[3], 1.2, 118, 0.322, 1.717, 1);//K*(1680)+ 00067 00068 double pi180inv = 3.1415926/180.; 00069 DK2piRes[18] = TComplex(3.0*cos(164*pi180inv),3.0*sin(164*pi180inv)); 00070 00071 for(int i=0; i<19; i++){ 00072 D0 += DK2piRes[i]; 00073 } 00074 00075 return D0; 00076 } // Amplitude
TComplex Dalitz::Babar_Amplitude | ( | double | x, | |
double | y, | |||
double | z | |||
) |
Definition at line 633 of file Dalitz.cxx.
References Babar_resAmp(), Babar_sakurai(), cos(), genRecEmupikp::i, and sin().
Referenced by Phase().
00633 { 00634 00635 //PRD 73, 112009(2006) Belle 00636 //for D0 particle 1: K particle 2: pi- particle 3: pi+ 00637 //the right order is: (1,2), (1,3), (3,2) 00638 double m_mass[4] = { 1.86450, 0.497648, 0.139570, 0.139570}; //mass 00639 00640 TComplex D0(0.0,0.0); 00641 00642 //x, y, z already squared, need to get back the mass!!!! 00643 x = sqrt(x); 00644 y = sqrt(y); 00645 z = sqrt(z); 00646 00647 TComplex DK2piRes[17]; 00648 DK2piRes[0] = Babar_sakurai(x, y, z, 1.00, 0.0, 0.1464, 0.7758);//RHO(770) 00649 DK2piRes[1] = Babar_resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 0.0391,115.3, 0.00849,0.78259,1);//OMEGA 00650 DK2piRes[2] = Babar_resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 0.482, -141.8, 0.044, 0.975, 0);//F_0(980) 00651 DK2piRes[3] = Babar_resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 0.922, -21.3, 0.1851, 1.2754, 2);//F_2(1270) 00652 DK2piRes[4] = Babar_resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 2.25, 113.2, 0.173, 1.434, 0);//F_0(1370) hep-ph 0009168 00653 DK2piRes[5] = Babar_sakurai(x, y, z, 0.52, 38, 0.455, 1.406);//RHO(1450) 00654 DK2piRes[6] = Babar_resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 1.36, -177.9, 0.383, 0.484, 0);//Sigma(600) 00655 DK2piRes[7] = Babar_resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 0.340, 153.0, 0.088, 1.014, 0);//Sigma 00656 DK2piRes[8] = Babar_resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 1.781, 131.0, 0.0508, 0.89166,1);//K*(892)- 00657 DK2piRes[9] = Babar_resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 0.52, 154, 0.232, 1.414, 1);//K*(1410)- 00658 DK2piRes[10] = Babar_resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 2.45, -8.3, 0.294, 1.412, 0);//K*_0(1430)- 00659 DK2piRes[11] = Babar_resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 1.05, -54.3, 0.0985, 1.4256, 2);//K*_2(1430)- 00660 DK2piRes[12] = Babar_resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 0.89, -139, 0.322, 1.717, 1);//K*(1680)- 00661 DK2piRes[13] = Babar_resAmp(y, z, x, m_mass[2], m_mass[1], m_mass[3], 0.180, -44.1, 0.0508, 0.89166,1);//K*(892)+ 00662 DK2piRes[14] = Babar_resAmp(y, z, x, m_mass[2], m_mass[1], m_mass[3], 0.37, 18, 0.294, 1.412, 0);//K*_0(1430)+ 00663 DK2piRes[15] = Babar_resAmp(y, z, x, m_mass[2], m_mass[1], m_mass[3], 0.075, -104, 0.0985, 1.4256, 2);//K*_2(1430)+ 00664 00665 double pi180inv = 3.1415926/180.; 00666 DK2piRes[16] = TComplex(3.53*cos(128*pi180inv),3.53*sin(128*pi180inv)); 00667 00668 for(int i=0; i<17; i++){ 00669 D0 += DK2piRes[i]; 00670 } 00671 00672 return D0; 00673 } // End Babar_amplitude
TComplex Dalitz::Babar_resAmp | ( | double | mAC, | |
double | mBC, | |||
double | mAB, | |||
double | mB, | |||
double | mA, | |||
double | mC, | |||
double | _ampl, | |||
double | _theta, | |||
double | _gamma, | |||
double | _bwm, | |||
int | _spin | |||
) |
Definition at line 558 of file Dalitz.cxx.
References cos(), sin(), and subSeperate::temp.
Referenced by Babar_Amplitude().
00560 { 00561 00562 double pi180inv = 3.1415926/180.; 00563 00564 TComplex ampl; 00565 00566 double mD = 1.86450; 00567 00568 double mR = _bwm; 00569 double gammaR = _gamma; 00570 00571 double temp = (mAB*mAB-mA*mA-mB*mB)*(mAB*mAB-mA*mA-mB*mB)/4.0- mA*mA*mB*mB; 00572 if (temp < 0) temp = 0; 00573 double pAB = sqrt( temp/(mAB*mAB) ); 00574 00575 temp = (mR*mR-mA*mA-mB*mB)*(mR*mR-mA*mA-mB*mB)/4.0 - mA*mA*mB*mB; 00576 if (temp < 0) temp = 0; 00577 double pR = sqrt( temp/(mR*mR)); 00578 00579 temp = (mD*mD-mR*mR-mC*mC)*(mD*mD-mR*mR-mC*mC)/4.0 - mR*mR*mC*mC; 00580 if (temp < 0) temp = 0; 00581 double pD = sqrt( temp/(mD*mD) ); 00582 00583 temp = (mD*mD-mAB*mAB-mC*mC)*(mD*mD-mAB*mAB-mC*mC)/4.0 - mAB*mAB*mC*mC; 00584 if (temp < 0) temp = 0; 00585 double pDAB = sqrt( temp/(mD*mD)); 00586 00587 double fR = 1; 00588 double fD = 1; 00589 int power = 0; 00590 switch (_spin) { 00591 case 0: 00592 fR = 1.0; 00593 fD = 1.0; 00594 power = 1; 00595 break; 00596 case 1: 00597 fR = sqrt(1.0+1.5*1.5*pR*pR)/sqrt(1.0+1.5*1.5*pAB*pAB); 00598 fD = sqrt(1.0+5.0*5.0*pD*pD)/sqrt(1.0+5.0*5.0*pDAB*pDAB); 00599 power = 3; 00600 break; 00601 case 2: 00602 fR = sqrt( (9+3*pow((1.5*pR),2)+pow((1.5*pR),4))/(9+3*pow((1.5*pAB),2)+pow((1.5*pAB),4)) ); 00603 fD = sqrt( (9+3*pow((5.0*pD),2)+pow((5.0*pD),4))/(9+3*pow((5.0*pDAB),2)+pow((5.0*pDAB),4)) ); 00604 power = 5; 00605 break; 00606 } 00607 00608 double gammaAB = gammaR*pow(pAB/pR,power)*(mR/mAB)*fR*fR; 00609 00610 switch (_spin) { 00611 case 0: 00612 ampl = _ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00613 fR*fD/(mR*mR-mAB*mAB-TComplex(0.0,mR*gammaAB)); 00614 break; 00615 case 1: 00616 ampl = _ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00617 fR*fD*(mAC*mAC-mBC*mBC+(mD*mD-mC*mC)*(mB*mB-mA*mA)/(mAB*mAB))/ 00618 (mR*mR-mAB*mAB-TComplex(0.0,mR*gammaAB)); 00619 break; 00620 case 2: 00621 ampl = _ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00622 fR*fD/(mR*mR-mAB*mAB-TComplex(0.0,mR*gammaAB))* 00623 (pow((mBC*mBC-mAC*mAC+(mD*mD-mC*mC)*(mA*mA-mB*mB)/(mAB*mAB)),2)- 00624 (1.0/3.0)*(mAB*mAB-2*mD*mD-2*mC*mC+pow((mD*mD- mC*mC)/mAB, 2))* 00625 (mAB*mAB-2*mA*mA-2*mB*mB+pow((mA*mA-mB*mB)/mAB,2))); 00626 break; 00627 } 00628 00629 return ampl; 00630 00631 }
TComplex Dalitz::Babar_sakurai | ( | double | mkp, | |
double | mkm, | |||
double | mpp, | |||
double | _ampl, | |||
double | _theta, | |||
double | gamma_r, | |||
double | m_r | |||
) |
Definition at line 464 of file Dalitz.cxx.
References cos(), m_b, m_pi, num, pi, sin(), and subSeperate::temp.
Referenced by Babar_Amplitude().
00465 { 00466 00467 double pi180inv = 3.1415926/180.; 00468 double m_pi = 0.139570; 00469 double m_k = 0.497648; 00470 double mD = 1.86450; 00471 double num, m_a, m_b, m_c, m2_ab, m2_ac, m2_bc; 00472 double m_ab, m_ac, m_bc, m2_a, m2_b, m2_c, m2_d; 00473 m_a = m_pi; 00474 m_b = m_pi; 00475 m_c = m_k; 00476 m_ab = mpp; 00477 m_ac = mkp; 00478 m_bc = mkm; 00479 00480 m2_ab = m_ab*m_ab; 00481 m2_ac = m_ac*m_ac; 00482 m2_bc = m_bc*m_bc; 00483 m2_a = m_a*m_a; 00484 m2_b = m_b*m_b; 00485 m2_c = m_c*m_c; 00486 m2_d = mD*mD; 00487 00488 //for spin 1 angular term 00489 num=m2_ac-m2_bc+(m2_d-m2_c)*(m2_b-m2_a)/(m_r*m_r); 00490 00491 //form factor --------------------------------------------------- 00492 double mAB = m_ab; 00493 double mA = m_a; 00494 double mB = m_b; 00495 double mC = m_c; 00496 double mR = m_r; 00497 double temp = (mAB*mAB-mA*mA-mB*mB)*(mAB*mAB-mA*mA-mB*mB)/4.0- mA*mA*mB*mB; 00498 if (temp < 0) temp = 0; 00499 double pAB = sqrt( temp/(mAB*mAB) ); 00500 00501 temp = (mR*mR-mA*mA-mB*mB)*(mR*mR-mA*mA-mB*mB)/4.0 - mA*mA*mB*mB; 00502 if (temp < 0) temp = 0; 00503 double pR = sqrt( temp/(mR*mR)); 00504 00505 temp = (mD*mD-mR*mR-mC*mC)*(mD*mD-mR*mR-mC*mC)/4.0 - mR*mR*mC*mC; 00506 if (temp < 0) temp = 0; 00507 double pD = sqrt( temp/(mD*mD) ); 00508 00509 temp = (mD*mD-mAB*mAB-mC*mC)*(mD*mD-mAB*mAB-mC*mC)/4.0 - mAB*mAB*mC*mC; 00510 if (temp < 0) temp = 0; 00511 double pDAB = sqrt( temp/(mD*mD)); 00512 00513 double fR = sqrt(1.0+1.5*1.5*pR*pR)/sqrt(1.0+1.5*1.5*pAB*pAB); 00514 double fD = sqrt(1.0+5.0*5.0*pD*pD)/sqrt(1.0+5.0*5.0*pDAB*pDAB); 00515 //----------------------------------------------------------------- 00516 00517 double pi,m2,m_pi2,ss,ppi2,p02,ppi,p0; 00518 double d,hs,hm,dhdq,f,gamma_s,dr,di; 00519 00520 pi = 3.14159265358979; 00521 00522 m2 = m_r*m_r; 00523 m_pi2 = m_pi*m_pi; 00524 ss = sqrt(m2_ab); 00525 00526 ppi2 = (m2_ab-4.*m_pi2)/4.; 00527 p02 = (m2-4.*m_pi2)/4.; 00528 if (p02 < 0) p02 = 0; 00529 if (ppi2 < 0) ppi2 = 0; 00530 p0 = sqrt(p02); 00531 ppi = sqrt(ppi2); 00532 00533 d = 3.*m_pi2/pi/p02*log((m_r+2.*p0)/2./m_pi) + m_r/2./pi/p0 - m_pi2*m_r/pi/(p0*p0*p0); 00534 00535 hs = 2.*ppi/pi/ss*log((ss+2.*ppi)/2./m_pi); 00536 hm = 2.*p0/pi/m_r*log((m_r+2.*p0)/2./m_pi); 00537 00538 dhdq = hm*(1./8./p02 - 1./2./m2) + 1./2./pi/m2; 00539 00540 f = gamma_r*m_r*m_r/(p0*p0*p0)*(ppi2*(hs-hm) - p02*(m2_ab-m2)*dhdq); 00541 00542 gamma_s = gamma_r*m2*ppi*ppi*ppi/ss/(p0*p0*p0); 00543 00544 dr = m2-m2_ab+f; 00545 di = gamma_s; 00546 00547 //---------------------------------------------------------------------------- 00548 num *= fR*fD*(1+d*gamma_r/m_r); 00549 //---------------------------------------------------------------------------- 00550 TComplex ampl = num/TComplex(dr, -di); 00551 ampl = _ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))*ampl; 00552 00553 return ampl; 00554 00555 } // end Babar_sakurai
TComplex Dalitz::CLEO_Amplitude | ( | double | x, | |
double | y, | |||
double | z | |||
) |
Definition at line 78 of file Dalitz.cxx.
References CLEO_resAmp(), and genRecEmupikp::i.
00078 { 00079 00080 double m_mass[4] = {1.86450, 0.497648, 0.139570, 0.139570}; //mass 00081 00082 TComplex D0(0.0,0.0); 00083 00084 //x, y, z already squared, need to get back the mass!!!! 00085 x = sqrt(x); 00086 y = sqrt(y); 00087 z = sqrt(z); 00088 00089 // Array for resonances 00090 TComplex DK2piRes[3]; 00091 00092 //x->3 y->2 z->1 00093 DK2piRes[0] = CLEO_resAmp(x, z, y, m_mass[3], m_mass[1], m_mass[2], 2.31, 109.0, 0.0498, 0.89610, 1);//K*(892) 00094 DK2piRes[1] = CLEO_resAmp(x, y, z, m_mass[3], m_mass[2], m_mass[1], 1.59,-123.0,0.1491,0.7683,1);//RHO(770) 00095 DK2piRes[2] = TComplex(1.0, 0.0) ; 00096 00097 for(int i=0; i<3; i++){ 00098 D0 += DK2piRes[i]; 00099 } 00100 00101 return D0; 00102 }
TComplex Dalitz::CLEO_resAmp | ( | double | mAC, | |
double | mBC, | |||
double | mAB, | |||
double | mA, | |||
double | mB, | |||
double | mC, | |||
double | _ampl, | |||
double | _theta, | |||
double | _gamma, | |||
double | _bwm, | |||
int | _spin | |||
) |
Definition at line 207 of file Dalitz.cxx.
References cos(), PI, and sin().
Referenced by CLEO_Amplitude().
00209 { 00210 00211 double pi180inv = 3.1415926/180.; 00212 00213 TComplex ampl; 00214 00215 //EvtVector4R _p4_d3 = _p4_p-_p4_d1-_p4_d2; 00216 00217 //get cos of the angle between the daughters from their 4-momenta 00218 //and the 4-momentum of the parent 00219 00220 //in general, EvtDecayAngle(parent, part1+part2, part1) gives the angle 00221 //the missing particle (not listed in the arguments) makes 00222 //with part2 in the rest frame of both 00223 //listed particles (12) 00224 00225 //angle 3 makes with 2 in rest frame of 12 (CS3) 00226 // double cos_phi_0 = EvtDecayAngle(_p4_p, _p4_d1+_p4_d2, _p4_d1); 00227 // double EvtDecayAngle(const EvtVector4R& p,const EvtVector4R& q, 00228 // const EvtVector4R& d) { 00229 00230 // double pd=p*d; 00231 // double pq=p*q; 00232 // double qd=q*d; 00233 // double mp2=p.mass2(); 00234 // double mq2=q.mass2(); 00235 // double md2=d.mass2(); 00236 00237 // double cost=(pd*mq2-pq*qd)/sqrt((pq*pq-mq2*mp2)*(qd*qd-mq2*md2)); 00238 00239 // return cost; 00240 00241 // } 00242 00243 // double mD = 1.86450 ; 00244 double mD = 1.86484 ; 00245 double eA = ( mD*mD - mBC*mBC + mA*mA ) / (2.*mD) ; 00246 double eAB = ( mD*mD - mC*mC + mAB*mAB ) / (2.*mD) ; 00247 00248 // Take D to be at rest 00249 double pd = mD * eA ; 00250 double pq = mD * eAB ; 00251 double qd = mA*mA + 0.5 * ( mAB*mAB - mA*mA - mB*mB ) ; 00252 double mp2 = mD*mD ; 00253 double mq2 = mAB*mAB ; 00254 double md2 = mA*mA ; 00255 double cos_phi_0 = (pd*mq2-pq*qd)/sqrt((pq*pq-mq2*mp2)*(qd*qd-mq2*md2)); 00256 00257 //angle 3 makes with 1 in 12 is, of course, -cos_phi_0 00258 00259 // double mAB=(_p4_d1+_p4_d2).mass(); 00260 // double mBC=(_p4_d2+p4_d3).mass(); 00261 // double mAC=(_p4_d1+p4_d3).mass(); 00262 // double mA=_p4_d1.mass(); 00263 // double mB=_p4_d2.mass(); 00264 // double mD=_p4_p.mass(); 00265 // double mC=p4_d3.mass(); 00266 00267 switch (_spin) { 00268 00269 case 0 : 00270 ampl=(_ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00271 sqrt(_gamma/(2.*PI))* 00272 (1.0/(mAB-_bwm-TComplex(0.0,0.5*_gamma)))); 00273 break; 00274 00275 case 1 : 00276 ampl=(_ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00277 sqrt(_gamma/(2.*PI))* 00278 (cos_phi_0/(mAB-_bwm-TComplex(0.0,0.5*_gamma)))); 00279 break; 00280 00281 // case 2: 00282 // ampl=(_ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00283 // sqrt(_gamma/(2.*PI))* 00284 // ((1.5*cos_phi_0*cos_phi_0-0.5)/((_p4_d1+_p4_d2).mass()-_bwm-EvtComplex(0.0, 0.5*_gamma)))); 00285 // break; 00286 00287 // case 3: 00288 // ampl=(_ampl*EvtComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00289 // sqrt(_gamma/EvtConst::twoPi)* 00290 // ((2.5*cos_phi_0*cos_phi_0*cos_phi_0-1.5*cos_phi_0)/((_p4_d1+_p4_d2).mass()-_bwm-EvtComplex(0.0, 0.5*_gamma)))); 00291 // break; 00292 00293 default: 00294 //cout << "EvtGen: wrong spin in CLEO_resAmp()" << endl; 00295 ampl = TComplex(0.0); 00296 break; 00297 00298 } 00299 00300 return ampl; 00301 }
TComplex Dalitz::f_980 | ( | double | mPP, | |
double | mR, | |||
double | _ampl, | |||
double | _theta | |||
) |
Definition at line 379 of file Dalitz.cxx.
Referenced by Amplitude().
00380 { 00381 00382 double pi180inv = 3.1415926/180.; 00383 double mK = 0.493677; 00384 double mK0 = 0.497648; 00385 double mP = 0.13957; 00386 00387 double m2_PP = mPP*mPP; 00388 double gamma = 0.09*sqrt(m2_PP/4.-mP*mP); 00389 if( m2_PP/4.>mK*mK ) gamma = gamma + 0.02/2.*sqrt(m2_PP/4.-mK*mK); 00390 if( m2_PP/4.>mK0*mK0 ) gamma = gamma + 0.02/2.*sqrt(m2_PP/4.-mK0*mK0); 00391 00392 //form factor both equal 1 00393 TComplex ampl; 00394 ampl = _ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00395 1./TComplex(mR*mR-m2_PP, -mR*gamma); 00396 00397 return ampl; 00398 00399 } // end f_980
int Dalitz::getBin | ( | double | mx, | |
double | my, | |||
double | mz | |||
) |
Definition at line 675 of file Dalitz.cxx.
References bin, N, Phase(), PI, and Point_on_DP2().
00675 { 00676 00677 // For computing Dalitz variable kinemtaics 00678 double m_mass_2[4]={ 1.86450*1.86450, 0.497648*0.497648, 00679 0.139570*0.139570, 0.139570*0.139570}; //mass square 00680 double m_sum_m_2 = m_mass_2[0] + m_mass_2[1] + m_mass_2[2] + m_mass_2[3]; 00681 00682 // Check if on DP 00683 if( !(Point_on_DP2(mx, my)) && !(Point_on_DP2(my, mx)) ) return -1; 00684 00685 // Over-ride user z, use computed z(x,y) instead 00686 mz = m_sum_m_2 - mx - my; 00687 if (mz < 0) mz = 0; 00688 00689 // Determine phase 00690 double thisPhase = Phase(mx, my, mz); 00691 00692 // Change this to bin that is found (-1 means not found) 00693 int thisbin = -1; 00694 00695 // Determine the bin and increment 00696 for (int bin = 0; bin < N; bin++) { 00697 if((thisPhase >= (bin-0.5)*2*PI/N) && (thisPhase < (bin+0.5)*2*PI/N)) thisbin = bin; 00698 } 00699 00700 return thisbin; 00701 00702 } // end getBin
double Dalitz::Phase | ( | double | x, | |
double | y, | |||
double | z, | |||
int | Babar = 1 | |||
) |
Definition at line 104 of file Dalitz.cxx.
References Amplitude(), arg(), Babar_Amplitude(), N, and PI.
Referenced by getBin().
00104 { 00105 00106 TComplex D0(0,0); 00107 TComplex D0bar(0,0); 00108 00109 if (Babar == 1) { 00110 D0 = Babar_Amplitude(x, y, z); 00111 D0bar = Babar_Amplitude(y, x, z); 00112 } else{ 00113 D0 = Amplitude(x, y, z); 00114 D0bar = Amplitude(y, x, z); 00115 } 00116 00117 //Compute phase difference 00118 double deltaD = arg(D0) - arg(D0bar); 00119 if(x<y) deltaD = -deltaD;//make it symmetric to the lower half 00120 00121 if ( deltaD < -PI/N ) deltaD += 2*PI; // shift deltaD to [-PI/8,15*PI/8] 00122 if ( deltaD > (2*N-1)*PI/N ) deltaD -= 2*PI; // shift deltaD to [-PI/8,15*PI/8] 00123 00124 return deltaD; 00125 00126 } // end Phase
bool Dalitz::Point_on_DP | ( | double | x, | |
double | y | |||
) |
Definition at line 128 of file Dalitz.cxx.
References subSeperate::temp.
00128 { 00129 00130 double m_mass[4] = {1.86450, 0.497648, 0.139570, 0.139570}; //mass 00131 double m_mass2[4]= {1.86450*1.86450, 0.497648*0.497648, 00132 0.139570*0.139570, 0.139570*0.139570}; //mass square 00133 00134 double m_XmaxDP = m_mass[0] - m_mass[3]; m_XmaxDP *= m_XmaxDP; 00135 double m_XminDP = m_mass[1] + m_mass[2]; m_XminDP *= m_XminDP; 00136 00137 if ( (x > m_XmaxDP) || (x < m_XminDP) ) return false; 00138 00139 double Low = 0; 00140 double Up = 0; 00141 double HInv_m12 = 0.5/sqrt(x); 00142 double E1 = HInv_m12*(x + m_mass2[1] - m_mass2[2]); 00143 double E3 = HInv_m12*(m_mass2[0] - m_mass2[3] - x); 00144 double E1_2 = E1*E1; 00145 double E3_2 = E3*E3; 00146 00147 if (E1 < m_mass[1]) { E1=m_mass[1]; E1_2=m_mass2[1]; } 00148 if (E3 < m_mass[3]) { E3=m_mass[3]; E3_2=m_mass2[3]; } 00149 00150 double temp = E1_2-m_mass2[1]; 00151 if (temp < 0) temp = 0; 00152 double P1 = sqrt(temp); 00153 temp = E3_2 - m_mass2[3]; 00154 if (temp<0) temp = 0; 00155 double P3 = sqrt(temp); 00156 double E13_2 = (E1+E3)*(E1+E3); 00157 00158 // Compute hi and lo y-coord 00159 Low = E13_2 - (P1+P3)*(P1+P3); 00160 Up = E13_2 - (P1-P3)*(P1-P3); 00161 00162 if ( (y > Up) || (y < Low) ) return false; 00163 00164 return true; 00165 } // end Point_on_DP
bool Dalitz::Point_on_DP2 | ( | double | x, | |
double | y | |||
) |
Definition at line 168 of file Dalitz.cxx.
References subSeperate::temp.
Referenced by getBin().
00168 { 00169 00170 double m_mass[4] = {1.86450, 0.497648, 0.139570, 0.139570}; //mass 00171 double m_mass2[4] = {1.86450*1.86450, 0.497648*0.497648, 00172 0.139570*0.139570, 0.139570*0.139570}; //mass square 00173 00174 double m_XmaxDP = m_mass[0] - m_mass[3]; m_XmaxDP *= m_XmaxDP; 00175 double m_XminDP = m_mass[1] + m_mass[2]; m_XminDP *= m_XminDP; 00176 00177 if ( (x > m_XmaxDP) || (x < m_XminDP) ) return false; 00178 00179 double Low = 0; 00180 double Up = 0; 00181 double HInv_m12 = 0.5/sqrt(x); 00182 double E1 = HInv_m12*(x + m_mass2[1] - m_mass2[2]); 00183 double E3 = HInv_m12*(m_mass2[0] - m_mass2[3] - x); 00184 double E1_2 = E1*E1; 00185 double E3_2 = E3*E3; 00186 00187 if (E1 < m_mass[1]) { E1=m_mass[1]; E1_2=m_mass2[1]; } 00188 if (E3 < m_mass[3]) { E3=m_mass[3]; E3_2=m_mass2[3]; } 00189 00190 double temp = E1_2-m_mass2[1]; 00191 if (temp < 0) temp = 0; 00192 double P1 = sqrt(temp); 00193 temp = E3_2-m_mass2[3]; 00194 if (temp < 0) temp = 0; 00195 double P3 = sqrt(temp); 00196 double E13_2 = (E1+E3)*(E1+E3); 00197 00198 Low = E13_2 - (P1+P3)*(P1+P3); 00199 Up = E13_2 - (P1-P3)*(P1-P3); 00200 00201 if ( (y > (Up+0.05)) || (y < (Low-0.05)) ) return false;//make it larger 00202 00203 return true; 00204 } // end Point_on_DP2
TComplex Dalitz::resAmp | ( | double | mAC, | |
double | mBC, | |||
double | mAB, | |||
double | mA, | |||
double | mB, | |||
double | mC, | |||
double | _ampl, | |||
double | _theta, | |||
double | _gamma, | |||
double | _bwm, | |||
int | _spin | |||
) |
Definition at line 304 of file Dalitz.cxx.
References cos(), sin(), and subSeperate::temp.
Referenced by Amplitude().
00306 { 00307 00308 double pi180inv = 3.1415926/180.; 00309 00310 TComplex ampl; 00311 00312 double mD = 1.86450; 00313 00314 double mR = _bwm; 00315 double gammaR = _gamma; 00316 00317 double temp = (mAB*mAB-mA*mA-mB*mB)*(mAB*mAB-mA*mA-mB*mB)/4.0- mA*mA*mB*mB; 00318 if (temp < 0) temp = 0; 00319 double pAB = sqrt( temp/(mAB*mAB) ); 00320 00321 temp = (mR*mR-mA*mA-mB*mB)*(mR*mR-mA*mA-mB*mB)/4.0 - mA*mA*mB*mB; 00322 if (temp<0) temp = 0; 00323 double pR = sqrt( temp/(mR*mR)); 00324 00325 temp = (mD*mD-mR*mR-mC*mC)*(mD*mD-mR*mR-mC*mC)/4.0 - mR*mR*mC*mC; 00326 if (temp < 0) temp = 0; 00327 double pD = sqrt( temp/(mD*mD) ); 00328 00329 temp = (mD*mD-mAB*mAB-mC*mC)*(mD*mD-mAB*mAB-mC*mC)/4.0 - mAB*mAB*mC*mC; 00330 if (temp<0) temp = 0; 00331 double pDAB = sqrt( temp/(mD*mD)); 00332 00333 double fR = 1; 00334 double fD = 1; 00335 int power = 0; 00336 switch (_spin) { 00337 case 0: 00338 fR = 1.0; 00339 fD = 1.0; 00340 power = 1; 00341 break; 00342 case 1: 00343 fR = sqrt(1.0+1.5*1.5*pR*pR)/sqrt(1.0+1.5*1.5*pAB*pAB); 00344 fD = sqrt(1.0+5.0*5.0*pD*pD)/sqrt(1.0+5.0*5.0*pDAB*pDAB); 00345 power = 3; 00346 break; 00347 case 2: 00348 fR = sqrt( (9+3*pow((1.5*pR),2)+pow((1.5*pR),4))/(9+3*pow((1.5*pAB),2)+pow((1.5*pAB),4)) ); 00349 fD = sqrt( (9+3*pow((5.0*pD),2)+pow((5.0*pD),4))/(9+3*pow((5.0*pDAB),2)+pow((5.0*pDAB),4)) ); 00350 power = 5; 00351 break; 00352 } 00353 00354 double gammaAB= gammaR*pow(pAB/pR,power)*(mR/mAB)*fR*fR; 00355 00356 switch (_spin) { 00357 case 0: 00358 ampl = _ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00359 fR*fD/(mR*mR-mAB*mAB-TComplex(0.0,mR*gammaAB)); 00360 break; 00361 case 1: 00362 ampl = _ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00363 fR*fD*(mAC*mAC-mBC*mBC+(mD*mD-mC*mC)*(mB*mB-mA*mA)/(mR*mR))/ 00364 (mR*mR-mAB*mAB-TComplex(0.0,mR*gammaAB)); 00365 break; 00366 case 2: 00367 ampl = _ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))* 00368 fR*fD/(mR*mR-mAB*mAB-TComplex(0.0,mR*gammaAB))* 00369 (pow((mBC*mBC-mAC*mAC+(mD*mD-mC*mC)*(mA*mA-mB*mB)/(mR*mR)),2)- 00370 (1.0/3.0)*(mAB*mAB-2*mD*mD-2*mC*mC+pow((mD*mD- mC*mC)/mR, 2))* 00371 (mAB*mAB-2*mA*mA-2*mB*mB+pow((mA*mA-mB*mB)/mR,2))); 00372 break; 00373 } 00374 00375 return ampl; 00376 } // end resAmp
TComplex Dalitz::sakurai | ( | double | mkp, | |
double | mkm, | |||
double | mpp, | |||
double | _ampl, | |||
double | _theta, | |||
double | gamma_r, | |||
double | m_r | |||
) |
Definition at line 402 of file Dalitz.cxx.
References cos(), m_b, m_pi, num, pi, and sin().
Referenced by Amplitude().
00403 { 00404 00405 double pi180inv = 3.1415926/180.; 00406 double m_pi = 0.139570; 00407 double m_k = 0.497648; 00408 double mD = 1.86450; 00409 double num, m_a, m_b, m_c, m2_ab, m2_ac, m2_bc; 00410 double m_ab, m_ac, m_bc, m2_a, m2_b, m2_c, m2_d; 00411 m_a = m_pi; 00412 m_b = m_pi; 00413 m_c = m_k; 00414 m_ab = mpp; 00415 m_ac = mkp; 00416 m_bc = mkm; 00417 00418 m2_ab = m_ab*m_ab; 00419 m2_ac = m_ac*m_ac; 00420 m2_bc = m_bc*m_bc; 00421 m2_a = m_a*m_a; 00422 m2_b = m_b*m_b; 00423 m2_c = m_c*m_c; 00424 m2_d = mD*mD; 00425 00426 //for spin 1 angular term 00427 num = m2_ac-m2_bc+(m2_d-m2_c)*(m2_b-m2_a)/(m_r*m_r); 00428 00429 double pi, m2, m_pi2, ss, ppi2, p02, ppi, p0; 00430 double d, hs, hm, dhdq, f, gamma_s, dr, di; 00431 00432 pi = 3.14159265358979; 00433 00434 m2 = m_r*m_r; 00435 m_pi2 = m_pi*m_pi; 00436 ss = sqrt(m2_ab); 00437 00438 ppi2 = (m2_ab-4.*m_pi2)/4.; 00439 p02 = (m2-4.*m_pi2)/4.; 00440 p0 = sqrt(p02); 00441 ppi = sqrt(ppi2); 00442 00443 d = 3.*m_pi2/pi/p02*log((m_r+2.*p0)/2./m_pi) + m_r/2./pi/p0 - m_pi2*m_r/pi/(p0*p0*p0); 00444 00445 hs = 2.*ppi/pi/ss*log((ss+2.*ppi)/2./m_pi); 00446 hm = 2.*p0/pi/m_r*log((m_r+2.*p0)/2./m_pi); 00447 00448 dhdq = hm*(1./8./p02 - 1./2./m2) + 1./2./pi/m2; 00449 00450 f = gamma_r*m_r*m_r/(p0*p0*p0)*(ppi2*(hs-hm) - p02*(m2_ab-m2)*dhdq); 00451 00452 gamma_s = gamma_r*m2*ppi*ppi*ppi/ss/(p0*p0*p0); 00453 00454 dr = m2-m2_ab+f; 00455 di = gamma_s; 00456 00457 TComplex ampl = num/TComplex(dr, -di); 00458 ampl = _ampl*TComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))*ampl; 00459 00460 return ampl; 00461 00462 }
int Dalitz::N [private] |
const int Dalitz::Nbin = 1000 [static, private] |
double Dalitz::PI = 3.1415926 [static, private] |