Skip to content

Commit 9f9a243

Browse files
committed
Add DCAFitterN QA
1 parent 2f1a4db commit 9f9a243

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

ALICE3/TableProducer/alice3MulticharmFinder.cxx

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,9 @@ struct Alice3MulticharmFinder {
227227
if (nCand == 0) {
228228
return false;
229229
}
230+
231+
const u_int8_t fitterStatusCode = fitter.getFitStatus();
232+
histos.fill(HIST("hFitterStatusCode"), fitterStatusCode);
230233
//}-{}-{}-{}-{}-{}-{}-{}-{}-{}
231234

232235
o2::track::TrackParCov t0new = fitter.getTrack(0);
@@ -298,6 +301,9 @@ struct Alice3MulticharmFinder {
298301
if (nCand == 0) {
299302
return false;
300303
}
304+
305+
const u_int8_t fitter3StatusCode = fitter3.getFitStatus();
306+
histos.fill(HIST("hFitter3StatusCode"), fitter3StatusCode);
301307
//}-{}-{}-{}-{}-{}-{}-{}-{}-{}
302308

303309
t0 = fitter3.getTrack(0);
@@ -433,6 +439,48 @@ struct Alice3MulticharmFinder {
433439
fitter3.setBz(magneticField);
434440
fitter3.setMatCorrType(o2::base::Propagator::MatCorrType::USEMatCorrNONE);
435441

442+
auto hFitterStatusCode = histos.add<TH1>("hFitterStatusCode", "hFitterStatusCode", kTH1D, {{15, -0.5, 14.5}});
443+
hFitterStatusCode->GetXaxis()->SetBinLabel(1, "None"); // no status set (should not be possible!)
444+
445+
/* Good Conditions */
446+
hFitterStatusCode->GetXaxis()->SetBinLabel(2, "Converged"); // fit converged
447+
hFitterStatusCode->GetXaxis()->SetBinLabel(3, "MaxIter"); // max iterations reached before fit convergence
448+
449+
/* Error Conditions */
450+
hFitterStatusCode->GetXaxis()->SetBinLabel(4, "NoCrossing"); // no reasaonable crossing was found
451+
hFitterStatusCode->GetXaxis()->SetBinLabel(5, "RejRadius"); // radius of crossing was not acceptable
452+
hFitterStatusCode->GetXaxis()->SetBinLabel(6, "RejTrackX"); // one candidate track x was below the mimimum required radius
453+
hFitterStatusCode->GetXaxis()->SetBinLabel(7, "RejTrackRoughZ"); // rejected by rough cut on tracks Z difference
454+
hFitterStatusCode->GetXaxis()->SetBinLabel(8, "RejChi2Max"); // rejected by maximum chi2 cut
455+
hFitterStatusCode->GetXaxis()->SetBinLabel(9, "FailProp"); // propagation of at least prong to PCA failed
456+
hFitterStatusCode->GetXaxis()->SetBinLabel(10, "FailInvCov"); // inversion of cov.-matrix failed
457+
hFitterStatusCode->GetXaxis()->SetBinLabel(11, "FailInvWeight"); // inversion of Ti weight matrix failed
458+
hFitterStatusCode->GetXaxis()->SetBinLabel(12, "FailInv2ndDeriv"); // inversion of 2nd derivatives failed
459+
hFitterStatusCode->GetXaxis()->SetBinLabel(13, "FailCorrTracks"); // correction of tracks to updated x failed
460+
hFitterStatusCode->GetXaxis()->SetBinLabel(14, "FailCloserAlt"); // alternative PCA is closer
461+
hFitterStatusCode->GetXaxis()->SetBinLabel(15, "NStatusesDefined");
462+
463+
auto hFitter3StatusCode = histos.add<TH1>("hFitter3StatusCode", "hFitter3StatusCode", kTH1D, {{15, -0.5, 14.5}});
464+
hFitter3StatusCode->GetXaxis()->SetBinLabel(1, "None"); // no status set (should not be possible!)
465+
466+
/* Good Conditions */
467+
hFitter3StatusCode->GetXaxis()->SetBinLabel(2, "Converged"); // fit converged
468+
hFitter3StatusCode->GetXaxis()->SetBinLabel(3, "MaxIter"); // max iterations reached before fit convergence
469+
470+
/* Error Conditions */
471+
hFitter3StatusCode->GetXaxis()->SetBinLabel(4, "NoCrossing"); // no reasaonable crossing was found
472+
hFitter3StatusCode->GetXaxis()->SetBinLabel(5, "RejRadius"); // radius of crossing was not acceptable
473+
hFitter3StatusCode->GetXaxis()->SetBinLabel(6, "RejTrackX"); // one candidate track x was below the mimimum required radius
474+
hFitter3StatusCode->GetXaxis()->SetBinLabel(7, "RejTrackRoughZ"); // rejected by rough cut on tracks Z difference
475+
hFitter3StatusCode->GetXaxis()->SetBinLabel(8, "RejChi2Max"); // rejected by maximum chi2 cut
476+
hFitter3StatusCode->GetXaxis()->SetBinLabel(9, "FailProp"); // propagation of at least prong to PCA failed
477+
hFitter3StatusCode->GetXaxis()->SetBinLabel(10, "FailInvCov"); // inversion of cov.-matrix failed
478+
hFitter3StatusCode->GetXaxis()->SetBinLabel(11, "FailInvWeight"); // inversion of Ti weight matrix failed
479+
hFitter3StatusCode->GetXaxis()->SetBinLabel(12, "FailInv2ndDeriv"); // inversion of 2nd derivatives failed
480+
hFitter3StatusCode->GetXaxis()->SetBinLabel(13, "FailCorrTracks"); // correction of tracks to updated x failed
481+
hFitter3StatusCode->GetXaxis()->SetBinLabel(14, "FailCloserAlt"); // alternative PCA is closer
482+
hFitter3StatusCode->GetXaxis()->SetBinLabel(15, "NStatusesDefined");
483+
436484
INSERT_HIST(std::string("h2dGenXi"), "h2dGenXi", {kTH2D, {{axisPt, axisEta}}});
437485
INSERT_HIST(std::string("h2dGenXiC"), "h2dGenXiC", {kTH2D, {{axisPt, axisEta}}});
438486
INSERT_HIST(std::string("h2dGenXiCC"), "h2dGenXiCC", {kTH2D, {{axisPt, axisEta}}});

ALICE3/TableProducer/alice3strangenessFinder.cxx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,27 @@ struct Alice3strangenessFinder {
153153
fitter.setMatCorrType(o2::base::Propagator::MatCorrType::USEMatCorrNONE);
154154

155155
histos.add("hFitterQA", "", kTH1D, {{10, 0, 10}}); // For QA reasons, counting found candidates at different stages
156+
auto hFitterStatusCode = histos.add<TH1>("hFitterStatusCode", "hFitterStatusCode", kTH1D, {{15, -0.5, 14.5}});
157+
hFitterStatusCode->GetXaxis()->SetBinLabel(1, "None"); // no status set (should not be possible!)
158+
159+
/* Good Conditions */
160+
hFitterStatusCode->GetXaxis()->SetBinLabel(2, "Converged"); // fit converged
161+
hFitterStatusCode->GetXaxis()->SetBinLabel(3, "MaxIter"); // max iterations reached before fit convergence
162+
163+
/* Error Conditions */
164+
hFitterStatusCode->GetXaxis()->SetBinLabel(4, "NoCrossing"); // no reasaonable crossing was found
165+
hFitterStatusCode->GetXaxis()->SetBinLabel(5, "RejRadius"); // radius of crossing was not acceptable
166+
hFitterStatusCode->GetXaxis()->SetBinLabel(6, "RejTrackX"); // one candidate track x was below the mimimum required radius
167+
hFitterStatusCode->GetXaxis()->SetBinLabel(7, "RejTrackRoughZ"); // rejected by rough cut on tracks Z difference
168+
hFitterStatusCode->GetXaxis()->SetBinLabel(8, "RejChi2Max"); // rejected by maximum chi2 cut
169+
hFitterStatusCode->GetXaxis()->SetBinLabel(9, "FailProp"); // propagation of at least prong to PCA failed
170+
hFitterStatusCode->GetXaxis()->SetBinLabel(10, "FailInvCov"); // inversion of cov.-matrix failed
171+
hFitterStatusCode->GetXaxis()->SetBinLabel(11, "FailInvWeight"); // inversion of Ti weight matrix failed
172+
hFitterStatusCode->GetXaxis()->SetBinLabel(12, "FailInv2ndDeriv"); // inversion of 2nd derivatives failed
173+
hFitterStatusCode->GetXaxis()->SetBinLabel(13, "FailCorrTracks"); // correction of tracks to updated x failed
174+
hFitterStatusCode->GetXaxis()->SetBinLabel(14, "FailCloserAlt"); // alternative PCA is closer
175+
hFitterStatusCode->GetXaxis()->SetBinLabel(15, "NStatusesDefined");
176+
156177
histos.add("hPtPosDau", "", kTH1D, {axisPt});
157178
histos.add("hPtNegDau", "", kTH1D, {axisPt});
158179
histos.add("hPtPosDauAfterV0Finding", "", kTH2D, {axisPt, axisPt});
@@ -220,6 +241,9 @@ struct Alice3strangenessFinder {
220241
} catch (...) {
221242
return false;
222243
}
244+
245+
const u_int8_t fitterStatusCode = fitter.getFitStatus();
246+
histos.fill(HIST("hFitterStatusCode"), fitterStatusCode);
223247
histos.fill(HIST("hFitterQA"), 1.5);
224248
if (nCand == 0) {
225249
LOG(info) << "0 candidates found by fitter";

0 commit comments

Comments
 (0)