fix for Coverity (B.Hippolyte)
[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;
111 void SetQCDLAM (double q);
112 double GetVQCUT () const;
113 void SetVQCUT (double v);
114 double GetVGCUT () const;
115 void SetVGCUT (double v);
116 double GetVPCUT () const;
117 void SetVPCUT (double v);
118 double GetCLMAX () const;
119 void SetCLMAX (double c);
120 double GetCLPOW () const;
121 void SetCLPOW (double c);
122 double GetPSPLT (int i) const;
123 void SetPSPLT (int i, double p);
124 double GetQDIQK () const;
125 void SetQDIQK (double q);
126 double GetPDIQK () const;
127 void SetPDIQK (double p);
128 double GetQSPAC () const;
129 void SetQSPAC (double q);
130 double GetPTRMS () const;
131 void SetPTRMS (double p);
132 double GetENSOF () const;
133 void SetENSOF (double e);
134 int GetIPRINT () const;
135 void SetIPRINT (int i);
136 int GetMODPDF (int i) const;
137 void SetMODPDF (int i, int j);
138 int GetNSTRU () const;
139 void SetNSTRU (int i);
140 char* GetAUTPDF (int i);
141 void SetAUTPDF(int i,const char* s);
142 char* GetBDECAY ();
143 double GetAVWGT () const;
144 int GetMAXPR () const;
145 void SetMAXPR (int i);
146 int GetMAXER () const;
147 void SetMAXER (int i);
148 int GetNRN (int i) const;
149 void SetNRN (int i, int j);
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;
158 void SetPTMIN (double d);
159 double GetPTMAX () const;
160 void SetPTMAX (double d);
161 double GetPTPOW () const;
162 void SetPTPOW (double d);
163 double GetYJMIN () const;
164 void SetYJMIN (double d);
165 double GetYJMAX () const;
166 void SetYJMAX (double d);
167 double GetQ2MIN () const;
168 void SetQ2MIN (double d);
169 double GetQ2MAX () const;
170 void SetQ2MAX (double d);
171 double GetYBMIN () const;
172 void SetYBMIN (double d);
173 double GetYBMAX () const;
174 void SetYBMAX (double d);
175 double GetZJMAX () const;
176 void SetZJMAX (double d);
aa9da500 177 int GetIHPRO () const;
178
2d8d4543 179 // /HWPROP/
455f128d 180 double GetRMASS (int i) const;
181 void SetRMASS (int i, double r);
2d8d4543 182
2d8d4543 183
455f128d 184 void GetRNAME (int i, char a[9]);
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:
616d81ca 228 static THerwig6 *fgInstance;
2d8d4543 229 ClassDef(THerwig6,0) //Interface to Herwig6.1 Event Generator
230};
231
232#endif