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_
108 # define type_of_call
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,
183 TPythia6::TPythia6Cleaner::TPythia6Cleaner() {
190 if (TPythia6::fgInstance) {
192 TPythia6::fgInstance = 0;
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\" .");
460 snprintf(cframe,4,
"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+\" .");
482 snprintf(cbeam,8,
"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+\" .");
504 snprintf(ctarget,8,
"p+");
507 Pyinit(cframe, cbeam ,ctarget, win);
510 snprintf(atitle,32,
" %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);
Pythia6 common block Pyints.
void Pygive(const char *param)
void SetCKIN(int i, double c)
#define pythia6_common_address
Pythia6 common block Pyint9.
Pythia6 common block Pyint6.
void Pyrset(int lun, int move)
void SetMSUB(int i, int m)
Pythia6 common block Pyint3.
virtual void Clear(Option_t *option="")
Remove all objects from the array.
Pythia6 common block Pyint8.
virtual void Delete(Option_t *option="")
Remove all objects from the array AND delete all heap based objects.
The interface to various event generators.
Pythia6 common block Pyint5.
Description of the dynamic properties of a particle.
Pythia6 common block Pypars.
Pythia6 common block Pydat3.
void SetupTest()
Exemplary setup of Pythia parameters: Switches on processes 102,123,124 (Higgs generation) and switch...
void GenerateEvent()
generate event and copy the information from /HEPEVT/ to fPrimaries
#define tpythia6_close_fortran_file
TPythia is an interface class to F77 version of Pythia 6.2.
This class serves as a data storage for description of one particle.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
friend class TClonesArray
void Pyinit(char *frame, char *beam, char *target, double wint)
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...
void SetMSTP(int i, int m)
void CloseFortranFile(int lun)
interface with fortran i/o
static TPythia6 * fgInstance
void SetPMAS(int ip, int i, double m)
virtual void Clear(Option_t *option="")
Clear the clones array.
Pythia6 common block Pymssm.
Utility class to manage the TPythia6 instance.
Pythia6 common block Pybins.
void OpenFortranFile(int lun, char *name)
interface with fortran i/o
Pythia6 common block Pyssmt.
virtual ~TPythia6()
Destroys the object, deletes and disposes all TMCParticles currently on list.
Pythia6 common block Pyjets.
~TPythia6Cleaner()
delete the TPythia6 insntance
TObjArray * fParticles
display neutrons if true
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
static RooMathCoreReg dummy
Pythia6 common block Pyint2.
Pythia6 common block Pysubs.
Pythia6 common block Pydatr.
TPythia6()
TPythia6 constructor: creates a TClonesArray in which it will store all particles.
Pythia6 common block Pyint4.
An array of clone (identical) objects.
void Pyname(int kf, char *name)
Pythia6 common block Pyint1.
static TPythia6 * Instance()
model of automatic memory cleanup suggested by Jim Kowalkovski: destructor for local static variable ...
Pythia6 common block Pydat2.
Int_t ImportParticles(TClonesArray *particles, Option_t *option="")
Default primary creation method.
Pythia6 common block Pydat4.
virtual void SetTitle(const char *title="")
Change (i.e. set) the title of the TNamed.
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.
Pythia6 common block Pydat1.
#define tpythia6_open_fortran_file
void Pyrget(int lun, int move)
Pythia6 common block Pyint7.
void Pyupda(int mupda, int lun)