Skip to content
Snippets Groups Projects
  1. Jun 15, 2011
  2. Jun 14, 2011
  3. Jun 13, 2011
    • Philippe Canal's avatar
      65ffe7db
    • Philippe Canal's avatar
      From David Dagenhart: · 02d8d542
      Philippe Canal authored
      Implement an option to allow ROOT to use the LZMA compression
      algorithm to compress data instead of the ZLIB compression algorithm.
      LZMA compression typically results in smaller files, but takes more
      CPU time to compress data. To use the new feature, the external XZ
      package must be installed when ROOT is configured and built:
      
      Download 5.0.3 from here http://tukaani.org/xz/
      and make sure to configure with fPIC:
         ./configure CFLAGS='-fPIC'
      
      Then the client C++ code must call routines to explicitly request LZMA
      compression.
      
      ZLIB compression is still the default.
      
      Setting the Compression Level and Algorithm:
      
      There are three equivalent ways to set the compression level and 
      algorithm. For example, to set the compression to the LZMA algorithm
      and compression level 5.
      
      1. TFile f(filename, option, title);
         f.SetCompressionSettings(ROOT::CompressionSettings(ROOT::kLZMA, 5));
      
      OR
      
      2. TFile f(filename, option, title, ROOT::CompressionSettings(ROOT::kLZMA, 5));
      
      OR
      
      3. TFile f(filename, option, title);
         f.SetCompressionAlgorithm(ROOT::kLZMA);
         f.SetCompressionLevel(5);
      
      These methods work for TFile, TBranch, TMessage, TSocket, and TBufferXML. 
      The compression algorithm and level settings only affect compression of
      data after they have been set. TFile passes its settings to its branches 
      only at the time the branches are created. This can be overidden by 
      explicitly setting the level and algorithm for the branch. These classes 
      also have the following methods to access the algorithm and level for 
      compression.
      
         Int_t GetCompressionAlgorithm() const;
         Int_t GetCompressionLevel() const;
         Int_t GetCompressionSettings() const;
      
      If the compression level is set to 0, then no compression will be
      done. All of the currently supported algorithms allow the level to be
      set to any value from 1 to 9. The higher the level, the larger the
      compression factors will be (smaller compressed data size). The
      tradeoff is that for higher levels more CPU time is used for
      compression and possibly more memory. The ZLIB algorithm takes less
      CPU time during compression than the LZMA algorithm, but the LZMA
      algorithm usually delivers higher compression factors.
      
      The header file core/zip/inc/Compression.h declares the function
      "CompressionSettings" and the enumeration for the algorithms.
      Currently the following selections can be made for the algorithm:
      kZLIB (1), kLZMA (2), kOldCompressionAlgo (3), and kUseGlobalSetting
      (0). The last option refers to an older interface used to control the
      algorithm that is maintained for backward compatibility. The following
      function is defined in core/zip/inc/Bits.h and it set the global
      variable.
      
         R__SetZipMode(int algorithm)
      
      If the algorithm is set to kUseGlobalSetting (0), the global variable
      controls the algorithm for compression operations.  This is the
      default and the default value for the global variable is kZLIB.
      
      Note that the LZMA algorithm will only be available if the LZMA
      libraries from the XZ package were available when the ROOT executable
      being used was configured and built. If you are building ROOT and want
      LZMA then you must do something similar to the following if XZ is not
      already installed on your system.
      
        Download XZ version 5.0.3 from http://tukaani.org/xz/
        unwind the tarball
        cd xz-5.0.3
        ./configure CFLAGS='-fPIC'
        make
      
      ROOT was tested with version 5.0.3 of XZ.  It might work with earlier
      versions and will probably work with later versions of XZ.
      
      Then either use "make install" to put the library and headers into
      /usr/local/* so the scripts building ROOT can find them or use
      arguments to the ROOT configure script to point to the proper
      directories containing the XZ library and headers. These are the
      library and the included header (lzma.h includes other headers in the
      lzma subdirectory).
      
        src/liblzma/.libs/liblzma.a
        src/liblzma/api/lzma.h
      
      WARNING: Data compressed with the LZMA algorithm cannot be read by
      ROOT executables that were not built with LZMA support.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@39696 27541ba8-7e3a-0410-8455-c3a389f83636
      02d8d542
    • Philippe Canal's avatar
      Update TBranchElement::Unroll to no longer split a base class · 6e7fcf7e
      Philippe Canal authored
      that can not be split (i.e. respect the information returned
      by TStreamerElement::CannotSplit (and thus TClass::CanSplit).
      
      Add the ability to explicitly forbid (or allow) the splitting of a class
      (TClass::SetSplit) so that user can inforce the use of a
      custom streamer in all possible split cases.
      
      This disabling is currently _not_ done automatically for
      backward compatibility reasons and because
        a) Without TClass::SetCanSplit there was no way to 
           force the splitting (short of setting the split level lower)
        b) Some classes still requires a custom streamer solely to
           read older data files (for example for file written before
           the advent of StreamerInfo) and are such not necessary to 
           be used when writting (and schema evolution rules can not
           yet be used in this case).
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@39694 27541ba8-7e3a-0410-8455-c3a389f83636
      6e7fcf7e
    • Philippe Canal's avatar
      Fix support for call to MakeProject like: · 329884da
      Philippe Canal authored
          gFile->MakeProject("./classCode/","*","RECREATE++")
      
      Better error handling if the source file failed to be created
      or if the project directory can not be created.
      
      This fixes http://savannah.cern.ch/bugs/?83188
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@39692 27541ba8-7e3a-0410-8455-c3a389f83636
      329884da
  4. Jun 12, 2011
    • Fons Rademakers's avatar
      From Pere: · a2efbd06
      Fons Rademakers authored
      - Added fitsio component
      - Added experimentally two new options 'builtin_gsl' and 'builtin_cfitsio'
        to build these packages within ROOT when needed by downloading the source
        code from the web.
      - Fixed a problem with sometimes incompatible versions of the python
        interpreter and libraries.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@39685 27541ba8-7e3a-0410-8455-c3a389f83636
      a2efbd06
  5. Jun 11, 2011
  6. Jun 10, 2011
Loading