REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
TRestMetadataPlot.h
1 /*************************************************************************
2  * This file is part of the REST software framework. *
3  * *
4  * Copyright (C) 2016 GIFNA/TREX (University of Zaragoza) *
5  * For more information see http://gifna.unizar.es/trex *
6  * *
7  * REST is free software: you can redistribute it and/or modify *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation, either version 3 of the License, or *
10  * (at your option) any later version. *
11  * *
12  * REST is distributed in the hope that it will be useful, *
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15  * GNU General Public License for more details. *
16  * *
17  * You should have a copy of the GNU General Public License along with *
18  * REST in $REST_PATH/LICENSE. *
19  * If not, see http://www.gnu.org/licenses/. *
20  * For the list of contributors see $REST_PATH/CREDITS. *
21  *************************************************************************/
22 
23 #ifndef RestCore_TRestMetadataPlot
24 #define RestCore_TRestMetadataPlot
25 
26 #include <TCanvas.h>
27 #include <TLatex.h>
28 
29 #include "TRestRun.h"
30 
33  public:
35  struct Graph_Info_Set {
37  std::string name;
39  std::string title;
41  std::string yVariable;
43  std::string metadataRule;
45  std::string drawOption;
47  Int_t lineColor;
49  Int_t lineWidth;
51  Int_t lineStyle;
53  Int_t fillColor;
55  Int_t fillStyle;
57  Int_t markerStyle;
59  Int_t markerSize;
61  Int_t markerColor;
62  };
63 
65  struct Plot_Info_Set {
67  std::string name;
69  std::string title;
71  std::string xVariable;
73  Bool_t logX;
75  Bool_t logY;
77  Bool_t legendOn;
79  Bool_t timeDisplay;
81  std::string labelX;
83  std::string labelY;
85  std::string save;
87  TVector2 xRange;
89  TVector2 yRange;
91  std::vector<Graph_Info_Set> graphs;
92  };
93 
95  struct Panel_Info {
97  Float_t font_size;
99  std::vector<Float_t> posX;
101  std::vector<Float_t> posY;
103  std::vector<std::string> label;
104  };
105 
106  private:
107  void InitFromConfigFile() override;
108  Graph_Info_Set SetupGraphFromConfigFile(TiXmlElement* ele, Plot_Info_Set info);
109 
111  Int_t fNFiles;
112 
114  TVector2 fCanvasSize;
115 
118 
120  TString fCanvasSave;
121 
123  Int_t fLabelFont;
124 
126  Double_t fLabelOffsetX = 1.1;
128  Double_t fLabelOffsetY = 1.3;
129 
131  Double_t fLabelScaleX = 1.2;
133  Double_t fLabelScaleY = 1.3;
134 
136  Double_t fTicksScaleX = 1.5;
138  Double_t fTicksScaleY = 1.5;
139 
141  Double_t fLegendX1 = 0.7;
143  Double_t fLegendY1 = 0.75;
145  Double_t fLegendX2 = 0.88;
147  Double_t fLegendY2 = 0.88;
148 
150  TString fLegendOption = "lp";
151 
153  std::vector<Plot_Info_Set> fPlots;
154 
156  std::vector<Panel_Info> fPanels;
157 
159  std::vector<std::string> fPlotNamesCheck;
160 
163 
165  std::vector<std::string> fRunInputFileName;
166 
168  TCanvas* fCombinedCanvas;
169 
170  void AddFile(TString fileName);
171  void AddFileFromExternalRun();
172  void AddFileFromEnv();
173 
174  protected:
175  public:
176  void Initialize() override;
177 
178  void PrintMetadata() override {}
179 
180  void SaveCanvasToPDF(TString fileName);
181  void SavePlotToPDF(TString fileName, Int_t n = 0);
182  void SaveGraphToPDF(TString fileName, Int_t nPlot = 0, Int_t nGraph = 0);
183 
185  void SetOutputPlotsFilename(TString fname) { fCanvasSave = fname; }
186 
187  Int_t GetPlotIndex(TString plotName);
188 
190  inline TVector2 GetCanvasSize() const { return fCanvasSize; }
191 
193  inline TVector2 GetCanvasDivisions() const { return fCanvasDivisions; }
194 
195  void GenerateCanvas();
196 
198  TRestMetadataPlot(const char* configFilename, const char* name = "");
199 
200  virtual ~TRestMetadataPlot();
201 
202  ClassDefOverride(TRestMetadataPlot, 3);
203 };
204 #endif
A helper class to draw the evolution or correlation of metadata information from a set of REST files.
Double_t fLabelOffsetX
A label offset to be applied in the x-label (not tested)
Double_t fTicksScaleY
A label ticks scale to be applied in the y-label (not tested)
TCanvas * fCombinedCanvas
Output canvas.
TString fCanvasSave
A std::string to define the output filename where to store the canvas.
std::vector< Plot_Info_Set > fPlots
A std::vector with the defined plots.
Double_t fLabelScaleX
A label title scale to be applied in the x-label (not tested)
void SaveCanvasToPDF(TString fileName)
A method to execute the generation of an output file with the contents of the TCanvas as it is....
void InitFromConfigFile() override
Initialization of TRestMetadataPlot members through a RML file.
void SaveGraphToPDF(TString fileName, Int_t nPlot=0, Int_t nGraph=0)
A method to execute the generation of a particular graph from a plot inside the canvas using the inde...
TString fLegendOption
The legend drawing option.
void AddFileFromEnv()
We can add input file from parameter "inputFile".
std::vector< Panel_Info > fPanels
A std::vector with the defined panels.
TRestRun * fRun
TRestRun to handle output file.
Double_t fLegendY1
The Y1 legend position.
void SavePlotToPDF(TString fileName, Int_t n=0)
A method to execute the generation of a plot inside the canvas using the index of the plot....
Int_t fNFiles
The total number of files for plotting added to this class.
void AddFile(TString fileName)
It creates a new TRestRun object extracted from the fileName, and it adds it to the list of input fil...
Graph_Info_Set SetupGraphFromConfigFile(TiXmlElement *ele, Plot_Info_Set info)
It fills the components of a Graph_Info_set object using the definition inside a <graph element.
void AddFileFromExternalRun()
We can add input file from process's output file.
Int_t fLabelFont
The font label size.
void Initialize() override
Initialization of TRestMetadataPlot data members.
Double_t fLegendY2
The Y2 legend position.
void SetOutputPlotsFilename(TString fname)
It will set the filename of the plots output file to be generated when GenerateCanvas is called.
Double_t fLegendX1
The X1 legend position.
void PrintMetadata() override
Implemented it in the derived metadata class to print out specific metadata information.
void GenerateCanvas()
The main method of this class, collecting the input files, producing the TGraphs and generating the p...
std::vector< std::string > fPlotNamesCheck
A std::vector to double check that there are no repeated graph names.
TVector2 GetCanvasSize() const
It will return the canvas size in pixel units.
TRestMetadataPlot()
Default constructor.
Double_t fLabelScaleY
A label title scale to be applied in the y-label (not tested)
Double_t fTicksScaleX
A label ticks scale to be applied in the x-label (not tested)
TVector2 fCanvasSize
The size of the canvas window in pixels.
std::vector< std::string > fRunInputFileName
To keep a list of files used.
Double_t fLabelOffsetY
A label offset to be applied in the y-label (not tested)
TVector2 fCanvasDivisions
The number of canvas divisions on X and Y.
Double_t fLegendX2
The X2 legend position.
virtual ~TRestMetadataPlot()
Default destructor.
Int_t GetPlotIndex(TString plotName)
It returns the index of the array correspoding to the plot with the given plotName.
TVector2 GetCanvasDivisions() const
It will return the number of divisions inside the canvas.
A base class for any REST metadata class.
Definition: TRestMetadata.h:74
Data provider and manager in REST.
Definition: TRestRun.h:18
This structure is used to register the values from a <graph definition inside the RML.
Int_t lineStyle
The line style to be assigned to the corresponding TGraph.
Int_t markerSize
The marker size to be assigned to the corresponding TGraph.
Int_t markerColor
The marker color to be assigned to the corresponding TGraph.
Int_t lineWidth
The line width to be assigned to the corresponding TGraph.
Int_t markerStyle
The marker style to be assigned to the corresponding TGraph.
std::string name
The name to be used for the corresponding ROOT TGraph object.
Int_t fillColor
The fill color to be assigned to the corresponding TGraph.
std::string drawOption
The option to be passed to the Draw method.
Int_t lineColor
The line color to be assigned to the corresponding TGraph.
std::string title
The title to be used inside TLegend object.
Int_t fillStyle
The fill style to be assigned to the corresponding TGraph.
std::string yVariable
The metadata class and data member definition to be plotted.
std::string metadataRule
An optional rule to be used for run selection.
This structure is used to register the values from a <panel definition inside the RML.
Float_t font_size
The font size to be used in the panel labels.
std::vector< std::string > label
The std::string containing the text to be drawn in the panel.
std::vector< Float_t > posY
The y-position of labels used inside the panel.
std::vector< Float_t > posX
The x-position of labels used inside the panel.
This structure is used to register the values from a <plot definition inside the RML.
std::string xVariable
The corresponding metadata variable to be used in the X-axis.
std::string name
The name that will be used for the TGraph object.
std::string labelY
The label or title to be given to the y-axis.
std::string labelX
The label or title to be given to the x-axis.
TVector2 xRange
The user defined range in the x-axis.
std::string title
A title that will be visible in top of the plot.
Bool_t timeDisplay
It true a time/date calendar format will be used on the x-axis.
Bool_t legendOn
It true a legend will be shown on the corresponding plot.
std::vector< Graph_Info_Set > graphs
A std::vector containing the properties of the graphs inside the plot.
std::string save
The filename where the file will be saved.
Bool_t logX
It true a logarithmic scale will be used on the x-axis.
Bool_t logY
It true a logarithmic scale will be used on the y-axis.
TVector2 yRange
The user defined range in the y-axis.