Different access to common blocks. Works now also on 64 bit.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 14 Sep 2009 14:18:16 +0000 (14:18 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 14 Sep 2009 14:18:16 +0000 (14:18 +0000)
THerwig/AliGenHerwig.cxx
THerwig/HCommon.h
THerwig/THerwig6.cxx
THerwig/THerwig6.h

index e2ce8fc..eada69c 100644 (file)
@@ -124,8 +124,8 @@ AliGenHerwig::~AliGenHerwig()
 
 void AliGenHerwig::SetEventListRange(Int_t eventFirst, Int_t eventLast)
 {
-  fEv1Pr = ++eventFirst;
-  fEv2Pr = ++eventLast;
+  fEv1Pr = eventFirst;
+  fEv2Pr = eventLast;
   if ( fEv2Pr == -1 ) fEv2Pr = fEv2Pr;
 }
 
@@ -137,7 +137,7 @@ void AliGenHerwig::Init()
   SetMC(new THerwig6());
   fHerwig=(THerwig6*) fMCEvGen;
   // initialize common blocks
-  fHerwig->Initialize(fProjectile, fTarget, fMomentum1, fMomentum2, fProcess);
+  fHerwig->Initialize(fProjectile.Data(), fTarget.Data(), fMomentum1, fMomentum2, fProcess); // 
   // reset parameters according to user needs
   InitPDF();
   fHerwig->SetPTMIN(fPtHardMin);
@@ -146,10 +146,6 @@ void AliGenHerwig::Init()
   fHerwig->SetMAXPR(fMaxPr);
   fHerwig->SetMAXER(fMaxErrors);
   fHerwig->SetENSOF(fEnSoft);
-
-  fHerwig->SetEV1PR(fEv1Pr);
-  fHerwig->SetEV2PR(fEv2Pr);
-
 // C---D,U,S,C,B,T QUARK AND GLUON MASSES (IN THAT ORDER)
 //       RMASS(1)=0.32
 //       RMASS(2)=0.32
@@ -187,9 +183,6 @@ void AliGenHerwig::InitJimmy()
   fHerwig->SetMAXER(fMaxErrors);
   fHerwig->SetENSOF(fEnSoft);
 
-  fHerwig->SetEV1PR(fEv1Pr);
-  fHerwig->SetEV2PR(fEv2Pr);
-
 // C---D,U,S,C,B,T QUARK AND GLUON MASSES (IN THAT ORDER)
 //       RMASS(1)=0.32
 //       RMASS(2)=0.32
@@ -316,6 +309,14 @@ void AliGenHerwig::Generate()
          if (!CheckParton(parton1, parton2))  continue ;
        } 
 
+       // 
+       if (gAlice) {
+           if (gAlice->GetEvNumber()>=fEv1Pr &&
+               gAlice->GetEvNumber()<=fEv2Pr) fHerwig->PrintEvt();
+
+       }
+
+       
        Int_t nc=0;
 
        Int_t * newPos = new Int_t[np];
