Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F11222039
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
11 KB
Subscribers
None
View Options
diff --git a/README b/README
index ebf8d09..37a621d 100644
--- a/README
+++ b/README
@@ -1,134 +1,136 @@
RELEASE NOTES
=============
The major points comparing this version with the 2009 release are the following:
-1. This version uses Pythia 8 (version 8.160 and above is required) and the
+1. This version can use Pythia 8 (version 8.160 and above is required) and the
C++ interfaced packages Photos (version 3.5 and above) and Tauola
(version 1.0.7 and above).
A new abstract interface has been created in EvtGenModels/EvtAbsExternalGen.hh
to allow us to use external generators more easily. The EvtGenModel classes
EvtPythiaEngine, EvtPhotosEngine and EvtTauolaEngine are used to create
instances of these external generators, initialise them, and generate particle
decays (using the HepMC interface, requiring version 2.04 and above). These
particles are then stored as EvtParticle objects within EvtGen.
The files Pythia8_README.txt and Tauola_README.txt files have more details about
using the new Pythia 8 and Tauola generators (called via the PYTHIA and TAUOLA
"decay.dec" model names). The new Photos generator is still called via the PHOTOS
"decay.dec" model name.
It is now possible to use alias particle decays for the Pythia 8 model.
Two Pythia 8 instances are used in EvtPythiaEngine for normal and aliased decays.
Since the underlying code for Photos and Tauola is still Fortran, it is only
possible to have one (unique) instance of each of these external generators.
This can only be fixed if these packages are converted to pure C++ code.
+ In the installation instructions below, it is possible to ignore using these
+ new external generators. Note, however, that the generic "DECAY.DEC" file contains
+ Pythia decays, and if Pythia is not included in the build, these decays are not
+ generated.
2. This version of EvtGen is a merger of the latest LHCb and BaBar EvtGenBase
- and EvtGenModels code. Most changes since the last release are related to
- bug/compiler fixes.
-
+ and EvtGenModels code. New decay models have been added. There is also a new
+ Dalitz decay class, EvtGenericDalitz, that should be used instead of EvtDDalitz.
+ The generic Dalitz model uses xml files to configure the daughter particles as
+ well as the resonance amplitude parameters.
3. Bug fixes for Bs mixing decay/CP violation amplitudes.
Added the capability to use either coherent or incoherent mixing in EvtCPUtil.
One or the other can be chosen as the mixing method for the B system by
choosing 0 (coherent) or 1 (incoherent) for the last integer argument
in the EvtGen() constructor.
-
4. Added two sub-amplitude types LASS_ELASTIC and LASS_RESONANT to the EvtLASSAmp
model. Also added EvtBaryonPCR and EvtBaryonPCRFF models for baryonic semileptonic
- decays using more realistic dynamics.
-
-5. Changed EvtWilsonCoeficients to EvtWilsonCoefficients, used in
- EvtGenModels/EvtLb2Lll.hh.
+ decays using more realistic dynamics. Changed EvtWilsonCoeficients to
+ EvtWilsonCoefficients, used in EvtGenModels/EvtLb2Lll.hh.
BUILDING THE CODE
=================
To build the EvtGen code, first make sure that there are valid (C++) versions
of HepMC, Pythia8, Photos and Tauola available:
HepMC https://savannah.cern.ch/projects/hepmc
Pythia8 http://home.thep.lu.se/~torbjorn/Pythia.html
Photos http://www.ph.unimelb.edu.au/~ndavidson/photos/doxygen/index.html
Tauola http://www.ph.unimelb.edu.au/~ndavidson/tauola/doxygen/index.html
All of these packages have instructions for building them, usually by
running their "configure" script. HepMC is used to store particle information
that is passed between the external generators and EvtGen.
Once these packages are available, set up the EvtGen release by running
./configure
within the EvtGen base directory. When succesful, this will create a config.mk
file that specifies the locations of the include and library directories of
the above external generators.
Then compile the EvtGen code using
make
This should create the libraries lib/libEvtGen.so and lib/archive/libEvtGen.a.
Note that gfortran is needed to compile the code (mainly for Photos/Tauola).
The alternative (not recommended) compilers g77 (f77) can be used instead
by changing the FC variable in the configure script.
To create an EvtGen executable, the following libraries need to be included
in the link path, owing to the dependence on the above external packages and
Fortran code (for some EvtGenModels and for Photos/Tauola):
BASEDIR = <EvtGen directory>
HEPMCDIR = <base directory of HepMC>
PHOTOSDIR = <base directory of C++ Photos>
TAUOLADIR = <base directory of C++ Tauola>
PYTHIADIR = <base directory of Pythia8>
LIBS = -L${BASEDIR}/lib/archive -L${HEPMCDIR}/lib -L${PHOTOSDIR}/lib \
-L${TAUOLADIR}/lib -L${PYTHIADIR}/lib/archive -lEvtGen -lgfortran \
-lHepMC -lPhotosCxxInterface -lPhotosFortran -lTauolaCxxInterface -lTauolaFortran \
-lpythia8 -llhapdfdummy -lhepmcinterface
Three example programs using EvtGen can be seen in the test sub-directory along
with the required Makefile. If there are errors about missing shared libraries,
and they have been built correctly, then the LD_LIBRARY_PATH needs to be set-up
to include them:
setenv LD_LIBRAY_PATH ${LD_LIBRARY_PATH}:<location of HepMC library directory>
setenv LD_LIBRAY_PATH ${LD_LIBRARY_PATH}:<location of Pythia 8 library directory>
setenv LD_LIBRAY_PATH ${LD_LIBRARY_PATH}:<location of Tauola library directory>
setenv LD_LIBRAY_PATH ${LD_LIBRARY_PATH}:<location of Photos library directory>
Code validation
===============
The validation sub-directory contains code validation test cases for Pythia, Tauola and B mixing models.
Run the "configure" script here, which should create a file called extraConfig.mk, and build the
examples using "gmake". Note that some extra configuration may be necessary to set the location
of the ROOT libraries, which are only used to create ntuples and plots for the validation examples.
The script genAllDecayExamples.sh runs other scripts that generate a range of decay modes
using the genExampleRootFiles.cc program. The script compareAllDecays.sh runs a range
of scripts that creates comparison plots using the compareRootFiles.cc program. For now,
the comparisons use the same plots, but each of the "compare.sh" files can be edited to
compare any two versions of ROOT data created by the genExampleRootFiles.cc program.
The testCPVDecays.cc program runs a test for the B mixing decay model.
Examples
========
Some examples are provided in the test sub-directory.
To run these, first build EvtGen, then type "make" in the test directory. Note
that these tests require ROOT to be installed. Running the script "./do_tests"
will run a series of EvtGen examples. Example decay files are in the
test/exampleFiles sub-directory.
diff --git a/test/Makefile b/test/Makefile
index f2a5047..7eda8af 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -1,47 +1,65 @@
CXX = g++
CXXFLAGS = -g -Wall -fPIC
LD = g++
LDFLAGS = -g
SOFLAGS = -shared
# Base directory where the EvtGen libraries are
BASEDIR = ../
# Read in the config.mk file in the base directory to extract where
# the external libraries are, as well as setting compiler flags etc..
include ${BASEDIR}/config.mk
include extraConfig.mk
-# Define the path to all required libraries
-GENLIBS = -L${BASEDIR}/lib/archive -L${HEPMCLIBDIR} -L${PHOTOSLIBDIR} \
- -L${TAUOLALIBDIR} -L${PYTHIALIBDIR} -lEvtGen -lgfortran \
- ${HEPMCLIBLIST} ${PHOTOSLIBLIST} ${TAUOLALIBLIST} ${PYTHIALIBLIST}
+# Need to first add EvtGen libraries, then HepMC, then Photos, Tauola and Pythia,
+# since Photos depends on HepMC etc..
+
+allLibDir=-L$(HEPMCLIBDIR)
+allLibs=$(HEPMCLIBLIST)
+
+ifeq ("$(EVTGEN_PHOTOS)", "1")
+ allLibDir+=-L$(PHOTOSLIBDIR)
+ allLibs+=$(PHOTOSLIBLIST)
+endif
+
+ifeq ("$(EVTGEN_PYTHIA)", "1")
+ allLibDir+=-L$(PYTHIALIBDIR)
+ allLibs+=$(PYTHIALIBLIST)
+endif
+
+ifeq ("$(EVTGEN_TAUOLA)", "1")
+ allLibDir+=-L$(TAUOLALIBDIR)
+ allLibs+=$(TAUOLALIBLIST)
+endif
+
+GENLIBS = -L${BASEDIR}/lib/archive ${allLibDir} -lEvtGen -lgfortran ${allLibs}
INCLUDEDIR = ${BASEDIR}
CXXFLAGS += $(ROOTCFLAGS)
LIBS = $(ROOTLIBS)
NGLIBS = $(ROOTGLIBS)
NGLIBS += -lMinuit
GLIBS = $(filter-out -lNew, $(NGLIBS))
.SUFFIXES: .cc
# ================================================================================
default: evtgenlhc_test1 evt_dalitz example1
evtgenlhc_test1: evtgenlhc_test1.o
$(CXX) $(CXXFLAGS) -o evtgenlhc_test1 evtgenlhc_test1.o $(GENLIBS) $(LIBS)
evt_dalitz: evt_dalitz.o
$(CXX) $(CXXFLAGS) -o evt_dalitz evt_dalitz.o $(GENLIBS) $(LIBS)
example1: example1.o
$(CXX) $(CXXFLAGS) -o example1 example1.o $(GENLIBS) $(LIBS)
.cc.o:
$(CXX) $(CXXFLAGS) -c -o $@ $< -I$(INCLUDEDIR) -I$(HEPMCINCDIR)
clean:
rm -f evtgenlhc_test1 evt_dalitz example1 *.o
diff --git a/test/configure b/test/configure
index 2aa0b47..e86bdb7 100644
--- a/test/configure
+++ b/test/configure
@@ -1,83 +1,81 @@
#! /bin/bash
#Package-specific:>
# === Default values of input parameters ====
ROOTSYS=
COMPMODE=OPT # Default: compiler optimization mode
-#<
-
#--------------------------------------------------------------
check_arguments () {
for arg in $* ; do
if [ "x$arg" = "x--enable-debug" ] ; then
COMPMODE=DBG
elif [ "x$arg" = "x--help" ] ; then
echo -e \
"\nUsage: ./configure [options] , where options are:\n\n"\
"--help : prints this help\n"\
"--rootdir=[full directory path] : specifies location of ROOT base directory (ROOTSYS)\n"\
"--enable-debug : turns on debugging flags\n"
exit
else
if [ "x${arg}" = "x${arg/=/}" ] ; then
echo "${arg}: wrong option. Ignored." >&2
else
option=${arg/=*/}
value=${arg/*=/}
if [ "x${option}" = "x--rootdir" ] ; then
ROOTSYS=${value}
else
echo "${arg}: wrong option. Ignored." >&2
fi
fi
fi
done
return
}
#--------------------------------------------------------
set_rootvars() {
# Check that the ROOTSYS variable is set
if [ -z ${ROOTSYS} ] ; then
ROOTSYS=`root-config --prefix`
fi
echo "ROOTSYS set to ${ROOTSYS}"
ROOTCFLAGS=`${ROOTSYS}/bin/root-config --cflags`
ROOTLIBS=`${ROOTSYS}/bin/root-config --libs`
ROOTGLIBS=`${ROOTSYS}/bin/root-config --glibs`
}
#--------------------------------------------------------
check_arguments $*
set_rootvars
echo "Compilation mode is ${COMPMODE}"
echo -n "Creating extraConfig.mk ... "
rm -f extraConfig.mk
cat > extraConfig.mk << EOT
# Set ROOT environment variables
ROOTSYS = ${ROOTSYS}
ROOTCFLAGS = ${ROOTCFLAGS}
ROOTLIBS = ${ROOTLIBS}
ROOTGLIBS = ${ROOTGLIBS}
#<
EOT
echo " done"
echo -e "\n\nType 'make' to build everything or 'make help' to list build targets.\n\n"
exit
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Wed, May 14, 11:18 AM (11 h, 18 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5111394
Default Alt Text
(11 KB)
Attached To
rEVTGEN evtgen
Event Timeline
Log In to Comment