19#if !defined(GPUCA_NO_ROOT) && !defined(GPUCA_GPUCODE)
33#if !defined(GPUCA_NO_ROOT) && !defined(GPUCA_GPUCODE)
37struct internal_Branch {
38 template <
typename... Args>
39 static void Branch(
S* p, Args... args)
44struct internal_Branch<TTree> {
45 template <
typename... Args>
46 static void Branch(TTree* p, Args... args)
53template <
class T,
typename... Args>
57 template <
typename... Names>
60 static GPUROOTDump<T, Args...> instance(name1, names...);
63 template <
typename... Names>
68 void Fill(
const T&
o, Args... args)
76 template <
typename... Names>
79 mTree->Branch(name1, &mObj);
100 void write()
override { mTree->Write(); }
111 if (nameTree ==
nullptr) {
114 mTree =
new TTree(nameTree, nameTree);
115 mTree->Branch(name1, &mObj);
117 TTree* mTree =
nullptr;
137 void write()
override { mNTuple->Write(); }
139 template <
typename... Args>
142 mNTuple->Fill(args...);
148 mNTuple =
new TNtuple(
name,
name, options);
153template <
typename... Args>
157 template <
typename... Names>
161 template <
typename... Names>
162 GPUd() static GPUROOTDump<Args...>&
get(Args... args)
166 template <
typename... Names>
167 GPUd() static GPUROOTDump<Args...>&
getNew(Args... args)
static GPUROOTDump< TNtuple > getNew(const char *name, const char *options)
static GPUROOTDump< TNtuple > & get(const char *name, const char *options)
GPUROOTDump(const char *name1, const char *nameTree=nullptr)
static GPUROOTDump< T > & get(const char *name)
static GPUROOTDump< T > getNew(const char *name)
void Fill(const T &o, Args... args)
GPUROOTDump(const char *name1, Names... names)
static GPUROOTDump< T, Args... > getNew(const char *name1, Names... names)
static GPUROOTDump< T, Args... > & get(const char *name1, Names... names)
GLuint const GLchar * name
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
GPUd() const expr uint32_t MultivariatePolynomialHelper< Dim