@@ -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