Skip to content

Commit a322d7e

Browse files
authored
[ALICE3] Add process function to a3multicharm finding subscribing to strangeness builder output (#17092)
1 parent 35be00b commit a322d7e

6 files changed

Lines changed: 413 additions & 492 deletions

File tree

ALICE3/DataModel/OTFMulticharm.h

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,6 @@ DECLARE_SOA_COLUMN(XiccDauDCA, xiccDauDCA, float);
5353
DECLARE_SOA_COLUMN(XiccDCAxy, xiccDCAxy, float);
5454
DECLARE_SOA_COLUMN(XiccDCAz, xiccDCAz, float);
5555

56-
DECLARE_SOA_COLUMN(BachDCAxy, bachDCAxy, float);
57-
DECLARE_SOA_COLUMN(BachDCAz, bachDCAz, float);
58-
DECLARE_SOA_COLUMN(PosDCAxy, posDCAxy, float);
59-
DECLARE_SOA_COLUMN(PosDCAz, posDCAz, float);
60-
DECLARE_SOA_COLUMN(NegDCAxy, negDCAxy, float);
61-
DECLARE_SOA_COLUMN(NegDCAz, negDCAz, float);
62-
6356
DECLARE_SOA_COLUMN(Pi1cDCAxy, pi1cDCAxy, float);
6457
DECLARE_SOA_COLUMN(Pi1cDCAz, pi1cDCAz, float);
6558
DECLARE_SOA_COLUMN(Pi2cDCAxy, pi2cDCAxy, float);
@@ -75,19 +68,9 @@ DECLARE_SOA_COLUMN(XicDistanceFromPV, xicDistanceFromPV, float);
7568
DECLARE_SOA_COLUMN(XiccProperLength, xiccProperLength, float);
7669

7770
// Daughter info
78-
DECLARE_SOA_COLUMN(PosPt, posPt, float);
79-
DECLARE_SOA_COLUMN(PosEta, posEta, float);
80-
DECLARE_SOA_COLUMN(NegPt, negPt, float);
81-
DECLARE_SOA_COLUMN(NegEta, negEta, float);
82-
DECLARE_SOA_COLUMN(BachPt, bachPt, float);
83-
DECLARE_SOA_COLUMN(BachEta, bachEta, float);
84-
DECLARE_SOA_COLUMN(BachPhi, bachPhi, float);
8571
DECLARE_SOA_COLUMN(Pi1cPt, pi1cPt, float);
86-
DECLARE_SOA_COLUMN(Pi1cEta, pi1cEta, float);
8772
DECLARE_SOA_COLUMN(Pi2cPt, pi2cPt, float);
88-
DECLARE_SOA_COLUMN(Pi2cEta, pi2cEta, float);
8973
DECLARE_SOA_COLUMN(PiccPt, piccPt, float);
90-
DECLARE_SOA_COLUMN(PiccEta, piccEta, float);
9174

9275
} // namespace otfmulticharm
9376

@@ -133,26 +116,6 @@ DECLARE_SOA_TABLE(MCharmCores, "AOD", "MCharmCores",
133116
otfmulticharm::PiccPt,
134117
otfmulticharm::LUTConfigId);
135118

136-
DECLARE_SOA_TABLE(MCharmExtra, "AOD", "MCharmExtra",
137-
otfmulticharm::BachPt,
138-
otfmulticharm::BachEta,
139-
otfmulticharm::BachDCAxy,
140-
otfmulticharm::BachDCAz,
141-
142-
otfmulticharm::PosPt,
143-
otfmulticharm::PosEta,
144-
otfmulticharm::PosDCAxy,
145-
otfmulticharm::PosDCAz,
146-
147-
otfmulticharm::NegPt,
148-
otfmulticharm::NegEta,
149-
otfmulticharm::NegDCAxy,
150-
otfmulticharm::NegDCAz,
151-
152-
otfmulticharm::Pi1cEta,
153-
otfmulticharm::Pi2cEta,
154-
otfmulticharm::PiccEta);
155-
156119
} // namespace o2::aod
157120

