The Gaudi Framework  master (37c0b60a)
RootCompressionSettings.cpp
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2024 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 // STD
12 #include <stdexcept>
13 
14 // local
16 
17 // ROOT
18 #include <Compression.h>
19 
20 //-----------------------------------------------------------------------------
21 // Implementation file for class : RootCompressionSettings
22 //
23 // 2013-10-24 : Chris Jones
24 //-----------------------------------------------------------------------------
25 
26 //=============================================================================
27 // Standard constructor, initializes variables
28 //=============================================================================
30  : m_level( ROOT::CompressionSettings( ROOT::RCompressionSetting::EAlgorithm::kZLIB, 1 ) ) {
31  const std::string::size_type idx = settings.find( ':' );
32  if ( idx != std::string::npos ) {
33  // Get compression algorithm type
34  const std::string alg = settings.substr( 0, idx );
35  ROOT::RCompressionSetting::EAlgorithm::EValues alg_code = ROOT::RCompressionSetting::EAlgorithm::kUseGlobal;
36  if ( alg == "ZLIB" ) {
37  alg_code = ROOT::RCompressionSetting::EAlgorithm::kZLIB;
38  } else if ( alg == "LZMA" ) {
39  alg_code = ROOT::RCompressionSetting::EAlgorithm::kLZMA;
40  } else if ( alg == "LZ4" ) {
41  alg_code = ROOT::RCompressionSetting::EAlgorithm::kLZ4;
42 #if ROOT_VERSION_CODE >= ROOT_VERSION( 6, 20, 0 )
43  } else if ( alg == "ZSTD" ) {
44  alg_code = ROOT::RCompressionSetting::EAlgorithm::kZSTD;
45 #endif
46  } else {
47  throw std::runtime_error( "ERROR: Unknown ROOT compression algorithm:" + alg );
48  }
49 
50  // get compression level
51  const std::string slev = settings.substr( idx + 1 );
52  const int ilev = std::stoi( slev );
53 
54  // set the level
55  m_level = ROOT::CompressionSettings( alg_code, ilev );
56  }
57 }
58 
59 //=============================================================================
std::string
STL class.
std::string::find
T find(T... args)
RootHistCnv::RootCompressionSettings::m_level
int m_level
The cached ROOT compression level int.
Definition: RootCompressionSettings.h:31
RootHistCnv::RootCompressionSettings::RootCompressionSettings
RootCompressionSettings(const std::string &settings)
Standard constructor.
Definition: RootCompressionSettings.cpp:29
ManySmallAlgs.alg
alg
Definition: ManySmallAlgs.py:81
std::stoi
T stoi(T... args)
RootCompressionSettings.h
ROOT
Definition: IMagneticFieldSvc.h:19
std::runtime_error
STL class.
std::string::substr
T substr(T... args)