Skip to content
Merged
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
10 changes: 10 additions & 0 deletions PWGLF/DataModel/LFStrangenessTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,16 @@ DECLARE_SOA_TABLE_VERSIONED(StraEvSels_005, "AOD", "STRAEVSELS", 5, //!
// stracollision::EnergyCommonZNC<mult::MultZNC>,
stracollision::IsUPC<udcollision::GapSide>);

DECLARE_SOA_TABLE(StraEvSelExtras, "AOD", "STRAEVSELEXTRAS", //! debug information
udzdc::TimeZNA, // UPC info: re-assigned ZN-A time, in case of SG event, from the most active bc
udzdc::TimeZNC, // UPC info: re-assigned ZN-C time, in case of SG event, from the most active bc
udcollision::TimeFDDA, // Average A-side time (ns)
udcollision::TimeFDDC, // Average C-side time (ns)
udcollision::TimeFV0A, // Average A-side time (ns)
udcollision::TimeFT0A, // Average A-side time (ns)
udcollision::TimeFT0C, // Average C-side time (ns)
udcollision::TriggerMaskFT0); // 8 trigger bits: OrA, OrC, Semi-central, Central, Vertex, IsActiveA, IsActiveC, IsFlangeEvent

DECLARE_SOA_TABLE(StraEvSelsRun2, "AOD", "STRAEVSELSRUN2", //! debug information
evsel::Sel8, evsel::Sel7, evsel::Selection, //! event selection: sel8
mult::MultFT0A, mult::MultFT0C, // FIT detectors
Expand Down
92 changes: 74 additions & 18 deletions PWGLF/TableProducer/Strangeness/strangederivedbuilder.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -78,20 +78,21 @@ struct strangederivedbuilder {
struct : ProducesGroup {
//__________________________________________________
// fundamental building blocks of derived data
Produces<aod::StraCollision> strangeColl; // characterises collisions
Produces<aod::StraCollLabels> strangeCollLabels; // characterises collisions
Produces<aod::StraMCCollisions> strangeMCColl; // characterises collisions / MC
Produces<aod::StraMCCollMults> strangeMCMults; // characterises collisions / MC mults
Produces<aod::StraCents> strangeCents; // characterises collisions / centrality in Run 3
Produces<aod::StraCentsRun2> strangeCentsRun2; // characterises collisions / centrality in Run 2
Produces<aod::StraEvSels> strangeEvSels; // characterises collisions / centrality / sel8 selection in Run 3
Produces<aod::StraEvSelsRun2> strangeEvSelsRun2; // characterises collisions / centrality / sel8 selection in Run 2
Produces<aod::StraStamps> strangeStamps; // provides timestamps, run numbers
Produces<aod::StraEvTimes> straEvTimes; // provides event times (FT0, TOF)
Produces<aod::V0CollRefs> v0collref; // references collisions from V0s
Produces<aod::CascCollRefs> casccollref; // references collisions from cascades
Produces<aod::KFCascCollRefs> kfcasccollref; // references collisions from KF cascades
Produces<aod::TraCascCollRefs> tracasccollref; // references collisions from tracked cascades
Produces<aod::StraCollision> strangeColl; // characterises collisions
Produces<aod::StraCollLabels> strangeCollLabels; // characterises collisions
Produces<aod::StraMCCollisions> strangeMCColl; // characterises collisions / MC
Produces<aod::StraMCCollMults> strangeMCMults; // characterises collisions / MC mults
Produces<aod::StraCents> strangeCents; // characterises collisions / centrality in Run 3
Produces<aod::StraCentsRun2> strangeCentsRun2; // characterises collisions / centrality in Run 2
Produces<aod::StraEvSels> strangeEvSels; // characterises collisions / centrality / sel8 selection in Run 3
Produces<aod::StraEvSelExtras> strangeEvSelExtras; // extra event selection variables in Run 3
Produces<aod::StraEvSelsRun2> strangeEvSelsRun2; // characterises collisions / centrality / sel8 selection in Run 2
Produces<aod::StraStamps> strangeStamps; // provides timestamps, run numbers
Produces<aod::StraEvTimes> straEvTimes; // provides event times (FT0, TOF)
Produces<aod::V0CollRefs> v0collref; // references collisions from V0s
Produces<aod::CascCollRefs> casccollref; // references collisions from cascades
Produces<aod::KFCascCollRefs> kfcasccollref; // references collisions from KF cascades
Produces<aod::TraCascCollRefs> tracasccollref; // references collisions from tracked cascades

//__________________________________________________
// track extra references
Expand Down Expand Up @@ -207,6 +208,8 @@ struct strangederivedbuilder {
ConfigurableAxis axisFDDC{"FDDCamplitude", {100, 0.0f, 2000.0f}, "FDDCamplitude"};
ConfigurableAxis axisZNA{"ZNAamplitude", {100, 0.0f, 250.0f}, "ZNAamplitude"};
ConfigurableAxis axisZNC{"ZNCamplitude", {100, 0.0f, 250.0f}, "ZNCamplitude"};
ConfigurableAxis axisZNAtime{"ZNAtime", {100, -999.f, 999.0f}, "ZNAtime"};
ConfigurableAxis axisZNCtime{"ZNCtime", {100, -999.f, 999.0f}, "ZNCtime"};
} axisDetectors;

// For manual sliceBy
Expand Down Expand Up @@ -404,6 +407,8 @@ struct strangederivedbuilder {
auto hFDDCMultVsFDDCUD = histos.add<TH2>("hFDDCMultVsFDDCUD", "hFDDCMultVsFDDCUD; FDD-C Mult; FDD-C UD", kTH2F, {axisDetectors.axisFDDC, axisDetectors.axisFDDC});
auto hZNAMultVsZNAUD = histos.add<TH2>("hZNAMultVsZNAUD", "hZNAMultVsZNAUD; ZNA Mult; ZNA UD", kTH2F, {axisDetectors.axisZNA, axisDetectors.axisZNA});
auto hZNCMultVsZNCUD = histos.add<TH2>("hZNCMultVsZNCUD", "hZNCMultVsZNCUD; ZNC Mult; ZNC UD", kTH2F, {axisDetectors.axisZNC, axisDetectors.axisZNC});
auto hZNATimeVsZNAUD = histos.add<TH2>("hZNATimeVsZNAUD", "hZNAMultVsZNAUD; ZNA time; ZNA UD", kTH2F, {axisDetectors.axisZNAtime, axisDetectors.axisZNAtime});
auto hZNCTimeVsZNCUD = histos.add<TH2>("hZNCTimeVsZNCUD", "hZNCMultVsZNCUD; ZNC time; ZNC UD", kTH2F, {axisDetectors.axisZNCtime, axisDetectors.axisZNCtime});

for (int ii = 1; ii < 101; ii++) {
float value = 100.5f - static_cast<float>(ii);
Expand Down Expand Up @@ -458,6 +463,14 @@ struct strangederivedbuilder {
float totalFDDAmplitudeC = -999;
float energyCommonZNA = -999;
float energyCommonZNC = -999;
float timeZNA = -999;
float timeZNC = -999;
float timeFV0A = -999;
float timeFT0A = -999;
float timeFT0C = -999;
float timeFDDA = -999;
float timeFDDC = -999;
uint8_t ft0TriggerMask = 0;

// +-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+
// set UD information in case present at this stage
Expand All @@ -474,6 +487,14 @@ struct strangederivedbuilder {
totalFDDAmplitudeC = udColl.totalFDDAmplitudeC();
energyCommonZNA = udColl.energyCommonZNA();
energyCommonZNC = udColl.energyCommonZNC();
timeZNA = udColl.timeZNA();
timeZNC = udColl.timeZNC();
timeFDDA = udColl.timeFDDA();
timeFDDC = udColl.timeFDDC();
timeFV0A = udColl.timeFV0A();
timeFT0A = udColl.timeFT0A();
timeFT0C = udColl.timeFT0C();
ft0TriggerMask = udColl.triggerMaskFT0();

histos.fill(HIST("hFT0AMultVsFT0AUD"), collision.multFT0A(), udColl.totalFT0AmplitudeA());
histos.fill(HIST("hFT0CMultVsFT0CUD"), collision.multFT0C(), udColl.totalFT0AmplitudeC());
Expand All @@ -482,6 +503,14 @@ struct strangederivedbuilder {
histos.fill(HIST("hFDDCMultVsFDDCUD"), collision.multFDDC(), udColl.totalFDDAmplitudeC());
histos.fill(HIST("hZNAMultVsZNAUD"), collision.multZNA(), udColl.energyCommonZNA());
histos.fill(HIST("hZNCMultVsZNCUD"), collision.multZNC(), udColl.energyCommonZNC());
if (bc.has_zdc()) {
auto zdc = bc.zdc();
histos.fill(HIST("hZNATimeVsZNAUD"), zdc.timeZNA(), udColl.timeZNA());
histos.fill(HIST("hZNCTimeVsZNCUD"), zdc.timeZNC(), udColl.timeZNC());
} else {
histos.fill(HIST("hZNATimeVsZNAUD"), -999., udColl.timeZNA());
histos.fill(HIST("hZNCTimeVsZNCUD"), -999., udColl.timeZNC());
}
}
}
}
Expand All @@ -502,6 +531,29 @@ struct strangederivedbuilder {
centrality = hRawCentrality->GetBinContent(hRawCentrality->FindBin(collision.multFT0C()));
}

if (gapSide < 0) { // if UD collision is not found, store the timing information from collision instead
if (bc.has_zdc()) {
auto zdc = bc.zdc();
timeZNA = zdc.timeZNA();
timeZNC = zdc.timeZNC();
}
if (collision.has_foundFDD()) { // Analysis is fully based on FT0 presence
const auto& fdd = collision.foundFDD();
timeFDDA = fdd.timeA();
timeFDDC = fdd.timeC();
}
if (collision.has_foundFV0()) { // Analysis is fully based on FV0 presence
const auto& fv0a = collision.foundFV0();
timeFV0A = fv0a.time();
}
if (collision.has_foundFT0()) { // Analysis is fully based on FT0 presence
const auto& ft0 = collision.foundFT0();
timeFT0A = ft0.timeA();
timeFT0C = ft0.timeC();
ft0TriggerMask = ft0.triggerMask();
}
}

products.strangeCents(collision.centFT0M(), collision.centFT0A(),
centrality, collision.centFV0A(), collision.centFT0CVariant1(),
collision.centMFT(), collision.centNGlobal());
Expand Down Expand Up @@ -534,6 +586,10 @@ struct strangederivedbuilder {
collision.flags(),
collision.alias_raw(),
collision.rct_raw());
products.strangeEvSelExtras(timeZNA, timeZNC, // ZDC info
timeFDDA, timeFDDC, // FDD info
timeFV0A, // FV0A info
timeFT0A, timeFT0C, ft0TriggerMask); // FT0 info
} else { // We are in Run 2
products.strangeCentsRun2(collision.centRun2V0M(), collision.centRun2V0A(),
collision.centRun2SPDTracklets(), collision.centRun2SPDClusters());
Expand Down Expand Up @@ -651,23 +707,23 @@ struct strangederivedbuilder {
}
}

void processCollisionsRun3(soa::Join<aod::Collisions, aod::FT0Mults, aod::FV0Mults, aod::FDDMults, aod::PVMults, aod::ZDCMults, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0CVariant1s, aod::CentNGlobals, aod::CentMFTs, aod::EvSels, aod::MultsExtra, aod::MultsGlobal> const& collisions, aod::V0Datas const& V0s, aod::CascDatas const& Cascades, aod::KFCascDatas const& KFCascades, aod::TraCascDatas const& TraCascades, aod::BCsWithTimestamps const& bcs)
void processCollisionsRun3(soa::Join<aod::Collisions, aod::FT0Mults, aod::FV0Mults, aod::FDDMults, aod::PVMults, aod::ZDCMults, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0CVariant1s, aod::CentNGlobals, aod::CentMFTs, aod::EvSels, aod::MultsExtra, aod::MultsGlobal> const& collisions, aod::V0Datas const& V0s, aod::CascDatas const& Cascades, aod::KFCascDatas const& KFCascades, aod::TraCascDatas const& TraCascades, soa::Join<aod::BCsWithTimestamps, aod::Run3MatchedToBCSparse> const& bcs, aod::FT0s const&, aod::Zdcs const&)
{
populateCollisionTables(collisions, collisions, V0s, Cascades, KFCascades, TraCascades, bcs);
}

void processCollisionsRun3WithUD(soa::Join<aod::Collisions, aod::FT0Mults, aod::FV0Mults, aod::FDDMults, aod::PVMults, aod::ZDCMults, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0CVariant1s, aod::CentNGlobals, aod::CentMFTs, aod::EvSels, aod::MultsExtra, aod::MultsGlobal> const& collisions, aod::V0Datas const& V0s, aod::CascDatas const& Cascades, aod::KFCascDatas const& KFCascades, aod::TraCascDatas const& TraCascades, aod::BCsWithTimestamps const& bcs, UDCollisionsFull const& udCollisions)
void processCollisionsRun3WithUD(soa::Join<aod::Collisions, aod::FT0Mults, aod::FV0Mults, aod::FDDMults, aod::PVMults, aod::ZDCMults, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0CVariant1s, aod::CentNGlobals, aod::CentMFTs, aod::EvSels, aod::MultsExtra, aod::MultsGlobal> const& collisions, aod::V0Datas const& V0s, aod::CascDatas const& Cascades, aod::KFCascDatas const& KFCascades, aod::TraCascDatas const& TraCascades, soa::Join<aod::BCsWithTimestamps, aod::Run3MatchedToBCSparse> const& bcs, aod::FT0s const&, aod::Zdcs const&, UDCollisionsFull const& udCollisions)
{
populateCollisionTables(collisions, udCollisions, V0s, Cascades, KFCascades, TraCascades, bcs);
}

void processCollisionsRun3WithMC(soa::Join<aod::Collisions, aod::FT0Mults, aod::FV0Mults, aod::FDDMults, aod::PVMults, aod::ZDCMults, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0CVariant1s, aod::CentNGlobals, aod::CentMFTs, aod::EvSels, aod::McCollisionLabels, aod::MultsExtra, aod::MultsGlobal> const& collisions, soa::Join<aod::V0Datas, aod::McV0Labels> const& V0s, soa::Join<aod::V0MCCores, aod::V0MCCollRefs> const& /*V0MCCores*/, soa::Join<aod::CascDatas, aod::McCascLabels> const& Cascades, aod::KFCascDatas const& KFCascades, aod::TraCascDatas const& TraCascades, aod::BCsWithTimestamps const& bcs, soa::Join<aod::McCollisions, aod::McCollsExtra, aod::MultsExtraMC> const& mcCollisions, aod::McParticles const& mcParticles)
void processCollisionsRun3WithMC(soa::Join<aod::Collisions, aod::FT0Mults, aod::FV0Mults, aod::FDDMults, aod::PVMults, aod::ZDCMults, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0CVariant1s, aod::CentNGlobals, aod::CentMFTs, aod::EvSels, aod::McCollisionLabels, aod::MultsExtra, aod::MultsGlobal> const& collisions, soa::Join<aod::V0Datas, aod::McV0Labels> const& V0s, soa::Join<aod::V0MCCores, aod::V0MCCollRefs> const& /*V0MCCores*/, soa::Join<aod::CascDatas, aod::McCascLabels> const& Cascades, aod::KFCascDatas const& KFCascades, aod::TraCascDatas const& TraCascades, soa::Join<aod::BCsWithTimestamps, aod::Run3MatchedToBCSparse> const& bcs, aod::FT0s const&, aod::Zdcs const&, soa::Join<aod::McCollisions, aod::McCollsExtra, aod::MultsExtraMC> const& mcCollisions, aod::McParticles const& mcParticles)
{
populateMCCollisionTable(mcCollisions, mcParticles);
populateCollisionTables(collisions, collisions, V0s, Cascades, KFCascades, TraCascades, bcs);
}

void processCollisionsRun3WithUDWithMC(soa::Join<aod::Collisions, aod::FT0Mults, aod::FV0Mults, aod::FDDMults, aod::PVMults, aod::ZDCMults, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0CVariant1s, aod::CentNGlobals, aod::CentMFTs, aod::EvSels, aod::McCollisionLabels, aod::MultsExtra, aod::MultsGlobal> const& collisions, soa::Join<aod::V0Datas, aod::McV0Labels> const& V0s, soa::Join<aod::V0MCCores, aod::V0MCCollRefs> const& /*V0MCCores*/, soa::Join<aod::CascDatas, aod::McCascLabels> const& Cascades, aod::KFCascDatas const& KFCascades, aod::TraCascDatas const& TraCascades, aod::BCsWithTimestamps const& bcs, UDCollisionsFull const& udCollisions, soa::Join<aod::McCollisions, aod::McCollsExtra, aod::MultsExtraMC> const& mcCollisions, aod::McParticles const& mcParticles)
void processCollisionsRun3WithUDWithMC(soa::Join<aod::Collisions, aod::FT0Mults, aod::FV0Mults, aod::FDDMults, aod::PVMults, aod::ZDCMults, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs, aod::CentFV0As, aod::CentFT0CVariant1s, aod::CentNGlobals, aod::CentMFTs, aod::EvSels, aod::McCollisionLabels, aod::MultsExtra, aod::MultsGlobal> const& collisions, soa::Join<aod::V0Datas, aod::McV0Labels> const& V0s, soa::Join<aod::V0MCCores, aod::V0MCCollRefs> const& /*V0MCCores*/, soa::Join<aod::CascDatas, aod::McCascLabels> const& Cascades, aod::KFCascDatas const& KFCascades, aod::TraCascDatas const& TraCascades, soa::Join<aod::BCsWithTimestamps, aod::Run3MatchedToBCSparse> const& bcs, aod::FT0s const&, aod::Zdcs const&, UDCollisionsFull const& udCollisions, soa::Join<aod::McCollisions, aod::McCollsExtra, aod::MultsExtraMC> const& mcCollisions, aod::McParticles const& mcParticles)
{
populateMCCollisionTable(mcCollisions, mcParticles);
populateCollisionTables(collisions, udCollisions, V0s, Cascades, KFCascades, TraCascades, bcs);
Expand Down
Loading