RootCompressionSettings.cpp
Go to the documentation of this file.
1 
2 // STD
3 #include <stdexcept>
4 
5 // local
7 
8 // ROOT
9 #include "Compression.h"
10 
11 //-----------------------------------------------------------------------------
12 // Implementation file for class : RootCompressionSettings
13 //
14 // 2013-10-24 : Chris Jones
15 //-----------------------------------------------------------------------------
16 
17 //=============================================================================
18 // Standard constructor, initializes variables
19 //=============================================================================
21 RootCompressionSettings( const std::string & settings )
22  : m_compSettings ( settings ),
23  m_level ( ROOT::CompressionSettings(ROOT::kZLIB,1) )
24 {
25 
26  const std::string::size_type idx = m_compSettings.find(':');
27  if ( idx != std::string::npos )
28  {
29  // Get compression algorithm type
30  const std::string alg = m_compSettings.substr(0,idx);
31  ROOT::ECompressionAlgorithm alg_code = ROOT::kUseGlobalSetting;
32  if ( alg == "ZLIB" ) { alg_code = ROOT::kZLIB; }
33  else if ( alg == "LZMA" ) { alg_code = ROOT::kLZMA; }
34  else
35  {
36  throw std::runtime_error("ERROR: Unknown ROOT compression algorithm:"+alg);
37  }
38 
39  // get compression level
40  const std::string slev = m_compSettings.substr(idx+1);
41  const int ilev = std::stoi(slev);
42 
43  // set the level
44  m_level = ROOT::CompressionSettings(alg_code,ilev);
45  }
46 
47 }
48 
49 //=============================================================================
std::string m_compSettings
The compression settings string.
RootCompressionSettings(const std::string &settings)
Standard constructor.
int m_level
The cached ROOT compression level int.