Skip to content

Commit dedf0dd

Browse files
committed
GPU QA: Add track t0 QA
1 parent bd41c6a commit dedf0dd

File tree

2 files changed

+71
-6
lines changed

2 files changed

+71
-6
lines changed

GPU/GPUTracking/qa/GPUQA.cxx

Lines changed: 66 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -531,10 +531,12 @@ int32_t GPUQA::InitQACreateHistograms()
531531
snprintf(name, 2048, i ? "nrows_with_cluster" : "nclusters");
532532
createHist(mNCl[i], name, name, 160, 0, 159);
533533
}
534-
snprintf(name, 2048, "tracks");
535534
std::unique_ptr<double[]> binsPt{CreateLogAxis(AXIS_BINS[4], PT_MIN_CLUST, PT_MAX)};
536-
createHist(mTracks, name, name, AXIS_BINS[4], binsPt.get());
537-
createHist(mClXY, "clXY", "clXY", 1000, -250, 250, 1000, -250, 250);
535+
createHist(mTracks, "tracks_pt", "tracks_pt", AXIS_BINS[4], binsPt.get());
536+
const uint32_t maxTime = (mTracking && mTracking->GetParam().continuousMaxTimeBin > 0) ? mTracking->GetParam().continuousMaxTimeBin : TPC_MAX_TIME_BIN_TRIGGERED;
537+
createHist(mT0[0], "tracks_t0", "tracks_t0", (maxTime + 1) / 10, 0, maxTime);
538+
createHist(mT0[1], "tracks_t0_res", "tracks_t0_res", 1000, -100, 100);
539+
createHist(mClXY, "clXY", "clXY", 1000, -250, 250, 1000, -250, 250); // TODO: Pass name only once
538540
}
539541

