BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
phokhara.cc File Reference
#include "PhokharaDef.h"
#include <fstream>
#include <iomanip>
#include <iostream>
#include "ranlxd.h"

Go to the source code of this file.

Macros

#define RLXDRESETF(SEED)
#define INPUT(NGES, NM, OUTFILE)
#define INITHISTO()
#define ENDHISTO()
#define WRITEEVENT()
#define RANLXDF(AR, VAL)
#define GEN_1PH(I, QQMIN, QQMAX, COS1MIN, COS1MAX, COS3MIN, COS3MAX)
#define GEN_2PH(I, QQMIN, COS1MIN, COS1MAX, COS2MIN, COS2MAX, COS3MIN, COS3MAX)

Functions

 PROTOCCALLSFSUB1 (RLXDRESETF, rlxdresetf, INTV)
 PROTOCCALLSFSUB3 (INPUT, input, PLONG, PINT, PSTRING)
 PROTOCCALLSFSUB0 (INITHISTO, inithisto)
 PROTOCCALLSFSUB0 (ENDHISTO, endhisto)
 PROTOCCALLSFSUB0 (WRITEEVENT, writeevent)
 PROTOCCALLSFSUB2 (RANLXDF, ranlxdf, DOUBLEV, INT)
 PROTOCCALLSFSUB7 (GEN_1PH, gen_1ph_, INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE)
 PROTOCCALLSFSUB8 (GEN_2PH, gen_2ph_, INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE)
int main ()

Macro Definition Documentation

◆ ENDHISTO

#define ENDHISTO ( )
Value:
CCALLSFSUB0( ENDHISTO, endhisto )
#define ENDHISTO()
Definition phokhara.cc:22

Definition at line 22 of file phokhara.cc.

Referenced by main(), and PROTOCCALLSFSUB0().

◆ GEN_1PH

#define GEN_1PH ( I,
QQMIN,
QQMAX,
COS1MIN,
COS1MAX,
COS3MIN,
COS3MAX )
Value:
CCALLSFSUB7( GEN_1PH, gen_1ph_, INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, \
I, QQMIN, QQMAX, COS1MIN, COS1MAX, COS3MIN, COS3MAX )
#define GEN_1PH(I, QQMIN, QQMAX, COS1MIN, COS1MAX, COS3MIN, COS3MAX)
const DifComplex I

Definition at line 32 of file phokhara.cc.

32#define GEN_1PH( I, QQMIN, QQMAX, COS1MIN, COS1MAX, COS3MIN, COS3MAX ) \
33 CCALLSFSUB7( GEN_1PH, gen_1ph_, INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, \
34 I, QQMIN, QQMAX, COS1MIN, COS1MAX, COS3MIN, COS3MAX )

Referenced by main().

◆ GEN_2PH

#define GEN_2PH ( I,
QQMIN,
COS1MIN,
COS1MAX,
COS2MIN,
COS2MAX,
COS3MIN,
COS3MAX )
Value:
CCALLSFSUB8( GEN_2PH, gen_2ph_, INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, \
PDOUBLE, I, QQMIN, COS1MIN, COS1MAX, COS2MIN, COS2MAX, COS3MIN, COS3MAX )
#define GEN_2PH(I, QQMIN, COS1MIN, COS1MAX, COS2MIN, COS2MAX, COS3MIN, COS3MAX)

Definition at line 38 of file phokhara.cc.

38#define GEN_2PH( I, QQMIN, COS1MIN, COS1MAX, COS2MIN, COS2MAX, COS3MIN, COS3MAX ) \
39 CCALLSFSUB8( GEN_2PH, gen_2ph_, INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, \
40 PDOUBLE, I, QQMIN, COS1MIN, COS1MAX, COS2MIN, COS2MAX, COS3MIN, COS3MAX )

Referenced by main().

◆ INITHISTO

#define INITHISTO ( )
Value:
CCALLSFSUB0( INITHISTO, inithisto )
#define INITHISTO()
Definition phokhara.cc:19

Definition at line 19 of file phokhara.cc.

