115 {
116 m_pion=3;
117
118
119
120
121 if(m_pion<0 || m_pion>9){std::cout<<"mode index for phokhar 0~9, but you give "<<m_pion<<std::endl;abort();}
124
126
127 m_initSeed = 123456789;
135 flags_.FF_pion = m_FF_Pion;
136 flags_.f0_model = m_f0_model;
137 flags_.FF_kaon = m_FF_Kaon;
138 flags_.narr_res = m_NarrowRes;
139
140 ctes_.Sp = m_E*m_E; ;
141
143 cuts_.q2min = m_q2min;
144 cuts_.q2_min_c = m_q2_min_c;
145 cuts_.q2_max_c = m_q2_max_c;
147 cuts_.phot1cut = m_phot1cut;
148 cuts_.phot2cut = m_phot2cut;
149 cuts_.pi1cut = m_pi1cut;
150 cuts_.pi2cut = m_pi2cut;
151
153
154
155 cout << "-------------------------------------------------------------" << endl;
157 cout << " PHOKHARA 7.0 : e^+ e^- -> mu^+ mu^- gamma" << endl;
158 else if (
flags_.pion == 1)
159 cout << " PHOKHARA 7.0: e^+ e^- -> pi^+ pi^- gamma" << endl;
160 else if (
flags_.pion == 2)
161 cout << " PHOKHARA 7.0: e^+ e^- -> pi^+ pi^- 2pi^0 gamma" << endl;
162 else if (
flags_.pion == 3)
163 cout << " PHOKHARA 7.0: e^+ e^- -> 2pi^+ 2pi^- gamma" << endl;
164 else if (
flags_.pion == 4)
165 cout << " PHOKHARA 7.0: e^+ e^- -> p pbar gamma" << endl;
166 else if (
flags_.pion == 5)
167 cout << " PHOKHARA 7.0: e^+ e^- -> n nbar gamma" << endl;
168 else if (
flags_.pion == 6)
169 cout << " PHOKHARA 7.0: e^+ e^- -> K^+ K^- gamma" << endl;
170 else if (
flags_.pion == 7)
171 cout << " PHOKHARA 7.0: e^+ e^- -> K_0 K_0bar gamma" << endl;
172 else if (
flags_.pion == 8)
173 cout << " PHOKHARA 7.0: e^+ e^- -> pi^+ pi^- pi^0 gamma" << endl;
174 else if (
flags_.pion == 9) {
175 cout << "PHOKHARA 7.0 : e^+ e^- ->" << endl;
176 cout << " Lambda (-> pi^- p) Lambda bar (-> pi^+ pbar) gamma" << endl;
177 } else
178 cout << " PHOKHARA 7.0: not yet implemented" << endl;
179
180
181 cout << "--------------------------------------------------------------" << endl;
182 printf(
" %s %f %s\n",
"cms total energy = ",sqrt(
ctes_.Sp),
" GeV ");
183
184
185 if(
cuts_.gmin<0.001){
186 cerr << " minimal missing energy set too small, abort" << endl;
187 abort();
188 }
189 printf(
" %s %f %s\n",
"minimal tagged photon energy = ",
cuts_.gmin,
" GeV ");
190 printf(
" %s %f,%f\n",
"angular cuts on tagged photon = ",
cuts_.phot1cut,
cuts_.phot2cut);
191
192
194 printf(
" %s %f,%f\n",
"angular cuts on muons = ",
cuts_.pi1cut,
cuts_.pi2cut);
195 else if (
flags_.pion == 4)
196 printf(
" %s %f,%f\n",
"angular cuts on protons = ",
cuts_.pi1cut,
cuts_.pi2cut);
197 else if (
flags_.pion == 5)
198 printf(
" %s %f,%f\n",
"angular cuts on neutrons = ",
cuts_.pi1cut,
cuts_.pi2cut);
200 printf(
" %s %f,%f\n",
"angular cuts on kaons = ",
cuts_.pi1cut,
cuts_.pi2cut);
201 else if (
flags_.pion == 9)
202 printf(
" %s %f,%f\n",
"angular cuts on pions and protons = ",
cuts_.pi1cut,
cuts_.pi2cut);
203 else
204 printf(
" %s %f,%f\n",
"angular cuts on pions = ",
cuts_.pi1cut,
cuts_.pi2cut);
206 printf(
" %s %f %s\n",
"min. muons-tagged photon inv.mass^2 = ",
cuts_.q2min,
" GeV^2");
207 else if (
flags_.pion == 4)
208 printf(
" %s %f %s\n",
"min. protons-tagged photon inv.mass^2 = ",
cuts_.q2min,
" GeV^2" );
209 else if (
flags_.pion == 5)
210 printf(
" %s %f %s\n",
"min. neutrons-tagged photon inv.mass^2 = ",
cuts_.q2min,
" GeV^2" );
212 printf(
" %s %f %s\n",
"min. kaons-tagged photon inv.mass^2 = ",
cuts_.q2min,
" GeV^2" );
213 else if (
flags_.pion == 9)
214 printf(
" %s %f %s\n",
" min. lambdas-tagged photon inv.mass^2 = ",
cuts_.q2min,
" GeV^2" );
215 else
216 printf(
" %s %f %s\n",
"min. pions-tagged photon inv.mass^2 = ",
cuts_.q2min,
" GeV^2" );
219 cos2min = -1.0;
220 cos2max = 1.0;
221 cos3min = -1.0;
222 cos3max = 1.0;
225 else if (
flags_.pion == 1)
227 else if (
flags_.pion == 2)
229 else if (
flags_.pion == 3)
231 else if (
flags_.pion == 4)
233 else if (
flags_.pion == 5)
235 else if (
flags_.pion == 6)
237 else if (
flags_.pion == 7)
239 else if (
flags_.pion == 8)
241 else if (
flags_.pion == 9)
244 if (
cuts_.q2_max_c < qqmax)
245 qqmax=
cuts_.q2_max_c;
246
247
249 qqmin =
cuts_.q2_min_c;
250 else {
251 cerr << "------------------------------" << endl;
252 cerr << " Q^2_min TOO SMALL" << endl;
253 cerr << " Q^2_min CHANGED BY PHOKHARA = " << qqmin << " GeV^2" << endl;
254 cerr << "------------------------------" << endl;
255 }
256
257 if(qqmax <= qqmin){
258 cerr << " Q^2_max to small " << endl;
259 cerr << " Q^2_max = " << qqmax << endl;
260 cerr << " Q^2_min = " << qqmin << endl;
261 abort();
262 }
263
264
266 printf(" %s %f %s\n", "minimal muon-pair invariant mass^2 = ", qqmin," GeV^2");
267 printf(" %s %f %s\n", "maximal muon-pair invariant mass^2 = ", qqmax," GeV^2");
268 }
else if (
flags_.pion == 1) {
269 printf(" %s %f %s\n", "minimal pion-pair invariant mass^2 = ", qqmin," GeV^2");
270 printf(" %s %f %s\n", "maximal pion-pair invariant mass^2 = ", qqmax," GeV^2");
271 }
else if (
flags_.pion == 4) {
272 printf(" %s %f %s\n", "minimal proton-pair invariant mass^2 = ", qqmin," GeV^2");
273 printf(" %s %f %s\n", "maximal proton-pair invariant mass^2 = ", qqmax," GeV^2");
274 }
else if (
flags_.pion == 5) {
275 printf(" %s %f %s\n", "minimal neutron-pair invariant mass^2 = ", qqmin," GeV^2");
276 printf(" %s %f %s\n", "maximal neutron-pair invariant mass^2 = ", qqmax," GeV^2");
278 printf(" %s %f %s\n", "minimal kaon-pair invariant mass^2 = ", qqmin," GeV^2");
279 printf(" %s %f %s\n", "maximal kaon-pair invariant mass^2 = ", qqmax," GeV^2");
280 }
else if(
flags_.pion == 8){
281 printf(" %s %f %s\n", "minimal three-pion invariant mass^2 = ", qqmin," GeV^2");
282 printf(" %s %f %s\n", "maximal three-pion invariant mass^2 = ", qqmax," GeV^2");
283 }
else if(
flags_.pion == 9){
284 printf(" %s %f %s\n", "minimal lambda-pair invariant mass^2 = ", qqmin," GeV^2");
285 printf(" %s %f %s\n", "maximal lambda-pair invariant mass^2 = ", qqmax," GeV^2");
286 } else {
287 printf(" %s %f %s\n", "minimal four-pion invariant mass^2 = ", qqmin," GeV^2" );
288 printf(" %s %f %s\n", "maximal four-pion invariant mass^2 = ", qqmax," GeV^2");
289 }
290
292 cout << "Born" << endl;
294 cerr << "WRONG FSRNLO flag - only fsrnlo=0 allowed for Born" << endl;
295 abort();
296 }
297 }
298
300 cerr << "WRONG NLO flag - only Born allowed for Lambdas"<< endl;
301 cerr << "If you feel that you need NLO"<< endl;
302 cerr << "please contact the authors"<< endl;
303 abort();
304 }
305
306 if (
flags_.nlo == 1) printf(
" %s %f\n",
"NLO: soft photon cutoff w = ",
cuts_.w);
308 {
309
313 cerr << "WRONG combination of FSR, FSRNLO flags" <<endl;
314 abort();
315 }
316
318 cout << "ISR only" << endl;
320 cout << "ISR+FSR" << endl;
321 else if (
flags_.fsr == 2) {
323 cout << "ISR+INT+FSR" << endl;
324 else {
325 cerr << "WRONG FSR flag: interference is included only for nlo=0" << endl;
326 abort();
327 }
328 }
329 else {
330 cerr <<
"WRONG FSR flag" <<
flags_.fsr << endl;
331 abort();
332 }
334 cout << "IFSNLO included" << endl;
335 }
336 else
337 {
339 cout << "ISR only" << endl;
340 else {
341 cerr << "FSR is implemented only for pi+pi-, mu+mu- and K+K- modes" << endl;
342 abort();
343 }
344 }
345
347 cout << "Vacuum polarization is NOT included" << endl;}
348 else if(
flags_.ivac == 1){
349 cout << "Vacuum polarization by Fred Jegerlehner (http://www-com.physik.hu-berlin.de/fjeger/alphaQEDn.uu)" << endl;}
350 else if(
flags_.ivac == 2){
351 cout << "Vacuum polarization (VP_HLMNT_v1_3nonr) by Daisuke Nomura and Thomas Teubner" << endl;}
352 else {
353 cout << "WRONG vacuum polarization switch" << endl;
354 abort();
355 }
356
357
360 cout << "Kuhn-Santamaria PionFormFactor" << endl;
361 else if(
flags_.FF_pion == 1)
362 cout << "Gounaris-Sakurai PionFormFactor old" << endl;
363 else if(
flags_.FF_pion == 2)
364 cout << "Gounaris-Sakurai PionFormFactor new" << endl;
365 else {
366 cout << "WRONG PionFormFactor switch" << endl;
367 abort();
368 }
371 cout << "f0+f0(600): K+K- model" << endl;
372 else if(
flags_.f0_model == 1)
373 cout << "f0+f0(600): \"no structure\" model" << endl;
374 else if(
flags_.f0_model == 2)
375 cout << "NO f0+f0(600)" << endl;
376 else if(
flags_.f0_model == 3)
377 cout << "only f0, KLOE: Cesare Bini-private communication" << endl;
378 else {
379 cout << "WRONG f0+f0(600) switch" << endl;
380 abort();
381 }
382 }
383 }
384
387 cout << "constrained KaonFormFactor" << endl;
388 else if(
flags_.FF_kaon == 1) {
389 cout << "unconstrained KaonFormFactor" << endl;}
390 else if(
flags_.FF_kaon == 2) {
391 cout << "Kuhn-Khodjamirian-Bruch KaonFormFactor" << endl;}
392 else{
393 cout << "WRONG KaonFormFactor switch" << endl;
394 abort();
395 }
396 }
397
400 cout << "THE NARROW RESONANCE J/PSI INCLUDED" << endl;}
401 else if(
flags_.narr_res == 2){
402 cout << "THE NARROW RESONANCE PSI(2S) INCLUDED" << endl;}
403 else if(
flags_.narr_res != 0){
404 cout << "wrong flag narr_res: only 0, 1 or 2 allowed" << endl;
405 abort();
406 }
407 }
408
409 cout << "--------------------------------------------------------------" << endl;
410
411
412
413 for(int i = 0; i<2; i++)
414 {
418 }
419
422
427
428
429
430 for(int j = 1; j <= m_nm; j++)
431 {
433 Ar[1] = Ar_r[0];
436 GEN_1PH(1,qqmin,qqmax,cos1min,cos1max,cos3min,cos3max);
437 }
438 else {
440 GEN_2PH(1,qqmin,cos1min,cos1max,cos2min,cos2max,cos3min,cos3max);
441 }
442 }
443
444
445
454
457
461 }
462
466 }
467
468
473}
#define RLXDINIT(LUXURY, SEED)