o RooNLLVar

    - In binned likelihood case introduce explicit handling of N=0,mu=0 case from
      RooPoisson::getLogVal(). Also emit logEvalError() for all cases N=0 && mu>0
 o RooAbsPdf

   - In chi2FitTo() orward Extended() command to createChi2()
  o RooNLLVar

    - For binned likelihoods, request calculation of all cached pdf value (including those corresponding to zero-weight events)

  o RooAbsOptTestStatistic

    - In constant-term optimization request cached calculation of pdf values corresponding to zero-weight events
      whenever a binned likelihood is encountered

  o RooAbsDataStore, RooAbsData

    - Add argument to recalculateCache() and cacheArgs() to request request calculation of all cached pdf value
    (including those corresponding to zero-weight events)

  o RooCompositeDataStore, RooTreeDataStore

    - Follow interface change in RooAbsDataStore

  o RooChi2Var, RooDataWeightedAverage, RooXYChi2Var

    - Follow interface change in RooAbsData::cacheArgs()

  o RooVectorDataStore

    - Implement calculating of pdf cache for zero-weight events, selected by new interface in RooAbsDataStore
  o RooBanner

    - Increment version tag to 3.59
  o RooGlobalFunc

    - Extend named argument RenameConflictNodes with optional Boolean argument to rename existing objects
      rather than to-be-imported objects

  o RooCustomizer

    - Modify behavior of build() such that when masterState is null, or when the name of the customizer
      is an empty string that no suffix is added to the customized branch nodes

    - In the workspace factory interface, modify behavior such that in case the new instance name and
      the original top-level node name are identical that the customizer is run in the new null-name
      mode. This customized tree expression with modified branch objects is subsequently imported
      into the workspace with the RenameConflictNodes("orig",1) to rename the original branch names
      in the workspace. In this mode, also clear the factory_tag attribute of any customized object
      as to not trigger any node recycling based on a false equivalency condition on the factory tag

  o RooWorkspace

    - Support new option RenameConflictNodes(suffix,Bool) in import() so that when Bool=true, the
      existing nodes in the WS are renamed with a '_suffix' suffix instead of the to-be imported nodes.
      In case nodes with <nodename>_<suffix> already exist, rename to <nodename>_<suffix>_<n>
      where <n> is the lowest integer value >=1 that results in a unique name
Import from 5.34 patches:

 o RooStats::HistFactory::FlexibleInterpVar

    - Add constructor form that can be used by the workspace factory (taking a RooArgList instead of a vector<double>)

  o RooAbsPdf

    - Move plotOnCompSelect() to base class RooAbsReal so that it can be used there in createHistogram()

  o RooGlobalFunc

    - Add named argument IntrinsicBinning() for the RooAbsReal::createHistogram() interface, add named argument
      NoRecursion() for the RooWorkspace::import() interface

  o RooAbsReal

    - Move plotOnCompSelect() to base class RooAbsReal so that it can be used there in createHistogram()

    - Augment functionality of createHistogram() to support the following named arguments
      * IntrinsicBinning() - apply binning to output TH1 that is defined by pdf's definition of bin boundaries
                             This is only useful for binned pdfs. The default is true for models that provide
                             an intrinsic binning definition
      * Component() - select components of composite pdf (RooAddPdf,RooRealSumPdf) for output. Syntax and
                      functionality is equivalent to that of RooAbsReal::plotOn()
      * Extended() - report event counts instead of probabilities. Default is true for extended pdfs

  o RooCustomizer

    - Change strategy to commit modified object back into workspace: instead of recommitting head node
      and let RooWorkspace::import() figure out which nodes are identical to the original (and can be recycled)
      commit only the set of nodes that RooCustomizer actually created with the NoRecursion() option.
      This can speed up factory EDIT() operations by more than order of magnitude

  o RooRealSumPdf

    - Fix bug in analyticalIntegral() concerning the projection of components

  o RooWorkspace

    - Add NoRecursion() option to import() which will only import the stated node(s) and not their implicit
      dependents.

    - When using RenameVariable() upon import, attach original names as string attribute to renamed variables,
      following the usual protocal, so that RooFormula can support reference-by-name formulas even when objects
      have changed name.
  o RooFormula

    - Add code from Stefan to link objects also to their original name,
      in case their name was changed after the formula was constructed
import from 5.34 patches:

 o RooKeysPdf

   - Add constructor that allows to specify the pdf observable separately from the dataset observable,
     so that the former can e.g. be a function
import from 5.34: o RooTrace

    - Minor cosmetics in object count reporting

  o tutorials/roofit/rf507_debugtools.C

    - Switch to new reporting function
Import from 5.34 patch (but remove TRACE macro)

