/* declarations from ROOT */
#include "TGenerator.h"
+
+typedef enum
+{
+ kHwCharm = 1704,
+ kHwBeauty = 1705,
+ kHwCharmMCATNLO = -1704,
+ kHwBeautyMCATNLO = -1705,
+ kHwJetsMCATNLO = -1396
+} Process_t;
+
class TObjArray;
// Translation of Fortran commons from the Herwig6
// author: j. g. contreras jgcn@moni.mda.cinvestav.mx
// date: december 22, 2000
-int const NMXHEP = 2000;
+typedef struct {double dr,di;} dcpx;
+
+int const NMXHEP = 4000;
typedef struct {
int NEVHEP;
double VFCH[2][16];
double VCKM[3][3];
double VGCUT;
- double VQCUT;
+ double VQCUT;
double VPCUT;
double ZBINM;
double EFFMIN;
int TMPAR[NMXPAR];
} Hwparp_t;
-int const MODMAX = 5;
+int const MODMAX = 50;
typedef struct {
double ALPFAC;
int NUMERU;
int NWGTS;
int GENSOF;
+ int EV1PR;
+ int EV2PR;
} Hwevnt_t;
typedef struct {
double HBAR;
double PLTCUT;
double VMIN2;
- double VTXPIP[4];
+ double VTXPIP[5];
double XMIX[2];
double XMRCT[2];
double YMIX[2];
double COTB;
double ZMIXSS[4][4];
double ZMXNSS[4][4];
- double ZSGNSS[4];
+ double ZSGNSS[4];
double LFCH[16];
double RFCH[16];
double SLFCH[4][16];
- double SRFCH[4][16];
+ double SRFCH[4][16];
double WMXUSS[2][2];
- double WMXVSS[2][2];
+ double WMXVSS[2][2];
double WSGNSS[2];
double QMIXSS[2][2][6];
double LMIXSS[2][2][6];
double GHSQSS[2][2][6][4];
double XLMNSS;
double RMMNSS;
- double IMSSM;
+ double DMSSM;
double SENHNC[24];
double SSPARITY;
int SUSYIN;
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 hwmevt_();
void hwufne_();
void hwefin_();
+ void hwiodk_(int);
}
+// JIMMY4.2
+extern "C" {
+ void jimmin_();
+ void jminit_();
+ void jmefin_();
+}
public:
// ****** constructors and destructor
THerwig6();
- THerwig6(const THerwig6 & source): TGenerator(source) {
- Fatal("THerwig6","Copy constructor not implemented yet");
- }
+ THerwig6(const THerwig6 & source);
THerwig6 & operator=(const THerwig6 & /*source*/) {
Fatal("THerwig6","Assignment operator not implemented yet");
return *this;
// acces to hep common block
Hepevt_t* GetHepevt () const { return fHepevt; }
- int GetNevhep () const { return fHepevt->NEVHEP; }
+ 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
+ int GetJMOHEP (int i, int j) const
{ return fHepevt->JMOHEP[i-1][j-1]; }
- int GetJDAHEP (int i, int j) const
+ 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]; }
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 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; }
+ 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];}
// /HWPART/
Hwpart_t* GetHwpart () { return fHwpart; }
-
+
// /HWPARP/
Hwparp_t* GetHwparp () { return fHwparp; }
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; }
// /HWHARD/
Hwhard_t* GetHwhard () { return fHwhard; }
// /HWUNAM/
Hwunam_t* GetHwunam () { 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 () { return fHwupdt; }
// /HWCLUS/
Hwclus_t* GetHwclus () { return fHwclus; }
- // Herwig6 routines
- // the user would call
+ // Herwig6 routines
+ // the user would call
// Initialize
// change by himself the parameters s/he wants
// Hwusta to make stable the particles s/he wants
void GenerateEvent();
void Initialize(const char *beam, const char *target, double pbeam1, double pbeam2, int iproc);
+ void InitializeJimmy(const char *beam, const char *target, double pbeam1, double pbeam2, int iproc);
void PrepareRun();
+ void PrepareRunJimmy();
void OpenFortranFile(int lun, char* name);
void CloseFortranFile(int lun);
Int_t ImportParticles(TClonesArray *particles, Option_t *option="");
void Hwmevt();
void Hwufne();
void Hwefin();
+ void Hwiodk(int iopt);
void SetupTest();
+ // Jimmy subroutines:
+ void Jminit();
+ void Jimmin();
+ void Jmefin();
protected:
Hepevt_t* fHepevt; // Standard hep common block
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
+ 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
+ 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
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
};