Referenced by main(), and PROTOCCALLSFSUB0().

◆ INPUT

#define INPUT ( NGES,
NM,
OUTFILE )
Value:
CCALLSFSUB3( INPUT, input, PLONG, PINT, PSTRING, NGES, NM, OUTFILE )
#define INPUT
Definition BesBdkRc.cxx:31

Definition at line 15 of file phokhara.cc.

15#define INPUT( NGES, NM, OUTFILE ) \
16 CCALLSFSUB3( INPUT, input, PLONG, PINT, PSTRING, NGES, NM, OUTFILE )

Referenced by main().

◆ RANLXDF

#define RANLXDF ( AR,
VAL )
Value:
CCALLSFSUB2( RANLXDF, ranlxdf, DOUBLEV, INT, AR, VAL )
#define RANLXDF(AR, VAL)

Definition at line 28 of file phokhara.cc.

Referenced by main().

◆ RLXDRESETF

#define RLXDRESETF ( SEED)
Value:
CCALLSFSUB1( RLXDRESETF, rlxdresetf, INTV, SEED )
#define RLXDRESETF(SEED)

Definition at line 12 of file phokhara.cc.

Referenced by main().

◆ WRITEEVENT

#define WRITEEVENT ( )
Value:
CCALLSFSUB0( WRITEEVENT, writeevent )
#define WRITEEVENT()
Definition phokhara.cc:25

Definition at line 25 of file phokhara.cc.

Referenced by PROTOCCALLSFSUB0().

Function Documentation

◆ main()

int main ( )

Definition at line 42 of file phokhara.cc.

