CbmRoot
Loading...
Searching...
No Matches
CbmQaCanvas.h
Go to the documentation of this file.
1/* Copyright (C) 2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Sergey Gorbunov [committer] */
4
9
10#ifndef CbmQaCanvas_H
11#define CbmQaCanvas_H
12
13#include "TCanvas.h"
14#include "TROOT.h"
15
31class CbmQaCanvas : public TCanvas {
32 public:
34 CbmQaCanvas() : TCanvas() {}
35
38 template<typename... Types>
39 CbmQaCanvas(Types... args) : CbmQaCanvas(SetBatchModeOn(), args...)
40 {
41 }
42
44 virtual ~CbmQaCanvas() {}
45
47 void Divide2D(int nPads);
48
49
52 {
57 static CbmQaCanvas dummy("CbmQaDummyCanvas", "CbmQaDummyCanvas", 5, 5);
58 return dummy;
59 }
60
61
62 private:
65 enum MyBoolean : Bool_t;
66
68 template<typename... Types>
69 CbmQaCanvas(MyBoolean oldBatchMode, Types... args) : TCanvas(args...)
70 {
71 // prevent automatic deletion of this canvas
72 // when another canvas with the same name is created somewhere else
73 gROOT->GetListOfCanvases()->Remove(this);
74 // reset the batch mode to its original value
75 gROOT->SetBatch((Bool_t) oldBatchMode);
76 }
77
79 static MyBoolean SetBatchModeOn()
80 {
81 MyBoolean oldBatchMode = (MyBoolean) gROOT->IsBatch();
82 gROOT->SetBatch(kTRUE);
83 return oldBatchMode;
84 }
85
87};
88
89#endif
static MyBoolean SetBatchModeOn()
Set batch mode ON and return its old value.
Definition CbmQaCanvas.h:79
CbmQaCanvas()
Default constructor needed by the ROOT streamer.
Definition CbmQaCanvas.h:34
CbmQaCanvas(MyBoolean oldBatchMode, Types... args)
Constructor which calls TCanvas constructor and restores the bach mode.
Definition CbmQaCanvas.h:69
virtual ~CbmQaCanvas()
Destructor.
Definition CbmQaCanvas.h:44
static CbmQaCanvas & GetDummyCanvas()
a static canvas for temporary drawing
Definition CbmQaCanvas.h:51
CbmQaCanvas(Types... args)
Definition CbmQaCanvas.h:39
void Divide2D(int nPads)
Divide canvas into nPads in 2D in a nice way.
ClassDef(CbmQaCanvas, 1)