Skip to content

Commit c4a1d49

Browse files
authored
[ALICE3] Strangeness finding with otf decayer output (#15569)
1 parent f7cb4d5 commit c4a1d49

File tree

6 files changed

+247
-104
lines changed

6 files changed

+247
-104
lines changed

ALICE3/DataModel/OTFMCParticle.h

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,22 @@ DECLARE_SOA_COLUMN(Y, y, float);
3434
DECLARE_SOA_COLUMN(IsAlive, isAlive, bool);
3535
DECLARE_SOA_COLUMN(IsPrimary, isPrimary, bool);
3636

37+
DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Mother0, mother0, int, "McPartsWithDau_Mother0"); //! Track index of the first mother
38+
DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Mother1, mother1, int, "McPartsWithDau_Mother1"); //! Track index of the last mother
39+
DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Daughter0, daughter0, int, "McPartsWithDau_Daughter0"); //! Track index of the first daugther
40+
DECLARE_SOA_SELF_INDEX_COLUMN_FULL(Daughter1, daughter1, int, "McPartsWithDau_Daughter1"); //! Track index of the last daugther
41+
DECLARE_SOA_SELF_ARRAY_INDEX_COLUMN(Mothers, mothers); //! Mother tracks (possible empty) array. Iterate over mcParticle.mothers_as<aod::McParticles>())
42+
DECLARE_SOA_SELF_SLICE_INDEX_COLUMN(Daughters, daughters); //! Daughter tracks (possibly empty) slice. Check for non-zero with mcParticle.has_daughters(). Iterate over mcParticle.daughters_as<aod::McParticles>())
3743
} // namespace otfmcparticle
3844

