Skip to content

Commit b494a3a

Browse files
committed
Add fitter in reco and do appropriate handling in mcharm finder
1 parent f3dd7b4 commit b494a3a

File tree

2 files changed

+60
-16
lines changed

2 files changed

+60
-16
lines changed

ALICE3/TableProducer/OTF/onTheFlyTracker.cxx

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -919,7 +919,7 @@ struct OnTheFlyTracker {
919919
}
920920
}
921921

922-
if (nHits[1] < fastTrackerSettings.minSiliconHits || nHits[2] < fastTrackerSettings.minSiliconHits) {
922+
if (!isReco[1] || !isReco[2]) {
923923
tryKinkReco = true; // Lambda outside acceptance, set flag for kink reco to be used if mode 1
924924
}
925925

@@ -1150,12 +1150,27 @@ struct OnTheFlyTracker {
11501150
thisCascade.negativeId = -1;
11511151
}
11521152

1153+
int nCand = 0;
1154+
bool kinkFitter = true;
1155+
try {
1156+
nCand = fitter.process(trackedCasc, trackedBach);
1157+
} catch (...) {
1158+
kinkFitter = false;
1159+
}
1160+
1161+
if (nCand == 0) {
1162+
kinkFitter = false;
1163+
}
1164+
1165+
std::array<float, 3> kinkVtx = {-999, -999, -999};
1166+
kinkVtx = fitter.getPCACandidatePos();
1167+
11531168
thisCascade.bachelorId = lastTrackIndex + tracksAlice3.size() - isReco.size();
11541169
thisCascade.cascadeTrackId = lastTrackIndex + tracksAlice3.size(); // this should be ok
1155-
thisCascade.dcaV0dau = -1.f;
1156-
thisCascade.v0radius = -1.f;
1157-
thisCascade.dcacascdau = -1.f; // Fix me
1158-
thisCascade.cascradius = xiDecayRadius2D; // Fix me
1170+
thisCascade.dcaV0dau = -1.f; // unknown
1171+
thisCascade.v0radius = -1.f; // unknown
1172+
thisCascade.dcacascdau = std::sqrt(fitter.getChi2AtPCACandidate());
1173+
thisCascade.cascradius = std::hypot(kinkVtx[0], kinkVtx[1]);
11591174
thisCascade.cascradiusMC = xiDecayRadius2D;
11601175
thisCascade.mLambda = o2::constants::physics::MassLambda;
11611176
thisCascade.findableClusters = nCascHits;
@@ -1164,7 +1179,7 @@ struct OnTheFlyTracker {
11641179
std::array{pV0[0], pV0[1], pV0[2]}},
11651180
std::array{o2::constants::physics::MassPionCharged, o2::constants::physics::MassLambda});
11661181

1167-
tracksAlice3.push_back(TrackAlice3{cascadeTrack, mcParticle.globalIndex(), time, timeResolutionUs, false, false, 1, thisCascade.foundClusters});
1182+
tracksAlice3.push_back(TrackAlice3{trackedCasc, mcParticle.globalIndex(), time, timeResolutionUs, false, false, 1, thisCascade.foundClusters});
11681183

11691184
// add this cascade to vector (will fill cursor later with collision ID)
11701185
cascadesAlice3.push_back(thisCascade);

ALICE3/TableProducer/alice3MulticharmFinder.cxx

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,13 @@ struct Alice3MulticharmFinder {
200200
int nTPCHitsPiCC;
201201
} thisXiCCcandidate;
202202

203+
struct ProngInfo {
204+
float pt = 1e+10;
205+
float eta = 1e+10;
206+
float dcaXY = 1e+10;
207+
float dcaZ = 1e+10;
208+
};
209+
203210
template <typename TTrackType>
204211
bool buildDecayCandidateTwoBody(TTrackType const& t0, TTrackType const& t1, float mass0, float mass1)
205212
{
@@ -557,10 +564,6 @@ struct Alice3MulticharmFinder {
557564
}
558565

559566
uint32_t nCombinationsC = 0;
560-
auto bach = xiCand.bachTrack_as<Alice3Tracks>(); // de-reference bach track
561-
auto neg = xiCand.negTrack_as<Alice3Tracks>(); // de-reference neg track
562-
auto pos = xiCand.posTrack_as<Alice3Tracks>(); // de-reference pos track
563-
564567
if (!BIT_CHECK(xi.decayMap(), kTrueXiFromXiC)) {
565568
continue;
566569
}
@@ -822,13 +825,39 @@ struct Alice3MulticharmFinder {
822825
picc.hasSigPi(), picc.nSigmaPionRich(),
823826
getPdgCodeForTrack(picc));
824827

828+
829+
ProngInfo bachelor, positive, negative;
830+
if (xiCand.has_bachTrack()) {
831+
auto bach = xiCand.bachTrack_as<Alice3Tracks>(); // de-reference bach track
832+
bachelor.pt = bach.pt();
833+
bachelor.eta = bach.eta();
834+
bachelor.dcaXY = bach.dcaXY();
835+
bachelor.dcaZ = bach.dcaZ();
836+
}
837+
838+
if (xiCand.has_negTrack()) {
839+
auto neg = xiCand.negTrack_as<Alice3Tracks>(); // de-reference neg track
840+
negative.pt = neg.pt();
841+
negative.eta = neg.eta();
842+
negative.dcaXY = neg.dcaXY();
843+
negative.dcaZ = neg.dcaZ();
844+
}
845+
846+
if (xiCand.has_posTrack()) {
847+
auto pos = xiCand.posTrack_as<Alice3Tracks>(); // de-reference pos track
848+
positive.pt = pos.pt();
849+
positive.eta = pos.eta();
850+
positive.dcaXY = pos.dcaXY();
851+
positive.dcaZ = pos.dcaZ();
852+
}
853+
825854
multiCharmExtra(
826-
bach.pt(), bach.eta(),
827-
bach.dcaXY(), bach.dcaZ(),
828-
pos.pt(), pos.eta(),
829-
pos.dcaXY(), pos.dcaZ(),
830-
neg.pt(), neg.eta(),
831-
neg.dcaXY(), neg.dcaZ(),
855+
bachelor.pt, bachelor.eta,
856+
bachelor.dcaXY, bachelor.dcaZ,
857+
positive.pt, positive.eta,
858+
positive.dcaXY, positive.dcaZ,
859+
negative.pt, negative.eta,
860+
negative.dcaXY, negative.dcaZ,
832861
pi1c.eta(), pi2c.eta(), picc.eta());
833862
}
834863
}

0 commit comments

Comments
 (0)