158121
#endif // ALICE3_DATAMODEL_OTFMULTICHARM_H_

ALICE3/DataModel/OTFStrangeness.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ DECLARE_SOA_INDEX_COLUMN(Collision, collision);
4141
DECLARE_SOA_INDEX_COLUMN_FULL(CascadeTrack, cascadeTrack, int, Tracks, "_Cascade"); //!
4242
DECLARE_SOA_INDEX_COLUMN_FULL(PosTrack, posTrack, int, Tracks, "_Pos"); //!
4343
DECLARE_SOA_INDEX_COLUMN_FULL(NegTrack, negTrack, int, Tracks, "_Neg"); //!
44-
DECLARE_SOA_INDEX_COLUMN_FULL(BachTrack, bachTrack, int, Tracks, "_Bach"); //!
44+
DECLARE_SOA_INDEX_COLUMN_FULL(Bachelor, bachelor, int, Tracks, "_Bach"); //!
4545

4646
DECLARE_SOA_INDEX_COLUMN(McParticle, mcParticle);
4747

@@ -53,6 +53,8 @@ DECLARE_SOA_COLUMN(CascRadius, cascRadius, float);
5353
DECLARE_SOA_COLUMN(CascRadiusMC, cascRadiusMC, float);
5454
DECLARE_SOA_COLUMN(MLambda, mLambda, float);
5555
DECLARE_SOA_COLUMN(MXi, mXi, float);
56+
DECLARE_SOA_COLUMN(DCAXYCascToPV, dcaXYCascToPV, float);
57+
DECLARE_SOA_COLUMN(DCAZCascToPV, dcaZCascToPV, float);
5658

5759
// strangeness tracking
5860
DECLARE_SOA_COLUMN(FindableClusters, findableClusters, int);
@@ -65,7 +67,7 @@ DECLARE_SOA_TABLE(UpgradeCascades, "AOD", "UPGRADECASCADES",
6567
otfcascade::CascadeTrackId,
6668
otfcascade::PosTrackId,
6769
otfcascade::NegTrackId,
68-
otfcascade::BachTrackId,
70+
otfcascade::BachelorId,
6971
otfcascade::DcaV0Daughters,
7072
otfcascade::DcaCascadeDaughters,
7173
otfcascade::V0Radius,
@@ -74,12 +76,16 @@ DECLARE_SOA_TABLE(UpgradeCascades, "AOD", "UPGRADECASCADES",
7476
otfcascade::MLambda,
7577
otfcascade::MXi,
7678
otfcascade::FindableClusters,
77-
otfcascade::FoundClusters);
79+
otfcascade::FoundClusters,
80+
otfcascade::DCAXYCascToPV,
81+
otfcascade::DCAZCascToPV);
7882

7983
using UpgradeCascade = UpgradeCascades::iterator;
8084

8185
DECLARE_SOA_TABLE(A3CascadeMcLabels, "AOD", "A3CASCADEMCLABELS",
8286
o2::soa::Index<>, otfcascade::McParticleId);
87+
DECLARE_SOA_TABLE(UpgradeCascadeMcLabels, "AOD", "UPGRADECASCMCLAB",
88+
o2::soa::Index<>, otfcascade::McParticleId);
8389

