Skip to content

Commit 4eddbc9

Browse files
committed
Add dE/dx plot to GPU QA
1 parent 3874e31 commit 4eddbc9

2 files changed

Lines changed: 54 additions & 16 deletions

File tree

GPU/GPUTracking/qa/GPUQA.cxx

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,10 @@ int32_t GPUQA::InitQACreateHistograms()
539539
}
540540
std::unique_ptr<double[]> binsPt{CreateLogAxis(AXIS_BINS[4], PT_MIN_CLUST, PT_MAX)};
541541
createHist(mTrackPt, "tracks_pt", "tracks_pt", AXIS_BINS[4], binsPt.get());
542+
for (int32_t i = 0; i < 2; i++) {
543+
snprintf(name, 2048, i ? "tracks_dedx_max" : "tracks_dedx_tot");
544+
createHist(mTrackdEdx[i], name, name, 200, -3, 1, 1000, 0, i ? 1500 : 5000);
545+
}
542546
const uint32_t maxTime = (mTracking && mTracking->GetParam().continuousMaxTimeBin > 0) ? mTracking->GetParam().continuousMaxTimeBin : constants::TPC_MAX_TIME_BIN_TRIGGERED;
543547
createHist(mT0[0], "tracks_t0", "tracks_t0", (maxTime + 1) / 10, 0, maxTime);
544548
createHist(mT0[1], "tracks_t0_res", "tracks_t0_res", 1000, -100, 100);
@@ -1745,6 +1749,12 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
17451749
continue;
17461750
}
17471751
mTrackPt->Fill(1.f / fabsf(track.GetParam().GetQPt()));
1752+
if (mParam->par.dodEdx && mParam->dodEdxEnabled && track.NClusters() >= 60) {
1753+
const GPUdEdxInfo& trackdEdx = mTracking->GetProcessors()->tpcMerger.MergedTracksdEdx()[i];
1754+
const float logp = logf(1.f / fabsf(track.GetParam().GetQPt()) * sqrtf(1.f + track.GetParam().GetDzDs() * track.GetParam().GetDzDs()));
1755+
mTrackdEdx[0]->Fill(logp, trackdEdx.dEdxTotTPC);
1756+
mTrackdEdx[1]->Fill(logp, trackdEdx.dEdxMaxTPC);
1757+
}
17481758
mNCl[0]->Fill(track.NClustersFitted());
17491759
uint32_t nClCorrected = 0;
17501760
const auto& trackClusters = mTracking->mIOPtrs.mergedTrackHits;
@@ -2255,12 +2265,15 @@ int32_t GPUQA::DrawQAHistograms(TObjArray* qcout)
22552265

