BOSS 7.0.8
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtAmpsEtap2gpipi.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of models developed at BES collaboration
5// based on the EvtGen framework. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/BesCopyright
9// Copyright (A) 2006 Ping Rong-Gang @IHEP
10//
11// Module: EvtDIY.cc
12//
13// Description: Routine for users to create model to use the model DIY
14//
15// Modification history:
16//
17// Ping R.-G. December, 2006 Module created
18//
19//------------------------------------------------------------------------
20//
22#include <math.h>
23#include "RooComplex.h"
24#include <complex>
25#include <stdlib.h>
27#include "EvtGenBase/EvtKine.hh"
28
33#include "EvtGenModels/EvtEtap2gpipi.hh"//cov form, not normalized, get momentum in CMS
34#include <string>
35#include "TMath.h"
36using namespace std;
37
38
39
40// ******** eta' decay to pi+ pi- gamma with angular distribution
42public:
43 angular_rho2(EvtVector4R pd1, EvtVector4R pd2,EvtVector4R pd3, bool type_switch){
44 _pd[0]=pd1;
45 _pd[1]=pd2;
46 _pd[2]=pd3;
47 ang_on=type_switch;
48 }
49 double lamb(double a, double b, double c);
50
51 double amps(int aa);
52
53private:
54 EvtVector4R _pd[3];
55 bool ang_on;
56};
57
59 EvtVector4R prho=_pd[0]+_pd[1];
60 EvtVector4R mprho(prho.get(0),-1*prho.get(1),-1*prho.get(2),-1*prho.get(3));
61 //cout<<"pos:"<<prho.get(0)<<", "<<prho.get(1)<<", "<<prho.get(2)<<", "<<prho.get(3)<<endl;
62 //cout<<"neg:"<<mprho.get(0)<<", "<<mprho.get(1)<<", "<<mprho.get(2)<<", "<<mprho.get(3)<<endl;
63 double m2=(_pd[0]+_pd[1]).mass2();
64 double m=(_pd[0]+_pd[1]).mass();
65 //*****************angluar part******************
66 EvtVector4R pi_rhocms = boostTo(_pd[0],mprho);
67 EvtVector4R gam_rhocms = boostTo(_pd[2],mprho);
68 EvtVector4R etap_rhocms = boostTo(prho+_pd[2],mprho);
69 double coshel_pi = pi_rhocms.dot(etap_rhocms)/pi_rhocms.d3mag()/etap_rhocms.d3mag();
70 //double coshel_pi2 = pi_rhocms.dot(gam_rhocms)/pi_rhocms.d3mag()/gam_rhocms.d3mag();
71 // cout<<(prho+_pd[2]).get(1)<<", "<<(prho+_pd[2]).get(2)<<", "<<(prho+_pd[2]).get(3)<<", "<<(prho+_pd[2]).get(0)<<endl;
72 //cout<<"hel1:"<<coshel_pi<<endl;
73 //cout<<"hel2:"<<coshel_pi2<<endl;
74 double ang_part = 1-coshel_pi*coshel_pi;
75 //*****************angluar part******************
76 // //VALUE // ERROR
77 //the values of parameters in model=rho+omega+rho(1405) are obtained from fitting to my data
78 double Mrho = 7.72929e-01;
79 double Grho = 1.50184e-01;
80 double delta = 1.58745e-03;
81 double argdelta=6.25729e+00;
82 double delta2= 2.58505e-01;
83 double argdelta2=3.28230e+00;
84 double Eetap=0.000000;
85
86 double Momega = 0.78265;
87 double Gomega = 0.00849;
88 double Mrhop = 1.465;
89 double Grhop = 0.400;
90
91 double PI = 3.14159265;
92 double mpi=0.13957018;
93 //double kgamma = (0.95778*0.95778-m2)/(2*0.95778);
94 //double qpim = sqrt(0.25*m2 - pow(0.13957018,2));
95 double kgamma=0;
96 if(m<0.95778) kgamma = (0.95778*0.95778-m*m)/(2*0.95778);
97 double qpim=0;
98 if(m>2*mpi) qpim = sqrt(0.25*m*m - pow(mpi,2));
99
100 double qpimrho = sqrt(0.25*Mrho*Mrho - pow(mpi,2));
101 double qpimrhop = sqrt(0.25*Mrhop*Mrhop - pow(mpi,2));
102
103 double hm = (2./PI)*(qpim/m)*log((m+2*qpim)/(2*mpi));
104
105 double hmrho = (2./PI)*(qpimrho/Mrho)*log((Mrho+2*qpimrho)/(2.*mpi));
106 double hmrhop = (2./PI)*(qpimrhop/Mrhop)*log((Mrhop+2*qpimrhop)/(2.*mpi));
107
108 double d=(3./PI)*(mpi*mpi/pow(qpimrho,2))*log((Mrho+2*qpimrho)/(2*mpi))+(Mrho/(2*PI*qpimrho))-((mpi*mpi*Mrho)/(PI*pow(qpimrho,3)));
109 double drhop=(3./PI)*(mpi*mpi/pow(qpimrhop,2))*log((Mrhop+2*qpimrhop)/(2*mpi))+(Mrhop/(2*PI*qpimrhop))-((mpi*mpi*Mrhop)/(PI*pow(qpimrhop,3)));
110
111 double dhds = hmrho*(pow(8*pow(qpimrho,2),-1)-pow(2*Mrho*Mrho,-1))+pow(2*PI*Mrho*Mrho,-1);
112 double dhdsrhop = hmrhop*(pow(8*pow(qpimrhop,2),-1)-pow(2*Mrhop*Mrhop,-1))+pow(2*PI*Mrhop*Mrhop,-1);
113
114 double fm2 = Grho*(Mrho*Mrho/pow(qpimrho,3))*(qpim*qpim*(hm-hmrho)+(Mrho*Mrho-m*m)*qpimrho*qpimrho*(dhds));
115 double fm2rhop = Grhop*(Mrhop*Mrhop/pow(qpimrhop,3))*(qpim*qpim*(hm-hmrhop)+(Mrhop*Mrhop-m*m)*qpimrhop*qpimrhop*(dhdsrhop));
116
117 double Grhom = Grho*pow((qpim/qpimrho),3)*(Mrho/m);
118 double Grhopm = Grhop*pow((qpim/qpimrhop),3)*(Mrhop/m);
119
120 double coefficient = (1./(48*PI*PI*PI))*pow(kgamma,2)*pow(qpim,2);
121 double coe1= pow((2*sqrt(48*PI*pow(Mrho,-4))),2);
122
123 RooComplex denomGrhom(Mrho*Mrho-m*m+fm2,-1*Mrho*Grhom);
124 RooComplex real(Mrho*Mrho*(1+d*Grho/Mrho),0);
125 RooComplex BWrho= real/denomGrhom;
126
127 RooComplex denomBWomega(Momega*Momega-m*m,-Momega*Gomega);
128 RooComplex real1(Momega*Momega,0);
129 RooComplex BWomega = real1/denomBWomega;
130 RooComplex cdelta(delta*cos(argdelta),delta*sin(argdelta));
131 RooComplex part2=BWrho*cdelta*BWomega*(m*m)/(Momega*Momega);
132
133 RooComplex denomGrhopm(Mrhop*Mrhop-m*m+fm2rhop,-1*Mrhop*Grhopm);
134 RooComplex realpm(Mrhop*Mrhop*(1+drhop*Grhop/Mrhop),0);
135 RooComplex BWrhop = realpm/denomGrhopm;
136 RooComplex cdelta2(delta2*cos(argdelta2),delta2*sin(argdelta2));
137 RooComplex denom(delta2*cos(argdelta2)+1.0,delta2*sin(argdelta2));
138 RooComplex part3=cdelta2*BWrhop;
139
140 RooComplex eof(Eetap,0);
141 RooComplex amp=(( BWrho* (cdelta*BWomega*(m*m)/(Momega*Momega)+1.0) + cdelta2*BWrhop)/(cdelta2+1)*sqrt(coe1)+ eof);
142 double total;
143 if(flag==0) total=coefficient* amp.abs2();
144
145 //DIY for rho0 in case of rho0-omega-rho'-box
146 else if(flag==1) total=coefficient*coe1* (BWrho/(cdelta2+1)).abs2();
147
148 //DIY for omega in case of rho0-omega-rho'-box
149 else if(flag==2) total=coefficient*coe1* (part2/(cdelta2+1)).abs2();
150
151 //DIY for rho' in case of rho0-omega-rho'-box
152 else if(flag==3) total=coefficient*coe1* (part3/(cdelta2+1)).abs2();
153
154
155 double amp2;
156 if(ang_on) amp2 = total*ang_part;
157 else amp2 = total;
158 return amp2;
159}
160// ************** end class angular_rho2
161
162
163//////////////////***** DIYshero Model
168 //cout<<"CMS:"<<(dp1+dp2+dp3).get(0)<<","<<(dp1+dp2+dp3).get(1)<<","<<(dp1+dp2+dp3).get(2)<<","<<(dp1+dp2+dp3).get(3)<<endl;
169 //cout<<(dp1.get(0)+dp2.get(0)+dp3.get(0))<<endl;
170 //cout<<(dp1.get(1)+dp2.get(1)+dp3.get(1))<<endl;
171 //cout<<(dp1.get(2)+dp2.get(2)+dp3.get(2))<<endl;
172 //cout<<(dp1.get(3)+dp2.get(3)+dp3.get(3))<<endl;
173 angular_rho2 Rho2pipi(dp1,dp2,dp3,true);
174 int xbd=getArg(0);
175// cout<<"amps(xbd) ="<<xbd<<endl;
176 return Rho2pipi.amps(xbd);
177}
178
183 angular_rho2 tmp(dp1,dp2,dp3,false);
184 int xbd=getArg(0);
185 return tmp.amps(xbd);
186}
double sin(const BesAngle a)
Definition: BesAngle.h:210
double cos(const BesAngle a)
Definition: BesAngle.h:213
const double delta
double mass
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
const double mpi
Definition: Gam4pikp.cxx:47
const double PI
Definition: PipiJpsi.cxx:55
double getArg(int j)
EvtVector4R GetDaugMomCM(int i)
double AmplitudeSquare_p()
double AmplitudeSquare()
double dot(const EvtVector4R &v2) const
Definition: EvtVector4R.cc:199
double get(int i) const
Definition: EvtVector4R.hh:179
double d3mag() const
Definition: EvtVector4R.cc:186
angular_rho2(EvtVector4R pd1, EvtVector4R pd2, EvtVector4R pd3, bool type_switch)
double lamb(double a, double b, double c)
double amps(int aa)
const double b
Definition: slope.cxx:9