Using detector quality flag (taken from ALICE logbook) to decide whether to rpodcue...
[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   static THerwig6 *Instance();
90
91   // acces to hep common block
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) const;       
112   double      GetVQCUT         () const;    
113   void        SetVQCUT    (double v) const;       
114   double      GetVGCUT         () const;    
115   void        SetVGCUT    (double v) const;       
116   double      GetVPCUT         () const;    
117   void        SetVPCUT    (double v) const;
118   double      GetCLMAX         () const;    
119   void        SetCLMAX    (double c) const;       
120   double      GetCLPOW         () const;    
121   void        SetCLPOW    (double c) const;       
122   double      GetPSPLT    (int i) const;    
123   void        SetPSPLT    (int i, double p) const;
124   double      GetQDIQK         () const;
125   void        SetQDIQK    (double q) const;
126   double      GetPDIQK         () const;
127   void        SetPDIQK    (double p) const;   
128   double      GetQSPAC         () const;
129   void        SetQSPAC    (double q) const;   
130   double      GetPTRMS         () const;
131   void        SetPTRMS    (double p) const;   
132   double      GetENSOF         () const;
133   void        SetENSOF    (double e) const;   
134   int         GetIPRINT        () const;
135   void        SetIPRINT   (int i) const;      
136   int         GetMODPDF   (int i) const;
137   void        SetMODPDF   (int i, int j) const;
138   int         GetNSTRU         () const; 
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;           
143   double      GetAVWGT         () const;
144   int         GetMAXPR         () const;
145   void        SetMAXPR    (int i) const;      
146   int         GetMAXER         () const;
147   void        SetMAXER    (int i) const;      
148   int         GetNRN      (int i) const;
149   void        SetNRN    (int i, int j) const; 
150   double      GetEVWGT         () const;
151
152   int         GetIDHW     (int i) const;
153
154   int         GetIERROR        () const;
155
156   // /HWHARD/
157   double      GetPTMIN         () const;
158   void        SetPTMIN    (double d) const;
159   double      GetPTMAX         () const;
160   void        SetPTMAX    (double d) const;
161   double      GetPTPOW         () const;
162   void        SetPTPOW    (double d) const;
163   double      GetYJMIN         () const;
164   void        SetYJMIN    (double d) const;
165   double      GetYJMAX         () const;
166   void        SetYJMAX    (double d) const;
167   double      GetQ2MIN         () const;
168   void        SetQ2MIN    (double d) const;
169   double      GetQ2MAX         () const;
170   void        SetQ2MAX    (double d) const;
171   double      GetYBMIN         () const;
172   void        SetYBMIN    (double d) const;
173   double      GetYBMAX         () const;
174   void        SetYBMAX    (double d) const;
175   double      GetZJMAX        ()  const;
176   void        SetZJMAX    (double d) const;
177   int         GetIHPRO        () const;
178   
179   // /HWPROP/
180   double      GetRMASS      (int i) const;
181   void        SetRMASS    (int i, double r) const;
182
183
184   void        GetRNAME (int i, char a[9]) const;
185
186   // Herwig6 routines
187   // the user would call
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);
197   void             InitializeJimmy(const char *beam, const char *target, double pbeam1, double pbeam2, int iproc);
198   void             PrepareRun();
199   void             PrepareRunJimmy();
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="");
204   TObjArray       *Particles() const { return fParticles; }
205   void             Hwigin();
206   void             Hwuinc();
207   void             Hwusta(const char * name);
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();
220   void             Hwiodk(int iopt);
221   void             SetupTest();
222   void             PrintEvt();
223  // Jimmy subroutines:
224   void             Jminit();
225   void             Jimmin();
226   void             Jmefin();
227 protected:
228   static   THerwig6 *fgInstance; // Singlet instance
229   ClassDef(THerwig6,0)  //Interface to Herwig6.1 Event Generator
230 };
231
232 #endif