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