Back to home page

Project CMSSW displayed by LXR

 
 

    


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