Skip to content

Commit 89d6407

Browse files
committed
GPU QA: Add track t0 QA
1 parent 2385435 commit 89d6407

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) {
@@ -1711,6 +1713,11 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
17111713
}
17121714
}
17131715
mNCl[1]->Fill(nClCorrected);
1716+
mT0[0]->Fill(track.GetParam().GetTZOffset());
1717+
if (mTrackMCLabels.size() && !mTrackMCLabels[i].isFake() && !track.MergedLooper() && !track.CCE()) {
1718+
const auto& info = GetMCTrack(mTrackMCLabels[i]);
1719+
mT0[1]->Fill(track.GetParam().GetTZOffset() - info.t0);
1720+
}
17141721
}
17151722
if (mClNative && mTracking && mTracking->GetTPCTransformHelper()) {
17161723
for (uint32_t i = 0; i < GPUChainTracking::NSECTORS; i++) {
@@ -2109,15 +2116,23 @@ int32_t GPUQA::DrawQAHistograms(TObjArray* qcout)
21092116

21102117
// Create Canvas for track statistic histos
21112118
if (mQATasks & taskTrackStatistics) {
2112-
mCTracks = createGarbageCollected<TCanvas>("ctracks", "Track Pt", 0, 0, 700, 700. * 2. / 3.);
2119+
mCTracks = createGarbageCollected<TCanvas>("ctrackspt", "Track Pt", 0, 0, 700, 700. * 2. / 3.);
21132120
mCTracks->cd();
21142121
mPTracks = createGarbageCollected<TPad>("p0", "", 0.0, 0.0, 1.0, 1.0);
21152122
mPTracks->Draw();
21162123
mLTracks = createGarbageCollected<TLegend>(0.9 - legendSpacingString * 1.45, 0.93 - (0.93 - 0.86) / 2. * (float)ConfigNumInputs, 0.98, 0.949);
21172124
SetLegend(mLTracks);
21182125

21192126
for (int32_t i = 0; i < 2; i++) {
2120-
snprintf(name, 2048, "cncl%d Pull", i);
2127+
snprintf(name, 2048, "ctrackst0%d", i);
2128+
mCT0[i] = createGarbageCollected<TCanvas>(name, "Track T0", 0, 0, 700, 700. * 2. / 3.);
2129+
mCT0[i]->cd();
2130+
mPT0[i] = createGarbageCollected<TPad>("p0", "", 0.0, 0.0, 1.0, 1.0);
2131+
mPT0[i]->Draw();
2132+
mLT0[i] = createGarbageCollected<TLegend>(0.9 - legendSpacingString * 1.45, 0.93 - (0.93 - 0.86) / 2. * (float)ConfigNumInputs, 0.98, 0.949);
2133+
SetLegend(mLT0[i]);
2134+
2135+
snprintf(name, 2048, "cncl%d", i);
21212136
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.);
21222137
mCNCl[i]->cd();
21232138
mPNCl[i] = createGarbageCollected<TPad>("p0", "", 0.0, 0.0, 1.0, 1.0);
@@ -2721,7 +2736,7 @@ int32_t GPUQA::DrawQAHistograms(TObjArray* qcout)
27212736
if (mQATasks & taskTrackStatistics) {
27222737
// Process track statistic histograms
27232738
float tmpMax = 0.;
2724-
for (int32_t k = 0; k < ConfigNumInputs; k++) {
2739+
for (int32_t k = 0; k < ConfigNumInputs; k++) { // TODO: Simplify this drawing, avoid copy&paste
27252740
TH1F* e = mTracks;
27262741
if (GetHist(e, tin, k, nNewInput) == nullptr) {
27272742
continue;
@@ -2765,6 +2780,51 @@ int32_t GPUQA::DrawQAHistograms(TObjArray* qcout)
27652780
}
27662781

27672782
for (int32_t i = 0; i < 2; i++) {
2783+
tmpMax = 0.;
2784+
for (int32_t k = 0; k < ConfigNumInputs; k++) {
2785+
TH1F* e = mT0[i];
2786+
if (GetHist(e, tin, k, nNewInput) == nullptr) {
2787+
continue;
2788+
}
2789+
e->SetMaximum(-1111);
2790+
if (e->GetMaximum() > tmpMax) {
2791+
tmpMax = e->GetMaximum();
2792+
}
2793+
}
2794+
mPT0[i]->cd();
2795+
for (int32_t k = 0; k < ConfigNumInputs; k++) {
2796+
TH1F* e = mT0[i];
2797+
if (GetHist(e, tin, k, nNewInput) == nullptr) {
2798+
continue;
2799+
}
2800+
if (tout && !mConfig.inputHistogramsOnly && k == 0) {
2801+
e->Write();
2802+
}
2803+
e->SetMaximum(tmpMax * 1.02);
2804+
e->SetMinimum(tmpMax * -0.02);
2805+
e->SetStats(kFALSE);
2806+
e->SetLineWidth(1);
2807+
e->GetYaxis()->SetTitle("a.u.");
2808+
e->GetXaxis()->SetTitle(i ? "to vs t0_{mc}" : "t0");
2809+
if (qcout) {
2810+
qcout->Add(e);
2811+
}
2812+
e->SetMarkerColor(kBlack);
2813+
e->SetLineColor(colorNums[k % COLORCOUNT]);
2814+
e->Draw(k == 0 ? "" : "same");
2815+
GetName(fname, k);
2816+
snprintf(name, 2048, "%sTrack T0 %s", fname, i ? "" : "resolution");
2817+
mLT0[i]->AddEntry(e, name, "l");
2818+
}
2819+
mLT0[i]->Draw();
2820+
mCT0[i]->cd();
2821+
snprintf(name, 2048, "plots/t0%s.pdf", i ? "_res" : "");
2822+
mCT0[i]->Print(name);
2823+
if (mConfig.writeRootFiles) {
2824+
snprintf(name, 2048, "plots/t0%s.root", i ? "_res" : "");
2825+
mCT0[i]->Print(name);
2826+
}
2827+
27682828
tmpMax = 0.;
27692829
for (int32_t k = 0; k < ConfigNumInputs; k++) {
27702830
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)