44 std::cout <<
"Initializing EvtDsToomegaenu" << std::endl;
59 mw_omega = m_omega * w_omega;
60 m2_omega = m_omega * m_omega;
61 m2_rho = m_rho * m_rho;
70 Pi = atan2( 0.0, -1.0 );
72 root2d3 = sqrt( 2. / 3 );
73 root1d2 = sqrt( 0.5 );
74 root3d2 = sqrt( 1.5 );
128 if ( pid == -11 ) charm = 1;
130 double m2, q2, cosV, cosL, chi, s12, s13, s23, spin_V;
131 KinVGen( pip, pim, pi0, e, nu, charm,
m2, q2, cosV, cosL, chi, s12, s13, s23, spin_V );
132 double prob = calPDF(
m2, q2, cosV, cosL, chi, s12, s13, s23, spin_V );
139 double& q2,
double& cosV,
double& cosL,
double& chi,
140 double& s12,
double& s13,
double& s23,
double& spin_V ) {
149 s12 = vp4_rho0.
mass2();
150 s13 = vp4_rhop.
mass2();
151 s23 = vp4_rhom.
mass2();
154 boost.
set( vp4_3pi.
get( 0 ), -vp4_3pi.
get( 1 ), -vp4_3pi.
get( 2 ), -vp4_3pi.
get( 3 ) );
156 cosV = vp4_rhob.
dot( vp4_3pi ) / ( vp4_rhob.
d3mag() * vp4_3pi.
d3mag() );
163 boost.
set( vp4_W.
get( 0 ), -vp4_W.
get( 1 ), -vp4_W.
get( 2 ), -vp4_W.
get( 3 ) );
165 cosL = vp4_Lepp.
dot( vp4_W ) / ( vp4_Lepp.
d3mag() * vp4_W.
d3mag() );
172 double sinx =
C.cross( V ).dot( D );
173 double cosx =
C.dot( D );
174 chi = sinx > 0 ? acos( cosx ) : -acos( cosx );
175 if ( charm == -1 ) chi = -chi;
178double EvtDsToomegaenu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi,
179 double s12,
double s13,
double s23,
double spin_V ) {
180 double m = sqrt(
m2 );
181 double q = sqrt( q2 );
182 double m12 = sqrt( s12 );
183 double m13 = sqrt( s13 );
184 double m23 = sqrt( s23 );
186 EvtComplex A_rhopi( 0.0, 0.0 );
187 ResonanceV( s12, m12, s13, m13, s23, m23, A_rhopi );
188 double A2_phi = spin_V * spin_V *
abs2( A_rhopi );
190 EvtComplex f11( 0.0, 0.0 );
191 EvtComplex f21( 0.0, 0.0 );
192 EvtComplex f31( 0.0, 0.0 );
193 ResonanceP(
m2, m, q2,
q, s12, m12, s13, m13, s23, m23, f11, f21, f31 );
196 double cosV2 = cosV * cosV;
197 double sinV = sqrt( 1.0 - cosV2 );
198 double sinV2 = sinV * sinV;
200 EvtComplex F1 = f11 * cosV;
201 EvtComplex F2 = f21 * root1d2;
202 EvtComplex F3 = f31 * root1d2;
207 double I1 = 0.25 * (
abs2( F1 ) + 1.5 * sinV2 * (
abs2( F2 ) +
abs2( F3 ) ) );
208 double I2 = -0.25 * (
abs2( F1 ) - 0.5 * sinV2 * (
abs2( F2 ) +
abs2( F3 ) ) );
209 double I3 = -0.25 * (
abs2( F2 ) -
abs2( F3 ) ) * sinV2;
210 double I4 =
real(
conj( F1 ) * F2 ) * sinV * 0.5;
211 double I5 =
real(
conj( F1 ) * F3 ) * sinV;
212 double I6 =
real(
conj( F2 ) * F3 ) * sinV2;
216 double coschi =
cos( chi );
217 double sinchi =
sin( chi );
218 double sin2chi = 2.0 * sinchi * coschi;
219 double cos2chi = 1.0 - 2.0 * sinchi * sinchi;
221 double sinL = sqrt( 1. - cosL * cosL );
222 double sinL2 = sinL * sinL;
223 double sin2L = 2.0 * sinL * cosL;
224 double cos2L = 1.0 - 2.0 * sinL2;
226 double I = A2_phi * ( I1 + I2 * cos2L + I3 * sinL2 * cos2chi + I4 * sin2L * coschi +
227 I5 * sinL * coschi + I6 * cosL );
231void EvtDsToomegaenu::ResonanceV(
double s12,
double m12,
double s13,
double m13,
double s23,
234 w_rho * m2_rho / s12 *
235 pow( ( s12 - 4.0 * m2pi0 ) / ( m2_rho - 4.0 * m2pi0 ), 1.5 );
237 w_rho * m2_rho / s13 *
238 pow( ( s13 - 4.0 * m2pi ) / ( m2_rho - 4.0 * m2pi ), 1.5 );
240 w_rho * m2_rho / s23 *
241 pow( ( s23 - 4.0 * m2pi ) / ( m2_rho - 4.0 * m2pi ), 1.5 );
243 double AA0 = s12 / m2_rho - 1.0;
244 double BB0 = m12 * G_rho0 / m2_rho;
247 EvtComplex amp0 = EvtComplex( 1.0, 0.0 ) / EvtComplex( AA0, BB0 );
249 double AAp = s13 / m2_rho - 1.0;
250 double BBp = m13 * G_rhop / m2_rho;
253 EvtComplex ampp = EvtComplex( 1.0, 0.0 ) / EvtComplex( AAp, BBp );
255 double AAm = s23 / m2_rho - 1.0;
256 double BBm = m23 * G_rhom / m2_rho;
259 EvtComplex ampm = EvtComplex( 1.0, 0.0 ) / EvtComplex( AAm, BBm );
261 A_rhopi = amp0 + ampp + ampm;
264void EvtDsToomegaenu::ResonanceP(
double m2,
double m,
double q2,
double q,
double s12,
265 double m12,
double s13,
double m13,
double s23,
double m23,
267 double p_phi = getPStar( m2Ds,
m2, q2 );
268 double summDsm = mDs + m;
269 double V = V_0 / ( 1.0 - q2 / ( mV2 ) );
270 double A1 = A1_0 / ( 1.0 - q2 / ( mA2 ) );
271 double A2 = A2_0 / ( 1.0 - q2 / ( mA2 ) );
272 double A = summDsm * A1;
273 double B = 2.0 * mDs * p_phi / summDsm * V;
278 ( ( m2Ds -
m2 - q2 ) * summDsm * A1 - 4.0 * ( m2Ds * p_phi * p_phi ) / summDsm * A2 );
285 double pStar0 = getPStar( m2_omega, m2_rho, m2pi0 );
286 double alpha = sqrt( 3. * Pi * 0.892 / ( pStar0 * w_omega ) );
289 double AA = m2_omega -
m2;
294 double F0 = getF1(
m2, m, m2_rho, m2pi0 );
297 double width0 = getWidth1(
m2, m, m2_rho, m2pi0, w_omega );
300 EvtComplex C0( mw_omega * F0, 0.0 );
302 double BB0 = -m_omega * width0;
304 EvtComplex amp0 = C0 / EvtComplex( AA, BB0 );
309 double Fp = getF1(
m2, m, m2_rho, m2pi );
312 double widthp = getWidth1(
m2, m, m2_rho, m2pi, w_omega );
315 EvtComplex Cp( mw_omega * Fp, 0.0 );
317 double BBp = -m_omega * widthp;
319 EvtComplex ampp = Cp / EvtComplex( AA, BBp );
324 double Fm = getF1(
m2, m, m2_rho, m2pi );
327 double widthm = getWidth1(
m2, m, m2_rho, m2pi, w_omega );
330 EvtComplex Cm( mw_omega * Fm, 0.0 );
332 double BBm = -m_omega * widthm;
334 EvtComplex ampm = Cm / EvtComplex( AA, BBm );
337 EvtComplex amp = amp0 + ampp + ampm;
340 double alpham2 =
alpha * 2.0;
341 F11 = amp * alpham2 *
q * H0 * root2;
342 F21 = amp * alpham2 *
q * ( Hp + Hm );
343 F31 = amp * alpham2 *
q * ( Hp - Hm );
346double EvtDsToomegaenu::getF1(
double sa,
double ma,
double sb,
double sc )
348 double pStar = getPStar( sa, sb, sc );
349 double pStar0 = getPStar( m2_omega, sb, sc );
350 double B = 1. / sqrt( 1. + rBW2 * pStar * pStar );
351 double B0 = 1. / sqrt( 1. + rBW2 * pStar0 * pStar0 );
352 double F = pStar / pStar0 *
B / B0;
356double EvtDsToomegaenu::getWidth1(
double sa,
double ma,
double sb,
double sc,
358 double pStar = getPStar( sa, sb, sc );
359 double pStar0 = getPStar( m2_omega, sb, sc );
360 double F = getF1( sa, ma, sb, sc );
361 double width = width0 * pStar / pStar0 * m_omega / ma * F * F;
365double EvtDsToomegaenu::getPStar(
double s,
double s1,
double s2 ) {
366 double x =
s + s1 - s2;
367 double t = 0.25 *
x *
x /
s - s1;
369 if (
t > 0.0 ) { p = sqrt(
t ); }
Evt3Rank3C conj(const Evt3Rank3C &t2)
double abs2(const EvtComplex &c)
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
double sin(const BesAngle a)
double cos(const BesAngle a)
****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)