index f92fe56..a64fdcd 100644 (file)
@@ -1,3 +1,11 @@
+#ifndef HerwigCommon
+#define HerwigCommon
+
+#ifndef __CFORTRAN_LOADED
+#include <cfortran.h>
+#endif
+
+extern "C" {
 // Translation of Fortran commons from the Herwig6
 // f77 program into c++ structures to be used in ROOT
 // and declaration of Fortran functions as extern
@@ -7,9 +15,9 @@
 
 struct dcpx {double dr,di;};
 
-int const NMXHEP = 2000;
+int const NMXHEP = 4000;
 
-struct Hepevt_t {
+typedef struct {
   int NEVHEP;
   int NHEP;
   int ISTHEP[NMXHEP];
@@ -18,28 +26,43 @@ struct Hepevt_t {
   int JDAHEP[NMXHEP][2];
   double PHEP[NMXHEP][5];
   double VHEP[NMXHEP][4];
-};
+} HepevtCommon;
+
+#define HEPEVT COMMON_BLOCK(HEPEVT, hepevt)
+  COMMON_BLOCK_DEF(HepevtCommon, HEPEVT);
 
-struct Hwbeam_t {
+
+typedef struct {
   int IPART1;
   int IPART2;
-};
+} HwbeamCommon;
+
+#define HWBEAM COMMON_BLOCK(HWBEAM, hwbeam)
+  COMMON_BLOCK_DEF(HwbeamCommon, HWBEAM);
 
-struct Hwbmch_t {
+typedef struct {
   char PART1[8];
   char PART2[8];
-};
+} HwbmchCommon;
+
+#define HWBMCH COMMON_BLOCK(HWBMCH, hwbmch)
+  COMMON_BLOCK_DEF(HwbmchCommon, HWBMCH);
 
-struct Hwproc_t {
+
+typedef struct {
   double EBEAM1;
   double EBEAM2;
   double PBEAM1;
   double PBEAM2;
   int    IPROC;
   int    MAXEV;
-};
+} HwprocCommon;
+
+#define HWPROC COMMON_BLOCK(HWPROC, hwproc)
+  COMMON_BLOCK_DEF(HwprocCommon, HWPROC);
+
 
-struct Hwpram_t {
+typedef struct {
   double AFCH[2][16];
   double ALPHEM;
   double B1LIM;
@@ -123,16 +146,22 @@ struct Hwpram_t {
   int PRNDEF;
   int PRNTEX;
   int PRNWEB;
-};
+} HwpramCommon;
 
-struct Hwprch_t {
+#define HWPRAM COMMON_BLOCK(HWPRAM, hwpram)
+  COMMON_BLOCK_DEF(HwpramCommon, HWPRAM);
+
+typedef struct {
   char AUTPDF[2][20];
   char BDECAY[4];
-};
+} HwprchCommon;
+
+#define HWPRCH COMMON_BLOCK(HWPRCH, hwprch)
+  COMMON_BLOCK_DEF(HwprchCommon, HWPRCH);
 
 int const NMXPAR = 500;
 
-struct Hwpart_t {
+typedef struct {
   int  NEVPAR;
   int  NPAR;
   int  ISTPAR[NMXPAR];
@@ -141,18 +170,24 @@ struct Hwpart_t {
   int  JDAPAR[NMXPAR][2];
   double  PPAR[NMXPAR][5];
   double  VPAR[NMXPAR][4];
-};
+} HwpartCommon;
+
+#define HWPART COMMON_BLOCK(HWPART, hwpart)
+  COMMON_BLOCK_DEF(HwpartCommon, HWPART);
 
-struct Hwparp_t {
+typedef struct {
   double DECPAR[NMXPAR][2];
   double PHIPAR[NMXPAR][2];
   double RHOPAR[NMXPAR][2];
   int TMPAR[NMXPAR];
-};
+} HwparpCommon;
+
+#define HWPARP COMMON_BLOCK(HWPARP, hwparp)
+  COMMON_BLOCK_DEF(HwparpCommon, HWPARP);
 
 int const MODMAX = 5;
 
-struct Hwbosc_t {
+typedef struct {
   double  ALPFAC;
   double  BRHIG[12];
   double  ENHANC[12];
@@ -160,13 +195,19 @@ struct Hwbosc_t {
   double  RHOHEP[NMXHEP][3];
   int     IOPHIG;
   int     MODBOS[MODMAX];
-};
+} HwboscCommon;
+
+#define HWBOSC COMMON_BLOCK(HWBOSC, hwbosc)
+  COMMON_BLOCK_DEF(HwboscCommon, HWBOSC);
 
-struct Hwparc_t {
+typedef struct {
   int     JCOPAR[NMXPAR][4];
-};
+} HwparcCommon;
 
-struct Hwbrch_t {
+#define HWPARC COMMON_BLOCK(HWPARC, hwparc)
+  COMMON_BLOCK_DEF(HwparcCommon, HWPARC);
+
+typedef struct {
   double ANOMSC[2][2];
   double HARDST;
   double PTINT[2][3];
@@ -178,9 +219,12 @@ struct Hwbrch_t {
   int    BREIT;
   int    FROST;
   int    USECMF;
-};
+} HwbrchCommon;
+
+#define HWBRCH COMMON_BLOCK(HWBRCH, hwbrch)
+  COMMON_BLOCK_DEF(HwbrchCommon, HWBRCH);
 
-struct Hwevnt_t {
+typedef struct {
   double AVWGT;
   double EVWGT;
   double GAMWT;
@@ -201,9 +245,12 @@ struct Hwevnt_t {
   int    NUMERU;
   int    NWGTS;
   int    GENSOF;
-};
+} HwevntCommon;
 
-struct Hwhard_t {
+#define HWEVNT COMMON_BLOCK(HWEVNT, hwevnt)
+  COMMON_BLOCK_DEF(HwevntCommon, HWEVNT);
+
+typedef struct {
   double ASFIXD;
   double CLQ[6][7];
   double COSS;
@@ -267,11 +314,14 @@ struct Hwhard_t {
   int    HVFCEN;
   int    TPOL;
   int     DURHAM;
-};
+} HwhardCommon;
+
+#define HWHARD COMMON_BLOCK(HWHARD, hwhard)
+  COMMON_BLOCK_DEF(HwhardCommon, HWHARD);
 
 int const NMXRES = 500;
 
-struct Hwprop_t {
+typedef struct {
   double RLTIM[NMXRES+1];
   double RMASS[NMXRES+1];
   double RSPIN[NMXRES+1];
@@ -283,17 +333,23 @@ struct Hwprop_t {
   int    VTORDK[NMXRES+1];
   int    QORQQB[NMXRES+1];
   int    QBORQQ[NMXRES+1];
-};
+} HwpropCommon;
+
+#define HWPROP COMMON_BLOCK(HWPROP, hwprop)
+  COMMON_BLOCK_DEF(HwpropCommon, HWPROP);
 
-struct Hwunam_t {
+typedef struct {
   char RNAME[NMXRES+1][8];
   char TXNAME[NMXRES+1][2][37];
-};
+} HwunamCommon;
+
+#define HWUNAM COMMON_BLOCK(HWUNAM, hwunam)
+  COMMON_BLOCK_DEF(HwunamCommon, HWUNAM);
 
 int const NMXDKS = 4000;
 int const NMXMOD = 200;
 
-struct Hwupdt_t {
+typedef struct {
   double BRFRAC[NMXDKS];
   double CMMOM[NMXDKS];
   double DKLTM[NMXRES];
@@ -307,20 +363,28 @@ struct Hwupdt_t {
   int    NPRODS[NMXDKS];
   int    DKPSET;
   int    RSTAB[NMXRES+1];
-};
+} HwupdtCommon;
+
+#define HWUPDT COMMON_BLOCK(HWUPDT, hwupdt)
+  COMMON_BLOCK_DEF(HwupdtCommon, HWUPDT);
+
 
-struct Hwuwts_t {
+typedef struct {
   double REPWT[5][4][4];
   double SNGWT;
   double DECWT;
   double QWT[3];
   double PWT[12];
   double SWTEF[NMXRES];
-};
+} HwuwtsCommon;
+
+#define HWUWTS COMMON_BLOCK(HWUWTS, hwuwts)
+  COMMON_BLOCK_DEF(HwuwtsCommon, HWUWTS);
+
 
 int const NMXCDK = 4000;
 
-struct Hwuclu_t {
+typedef struct {
   double CLDKWT[NMXCDK];
   double CTHRPW[12][12];
   double PRECO;
@@ -330,9 +394,13 @@ struct Hwuclu_t {
   int    NCLDK[NMXCDK];
   int    NRECO;
   int    CLRECO;
-};
+} HwucluCommon;
+
+#define HWUCLU COMMON_BLOCK(HWUCLU, hwuclu)
+  COMMON_BLOCK_DEF(HwucluCommon, HWUCLU);
 
-struct Hwdist_t {
+
+typedef struct {
   double EXAG;
   double GEV2MM;
   double HBAR;
@@ -347,20 +415,26 @@ struct Hwdist_t {
   int    MAXDKL;
   int    MIXING;
   int    PIPSMR;
-};
+} HwdistCommon;
+
+#define HWDIST COMMON_BLOCK(HWDIST, hwdist)
+  COMMON_BLOCK_DEF(HwdistCommon, HWDIST);
 
 int const NMXQDK=20;
 
-struct Hwqdks_t {
+typedef struct {
   double VTXQDK[NMXQDK][4];
   int    IMQDK[NMXQDK];
   int    LOCQ[NMXQDK];
   int    NQDK;
-};
+} HwqdksCommon;
+
+#define HWQDKS COMMON_BLOCK(HWQDKS, hwqdks)
+  COMMON_BLOCK_DEF(HwqdksCommon, HWQDKS);
 
 int const NMXSUD = 1024;
 
-struct Hwusud_t {
+typedef struct {
   double ACCUR;
   double QEV[6][NMXSUD];
   double SUD[6][NMXSUD];
@@ -368,9 +442,12 @@ struct Hwusud_t {
   int    NQEV;
   int    NSUD;
   int    SUDORD;
-};
+} HwusudCommon;
+
+#define HWUSUD COMMON_BLOCK(HWUSUD, hwusud)
+  COMMON_BLOCK_DEF(HwusudCommon, HWUSUD);
 
-struct Hwsusy_t {
+typedef struct {
   double TANB;
   double ALPHAH;
   double COSBPA;
@@ -414,18 +491,24 @@ struct Hwsusy_t {
   double SENHNC[24];
   double SSPARITY;
   int    SUSYIN;
-};
+} HwsusyCommon;
 
-struct Hwrpar_t {
+#define HWSUSY COMMON_BLOCK(HWSUSY, hwsusy)
+  COMMON_BLOCK_DEF(HwsusyCommon, HWSUSY);
+
+typedef struct {
   double LAMDA1[3][3][3];
   double LAMDA2[3][3][3];
   double LAMDA3[3][3][3];
   int    HRDCOL[5][2];
   int    RPARTY;
   int    COLUPD;
-};
+} HwrparCommon;
+
+#define HWRPAR COMMON_BLOCK(HWRPAR, hwrpar)
+  COMMON_BLOCK_DEF(HwrparCommon, HWRPAR);
 
-struct Hwminb_t {
+typedef struct {
   double PMBN1;
   double PMBN2;
   double PMBN3;
@@ -436,25 +519,34 @@ struct Hwminb_t {
   double PMBP1;
   double PMBP2;
   double PMBP3;
-};
+} HwminbCommon;
+
+#define HWMINB COMMON_BLOCK(HWMINB, hwminb)
+  COMMON_BLOCK_DEF(HwminbCommon, HWMINB);
 
 int const NMXCL = 500;
 
-struct Hwclus_t {
+typedef struct {
   double PPCL[NMXCL][5];
   int    IDCL[NMXCL];
   int    NCL;
-};
+} HwclusCommon;
+
+#define HWCLUS COMMON_BLOCK(HWCLUS, hwclus)
+  COMMON_BLOCK_DEF(HwclusCommon, HWCLUS);
 
 // herwig 6.507
 
-struct Hwgrav_t {
+typedef struct Hwgrav_t {
   double GRVLAM;
   double EMGRV;
   double GAMGRV;
-};
+} HwgravCommon;
+
+#define HWGRAV COMMON_BLOCK(HWGRAV, hwgrav)
+  COMMON_BLOCK_DEF(HwgravCommon, HWGRAV);
 
-struct Hw6202_t {
+typedef struct {
   double VIPWID[3];
   double DXRCYL;
   double DXZMAX;
@@ -465,44 +557,58 @@ struct Hw6202_t {
   int    IHIGGS;
   int    PARITY;
   int    LRSUSY;
-};
+} Hw6202Common;
+
+#define HW6202 COMMON_BLOCK(HW6202, hw6202)
+  COMMON_BLOCK_DEF(Hw6202Common, HW6202);
 
-struct Hw6203_t {
+typedef struct {
   double ABWGT;
   double ABWSUM;
   double AVABW;
   int    NNEGWT;
   int    NNEGEV;
   int    NEGWTS;
-};
+} Hw6203Common;
+
+#define HW6203 COMMON_BLOCK(HW6203, hw6203)
+  COMMON_BLOCK_DEF(Hw6203Common, HW6203);
 
 int const IMAXCH = 20;
 
-struct Hw6300_t {
+typedef struct {
   double MJJMIN;
   double CHNPRB[IMAXCH];
   int    IOPSTP;
   int    IOPSH;
   int    OPTM;
   int    CHON[IMAXCH];
-};
+} Hw6300Common;
 
+#define HW6300 COMMON_BLOCK(HW6300, hw6300)
+  COMMON_BLOCK_DEF(Hw6300Common, HW6300);
 
 int const NXMRS = 49;
 int const NQMRS = 37;
 int const NPMRS = 8;
 
-struct Hwpmrs_t {
+typedef struct {
   double FMRS[NQMRS+1][NXMRS][NPMRS][3];
-};
+} HwpmrsCommon;
+
+#define HWPMRS COMMON_BLOCK(HWPMRS, hwpmrs)
+  COMMON_BLOCK_DEF(HwpmrsCommon, HWPMRS);
 
-struct Hwcirc_t {
+typedef struct {
   int    CIRCOP;
   int    CIRCAC;
   int    CIRCVR;
   int    CIRCRV;
   int    CIRCCH;
-};
+} HwcircCommon;
+
+#define HWCIRC COMMON_BLOCK(HWCIRC, hwcirc)
+  COMMON_BLOCK_DEF(HwcircCommon, HWCIRC);
 
 int const NCFMAX = 3;
 int const NMODE2 = 500;
@@ -511,7 +617,7 @@ int const NDIAGR = 8;
 int const NMODEB = 50;
 int const NMODE4 = 4;
 
-struct Hwdspb_t {
+typedef struct {
   double ABMODE[NMODEB][2];
   double BBMODE[NMODEB][12][2];
   double PBMODE[NMODEB][12];
@@ -520,18 +626,24 @@ struct Hwdspb_t {
   int    IBDRTP[NMODEB];
   int    IBMODE[NMODEB];
   int    NBMODE;
-};
+} HwdspbCommon;
 
-struct Hwdsp2_t {
+#define HWDSPB COMMON_BLOCK(HWDSPB, hwdspb)
+  COMMON_BLOCK_DEF(HwdspbCommon, HWDSPB);
+
+typedef struct {
   double A2MODE[NMODE2][2];
   double P2MODE[NMODE2];
   double WT2MAX[NMODE2];
   int    ID2PRT[NMODE2];
   int    I2DRTP[NMODE2];
   int    N2MODE;
-};
+} Hwdsp2Common;
+
+#define HWDSP2 COMMON_BLOCK(HWDSP2, hwdsp2)
+  COMMON_BLOCK_DEF(Hwdsp2Common, HWDSP2);
 
-struct Hwdsp3_t {
+typedef struct {
   double A3MODE[NMODE3][NDIAGR][2];
   double B3MODE[NMODE3][NDIAGR][2];
   double P3MODE[NMODE3];
@@ -544,9 +656,12 @@ struct Hwdsp3_t {
   int    NDI3BY[NMODE3];
   int    N3NCFL[NMODE3];
   int    I3DRCF[NMODE3][NDIAGR];
-};
+} Hwdsp3Common;
+
+#define HWDSP3 COMMON_BLOCK(HWDSP3, hwdsp3)
+  COMMON_BLOCK_DEF(Hwdsp3Common, HWDSP3);
 
-struct Hwdsp4_t {
+typedef struct {
   double A4MODE[NMODE4][12][2];
   double B4MODE[NMODE4][12][2];
   double P4MODE[NMODE4][12][12];
@@ -554,9 +669,12 @@ struct Hwdsp4_t {
   int    ID4PRT[NMODE4];
   int    I4MODE[NMODE4][2];
   int    N4MODE;
-};
+} Hwdsp4Common;
 
-struct Hwdspn_t {
+#define HWDSP4 COMMON_BLOCK(HWDSP4, hwdsp4)
+  COMMON_BLOCK_DEF(Hwdsp4Common, HWDSP4);
+
+typedef struct {
   int    NDECSY;
   int    NSEARCH;
   int    LRDEC;
@@ -565,11 +683,14 @@ struct Hwdspn_t {
   int    THREEB;
   int    FOURB;
   char   TAUDEC[6];
-};
+} HwdspnCommon;
+
+#define HWDSPN COMMON_BLOCK(HWDSPN, hwdspn)
+  COMMON_BLOCK_DEF(HwdspnCommon, HWDSPN);
 
 int const NMXSPN = 50;
 
-struct Hwspin_t {
+typedef struct {
   dcpx   MESPN[NMXSPN][NCFMAX][2][2][2][2];
   dcpx   RHOSPN[NMXSPN][2][2];
   double SPNCFC[NMXSPN][NCFMAX][NCFMAX];
@@ -582,18 +703,24 @@ struct Hwspin_t {
   int    DECSPN[NMXSPN];
   int    NCFL[NMXSPN];
   int    SPCOPT;
-};
+} HwspinCommon;
+
+#define HWSPIN COMMON_BLOCK(HWSPIN, hwspin)
+  COMMON_BLOCK_DEF(HwspinCommon, HWSPIN);
 
-struct Hwstau_t {
+typedef struct {
   int    JAK1;
   int    JAK2;
   int    ITDKRC;
   int    IFPHOT;
-};
+} HwstauCommon;
+
+#define HWSTAU COMMON_BLOCK(HWSTAU, hwstau)
+  COMMON_BLOCK_DEF(HwstauCommon, HWSTAU);
 
 int const MAXHRP = 100;
 
-struct Hwgupr_t {
+typedef struct {
   double LHWGT[MAXHRP];
   double LHWGTS[MAXHRP];
   double LHXSCT[MAXHRP];
@@ -605,39 +732,53 @@ struct Hwgupr_t {
   int    ITYPLH;
   int    LHSOFT;
   int    LHGLSF;    
-};
+} HwguprCommon;
+
+#define HWGUPR COMMON_BLOCK(HWGUPR, hwgupr)
+  COMMON_BLOCK_DEF(HwguprCommon, HWGUPR);
 
-struct Hw6500_t {
+typedef struct {
   int    PRESPL;
-};
+} Hw6500Common;
+
+#define HW6500 COMMON_BLOCK(HW6500, hw6500)
+  COMMON_BLOCK_DEF(Hw6500Common, HW6500);
 
-struct Hw6504_t {
+typedef struct {
   int    ITOPRD;
-};
+} Hw6504Common;
 
-struct Hw6506_t {
+#define HW6504 COMMON_BLOCK(HW6504, hw6504)
+  COMMON_BLOCK_DEF(Hw6504Common, HW6504);
+
+typedef struct {
   double PDFX0;
   double PDFPOW;
-};
+} Hw6506Common;
 
+#define HW6506 COMMON_BLOCK(HW6506, hw6506)
+  COMMON_BLOCK_DEF(Hw6506Common, HW6506);
 
+}
 
 extern "C" {
-  void  hwigin_();
-  void  hwuinc_();
-  void  hwusta_(char * name, int);
-  void  hweini_();
-  void  hwuine_();
-  void  hwepro_();
-  void  hwbgen_();
-  void  hwdhob_();
-  void  hwcfor_();
-  void  hwcdec_();
-  void  hwdhad_();
-  void  hwdhvy_();
-  void  hwmevt_();
-  void  hwufne_();
-  void  hwefin_();
+    void  hwuepr_();
+    void  hwigin_();
+    void  hwuinc_();
+    void  hweini_();
+    void  hwuine_();
+    void  hwepro_();
+    void  hwbgen_();
+    void  hwdhob_();
+    void  hwcfor_();
+    void  hwcdec_();
+    void  hwdhad_();
+    void  hwdhvy_();
+    void  hwmevt_();
+    void  hwufne_();
+    void  hwefin_();
+    void  hwusta_(const char * name, int);
+    void  hwiodk_(int);
 }
 
 // subroutines to be call by JIMMY
@@ -648,7 +789,7 @@ extern "C" {
   void  jmefin_();
 }
 
-
+#endif
 
 
 
index d5781de..f29f143 100644 (file)
@@ -50,6 +50,7 @@
 
 
 #include "THerwig6.h"
+#include "HCommon.h"
 #include "TClonesArray.h"
 #include "TParticle.h"
 #include "TObjArray.h"
 ClassImp(THerwig6)
 
 extern "C" {
-  void*  herwig6_common_block_address_(char*, int len);
   void   herwig6_open_fortran_file_ (int* lun, char* name, int);
   void   herwig6_close_fortran_file_(int* lun);
 }
 
 
-THerwig6::THerwig6() : TGenerator("Herwig6","Herwig6"),
-  fHepevt((Hepevt_t*) herwig6_common_block_address_((char*)"HEPEVT",6)),
-  fHwbeam((Hwbeam_t*) herwig6_common_block_address_((char*)"HWBEAM",6)),
-  fHwbmch((Hwbmch_t*) herwig6_common_block_address_((char*)"HWBMCH",6)),
-  fHwproc((Hwproc_t*) herwig6_common_block_address_((char*)"HWPROC",6)),
-  fHwpram((Hwpram_t*) herwig6_common_block_address_((char*)"HWPRAM",6)),
-  fHwprch((Hwprch_t*) herwig6_common_block_address_((char*)"HWPRCH",6)),
-  fHwpart((Hwpart_t*) herwig6_common_block_address_((char*)"HWPART",6)),
-  fHwparp((Hwparp_t*) herwig6_common_block_address_((char*)"HWPARP",6)),
-  fHwbosc((Hwbosc_t*) herwig6_common_block_address_((char*)"HWBOSC",6)),
-  fHwparc((Hwparc_t*) herwig6_common_block_address_((char*)"HWPARC",6)),
-  fHwbrch((Hwbrch_t*) herwig6_common_block_address_((char*)"HWBRCH",6)),
-  fHwevnt((Hwevnt_t*) herwig6_common_block_address_((char*)"HWEVNT",6)),
-  fHwhard((Hwhard_t*) herwig6_common_block_address_((char*)"HWHARD",6)),
-  fHwprop((Hwprop_t*) herwig6_common_block_address_((char*)"HWPROP",6)),
-  fHwunam((Hwunam_t*) herwig6_common_block_address_((char*)"HWUNAM",6)),
-  fHwupdt((Hwupdt_t*) herwig6_common_block_address_((char*)"HWUPDT",6)),
-  fHwuwts((Hwuwts_t*) herwig6_common_block_address_((char*)"HWUWTS",6)),
-  fHwuclu((Hwuclu_t*) herwig6_common_block_address_((char*)"HWUCLU",6)),
-  fHwdist((Hwdist_t*) herwig6_common_block_address_((char*)"HWDIST",6)),
-  fHwqdks((Hwqdks_t*) herwig6_common_block_address_((char*)"HWQDKS",6)),
-  fHwusud((Hwusud_t*) herwig6_common_block_address_((char*)"HWUSUD",6)),
-  fHwsusy((Hwsusy_t*) herwig6_common_block_address_((char*)"HWSUSY",6)),
-  fHwrpar((Hwrpar_t*) herwig6_common_block_address_((char*)"HWRPAR",6)),
-  fHwminb((Hwminb_t*) herwig6_common_block_address_((char*)"HWMINB",6)),
-  fHwclus((Hwclus_t*) herwig6_common_block_address_((char*)"HWCLUS",6)),
-  fHwgrav((Hwgrav_t*) herwig6_common_block_address_((char*)"HWGRAV",6)),
-  fHw6202((Hw6202_t*) herwig6_common_block_address_((char*)"HW6202",6)),
-  fHw6203((Hw6203_t*) herwig6_common_block_address_((char*)"HW6203",6)),
-  fHw6300((Hw6300_t*) herwig6_common_block_address_((char*)"HW6300",6)),
-  fHwpmrs((Hwpmrs_t*) herwig6_common_block_address_((char*)"HWPMRS",6)),
-  fHwcirc((Hwcirc_t*) herwig6_common_block_address_((char*)"HWCIRC",6)),
-  fHwdspb((Hwdspb_t*) herwig6_common_block_address_((char*)"HWDSPB",6)),
-  fHwdsp2((Hwdsp2_t*) herwig6_common_block_address_((char*)"HWDSP2",6)),
-  fHwdsp3((Hwdsp3_t*) herwig6_common_block_address_((char*)"HWDSP3",6)),
-  fHwdsp4((Hwdsp4_t*) herwig6_common_block_address_((char*)"HWDSP4",6)),
-  fHwdspn((Hwdspn_t*) herwig6_common_block_address_((char*)"HWDSPN",6)),
-  fHwspin((Hwspin_t*) herwig6_common_block_address_((char*)"HWSPIN",6)),
-  fHwstau((Hwstau_t*) herwig6_common_block_address_((char*)"HWSTAU",6)),
-  fHwgupr((Hwgupr_t*) herwig6_common_block_address_((char*)"HWGUPR",6)),
-  fHw6500((Hw6500_t*) herwig6_common_block_address_((char*)"HW6500",6)),
-  fHw6504((Hw6504_t*) herwig6_common_block_address_((char*)"HW6504",6)),
-  fHw6506((Hw6506_t*) herwig6_common_block_address_((char*)"HW6506",6))
+THerwig6::THerwig6() : TGenerator("Herwig6","Herwig6")
 {
 
 // THerwig6 constructor: creates a TClonesArray in which it will store all
@@ -119,49 +77,7 @@ THerwig6::THerwig6() : TGenerator("Herwig6","Herwig6"),
   // initialize common-blocks
  }
 
-THerwig6::THerwig6(const THerwig6 & source): TGenerator(source),
-  fHepevt((Hepevt_t*) herwig6_common_block_address_((char*)"HEPEVT",6)),
-  fHwbeam((Hwbeam_t*) herwig6_common_block_address_((char*)"HWBEAM",6)),
-  fHwbmch((Hwbmch_t*) herwig6_common_block_address_((char*)"HWBMCH",6)),
-  fHwproc((Hwproc_t*) herwig6_common_block_address_((char*)"HWPROC",6)),
-  fHwpram((Hwpram_t*) herwig6_common_block_address_((char*)"HWPRAM",6)),
-  fHwprch((Hwprch_t*) herwig6_common_block_address_((char*)"HWPRCH",6)),
-  fHwpart((Hwpart_t*) herwig6_common_block_address_((char*)"HWPART",6)),
-  fHwparp((Hwparp_t*) herwig6_common_block_address_((char*)"HWPARP",6)),
-  fHwbosc((Hwbosc_t*) herwig6_common_block_address_((char*)"HWBOSC",6)),
-  fHwparc((Hwparc_t*) herwig6_common_block_address_((char*)"HWPARC",6)),
-  fHwbrch((Hwbrch_t*) herwig6_common_block_address_((char*)"HWBRCH",6)),
-  fHwevnt((Hwevnt_t*) herwig6_common_block_address_((char*)"HWEVNT",6)),
-  fHwhard((Hwhard_t*) herwig6_common_block_address_((char*)"HWHARD",6)),
-  fHwprop((Hwprop_t*) herwig6_common_block_address_((char*)"HWPROP",6)),
-  fHwunam((Hwunam_t*) herwig6_common_block_address_((char*)"HWUNAM",6)),
-  fHwupdt((Hwupdt_t*) herwig6_common_block_address_((char*)"HWUPDT",6)),
-  fHwuwts((Hwuwts_t*) herwig6_common_block_address_((char*)"HWUWTS",6)),
-  fHwuclu((Hwuclu_t*) herwig6_common_block_address_((char*)"HWUCLU",6)),
-  fHwdist((Hwdist_t*) herwig6_common_block_address_((char*)"HWDIST",6)),
-  fHwqdks((Hwqdks_t*) herwig6_common_block_address_((char*)"HWQDKS",6)),
-  fHwusud((Hwusud_t*) herwig6_common_block_address_((char*)"HWUSUD",6)),
-  fHwsusy((Hwsusy_t*) herwig6_common_block_address_((char*)"HWSUSY",6)),
-  fHwrpar((Hwrpar_t*) herwig6_common_block_address_((char*)"HWRPAR",6)),
-  fHwminb((Hwminb_t*) herwig6_common_block_address_((char*)"HWMINB",6)),
-  fHwclus((Hwclus_t*) herwig6_common_block_address_((char*)"HWCLUS",6)),
-  fHwgrav((Hwgrav_t*) herwig6_common_block_address_((char*)"HWGRAV",6)),
-  fHw6202((Hw6202_t*) herwig6_common_block_address_((char*)"HW6202",6)),
-  fHw6203((Hw6203_t*) herwig6_common_block_address_((char*)"HW6203",6)),
-  fHw6300((Hw6300_t*) herwig6_common_block_address_((char*)"HW6300",6)),
-  fHwpmrs((Hwpmrs_t*) herwig6_common_block_address_((char*)"HWPMRS",6)),
-  fHwcirc((Hwcirc_t*) herwig6_common_block_address_((char*)"HWCIRC",6)),
-  fHwdspb((Hwdspb_t*) herwig6_common_block_address_((char*)"HWDSPB",6)),
-  fHwdsp2((Hwdsp2_t*) herwig6_common_block_address_((char*)"HWDSP2",6)),
-  fHwdsp3((Hwdsp3_t*) herwig6_common_block_address_((char*)"HWDSP3",6)),
-  fHwdsp4((Hwdsp4_t*) herwig6_common_block_address_((char*)"HWDSP4",6)),
-  fHwdspn((Hwdspn_t*) herwig6_common_block_address_((char*)"HWDSPN",6)),
-  fHwspin((Hwspin_t*) herwig6_common_block_address_((char*)"HWSPIN",6)),
-  fHwstau((Hwstau_t*) herwig6_common_block_address_((char*)"HWSTAU",6)),
-  fHwgupr((Hwgupr_t*) herwig6_common_block_address_((char*)"HWGUPR",6)),
-  fHw6500((Hw6500_t*) herwig6_common_block_address_((char*)"HW6500",6)),
-  fHw6504((Hw6504_t*) herwig6_common_block_address_((char*)"HW6504",6)),
-  fHw6506((Hw6506_t*) herwig6_common_block_address_((char*)"HW6506",6))
+THerwig6::THerwig6(const THerwig6 & source): TGenerator(source)
 {
     Fatal("THerwig6","Copy constructor not implemented yet");
 }
@@ -268,15 +184,15 @@ void THerwig6::Initialize(const char *beam, const char *target, double pbeam1, d
 
    // initialization:
    // type of beams
-   strncpy(fHwbmch->PART1,beam,8);
-   strncpy(fHwbmch->PART2,target,8);
+   strncpy(HWBMCH.PART1,beam,8);
+   strncpy(HWBMCH.PART2,target,8);
    // momentum of beams
-   fHwproc->PBEAM1=pbeam1;
-   fHwproc->PBEAM2=pbeam2;
+   HWPROC.PBEAM1=pbeam1;
+   HWPROC.PBEAM2=pbeam2;
    // process to generate
-   fHwproc->IPROC=iproc;
+   HWPROC.IPROC=iproc;
    // not used in the class definition
-   fHwproc->MAXEV=1;
+   HWPROC.MAXEV=1;
    
    // reset all parameters
    hwigin_();
@@ -351,15 +267,15 @@ void THerwig6::InitializeJimmy(const char *beam, const char *target, double pbea
 
    // initialization:
    // type of beams
-   strncpy(fHwbmch->PART1,beam,8);
-   strncpy(fHwbmch->PART2,target,8);
+   strncpy(HWBMCH.PART1,beam,8);
+   strncpy(HWBMCH.PART2,target,8);
    // momentum of beams
-   fHwproc->PBEAM1=pbeam1;
-   fHwproc->PBEAM2=pbeam2;
+   HWPROC.PBEAM1=pbeam1;
+   HWPROC.PBEAM2=pbeam2;
    // process to generate
-   fHwproc->IPROC=iproc;
+   HWPROC.IPROC=iproc;
    // not used in the class definition
-   fHwproc->MAXEV=1;
+   HWPROC.MAXEV=1;
 
    // reset all parameters
    hwigin_();
@@ -404,51 +320,51 @@ TObjArray* THerwig6::ImportParticles(Option_t *option)
 //  If the option = "All", all the particles are stored.
 //
   fParticles->Clear();
-  Int_t numpart = fHepevt->NHEP;
+  Int_t numpart = HEPEVT.NHEP;
   TClonesArray &a = *((TClonesArray*)fParticles);
   if (!strcmp(option,"") || !strcmp(option,"Final")) {
     for (Int_t i = 0; i < numpart; i++) {
-      if (fHepevt->ISTHEP[i] == 1) {
+      if (HEPEVT.ISTHEP[i] == 1) {
 //
 //  Use the common block values for the TParticle constructor
 //
         new(a[i]) TParticle(
-                                   fHepevt->IDHEP[i],
-                                   fHepevt->ISTHEP[i],
-                                   fHepevt->JMOHEP[i][0]-1,
-                                   fHepevt->JMOHEP[i][1]-1,
-                                   fHepevt->JDAHEP[i][0]-1,
-                                   fHepevt->JDAHEP[i][1]-1,
-
-                                   fHepevt->PHEP[i][0],
-                                   fHepevt->PHEP[i][1],
-                                   fHepevt->PHEP[i][2],
-                                   fHepevt->PHEP[i][3],
-                                   fHepevt->VHEP[i][0],
-                                   fHepevt->VHEP[i][1],
-                                   fHepevt->VHEP[i][2],
-                                   fHepevt->VHEP[i][3]);
+                                   HEPEVT.IDHEP[i],
+                                   HEPEVT.ISTHEP[i],
+                                   HEPEVT.JMOHEP[i][0]-1,
+                                   HEPEVT.JMOHEP[i][1]-1,
+                                   HEPEVT.JDAHEP[i][0]-1,
+                                   HEPEVT.JDAHEP[i][1]-1,
+
+                                   HEPEVT.PHEP[i][0],
+                                   HEPEVT.PHEP[i][1],
+                                   HEPEVT.PHEP[i][2],
+                                   HEPEVT.PHEP[i][3],
+                                   HEPEVT.VHEP[i][0],
+                                   HEPEVT.VHEP[i][1],
+                                   HEPEVT.VHEP[i][2],
+                                   HEPEVT.VHEP[i][3]);
         }
      }
   }
   else if (!strcmp(option,"All")) {
     for (Int_t i = 0; i < numpart; i++) {
       new(a[i]) TParticle(
-                                   fHepevt->IDHEP[i],
-                                   fHepevt->ISTHEP[i],
-                                   fHepevt->JMOHEP[i][0]-1,
-                                   fHepevt->JMOHEP[i][1]-1,
-                                   fHepevt->JDAHEP[i][0]-1,
-                                   fHepevt->JDAHEP[i][1]-1,
-
-                                   fHepevt->PHEP[i][0],
-                                   fHepevt->PHEP[i][1],
-                                   fHepevt->PHEP[i][2],
-                                   fHepevt->PHEP[i][3],
-                                   fHepevt->VHEP[i][0],
-                                   fHepevt->VHEP[i][1],
-                                   fHepevt->VHEP[i][2],
-                                   fHepevt->VHEP[i][3]);
+                                   HEPEVT.IDHEP[i],
+                                   HEPEVT.ISTHEP[i],
+                                   HEPEVT.JMOHEP[i][0]-1,
+                                   HEPEVT.JMOHEP[i][1]-1,
+                                   HEPEVT.JDAHEP[i][0]-1,
+                                   HEPEVT.JDAHEP[i][1]-1,
+
+                                   HEPEVT.PHEP[i][0],
+                                   HEPEVT.PHEP[i][1],
+                                   HEPEVT.PHEP[i][2],
+                                   HEPEVT.PHEP[i][3],
+                                   HEPEVT.VHEP[i][0],
+                                   HEPEVT.VHEP[i][1],
+                                   HEPEVT.VHEP[i][2],
+                                   HEPEVT.VHEP[i][3]);
     }
   }
   return fParticles;
@@ -471,50 +387,50 @@ Int_t THerwig6::ImportParticles(TClonesArray *particles, Option_t *option)
   if (particles == 0) return 0;
   TClonesArray &refParticles = *particles;
   refParticles.Clear();
-  Int_t numpart = fHepevt->NHEP;
+  Int_t numpart = HEPEVT.NHEP;
   if (!strcmp(option,"") || !strcmp(option,"Final")) {
     for (Int_t i = 0; i < numpart; i++) {
-      if (fHepevt->ISTHEP[i] == 1) {
+      if (HEPEVT.ISTHEP[i] == 1) {
 //
 //  Use the common block values for the TParticle constructor
 //
         new(refParticles[i]) TParticle(
-                                   fHepevt->IDHEP[i],
-                                   fHepevt->ISTHEP[i],
-                                   fHepevt->JMOHEP[i][0]-1,
-                                   fHepevt->JMOHEP[i][1]-1,
-                                   fHepevt->JDAHEP[i][0]-1,
-                                   fHepevt->JDAHEP[i][1]-1,
-
-                                   fHepevt->PHEP[i][0],
-                                   fHepevt->PHEP[i][1],
-                                   fHepevt->PHEP[i][2],
-                                   fHepevt->PHEP[i][3],
-                                   fHepevt->VHEP[i][0],
-                                   fHepevt->VHEP[i][1],
-                                   fHepevt->VHEP[i][2],
-                                   fHepevt->VHEP[i][3]);
+                                   HEPEVT.IDHEP[i],
+                                   HEPEVT.ISTHEP[i],
+                                   HEPEVT.JMOHEP[i][0]-1,
+                                   HEPEVT.JMOHEP[i][1]-1,
+                                   HEPEVT.JDAHEP[i][0]-1,
+                                   HEPEVT.JDAHEP[i][1]-1,
+
+                                   HEPEVT.PHEP[i][0],
+                                   HEPEVT.PHEP[i][1],
+                                   HEPEVT.PHEP[i][2],
+                                   HEPEVT.PHEP[i][3],
+                                   HEPEVT.VHEP[i][0],
+                                   HEPEVT.VHEP[i][1],
+                                   HEPEVT.VHEP[i][2],
+                                   HEPEVT.VHEP[i][3]);
         }
      }
   }
   else if (!strcmp(option,"All")) {
     for (Int_t i = 0; i< numpart; i++) {
       new(refParticles[i]) TParticle(
-                                   fHepevt->IDHEP[i],
-                                   fHepevt->ISTHEP[i],
-                                   fHepevt->JMOHEP[i][0]-1,
-                                   fHepevt->JMOHEP[i][1]-1,
-                                   fHepevt->JDAHEP[i][0]-1,
-                                   fHepevt->JDAHEP[i][1]-1,
-
-                                   fHepevt->PHEP[i][0],
-                                   fHepevt->PHEP[i][1],
-                                   fHepevt->PHEP[i][2],
-                                   fHepevt->PHEP[i][3],
-                                   fHepevt->VHEP[i][0],
-                                   fHepevt->VHEP[i][1],
-                                   fHepevt->VHEP[i][2],
-                                   fHepevt->VHEP[i][3]);
+                                   HEPEVT.IDHEP[i],
+                                   HEPEVT.ISTHEP[i],
+                                   HEPEVT.JMOHEP[i][0]-1,
+                                   HEPEVT.JMOHEP[i][1]-1,
+                                   HEPEVT.JDAHEP[i][0]-1,
+                                   HEPEVT.JDAHEP[i][1]-1,
+
+                                   HEPEVT.PHEP[i][0],
+                                   HEPEVT.PHEP[i][1],
+                                   HEPEVT.PHEP[i][2],
+                                   HEPEVT.PHEP[i][3],
+                                   HEPEVT.VHEP[i][0],
+                                   HEPEVT.VHEP[i][1],
+                                   HEPEVT.VHEP[i][2],
+                                   HEPEVT.VHEP[i][3]); // 
     }
   }
   return numpart;
@@ -658,8 +574,123 @@ void THerwig6::Jmefin()
   jmefin_();
 }
 
+void THerwig6::PrintEvt()
+{
+    hwuepr_();
+    
+}
 
-
-
-
-
+  // acces to hep common block
+int         THerwig6::GetNEVHEP        () const     { return HEPEVT.NEVHEP; }
+int         THerwig6::GetNhep          () const     { return HEPEVT.NHEP; }
+int         THerwig6::GetISTHEP    (int i)const     { return HEPEVT.ISTHEP[i-1]; }
+int         THerwig6::GetIDHEP     (int i)const     { return HEPEVT.IDHEP[i-1]; }
+int         THerwig6::GetJMOHEP (int i, int j) const
+{ return HEPEVT.JMOHEP[i-1][j-1]; }
+int         THerwig6::GetJDAHEP (int i, int j) const
+{ return HEPEVT.JDAHEP[i-1][j-1]; }
+double      THerwig6::GetPHEP   (int i, int j) const
+{ return HEPEVT.PHEP[i-1][j-1]; }
+double      THerwig6::GetVHEP   (int i, int j) const
+{ return HEPEVT.VHEP[i-1][j-1]; }
+
+// access to Herwig6 common-blocks
+// WARNING: Some arrays start in 1, others in 0. Look up the manual!
+
+// /HWBEAM/
+
+int         THerwig6::GetIPART1        () const     { return HWBEAM.IPART1; }
+int         THerwig6::GetIPART2        () const     { return HWBEAM.IPART2; }
+
+// /HWBMCH/
+char*       THerwig6::GetPART1         () const     { return HWBMCH.PART1; }
+char*       THerwig6::GetPART2         () const     { return HWBMCH.PART2; }
+
+
+// /HWPROC/
+double      THerwig6::GetEBEAM1        () const     { return HWPROC.EBEAM1; }
+double      THerwig6::GetEBEAM2        () const     { return HWPROC.EBEAM2; }
+double      THerwig6::GetPBEAM1        () const     { return HWPROC.PBEAM1; }
+double      THerwig6::GetPBEAM2        () const     { return HWPROC.PBEAM2; }
+int         THerwig6::GetIPROC         () const     { return HWPROC.IPROC; }
+int         THerwig6::GetMAXEV         () const     { return HWPROC.MAXEV; }
+
+// /HWPRAM/
+double      THerwig6::GetQCDLAM        () const     { return HWPRAM.QCDLAM; }
+void        THerwig6::SetQCDLAM   (double q)        { HWPRAM.QCDLAM = q; }
+double      THerwig6::GetVQCUT         () const     { return HWPRAM.VQCUT; }
+void        THerwig6::SetVQCUT    (double v)        { HWPRAM.VQCUT = v; }
+double      THerwig6::GetVGCUT         () const     { return HWPRAM.VGCUT; }
+void        THerwig6::SetVGCUT    (double v)        { HWPRAM.VGCUT = v; }
+double      THerwig6::GetVPCUT         () const     { return HWPRAM.VPCUT; }
+void        THerwig6::SetVPCUT    (double v)        { HWPRAM.VPCUT = v; }
+double      THerwig6::GetCLMAX         () const     { return HWPRAM.CLMAX; }
+void        THerwig6::SetCLMAX    (double c)        { HWPRAM.CLMAX = c; }
+double      THerwig6::GetCLPOW         () const     { return HWPRAM.CLPOW; }
+void        THerwig6::SetCLPOW    (double c)        { HWPRAM.CLPOW = c; }
+double      THerwig6::GetPSPLT    (int i) const     { return HWPRAM.PSPLT[i-1];}
+void        THerwig6::SetPSPLT    (int i, double p) { HWPRAM.PSPLT[i-1] = p;}
+double      THerwig6::GetQDIQK         () const     { return HWPRAM.QDIQK; }
+void        THerwig6::SetQDIQK    (double q)        { HWPRAM.QDIQK = q; }
+double      THerwig6::GetPDIQK         () const     { return HWPRAM.PDIQK; }
+void        THerwig6::SetPDIQK    (double p)        { HWPRAM.PDIQK = p; }
+double      THerwig6::GetQSPAC         () const     { return HWPRAM.QSPAC; }
+void        THerwig6::SetQSPAC    (double q)        { HWPRAM.QSPAC = q; }
+double      THerwig6::GetPTRMS         () const     { return HWPRAM.PTRMS; }
+void        THerwig6::SetPTRMS    (double p)        { HWPRAM.PTRMS = p; }
+double      THerwig6::GetENSOF         () const     { return HWPRAM.ENSOF; }
+void        THerwig6::SetENSOF    (double e)        { HWPRAM.ENSOF = e; }
+int         THerwig6::GetIPRINT        () const     { return HWPRAM.IPRINT; }
+void        THerwig6::SetIPRINT   (int i)           { HWPRAM.IPRINT = i; }
+int         THerwig6::GetMODPDF   (int i) const     { return HWPRAM.MODPDF[i-1];}
+void        THerwig6::SetMODPDF   (int i, int j)  { HWPRAM.MODPDF[i-1] = j; }
+int         THerwig6::GetNSTRU         () const     { return HWPRAM.NSTRU; }
+void        THerwig6::SetNSTRU    (int i)          { HWPRAM.NSTRU = i; }
+
+// /HWPRCH/
+char*       THerwig6::GetAUTPDF     (int i)         { return HWPRCH.AUTPDF[i-1]; }
+void        THerwig6::SetAUTPDF(int i,const char* s){ strncpy(HWPRCH.AUTPDF[i-1],s,20);}
+char*       THerwig6::GetBDECAY        ()           { return HWPRCH.BDECAY; }
+
+// /HWEVNT/
+double      THerwig6::GetAVWGT         () const     { return HWEVNT.AVWGT; }
+int         THerwig6::GetMAXPR         () const     { return HWEVNT.MAXPR; }
+void        THerwig6::SetMAXPR    (int i)           { HWEVNT.MAXPR = i; }
+int         THerwig6::GetMAXER         () const     { return HWEVNT.MAXER; }
+void        THerwig6::SetMAXER    (int i)           { HWEVNT.MAXER = i; }
+int         THerwig6::GetNRN      (int i) const     { return HWEVNT.NRN[i-1]; }
+void        THerwig6::SetNRN    (int i, int j)      { HWEVNT.NRN[i-1] = j; }
+double      THerwig6::GetEVWGT         () const     { return HWEVNT.EVWGT; }
+
+int         THerwig6::GetIDHW     (int i) const     { return HWEVNT.IDHW[i]; }
+
+int         THerwig6::GetIERROR        () const     { return HWEVNT.IERROR; }
+
+// /HWHARD/
+double      THerwig6::GetPTMIN         () const     { return HWHARD.PTMIN; }
+void        THerwig6::SetPTMIN    (double d)        { HWHARD.PTMIN = d; }
+double      THerwig6::GetPTMAX         () const     { return HWHARD.PTMAX; }
+void        THerwig6::SetPTMAX    (double d)        { HWHARD.PTMAX = d; }
+double      THerwig6::GetPTPOW         () const     { return HWHARD.PTPOW; }
+void        THerwig6::SetPTPOW    (double d)        { HWHARD.PTPOW = d; }
+double      THerwig6::GetYJMIN         () const     { return HWHARD.YJMIN; }
+void        THerwig6::SetYJMIN    (double d)        { HWHARD.YJMIN = d; }
+double      THerwig6::GetYJMAX         () const     { return HWHARD.YJMAX; }
+void        THerwig6::SetYJMAX    (double d)        { HWHARD.YJMAX = d; }
+double      THerwig6::GetQ2MIN         () const     { return HWHARD.Q2MIN; }
+void        THerwig6::SetQ2MIN    (double d)        { HWHARD.Q2MIN = d; }
+double      THerwig6::GetQ2MAX         () const     { return HWHARD.Q2MAX; }
+void        THerwig6::SetQ2MAX    (double d)        { HWHARD.Q2MAX = d; }
+double      THerwig6::GetYBMIN         () const     { return HWHARD.YBMIN; }
+void        THerwig6::SetYBMIN    (double d)        { HWHARD.YBMIN = d; }
+double      THerwig6::GetYBMAX         () const     { return HWHARD.YBMAX; }
+void        THerwig6::SetYBMAX    (double d)        { HWHARD.YBMAX = d; }
+double      THerwig6::GetZJMAX        ()  const     { return HWHARD.ZJMAX; }
+void        THerwig6::SetZJMAX    (double d)        { HWHARD.ZJMAX = d; }
+
+// /HWPROP/
+double      THerwig6::GetRMASS      (int i) const   { return HWPROP.RMASS[i]; }
+void        THerwig6::SetRMASS    (int i, double r) { HWPROP.RMASS[i] = r; }
+
+
+void        THerwig6::GetRNAME (int i, char a[9])   { for (int j=0;j<8;j++) a[j] = HWUNAM.RNAME[i][j]; a[8] = '\0';}
index 1f6e6b2..06d6246 100644 (file)
@@ -69,660 +69,6 @@ typedef enum
 
 class TObjArray;
 
-// Translation of Fortran commons from the Herwig6
-// f77 program into c++ structures to be used in ROOT
-// and declaration of Fortran functions as extern
-// C functions to be called from the class Herwig6
-// author: j. g. contreras jgcn@moni.mda.cinvestav.mx
-// date: december 22, 2000
-
-typedef struct {double dr,di;} dcpx;
-
-int const NMXHEP = 4000;
-
-typedef struct {
-  int NEVHEP;
-  int NHEP;
-  int ISTHEP[NMXHEP];
-  int IDHEP[NMXHEP];
-  int JMOHEP[NMXHEP][2];
-  int JDAHEP[NMXHEP][2];
-  double PHEP[NMXHEP][5];
-  double VHEP[NMXHEP][4];
-} Hepevt_t;
-
-typedef struct {
-  int IPART1;
-  int IPART2;
-} Hwbeam_t;
-
-typedef struct {
-  char PART1[8];
-  char PART2[8];
-} Hwbmch_t;
-
-typedef struct {
-  double EBEAM1;
-  double EBEAM2;
-  double PBEAM1;
-  double PBEAM2;
-  int    IPROC;
-  int    MAXEV;
-} Hwproc_t;
-
-typedef struct {
-  double AFCH[2][16];
-  double ALPHEM;
-  double B1LIM;
-  double BETAF;
-  double BTCLM;
-  double CAFAC;
-  double CFFAC;
-  double CLMAX;
-  double CLPOW;
-  double CLSMR[2];
-  double CSPEED;
-  double ENSOF;
-  double ETAMIX;
-  double F0MIX;
-  double F1MIX;
-  double F2MIX;
-  double GAMH;
-  double GAMW;
-  double GAMZ;
-  double GAMZP;
-  double GEV2NB;
-  double H1MIX;
-  double PDIQK;
-  double PGSMX;
-  double PGSPL[4];
-  double PHIMIX;
-  double PIFAC;
-  double PRSOF;
-  double PSPLT[2];
-  double PTRMS;
-  double PXRMS;
-  double QCDL3;
-  double QCDL5;
-  double QCDLAM;
-  double QDIQK;
-  double QFCH[16];
-  double QG;
-  double QSPAC;
-  double QV;
-  double SCABI;
-  double SWEIN;
-  double TMTOP;
-  double VFCH[2][16];
-  double VCKM[3][3];
-  double VGCUT;
-  double VQCUT;
-  double VPCUT;
-  double ZBINM;
-  double EFFMIN;
-  double OMHMIX;
-  double ET2MIX;
-  double PH3MIX;
-  double GCUTME;
-  int    IOPREM;
-  int    IPRINT;
-  int    ISPAC;
-  int    LRSUD;
-  int    LWSUD;
-  int    MODPDF[2];
-  int    NBTRY;
-  int    NCOLO;
-  int    NCTRY;
-  int    NDTRY;
-  int    NETRY;
-  int    NFLAV;
-  int    NGSPL;
-  int    NSTRU;
-  int    NSTRY;
-  int    NZBIN;
-  int    IOP4JT[2];
-  int    NPRFMT;
-  int AZSOFT;
-  int AZSPIN;
-  int CLDIR[2];
-  int HARDME;
-  int NOSPAC;
-  int PRNDEC;
-  int PRVTX;
-  int SOFTME;
-  int ZPRIME;
-  int PRNDEF;
-  int PRNTEX;
-  int PRNWEB;
-} Hwpram_t;
-
-typedef struct {
-  char AUTPDF[2][20];
-  char BDECAY[4];
-} Hwprch_t;
-
-int const NMXPAR = 500;
-
-typedef struct {
-  int  NEVPAR;
-  int  NPAR;
-  int  ISTPAR[NMXPAR];
-  int  IDPAR[NMXPAR];
-  int  JMOPAR[NMXPAR][2];
-  int  JDAPAR[NMXPAR][2];
-  double  PPAR[NMXPAR][5];
-  double  VPAR[NMXPAR][4];
-} Hwpart_t;
-
-typedef struct {
-  double DECPAR[NMXPAR][2];
-  double PHIPAR[NMXPAR][2];
-  double RHOPAR[NMXPAR][2];
-  int TMPAR[NMXPAR];
-} Hwparp_t;
-
-int const MODMAX = 50;
-
-typedef struct {
-  double  ALPFAC;
-  double  BRHIG[12];
-  double  ENHANC[12];
-  double  GAMMAX;
-  double  RHOHEP[NMXHEP][3];
-  int     IOPHIG;
-  int     MODBOS[MODMAX];
-} Hwbosc_t;
-
-typedef struct {
-  int     JCOPAR[NMXPAR][4];
-} Hwparc_t;
-
-typedef struct {
-  double ANOMSC[2][2];
-  double HARDST;
-  double PTINT[2][3];
-  double XFACT;
-  int    INHAD;
-  int    JNHAD;
-  int    NSPAC[7];
-  int    ISLENT;
-  int    BREIT;
-  int    FROST;
-  int    USECMF;
-} Hwbrch_t;
-
-typedef struct {
-  double AVWGT;
-  double EVWGT;
-  double GAMWT;
-  double TLOUT;
-  double WBIGST;
-  double WGTMAX;
-  double WGTSUM;
-  double WSQSUM;
-  int    IDHW[NMXHEP];
-  int    IERROR;
-  int    ISTAT;
-  int    LWEVT;
-  int    MAXER;
-  int    MAXPR;
-  int    NOWGT;
-  int    NRN[2];
-  int    NUMER;
-  int    NUMERU;
-  int    NWGTS;
-  int    GENSOF;
-  int    EV1PR;
-  int    EV2PR;
-} Hwevnt_t;
-
-typedef struct {
-  double ASFIXD;
-  double CLQ[6][7];
-  double COSS;
-  double COSTH;
-  double CTMAX;
-  double DISF[2][13];
-  double EMLST;
-  double EMMAX;
-  double EMMIN;
-  double EMPOW;
-  double EMSCA;
-  double EPOLN[3];
-  double GCOEF[7];
-  double GPOLN;
-  double OMEGA0;
-  double PHOMAS;
-  double PPOLN[3];
-  double PTMAX;
-  double PTMIN;
-  double PTPOW;
-  double Q2MAX;
-  double Q2MIN;
-  double Q2POW;
-  double Q2WWMN;
-  double Q2WWMX;
-  double QLIM;
-  double SINS;
-  double THMAX;
-  double Y4JT;
-  double TMNISR;
-  double TQWT;
-  double XX[2];
-  double XLMIN;
-  double XXMIN;
-  double YBMAX;
-  double YBMIN;
-  double YJMAX;
-  double YJMIN;
-  double YWWMAX;
-  double YWWMIN;
-  double WHMIN;
-  double ZJMAX;
-  double ZMXISR;
-  int    IAPHIG;
-  int    IBRN[2];
-  int    IBSH;
-  int    ICO[10];
-  int    IDCMF;
-  int    IDN[10];
-  int    IFLMAX;
-  int    IFLMIN;
-  int    IHPRO;
-  int    IPRO;
-  int    MAPQ[10];
-  int    MAXFL;
-  int    BGSHAT;
-  int    COLISR;
-  int    FSTEVT;
-  int    FSTWGT;
-  int    GENEV;
-  int    HVFCEN;
-  int    TPOL;
-  int     DURHAM;
-} Hwhard_t;
-
-int const NMXRES = 500;
-
-typedef struct {
-  double RLTIM[NMXRES+1];
-  double RMASS[NMXRES+1];
-  double RSPIN[NMXRES+1];
-  int    ICHRG[NMXRES+1];
-  int    IDPDG[NMXRES+1];
-  int    IFLAV[NMXRES+1];
-  int    NRES;
-  int    VTOCDK[NMXRES+1];
-  int    VTORDK[NMXRES+1];
-  int    QORQQB[NMXRES+1];
-  int    QBORQQ[NMXRES+1];
-} Hwprop_t;
-
-typedef struct {
-  char RNAME[NMXRES+1][8];
-  char TXNAME[NMXRES+1][2][37];
-} Hwunam_t;
-
-int const NMXDKS = 4000;
-int const NMXMOD = 200;
-
-typedef struct {
-  double BRFRAC[NMXDKS];
-  double CMMOM[NMXDKS];
-  double DKLTM[NMXRES];
-  int    IDK[NMXDKS];
-  int    IDKPRD[NMXDKS][5];
-  int    LNEXT[NMXDKS];
-  int    LSTRT[NMXRES];
-  int    NDKYS;
-  int    NME[NMXDKS];
-  int    NMODES[NMXRES];
-  int    NPRODS[NMXDKS];
-  int    DKPSET;
-  int    RSTAB[NMXRES+1];
-} Hwupdt_t;
-
-typedef struct {
-  double REPWT[5][4][4];
-  double SNGWT;
-  double DECWT;
-  double QWT[3];
-  double PWT[12];
-  double SWTEF[NMXRES];
-} Hwuwts_t;
-
-int const NMXCDK = 4000;
-
-typedef struct {
-  double CLDKWT[NMXCDK];
-  double CTHRPW[12][12];
-  double PRECO;
-  double RESN[12][12];
-  double RMIN[12][12];
-  int    LOCN[12][12];
-  int    NCLDK[NMXCDK];
-  int    NRECO;
-  int    CLRECO;
-} Hwuclu_t;
-
-typedef struct {
-  double EXAG;
-  double GEV2MM;
-  double HBAR;
-  double PLTCUT;
-  double VMIN2;
-  double VTXPIP[5];
-  double XMIX[2];
-  double XMRCT[2];
-  double YMIX[2];
-  double YMRCT[2];
-  int    IOPDKL;
-  int    MAXDKL;
-  int    MIXING;
-  int    PIPSMR;
-} Hwdist_t;
-
-int const NMXQDK=20;
-
-typedef struct {
-  double VTXQDK[NMXQDK][4];
-  int    IMQDK[NMXQDK];
-  int    LOCQ[NMXQDK];
-  int    NQDK;
-} Hwqdks_t;
-
-int const NMXSUD = 1024;
-
-typedef struct {
-  double ACCUR;
-  double QEV[6][NMXSUD];
-  double SUD[6][NMXSUD];
-  int    INTER;
-  int    NQEV;
-  int    NSUD;
-  int    SUDORD;
-} Hwusud_t;
-
-typedef struct {
-  double TANB;
-  double ALPHAH;
-  double COSBPA;
-  double SINBPA;
-  double COSBMA;
-  double SINBMA;
-  double COSA;
-  double SINA;
-  double COSB;
-  double SINB;
-  double COTB;
-  double ZMIXSS[4][4];
-  double ZMXNSS[4][4];
-  double ZSGNSS[4];
-  double LFCH[16];
-  double RFCH[16];
-  double SLFCH[4][16];
-  double SRFCH[4][16];
-  double WMXUSS[2][2];
-  double WMXVSS[2][2];
-  double WSGNSS[2];
-  double QMIXSS[2][2][6];
-  double LMIXSS[2][2][6];
-  double THETAT;
-  double THETAB;
-  double THETAL;
-  double ATSS;
-  double ABSS;
-  double ALSS;
-  double MUSS;
-  double FACTSS;
-  double GHWWSS[3];
-  double GHZZSS[3];
-  double GHDDSS[4];
-  double GHUUSS[4];
-  double GHWHSS[3];
-  double GHSQSS[2][2][6][4];
-  double XLMNSS;
-  double RMMNSS;
-  double DMSSM;
-  double SENHNC[24];
-  double SSPARITY;
-  int    SUSYIN;
-} Hwsusy_t;
-
-typedef struct {
-  double LAMDA1[3][3][3];
-  double LAMDA2[3][3][3];
-  double LAMDA3[3][3][3];
-  int    HRDCOL[5][2];
-  int    RPARTY;
-  int    COLUPD;
-} Hwrpar_t;
-
-typedef struct {
-  double PMBN1;
-  double PMBN2;
-  double PMBN3;
-  double PMBK1;
-  double PMBK2;
-  double PMBM1;
-  double PMBM2;
-  double PMBP1;
-  double PMBP2;
-  double PMBP3;
-} Hwminb_t;
-
-int const NMXCL = 500;
-
-typedef struct {
-  double PPCL[NMXCL][5];
-  int    IDCL[NMXCL];
-  int    NCL;
-} Hwclus_t;
-
-// herwig 6.507
-
-typedef struct {
-  double GRVLAM;
-  double EMGRV;
-  double GAMGRV;
-} Hwgrav_t;
-
-typedef struct {
-  double VIPWID[3];
-  double DXRCYL;
-  double DXZMAX;
-  double DXRSPH;
-  int     WZRFR;
-  int     FIX4JT;
-  int     IMSSM;
-  int     IHIGGS;
-  int     PARITY;
-  int     LRSUSY;
-} Hw6202_t;
-
-typedef struct {
-  double ABWGT;
-  double ABWSUM;
-  double AVABW;
-  int     NNEGWT;
-  int     NNEGEV;
-  int     NEGWTS;
-} Hw6203_t;
-
-int const IMAXCH = 20;
-
-typedef struct {
-  double MJJMIN;
-  double CHNPRB[IMAXCH];
-  int     IOPSTP;
-  int     IOPSH;
-  int     OPTM;
-  int     CHON[IMAXCH];
-} Hw6300_t;
-
-
-int const NXMRS = 49;
-int const NQMRS = 37;
-int const NPMRS = 8;
-
-typedef struct {
-  double FMRS[NQMRS+1][NXMRS][NPMRS][3];
-} Hwpmrs_t;
-
-typedef struct {
-  int     CIRCOP;
-  int     CIRCAC;
-  int     CIRCVR;
-  int     CIRCRV;
-  int     CIRCCH;
-} Hwcirc_t;
-
-int const NCFMAX = 3;
-int const NMODE2 = 500;
-int const NMODE3 = 500;
-int const NDIAGR = 8;
-int const NMODEB = 50;
-int const NMODE4 = 4;
-
-typedef struct {
-  double ABMODE[NMODEB][2];
-  double BBMODE[NMODEB][12][2];
-  double PBMODE[NMODEB][12];
-  double WTBMAX[NMODEB][12];
-  int     IDBPRT[NMODEB];
-  int     IBDRTP[NMODEB];
-  int     IBMODE[NMODEB];
-  int     NBMODE;
-} Hwdspb_t;
-
-typedef struct {
-  double A2MODE[NMODE2][2];
-  double P2MODE[NMODE2];
-  double WT2MAX[NMODE2];
-  int     ID2PRT[NMODE2];
-  int     I2DRTP[NMODE2];
-  int     N2MODE;
-} Hwdsp2_t;
-
-typedef struct {
-  double A3MODE[NMODE3][NDIAGR][2];
-  double B3MODE[NMODE3][NDIAGR][2];
-  double P3MODE[NMODE3];
-  double WT3MAX[NMODE3];
-  double SPN3CF[NMODE3][NCFMAX][NCFMAX];
-  int     ID3PRT[NMODE3];
-  int     I3MODE[NMODE3][NDIAGR];
-  int     I3DRTP[NMODE3][NDIAGR];
-  int     N3MODE;
-  int     NDI3BY[NMODE3];
-  int     N3NCFL[NMODE3];
-  int     I3DRCF[NMODE3][NDIAGR];
-} Hwdsp3_t;
-
-typedef struct {
-  double A4MODE[NMODE4][12][2];
-  double B4MODE[NMODE4][12][2];
-  double P4MODE[NMODE4][12][12];
-  double WT4MAX[NMODE4][12][12];
-  int     ID4PRT[NMODE4];
-  int     I4MODE[NMODE4][2];
-  int     N4MODE;
-} Hwdsp4_t;
-
-typedef struct {
-  int     NDECSY;
-  int     NSEARCH;
-  int     LRDEC;
-  int     LWDEC;
-  int     SYSPIN;
-  int     THREEB;
-  int     FOURB;
-  char   TAUDEC[6];
-} Hwdspn_t;
-
-int const NMXSPN = 50;
-
-typedef struct {
-  dcpx   MESPN[NMXSPN][NCFMAX][2][2][2][2];
-  dcpx   RHOSPN[NMXSPN][2][2];
-  double SPNCFC[NMXSPN][NCFMAX][NCFMAX];
-  int     IDSPN[NMXSPN];
-  int     JMOSPN[NMXSPN];
-  int     JDASPN[NMXSPN][2];
-  int     NSPN;
-  int     ISNHEP[NMXHEP];
-  int     NSNTRY;
-  int     DECSPN[NMXSPN];
-  int     NCFL[NMXSPN];
-  int     SPCOPT;
-} Hwspin_t;
-
-typedef struct {
-  int     JAK1;
-  int     JAK2;
-  int     ITDKRC;
-  int     IFPHOT;
-} Hwstau_t;
-
-int const MAXHRP = 100;
-
-typedef struct {
-  double LHWGT[MAXHRP];
-  double LHWGTS[MAXHRP];
-  double LHXSCT[MAXHRP];
-  double LHXERR[MAXHRP];
-  double LHXMAX[MAXHRP];
-  double LHMXSM;
-  int     LHIWGT[MAXHRP];
-  int     LHNEVT[MAXHRP];
-  int     ITYPLH;
-  int     LHSOFT;
-  int     LHGLSF;
-} Hwgupr_t;
-
-typedef struct {
-  int    PRESPL;
-} Hw6500_t;
-
-typedef struct {
-  int    ITOPRD;
-} Hw6504_t;
-
-typedef struct {
-  double PDFX0;
-  double PDFPOW;
-} Hw6506_t;
-
-
-
-
-extern "C" {
-  void  hwigin_();
-  void  hwuinc_();
-  void  hwusta_(const char * name, int);
-  void  hweini_();
-  void  hwuine_();
-  void  hwepro_();
-  void  hwbgen_();
-  void  hwdhob_();
-  void  hwcfor_();
-  void  hwcdec_();
-  void  hwdhad_();
-  void  hwdhvy_();
-  void  hwmevt_();
-  void  hwufne_();
-  void  hwefin_();
-  void  hwiodk_(int);
-}
-
-// JIMMY4.2
-extern "C" {
-  void  jimmin_();
-  void  jminit_();
-  void  jmefin_();
-}
-
-
 
 
 
@@ -742,180 +88,98 @@ public:
   virtual ~THerwig6();
 
   // acces to hep common block
-  Hepevt_t*   GetHepevt        () const     { return fHepevt; }
-  int         GetNEVHEP        () const     { return fHepevt->NEVHEP; }
-  int         GetNhep          () const     { return fHepevt->NHEP; }
-  int         GetISTHEP    (int i)const     { return fHepevt->ISTHEP[i-1]; }
-  int         GetIDHEP     (int i)const     { return fHepevt->IDHEP[i-1]; }
-  int         GetJMOHEP (int i, int j) const
-    { return fHepevt->JMOHEP[i-1][j-1]; }
-  int         GetJDAHEP (int i, int j) const
-    { return fHepevt->JDAHEP[i-1][j-1]; }
-  double      GetPHEP   (int i, int j) const
-    { return fHepevt->PHEP[i-1][j-1]; }
-  double      GetVHEP   (int i, int j) const
-    { return fHepevt->VHEP[i-1][j-1]; }
-
-  // access to Herwig6 common-blocks
-  // WARNING: Some arrays start in 1, others in 0. Look up the manual!
-
-  // /HWBEAM/
-
-  Hwbeam_t*   GetHwbeam        ()           { return fHwbeam; }
-  int         GetIPART1        () const     { return fHwbeam->IPART1; }
-  int         GetIPART2        () const     { return fHwbeam->IPART2; }
-
-  // /HWBMCH/
-  Hwbmch_t*   GetHwbmch        ()           { return fHwbmch; }
-  char*       GetPART1         () const     { return fHwbmch->PART1; }
-  char*       GetPART2         () const     { return fHwbmch->PART2; }
-
-
-  // /HWPROC/
-  Hwproc_t*   GetHwproc        ()           { return fHwproc; }
-  double      GetEBEAM1        () const     { return fHwproc->EBEAM1; }
-  double      GetEBEAM2        () const     { return fHwproc->EBEAM2; }
-  double      GetPBEAM1        () const     { return fHwproc->PBEAM1; }
-  double      GetPBEAM2        () const     { return fHwproc->PBEAM2; }
-  int         GetIPROC         () const     { return fHwproc->IPROC; }
-  int         GetMAXEV         () const     { return fHwproc->MAXEV; }
-
-  // /HWPRAM/
-  Hwpram_t*   GetHwpram        ()           { return fHwpram; }
-  double      GetQCDLAM        () const     { return fHwpram->QCDLAM; }
-  void        SetQCDLAM   (double q)        { fHwpram->QCDLAM = q; }
-  double      GetVQCUT         () const     { return fHwpram->VQCUT; }
-  void        SetVQCUT    (double v)        { fHwpram->VQCUT = v; }
-  double      GetVGCUT         () const     { return fHwpram->VGCUT; }
-  void        SetVGCUT    (double v)        { fHwpram->VGCUT = v; }
-  double      GetVPCUT         () const     { return fHwpram->VPCUT; }
-  void        SetVPCUT    (double v)        { fHwpram->VPCUT = v; }
-  double      GetCLMAX         () const     { return fHwpram->CLMAX; }
-  void        SetCLMAX    (double c)        { fHwpram->CLMAX = c; }
-  double      GetCLPOW         () const     { return fHwpram->CLPOW; }
-  void        SetCLPOW    (double c)        { fHwpram->CLPOW = c; }
-  double      GetPSPLT    (int i) const     { return fHwpram->PSPLT[i-1];}
-  void        SetPSPLT    (int i, double p) { fHwpram->PSPLT[i-1] = p;}
-  double      GetQDIQK         () const     { return fHwpram->QDIQK; }
-  void        SetQDIQK    (double q)        { fHwpram->QDIQK = q; }
-  double      GetPDIQK         () const     { return fHwpram->PDIQK; }
-  void        SetPDIQK    (double p)        { fHwpram->PDIQK = p; }
-  double      GetQSPAC         () const     { return fHwpram->QSPAC; }
-  void        SetQSPAC    (double q)        { fHwpram->QSPAC = q; }
-  double      GetPTRMS         () const     { return fHwpram->PTRMS; }
-  void        SetPTRMS    (double p)        { fHwpram->PTRMS = p; }
-  double      GetENSOF         () const     { return fHwpram->ENSOF; }
-  void        SetENSOF    (double e)        { fHwpram->ENSOF = e; }
-  int         GetIPRINT        () const     { return fHwpram->IPRINT; }
-  void        SetIPRINT   (int i)           { fHwpram->IPRINT = i; }
-  int         GetMODPDF   (int i) const     { return fHwpram->MODPDF[i-1];}
-  void        SetMODPDF   (int i, int j)  { fHwpram->MODPDF[i-1] = j; }
-  int         GetNSTRU         () const     { return fHwpram->NSTRU; }
-  void        SetNSTRU    (int i)          { fHwpram->NSTRU = i; }
-
-  // /HWPRCH/
-  Hwprch_t*   GetHwprch        ()           { return fHwprch; }
-  char*       GetAUTPDF     (int i)         { return fHwprch->AUTPDF[i-1]; }
-  void        SetAUTPDF(int i,const char* s){ strncpy(fHwprch->AUTPDF[i-1],s,20);}
-  char*       GetBDECAY        ()           { return fHwprch->BDECAY; }
-
-  // /HWPART/
-  Hwpart_t*   GetHwpart        ()           { return fHwpart; }
-
-  // /HWPARP/
-  Hwparp_t*   GetHwparp        ()           { return fHwparp; }
-
-  // /HWBOSC/
-  Hwbosc_t*   GetHwbosc        ()           { return fHwbosc; }
-
-  // /HWPARC/
-  Hwparc_t*   GetHwparc        ()           { return fHwparc; }
-
-  // /HWBRCH/
-  Hwbrch_t*   GetHwbrch        ()           { return fHwbrch; }
-
-  // /HWEVNT/
-  Hwevnt_t*   GetHwevnt        ()           { return fHwevnt; }
-  double      GetAVWGT         () const     { return fHwevnt->AVWGT; }
-  int         GetMAXPR         () const     { return fHwevnt->MAXPR; }
-  void        SetMAXPR    (int i)           { fHwevnt->MAXPR = i; }
-
-  void        SetEV1PR    (int i)           { fHwevnt->EV1PR = i; }
-  void        SetEV2PR    (int i)           { fHwevnt->EV2PR = i; }
-
-  int         GetMAXER         () const     { return fHwevnt->MAXER; }
-  void        SetMAXER    (int i)           { fHwevnt->MAXER = i; }
-  int         GetNRN      (int i) const     { return fHwevnt->NRN[i-1]; }
-  void        SetNRN    (int i, int j)      { fHwevnt->NRN[i-1] = j; }
-  double      GetEVWGT         () const     { return fHwevnt->EVWGT; }
-
-  int         GetIDHW     (int i) const     { return fHwevnt->IDHW[i]; }
-
-  int         GetIERROR        () const     { return fHwevnt->IERROR; }
+  int         GetNEVHEP        () const;
+  int         GetNhep          () const;
+  int         GetISTHEP    (int i)const;
+  int         GetIDHEP     (int i)const;
+  int         GetJMOHEP (int i, int j) const;
+  int         GetJDAHEP (int i, int j) const;
+  double      GetPHEP   (int i, int j) const;
+  double      GetVHEP   (int i, int j) const;
+  int         GetIPART1        () const;
+  int         GetIPART2        () const;
+  char*       GetPART1         () const;
+  char*       GetPART2         () const;
+  double      GetEBEAM1        () const;
+  double      GetEBEAM2        () const;
+  double      GetPBEAM1        () const;
+  double      GetPBEAM2        () const;
+  int         GetIPROC         () const;
+  int         GetMAXEV         () const;
+  double      GetQCDLAM        () const;    
+  void        SetQCDLAM   (double q);       
+  double      GetVQCUT         () const;    
+  void        SetVQCUT    (double v);       
+  double      GetVGCUT         () const;    
+  void        SetVGCUT    (double v);       
+  double      GetVPCUT         () const;    
+  void        SetVPCUT    (double v);       
+  double      GetCLMAX         () const;    
+  void        SetCLMAX    (double c);       
+  double      GetCLPOW         () const;    
+  void        SetCLPOW    (double c);       
+  double      GetPSPLT    (int i) const;    
+  void        SetPSPLT    (int i, double p);
+  double      GetQDIQK         () const;
+  void        SetQDIQK    (double q);
+  double      GetPDIQK         () const;
+  void        SetPDIQK    (double p);   
+  double      GetQSPAC         () const;
+  void        SetQSPAC    (double q);   
+  double      GetPTRMS         () const;
+  void        SetPTRMS    (double p);   
+  double      GetENSOF         () const;
+  void        SetENSOF    (double e);   
+  int         GetIPRINT        () const;
+  void        SetIPRINT   (int i);      
+  int         GetMODPDF   (int i) const;
+  void        SetMODPDF   (int i, int j);
+  int         GetNSTRU         () const; 
+  void        SetNSTRU    (int i);       
+  char*       GetAUTPDF     (int i);         
+  void        SetAUTPDF(int i,const char* s);
+  char*       GetBDECAY        ();           
+  double      GetAVWGT         () const;
+  int         GetMAXPR         () const;
+  void        SetMAXPR    (int i);      
+  int         GetMAXER         () const;
+  void        SetMAXER    (int i);      
+  int         GetNRN      (int i) const;
+  void        SetNRN    (int i, int j); 
+  double      GetEVWGT         () const;
+
+  int         GetIDHW     (int i) const;
+
+  int         GetIERROR        () const;
 
   // /HWHARD/
-  Hwhard_t*   GetHwhard        ()           { return fHwhard; }
-  double      GetPTMIN         () const     { return fHwhard->PTMIN; }
-  void        SetPTMIN    (double d)        { fHwhard->PTMIN = d; }
-  double      GetPTMAX         () const     { return fHwhard->PTMAX; }
-  void        SetPTMAX    (double d)        { fHwhard->PTMAX = d; }
-  double      GetPTPOW         () const     { return fHwhard->PTPOW; }
-  void        SetPTPOW    (double d)        { fHwhard->PTPOW = d; }
-  double      GetYJMIN         () const     { return fHwhard->YJMIN; }
-  void        SetYJMIN    (double d)        { fHwhard->YJMIN = d; }
-  double      GetYJMAX         () const     { return fHwhard->YJMAX; }
-  void        SetYJMAX    (double d)        { fHwhard->YJMAX = d; }
-  double      GetQ2MIN         () const     { return fHwhard->Q2MIN; }
-  void        SetQ2MIN    (double d)        { fHwhard->Q2MIN = d; }
-  double      GetQ2MAX         () const     { return fHwhard->Q2MAX; }
-  void        SetQ2MAX    (double d)        { fHwhard->Q2MAX = d; }
-  double      GetYBMIN         () const     { return fHwhard->YBMIN; }
-  void        SetYBMIN    (double d)        { fHwhard->YBMIN = d; }
-  double      GetYBMAX         () const     { return fHwhard->YBMAX; }
-  void        SetYBMAX    (double d)        { fHwhard->YBMAX = d; }
-  double      GetZJMAX        ()  const     { return fHwhard->ZJMAX; }
-  void        SetZJMAX    (double d)        { fHwhard->ZJMAX = d; }
+  double      GetPTMIN         () const;
+  void        SetPTMIN    (double d);
+  double      GetPTMAX         () const;
+  void        SetPTMAX    (double d);
+  double      GetPTPOW         () const;
+  void        SetPTPOW    (double d);
+  double      GetYJMIN         () const;
+  void        SetYJMIN    (double d);
+  double      GetYJMAX         () const;
+  void        SetYJMAX    (double d);
+  double      GetQ2MIN         () const;
+  void        SetQ2MIN    (double d);
+  double      GetQ2MAX         () const;
+  void        SetQ2MAX    (double d);
+  double      GetYBMIN         () const;
+  void        SetYBMIN    (double d);
+  double      GetYBMAX         () const;
+  void        SetYBMAX    (double d);
+  double      GetZJMAX        ()  const;
+  void        SetZJMAX    (double d);
 
   // /HWPROP/
-  Hwprop_t*   GetHwprop        ()  const    { return fHwprop; }
-  double      GetRMASS      (int i) const   { return fHwprop->RMASS[i]; }
-  void        SetRMASS    (int i, double r) { fHwprop->RMASS[i] = r; }
+  double      GetRMASS      (int i) const;
+  void        SetRMASS    (int i, double r);
 
-  // /HWUNAM/
-  Hwunam_t*   GetHwunam        ()  const    { return fHwunam; }
 
-  void        GetRNAME (int i, char a[9])   { for (int j=0;j<8;j++) a[j] = fHwunam->RNAME[i][j]; a[8] = '\0';}
-/*  char*       GetRNAME(int i) { return fHwunam->RNAME[i]; }*/
-
-  // /HWUPDT/
-  Hwupdt_t*   GetHwupdt        ()  const    { return fHwupdt; }
-
-  // /HWUWTS/
-  Hwuwts_t*   GetHwuwts        ()  const    { return fHwuwts; }
-
-  // /HWUCLU/
-  Hwuclu_t*   GetHwuclu        ()  const    { return fHwuclu; }
-
-  // /HWDIST/
-  Hwdist_t*   GetHwdist        ()  const    { return fHwdist; }
-
-  // /HWQDKT/
-  Hwqdks_t*   GetHwqdkt        ()  const    { return fHwqdks; }
-
-  // /HWUSUD/
-  Hwusud_t*   GetHwusud        ()  const    { return fHwusud; }
-
-  // /HWSUSY/
-  Hwsusy_t*   GetHwsusy        ()  const    { return fHwsusy; }
-
-  // /HWRPAR/
-  Hwrpar_t*   GetHwrpar        ()  const    { return fHwrpar; }
-
-  // /HWMINB/
-  Hwminb_t*   GetHwminb        ()  const    { return fHwminb; }
-
-  // /HWCLUS/
-  Hwclus_t*   GetHwclus        ()  const    { return fHwclus; }
+  void        GetRNAME (int i, char a[9]);
 
   // Herwig6 routines
   // the user would call
@@ -953,56 +217,12 @@ public:
   void             Hwefin();
   void             Hwiodk(int iopt);
   void             SetupTest();
+  void             PrintEvt();
  // Jimmy subroutines:
   void             Jminit();
   void             Jimmin();
   void             Jmefin();
 protected:
-
-  Hepevt_t* fHepevt; // Standard hep common block
-  // Herwig6 common-blocks
-  Hwbeam_t* fHwbeam; // Beams, process and number of events
-  Hwbmch_t* fHwbmch; // Beams, process and number of events
-  Hwproc_t* fHwproc; // Beams, process and number of events
-  Hwpram_t* fHwpram; // Basic parameters (and quantities derived from them)
-  Hwprch_t* fHwprch; // Basic parameters (and quantities derived from them)
-  Hwpart_t* fHwpart; // Parton shower common
-  Hwparp_t* fHwparp; // Parton polarization common
-  Hwbosc_t* fHwbosc; // Electroweak boson common
-  Hwparc_t* fHwparc; // Parton colour common
-  Hwbrch_t* fHwbrch; // Branching common
-  Hwevnt_t* fHwevnt; // Event common
-  Hwhard_t* fHwhard; // Hard subprocess common
-  Hwprop_t* fHwprop; // Particle properties
-  Hwunam_t* fHwunam; // Particle properties
-  Hwupdt_t* fHwupdt; // Particle decays
-  Hwuwts_t* fHwuwts; // Weights used in cluster decays
-  Hwuclu_t* fHwuclu; // Parameters for cluster decays
-  Hwdist_t* fHwdist; // Variables controling mixing and vertex information
-  Hwqdks_t* fHwqdks; // Arrays for temporarily storing heavy-b,c-hadrons decaying partonicaly
-  Hwusud_t* fHwusud; // Parameters for Sudakov form factors
-  Hwsusy_t* fHwsusy; // SUSY parameters
-  Hwrpar_t* fHwrpar; // R-Parity violating parameters and colours
-  Hwminb_t* fHwminb; // Parameters for minimum bias/soft underlying event
-  Hwclus_t* fHwclus; // Cluster common used by soft event routines
-  Hwgrav_t* fHwgrav;
-  Hw6202_t* fHw6202;
-  Hw6203_t* fHw6203;
-  Hw6300_t* fHw6300;
-  Hwpmrs_t* fHwpmrs;
-  Hwcirc_t* fHwcirc;
-  Hwdspb_t* fHwdspb;
-  Hwdsp2_t* fHwdsp2;
-  Hwdsp3_t* fHwdsp3;
-  Hwdsp4_t* fHwdsp4;
-  Hwdspn_t* fHwdspn;
-  Hwspin_t* fHwspin;
-  Hwstau_t* fHwstau;
-  Hwgupr_t* fHwgupr;
-  Hw6500_t* fHw6500;
-  Hw6504_t* fHw6504;
-  Hw6506_t* fHw6506;
-
   ClassDef(THerwig6,0)  //Interface to Herwig6.1 Event Generator
 };