Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-11-30 10:25:50

0001 /// \file ROOT/RNTupleWriteOptionsDaos.hxx
0002 /// \ingroup NTuple
0003 /// \author Jakob Blomer <jblomer@cern.ch>
0004 /// \date 2024-02-22
0005 /// \warning This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback
0006 /// is welcome!
0007 
0008 /*************************************************************************
0009  * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers.               *
0010  * All rights reserved.                                                  *
0011  *                                                                       *
0012  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0013  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0014  *************************************************************************/
0015 
0016 #ifndef ROOT_RNTupleWriteOptionsDaos
0017 #define ROOT_RNTupleWriteOptionsDaos
0018 
0019 #include <ROOT/RNTupleWriteOptions.hxx>
0020 
0021 #include <cstdint>
0022 #include <memory>
0023 #include <string>
0024 #include <utility>
0025 
0026 namespace ROOT {
0027 namespace Experimental {
0028 
0029 // clang-format off
0030 /**
0031 \class ROOT::Experimental::RNTupleWriteOptionsDaos
0032 \ingroup NTuple
0033 \brief DAOS-specific user-tunable settings for storing ntuples
0034 */
0035 // clang-format on
0036 class RNTupleWriteOptionsDaos : public ROOT::RNTupleWriteOptions {
0037    std::string fObjectClass{"SX"};
0038    /// The maximum cage size is set to the equivalent of 16 uncompressed pages - 16MiB by default.
0039    /// A `fMaxCageSize` of 0 disables the caging mechanism.
0040    uint32_t fMaxCageSize = 16 * RNTupleWriteOptions::fMaxUnzippedPageSize;
0041 
0042 public:
0043    ~RNTupleWriteOptionsDaos() override = default;
0044    std::unique_ptr<RNTupleWriteOptions> Clone() const override
0045    {
0046       return std::make_unique<RNTupleWriteOptionsDaos>(*this);
0047    }
0048 
0049    const std::string &GetObjectClass() const { return fObjectClass; }
0050    /// Set the object class used to generate OIDs that relate to user data. Any
0051    /// `OC_xxx` constant defined in `daos_obj_class.h` may be used here without
0052    /// the OC_ prefix.
0053    void SetObjectClass(const std::string &val) { fObjectClass = val; }
0054 
0055    uint32_t GetMaxCageSize() const { return fMaxCageSize; }
0056    /// Set the upper bound for page concatenation into cages, in bytes. It is assumed
0057    /// that cage size will be no smaller than the approximate uncompressed page size.
0058    /// To disable page concatenation, set this value to 0.
0059    void SetMaxCageSize(uint32_t cageSz) { fMaxCageSize = cageSz; }
0060 };
0061 
0062 } // namespace Experimental
0063 } // namespace ROOT
0064 
0065 #endif // ROOT_RNTupleWriteOptionsDaos