ATLAS Offline Software
Loading...
Searching...
No Matches
SimTestHisto.h
Go to the documentation of this file.
1/* -*- C++ -*- */
2
3/*
4 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5*/
6
7#ifndef G4ATLASTESTS_SIMTESTHISTO_H
8#define G4ATLASTESTS_SIMTESTHISTO_H
9
13
15#include "GaudiKernel/ITHistSvc.h"
16#include "GaudiKernel/ServiceHandle.h"
17
18#include "TH1.h"
19#include "TH2.h"
20class TProfile;
21
26{
27
28public:
29
30 SimTestHisto() = default;
31 ~SimTestHisto() = default;
32
33protected:
34 std::string m_path{"/truth/"};
35 ServiceHandle<ITHistSvc> m_histSvc{"THistSvc", "SimTestHisto"};
36};
37
38// note: var should be of type "TH1*" even if it is filled with a TProfile*
39#define _TPROFILE(var,name,nbin,xmin,xmax) \
40 if (!m_histSvc->exists(m_path+name)) { \
41 var = new TProfile(name,name,nbin,xmin,xmax); \
42 CHECK(m_histSvc->regHist(m_path+name,var)); \
43 } else { \
44 CHECK(m_histSvc->getHist(m_path+name, var)); \
45 }
46
47#define _TH1D(var,name,nbin,xmin,xmax) \
48 if (!m_histSvc->exists(m_path+name)) { \
49 var = new TH1D(name,name,nbin,xmin,xmax); \
50 var->StatOverflows(); \
51 CHECK(m_histSvc->regHist(m_path+name,var)); \
52 } else { \
53 CHECK(m_histSvc->getHist(m_path+name,var)); \
54 }
55
56#define _TH1D_NOCHECK(var,name,nbin,xmin,xmax) \
57 if (!m_histSvc->exists(m_path+name)) { \
58 var = new TH1D(name,name,nbin,xmin,xmax); \
59 var->StatOverflows(); \
60 if(m_histSvc->regHist(m_path+name,var).isFailure()) \
61 std::cout<<"Cannot register histogram "<<name<<std::endl; \
62 } else { \
63 if(m_histSvc->getHist(m_path+name,var).isFailure()) \
64 std::cout<<"Cannot get histogram "<<name<<std::endl; \
65 }
66
67#define _TH1D_WEIGHTED(var,name,nbin,xmin,xmax) \
68 _TH1D(var,name,nbin,xmin,xmax); \
69 var->Sumw2();
70
71#define _TH2D_NOCHECK(var,name,nbinx,xmin,xmax,nbiny,ymin,ymax) \
72 if (!m_histSvc->exists(m_path+name)) { \
73 var = new TH2D(name,name,nbinx,xmin,xmax,nbiny,ymin,ymax); \
74 if(m_histSvc->regHist(m_path+name,var).isFailure()) \
75 std::cout<<"Cannot register histogram "<<name<<std::endl;\
76 } else { \
77 if(m_histSvc->getHist(m_path+name,var).isFailure()) \
78 std::cout<<"Cannot get histogram "<<name<<std::endl; \
79 }
80
81#define _TH2D(var,name,nbinx,xmin,xmax,nbiny,ymin,ymax) \
82 if (!m_histSvc->exists(m_path+name)) { \
83 var = new TH2D(name,name,nbinx,xmin,xmax,nbiny,ymin,ymax); \
84 CHECK(m_histSvc->regHist(m_path+name,var)); \
85 } else { \
86 CHECK(m_histSvc->getHist(m_path+name,var)); \
87 }
88
89#define _TH2D_WEIGHTED(var,name,nbinx,xmin,xmax,nbiny,ymin,ymax) \
90 _TH2D(var,name,nbinx,xmin,xmax,nbiny,ymin,ymax); \
91 var->Sumw2();
92
93#define _SET_TITLE(var,title,xaxis,yaxis) \
94 var->SetXTitle(xaxis); \
95 var->SetYTitle(yaxis); \
96 var->SetTitle((std::string(var->GetName())+" : "+title).c_str());
97
98//#define _SET_LOGX(var)
99//TAxis *axis = var->GetXaxis();
100//int bins = axis->GetNbin//s();
101
102// Axis_t from = axis->GetXmin();
103// Axis_t to = axis->GetXmax();
104// Axis_t width = (to - from) / bins;
105// Axis_t *new_bins = new Axis_t[bins + 1];
106
107// for (int i = 0; i <= bins; i++) {
108// new_bins[i] = TMath::Power(10, from + i * width);
109//
110// }
111// axis->Set(bins, new_bins);
112// delete new_bins;
113
114#endif //G4ATLASTESTS_SIMTESTHISTO_H
Helpers for checking error return status codes and reporting errors.
std::string m_path
SimTestHisto()=default
~SimTestHisto()=default
ServiceHandle< ITHistSvc > m_histSvc