Hello community, here is the log from the commit of package LHAPDF for openSUSE:Factory checked in at 2014-09-07 11:10:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/LHAPDF (Old) and /work/SRC/openSUSE:Factory/.LHAPDF.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "LHAPDF" Changes: -------- --- /work/SRC/openSUSE:Factory/LHAPDF/LHAPDF.changes 2014-06-24 15:16:11.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.LHAPDF.new/LHAPDF.changes 2014-09-07 11:10:24.000000000 +0200 @@ -1,0 +2,30 @@ +Sat Sep 6 22:23:20 UTC 2014 - [email protected] + +- Update to version 6.1.4: + - Adding multiset variants of the 5 getmin/max LHAGlue + functions + - Adding the 'unofficial' getminmax Fortran function to + LHAGlue.cc + - Treat PID 0 as an alias for 21 in PDF::hasFlavor as well as + the PDF::xf* functions + - Clarify in lhapdf script help that 'list' by default shows all + available sets, not those installed on the user's system + - Update CONFIGFLAGS docs to fix some errors w.r.t. actual flag + usage + - Treat a DataVersion of 0 as unvalidated: valid numbers now + start at 1 + - Remove the LHAPDF ID from the warning printout about + unvalidated PDFs, since in that case there will usually be no + standard ID number and it just gets unhelpfully reported as -1 + - Detect and report improperly terminated grid files (ones + missing a --- final line) + - Replace asserts with exceptions and improve subgrid error + reporting in GridPDF + - Report the value of Q2 that causes a subgrid-finding failure + - Improve testgrid to use PDFNAME/MEMNUM arg syntax + - Forbid compilation if the demon combination of Boost < 1.47 + and GCC >= 4.6, with a serious bug in BOOST_FOREACH, is found: + http://code-muse.com/2013/08/06/boostforeach-and-compiler-bugs + - Improved AlphaS ODE solver performance. + +------------------------------------------------------------------- Old: ---- LHAPDF-6.1.3.tar.gz New: ---- LHAPDF-6.1.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ LHAPDF.spec ++++++ --- /var/tmp/diff_new_pack.28Y7JI/_old 2014-09-07 11:10:25.000000000 +0200 +++ /var/tmp/diff_new_pack.28Y7JI/_new 2014-09-07 11:10:25.000000000 +0200 @@ -20,7 +20,7 @@ %define execname lhapdf Name: LHAPDF -Version: 6.1.3 +Version: 6.1.4 Release: 0 Summary: A library for unified and easy to use interface to modern PDF sets License: GPL-3.0 ++++++ LHAPDF-6.1.3.tar.gz -> LHAPDF-6.1.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/AUTHORS new/LHAPDF-6.1.4/AUTHORS --- old/LHAPDF-6.1.3/AUTHORS 2014-05-19 11:56:01.000000000 +0200 +++ new/LHAPDF-6.1.4/AUTHORS 2014-07-27 22:23:30.000000000 +0200 @@ -20,3 +20,17 @@ Juan Rojo Marek Schoenherr Mike Whalley + + +CITATION +======== + +Please cite the contribution + + "New access to PDF data via LHAPDF6", by A. Buckley + in "Les Houches 2013: Physics at TeV Colliders: Standard Model Working Group Report" + http://arxiv.org/abs/1405.1067 + http://inspirehep.net/search?p=find+eprint+1405.1067 + +A full write-up of LHAPDF6 will appear as soon as possible and +will replace this current recommendation. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/ChangeLog new/LHAPDF-6.1.4/ChangeLog --- old/LHAPDF-6.1.3/ChangeLog 2014-06-17 16:51:19.000000000 +0200 +++ new/LHAPDF-6.1.4/ChangeLog 2014-08-19 10:49:01.000000000 +0200 @@ -1,3 +1,52 @@ +2014-08-19 Andy Buckley <[email protected]> + + * LHAPDF 6.1.4 release + +2014-08-15 Andy Buckley <[email protected]> + + * Adding multiset variants of the 5 getmin/max LHAGlue functions. + + * Adding the 'unofficial' getminmax Fortran function to LHAGlue.cc + (thanks to Andrey Sapronov for the report and patch). + +2014-07-18 Andy Buckley <[email protected]> + + * Treat PID 0 as an alias for 21 in PDF::hasFlavor as well as the + PDF::xf* functions. Thanks to Nathan Hartland for the report. + +2014-07-10 Andy Buckley <[email protected]> + + * Clarify in lhapdf script help that 'list' by default shows all + available sets, not those installed on the user's system. + +2014-07-09 Andy Buckley <[email protected]> + + * Update CONFIGFLAGS docs to fix some errors w.r.t. actual flag usage. + + * Treat a DataVersion of 0 as unvalidated: valid numbers now start at 1. + + * Remove the LHAPDF ID from the warning printout about unvalidated + PDFs, since in that case there will usually be no standard ID + number and it just gets unhelpfully reported as -1. + + * Detect and report improperly terminated grid files (ones missing a --- final line). + + * Replace asserts with exceptions and improve subgrid error reporting in GridPDF. + + * Report the value of Q2 that causes a subgrid-finding failure. + + * Improve testgrid to use PDFNAME/MEMNUM arg syntax. + +2014-07-7 David Grellscheid <[email protected]> + + * Forbid compilation if the demon combination of Boost < 1.47 and + GCC >= 4.6, with a serious bug in BOOST_FOREACH, is found: + http://code-muse.com/2013/08/06/boostforeach-and-compiler-bugs + +2014-06-18 Karl Nordstrom <[email protected]> + + * Improved AlphaS ODE solver performance. + 2014-06-17 Andy Buckley <[email protected]> * 6.1.3 release! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/INSTALL new/LHAPDF-6.1.4/INSTALL --- old/LHAPDF-6.1.3/INSTALL 2014-05-27 15:16:57.000000000 +0200 +++ new/LHAPDF-6.1.4/INSTALL 2014-07-12 22:52:55.000000000 +0200 @@ -159,11 +159,12 @@ The Mac OS X "Homebrew" system (http://brew.sh/) comes recommended by several LHAPDF developers. Many HEP packages are already available for Homebrew via the -homebrew-hep project: http://davidchall.github.io/homebrew-hep/ Success has also -been reported with the MacPorts system (http://www.macports.org/). With both -these approaches, you should set your environment to *only* use compilers and -Python from the Brew/Ports area and to ignore the system packages: a hybrid -approach will only cause unnecessary pain. +homebrew-hep project: http://davidchall.github.io/homebrew-hep/ . Success has +also been reported with the MacPorts system (http://www.macports.org/): please +see HepForge's information about MacPorts at https://www.hepforge.org/docs/macosx . +With both these approaches, you should set your environment to *only* use +compilers and Python from the Brew/Ports area and to ignore the system packages: +a hybrid approach will only cause unnecessary pain. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/Makefile.in new/LHAPDF-6.1.4/Makefile.in --- old/LHAPDF-6.1.3/Makefile.in 2014-06-17 15:35:58.000000000 +0200 +++ new/LHAPDF-6.1.4/Makefile.in 2014-08-15 16:49:15.000000000 +0200 @@ -95,11 +95,11 @@ $(top_srcdir)/config/missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/compilerflags.m4 \ - $(top_srcdir)/m4/cython.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/boost_bug.m4 \ + $(top_srcdir)/m4/compilerflags.m4 $(top_srcdir)/m4/cython.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/TODO new/LHAPDF-6.1.4/TODO --- old/LHAPDF-6.1.3/TODO 2014-06-17 17:03:17.000000000 +0200 +++ new/LHAPDF-6.1.4/TODO 2014-08-15 22:11:18.000000000 +0200 @@ -98,6 +98,14 @@ VERSION 6.2 ----------- +- **Nuclear PDFs** + + There's definitely a need for interfaces both to individual nuclear modification + functions (like PDFs themselves, a function of x,Q2) for application on top + of nucleon PDFs, and for all-inclusive nuclear PDFs. Individual "sets" for + each nucleus (A) as well as error sets: need to decide on groupings as well + as the API. Quite active, cf. "Lisbon Accord". + - **Optimize the grid PDF interpolator code** Cache log(x), log(Q) between samplings -> log() still accounts for 15% of diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/aclocal.m4 new/LHAPDF-6.1.4/aclocal.m4 --- old/LHAPDF-6.1.3/aclocal.m4 2014-06-17 15:35:57.000000000 +0200 +++ new/LHAPDF-6.1.4/aclocal.m4 2014-08-15 16:49:14.000000000 +0200 @@ -1384,6 +1384,7 @@ m4_include([m4/ax_cxx_compile_stdcxx_11.m4]) m4_include([m4/boost.m4]) +m4_include([m4/boost_bug.m4]) m4_include([m4/compilerflags.m4]) m4_include([m4/cython.m4]) m4_include([m4/libtool.m4]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/configure new/LHAPDF-6.1.4/configure --- old/LHAPDF-6.1.3/configure 2014-06-17 15:35:58.000000000 +0200 +++ new/LHAPDF-6.1.4/configure 2014-08-15 16:49:15.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for LHAPDF 6.1.3. +# Generated by GNU Autoconf 2.69 for LHAPDF 6.1.4. # # Report bugs to <[email protected]>. # @@ -650,8 +650,8 @@ # Identity of this package. PACKAGE_NAME='LHAPDF' PACKAGE_TARNAME='LHAPDF' -PACKAGE_VERSION='6.1.3' -PACKAGE_STRING='LHAPDF 6.1.3' +PACKAGE_VERSION='6.1.4' +PACKAGE_STRING='LHAPDF 6.1.4' PACKAGE_BUGREPORT='[email protected]' PACKAGE_URL='' @@ -1422,7 +1422,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures LHAPDF 6.1.3 to adapt to many kinds of systems. +\`configure' configures LHAPDF 6.1.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1492,7 +1492,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of LHAPDF 6.1.3:";; + short | recursive ) echo "Configuration of LHAPDF 6.1.4:";; esac cat <<\_ACEOF @@ -1609,7 +1609,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -LHAPDF configure 6.1.3 +LHAPDF configure 6.1.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2095,11 +2095,53 @@ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel + +# ac_fn_cxx_try_run LINENO +# ------------------------ +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_cxx_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_run cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by LHAPDF $as_me 6.1.3, which was +It was created by LHAPDF $as_me 6.1.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2966,7 +3008,7 @@ # Define the identity of the package. PACKAGE='LHAPDF' - VERSION='6.1.3' + VERSION='6.1.4' cat >>confdefs.h <<_ACEOF @@ -16735,6 +16777,69 @@ + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if boost rvalue bug is present" >&5 +$as_echo_n "checking if boost rvalue bug is present... " >&6; } +oldcppflags_boost="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" +if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + + #include <boost/shared_ptr.hpp> + #include <boost/foreach.hpp> + #include <vector> + const std::vector<boost::shared_ptr<int> > f() + { + return std::vector<boost::shared_ptr<int> >(4, + boost::shared_ptr<int>(new int(12))); + } + +int +main () +{ +int sum = 48; + BOOST_FOREACH(const boost::shared_ptr<int> &pi, f()) + { + sum -= *pi; + } + return sum; + + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + as_fn_error $? " +*********************************************** +*** Boost is too old for this compiler version. $CXX needs boost > 1_47. +*** See http://code-muse.com/2013/08/06/boostforeach-and-compiler-bugs +***********************************************" "$LINENO" 5 + + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +CPPFLAGS="$oldcppflags_boost" + + ## Export base compiler flags @@ -17326,7 +17431,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by LHAPDF $as_me 6.1.3, which was +This file was extended by LHAPDF $as_me 6.1.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -17392,7 +17497,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -LHAPDF config.status 6.1.3 +LHAPDF config.status 6.1.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/configure.ac new/LHAPDF-6.1.4/configure.ac --- old/LHAPDF-6.1.3/configure.ac 2014-06-12 21:30:54.000000000 +0200 +++ new/LHAPDF-6.1.4/configure.ac 2014-08-15 16:48:59.000000000 +0200 @@ -1,7 +1,7 @@ ## Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) -AC_INIT([LHAPDF],[6.1.3],[[email protected]],[LHAPDF]) +AC_INIT([LHAPDF],[6.1.4],[[email protected]],[LHAPDF]) if test "$prefix" = "$PWD"; then AC_MSG_ERROR([Installation into the build directory is not supported: use a different --prefix argument]) fi @@ -168,6 +168,7 @@ BOOST_FIND_HEADER([boost/math/distributions/chi_squared.hpp]) BOOST_FIND_HEADER([boost/math/special_functions/erf.hpp]) +BOOST_BUG_IN_FOREACH ## Export base compiler flags AC_SUBST(AM_CPPFLAGS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/doc/Makefile.in new/LHAPDF-6.1.4/doc/Makefile.in --- old/LHAPDF-6.1.3/doc/Makefile.in 2014-06-17 15:35:58.000000000 +0200 +++ new/LHAPDF-6.1.4/doc/Makefile.in 2014-08-15 16:49:15.000000000 +0200 @@ -82,11 +82,11 @@ $(srcdir)/Doxyfile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/compilerflags.m4 \ - $(top_srcdir)/m4/cython.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/boost_bug.m4 \ + $(top_srcdir)/m4/compilerflags.m4 $(top_srcdir)/m4/cython.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -367,8 +367,8 @@ maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -@WITH_DOXYGEN_FALSE@uninstall-local: @WITH_DOXYGEN_FALSE@mostlyclean-local: +@WITH_DOXYGEN_FALSE@uninstall-local: clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/doc/pdfsets.dox new/LHAPDF-6.1.4/doc/pdfsets.dox --- old/LHAPDF-6.1.3/doc/pdfsets.dox 2014-06-02 12:48:03.000000000 +0200 +++ new/LHAPDF-6.1.4/doc/pdfsets.dox 2014-08-15 22:06:40.000000000 +0200 @@ -1,7 +1,7 @@ /** @page pdfsets PDF sets -<b>Official LHAPDF 6.1 PDF sets: currently 254 available, of which 239 are validated.</b> +<b>Official LHAPDF 6.1 PDF sets: currently 264 available, of which 249 are validated.</b> See http://www.hepforge.org/archive/lhapdf/pdfsets/6.1 for data downloads. @@ -272,6 +272,16 @@ <tr style="background-color: #efe;"><td>247000</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF23_lo_as_0130_qed.tar.gz">NNPDF23_lo_as_0130_qed</a></td><td>101</td><td>1</td><td></td></tr> <tr style="background-color: #efe;"><td>247200</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF23_nlo_as_0119_qed_mc.tar.gz">NNPDF23_nlo_as_0119_qed_mc</a></td><td>101</td><td>1</td><td></td></tr> <tr style="background-color: #efe;"><td>247400</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF23_nnlo_as_0119_qed_mc.tar.gz">NNPDF23_nnlo_as_0119_qed_mc</a></td><td>101</td><td>1</td><td></td></tr> + <tr style="background-color: #efe;"><td>250000</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDFpol10_100.tar.gz">NNPDFpol10_100</a></td><td>101</td><td>1</td><td></td></tr> + <tr style="background-color: #efe;"><td>251000</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDFpol11_100.tar.gz">NNPDFpol11_100</a></td><td>101</td><td>1</td><td></td></tr> + <tr style="background-color: #efe;"><td>260000</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF30_nlo_as_0118.tar.gz">NNPDF30_nlo_as_0118</a></td><td>101</td><td>1</td><td></td></tr> + <tr style="background-color: #efe;"><td>260200</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF30_nlo_as_0118_nf_3.tar.gz">NNPDF30_nlo_as_0118_nf_3</a></td><td>101</td><td>1</td><td></td></tr> + <tr style="background-color: #efe;"><td>260400</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF30_nlo_as_0118_nf_4.tar.gz">NNPDF30_nlo_as_0118_nf_4</a></td><td>101</td><td>1</td><td></td></tr> + <tr style="background-color: #efe;"><td>260600</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF30_nlo_as_0118_nf_6.tar.gz">NNPDF30_nlo_as_0118_nf_6</a></td><td>101</td><td>1</td><td></td></tr> + <tr style="background-color: #efe;"><td>261000</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF30_nnlo_as_0118.tar.gz">NNPDF30_nnlo_as_0118</a></td><td>101</td><td>1</td><td></td></tr> + <tr style="background-color: #efe;"><td>261200</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF30_nnlo_as_0118_nf_3.tar.gz">NNPDF30_nnlo_as_0118_nf_3</a></td><td>101</td><td>1</td><td></td></tr> + <tr style="background-color: #efe;"><td>261400</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF30_nnlo_as_0118_nf_4.tar.gz">NNPDF30_nnlo_as_0118_nf_4</a></td><td>101</td><td>1</td><td></td></tr> + <tr style="background-color: #efe;"><td>261600</td><td><a href="http://www.hepforge.org/archive/lhapdf/pdfsets/6.1/NNPDF30_nnlo_as_0118_nf_6.tar.gz">NNPDF30_nnlo_as_0118_nf_6</a></td><td>101</td><td>1</td><td></td></tr> </table> */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/examples/Makefile.in new/LHAPDF-6.1.4/examples/Makefile.in --- old/LHAPDF-6.1.3/examples/Makefile.in 2014-06-17 15:35:58.000000000 +0200 +++ new/LHAPDF-6.1.4/examples/Makefile.in 2014-08-15 16:49:15.000000000 +0200 @@ -87,11 +87,11 @@ $(top_srcdir)/config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/compilerflags.m4 \ - $(top_srcdir)/m4/cython.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/boost_bug.m4 \ + $(top_srcdir)/m4/compilerflags.m4 $(top_srcdir)/m4/cython.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/include/LHAPDF/AlphaS.h new/LHAPDF-6.1.4/include/LHAPDF/AlphaS.h --- old/LHAPDF-6.1.3/include/LHAPDF/AlphaS.h 2014-06-17 15:31:21.000000000 +0200 +++ new/LHAPDF-6.1.4/include/LHAPDF/AlphaS.h 2014-06-24 13:47:05.000000000 +0200 @@ -294,7 +294,7 @@ private: /// Vector of Q2s in case specific anchor points are used - std::vector<double> _q2s; + mutable std::vector<double> _q2s; /// Whether or not the ODE has been solved yet mutable bool _calculated; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/include/LHAPDF/GridPDF.h new/LHAPDF-6.1.4/include/LHAPDF/GridPDF.h --- old/LHAPDF-6.1.3/include/LHAPDF/GridPDF.h 2014-06-17 15:31:21.000000000 +0200 +++ new/LHAPDF-6.1.4/include/LHAPDF/GridPDF.h 2014-07-09 14:46:30.000000000 +0200 @@ -177,9 +177,12 @@ /// Get the N-flavour subgrid containing Q2 = q2 const KnotArrayNF& subgrid(double q2) const { assert(q2 >= 0); + assert(!q2Knots().empty()); map<double, KnotArrayNF>::const_iterator it = _knotarrays.upper_bound(q2); - if (it == _knotarrays.begin()) throw GridError("Requested Q2 is lower than any available Q2 subgrid"); - if (it == _knotarrays.end() && q2 > q2Knots().back()) throw GridError("Requested Q2 is higher than any available Q2 subgrid"); + if (it == _knotarrays.begin()) + throw GridError("Requested Q2 " + to_str(q2) + " is lower than any available Q2 subgrid (lowest Q2 = " + to_str(q2Knots().front()) + ")"); + if (it == _knotarrays.end() && q2 > q2Knots().back()) + throw GridError("Requested Q2 " + to_str(q2) + " is higher than any available Q2 subgrid (highest Q2 = " + to_str(q2Knots().back()) + ")"); --it; // upper_bound (and lower_bound) returns the entry *above* q2: we need to decrement by one element // std::cout << "Using subgrid #" << std::distance(_knotarrays.begin(), it) << std::endl; return it->second; @@ -209,8 +212,8 @@ for (map<double, KnotArrayNF>::const_iterator isub = _knotarrays.begin(); isub != _knotarrays.end(); ++isub) { const KnotArrayNF& subgrid = isub->second; const KnotArray1F& grid1 = subgrid.get_first(); - if (grid1.q2s().empty()) continue; - BOOST_FOREACH (const double& q2, grid1.q2s()) { + if (grid1.q2s().empty()) continue; //< @todo This shouldn't be possible, right? Throw instead, or ditch the check? + BOOST_FOREACH (double q2, grid1.q2s()) { if (_q2knots.empty() || q2 != _q2knots.back()) _q2knots.push_back(q2); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/include/LHAPDF/Makefile.in new/LHAPDF-6.1.4/include/LHAPDF/Makefile.in --- old/LHAPDF-6.1.3/include/LHAPDF/Makefile.in 2014-06-17 15:35:58.000000000 +0200 +++ new/LHAPDF-6.1.4/include/LHAPDF/Makefile.in 2014-08-15 16:49:15.000000000 +0200 @@ -84,11 +84,11 @@ $(srcdir)/Version.h.in $(am__pkginclude_HEADERS_DIST) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/compilerflags.m4 \ - $(top_srcdir)/m4/cython.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/boost_bug.m4 \ + $(top_srcdir)/m4/compilerflags.m4 $(top_srcdir)/m4/cython.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/include/LHAPDF/PDF.h new/LHAPDF-6.1.4/include/LHAPDF/PDF.h --- old/LHAPDF-6.1.3/include/LHAPDF/PDF.h 2014-06-17 15:31:21.000000000 +0200 +++ new/LHAPDF-6.1.4/include/LHAPDF/PDF.h 2014-07-18 14:08:26.000000000 +0200 @@ -68,9 +68,8 @@ print(std::cout, v); } /// Print out a warning message if this PDF data is unvalidated - if (_info.get_entry_as<int>("DataVersion", -1) < 0) { - std::cerr << "WARNING: PDF #" << lhapdfID() << " is preliminary, unvalidated, " - << "and not for production use!" << std::endl; + if (_info.get_entry_as<int>("DataVersion", -1) <= 0) { + std::cerr << "WARNING: this PDF is preliminary, unvalidated, and not for production use!" << std::endl; } } @@ -115,13 +114,9 @@ throw RangeError("Unphysical Q2 given: " + to_str(q2)); } // Treat PID = 0 as always equivalent to a gluon: query as PID = 21 - const int id2 = (id != 0) ? id : 21; + const int id2 = (id != 0) ? id : 21; //< @note Treat 0 as an alias for 21 // Undefined PIDs - if (!hasFlavor(id2)) { - /// @todo Should look up the UndefFlavorAction flag, but efficiency hit for top? - //throw FlavorError("Undefined flavour requested: " + to_str(id)); - return 0.0; - } + if (!hasFlavor(id2)) return 0.0; // Call the delegated method in the concrete PDF object to calculate the in-range value double xfx = _xfxQ2(id2, x, q2); // Apply positivity forcing at the enabled level @@ -475,8 +470,9 @@ /// Checks whether @a id is a valid parton for this PDF. bool hasFlavor(int id) const { + const int id2 = (id != 0) ? id : 21; //< @note Treat 0 as an alias for 21 const vector<int>& ids = flavors(); - return find(ids.begin(), ids.end(), id) != ids.end(); + return find(ids.begin(), ids.end(), id2) != ids.end(); } /// @brief Order of QCD at which this PDF has been constructed @@ -488,8 +484,7 @@ return info().get_entry_as<int>("OrderQCD"); } /// @deprecated Use orderQCD instead - int qcdOrder() const { - return orderQCD(); } + int qcdOrder() const { return orderQCD(); } //@} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/include/LHAPDF/Version.h new/LHAPDF-6.1.4/include/LHAPDF/Version.h --- old/LHAPDF-6.1.3/include/LHAPDF/Version.h 2014-06-17 15:36:09.000000000 +0200 +++ new/LHAPDF-6.1.4/include/LHAPDF/Version.h 2014-08-15 16:49:46.000000000 +0200 @@ -11,10 +11,10 @@ #include <string> /* "LHAPDF version string" */ -#define LHAPDF_VERSION "6.1.3" +#define LHAPDF_VERSION "6.1.4" /* "LHAPDF version as an int" */ -#define LHAPDF_VERSION_CODE 60103 +#define LHAPDF_VERSION_CODE 60104 /* "Whether PDFLIB Fortran compatibility is available" */ #define LHAPDF_PDFLIB 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/include/Makefile.in new/LHAPDF-6.1.4/include/Makefile.in --- old/LHAPDF-6.1.3/include/Makefile.in 2014-06-17 15:35:58.000000000 +0200 +++ new/LHAPDF-6.1.4/include/Makefile.in 2014-08-15 16:49:15.000000000 +0200 @@ -81,11 +81,11 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/compilerflags.m4 \ - $(top_srcdir)/m4/cython.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/boost_bug.m4 \ + $(top_srcdir)/m4/compilerflags.m4 $(top_srcdir)/m4/cython.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/lhapdf.in new/LHAPDF-6.1.4/lhapdf.in --- old/LHAPDF-6.1.3/lhapdf.in 2014-06-16 16:07:31.000000000 +0200 +++ new/LHAPDF-6.1.4/lhapdf.in 2014-07-10 14:59:35.000000000 +0200 @@ -366,8 +366,9 @@ help='update list of available PDF sets') list_cmd = Subcommand('list', aliases=('ls',), usage='%prog [options] pattern...', - description='List all available PDF sets, or search using a pattern.' + pattern_match_desc, - help='list installed/available PDF sets') + description='List all standard PDF sets, or search using a pattern.' + pattern_match_desc, + help='list PDF sets (by default lists all sets available for download; ' + + 'use --installed or --outdated to explore those installed on the current system)') list_cmd.parser.add_option('--installed', dest="INSTALLED", action='store_true', help='list installed PDF sets') list_cmd.parser.add_option('--outdated', dest="OUTDATED", action='store_true', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/lhapdf.pc new/LHAPDF-6.1.4/lhapdf.pc --- old/LHAPDF-6.1.3/lhapdf.pc 2014-06-17 15:36:09.000000000 +0200 +++ new/LHAPDF-6.1.4/lhapdf.pc 2014-08-15 16:49:45.000000000 +0200 @@ -7,7 +7,7 @@ Name: lhapdf Description: LHAPDF parton density library URL: https://lhapdf.hepforge.org -Version: 6.1.3 +Version: 6.1.4 Libs: -L${exec_prefix}/lib -lLHAPDF Cflags: -I${prefix}/include #-I diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/m4/boost_bug.m4 new/LHAPDF-6.1.4/m4/boost_bug.m4 --- old/LHAPDF-6.1.3/m4/boost_bug.m4 1970-01-01 01:00:00.000000000 +0100 +++ new/LHAPDF-6.1.4/m4/boost_bug.m4 2014-07-09 18:59:56.000000000 +0200 @@ -0,0 +1,42 @@ +AC_DEFUN([BOOST_BUG_IN_FOREACH], +[ +dnl +dnl see http://code-muse.com/2013/08/06/boostforeach-and-compiler-bugs +dnl +m4_pattern_allow([BOOST_FOREACH]) +AC_MSG_CHECKING([if boost rvalue bug is present]) +oldcppflags_boost="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" +AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ + #include <boost/shared_ptr.hpp> + #include <boost/foreach.hpp> + #include <vector> + const std::vector<boost::shared_ptr<int> > f() + { + return std::vector<boost::shared_ptr<int> >(4, + boost::shared_ptr<int>(new int(12))); + } + ]], + [[int sum = 48; + BOOST_FOREACH(const boost::shared_ptr<int> &pi, f()) + { + sum -= *pi; + } + return sum; + ]] + )], + [ + AC_MSG_RESULT([no]) + ], + [ + AC_MSG_RESULT([yes]) + AC_MSG_ERROR([ +*********************************************** +*** Boost is too old for this compiler version. $CXX needs boost > 1_47. +*** See http://code-muse.com/2013/08/06/boostforeach-and-compiler-bugs +***********************************************]) + ] +) +CPPFLAGS="$oldcppflags_boost" +]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/pdfsets.index new/LHAPDF-6.1.4/pdfsets.index --- old/LHAPDF-6.1.3/pdfsets.index 2014-05-27 14:54:26.000000000 +0200 +++ new/LHAPDF-6.1.4/pdfsets.index 2014-08-15 22:06:24.000000000 +0200 @@ -252,3 +252,13 @@ 247000 NNPDF23_lo_as_0130_qed 1 247200 NNPDF23_nlo_as_0119_qed_mc 1 247400 NNPDF23_nnlo_as_0119_qed_mc 1 +250000 NNPDFpol10_100 1 +251000 NNPDFpol11_100 1 +260000 NNPDF30_nlo_as_0118 1 +260200 NNPDF30_nlo_as_0118_nf_3 1 +260400 NNPDF30_nlo_as_0118_nf_4 1 +260600 NNPDF30_nlo_as_0118_nf_6 1 +261000 NNPDF30_nnlo_as_0118 1 +261200 NNPDF30_nnlo_as_0118_nf_3 1 +261400 NNPDF30_nnlo_as_0118_nf_4 1 +261600 NNPDF30_nnlo_as_0118_nf_6 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/src/AlphaS_Ipol.cc new/LHAPDF-6.1.4/src/AlphaS_Ipol.cc --- old/LHAPDF-6.1.3/src/AlphaS_Ipol.cc 2014-06-17 17:50:46.000000000 +0200 +++ new/LHAPDF-6.1.4/src/AlphaS_Ipol.cc 2014-06-24 13:47:05.000000000 +0200 @@ -87,13 +87,10 @@ // Remember to take situations where the first knot also is a // flavor threshold into account double dlogq2, dlogas; - if( _q2s[0] != _q2s[1] ) { - dlogq2 = log10( _q2s[1] / _q2s[0] ); - dlogas = log10( _as[1] / _as[0] ); - } else { - dlogq2 = log10( _q2s[2] / _q2s[0] ); - dlogas = log10( _as[2] / _as[0] ); - } + unsigned int next_point = 1; + while ( _q2s[0] == _q2s[next_point] ) next_point++; + dlogq2 = log10( _q2s[next_point] / _q2s[0] ); + dlogas = log10( _as[next_point] / _as[0] ); const double loggrad = dlogas / dlogq2; return _as[0] * pow( q2/_q2s[0] , loggrad ); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/src/AlphaS_ODE.cc new/LHAPDF-6.1.4/src/AlphaS_ODE.cc --- old/LHAPDF-6.1.3/src/AlphaS_ODE.cc 2014-06-15 23:07:50.000000000 +0200 +++ new/LHAPDF-6.1.4/src/AlphaS_ODE.cc 2014-07-09 18:59:56.000000000 +0200 @@ -120,19 +120,74 @@ // If a vector of knots in q2 has been given, solve for those. if ( !_q2s.empty() ) { + // If for some reason the highest q2 knot is below m_{Z}, + // force a knot there anyway (since we know it, might as well + // use it) + if ( _q2s[_q2s.size()-1] < sqr(_mz) ) _q2s.push_back(sqr(_mz)); + + // Find the index of the knot right below m_{Z} + unsigned int index_of_mz_lower = 0; + + while ( _q2s[index_of_mz_lower + 1] < sqr(_mz) ) { + if ( index_of_mz_lower == _q2s.size() -1 ) break; + index_of_mz_lower++; + } + + vector<pair<int, double> > grid; // for storing in correct order + vector<double> alphas; double low_lim = 0; double last_val = -1; - // BOOST_FOREACH (double q2, _q2s) - for ( size_t ind = 0; ind < _q2s.size(); ++ind) { + bool threshold = false; + + // We do this by starting from m_{Z}, going down to the lowest q2, + // and then jumping back up to m_{Z} to avoid calculating things twice + for ( int ind = index_of_mz_lower; ind >= 0; --ind) { + const double q2 = _q2s[ind]; + // Deal with cases with two identical adjacent points (thresholds) by decreasing step size, + // allowed errors, and accuracy. + if ( ind != 0 ) { + if ( q2 == _q2s[ind-1] ) { + last_val = q2; + threshold = true; + _solve(q2, t, y, allowed_relative/5, h/5, accuracy/5); + grid.push_back(make_pair(ind, y)); + // Define divergence after y > 2. -- we have no accuracy after that any way + if ( y > 2. ) { low_lim = q2; } + continue; + } + } + // If q2 is lower than a value that already diverged, it will also diverge + if ( q2 < low_lim ) { + alphas.push_back( std::numeric_limits<double>::max() ); + continue; + // If last point was the same we don't need to recalculate + } else if ( q2 == last_val ) { + alphas.push_back(y); + continue; + // Else calculate + } else { + last_val = q2; + if ( threshold ) { _solve(q2, t, y, allowed_relative/5, h/5, accuracy/5); threshold = false; } + else { _solve(q2, t, y, allowed_relative, h, accuracy); } + grid.push_back(make_pair(ind, y)); + // Define divergence after y > 2. -- we have no accuracy after that any way + if ( y > 2. ) { low_lim = q2; } + } + } + + t = sqr(_mz); // starting point + y = _alphas_mz; // starting value + + for ( size_t ind = index_of_mz_lower + 1; ind < _q2s.size(); ++ind) { double q2 = _q2s[ind]; - /// Deal with cases with two identical adjacent points (thresholds) by decreasing step size, - /// allowed errors, and accuracy. + // Deal with cases with two identical adjacent points (thresholds) by decreasing step size, + // allowed errors, and accuracy. if ( ind != _q2s.size() - 1 ) { if ( q2 == _q2s[ind+1] ) { last_val = q2; _solve(q2, t, y, allowed_relative/5, h/5, accuracy/5); - alphas.push_back(y); + grid.push_back(make_pair(ind, y)); // Define divergence after y > 2. -- we have no accuracy after that any way if ( y > 2. ) { low_lim = q2; } continue; @@ -141,8 +196,6 @@ // If q2 is lower than a value that already diverged, it will also diverge if ( q2 < low_lim ) { alphas.push_back( std::numeric_limits<double>::max() ); - t = sqr(_mz); - y = _alphas_mz; continue; // If last point was the same we don't need to recalculate } else if ( q2 == last_val ) { @@ -152,12 +205,19 @@ } else { last_val = q2; _solve(q2, t, y, allowed_relative, h, accuracy); - alphas.push_back(y); + grid.push_back(make_pair(ind, y)); // Define divergence after y > 2. -- we have no accuracy after that any way if ( y > 2. ) { low_lim = q2; } } } + std::sort(grid.begin(), grid.end(), + boost::bind(&std::pair<int, double>::first, _1) < boost::bind(&std::pair<int, double>::first, _2)); + + for ( size_t x = 0; x < grid.size(); ++x ) { + alphas.push_back(grid.at(x).second); + } + _ipol.setQ2Values(_q2s); _ipol.setAlphaSValues(alphas); @@ -201,8 +261,6 @@ std::sort(grid.begin(), grid.end(), boost::bind(&std::pair<int, double>::first, _1) < boost::bind(&std::pair<int, double>::first, _2)); - // Need to do this since BOOST_FOREACH can't deal with arguments - // with ,s (and I don't want to clutter with a typedef) for ( size_t x = 0; x < grid.size(); ++x ) { alphas.push_back(grid.at(x).second); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/src/GridPDF.cc new/LHAPDF-6.1.4/src/GridPDF.cc --- old/LHAPDF-6.1.3/src/GridPDF.cc 2014-04-17 14:40:51.000000000 +0200 +++ new/LHAPDF-6.1.4/src/GridPDF.cc 2014-07-15 11:22:13.000000000 +0200 @@ -83,7 +83,7 @@ void GridPDF::_loadData(const std::string& mempath) { - string line; + string line, prevline; int iblock(0), iblockline(0), iline(0); vector<double> xs, q2s; const size_t npid = flavors().size(); @@ -95,6 +95,7 @@ while (getline(file, line)) { // Trim the current line to ensure that there is no effect of leading spaces, etc. trim(line); + prevline = line; // used to test the last line after the while loop fails // If the line is commented out, increment the line number but not the block line iline += 1; @@ -113,8 +114,13 @@ nparser.reset(line); if (iblockline == 1) { // x knots line while (nparser >> token) xs.push_back(token); + if (xs.empty()) + throw ReadError("Empty x knot array on line " + to_str(iline)); } else if (iblockline == 2) { // Q knots line while (nparser >> token) q2s.push_back(token*token); // note Q -> Q2 + if (q2s.empty()) + throw ReadError("Empty Q knot array on line " + to_str(iline)); + //cout << q2s.size() << ", " << q2s.front() << ", " << q2s.back() << endl; } else if (iblockline == 3) { // internal flavor IDs line // DO NOTHING FOR NOW: only handling this for prospective forward compatibility /// @todo Handle internal partial flavour representations @@ -149,11 +155,9 @@ // Escape here if we've just finished reading the 0th (metadata) block if (iblock == 1) continue; - // Die with an assert if the block was of zero size - /// @todo Convert to throwing some exception? Is this ever allowable? - assert(xs.size() > 0); - assert(q2s.size() > 0); - assert(ipid_xfs.size() > 0); + // Throw if the block was of zero size + if (ipid_xfs.empty()) + throw ReadError("Empty xf values array in block " + to_str(iblock) + ", ended on line " + to_str(iline)); // Register data from the previous (>0th) block into the GridPDF data structure KnotArrayNF& arraynf = _knotarrays[q2s.front()]; //< Reference to newly created subgrid object @@ -167,9 +171,11 @@ //cout << _knotarrays.size() << endl; xs.clear(); q2s.clear(); for (size_t ipid = 0; ipid < npid; ++ipid) ipid_xfs[ipid].clear(); - } } + // File reading finished: complain if it was not properly terminated + if (prevline != "---") + throw ReadError("Grid file " + mempath + " is not properly terminated: .dat files MUST end with a --- separator line"); } catch (Exception& e) { throw; } catch (std::exception& e) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/src/LHAGlue.cc new/LHAPDF-6.1.4/src/LHAGlue.cc --- old/LHAPDF-6.1.3/src/LHAGlue.cc 2014-05-28 17:03:54.000000000 +0200 +++ new/LHAPDF-6.1.4/src/LHAGlue.cc 2014-08-15 19:21:33.000000000 +0200 @@ -507,31 +507,64 @@ } + void getxminm_(const int& nset, const int& nmem, double& xmin) { + ACTIVESETS[nset].loadMember(nmem); + xmin = ACTIVESETS[nset].activemember()->info().get_entry_as<double>("XMin"); + } + void getxmin_(const int& nmem, double& xmin) { currentset = 1; - ACTIVESETS[1].loadMember(nmem); - xmin = ACTIVESETS[1].activemember()->info().get_entry_as<double>("XMin"); + getxminm_(currentset, nmem, xmin); + } + + + void getxmaxm_(const int& nset, const int& nmem, double& xmax) { + ACTIVESETS[nset].loadMember(nmem); + xmax = ACTIVESETS[nset].activemember()->info().get_entry_as<double>("XMax"); } void getxmax_(const int& nmem, double& xmax) { currentset = 1; - ACTIVESETS[1].loadMember(nmem); - xmax = ACTIVESETS[1].activemember()->info().get_entry_as<double>("XMax"); + getxmaxm_(currentset, nmem, xmax); + } + + + void getq2minm_(const int& nset, const int& nmem, double& q2min) { + ACTIVESETS[nset].loadMember(nmem); + q2min = LHAPDF::sqr(ACTIVESETS[nset].activemember()->info().get_entry_as<double>("QMin")); } void getq2min_(const int& nmem, double& q2min) { currentset = 1; - ACTIVESETS[1].loadMember(nmem); - q2min = LHAPDF::sqr(ACTIVESETS[1].activemember()->info().get_entry_as<double>("QMin")); + getq2minm_(currentset, nmem, q2min); + } + + + void getq2maxm_(const int& nset, const int& nmem, double& q2max) { + ACTIVESETS[nset].loadMember(nmem); + q2max = LHAPDF::sqr(ACTIVESETS[nset].activemember()->info().get_entry_as<double>("QMax")); } void getq2max_(const int& nmem, double& q2max) { currentset = 1; - ACTIVESETS[1].loadMember(nmem); - q2max = LHAPDF::sqr(ACTIVESETS[1].activemember()->info().get_entry_as<double>("QMax")); + getq2maxm_(currentset, nmem, q2max); } + void getminmaxm_(const int& nset, const int& nmem, double& xmin, double& xmax, double& q2min, double& q2max) { + ACTIVESETS[nset].loadMember(nmem); + xmin = ACTIVESETS[nset].activemember()->info().get_entry_as<double>("XMin"); + xmax = ACTIVESETS[nset].activemember()->info().get_entry_as<double>("XMax"); + q2min = LHAPDF::sqr(ACTIVESETS[nset].activemember()->info().get_entry_as<double>("QMin")); + q2max = LHAPDF::sqr(ACTIVESETS[nset].activemember()->info().get_entry_as<double>("QMax")); + } + + void getminmax_(const int& nmem, double& xmin, double& xmax, double& q2min, double& q2max) { + currentset = 1; + getminmaxm_(currentset, nmem, xmin, xmax, q2min, q2max); + } + + /// Backwards compatibility functions for LHAPDF5 calculations of /// PDF uncertainties and PDF correlations (G. Watt, March 2014). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/src/Makefile.in new/LHAPDF-6.1.4/src/Makefile.in --- old/LHAPDF-6.1.3/src/Makefile.in 2014-06-17 15:35:58.000000000 +0200 +++ new/LHAPDF-6.1.4/src/Makefile.in 2014-08-15 16:49:15.000000000 +0200 @@ -85,11 +85,11 @@ $(top_srcdir)/config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/compilerflags.m4 \ - $(top_srcdir)/m4/cython.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/boost_bug.m4 \ + $(top_srcdir)/m4/compilerflags.m4 $(top_srcdir)/m4/cython.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/src/yamlcpp/Makefile.in new/LHAPDF-6.1.4/src/yamlcpp/Makefile.in --- old/LHAPDF-6.1.3/src/yamlcpp/Makefile.in 2014-06-17 15:35:58.000000000 +0200 +++ new/LHAPDF-6.1.4/src/yamlcpp/Makefile.in 2014-08-15 16:49:16.000000000 +0200 @@ -89,11 +89,11 @@ $(top_srcdir)/config/depcomp $(dist_noinst_HEADERS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/compilerflags.m4 \ - $(top_srcdir)/m4/cython.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/boost_bug.m4 \ + $(top_srcdir)/m4/compilerflags.m4 $(top_srcdir)/m4/cython.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/tests/Makefile.in new/LHAPDF-6.1.4/tests/Makefile.in --- old/LHAPDF-6.1.3/tests/Makefile.in 2014-06-17 16:52:08.000000000 +0200 +++ new/LHAPDF-6.1.4/tests/Makefile.in 2014-08-15 16:49:16.000000000 +0200 @@ -86,11 +86,11 @@ $(top_srcdir)/config/depcomp $(top_srcdir)/config/test-driver ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/compilerflags.m4 \ - $(top_srcdir)/m4/cython.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/boost_bug.m4 \ + $(top_srcdir)/m4/compilerflags.m4 $(top_srcdir)/m4/cython.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/tests/testgrid.cc new/LHAPDF-6.1.4/tests/testgrid.cc --- old/LHAPDF-6.1.3/tests/testgrid.cc 2014-06-16 12:08:01.000000000 +0200 +++ new/LHAPDF-6.1.4/tests/testgrid.cc 2014-07-09 14:02:58.000000000 +0200 @@ -3,11 +3,10 @@ #include "LHAPDF/GridPDF.h" #include <iostream> #include <fstream> -using namespace LHAPDF; using namespace std; -void safeprint(const PDF& pdf, const string& key) { +void safeprint(const LHAPDF::PDF& pdf, const string& key) { if (pdf.info().has_key(key)) cout << key << " = " << pdf.info().get_entry(key) << endl; } @@ -21,40 +20,39 @@ } const string setname = (argc < 2) ? "CT10nlo" : argv[1]; - for (int i = 0; i <= 1; ++i) { - const GridPDF pdf(setname, i); + const LHAPDF::PDF* basepdf = LHAPDF::mkPDF(setname); + const LHAPDF::GridPDF& pdf = * dynamic_cast<const LHAPDF::GridPDF*>(basepdf); - BOOST_FOREACH (const string& p, paths()) cout << p << " : "; cout << endl; + BOOST_FOREACH (const string& p, LHAPDF::paths()) cout << p << " : "; cout << endl; - safeprint(pdf, "Verbosity"); - safeprint(pdf, "PdfDesc"); - safeprint(pdf, "SetDesc"); - cout << "Flavors (str) = " << pdf.info().get_entry("Flavors") << endl; - vector<int> pids = pdf.info().get_entry_as< vector<int> >("Flavors"); - cout << "Flavors (ints) = "; - BOOST_FOREACH (int f, pids) cout << f << " "; cout << endl; - cout << "Flavors (vec<int>) = " << LHAPDF::to_str(pids) << endl; - - cout << "x0, Q0 = " << pdf.subgrid(21, 100).xf(0, 0) << endl; - cout << "x1, Q0 = " << pdf.subgrid(21, 100).xf(1, 0) << endl; - cout << "x0, Q1 = " << pdf.subgrid(21, 100).xf(0, 1) << endl; - cout << "x1, Q1 = " << pdf.subgrid(21, 100).xf(1, 1) << endl; - - cout << pdf.xfxQ(21, 0.7, 10.0) << endl; - cout << pdf.xfxQ2(21, 0.2, 126) << endl; - BOOST_FOREACH (int pid, pdf.flavors()) { - cout << pid << " = " << pdf.xfxQ2(pid, 0.2, 124) << endl; - } + safeprint(pdf, "Verbosity"); + safeprint(pdf, "PdfDesc"); + safeprint(pdf, "SetDesc"); + cout << "Flavors (str) = " << pdf.info().get_entry("Flavors") << endl; + vector<int> pids = pdf.info().get_entry_as< vector<int> >("Flavors"); + cout << "Flavors (ints) = "; + BOOST_FOREACH (int f, pids) cout << f << " "; cout << endl; + cout << "Flavors (vec<int>) = " << LHAPDF::to_str(pids) << endl; + + cout << "x0, Q0 = " << pdf.subgrid(21, 100).xf(0, 0) << endl; + cout << "x1, Q0 = " << pdf.subgrid(21, 100).xf(1, 0) << endl; + cout << "x0, Q1 = " << pdf.subgrid(21, 100).xf(0, 1) << endl; + cout << "x1, Q1 = " << pdf.subgrid(21, 100).xf(1, 1) << endl; + + cout << pdf.xfxQ(21, 0.7, 10.0) << endl; + cout << pdf.xfxQ(21, 0.2, 126) << endl; + BOOST_FOREACH (int pid, pdf.flavors()) { + cout << pid << " = " << pdf.xfxQ(pid, 0.2, 124) << endl; + } - ofstream f("pdf.dat"); - for (double x = 0; x <= 1; x += 0.02) { - for (double log10q2 = 1; log10q2 < 5; log10q2 += 0.05) { - f << x << " " << log10q2 << " " << pdf.xfxQ2(21, x, pow(10, log10q2)) << endl; - } + ofstream f("pdf.dat"); + for (double x = 0; x <= 1; x += 0.02) { + for (double log10q2 = 1; log10q2 < 5; log10q2 += 0.05) { + f << x << " " << log10q2 << " " << pdf.xfxQ2(21, x, pow(10, log10q2)) << endl; } - f.close(); - cout << endl; } + f.close(); + cout << endl; return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/wrappers/Makefile.in new/LHAPDF-6.1.4/wrappers/Makefile.in --- old/LHAPDF-6.1.3/wrappers/Makefile.in 2014-06-17 15:35:58.000000000 +0200 +++ new/LHAPDF-6.1.4/wrappers/Makefile.in 2014-08-15 16:49:16.000000000 +0200 @@ -81,11 +81,11 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/compilerflags.m4 \ - $(top_srcdir)/m4/cython.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/boost_bug.m4 \ + $(top_srcdir)/m4/compilerflags.m4 $(top_srcdir)/m4/cython.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/LHAPDF-6.1.3/wrappers/python/Makefile.in new/LHAPDF-6.1.4/wrappers/python/Makefile.in --- old/LHAPDF-6.1.3/wrappers/python/Makefile.in 2014-06-17 15:35:58.000000000 +0200 +++ new/LHAPDF-6.1.4/wrappers/python/Makefile.in 2014-08-15 16:49:16.000000000 +0200 @@ -82,11 +82,11 @@ $(srcdir)/setup.py.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \ - $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/compilerflags.m4 \ - $(top_srcdir)/m4/cython.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac + $(top_srcdir)/m4/boost.m4 $(top_srcdir)/m4/boost_bug.m4 \ + $(top_srcdir)/m4/compilerflags.m4 $(top_srcdir)/m4/cython.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -369,8 +369,8 @@ maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -@WITH_PYTHON_FALSE@install-exec-local: @WITH_PYTHON_FALSE@uninstall-local: +@WITH_PYTHON_FALSE@install-exec-local: @WITH_PYTHON_FALSE@distclean-local: clean: clean-am -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
