32 model_name=
"DsTophienu";
48 std::cout <<
"Initializing EvtDsTophienu" << std::endl;
124 if(pid == -11) charm = 1;
126 double m2, q2, cosV, cosL, chi,
s12, s13,
s23, spin_V;
127 KinVGen(pip, pim, pi0, e, nu, charm,
m2, q2, cosV, cosL, chi,
s12, s13,
s23, spin_V);
128 double prob = calPDF(
m2, q2, cosV, cosL, chi,
s12, s13,
s23, spin_V);
133void EvtDsTophienu::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)
144 s13 = vp4_rhop.
mass2();
148 boost.
set(vp4_3pi.
get(0), -vp4_3pi.
get(1), -vp4_3pi.
get(2), -vp4_3pi.
get(3));
150 cosV = vp4_rhob.
dot(vp4_3pi)/(vp4_rhob.
d3mag()*vp4_3pi.
d3mag());
166 double sinx =
C.cross(V).dot(D);
167 double cosx =
C.dot(D);
168 chi = sinx>0? acos(cosx): -acos(cosx);
169 if(charm==-1) chi=-chi;
172double EvtDsTophienu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi,
double s12,
double s13,
double s23,
double spin_V) {
175 double m12 = sqrt(
s12);
176 double m13 = sqrt(s13);
177 double m23 = sqrt(
s23);
181 ResonanceV(
s12, m12, s13, m13,
s23, m23, A_rhopi);
182 double A2_phi = spin_V*spin_V*
abs2(A_rhopi);
188 ResonanceP(
m2, m, q2,
q,
s12, m12, s13, m13,
s23, m23, f11, f21, f31);
190 double cosV2 = cosV*cosV;
191 double sinV = sqrt(1.0-cosV2);
192 double sinV2 = sinV*sinV;
201 double I1 = 0.25*(
abs2(F1) + 1.5*sinV2*(
abs2(F2) +
abs2(F3) ) );
202 double I2 = -0.25*(
abs2(F1) - 0.5*sinV2*(
abs2(F2) +
abs2(F3) ) );
203 double I3 = -0.25*(
abs2(F2) -
abs2(F3) )*sinV2;
204 double I4 =
real(
conj(F1)*F2 )*sinV*0.5;
205 double I5 =
real(
conj(F1)*F3 )*sinV;
206 double I6 =
real(
conj(F2)*F3 )*sinV2;
209 double coschi =
cos(chi);
210 double sinchi =
sin(chi);
211 double sin2chi = 2.0*sinchi*coschi;
212 double cos2chi = 1.0 - 2.0*sinchi*sinchi;
214 double sinL = sqrt(1. - cosL*cosL);
215 double sinL2 = sinL*sinL;
216 double sin2L = 2.0*sinL*cosL;
217 double cos2L = 1.0 - 2.0*sinL2;
219 double I = A2_phi*(I1 + I2*cos2L + I3*sinL2*cos2chi + I4*sin2L*coschi + I5*sinL*coschi + I6*cosL);
223void EvtDsTophienu::ResonanceV(
double s12,
double m12,
double s13,
double m13,
double s23,
double m23,
EvtComplex& A_rhopi)
225 double G_rho0 = w_rho/m12*pow((
s12-4.0*m2pi0)/(m2_rho-4.0*m2pi0), 1.5);
226 double G_rhop = w_rho/m13*pow((s13-4.0*m2pi)/( m2_rho-4.0*m2pi), 1.5);
227 double G_rhom = w_rho/m23*pow((
s23-4.0*m2pi)/( m2_rho-4.0*m2pi), 1.5);
229 double AA0 =
s12/m2_rho - 1.0;
231 double AAp = s13/m2_rho - 1.0;
233 double AAm =
s23/m2_rho - 1.0;
236 A_rhopi = amp0 + ampp + ampm;
239void EvtDsTophienu::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)
241 double p_phi = getPStar(m2Ds,
m2, q2);
242 double summDsm = mDs+m;
243 double V = V_0 /(1.0 - q2/(mV2));
244 double A1 = A1_0/(1.0 - q2/(mA2));
245 double A2 = A2_0/(1.0 - q2/(mA2));
246 double A = summDsm*A1;
247 double B = 2.0*mDs*p_phi/summDsm*V;
250 double H0 = 0.5/(m*
q)*((m2Ds-
m2-q2)*summDsm*A1-4.0*(m2Ds*p_phi*p_phi)/summDsm*A2);
255 double pStar0 = getPStar(m2_phi,
s12, m2pi0);
257 double alpha = sqrt(3.*Pi*0.154/(pStar0*w_phi));
259 double AA = m2_phi-
m2;
262 double F0 = getF1(
m2, m,
s12, m2pi0);
264 double width0 = getWidth1(
m2, m,
s12, m2pi0, w_phi);
268 double BB0 = -m_phi*width0;
272 double Fp = getF1(
m2, m, s13, m2pi);
274 double widthp = getWidth1(
m2, m, s13, m2pi, w_phi);
278 double BBp = -m_phi*widthp;
282 double Fm = getF1(
m2, m,
s23, m2pi);
284 double widthm = getWidth1(
m2, m,
s23, m2pi, w_phi);
288 double BBm = -m_phi*widthm;
293 double alpham2 =
alpha*2.0;
294 F11 = amp*alpham2*
q*H0*root2;
295 F21 = amp*alpham2*
q*(Hp+Hm);
296 F31 = amp*alpham2*
q*(Hp-Hm);
299double EvtDsTophienu::getF1(
double sa,
double ma,
double sb,
double sc)
301 double pStar = getPStar(sa, sb, sc);
302 double pStar0 = getPStar(m2_phi, sb, sc);
303 double B = 1./sqrt(1.+rBW2*pStar*pStar);
304 double B0 = 1./sqrt(1.+rBW2*pStar0*pStar0);
305 double F = pStar/pStar0*
B/B0;
309double EvtDsTophienu::getWidth1(
double sa,
double ma,
double sb,
double sc,
double width0)
311 double pStar = getPStar(sa, sb, sc);
312 double pStar0 = getPStar(m2_phi, sb, sc);
313 double F = getF1(sa, ma, sb, sc);
314 double width = width0*pStar/pStar0*m_phi/ma*F*F;
318double EvtDsTophienu::getPStar(
double s,
double s1,
double s2)
320 double x =
s + s1 - s2;
321 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)
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