Skip to content

Commit c70c495

Browse files
committed
store wip
1 parent 45b27d1 commit c70c495

3 files changed

Lines changed: 48 additions & 35 deletions

File tree

ALICE3/Core/OTFParticle.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
namespace o2::upgrade
2929
{
30+
static constexpr uint8_t ProducedByDecayer = 0xFF;
3031

3132
class OTFParticle
3233
{

ALICE3/TableProducer/OTF/onTheFlyDecayer.cxx

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,15 @@ static const std::vector<int> pdgCodes{PDG_t::kK0Short,
6767
PDG_t::kOmegaMinus,
6868
PDG_t::kOmegaPlusBar};
6969

70+
// Witchcraft
71+
namespace o2::aod { O2ORIGIN("TMP"); }
72+
7073
struct OnTheFlyDecayer {
71-
Produces<aod::McPartWithDaus> tableMcParticlesWithDau;
74+
Produces<aod::McCollisions> tableMcCollisions;
75+
Produces<aod::StoredMcParticles_001> tableMcParticles;
7276

7377
o2::upgrade::Decayer decayer;
7478
Service<o2::framework::O2DatabasePDG> pdgDB;
75-
std::map<int, std::vector<o2::upgrade::OTFParticle>> mDecayDaughters;
7679
HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
7780

7881
Configurable<int> seed{"seed", 0, "Set seed for particle decayer"};
@@ -165,37 +168,46 @@ struct OnTheFlyDecayer {
165168
decayParticles(stop, stop + ndau);
166169
}
167170

168-
void process(aod::McCollision const& collision, aod::McParticles const& mcParticles)
171+
void process(aod::McCollisions_001/*From<aod::Hash<"TMP"_h>>*/ const& mcCollisions, aod::McParticles_001From<aod::Hash<"TMP"_h>> const& mcParticles)
169172
{
170-
mCollisionId = collision.globalIndex();
171-
allParticles.clear();
173+
for (const auto& collision : mcCollisions) {
174+
allParticles.clear();
175+
mCollisionId = collision.globalIndex();
176+
tableMcCollisions(collision.bcId(),
177+
collision.generatorsID(),
178+
collision.posX(),
179+
collision.posY(),
180+
collision.posZ(),
181+
collision.t(),
182+
collision.weight(),
183+
collision.impactParameter(),
184+
collision.eventPlaneAngle());
185+
186+
// First we copy the particles from the table into a vector that is extendable
187+
for (int index{0}; index < static_cast<int>(mcParticles.size()); ++index) {
188+
const auto& mcParticle = mcParticles.rawIteratorAt(index);
189+
allParticles.push_back(o2::upgrade::OTFParticle{mcParticle});
190+
}
172191

173-
// First we copy the particles from the table into a vector that is extendable
174-
for (int index{0}; index < static_cast<int>(mcParticles.size()); ++index) {
175-
const auto& mcParticle = mcParticles.rawIteratorAt(index);
176-
allParticles.push_back(o2::upgrade::OTFParticle{mcParticle});
177-
}
192+
// Do all decays
193+
decayParticles(0, allParticles.size());
178194

179-
// Do all decays
180-
decayParticles(0, allParticles.size());
195+
// Fill output table
196+
for (int index{0}; index < static_cast<int>(allParticles.size()); ++index) {
197+
const auto& otfParticle = allParticles[index];
181198

182-
// Fill output table
183-
for (int index{0}; index < static_cast<int>(allParticles.size()); ++index) {
184-
const auto& otfParticle = allParticles[index];
199+
if (otfParticle.hasNaN()) {
200+
histos.fill(HIST("hNaNBookkeeping"), 1);
201+
} else {
202+
histos.fill(HIST("hNaNBookkeeping"), 0);
203+
}
185204

186-
if (otfParticle.hasNaN()) {
187-
histos.fill(HIST("hNaNBookkeeping"), 1);
188-
} else {
189-
histos.fill(HIST("hNaNBookkeeping"), 0);
205+
// todo: status codes
206+
tableMcParticles(otfParticle.collisionId(), otfParticle.pdgCode(), otfParticle.statusCode(), otfParticle.flags(),
207+
otfParticle.getMotherSpan(), otfParticle.getDaughters().data(), otfParticle.weight(),
208+
otfParticle.px(), otfParticle.py(), otfParticle.pz(), otfParticle.e(),
209+
otfParticle.vx(), otfParticle.vy(), otfParticle.vz(), otfParticle.vt());
190210
}
191-
192-
// todo: status codes
193-
tableMcParticlesWithDau(otfParticle.collisionId(), otfParticle.pdgCode(), otfParticle.statusCode(),
194-
otfParticle.flags(), otfParticle.getMotherSpan(), otfParticle.getDaughters().data(), otfParticle.weight(),
195-
otfParticle.px(), otfParticle.py(), otfParticle.pz(), otfParticle.e(),
196-
otfParticle.vx(), otfParticle.vy(), otfParticle.vz(), otfParticle.vt(),
197-
otfParticle.phi(), otfParticle.eta(), otfParticle.pt(), otfParticle.p(), otfParticle.y(),
198-
otfParticle.isAlive(), otfParticle.isPrimary());
199211
}
200212
}
201213
};

ALICE3/Tasks/alice3DecayerQa.cxx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,14 @@ struct Alice3DecayerQa {
6161
ConfigurableAxis axisPtLog{"axisPtLog", {VARIABLE_WIDTH, 0.0f, 0.001f, 0.00104713f, 0.00109648f, 0.00114815f, 0.00120226f, 0.00125893f, 0.00131826f, 0.00138038f, 0.00144544f, 0.00151356f, 0.00158489f, 0.00165959f, 0.0017378f, 0.0018197f, 0.00190546f, 0.00199526f, 0.0020893f, 0.00218776f, 0.00229087f, 0.00239883f, 0.00251189f, 0.00263027f, 0.00275423f, 0.00288403f, 0.00301995f, 0.00316228f, 0.00331131f, 0.00346737f, 0.00363078f, 0.00380189f, 0.00398107f, 0.00416869f, 0.00436516f, 0.00457088f, 0.0047863f, 0.00501187f, 0.00524807f, 0.00549541f, 0.0057544f, 0.0060256f, 0.00630957f, 0.00660693f, 0.00691831f, 0.00724436f, 0.00758578f, 0.00794328f, 0.00831764f, 0.00870964f, 0.00912011f, 0.00954993f, 0.01f, 0.0104713f, 0.0109648f, 0.0114815f, 0.0120226f, 0.0125893f, 0.0131826f, 0.0138038f, 0.0144544f, 0.0151356f, 0.0158489f, 0.0165959f, 0.017378f, 0.018197f, 0.0190546f, 0.0199526f, 0.020893f, 0.0218776f, 0.0229087f, 0.0239883f, 0.0251189f, 0.0263027f, 0.0275423f, 0.0288403f, 0.0301995f, 0.0316228f, 0.0331131f, 0.0346737f, 0.0363078f, 0.0380189f, 0.0398107f, 0.0416869f, 0.0436516f, 0.0457088f, 0.047863f, 0.0501187f, 0.0524807f, 0.0549541f, 0.057544f, 0.060256f, 0.0630957f, 0.0660693f, 0.0691831f, 0.0724436f, 0.0758578f, 0.0794328f, 0.0831764f, 0.0870964f, 0.0912011f, 0.0954993f, 0.1f, 0.104713f, 0.109648f, 0.114815f, 0.120226f, 0.125893f, 0.131826f, 0.138038f, 0.144544f, 0.151356f, 0.158489f, 0.165959f, 0.17378f, 0.18197f, 0.190546f, 0.199526f, 0.20893f, 0.218776f, 0.229087f, 0.239883f, 0.251189f, 0.263027f, 0.275423f, 0.288403f, 0.301995f, 0.316228f, 0.331131f, 0.346737f, 0.363078f, 0.380189f, 0.398107f, 0.416869f, 0.436516f, 0.457088f, 0.47863f, 0.501187f, 0.524807f, 0.549541f, 0.57544f, 0.60256f, 0.630957f, 0.660693f, 0.691831f, 0.724436f, 0.758578f, 0.794328f, 0.831764f, 0.870964f, 0.912011f, 0.954993f, 1.0f, 1.04713f, 1.09648f, 1.14815f, 1.20226f, 1.25893f, 1.31826f, 1.38038f, 1.44544f, 1.51356f, 1.58489f, 1.65959f, 1.7378f, 1.8197f, 1.90546f, 1.99526f, 2.0893f, 2.18776f, 2.29087f, 2.39883f, 2.51189f, 2.63027f, 2.75423f, 2.88403f, 3.01995f, 3.16228f, 3.31131f, 3.46737f, 3.63078f, 3.80189f, 3.98107f, 4.16869f, 4.36516f, 4.57088f, 4.7863f, 5.01187f, 5.24807f, 5.49541f, 5.7544f, 6.0256f, 6.30957f, 6.60693f, 6.91831f, 7.24436f, 7.58578f, 7.94328f, 8.31764f, 8.70964f, 9.12011f, 9.54993f, 10.0f}, "pt axis for QA histograms"};
6262
} axes;
6363

64-
Partition<aod::McPartWithDaus> trueElectrons = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kElectron);
65-
Partition<aod::McPartWithDaus> trueMuons = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kMuonMinus);
66-
Partition<aod::McPartWithDaus> truePions = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kPiPlus);
67-
Partition<aod::McPartWithDaus> trueKaons = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kKMinus);
68-
Partition<aod::McPartWithDaus> trueProtons = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kProton);
69-
Partition<aod::McPartWithDaus> trueK0Short = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kK0Short);
70-
Partition<aod::McPartWithDaus> trueLambdas = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kLambda0);
71-
Partition<aod::McPartWithDaus> trueXiMinus = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kXiMinus);
64+
Partition<aod::McParticles> trueElectrons = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kElectron);
65+
Partition<aod::McParticles> trueMuons = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kMuonMinus);
66+
Partition<aod::McParticles> truePions = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kPiPlus);
67+
Partition<aod::McParticles> trueKaons = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kKMinus);
68+
Partition<aod::McParticles> trueProtons = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kProton);
69+
Partition<aod::McParticles> trueK0Short = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kK0Short);
70+
Partition<aod::McParticles> trueLambdas = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kLambda0);
71+
Partition<aod::McParticles> trueXiMinus = aod::mcparticle::pdgCode == static_cast<int>(PDG_t::kXiMinus);
7272

7373
static constexpr size_t NCascadeDaughters = 2;
7474
static constexpr size_t NV0Daughters = 2;

0 commit comments

Comments
 (0)