32 model_name=
"DsToomegaenu";
48 std::cout <<
"Initializing EvtDsToomegaenu" << std::endl;
63 mw_omega = m_omega*w_omega;
64 m2_omega = m_omega*m_omega;
129 if(pid == -11) charm = 1;
131 double m2, q2, cosV, cosL, chi,
s12, s13,
s23, spin_V;
132 KinVGen(pip, pim, pi0, e, nu, charm,
m2, q2, cosV, cosL, chi,
s12, s13,
s23, spin_V);
133 double prob = calPDF(
m2, q2, cosV, cosL, chi,
s12, s13,
s23, spin_V);
138void EvtDsToomegaenu::KinVGen(
EvtVector4R vp4_pip,
EvtVector4R vp4_pim,
EvtVector4R vp4_pi0,
EvtVector4R vp4_Lep,
EvtVector4R vp4_Nu,
int charm,
double&
m2,
double& q2,
double& cosV,
double& cosL,
double& chi,
double&
s12,
double& s13,
double&
s23,
double& spin_V)
149 s13 = vp4_rhop.
mass2();
153 boost.
set(vp4_3pi.
get(0), -vp4_3pi.
get(1), -vp4_3pi.
get(2), -vp4_3pi.
get(3));
155 cosV = vp4_rhob.
dot(vp4_3pi)/(vp4_rhob.
d3mag()*vp4_3pi.
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 EvtDsToomegaenu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi,
double s12,
double s13,
double s23,
double spin_V) {
180 double m12 = sqrt(
s12);
181 double m13 = sqrt(s13);
182 double m23 = sqrt(
s23);
185 ResonanceV(
s12, m12, s13, m13,
s23, m23, A_rhopi);
186 double A2_phi = spin_V*spin_V*
abs2(A_rhopi);
191 ResonanceP(
m2, m, q2,
q,
s12, m12, s13, m13,
s23, m23, f11, f21, f31);
194 double cosV2 = cosV*cosV;
195 double sinV = sqrt(1.0-cosV2);
196 double sinV2 = sinV*sinV;
205 double I1 = 0.25*(
abs2(F1) + 1.5*sinV2*(
abs2(F2) +
abs2(F3) ) );
206 double I2 = -0.25*(
abs2(F1) - 0.5*sinV2*(
abs2(F2) +
abs2(F3) ) );
207 double I3 = -0.25*(
abs2(F2) -
abs2(F3) )*sinV2;
208 double I4 =
real(
conj(F1)*F2 )*sinV*0.5;
209 double I5 =
real(
conj(F1)*F3 )*sinV;
210 double I6 =
real(
conj(F2)*F3 )*sinV2;
213 double coschi =
cos(chi);
214 double sinchi =
sin(chi);
215 double sin2chi = 2.0*sinchi*coschi;
216 double cos2chi = 1.0 - 2.0*sinchi*sinchi;
218 double sinL = sqrt(1. - cosL*cosL);
219 double sinL2 = sinL*sinL;
220 double sin2L = 2.0*sinL*cosL;
221 double cos2L = 1.0 - 2.0*sinL2;
223 double I = A2_phi*(I1 + I2*cos2L + I3*sinL2*cos2chi + I4*sin2L*coschi + I5*sinL*coschi + I6*cosL);
227void EvtDsToomegaenu::ResonanceV(
double s12,
double m12,
double s13,
double m13,
double s23,
double m23,
EvtComplex& A_rhopi)
229 double G_rho0 = w_rho*m2_rho/
s12*pow((
s12-4.0*m2pi0)/(m2_rho-4.0*m2pi0), 1.5);
230 double G_rhop = w_rho*m2_rho/s13*pow((s13-4.0*m2pi)/( m2_rho-4.0*m2pi), 1.5);
231 double G_rhom = w_rho*m2_rho/
s23*pow((
s23-4.0*m2pi)/( m2_rho-4.0*m2pi), 1.5);
233 double AA0 =
s12/m2_rho - 1.0;
234 double BB0 = m12*G_rho0/m2_rho;
239 double AAp = s13/m2_rho - 1.0;
240 double BBp = m13*G_rhop/m2_rho;
245 double AAm =
s23/m2_rho - 1.0;
246 double BBm = m23*G_rhom/m2_rho;
251 A_rhopi = amp0 + ampp + ampm;
254void EvtDsToomegaenu::ResonanceP(
double m2,
double m,
double q2,
double q,
double s12,
double m12,
double s13,
double m13,
double s23,
double m23,
EvtComplex& F11,
EvtComplex& F21,
EvtComplex& F31)
256 double p_phi = getPStar(m2Ds,
m2, q2);
257 double summDsm = mDs+m;
258 double V = V_0 /(1.0 - q2/(mV2));
259 double A1 = A1_0/(1.0 - q2/(mA2));
260 double A2 = A2_0/(1.0 - q2/(mA2));
261 double A = summDsm*A1;
262 double B = 2.0*mDs*p_phi/summDsm*V;
265 double H0 = 0.5/(m*
q)*((m2Ds-
m2-q2)*summDsm*A1-4.0*(m2Ds*p_phi*p_phi)/summDsm*A2);
272 double pStar0 = getPStar(m2_omega, m2_rho, m2pi0);
273 double alpha = sqrt(3.*Pi*0.892/(pStar0*w_omega));
276 double AA = m2_omega-
m2;
281 double F0 = getF1(
m2, m, m2_rho, m2pi0);
284 double width0 = getWidth1(
m2, m, m2_rho, m2pi0, w_omega);
289 double BB0 = -m_omega*width0;
296 double Fp = getF1(
m2, m, m2_rho, m2pi);
299 double widthp = getWidth1(
m2, m, m2_rho, m2pi, w_omega);
304 double BBp = -m_omega*widthp;
311 double Fm = getF1(
m2, m, m2_rho, m2pi);
314 double widthm = getWidth1(
m2, m, m2_rho, m2pi, w_omega);
319 double BBm = -m_omega*widthm;
327 double alpham2 =
alpha*2.0;
328 F11 = amp*alpham2*
q*H0*root2;
329 F21 = amp*alpham2*
q*(Hp+Hm);
330 F31 = amp*alpham2*
q*(Hp-Hm);
333double EvtDsToomegaenu::getF1(
double sa,
double ma,
double sb,
double sc)
335 double pStar = getPStar(sa, sb, sc);
336 double pStar0 = getPStar(m2_omega, sb, sc);
337 double B = 1./sqrt(1.+rBW2*pStar*pStar);
338 double B0 = 1./sqrt(1.+rBW2*pStar0*pStar0);
339 double F = pStar/pStar0*
B/B0;
343double EvtDsToomegaenu::getWidth1(
double sa,
double ma,
double sb,
double sc,
double width0)
345 double pStar = getPStar(sa, sb, sc);
346 double pStar0 = getPStar(m2_omega, sb, sc);
347 double F = getF1(sa, ma, sb, sc);
348 double width = width0*pStar/pStar0*m_omega/ma*F*F;
352double EvtDsToomegaenu::getPStar(
double s,
double s1,
double s2)
354 double x =
s + s1 - s2;
355 double t = 0.25*
x*
x/
s - s1;
double sin(const BesAngle a)
double cos(const BesAngle a)
Evt3Rank3C conj(const Evt3Rank3C &t2)
double abs2(const EvtComplex &c)
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
****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)
virtual ~EvtDsToomegaenu()
void decay(EvtParticle *p)
void getName(std::string &name)
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)
double double double double * s12
double double double double double * s23