ATLAS Offline Software
Loading...
Searching...
No Matches
HanOutputFile.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4
5#ifndef dqutilsHanOutputFile_h
6#define dqutilsHanOutputFile_h
7
8#include <TObjString.h>
9#include <TObject.h>
10
11#include <iosfwd>
12#include <map>
13#include <nlohmann/json.hpp>
14#include <optional>
15#include <string>
16
18
19class TCanvas;
20class TDirectory;
21class TFile;
22class TH1;
23class TH2;
24class TStyle;
25class TGraph;
26class TImage;
27class TEfficiency;
28
29namespace dqutils
30{
32 {
33 public:
35
36 HanOutputFile(const std::string& fileName);
37
38 virtual ~HanOutputFile();
39
40 typedef std::map<std::string, TDirectory*> DirMap_t;
41 typedef std::map<std::string, TObject*> DirStrMap_t;
42 typedef std::map<std::string, std::string> AssMap_t;
43 typedef std::map<std::string, AssMap_t*> DirToAssMap_t;
44
45 static void getAllGroupDirs(DirMap_t& dirmap, TDirectory* dir, const std::string& dirName);
52 static void getAllGroupDirs_V2(DirStrMap_t& dirstrmap, TObject* obj, // For Version 2 files
53 const std::string& objName);
54 static void getAllAssessments(AssMap_t& dirmap, TDirectory* dir);
55
59 static void printDQGroupJSON(const nlohmann::json& j, const std::string& location, const char* path_to_file);
60
61 static std::string getStringName(const std::string& location, int file_version);
62 static std::string getInfo(const std::string& location, int file_version);
63 static std::string getInfo(const std::string& JSON_str);
64 static std::string processJSON_ingetInfo(const nlohmann::ordered_json& j);
65
66 static std::string getIndentation(const std::string& pathName, const std::string& leadingSpace = "");
67
73
74 virtual bool setFile(const std::string& fileName);
75
76 virtual int getFileVersion(); // V1 or V2
77
78 virtual void printAllDQGroups();
79
80 virtual void printAllDQAssessments();
81 virtual void printHistoAssessments();
82
83 virtual std::string stringListSystemPaths(std::string location);
84 virtual std::string stringAllDQAssessments();
85 virtual std::string stringHistoAssessments();
86 virtual std::string stringAllHistograms();
87
88 virtual void streamAllDQAssessments(std::ostream& o, bool streamAll);
89 virtual void streamHistoAssessments(std::ostream& o, bool streamAll);
90 virtual void streamAllHistograms(std::ostream& o, bool streamAll);
91
95 const static int GENERATE_PNG = 1; // Make PNG with TImage
96 const static int GENERATE_JSON = 2; // Make JSON
97 virtual int saveAllHistograms(const std::string& location, bool drawRefs, const std::string& run_min_LB,
98 int cnvsType = 1);
99 //manipulation of dirname and maindir prevents const ref passing; could be done better
100 static bool containsDir(std::string dirname, std::string maindir);
112 static std::optional<std::string> containsKeyInJSON(
113 const std::string& pathInJSON, const std::string& jsonName, const std::string& path_to_JSON);
114
115 virtual bool saveHistogramToFile(const std::string& nameHis, std::string location, TDirectory* groupDir,
116 bool drawRefs,
117 const std::string& run_min_LB, const std::string& pathName, int cnvsType = 1);
118
119 virtual std::pair<std::string, std::string> getHistogram(const std::string& nameHis, TDirectory* groupDir,
120 bool drawRefs,
121 const std::string& run_min_LB, const std::string& pathName,
122 int cnvsType = 1);
123
124 virtual std::string getHistogramPNG(
125 const std::string& nameHis, TDirectory* groupDir, bool drawRefs, const std::string& run_min_LB,
126 const std::string& pathName);
127
128 virtual std::pair<std::string, std::string> getHistogramJSON(
129 const std::string& nameHis, TDirectory* groupDir, bool drawRefs, const std::string& run_min_LB,
130 const std::string& pathName);
131
132 virtual bool saveHistogramToFileSuperimposed(const std::string& nameHis, std::string location,
133 TDirectory* groupDir1,
134 TDirectory* groupDir2, bool drawRefs, const std::string& run_min_LB,
135 const std::string& pathName, int cnvsType = 1);
136
137
138 virtual bool drawH2(TCanvas* canv, TH2* hist, std::string& drawopt, std::string& display);
139
140 virtual bool drawH1(
141 TCanvas* canv, TH1* hist, TH1* reference, std::string& drawopt, std::string& display, std::string& AlgoName);
142
143 virtual bool drawReference(
144 TCanvas* canv, TH1* hRef, TH1* h, std::string& drawopt, std::string& display, std::string& AlgoName);
145 // virtual bool drawGraph(TCanvas* canv,TGraph* g,std::string &drawopt,std::string &display);
146
147 virtual void ratioplot(TCanvas* myC_main, TH1* h, TH1* href, std::string str);
148
149 virtual void ratioplot2D(TCanvas* canvas, TH2* h2, TH2* h2Ref, std::string display);
150
151 virtual void attachFits(TH1* hist, std::string& drawopt, std::string& display);
152
153 virtual void setupCanvas(std::string& drawopt, std::string& display);
154 virtual void polynomial(TCanvas* c, std::string str, TH1* h);
155
156 virtual void displayExtra(TCanvas* c, const std::string& str);
157 virtual void axisOption(std::string str, TH1* h);
158
159 virtual void formatTH1(TCanvas* c, TH1* h) const;
160 virtual void formatTH2(TCanvas* c, TH2* h) const;
161 virtual void formatTGraph(TCanvas* c, TGraph* g) const;
162 virtual void formatTEfficiency(TCanvas* c, TEfficiency* e) const;
163
164 virtual double getNEntries(std::string location, std::string histname);
165 virtual double getNEntries(const TObject* obj);
166 protected:
167 virtual void clearData();
168 virtual void convertToGraphics(
169 int cnvsType, TCanvas* myC, std::string& json, TImage** img = 0, char** x = 0, int* y = 0);
170 virtual void convertToGraphics(int cnvsType, TCanvas* myC, const std::string& namePNG, const std::string& nameJSON);
171
172 virtual bool saveFile(
173 int cnvsType, const std::string& pngfName, const std::string& pngContent, const std::string& jsonfName,
174 const std::string& jsonfContent);
175
176 virtual bool writeToFile(const std::string& fName, const std::string& content);
177
178 TFile* m_file;
182 TStyle* m_style;
183
184 ClassDef(HanOutputFile, 0) // Provides functions to manipulate and analyze data-quality monitoring files
185 };
186} // namespace dqutils
187
188#endif
nlohmann::json json
#define y
#define x
Define macros for attributes used to control the static checker.
Header file for AthHistogramAlgorithm.
static void printDQGroupJSON(const nlohmann::json &j, const std::string &location, const char *path_to_file)
Print path - and name of Assessment, represented as JSON TObjString.
virtual void formatTEfficiency(TCanvas *c, TEfficiency *e) const
static std::optional< std::string > containsKeyInJSON(const std::string &pathInJSON, const std::string &jsonName, const std::string &path_to_JSON)
Checks JSON file for a key (by its path)
virtual bool writeToFile(const std::string &fName, const std::string &content)
virtual void printAllDQGroups()
virtual void polynomial(TCanvas *c, std::string str, TH1 *h)
virtual void streamHistoAssessments(std::ostream &o, bool streamAll)
virtual bool saveFile(int cnvsType, const std::string &pngfName, const std::string &pngContent, const std::string &jsonfName, const std::string &jsonfContent)
virtual bool setFile(const std::string &fileName)
Clears all previous data and opens the file with the given name for analysis, returning a boolean ind...
std::map< std::string, TObject * > DirStrMap_t
virtual void attachFits(TH1 *hist, std::string &drawopt, std::string &display)
virtual void ratioplot(TCanvas *myC_main, TH1 *h, TH1 *href, std::string str)
virtual double getNEntries(std::string location, std::string histname)
virtual void convertToGraphics(int cnvsType, TCanvas *myC, std::string &json, TImage **img=0, char **x=0, int *y=0)
virtual bool drawH2(TCanvas *canv, TH2 *hist, std::string &drawopt, std::string &display)
!!
static std::string processJSON_ingetInfo(const nlohmann::ordered_json &j)
virtual bool drawH1(TCanvas *canv, TH1 *hist, TH1 *reference, std::string &drawopt, std::string &display, std::string &AlgoName)
virtual std::string getHistogramPNG(const std::string &nameHis, TDirectory *groupDir, bool drawRefs, const std::string &run_min_LB, const std::string &pathName)
virtual void formatTH2(TCanvas *c, TH2 *h) const
virtual void displayExtra(TCanvas *c, const std::string &str)
virtual void streamAllDQAssessments(std::ostream &o, bool streamAll)
virtual void axisOption(std::string str, TH1 *h)
static std::string getIndentation(const std::string &pathName, const std::string &leadingSpace="")
static const int GENERATE_JSON
static std::string getStringName(const std::string &location, int file_version)
virtual void ratioplot2D(TCanvas *canvas, TH2 *h2, TH2 *h2Ref, std::string display)
virtual std::string stringAllHistograms()
virtual std::string stringListSystemPaths(std::string location)
std::map< std::string, AssMap_t * > DirToAssMap_t
virtual std::string stringHistoAssessments()
std::map< std::string, std::string > AssMap_t
DirMap_t but For Version 2 files.
virtual std::pair< std::string, std::string > getHistogramJSON(const std::string &nameHis, TDirectory *groupDir, bool drawRefs, const std::string &run_min_LB, const std::string &pathName)
static void getAllGroupDirs_V2(DirStrMap_t &dirstrmap, TObject *obj, const std::string &objName)
Same as getAllGroupDirs, but works with Version 2.3 files.
virtual std::pair< std::string, std::string > getHistogram(const std::string &nameHis, TDirectory *groupDir, bool drawRefs, const std::string &run_min_LB, const std::string &pathName, int cnvsType=1)
virtual void printHistoAssessments()
virtual std::string stringAllDQAssessments()
static void getAllAssessments(AssMap_t &dirmap, TDirectory *dir)
virtual void setupCanvas(std::string &drawopt, std::string &display)
static bool containsDir(std::string dirname, std::string maindir)
virtual bool saveHistogramToFile(const std::string &nameHis, std::string location, TDirectory *groupDir, bool drawRefs, const std::string &run_min_LB, const std::string &pathName, int cnvsType=1)
std::map< std::string, TDirectory * > DirMap_t
virtual void streamAllHistograms(std::ostream &o, bool streamAll)
static void getAllGroupDirs(DirMap_t &dirmap, TDirectory *dir, const std::string &dirName)
virtual bool saveHistogramToFileSuperimposed(const std::string &nameHis, std::string location, TDirectory *groupDir1, TDirectory *groupDir2, bool drawRefs, const std::string &run_min_LB, const std::string &pathName, int cnvsType=1)
virtual void formatTGraph(TCanvas *c, TGraph *g) const
virtual void printAllDQAssessments()
static std::string getInfo(const std::string &location, int file_version)
virtual bool drawReference(TCanvas *canv, TH1 *hRef, TH1 *h, std::string &drawopt, std::string &display, std::string &AlgoName)
virtual int saveAllHistograms(const std::string &location, bool drawRefs, const std::string &run_min_LB, int cnvsType=1)
virtual void formatTH1(TCanvas *c, TH1 *h) const
static const int GENERATE_PNG
cnvsType: 1=pngOnly;2=jsonOnly;3=pngAndJson
DirToAssMap_t m_assessMap
Same Dim_indirMaprMap, but for files of version 2.
void getImageBuffer ATLAS_NOT_THREAD_SAFE(TImage **img, TCanvas *myC, char **x, int *y)
std::string dirname(std::string name)
Definition utils.cxx:200