VMC Version 2.2
Loading...
Searching...
No Matches
TMCRNTupleWriter.h
Go to the documentation of this file.
1#ifndef ROOT_TMCRNTupleWriter
2#define ROOT_TMCRNTupleWriter
3
4//------------------------------------------------
5// The Geant4 Virtual Monte Carlo package
6// Copyright (C) 2013 - 2018 Ivana Hrivnacova
7// All rights reserved.
8//
9// For the licensing terms see geant4_vmc/LICENSE.
10// Contact: root-vmc@cern.ch
11//-------------------------------------------------
12
20
21#include <RVersion.h>
22
23#if (ROOT_VERSION_CODE >= ROOT_VERSION(6, 38, 0))
24
25#include "TMCVNtupleWriter.h"
26
27#include <ROOT/REntry.hxx>
28#include <ROOT/RNTuple.hxx>
29#include <ROOT/RNTupleFillStatus.hxx>
30#include <ROOT/RNTupleModel.hxx>
31#include <ROOT/RNTupleWriter.hxx>
32
33using ROOT::RNTupleFillStatus;
34using REntry = ROOT::REntry;
35using RNTupleModel = ROOT::RNTupleModel;
36using RNTupleWriter = ROOT::RNTupleWriter;
37using RNTupleFillContext = ROOT::RNTupleFillContext;
38
40public:
41 TMCRNTupleWriter(const char *storageName, TFile* file, Bool_t workerMode);
42 TMCRNTupleWriter() = delete;
43 virtual ~TMCRNTupleWriter() = default;
44
45 template <typename T>
46 void Register(const char *name, T *&obj);
47
48 // Standard virtual interface for the rest of the lifecycle
49 virtual void CreateRNTuple() override;
50 virtual void Fill() override;
51 virtual void WriteAll() override;
52 virtual void Close() override {}
53
54private:
55 // data members
56 std::vector<std::pair<std::string, void *>> fNameAddress;
57 std::unique_ptr<REntry> fEntry;
58 std::unique_ptr<RNTupleModel> fModel;
59 std::unique_ptr<RNTupleWriter> fWriter;
60 std::shared_ptr<RNTupleFillContext> fFillContext;
61};
62
63template <typename T>
64void TMCRNTupleWriter::Register(const char *brname, T *&obj)
65{
66 if (fModel) {
67 fModel->MakeField<T>(brname);
68 }
69 fNameAddress.push_back(std::make_pair(std::string(brname), obj));
70}
71
72#endif // ROOT_VERSION_CODE
73
74#endif // ROOT_TMCRNTupleWriter
ROOT::REntry REntry
ROOT::RNTupleModel RNTupleModel
ROOT::RNTupleFillContext RNTupleFillContext
ROOT::RNTupleWriter RNTupleWriter
Definition of the TMCVNtupleWriter class.
virtual void Close() override
std::unique_ptr< REntry > fEntry
virtual void WriteAll() override
virtual void Fill() override
TMCRNTupleWriter()=delete
std::shared_ptr< RNTupleFillContext > fFillContext
TMCRNTupleWriter(const char *storageName, TFile *file, Bool_t workerMode)
std::unique_ptr< RNTupleModel > fModel
std::unique_ptr< RNTupleWriter > fWriter
virtual void CreateRNTuple() override
std::vector< std::pair< std::string, void * > > fNameAddress
virtual ~TMCRNTupleWriter()=default
void Register(const char *name, T *&obj)
TMCVNtupleWriter(const char *storageName, TFile *file, Bool_t workerMode)