Fix the cloning of the OneDimMultiFunctionAdapter. The X vector was not copied.
See http://root.cern.ch/phpBB3/viewtopic.php?f=15&t=16824
Add missing protection in OptimizeBasket.

Some of the branch (because they have been disabled for
example) may not have any entry.  So we now protect
against this case (actually seen in stress).

This fixes ROOT-5410
fix memory leak in HistFactory::Sample
Apply fix suggested here: http://root.cern.ch/phpBB3/viewtopic.php?f=14&t=16930
Add basic implementation for GetColumns. Fixes ROOT-5332.

Patch by Oliver Freyermuth.
Fix https://sft.its.cern.ch/jira/browse/ROOT-5053
Fix https://sft.its.cern.ch/jira/browse/ROOT-5413
use forward declaration instead of include
Added ${PYTHIA6_DIR} from command line as a location for Pythia6
Fix documentation about use of Minos in RooAbsPdf::fitTo,   see #ROOT-5423
follow usual unix return code convention: 0 return from main means all tests good, return value > 0 counts number of failed tests (helpful as part of a git bisect script)

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>
deprecate RooComplex class, adapt rest of RooFit code base to use std::complex instead, clean up RooMath interface while I'm at it

The old RooFit functions all had "error function" somewhere in their
name, which was incorrect. They all calculated w(z)=exp(-z^2)*erfc(-i*z).
The new functions all have different names. If you used to call one of
the old functions in your code, the new functions you want to call are
either faddeeva_fast (which correspond to the fast interpolated version
in the old RooFit code), or faddeeva. The new code also implements the
(complementary) error function erf(z) (erfc(z)) for complex arguments z.

Since RooComplex is never persisted anywhere in RooFit, the class can be
dropped in a future release. New code should use std::complex and the
faddeeva, faddeeva_fast, erf, erf_fast, erfc and erfc_fast routines in
RooMath directly. The old routines in RooMath and the RooComplex
constructor print deprecation warnings.

The deprecation warnings for RooComplex and old style RooMath calls are
designed for maximum annoyance (every use of a deprecated function
prints a warning to stdout, so users change their code), but there is an
upper bound to cause minimum offence (after 4096 warning messages, the
printout of warning messages stops, so log files will not fill up disks,
and jobs can still be run).

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>
Use continued fraction approximation in Faddeeva function for large |z|, as it's slightly faster, and just as accurate in that regime

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>
patch from Thomas Bird <thomas.bird@cern.ch> and Rob Lambert <Rob.Lambert.cern.ch>: allows to project a region and produce an asymmetry plot of it

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>
patch from Thomas Bird <thomas.bird@cern.ch>, Rob Lambert <Rob.Lambert@cern.ch>, with some slight robustness improvements and better error checking by Manuel Schiller <manuel.schiller@nikhef.nl>: implement analytical integrals for Chebychev polynomials

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>
patch by Thomas Bird <thomas.bird@cern.ch> and Rob Lambert <Rob.Lambert@cern.ch>: have "master process" delegate all compute jobs to children in multi-CPU mode (advantage is that the master process can in theory keep children busy without blocking on some long-running computation itself)

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>
some code cleanups, mostly to guard against future typos (if (0 == i) vs if (i = 0)) and to have the nice version of for loops (variable declared only inside for loop, ++i vs i++)

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>
patch modified from solution provided by Sascha Stahl <sascha.stahl@cern.ch>, fixes JIRA ROOT-5229: fix RooFit's treatment of weighted datasets in conjunction with simultaneous PDFs

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>
new class BidirMMapPipe, a bidirectional communications channel between a parent process and its child, which buffers communications intenally, and tries to minimise the time spent in the OS (except when you want to block there)

This class offers an interface very similar to the familiar read/write
syscalls, has a flush operation to flush internal buffers to the other
end, and a poll method which allows a parent process with several open
pipes to block until an event occurs on any of those pipes (events would
be pipe becomes readable, writable, is closed by the other end),
allowing for fairly efficient I/O multiplexing on those pipes.

In addition to that, it overloads the familiar operator<< and operator>>
methods to allow binary I/O over the channel for the basic data types
(char, short, int, long, long long and their unsigned counterparts,
double and float), C-style zero-terminated strings and std::string, and
raw pointers (which are sent as addresses).

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>
Have EvalError contain strings, not fixed sized arrays (which are a waste of space)

This patch is in preparation for the RooRealMPFE rewrite using
BidirMMapPipe. It will simplify issues with fixed size buffers in the
IPC there considerably. This has no impact on the persisted format of
classes since EvalErrors are not persisted as far as I can tell.

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>