diff --git a/PWGLF/DataModel/LFNonPromptCascadeTables.h b/PWGLF/DataModel/LFNonPromptCascadeTables.h index 7d0a9c156a8..4d3d16f07f6 100644 --- a/PWGLF/DataModel/LFNonPromptCascadeTables.h +++ b/PWGLF/DataModel/LFNonPromptCascadeTables.h @@ -195,7 +195,7 @@ DECLARE_SOA_TABLE(NPCascTable, "AOD", "NPCASCTABLE", NPCascadeTable::CentFT0M, NPCascadeTable::MultNTracksGlobal, NPCascadeTable::ToiMask, - NPCascadeTable::NoSameBunchPileup) + NPCascadeTable::NoSameBunchPileup); DECLARE_SOA_TABLE(NPCascTableNT, "AOD", "NPCASCTABLENT", NPCascadeTable::RunNumber, @@ -263,7 +263,7 @@ DECLARE_SOA_TABLE(NPCascTableNT, "AOD", "NPCASCTABLENT", NPCascadeTable::CentFT0M, NPCascadeTable::MultNTracksGlobal, NPCascadeTable::ToiMask, - NPCascadeTable::NoSameBunchPileup) + NPCascadeTable::NoSameBunchPileup); DECLARE_SOA_TABLE(NPCascTableMC, "AOD", "NPCASCTABLEMC", NPCascadeTable::RunNumber, @@ -350,7 +350,7 @@ DECLARE_SOA_TABLE(NPCascTableMC, "AOD", "NPCASCTABLEMC", NPCascadeTable::MotherDecayDaughters, NPCascadeTable::MultNTracksGlobal, NPCascadeTable::ToiMask, - NPCascadeTable::NoSameBunchPileup) + NPCascadeTable::NoSameBunchPileup); DECLARE_SOA_TABLE(NPCascTableMCNT, "AOD", "NPCASCTABLEMCNT", NPCascadeTable::RunNumber, @@ -437,8 +437,7 @@ DECLARE_SOA_TABLE(NPCascTableMCNT, "AOD", "NPCASCTABLEMCNT", NPCascadeTable::MotherDecayDaughters, NPCascadeTable::MultNTracksGlobal, NPCascadeTable::ToiMask, - NPCascadeTable::NoSameBunchPileup) - + NPCascadeTable::NoSameBunchPileup); DECLARE_SOA_TABLE(NPCascTableGen, "AOD", "NPCASCTABLEGen", NPCascadeTable::gPt, NPCascadeTable::gEta, @@ -450,19 +449,23 @@ DECLARE_SOA_TABLE(NPCascTableGen, "AOD", "NPCASCTABLEGen", NPCascadeTable::DCAzMC, NPCascadeTable::IsFromBeauty, NPCascadeTable::IsFromCharm, - NPCascadeTable::MotherDecayDaughters) -DECLARE_SOA_TABLE(NPPileUpTable, "AOD", "NPPileUpTABLE", + NPCascadeTable::MotherDecayDaughters); +DECLARE_SOA_TABLE(NPMCChargedTable, "AOD", "NPMCChargedTABLE", + NPCascadeTable::PtGen, + NPCascadeTable::PtRec, + NPCascadeTable::MultNTracksGlobal, + NPCascadeTable::MultGen); +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::PtGen, - NPCascadeTable::PtRec, - NPCascadeTable::MultNTracksGlobal, - NPCascadeTable::MultGen); + NPCascadeTable::MultFT0M); +DECLARE_SOA_INDEX_COLUMN_FULL(NPCollision, npCollision, int32_t, NPCollisionTable, ""); +DECLARE_SOA_TABLE(NPRecoChargedCand, "AOD", "NPRecoChargedCand", + 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..2462cfdaa6a 100644 --- a/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx +++ b/PWGLF/Tasks/Strangeness/nonPromptCascade.cxx @@ -182,17 +182,21 @@ 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; + Preslice perCollisionSel = aod::track::collisionId; HistogramRegistry mRegistry; @@ -328,8 +332,9 @@ struct NonPromptCascadeTask { // dN/deta // bool runMCdNdeta = context.options().get("processdNdetaMC"); + bool rundNdeta = context.options().get("processdNdeta"); // std::cout << "runMCdNdeta: " << runMCdNdeta << std::endl; - if (runMCdNdeta) { + if (runMCdNdeta || rundNdeta) { std::vector ptBins; std::vector tokens = o2::utils::Str::tokenize(cfgPtEdgesdNdeta, ','); for (auto const& pts : tokens) { @@ -341,13 +346,14 @@ struct NonPromptCascadeTask { } ptBins.push_back(pt); } - AxisSpec ptAxisMC{ptBins, "pT MC"}; AxisSpec ptAxisReco{ptBins, "pT Reco"}; + AxisSpec ptAxisMC{ptBins, "pT MC"}; // multMeasured, multMC, ptMeasured, ptMC mRegistrydNdeta.add("hdNdetaRM/hdNdetaRM", "hdNdetaRM", HistType::kTHnSparseF, {nTracksAxisMC, nTracksAxis, ptAxisMC, ptAxisReco}); mRegistrydNdeta.add("hdNdetaRM/hdNdetaRMNotInRecoCol", "hdNdetaRMNotInRecoCol", HistType::kTHnSparseF, {nTracksAxisMC, ptAxisMC}); mRegistrydNdeta.add("hdNdetaRM/hdNdetaRMNotInRecoTrk", "hdNdetaRMNotInRecoTrk", HistType::kTHnSparseF, {nTracksAxisMC, ptAxisMC}); + mRegistrydNdeta.add("hdNdetaData", "hdNdetaData", HistType::kTH1F, {nTracksAxis}); } } @@ -417,12 +423,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); } }; @@ -809,6 +813,10 @@ struct NonPromptCascadeTask { aod::McParticles const& mcParticles, TracksWithLabel const& tracks) { + //------------------------------------------------------------ + // Downscaling output table by BC as there is no pileup in MC + //------------------------------------------------------------ + int ds = 1; //------------------------------------------------------------- // MC mult for all MC coll //-------------------------------------------------------------- @@ -951,7 +959,10 @@ struct NonPromptCascadeTask { const float ptMC = mcPar.pt(); mRegistrydNdeta.fill(HIST("hdNdetaRM/hdNdetaRM"), mult, multReco, ptMC, ptReco); - NPMCNTable(ptMC, ptReco, mult, multReco); + if (ds % cfgDownscaleMB == 0) { + NPMCNTable(ptMC, ptReco, mult, multReco); + } + ds++; } // ------------------------------------------------------------ @@ -981,6 +992,54 @@ struct NonPromptCascadeTask { } PROCESS_SWITCH(NonPromptCascadeTask, processdNdetaMC, "process mc dN/deta", false); + // + void processdNdeta(CollisionCandidatesRun3 const& collisions, TracksWithSel const& tracks, aod::BCsWithTimestamps const&) + { + 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, + globalBC, + coll.numContrib(), + coll.multNTracksGlobal(), + coll.centFT0M(), + coll.multFT0M()); + + auto collIdx = NPCollsTable.lastIndex(); + auto tracksThisColl = tracks.sliceBy(perCollisionSel, coll.globalIndex()); + float multreco = 0.; + // std::cout << "tracks:" << tracksThisColl.size() << std::endl; + for (auto const& track : tracksThisColl) { + // std::cout << track.pt() << " tracks " << track.isGlobalTrack() << std::endl; + if (std::fabs(track.eta()) < 0.8 && track.tpcNClsFound() >= 80 && track.tpcNClsCrossedRows() >= 100) { + if (track.isGlobalTrack()) { + multreco++; + NPRecoCandTable(collIdx, track.pt()); + } + } + } + mRegistrydNdeta.fill(HIST("hdNdetaData"), multreco); + } + } + } + PROCESS_SWITCH(NonPromptCascadeTask, processdNdeta, "process dN/deta", false); void processPileUp(CollisionCandidatesRun3 const& collisions, aod::BCsWithTimestamps const&) { @@ -1007,7 +1066,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); } } };