540542
if ((mQATasks & taskClusterCounts) && mConfig.clusterRejectionHistograms) {
@@ -1732,6 +1734,11 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
17321734
}
17331735
}
17341736
mNCl[1]->Fill(nClCorrected);
1737+
mT0[0]->Fill(track.GetParam().GetTZOffset());
1738+
if (mTrackMCLabels.size() && !mTrackMCLabels[i].isFake() && !track.MergedLooper() && !track.CCE()) {
1739+
const auto& info = GetMCTrack(mTrackMCLabels[i]);
1740+
mT0[1]->Fill(track.GetParam().GetTZOffset() - info.t0);
1741+
}
17351742
}
17361743
if (mClNative && mTracking && mTracking->GetTPCTransformHelper()) {
17371744
for (uint32_t i = 0; i < GPUChainTracking::NSECTORS; i++) {
@@ -2130,15 +2137,23 @@ int32_t GPUQA::DrawQAHistograms(TObjArray* qcout)
21302137

21312138
// Create Canvas for track statistic histos
21322139
if (mQATasks & taskTrackStatistics) {
2133-
mCTracks = createGarbageCollected<TCanvas>("ctracks", "Track Pt", 0, 0, 700, 700. * 2. / 3.);
2140+
mCTracks = createGarbageCollected<TCanvas>("ctrackspt", "Track Pt", 0, 0, 700, 700. * 2. / 3.);
21342141
mCTracks->cd();
21352142
mPTracks = createGarbageCollected<TPad>("p0", "", 0.0, 0.0, 1.0, 1.0);
21362143
mPTracks->Draw();
21372144
mLTracks = createGarbageCollected<TLegend>(0.9 - legendSpacingString * 1.45, 0.93 - (0.93 - 0.86) / 2. * (float)ConfigNumInputs, 0.98, 0.949);
21382145
SetLegend(mLTracks);
21392146

21402147
for (int32_t i = 0; i < 2; i++) {
2141-
snprintf(name, 2048, "cncl%d Pull", i);
2148+
snprintf(name, 2048, "ctrackst0%d", i);
2149+
mCT0[i] = createGarbageCollected<TCanvas>(name, "Track T0", 0, 0, 700, 700. * 2. / 3.);
2150+
mCT0[i]->cd();
2151+
mPT0[i] = createGarbageCollected<TPad>("p0", "", 0.0, 0.0, 1.0, 1.0);
2152+
mPT0[i]->Draw();
2153+
mLT0[i] = createGarbageCollected<TLegend>(0.9 - legendSpacingString * 1.45, 0.93 - (0.93 - 0.86) / 2. * (float)ConfigNumInputs, 0.98, 0.949);
2154+
SetLegend(mLT0[i]);
2155+
2156+
snprintf(name, 2048, "cncl%d", i);
21422157
mCNCl[i] = createGarbageCollected<TCanvas>(name, i ? "Number of clusters (corrected for multiple per row)" : "Number of clusters per track", 0, 0, 700, 700. * 2. / 3.);
21432158
mCNCl[i]->cd();
21442159
mPNCl[i] = createGarbageCollected<TPad>("p0", "", 0.0, 0.0, 1.0, 1.0);
@@ -2742,7 +2757,7 @@ int32_t GPUQA::DrawQAHistograms(TObjArray* qcout)
27422757
if (mQATasks & taskTrackStatistics) {
27432758
// Process track statistic histograms
27442759
float tmpMax = 0.;
2745-
for (int32_t k = 0; k < ConfigNumInputs; k++) {
2760+
for (int32_t k = 0; k < ConfigNumInputs; k++) { // TODO: Simplify this drawing, avoid copy&paste
27462761
TH1F* e = mTracks;
27472762
if (GetHist(e, tin, k, nNewInput) == nullptr) {
27482763
continue;
@@ -2786,6 +2801,51 @@ int32_t GPUQA::DrawQAHistograms(TObjArray* qcout)
27862801
}
27872802

27882803
for (int32_t i = 0; i < 2; i++) {
2804+
tmpMax = 0.;
2805+
for (int32_t k = 0; k < ConfigNumInputs; k++) {
2806+
TH1F* e = mT0[i];
2807+
if (GetHist(e, tin, k, nNewInput) == nullptr) {
2808+
continue;
2809+
}
2810+
e->SetMaximum(-1111);
2811+
if (e->GetMaximum() > tmpMax) {
2812+
tmpMax = e->GetMaximum();
2813+
}
2814+
}
2815+
mPT0[i]->cd();
2816+
for (int32_t k = 0; k < ConfigNumInputs; k++) {
2817+
TH1F* e = mT0[i];
2818+
if (GetHist(e, tin, k, nNewInput) == nullptr) {
2819+
continue;
2820+
}
2821+
if (tout && !mConfig.inputHistogramsOnly && k == 0) {
2822+
e->Write();
2823+
}
2824+
e->SetMaximum(tmpMax * 1.02);
2825+
e->SetMinimum(tmpMax * -0.02);
2826+
e->SetStats(kFALSE);
2827+
e->SetLineWidth(1);
2828+
e->GetYaxis()->SetTitle("a.u.");
2829+
e->GetXaxis()->SetTitle(i ? "to vs t0_{mc}" : "t0");
2830+
if (qcout) {
2831+
qcout->Add(e);
2832+
}
2833+
e->SetMarkerColor(kBlack);
2834+
e->SetLineColor(colorNums[k % COLORCOUNT]);
2835+
e->Draw(k == 0 ? "" : "same");
2836+
GetName(fname, k);
2837+
snprintf(name, 2048, "%sTrack T0 %s", fname, i ? "" : "resolution");
2838+
mLT0[i]->AddEntry(e, name, "l");
2839+
}
2840+
mLT0[i]->Draw();
2841+
mCT0[i]->cd();
2842+
snprintf(name, 2048, "plots/t0%s.pdf", i ? "_res" : "");
2843+
mCT0[i]->Print(name);
2844+
if (mConfig.writeRootFiles) {
2845+
snprintf(name, 2048, "plots/t0%s.root", i ? "_res" : "");
2846+
mCT0[i]->Print(name);
2847+
}
2848+
27892849
tmpMax = 0.;
27902850
for (int32_t k = 0; k < ConfigNumInputs; k++) {
27912851
TH1F* e = mNCl[i];

GPU/GPUTracking/qa/GPUQA.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,11 @@ class GPUQA
305305
TPad* mPNCl[2];
306306
TLegend* mLNCl[2];
307307

308+
TH1F* mT0[2];
309+
TCanvas* mCT0[2];
310+
TPad* mPT0[2];
311+
TLegend* mLT0[2];
312+
308313
TH2F* mClXY;
309314
TCanvas* mCClXY;
310315
TPad* mPClXY;

0 commit comments

Comments
 (0)