Skip to content

Commit 51c08b8

Browse files
authored
[ALICE3] Add DCAFitterN QA (#15164)
1 parent 5f4ac20 commit 51c08b8

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-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: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
#include <TLorentzVector.h>
4545

4646
#include <cstdlib>
47+
#include <vector>
4748

4849
using namespace o2;
4950
// using namespace o2::analysis;
@@ -153,6 +154,27 @@ struct Alice3strangenessFinder {
153154
fitter.setMatCorrType(o2::base::Propagator::MatCorrType::USEMatCorrNONE);
154155

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

0 commit comments

Comments
 (0)