The Gaudi Framework  master (82fdf313)
Loading...
Searching...
No Matches
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//=============================================================================
RootCompressionSettings(const std::string &settings)
Standard constructor.
int m_level
The cached ROOT compression level int.