8490
namespace casc_pid
8591
{

ALICE3/TableProducer/OTF/onTheFlyTracker.cxx

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ struct OnTheFlyTracker {
144144
Produces<aod::UpgradeCascades> tableUpgradeCascades;
145145
Produces<aod::OTFLUTConfigId> tableOTFLUTConfigId;
146146
Produces<aod::UpgradeV0s> tableUpgradeV0s;
147+
Produces<aod::UpgradeCascadeMcLabels> tableUpgradeCascadeMcLabels;
147148

148149
// optionally produced, empty (to be tuned later)
149150
Produces<aod::StoredTracksExtra_002> tableStoredTracksExtra; // base table, extend later
@@ -1315,8 +1316,9 @@ struct OnTheFlyTracker {
13151316
} // end cascade kink building
13161317

13171318
// +-~-+-~-+-~-+-~-+-~-+-~-+-~-+-~-+-~-+-~-+-~-+-~-+-~-+
1319+
double dcaXY{999.f}, dcaZ{999.f};
1320+
o2::track::TrackParCov trackParametrization(xiTrackParCov);
13181321
if (cascadeDecaySettings.doXiQA) {
1319-
double dcaXY{-1.}, dcaZ{-1.};
13201322
if (reconstructedCascade) {
13211323
getHist(TH2, histPath + "hRecoXi")->Fill(xiDecayRadius2D, mcParticle.pt());
13221324
getHist(TH1, histPath + "hMassLambda")->Fill(thisCascade.mLambda);
@@ -1325,40 +1327,37 @@ struct OnTheFlyTracker {
13251327
getHist(TH2, histPath + "h2dDeltaPtVsPt")->Fill(thisCascade.pt, (mcParticle.pt() - thisCascade.pt) / thisCascade.pt);
13261328
getHist(TH2, histPath + "h2dDeltaEtaVsPt")->Fill(thisCascade.pt, mcParticle.eta() - thisCascade.eta);
13271329
getHist(TH2, histPath + "hFoundVsFindable")->Fill(thisCascade.findableClusters, thisCascade.foundClusters);
1328-
1329-
o2::track::TrackParCov trackParametrization(xiTrackParCov);
1330-
trackParametrization.propagateToDCA(primaryVertex, mMagneticField, &dcaInfo);
13311330
getHist(TH2, histPath + "h2dDCAxyCascade")->Fill(trackParametrization.getPt(), dcaXY * 1e+4); // in microns, please
13321331
getHist(TH2, histPath + "h2dDCAzCascade")->Fill(trackParametrization.getPt(), dcaZ * 1e+4); // in microns, please
13331332
}
13341333
if (isReco[0]) {
13351334
getHist(TH2, histPath + "hRecoPiFromXi")->Fill(xiDecayRadius2D, cascadeDecayProducts[0].Pt());
1336-
o2::track::TrackParCov trackParametrizationCascProng0(xiTrackParCov);
1337-
if (populateTracksDCA && xiTrackParCov.propagateToDCA(primaryVertex, mMagneticField, &dcaInfo)) { // FIXME: this is not the right trackParametrization, need to propagate the bachelor track
1335+
o2::track::TrackParCov trackParametrizationBachelor(xiTrackParCov);
1336+
if (populateTracksDCA && trackParametrizationBachelor.propagateToDCA(primaryVertex, mMagneticField, &dcaInfo)) {
13381337
dcaXY = dcaInfo.getY();
13391338
dcaZ = dcaInfo.getZ();
1340-
getHist(TH2, histPath + "h2dDCAxyCascadeBachelor")->Fill(trackParametrizationCascProng0.getPt(), dcaXY * 1e+4); // in microns, please
1341-
getHist(TH2, histPath + "h2dDCAzCascadeBachelor")->Fill(trackParametrizationCascProng0.getPt(), dcaZ * 1e+4); // in microns, please
1339+
getHist(TH2, histPath + "h2dDCAxyCascadeBachelor")->Fill(trackParametrizationBachelor.getPt(), dcaXY * 1e+4); // in microns, please
1340+
getHist(TH2, histPath + "h2dDCAzCascadeBachelor")->Fill(trackParametrizationBachelor.getPt(), dcaZ * 1e+4); // in microns, please
13421341
}
13431342
}
13441343
if (isReco[1]) {
13451344
getHist(TH2, histPath + "hRecoPiFromLa")->Fill(laDecayRadius2D, cascadeDecayProducts[1].Pt());
1346-
o2::track::TrackParCov trackParametrizationCascProng1(xiTrackParCov);
1347-
if (populateTracksDCA && xiTrackParCov.propagateToDCA(primaryVertex, mMagneticField, &dcaInfo)) { // FIXME: this is not the right trackParametrization, need to propagate the negative pion track
1345+
o2::track::TrackParCov trackParametrizationNegative(xiTrackParCov);
1346+
if (populateTracksDCA && trackParametrizationNegative.propagateToDCA(primaryVertex, mMagneticField, &dcaInfo)) {
13481347
dcaXY = dcaInfo.getY();
13491348
dcaZ = dcaInfo.getZ();
1350-
getHist(TH2, histPath + "h2dDCAxyCascadeNegative")->Fill(trackParametrizationCascProng1.getPt(), dcaXY * 1e+4); // in microns, please
1351-
getHist(TH2, histPath + "h2dDCAzCascadeNegative")->Fill(trackParametrizationCascProng1.getPt(), dcaZ * 1e+4); // in microns, please
1349+
getHist(TH2, histPath + "h2dDCAxyCascadeNegative")->Fill(trackParametrizationNegative.getPt(), dcaXY * 1e+4); // in microns, please
1350+
getHist(TH2, histPath + "h2dDCAzCascadeNegative")->Fill(trackParametrizationNegative.getPt(), dcaZ * 1e+4); // in microns, please
13521351
}
13531352
}
13541353
if (isReco[2]) {
13551354
getHist(TH2, histPath + "hRecoPrFromLa")->Fill(laDecayRadius2D, cascadeDecayProducts[2].Pt());
1356-
o2::track::TrackParCov trackParametrizationCascProng2(xiTrackParCov);
1357-
if (populateTracksDCA && xiTrackParCov.propagateToDCA(primaryVertex, mMagneticField, &dcaInfo)) { // FIXME: this is not the right trackParametrization, need to propagate the positive proton track
1355+
o2::track::TrackParCov trackParametrizationPositive(xiTrackParCov);
1356+
if (populateTracksDCA && trackParametrizationPositive.propagateToDCA(primaryVertex, mMagneticField, &dcaInfo)) {
13581357
dcaXY = dcaInfo.getY();
13591358
dcaZ = dcaInfo.getZ();
1360-
getHist(TH2, histPath + "h2dDCAxyCascadePositive")->Fill(trackParametrizationCascProng2.getPt(), dcaXY * 1e+4); // in microns, please
1361-
getHist(TH2, histPath + "h2dDCAzCascadePositive")->Fill(trackParametrizationCascProng2.getPt(), dcaZ * 1e+4); // in microns, please
1359+
getHist(TH2, histPath + "h2dDCAxyCascadePositive")->Fill(trackParametrizationPositive.getPt(), dcaXY * 1e+4); // in microns, please
1360+
getHist(TH2, histPath + "h2dDCAzCascadePositive")->Fill(trackParametrizationPositive.getPt(), dcaZ * 1e+4); // in microns, please
13621361
}
13631362
}
13641363
}
@@ -1368,7 +1367,11 @@ struct OnTheFlyTracker {
13681367
return;
13691368
}
13701369

1370+
// Make sure the xi variables are stored in dcaXY and dcaZ
1371+
trackParametrization.propagateToDCA(primaryVertex, mMagneticField, &dcaInfo);
1372+
13711373
// populate Cascades
1374+
tableUpgradeCascadeMcLabels(mcParticle.globalIndex());
13721375
tableUpgradeCascades(tableCollisions.lastIndex(),
13731376
thisCascade.cascadeTrackId,
13741377
thisCascade.positiveId,
@@ -1382,7 +1385,8 @@ struct OnTheFlyTracker {
13821385
thisCascade.mLambda,
13831386
thisCascade.mXi,
13841387
thisCascade.findableClusters,
1385-
thisCascade.foundClusters);
1388+
thisCascade.foundClusters,
1389+
dcaXY, dcaZ);
13861390
}
13871391

13881392
/// Function to study V0s and fill the relevant histograms

0 commit comments

Comments
 (0)