Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 16 additions & 13 deletions PWGLF/DataModel/LFNonPromptCascadeTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand All @@ -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_
79 changes: 69 additions & 10 deletions PWGLF/Tasks/Strangeness/nonPromptCascade.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -182,17 +182,21 @@ struct NonPromptCascadeTask {
Produces<o2::aod::NPCascTableNT> NPCTableNT;
Produces<o2::aod::NPCascTableMCNT> NPCTableMCNT;
Produces<o2::aod::NPCascTableGen> NPCTableGen;
Produces<o2::aod::NPPileUpTable> NPPUTable;
Produces<o2::aod::NPMCNegativesTable> NPMCNTable;
//
Produces<o2::aod::NPCollisionTable> NPCollsTable;
Produces<o2::aod::NPMCChargedTable> NPMCNTable;
Produces<o2::aod::NPRecoChargedCand> NPRecoCandTable;

using TracksExtData = soa::Join<aod::TracksIU, aod::TracksCovIU, aod::TracksExtra, aod::pidTPCFullKa, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTOFFullKa, aod::pidTOFFullPi, aod::pidTOFFullPr>;
using TracksExtMC = soa::Join<aod::TracksIU, aod::TracksCovIU, aod::TracksExtra, aod::McTrackLabels, aod::pidTPCFullKa, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTOFFullKa, aod::pidTOFFullPi, aod::pidTOFFullPr>;
using CollisionCandidatesRun3 = soa::Join<aod::Collisions, aod::EvSels, aod::FT0Mults, aod::FV0Mults, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0Ms, aod::MultsGlobal>;
using CollisionCandidatesRun3MC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::FT0Mults, aod::FV0Mults, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0Ms, aod::MultsGlobal>;
using TracksWithLabel = soa::Join<aod::Tracks, aod::McTrackLabels>;
using TracksWithSel = soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection>;

Preslice<TracksExtData> perCollision = aod::track::collisionId;
Preslice<TracksExtMC> perCollisionMC = aod::track::collisionId;
Preslice<TracksWithSel> perCollisionSel = aod::track::collisionId;

HistogramRegistry mRegistry;

Expand Down Expand Up @@ -328,8 +332,9 @@ struct NonPromptCascadeTask {
// dN/deta
//
bool runMCdNdeta = context.options().get<bool>("processdNdetaMC");
bool rundNdeta = context.options().get<bool>("processdNdeta");
// std::cout << "runMCdNdeta: " << runMCdNdeta << std::endl;
if (runMCdNdeta) {
if (runMCdNdeta || rundNdeta) {
std::vector<double> ptBins;
std::vector<std::string> tokens = o2::utils::Str::tokenize(cfgPtEdgesdNdeta, ',');
for (auto const& pts : tokens) {
Expand All @@ -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});
}
}

Expand Down Expand Up @@ -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);
}
};

Expand Down Expand Up @@ -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
//--------------------------------------------------------------
Expand Down Expand Up @@ -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++;
}

// ------------------------------------------------------------
Expand Down Expand Up @@ -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<aod::BCsWithTimestamps>();
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&)
{
Expand All @@ -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);
}
}
};
Expand Down
Loading