13#include "BmnCSCStationSet.h"
15#include "BmnGemStripStationSet.h"
18#include "BmnSiBTStationSet.h"
19#include "BmnSiliconStationSet.h"
21#include "BmnVSPStationSet.h"
43 printf(
"Creating report in %s", outputDir.c_str());
53 TFile* file =
new TFile(fileName.c_str());
105 const string& drawOpt)
121 TF1* fit = h->GetFunction(
"gaus");
124 Float_t xMax = h->GetXaxis()->GetXmax();
125 Float_t yMax = h->GetMaximum();
126 TPaveStats* ps =
new TPaveStats(xMax / 2, yMax / 2, xMax, yMax);
128 ps->SetShadowColor(0);
129 ps->AddText(Form(
"#mu = %2.3f", fit->GetParameter(1)));
130 ps->AddText(Form(
"#sigma = %2.3f", fit->GetParameter(2)));
136 const TString drawOpt,
140 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), histW, histH);
151 const TString drawOpt,
156 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 2 * histW, histH);
159 canvas->Divide(2, 1);
164 HM()->
H1(name1)->Fit(
"gaus",
"WWQ");
170 HM()->
H1(name2)->Fit(
"gaus",
"WWQ");
177 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), histW, histH);
191 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 2 * w, h);
194 canvas->Divide(2, 1);
211 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 3 * histW, histH);
214 canvas->Divide(3, 1);
233 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 3 * histW, histH);
236 canvas->Divide(3, 1);
254 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 2 * histW, 2 * histH);
257 canvas->Divide(2, 2);
272 const vector<string>& names,
277 Int_t n = names.size();
279 Int_t ny = n / nx + n % nx;
280 TCanvas* canvas =
CreateCanvas(canvasName.data(), canvasName.data(), nx * histW, ny * histH);
283 canvas->Divide(nx, ny, 0.01 / nx, 0.03 / ny);
286 for (
const TString s : names) {
297 return BmnGemStripStationSet::Class();
299 return BmnCSCStationSet::Class();
301 return BmnSiliconStationSet::Class();
303 return BmnSiBTStationSet::Class();
305 return BmnVSPStationSet::Class();
313 for (
auto& el : fDetStationSets) {
314 void* ss = el.second;
319 TMethodCall ns_method(station_set_class,
"GetNStations",
"");
320 Long_t method_result(0);
321 ns_method.Execute(ss, method_result);
322 Short_t n_stations = method_result;
324 string can_name = string(detName.Data()) +
"_Hits_X_Y";
327 vector<string> st_names;
328 for (Short_t iSt = 0; iSt < n_stations; ++iSt)
Helper functions for drawing 1D and 2D histograms and graphs.
Abstract class for basic report elements (headers, tables, images etc.).
Base class for simulation reports.
static void GetSystemNameCaps(DetectorId det, TString &name)
TH1 * H1(const TString &name) const
Return pointer to TH1 histogram.
void ReadFromFile(TFile *file)
Read histograms from file.
virtual string Title(int size, const string &title) const =0
Return string with title.
virtual string DocumentBegin() const =0
Return string with open tags for document.
virtual string DocumentEnd() const =0
Return string with close tags of the document.
void PrintCanvases() const
Print images created from canvases in the report.
const BmnReportElement * R() const
Accessor to BmnReportElement object. User has to write the report using available tags from BmnReport...
void SetOutputDir(const string &outputDir)
TCanvas * CreateCanvas(const char *name, const char *title, Int_t ww, Int_t wh)
Create canvas and put it to vector of TCanvases. Canvases created with this function will be automati...
void CreateReports()
Create all available report types.
ostream & Out() const
All text output goes to this stream.
BmnHistManager * HM() const
Return pointer to Histogram manager.
BmnSimulationReport()
Constructor.
static char * HistNameHits(string detName, Short_t iSt)
void DrawNH2(const string canvasName, const vector< string > &names, Int_t histW=baseW, Int_t histH=baseH, Int_t ncols=2)
void DrawTwoH2(const TString canvasName, const TString name1, const TString name2, Int_t histW=baseW, Int_t histH=baseH)
void DrawH1ByPattern(const string &histNamePattern)
Select by pattern TH1 histograms and draw each histogram on separate canvas.
void DrawThreeH2(const TString canvasName, const TString name1, const TString name2, const TString name3, Int_t histW=baseW, Int_t histH=baseH)
const Int_t MinNEntries4Fit
virtual ~BmnSimulationReport()
Destructor.
void DrawH2ByPattern(const string &histNamePattern, HistScale logx=kLinear, HistScale logy=kLinear, HistScale logz=kLinear, const string &drawOpt="")
Select by pattern TH2 histograms and draw each histogram on separate canvas.
static TClass * GetStationSetClass(DetectorId det)
void DrawTwoH1(const TString canvasName, const TString name1, const TString name2, const TString drawOpt, Bool_t doFit=kFALSE, Int_t histW=baseW, Int_t histH=baseH)
void Create()
Pure abstract function which is called from public Create() function. This function has to write repo...
void DrawFourH2(const TString canvasName, const TString name1, const TString name2, const TString name3, const TString name4, Int_t histW=baseW, Int_t histH=baseH)
void DrawOneH2(const TString canvasName, const TString name1, Int_t histW=baseW, Int_t histH=baseH)
void DrawMuSigma(TVirtualPad *pad, TH1 *h)
void DrawThreeH1(const TString canvasName, const TString name1, const TString name2, const TString name3, Int_t histW=baseW, Int_t histH=baseH)
void DrawOneH1(const TString canvasName, const TString name1, const TString drawOpt, Int_t histW=baseW, Int_t histH=baseH)
void DrawH2(TH2 *hist, HistScale logx=kLinear, HistScale logy=kLinear, HistScale logz=kLinear, const string &drawOpt="COLZ")
void DrawH1(TH1 *hist, HistScale logx=kLinear, HistScale logy=kLinear, const string &drawOpt="", Int_t color=BmnDrawingOptions::Color(0), Int_t lineWidth=BmnDrawingOptions::LineWidth(), Int_t lineStyle=BmnDrawingOptions::LineStyle(0), Float_t markerSize=BmnDrawingOptions::MarkerSize(), Int_t markerStyle=BmnDrawingOptions::MarkerStyle(0), Int_t fillColor=-1)
HistScale
Define linear or logarithmic scale for drawing.