42 {
43 double qqmin, qqmax;
44 double cos1min, cos1max, cos2min, cos2max, cos3min, cos3max;
45 double dsigm1, dsigm2, sigma1, sigma2, sigma, dsigm, Ar[14], Ar_r[14];
46 int nm, i, s_seed[105];
47 long int nges, k, j;
48 char outfile[20];
49
50 // --- reads the seed ------
51 ifstream seeds( "seed.dat" );
52 if ( seeds.is_open() )
53 {
54 int ii = 0;
55 while ( !seeds.eof() ) seeds >> s_seed[ii++];
56 }
57 else cerr << "Cannot open file seed.dat for reading" << endl;
58
59 RLXDRESETF( s_seed );
60 // rlxd_reset(s_seed);
61
62 // --- input parameters ----------------------------
63
64 INPUT( nges, nm, outfile );
65
66 // --- open output file for generated momenta ------
67 // if(iprint.ne.0) open (10,file=outfile,type="new")
68
69 // --- print run data ------------------------------
70 cout << "----------------------------------------------------" << FLAGS.pion << endl;
71 if ( FLAGS.pion == 0 ) cout << " PHOKHARA 6.0 : e^+ e^- -> mu^+ mu^- gamma" << endl;
72 else if ( FLAGS.pion == 1 ) cout << " PHOKHARA 6.0: e^+ e^- -> pi^+ pi^- gamma" << endl;
73 else if ( FLAGS.pion == 2 )
74 cout << " PHOKHARA 6.0: e^+ e^- -> pi^+ pi^- 2pi^0 gamma" << endl;
75 else if ( FLAGS.pion == 3 ) cout << " PHOKHARA 6.0: e^+ e^- -> 2pi^+ 2pi^- gamma" << endl;
76 else if ( FLAGS.pion == 4 ) cout << " PHOKHARA 6.0: e^+ e^- -> p pbar gamma" << endl;
77 else if ( FLAGS.pion == 5 ) cout << " PHOKHARA 6.0: e^+ e^- -> n nbar gamma" << endl;
78 else if ( FLAGS.pion == 6 ) cout << " PHOKHARA 6.0: e^+ e^- -> K^+ K^- gamma" << endl;
79 else if ( FLAGS.pion == 7 ) cout << " PHOKHARA 6.0: e^+ e^- -> K_0 K_0bar gamma" << endl;
80 else if ( FLAGS.pion == 8 )
81 cout << " PHOKHARA 6.0: e^+ e^- -> pi^+ pi^- pi^0 gamma" << endl;
82 else if ( FLAGS.pion == 9 )
83 {
84 cout << "PHOKHARA 6.0 : e^+ e^- ->" << endl;
85 cout << " Lambda (-> pi^- p) Lambda bar (-> pi^+ pbar) gamma" << endl;
86 }
87 else cout << " PHOKHARA 6.0: not yet implemented" << endl;
88
89 // --------------------------------
90 cout << "----------------------------------------------------" << endl;
91 printf( " %s %f %s\n", "cms total energy = ", sqrt( CTES.Sp ),
92 " GeV " );
93 if ( FLAGS.tagged == 0 )
94 {
95 if ( ( CUTS.gmin / 2.0 / CTES.ebeam ) < 0.0098 )
96 {
97 cerr << " minimal missing energy set to small" << endl;
98 return 0;
99 }
100 printf( " %s %f %s\n", "minimal tagged photon energy = ", CUTS.gmin, " GeV " );
101 printf( " %s %f,%f\n", "angular cuts on tagged photon = ", CUTS.phot1cut,
102 CUTS.phot2cut );
103 }
104 else
105 {
106 if ( ( CUTS.gmin / 2.0 / CTES.ebeam ) < 0.0098 )
107 {
108 cerr << " minimal missing energy set to small" << endl;
109 return 0;
110 }
111 printf( " %s %f %s\n", "minimal missing energy = ", CUTS.gmin, " GeV " );
112 printf( " %s %f,%f\n", "angular cuts on missing momentum = ", CUTS.phot1cut,
113 CUTS.phot2cut );
114 }
115
116 // --------------------------------
117 if ( FLAGS.pion == 0 )
118 printf( " %s %f,%f\n", "angular cuts on muons = ", CUTS.pi1cut,
119 CUTS.pi2cut );
120 else if ( FLAGS.pion == 4 )
121 printf( " %s %f,%f\n", "angular cuts on protons = ", CUTS.pi1cut,
122 CUTS.pi2cut );
123 else if ( FLAGS.pion == 5 )
124 printf( " %s %f,%f\n", "angular cuts on neutrons = ", CUTS.pi1cut,
125 CUTS.pi2cut );
126 else if ( ( FLAGS.pion == 6 ) || ( FLAGS.pion == 7 ) )
127 printf( " %s %f,%f\n", "angular cuts on kaons = ", CUTS.pi1cut,
128 CUTS.pi2cut );
129 else if ( FLAGS.pion == 9 )
130 printf( " %s %f,%f\n", "angular cuts on pions and protons = ", CUTS.pi1cut,
131 CUTS.pi2cut );
132 else
133 printf( " %s %f,%f\n", "angular cuts on pions = ", CUTS.pi1cut,
134 CUTS.pi2cut );
135
136 if ( FLAGS.tagged == 0 )
137 {
138 if ( FLAGS.pion == 0 )
139 printf( " %s %f %s\n", "min. muons-tagged photon inv.mass^2 = ", CUTS.q2min,
140 " GeV^2" );
141 else if ( FLAGS.pion == 4 )
142 printf( " %s %f %s\n", "min. protons-tagged photon inv.mass^2 = ", CUTS.q2min,
143 " GeV^2" );
144 else if ( FLAGS.pion == 5 )
145 printf( " %s %f %s\n", "min. neutrons-tagged photon inv.mass^2 = ", CUTS.q2min,
146 " GeV^2" );
147 else if ( ( FLAGS.pion == 6 ) || ( FLAGS.pion == 7 ) )
148 printf( " %s %f %s\n", "min. kaons-tagged photon inv.mass^2 = ", CUTS.q2min,
149 " GeV^2" );
150 else if ( FLAGS.pion == 9 )
151 printf( " %s %f %s\n", " min. lambdas-tagged photon inv.mass^2 = ", CUTS.q2min,
152 " GeV^2" );
153 else
154 printf( " %s %f %s\n", "min. pions-tagged photon inv.mass^2 = ", CUTS.q2min,
155 " GeV^2" );
156 }
157
158 // --- book histograms -----------------------------
159
160 INITHISTO();
161
162 // --- set cuts ------------------------------------
163 if ( FLAGS.tagged == 0 )
164 {
165 cos1min = cos( CUTS.phot2cut * CTES.pi / 180.0 ); // photon1 angle cuts in the
166 cos1max = cos( CUTS.phot1cut * CTES.pi / 180.0 ); // LAB rest frame
167 }
168 else
169 {
170 cos1min = -1.0;
171 cos1max = 1.0;
172 CUTS.gmin = CUTS.gmin / 2.0;
173 }
174 cos2min = -1.0; // photon2 angle limits
175 cos2max = 1.0; //
176 cos3min = -1.0; // hadrons/muons angle limits
177 cos3max = 1.0; // in their rest frame
178 if ( FLAGS.pion == 0 ) // virtual photon energy cut
179 qqmin = 4.0 * CTES.mmu * CTES.mmu;
180 else if ( FLAGS.pion == 1 ) qqmin = 4.0 * CTES.mpi * CTES.mpi;
181 else if ( FLAGS.pion == 2 )
182 qqmin = 4.0 * ( CTES.mpi + CTES.mpi0 ) * ( CTES.mpi + CTES.mpi0 );
183 else if ( FLAGS.pion == 3 ) qqmin = 16.0 * CTES.mpi * CTES.mpi;
184 else if ( FLAGS.pion == 4 ) qqmin = 4.0 * CTES.mp * CTES.mp;
185 else if ( FLAGS.pion == 5 ) qqmin = 4.0 * CTES.mnt * CTES.mnt;
186 else if ( FLAGS.pion == 6 ) qqmin = 4.0 * CTES.mKp * CTES.mKp;
187 else if ( FLAGS.pion == 7 ) qqmin = 4.0 * CTES.mKn * CTES.mKn;
188 else if ( FLAGS.pion == 8 )
189 qqmin = ( 2.0 * CTES.mpi + CTES.mpi0 ) * ( 2.0 * CTES.mpi + CTES.mpi0 );
190 else if ( FLAGS.pion == 9 ) qqmin = 4.0 * CTES.mlamb * CTES.mlamb;
191 // else
192 // continue;
193
194 qqmax = CTES.Sp - 2.0 * sqrt( CTES.Sp ) * CUTS.gmin; // if only one photon
195 if ( CUTS.q2_max_c < qqmax ) qqmax = CUTS.q2_max_c; // external cuts
196
197 // -------------------
198 if ( ( CUTS.q2_min_c > qqmin ) &&
199 ( CUTS.q2_min_c <
200 ( CTES.Sp * ( 1.0 - 2.0 * ( CUTS.gmin / sqrt( CTES.Sp ) + CUTS.w ) ) ) ) )
201 qqmin = CUTS.q2_min_c;
202 else
203 {
204 cerr << "------------------------------" << endl;
205 cerr << " Q^2_min TOO SMALL" << endl;
206 cerr << " Q^2_min CHANGE BY PHOKHARA = " << qqmin << " GeV^2" << endl;
207 cerr << "------------------------------" << endl;
208 }
209 // -------------------
210 if ( qqmax <= qqmin )
211 {
212 cerr << " Q^2_max to small " << endl;
213 cerr << " Q^2_max = " << qqmax << endl;
214 cerr << " Q^2_min = " << qqmin << endl;
215 return 0;
216 }
217
218 // -------------------
219 if ( FLAGS.pion == 0 )
220 {
221 printf( " %s %f %s\n", "minimal muon-pair invariant mass^2 = ", qqmin, " GeV^2" );
222 printf( " %s %f %s\n", "maximal muon-pair invariant mass^2 = ", qqmax, " GeV^2" );
223 }
224 else if ( FLAGS.pion == 1 )
225 {
226 printf( " %s %f %s\n", "minimal pion-pair invariant mass^2 = ", qqmin, " GeV^2" );
227 printf( " %s %f %s\n", "maximal pion-pair invariant mass^2 = ", qqmax, " GeV^2" );
228 }
229 else if ( FLAGS.pion == 4 )
230 {
231 printf( " %s %f %s\n", "minimal proton-pair invariant mass^2 = ", qqmin, " GeV^2" );
232 printf( " %s %f %s\n", "maximal proton-pair invariant mass^2 = ", qqmax, " GeV^2" );
233 }
234 else if ( FLAGS.pion == 5 )
235 {
236 printf( " %s %f %s\n", "minimal neutron-pair invariant mass^2 = ", qqmin, " GeV^2" );
237 printf( " %s %f %s\n", "maximal neutron-pair invariant mass^2 = ", qqmax, " GeV^2" );
238 }
239 else if ( ( FLAGS.pion == 6 ) || ( FLAGS.pion == 7 ) )
240 {
241 printf( " %s %f %s\n", "minimal kaon-pair invariant mass^2 = ", qqmin, " GeV^2" );
242 printf( " %s %f %s\n", "maximal kaon-pair invariant mass^2 = ", qqmax, " GeV^2" );
243 }
244 else if ( FLAGS.pion == 8 )
245 {
246 printf( " %s %f %s\n", "minimal three-pion invariant mass^2 = ", qqmin, " GeV^2" );
247 printf( " %s %f %s\n", "maximal three-pion invariant mass^2 = ", qqmax, " GeV^2" );
248 }
249 else if ( FLAGS.pion == 9 )
250 {
251 printf( " %s %f %s\n", "minimal lambda-pair invariant mass^2 = ", qqmin, " GeV^2" );
252 printf( " %s %f %s\n", "maximal lambda-pair invariant mass^2 = ", qqmax, " GeV^2" );
253 }
254 else
255 {
256 printf( " %s %f %s\n", "minimal four-pion invariant mass^2 = ", qqmin, " GeV^2" );
257 printf( " %s %f %s\n", "maximal four-pion invariant mass^2 = ", qqmax, " GeV^2" );
258 }
259 // -------------------
260 if ( FLAGS.nlo == 0 )
261 {
262 cout << "Born" << endl;
263 if ( FLAGS.fsrnlo != 0 )
264 {
265 cerr << "WRONG FSRNLO flag - only fsrnlo=0 allowed for Born" << endl;
266 return 0;
267 }
268 }
269 // -------------------
270 if ( ( FLAGS.pion == 9 ) && ( FLAGS.nlo != 0 ) )
271 {
272 cerr << "WRONG NLO flag - only Born allowed for Lambdas" << endl;
273 cerr << "If you feel that you need NLO" << endl;
274 cerr << "please contact the authors" << endl;
275 return 0;
276 }
277 // -------------------
278 if ( FLAGS.nlo == 1 )
279 printf( " %s %f\n", "NLO: soft photon cutoff w = ", CUTS.w );
280 if ( ( FLAGS.pion <= 1 ) || ( FLAGS.pion == 6 ) )
281 {
282
283 if ( !( ( FLAGS.fsr == 1 ) || ( FLAGS.fsr == 2 ) || ( FLAGS.fsrnlo == 0 ) ||
284 ( FLAGS.fsr == 1 ) || ( FLAGS.fsrnlo == 1 ) || ( FLAGS.fsr == 0 ) ||
285 ( FLAGS.fsrnlo == 0 ) ) )
286 {
287 cerr << "WRONG combination of FSR, FSRNLO flags" << endl;
288 return 0;
289 }
290
291 // ------------------
292 if ( FLAGS.fsr == 0 ) cout << "ISR only" << endl;
293 else if ( FLAGS.fsr == 1 ) cout << "ISR+FSR" << endl;
294 else if ( FLAGS.fsr == 2 )
295 {
296 if ( FLAGS.nlo == 0 ) cout << "ISR+INT+FSR" << endl;
297 else
298 {
299 cerr << "WRONG FSR flag: interference is included only for nlo=0" << endl;
300 return 0;
301 }
302 }
303 else
304 {
305 cerr << "WRONG FSR flag" << FLAGS.fsr << endl;
306 return 0;
307 }
308
309 if ( FLAGS.fsrnlo == 1 ) cout << "IFSNLO included" << endl;
310 }
311 else
312 {
313 if ( ( FLAGS.fsr == 0 ) && ( FLAGS.fsrnlo == 0 ) ) cout << "ISR only" << endl;
314 else
315 {
316 cerr << "FSR is implemented only for pi+pi-, mu+mu- and K+K- modes" << endl;
317 return 0;
318 }
319 }
320
321 // ------------------
322 if ( FLAGS.ivac == 0 ) { cout << "Vacuum polarization is NOT included" << endl; }
323 else if ( FLAGS.ivac == 1 ) { cout << "Vacuum polarization is included" << endl; }
324 else
325 {
326 cout << "WRONG vacuum polarization switch" << endl;
327 return 0;
328 }
329 // -----------------
330 if ( FLAGS.pion == 1 )
331 {
332 if ( FLAGS.FF_pion == 0 ) cout << "Kuhn-Santamaria PionFormFactor" << endl;
333 else if ( FLAGS.FF_pion == 1 ) cout << "Gounaris-Sakurai PionFormFactor" << endl;
334 else
335 {
336 cout << "WRONG PionFormFactor switch" << endl;
337 return 0;
338 }
339 // ------
340 if ( FLAGS.fsr != 0 )
341 {
342 if ( FLAGS.f0_model == 0 ) cout << "f0+f0(600): K+K- model" << endl;
343 else if ( FLAGS.f0_model == 1 ) cout << "f0+f0(600): \"no structure\" model" << endl;
344 else if ( FLAGS.f0_model == 2 ) cout << "NO f0+f0(600)" << endl;
345 else if ( FLAGS.f0_model == 3 )
346 cout << "only f0, KLOE: Cesare Bini-private communication" << endl;
347 else
348 {
349 cout << "WRONG f0+f0(600) switch" << endl;
350 return 0;
351 }
352 }
353 }
354 //
355 // =================================================
356 // --- finding the maximum -------------------------
357 k = nm;
358 for ( i = 0; i < 2; i++ )
359 {
360 MAXIMA.Mmax[i] = 1.0;
361 MAXIMA.gross[i] = 0.0;
362 MAXIMA.klein[i] = 0.0;
363 }
364 if ( FLAGS.nlo == 0 ) MAXIMA.Mmax[1] = 0.0; // only 1 photon events generated
365
366 for ( i = 1; i <= 2; i++ )
367 { // initializing the MC loop
368 MAXIMA.tr[0] = 0.0;
369 MAXIMA.tr[1] = 0.0;
370 MAXIMA.count[0] = 0.0;
371 MAXIMA.count[1] = 0.0;
372
373 // =================================================
374 // --- beginning the MC loop event generation ------
375 for ( j = 1; j <= k; j++ )
376 {
377 RANLXDF( Ar_r, 1 );
378 Ar[1] = Ar_r[0];
379
380 if ( Ar[1] <= ( MAXIMA.Mmax[0] / ( MAXIMA.Mmax[0] + MAXIMA.Mmax[1] ) ) )
381 {
382 MAXIMA.count[0] = MAXIMA.count[0] + 1.0;
383 GEN_1PH( i, qqmin, qqmax, cos1min, cos1max, cos3min, cos3max );
384 }
385 else
386 {
387 MAXIMA.count[1] = MAXIMA.count[1] + 1.0;
388 GEN_2PH( i, qqmin, cos1min, cos1max, cos2min, cos2max, cos3min, cos3max );
389 }
390 }
391 // --- end of the MC loop --------------------------
392 // =================================================
393 // --- for the second run ---
394 k = nges;
395 if ( i == 1 )
396 {
397 MAXIMA.Mmax[0] = MAXIMA.gross[0] + .05 * sqrt( MAXIMA.gross[0] * MAXIMA.gross[0] );
398 MAXIMA.Mmax[1] = MAXIMA.gross[1] +
399 ( .03 + .02 * CTES.Sp ) * sqrt( MAXIMA.gross[1] * MAXIMA.gross[1] );
400
401 if ( ( FLAGS.pion == 1 ) && ( FLAGS.fsrnlo == 1 ) )
402 MAXIMA.Mmax[1] = MAXIMA.Mmax[1] * 1.5;
403 if ( ( FLAGS.pion == 0 ) && ( FLAGS.fsrnlo == 1 ) )
404 MAXIMA.Mmax[1] = MAXIMA.Mmax[1] * 1.5;
405
406 if ( ( FLAGS.pion == 0 ) && ( FLAGS.fsr == 1 ) && ( FLAGS.fsrnlo == 0 ) )
407 MAXIMA.Mmax[1] = MAXIMA.Mmax[1] * 1.2;
408
409 if ( ( FLAGS.pion == 2 ) || ( FLAGS.pion == 3 ) )
410 {
411 MAXIMA.Mmax[0] = MAXIMA.Mmax[0] * 1.1;
412 MAXIMA.Mmax[1] = MAXIMA.Mmax[1] * 1.1;
413 }
414
415 if ( FLAGS.pion == 8 )
416 {
417 MAXIMA.Mmax[0] = MAXIMA.Mmax[0] * 1.08;
418 MAXIMA.Mmax[1] = MAXIMA.Mmax[1] * 1.1;
419 }
420 }
421 }
422 // --- end of the second run -----------------------
423
424 // =================================================
425 if ( FLAGS.pion == 9 )
426 MAXIMA.Mmax[1] = MAXIMA.Mmax[1] * ( 1.0 + LAMBDA_PAR.alpha_lamb ) *
427 ( 1.0 + LAMBDA_PAR.alpha_lamb ) * LAMBDA_PAR.ratio_lamb *
428 LAMBDA_PAR.ratio_lamb;
429
430 // --- save histograms -----------------------------
431
432 ENDHISTO();
433
434 // --- value of the cross section ------------------
435 if ( FLAGS.nlo == 0 )
436 {
437 sigma = MAXIMA.Mmax[0] / MAXIMA.count[0] * MAXIMA.tr[0];
438 dsigm = MAXIMA.Mmax[0] *
439 sqrt( ( MAXIMA.tr[0] / MAXIMA.count[0] -
440 ( MAXIMA.tr[0] / MAXIMA.count[0] ) * ( MAXIMA.tr[0] / MAXIMA.count[0] ) ) /
441 MAXIMA.count[0] );
442 }
443 else
444 {
445 sigma1 = MAXIMA.Mmax[0] / MAXIMA.count[0] * MAXIMA.tr[0];
446 sigma2 = MAXIMA.Mmax[1] / MAXIMA.count[1] * MAXIMA.tr[1];
447 dsigm1 =
448 MAXIMA.Mmax[0] *
449 sqrt( ( MAXIMA.tr[0] / MAXIMA.count[0] -
450 ( MAXIMA.tr[0] / MAXIMA.count[0] ) * ( MAXIMA.tr[0] / MAXIMA.count[0] ) ) /
451 MAXIMA.count[0] );
452 dsigm2 =
453 MAXIMA.Mmax[1] *
454 sqrt( ( MAXIMA.tr[1] / MAXIMA.count[1] -
455 ( MAXIMA.tr[1] / MAXIMA.count[1] ) * ( MAXIMA.tr[1] / MAXIMA.count[1] ) ) /
456 MAXIMA.count[1] );
457
458 sigma = sigma1 + sigma2;
459 dsigm = sqrt( dsigm1 * dsigm1 + dsigm2 * dsigm2 );
460 }
461
462 // --- output --------------------------------------
463 cout << "----------------------------------------------------" << endl;
464 cout << int( MAXIMA.tr[0] + MAXIMA.tr[1] ) << " total events accepted of " << endl;
465 cout << int( nges ) << " total events generated" << endl;
466 cout << int( MAXIMA.tr[0] ) << " one photon events accepted of " << endl;
467 cout << int( MAXIMA.count[0] ) << " events generated" << endl;
468 cout << int( MAXIMA.tr[1] ) << " two photon events accepted of " << endl;
469 cout << int( MAXIMA.count[1] ) << " events generated" << endl;
470 cout << endl;
471 if ( FLAGS.nlo != 0 ) cout << "sigma1(nbarn) = " << sigma1 << " +- " << dsigm1 << endl;
472 if ( FLAGS.nlo != 0 ) cout << "sigma2(nbarn) = " << sigma2 << " +- " << dsigm2 << endl;
473 cout << "sigma (nbarn) = " << sigma << " +- " << dsigm << endl;
474 cout << endl;
475 cout << "maximum1 = " << MAXIMA.gross[0] << " minimum1 = " << MAXIMA.klein[0] << endl;
476 cout << "Mmax1 = " << MAXIMA.Mmax[0] << endl;
477 cout << "maximum2 = " << MAXIMA.gross[1] << " minimum2 = " << MAXIMA.klein[1] << endl;
478 cout << "Mmax2 = " << MAXIMA.Mmax[1] << endl;
479 cout << "----------------------------------------------------" << endl;
480
481 // --- saves the new seed --------------------------
482 /*
483 close (9,DISP="delete")
484 open(9,file="seed.dat",type="new")
485
486 call rlxdgetf(s_seed)
487 write(9,*)s_seed
488
489 end
490 */
491
492 return 0;
493}
#define FLAGS
Definition BesBdkRc.cxx:78
#define CTES
Definition PhokharaDef.h:22
#define LAMBDA_PAR
Definition PhokharaDef.h:59
#define MAXIMA
Definition PhokharaDef.h:82
#define CUTS
Definition PhokharaDef.h:31
#define GEN_1PH(I, QQMIN, QQMAX, COS1MIN, COS1MAX, COS3MIN, COS3MAX)
Definition phokhara.cc:32
#define RANLXDF(AR, VAL)
Definition phokhara.cc:28
#define RLXDRESETF(SEED)
Definition phokhara.cc:12
#define INPUT(NGES, NM, OUTFILE)
Definition phokhara.cc:15
#define GEN_2PH(I, QQMIN, COS1MIN, COS1MAX, COS2MIN, COS2MAX, COS3MIN, COS3MAX)
Definition phokhara.cc:38

