Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:28:24

0001 #ifndef RecoTracker_MkFitCore_standalone_RntDumper_RntDumper_h
0002 #define RecoTracker_MkFitCore_standalone_RntDumper_RntDumper_h
0003 
0004 #include <memory>
0005 #include <string>
0006 #include <unordered_map>
0007 #include <vector>
0008 
0009 class TFile;
0010 class TTree;
0011 
0012 namespace ROOT::Experimental {
0013   class RNTupleModel;
0014   class RNTupleWriter;
0015 }  // namespace ROOT::Experimental
0016 
0017 class RntDumper {
0018   using RNTupleModel = ROOT::Experimental::RNTupleModel;
0019   using RNTupleWriter = ROOT::Experimental::RNTupleWriter;
0020 
0021 public:
0022   std::unique_ptr<RNTupleModel> CreateModel();
0023   RNTupleWriter *WritifyModel(std::unique_ptr<RNTupleModel> &model, std::string_view mname);
0024 
0025   void RegisterTree(TTree *t);
0026 
0027   static RntDumper *Create(const char *fname);
0028   static void FinalizeAll();
0029 
0030   TFile *file() { return m_file.get(); }
0031 
0032 private:
0033   explicit RntDumper(const char *fname);
0034   ~RntDumper();
0035 
0036   std::unique_ptr<TFile> m_file;
0037   std::unordered_map<std::string, std::unique_ptr<RNTupleWriter>> m_writers;
0038   std::vector<TTree *> m_trees;
0039 
0040   static std::vector<RntDumper *> s_instances;
0041 };
0042 
0043 #endif