Introducing the interaction time into the aliroot generators. In case of gaussian...
[u/mrichter/AliRoot.git] / THerwig / THerwig6.h
CommitLineData
884ccf6a 1#ifndef THERWIG6_H
2#define THERWIG6_H
2d8d4543 3
4// declaration of c++ Class THerwig6 to be used in ROOT
5// this is a c++ interface to the F77 Herwig6 program
6// author: j. g. contreras jgcn@moni.mda.cinvestav.mx
7// date: december 22, 2000
8
9/*
10
11 Class THerwig6 is an interface to the Herwig program
12
13C-----------------------------------------------------------------------
14C H E R W I G
15C
16C a Monte Carlo event generator for simulating
17C +---------------------------------------------------+
18C | Hadron Emission Reactions With Interfering Gluons |
19C +---------------------------------------------------+
20C I.G. Knowles(*), G. Marchesini(+), M.H. Seymour($) and B.R. Webber(#)
21C-----------------------------------------------------------------------
22C with Minimal Supersymmetric Standard Model Matrix Elements by
23C S. Moretti($) and K. Odagiri($)
24C-----------------------------------------------------------------------
25C R parity violating Supersymmetric Decays and Matrix Elements by
26C P. Richardson(&)
27C-----------------------------------------------------------------------
28C matrix element corrections to top decay and Drell-Yan type processes
29C by G. Corcella(+)
30C-----------------------------------------------------------------------
31C Deep Inelastic Scattering and Heavy Flavour Electroproduction by
32C G. Abbiendi(@) and L. Stanco(%)
33C-----------------------------------------------------------------------
34C and Jet Photoproduction in Lepton-Hadron Collisions by J. Chyla(~)
35C-----------------------------------------------------------------------
36C(*) Department of Physics & Astronomy, University of Edinburgh
37C(+) Dipartimento di Fisica, Universita di Milano
38C($) Rutherford Appleton Laboratory
39C(#) Cavendish Laboratory, Cambridge
40C(&) Department of Physics, University of Oxford
41C(@) Dipartimento di Fisica, Universita di Bologna
42C(%) Dipartimento di Fisica, Universita di Padova
43C(~) Institute of Physics, Prague
44C-----------------------------------------------------------------------
45C Version 6.100 - 16th December 1999
46C-----------------------------------------------------------------------
47C Main reference:
48C G.Marchesini, B.R.Webber, G.Abbiendi, I.G.Knowles, M.H.Seymour,
49C and L.Stanco, Computer Physics Communications 67 (1992) 465.
50C-----------------------------------------------------------------------
51C Please send e-mail about this program to one of the authors at the
52C following Internet addresses:
53C I.Knowles@ed.ac.uk Giuseppe.Marchesini@mi.infn.it
54C M.Seymour@rl.ac.uk webber@hep.phy.cam.ac.uk
55C-----------------------------------------------------------------------
56*/
57
58/* declarations from ROOT */
59#include "TGenerator.h"
e2054d85 60
61typedef enum
62{
7677b281 63 kHwCharm = 1704,
e2054d85 64 kHwBeauty = 1705,
65 kHwCharmMCATNLO = -1704,
7677b281 66 kHwBeautyMCATNLO = -1705,
67 kHwJetsMCATNLO = -1396
e2054d85 68} Process_t;
69
884ccf6a 70class TObjArray;
2d8d4543 71
2d8d4543 72
73
74
75/* THerwig6 class declaration */
76class THerwig6 : public TGenerator {
2d8d4543 77//----------------------------------------------------------------------------
78// functions:
79//----------------------------------------------------------------------------
80public:
81 // ****** constructors and destructor
82 THerwig6();
2d654757 83 THerwig6(const THerwig6 & source);
884ccf6a 84 THerwig6 & operator=(const THerwig6 & /*source*/) {
85 Fatal("THerwig6","Assignment operator not implemented yet");
86 return *this;
87 }
2d8d4543 88 virtual ~THerwig6();
616d81ca 89 static THerwig6 *Instance();
2d8d4543 90
91 // acces to hep common block
455f128d 92 int GetNEVHEP () const;
93 int GetNhep () const;
94 int GetISTHEP (int i)const;
95 int GetIDHEP (int i)const;
96 int GetJMOHEP (int i, int j) const;
97 int GetJDAHEP (int i, int j) const;
98 double GetPHEP (int i, int j) const;
99 double GetVHEP (int i, int j) const;
100 int GetIPART1 () const;
101 int GetIPART2 () const;
102 char* GetPART1 () const;
103 char* GetPART2 () const;
104 double GetEBEAM1 () const;
105 double GetEBEAM2 () const;
106 double GetPBEAM1 () const;
107 double GetPBEAM2 () const;
108 int GetIPROC () const;
109 int GetMAXEV () const;
110 double GetQCDLAM () const;
552f205f 111 void SetQCDLAM (double q) const;
455f128d 112 double GetVQCUT () const;
552f205f 113 void SetVQCUT (double v) const;
455f128d 114 double GetVGCUT () const;
552f205f 115 void SetVGCUT (double v) const;
455f128d 116 double GetVPCUT () const;
552f205f 117 void SetVPCUT (double v) const;
455f128d 118 double GetCLMAX () const;
552f205f 119 void SetCLMAX (double c) const;
455f128d 120 double GetCLPOW () const;
552f205f 121 void SetCLPOW (double c) const;
455f128d 122 double GetPSPLT (int i) const;
552f205f 123 void SetPSPLT (int i, double p) const;
455f128d 124 double GetQDIQK () const;
552f205f 125 void SetQDIQK (double q) const;
455f128d 126 double GetPDIQK () const;
552f205f 127 void SetPDIQK (double p) const;
455f128d 128 double GetQSPAC () const;
552f205f 129 void SetQSPAC (double q) const;
455f128d 130 double GetPTRMS () const;
552f205f 131 void SetPTRMS (double p) const;
455f128d 132 double GetENSOF () const;
552f205f 133 void SetENSOF (double e) const;
455f128d 134 int GetIPRINT () const;
552f205f 135 void SetIPRINT (int i) const;
455f128d 136 int GetMODPDF (int i) const;
552f205f 137 void SetMODPDF (int i, int j) const;
455f128d 138 int GetNSTRU () const;
552f205f 139 void SetNSTRU (int i) const;
140 char* GetAUTPDF (int i) const;
141 void SetAUTPDF(int i,const char* s) const;
142 char* GetBDECAY () const;
455f128d 143 double GetAVWGT () const;
144 int GetMAXPR () const;
552f205f 145 void SetMAXPR (int i) const;
455f128d 146 int GetMAXER () const;
552f205f 147 void SetMAXER (int i) const;
455f128d 148 int GetNRN (int i) const;
552f205f 149 void SetNRN (int i, int j) const;
455f128d 150 double GetEVWGT () const;
151
152 int GetIDHW (int i) const;
153
154 int GetIERROR () const;
7677b281 155
2d8d4543 156 // /HWHARD/
455f128d 157 double GetPTMIN () const;
552f205f 158 void SetPTMIN (double d) const;
455f128d 159 double GetPTMAX () const;
552f205f 160 void SetPTMAX (double d) const;
455f128d 161 double GetPTPOW () const;
552f205f 162 void SetPTPOW (double d) const;
455f128d 163 double GetYJMIN () const;
552f205f 164 void SetYJMIN (double d) const;
455f128d 165 double GetYJMAX () const;
552f205f 166 void SetYJMAX (double d) const;
455f128d 167 double GetQ2MIN () const;
552f205f 168 void SetQ2MIN (double d) const;
455f128d 169 double GetQ2MAX () const;
552f205f 170 void SetQ2MAX (double d) const;
455f128d 171 double GetYBMIN () const;
552f205f 172 void SetYBMIN (double d) const;
455f128d 173 double GetYBMAX () const;
552f205f 174 void SetYBMAX (double d) const;
455f128d 175 double GetZJMAX () const;
552f205f 176 void SetZJMAX (double d) const;
aa9da500 177 int GetIHPRO () const;
178
2d8d4543 179 // /HWPROP/
455f128d 180 double GetRMASS (int i) const;
552f205f 181 void SetRMASS (int i, double r) const;
2d8d4543 182
2d8d4543 183
552f205f 184 void GetRNAME (int i, char a[9]) const;
2d8d4543 185
7677b281 186 // Herwig6 routines
187 // the user would call
2d8d4543 188 // Initialize
189 // change by himself the parameters s/he wants
190 // Hwusta to make stable the particles s/he wants
191 // PrepareRun
192 // GenerateEvent as many times as wished
193 // An example is given in SetupTest
194
195 void GenerateEvent();
196 void Initialize(const char *beam, const char *target, double pbeam1, double pbeam2, int iproc);
7677b281 197 void InitializeJimmy(const char *beam, const char *target, double pbeam1, double pbeam2, int iproc);
2d8d4543 198 void PrepareRun();
7677b281 199 void PrepareRunJimmy();
2d8d4543 200 void OpenFortranFile(int lun, char* name);
201 void CloseFortranFile(int lun);
202 Int_t ImportParticles(TClonesArray *particles, Option_t *option="");
203 TObjArray *ImportParticles(Option_t *option="");
a6e0ebfe 204 TObjArray *Particles() const { return fParticles; }
2d8d4543 205 void Hwigin();
206 void Hwuinc();
a6e0ebfe 207 void Hwusta(const char * name);
2d8d4543 208 void Hweini();
209 void Hwuine();
210 void Hwepro();
211 void Hwbgen();
212 void Hwdhob();
213 void Hwcfor();
214 void Hwcdec();
215 void Hwdhad();
216 void Hwdhvy();
217 void Hwmevt();
218 void Hwufne();
219 void Hwefin();
e2054d85 220 void Hwiodk(int iopt);
2d8d4543 221 void SetupTest();
455f128d 222 void PrintEvt();
7677b281 223 // Jimmy subroutines:
224 void Jminit();
225 void Jimmin();
226 void Jmefin();
884ccf6a 227protected:
552f205f 228 static THerwig6 *fgInstance; // Singlet instance
2d8d4543 229 ClassDef(THerwig6,0) //Interface to Herwig6.1 Event Generator
230};
231
232#endif