o RooRealSumPdf

    - Modify BinnedLikelihood optimization to take only effect after it is
      activated by RooNLLVar

  o RooNLLVar

    - Activate BinnedLikelihood for the purpose of disabling normalization only
      when it is correspondingly used as a BinnedLikelihood in RooNLLVar

  o RooCustomizer, RooWorkspace

    - Don't override 'origName' string label, if it is already set

  o RooFormulaVar

    - Always forward a redirectServers() to changeDependents inside the formula,
      even if it wasn't created yet (in which case it is done here)

  o RooFormula

    - Process changes in variable name and remap to original names encoded
      in string attributes

  o RooTrace

    - Reorganize code to protect agains static destruction order fiasco
  o RooAbsArg

    - Defer reading of RooRefArray::_proxyList to phase 2 of workspace I/O
      to avoid potential read-order dependencies

  o RooBinnedGenContext

    - Eliminate phase-2 correction for Asimov datasets as these may
      duplicate correction factors
  o RooAddModel

    - Bug fix: first server is not always convolution variable (J. van Leerdam)

    - Bug fix: attributes of original resolution model not copied convoluted model,
      breaking parameterized integrals (J. van Leerdam)

  o RooFactoryWSTool

    - Increase string buffer size from 10k to 64k

  o FlexibleInterpVar, PiecewiseInterpolation, RooAbsCollection, RooAbsOptTestStatistic,
    RooAddPdf, RooArgList, RooArgSet, RooCategory, RooCompositeDataStore, RooDataHist,
    RooDataSet, RooFormulaVar, RooGaussian, RooHistFunc, RooKeysPdf, RooPoisson, RooProdPdf
    RooProduct, RooRealIntegral, RooRealVar, RooVectorDataStore

    - Migrate to new-style memory tracing
rewrite RooNormSetCache in STL, retire RooSetPair

this replaces the custom mapping machinery with a STL based solution
which is about as fast and needs about the same amount of memory

Signed-off-by: Wouter Verkerke <verkerke@nikhef.nl>
RooKeysPdf: improve speedup patch for older compiler versions

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

    - Add static_casts<> to avoid compiler warnings

  o RooSetPair

    - Disable depracation warnings as it is still used in RooHashTable

  o RooNormSetCache

    - Add explicit cast of null initialization value of std::pair<>
      of pointers to silence MSVC compiler warning
 o RooAbsOptDataStore

   - Make function hasFilledCache() virtual to allow for non-broken
     actual implementation in derived classes

   - Add new virtual method forceCacheUpdate() to request wholesale updating
     of all caches whenever recalculateCache() is called the next time

 o RooCompositeDataStore

   - Implement forwarding version of hasFilledCache()

   - Implement forwarding version of forceCacheUpdate()

 o RooVectorDataStore

   - Implement working version of hasFilledCache()

   - Add method forceCacheUpdate() that will trigger a wholesale
     update of all cached functions, including caches for functions
     that only depend on constant parameters

 o RooAbsOptTestStatistics

   - Chanche implementation of ValueChange operation in constOptimizeTestStatistic():
     instead of cycling (deactivate + activate), simply request a forced wholesale cache
     update for the next evaluation of the likelihood using RooVectorDataStore::forceCacheUpdate()
  o RooHistFunc

    - Add constructor that allow to specify separate objects for the histogram and function
      observables. This will allow the input of a RooHistFunc to be transformed.

    - Add data member _histObsList and increment schema version to v2

    - Adjust evaluate() and analyticalIntegral() to transfer contents from pdf to histo
      observables prior to evaluation

    - Implement ioStreamerPass2() to fill _histoObsList with a clone of _depList in case
      it was empty to implement correct schema evolution

  o RooAbsArg

    - Add new virtual methods canNodeBeCached() and setCacheAndTrackHints() to allow operator
      classes to steer level-2 likelihood optimization

    - Modify findConstantNodes() to skip marking any node as constant if the "NeverConstant"
      flag is set

  o RooObjCacheManager

    - Add method setClearOnRedirect() to allow modifying the 'clear on redirect' flag
      after construction

    - Bug fix in findConstantNodes() forwarder, keep in mind that cache can be sterile

  o RooProdPdf, RooProduct, RooRealSumPdf, RooAddPdf

    - Implement canNodeBeCached() to return NotAdvised and implement setCacheAndTrackHints()
      to contain the code that was so far in RooAbsObsTestStatistic (that labels all
      components as TrackAndCache)

  o RooAbsOptTestStatitic

    - Delegate level-2 likelihood optimization decisions to pdf components via the
      new interface canNodeBeCache() and setCacheAndTrackHints() and remove hard-coded
      choices here
  o RooAbsOptTestStatistics

    - Remove spurious inclusion of a header not in the root distribution
  Increment RooFit version number to 3.60
  o RooHistFunc

    - Fix bug in importWorkspaceHook() that would accidentally recycle incongruent
      embedded datasets with different observable names