22562266
// Create Canvas for track statistic histos
22572267
if (mQATasks & taskTrackStatistics) {
2258-
mCTrackPt = createGarbageCollected<TCanvas>("ctrackspt", "ctrackspt", 0, 0, 700, 700. * 2. / 3.);
2259-
mCTrackPt->cd();
2260-
mPTrackPt = createGarbageCollected<TPad>("p0", "", 0.0, 0.0, 1.0, 1.0);
2261-
mPTrackPt->Draw();
2262-
mLTrackPt = createGarbageCollected<TLegend>(0.9 - legendSpacingString * 1.5, 0.93 - (0.93 - 0.86) / 2. * (float)ConfigNumInputs, 0.98, 0.949);
2263-
SetLegend(mLTrackPt, true);
2268+
for (int32_t i = 0; i < 3; i++) {
2269+
snprintf(name, 2048, "ctracks%s", i ? (i == 2 ? "dedxmax" : "dedxtot") : "pt");
2270+
mCTracks[i] = createGarbageCollected<TCanvas>(name, name, 0, 0, 700, 700. * 2. / 3.);
2271+
mCTracks[i]->cd();
2272+
mPTracks[i] = createGarbageCollected<TPad>("p0", "", 0.0, 0.0, 1.0, 1.0);
2273+
mPTracks[i]->Draw();
2274+
mLTracks[i] = createGarbageCollected<TLegend>(0.9 - legendSpacingString * 1.5, 0.93 - (0.93 - 0.86) / 2. * (float)ConfigNumInputs, 0.98, 0.949);
2275+
SetLegend(mLTracks[i], true);
2276+
}
22642277

22652278
for (int32_t i = 0; i < 2; i++) {
22662279
snprintf(name, 2048, "ctrackst0%d", i);
@@ -2916,6 +2929,7 @@ int32_t GPUQA::DrawQAHistograms(TObjArray* qcout)
29162929

29172930
if (mQATasks & taskTrackStatistics) {
29182931
// Process track statistic histograms
2932+
29192933
float tmpMax = 0.;
29202934
for (int32_t k = 0; k < ConfigNumInputs; k++) { // TODO: Simplify this drawing, avoid copy&paste
29212935
TH1F* e = mTrackPt;
@@ -2927,8 +2941,8 @@ int32_t GPUQA::DrawQAHistograms(TObjArray* qcout)
29272941
tmpMax = e->GetMaximum();
29282942
}
29292943
}
2930-
mPTrackPt->cd();
2931-
mPTrackPt->SetLogx();
2944+
mPTracks[0]->cd();
2945+
mPTracks[0]->SetLogx();
29322946
for (int32_t k = 0; k < ConfigNumInputs; k++) {
29332947
TH1F* e = mTrackPt;
29342948
if (GetHist(e, tin, k, nNewInput) == nullptr) {
@@ -2952,17 +2966,40 @@ int32_t GPUQA::DrawQAHistograms(TObjArray* qcout)
29522966
e->SetLineColor(colorNums[k % COLORCOUNT]);
29532967
e->Draw(k == 0 ? "" : "same");
29542968
GetName(fname, k, mConfig.inputHistogramsOnly);
2955-
mLTrackPt->AddEntry(e, Form(mConfig.inputHistogramsOnly ? "%s" : "%sTrack #it{p}_{T}", fname), "l");
2969+
mLTracks[0]->AddEntry(e, Form(mConfig.inputHistogramsOnly ? "%s" : "%sTrack #it{p}_{T}", fname), "l");
29562970
}
2957-
mLTrackPt->Draw();
2971+
mLTracks[0]->Draw();
29582972
doPerfFigure(0.63, 0.7, 0.030);
2959-
mCTrackPt->cd();
2960-
mCTrackPt->Print(Form("%s/tracks.pdf", mConfig.plotsDir.c_str()));
2973+
mCTracks[0]->cd();
2974+
mCTracks[0]->Print(Form("%s/tracks%s.pdf", mConfig.plotsDir.c_str(), "pt"));
29612975
if (mConfig.writeFileExt != "") {
2962-
mCTrackPt->Print(Form("%s/tracks.%s", mConfig.plotsDir.c_str(), mConfig.writeFileExt.c_str()));
2976+
mCTracks[0]->Print(Form("%s/tracks%s.%s", mConfig.plotsDir.c_str(), "pt", mConfig.writeFileExt.c_str()));
29632977
}
29642978

29652979
for (int32_t i = 0; i < 2; i++) {
2980+
mPTracks[1 + i]->cd();
2981+
{
2982+
TH2F* e = mTrackdEdx[i];
2983+
if (tout && !mConfig.inputHistogramsOnly) {
2984+
e->Write();
2985+
}
2986+
// e->SetStats(kFALSE);
2987+
e->SetTitle(mConfig.plotsNoTitle ? "" : (i ? "Track dE/dx (Max)" : "Track dE/dx (Tot)"));
2988+
e->GetYaxis()->SetTitle(i ? "dE/dx (max)" : "dE/dx (tot)");
2989+
e->GetXaxis()->SetTitle("log(#it{p})");
2990+
e->GetXaxis()->SetTitleOffset(1.2);
2991+
if (qcout) {
2992+
qcout->Add(e);
2993+
}
2994+
e->SetOption("colz");
2995+
e->Draw();
2996+
}
2997+
mCTracks[1 + i]->cd();
2998+
mCTracks[1 + i]->Print(Form("%s/tracks%s.pdf", mConfig.plotsDir.c_str(), i ? "dedx_max" : "dedx_tot"));
2999+
if (mConfig.writeFileExt != "") {
3000+
mCTracks[1 + i]->Print(Form("%s/tracks%s.%s", mConfig.plotsDir.c_str(), i ? "dedx_max" : "dedx_tot", mConfig.writeFileExt.c_str()));
3001+
}
3002+
29663003
tmpMax = 0.;
29673004
for (int32_t k = 0; k < ConfigNumInputs; k++) {
29683005
TH1F* e = mT0[i];

GPU/GPUTracking/qa/GPUQA.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -292,9 +292,10 @@ class GPUQA
292292
} mClusterCounts;
293293

294294
TH1F* mTrackPt;
295-
TCanvas* mCTrackPt;
296-
TPad* mPTrackPt;
297-
TLegend* mLTrackPt;
295+
TH2F* mTrackdEdx[2];
296+
TCanvas* mCTracks[3];
297+
TPad* mPTracks[3];
298+
TLegend* mLTracks[3];
298299

299300
TH1F* mNCl[2];
300301
TCanvas* mCNCl[2];

0 commit comments

Comments
 (0)