75# define pydiff pydiff_
76# define pyevnt pyevnt_
77# define pyinit pyinit_
78# define pychge pychge_
79# define pycomp pycomp_
80# define pyedit pyedit_
81# define pyexec pyexec_
82# define pyhepc pyhepc_
83# define pygive pygive_
84# define pylist pylist_
85# define pymass pymass_
86# define pyname pyname_
88# define pyrget pyrget_
89# define pyrset pyrset_
90# define pystat pystat_
91# define pytest pytest_
92# define pytune pytune_
93# define pyupda pyupda_
94# define py1ent py1ent_
95# ifdef PYTHIA6_DOUBLE_UNDERSCORE
96# define tpythia6_open_fortran_file tpythia6_open_fortran_file__
97# define tpythia6_close_fortran_file tpythia6_close_fortran_file__
98# define pythia6_common_address pythia6_common_address__
99# elif PYTHIA6_SINGLE_UNDERSCORE
100# define tpythia6_open_fortran_file tpythia6_open_fortran_file_
101# define tpythia6_close_fortran_file tpythia6_close_fortran_file_
102# define pythia6_common_address pythia6_common_address
104# define pythia6_common_address pythia6_common_address
105# define tpythia6_open_fortran_file tpythia6_open_fortran_file_
106# define tpythia6_close_fortran_file tpythia6_close_fortran_file_
110# define pydiff PYDIFF
111# define pyevnt PYEVNT
112# define pyinit PYINIT
113# define pychge PYCHGE
114# define pycomp PYCOMP
115# define pyedit PYEDIT
116# define pyexec PYEXEC
117# define pygive PYGIVE
118# define pyhepc PYHEPC
119# define pylist PYLIST
120# define pymass PYMASS
121# define pyname PYNAME
123# define pyrget PYRGET
124# define pyrset PYRSET
125# define pystat PYSTAT
126# define pytest PYTEST
127# define pytune PYTUNE
128# define pyupda PYUPDA
129# define py1ent PY1ENT
130# define tpythia6_open_fortran_file TPYTHIA6_OPEN_FORTRAN_FILE
131# define tpythia6_close_fortran_file TPYTHIA6_CLOSE_FORTRAN_FILE
132# define type_of_call _stdcall
163 char *beam,
Long_t l_beam,
164 char *target,
Long_t l_target,
208 Fatal(
"TPythia6",
"There's already an instance of TPythia6");
330 for (
Int_t i = 0; i<numpart; i++) {
364 if (particles == 0)
return 0;
366 clonesParticles.
Clear();
369 if (!strcmp(option,
"") || !strcmp(option,
"Final")) {
370 for (
Int_t i = 0; i<numpart; i++) {
396 }
else if (!strcmp(option,
"All")) {
397 for (
Int_t i = 0; i<numpart; i++) {
439 strlcpy(cframe,frame,4);
441 strlcpy(cbeam,beam,10);
443 strlcpy(ctarget,target,10);
448 if ( (!strncmp(frame,
"CMS" ,3)) &&
449 (!strncmp(frame,
"FIXT" ,4)) &&
450 (!strncmp(frame,
"USER" ,4)) &&
451 (!strncmp(frame,
"FOUR" ,4)) &&
452 (!strncmp(frame,
"FIVE" ,4)) &&
453 (!strncmp(frame,
"3MOM" ,4)) &&
454 (!strncmp(frame,
"4MOM" ,4)) &&
455 (!strncmp(frame,
"5MOM" ,4)) &&
456 (!strncmp(frame,
"NONE" ,4)) ) {
457 printf(
"WARNING! In TPythia6:Initialize():\n");
458 printf(
" specified frame=%s is neither of CMS,FIXT,USER,FOUR,FIVE,NONE,3MOM,4MOM,5MOM\n",frame);
459 printf(
" resetting to \"CMS\" .");
463 if ( (!strncmp(beam,
"e" ,1)) &&
464 (!strncmp(beam,
"nu_e" ,4)) &&
465 (!strncmp(beam,
"mu" ,2)) &&
466 (!strncmp(beam,
"nu_mu" ,5)) &&
467 (!strncmp(beam,
"tau" ,3)) &&
468 (!strncmp(beam,
"nu_tau" ,6)) &&
469 (!strncmp(beam,
"gamma" ,5)) &&
470 (!strncmp(beam,
"pi" ,2)) &&
471 (!strncmp(beam,
"n" ,1)) &&
472 (!strncmp(beam,
"p" ,1)) &&
473 (!strncmp(beam,
"Lambda" ,6)) &&
474 (!strncmp(beam,
"Sigma" ,5)) &&
475 (!strncmp(beam,
"Xi" ,2)) &&
476 (!strncmp(beam,
"Omega" ,5)) &&
477 (!strncmp(beam,
"pomeron" ,7)) &&
478 (!strncmp(beam,
"reggeon" ,7)) ) {
479 printf(
"WARNING! In TPythia6:Initialize():\n");
480 printf(
" specified beam=%s is unrecognized .\n",beam);
481 printf(
" resetting to \"p+\" .");
485 if ( (!strncmp(target,
"e" ,1)) &&
486 (!strncmp(target,
"nu_e" ,4)) &&
487 (!strncmp(target,
"mu" ,2)) &&
488 (!strncmp(target,
"nu_mu" ,5)) &&
489 (!strncmp(target,
"tau" ,3)) &&
490 (!strncmp(target,
"nu_tau" ,6)) &&
491 (!strncmp(target,
"gamma" ,5)) &&
492 (!strncmp(target,
"pi" ,2)) &&
493 (!strncmp(target,
"n" ,1)) &&
494 (!strncmp(target,
"p" ,1)) &&
495 (!strncmp(target,
"Lambda" ,6)) &&
496 (!strncmp(target,
"Sigma" ,5)) &&
497 (!strncmp(target,
"Xi" ,2)) &&
498 (!strncmp(target,
"Omega" ,5)) &&
499 (!strncmp(target,
"pomeron" ,7)) &&
500 (!strncmp(target,
"reggeon" ,7)) ){
501 printf(
"WARNING! In TPythia6:Initialize():\n");
502 printf(
" specified target=%s is unrecognized.\n",target);
503 printf(
" resetting to \"p+\" .");
507 Pyinit(cframe, cbeam ,ctarget, win);
510 snprintf(atitle,
sizeof(atitle),
" %s-%s at %g GeV", cbeam, ctarget, win);
536 Long_t s3 = strlen(target);
538 pyinit(frame,beam,target,&lwin,
s1,s2,s3);
540 pyinit(frame,
s1, beam , s2, target, s3, &lwin);
573 Long_t lparam = strlen(param);
664 py1ent(ip, kf, pe, theta, phi);
static RooMathCoreReg dummy
#define tpythia6_close_fortran_file
#define pythia6_common_address
#define tpythia6_open_fortran_file
An array of clone (identical) objects.
virtual void Clear(Option_t *option="")
Clear the clones array.
The interface to various event generators.
TObjArray * fParticles
display neutrons if true
This class serves as a data storage for description of one particle.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual void Clear(Option_t *option="")
Remove all objects from the array.
virtual void Delete(Option_t *option="")
Remove all objects from the array AND delete all heap based objects.
friend class TClonesArray
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
Description of the dynamic properties of a particle.
Utility class to manage the TPythia6 instance.
~TPythia6Cleaner()
delete the TPythia6 insntance
TPythia is an interface class to F77 version of Pythia 6.2
void Pyname(int kf, char *name)
Int_t ImportParticles(TClonesArray *particles, Option_t *option="")
Default primary creation method.
static TPythia6 * Instance()
model of automatic memory cleanup suggested by Jim Kowalkovski: destructor for local static variable ...
void SetupTest()
Exemplary setup of Pythia parameters: Switches on processes 102,123,124 (Higgs generation) and switch...
virtual ~TPythia6()
Destroys the object, deletes and disposes all TMCParticles currently on list.
void Pyrset(int lun, int move)
void CloseFortranFile(int lun)
interface with fortran i/o
void Initialize(const char *frame, const char *beam, const char *target, float win)
Calls PyInit with the same parameters after performing some checking, sets correct title.
static TPythia6 * fgInstance
void OpenFortranFile(int lun, char *name)
interface with fortran i/o
void SetCKIN(int i, double c)
void Py1ent(Int_t line, Int_t kf, Double_t pe, Double_t theta, Double_t phi)
Add one entry to the event record, i.e.
void SetPMAS(int ip, int i, double m)
void GenerateEvent()
generate event and copy the information from /HEPEVT/ to fPrimaries
void Pyinit(char *frame, char *beam, char *target, double wint)
void Pyupda(int mupda, int lun)
void Pygive(const char *param)
void SetMSUB(int i, int m)
void SetMSTP(int i, int m)
TPythia6()
TPythia6 constructor: creates a TClonesArray in which it will store all particles.
void Pyrget(int lun, int move)
Pythia6 common block Pybins.
Pythia6 common block Pydat1.
Pythia6 common block Pydat2.
Pythia6 common block Pydat3.
Pythia6 common block Pydat4.
Pythia6 common block Pydatr.
Pythia6 common block Pyint1.
Pythia6 common block Pyint2.
Pythia6 common block Pyint3.
Pythia6 common block Pyint4.
Pythia6 common block Pyint5.
Pythia6 common block Pyint6.
Pythia6 common block Pyint7.
Pythia6 common block Pyint8.
Pythia6 common block Pyint9.
Pythia6 common block Pyints.
Pythia6 common block Pyjets.
Pythia6 common block Pymssm.
Pythia6 common block Pypars.
Pythia6 common block Pyssmt.
Pythia6 common block Pysubs.