|
49 | 49 | #include <TPDGCode.h> |
50 | 50 |
|
51 | 51 | #include <algorithm> |
| 52 | +#include <chrono> |
52 | 53 | #include <array> |
53 | 54 | #include <chrono> |
54 | 55 | #include <cmath> |
@@ -106,6 +107,36 @@ struct MixingSeed { |
106 | 107 | BuiltKaonCandidate kaon; |
107 | 108 | }; |
108 | 109 |
|
| 110 | +struct BuiltKaonCandidate { |
| 111 | + o2::track::TrackParCov track; |
| 112 | + int64_t trackId = -1; |
| 113 | + int8_t sign = 0; |
| 114 | + float tpcNSigma = -999.f; // -999 when TPC is unavailable. |
| 115 | + float tofNSigma = -999.f; // -999 when TOF is unavailable. |
| 116 | + uint32_t detectorMap = 0; |
| 117 | +}; |
| 118 | + |
| 119 | +// Omega, Lambda and kaon candidates of one collision, built once and paired afterwards. |
| 120 | +// Lambdas and kaons are stored per charge of the Omega they can be paired with (see chargeIndex). |
| 121 | +struct CollisionCandidates { |
| 122 | + std::array<float, 3> primaryVertex{}; |
| 123 | + std::vector<BuiltOmegaCandidate> omegas; |
| 124 | + std::array<std::vector<BuiltLambdaCandidate>, 2> lambdas; |
| 125 | + std::array<std::vector<BuiltKaonCandidate>, 2> kaons; |
| 126 | +}; |
| 127 | + |
| 128 | +// Same-event double-Omega candidate used as a seed of the candidate-level event mixing. Seeds are |
| 129 | +// kept in a pool across dataframes, so they store copies of their daughters, with the collision and |
| 130 | +// track indices made unique across dataframes (see uniqueIndex). |
| 131 | +struct MixingSeed { |
| 132 | + int64_t collisionId = -1; |
| 133 | + std::array<float, 3> primaryVertex{}; |
| 134 | + float bz = 0.f; |
| 135 | + BuiltOmegaCandidate omega; |
| 136 | + BuiltLambdaCandidate lambda; |
| 137 | + BuiltKaonCandidate kaon; |
| 138 | +}; |
| 139 | + |
109 | 140 | struct doubleOmegaTreeCreator { |
110 | 141 | Produces<aod::DoubleOmegaTable> doubleOmegaTable; |
111 | 142 | Produces<aod::DoubleOmegaTableMC> doubleOmegaTableMC; |
@@ -135,6 +166,7 @@ struct doubleOmegaTreeCreator { |
135 | 166 | std::vector<int64_t> reconstructedDoubleOmegaIds; |
136 | 167 |
|
137 | 168 | Preslice<TracksFullMC> tracksPerCollision = aod::track::collisionId; |
| 169 | + Preslice<TracksFull> tracksPerCollisionData = aod::track::collisionId; |
138 | 170 | Preslice<aod::Cascades> rawCascadesPerCollision = aod::cascade::collisionId; |
139 | 171 | Preslice<aod::V0s> rawV0sPerCollision = aod::v0::collisionId; |
140 | 172 | Preslice<aod::DOmegaTracks> derivedTracksPerCollision = aod::domega::dOmegaCollId; |
|
0 commit comments