File indexing completed on 2024-04-06 12:23:40
0001 #ifndef PhysicsTools_NanoAOD_RNTupleFieldPtr_h
0002 #define PhysicsTools_NanoAOD_RNTupleFieldPtr_h
0003
0004 #include <ROOT/RNTupleModel.hxx>
0005 using ROOT::Experimental::RNTupleModel;
0006
0007 template <typename T>
0008 class RNTupleFieldPtr {
0009 public:
0010 RNTupleFieldPtr() = default;
0011 explicit RNTupleFieldPtr(const std::string& name, const std::string& desc, RNTupleModel& model) : m_name(name) {
0012 m_field = model.MakeField<T>({m_name, desc});
0013 }
0014 void fill(const T& value) { *m_field = value; }
0015 const std::string& getFieldName() const { return m_name; }
0016
0017 private:
0018 std::string m_name;
0019 std::shared_ptr<T> m_field;
0020 };
0021
0022 #endif