ReadRaw(): TGraphs are created once per event (B.Polichtchouk)
[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{
63 kHwCharm = 1704,
64 kHwBeauty = 1705,
65 kHwCharmMCATNLO = -1704,
66 kHwBeautyMCATNLO = -1705
67} Process_t;
68
884ccf6a 69class TObjArray;
2d8d4543 70
71// Translation of Fortran commons from the Herwig6
72// f77 program into c++ structures to be used in ROOT
73// and declaration of Fortran functions as extern
74// C functions to be called from the class Herwig6
75// author: j. g. contreras jgcn@moni.mda.cinvestav.mx
76// date: december 22, 2000
77
e2054d85 78typedef struct {double dr,di;} dcpx;
79
80int const NMXHEP = 4000;
2d8d4543 81
884ccf6a 82typedef struct {
2d8d4543 83 int NEVHEP;
84 int NHEP;
85 int ISTHEP[NMXHEP];
86 int IDHEP[NMXHEP];
87 int JMOHEP[NMXHEP][2];
88 int JDAHEP[NMXHEP][2];
89 double PHEP[NMXHEP][5];
90 double VHEP[NMXHEP][4];
884ccf6a 91} Hepevt_t;
2d8d4543 92
884ccf6a 93typedef struct {
2d8d4543 94 int IPART1;
95 int IPART2;
884ccf6a 96} Hwbeam_t;
2d8d4543 97
884ccf6a 98typedef struct {
2d8d4543 99 char PART1[8];
100 char PART2[8];
884ccf6a 101} Hwbmch_t;
2d8d4543 102
884ccf6a 103typedef struct {
2d8d4543 104 double EBEAM1;
105 double EBEAM2;
106 double PBEAM1;
107 double PBEAM2;
108 int IPROC;
109 int MAXEV;
884ccf6a 110} Hwproc_t;
2d8d4543 111
884ccf6a 112typedef struct {
2d8d4543 113 double AFCH[2][16];
114 double ALPHEM;
115 double B1LIM;
116 double BETAF;
117 double BTCLM;
118 double CAFAC;
119 double CFFAC;
120 double CLMAX;
121 double CLPOW;
122 double CLSMR[2];
123 double CSPEED;
124 double ENSOF;
125 double ETAMIX;
126 double F0MIX;
127 double F1MIX;
128 double F2MIX;
129 double GAMH;
130 double GAMW;
131 double GAMZ;
132 double GAMZP;
133 double GEV2NB;
134 double H1MIX;
135 double PDIQK;
136 double PGSMX;
137 double PGSPL[4];
138 double PHIMIX;
139 double PIFAC;
140 double PRSOF;
141 double PSPLT[2];
142 double PTRMS;
143 double PXRMS;
144 double QCDL3;
145 double QCDL5;
146 double QCDLAM;
147 double QDIQK;
148 double QFCH[16];
149 double QG;
150 double QSPAC;
151 double QV;
152 double SCABI;
153 double SWEIN;
154 double TMTOP;
155 double VFCH[2][16];
156 double VCKM[3][3];
157 double VGCUT;
158 double VQCUT;
159 double VPCUT;
160 double ZBINM;
161 double EFFMIN;
162 double OMHMIX;
163 double ET2MIX;
164 double PH3MIX;
165 double GCUTME;
166 int IOPREM;
167 int IPRINT;
168 int ISPAC;
169 int LRSUD;
170 int LWSUD;
171 int MODPDF[2];
172 int NBTRY;
173 int NCOLO;
174 int NCTRY;
175 int NDTRY;
176 int NETRY;
177 int NFLAV;
178 int NGSPL;
179 int NSTRU;
180 int NSTRY;
181 int NZBIN;
182 int IOP4JT[2];
183 int NPRFMT;
184 int AZSOFT;
185 int AZSPIN;
186 int CLDIR[2];
187 int HARDME;
188 int NOSPAC;
189 int PRNDEC;
190 int PRVTX;
191 int SOFTME;
192 int ZPRIME;
193 int PRNDEF;
194 int PRNTEX;
195 int PRNWEB;
884ccf6a 196} Hwpram_t;
2d8d4543 197
884ccf6a 198typedef struct {
2d8d4543 199 char AUTPDF[2][20];
200 char BDECAY[4];
884ccf6a 201} Hwprch_t;
2d8d4543 202
203int const NMXPAR = 500;
204
884ccf6a 205typedef struct {
2d8d4543 206 int NEVPAR;
207 int NPAR;
208 int ISTPAR[NMXPAR];
209 int IDPAR[NMXPAR];
210 int JMOPAR[NMXPAR][2];
211 int JDAPAR[NMXPAR][2];
212 double PPAR[NMXPAR][5];
213 double VPAR[NMXPAR][4];
884ccf6a 214} Hwpart_t;
2d8d4543 215
884ccf6a 216typedef struct {
2d8d4543 217 double DECPAR[NMXPAR][2];
218 double PHIPAR[NMXPAR][2];
219 double RHOPAR[NMXPAR][2];
220 int TMPAR[NMXPAR];
884ccf6a 221} Hwparp_t;
2d8d4543 222
e2054d85 223int const MODMAX = 50;
2d8d4543 224
884ccf6a 225typedef struct {
2d8d4543 226 double ALPFAC;
227 double BRHIG[12];
228 double ENHANC[12];
229 double GAMMAX;
230 double RHOHEP[NMXHEP][3];
231 int IOPHIG;
232 int MODBOS[MODMAX];
884ccf6a 233} Hwbosc_t;
2d8d4543 234
884ccf6a 235typedef struct {
2d8d4543 236 int JCOPAR[NMXPAR][4];
884ccf6a 237} Hwparc_t;
2d8d4543 238
884ccf6a 239typedef struct {
2d8d4543 240 double ANOMSC[2][2];
241 double HARDST;
242 double PTINT[2][3];
243 double XFACT;
244 int INHAD;
245 int JNHAD;
246 int NSPAC[7];
247 int ISLENT;
248 int BREIT;
249 int FROST;
250 int USECMF;
884ccf6a 251} Hwbrch_t;
2d8d4543 252
884ccf6a 253typedef struct {
2d8d4543 254 double AVWGT;
255 double EVWGT;
256 double GAMWT;
257 double TLOUT;
258 double WBIGST;
259 double WGTMAX;
260 double WGTSUM;
261 double WSQSUM;
262 int IDHW[NMXHEP];
263 int IERROR;
264 int ISTAT;
265 int LWEVT;
266 int MAXER;
267 int MAXPR;
268 int NOWGT;
269 int NRN[2];
270 int NUMER;
271 int NUMERU;
272 int NWGTS;
273 int GENSOF;
e2054d85 274 int EV1PR;
275 int EV2PR;
884ccf6a 276} Hwevnt_t;
2d8d4543 277
884ccf6a 278typedef struct {
2d8d4543 279 double ASFIXD;
280 double CLQ[6][7];
281 double COSS;
282 double COSTH;
283 double CTMAX;
284 double DISF[2][13];
285 double EMLST;
286 double EMMAX;
287 double EMMIN;
288 double EMPOW;
289 double EMSCA;
290 double EPOLN[3];
291 double GCOEF[7];
292 double GPOLN;
293 double OMEGA0;
294 double PHOMAS;
295 double PPOLN[3];
296 double PTMAX;
297 double PTMIN;
298 double PTPOW;
299 double Q2MAX;
300 double Q2MIN;
301 double Q2POW;
302 double Q2WWMN;
303 double Q2WWMX;
304 double QLIM;
305 double SINS;
306 double THMAX;
307 double Y4JT;
308 double TMNISR;
309 double TQWT;
310 double XX[2];
311 double XLMIN;
312 double XXMIN;
313 double YBMAX;
314 double YBMIN;
315 double YJMAX;
316 double YJMIN;
317 double YWWMAX;
318 double YWWMIN;
319 double WHMIN;
320 double ZJMAX;
321 double ZMXISR;
322 int IAPHIG;
323 int IBRN[2];
324 int IBSH;
325 int ICO[10];
326 int IDCMF;
327 int IDN[10];
328 int IFLMAX;
329 int IFLMIN;
330 int IHPRO;
331 int IPRO;
332 int MAPQ[10];
333 int MAXFL;
334 int BGSHAT;
335 int COLISR;
336 int FSTEVT;
337 int FSTWGT;
338 int GENEV;
339 int HVFCEN;
340 int TPOL;
341 int DURHAM;
884ccf6a 342} Hwhard_t;
2d8d4543 343
344int const NMXRES = 500;
345
884ccf6a 346typedef struct {
2d8d4543 347 double RLTIM[NMXRES+1];
348 double RMASS[NMXRES+1];
349 double RSPIN[NMXRES+1];
350 int ICHRG[NMXRES+1];
351 int IDPDG[NMXRES+1];
352 int IFLAV[NMXRES+1];
353 int NRES;
354 int VTOCDK[NMXRES+1];
355 int VTORDK[NMXRES+1];
356 int QORQQB[NMXRES+1];
357 int QBORQQ[NMXRES+1];
884ccf6a 358} Hwprop_t;
2d8d4543 359
884ccf6a 360typedef struct {
2d8d4543 361 char RNAME[NMXRES+1][8];
362 char TXNAME[NMXRES+1][2][37];
884ccf6a 363} Hwunam_t;
2d8d4543 364
365int const NMXDKS = 4000;
366int const NMXMOD = 200;
367
884ccf6a 368typedef struct {
2d8d4543 369 double BRFRAC[NMXDKS];
370 double CMMOM[NMXDKS];
371 double DKLTM[NMXRES];
372 int IDK[NMXDKS];
373 int IDKPRD[NMXDKS][5];
374 int LNEXT[NMXDKS];
375 int LSTRT[NMXRES];
376 int NDKYS;
377 int NME[NMXDKS];
378 int NMODES[NMXRES];
379 int NPRODS[NMXDKS];
380 int DKPSET;
381 int RSTAB[NMXRES+1];
884ccf6a 382} Hwupdt_t;
2d8d4543 383
884ccf6a 384typedef struct {
2d8d4543 385 double REPWT[5][4][4];
386 double SNGWT;
387 double DECWT;
388 double QWT[3];
389 double PWT[12];
390 double SWTEF[NMXRES];
884ccf6a 391} Hwuwts_t;
2d8d4543 392
393int const NMXCDK = 4000;
394
884ccf6a 395typedef struct {
2d8d4543 396 double CLDKWT[NMXCDK];
397 double CTHRPW[12][12];
398 double PRECO;
399 double RESN[12][12];
400 double RMIN[12][12];
401 int LOCN[12][12];
402 int NCLDK[NMXCDK];
403 int NRECO;
404 int CLRECO;
884ccf6a 405} Hwuclu_t;
2d8d4543 406
884ccf6a 407typedef struct {
2d8d4543 408 double EXAG;
409 double GEV2MM;
410 double HBAR;
411 double PLTCUT;
412 double VMIN2;
e2054d85 413 double VTXPIP[5];
2d8d4543 414 double XMIX[2];
415 double XMRCT[2];
416 double YMIX[2];
417 double YMRCT[2];
418 int IOPDKL;
419 int MAXDKL;
420 int MIXING;
421 int PIPSMR;
884ccf6a 422} Hwdist_t;
2d8d4543 423
424int const NMXQDK=20;
425
884ccf6a 426typedef struct {
2d8d4543 427 double VTXQDK[NMXQDK][4];
428 int IMQDK[NMXQDK];
429 int LOCQ[NMXQDK];
430 int NQDK;
884ccf6a 431} Hwqdks_t;
2d8d4543 432
433int const NMXSUD = 1024;
434
884ccf6a 435typedef struct {
2d8d4543 436 double ACCUR;
437 double QEV[6][NMXSUD];
438 double SUD[6][NMXSUD];
439 int INTER;
440 int NQEV;
441 int NSUD;
442 int SUDORD;
884ccf6a 443} Hwusud_t;
2d8d4543 444
884ccf6a 445typedef struct {
2d8d4543 446 double TANB;
447 double ALPHAH;
448 double COSBPA;
449 double SINBPA;
450 double COSBMA;
451 double SINBMA;
452 double COSA;
453 double SINA;
454 double COSB;
455 double SINB;
456 double COTB;
457 double ZMIXSS[4][4];
458 double ZMXNSS[4][4];
459 double ZSGNSS[4];
460 double LFCH[16];
461 double RFCH[16];
462 double SLFCH[4][16];
463 double SRFCH[4][16];
464 double WMXUSS[2][2];
465 double WMXVSS[2][2];
466 double WSGNSS[2];
467 double QMIXSS[2][2][6];
468 double LMIXSS[2][2][6];
469 double THETAT;
470 double THETAB;
471 double THETAL;
472 double ATSS;
473 double ABSS;
474 double ALSS;
475 double MUSS;
476 double FACTSS;
477 double GHWWSS[3];
478 double GHZZSS[3];
479 double GHDDSS[4];
480 double GHUUSS[4];
481 double GHWHSS[3];
482 double GHSQSS[2][2][6][4];
483 double XLMNSS;
484 double RMMNSS;
e2054d85 485 double DMSSM;
2d8d4543 486 double SENHNC[24];
487 double SSPARITY;
488 int SUSYIN;
884ccf6a 489} Hwsusy_t;
2d8d4543 490
884ccf6a 491typedef struct {
2d8d4543 492 double LAMDA1[3][3][3];
493 double LAMDA2[3][3][3];
494 double LAMDA3[3][3][3];
495 int HRDCOL[5][2];
496 int RPARTY;
497 int COLUPD;
884ccf6a 498} Hwrpar_t;
2d8d4543 499
884ccf6a 500typedef struct {
2d8d4543 501 double PMBN1;
502 double PMBN2;
503 double PMBN3;
504 double PMBK1;
505 double PMBK2;
506 double PMBM1;
507 double PMBM2;
508 double PMBP1;
509 double PMBP2;
510 double PMBP3;
884ccf6a 511} Hwminb_t;
2d8d4543 512
513int const NMXCL = 500;
514
884ccf6a 515typedef struct {
2d8d4543 516 double PPCL[NMXCL][5];
517 int IDCL[NMXCL];
518 int NCL;
884ccf6a 519} Hwclus_t;
2d8d4543 520
e2054d85 521// herwig 6.507
522
523typedef struct {
524 double GRVLAM;
525 double EMGRV;
526 double GAMGRV;
527} Hwgrav_t;
528
529typedef struct {
530 double VIPWID[3];
531 double DXRCYL;
532 double DXZMAX;
533 double DXRSPH;
534 int WZRFR;
535 int FIX4JT;
536 int IMSSM;
537 int IHIGGS;
538 int PARITY;
539 int LRSUSY;
540} Hw6202_t;
541
542typedef struct {
543 double ABWGT;
544 double ABWSUM;
545 double AVABW;
546 int NNEGWT;
547 int NNEGEV;
548 int NEGWTS;
549} Hw6203_t;
550
551int const IMAXCH = 20;
552
553typedef struct {
554 double MJJMIN;
555 double CHNPRB[IMAXCH];
556 int IOPSTP;
557 int IOPSH;
558 int OPTM;
559 int CHON[IMAXCH];
560} Hw6300_t;
561
562
563int const NXMRS = 49;
564int const NQMRS = 37;
565int const NPMRS = 8;
566
567typedef struct {
568 double FMRS[NQMRS+1][NXMRS][NPMRS][3];
569} Hwpmrs_t;
570
571typedef struct {
572 int CIRCOP;
573 int CIRCAC;
574 int CIRCVR;
575 int CIRCRV;
576 int CIRCCH;
577} Hwcirc_t;
578
579int const NCFMAX = 3;
580int const NMODE2 = 500;
581int const NMODE3 = 500;
582int const NDIAGR = 8;
583int const NMODEB = 50;
584int const NMODE4 = 4;
585
586typedef struct {
587 double ABMODE[NMODEB][2];
588 double BBMODE[NMODEB][12][2];
589 double PBMODE[NMODEB][12];
590 double WTBMAX[NMODEB][12];
591 int IDBPRT[NMODEB];
592 int IBDRTP[NMODEB];
593 int IBMODE[NMODEB];
594 int NBMODE;
595} Hwdspb_t;
596
597typedef struct {
598 double A2MODE[NMODE2][2];
599 double P2MODE[NMODE2];
600 double WT2MAX[NMODE2];
601 int ID2PRT[NMODE2];
602 int I2DRTP[NMODE2];
603 int N2MODE;
604} Hwdsp2_t;
605
606typedef struct {
607 double A3MODE[NMODE3][NDIAGR][2];
608 double B3MODE[NMODE3][NDIAGR][2];
609 double P3MODE[NMODE3];
610 double WT3MAX[NMODE3];
611 double SPN3CF[NMODE3][NCFMAX][NCFMAX];
612 int ID3PRT[NMODE3];
613 int I3MODE[NMODE3][NDIAGR];
614 int I3DRTP[NMODE3][NDIAGR];
615 int N3MODE;
616 int NDI3BY[NMODE3];
617 int N3NCFL[NMODE3];
618 int I3DRCF[NMODE3][NDIAGR];
619} Hwdsp3_t;
620
621typedef struct {
622 double A4MODE[NMODE4][12][2];
623 double B4MODE[NMODE4][12][2];
624 double P4MODE[NMODE4][12][12];
625 double WT4MAX[NMODE4][12][12];
626 int ID4PRT[NMODE4];
627 int I4MODE[NMODE4][2];
628 int N4MODE;
629} Hwdsp4_t;
630
631typedef struct {
632 int NDECSY;
633 int NSEARCH;
634 int LRDEC;
635 int LWDEC;
636 int SYSPIN;
637 int THREEB;
638 int FOURB;
639 char TAUDEC[6];
640} Hwdspn_t;
641
642int const NMXSPN = 50;
643
644typedef struct {
645 dcpx MESPN[NMXSPN][NCFMAX][2][2][2][2];
646 dcpx RHOSPN[NMXSPN][2][2];
647 double SPNCFC[NMXSPN][NCFMAX][NCFMAX];
648 int IDSPN[NMXSPN];
649 int JMOSPN[NMXSPN];
650 int JDASPN[NMXSPN][2];
651 int NSPN;
652 int ISNHEP[NMXHEP];
653 int NSNTRY;
654 int DECSPN[NMXSPN];
655 int NCFL[NMXSPN];
656 int SPCOPT;
657} Hwspin_t;
658
659typedef struct {
660 int JAK1;
661 int JAK2;
662 int ITDKRC;
663 int IFPHOT;
664} Hwstau_t;
665
666int const MAXHRP = 100;
667
668typedef struct {
669 double LHWGT[MAXHRP];
670 double LHWGTS[MAXHRP];
671 double LHXSCT[MAXHRP];
672 double LHXERR[MAXHRP];
673 double LHXMAX[MAXHRP];
674 double LHMXSM;
675 int LHIWGT[MAXHRP];
676 int LHNEVT[MAXHRP];
677 int ITYPLH;
678 int LHSOFT;
679 int LHGLSF;
680} Hwgupr_t;
681
682typedef struct {
683 int PRESPL;
684} Hw6500_t;
685
686typedef struct {
687 int ITOPRD;
688} Hw6504_t;
689
690typedef struct {
691 double PDFX0;
692 double PDFPOW;
693} Hw6506_t;
694
695
696
2d8d4543 697
698extern "C" {
699 void hwigin_();
700 void hwuinc_();
701 void hwusta_(char * name, int);
702 void hweini_();
703 void hwuine_();
704 void hwepro_();
705 void hwbgen_();
706 void hwdhob_();
707 void hwcfor_();
708 void hwcdec_();
709 void hwdhad_();
710 void hwdhvy_();
711 void hwmevt_();
712 void hwufne_();
713 void hwefin_();
e2054d85 714 void hwiodk_(int);
2d8d4543 715}
716
717
718
719
720
721
722/* THerwig6 class declaration */
723class THerwig6 : public TGenerator {
2d8d4543 724//----------------------------------------------------------------------------
725// functions:
726//----------------------------------------------------------------------------
727public:
728 // ****** constructors and destructor
729 THerwig6();
2d654757 730 THerwig6(const THerwig6 & source);
884ccf6a 731 THerwig6 & operator=(const THerwig6 & /*source*/) {
732 Fatal("THerwig6","Assignment operator not implemented yet");
733 return *this;
734 }
2d8d4543 735 virtual ~THerwig6();
736
737 // acces to hep common block
884ccf6a 738 Hepevt_t* GetHepevt () const { return fHepevt; }
e2054d85 739 int GetNEVHEP () const { return fHepevt->NEVHEP; }
884ccf6a 740 int GetNhep () const { return fHepevt->NHEP; }
741 int GetISTHEP (int i)const { return fHepevt->ISTHEP[i-1]; }
742 int GetIDHEP (int i)const { return fHepevt->IDHEP[i-1]; }
743 int GetJMOHEP (int i, int j) const
744 { return fHepevt->JMOHEP[i-1][j-1]; }
745 int GetJDAHEP (int i, int j) const
746 { return fHepevt->JDAHEP[i-1][j-1]; }
747 double GetPHEP (int i, int j) const
748 { return fHepevt->PHEP[i-1][j-1]; }
749 double GetVHEP (int i, int j) const
750 { return fHepevt->VHEP[i-1][j-1]; }
2d8d4543 751
752 // access to Herwig6 common-blocks
753 // WARNING: Some arrays start in 1, others in 0. Look up the manual!
754
755 // /HWBEAM/
756
757 Hwbeam_t* GetHwbeam () { return fHwbeam; }
884ccf6a 758 int GetIPART1 () const { return fHwbeam->IPART1; }
759 int GetIPART2 () const { return fHwbeam->IPART2; }
2d8d4543 760
761 // /HWBMCH/
762 Hwbmch_t* GetHwbmch () { return fHwbmch; }
884ccf6a 763 char* GetPART1 () const { return fHwbmch->PART1; }
764 char* GetPART2 () const { return fHwbmch->PART2; }
2d8d4543 765
766
767 // /HWPROC/
768 Hwproc_t* GetHwproc () { return fHwproc; }
884ccf6a 769 double GetEBEAM1 () const { return fHwproc->EBEAM1; }
770 double GetEBEAM2 () const { return fHwproc->EBEAM2; }
771 double GetPBEAM1 () const { return fHwproc->PBEAM1; }
772 double GetPBEAM2 () const { return fHwproc->PBEAM2; }
773 int GetIPROC () const { return fHwproc->IPROC; }
774 int GetMAXEV () const { return fHwproc->MAXEV; }
2d8d4543 775
776 // /HWPRAM/
777 Hwpram_t* GetHwpram () { return fHwpram; }
884ccf6a 778 double GetQCDLAM () const { return fHwpram->QCDLAM; }
2d8d4543 779 void SetQCDLAM (double q) { fHwpram->QCDLAM = q; }
884ccf6a 780 double GetVQCUT () const { return fHwpram->VQCUT; }
2d8d4543 781 void SetVQCUT (double v) { fHwpram->VQCUT = v; }
884ccf6a 782 double GetVGCUT () const { return fHwpram->VGCUT; }
2d8d4543 783 void SetVGCUT (double v) { fHwpram->VGCUT = v; }
884ccf6a 784 double GetVPCUT () const { return fHwpram->VPCUT; }
2d8d4543 785 void SetVPCUT (double v) { fHwpram->VPCUT = v; }
884ccf6a 786 double GetCLMAX () const { return fHwpram->CLMAX; }
2d8d4543 787 void SetCLMAX (double c) { fHwpram->CLMAX = c; }
884ccf6a 788 double GetCLPOW () const { return fHwpram->CLPOW; }
2d8d4543 789 void SetCLPOW (double c) { fHwpram->CLPOW = c; }
884ccf6a 790 double GetPSPLT (int i) const { return fHwpram->PSPLT[i-1];}
2d8d4543 791 void SetPSPLT (int i, double p) { fHwpram->PSPLT[i-1] = p;}
884ccf6a 792 double GetQDIQK () const { return fHwpram->QDIQK; }
2d8d4543 793 void SetQDIQK (double q) { fHwpram->QDIQK = q; }
884ccf6a 794 double GetPDIQK () const { return fHwpram->PDIQK; }
2d8d4543 795 void SetPDIQK (double p) { fHwpram->PDIQK = p; }
884ccf6a 796 double GetQSPAC () const { return fHwpram->QSPAC; }
2d8d4543 797 void SetQSPAC (double q) { fHwpram->QSPAC = q; }
884ccf6a 798 double GetPTRMS () const { return fHwpram->PTRMS; }
2d8d4543 799 void SetPTRMS (double p) { fHwpram->PTRMS = p; }
884ccf6a 800 double GetENSOF () const { return fHwpram->ENSOF; }
2d8d4543 801 void SetENSOF (double e) { fHwpram->ENSOF = e; }
884ccf6a 802 int GetIPRINT () const { return fHwpram->IPRINT; }
803 void SetIPRINT (int i) { fHwpram->IPRINT = i; }
804 int GetMODPDF (int i) const { return fHwpram->MODPDF[i-1];}
805 void SetMODPDF (int i, int j) { fHwpram->MODPDF[i-1] = j; }
806 int GetNSTRU () const { return fHwpram->NSTRU; }
807 void SetNSTRU (int i) { fHwpram->NSTRU = i; }
2d8d4543 808
809 // /HWPRCH/
810 Hwprch_t* GetHwprch () { return fHwprch; }
811 char* GetAUTPDF (int i) { return fHwprch->AUTPDF[i-1]; }
812 void SetAUTPDF(int i,const char* s){ strncpy(fHwprch->AUTPDF[i-1],s,20);}
813 char* GetBDECAY () { return fHwprch->BDECAY; }
814
815 // /HWPART/
816 Hwpart_t* GetHwpart () { return fHwpart; }
817
818 // /HWPARP/
819 Hwparp_t* GetHwparp () { return fHwparp; }
820
821 // /HWBOSC/
822 Hwbosc_t* GetHwbosc () { return fHwbosc; }
823
824 // /HWPARC/
825 Hwparc_t* GetHwparc () { return fHwparc; }
826
827 // /HWBRCH/
828 Hwbrch_t* GetHwbrch () { return fHwbrch; }
829
830 // /HWEVNT/
831 Hwevnt_t* GetHwevnt () { return fHwevnt; }
884ccf6a 832 double GetAVWGT () const { return fHwevnt->AVWGT; }
833 int GetMAXPR () const { return fHwevnt->MAXPR; }
2d8d4543 834 void SetMAXPR (int i) { fHwevnt->MAXPR = i; }
e2054d85 835
836 void SetEV1PR (int i) { fHwevnt->EV1PR = i; }
837 void SetEV2PR (int i) { fHwevnt->EV2PR = i; }
838
884ccf6a 839 int GetMAXER () const { return fHwevnt->MAXER; }
2d8d4543 840 void SetMAXER (int i) { fHwevnt->MAXER = i; }
884ccf6a 841 int GetNRN (int i) const { return fHwevnt->NRN[i-1]; }
2d8d4543 842 void SetNRN (int i, int j) { fHwevnt->NRN[i-1] = j; }
e2054d85 843 double GetEVWGT () const { return fHwevnt->EVWGT; }
2d8d4543 844
e2054d85 845 int GetIDHW (int i) const { return fHwevnt->IDHW[i]; }
846
847 int GetIERROR () const { return fHwevnt->IERROR; }
848
2d8d4543 849 // /HWHARD/
850 Hwhard_t* GetHwhard () { return fHwhard; }
884ccf6a 851 double GetPTMIN () const { return fHwhard->PTMIN; }
2d8d4543 852 void SetPTMIN (double d) { fHwhard->PTMIN = d; }
884ccf6a 853 double GetPTPOW () const { return fHwhard->PTPOW; }
2d8d4543 854 void SetPTPOW (double d) { fHwhard->PTPOW = d; }
884ccf6a 855 double GetYJMIN () const { return fHwhard->YJMIN; }
2d8d4543 856 void SetYJMIN (double d) { fHwhard->YJMIN = d; }
884ccf6a 857 double GetYJMAX () const { return fHwhard->YJMAX; }
2d8d4543 858 void SetYJMAX (double d) { fHwhard->YJMAX = d; }
884ccf6a 859 double GetQ2MIN () const { return fHwhard->Q2MIN; }
2d8d4543 860 void SetQ2MIN (double d) { fHwhard->Q2MIN = d; }
884ccf6a 861 double GetQ2MAX () const { return fHwhard->Q2MAX; }
2d8d4543 862 void SetQ2MAX (double d) { fHwhard->Q2MAX = d; }
884ccf6a 863 double GetYBMIN () const { return fHwhard->YBMIN; }
2d8d4543 864 void SetYBMIN (double d) { fHwhard->YBMIN = d; }
884ccf6a 865 double GetYBMAX () const { return fHwhard->YBMAX; }
2d8d4543 866 void SetYBMAX (double d) { fHwhard->YBMAX = d; }
884ccf6a 867 double GetZJMAX () const { return fHwhard->ZJMAX; }
2d8d4543 868 void SetZJMAX (double d) { fHwhard->ZJMAX = d; }
869
870 // /HWPROP/
871 Hwprop_t* GetHwprop () { return fHwprop; }
884ccf6a 872 double GetRMASS (int i) const { return fHwprop->RMASS[i]; }
2d8d4543 873 void SetRMASS (int i, double r) { fHwprop->RMASS[i] = r; }
874
875 // /HWUNAM/
876 Hwunam_t* GetHwunam () { return fHwunam; }
877
e2054d85 878 void GetRNAME (int i, char a[9]) { for (int j=0;j<8;j++) a[j] = fHwunam->RNAME[i][j]; a[8] = '\0';}
879/* char* GetRNAME(int i) { return fHwunam->RNAME[i]; }*/
880
2d8d4543 881 // /HWUPDT/
882 Hwupdt_t* GetHwupdt () { return fHwupdt; }
883
884 // /HWUWTS/
885 Hwuwts_t* GetHwuwts () { return fHwuwts; }
886
887 // /HWUCLU/
888 Hwuclu_t* GetHwuclu () { return fHwuclu; }
889
890 // /HWDIST/
891 Hwdist_t* GetHwdist () { return fHwdist; }
892
893 // /HWQDKT/
894 Hwqdks_t* GetHwqdkt () { return fHwqdks; }
895
896 // /HWUSUD/
897 Hwusud_t* GetHwusud () { return fHwusud; }
898
899 // /HWSUSY/
900 Hwsusy_t* GetHwsusy () { return fHwsusy; }
901
902 // /HWRPAR/
903 Hwrpar_t* GetHwrpar () { return fHwrpar; }
904
905 // /HWMINB/
906 Hwminb_t* GetHwminb () { return fHwminb; }
907
908 // /HWCLUS/
909 Hwclus_t* GetHwclus () { return fHwclus; }
910
911 // Herwig6 routines
912 // the user would call
913 // Initialize
914 // change by himself the parameters s/he wants
915 // Hwusta to make stable the particles s/he wants
916 // PrepareRun
917 // GenerateEvent as many times as wished
918 // An example is given in SetupTest
919
920 void GenerateEvent();
921 void Initialize(const char *beam, const char *target, double pbeam1, double pbeam2, int iproc);
922 void PrepareRun();
923 void OpenFortranFile(int lun, char* name);
924 void CloseFortranFile(int lun);
925 Int_t ImportParticles(TClonesArray *particles, Option_t *option="");
926 TObjArray *ImportParticles(Option_t *option="");
927 TObjArray *Particles() { return fParticles; }
928 void Hwigin();
929 void Hwuinc();
930 void Hwusta(char * name);
931 void Hweini();
932 void Hwuine();
933 void Hwepro();
934 void Hwbgen();
935 void Hwdhob();
936 void Hwcfor();
937 void Hwcdec();
938 void Hwdhad();
939 void Hwdhvy();
940 void Hwmevt();
941 void Hwufne();
942 void Hwefin();
e2054d85 943 void Hwiodk(int iopt);
2d8d4543 944 void SetupTest();
884ccf6a 945protected:
946
947 Hepevt_t* fHepevt; // Standard hep common block
948 // Herwig6 common-blocks
949 Hwbeam_t* fHwbeam; // Beams, process and number of events
950 Hwbmch_t* fHwbmch; // Beams, process and number of events
951 Hwproc_t* fHwproc; // Beams, process and number of events
952 Hwpram_t* fHwpram; // Basic parameters (and quantities derived from them)
953 Hwprch_t* fHwprch; // Basic parameters (and quantities derived from them)
954 Hwpart_t* fHwpart; // Parton shower common
955 Hwparp_t* fHwparp; // Parton polarization common
956 Hwbosc_t* fHwbosc; // Electroweak boson common
957 Hwparc_t* fHwparc; // Parton colour common
958 Hwbrch_t* fHwbrch; // Branching common
959 Hwevnt_t* fHwevnt; // Event common
960 Hwhard_t* fHwhard; // Hard subprocess common
961 Hwprop_t* fHwprop; // Particle properties
962 Hwunam_t* fHwunam; // Particle properties
963 Hwupdt_t* fHwupdt; // Particle decays
964 Hwuwts_t* fHwuwts; // Weights used in cluster decays
965 Hwuclu_t* fHwuclu; // Parameters for cluster decays
966 Hwdist_t* fHwdist; // Variables controling mixing and vertex information
967 Hwqdks_t* fHwqdks; // Arrays for temporarily storing heavy-b,c-hadrons decaying partonicaly
968 Hwusud_t* fHwusud; // Parameters for Sudakov form factors
969 Hwsusy_t* fHwsusy; // SUSY parameters
970 Hwrpar_t* fHwrpar; // R-Parity violating parameters and colours
971 Hwminb_t* fHwminb; // Parameters for minimum bias/soft underlying event
972 Hwclus_t* fHwclus; // Cluster common used by soft event routines
e2054d85 973 Hwgrav_t* fHwgrav;
974 Hw6202_t* fHw6202;
975 Hw6203_t* fHw6203;
976 Hw6300_t* fHw6300;
977 Hwpmrs_t* fHwpmrs;
978 Hwcirc_t* fHwcirc;
979 Hwdspb_t* fHwdspb;
980 Hwdsp2_t* fHwdsp2;
981 Hwdsp3_t* fHwdsp3;
982 Hwdsp4_t* fHwdsp4;
983 Hwdspn_t* fHwdspn;
984 Hwspin_t* fHwspin;
985 Hwstau_t* fHwstau;
986 Hwgupr_t* fHwgupr;
987 Hw6500_t* fHw6500;
988 Hw6504_t* fHw6504;
989 Hw6506_t* fHw6506;
2d8d4543 990
991 ClassDef(THerwig6,0) //Interface to Herwig6.1 Event Generator
992};
993
994#endif