35 model_name=
"DsToEtapipi0";
79 int GG[4][4] = { {1,0,0,0}, {0,-1,0,0}, {0,0,-1,0}, {0,0,0,-1} };
80 for (
int i=0; i<4; i++) {
81 for (
int j=0; j<4; j++) {
119 double P1[4], P2[4], P3[4];
120 P1[0] = D1.
get(0); P1[1] = D1.
get(1); P1[2] = D1.
get(2); P1[3] = D1.
get(3);
121 P2[0] = D2.
get(0); P2[1] = D2.
get(1); P2[2] = D2.
get(2); P2[3] = D2.
get(3);
122 P3[0] = D3.
get(0); P3[1] = D3.
get(1); P3[2] = D3.
get(2); P3[3] = D3.
get(3);
125 value = calDalEva(P1, P2, P3);
130Double_t EvtDsToEtapipi0::calDalEva(Double_t P1[], Double_t P2[], Double_t P3[])
135 PDF[0] = Spin_factor(P1, P2, P3, 1, 1);
136 PDF[1] = Spin_factor(P1, P2, P3, 1, 0);
137 PDF[2] = Spin_factor(P1, P3, P2, 0, 31) - Spin_factor(P2, P3, P1, 0, 30);
140 for(Int_t i=0; i<4; i++){
141 cof =
TComplex(rho[i]*TMath::Cos(phi[i]),rho[i]*TMath::Sin(phi[i]));
144 module = pdf*TComplex::Conjugate(pdf);
147 return (value <= 0) ? 1e-20 : value;
150TComplex EvtDsToEtapipi0::Spin_factor(Double_t P1[], Double_t P2[], Double_t P3[], Int_t spin, Int_t
flag)
154 Double_t
R[4],
s[3], sp2, sDs,
B[2], snk, sck;
155 for(Int_t i=0; i<4; i++){
156 R[i] = P1[i] + P2[i];
159 s[1] = SCADot(P1, P1);
160 s[2] = SCADot(P2, P2);
164 sck = mass_Kaon*mass_Kaon;
172 if(
flag == 0) prop = TComplex::One();
173 if(
flag == 1) prop = propagatorRBW(ma0,Ga0,
s[0],
s[1],
s[2],3.0,0);
175 rhokk = Flatte_rhoab(
s[0],sck,sck);
176 rhopieta = Flatte_rhoab(
s[0],
s[1],
s[2]);
177 prop = 1.0/(mass*mass -
s[0] - ci*(0.341*rhopieta+0.341*0.892*rhokk));
180 rhokk = Flatte_rhoab(
s[0],snk,sck);
181 rhopieta = Flatte_rhoab(
s[0],
s[1],
s[2]);
182 prop = 1.0/(mass*mass -
s[0] - ci*(0.341*rhopieta+0.341*0.892*rhokk));
189 prop = TComplex::One();
193 prop = propagatorRBW(mrho,Grho,
s[0],
s[1],
s[2],3.0,1);
197 Double_t T1[4], t1[4];
200 B[0] = barrierNeo(1,
s[0],
s[1],
s[2],3.0,m_res);
201 B[1] = barrierNeo(1,sDs,
s[0],sp2,5.0,1.9683);
202 for(Int_t i=0; i<4; i++){
203 tmp += T1[i]*t1[i]*G[i][i];
205 amp = tmp*prop*
B[0]*
B[1];
209 Double_t T2[4][4], t2[4][4];
212 B[0] = barrierNeo(2,
s[0],
s[1],
s[2],3.0,mrho);
213 B[1] = barrierNeo(2,sDs,
s[0],sp2,5.0,1.9683);
214 for(Int_t i=0; i<4; i++){
215 for(Int_t j=0; j<4; j++){
216 tmp += T2[i][j]*t2[j][i]*G[j][j]*G[i][i];
219 if(
flag == 0) prop = TComplex::One();
220 if(
flag == 1) prop = propagatorRBW(mrho,Grho,
s[0],
s[1],
s[2],3.0,1);
222 amp = tmp*prop*
B[0]*
B[1];
225 cout<<
"Only S, P, D wave allowed"<<endl;
230void EvtDsToEtapipi0::Com_Multi(
double a1[2],
double a2[2],
double res[2]){
231 res[0] = a1[0]*a2[0]-a1[1]*a2[1];
232 res[1] = a1[1]*a2[0]+a1[0]*a2[1];
234void EvtDsToEtapipi0::Com_Divide(
double a1[2],
double a2[2],
double res[2]){
235 res[0] = (a1[0]*a2[0]+a1[1]*a2[1])/(a2[0]*a2[0]+a2[1]*a2[1]);
236 res[1] = (a1[1]*a2[0]-a1[0]*a2[1])/(a2[0]*a2[0]+a2[1]*a2[1]);
239double EvtDsToEtapipi0::SCADot(
double a1[4],
double a2[4])
242 _cal = a1[0]*a2[0]-a1[1]*a2[1]-a1[2]*a2[2]-a1[3]*a2[3];
245double EvtDsToEtapipi0::barrierNeo(
int l,
double sa,
double sb,
double sc,
double r,
double mR)
248 double pAB=0.25*(sa+sb-sc)*(sa+sb-sc)/sa-sb;
249 double pR =0.25*(mR2+sb-sc)*(mR2+sb-sc)/mR2-sb;
254 if(l == 1) F = sqrt((1+zR)/(1+zAB));
255 if(l == 2) F = sqrt((9+3*zAB+zAB*zAB)/(9+3*zAB+zAB*zAB));
259void EvtDsToEtapipi0::calt1(
double daug1[4],
double daug2[4],
double t1[4]){
262 for(
int i=0; i<4; i++){
263 pa[i] = daug1[i] + daug2[i];
264 qa[i] = daug1[i] - daug2[i];
268 for(
int i=0; i<4; i++){
269 t1[i] = qa[i] - pq/p*pa[i];
272void EvtDsToEtapipi0::calt2(
double daug1[4],
double daug2[4],
double t2[4][4]){
275 calt1(daug1,daug2,t1);
277 for(
int i=0; i<4; i++){
278 pa[i] = daug1[i] + daug2[i];
281 for(
int i=0; i<4; i++){
282 for(
int j=0; j<4; j++){
283 t2[i][j] = t1[i]*t1[j] - 1.0/3*r*(G[i][j]-pa[i]*pa[j]/p);
288double EvtDsToEtapipi0::wid(
double mass,
double sa,
double sb,
double sc,
double r,
int l){
294 q = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
296 q0 = (sa0+sb-sc)*(sa0+sb-sc)/(4*sa0)-sb;
303 if(l == 1) F = sqrt((1+z0)/(1+z));
304 if(l == 2) F = sqrt((9+3*z0+z0*z0)/(9+3*z+z*z));
306 widm = pow(
t,l+0.5)*
mass/m*F*F;
310void EvtDsToEtapipi0::Flatte_rhoab(
double sa,
double sb,
double sc,
double rho[2])
312 double q = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
315 rho[0]=2* sqrt(
q/sa);
320 rho[1]=2*sqrt(-
q/sa);
324TComplex EvtDsToEtapipi0::Flatte_rhoab(
double sa,
double sb,
double sc)
326 double q = (sa+sb-sc)*(sa+sb-sc)/(4*sa)-sb;
330 rho = 2.0*sqrt(
q/sa)*(TComplex::One());
333 rho = 2.0*sqrt(-
q/sa)*ci;
338TComplex EvtDsToEtapipi0::propagatorRBW(
double mass,
double width,
double sa,
double sb,
double sc,
double r,
int l)
complex< double > TComplex
****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
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 decay(EvtParticle *p)
void getName(std::string &name)
virtual ~EvtDsToEtapipi0()
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)