57 {
58
59
60
61
62
65
66 double L = 2.0 * log(
w / 0.000511 );
67 double alpha = 1 / 137.0;
69
70
71
74
77
78 double pgmax = (
s - 4.0 * md * md ) / ( 2.0 *
w );
79
80 assert( pgmax > 0.0 );
81
83
85
86 double k = fabs( pgz );
87
88 EvtVector4R p4g( k, 0.0, 0.0, pgz );
89
91
92 double mres = p4res.
mass();
93
94 double ed = mres / 2.0;
95
96 assert( ed > md );
97
98 double pd = sqrt( ed * ed - md * md );
99
100
101
102
105
106 double sigma =
107 beta * pow( 2 /
w, beta ) *
109
112
113
114
115 double p0 = 0.0;
116 if ( ed >
mD0 ) p0 = sqrt( ed * ed -
mD0 *
mD0 );
117 double pp = 0.0;
118 if ( ed > mDp ) pp = sqrt( ed * ed - mDp * mDp );
119
120 double p0norm = sqrt( 0.25 * m * m -
mD0 *
mD0 );
121 double ppnorm = sqrt( 0.25 * m * m - mDp * mDp );
122
123 double r0 = 12.7;
124 double rp = 12.7;
125
127 {
130 }
131
132 double GammaTot =
134 ( pp * pp * pp / ( 1 + pp * pp * rp * rp ) + p0 * p0 * p0 / ( 1 + p0 * p0 * r0 * r0 ) ) /
135 ( ppnorm * ppnorm * ppnorm / ( 1 + ppnorm * ppnorm * rp * rp ) +
136 p0norm * p0norm * p0norm / ( 1 + p0norm * p0norm * r0 * r0 ) );
137
138 sigma *= pd * pd * pd / ( ( mres - m ) * ( mres - m ) + 0.25 * GammaTot * GammaTot );
139
140 assert( sigma > 0.0 );
141
142 static double sigmax = sigma;
143
144 if ( sigma > sigmax ) { sigmax = sigma; }
145
146 static int count = 0;
147
149
150
151
152
153
154
155 double norm = sqrt( sigma );
156
160
164
168
172
176
180
181 return;
182}
EvtComplex exp(const EvtComplex &c)
DOUBLE_PRECISION count[3]
void vertex(const EvtComplex &)
static double getWidth(EvtId i)
static double getMeanMass(EvtId i)
static EvtId getId(const std::string &name)
virtual EvtVector4C epsParent(int i) const
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtVector4R getP4Restframe()
EvtParticle * getDaug(int i)
virtual EvtVector4C eps(int i) const
double Gamma(const double Q2, const double M2, const double G, const double mkpp2, const double mkmp2)