Page MenuHomeHEPForge

No OneTemporary

This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
Index: trunk/bin/agile-config.in
===================================================================
--- trunk/bin/agile-config.in (revision 739)
+++ trunk/bin/agile-config.in (revision 740)
@@ -1,74 +1,68 @@
#! /usr/bin/env bash
## -*- sh -*-
## @configure_input@
## These variables need to exist
prefix=@prefix@
exec_prefix=@exec_prefix@
datarootdir=@datarootdir@
tmp=$(echo $* | egrep -- '--\<help\>|-\<h\>')
if test $# -eq 0 || test -n "$tmp"; then
echo "agile-config: configuration tool for the AGILe generator interfaces"
echo " http://projects.hepforge.org/agile/"
echo
echo "Usage: $( basename $0 ) [--help|-h] | "
echo " [--{prefix,datadir,libdir,includedir}] | "
echo " [--{cppflags,ldflags,ldlibs}] | "
echo " [--version]"
echo "Options:"
echo " --help | -h : show this help message"
echo
echo " --prefix : show the installation prefix (cf. autoconf)"
echo " --includedir : show the path to the directory containing the AGILe headers"
echo " --libdir : show the path to the directory containing the AGILe libraries"
echo " --datadir : show the path to the directory containing shared data"
echo " --pythonpath : show the path(s) to the directory containing AGILe Python modules"
echo
echo " --cppflags : returns a Rivet '-I' string for insertion into CPPFLAGS"
echo " --ldflags : returns a Rivet '-L' string for insertion into LDFLAGS"
echo " --libs : returns a Rivet '-l' string for insertion into LIBS or LIBADD"
echo
echo " --version : returns Rivet release version number"
fi
OUT=""
## "Atomic" build info, for "roll your own build" obsessives
tmp=$( echo "$*" | egrep -- '--\<prefix\>')
test -n "$tmp" && OUT="$OUT @prefix@"
tmp=$( echo "$*" | egrep -- '--\<includedir\>')
test -n "$tmp" && OUT="$OUT @includedir@"
tmp=$( echo "$*" | egrep -- '--\<libdir\>')
test -n "$tmp" && OUT="$OUT @libdir@"
tmp=$( echo "$*" | egrep -- '--\<datadir\>')
test -n "$tmp" && OUT="$OUT @datadir@/@PACKAGE_TARNAME@"
tmp=$( echo "$*" | egrep -- '--\<pythonpath\>')
-test -n "$tmp" && {
- ppath="@PYTHON_PREFIX@/lib/python@PYTHON_VERSION@/site-packages"
- if test -e "@PYTHON_PREFIX@/lib64/python@PYTHON_VERSION@/site-packages"; then
- ppath="$ppath:@PYTHON_PREFIX@/lib64/python@PYTHON_VERSION@/site-packages"
- fi
- OUT="$OUT $ppath"
-}
+test -n "$tmp" && OUT="$OUT @AGILE_PYTHONPATH@"
## "Pre-rolled" build info
tmp=$( echo "$*" | egrep -- '--\<cppflags\>')
test -n "$tmp" && OUT="$OUT -I@includedir@"
tmp=$( echo "$*" | egrep -- '--\<ldflags\>')
test -n "$tmp" && OUT="$OUT -L@libdir@"
tmp=$( echo "$*" | egrep -- '--\<libs\>|--\<ldadd\>')
test -n "$tmp" && OUT="$OUT -lAGILe"
## Version
tmp=$( echo "$*" | egrep -- '--\<version\>')
test -n "$tmp" && OUT="$OUT @PACKAGE_VERSION@"
echo $OUT
Index: trunk/bin/agile-runmc
===================================================================
--- trunk/bin/agile-runmc (revision 739)
+++ trunk/bin/agile-runmc (revision 740)
@@ -1,551 +1,530 @@
#! /usr/bin/env python
"""Generate events and write to file or stdout
EXAMPLES:
%prog <gen> [-p<param> ...] [-P<pfile> ...] \\
[-n<nevts>] [-o<outfile>] [--sqrts=<energy>] \\
[--beams=<beamsstr>] \\
[--seed=<rngseed> | --randomize-seed]
%prog --list-gens
%prog --list-used-params
BEAM SPEC:
Beams can be specified in several different schemes. The
strings are compared case-insensitively. Energies are
specified in GeV. The energy must be explicitly specified,
either as part of the beam string (after a colon) or via
the --sqrts option.
* --beams=p:900,pbar:900
* --beams=ppbar:1960
* --beams=LHC:14000
* --beams=pp:14T
Beam particles:
* "proton", "2212", "p", "p+"
* "antiproton", "-2212", "pbar", "p-"
* "electron", "11", "e-"
* "positron", "-11", "e+"
Beam pair strings:
* pp: "LHC", "PP", "RHIC"
* ppbar: "TEVATRON", "TVT", "PPBAR"
* e+e-: "LEP", "E+E-", "EE"
ENVIRONMENT:
* AGILE_GEN_PATH
Colon-separated list of filesystem paths which get checked
in order when searching for generator libraries in the
Genser structure. The current directory and the AGILe install
path are also searched, after AGILE_GEN_PATH.
* AGILE_PARAM_PATH
Colon-separated list of filesystem paths which get checked
in order when searching for generator parameter files as
passed to the -P option. The current directory and the AGILe
install path are also searched, after AGILE_PARAM_PATH.
* AGILE_DEBUG
Enables debug output level if set
"""
-## Make "set" a builtin type on Python < 2.4
-if not 'set' in dir(__builtins__):
- from sets import Set as set
-
-## Make "sorted" a builtin function on Python < 2.4
-if not 'sorted' in dir(__builtins__):
- def sorted(iterable, cmp=None, key=None, reverse=None):
- rtn = iterable
- rtn.sort(cmp, key, reverse)
- return rtn
-
-
-## Change dlopen status to GLOBAL for gen lib loading
-import sys
-try:
- import ctypes
- sys.setdlopenflags(sys.getdlopenflags() | ctypes.RTLD_GLOBAL)
-except:
- import dl
- sys.setdlopenflags(sys.getdlopenflags() | dl.RTLD_GLOBAL)
-
## Try to rename the process on Linux
try:
import ctypes
libc = ctypes.cdll.LoadLibrary('libc.so.6')
libc.prctl(15, 'agile-runmc', 0, 0, 0)
except Exception:
pass
## Try to bootstrap the Python path
import commands
try:
modname = sys.modules[__name__].__file__
binpath = os.path.dirname(modname)
agileconfigpath = os.path.join(binpath, "agile-config")
agilepypath = commands.getoutput(agileconfigpath + " --pythonpath")
sys.path.append(agilepypath)
except:
pass
import os, logging, re
import AGILe
from optparse import OptionParser, OptionGroup
## Randomly seed a random seed. Hmm.
import random, time
random.seed(time.time())
RANDRANDSEED = random.randint(0, 100000000)
## Parse command line arguments
parser = OptionParser(usage=__doc__)
parser.add_option("-n", "--nevts", help="Specify the number of events to generate",
dest="NEVTS", default="10")
parser.add_option("--list-gens", help="List the available generators",
action="store_true", dest="LISTGENS", default=False)
parser.add_option("--list-used-params", help="List the parameters passed to the generator by this command",
action="store_true", dest="LISTPARAMS", default=False)
parser.add_option("-o", "--out", help="Specify the file/pipe to write to. Use a '-' to write to stdout.",
dest="OUTFILE", default=None)
parser.add_option("-p", "--param", metavar="PNAME=PVAR", action="append", default=[],
help="Change a generator parameter PNAME to value PVAL",
dest="PARAMSTRS")
parser.add_option("-b", "--beams", help="Specify the beams. Super-flexible!",
dest="BEAMSTR", default=None)
parser.add_option("-s", "--seed", help="Specify the generator random number seed",
dest="RNGSEED", type="int", default=31415926)
parser.add_option("--randomize-seed", help="Randomize the generator random number seed",
action="store_const", const=RANDRANDSEED, dest="RNGSEED")
parser.add_option("-P", "--paramfile", metavar="PFILE", action="append", default=[],
help="Read a generator parameter file PFILE containing 'name = value' pairs",
dest="PARAMFILES")
parser.add_option("--filter", help="Remove particles without status == {1,2,4} from events",
action="store_true", dest="FILTER_EVENTS", default=False)
verbgroup = OptionGroup(parser, "Verbosity control")
verbgroup.add_option("-l", dest="NATIVE_LOG_STRS", action="append",
default=[], help="set a log level in the AGILe library")
verbgroup.add_option("-Q", "--quiet", help="Suppress normal messages", dest="LOGLEVEL",
action="store_const", default=logging.INFO, const=logging.WARNING)
verbgroup.add_option("-V", "--verbose", help="Add extra debug messages", dest="LOGLEVEL",
action="store_const", default=logging.INFO, const=logging.DEBUG)
parser.add_option_group(verbgroup)
opts, args = parser.parse_args()
## Change log level if AGILE_DEBUG env variable is set
if os.environ.has_key("AGILE_DEBUG"):
opts.LOGLEVEL = logging.DEBUG
## Configure logging
try:
logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s")
except:
pass
h = logging.StreamHandler()
h.setFormatter(logging.Formatter("%(message)s"))
logging.getLogger().setLevel(opts.LOGLEVEL)
if logging.getLogger().handlers:
logging.getLogger().handlers[0] = h
else:
logging.getLogger().addHandler(h)
## Control AGILe logger
for l in opts.NATIVE_LOG_STRS:
name, level = None, None
try:
name, level = l.split("=")
except:
name = "AGILe"
level = l
## Fix name
if name != "AGILe" and not name.startswith("AGILe."):
name = "AGILe." + name
try:
## Get right error type
LEVEL = level.upper()
if LEVEL == "TRACE":
level = AGILe.Log.TRACE
elif LEVEL == "DEBUG":
level = AGILe.Log.DEBUG
elif LEVEL == "INFO":
level = AGILe.Log.INFO
elif LEVEL == "WARNING" or LEVEL == "WARN":
level = AGILe.Log.WARN
elif LEVEL == "ERROR":
level = AGILe.Log.ERROR
else:
level = int(level)
logging.debug("Setting log level: %s %d" % (name, level))
## Set log level
AGILe.Log.setLogLevel(name, level)
except:
logging.warning("Couldn't process logging string '%s'" % l)
## Set up signal handling
import signal
RECVD_KILL_SIGNAL = None
def handleKillSignal(signum, frame):
"Declare us as having been signalled, and return to default handling behaviour"
global RECVD_KILL_SIGNAL
logging.critical("Signal handler called with signal " + str(signum))
RECVD_KILL_SIGNAL = signum
signal.signal(signum, signal.SIG_DFL)
## Signals to handle
signal.signal(signal.SIGTERM, handleKillSignal);
signal.signal(signal.SIGHUP, handleKillSignal);
signal.signal(signal.SIGINT, handleKillSignal);
signal.signal(signal.SIGUSR1, handleKillSignal);
signal.signal(signal.SIGUSR2, handleKillSignal);
try:
signal.signal(signal.SIGXCPU, handleKillSignal);
except:
pass
## Parse number-of-events string
if not opts.LISTGENS and not opts.LISTPARAMS:
try:
factor = 1
base = opts.NEVTS
suffix = opts.NEVTS[-1]
if suffix.upper() == "K":
factor = 1000
base = opts.NEVTS[:-1]
elif suffix == "M":
factor = 1000000
base = opts.NEVTS[:-1]
num = int(float(base) * factor)
logging.info("Generating %d events" % num)
opts.NEVTS = num
except:
logging.error("Invalid num events specification, '%s'" % opts.NEVTS)
sys.exit(1)
def readParamStrsFromFile(ppath):
paramstrs = []
pf = open(ppath, "r")
logging.debug("Reading param file '%s'" % ppath)
for line in pf:
sline = line.strip()
if len(sline) == 0 or sline[0] == "#":
continue
if re.match(r"@include \S+", sline.lower()):
incfile = sline.split()[1]
logging.info("Reading included parameters from %s" % incfile)
paramstrs += readParamFile(incfile)
else:
paramstrs.append(sline)
pf.close()
return paramstrs
def readParamFile(pfile):
global SEARCHPATH
## If a path has been given, don't use the search path
if "/" in pfile:
logging.debug("Trying to read param file '%s'" % pfile)
if os.access(pfile, os.R_OK):
return readParamStrsFromFile(pfile)
else:
raise Exception("Could not read param file '%s'" % pfile)
else:
for pdir in SEARCHPATH:
ppath = os.path.join(pdir, pfile)
logging.debug("Trying to read param file '%s'" % ppath)
if os.access(ppath, os.R_OK):
return readParamStrsFromFile(ppath)
raise Exception("Could not find param file '%s'" % pfile)
## Get parameter strings from file and CLI
PARAMSTRS = []
SEARCHPATH = ["."]
try:
SEARCHPATH += os.getenv("AGILE_PARAM_PATH").split(":")
except:
pass
try:
installdir = os.path.dirname(os.path.abspath(sys.argv[0]))
if os.path.basename(installdir) == "bin":
installdir = os.path.dirname(installdir)
agilesharedir = os.path.join(installdir, "share", "AGILe")
logging.debug("Adding %s to param file search path" % agilesharedir)
SEARCHPATH.append(agilesharedir)
## TODO: Deprecate and remove
rgsharedir = os.path.join(installdir, "share", "RivetGun")
logging.debug("Adding %s to param file search path" % rgsharedir)
SEARCHPATH.append(rgsharedir)
uninstalledsharedir = os.path.join(installdir, "data", "params")
logging.debug("Adding %s to param file search path" % uninstalledsharedir)
SEARCHPATH.append(uninstalledsharedir)
except:
pass
logging.debug("Searching for param files in dirs: %s" % str(SEARCHPATH))
try:
for pfile in opts.PARAMFILES:
PARAMSTRS += readParamFile(pfile)
except Exception, e:
logging.error(e)
sys.exit(2)
## Add CLI params
PARAMSTRS += opts.PARAMSTRS
## Interpret param strings
def getKeyVal(pstr):
mypstr = pstr.strip().replace("=", " ")
parts = mypstr.split()
if len(parts) != 2:
logging.error("Invalid param string: '%s'" % pstr)
sys.exit(1)
return parts
##
PARAMKEYS = []
PARAMS = {}
for pstr in PARAMSTRS:
k, v = getKeyVal(pstr)
PARAMS[k] = v
if not k in PARAMKEYS:
PARAMKEYS.append(k)
def _parse_energy(numstr):
import re
try:
e = float(numstr)
return e
except:
suffmatch = re.search(r"[^\d.]", numstr)
if not suffmatch:
raise ValueError("Bad energy string: %s" % numstr)
factor = base = None
suffstart = suffmatch.start()
if suffstart != -1:
base = numstr[:suffstart]
suffix = numstr[suffstart:]
if suffix.startswith("K"):
factor = 1e-6
elif suffix.startswith("M"):
factor = 1e-3
elif suffix.startswith("G"):
factor = 1
elif suffix.startswith("T"):
factor = 1e3
if factor is None or base is None:
raise ValueError("Bad energy string: %s" % numstr)
num = float(base) * factor
return num
## Parse a beam string
def _parseOneBeamStr(bstr):
if not ":" in bstr:
raise ValueError("Beam string must contain a colon to separate particle and energy parts")
name, energy = bstr.split(":")
energy = _parse_energy(energy)
pid = None
if name.lower() in ["proton", "2212", "p", "p+"]:
pid = AGILe.PROTON
elif name.lower() in ["antiproton", "-2212", "pbar", "p-"]:
pid = AGILe.ANTIPROTON
elif name.lower() in ["electron", "11", "e-"]:
pid = AGILe.ELECTRON
elif name.lower() in ["positron", "-11", "e+"]:
pid = AGILe.POSITRON
else:
raise Exception("Particle '%s' unknown" % name)
return pid, energy
## Choose beam string
## Defaults
#BEAMSTR = "LHC:14TeV"
BEAM1 = BEAM2 = "p"
MOM1 = MOM2 = "7000"
## Using params from file and command line
if PARAMS.has_key("RG:Beam1"):
BEAM1 = PARAMS["RG:Beam1"]
if PARAMS.has_key("RG:Beam2"):
BEAM2 = PARAMS["RG:Beam2"]
if PARAMS.has_key("RG:Mom1"):
MOM1 = PARAMS["RG:Mom1"]
if PARAMS.has_key("RG:Mom2"):
MOM2 = PARAMS["RG:Mom2"]
## Build beam string
BEAMSTR = "%s:%s,%s:%s" % (BEAM1, MOM1, BEAM2, MOM2)
## Override from params
if PARAMS.has_key("RG:Beams"):
BEAMSTR = PARAMS["RG:Beams"]
## Override from command line
if opts.BEAMSTR is not None:
BEAMSTR = opts.BEAMSTR
## Declare what we've got so far
logging.debug("Beam spec: " + BEAMSTR)
## Parse the beams string
try:
if "," in BEAMSTR:
beamAStr, beamBStr = BEAMSTR.split(",")
PID_A, E_A = _parseOneBeamStr(beamAStr)
PID_B, E_B = _parseOneBeamStr(beamBStr)
else:
if not ":" in BEAMSTR:
raise ValueError("Beams string must contain a colon to separate beam type and energy parts")
name, energyStr = BEAMSTR.split(":")
energy = _parse_energy(energyStr)
NAME = name.upper()
## If only a total energy is given, assume collision is symmetric
E_A, E_B = energy/2.0, energy/2.0
#
if NAME in ["LHC", "PP", "RHIC"]:
PID_A = AGILe.PROTON
PID_B = AGILe.PROTON
elif NAME in ["TEVATRON", "TVT", "PPBAR"]:
PID_A = AGILe.PROTON
PID_B = AGILe.ANTIPROTON
elif NAME in ["LEP", "E+E-", "EE"]:
PID_A = AGILe.ELECTRON
PID_B = AGILe.POSITRON
elif NAME in ["HERA", "EP"]:
PID_A = AGILe.ELECTRON
PID_B = AGILe.PROTON
## HERA uses asymmetric beams
## People seem to quote anything between 296 to 300 GeV for Run I
## These are the actual beam energies
if energy <= 300.0 and energy >= 295.0 :
E_A = 26.7
E_B = 820.0
## Again, people quote a variety of different cms energies
elif energy >= 318.0 and energy <= 320.0 :
E_A = 27.5
E_B = 920
else:
raise Exception("Unrecognised beams string, '%s'" % BEAMSTR)
except Exception, e:
logging.error("Beam parsing error: " + str(e))
sys.exit(1)
logging.debug("Beams: %s @ %2.1f GeV -> <- %s @ %2.1f GeV" % (str(PID_A), E_A, str(PID_B), E_B))
## List generators and exit, if requested
if opts.LISTGENS:
gens = AGILe.getAvailableGens()
if len(gens) > 0:
allgensstr = "\n".join(AGILe.getAvailableGens())
#logging.info(allgensstr)
print allgensstr
sys.exit(0)
## Determine the generator
GEN = None
## Override from params
if PARAMS.has_key("RG:Generator"):
GEN = PARAMS["RG:Generator"]
## Override from command line
if len(args) == 1:
GEN = args[0]
## Declare what we've got so far
logging.debug("Specified generator: " + str(GEN))
## Push beam and gen choices back into the params dictionary, for dumping
if PARAMS.has_key("RG:Beams"):
del PARAMS["RG:Beams"]
PARAMS["RG:Mom1"] = str(E_A)
PARAMS["RG:Mom2"] = str(E_B)
PARAMS["RG:Beam1"] = str(PID_A)
PARAMS["RG:Beam2"] = str(PID_B)
PARAMS["RG:Generator"] = str(GEN)
## List params and exit, if requested
if opts.LISTPARAMS:
for k in sorted(PARAMS.keys()):
print k, PARAMS[k]
sys.exit(0)
## No generator specified?
if GEN is None:
allgensstr = "\n ".join(AGILe.getAvailableGens())
msg = "No generator specified.\n"
if len(allgensstr) > 0:
msg += "Available generators:\n %s" % allgensstr
else:
msg += "No generators are available! Check your AGILE_GEN_PATH variable."
logging.error(msg)
sys.exit(1)
## Invalid generator specified
if GEN not in AGILe.getAvailableGens():
allgensstr = "\n ".join(AGILe.getAvailableGens())
msg = "Generator '%s' is not a valid choice.\n" % GEN
msg += "Available generators:\n %s" % allgensstr
logging.error(msg)
sys.exit(1)
## Valid generator specified -- hurrah!
logging.info("Generator is %s" % GEN)
AGILe.loadGenLibs(GEN)
gen = AGILe.createGen()
## Config and run generator
logging.debug("Generator name = %s" % gen.getName())
logging.info("Setting random seed = %d" % opts.RNGSEED)
gen.setSeed(opts.RNGSEED)
logging.info("Setting initial state: %s @ %2.1f GeV -> <- %s @ %2.1f GeV" % (str(PID_A), E_A, str(PID_B), E_B))
gen.setInitialState(PID_A, E_A, PID_B, E_B)
for pname in PARAMKEYS:
pval = PARAMS[pname]
if pname.startswith("RG:"):
logging.info("Skipping meta-param %s = %s" % (pname, pval))
continue
logging.info("Setting parameter %s = %s" % (pname,pval))
gen.setParam(pname,pval)
## Set up Run
OUT = ""
if opts.OUTFILE:
if opts.OUTFILE != "-" and not "." in opts.OUTFILE:
opts.OUTFILE += ".hepmc"
OUT = opts.OUTFILE
run = AGILe.Run(gen, OUT)
if opts.FILTER_EVENTS:
run.doFilter(True)
## Make and write events
for i in range(opts.NEVTS):
st = run.makeEvent()
logging.debug(run.eventSummary())
if not st:
logging.error("Writing events failed")
break
if RECVD_KILL_SIGNAL is not None:
logging.critical("Leaving event loop early due to signal " + str(RECVD_KILL_SIGNAL))
break
gen.finalize()
Index: trunk/pyext/AGILe.i
===================================================================
--- trunk/pyext/AGILe.i (revision 739)
+++ trunk/pyext/AGILe.i (revision 740)
@@ -1,42 +0,0 @@
-%module AGILe
-
-%{
- #define SWIG_FILE_WITH_INIT
- #include "AGILe/Loader.hh"
- #include "AGILe/Generator.hh"
- #include "AGILe/Run.hh"
- #include "AGILe/Tools/Logging.hh"
-%}
-
-// HepMC
-//%include "hepmc.i"
-
-// STL templates
-%include "std_string.i"
-%include "std_vector.i"
-%include "std_map.i"
-%template(StrList) std::vector<std::string>;
-%template(LogLevelMap) std::map<std::string, int>;
-
-
-namespace AGILe {
- %rename(setLogLevel) Log::setLevel(const std::string&, int);
-}
-%include "AGILe/Tools/Logging.hh"
-
-%include "AGILe/Particle.hh"
-
-namespace AGILe {
- %ignore Generator::getState;
- %ignore Generator::setState;
-}
-%include "AGILe/Generator.hh"
-
-namespace AGILe {
- // %ignore Run::Run(const Run&);
- %ignore Run::Run(Generator&);
- %ignore Run::event;
-}
-%include "AGILe/Run.hh"
-
-%include "AGILe/Loader.hh"
Index: trunk/pyext/Makefile.am
===================================================================
--- trunk/pyext/Makefile.am (revision 739)
+++ trunk/pyext/Makefile.am (revision 740)
@@ -1,31 +1,26 @@
-EXTRA_DIST = AGILe.i ez_setup.py
-
-## Bundling SWIG-built sources with the tarball for SL4 compat
-EXTRA_DIST += AGILe_wrap.cc AGILe.py
-AGILe_wrap.cc AGILe.py: AGILe.i
- swig -c++ -python -I$(top_srcdir)/include -o AGILe_wrap.cc $<
-
+EXTRA_DIST = ez_setup.py
if ENABLE_PYEXT
-all-local: AGILe_wrap.cc
+SUBDIRS = AGILe .
+
+all-local: AGILe/agilewrap_wrap.cc
$(PYTHON) setup.py build
install-exec-local:
$(PYTHON) setup.py install --prefix=$(DESTDIR)$(prefix)
+## TODO: Really want DESTDIR here?
uninstall-local:
- rm -rf $(DESTDIR)$(prefix)/lib*/python*/site-packages/*AGILe*
+ rm -rf $(DESTDIR)$(AGILE_PYTHONPATH)/*AGILe*
clean-local:
$(PYTHON) setup.py clean --all
@rm -f $(top_builddir)/*.pyc
@rm -rf $(builddir)/build
@rm -rf dist
- @rm -f AGILe.py
- @rm -f AGILe_wrap.cc
distclean-local:
@rm -rf AGILe.egg-info
endif
Index: trunk/pyext/setup.py.in
===================================================================
--- trunk/pyext/setup.py.in (revision 739)
+++ trunk/pyext/setup.py.in (revision 740)
@@ -1,32 +1,33 @@
#! /usr/bin/env python
-from distutils.core import setup, Extension
-
-longdesc = """This is a simple SWIG wrapper on the main steering interface of
-the AGILe event generator interface library.
+"""This is a simple SWIG wrapper on the main steering interface of the AGILe
+event generator interface library.
"""
+from distutils.core import setup, Extension
+
## Extension definition
import os
incdir = os.path.abspath('@top_srcdir@/include')
srcdir = os.path.abspath('@top_srcdir@/src/')
-ext = Extension('_AGILe',
- ['@srcdir@/AGILe_wrap.cc'],
+ext = Extension('_agilewrap',
+ ['@srcdir@/AGILe/agilewrap_wrap.cc'],
define_macros = [("SWIG_TYPE_TABLE", "hepmccompat")],
include_dirs=['@HEPMCINCPATH@', '@BOOSTINCPATH@', incdir],
library_dirs=['@HEPMCLIBPATH@', srcdir, os.path.join(srcdir,'.libs')],
libraries=['HepMC', 'AGILe'])
## Setup definition
setup(name = 'AGILe',
version = '@PACKAGE_VERSION@',
- ext_modules=[ext],
- py_modules = ['AGILe'],
+ ext_package = 'AGILe',
+ ext_modules = [ext],
+ py_modules = ['AGILe.__init__', 'AGILe.agilewrap'],
author = ['Andy Buckley'],
- author_email = 'andy@insectnation.org',
+ author_email = 'andy.buckley@cern.ch',
url = 'http://projects.hepforge.org/agile/',
description = 'A Python interface to the AGILe high-energy physics event generator interface library.',
- long_description = longdesc,
+ long_description = __doc__,
keywords = 'generator montecarlo simulation data hep physics particle validation analysis tuning',
license = 'GPL',
)
Index: trunk/pyext/AGILe/__init__.py
===================================================================
--- trunk/pyext/AGILe/__init__.py (revision 0)
+++ trunk/pyext/AGILe/__init__.py (revision 740)
@@ -0,0 +1,24 @@
+"Python interface to the Rivet MC validation system"
+
+## Change dlopen status to GLOBAL for AGILe lib loading
+import sys
+try:
+ import ctypes
+ sys.setdlopenflags(sys.getdlopenflags() | ctypes.RTLD_GLOBAL)
+ del ctypes
+except:
+ import dl
+ sys.setdlopenflags(sys.getdlopenflags() | dl.RTLD_GLOBAL)
+ del dl
+del sys
+
+## Import SWIG-generated wrapper core
+from agilewrap import *
+
+## Provide an extra Python-only function used to enforce the AGILe scripts' minimal Python version
+def check_python_version():
+ import sys
+ req_version = (2,4,0)
+ if sys.version_info[:3] < req_version:
+ print "rivet scripts require Python version >= %s... exiting" % ".".join(req_version)
+ sys.exit(1)
Index: trunk/pyext/AGILe/Makefile.am
===================================================================
--- trunk/pyext/AGILe/Makefile.am (revision 0)
+++ trunk/pyext/AGILe/Makefile.am (revision 740)
@@ -0,0 +1,12 @@
+EXTRA_DIST = __init__.py agilewrap.i
+
+all-local: agilewrap_wrap.cc agilewrap.py
+ @true
+
+agilewrap_wrap.cc agilewrap.py: agilewrap.i
+ $(SWIG) -c++ -python -I$(top_srcdir)/include -o agilewrap_wrap.cc $<
+
+clean-local:
+ @rm -f *.pyc
+ @rm -f agilewrap.py
+ @rm -f agilewrap_wrap.cc
Index: trunk/pyext/AGILe/agilewrap.i
===================================================================
--- trunk/pyext/AGILe/agilewrap.i (revision 0)
+++ trunk/pyext/AGILe/agilewrap.i (revision 740)
@@ -0,0 +1,56 @@
+%module agilewrap
+
+%{
+ #define SWIG_FILE_WITH_INIT
+ #include "AGILe/Loader.hh"
+ #include "AGILe/Generator.hh"
+ #include "AGILe/Run.hh"
+ #include "AGILe/Tools/Logging.hh"
+%}
+
+// HepMC
+//%include "hepmc.i"
+
+// STL templates
+%include "std_string.i"
+%include "std_vector.i"
+%include "std_map.i"
+%template(StrList) std::vector<std::string>;
+%template(LogLevelMap) std::map<std::string, int>;
+
+
+// Logging interface
+// Not mapping whole log interface, since we only want to be able to set log levels.
+//%template(LogLevelMap) std::map<std::string, int>;
+%ignore operator<<;
+namespace AGILe {
+ %rename(setLogLevel) Log::setLevel(const std::string&, int);
+ class Log {
+ public:
+ enum Level {
+ TRACE = 0, DEBUG = 10, INFO = 20, WARN = 30, WARNING = 30, ERROR = 40, CRITICAL = 50, ALWAYS = 50
+ };
+ static void setLevel(const std::string& name, int level);
+ protected:
+ Log(const std::string& name);
+ Log(const std::string& name, int level);
+ };
+}
+//%include "AGILe/Tools/Logging.hh"
+
+%include "AGILe/Particle.hh"
+
+namespace AGILe {
+ %ignore Generator::getState;
+ %ignore Generator::setState;
+}
+%include "AGILe/Generator.hh"
+
+namespace AGILe {
+ // %ignore Run::Run(const Run&);
+ %ignore Run::Run(Generator&);
+ %ignore Run::event;
+}
+%include "AGILe/Run.hh"
+
+%include "AGILe/Loader.hh"
Index: trunk/pyext/AGILe
===================================================================
--- trunk/pyext/AGILe (revision 739)
+++ trunk/pyext/AGILe (revision 740)
Property changes on: trunk/pyext/AGILe
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,4 ##
+Makefile
+Makefile.in
+agilewrap.py
+agilewrap_wrap.cc
Index: trunk/test/Makefile.am
===================================================================
Index: trunk/test
===================================================================
--- trunk/test (revision 739)
+++ trunk/test (revision 740)
Property changes on: trunk/test
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,2 ##
+Makefile
+Makefile.in
Index: trunk/configure.ac
===================================================================
--- trunk/configure.ac (revision 739)
+++ trunk/configure.ac (revision 740)
@@ -1,188 +1,192 @@
## Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT([AGILe],[1.1.6],[rivet@projects.hepforge.org],[AGILe])
AC_CONFIG_SRCDIR([src/Core/Loader.cc])
AC_CONFIG_HEADER([include/AGILe/AGILeConfig.hh include/AGILe/FortranWrappers.hh])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE(dist-bzip2)
AC_CONFIG_MACRO_DIR([m4])
## Library version flags (increment these for each new version)
VERSIONFLAGS="-version-info 5:0:3" ## set for 1.1.6
AC_SUBST(VERSIONFLAGS)
## Cache PATH variable
AC_ARG_VAR(PATH, [we grab the PATH variable, since various generator config scripts may need to be called repeatably])
## Set default compiler flags
if test "x$CXXFLAGS" == "x"; then CXXFLAGS="-O3"; fi
## More comprehensible error messages if possible. See:
## http://www.bdsoft.com/tools/stlfilt.html
if test "x$CXXFLAGS" == "x"; then
AC_PATH_PROG(GFILT, gfilt, $CXX, $PATH:$HOME/bin:$HOME/local/bin)
CXX=$GFILT
fi
## Declare language
AC_LANG(C++)
## OS X
AC_CEDAR_OSX
## LCG platform tag
AC_LCG_TAG
## Checks for programs.
AC_PROG_CXX
AC_PROG_FC(gfortran g95 g77)
AC_FC_LIBRARY_LDFLAGS
AC_FC_WRAPPERS
AC_PROG_INSTALL
AC_PROG_LN_S
AC_DISABLE_STATIC
## Hack to make libtool use the FC Fortran compiler via F77, since
## libtool < 2.x doesn't understand --tag=FC
F77=$FC
AM_FFLAGS=$AM_FCFLAGS
AC_SUBST(F77)
AC_SUBST(AM_FFLAGS)
AC_LIBTOOL_DLOPEN
AC_PROG_LIBTOOL
## Work out library suffix for the build
LIB_SUFFIX=\\\"$shrext_cmds\\\"
AC_SUBST([LIB_SUFFIX])
## System libraries
AC_CEDAR_HEADERS([Boost], , , [AC_MSG_ERROR([Boost is required])])
oldCPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -I$BOOSTINCPATH"
BOOSTERRMSG="You need at least version 1.34.0 of Boost for this installation."
BOOSTERRMSG="$BOOSTERRMSG If you want to use Boost from a non-standard location,"
BOOSTERRMSG="$BOOSTERRMSG please specify '--with-boost-incpath=/path/to/boost_1_35/include'"
BOOSTERRMSG="$BOOSTERRMSG as option to the configure script or run 'export"
BOOSTERRMSG="$BOOSTERRMSG BOOSTFLAGS=--with-boost-incpath=/path/to/boost_1_35/include'"
BOOSTERRMSG="$BOOSTERRMSG before you run the rivet-bootstrap script."
AC_CHECK_HEADER([boost/foreach.hpp], [], [AC_MSG_ERROR([Boost foreach not found. $BOOSTERRMSG])])
AC_CHECK_HEADER([boost/smart_ptr.hpp], [], [AC_MSG_ERROR([Boost smart_ptr not found. $BOOSTERRMSG])])
AC_CHECK_HEADER([boost/lexical_cast.hpp], [], [AC_MSG_ERROR([Boost lexical_cast not found. $BOOSTERRMSG])])
AC_CHECK_HEADER([boost/assign.hpp], [], [AC_MSG_ERROR([Boost assign not found. $BOOSTERRMSG])])
CPPFLAGS=$oldCPPFLAGS
## Testing HepMC
AC_CEDAR_LIBRARYANDHEADERS([HepMC], , , [AC_MSG_ERROR([HepMC is required])])
#AC_CEDAR_LIBRARY([HepMCfio], , , [AC_MSG_ERROR([HepMCfio is required])])
## Standard build flags
AM_CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include "
AM_CPPFLAGS="$AM_CPPFLAGS -I\$(BOOSTINCPATH) \$(BOOST_CPPFLAGS)"
AM_CPPFLAGS="$AM_CPPFLAGS -I\$(HEPMCINCPATH) "
AM_LDFLAGS="-L\$(top_builddir)/src/Tools -L\$(top_builddir)/src"
AM_CXXFLAGS="$AM_CXXFLAGS -DLIB_SUFFIX=$LIB_SUFFIX "
AC_CEDAR_CHECKCXXFLAG([-pedantic], [AM_CXXFLAGS="$AM_CXXFLAGS -pedantic "])
AC_CEDAR_CHECKCXXFLAG([-ansi], [AM_CXXFLAGS="$AM_CXXFLAGS -ansi "])
AC_CEDAR_CHECKCXXFLAG([-Wall], [AM_CXXFLAGS="$AM_CXXFLAGS -Wall "])
## Debug flag (default=none)
AC_ARG_ENABLE([debug], [AC_HELP_STRING(--enable-debug,
[build with debugging symbols @<:@default=no@:>@])], [], [enable_debug=no])
if test x$enable_debug == xyes; then
AC_CEDAR_CHECKCXXFLAG([-g], [AM_CXXFLAGS="$AM_CXXFLAGS -g "])
fi
AC_SUBST(AM_CPPFLAGS)
AC_SUBST(AM_LDFLAGS)
AC_SUBST(AM_CXXFLAGS)
## Fortran build flags
FORTRANLDFLAGS="-L$HEPMCLIBPATH" # -L$HEPMCFIOLIBPATH"
FORTRANLIBADD="$FCLIBS" # -l$HEPMCFIOLIBNAME
AC_SUBST(FORTRANLDFLAGS)
AC_SUBST(FORTRANLIBADD)
## Dlopen export flags
DLOPENFLAGS="-export-dynamic"
AC_SUBST(DLOPENFLAGS)
## Python extension
AC_ARG_ENABLE(pyext, [AC_HELP_STRING(--disable-pyext,
[don't build Python module (default=build)])],
[], [enable_pyext=yes])
AZ_PYTHON_DEFAULT
## Basic Python checks
if test x$enable_pyext == xyes; then
AZ_PYTHON_PATH
- AZ_PYTHON_VERSION_ENSURE([2.3])
+ AZ_PYTHON_VERSION_ENSURE([2.4])
+ PYTHON_VERSION=`$PYTHON -c "import sys; print '.'.join(map(str, sys.version_info@<:@:2@:>@));"`
+ AC_SUBST(PYTHON_VERSION)
+ AGILE_PYTHONPATH=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(prefix='$prefix');"`
+ AC_SUBST(AGILE_PYTHONPATH)
## Test for Python header
if test -x "$PYTHON"; then
AC_MSG_CHECKING([for Python include path])
python_incpath=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();"`
AC_MSG_RESULT([$python_incpath])
python_header="$python_incpath/Python.h"
if test -z "$python_incpath"; then
AC_MSG_WARN([Can't build Python extension since include directory cannot be determined from distutils])
enable_pyext=no
elif test ! -e "$python_header"; then
AC_MSG_WARN([Can't build Python extension since header file $python_header cannot be found])
enable_pyext=no
fi
fi
fi
## SWIG version checks
if test x$enable_pyext == xyes; then
AC_PROG_SWIG
if test x$SWIG == x; then
AC_MSG_WARN([Can't build Python extension since swig could not be found])
## TODO: Test that SWIG makes a compilable source file...
## cf. g++ 4.x requires that string literal is "_const_ char*"
enable_pyext=no
fi
fi
## Finish
if test x$enable_pyext == xyes; then
AC_MSG_NOTICE([All Python build checks successful: 'rivet' Python extension will be built])
fi
AM_CONDITIONAL(ENABLE_PYEXT, [test x$enable_pyext == xyes])
AC_EMPTY_SUBST
AC_CONFIG_FILES(Makefile)
AC_CONFIG_FILES(include/Makefile include/AGILe/Makefile)
AC_CONFIG_FILES(src/Makefile src/Core/Makefile src/Tools/Makefile src/IO/Makefile)
AC_CONFIG_FILES(src/FPythia/Makefile)
AC_CONFIG_FILES(src/FHerwig/Makefile)
AC_CONFIG_FILES(src/AlpGen/Makefile)
AC_CONFIG_FILES(src/Charybdis/Makefile)
AC_CONFIG_FILES(src/Rapgap/Makefile)
AC_CONFIG_FILES(src/Cascade/Makefile)
AC_CONFIG_FILES(bin/Makefile bin/agile-config)
-AC_CONFIG_FILES(pyext/Makefile pyext/setup.py)
+AC_CONFIG_FILES(pyext/Makefile pyext/AGILe/Makefile pyext/setup.py)
AC_CONFIG_FILES(data/Makefile)
-#AC_CONFIG_FILES(src/Test/Makefile)
+AC_CONFIG_FILES(test/Makefile)
AC_OUTPUT
if test x$enable_python == xyes; then
cat <<EOF
************************************************************
AGILe CONFIGURED!
Now build and install (to the $prefix tree) with e.g.
make -j2 && make -j2 install
To use AGILe, either link against the AGILe library with
your own main program, or use the agile-runmc command line
program.
For a more pleasant command line experience, you can include
the data/agile-completion file into your .bashrc file
(or your bash_completion.d directory if you have one.)
************************************************************
EOF
fi
Index: trunk/include/AGILe/FHerwig/FHerwigWrapper65.hh
===================================================================
--- trunk/include/AGILe/FHerwig/FHerwigWrapper65.hh (revision 739)
+++ trunk/include/AGILe/FHerwig/FHerwigWrapper65.hh (revision 740)
@@ -1,145 +1,144 @@
#ifndef AGILE_HERWIGWRAPPER65_HH
#define AGILE_HERWIGWRAPPER65_HH
#include <ctype.h>
#include "AGILe/FHerwig/FHerwigWrapper.hh"
/// Herwig common block declarations
/// Adapted from HepMC wrapper for Herwig by Matt Dobbs
extern "C" {
// COMMON/HWPROC/EBEAM1,EBEAM2,PBEAM1,PBEAM2,IPROC,MAXEV
#define FC_HWPROC FC_FUNC(hwproc, HWPROC)
extern struct {
double EBEAM1,EBEAM2,PBEAM1,PBEAM2;
int IPROC,MAXEV;
} FC_HWPROC;
// CHARACTER*8 PART1,PART2
// COMMON/HWBMCH/PART1,PART2
#define FC_HWBMCH FC_FUNC(hwbmch, HWBMCH)
extern struct {
char PART1[8],PART2[8];
-
} FC_HWBMCH;
+
// INTEGER IPART1,IPART2
// COMMON/HWBEAM/IPART1,IPART2
#define FC_HWBEAM FC_FUNC(hwbeam, HWBEAM)
extern struct {
int IPART1,IPART2;
-
} FC_HWBEAM;
// COMMON/HWEVNT/AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM,
// & IDHW(NMXHEP),IERROR,ISTAT,LWEVT,MAXER,MAXPR,NOWGT,NRN(2),NUMER,
// & NUMERU,NWGTS,GENSOF
const int herwig_hepevt_size = 10000;
#define FC_HWEVNT FC_FUNC(hwevnt, HWEVNT)
extern struct {
double AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM;
int IDHW[herwig_hepevt_size],IERROR,ISTAT,LWEVT,MAXER,MAXPR,
NOWGT,NRN[2],NUMER,NUMERU,NWGTS;
int GENSOF; // Beware! in F77 this is logical
} FC_HWEVNT;
// C Basic parameters (and quantities derived from them)
// COMMON/HWPRAM/AFCH(16,2),ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC,
// & CLMAX,CLPOW,CLSMR(2),CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH,
// & GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL(4),PHIMIX,PIFAC,
// & PRSOF,PSPLT(2),PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH(16),QG,
// & QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH(16,2),VCKM(3,3),VGCUT,VQCUT,
// & VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME,
// & IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF(2),NBTRY,NCOLO,NCTRY,
// & NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT(2),NPRFMT,
// & AZSOFT,AZSPIN,CLDIR(2),HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,ZPRIME,
// & PRNDEF,PRNTEX,PRNWEB
#define FC_HWPRAM FC_FUNC(hwpram, HWPRAM)
extern struct {
double AFCH[2][16],ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC,
CLMAX,CLPOW,CLSMR[2],CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH,
GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL[4],PHIMIX,PIFAC,
PRSOF,PSPLT[2],PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH[16],QG,
QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH[2][16],VCKM[3][3],VGCUT,VQCUT,
VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME;
int IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF[2],NBTRY,NCOLO,NCTRY,
NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT[2],NPRFMT;
int AZSOFT,AZSPIN,CLDIR[2],HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,
ZPRIME,PRNDEF,PRNTEX,PRNWEB; // In F77 these are logical
} FC_HWPRAM;
- // COMMON/HWPRCH/AUTPDF(2),BDECAY
+ // COMMON/HWPRCH/AUTPDF(2),BDECAY
#define FC_HWPRCH FC_FUNC(hwprch, HWPRCH)
extern struct {
char AUTPDF[2][20],BDECAY;
} FC_HWPRCH;
- // COMMON /HW6506/PDFX0,PDFPOW
+ // COMMON /HW6506/PDFX0,PDFPOW
#define FC_HW6506 FC_FUNC(hw6506, HW6506)
extern struct {
double PDFX0,PDFPOW;
} FC_HW6506;
- // COMMON/HWUCLU/CLDKWT(NMXCDK),CTHRPW(12,12),PRECO,RESN(12,12),
- // & RMIN(12,12),LOCN(12,12),NCLDK(NMXCDK),NRECO,CLRECO
+ // COMMON/HWUCLU/CLDKWT(NMXCDK),CTHRPW(12,12),PRECO,RESN(12,12),
+ // & RMIN(12,12),LOCN(12,12),NCLDK(NMXCDK),NRECO,CLRECO
const int nmxcdk = 4000;
#define FC_HWUCLU FC_FUNC(hwuclu, HWUCLU)
extern struct {
double CLDKWT[nmxcdk],CTHRPW[12][12],PRECO,RESN[12][12],RMIN[12][12];
int LOCN[12][12],NCLDK[nmxcdk],NRECO;
int CLRECO; //< CLRECO is F77 logical.
} FC_HWUCLU;
- // COMMON/HWHARD/ASFIXD,CLQ(7,6),COSS,COSTH,CTMAX,DISF(13,2),EMLST,
- // & EMMAX,EMMIN,EMPOW,EMSCA,EPOLN(3),GCOEF(7),GPOLN,OMEGA0,PHOMAS,
- // & PPOLN(3),PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM,
- // & SINS,THMAX,Y4JT,TMNISR,TQWT,XX(2),XLMIN,XXMIN,YBMAX,YBMIN,YJMAX,
- // & YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR,IAPHIG,IBRN(2),IBSH,
- // & ICO(10),IDCMF,IDN(10),IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ(6),MAXFL,
- // & BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM
+ // COMMON/HWHARD/ASFIXD,CLQ(7,6),COSS,COSTH,CTMAX,DISF(13,2),EMLST,
+ // & EMMAX,EMMIN,EMPOW,EMSCA,EPOLN(3),GCOEF(7),GPOLN,OMEGA0,PHOMAS,
+ // & PPOLN(3),PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM,
+ // & SINS,THMAX,Y4JT,TMNISR,TQWT,XX(2),XLMIN,XXMIN,YBMAX,YBMIN,YJMAX,
+ // & YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR,IAPHIG,IBRN(2),IBSH,
+ // & ICO(10),IDCMF,IDN(10),IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ(6),MAXFL,
+ // & BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM
#define FC_HWHARD FC_FUNC(hwhard, HWHARD)
extern struct {
double ASFIXD,CLQ[6][7],COSS,COSTH,CTMAX,DISF[2][13],EMLST,EMMAX,
EMMIN,EMPOW,EMSCA,EPOLN[3],GCOEF[7],GPOLN,OMEGA0,PHOMAS,PPOLN[3],
PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM,
SINS,THMAX,Y4JT,TMNISR,TQWT,XX[2],XLMIN,XXMIN,YBMAX,YBMIN,YJMAX,
YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR;
int IAPHIG,IBRN[2],IBSH,ICO[10],IDCMF,IDN[10],IFLMAX,IFLMIN,IHPRO,
IPRO,MAPQ[6],MAXFL,BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM;
} FC_HWHARD;
#define FC_HWDIST FC_FUNC(hwdist, HWDIST)
extern struct {
double EXAG, GEV2MM, HBAR, PLTCUT, VMIN2, VTXPIP[5],
XMIX[2], XMRCT[2], YMIX[2], YMRCT[2];
int IOPDKL;
int MAXDKL, MIXING, PIPSMR;
} FC_HWDIST;
#define FC_HWPROP FC_FUNC(hwprop, HWPROP)
extern struct {
double RLTIM[501], RMASS[501], RSPIN[501];
int ICHRG[501], IDPDG[501], IFLAV[501], NRES;
int VTOCDK[501], VTORDK[501];
int QORQQB[501], QBORQQ[501];
} FC_HWPROP;
// HERWIG block data initializer: call "hwudat();" before starting
#define FC_HWPUDAT FC_FUNC(hwudat, HWUDAT)
void FC_HWUDAT(void);
}
#endif
Index: trunk/include/AGILe/Tools/Logging.hh
===================================================================
--- trunk/include/AGILe/Tools/Logging.hh (revision 739)
+++ trunk/include/AGILe/Tools/Logging.hh (revision 740)
@@ -1,175 +1,175 @@
-#ifndef AGILE_LOGGING_HH
+#ifndef AGILE_LOGGING_HH
#define AGILE_LOGGING_HH
#include "AGILe/AGILe.hh"
namespace AGILe {
class Log {
public:
/// Log priority levels.
enum Level {
- TRACE = 0, DEBUG = 10, INFO = 20, WARN = 30, ERROR = 40, CRITICAL = 50, ALWAYS = 50
+ TRACE = 0, DEBUG = 10, INFO = 20, WARN = 30, WARNING = 30, ERROR = 40, CRITICAL = 50, ALWAYS = 50
};
/// Typedef for a collection of named logs.
typedef std::map<const std::string, Log*> LogMap;
/// Typedef for a collection of named log levels.
typedef std::map<const std::string, int> LevelMap;
/// Typedef for a collection of shell color codes, accessed by log level.
typedef std::map<int, std::string> ColorCodes;
private:
/// A static std::map of existing logs: we don't make more loggers than necessary.
static LogMap existingLogs;
/// A static std::map of default log levels.
static LevelMap defaultLevels;
/// A static std::map of shell color codes for the log levels.
static ColorCodes colorCodes;
/// Shell color code for the end of the log levels.
static std::string endColorCode;
/// Show timestamp?
static bool showTimestamp;
/// Show log level?
static bool showLogLevel;
/// Show logger name?
static bool showLoggerName;
/// Use shell colour escape codes?
static bool useShellColors;
public:
/// Set the log levels
static void setLevel(const std::string& name, int level);
static void setLevels(LevelMap& logLevels);
static void setShowTimestamp(const bool showTime=true) {
showTimestamp = showTime;
}
static void setShowLevel(const bool showLevel=true) {
showLogLevel = showLevel;
}
static void setShowLoggerName(const bool showName=true) {
showLoggerName = showName;
}
static void setUseColors(const bool useColors=true) {
useShellColors = useColors;
}
protected:
/// @name Hidden constructors etc.
//@{
/// Constructor 1
Log(const std::string& name);
/// Constructor 2
Log(const std::string& name, int level);
/// Copy constructor
//Log(const Log&);
/// Copy assignment operator
//Log& operator=(const Log&);
//@}
static std::string getColorCode(int level);
public:
- /// Get a logger with the given name. The level will be taken from the
+ /// Get a logger with the given name. The level will be taken from the
/// "requestedLevels" static std::map or will be INFO by default.
static Log& getLog(const std::string& name);
public:
/// Get the priority level of this logger.
int getLevel() const {
return _level;
}
/// Set the priority level of this logger.
Log& setLevel(int level) {
_level = level;
return *this;
}
/// Get a log level enum from a string.
static Level getLevelFromName(const std::string& level);
/// Get the string representation of a log level.
static std::string getLevelName(int level);
/// Get the name of this logger.
std::string getName() const {
return _name;
}
/// Set the name of this logger.
Log& setName(const std::string& name) {
_name = name;
return *this;
}
/// Will this log level produce output on this logger at the moment?
bool isActive(int level) const {
return (level >= _level);
}
/// @name Explicit log methods
//@{
void trace(const std::string& message) { log(TRACE, message); }
void debug(const std::string& message) { log(DEBUG, message); }
-
+
void info(const std::string& message) { log(INFO, message); }
void warn(const std::string& message) { log(WARN, message); }
void error(const std::string& message) { log(ERROR, message); }
void always(const std::string& message) { log(ALWAYS, message); }
//@}
private:
/// This logger's name
std::string _name;
-
+
/// Threshold level for this logger.
int _level;
-
+
protected:
/// Write a message at a particular level.
void log(int level, const std::string& message);
/// Turn a message string into the current log format.
std::string formatMessage(int level, const std::string& message);
public:
/// A null output stream, used for piping discarded output to nowhere.
/// @todo Hide this...
std::ostream* const _nostream;
/// The streaming operator can use Log's internals.
friend std::ostream& operator<<(Log& log, int level);
};
-
+
/// Streaming output to a logger must have a Log::Level/int as its first argument.
std::ostream& operator<<(Log& log, int level);
-
+
}
#endif
Index: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog (revision 739)
+++ trunk/ChangeLog (revision 740)
@@ -1,596 +1,603 @@
+2010-07-16 Andy Buckley <andy@insectnation.org>
+
+ * Restructuring SWIG module to a more general package with a SWIG
+ core.
+
+ * Requiring Python >= 2.4.
+
2010-06-10 Andy Buckley <andy@insectnation.org>
* Releasing AGILe 1.1.6.
* Now using Boost lexical_cast instead of stringstream for safety
and convenience.
2010-06-01 Andy Buckley <andy@insectnation.org>
* Upgrading the Python and SWIG checks to the cleverer ones from
recent Rivet releases.
* Fixing Loader to pick up Herwig, Charybdis and Cascade from
changed Genser locations, and to ensure that Jimmy and Herwig are
both picked from the ".3" Genser sub-version, and hence have the
same HEPEVT common block size: this fixes a memory corruption
issue which was making HW+JM exit with an error after only a small
number of events. Note that as a result of fixing these Genser
versions, the AGILe command-line name for Herwig has changed from
"Herwig:6510" to "Herwig:6.510".
2010-05-07 Andy Buckley <andy@insectnation.org>
* Adding params files for ALEPH and DELPHI PYTHIA tunes, thanks to
Sarka Todorova.
* Fix missing usage message on agile-runmc.
* Changing generator search path to only fall back to hard-coded
Genser AFS area if AGILE_GEN_PATH is not set. Spurred by wanting
to avoid AFS timeouts on systems with /afs mounted where there is
no valid token... the initialisation slowdown from this timeout
puzzled me for a *long* time, before I worked out that it was
connected to me having added AFS mounting to my laptop!
2010-04-22 Andy Buckley <andy@insectnation.org>
* Using unit conversion for all generators reading from
HEPEVT (i.e. all generators!).
* Adding HepMCTools.hh internal header, containing units
conversion routine for converting HEPEVT-dumped events in GeV/mm
convention to the current event's units if required.
* Holger added Cascade interface.
2010-03-15 Andy Buckley <andy@insectnation.org>
* Adding build of omitted libAGILeAlpGen.so library.
* Moved core components into src/Core to improve build flexibility.
* Holger added RapGap interface.
2009-11-11 Andy Buckley <andy@insectnation.org>
* Making params evaluate in order given on the command line / in
param files. The first occurence position is used if a parameter
is specified more than once, but the last-specified _value_ will
be used.
2009-11-10 Andy Buckley <andy@insectnation.org>
* Removing all traces of C++ generators, since I don't want to
give anyone the impression that this is a good way to run them.
* Adding --filter option to strip unphysical particles out of the
event record.
* Using shared_ptr to automatically manage the Run I/O pointers.
2009-11-08 Andy Buckley <andy@insectnation.org>
* Splitting Charybdis processing as for AlpGen, and hence adding a
proper CharybdisJimmy interface (and registering it in the Loader).
* Adding proper AlpGenJimmy library support to Loader.
2009-10-23 Andy Buckley <andy@insectnation.org>
* Writing event weights (and estimated errors) into HepMC (if
supported) for Fortran HERWIG.
2009-10-21 Andy Buckley <andy@insectnation.org>
* Completing documentation of HERWIG params.
* Adding errors to Pythia 6 cross-section estimate filling.
2009-10-16 Andy Buckley <andy@insectnation.org>
* Creating new Run object, to allow removal of Python HepMC
interface (which is no bad thing, but if forces a SWIG dependence
on the HepMC version, and SL doesn't have a sufficiently
functional copy of SWIG to be relied on.
* Using AlpGen interface by composition rather than inheritance:
AlpGenHerwigJimmy should now work.
2009-06-10 Andy Buckley <andy@insectnation.org>
* Using "embedded" hepmc.i in AGILe.i, as for rivet.i, to make an
1.1.4 alpha tarball which will work on lxplus and can be
bootstrapped with Rivet.
2009-06-03 Andy Buckley <andy@insectnation.org>
* Putting SWIG-generated source files under version control, to
make life easier for people who check out the SVN head but don't
have an up to date (or any) copy of SWIG.
2009-04-07 Andy Buckley <andy@insectnation.org>
* Adding $(DESTDIR) prefix to call to Python module "setup.py
install"
2009-03-04 Andy Buckley <andy@insectnation.org>
* Adding AGILE_DEBUG environment variable.
* Fixing SWIG build to allow reliable interchange of HepMC objects.
2009-02-25 Andy Buckley <andy@insectnation.org>
* Make Python extension etc. build by default.
2009-01-22 Andy Buckley <andy@insectnation.org>
* agile-runmc: added handling of an RG:Generator param, and hence
the ability to dump out a whole gen config, including run
conditions and generator name, using --list-used-analyses.
2009-01-15 Andy Buckley <andy@insectnation.org>
* Converting Python build system to bundle SWIG output in tarball.
2009-01-05 Andy Buckley <andy@insectnation.org>
* Python: replaced Python extension build process with a more
portable version based on distutils and newer m4 macros. Breaks
distcheck until distutils SWIG support is improved to support
multi-dir builds.
2008-11-28 Andy Buckley <andy@insectnation.org>
* Replaced binreloc with an upgraded and symbol-independent copy.
2008-11-21 Andy Buckley <andy@insectnation.org>
* Pre-emptively recognise Pythia 6.420, since we know there will
be one (it will include the Skands + Professor tune + Peter's
other 'Perugia' tunes).
* Moved RivetGun params into AGILe.
* Various command line tweaks, bug fixes and cosmetic improvements.
2008-11-18 Hendrik Hoeth <hendrik.hoeth@cern.ch>
* Recognise Pythia 6.419
2008-11-04 Andy Buckley <andy@insectnation.org>
* Added bash completion file, minor UI bug fixes, and more
complete beam string handling.
2008-10-30 Andy Buckley <andy@insectnation.org>
* Added param file search path handling ("." + AGILE_PARAM_PATH),
and also support for an "include" statement in param files.
2008-10-28 Andy Buckley <andy@insectnation.org>
* Added Python access to AGILe log system, param dumping, RNG seed
control and flexible initial state energy, num events and beam
specification.
2008-10-21 Andy Buckley <andy@insectnation.org>
* Making Herwig++ call its initial-state setting before any params
are passed, since the AGILeGenerator object must be set up first.
* All generators will now try to load a "HEAD" version if
available.
2008-10-09 Andy Buckley <andy@insectnation.org>
* Fixed bug in FHerwigJimmy which meant that the event loop was
infinite.
2008-10-07 Andy Buckley <andy@insectnation.org>
* Added SWIG Python interface --- just mapping Loader and
Generator (ignoring GeneratorState). Seems to work!
* Added missing TinyXML source files --- Python refused to load
the library since the symbols weren't defined.
2008-08-24 Andy Buckley <andy@insectnation.org>
* Fixed Sherpa detection --- boostrapping now works on lxplus.
* Added unindexed MODPDF and AUTPDF param names to FHerwig, since
you usually want both particles to have the same PDF setup, and
this is a nice bit of syntactic sugar.
* Herwig++ setup now uses the flags suggested by the herwig-config
script, and --with-thepeg is no longer used.
* Set default FHerwig process to be QCD 2->2.
* Removed FHerwig MAXEV and MAXER param handling, since their role
is irrelevant within AGILe.
* Added error-handling loops to FHerwig and FHerwigJimmy, so that
Herwig errors are caught and the event is re-generated until it
behaves itself.
2008-08-12 Andy Buckley <andy@insectnation.org>
* Added a AGILE_USE_AFS variable which can be set to "no" to stop
AGILe's generator loader from automatically inserting GENSER's AFS
path into the gen search path.
* Removed default matrix elements from Herwig++.
2008-08-11 Andy Buckley <andy@insectnation.org>
* src/Loader.cc: Every call to getenv now uses a separate "const
char*" return variable. CMTCONFIG env variable no longer used,
since it was not there unless using an ATLAS/LHCb build shell and
was in the wrong tag format anyway.
* src/CCHerwig/CCHerwig.cc: Added handling of a special INFILE
parameter, which is used as the argument to a ThePEG "read"
command.
* src/Loader.cc: Factorized findGenLib function into several
smaller functions to aid memory problem investigation.
2008-08-08 Andy Buckley <abuckley@cern.ch>
* C++ generator configure now fails gracefully.
* AlpGen and Charybdis now work with both Herwig and Pythia from
the Genser versions. Hurrah!
2008-08-05 Andy Buckley <andy@insectnation.org>
* Removed setting of Sherpa EVENT_MODE and ANALYSIS switches, as
recommended by Frank Siegert.
2008-08-04 Andy Buckley <andy@insectnation.org>
* Changed AlpGen and Charybdis to load using the Genser names. Get
segfaults at the moment, but the libs are at least detected on
lxplus.
* Loader tries to find LHAPDF library in both the Genser structure
and as a fallback to the normal $prefix type area.
2008-07-29 Andy Buckley <andy@insectnation.org>
* Loader now prefers the '.2' versions of Genser gens if possible,
since for the Fortran gens these are compiled with the larger
10000-entry HEPEVT common blocks (as opposed to the default 4000)
* Automated Herwig and Pythia's acquiring common block sizes -
fixes a problem with CERN Pythia installations.
* Fixed wrong flags on agile-config
2008-07-27 Andy Buckley <andy@insectnation.org>
* Added better tests for Boost headers.
* Added testing for -ansi, -pedantic and -Wall compiler flags.
* Removed Status returns from the interface.
2008-07-23 Andy Buckley <andy@insectnation.org>
* Added explicit Boost header checks, since old versions may not
have all the necessary headers.
2008-07-16 Andy Buckley <andy@insectnation.org>
* Improved debug info in the loader (again!)
* Tries to fall back to more Genser directories, such as
$GENSER/MCGenerators (for forward compatibility with Genser
boostrap script with mkGenserArea), and also to try the old
lib<gen><version>.<ext> convention.
* Now uses Boost foreach (if Rivet can, so can AGILe!)
2008-07-09 Andy Buckley <andy@insectnation.org>
* Loader improvements: LHAPDF availability is now tested as for
generators, and is done only once.
* Upgraded Sherpa to use new HepMC interface fixes. This requires
the unreleased Sherpa 1.1.2, either from trunk or beta tarball.
* Replaced cout and cerr with proper logging classes.
2008-07-07 Andy Buckley <andy@insectnation.org>
* Added "AGILE_" namespacing to all header guards.
* Added flag to Sherpa build to disable warnings about deprecated
"const char*" to "char*" implicit conversions. We can't do
anything about this and it's not a "real" problem at the binary
level.
* Compatibility fixes for GCC 4.3.
2008-07-04 Andy Buckley <andy@insectnation.org>
* Loader now only tests that libraries are present rather than
dlopen/dlclosing them when building the "available gens"
list. This solves the problems we've seen where Sherpa being
present breaks all the other generators (for reasons not fully
understood.)
* More Sherpa improvements: SHERPA_CPP_PATH and RESULTS_DIRECTORY
are now created if they weren't already present.
2008-06-19 Andy Buckley <andy@insectnation.org>
* Fix to Sherpa interface - changed header name in Sherpa version
1.1.1.
2008-06-11 Andy Buckley <andy@insectnation.org>
* AGILe 1.1.1 release.
2008-06-11 Jon Butterworth <jmb@hep.ucl.ac.uk>
* Fixed dynamic loader for "enhanced" Herwigs to also load the
basic libAGILeFHerwig AGILe module.
* Added HWBEAM and HWUIDT param wrappers.
2008-06-10 Andy Buckley <andy@insectnation.org>
* Re-added assigning of the agilehandler variable in the library
loader. This had been accidentally removed but worked as a fluke
on Linux systems because dlsym seems to treat a null pointer as
meaning RTLD_DEFAULT: it broke on Mac OS X.
2008-06-06 Andy Buckley <andy@insectnation.org>
* Changed generator names to use a closer match to the Genser
convention, which means that Genser-convention version numbers can
be extracted. This fixes the problem with loading Pythia6 and
Pythia8 on CERN AFS.
2008-06-03 Andy Buckley <andy@insectnation.org>
* 1.1.0 release.
2008-05-28 Andy Buckley <andy@insectnation.org>
* Added conditional compilation of C++ generator Loader.cc entries
based on configure results, to avoid problems with AFS version of
SHERPA.
2008-05-15 Andy Buckley <andy@insectnation.org>
* Disabled loading f(py/hw)_dummies for AlgGen and Charybdis
interfaces, since they specialise the up* routines.
* Added LHAPDF loading to C++ gens.
* Fixed loading of LHAPDF in FHerwig and FPythia with fallback to
PDF dummy libs.
2008-05-13 Andy Buckley <andy@insectnation.org>
* Improved logging interface: log levels are now integers (for
cross-library compatibility and level setting also applies to
existing loggers.
2008-05-09 Andy Buckley <andy@insectnation.org>
* Added agile-config script.
* Merged Herwig++ 2.1 -> 2.2 implementation changes.
2008-04-23 Andy Buckley <andy@insectnation.org>
* Added a hack to make libtool able to use gfortran, thinking that
it's the F77 compiler.
2008-03-19 Andy Buckley <andy@insectnation.org>
* Added library versioning flags in the configure.ac file.
* Re-organised directory structure to allow builds of single
generators by "cd"ing to the appropriate subdirectory, and to
remove the redundant "Generators" layer.
2008-03-19 Andy Buckley <andy@insectnation.org>
* FPythia parameter passing now converts the param name to upper
case before passing to PYGIVE, since weird behaviour has been
noticed when passing the MDME params with lower-case names.
2008-03-18 Andy Buckley <andy@insectnation.org>
* Fixes to the Sherpa interface to make the paths work, to handle
the "normal makelibs exception" a bit better, and other general
tweaks. It now works, but SHERPA itself needs a patch to enable
the HepMC filling - this will be in the next version. HepMC >=
2.3.6 is required for the GenEvent copying to work properly.
2008-02-08 Andy Buckley <andy@insectnation.org>
* Fixes and extensions for HERA running added to FPythia and
FHerwig.
2008-01-22 Andy Buckley <andy@insectnation.org>
* FPythia now changed to use the Genser HEPEVT size of 10000 (the
mismatch with the previous default value of 4000 resulted in
generating lots of events with no momenta)
2008-01-17 Andy Buckley <andy@insectnation.org>
* Loader now tries to use the Genser liblinks area by default,
using a precomputed value and the CMTCONFIG variable as guesses
for the non-programmatic 'LGC platform tag'
* Fixed loader so that the FHerwig dummy HWAEND symbol gets
exported - FHerwig now works again.
* Added more configurable generator library loading, including new
AGILE_GEN_PATH variable.
* Added binreloc path detection.
2007-11-26 Andy Buckley <andy@insectnation.org>
* Removing RivetGun components and re-branding this project as
pure AGILe.
* Splitting generator library detection into AGIle
2007-10-31 Andy Buckley <andy@insectnation.org>
* Tagging as 1.0b3 for HERA-LHC meeting.
* Now dlopening LHAPDF all the time - this is because LHADF uses
some FPythia common blocks and the loading order is therefore
significant.
2007-10-29 Andy Buckley <andy@insectnation.org>
* Fixed FHerwigJimmy event loop: this aborted at the wrong point
and didn't handle MSPARM == 0 properly (it trapped it in an
infinite loop until the failure counter overflowed).
* Fixed istringstream handling of params by introducing the
templated as<T> functions and their asInt/Double/Bool wrappers in
Utils.hh. Previously the stream was being used many times, often
through stream failures, which led to nonsense results. The new
approach makes a new inline stream each time.
* Now linking LHAPDF against rivetgun executable.
* Got Charybdis working with FHerwig and loading properly (but not
running correctly) with FPythia.
2007-10-28 Andy Buckley <andy@insectnation.org>
* Using a vector of dlopen handles to allow arbitrary numbers of
libs to be dynamically loaded (dlopened).
2007-10-23 Andy Buckley <andy@insectnation.org>
* rivetgun now throws an error if it can't read a specified config
file.
2007-10-18 Andy Buckley <andy@insectnation.org>
* Removed default build of rivetgun-static.
* Using HepMC::GenEvent::clear() method.
* Removed defunct tests.
* Conversion of setParam methods to only implement the
string-valued one and to use stringstreams for type conversions
where needed.
* Added methods to Generator to perform common functionality:
these are conventionally called as utility functions by the
derived class implementations.
* Huge overhaul of generator classes: renames of Herwig++ class to
CCHerwig, introduction of AGILe namespace and header area, removal
of *Mod libraries, reworking of AlpGen, Jimmy and Charybdis
interfaces via inheritance, interface improvements to rivetgun.
2007-10-16 James Monk
* Fixed dynamic loading for Mac OS X.
2007-10-03 Andy Buckley <andy@insectnation.org>
* Added more Herwig++ features: now works but leaks memory per
event.
2007-10-02 Andy Buckley <andy@insectnation.org>
* Removed explicit FPythia::setParam and Herwig::setParam methods,
except for inlined versions to call the Generator::setParam
defaults.
* Made Generator::makeEvent and Generator::setSeed methods pure
virtual, since throwing a runtime_error by default wasn't
producing any helpful hints to interface implementers.
2007-09-28 Andy Buckley <andy@insectnation.org>
* Added portable paths to the Herwig++ tester and moved the new
Herwig++ control code into the existing Herwig class, which
doesn't really do what we want.
2007-09-26 Andy Buckley <andy@insectnation.org>
* Added autoconf Fortran portability features to RivetGun
executables and the Fortran Herwig, Pythia, AlpGen and Charybdis
generators.
2007-09-21 Andy Buckley <andy@insectnation.org>
* rivetgun executable now tests for ability to dlopen() each
potential generator library when building the command line list of
valid generators.
2007-06-24 Andy Buckley <andy@insectnation.org>
* Changed the logging of event numbers to use a specific logger
and to assign different log levels to every 100th and 1000th
event. Most event numbers are now at the DEBUG level and so won't
be shown by default.
* src/Test/RivetGunInterfaceStatic.cc: Moved the available
generators code into a new include/RivetGun/AvailableGenerators.hh
2007-06-16 Jon Butterworth <jmb@hep.ucl.ac.uk>
* Make Pythia 6.411 the latest default.
2007-06-01 Doug Gingrich <gingrich@ualberta.ca>
* Added Charybdis interfaces, not yet linking them.
2007-05-23 Jon Butterworth <jmb@hep.ucl.ac.uk>
* Added a local event counter for FPythia.
2007-05-17 Andy Buckley <andy@insectnation.org>
* Added convenience LTDL library, based on instructions at
http://www.gnu.org/software/libtool/manual.html#Distributing-libltdl
2007-02-09 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/Test/RivetGunInterfaceStatic.cc: Now includes Generator.hh
to avoid compilation errors if stupid people try to compile
without any generators.
2006-12-19 Andy Buckley <andy.buckley@durham.ac.uk>
* Added src/Test/RivetGunInterfaceStatic.cc with command line
parsing handled by TCLAP (Templated Command Line Argument Parser).
2005-12-27 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* configure.ac: Added -I$THEPEGPATH/include to AM_CPPFLAGS.
* Config/Rivet.h: Added some std incudes and using std::
declaration.
* Analysis/RivetInfo.*: Fixed some bugs. The RivetInfo facility
now works, although it has not been thoroughly tested.
* Analysis/Examples/TestMultiplicity.*: Re-introduced
FinalStateHCM for testing purposes but commented it away again.
* .: Made a number of changes to implement handling of RivetInfo
objects.
Index: trunk/src/Cascade
===================================================================
--- trunk/src/Cascade (revision 739)
+++ trunk/src/Cascade (revision 740)
Property changes on: trunk/src/Cascade
___________________________________________________________________
Modified: svn:ignore
## -1 +1,4 ##
+Makefile
+Makefile.in
.deps
+.libs
Index: trunk/src/Makefile.am
===================================================================
--- trunk/src/Makefile.am (revision 739)
+++ trunk/src/Makefile.am (revision 740)
@@ -1,13 +1,12 @@
SUBDIRS = Core Tools IO
SUBDIRS += FPythia FHerwig AlpGen Charybdis Rapgap Cascade
SUBDIRS += .
-#SUBDIRS += Test
## Top-level AGILe library
lib_LTLIBRARIES = libAGILe.la
libAGILe_la_SOURCES =
libAGILe_la_LIBADD = \
Core/libAGILeCore.la \
Tools/libAGILeTools.la \
IO/libAGILeIO.la \
-L$(HEPMCLIBPATH) -l$(HEPMCLIBNAME)

File Metadata

Mime Type
text/x-diff
Expires
Sat, Dec 21, 6:00 PM (10 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4023728
Default Alt Text
(67 KB)

Event Timeline