57 {
58
59
60
61 double power = 1;
63
76
79 double L = 2.0 * log(
w / 0.000511 );
80 double alpha = 1 / 137.0;
82
84
85
88 double minResMass = md1 + md2;
90 {
92 minResMass = minResMass + md3;
93 }
94
95
96 double pgmax = (
s - minResMass * minResMass ) / ( 2.0 *
w );
99
100 double k = fabs( pgz );
101
102
103 EvtVector4R p4g( k, 0.0, 0.0, pgz );
104
106
107 double mres = p4res.
mass();
108
109
112
113
114
115
116
117 double sigma = 9.0;
118 if ( mres <= 3.9 ) sigma = 0.00001;
119
120 bool sigmacomputed( false );
121
122
128 {
129 if ( mres > 4.18 )
130 {
131 sigma *=
132 5. / 9. * ( 1. - 1. * sqrt( ( 4.18 - mres ) * ( 4.18 - mres ) ) / ( 4.3 - 4.18 ) );
133 }
134 else if ( mres > 4.07 && mres <= 4.18 ) { sigma *= 5. / 9.; }
135 else if ( mres <= 4.07 && mres > 4.03 )
136 {
137 sigma *=
138 ( 5. / 9. - 1.5 / 9. * sqrt( ( 4.07 - mres ) * ( 4.07 - mres ) ) / ( 4.07 - 4.03 ) );
139 }
140 else if ( mres <= 4.03 && mres >= 4.013 )
141 {
142 sigma *= ( 3.5 / 9. -
143 3.5 / 9. * sqrt( ( 4.03 - mres ) * ( 4.03 - mres ) ) / ( 4.03 - 4.013 ) );
144 }
145 else { sigma = 0.00001; }
146 sigmacomputed = true;
147
148 }
149
150
160 {
161 if ( mres >= 4.2 ) { sigma *= 1.5 / 9.; }
162 else if ( mres > 4.06 && mres < 4.2 )
163 {
164 sigma *= ( ( 1.5 / 9. +
165 2.5 / 9. * sqrt( ( 4.2 - mres ) * ( 4.2 - mres ) ) / ( 4.2 - 4.06 ) ) );
166 }
167 else if ( mres >= 4.015 && mres < 4.06 )
168 {
169 sigma *= ( ( 4. / 9. +
170 3. / 9. * sqrt( ( 4.06 - mres ) * ( 4.06 - mres ) ) / ( 4.06 - 4.015 ) ) );
171 }
172 else if ( mres < 4.015 && mres >= 3.9 )
173 {
174 sigma *= ( ( 7. / 9. -
175 7 / 9. * sqrt( ( 4.015 - mres ) * ( 4.015 - mres ) ) / ( 4.015 - 3.9 ) ) );
176 }
177 else { sigma = 0.00001; }
178 sigmacomputed = true;
179
180 }
181
182
185 {
186 if ( mres > ( 2.112 + 2.112 ) ) { sigma = 0.4; }
187 else
188 {
189
190
191 sigma = 0.00001;
192 }
193 sigmacomputed = true;
194
195 }
196
197
203 {
204 if ( mres > 4.26 ) { sigma = 0.05; }
205 else if ( mres > 4.18 && mres <= 4.26 )
206 {
207 sigma *= 1. / 9. *
208 ( 0.05 + 0.95 * sqrt( ( 4.26 - mres ) * ( 4.26 - mres ) ) / ( 4.26 - 4.18 ) );
209 }
210 else if ( mres > 4.16 && mres <= 4.18 ) { sigma *= 1 / 9.; }
211 else if ( mres <= 4.16 && mres > 4.08 )
212 { sigma *= 1 / 9. * ( 1 - sqrt( ( 4.16 - mres ) * ( 4.16 - mres ) ) / ( 4.16 - 4.08 ) ); }
213 else if ( mres <= ( 4.08 ) ) { sigma = 0.00001; }
214 sigmacomputed = true;
215
216 }
217
218
224 {
225 sigma *= 0.4 / 9.;
226 sigmacomputed = true;
227
228 }
229
230
234 {
235 sigma *= 0.2 / 9.;
236 sigmacomputed = true;
237
238 }
239
240
242 {
243 if ( mres > 4.03 ) { sigma *= 0.5 / 9.; }
244 else { sigma = 0.00001; }
245 sigmacomputed = true;
246
247 }
248
249 if ( !sigmacomputed )
250 {
252 << "VPHOTOVISRHI: This model requires daughters to be listed in a particular order."
253 << endl
254 << "The following are acceptable:" << endl
255 << "D0 anti-D0" << endl
256 << "D+ D-" << endl
257 << "D*0 anti-D0" << endl
258 << "anti-D*0 D0" << endl
259 << "D*+ D-" << endl
260 << "D*- D+" << endl
261 << "D*0 anti-D*0" << endl
262 << "D*+ D*-" << endl
263 << "D_s+ D_s-" << endl
264 << "D_s*+ D_s-" << endl
265 << "D_s*- D_s+" << endl
266 << "D_s*+ D_s*-" << endl
267 << "(D* D pi can be in any order)" << endl
268 << "Aborting..." << endl;
269 assert( 0 );
270 }
271
272 if ( sigma < 0 ) sigma = 0.0;
273
274
275
276
277
278
279 static int count = 0;
280
282
283
284
285
286
287
288 double norm = sqrt( sigma );
289
290
291
295
299
303
307
311
315
316 return;
317}
EvtComplex exp(const EvtComplex &c)
DOUBLE_PRECISION count[3]
ostream & report(Severity severity, const char *facility)
void vertex(const EvtComplex &)
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