diff --git a/PWGLF/DataModel/LFNonPromptCascadeTables.h b/PWGLF/DataModel/LFNonPromptCascadeTables.h index 7d0a9c156a8..da4a1495602 100644 --- a/PWGLF/DataModel/LFNonPromptCascadeTables.h +++ b/PWGLF/DataModel/LFNonPromptCascadeTables.h @@ -438,7 +438,6 @@ DECLARE_SOA_TABLE(NPCascTableMCNT, "AOD", "NPCASCTABLEMCNT", NPCascadeTable::MultNTracksGlobal, NPCascadeTable::ToiMask, NPCascadeTable::NoSameBunchPileup) - DECLARE_SOA_TABLE(NPCascTableGen, "AOD", "NPCASCTABLEGen", NPCascadeTable::gPt, NPCascadeTable::gEta, @@ -451,18 +450,22 @@ DECLARE_SOA_TABLE(NPCascTableGen, "AOD", "NPCASCTABLEGen", NPCascadeTable::IsFromBeauty, NPCascadeTable::IsFromCharm, NPCascadeTable::MotherDecayDaughters) -DECLARE_SOA_TABLE(NPPileUpTable, "AOD", "NPPileUpTABLE", +DECLARE_SOA_TABLE(NPCollisionTable, "AOD", "NPCollisionTABLE", NPCascadeTable::RunNumber, NPCascadeTable::GlobalBC, aod::collision::NumContrib, NPCascadeTable::MultNTracksGlobal, NPCascadeTable::CentFT0M, - NPCascadeTable::MultFT0M) -DECLARE_SOA_TABLE(NPMCNegativesTable, "AOD", "NPMCNegativesTABLE", + NPCascadeTable::MultFT0M); +DECLARE_SOA_TABLE(NPMCChargedTable, "AOD", "NPMCChargedTABLE", NPCascadeTable::PtGen, NPCascadeTable::PtRec, NPCascadeTable::MultNTracksGlobal, NPCascadeTable::MultGen); +DECLARE_SOA_INDEX_COLUMN_FULL(NPCollision, npCollision, int32_t, NPCollisionTable, ""); +DECLARE_SOA_TABLE(NPRecoChargedCandidate, "AOD", "NPRecoChargedCandidate", + NPCollisionId, + NPCascadeTable::PtRec); } // namespace o2::aod #endif // PWGLF_DATAMODEL_LFNONPROMPTCASCADETABLES_H_ diff --git a/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx b/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx index 6639404d334..2085067c176 100644 --- a/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx +++ b/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx @@ -182,14 +182,17 @@ struct NonPromptCascadeTask { Produces NPCTableNT; Produces NPCTableMCNT; Produces NPCTableGen; - Produces NPPUTable; - Produces NPMCNTable; + // + Produces NPCollsTable; + Produces NPMCNTable; + Produces NPRecoCandTable; using TracksExtData = soa::Join; using TracksExtMC = soa::Join; using CollisionCandidatesRun3 = soa::Join; using CollisionCandidatesRun3MC = soa::Join; using TracksWithLabel = soa::Join; + using TracksWithSel = soa::Join; Preslice perCollision = aod::track::collisionId; Preslice perCollisionMC = aod::track::collisionId; @@ -417,12 +420,10 @@ struct NonPromptCascadeTask { for (const auto& coll : collisions) { float centFT0M = coll.centFT0M(); float multFT0M = coll.multFT0M(); - // float centFV0A = coll.centFV0A(); - // float multFV0A = coll.multFV0A(); float multNTracks = coll.multNTracksGlobal(); - float run = mRunNumber; + float runNumber = mRunNumber; float numContrib = coll.numContrib(); - mRegistryMults.fill(HIST("hCentMultsRuns"), centFT0M, multFT0M, numContrib, multNTracks, run); + mRegistryMults.fill(HIST("hCentMultsRuns"), centFT0M, multFT0M, numContrib, multNTracks, runNumber); } }; @@ -981,6 +982,50 @@ struct NonPromptCascadeTask { } PROCESS_SWITCH(NonPromptCascadeTask, processdNdetaMC, "process mc dN/deta", false); + // + void processdNdeta(CollisionCandidatesRun3 const& collisions, TracksWithSel const& tracks) + { + int ds = 1; + uint32_t orbitO = 0; + bool writeFlag = 0; + for (const auto& coll : collisions) { + auto bc = coll.template bc_as(); + uint64_t globalBC = bc.globalBC(); + uint32_t orbit = globalBC / 3564; + if (orbitO != orbit) { + orbitO = orbit; + if ((ds % cfgDownscaleMB) == 0) { + writeFlag = 1; + } else { + writeFlag = 0; + } + ds++; + } + if (writeFlag) { + if (mRunNumber != bc.runNumber()) { + mRunNumber = bc.runNumber(); + } + NPCollsTable(mRunNumber, + coll.bc().globalBC(), + coll.numContrib(), + coll.multNTracksGlobal(), + coll.centFT0M(), + coll.multFT0M()); + + auto collIdx = NPCollsTable.lastIndex(); + auto tracksThisColl = tracks.sliceBy(perCollision, coll.globalIndex()); + for (auto const& track : tracksThisColl) { + if (std::fabs(track.eta()) < 0.8 && track.tpcNClsFound() >= 80 && track.tpcNClsCrossedRows() >= 100) { + if (track.isGlobalTrack()) { + // mults.multGlobalTracks++; + NPRecoCandTable(collIdx, track.pt()); + } + } + } + } + } + } + PROCESS_SWITCH(NonPromptCascadeTask, processdNdeta, "process dN/deta", false); void processPileUp(CollisionCandidatesRun3 const& collisions, aod::BCsWithTimestamps const&) { @@ -1007,7 +1052,7 @@ struct NonPromptCascadeTask { } float centFT0M = coll.centFT0M(); float multFT0M = coll.multFT0M(); - NPPUTable(mRunNumber, globalBC, coll.numContrib(), coll.multNTracksGlobal(), centFT0M, multFT0M); + NPCollsTable(mRunNumber, globalBC, coll.numContrib(), coll.multNTracksGlobal(), centFT0M, multFT0M); } } };