]>
Commit | Line | Data |
---|---|---|
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 | ||
13 | C----------------------------------------------------------------------- | |
14 | C H E R W I G | |
15 | C | |
16 | C a Monte Carlo event generator for simulating | |
17 | C +---------------------------------------------------+ | |
18 | C | Hadron Emission Reactions With Interfering Gluons | | |
19 | C +---------------------------------------------------+ | |
20 | C I.G. Knowles(*), G. Marchesini(+), M.H. Seymour($) and B.R. Webber(#) | |
21 | C----------------------------------------------------------------------- | |
22 | C with Minimal Supersymmetric Standard Model Matrix Elements by | |
23 | C S. Moretti($) and K. Odagiri($) | |
24 | C----------------------------------------------------------------------- | |
25 | C R parity violating Supersymmetric Decays and Matrix Elements by | |
26 | C P. Richardson(&) | |
27 | C----------------------------------------------------------------------- | |
28 | C matrix element corrections to top decay and Drell-Yan type processes | |
29 | C by G. Corcella(+) | |
30 | C----------------------------------------------------------------------- | |
31 | C Deep Inelastic Scattering and Heavy Flavour Electroproduction by | |
32 | C G. Abbiendi(@) and L. Stanco(%) | |
33 | C----------------------------------------------------------------------- | |
34 | C and Jet Photoproduction in Lepton-Hadron Collisions by J. Chyla(~) | |
35 | C----------------------------------------------------------------------- | |
36 | C(*) Department of Physics & Astronomy, University of Edinburgh | |
37 | C(+) Dipartimento di Fisica, Universita di Milano | |
38 | C($) Rutherford Appleton Laboratory | |
39 | C(#) Cavendish Laboratory, Cambridge | |
40 | C(&) Department of Physics, University of Oxford | |
41 | C(@) Dipartimento di Fisica, Universita di Bologna | |
42 | C(%) Dipartimento di Fisica, Universita di Padova | |
43 | C(~) Institute of Physics, Prague | |
44 | C----------------------------------------------------------------------- | |
45 | C Version 6.100 - 16th December 1999 | |
46 | C----------------------------------------------------------------------- | |
47 | C Main reference: | |
48 | C G.Marchesini, B.R.Webber, G.Abbiendi, I.G.Knowles, M.H.Seymour, | |
49 | C and L.Stanco, Computer Physics Communications 67 (1992) 465. | |
50 | C----------------------------------------------------------------------- | |
51 | C Please send e-mail about this program to one of the authors at the | |
52 | C following Internet addresses: | |
53 | C I.Knowles@ed.ac.uk Giuseppe.Marchesini@mi.infn.it | |
54 | C M.Seymour@rl.ac.uk webber@hep.phy.cam.ac.uk | |
55 | C----------------------------------------------------------------------- | |
56 | */ | |
57 | ||
58 | /* declarations from ROOT */ | |
59 | #include "TGenerator.h" | |
e2054d85 | 60 | |
61 | typedef 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 | 70 | class TObjArray; |
2d8d4543 | 71 | |
2d8d4543 | 72 | |
73 | ||
74 | ||
75 | /* THerwig6 class declaration */ | |
76 | class THerwig6 : public TGenerator { | |
2d8d4543 | 77 | //---------------------------------------------------------------------------- |
78 | // functions: | |
79 | //---------------------------------------------------------------------------- | |
80 | public: | |
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 | 227 | protected: |
552f205f | 228 | static THerwig6 *fgInstance; // Singlet instance |
2d8d4543 | 229 | ClassDef(THerwig6,0) //Interface to Herwig6.1 Event Generator |
230 | }; | |
231 | ||
232 | #endif |