]> git.uio.no Git - u/mrichter/AliRoot.git/blob - THerwig/THerwig6.h
Different access to common blocks. Works now also on 64 bit.
[u/mrichter/AliRoot.git] / THerwig / THerwig6.h
1 #ifndef THERWIG6_H
2 #define THERWIG6_H
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"
60
61 typedef enum
62 {
63    kHwCharm         =  1704,
64    kHwBeauty        =  1705,
65    kHwCharmMCATNLO  = -1704,
66    kHwBeautyMCATNLO = -1705,
67    kHwJetsMCATNLO   = -1396
68 } Process_t;
69
70 class TObjArray;
71
72
73
74
75 /* THerwig6 class declaration */
76 class THerwig6 : public TGenerator {
77 //----------------------------------------------------------------------------
78 //  functions:
79 //----------------------------------------------------------------------------
80 public:
81                                 // ****** constructors and destructor
82   THerwig6();
83   THerwig6(const THerwig6 & source);
84   THerwig6 & operator=(const THerwig6 & /*source*/) {
85     Fatal("THerwig6","Assignment operator not implemented yet");
86     return *this;
87   }
88   virtual ~THerwig6();
89
90   // acces to hep common block
91   int         GetNEVHEP        () const;
92   int         GetNhep          () const;
93   int         GetISTHEP    (int i)const;
94   int         GetIDHEP     (int i)const;
95   int         GetJMOHEP (int i, int j) const;
96   int         GetJDAHEP (int i, int j) const;
97   double      GetPHEP   (int i, int j) const;
98   double      GetVHEP   (int i, int j) const;
99   int         GetIPART1        () const;
100   int         GetIPART2        () const;
101   char*       GetPART1         () const;
102   char*       GetPART2         () const;
103   double      GetEBEAM1        () const;
104   double      GetEBEAM2        () const;
105   double      GetPBEAM1        () const;
106   double      GetPBEAM2        () const;
107   int         GetIPROC         () const;
108   int         GetMAXEV         () const;
109   double      GetQCDLAM        () const;    
110   void        SetQCDLAM   (double q);       
111   double      GetVQCUT         () const;    
112   void        SetVQCUT    (double v);       
113   double      GetVGCUT         () const;    
114   void        SetVGCUT    (double v);       
115   double      GetVPCUT         () const;    
116   void        SetVPCUT    (double v);       
117   double      GetCLMAX         () const;    
118   void        SetCLMAX    (double c);       
119   double      GetCLPOW         () const;    
120   void        SetCLPOW    (double c);       
121   double      GetPSPLT    (int i) const;    
122   void        SetPSPLT    (int i, double p);
123   double      GetQDIQK         () const;
124   void        SetQDIQK    (double q);
125   double      GetPDIQK         () const;
126   void        SetPDIQK    (double p);   
127   double      GetQSPAC         () const;
128   void        SetQSPAC    (double q);   
129   double      GetPTRMS         () const;
130   void        SetPTRMS    (double p);   
131   double      GetENSOF         () const;
132   void        SetENSOF    (double e);   
133   int         GetIPRINT        () const;
134   void        SetIPRINT   (int i);      
135   int         GetMODPDF   (int i) const;
136   void        SetMODPDF   (int i, int j);
137   int         GetNSTRU         () const; 
138   void        SetNSTRU    (int i);       
139   char*       GetAUTPDF     (int i);         
140   void        SetAUTPDF(int i,const char* s);
141   char*       GetBDECAY        ();           
142   double      GetAVWGT         () const;
143   int         GetMAXPR         () const;
144   void        SetMAXPR    (int i);      
145   int         GetMAXER         () const;
146   void        SetMAXER    (int i);      
147   int         GetNRN      (int i) const;
148   void        SetNRN    (int i, int j); 
149   double      GetEVWGT         () const;
150
151   int         GetIDHW     (int i) const;
152
153   int         GetIERROR        () const;
154
155   // /HWHARD/
156   double      GetPTMIN         () const;
157   void        SetPTMIN    (double d);
158   double      GetPTMAX         () const;
159   void        SetPTMAX    (double d);
160   double      GetPTPOW         () const;
161   void        SetPTPOW    (double d);
162   double      GetYJMIN         () const;
163   void        SetYJMIN    (double d);
164   double      GetYJMAX         () const;
165   void        SetYJMAX    (double d);
166   double      GetQ2MIN         () const;
167   void        SetQ2MIN    (double d);
168   double      GetQ2MAX         () const;
169   void        SetQ2MAX    (double d);
170   double      GetYBMIN         () const;
171   void        SetYBMIN    (double d);
172   double      GetYBMAX         () const;
173   void        SetYBMAX    (double d);
174   double      GetZJMAX        ()  const;
175   void        SetZJMAX    (double d);
176
177   // /HWPROP/
178   double      GetRMASS      (int i) const;
179   void        SetRMASS    (int i, double r);
180
181
182   void        GetRNAME (int i, char a[9]);
183
184   // Herwig6 routines
185   // the user would call
186   //   Initialize
187   //   change by himself the parameters s/he wants
188   //   Hwusta to make stable the particles s/he wants
189   //   PrepareRun
190   //   GenerateEvent as many times as wished
191   // An example is given in SetupTest
192
193   void             GenerateEvent();
194   void             Initialize(const char *beam, const char *target, double pbeam1, double pbeam2, int iproc);
195   void             InitializeJimmy(const char *beam, const char *target, double pbeam1, double pbeam2, int iproc);
196   void             PrepareRun();
197   void             PrepareRunJimmy();
198   void             OpenFortranFile(int lun, char* name);
199   void             CloseFortranFile(int lun);
200   Int_t            ImportParticles(TClonesArray *particles, Option_t *option="");
201   TObjArray       *ImportParticles(Option_t *option="");
202   TObjArray       *Particles() const { return fParticles; }
203   void             Hwigin();
204   void             Hwuinc();
205   void             Hwusta(const char * name);
206   void             Hweini();
207   void             Hwuine();
208   void             Hwepro();
209   void             Hwbgen();
210   void             Hwdhob();
211   void             Hwcfor();
212   void             Hwcdec();
213   void             Hwdhad();
214   void             Hwdhvy();
215   void             Hwmevt();
216   void             Hwufne();
217   void             Hwefin();
218   void             Hwiodk(int iopt);
219   void             SetupTest();
220   void             PrintEvt();
221  // Jimmy subroutines:
222   void             Jminit();
223   void             Jimmin();
224   void             Jmefin();
225 protected:
226   ClassDef(THerwig6,0)  //Interface to Herwig6.1 Event Generator
227 };
228
229 #endif