Page MenuHomeHEPForge

No OneTemporary

Size
91 KB
Referenced Files
None
Subscribers
None
This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,1846 +1,1849 @@
2006-01-31 David Grellscheid <David.Grellscheid@durham.ac.uk>
+ * Repository/EventGenerator.cc: Increased upper limit for
+ MaxErrors to 100000.
+
* PDT/ParticleData.cc, EventRecord/Particle.cc: Bugfixes to
correct the setting of life lengths. Displaced vertices now work.
2006-01-17 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Preliminary fix of the ParVector emacs macro. It
now works in a simple case, but it probably needs more testing.
... and I did some more testing and slight modifications. It
should now be stable.
2006-01-12 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* MatrixElement/ME2to2QCD.cc: Fixed bug where jacobian was applied
twice for 2->2 QCD MEs resulting in completely wrong cross
sections.
2006-01-08 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT/ParticleData.cc: Fixed typos in documentation.
* Interface/Switch.tcc: Fixed throwing of exception if calling
get() for a read-only switch. Moved the exception to the set()
function, where it belongs.
2006-01-06 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Interface/Switch.*, Interface/Reference.*, Interface/RefVector.*:
Implemented fullDescription functions.
2006-01-05 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Repository/RandomGenerator.cc: Fixed error when compiling with
gcc-3.3.1 complaining about different types in call to templated
min function in setSize().
2006-01-01 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Fixed bug when creating .fh file for classes not
in the ThePEG namespace.
* src/setupThePEG.install: added VERSION="" to avoid problems when
VERSION is set during 'make distcheck'.
2005-12-12 David Grellscheid <David.Grellscheid@durham.ac.uk>
* PDT/DecayMode.h: rebind() is not an inline!
2005-12-01 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* EventRecord/Step.h, EventRecord/Particle.h: Fixed the
documentation for the colour neighbour methods. Before the
documentation had reversed the colour and anti-colour.
2005-11-11 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/CFileLineReader.icc: Fixed bug in skip(), now also
skips the character searched for.
* LesHouches/MadGraphReader.cc: Fixed bug in spelling 'Number of
Events' when scanning MadGraph file header.
2005-11-07 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/CFileLineReader.cc: Fixed bug in open function where
the filehandle from the std::fopen call was not stored properly
(thanks to Simon Plaetzer).
2005-10-05 David Grellscheid <David.Grellscheid@durham.ac.uk>
* acinclude.m4: Fixed #15. Not tested on Mac.
2005-10-04 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/setupThePEG.cc, src/runThePEG.cc: Added better handling of
catching a ThePEG::Exception to avoid double output.
2005-10-04 David Grellscheid <David.Grellscheid@durham.ac.uk>
* Doc/reformat.pl, Doc/keywords.sed, Doc/h2html.in, Doc/h2html.awk:
removed obsolete files
* Doc/refman.conf.in: replaced ../../ThePEG with @top_srcdir@
* configure.ac: fixed permissions for Doc/fixincludes.pl. Solves
bug #10
* Repository/Repository.cc: Error message if '.in' file can't be
found. Fixes bug #3.
2005-09-29 David Grellscheid <David.Grellscheid@durham.ac.uk>
* configure.ac: Added configure check for OS X
2005-09-22 David Grellscheid <David.Grellscheid@durham.ac.uk>
* src/ThePEGDefaults.in, MatrixElement/*: name change of
libThePEGMEQCD.so to MEQCD.so to reflect the fact that it is a
module
2005-09-21 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Persistency/PersistentOStream.*,
Persistency/PersistentIStream.*: Let all exception classes inherit
from ThePEG::Exception and added informative (?) errormessages
when anything goes wrong.
2005-09-20 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/ClassTraits.h, lib/ThePEG.el: Modified the comment to
the library() function to indicate the possibility to have several
libraries.
2005-09-15 David Grellscheid <David.Grellscheid@durham.ac.uk>
* *** several files ***: Adressed warning messages from
"-W -Wno-float-equal -Wcast-qual -Wwrite-strings -Wconversion
-Wredundant-decls -Wold-style-cast -Woverloaded-virtual":
-- explicitly initialize base class in copy constructor,
-- fixed C-style casts
2005-09-13 Peter Richardson <Peter.Richardson@durham.ac.uk>
* Helicity (Repository): fixes to use isNear rather than equals in
Helicity classes to avoid boost problems
2005-09-08 David Grellscheid <David.Grellscheid@durham.ac.uk>
* src/Makefile.am: Explicitly set ThePEG_INSTALL_PATH, to fix
problems with some versions of gcc-3.2. Made temporary directory
name in installcheck-local more unique to prevent accidental
deletion of pre-existing directory.
* Repository/Repository.cc, Repository/BaseRepository.cc: Expanded
error messages to mention the class name that has the problem.
* PDF/PDFBase.cc: Fixed 'inline' bug.
2005-09-02 Peter Richardson <Peter.Richardson@durham.ac.uk>
* Helicity/LorentzRSSpinor.icc: fixed bug in the generalCurrent member
2005-09-03 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Added function ThePEG-cond-section to make a
region a conditional section for doxygen.
* src/runThePEG.cc, PDT/: Removed the last traces of PYDECYDummy.
* *** GLOBAL ***: Put all template specializations in conditional
doxygen section called TRAITSPECIALIZATIONS.
2005-09-02 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Doc/Makefile.am: Fixed typo in dependencies for refman-html
target.
* configure.ac: Now uses AC_SEARCH_CLHEP instead of AC_CHECK_CLHEP.
* acinclude.m4: Introduces AC_SEARCH_CLHEP and AC_SEARCH_THEPEG
macros to replace AC_CHECK_CLHEP and AC_CHECK_THEPEG. The new
macros will actively search for valid CLHEP and ThePEG
installations in standard places.
2005-09-01 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDF/BaryonRemnants.*: Added option to always give di-quark when
extracting valence flavour. And fixed a stupid bug...
* src/runThePEG.cc, src/runEventLoop.cc: Use new
EventGenerator::setSeed() function.
* Repository/EventGenerator.*: Removed randomEngine()
function. Made random() protected. Introduced setSeed() function.
* Repository/CurrentGenerator.*: Remove functions accessing the
random generator.
* Repository/UseRandom.*, PDT/WidthGenerator.cc,
PDT/BreitWignerMass.cc, LesHouches/LesHouchesEventHandler.cc:
UseRandom::currentEngine() now returns pointer.
* Handlers/ACDCSampler.*: Now completely use UseRandom.
* PDF/PartonExtractor.cc, Handlers/KinematicalCuts.cc,
EventRecord/ParticleTraits.h, EventRecord/Particle.cc: Removed
.one() methods calls and use implicit conversion instead.
* CLHEPWrap/LorentzRotation.*: Changed some reference to double
arguments to simple doubles. Changed returning _half and _one as
const references instead of objects. Also introduced cast operator
synonomous to one(). Introduces multiplication operators for
Lorentz(5)Vectors.
2005-08-31 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Repository/UseRandom.*: Added access function to the
RandomEngine of the current RandomGenerator.
* PDT/WidthGenerator.cc, PDT/ParticleData.cc,
PDT/BreitWignerMass.cc, PDF/BaryonRemnants.cc,
LesHouches/LesHouchesEventHandler.cc: Now use UseRandom
everywhere.
* Handlers/HandlerBase.*: Changed to use UseRandom instead of
gerenator()->random().
* Repository/UseRandom.fh: Added to forward declare UseRandom.
* Handlers/ACDCSampler.*: Use pointer to RandomGenerator instead
of reference when talking to ACDCGen, which now use UseRandom.
* ACDC/*: Preparing to get rid of the specific RandomGenerator
object and instead use UseRandom. Specifically use pointers
instead of references to a random generator.
* acinclude.m4: Added AC_SEACH_PREFIXDIR_FILES to search for files
in standard directories. Also added THEPEGLIB variable in
AC_CHECK_THEPEG.
* lib/Makefile.am: Try to avoid linking non-existing shared
library files.
2005-08-30 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Config/std.h: Added specialization for std::less template class
to handle type_info pointers properly using type_info::before
function.
* Utilities/DescriptionList.*: Introduced conditional
compilation. The map relating type_info pointers to
ClassDescriptionBase objects does not work with dynamic linking
under MAC OSX, therefore, if THEPEG_DYNAMIC_TYPE_INFO_BUG is
defined, they are now instead indexed by the name() function of
the type_info object.
2005-06-26 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/SimplePhaseSpace.tcc: Fixed bug in angles of
three-body phase space (again).
2005-06-17 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* configure.ac, Doc/*: Changes to get make distcheck work properly.
2005-06-16 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Makefile.am: Install libtool in the lib directory (used in the
Makefile.common).
* configure.ac: Included lib/Makefile.common.install in the
AC_CONFIG_FILES.
* lib/Makefile.*: Now installs a Makefile in the lib directory to
be used as a template to build additional ThePEG modules. Also
installs a Makefile.commin which is included in that Makfile.
2005-06-15 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* acinclude.m4: Corrected the THEPEGDOC path.
* LesHouches/MadGraphReader.cc, MatrixElement/ME2to2QCD.h,
Helicity/LorentzSpinor.h: Doxygen cosmetics.
2005-06-14 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/Makefile.am: Always run check-local.
2005-06-12 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/Makefile.am: Fixes to make distcheck work
smoothly.
2005-06-11 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/Makefile.am: Fixed install, uninstall and installcheck
targets.
2005-06-10 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/Makefile.am: Fixes to make distcheck work properly. Added
versioned executables in installation again.
* lib/Makefile.am: Fix up sym-linking of shared libraries.
* Utilities/SimplePhaseSpace.tcc: Fixed bug in angles of
three-body phase space.
* Config/Makefile.am: Cosmetics.
2005-06-09 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/StringUtils.icc: Introduced simple functions for
manipulating filenames.
* Persistency/PersistentOStream.*, Utilities/DynamicLoader.*:
Created a map in DynamicLoader relating generic shared library
file names to the ones with version suffix, so that the
PersistentOStream can output information about the latter
filenames if present.
* lib/Makefile.am: Link all the shared libraries including the
ones with version suffix and the ones ending with .la.
* */Makefile.am, configure.ac: Moved -version-info to the
individual _LDFLAGS variables in the Makefiles
2005-06-08 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* *** GLOBAL ***: Merged with libtool-devel branch.
* LesHouches/*.h: Changed libThePEGLesHouches.so to LesHouches.so
in the ClassTraits specialization.
2005-06-08 David Grellscheid <david.grellscheid@durham.ac.uk>
* */Makefile.am: Switched to build just one overall libThePEG.so;
Modifications to get 'make distcheck' to work error-free;
Modifications to allow compilation on OS X.
* MatrixElements/ME[Qq][Qq]2[Qq][Qq].*: renamed to avoid clashes
on case-insensitive filesystems (like OS X).
* src/ThePEGDefaults.in, LesHouches/Makefile.am: turned
libThePEGLesHouches.so into dynamic module LesHouches.so
* Helicity/*, Interface/Interfaced.h, PDT/ParticleData.*: Included Peter Richardson's
changes to Helicity classes (helicity numbering switched from
-1,0,1 to 0,1,2, etc).
* Templates/*: Removed, as it didn't have Makefile.am entry.
2005-06-06 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Interface/Interfaced.h: Made generator() function public.
* lib/ThePEG.el: Fixed bug in specifying limited parameters.
2005-06-05 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* acinclude.m4: Make sure other packages using AC_CHECK_THEPEG
installs their libraries in $(libdir)/ThePEG.
* Config/config.h.in: Removed. Automatically generated by
autoheader.
2005-06-04 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* acinclude.m4: Included CLHEP namespace definition in the CLHEP
compile test.
2005-06-03 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* configure.ac, acinclude.m4: Added macros to clean up
configure.ac
* ACDC/ACDCGen.h: Added an explicit destructor for Slicer class
for debugging purposes.
2005-06-02 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Just fixed so that THePEG-variable-cutnpaste
opens in another window - not the one we want to paste into.
2005-06-02 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* */Makefile.am: Use $(LN_S) instead of ln -s.
* configure.ac, Makefile.am: Added Doc as subdirectory. Fixed
documentation of environment variables.
* Doc/*: Fixed up to use automake.
* Handlers/SubProcessHandler.fh, Helicity/RSFermionSpinInfo.fh:
Included Pointe.h to make doxygen shut up.
* */*.h: Doxygen does not like '..' in comments anymore. Removed
those.
* src/ThePEGDefaults.in: Now loads some non-default libraries to
get the documentation of the interfaces correctly.
2005-06-01 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* include/Makefile.am: Make it quietly.
2005-05-31 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/DynamicLoader.cc: Changed the default path to
../../ThePEG/lib
* Helicity/*.h: Made sure ThePEG.h was included first to make sure
we do not get CLHEP package information in the macros.
* *** GLOBAL ***: Change build procedure to use automake and
libtool. This affects all Makefiles etc.
2005-05-28 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/EventHandler.*, Repository/EventGenerator.*,
LesHouches/LesHouchesEventHandler.*,
Handlers/StandardEventHandler.*: introduced histogramScale()
function.
* Repository/BaseRepository.cc: Added optional class name to the
'ls' command to only list objects (and directories with objects)
of a specified class. To be used in the Java GUI.
* Handlers/StandardEventHandler.*, Handlers/StandardXComb.*:
StandardXComb now uses the XSecStat class to collect
statistics. It is not quite used as intended as the maximum cross
section for each XComb is not explicitly known, but it cleaned up
the class a bit...
2005-05-27 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* LesHouches/MadGraphReader.*: Removed setting of XPDWUP giving
the responsibility for that to the base class. Also renamed
readEvent() to doReadEvent().
* LesHouches/LesHouchesReader.*: Renamed the readEvent() function
to doReadEvent() which is called from the new readEvent()
function, which also does the reweighting (with newly introduced
reweightPDF option and the (p)reweights). Aslo sets the XPDWUP
varaiables if not done by the sub-class (but set to -1).
* LesHouches/LesHouchesEventHandler.cc: Added cuts - they were
there before, but were never used.
* PDF/PartonExtractor.h: Made the getPDF function public.
2005-05-26 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/ClusterCollapser.cc: Changed to use new transfrom of
whole container in ThePEG::UtilityBase.
* Utilities/UtilityBase.*: Added transform() function which takes
a whole container as argument.
* PDF/PartonExtractor.*, PDF/RemnantHandler.*, PDF/NoRemnants.*,
PDF/LeptonLeptonRemnant.*, PDF/BaryonRemnants.*: Changed the
signatures of the generate() and recreateRemnants() functions to
also require information about the shat of the subprocess, to
allow the remnant handlers to catch situations where they might
get into trouble with kinematics. The old functions are still
there, but will be removed shortly.
* LesHouches/LesHouchesEventHandler.cc: Added warnings about
oversampling in the statistics() function.
* MatrixElement/MEBase.h: (David Grellscheid) Now includes
MEBase.fh as this is no longer done by LastXCombInfo.h.
* Handlers/LastXCombInfo.h: (David Grellscheid) Removed
declaration of lastME(), which was needed and not
implemented. Also removed the inclusioon of the MEBase.fh header
file.
2005-05-19 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* LesHouches/LesHouchesReader.cc: Fixed bug in reading cached
files (name of the gzip program and resizing of vectors HEPEUP.
Also removed debugging information about writing the cach file.
* LesHouches/LesHouchesReader.icc: Fixed bug in calculating the
byte-size of the HEPEUP struct.
* LesHouches/MadGraphReader.cc: Set correct units on the SCALUP
variable.
* LesHouches/LesHouchesReader.cc: The scale in the constructed
PartonBinInstances should be negative. Also set the scale of the
incoming and outgoing partons
* PDF/PartonExtractor.*: Removed public access to
thePartonBinInstances, which eas not really neaded. Renamed the
variable to partonBinInstances and cleared it in the beginning of
the constructRemnants function.
* PDF/PartonBin.h: Removed declaration of unimplemented functions.
2005-05-17 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* *** GLOBAL ***: Merged in branch with new EventHandler and
EventGenerator classes. Includes also the LesHouches classes.
* */*.h: Fixed some ancient spelling errors in comments
* lib/ThePEG.el: Fixed bug in ThePEG-parameter
function. (Interface:: was previously Interfaced::)
* Utilities/ObjectIndexer.*: Added empty() function.
* MatrixElement/ReweightConstant.*: Added simple sample reweight
class.
* MatrixElement/Makefile, MatrixElement/ReweightBase.*,
MatrixElement/ReweightMinPT.*: Modified to use StandardXComb. This
was not noticed before since ReweightMinPT was accidentally
omitted from the Makfile
* Handlers/KinCutsInit.cc: Fixed bug in declarations of Parameter
interfaces introduced to avoid ambiguities.
2005-05-16 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/CascadeHandler.cc, Handlers/LastXCombInfo.*: Made the
LastXCombInfo::pdf function templated to avoid having to include
PDF.h (which in turn includes a lot of stuff) in LastXCombInfo.h.
2005-05-15 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* LesHouches/LesHouches.*, LesHouches/LesHouchesReader.*: Moved
the LesHouches common block variables into struct corresponding
to HEPRUP and HEPEUP.
2005-05-11 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/CompSelector.*, LesHouches/*: Added Selector-like
class capable of compensating if overestimated cross sections used
for selection torns out to be too low.
2005-05-04 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/XSecStat.cc: Implemented the << and >> operators in
the ThePEG namespace (don't understand why that is needed).
* Handlers/StandardEventHandler.*, Handlers/EventHandler.*: Moved
the statLevel() function and assiciated variables from
StandardEventgenerator to Event Generator.
2005-05-03 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* CLHEPWrap/RandPoisson.*: New wrapper around the CLHEP
RandPoisson class.
* Utilities/XSecStat.*: Changed behavior to both accumulate
accepted events and weights. also accumulates squared weights to
get an error esitmate.
2005-04-29 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDF/PartonExtractor.*: Removed functions no longer used by the
LesHouches classes.
* Utilities/XSecStat.*: Added class to collect cross section
statistics.
2005-04-27 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDF/PartonExtractor.*: Added functions boostRemnants() and
transformRemnants(), which where taken from
Pythia7::ShowerHandler. Also added constructRemnants functions,
primarily to be used by the LesHouchesEventHandler.
* configure.in: Just cosmetics.
2005-04-26 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/Math.icc, Config/config.h.in, configure.in: Included
check for existence of atanh (ThePEG_HAS_ATANH). This is a
standard C function but is not always available on C++
compilers. Also changed the implementation of Math::log1m in case
neither log1p or atanh is available. If atanh is not available it
is included in the Math namespace using log1m.
2005-04-25 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDF/PartonExtractor.cc: Removed unused variables in construct().
2005-04-21 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Started to modify interface decalration defuns to
use the unums in Interface/Interface.h.
* Handlers/KinCutsInit.cc, StandardModel/O1AlphaS.cc: Modified
declarations of Parameter interfaces to avoid ambiguities.
* PDF/BaryonRemnants.cc: Modified slightly the initial check if is
at all possible to create remnants.
* Interface/Parameter.*, Interface/ParVector.*: Added option to
make parameters limited from above _or_ below rather than just
both or not at all.
* Interface/Interface.h: Added namespace Interface namespace with
descriptive enums to be used when declaring interfaces.
2005-04-20 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDF/PartonExtractor.*: Introduced generateRemnants
functions. Not yet quite working if scale is zero.
* Repository/RandomGenerator.*, Repository/UseRandom.*: Added
rndvec function to return a vector of random numbers.
* Handlers/XComb.cc: Fixed bug in setPartonBinInstances(), forgot
to actually set them.
2005-04-19 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/XComb.*, Handlers/StandardXComb.cc: Removed unnecessary
member theLatOutgoing in XComb, renamed setPartonBinInstances() to
createPartonBinInstances(), introduced setPartonBinInstances() for
providing instances from the outside.
2005-04-17 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/StringUtils.cc: Fixed bug in stripws.
* Utilities/CFileLineReader.h: Made class non-virtual.
* Handlers/KinCutsInit.cc: Made LeptonMatcher interface
non-readonly.
* Handlers/EventHandler.cc: Made LuminosityFunction interface
nullable.
* LesHouches/TestLesHouches.in: Added temporary test setup. To be
moved to the test directory.
2005-04-14 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/StandardXComb.h, Handlers/StandardEventHandler.h,
Handlers/EventHandler.h, Handlers/SubProcessHandler.fh,
Config/Pointers.h, Config/Containers.h, MatrixElement/MEBase.fh:
Moved declaration of pointers and containers of SubProcessHandler
and MEBase to corresponding .fh files.
2005-04-13 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/StandardEventHandler.h: Now #includes PartonBin.fh.
* Handlers/EventHandler.h: Made some access functions public and
fixed some documentation.
* PDF/PartonBin.fh, Config/Pointers.h, Config/Containers.h): Moved
declaration of pointers and containers of PartonBins to
PartonBin.fh.
2005-04-07 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/LastXCombInfo.h: Included PDF.h instead of PDF.fh,
since gcc-4 insists on trying to compile a templated function even
though it is not used.
* Persistency/PersistentOStream.icc: Workaround for gcc-4
defining tYes and tNo in a strange way.
2005-04-07 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/ClusterCollapser.*: Simplified the insertion od
singlets in map by introducing a static insert() method.
* Pointer/RCPtr.*: Renamed member thePointer to ptr to avoid
excessive finger work during debug.
* MatrixElement/*, Handlers/*: Completed the division between the
general XComb base class and the StandardXComb class used for the
sub-process generation in the StandardEventHandler. Changed the
behavior of LastXCombInfo so that it is templated on possible
sub-classes of XComb.
2005-04-06 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/FixedSizeAllocator.h: Added include of <memory>.
* Utilities/Selector.h, Config/std.h: fixed Allocator template
argument in ThePEG_DECLARE_MAP. Thanks to David Grellscheid.
* ACDC/ACDCGen.*, ACDC/ACDCGenCell.*: Added a smooth function to
disallow to large differences between neighboring cells. Not yet
used.
2005-04-06 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* *** GLOBAL ***: Removed all references to old EventHandler
hierarchy. Everything compiles and runs, but not quite tested yet.
2005-04-05 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* LesHouches: Changed to use new EventHandler hierarchy.
2005-04-04 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Repository/MultiEventGenerator.*: Now inherits from the new
EventGenerator class.
* Handlers/SamplerBase.*: Added setEventHandler() method for new
EventHandler class.
* Handlers/XComb.*: Added constructors for new EventHandler class.
* Handlers/LuminosityFunction.h: Made select() public.
* EventRecord/Collision.h): Made addStep public.
* EventRecord/Event.h: Made setInfo(), addCollision() and
primaryCollision(tCollPtr) public.
* Handlers/StandardEventHandler.*: Joined OldEventHandler and
CollisionHanlder into the new StandardEventHandler class to
prepare for new EventHandler hierarchy.
2005-03-31 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* ACDC/ACDCGen.*: Changed the procedure for presampling. The
initial basic level is set to the minimum sampling, but is never
allowed to be less than a fraction (by default 1/nTry()) of the
maximum sampling.
* Handlers/ACDCSampler.*: Added a hint in the warning issued if a
run ends while ACDC is in compensating mode, also made it a proper
warning. Increased the default number of pre-samplings from 100 to
1000.
2005-03-10 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* MatrixElement/ME2to2Base.cc: Fixed bug in calculatio of jacobian
spotted by David Grellscheid. Only showed up if outgoing partons
were produced close to rest in which case the jacobian diverged.
2005-02-23 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* *** GLOBAL ***: CurrentGenerator to OldCurrentGenerator, EGPtr
to OEGPtr and EHPtr to OEHPtr to prepare for new EventHandler
hierarchy.
2005-02-21 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* *** GLOBAL ***: Renamed EventGenerator to OldEventGenerator to
prepare for new EventHandler hierarchy.
2005-02-20 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/EventHandler.*: Modified EventHandler according to new
hierarchy. Also made minor changes to other classes to make it
compile. These changes needs to be attended to when the old
classes are removed and are marked with the comment
'*** OldEventHandler ATTENTION ***'.
2005-02-19 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* *** GLOBAL ***: Renamed EventHandler to OldEventHandler to
prepare for new EventHandler hierarchy.
2005-02-08 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/fixCLHEP: Copy libCLHEP.so rather than soft link since the
CLHEP versioning system for shared libraries doesn't really work.
2005-01-07 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/StandardXComb.*, PDF/PartonExtractor.h,
MatrixElement/MEBase.cc, Handlers/LastXCombInfo.h,
Handlers/CollisionHandler.cc, Handlers/XComb.*: Changed slightly
the interface for XComb, preparing for makeing it a base class
with StandardXComb as a sub class implementing the standard
ThePEG-specific sub process generation parts of XComb.
2004-12-30 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Repository/RandomGenerator.*: Added operator()(long) to conform
to the random number generator requirements of the standard
library (mainly used in the random_shuffle function in
<algorithm>).
* Handlers/EventHandler.*: Added const and non-const access to the
pointer to the Luminosity function.
2004-12-25 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/CFileLineReader.cc: Fixed bug in checking if a file is
bzip2 format.
* configure.in: Fixed default compress commands in
ThePEG_BZ2WRITE_FILE and ThePEG_GZWRITE_FILE macros.
2004-12-20 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT/ParticleData.cc: Added initialization for members in default
constructor.
2004-12-02 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/Math.icc: Added 'using namespace std;' in exp1m and
log1m to avoid problems with compilers where atanh etc are (not)
in std.
2004-10-27 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/fixCLHEP: Fixed the script to use g++ instead of ld to
create a shared library from the static CLHEP library. This should
probably be a configure option in the future.
2004-10-14 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/StringUtils.*: Added stripws() function to strip a
string from leading and trailing white space.
* Repository/EventGenerator.cc : Incommented string parameters in
Init as these should now work properly on any compiler.
* lib/ThePEG.el (ThePEG-parameter): Made specialization for
string.
* Interface/Parameter.*: Made (partial) specialization for string
parameters to avoid min/max functions and units.
2004-10-13 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Repository/BaseRepository.cc, Interface/InterfacedBase.*: Each
interfaced object may now be assignrd a unique comment. If an
interfaced object is being initialized with the setup command in
the repository the non-virtual InterfacedBase::setup() function is
called which in turn calls the virtual readSetup(). Everything in
the stream supplied as argument which is not parsed by the
readSetup functions will be treated as a comment.
* Repository/Repository.cc: Added possibility in read() function
to have continuation lines. If a command line end with a \
the next line will be added.
2004-09-30 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Added ThePEG-variable-cutnpaste function to
produce templates for including a variable definition and
corresponding set/get functions, constructor initialization adn
I/O.
2004-09-29 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Added ThePEG-refvector and ThePEG-parvector
functions.
* LesHouches/LesHouchesEventHandler.*: Added subclass to
EventHandler for the LesHouches readers. A reorganization of
(Partial)Collision/Event handlers is called for.
2004-09-25 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* configure.in, Config/config.h.in, Utilities/CFileLineReader.cc:
Added facilities to handle .bz2 files as well as .gz files.
* Utilities/CFileLineReader.*: Bug fixes.
2004-09-24 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/CFileLineReader.*: Added class to read from C FILE
streams.
* lib/ThePEG.el: Cleaned up comments.
2004-09-20 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* */Makefile: Modified to fix installation procedures.
2004-09-19 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* */Makefile: Modified to fix installation procedures.
2004-09-14 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Makefile: Modified snapshot target to work with new documentation.
2004-09-10 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Fixed dummy min/max values for unlimited
Parameter objects in ThePEG-parameter function.
2004-09-09 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Changed documentation in header file generation.
* *** GLOBAL ***: Added doxygen reference to interfaces in
documentation. Also changed some descriptions of interfaces to get
proper references between interfaces.
* Doc/Makefile: Added call to fixinterfaces.pl script to fix
references between interfaces in AllInterfaces.h
* Doc/fixinterfaces.pl: Added script to fix references between
interfaces in AllInterfaces.h
2004-09-08 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Doc/refman.conf: Updated to suit doxygen version 1.3.8.
* Helicity/*.fh: Added include of Pointer.h to help doxygen
documentation.
* Helicity/HelicityDefinitions.h: Added documentation of Helicity
namespace.
2004-09-05 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/Math.*: Added sign transfer function.
* Config/Units.h: Add inverse energy to the fourth power as unit.
* Handlers/GaussianPtGenerator.*, Handlers/PtGenerator.h:
Changed pair of energy for TransverseMomentum.
2004-09-04 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/Makefile, Makefile: Introduce init target to just initialize
the repository. The doc target depends on init.
2004-09-03 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Config/Makefile.common.in, Makefile: Modified the doc target to
use doxygen.
* Interface/Switch.*, Interface/Reference.*,
Interface/RefVector.*, Interface/Parameter.*,
Interface/ParVector.*, Interface/Command.*,
Interface/InterfaceBase.*: Added virtual functions to write out
doxygen formatted entries describing interfaces.
* Repository/BaseRepository.cc: Added command-line function to
write out doxygen documentation of all interfaces.
* *** GLOBAL ***: Modified all descriptions in declarations of
interfaces to conform to doxygen format.
2004-08-25 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* *** GLOBAL ***: Fixed various doxygen comment issues.
* Doc/refman.h: Added file with embryo of mainpage reference
manual documentation.
2004-08-24 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* *** GLOBAL ***: Fixed various doxygen comments.
* Doc/refman.conf: Added config file for doxygen generation of
reference manual.
2004-08-22 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* *** GLOBAL ***: Changed the last class names from /ThePEG/name
to ThePEG::name.
* StandardModel (directory): Modified to use new documentation
format.
2004-08-19 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Repository (directory): Modified to use new documentation
format.
2004-08-10 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT (directory): Modified to use new documentation format.
2004-08-02 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Added functions for creating PDF classes.
2004-08-01 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDF (directory): Modified to use new documentation format.
2004-07-27 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* MatrixElement (directory): Modified to use new documentation
format.
2004-07-24 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Interface (directory): Modified to use new documentation format.
2004-07-21 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* EventRecord/Particle.icc: Reset pointer to particle
representation and particle data for the case a dangling pointer
to the destroyed object should be used accidentally.
* EventRecord/Step.*: Changed destructor to reset transient
pointers in Particlespointing to the destroyed object.
* EventRecord/Collision.*: Changed destructor to reset transient
pointers in Steps and SubProcesses pointing to the destroyed
object.
* EventRecord/Event.*: Changed destructor to reset transient
pointers in Collisions pointing to the destroyed object.
2004-07-20 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/PartialCollisionHandler.cc: In performStep, if the
StepHandler throws an exception, call popStep() to set the correct
current step rather than calling Collision::popStep() directly.
* Helicity (directory): Modified to use new documentation format.
2004-07-16 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers (directory): Modified to use new documentation format.
2004-06-28 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/CascadeHandler.icc: Fixed bug in standard setup
functions. Before they called the HandlerBase versions, now they
correctly call the StepHandler ones.
* Doc/Makefile, Makefile: Also make clean in Doc directory.
* Handlers (directory): Modified to use new documentation format.
2004-06-25 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* EventRecord (directory): Modified to use new documentation
format.
2004-06-24 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* EventRecord (directory): Modified to use new documentation
format.
2004-06-23 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* ACDC, CLHEPWrap, Config, Persistency, Pointer, Utilities
(directory): Modified to use new documentation format.
2004-06-22 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities (directory): Modified to use new
documentation format. Also removed unused Integrator class.
2004-06-21 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Config, Persistency, Pointer (directory): Modified to use new
documentation format.
* lib/ThePEG.el: Modified to use new documentation format.
2004-05-24 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/ThePEGParticles.in: Made also the photon and pi0
BeamParticleData since they can have parton densities.
* Handlers/GaussianPtGenerator.cc: Fixed units in I/O.
* src/ThePEGDefaults.in: Set GaussianPtGenerator and
SimpleZGenerator in the BaryonRemnants object.
* lib/Makefile: Added SHOWCOMMAND conditionals.
* Utilities/Rebinder.icc: Fixed bug in translate(iterator ...)
function.
* Handlers/SimpleZGenerator.*: Added simple default implementation
of the abstract ZGenerator class.
* Handlers/GaussianPtGenerator.*: Added simple default
implementation of the abstract PtGenerator class.
2004-05-15 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT/BreitWignerMass.cc: Now uses the new asymmetric width cuts.
* PDT/ParticleData.o: Changed the internal representation of the
width cut to one upper and one lower cut. Added corresponding
access functions and Parameter interfaces. Also changed the
massMax and massMin functions accordingly. The old set and get
functions for the width cut now sets both the upper and lower cut
and returns the maximum of the two.
2004-05-14 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/EventHandler.cc: Added doinitrun implementation to
reset the statistics for the XCombs after initializing the phase
space sampler.
* Handlers/XComb.*: Added checkInit function to check if the XComb
has any possibility to produce events. Also add reset function to
reset statistics for the XComb.
* Handlers/CollisionHandler.cc: Do not add XComb's which cannot
possibly produce events (and issue a warning).
2004-05-13 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* ACDC/ACDCGen.icc: Fixed bug which caused a crash if it was
impossible to find a non-zero cross section for a channel.
* MatrixElement/ME2to2Base.cc: Added (possibly unnecessary) try
block for checking impossible kinematics.
2004-04-26 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* LesHouches/MadGraphReader.*: New class.
* LesHouches/LesHouchesFileReader.*: New class.
* Config/config.h.in, configure.in: Added macros for opening
compressed files with popen. (popen turns out not to be in the C++
standard, so we may have to look for another solution).
2004-04-23 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* configure.in: Changed default optimization flag to -O2
(otherwise things get slow with gcc 3.4.0).
* ThePEG: The following changes were made to allow compilation
with gcc 3.4.0.
* Utilities/TypeInfo.icc: in version and name method, use typeid
of type rather than variabe.
* Utilities/Interval.icc: Fixed obvious bugs in check and
checkAll.
* Utilities/FixedSizeAllocator.h: Fixed obvious bug in destroy
which for unknown reasons was not detected before.
* Utilities/ClassDescription.tcc: Workaround of bug in gcc 3.4.0
when taking typeid of template parameter.
* Utilities/ClassDescription.icc: Added scope resolutions to calls
to name().
* Repository/Repository.cc: Removed 'template' prefix in calls to
templated static member functions.
* Repository/RandomGenerator.icc, Repository/RandomGenerator.h:
changed return type for rnd(OutputIterator, size_type n) to void.
* Pointer/RCPtr.icc: Made implementations of swap explicit instead
of using std::swap (problems with gcc 3.4.0).
* Interface/Switch.tcc, Interface/Reference.tcc,
Interface/RefVector.tcc, Interface/Parameter.tcc,
Interface/ParVector.tcc: Added scope resolution to calls to
readOnly, limited, and dependencySafe functions.
* Interface/InterfacedBase.h: Made clear and reset functions
public.
* Interface/Switch.cc, Interface/Reference.cc,
Interface/RefVector.cc, Interface/Parameter.cc,
Interface/ParVector.cc, Interface/Command.cc: Moved include of
InterfacedBase.h
* Handlers/HandlerGroup.tcc: Added #include of Hint.h
* Handlers/ClusterCollapser.cc: Changes call to swap for PPtr.
* EventRecord/Particle.h: Made inner class ParticleRep public as a
quick fix to allow access.
* EventRecord/Step.tcc: Added missing Step:: in definition of the
addIfFinal function.
*PDT/DecayMode.cc , PDF/BaryonRemnants.h,
EventRecord/SubProcess.cc, EventRecord/Step.cc,
EventRecord/Particle.cc, EventRecord/Event.cc,
Config/Containers.cc: Removed unnecessary semi-colons.
2004-04-20 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: ThePEG-class-files now also create a suitable .fh
file which is included in the .h file
* LesHouches (Directory): Started implementing the Les Houches
interface.
2004-04-17 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/KinematicalCuts.cc: Changed the cut methods to use the
check methods for induvidual cuts for consistency reasons.
* Handlers/KinematicalCuts.icc: Changed the methods mHat, sHat,
pTHat, yStar, maxY, minY, maxEta, minEta. The treatment of <
vs. <= is now better. See documentation for respective functions.
2004-03-31 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Persistency/PersistentOStream.cc: Minor changes to facilitate
debugging.
* Handlers/XComb.h, Handlers/CollisionHandler.cc,
PDF/PartonExtractor.cc, PDF/PartonBin.*: The incoming PartonBin is
now a transient pointer while the outgoing ones are reference
counted (before it was vice versa). This is to avoid that outgoing
PartonBins which are not used get deleted while the transient
pointers are still around. Also the PartonExtractor was changed to
reflect this change. In PartonExtractor::getPartons the bins
corresponding to the incoming particles are also saved last in the
returned vector to avoid them being deleted. This is then also
taken care of in CollisionHandler::initialize.In addition, the
XComb objects now also hold reference counted pointers to the bins
corresponding to the incoming particles.
2004-03-27 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Helicity/HelicityDefinitions.h: Removed the
HelicityDefinitions class.
2004-03-16 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Helicity/HelicityDefinitions.h: Changed integers for detrmining
dirac representation and spinor type to enums. Also made
corresponding changes in LorentzSpinor and LorenzSpinorBar
classes.
* Persistency/PersistentOStream.* Persistency/PersistentIStream.*:
Added members functions for i/o of Complex.
* Interface/ParVector.* (Module): Fixed bug where min, max and def
members were implemented as doubles. They are now properly
templated.
* Helicity (Module): Changed the implementation of Direc
representation in Lorentz spinors. Also fixed documentation.
2004-03-07 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Helicity (Module): Changed all 'cerr' error messges to
HelicityLogicalError and HelicityConsistencyError exceptions.
2004-03-04 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Helicity (Module): The helicity classes are now included in the
ThePEG structure. They have not been tested in this structure yet,
but it compiles and links into ThePEG without any problems.
2004-03-03 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Helicity (Module): Added Peters helicity classes and started to
integrate them into ThePEG.
* MatrixElement/MEBase.cc (Module): Added new virtual function
constructVertes for constructing the spin information for the
interaction. The default version does nothing.
* Handlers/XComb.cc (Module): Added call to
MEBase::constructVertex in the construct method.
* EventRecord/Particle.cc (Module): Fixed bug in the cloning of
the spin information in the ParticleRep copy-tor.
2004-03-01 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Config/Complex.h (Module): Added using std::complex int the
ThePEG namespace.
2004-02-24 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* EventRecord/Particle.*: Added function 'abandonChild' which will
undo the actions of 'addChild', i.e. Remove the child from the
list of children and also remove this from the childs list of
parents.
2003-11-19 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Made sure ClassTraits.h is included before class
traits templates are specialized.
* configure.in, Config/Makefile.common.in: Made configure steer
all compiler flags and included info for --help option. Also
changed the check for log1p and expm1 which caused problems under
cygwin. Need to also fix a atanh check but no solution to that for
cygwin yet.
2003-11-04 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/Makefile, lib/fixCLHEP: If CLHEP is already in a dynamic
library, make symbolic links to the corresponding files instead of
copying. Also make symbolic links when installing.
2003-11-02 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Makefile: Fixed dependencies for setup target.
* configure.in: Fixed strange behavior when --prefix is not
explicitly used.
2003-10-31 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/fixCLHEP: Since CLHEP-2.0 comes with shared libraries, we
now look for that before trying to find the static one.
* Handlers/ACDCSampler.h: Added using namespace ThePEG::Units in
the ACDCGenerator namespace to be compatible with CLHEP-2.0 and
earlier versions.
* Config/Units.h: Added using namespace CLHEP to be
compatible with CLHEP-2.0 and earlier versions.
* CLHEPWrap/CLHEP.h: Added an empty CLHEP namespace to be
compatible with CLHEP-2.0 and earlier versions.
* ../Makefile: Made distclean a special target since here the
ThePEG directory has to be cleaned last.
* configure.in: Set the default CLHEPPATH to $prefix rather than
hardcoded to /usr/local
2003-10-24 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* StandardModel/StandardModelBase.*: Changed CKM function to check
if theCKM2Matrix has been generated by the CKM object before
returning a matrix element.
2003-08-27 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/runThePEG.cc: If -x argument specifies a dynamic library, it
is assumed to contain a class inheriting from Main and which has a
static Init() function which runs the event generator instead of
simply calling the event generators go() function.
2003-08-26 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Repository/Main.*: Added base class for classes implementing a
main steering routine for running an EventGenerator, in case the
standard 'go()' function in the EventGenerator is not enough.
* Handlers/EventHandler.cc: Avoid floating exception in
atatistics() if no events were generated. Write nice message
instead.
* Handlers/ACDCSampler.cc: Avoid floating exception in finish() if
no events were generated. Write nice message instead.
* ACDC/ACDCGen.icc: Avoid floating exception in efficiency() if no
events were generated.
2003-08-13 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/DecayHandler.cc: Use the StepHandler::newStep()
function.
* Handlers/ClusterCollapser.h: Changed the signature of the
collapse() function to take a new step as argument instead of a
collision handler. Changed the handle method accordingly.
* EventRecord/Collision.*, Handlers/PartialCollisionHandler.*:
newStep() now have an optional argument to specify the step
handler.
* Handlers/StepHandler.cc: createNewStep now sets the handler to
this.
2003-08-12 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT/V2PPDecayer.cc: Fixed but in reweight() where the parent and
grand parent momenta were not boosted to the parent cms.
* PDT/WeakToHadronsDecayer.cc, PDT/V2PPDecayer.cc,
PDT/OmegaPhi3PiDecayer.cc, PDT/FlatDecayer.*,
PDT/DalitzDecayer.cc, PDT/Decayer.*: Added utility function
getChildren(), finalBoost() and setScales() in Decayer to be used
in subclasses.
* Utilities/SimplePhaseSpace.tcc: Fixed bug in CMSn. I the case of
two particles the angles were not properly distributed.
* src/ThePEGParticles.in, src/ThePEGDefaults.in: Using
WeakToHadronsDecayer instead of dummies PYDECY42 and
PYDECY48. Also using DummyDecayer instead of PYDECY51 and PYDECY53
* PDT/WeakToHadronsDecayer.*: Added class for weak decays of taus,
charmed and bottom hadrons. Seems to work.
* PDT/QuarksToHadronsDecayer.cc: Fixed bug where the decay
products were not boosted to the parents frame. Also made minor
change tosimplify for the WeakToHadronsDecayer sub class.
* Makefile: Removed -$(MAKEFLAGS) in recursive calls.
2003-08-08 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Config/Makefile.common.in: Moved macro for THEPEGLIBS from src/Makefile to Config/Makefile.common
* src/ThePEGParticles.in, src/ThePEGDefaults.in: Using
QuarksToHadronsDecayer also instead of dummies PYDECY11 and
PYDECY12. Also using ColourPairDecayer instead of dummy PYDECY32.
2003-08-07 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT/ColourPairDecayer.*: Added class inheriting from FlatDecayer
which can handle colour connected pairs of decay products which
are to undergo subsequent hadronization and optional
showereing. NOT TESTED.
* PDT/QuarksToHadronsDecayer.cc: Class now can handle matcher
specifications of light quark pairs.
* PDT/FlatDecayer.*: Added virtual getChildren() functions for
sub-classes which need to do special things with the children.
2003-08-04 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/ThePEGParticles.in, src/ThePEGDefaults.in: Using
QuarksToHadronsDecayer instead of dummy PYDECY13.
* PDT/QuarksToHadronsDecayer.cc: Fixed vaious bugs. Seems to work
now, but physics not tested.
* Handlers/SimpleFlavour.cc: Fixed bug in generateHadron() when
argument was anti-quark and and in setProbabilities() for diquark
production. Fixed anti-particle bug in vectorMeson() and
pseudoScalarMeson(). THe class seems to work now but physics not
tested.
* Handlers/FlavourGenerator.cc: Just changed error messages.
2003-08-01 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/FlavourGenerator.*: Added 'always' wrapper functions
which call the virtual generateHadron(), getHadron() and
getBaryon() functions which throws exceptions if no hadron could
be generated.
2003-07-30 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT/QuarksToHadronsDecayer.*: Added class for decay of particles
to quarks which are then converted to hadrons distributed
according to phase space. Not ready yet.
* PDT/StandardMatchers.h: Added QuarkMatcher.
* src/ThePEGParticles.in, src/ThePEGDefaults.in,
PDT/Onium3GDecayer.*: Added Onium3GDecayer class for decay of
spin-1 onia into three gluons or two gluons and a photon. The
class has not been properly tested.
2003-07-29 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* src/ThePEGDefaults.in: Added a SimpleFlavour object which is
used by the BaryonRemnants and ClusterCollapser objects.
* PDT/StandardMatchers.h: Added Check functions taking PDG code
arguments for the MesonMatcher and BaryonMatcher classes.
* PDT/PDT.*: Added functions to get the flavour content out of
hadrons.
* Handlers/SimpleFlavour.*: Added class to implement simple
versions of the pure virtual functions of the FlavourGenerator
class. The model implemented ti s simplified version of the Pythia
fortran version. (NOT TESTED)
* Handlers/FlavourGenerator.*: Changed the standard pure virtual
functions for the FlavourGenerator class to get rid of things that
were too much related to the Lund string fragmentation stuff.
2003-07-27 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT/OmegaPhi3PiDecayer.h: Changed the class name in the class
description to ThePEG::OmegaPhi3PiDecayer.
* lib/ThePEG.el: Changed the naming of classes from
"/{namespace}/{class}" to "{namespace}::{class}".
* src/ThePEGParticles.in, src/ThePEGDefaults.in: Changed the
naming of classes from "/{namespace}/{class}" to
"{namespace}::{class}".
* Utilities/DescriptionList.cc: The naming of classes in the class
description has until now been on the form "/{namespace}/{class}"
In the future it should instead be on the more natural form
"{namespace}::{class}". Before the new naming scheme is enforced
class descriptions will be registered in both the old and new
form.
* Repository/BaseRepository.*: Added remove(ObjectList) to safely
remove a set of objects from the repository if no other objects
are referring to them. The function is used by the "rm"
command. In addition a new command "rrmdir" was added to remove a
complete directory with all its objects and sub-directories. (The
"rmdir" only removes empty directories.)
* Repository/Repository.*: The "cp" command now treats particles
separately (copyParticle()). If a particle has an anti-partner
this is also copied to the same directory. In addition the decay
modes of both particle and anti-particle will be copied.
* PDT/DecayMode.cc: in constructDecayMode() it is now the default
to specify the full name of the decaying particle (rather than
just the PDGName).
2003-07-26 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* CLHEPWrap/*.fh, CLHEPWrap/*.h: Reordered include paths to
prepare for next version of CLHEP which will use namespace CLHEP.
2003-07-25 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT/DecayMode.*: Added new member variable to remember the order
in which the decay products were specified. The produceProducts()
now created particles according to this order.
* src/ThePEGParticles.*, src/ThePEGDefaults.in,
PDT/DummyDecayer.*: Added DummyDecayer class for symbolic decay
channels. It replaces the PYDECYDummy decayer with mode 102.
* src/ThePEGParticles.*, src/ThePEGDefaults.in,
PDT/Tau2HadronsDecayer.*: Added class to decay tau to neutrino
plus hadrons.
* PDT/OmegaPhi3PiDecayer.cc:
* src/ThePEGParticles.in, src/ThePEGDefaults.in,
PDT/DalitzDecayer.*: Added class to perform Dalitz decays into e+
e- gamma.
2003-07-24 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT/StandardMatchers.h: Added matcher classes for
PseudoScalarMesons and VectorMesons.
* src/ThePEGParticles.*, src/ThePEGDefaults.in, PDT/V2PPDecayer.*:
Added V2PPDecayer class to decay vector mesons to pseudo-scalar
ones. Will be flat in phase space unless the grand parent is a
speudoscalar and its only other daughter is a speudo-scalar or a
photon.
* Repository/EventGenerator.icc: Added member functions and
variables to access the current (partial) collision handler and
the current step handler.
* Handlers/PartialCollisionHandler.*: addStep() now has default
null arguments for the step handler and the hint. If the hint is
null, it is immediately converted to the default hint. If a step
was added to a given group, the subsequent groups are
automatically reinitialized. In continueCollision(), the
currentCollisionHandler() of the current event generator is set to
this. In performStep() the currentStepHandler() in the current
event generator is set to the step handler which is called.
* Handlers/HandlerGroup.cc: next() will now return immediately for
an empty group. addPreHandler(), addHint() and addPostHandler()
now assumes (rightly) that the hint recieved is never null.
addHint will refill the whole group event if there is the main
handler is currently executing. I.e it is assumed that someone
adding a hint to the main handler wants the whole group to be
redone.
* EventRecord/Collision.cc: Fixed so that if a perticle is removed
from the event record its birthStep pointer is set to null.
Hopefully this will fix the problem that sometimes when a
generator is dumped (due to an error) a particle is written to a
persistent stream and then tries to write a no longer existent
birthStep.
2003-07-23 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDT/OmegaPhi3PiDecayer.*, src/ThePEGDefaults.in,
src/ThePEGParticles.in: Added OmegaPhi3PiDecayer class to handle
omega-phi->3pi decays.
* lib/ThePEG.el: Added ThePEG-Decayer-class-files function.
* PDT/FlatDecayer.cc: Now uses DecayMode::produceProducts().
* src/ThePEGParticles.in, PDT/DecayMode.*: The naming of decay
modes were before such that only the number and types of the decay
products were important, this meant that it was not possible to
have both eg. B0 -> c-cbar d-sbar and B0 -> c-sbar d-cbar decay
modes since they have the same name and same representation. Now
the concept of links have been introduced to indicate that decay
products can be linked together in pairs making two decay modes
with the same decay products but different linking different. This
is indicated in the name by an equal sign instead of a comma:
B0->c=cbar,sbar=d; and B0->c=sbar,cbar=d;
Also added a produceProducts() function to produce particles from
the specified decay products, so that linked particles come first
and consecutively in the returned vector.
2003-07-22 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* CLHEPWrap/Makefile: Added Matrix.h and Matrix.fh to the dist
files.
* lib/fixCLHEP: Make sure the fixed .so version of the CLHEP
library is called libCLHEP.so irrespective of what the original
CLHEP library was called.
* MatrixElement/MEQQ2GG.cc, MatrixElement/MEQG2QG.cc: Fixed error
in specification of intermediate particles (which was compensated
by a corresponding error in the colour flow).
* Makefile: Changed the version number to 1.0ab (between alpha and
beta).
2003-07-21 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* lib/ThePEG.el: Added the parameter and switches functions which
were forgotten in the move from skeleton.el
2003-07-20 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* EventRecord/Step.*: Added addDecayNoCheck(tPPtr parent, tPPtr
child) and, addDecayProduct(tPPtr child) to add decay products
which are already linked with their parents.
2003-07-19 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDF/RemnantHandler.*, PDF/PartonExtractor.*, PDF/PartonBin.*,
PDF/PDF.*, PDF/NoRemnants.*, PDF/LeptonLeptonRemnant.*,
PDF/BaryonRemnants.*, Handlers/XComb.*,
Handlers/LastXCombInfo.icc, Handlers/CollisionHandler.cc: Removed
all traces of old strategy involving the PartonBinInfo and
RemnantInfo classes.
2003-07-16 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/DynamicLoader.cc: Added the current working directory
as a standard search path. Also added '/' between paths and
libraries if needed.
* src/Makefile: Corrected link flags for setup and run programs.
* Templates/Makefile, lib/Makefile: Moved ThePEG.el and g++dep to
the lib directory.
* Repository/EventGenerator.cc: Changed Pythia7 to ThePEG in
generateReferences().
* Handlers/StepHandler.cc: The createNewStep() function now
automatically calles useMe()
* Handlers/SubProcessHandler.*, Handlers/KinematicalCuts.*,
Handlers/EventHandler.*, Handlers/CollisionHandler.*,
Handlers/AnalysisHandler.*: Added fullclone() method to avoid
slicing when making copies in the Repository.
* Config/Makefile, Config/Makefile.common.in: Fixed correct
include path for installed makefiles.
* Makefile: install now depends on the check target to ensure the
setup and run programs are compiled.
* ../configure: Added top-level configure script which simply runs
configure in the sub-directories.
2003-07-14 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Config/Makefile: Removed config.h from DISTFILES.
* Utilities/SimplePhaseSpace.cc: CMSn now throws
ImpossibleKinematics if an infinite boost is requested.
* Utilities/UtilityBase.*: Added new setMomentum function which
doesn't boost to cms but just rotates to z-axis boosts along it
and rotates to correct angle.
* PDT/FlatDecayer.cc: Fixed precision problems for large boosts of
decay products.
2003-07-13 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Config/Makefile.install: This file is copied to the lib dir in
the installation and can be used to compile a users own .so
modules.
* lib/Makefile: The .o files included in libThePEG.so are now
explicitly listed. The .so files in the listed sub-directories are
explicitly soft-linked to the lib directory.
* Config/Makefile.common.in: .o and .so files are no longer
automatically soft-linked to the lib directory.
2003-07-12 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Templates/ThePEG.el: This elisp file will replace the old
skeleton.el. The main difference is the renaming of the p7-*
functions to thepeg-*. Also started to write specialized functions
to create standard handler classes with templates for the virtual
functions.
* EventRecord/Step.cc: In addDecayProduct() remove test to see if
children are still in the final state.
2003-07-08 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/SimplePhaseSpace.cc: Set the momentum of the first
particle rather than boosting it to avoid problems with massless
particles.
* Makefile: Hid unnecessary output with @.
* Utilities/UtilityBase.tcc: Fixed imediate returns in case ranges
of particles is empty. In setMomentum the boost version is only
tried if the invariant mass squared or the mass is non-negative,
otherwise the momentum is set directly.
* Utilities/Exception.cc: Added a debug function to print out a
range of particles (and summing their momenta).
* PDT/ParticleData.h: Added produceParticle method which takes a
Lorentz vector and a mass.
* PDF/LeptonLeptonRemnant.*: Added parameter to veto photon
remnants with too small energy fractions. Also the photons mass is
properly set to zero.
* Handlers/ClusterCollapser.cc: The procedure to find particles to
compensate with was changed so that coloured particles are tried
first and singlets only if the coloured particles were not enough.
Also required the compensating particles to have a positive
invariant mass squared to avoid boost problems.
* EventRecord/ColourSinglet.*: Introduced ColourSingletException
which is thrown if an inconsistent colour flow is detected.
2003-07-07 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/Exception.cc: Added debug function to print out
particle.
* Handlers/ClusterCollapser.cc: Fixed bug for the case where mass
of compensating particle is 0.
2003-07-05 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/UtilityBase.tcc: Fixed bug in transformToCMS(): boos
was backward.
* Utilities/UtilityBase.*: Added transformToMomentum() method.
* Utilities/SimplePhaseSpace.cc: Fixed potential problem in
getMagnitude() where impossible kinematics didn't generate an
exception due to rounding errors.
* EventRecord/Step.*: Added setCopy method.
* CLHEPWrap/Transverse.icc: Fixed bug in phi() calculation.
2003-07-04 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDF/PartonExtractor.cc: Messed around with the newRemnants
methods.
* Utilities/ObjectIndexer.icc: Fixed memory leak in
operator()(Int).
2003-07-03 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/StepHandler.h: Added method and member for getting the
current step from the collision handler.
* PDF/PartonExtractor.*: Changed return type on newRemnants method.
* Utilities/ObjectIndexer.*: Added const method for getting object
from index without possibility to create corresponding object.
* EventRecord/Step.*: Added insertCopy method.
2003-07-02 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDF/PartonBin.*: Added information about outgoing bins in
addition to the info about the incoming bin.
* PDF/PartonExtractor.*, Handlers/XComb.*,
Handlers/CollisionHandler.*: Changed to use PartonBinInstance
instead of PartonBinInfo.
* EventRecord/Step.*: Added removeDecayProducts methods.
2003-07-01 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/XComb.cc: Fixed floating underflow problem due to
uninitialized field in constructor.
2003-06-30 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Handlers/XComb.*: Prepared to use the new PartonBinInstance
class.
* PDF/PartonExtractor.*: Prepared to use the new PartonBinInstance
class.
* PDF/RemnantHandler.*, PDF/NoRemnants.*,
PDF/LeptonLeptonRemnant.*, PDF/BaryonRemnants.*: Prepared to use
the new PartonBinInstance class.
* PDF/PartonBinInstance.*: Added new class to hold info on parton
bins. Instead of a PartonBin having a ParonBinInfo to keep
temporary info, PartonBinInstance keeps a PartonBin together with
temporary info.
* CLHEPWrap/Transverse.h: Added units for input/output to streams.
2003-06-28 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* PDF/PartonExtractor.cc: Fixed association beteen partons and
parton bins for generated sub-processes (used to find PDFs for
partons).
2003-06-23 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Utilities/ObjectIndexer.*: Added templated class for dynamical
association between (reference counted) objects and indices.
* Handlers/StepHandler.*, Handlers/PartialCollisionHandler.cc: In
preparation for changing the signature of the handle() method i
StepHandler classes, StepHandler now has a method to return the
collision handler which made the call to handle(), The
corresponding member variable is set be the
PartialCollisionHandler before handle() is called. Also the
StepHandler class now has its own method to create a new step if
needed.
* PDT/FlatDecayer.cc: The scale of all decay products in a decay
is set to the squared mass of the decaying particle.
* Handlers/XComb.cc: The scale of all incoming and outgoing
partons in a sub-process is set to the hard scale.
* Handlers/DecayHandler.cc: The scale of a particle which has
decayed is set to zero.
2003-06-16 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* Repository/Repository.cc: Added code so that the load() command
will look in the ThePEG_INSTALL_PATH for a .rpo file if the given
filename did not exist.
2003-06-14 Leif Lönnblad <Leif.Lonnblad@thep.lu.se>
* First check-in of ThePEG. This is just what was previously
Pythia7 but stripped from any pythia-specific classes. Pythia7
still exists but contains only pythia-specific classes which
depend on ThePEG.
Most significant change is that the 'Misc' directory has been
removed and all classes therin has been moved to the 'Utilities'
directory.
Another change is that 'make check' now only checks the SimpleLEP
generator since the SimpleLHC generator was indirectly dependent
on the FlavourGenerator in the pythia string fragmentation classes
(used in the remnant handling).
When compiling, the full compiler and link commands are now by
default replaced by messages such as 'comiling xxx.cc ...' To see
the full commands use the make-variable SHOWCOMMAND eg. 'make -k
check SHOWCOMMAND=1'
diff --git a/Repository/EventGenerator.cc b/Repository/EventGenerator.cc
--- a/Repository/EventGenerator.cc
+++ b/Repository/EventGenerator.cc
@@ -1,729 +1,729 @@
// -*- C++ -*-
//
// This is the implementation of the non-inlined, non-templated member
// functions of the EventGenerator class.
//
#include "EventGenerator.h"
#include "EventGenerator.xh"
#include "ThePEG/Handlers/EventHandler.h"
#include "Repository.h"
#include "ThePEG/Utilities/HoldFlag.h"
#include "ThePEG/Utilities/Debug.h"
#include "ThePEG/Interface/Interfaced.h"
#include "ThePEG/Interface/Reference.h"
#include "ThePEG/Interface/RefVector.h"
#include "ThePEG/Interface/Parameter.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/PDT/ParticleData.h"
#include "ThePEG/PDT/MatcherBase.h"
#include "ThePEG/PDT/DecayMode.h"
#include "ThePEG/StandardModel/StandardModelBase.h"
#include "ThePEG/Repository/Strategy.h"
#include "ThePEG/Repository/CurrentGenerator.h"
#include "ThePEG/Handlers/AnalysisHandler.h"
#include "ThePEG/Handlers/EventManipulator.h"
#include "ThePEG/Handlers/LuminosityFunction.h"
#include "ThePEG/EventRecord/Event.h"
#include "ThePEG/Handlers/SubProcessHandler.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "ThePEG/Config/algorithm.h"
#include <cstdlib>
#ifdef ThePEG_TEMPLATES_IN_CC_FILE
#include "EventGenerator.tcc"
#endif
using namespace ThePEG;
EventGenerator::EventGenerator()
: thePath("."), theNumberOfEvents(1000), theQuickSize(7000), ieve(0),
theDebugLevel(0), printEvent(0), dumpPeriod(0), debugEvent(0),
maxWarnings(10), maxErrors(10), theCurrentRandom(0),
theCurrentGenerator(0) {}
EventGenerator::EventGenerator(const EventGenerator & eg)
: Interfaced(eg), theDefaultObjects(eg.theDefaultObjects),
theLocalParticles(eg.theLocalParticles),
theStandardModel(eg.theStandardModel),
theStrategy(eg.theStrategy), theRandom(eg.theRandom),
theEventHandler(eg.theEventHandler),
theAnalysisHandlers(eg.theAnalysisHandlers),
theEventManipulator(eg.theEventManipulator),
thePath(eg.thePath), theRunName(eg.theRunName),
theNumberOfEvents(eg.theNumberOfEvents), theObjects(eg.theObjects),
theObjectMap(eg.theObjectMap),
theParticles(eg.theParticles), theQuickParticles(eg.theQuickParticles),
theQuickSize(eg.theQuickSize), theMatchers(eg.theMatchers),
usedObjects(eg.usedObjects), theDebugLevel(eg.theDebugLevel),
printEvent(eg.printEvent), dumpPeriod(eg.dumpPeriod),
debugEvent(eg.debugEvent),
maxWarnings(eg.maxWarnings), maxErrors(eg.maxErrors), theCurrentRandom(0),
theCurrentGenerator(0),
theCurrentEventHandler(eg.theCurrentEventHandler),
theCurrentStepHandler(eg.theCurrentStepHandler) {}
EventGenerator::~EventGenerator() {
if ( theCurrentRandom ) delete theCurrentRandom;
if ( theCurrentGenerator ) delete theCurrentGenerator;
}
tcEventPtr EventGenerator::currentEvent() const {
return eventHandler()->currentEvent();
}
CrossSection EventGenerator::histogramScale() const {
return eventHandler()->histogramScale();
}
void
EventGenerator::setup(string newRunName,
ObjectSet & newObjects,
ParticleMap & newParticles,
MatcherSet & newMatchers) {
theRunName = newRunName;
theObjects.swap(newObjects);
theParticles.swap(newParticles);
theMatchers.swap(newMatchers);
theObjectMap.clear();
for ( ObjectSet::const_iterator it = objects().begin();
it != objects().end(); ++it ) theObjectMap[(**it).fullName()] = *it;
UseRandom currentRandom(theRandom);
CurrentGenerator currentGenerator(this);
init();
}
IBPtr EventGenerator::getPointer(string name) const {
ObjectMap::const_iterator it = objectMap().find(name);
if ( it == objectMap().end() ) return IBPtr();
else return it->second;
}
void EventGenerator::openOutputFiles() {
logfile().open((filename() + ".log").c_str());
outfile().open((filename() + ".out").c_str());
}
void EventGenerator::closeOutputFiles() {
outfile().close();
logfile().close();
}
void EventGenerator::doinit() throw (InitException) {
Interfaced::doinit();
random().init();
UseRandom useRandom(theRandom);
CurrentGenerator currentGenerator(this);
theQuickParticles.clear();
theQuickParticles.resize(2*theQuickSize);
for ( ParticleMap::const_iterator pit = theParticles.begin();
pit != theParticles.end(); ++pit )
if ( abs(pit->second->id()) < theQuickSize )
theQuickParticles[pit->second->id()+theQuickSize] = pit->second;
// Then call the init method for all objects. Start with the
// standard model and the strategy.
standardModel()->init();
if ( strategy() ) strategy()->init();
for_each(objects(), mem_fun(&InterfacedBase::init));
// Then initialize the Event Handler calculating initial cross
// sections and stuff.
eventHandler()->initialize();
}
void EventGenerator::doinitrun() {
Interfaced::doinitrun();
random().initrun();
// Then call the init method for all objects. Start with the
// standard model and the strategy.
standardModel()->initrun();
if ( strategy() ) strategy()->initrun();
for_each(objects(), mem_fun(&InterfacedBase::initrun));
}
PDPtr EventGenerator::getParticleData(long newId) const {
if ( abs(newId) < theQuickSize ) return theQuickParticles[newId+theQuickSize];
ParticleMap::const_iterator it = theParticles.find(newId);
if ( it == theParticles.end() ) return PDPtr();
return it->second;
}
PPtr EventGenerator::getParticle(long newId) const {
tcPDPtr pd = getParticleData(newId);
if ( !pd ) return PPtr();
return pd->produceParticle();
}
void EventGenerator::finalize() {
UseRandom currentRandom(theRandom);
CurrentGenerator currentGenerator(this);
finish();
}
void EventGenerator::dofinish() {
// first write out statistics from the event handler.
eventHandler()->statistics(out());
// Call the finish method for all other objects.
for_each(objects(), mem_fun(&InterfacedBase::finish));
generateReferences();
if ( theExceptions.empty() ) {
log() << "No exceptions reported in this run.\n";
} else {
log() << endl
<< "The following exception classes were reported in this run:"
<< endl;
for ( ExceptionMap::iterator it = theExceptions.begin();
it != theExceptions.end(); ++it )
log() << it->first->name() << " (" << it->second << " times)" << endl;
}
closeOutputFiles();
if ( theCurrentRandom ) delete theCurrentRandom;
if ( theCurrentGenerator ) delete theCurrentGenerator;
theCurrentRandom = 0;
theCurrentGenerator = 0;
}
void EventGenerator::initialize() {
UseRandom currentRandom(theRandom);
CurrentGenerator currentGenerator(this);
doInitialize();
}
void EventGenerator::go(long next, long maxevent) {
UseRandom currentRandom(theRandom);
CurrentGenerator currentGenerator(this);
doGo(next, maxevent);
}
EventPtr EventGenerator::shoot() {
UseRandom currentRandom(theRandom);
CurrentGenerator currentGenerator(this);
return doShoot();
}
EventPtr EventGenerator::doShoot() {
EventPtr event;
if ( N() >= 0 && ++ieve > N() ) return event;
HoldFlag<int> debug(Debug::level, theDebugLevel);
do {
int state = 0;
int loop = 1;
eventHandler()->clearEvent();
try {
do {
// Generate a full event or part of an event
if ( eventHandler()->empty() ) event = eventHandler()->generateEvent();
else event = eventHandler()->continueEvent();
if ( eventHandler()->empty() ) loop = -loop;
// Analyze the possibly uncomplete event
for ( AnalysisVector::iterator it = analysisHandlers().begin();
it != analysisHandlers().end(); ++it )
(**it).analyze(event, ieve, loop, state);
// Manipulate the current event, possibly deleting some steps
// and telling the event handler to redo them.
if ( manipulator() )
state = manipulator()->manipulate(eventHandler(), event);
// If the event was not completed, continue generation and continue.
loop = abs(loop) + 1;
} while ( !eventHandler()->empty() );
}
catch (Exception & ex) {
if ( logException(ex, eventHandler()->currentEvent()) ) throw;
}
catch (...) {
dump();
event = eventHandler()->currentEvent();
if ( event )
log() << *event;
else
log() << "An exception occurred before any event object was created!";
log() << endl;
throw;
}
if ( ThePEG_DEBUG_LEVEL ) {
if ( ( ThePEG_DEBUG_LEVEL == Debug::printEveryEvent ||
ieve < printEvent ) && event ) log() << *event;
if ( debugEvent > 0 && ieve + 1 >= debugEvent )
Debug::level = Debug::full;
if ( dumpPeriod > 0 && ieve%dumpPeriod == 0 ) dump();
}
} while ( !event );
return event;
}
EventPtr EventGenerator::doGenerateEvent(tEventPtr e) {
if ( N() >= 0 && ++ieve > N() ) return EventPtr();
EventPtr event = e;
try {
event = eventHandler()->generateEvent(e);
}
catch (Exception & ex) {
if ( logException(ex, eventHandler()->currentEvent()) ) throw;
}
catch (...) {
dump();
event = eventHandler()->currentEvent();
if ( !event ) event = e;
log() << *event << endl;
throw;
}
return event;
}
EventPtr EventGenerator::doGenerateEvent(tStepPtr s) {
if ( N() >= 0 && ++ieve > N() ) return EventPtr();
EventPtr event;
try {
event = eventHandler()->generateEvent(s);
}
catch (Exception & ex) {
if ( logException(ex, eventHandler()->currentEvent()) ) throw;
}
catch (...) {
dump();
event = eventHandler()->currentEvent();
if ( event ) log() << *event << endl;
throw;
}
return event;
}
EventPtr EventGenerator::generateEvent(Event & e) {
UseRandom currentRandom(theRandom);
CurrentGenerator currentGenerator(this);
return doGenerateEvent(tEventPtr(&e));
}
EventPtr EventGenerator::generateEvent(Step & s) {
UseRandom currentRandom(theRandom);
CurrentGenerator currentGenerator(this);
return doGenerateEvent(tStepPtr(&s));
}
Energy EventGenerator::maximumCMEnergy() const {
tcEHPtr eh = eventHandler();
return eh->lumiFnPtr()? eh->lumiFn().maximumCMEnergy(): 0.0*GeV;
}
void EventGenerator::doInitialize() {
openOutputFiles();
init();
initrun();
}
void EventGenerator::doGo(long next, long maxevent) {
if ( maxevent >= 0 ) N(maxevent);
initialize();
ieve = next-1;
try {
while ( shoot() ) {}
}
catch ( ... ) {
finish();
throw;
}
finish();
}
void EventGenerator::dump() const {
PersistentOStream file((filename() + ".dump").c_str());
file << tcEGPtr(this);
}
void EventGenerator::use(const Interfaced & i) {
IBPtr ip = getPtr(i);
if ( ip ) usedObjects.insert(ip);
}
void EventGenerator::generateReferences() {
typedef map<string,string> StringMap;
StringMap references;
// First get all model descriptions and model references from the
// used objects. Put them in a map indexed by the description to
// avoid duplicates.
for ( ObjectSet::iterator it = usedObjects.begin();
it != usedObjects.end(); ++it )
references[Repository::getModelDescription(*it)] =
Repository::getModelReferences(*it);
// Now get the main strategy description which should put first and
// remove it from the map.
string stratdesc;
string stratref;
if ( strategy() ) {
stratdesc = Repository::getModelDescription(strategy());
stratref = Repository::getModelReferences(strategy());
references.erase(stratdesc);
}
// Open the file and write out an appendix header
reffile().open((filename() + ".tex").c_str());
reffile() << "\\documentclass{article}" << endl
<< "\\usepackage{graphics}" << endl
<< "\\begin{document}" << endl
<< "\\appendix" << endl
<< "\\section[xxx]{T\\scalebox{0.8}{HE}PEG\\cite{ThePEG} Run "
<< "Information}" << endl << "Run name: \\textbf{" << runName()
<< "}:\\\\\n";
if ( !stratdesc.empty() )
reffile() << "This run was generated using " << stratdesc <<
" and the following models:\n";
else
reffile() << "The following models were used:\n";
reffile() << "\\begin{itemize}" << endl;
// Write out all descriptions.
for ( StringMap::iterator it = references.begin();
it != references.end(); ++it )
reffile() << "\\item " << it->first << endl;
// Write out thebibliography header and all references.
reffile() << "\\end{itemize}" << endl << endl
<< "\\begin{thebibliography}{99}" << endl
<< "\\bibitem{ThePEG} L.~L\\\"onnblad, "
<< "Comput.~Phys.~Commun.\\ {\\bf 118} (1999) 213." << endl;
if ( !stratref.empty() ) reffile() << stratref << endl;
for ( StringMap::iterator it = references.begin();
it != references.end(); ++it )
reffile() << it->second << endl;
reffile() << "\\end{thebibliography}" << endl
<< "\\end{document}" << endl;
reffile().close();
}
void EventGenerator::strategy(StrategyPtr s) {
theStrategy = s;
}
int EventGenerator::count(const Exception & ex) {
return ++theExceptions[&typeid(ex)];
}
void EventGenerator::printException(const Exception & ex) {
switch ( ex.severity() ) {
case Exception::info:
log() << "* An information";
break;
case Exception::warning:
log() << "* A warning";
break;
case Exception::eventerror:
log() << "** An event";
break;
case Exception::runerror:
log() << "*** An run";
break;
case Exception::maybeabort:
case Exception::abortnow:
log() << "**** A serious";
break;
default:
log() << "**** An unknown";
break;
}
log() << " exception occurred while generating event number "
<< ieve << ": " << endl << ex.message() << endl;
if ( ex.severity() == Exception::eventerror )
log() << "The event will be discarded." << endl;
}
void EventGenerator::logWarning(const Exception & ex) {
if ( ex.severity() != Exception::info &&
ex.severity() != Exception::warning ) throw ex;
ex.handle();
if ( count(ex) > maxWarnings ) return;
printException(ex);
}
bool EventGenerator::
logException(const Exception & ex, tcEventPtr event) {
bool noEvent = !event;
int c = count(ex);
ex.handle();
if ( c <= maxWarnings ) {
printException(ex);
if ( c == maxWarnings )
log() << "No more warnings of this kind will be reported." << endl;
}
if ( ex.severity() == Exception::info ||
ex.severity() == Exception::warning ) {
ex.handle();
return false;
}
if ( ex.severity() == Exception::eventerror ) {
if ( c < maxErrors || maxErrors <= 0 ) {
ex.handle();
if ( ThePEG_DEBUG_LEVEL > 0 && !noEvent ) log() << *event;
return false;
}
if ( c > maxErrors ) printException(ex);
log() << "Too many (" << c << ") exceptions of this kind has occurred. "
"Execution will be stopped.\n";
} else {
log() << "This exception is too serious. Execution will be stopped.\n";
}
if ( !noEvent ) log() << *event;
else log()
<< "An exception occurred before any event object was created!\n";
dump();
return true;
}
struct MatcherOrdering {
bool operator()(tcPMPtr m1, tcPMPtr m2) {
return m1->name() < m2->name() ||
( m1->name() == m2->name() && m1->fullName() < m2->fullName() );
}
};
struct ObjectOrdering {
bool operator()(tcIBPtr i1, tcIBPtr i2) {
return i1->fullName() < i2->fullName();
}
};
void EventGenerator::persistentOutput(PersistentOStream & os) const {
set<tcPMPtr,MatcherOrdering> match(theMatchers.begin(), theMatchers.end());
set<tcIBPtr,ObjectOrdering> usedset(usedObjects.begin(), usedObjects.end());
os << theDefaultObjects << theLocalParticles << theStandardModel
<< theStrategy << theRandom << theEventHandler << theAnalysisHandlers
<< theEventManipulator << thePath << theRunName
<< theNumberOfEvents << theObjectMap << theParticles
<< theQuickParticles << theQuickSize << match << usedset
<< ieve << theDebugLevel << printEvent << dumpPeriod << debugEvent
<< maxWarnings << maxErrors << theCurrentEventHandler
<< theCurrentStepHandler;
}
void EventGenerator::persistentInput(PersistentIStream & is, int) {
is >> theDefaultObjects >> theLocalParticles >> theStandardModel
>> theStrategy >> theRandom >> theEventHandler >> theAnalysisHandlers
>> theEventManipulator >> thePath >> theRunName
>> theNumberOfEvents >> theObjectMap >> theParticles
>> theQuickParticles >> theQuickSize >> theMatchers >> usedObjects
>> ieve >> theDebugLevel >> printEvent >> dumpPeriod >> debugEvent
>> maxWarnings >> maxErrors >> theCurrentEventHandler
>> theCurrentStepHandler;
theObjects.clear();
for ( ObjectMap::iterator it = theObjectMap.begin();
it != theObjectMap.end(); ++it ) theObjects.insert(it->second);
}
void EventGenerator::setLocalParticles(PDPtr pd, int) {
localParticles()[pd->id()] = pd;
}
void EventGenerator::insLocalParticles(PDPtr pd, int) {
localParticles()[pd->id()] = pd;
}
void EventGenerator::delLocalParticles(int place) {
ParticleMap::iterator it = localParticles().begin();
while ( place-- && it != localParticles().end() ) ++it;
if ( it != localParticles().end() ) localParticles().erase(it);
}
vector<PDPtr> EventGenerator::getLocalParticles() const {
vector<PDPtr> ret;
for ( ParticleMap::const_iterator it = localParticles().begin();
it != localParticles().end(); ++it ) ret.push_back(it->second);
return ret;
}
void EventGenerator::setPath(string newPath) {
if ( std::system(("mkdir -p " + newPath).c_str()) ) throw EGNoPath(newPath);
if ( std::system(("touch " + newPath + "/.ThePEG").c_str()) )
throw EGNoPath(newPath);
if ( std::system(("rm -f " + newPath + "/.ThePEG").c_str()) )
throw EGNoPath(newPath);
thePath = newPath;
}
string EventGenerator::defPath() const {
char * env = std::getenv("ThePEG_RUN_DIR");
if ( env ) return string(env);
return string(".");
}
ostream & EventGenerator::out() {
return outfile().is_open()? outfile(): BaseRepository::cout();
}
ostream & EventGenerator::log() {
return logfile().is_open()? logfile(): BaseRepository::clog();
}
ostream & EventGenerator::ref() {
return reffile().is_open()? reffile(): BaseRepository::cout();
}
ClassDescription<EventGenerator> EventGenerator::initEventGenerator;
void EventGenerator::Init() {
static ClassDocumentation<EventGenerator> documentation
("There is no documentation for the ThePEG::EventGenerator class");
static Reference<EventGenerator,StandardModelBase> interfaceStandardModel
("StandardModelParameters",
"The ThePEG::StandardModelBase object to be used to access standard "
"model parameters in this run.",
&EventGenerator::theStandardModel, false, false, true, false);
static Reference<EventGenerator,EventHandler> interfaceEventHandler
("EventHandler",
"The ThePEG::EventHandler object to be used to generate the "
"individual events in this run.",
&EventGenerator::theEventHandler, false, false, true, false);
static RefVector<EventGenerator,AnalysisHandler> interfaceAnalysisHandlers
("AnalysisHandlers",
"ThePEG::AnalysisHandler objects to be used to analyze the produced "
"events in this run.",
&EventGenerator::theAnalysisHandlers, 0, true, false, true, false);
static Reference<EventGenerator,EventManipulator> interfaceEventManip
("EventManipulator",
"An ThePEG::EventManipulator called each time the generation of an "
"event is stopped. The ThePEG::EventManipulator object is able to "
"manipulate the generated event, as opposed to an "
"ThePEG::AnalysisHandler which may only look at the event.",
&EventGenerator::theEventManipulator, true, false, true, true);
static RefVector<EventGenerator,ParticleData> interfaceLocalParticles
("LocalParticles",
"Special versions of ThePEG::ParticleData objects to be used "
"in this run. Note that to delete an object, its number in the list "
"should be given, rather than its id number.",
0, 0, false, false, true, false,
&EventGenerator::setLocalParticles, &EventGenerator::insLocalParticles,
&EventGenerator::delLocalParticles, &EventGenerator::getLocalParticles);
static RefVector<EventGenerator,Interfaced> interfaceDefaultObjects
("DefaultObjects",
"A vector of pointers to default objects. In a ThePEG::Reference or "
"ThePEG::RefVector interface with the defaultIfNull() flag set, if a "
"null pointer is encountered this vector is gone through until an "
"acceptable object is found in which case the null pointer is replaced "
"by a pointer to this object.",
&EventGenerator::theDefaultObjects, 0, true, false, true, false, false);
static Reference<EventGenerator,Strategy> interfaceStrategy
("Strategy",
"An ThePEG::Strategy with additional ThePEG::ParticleData objects to "
"be used in this run.",
&EventGenerator::theStrategy, false, false, true, true);
static Reference<EventGenerator,RandomGenerator> interfaceRandomGenerator
("RandomNumberGenerator",
"An ThePEG::RandomGenerator object which should typically interaface to "
"a CLHEP Random object. This will be the default random number generator "
"for the run, but individual objects may use their own random generator "
"if they wish.",
&EventGenerator::theRandom, true, false, true, false);
static Parameter<EventGenerator,string> interfacePath
("Path",
"The directory where the output files are put.",
&EventGenerator::thePath, ".", true, false,
&EventGenerator::setPath, 0, &EventGenerator::defPath);
static Parameter<EventGenerator,string> interfaceRunName
("RunName",
"The name of this run. This name will be used in the output filenames.",
&EventGenerator::theRunName, "", true, false,
0, 0, &EventGenerator::name);
static Parameter<EventGenerator,long> interfaceNumberOfEvents
("NumberOfEvents",
"The number of events to be generated in this run. If less than zero, "
"the number of events is unlimited",
&EventGenerator::theNumberOfEvents, 1000, -1, Constants::MaxInt,
true, false, true);
static Parameter<EventGenerator,int> interfaceDebugLevel
("DebugLevel",
"The level of debug information sent out to the log file in the run. "
"Level 0 only gives a limited ammount of warnings and error messages. "
"Level 1 will print the first few events. "
"Level 5 will print every event. "
"Level 9 will print every step in every event.",
&EventGenerator::theDebugLevel, 0, 0, 9, true, false, true);
static Parameter<EventGenerator,int> interfacePrintEvent
("PrintEvent",
"If the debug level is above zero, print the first 'PrintEvent' events.",
&EventGenerator::printEvent, 0, 0, 1000, true, false, true);
static Parameter<EventGenerator,long> interfaceDumpPeriod
("DumpPeriod",
"If the debug level is above zero, dump the full state of the run every "
"'DunpPeriod' events.",
&EventGenerator::dumpPeriod, 0, 0, Constants::MaxInt,
true, false, true);
static Parameter<EventGenerator,long> interfaceDebugEvent
("DebugEvent",
"If the debug level is above zero, step up to the highest debug level "
"befor event number 'DebugEvent'.",
&EventGenerator::debugEvent, 0, 0, Constants::MaxInt,
true, false, true);
static Parameter<EventGenerator,int> interfaceMaxWarnings
("MaxWarnings",
"The maximum number of warnings of each type which will be printed.",
&EventGenerator::maxWarnings, 10, 1, 100, true, false, true);
static Parameter<EventGenerator,int> interfaceMaxErrors
("MaxErrors",
"The maximum number of errors of each type which will be tolerated. "
"If more errors are reported, the run will be aborted.",
- &EventGenerator::maxErrors, 10, 1, 100, true, false, true);
+ &EventGenerator::maxErrors, 10, 1, 100000, true, false, true);
static Parameter<EventGenerator,int> interfaceQuickSize
("QuickSize",
"The max absolute id number of particle data objects which are accessed "
"quickly through a vector indexed by the id number.",
&EventGenerator::theQuickSize, 7000, 0, 50000, true, false, true);
}
EGNoPath::EGNoPath(string path) {
theMessage << "Cannot set the directory path for output files to '" << path
<< "' because the directory did not exist and could not be "
<< "created.";
severity(warning);
}

File Metadata

Mime Type
text/x-diff
Expires
Tue, Sep 30, 5:43 AM (5 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6566285
Default Alt Text
(91 KB)

Event Timeline