Skip to content

Commit f70d39c

Browse files
[PWGLF] Add forward detector timing information in strangeness data model (#15547)
Co-authored-by: ALICE Builder <alibuild@users.noreply.github.com>
1 parent c0cbb58 commit f70d39c

File tree

2 files changed

+84
-18
lines changed

2 files changed

+84
-18
lines changed

PWGLF/DataModel/LFStrangenessTables.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,16 @@ DECLARE_SOA_TABLE_VERSIONED(StraEvSels_005, "AOD", "STRAEVSELS", 5, //!
274274
// stracollision::EnergyCommonZNC<mult::MultZNC>,
275275
stracollision::IsUPC<udcollision::GapSide>);
276276

277+
DECLARE_SOA_TABLE(StraEvSelExtras, "AOD", "STRAEVSELEXTRAS", //! debug information
278+
udzdc::TimeZNA, // UPC info: re-assigned ZN-A time, in case of SG event, from the most active bc
279+
udzdc::TimeZNC, // UPC info: re-assigned ZN-C time, in case of SG event, from the most active bc
280+
udcollision::TimeFDDA, // Average A-side time (ns)
281+
udcollision::TimeFDDC, // Average C-side time (ns)
282+
udcollision::TimeFV0A, // Average A-side time (ns)
283+
udcollision::TimeFT0A, // Average A-side time (ns)
284+
udcollision::TimeFT0C, // Average C-side time (ns)
285+
udcollision::TriggerMaskFT0); // 8 trigger bits: OrA, OrC, Semi-central, Central, Vertex, IsActiveA, IsActiveC, IsFlangeEvent
286+
277287
DECLARE_SOA_TABLE(StraEvSelsRun2, "AOD", "STRAEVSELSRUN2", //! debug information
278288
evsel::Sel8, evsel::Sel7, evsel::Selection, //! event selection: sel8
279289
mult::MultFT0A, mult::MultFT0C, // FIT detectors

PWGLF/TableProducer/Strangeness/strangederivedbuilder.cxx

Lines changed: 74 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -78,20 +78,21 @@ struct strangederivedbuilder {
7878
struct : ProducesGroup {
7979
//__________________________________________________
8080
// fundamental building blocks of derived data
81-
Produces<aod::StraCollision> strangeColl; // characterises collisions
82-
Produces<aod::StraCollLabels> strangeCollLabels; // characterises collisions
83-
Produces<aod::StraMCCollisions> strangeMCColl; // characterises collisions / MC
84-
Produces<aod::StraMCCollMults> strangeMCMults; // characterises collisions / MC mults
85-
Produces<aod::StraCents> strangeCents; // characterises collisions / centrality in Run 3
86-
Produces<aod::StraCentsRun2> strangeCentsRun2; // characterises collisions / centrality in Run 2
87-
Produces<aod::StraEvSels> strangeEvSels; // characterises collisions / centrality / sel8 selection in Run 3
88-
Produces<aod::StraEvSelsRun2> strangeEvSelsRun2; // characterises collisions / centrality / sel8 selection in Run 2
89-
Produces<aod::StraStamps> strangeStamps; // provides timestamps, run numbers
90-
Produces<aod::StraEvTimes> straEvTimes; // provides event times (FT0, TOF)
91-
Produces<aod::V0CollRefs> v0collref; // references collisions from V0s
92-
Produces<aod::CascCollRefs> casccollref; // references collisions from cascades
93-
Produces<aod::KFCascCollRefs> kfcasccollref; // references collisions from KF cascades
94-
Produces<aod::TraCascCollRefs> tracasccollref; // references collisions from tracked cascades
81+
Produces<aod::StraCollision> strangeColl; // characterises collisions
82+
Produces<aod::StraCollLabels> strangeCollLabels; // characterises collisions
83+
Produces<aod::StraMCCollisions> strangeMCColl; // characterises collisions / MC
84+
Produces<aod::StraMCCollMults> strangeMCMults; // characterises collisions / MC mults
85+
Produces<aod::StraCents> strangeCents; // characterises collisions / centrality in Run 3
86+
Produces<aod::StraCentsRun2> strangeCentsRun2; // characterises collisions / centrality in Run 2
87+
Produces<aod::StraEvSels> strangeEvSels; // characterises collisions / centrality / sel8 selection in Run 3
88+
Produces<aod::StraEvSelExtras> strangeEvSelExtras; // extra event selection variables in Run 3
89+
Produces<aod::StraEvSelsRun2> strangeEvSelsRun2; // characterises collisions / centrality / sel8 selection in Run 2
90+
Produces<aod::StraStamps> strangeStamps; // provides timestamps, run numbers
91+
Produces<aod::StraEvTimes> straEvTimes; // provides event times (FT0, TOF)
92+
Produces<aod::V0CollRefs> v0collref; // references collisions from V0s
93+
Produces<aod::CascCollRefs> casccollref; // references collisions from cascades
94+
Produces<aod::KFCascCollRefs> kfcasccollref; // references collisions from KF cascades
95+
Produces<aod::TraCascCollRefs> tracasccollref; // references collisions from tracked cascades
9596

9697
//__________________________________________________
9798
// track extra references
@@ -207,6 +208,8 @@ struct strangederivedbuilder {
207208
ConfigurableAxis axisFDDC{"FDDCamplitude", {100, 0.0f, 2000.0f}, "FDDCamplitude"};
208209
ConfigurableAxis axisZNA{"ZNAamplitude", {100, 0.0f, 250.0f}, "ZNAamplitude"};
209210
ConfigurableAxis axisZNC{"ZNCamplitude", {100, 0.0f, 250.0f}, "ZNCamplitude"};
211+
ConfigurableAxis axisZNAtime{"ZNAtime", {100, -999.f, 999.0f}, "ZNAtime"};
212+
ConfigurableAxis axisZNCtime{"ZNCtime", {100, -999.f, 999.0f}, "ZNCtime"};
210213
} axisDetectors;
211214

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

408413
for (int ii = 1; ii < 101; ii++) {
409414
float value = 100.5f - static_cast<float>(ii);
@@ -458,6 +463,14 @@ struct strangederivedbuilder {
458463
float totalFDDAmplitudeC = -999;
459464
float energyCommonZNA = -999;
460465
float energyCommonZNC = -999;
466+
float timeZNA = -999;
467+
float timeZNC = -999;
468+
float timeFV0A = -999;
469+
float timeFT0A = -999;
470+
float timeFT0C = -999;
471+
float timeFDDA = -999;
472+
float timeFDDC = -999;
473+
uint8_t ft0TriggerMask = 0;
461474

462475
// +-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+-<*>-+
463476
// set UD information in case present at this stage
@@ -474,6 +487,14 @@ struct strangederivedbuilder {
474487
totalFDDAmplitudeC = udColl.totalFDDAmplitudeC();
475488
energyCommonZNA = udColl.energyCommonZNA();
476489
energyCommonZNC = udColl.energyCommonZNC();
490+
timeZNA = udColl.timeZNA();
491+
timeZNC = udColl.timeZNC();
492+
timeFDDA = udColl.timeFDDA();
493+
timeFDDC = udColl.timeFDDC();
494+
timeFV0A = udColl.timeFV0A();
495+
timeFT0A = udColl.timeFT0A();
496+
timeFT0C = udColl.timeFT0C();
497+
ft0TriggerMask = udColl.triggerMaskFT0();
477498

478499
histos.fill(HIST("hFT0AMultVsFT0AUD"), collision.multFT0A(), udColl.totalFT0AmplitudeA());
479500
histos.fill(HIST("hFT0CMultVsFT0CUD"), collision.multFT0C(), udColl.totalFT0AmplitudeC());
@@ -482,6 +503,14 @@ struct strangederivedbuilder {
482503
histos.fill(HIST("hFDDCMultVsFDDCUD"), collision.multFDDC(), udColl.totalFDDAmplitudeC());
483504
histos.fill(HIST("hZNAMultVsZNAUD"), collision.multZNA(), udColl.energyCommonZNA());
484505
histos.fill(HIST("hZNCMultVsZNCUD"), collision.multZNC(), udColl.energyCommonZNC());
506+
if (bc.has_zdc()) {
507+
auto zdc = bc.zdc();
508+
histos.fill(HIST("hZNATimeVsZNAUD"), zdc.timeZNA(), udColl.timeZNA());
509+
histos.fill(HIST("hZNCTimeVsZNCUD"), zdc.timeZNC(), udColl.timeZNC());
510+
} else {
511+
histos.fill(HIST("hZNATimeVsZNAUD"), -999., udColl.timeZNA());
512+
histos.fill(HIST("hZNCTimeVsZNCUD"), -999., udColl.timeZNC());
513+
}
485514
}
486515
}
487516
}
@@ -502,6 +531,29 @@ struct strangederivedbuilder {
502531
centrality = hRawCentrality->GetBinContent(hRawCentrality->FindBin(collision.multFT0C()));
503532
}
504533

534+
if (gapSide < 0) { // if UD collision is not found, store the timing information from collision instead
535+
if (bc.has_zdc()) {
536+
auto zdc = bc.zdc();
537+
timeZNA = zdc.timeZNA();
538+
timeZNC = zdc.timeZNC();
539+
}
540+
if (collision.has_foundFDD()) { // Analysis is fully based on FT0 presence
541+
const auto& fdd = collision.foundFDD();
542+
timeFDDA = fdd.timeA();
543+
timeFDDC = fdd.timeC();
544+
}
545+
if (collision.has_foundFV0()) { // Analysis is fully based on FV0 presence
546+
const auto& fv0a = collision.foundFV0();
547+
timeFV0A = fv0a.time();
548+
}
549+
if (collision.has_foundFT0()) { // Analysis is fully based on FT0 presence
550+
const auto& ft0 = collision.foundFT0();
551+
timeFT0A = ft0.timeA();
552+
timeFT0C = ft0.timeC();
553+
ft0TriggerMask = ft0.triggerMask();
554+
}
555+
}
556+
505557
products.strangeCents(collision.centFT0M(), collision.centFT0A(),
506558
centrality, collision.centFV0A(), collision.centFT0CVariant1(),
507559
collision.centMFT(), collision.centNGlobal());
@@ -534,6 +586,10 @@ struct strangederivedbuilder {
534586
collision.flags(),
535587
collision.alias_raw(),
536588
collision.rct_raw());
589+
products.strangeEvSelExtras(timeZNA, timeZNC, // ZDC info
590+
timeFDDA, timeFDDC, // FDD info
591+
timeFV0A, // FV0A info
592+
timeFT0A, timeFT0C, ft0TriggerMask); // FT0 info
537593
} else { // We are in Run 2
538594
products.strangeCentsRun2(collision.centRun2V0M(), collision.centRun2V0A(),
539595
collision.centRun2SPDTracklets(), collision.centRun2SPDClusters());
@@ -651,23 +707,23 @@ struct strangederivedbuilder {
651707
}
652708
}
653709

654-
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)
710+
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&)
655711
{
656712
populateCollisionTables(collisions, collisions, V0s, Cascades, KFCascades, TraCascades, bcs);
657713
}
658714

659-
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)
715+
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)
660716
{
661717
populateCollisionTables(collisions, udCollisions, V0s, Cascades, KFCascades, TraCascades, bcs);
662718
}
663719

664-
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)
720+
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)
665721
{
666722
populateMCCollisionTable(mcCollisions, mcParticles);
667723
populateCollisionTables(collisions, collisions, V0s, Cascades, KFCascades, TraCascades, bcs);
668724
}
669725

670-
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)
726+
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)
671727
{
672728
populateMCCollisionTable(mcCollisions, mcParticles);
673729
populateCollisionTables(collisions, udCollisions, V0s, Cascades, KFCascades, TraCascades, bcs);

0 commit comments

Comments
 (0)