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 }
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