77# define pydiff pydiff_
78# define pyevnt pyevnt_
79# define pyinit pyinit_
80# define pychge pychge_
81# define pycomp pycomp_
82# define pyedit pyedit_
83# define pyexec pyexec_
84# define pyhepc pyhepc_
85# define pygive pygive_
86# define pylist pylist_
87# define pymass pymass_
88# define pyname pyname_
90# define pyrget pyrget_
91# define pyrset pyrset_
92# define pystat pystat_
93# define pytest pytest_
94# define pytune pytune_
95# define pyupda pyupda_
96# define py1ent py1ent_
97# ifdef PYTHIA6_DOUBLE_UNDERSCORE
98# define tpythia6_open_fortran_file tpythia6_open_fortran_file__
99# define tpythia6_close_fortran_file tpythia6_close_fortran_file__
100# define pythia6_common_address pythia6_common_address__
101# elif PYTHIA6_SINGLE_UNDERSCORE
102# define tpythia6_open_fortran_file tpythia6_open_fortran_file_
103# define tpythia6_close_fortran_file tpythia6_close_fortran_file_
104# define pythia6_common_address pythia6_common_address
106# define pythia6_common_address pythia6_common_address
107# define tpythia6_open_fortran_file tpythia6_open_fortran_file_
108# define tpythia6_close_fortran_file tpythia6_close_fortran_file_
112# define pydiff PYDIFF
113# define pyevnt PYEVNT
114# define pyinit PYINIT
115# define pychge PYCHGE
116# define pycomp PYCOMP
117# define pyedit PYEDIT
118# define pyexec PYEXEC
119# define pygive PYGIVE
120# define pyhepc PYHEPC
121# define pylist PYLIST
122# define pymass PYMASS
123# define pyname PYNAME
125# define pyrget PYRGET
126# define pyrset PYRSET
127# define pystat PYSTAT
128# define pytest PYTEST
129# define pytune PYTUNE
130# define pyupda PYUPDA
131# define py1ent PY1ENT
132# define tpythia6_open_fortran_file TPYTHIA6_OPEN_FORTRAN_FILE
133# define tpythia6_close_fortran_file TPYTHIA6_CLOSE_FORTRAN_FILE
134# define type_of_call _stdcall
165 char *beam,
Long_t l_beam,
166 char *target,
Long_t l_target,
210 Fatal(
"TPythia6",
"There's already an instance of TPythia6");
332 for (
Int_t i = 0; i<numpart; i++) {
366 if (particles == 0)
return 0;
368 clonesParticles.
Clear();
371 if (!strcmp(option,
"") || !strcmp(option,
"Final")) {
372 for (
Int_t i = 0; i<numpart; i++) {
398 }
else if (!strcmp(option,
"All")) {
399 for (
Int_t i = 0; i<numpart; i++) {
441 strlcpy(cframe,frame,4);
443 strlcpy(cbeam,beam,10);
445 strlcpy(ctarget,target,10);
450 if ( (!strncmp(frame,
"CMS" ,3)) &&
451 (!strncmp(frame,
"FIXT" ,4)) &&
452 (!strncmp(frame,
"USER" ,4)) &&
453 (!strncmp(frame,
"FOUR" ,4)) &&
454 (!strncmp(frame,
"FIVE" ,4)) &&
455 (!strncmp(frame,
"3MOM" ,4)) &&
456 (!strncmp(frame,
"4MOM" ,4)) &&
457 (!strncmp(frame,
"5MOM" ,4)) &&
458 (!strncmp(frame,
"NONE" ,4)) ) {
459 printf(
"WARNING! In TPythia6:Initialize():\n");
460 printf(
" specified frame=%s is neither of CMS,FIXT,USER,FOUR,FIVE,NONE,3MOM,4MOM,5MOM\n",frame);
461 printf(
" resetting to \"CMS\" .");
465 if ( (!strncmp(beam,
"e" ,1)) &&
466 (!strncmp(beam,
"nu_e" ,4)) &&
467 (!strncmp(beam,
"mu" ,2)) &&
468 (!strncmp(beam,
"nu_mu" ,5)) &&
469 (!strncmp(beam,
"tau" ,3)) &&
470 (!strncmp(beam,
"nu_tau" ,6)) &&
471 (!strncmp(beam,
"gamma" ,5)) &&
472 (!strncmp(beam,
"pi" ,2)) &&
473 (!strncmp(beam,
"n" ,1)) &&
474 (!strncmp(beam,
"p" ,1)) &&
475 (!strncmp(beam,
"Lambda" ,6)) &&
476 (!strncmp(beam,
"Sigma" ,5)) &&
477 (!strncmp(beam,
"Xi" ,2)) &&
478 (!strncmp(beam,
"Omega" ,5)) &&
479 (!strncmp(beam,
"pomeron" ,7)) &&
480 (!strncmp(beam,
"reggeon" ,7)) ) {
481 printf(
"WARNING! In TPythia6:Initialize():\n");
482 printf(
" specified beam=%s is unrecognized .\n",beam);
483 printf(
" resetting to \"p+\" .");
487 if ( (!strncmp(target,
"e" ,1)) &&
488 (!strncmp(target,
"nu_e" ,4)) &&
489 (!strncmp(target,
"mu" ,2)) &&
490 (!strncmp(target,
"nu_mu" ,5)) &&
491 (!strncmp(target,
"tau" ,3)) &&
492 (!strncmp(target,
"nu_tau" ,6)) &&
493 (!strncmp(target,
"gamma" ,5)) &&
494 (!strncmp(target,
"pi" ,2)) &&
495 (!strncmp(target,
"n" ,1)) &&
496 (!strncmp(target,
"p" ,1)) &&
497 (!strncmp(target,
"Lambda" ,6)) &&
498 (!strncmp(target,
"Sigma" ,5)) &&
499 (!strncmp(target,
"Xi" ,2)) &&
500 (!strncmp(target,
"Omega" ,5)) &&
501 (!strncmp(target,
"pomeron" ,7)) &&
502 (!strncmp(target,
"reggeon" ,7)) ){
503 printf(
"WARNING! In TPythia6:Initialize():\n");
504 printf(
" specified target=%s is unrecognized.\n",target);
505 printf(
" resetting to \"p+\" .");
509 Pyinit(cframe, cbeam ,ctarget, win);
512 snprintf(atitle,
sizeof(atitle),
" %s-%s at %g GeV", cbeam, ctarget, win);
538 Long_t s3 = strlen(target);
540 pyinit(frame,beam,target,&lwin,
s1,s2,s3);
542 pyinit(frame,
s1, beam , s2, target, s3, &lwin);
575 Long_t lparam = strlen(param);
666 py1ent(ip, kf, pe, theta, phi);
#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.