48 Pi = atan2( 0.0, -1.0 );
89 if ( pid == -211 ) charm = 1;
91 double m2, q2, cosV, cosL, chi;
92 KinVGen( pi1,
pi2, e, nu, charm,
m2, q2, cosV, cosL, chi );
93 double prob = calPDF(
m2, q2, cosV, cosL, chi );
100 double& cosV,
double& cosL,
double& chi ) {
107 boost.
set( vp4_KPi.
get( 0 ), -vp4_KPi.
get( 1 ), -vp4_KPi.
get( 2 ), -vp4_KPi.
get( 3 ) );
109 cosV = vp4_Kp.
dot( vp4_KPi ) / ( vp4_Kp.
d3mag() * vp4_KPi.
d3mag() );
111 boost.
set( vp4_W.
get( 0 ), -vp4_W.
get( 1 ), -vp4_W.
get( 2 ), -vp4_W.
get( 3 ) );
113 cosL = vp4_Lepp.
dot( vp4_W ) / ( vp4_Lepp.
d3mag() * vp4_W.
d3mag() );
120 double sinx =
C.cross( V ).dot( D );
121 double cosx =
C.dot( D );
122 chi = sinx > 0 ? acos( cosx ) : -acos( cosx );
123 if ( charm == -1 ) chi = -chi;
126double EvtDTopi0pi0enu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi ) {
127 double m = sqrt(
m2 );
128 double q = sqrt( q2 );
129 EvtComplex F10( 0.0, 0.0 );
130 EvtComplex f10( 0.0, 0.0 );
131 ResonanceSBugg( m,
q, f10 );
133 double I1 = 0.25 *
abs2( F10 );
134 double sinL = sqrt( 1. - cosL * cosL );
135 double sinL2 = sinL * sinL;
136 double cos2L = 1.0 - 2.0 * sinL2;
137 double I = I1 - I1 * cos2L;
141void EvtDTopi0pi0enu::ResonanceSBugg(
double m,
double q,
EvtComplex& F10 ) {
142 double pKPi = getPStar( Dp_mD, m,
q );
145 double mA2 = mA * mA;
147 double sA = 0.41 * mPi * mPi;
149 double mr2 = m0_S * m0_S;
153 EvtComplex ciR( 1.0, 0.0 );
154 EvtComplex ciM( 0.0, 1.0 );
155 EvtComplex Gamma1( 0.0, 0.0 );
156 EvtComplex Gamma2( 0.0, 0.0 );
157 EvtComplex Gamma3( 0.0, 0.0 );
158 EvtComplex Gamma4( 0.0, 0.0 );
160 Gamma1 = getrho(
m2, mPi ) * getG1(
m2, mr ) * (
m2 - sA ) / ( mr2 - sA );
161 Gamma2 = getrho(
m2, mKa ) * 0.6 * getG1(
m2, mr ) * (
m2 / mr2 ) *
163 Gamma3 = getrho(
m2, mEt ) * 0.2 * getG1(
m2, mr ) * (
m2 / mr2 ) *
166 Gamma4 = ciR * mr * g4pi * ( 1.0 +
exp( 7.082 - 2.845 * mr2 ) ) /
167 ( 1.0 +
exp( 7.082 - 2.845 *
m2 ) );
169 double AA = mr2 -
m2 - getG1(
m2, mr ) * (
m2 - sA ) * getZ(
m2, mr2 ) / ( mr2 - sA );
170 EvtComplex amp = ciR / ( ciR * AA - ciM * ( Gamma1 + Gamma2 + Gamma3 + Gamma4 ) );
171 F10 = amp * pKPi * Dp_mD / ( 1.0 - q2 / mA2 );
174double EvtDTopi0pi0enu::getPStar(
double m,
double m1,
double m2 ) {
178 double x =
s + s1 - s2;
179 double t = 0.25 *
x *
x /
s - s1;
181 if (
t > 0.0 ) { p = sqrt(
t ); }
190inline double EvtDTopi0pi0enu::getRho(
double m2,
double mX ) {
192 if ( ( 1.0 - 4.0 * mX * mX /
m2 ) > 0 ) rho = sqrt( 1.0 - 4.0 * mX * mX /
m2 );
197inline EvtComplex EvtDTopi0pi0enu::getrho(
double m2,
double mX ) {
198 EvtComplex rho( 0.0, 0.0 );
199 EvtComplex ciR( 1.0, 0.0 );
200 EvtComplex ciM( 0.0, 1.0 );
201 if ( ( 1.0 - 4.0 * mX * mX /
m2 ) > 0 ) rho = ciR * sqrt( 1.0 - 4.0 * mX * mX /
m2 );
202 else rho = ciM * sqrt( 4.0 * mX * mX /
m2 - 1.0 );
206inline double EvtDTopi0pi0enu::getG1(
double m2,
double Mr ) {
210 double Mr2 = Mr * Mr;
211 double gg1 = Mr * ( b1 + b2 *
m2 ) *
exp( -(
m2 - Mr2 ) / A );
215inline double EvtDTopi0pi0enu::getZ(
double m2,
double Mr2 ) {
217 ( getRho(
m2, mPi ) * log( ( 1.0 - getRho(
m2, mPi ) ) / ( 1.0 + getRho(
m2, mPi ) ) ) -
219 log( ( 1.0 - getRho( Mr2, mPi ) ) / ( 1.0 + getRho( Mr2, mPi ) ) ) ) /
character *LEPTONflag integer iresonances real pi2
double abs2(const EvtComplex &c)
EvtComplex exp(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 decay(EvtParticle *p)
void getName(std::string &name)
virtual ~EvtDTopi0pi0enu()
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)
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)