diff --git a/Models/DarkMatter/DMModel.cc b/Models/DarkMatter/DMModel.cc new file mode 100644 --- /dev/null +++ b/Models/DarkMatter/DMModel.cc @@ -0,0 +1,56 @@ +// -*- C++ -*- +// +// This is the implementation of the non-inlined, non-templated member +// functions of the DMModel class. +// + +#include "DMModel.h" +#include "ThePEG/Interface/ClassDocumentation.h" +#include "ThePEG/EventRecord/Particle.h" +#include "ThePEG/Repository/UseRandom.h" +#include "ThePEG/Repository/EventGenerator.h" +#include "ThePEG/Utilities/DescribeClass.h" +#include "ThePEG/Persistency/PersistentOStream.h" +#include "ThePEG/Persistency/PersistentIStream.h" + +using namespace Herwig; + +DMModel::DMModel() {} + +IBPtr DMModel::clone() const { + return new_ptr(*this); +} + +IBPtr DMModel::fullclone() const { + return new_ptr(*this); +} + +void DMModel::persistentOutput(PersistentOStream & os) const { +} + +void DMModel::persistentInput(PersistentIStream & is, int) { +} + + +// The following static variable is needed for the type +// description system in ThePEG. +DescribeClass +describeHerwigDMModel("Herwig::DMModel", "HwDMModel.so"); + +void DMModel::Init() { + + static ClassDocumentation documentation + ("The DMModel class is designed to implement a simple dark matter model" + " with fermionic dark matter and a vector mediator, " + "as described in arXiv:1911.11147", + "The DMModel class is designed to implement a simple dark matter model" + " with fermionic dark matter and a vector mediator, " + "as described in \\cite{Plehn:2019jeo}", + "\\bibitem{Plehn:2019jeo}" + "T.~Plehn, P.~Reimitz and P.~Richardson," + "%``Hadronic Footprint of GeV-Mass Dark Matter,''" + "arXiv:1911.11147 [hep-ph]." + "%%CITATION = ARXIV:1911.11147;%%"); + +} + diff --git a/Models/DarkMatter/DMModel.fh b/Models/DarkMatter/DMModel.fh new file mode 100644 --- /dev/null +++ b/Models/DarkMatter/DMModel.fh @@ -0,0 +1,18 @@ +// -*- C++ -*- +// +// This is the forward declaration of the DMModel class. +// +#ifndef Herwig_DMModel_FH +#define Herwig_DMModel_FH + +#include "ThePEG/Config/ThePEG.h" + +namespace Herwig { + +class DMModel; + +ThePEG_DECLARE_POINTERS(Herwig::DMModel,DMModelPtr); + +} + +#endif diff --git a/Models/DarkMatter/DMModel.h b/Models/DarkMatter/DMModel.h new file mode 100644 --- /dev/null +++ b/Models/DarkMatter/DMModel.h @@ -0,0 +1,85 @@ +// -*- C++ -*- +#ifndef Herwig_DMModel_H +#define Herwig_DMModel_H +// +// This is the declaration of the DMModel class. +// + +#include "Herwig/Models/General/BSMModel.h" + +namespace Herwig { + +using namespace ThePEG; + +/** + * The DMModel class is designed to implement a simple dark matter mode + * with fermionic dark matter and a vector mediator, as described in arXiv:1911.11147 + * + * @see \ref DMModelInterfaces "The interfaces" + * defined for DMModel. + */ +class DMModel: public BSMModel { + +public: + + /** + * The default constructor. + */ + DMModel(); + +public: + + /** @name Functions used by the persistent I/O system. */ + //@{ + /** + * Function used to write out object persistently. + * @param os the persistent output stream written to. + */ + void persistentOutput(PersistentOStream & os) const; + + /** + * Function used to read in object persistently. + * @param is the persistent input stream read from. + * @param version the version number of the object when written. + */ + void persistentInput(PersistentIStream & is, int version); + //@} + + /** + * The standard Init function used to initialize the interfaces. + * Called exactly once for each class by the class description system + * before the main function starts or + * when this class is dynamically loaded. + */ + static void Init(); + +protected: + + /** @name Clone Methods. */ + //@{ + /** + * Make a simple clone of this object. + * @return a pointer to the new object. + */ + virtual IBPtr clone() const; + + /** Make a clone of this object, possibly modifying the cloned object + * to make it sane. + * @return a pointer to the new object. + */ + virtual IBPtr fullclone() const; + //@} + +private: + + /** + * The assignment operator is private and must never be called. + * In fact, it should not even be implemented. + */ + DMModel & operator=(const DMModel &) = delete; + +}; + +} + +#endif /* Herwig_DMModel_H */ diff --git a/Models/LH/Makefile.am b/Models/DarkMatter/Makefile.am copy from Models/LH/Makefile.am copy to Models/DarkMatter/Makefile.am --- a/Models/LH/Makefile.am +++ b/Models/DarkMatter/Makefile.am @@ -1,36 +1,16 @@ -BUILT_SOURCES = LH__all.cc -CLEANFILES = LH__all.cc +BUILT_SOURCES = DM__all.cc +CLEANFILES = DM__all.cc -LH__all.cc : $(DIR_H_FILES) $(DIR_CC_FILES) Makefile +DM__all.cc : $(DIR_H_FILES) $(DIR_CC_FILES) Makefile @echo "Concatenating .cc files into $@" @$(top_srcdir)/cat_with_cpplines $(DIR_CC_FILES) > $@ EXTRA_DIST = $(ALL_H_FILES) $(ALL_CC_FILES) DIR_H_FILES = $(addprefix $(srcdir)/,$(ALL_H_FILES)) ALL_H_FILES = \ -LHModel.h LHModel.fh \ -LHFFZVertex.h \ -LHFFPVertex.h \ -LHFFGVertex.h \ -LHFFWVertex.h \ -LHWWWVertex.h \ -LHWWWWVertex.h \ -LHFFHVertex.h \ -LHWWHVertex.h \ -LHWHHVertex.h \ -LHWWHHVertex.h +DMModel.h DMModel.fh DIR_CC_FILES = $(addprefix $(srcdir)/,$(ALL_CC_FILES)) ALL_CC_FILES = \ -LHModel.cc \ -LHFFZVertex.cc \ -LHFFPVertex.cc \ -LHFFGVertex.cc \ -LHFFWVertex.cc \ -LHWWWVertex.cc \ -LHWWWWVertex.cc \ -LHFFHVertex.cc \ -LHWWHVertex.cc \ -LHWHHVertex.cc \ -LHWWHHVertex.cc +DMModel.cc diff --git a/Models/Makefile.am b/Models/Makefile.am --- a/Models/Makefile.am +++ b/Models/Makefile.am @@ -1,181 +1,193 @@ SUBDIRS = RSModel StandardModel General Susy UED Zprime \ Transplanckian ADD Leptoquarks Sextet TTbAsymm \ - LH LHTP Feynrules + LH LHTP Feynrules DarkMatter noinst_LTLIBRARIES = libHwStandardModel.la nodist_libHwStandardModel_la_SOURCES = \ StandardModel/SM__all.cc libHwStandardModel_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/StandardModel noinst_LTLIBRARIES += libHwModelGenerator.la nodist_libHwModelGenerator_la_SOURCES = \ General/ModelGenerator__all.cc libHwModelGenerator_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/General if WANT_BSM pkglib_LTLIBRARIES = \ HwRSModel.la \ HwUED.la \ HwSusy.la \ HwNMSSM.la \ HwRPV.la \ HwZprimeModel.la \ HwTransplanck.la \ HwADDModel.la \ HwLeptoquarkModel.la \ HwSextetModel.la \ HwTTbAModel.la \ HwLHModel.la \ +HwDMModel.la \ HwLHTPModel.la endif ############# HwRSModel_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 12:0:0 HwRSModel_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/RSModel nodist_HwRSModel_la_SOURCES = \ RSModel/RS__all.cc ############# HwUED_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 12:0:0 HwUED_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/UED nodist_HwUED_la_SOURCES = \ UED/UED__all.cc ############# HwSusy_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 15:0:0 HwSusy_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/Susy nodist_HwSusy_la_SOURCES = \ Susy/Susy__all.cc ############# HwNMSSM_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 7:0:0 HwNMSSM_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/Susy/NMSSM nodist_HwNMSSM_la_SOURCES = \ Susy/NMSSM/NMSSM__all.cc ############# HwRPV_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 5:0:0 HwRPV_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/Susy/RPV nodist_HwRPV_la_SOURCES = \ Susy/RPV/RPV__all.cc ############# HwZprimeModel_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 5:0:0 HwZprimeModel_la_SOURCES = \ Zprime/ZprimeModel.cc Zprime/ZprimeModelZPQQVertex.cc ############# HwTransplanck_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 6:0:0 HwTransplanck_la_SOURCES = \ Transplanckian/METRP2to2.cc ############# HwADDModel_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 6:0:0 HwADDModel_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/ADD nodist_HwADDModel_la_SOURCES = \ ADD/ADD__all.cc ############# HwLeptoquarkModel_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 7:0:0 HwLeptoquarkModel_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/Leptoquarks nodist_HwLeptoquarkModel_la_SOURCES = \ Leptoquarks/Leptoquark__all.cc ############# HwSextetModel_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 5:0:0 HwSextetModel_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/Sextet nodist_HwSextetModel_la_SOURCES = \ Sextet/Sextet__all.cc ############# HwTTbAModel_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 5:0:0 HwTTbAModel_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/TTbAsymm nodist_HwTTbAModel_la_SOURCES = \ TTbAsymm/TTbA__all.cc ############# HwLHModel_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 7:0:0 HwLHModel_la_CPPFLAGS = \ $(AM_CPPFLAGS) -I$(srcdir)/LH nodist_HwLHModel_la_SOURCES = \ LH/LH__all.cc ############# +HwDMModel_la_LDFLAGS = \ +$(AM_LDFLAGS) -module -version-info 7:0:0 + +HwDMModel_la_CPPFLAGS = \ +$(AM_CPPFLAGS) -I$(srcdir)/DarkMatter + +nodist_HwDMModel_la_SOURCES = \ +DarkMatter/DM__all.cc + +############# + HwLHTPModel_la_LDFLAGS = \ $(AM_LDFLAGS) -module -version-info 7:0:0 HwLHTPModel_la_LIBADD = \ $(GSLLIBS) HwLHTPModel_la_CPPFLAGS = \ $(AM_CPPFLAGS) $(GSLINCLUDE) -I$(srcdir)/LHTP nodist_HwLHTPModel_la_SOURCES = \ LHTP/LHTP__all.cc ############# diff --git a/configure.ac b/configure.ac --- a/configure.ac +++ b/configure.ac @@ -1,245 +1,246 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.63]) AC_INIT([Herwig],[7.2.0],[herwig@projects.hepforge.org],[Herwig]) AC_CONFIG_SRCDIR([Utilities/HerwigStrategy.cc]) AC_CONFIG_AUX_DIR([Config]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([Config/config.h]) dnl AC_PRESERVE_HELP_ORDER AC_CANONICAL_HOST dnl === disable debug symbols by default ===== if test "x$CXXFLAGS" = "x"; then CXXFLAGS="-O2 -DBOOST_UBLAS_NDEBUG" fi if test "x$CFLAGS" = "x"; then CFLAGS=-O2 fi AC_LANG([C++]) AM_INIT_AUTOMAKE([1.11 subdir-objects gnu dist-bzip2 no-dist-gzip -Wall -Wno-portability]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) dnl Checks for C++ compiler. Handle C++11 flags. AC_PROG_CXX AX_CXX_COMPILE_STDCXX([11],[noext],[mandatory]) dnl check for POSIX AC_CHECK_HEADER([unistd.h],[], [AC_MSG_ERROR([Herwig needs "unistd.h". Non-POSIX systems are not supported.])]) AC_CHECK_HEADER([sys/stat.h],[], [AC_MSG_ERROR([Herwig needs "sys/stat.h". Non-POSIX systems are not supported.])]) dnl Checks for programs. AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LN_S dnl modified search order AC_PROG_FC([gfortran g95 g77]) dnl xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn xlf90 f90 pgf90 pghpf epcf90 xlf f77 frt pgf77 cf77 fort77 fl32 af77]) AC_LANG_PUSH([Fortran]) AC_MSG_CHECKING([if the Fortran compiler ($FC) works]) AC_COMPILE_IFELSE( AC_LANG_PROGRAM([],[ print *[,]"Hello"]), [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_ERROR([A Fortran compiler is required to build Herwig.]) ] ) AC_LANG_POP([Fortran]) AC_FC_WRAPPERS LT_PREREQ([2.2.6]) LT_INIT([disable-static dlopen pic-only]) dnl #################################### dnl #################################### dnl for Doc/fixinterfaces.pl AC_PATH_PROG(PERL, perl) dnl for Models/Feynrules AM_PATH_PYTHON([2.6],, [:]) AM_CONDITIONAL([HAVE_PYTHON], [test "x$PYTHON" != "x:"]) HERWIG_CHECK_GSL HERWIG_CHECK_THEPEG BOOST_REQUIRE([1.41]) BOOST_FIND_HEADER([boost/numeric/ublas/io.hpp]) dnl Boost 1.64 is missing a required header to make these work dnl we just assume they're there if io.hpp has been found OK above dnl BOOST_FIND_HEADER([boost/numeric/ublas/matrix.hpp]) dnl BOOST_FIND_HEADER([boost/numeric/ublas/matrix_proxy.hpp]) dnl BOOST_FIND_HEADER([boost/numeric/ublas/matrix_sparse.hpp]) dnl BOOST_FIND_HEADER([boost/numeric/ublas/symmetric.hpp]) dnl BOOST_FIND_HEADER([boost/numeric/ublas/vector.hpp]) BOOST_FIND_HEADER([boost/operators.hpp]) BOOST_TEST() HERWIG_CHECK_VBFNLO HERWIG_CHECK_NJET HERWIG_CHECK_GOSAM HERWIG_CHECK_GOSAM_CONTRIB HERWIG_CHECK_OPENLOOPS HERWIG_CHECK_MADGRAPH HERWIG_CHECK_EVTGEN HERWIG_CHECK_PYTHIA HERWIG_COMPILERFLAGS HERWIG_LOOPTOOLS FASTJET_CHECK_FASTJET HERWIG_ENABLE_MODELS SHARED_FLAG=-shared AM_CONDITIONAL(NEED_APPLE_FIXES, [test "xx${host/darwin/foundit}xx" != "xx${host}xx"]) if test "xx${host/darwin/foundit}xx" != "xx${host}xx"; then APPLE_DSO_FLAGS=-Wl,-undefined,dynamic_lookup SHARED_FLAG=-bundle fi AC_SUBST([APPLE_DSO_FLAGS]) AC_SUBST([SHARED_FLAG]) AC_CONFIG_FILES([UnderlyingEvent/Makefile Models/Makefile Models/StandardModel/Makefile Models/RSModel/Makefile Models/General/Makefile Models/Susy/Makefile Models/Susy/NMSSM/Makefile Models/Susy/RPV/Makefile Models/UED/Makefile Models/LH/Makefile + Models/DarkMatter/Makefile Models/LHTP/Makefile Models/Transplanckian/Makefile Models/Leptoquarks/Makefile Models/Zprime/Makefile Models/TTbAsymm/Makefile Models/Feynrules/Makefile Models/Feynrules/python/Makefile-FR Models/ADD/Makefile Models/Sextet/Makefile Decay/Makefile Decay/FormFactors/Makefile Decay/Tau/Makefile Decay/Baryon/Makefile Decay/VectorMeson/Makefile Decay/Perturbative/Makefile Decay/ScalarMeson/Makefile Decay/TensorMeson/Makefile Decay/WeakCurrents/Makefile Decay/Partonic/Makefile Decay/General/Makefile Decay/Radiation/Makefile Decay/EvtGen/Makefile Doc/refman.conf Doc/refman.h PDT/Makefile PDF/Makefile MatrixElement/Makefile MatrixElement/General/Makefile MatrixElement/Lepton/Makefile MatrixElement/Hadron/Makefile MatrixElement/DIS/Makefile MatrixElement/Powheg/Makefile MatrixElement/Gamma/Makefile MatrixElement/Reweighters/Makefile MatrixElement/Matchbox/Makefile MatrixElement/Matchbox/Base/Makefile MatrixElement/Matchbox/Utility/Makefile MatrixElement/Matchbox/Phasespace/Makefile MatrixElement/Matchbox/Dipoles/Makefile MatrixElement/Matchbox/InsertionOperators/Makefile MatrixElement/Matchbox/Matching/Makefile MatrixElement/Matchbox/Cuts/Makefile MatrixElement/Matchbox/Scales/Makefile MatrixElement/Matchbox/ColorFull/Makefile MatrixElement/Matchbox/CVolver/Makefile MatrixElement/Matchbox/Builtin/Makefile MatrixElement/Matchbox/Builtin/Amplitudes/Makefile MatrixElement/Matchbox/Tests/Makefile MatrixElement/Matchbox/External/Makefile MatrixElement/Matchbox/External/BLHAGeneric/Makefile MatrixElement/Matchbox/External/VBFNLO/Makefile MatrixElement/Matchbox/External/NJet/Makefile MatrixElement/Matchbox/External/GoSam/Makefile MatrixElement/Matchbox/External/OpenLoops/Makefile MatrixElement/Matchbox/External/MadGraph/Makefile MatrixElement/Matchbox/External/MadGraph/mg2herwig MatrixElement/FxFx/Makefile Sampling/Makefile Sampling/CellGrids/Makefile Shower/Makefile Shower/QTilde/Makefile Shower/QTilde/Matching/Makefile Shower/Dipole/Makefile Shower/Dipole/Base/Makefile Shower/Dipole/Kernels/Makefile Shower/Dipole/Kinematics/Makefile Shower/Dipole/Utility/Makefile Shower/Dipole/AlphaS/Makefile Shower/Dipole/SpinCorrelations/Makefile Utilities/Makefile Utilities/XML/Makefile Utilities/Statistics/Makefile Hadronization/Makefile lib/Makefile include/Makefile src/Makefile src/defaults/Makefile src/snippets/Makefile src/Matchbox/Makefile src/herwig-config Doc/Makefile Doc/HerwigDefaults.in Looptools/Makefile Analysis/Makefile API/Makefile src/Makefile-UserModules src/defaults/Analysis.in src/defaults/MatchboxDefaults.in src/defaults/Decays.in src/defaults/decayers.in src/defaults/setup.gosam.in src/Matchbox/LO-DefaultShower.in src/Matchbox/LO-DipoleShower.in src/Matchbox/MCatLO-DefaultShower.in src/Matchbox/MCatLO-DipoleShower.in src/Matchbox/LO-NoShower.in src/Matchbox/MCatNLO-DefaultShower.in src/Matchbox/MCatNLO-DipoleShower.in src/Matchbox/NLO-NoShower.in src/Matchbox/Powheg-DefaultShower.in src/Matchbox/Powheg-DipoleShower.in src/Merging/Makefile Shower/Dipole/Merging/Makefile src/defaults/MatchboxMergingDefaults.in Contrib/Makefile Contrib/make_makefiles.sh Tests/Makefile Makefile]) AC_CONFIG_LINKS([Doc/BSMlibs.in:Doc/BSMlibs.in]) AC_CONFIG_FILES([Doc/fixinterfaces.pl],[chmod +x Doc/fixinterfaces.pl]) AC_CONFIG_HEADERS([PDF/SaSPhotonPDF.cc]) HERWIG_OVERVIEW AC_CONFIG_COMMANDS([summary],[cat config.herwig]) AC_OUTPUT