CbmRoot
Loading...
Searching...
No Matches
CaDebugger.h
Go to the documentation of this file.
1/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sergey Gorbunov[committer] */
4
9
10#ifndef CaDebugger_h
11#define CaDebugger_h 1
12
13#include <memory>
14#include <string>
15
17{
20 class Debugger {
21 public:
22 // *****************************************
23 // ** Constructors and destructor **
24 // *****************************************
25
26
28 Debugger() = default;
29
31 virtual ~Debugger() = default;
32
34 Debugger(const Debugger& other) = delete;
35
37 Debugger(Debugger&& other) = delete;
38
40 Debugger& operator=(const Debugger& other) = delete;
41
43 Debugger& operator=(Debugger&& other) = delete;
44
46 static Debugger& Instance();
47
49 static void SetInstance(std::shared_ptr<Debugger> instance);
50
52 virtual void Write() = 0;
53
55 virtual void AddNtuple(const char* name, const char* varlist) = 0;
56
58 virtual void FillNtuple(const char* name, float v[]) = 0;
59
61 template<typename... Targs>
62 void FillNtuple(const char* name, Targs... args)
63 {
64 constexpr std::size_t n = sizeof...(Targs);
65 if (n <= 0) return;
66 float v[n];
67 FillFloatArray(v, args...);
68 FillNtuple(name, v);
69 }
70
71 private:
72 template<typename T, typename... Targs>
73 void FillFloatArray(float* v, T val, Targs... args)
74 {
75 v[0] = (float) val;
76 if (sizeof...(args) > 0) {
77 FillFloatArray(v + 1, args...);
78 }
79 }
80
81 template<typename T>
82 void FillFloatArray(float* v, T last)
83 {
84 v[0] = (float) last;
85 }
86 };
87} // namespace cbm::algo::ca::utils
88
89#endif // CaDebugger_h
fscal v[fmask::Size]
Definition KfSimdPseudo.h:4
void FillFloatArray(float *v, T last)
Definition CaDebugger.h:82
Debugger()=default
Default constructor.
Debugger & operator=(const Debugger &other)=delete
Copy assignment operator.
virtual ~Debugger()=default
Destructor.
static Debugger & Instance()
Instance.
virtual void FillNtuple(const char *name, float v[])=0
Add an entry to ntuple.
virtual void Write()=0
Write ntuples to the file.
Debugger(Debugger &&other)=delete
Move constructor.
Debugger(const Debugger &other)=delete
Copy constructor.
static void SetInstance(std::shared_ptr< Debugger > instance)
Set instance.
void FillNtuple(const char *name, Targs... args)
Add an entry to ntuple.
Definition CaDebugger.h:62
void FillFloatArray(float *v, T val, Targs... args)
Definition CaDebugger.h:73
Debugger & operator=(Debugger &&other)=delete
Move assignment operator.
virtual void AddNtuple(const char *name, const char *varlist)=0
Set new ntuple.