VMC
Version 2.2
Toggle main menu visibility
Loading...
Searching...
No Matches
source
src
TMCRNTupleParallelWriter.cxx
Go to the documentation of this file.
1
//------------------------------------------------
2
// The Geant4 Virtual Monte Carlo package
3
// Copyright (C) 2013 - 2018 Ivana Hrivnacova
4
// All rights reserved.
5
//
6
// For the licensing terms see geant4_vmc/LICENSE.
7
// Contact: root-vmc@cern.ch
8
//-------------------------------------------------
9
17
18
#include "
TMCRNTupleParallelWriter.h
"
19
20
#include <TFile.h>
21
22
#if (ROOT_VERSION_CODE >= ROOT_VERSION(6, 38, 0))
23
24
std::shared_ptr<RNTParaWriter>
TMCRNTupleParallelWriter::fgParaWriter
=
nullptr
;
25
26
//
27
// ctors, dtor
28
//
29
30
//_____________________________________________________________________________
31
TMCRNTupleParallelWriter::TMCRNTupleParallelWriter
(
const
char
*storageName, TFile* file, Bool_t workerMode)
32
:
TMCVNtupleWriter
(storageName, file, workerMode)
33
{
34
if
(!workerMode) {
35
fModel
= RNTupleModel::Create();
36
}
37
}
38
39
//
40
// public methods
41
//
42
43
//_____________________________________________________________________________
44
void
TMCRNTupleParallelWriter::CreateRNTuple
()
45
{
46
if
(!
fWorkerMode
) {
47
if
(!
fFile
) {
48
Error(
"TMCRNTupleParallelWriter"
,
"File not found, cannot create rntuple."
);
49
return
;
50
}
51
fgParaWriter
= std::shared_ptr<RNTParaWriter>(
52
RNTupleParallelWriter::Append(std::move(
fModel
),
fStorageName
.c_str(), *
fFile
).release());
53
}
else
{
54
fFillContext
=
fgParaWriter
->CreateFillContext();
55
fEntry
=
fFillContext
->CreateEntry();
56
for
(
auto
nameAddress :
fNameAddress
) {
57
fEntry
->BindRawPtr(nameAddress.first, nameAddress.second);
58
}
59
}
60
}
61
62
//_____________________________________________________________________________
63
void
TMCRNTupleParallelWriter::Fill
()
64
{
66
fFillContext
->Fill(*
fEntry
);
67
}
68
69
//_____________________________________________________________________________
70
void
TMCRNTupleParallelWriter::WriteAll
()
71
{
73
fEntry
.reset();
74
fFillContext
.reset();
75
}
76
77
//_____________________________________________________________________________
78
void
TMCRNTupleParallelWriter::Close
()
79
{
80
fgParaWriter
->CommitDataset();
81
}
82
83
#endif
TMCRNTupleParallelWriter.h
Definition of the TMCRNTupleParallelWriter class.
TMCRNTupleParallelWriter::fFillContext
std::shared_ptr< RNTupleFillContext > fFillContext
Definition
TMCRNTupleParallelWriter.h:65
TMCRNTupleParallelWriter::fEntry
std::unique_ptr< REntry > fEntry
Definition
TMCRNTupleParallelWriter.h:63
TMCRNTupleParallelWriter::TMCRNTupleParallelWriter
TMCRNTupleParallelWriter()=delete
TMCRNTupleParallelWriter::fgParaWriter
static std::shared_ptr< RNTParaWriter > fgParaWriter
Definition
TMCRNTupleParallelWriter.h:58
TMCRNTupleParallelWriter::fNameAddress
std::vector< std::pair< std::string, void * > > fNameAddress
Definition
TMCRNTupleParallelWriter.h:62
TMCRNTupleParallelWriter::Close
virtual void Close() override
Definition
TMCRNTupleParallelWriter.cxx:78
TMCRNTupleParallelWriter::CreateRNTuple
virtual void CreateRNTuple() override
Definition
TMCRNTupleParallelWriter.cxx:44
TMCRNTupleParallelWriter::fModel
std::unique_ptr< RNTupleModel > fModel
Definition
TMCRNTupleParallelWriter.h:64
TMCRNTupleParallelWriter::Fill
virtual void Fill() override
Definition
TMCRNTupleParallelWriter.cxx:63
TMCRNTupleParallelWriter::WriteAll
virtual void WriteAll() override
Definition
TMCRNTupleParallelWriter.cxx:70
TMCVNtupleWriter::fWorkerMode
Bool_t fWorkerMode
Definition
TMCVNtupleWriter.h:40
TMCVNtupleWriter::fFile
TFile * fFile
Definition
TMCVNtupleWriter.h:38
TMCVNtupleWriter::fStorageName
std::string fStorageName
Definition
TMCVNtupleWriter.h:39
TMCVNtupleWriter::TMCVNtupleWriter
TMCVNtupleWriter(const char *storageName, TFile *file, Bool_t workerMode)
Definition
TMCVNtupleWriter.h:25
Generated on
for VMC by
1.17.0