CbmRoot
Loading...
Searching...
No Matches
CaToolsDebugger.cxx
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, Sergei Zharko [committer] */
4
9
10/*
11root -l CAdebug.root
12TNtuple *n = (TNtuple*) gDirectory->FindObjectAny("triplets")
13n->Draw("chi2")
14*/
15
16#include "CaToolsDebugger.h"
17
18#include "TDirectory.h"
19#include "TFile.h"
20#include "TNtuple.h"
21
22#include <cstdarg>
23#include <iostream>
24#include <memory>
25#include <string>
26
28
30{
31 static std::unique_ptr<Debugger> instance;
32 if (!instance) {
33 instance.reset(new Debugger);
34 }
35 return *instance.get();
36}
37
38
39Debugger::Debugger(const char* fileName)
40{
42 fFileName = fileName;
43}
44
46{
48 fIsWritten = true;
49 TDirectory* currDir = gDirectory;
50 if (fFile) {
51 fFile->cd();
52 for (unsigned int i = 0; i < fNtuples.size(); i++) {
53 fNtuples[i]->Write();
54 }
55 }
56 gDirectory = currDir;
57}
58
60{
62 if (!fIsWritten && fFile) {
63 std::cerr << "CaDebugger: you forgot to Write()!!" << std::endl;
64 }
65}
66
67void Debugger::AddNtuple(const char* name, const char* varlist)
68{
70
71 if (!fFile) {
72 fFile = new TFile(fFileName.c_str(), "RECREATE");
73 }
74 assert(fFile);
75 if (GetNtupleIndex(name) >= 0) return;
76 TDirectory* currDir = gDirectory;
77 fFile->cd();
78 fNtuples.push_back(new TNtuple(name, name, varlist));
79 gDirectory = currDir;
80}
81
82int Debugger::GetNtupleIndex(const char* name)
83{
84 int ind = -1;
85 for (unsigned int i = 0; i < fNtuples.size(); i++) {
86 if (strcmp(name, fNtuples[i]->GetName()) == 0) {
87 ind = i;
88 break;
89 }
90 }
91 return ind;
92}
93
94void Debugger::FillNtuple(const char* name, float v[])
95{
96 int iNtuple = GetNtupleIndex(name);
97 if (iNtuple < 0) {
98 std::cerr << "CaDebugger: Ntuple (" << name << ") doesn't exist" << std::endl;
99 }
100 fNtuples[iNtuple]->Fill(v);
101}
Tracking Debugger class (implementation)
fscal v[fmask::Size]
Definition KfSimdPseudo.h:4
static Debugger & Instance()
Instance.
std::vector< TNtuple * > fNtuples
void AddNtuple(const char *name, const char *varlist)
Set new ntuple.
Debugger(const char *fileName="CAdebug.root")
Default constructor.
void Write()
Write ntuples to the file.
int GetNtupleIndex(const char *name)
Get ntuple index.
void FillNtuple(const char *name, float v[])
Add an entry to ntuple.