Referenced by THelixFitter::fit(), THelixFitter::fit(), THelixFitter::fit(), and THelixFitter::fit().

◆ PROTOCCALLSFSUB0() [1/3]

PROTOCCALLSFSUB0 ( ENDHISTO ,
endhisto  )

◆ PROTOCCALLSFSUB0() [2/3]

PROTOCCALLSFSUB0 ( INITHISTO ,
inithisto  )

◆ PROTOCCALLSFSUB0() [3/3]

PROTOCCALLSFSUB0 ( WRITEEVENT ,
writeevent  )

◆ PROTOCCALLSFSUB1()

PROTOCCALLSFSUB1 ( RLXDRESETF ,
rlxdresetf ,
INTV  )

◆ PROTOCCALLSFSUB2()

PROTOCCALLSFSUB2 ( RANLXDF ,
ranlxdf ,
DOUBLEV ,
INT  )

◆ PROTOCCALLSFSUB3()

PROTOCCALLSFSUB3 ( INPUT ,
input ,
PLONG ,
PINT ,
PSTRING  )

◆ PROTOCCALLSFSUB7()

PROTOCCALLSFSUB7 ( GEN_1PH ,
gen_1ph_ ,
INT ,
PDOUBLE ,
PDOUBLE ,
PDOUBLE ,
PDOUBLE ,
PDOUBLE ,
PDOUBLE  )

◆ PROTOCCALLSFSUB8()

PROTOCCALLSFSUB8 ( GEN_2PH ,
gen_2ph_ ,
INT ,
PDOUBLE ,
PDOUBLE ,
PDOUBLE ,
PDOUBLE ,
PDOUBLE ,
PDOUBLE ,
PDOUBLE  )