39-
DECLARE_SOA_TABLE_FULL(McPartsWithDau, "McPartsWithDau", "AOD", "MCPARTSWITHDAU",
45+
DECLARE_SOA_TABLE_FULL(McPartWithDaus, "McPartWithDaus", "AOD", "MCPARTSWITHDAU",
4046
o2::soa::Index<>,
4147
mcparticle::McCollisionId,
4248
mcparticle::PdgCode,
4349
mcparticle::StatusCode,
4450
mcparticle::Flags,
45-
mcparticle::MothersIds,
46-
mcparticle::DaughtersIdSlice,
51+
otfmcparticle::MothersIds,
52+
otfmcparticle::DaughtersIdSlice,
4753
mcparticle::Weight,
4854
mcparticle::Px,
4955
mcparticle::Py,
@@ -68,7 +74,18 @@ DECLARE_SOA_TABLE_FULL(McPartsWithDau, "McPartsWithDau", "AOD", "MCPARTSWITHDAU"
6874
mcparticle::GetProcess<mcparticle::Flags, mcparticle::StatusCode>,
6975
mcparticle::IsPhysicalPrimary<mcparticle::Flags>);
7076

71-
using McPartWithDau = McPartsWithDau::iterator;
77+
using McPartWithDau = McPartWithDaus::iterator;
78+
79+
namespace otfmctracklable
80+
{
81+
DECLARE_SOA_INDEX_COLUMN(McPartWithDau, mcPartWithDau); //! MC particle
82+
DECLARE_SOA_COLUMN(McMask, mcMask, uint16_t); //! Bit mask to indicate detector mismatches (bit ON means mismatch). Bit 0-6: mismatch at ITS layer. Bit 12: ITSAB tracklet mismatch. Bit 13: ITS-TPC mismatch. Bit 14: isNoise == True (global track), Bit 15: isFake == True (global track)
83+
} // namespace otfmctracklable
84+
85+
DECLARE_SOA_TABLE(McTrackWithDauLabels, "AOD", "MCTRACKWithDAULABEL", //! Table joined to the track table containing the MC index
86+
otfmctracklable::McPartWithDauId, otfmctracklable::McMask);
87+
88+
using McTrackWithDauLabel = McTrackWithDauLabels::iterator;
7289

7390
} // namespace o2::aod
7491

ALICE3/TableProducer/OTF/onTheFlyDecayer.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ static const std::vector<int> pdgCodes{kK0Short,
7272
kOmegaPlusBar};
7373

7474
struct OnTheFlyDecayer {
75-
Produces<aod::McPartsWithDau> tableMcParticlesWithDau;
75+
Produces<aod::McPartWithDaus> tableMcParticlesWithDau;
7676

7777
o2::upgrade::Decayer decayer;
7878
Service<o2::framework::O2DatabasePDG> pdgDB;

ALICE3/TableProducer/OTF/onTheFlyTracker.cxx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ struct OnTheFlyTracker {
124124
Produces<aod::StoredTracksCov> tableStoredTracksCov;
125125
Produces<aod::TracksCovExtension> tableTracksCovExtension;
126126
Produces<aod::McTrackLabels> tableMcTrackLabels;
127+
Produces<aod::McTrackWithDauLabels> tableMcTrackWithDauLabels;
127128
Produces<aod::TracksDCA> tableTracksDCA;
128129
Produces<aod::TracksDCACov> tableTracksDCACov;
129130
Produces<aod::CollisionsAlice3> tableCollisionsAlice3;
@@ -1871,7 +1872,7 @@ struct OnTheFlyTracker {
18711872
}
18721873
}
18731874

1874-
void processConfigurationDev(aod::McCollision const& mcCollision, aod::McPartsWithDau const& mcParticles, const int icfg)
1875+
void processConfigurationDev(aod::McCollision const& mcCollision, aod::McPartWithDaus const& mcParticles, const int icfg)
18751876
{
18761877
// const int lastTrackIndex = tableStoredTracksCov.lastIndex() + 1; // bookkeep the last added track
18771878
const std::string histPath = "Configuration_" + std::to_string(icfg) + "/";
@@ -2065,7 +2066,7 @@ struct OnTheFlyTracker {
20652066
trackParCov.getSigmaSnpZ(), trackParCov.getSigmaSnp2(), trackParCov.getSigmaTglY(), trackParCov.getSigmaTglZ(), trackParCov.getSigmaTglSnp(),
20662067
trackParCov.getSigmaTgl2(), trackParCov.getSigma1PtY(), trackParCov.getSigma1PtZ(), trackParCov.getSigma1PtSnp(), trackParCov.getSigma1PtTgl(),
20672068
trackParCov.getSigma1Pt2());
2068-
tableMcTrackLabels(trackParCov.mcLabel, 0);
2069+
tableMcTrackWithDauLabels(trackParCov.mcLabel, 0);
20692070
tableTracksExtraA3(trackParCov.nSiliconHits, trackParCov.nTPCHits);
20702071

20712072
// populate extra tables if required to do so
@@ -2111,7 +2112,7 @@ struct OnTheFlyTracker {
21112112
trackParCov.getSigmaSnpZ(), trackParCov.getSigmaSnp2(), trackParCov.getSigmaTglY(), trackParCov.getSigmaTglZ(), trackParCov.getSigmaTglSnp(),
21122113
trackParCov.getSigmaTgl2(), trackParCov.getSigma1PtY(), trackParCov.getSigma1PtZ(), trackParCov.getSigma1PtSnp(), trackParCov.getSigma1PtTgl(),
21132114
trackParCov.getSigma1Pt2());
2114-
tableMcTrackLabels(trackParCov.mcLabel, 0);
2115+
tableMcTrackWithDauLabels(trackParCov.mcLabel, 0);
21152116
tableTracksExtraA3(trackParCov.nSiliconHits, trackParCov.nTPCHits);
21162117

21172118
// populate extra tables if required to do so
@@ -2129,7 +2130,7 @@ struct OnTheFlyTracker {
21292130
}
21302131
}
21312132

2132-
void processDecayer(aod::McCollision const& mcCollision, aod::McPartsWithDau const& mcParticles)
2133+
void processDecayer(aod::McCollision const& mcCollision, aod::McPartWithDaus const& mcParticles)
21332134
{
21342135
for (size_t icfg = 0; icfg < mSmearer.size(); ++icfg) {
21352136
processConfigurationDev(mcCollision, mcParticles, static_cast<int>(icfg));

0 commit comments

Comments
 (0)