19#include "TPaveStats.h"
23#include "BmnDrawHist.h"
24#include "BmnDrawOnline.h"
25#include "BmnHistManager.h"
26#include "BmnReportElement.h"
35 fGlobalTrackVariants()
42 fGlobalTrackVariants(),
43 fMassTable(massTable),
45 fStorageName(storageName),
50 effHitsTof400(nullptr),
51 contHitsTof400(nullptr),
52 effHitsTof700(nullptr),
53 contHitsTof700(nullptr)
65 Out() <<
"<hr>" << endl;
77 "Banana-plot TOF-400",
"Banana-plot TOF-700");
83 string nameOfParticle = (*iter).second;
86 "TOF-400 total_vs_P for " + nameOfParticle,
87 "TOF-400 true_vs_P for " + nameOfParticle,
88 "TOF-400 false_vs_P for " + nameOfParticle);
91 "TOF-700 total_vs_P for " + nameOfParticle,
92 "TOF-700 true_vs_P for " + nameOfParticle,
93 "TOF-700 false_vs_P for " + nameOfParticle);
96 DrawThreeH2(
fPrefix +
"Total-True-False identified particles TOF-400 in P_Beta for " + nameOfParticle,
97 "TOF-400 total rigidity-momentum for " + nameOfParticle,
98 "TOF-400 true rigidity-momentum for " + nameOfParticle,
99 "TOF-400 false rigidity-momentum for " + nameOfParticle);
105 DrawThreeH2(
fPrefix +
"Total-True-False identified particles TOF-700 in P_Beta for " + nameOfParticle,
106 "TOF-700 total rigidity-momentum for " + nameOfParticle,
107 "TOF-700 true rigidity-momentum for " + nameOfParticle,
108 "TOF-700 false rigidity-momentum for " + nameOfParticle);
116 effTof400 =
new TEfficiency(*(
HM()->H1(
"TOF-400 true_vs_P for " + nameOfParticle)),
117 *(
HM()->H1(
"TOF-400 total_vs_P for " + nameOfParticle)));
120 HM()->
H1(
"TOF-400 true-false_vs_P for " + nameOfParticle)->
Add(
HM()->H1(
"TOF-400 true_vs_P for " + nameOfParticle),
121 HM()->H1(
"TOF-400 false_vs_P for " + nameOfParticle));
123 contTof400 =
new TEfficiency(*(
HM()->H1(
"TOF-400 false_vs_P for " + nameOfParticle)), *(
HM()->H1(
"TOF-400 true-false_vs_P for " + nameOfParticle)));
127 effHitsTof400 =
new TEfficiency(*(
HM()->H1(
"TOF-400 true_vs_NOfHits for " + nameOfParticle)),
128 *(
HM()->H1(
"TOF-400 total_vs_NOfHits for " + nameOfParticle)));
131 HM()->
H1(
"TOF-400 true-false_vs_NOfHits for " + nameOfParticle)->
Add(
HM()->H1(
"TOF-400 true_vs_NOfHits for " + nameOfParticle),
132 HM()->H1(
"TOF-400 false_vs_NOfHits for " + nameOfParticle));
134 contHitsTof400 =
new TEfficiency(*(
HM()->H1(
"TOF-400 false_vs_NOfHits for " + nameOfParticle)), *(
HM()->H1(
"TOF-400 true-false_vs_NOfHits for " + nameOfParticle)));
137 effTof700 =
new TEfficiency(*(
HM()->H1(
"TOF-700 true_vs_P for " + nameOfParticle)),
138 *(
HM()->H1(
"TOF-700 total_vs_P for " + nameOfParticle)));
142 HM()->
H1(
"TOF-700 true-false_vs_P for " + nameOfParticle)->
Add(
HM()->H1(
"TOF-700 true_vs_P for " + nameOfParticle),
143 HM()->H1(
"TOF-700 false_vs_P for " + nameOfParticle));
145 contTof700 =
new TEfficiency(*(
HM()->H1(
"TOF-700 false_vs_P for " + nameOfParticle)), *(
HM()->H1(
"TOF-700 true-false_vs_P for " + nameOfParticle)));
148 effHitsTof700 =
new TEfficiency(*(
HM()->H1(
"TOF-700 true_vs_NOfHits for " + nameOfParticle)),
149 *(
HM()->H1(
"TOF-700 total_vs_NOfHits for " + nameOfParticle)));
152 HM()->
H1(
"TOF-700 true-false_vs_NOfHits for " + nameOfParticle)->
Add(
HM()->H1(
"TOF-700 true_vs_NOfHits for " + nameOfParticle),
153 HM()->H1(
"TOF-700 false_vs_NOfHits for " + nameOfParticle));
155 contHitsTof700 =
new TEfficiency(*(
HM()->H1(
"TOF-700 false_vs_NOfHits for " + nameOfParticle)), *(
HM()->H1(
"TOF-700 true-false_vs_NOfHits for " + nameOfParticle)));
158 DrawEffCont(
fPrefix +
"TOF-400 and TOF-700 Efficiency for " + nameOfParticle, effTof400, effTof700);
159 DrawEffCont(
fPrefix +
"TOF-400 and TOF-700 Contamination for " + nameOfParticle, contTof400, contTof700);
160 DrawEffCont(
fPrefix +
"TOF-400 and TOF-700 Efficiency NOfHits for " + nameOfParticle, effHitsTof400, effHitsTof700);
161 DrawEffCont(
fPrefix +
"TOF-400 and TOF-700 Contamination NOfHits for " + nameOfParticle, contHitsTof400, contHitsTof700);
166 DrawThreeH2(
fPrefix +
"Total-True-False velocity from P TOF-400 for " + nameOfParticle,
167 "Total velocity from P TOF-400 for " + nameOfParticle,
168 "True velocity from P TOF-400 for " + nameOfParticle,
"False velocity from P TOF-400 for " + nameOfParticle);
171 DrawThreeH2(
fPrefix +
"Total-True-False velocity from P TOF-700 for " + nameOfParticle,
172 "Total velocity from P TOF-700 for " + nameOfParticle,
173 "True velocity from P TOF-700 for " + nameOfParticle,
"False velocity from P TOF-700 for " + nameOfParticle);
178 "Total time from P TOF-400 for " + nameOfParticle,
179 "True time from P TOF-400 for " + nameOfParticle,
"False time from P TOF-400 for " + nameOfParticle);
183 "Total time from P TOF-700 for " + nameOfParticle,
184 "True time from P TOF-700 for " + nameOfParticle,
"False time from P TOF-700 for " + nameOfParticle);
189 "Total mass^2 from P TOF-400 for " + nameOfParticle,
190 "True mass^2 from P TOF-400 for " + nameOfParticle,
"False mass^2 from P TOF-400 for " + nameOfParticle);
197 "Total mass^2 from P TOF-700 for " + nameOfParticle,
198 "True mass^2 from P TOF-700 for " + nameOfParticle,
"False mass^2 from P TOF-700 for " + nameOfParticle);
210 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 500, 500);
216 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 1000, 500);
218 canvas->Divide(2, 1);
226 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 500, 500);
232 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 1000, 500);
234 canvas->Divide(2, 1);
242 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 2100, 500);
244 canvas->Divide(3, 1);
254 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 1000, 500);
256 canvas->Divide(2, 1);
264 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 1500, 500);
266 canvas->Divide(3, 1);
276 TCanvas* canvas =
CreateCanvas(canvasName.Data(), canvasName.Data(), 1000, 500);
278 canvas->Divide(2, 1);
280 drawHist->
DrawH1(canvas, efficiency);
282 drawHist->
DrawH1(canvas, contamination);
Bool_t Add(const vector< Double_t > &a, const vector< Double_t > &b, vector< Double_t > &c)
Create report for tracking QA.
FairTask for pid performance calculation.
void DrawH2(TCanvas *canvas, TH2 *hist, HistScale logx=kLinear, HistScale logy=kLinear, HistScale logz=kLinear, const string &drawOpt="COLZ")
void DrawMainCanvas(TString)
void DrawH1(TCanvas *canvas, 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)
TH1 * H1(const TString &name) const
Return pointer to TH1 histogram.
virtual void Draw()
Inherited from BmnSimulationReport.
void DrawTwoH2(const TString canvasName, const TString name1, const TString name2)
void DrawTwoH1(const TString canvasName, const TString name1, const TString name2, const TString drawOpt)
void DrawOneH1(const TString canvasName, const TString name1, const TString drawOpt)
unordered_map< Double_t, string > fMassTable
void DrawTwoBananas(const TString canvasName, const TString name1, const TString name2)
void DrawOneH2(const TString canvasName, const TString name1)
void DrawThreeH1(const TString canvasName, const TString name1, const TString name2, const TString name3)
void DrawThreeH2(const TString canvasName, const TString name1, const TString name2, const TString name3)
BmnPidQaReport()
Constructor.
void DrawEffCont(const TString canvasName, TEfficiency *, TEfficiency *)
virtual ~BmnPidQaReport()
Destructor.
virtual void Create()
Pure abstract function which is called from public Create() function. This function has to write repo...
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 SetReportName(TString name)
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...
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...
ostream & Out() const
All text output goes to this stream.
Base class for simulation reports.
BmnHistManager * HM() const
Return pointer to Histogram manager.
void SetDefaultDrawStyle()