diff --git a/PWGDQ/Core/VarManager.cxx b/PWGDQ/Core/VarManager.cxx index 04445304d56..cdf80fec181 100644 --- a/PWGDQ/Core/VarManager.cxx +++ b/PWGDQ/Core/VarManager.cxx @@ -1970,4 +1970,56 @@ void VarManager::SetDefaultVarNames() fgVarNamesMap["kBdtBackground"] = kBdtBackground; fgVarNamesMap["kBdtPrompt"] = kBdtPrompt; fgVarNamesMap["kBdtNonprompt"] = kBdtNonprompt; + fgVariableNames[kAmplitudeFT0A] = "FT0A amplitude"; + fgVariableUnits[kAmplitudeFT0A] = "a.u."; + fgVariableNames[kAmplitudeFT0C] = "FT0C amplitude"; + fgVariableUnits[kAmplitudeFT0C] = "a.u."; + fgVariableNames[kTimeFT0A] = "FT0A time"; + fgVariableUnits[kTimeFT0A] = "ns"; + fgVariableNames[kTimeFT0C] = "FT0C time"; + fgVariableUnits[kTimeFT0C] = "ns"; + fgVariableNames[kTriggerMaskFT0] = "FT0 trigger mask"; + fgVariableUnits[kTriggerMaskFT0] = ""; + fgVariableNames[kNFiredChannelsFT0A] = "FT0A fired channels"; + fgVariableUnits[kNFiredChannelsFT0A] = ""; + fgVariableNames[kNFiredChannelsFT0C] = "FT0C fired channels"; + fgVariableUnits[kNFiredChannelsFT0C] = ""; + fgVariableNames[kAmplitudeFDDA] = "FDDA amplitude"; + fgVariableUnits[kAmplitudeFDDA] = "a.u."; + fgVariableNames[kAmplitudeFDDC] = "FDDC amplitude"; + fgVariableUnits[kAmplitudeFDDC] = "a.u."; + fgVariableNames[kTimeFDDA] = "FDDA time"; + fgVariableUnits[kTimeFDDA] = "ns"; + fgVariableNames[kTimeFDDC] = "FDDC time"; + fgVariableUnits[kTimeFDDC] = "ns"; + fgVariableNames[kTriggerMaskFDD] = "FDD trigger mask"; + fgVariableUnits[kTriggerMaskFDD] = ""; + fgVariableNames[kAmplitudeFV0A] = "FV0A amplitude"; + fgVariableUnits[kAmplitudeFV0A] = "a.u."; + fgVariableNames[kTimeFV0A] = "FV0A time"; + fgVariableUnits[kTimeFV0A] = "ns"; + fgVariableNames[kTriggerMaskFV0A] = "FV0A trigger mask"; + fgVariableUnits[kTriggerMaskFV0A] = ""; + fgVariableNames[kNFiredChannelsFV0A] = "FV0A fired channels"; + fgVariableUnits[kNFiredChannelsFV0A] = ""; + fgVariableNames[kBBFT0Apf] = "FT0A BB pileup flag"; + fgVariableUnits[kBBFT0Apf] = ""; + fgVariableNames[kBGFT0Apf] = "FT0A BG pileup flag"; + fgVariableUnits[kBGFT0Apf] = ""; + fgVariableNames[kBBFT0Cpf] = "FT0C BB pileup flag"; + fgVariableUnits[kBBFT0Cpf] = ""; + fgVariableNames[kBGFT0Cpf] = "FT0C BG pileup flag"; + fgVariableUnits[kBGFT0Cpf] = ""; + fgVariableNames[kBBFV0Apf] = "FV0A BB pileup flag"; + fgVariableUnits[kBBFV0Apf] = ""; + fgVariableNames[kBGFV0Apf] = "FV0A BG pileup flag"; + fgVariableUnits[kBGFV0Apf] = ""; + fgVariableNames[kBBFDDApf] = "FDDA BB pileup flag"; + fgVariableUnits[kBBFDDApf] = ""; + fgVariableNames[kBGFDDApf] = "FDDA BG pileup flag"; + fgVariableUnits[kBGFDDApf] = ""; + fgVariableNames[kBBFDDCpf] = "FDDC BB pileup flag"; + fgVariableUnits[kBBFDDCpf] = ""; + fgVariableNames[kBGFDDCpf] = "FDDC BG pileup flag"; + fgVariableUnits[kBGFDDCpf] = ""; } diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index f887b75852d..7494a559eb6 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -21,6 +21,8 @@ #define HomogeneousField #endif +#include "PWGUD/Core/UDHelpers.h" + #include "Common/CCDB/EventSelectionParams.h" #include "Common/CCDB/TriggerAliases.h" #include "Common/Core/CollisionTypeHelper.h" @@ -108,6 +110,7 @@ class VarManager : public TObject ReducedEventMultExtra = BIT(19), CollisionQvectCentr = BIT(20), RapidityGapFilter = BIT(21), + ReducedFit = BIT(22), Track = BIT(0), TrackCov = BIT(1), TrackExtra = BIT(2), @@ -912,6 +915,34 @@ class VarManager : public TObject kBdtPrompt, kBdtNonprompt, + // FIT detector variables + kAmplitudeFT0A, + kAmplitudeFT0C, + kTimeFT0A, + kTimeFT0C, + kTriggerMaskFT0, + kAmplitudeFDDA, + kAmplitudeFDDC, + kTimeFDDA, + kTimeFDDC, + kTriggerMaskFDD, + kAmplitudeFV0A, + kTimeFV0A, + kTriggerMaskFV0A, + kBBFT0Apf, + kBGFT0Apf, + kBBFT0Cpf, + kBGFT0Cpf, + kBBFV0Apf, + kBGFV0Apf, + kBBFDDApf, + kBGFDDApf, + kBBFDDCpf, + kBGFDDCpf, + kNFiredChannelsFT0A, + kNFiredChannelsFT0C, + kNFiredChannelsFV0A, + kNVars }; // end of Variables enumeration @@ -1210,6 +1241,8 @@ class VarManager : public TObject static void FillZDC(const T& zdc, float* values = nullptr); template static void FillBdtScore(const T& bdtScore, float* values = nullptr); + template + static void FillFIT(const T1& bc, const T2& bcs, const T3& ft0s, const T4& fv0as, const T5& fdds, float* values = nullptr); static void SetCalibrationObject(CalibObjects calib, TObject* obj) { @@ -5858,5 +5891,60 @@ float VarManager::LorentzTransformJpsihadroncosChi(TString Option, T1 const& v1, } return value; } +template +void VarManager::FillFIT(T1 const& bc, T2 const& bcs, T3 const& ft0s, T4 const& fv0as, T5 const& fdds, float* values) +{ + if (!values) { + values = fgValues; + } + // Initialize FIT info structure + upchelpers::FITInfo fitInfo{}; + udhelpers::getFITinfo(fitInfo, bc, bcs, ft0s, fv0as, fdds); + + // Fill FT0 information + values[kAmplitudeFT0A] = fitInfo.ampFT0A; + values[kAmplitudeFT0C] = fitInfo.ampFT0C; + values[kTimeFT0A] = fitInfo.timeFT0A; + values[kTimeFT0C] = fitInfo.timeFT0C; + values[kTriggerMaskFT0] = static_cast(fitInfo.triggerMaskFT0); + const auto ft0Index = bc.ft0Id(); + if (ft0Index < 0 || ft0Index >= ft0s.size()) { + values[kNFiredChannelsFT0A] = -1; + values[kNFiredChannelsFT0C] = -1; + } else { + const auto ft0 = ft0s.iteratorAt(ft0Index); + values[kNFiredChannelsFT0A] = ft0.channelA().size(); + values[kNFiredChannelsFT0C] = ft0.channelC().size(); + } + // Fill FDD information + values[kAmplitudeFDDA] = fitInfo.ampFDDA; + values[kAmplitudeFDDC] = fitInfo.ampFDDC; + values[kTimeFDDA] = fitInfo.timeFDDA; + values[kTimeFDDC] = fitInfo.timeFDDC; + values[kTriggerMaskFDD] = static_cast(fitInfo.triggerMaskFDD); + + // Fill FV0A information + values[kAmplitudeFV0A] = fitInfo.ampFV0A; + values[kTimeFV0A] = fitInfo.timeFV0A; + values[kTriggerMaskFV0A] = static_cast(fitInfo.triggerMaskFV0A); + const auto fv0aIndex = bc.fv0aId(); + if (fv0aIndex < 0 || fv0aIndex >= fv0as.size()) { + values[kNFiredChannelsFV0A] = -1; + } else { + const auto fv0a = fv0as.iteratorAt(fv0aIndex); + values[kNFiredChannelsFV0A] = fv0a.channel().size(); + } + // Fill pileup flags + values[kBBFT0Apf] = static_cast(fitInfo.BBFT0Apf); + values[kBGFT0Apf] = static_cast(fitInfo.BGFT0Apf); + values[kBBFT0Cpf] = static_cast(fitInfo.BBFT0Cpf); + values[kBGFT0Cpf] = static_cast(fitInfo.BGFT0Cpf); + values[kBBFV0Apf] = static_cast(fitInfo.BBFV0Apf); + values[kBGFV0Apf] = static_cast(fitInfo.BGFV0Apf); + values[kBBFDDApf] = static_cast(fitInfo.BBFDDApf); + values[kBGFDDApf] = static_cast(fitInfo.BGFDDApf); + values[kBBFDDCpf] = static_cast(fitInfo.BBFDDCpf); + values[kBGFDDCpf] = static_cast(fitInfo.BGFDDCpf); +} #endif // PWGDQ_CORE_VARMANAGER_H_ diff --git a/PWGDQ/DataModel/ReducedInfoTables.h b/PWGDQ/DataModel/ReducedInfoTables.h index ce81e96aebb..68f91acb420 100644 --- a/PWGDQ/DataModel/ReducedInfoTables.h +++ b/PWGDQ/DataModel/ReducedInfoTables.h @@ -35,8 +35,8 @@ namespace o2::aod namespace dqppfilter { -DECLARE_SOA_COLUMN(EventFilter, eventFilter, uint64_t); //! Bit-field used for the high level event triggering -DECLARE_SOA_COLUMN(NewBcIndex, newBcIndex, uint64_t); //! globalIndex of the new BC determined in filterPbPb +DECLARE_SOA_COLUMN(EventFilter, eventFilter, uint64_t); //! Bit-field used for the high level event triggering +DECLARE_SOA_COLUMN(NewBcIndex, newBcIndex, uint64_t); //! globalIndex of the new BC determined in filterPbPb } // namespace dqppfilter DECLARE_SOA_TABLE(DQEventFilter, "AOD", "EVENTFILTER", //! Store event-level decisions (DQ high level triggers) @@ -273,6 +273,56 @@ DECLARE_SOA_TABLE(ReducedZdcsExtra, "AOD", "REDUCEDZDCEXTRA", //! Event ZDC ex using ReducedZdc = ReducedZdcs::iterator; using ReducedZdcExtra = ReducedZdcsExtra::iterator; +namespace reducedfit +{ +// FIT detector information (based on upchelpers::FITInfo structure) +DECLARE_SOA_COLUMN(AmplitudeFT0A, amplitudeFT0A, float); //! FT0A total amplitude +DECLARE_SOA_COLUMN(AmplitudeFT0C, amplitudeFT0C, float); //! FT0C total amplitude +DECLARE_SOA_COLUMN(TimeFT0A, timeFT0A, float); //! FT0A time +DECLARE_SOA_COLUMN(TimeFT0C, timeFT0C, float); //! FT0C time +DECLARE_SOA_COLUMN(TriggerMaskFT0, triggerMaskFT0, uint8_t); //! FT0 trigger mask +DECLARE_SOA_COLUMN(NFiredChannelsFT0A, nFiredChannelsFT0A, int); //! Number of fired channels in FT0A +DECLARE_SOA_COLUMN(NFiredChannelsFT0C, nFiredChannelsFT0C, int); //! Number of fired channels in FT0C +DECLARE_SOA_COLUMN(AmplitudeFDDA, amplitudeFDDA, float); //! FDDA total amplitude +DECLARE_SOA_COLUMN(AmplitudeFDDC, amplitudeFDDC, float); //! FDDC total amplitude +DECLARE_SOA_COLUMN(TimeFDDA, timeFDDA, float); //! FDDA time +DECLARE_SOA_COLUMN(TimeFDDC, timeFDDC, float); //! FDDC time +DECLARE_SOA_COLUMN(TriggerMaskFDD, triggerMaskFDD, uint8_t); //! FDD trigger mask +DECLARE_SOA_COLUMN(AmplitudeFV0A, amplitudeFV0A, float); //! FV0A total amplitude +DECLARE_SOA_COLUMN(TimeFV0A, timeFV0A, float); //! FV0A time +DECLARE_SOA_COLUMN(TriggerMaskFV0A, triggerMaskFV0A, uint8_t); //! FV0A trigger mask +DECLARE_SOA_COLUMN(NFiredChannelsFV0A, nFiredChannelsFV0A, int); //! Number of fired channels in FV0A +DECLARE_SOA_COLUMN(BBFT0Apf, bbFT0Apf, int32_t); //! Beam-beam flags for FT0A +DECLARE_SOA_COLUMN(BGFT0Apf, bgFT0Apf, int32_t); //! Beam-gas flags for FT0A +DECLARE_SOA_COLUMN(BBFT0Cpf, bbFT0Cpf, int32_t); //! Beam-beam flags for FT0C +DECLARE_SOA_COLUMN(BGFT0Cpf, bgFT0Cpf, int32_t); //! Beam-gas flags for FT0C +DECLARE_SOA_COLUMN(BBFV0Apf, bbFV0Apf, int32_t); //! Beam-beam flags for FV0A +DECLARE_SOA_COLUMN(BGFV0Apf, bgFV0Apf, int32_t); //! Beam-gas flags for FV0A +DECLARE_SOA_COLUMN(BBFDDApf, bbFDDApf, int32_t); //! Beam-beam flags for FDDA +DECLARE_SOA_COLUMN(BGFDDApf, bgFDDApf, int32_t); //! Beam-gas flags for FDDA +DECLARE_SOA_COLUMN(BBFDDCpf, bbFDDCpf, int32_t); //! Beam-beam flags for FDDC +DECLARE_SOA_COLUMN(BGFDDCpf, bgFDDCpf, int32_t); //! Beam-gas flags for FDDC +} // namespace reducedfit + +DECLARE_SOA_TABLE(ReducedFITs, "AOD", "REDUCEDFIT", //! FIT detector information + reducedfit::AmplitudeFT0A, reducedfit::AmplitudeFT0C, + reducedfit::TimeFT0A, reducedfit::TimeFT0C, + reducedfit::TriggerMaskFT0, + reducedfit::NFiredChannelsFT0A, reducedfit::NFiredChannelsFT0C, + reducedfit::AmplitudeFDDA, reducedfit::AmplitudeFDDC, + reducedfit::TimeFDDA, reducedfit::TimeFDDC, + reducedfit::TriggerMaskFDD, + reducedfit::AmplitudeFV0A, reducedfit::TimeFV0A, + reducedfit::TriggerMaskFV0A, + reducedfit::NFiredChannelsFV0A, + reducedfit::BBFT0Apf, reducedfit::BGFT0Apf, + reducedfit::BBFT0Cpf, reducedfit::BGFT0Cpf, + reducedfit::BBFV0Apf, reducedfit::BGFV0Apf, + reducedfit::BBFDDApf, reducedfit::BGFDDApf, + reducedfit::BBFDDCpf, reducedfit::BGFDDCpf); + +using ReducedFIT = ReducedFITs::iterator; + namespace reducedtrack { // basic track information diff --git a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx index e51eb187913..9383e58143a 100644 --- a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx @@ -119,7 +119,7 @@ using MyMuonsWithCov = soa::Join; using MyMuonsColl = soa::Join; using MyMuonsCollWithCov = soa::Join; -using MyBCs = soa::Join; +using MyBCs = soa::Join; using ExtBCs = soa::Join; // Declaration of various bit maps containing information on which tables are included in a Join @@ -130,7 +130,8 @@ constexpr static uint32_t gkEventFillMapWithMults = VarManager::ObjTypes::BC | V constexpr static uint32_t gkEventFillMapWithMultsZdc = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::Zdc; constexpr static uint32_t gkEventFillMapWithMultsAndEventFilter = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra | VarManager::ObjTypes::EventFilter; constexpr static uint32_t gkEventFillMapWithMultsEventFilterZdc = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra | VarManager::ObjTypes::EventFilter | VarManager::ObjTypes::Zdc; -constexpr static uint32_t gkEventFillMapWithMultsRapidityGapFilterZdc = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra | VarManager::ObjTypes::RapidityGapFilter | VarManager::ObjTypes::Zdc; +// constexpr static uint32_t gkEventFillMapWithMultsRapidityGapFilterZdc = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra | VarManager::ObjTypes::RapidityGapFilter | VarManager::ObjTypes::Zdc; +constexpr static uint32_t gkEventFillMapWithMultsRapidityGapFilterZdcFit = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionMult | VarManager::ObjTypes::CollisionMultExtra | VarManager::ObjTypes::RapidityGapFilter | VarManager::ObjTypes::Zdc | VarManager::ObjTypes::ReducedFit; // constexpr static uint32_t gkEventFillMapWithCent = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionCent; constexpr static uint32_t gkEventFillMapWithCentAndMults = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::ObjTypes::CollisionCent | VarManager::CollisionMult | VarManager::ObjTypes::CollisionMultExtra; constexpr static uint32_t gkEventFillMapWithMultsExtra = VarManager::ObjTypes::BC | VarManager::ObjTypes::Collision | VarManager::CollisionMult | VarManager::ObjTypes::CollisionMultExtra; @@ -167,6 +168,7 @@ struct TableMaker { Produces eventVtxCov; Produces eventInfo; Produces zdc; + Produces fit; Produces multPV; Produces multAll; Produces trackBarrelInfo; @@ -791,9 +793,12 @@ struct TableMaker { } // end loop over collisions } - template + template void skimCollisions(TEvents const& collisions, TBCs const& bcs, TZdcs const& /*zdcs*/, - TTrackAssoc const& trackAssocs, TTracks const& tracks) + TTrackAssoc const& trackAssocs, TTracks const& tracks, + TFt0s const& ft0s, TFv0as const& fv0as, TFdds const& fdds) { // Skim collisions // NOTE: So far, collisions are filtered based on the user specified analysis cuts AND the filterPP or Zorro event filter. @@ -861,6 +866,19 @@ struct TableMaker { VarManager::FillZDC(bc_zdc); } } + // Fill FIT info using newbc pattern for UPC events (similar to ZDC) + if constexpr ((TEventFillMap & VarManager::ObjTypes::ReducedFit) > 0) { + if constexpr (!std::is_same_v && + !std::is_same_v && + !std::is_same_v) { + if constexpr ((TEventFillMap & VarManager::ObjTypes::RapidityGapFilter) > 0) { + auto newbc = bcs.rawIteratorAt(collision.newBcIndex()); + VarManager::FillFIT(newbc, bcs, ft0s, fv0as, fdds); + } else { + VarManager::FillFIT(bcEvSel, bcs, ft0s, fv0as, fdds); + } + } + } if constexpr ((TEventFillMap & VarManager::ObjTypes::CollisionMultExtra) > 0 && (TTrackFillMap & VarManager::ObjTypes::Track) > 0 && (TTrackFillMap & VarManager::ObjTypes::TrackDCA) > 0) { auto groupedTrackIndices = trackAssocs.sliceBy(trackIndicesPerCollision, collision.globalIndex()); VarManager::FillEventTrackEstimators(collision, groupedTrackIndices, tracks); @@ -968,6 +986,30 @@ struct TableMaker { zdc(-1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0, -1.0); } } + // Fill FIT table if requested + if constexpr ((TEventFillMap & VarManager::ObjTypes::ReducedFit) > 0) { + fit(VarManager::fgValues[VarManager::kAmplitudeFT0A], VarManager::fgValues[VarManager::kAmplitudeFT0C], + VarManager::fgValues[VarManager::kTimeFT0A], VarManager::fgValues[VarManager::kTimeFT0C], + static_cast(VarManager::fgValues[VarManager::kTriggerMaskFT0]), + static_cast(VarManager::fgValues[VarManager::kNFiredChannelsFT0A]), + static_cast(VarManager::fgValues[VarManager::kNFiredChannelsFT0C]), + VarManager::fgValues[VarManager::kAmplitudeFDDA], VarManager::fgValues[VarManager::kAmplitudeFDDC], + VarManager::fgValues[VarManager::kTimeFDDA], VarManager::fgValues[VarManager::kTimeFDDC], + static_cast(VarManager::fgValues[VarManager::kTriggerMaskFDD]), + VarManager::fgValues[VarManager::kAmplitudeFV0A], VarManager::fgValues[VarManager::kTimeFV0A], + static_cast(VarManager::fgValues[VarManager::kTriggerMaskFV0A]), + static_cast(VarManager::fgValues[VarManager::kNFiredChannelsFV0A]), + static_cast(VarManager::fgValues[VarManager::kBBFT0Apf]), + static_cast(VarManager::fgValues[VarManager::kBGFT0Apf]), + static_cast(VarManager::fgValues[VarManager::kBBFT0Cpf]), + static_cast(VarManager::fgValues[VarManager::kBGFT0Cpf]), + static_cast(VarManager::fgValues[VarManager::kBBFV0Apf]), + static_cast(VarManager::fgValues[VarManager::kBGFV0Apf]), + static_cast(VarManager::fgValues[VarManager::kBBFDDApf]), + static_cast(VarManager::fgValues[VarManager::kBGFDDApf]), + static_cast(VarManager::fgValues[VarManager::kBBFDDCpf]), + static_cast(VarManager::fgValues[VarManager::kBGFDDCpf])); + } if constexpr ((TEventFillMap & VarManager::ObjTypes::CollisionMultExtra) > 0) { multPV(collision.multNTracksHasITS(), collision.multNTracksHasTPC(), collision.multNTracksHasTOF(), collision.multNTracksHasTRD(), collision.multNTracksITSOnly(), collision.multNTracksTPCOnly(), collision.multNTracksITSTPC(), @@ -1403,10 +1445,10 @@ struct TableMaker { // Produce standard barrel + muon tables with event filter (typically for pp and p-Pb) ------------------------------------------------------ template + typename TTrackAssoc, typename TFwdTrackAssoc, typename TMFTTrackAssoc, typename TMFTCov, typename TFt0s, typename TFv0as, typename TFdds> void fullSkimming(TEvents const& collisions, TBCs const& bcs, TZdcs const& zdcs, TTracks const& tracksBarrel, TMuons const& muons, TMFTTracks const& mftTracks, - TTrackAssoc const& trackAssocs, TFwdTrackAssoc const& fwdTrackAssocs, TMFTTrackAssoc const& mftAssocs, TMFTCov const& mftCovs) + TTrackAssoc const& trackAssocs, TFwdTrackAssoc const& fwdTrackAssocs, TMFTTrackAssoc const& mftAssocs, TMFTCov const& mftCovs, TFt0s const& ft0s, TFv0as const& fv0as, TFdds const& fdds) { if (bcs.size() > 0 && fCurrentRun != bcs.begin().runNumber()) { @@ -1461,7 +1503,7 @@ struct TableMaker { eventExtended.reserve(collisions.size()); eventVtxCov.reserve(collisions.size()); - skimCollisions(collisions, bcs, zdcs, trackAssocs, tracksBarrel); + skimCollisions(collisions, bcs, zdcs, trackAssocs, tracksBarrel, ft0s, fv0as, fdds); if (fCollIndexMap.size() == 0) { return; } @@ -1551,7 +1593,7 @@ struct TableMaker { TrackAssoc const& trackAssocs, FwdTrackAssoc const& fwdTrackAssocs, MFTTrackAssoc const& mftAssocs) { - fullSkimming(collisions, bcs, nullptr, tracksBarrel, muons, mftTracks, trackAssocs, fwdTrackAssocs, mftAssocs, nullptr); + fullSkimming(collisions, bcs, nullptr, tracksBarrel, muons, mftTracks, trackAssocs, fwdTrackAssocs, mftAssocs, nullptr, nullptr, nullptr, nullptr); } // produce the barrel-only DQ skimmed data model typically for pp/p-Pb or UPC Pb-Pb (no centrality), subscribe to the DQ event filter (filter-pp or filter-PbPb) @@ -1559,14 +1601,14 @@ struct TableMaker { MyBarrelTracksWithCov const& tracksBarrel, TrackAssoc const& trackAssocs) { - fullSkimming(collisions, bcs, zdcs, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr); + fullSkimming(collisions, bcs, zdcs, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the muon-only DQ skimmed data model typically for pp/p-Pb or UPC Pb-Pb (no centrality), subscribe to the DQ event filter (filter-pp or filter-PbPb) void processPPWithFilterMuonOnly(MyEventsWithMultsAndFilter const& collisions, BCsWithTimestamps const& bcs, MyMuonsWithCov const& muons, FwdTrackAssoc const& fwdTrackAssocs) { - fullSkimming(collisions, bcs, nullptr, nullptr, muons, nullptr, nullptr, fwdTrackAssocs, nullptr, nullptr); + fullSkimming(collisions, bcs, nullptr, nullptr, muons, nullptr, nullptr, fwdTrackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the muon+mft DQ skimmed data model typically for pp/p-Pb or UPC Pb-Pb (no centrality), subscribe to the DQ event filter (filter-pp or filter-PbPb) @@ -1574,7 +1616,7 @@ struct TableMaker { MyMuonsWithCov const& muons, MFTTracks const& mftTracks, FwdTrackAssoc const& fwdTrackAssocs, MFTTrackAssoc const& mftAssocs) { - fullSkimming(collisions, bcs, nullptr, nullptr, muons, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, nullptr); + fullSkimming(collisions, bcs, nullptr, nullptr, muons, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, nullptr, nullptr, nullptr, nullptr); } // produce the barrel-only DQ skimmed data model typically for pp/p-Pb or UPC Pb-Pb (no centrality), meant to run on skimmed data @@ -1582,7 +1624,7 @@ struct TableMaker { MyBarrelTracksWithCov const& tracksBarrel, TrackAssoc const& trackAssocs) { - fullSkimming(collisions, bcs, zdcs, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr); + fullSkimming(collisions, bcs, zdcs, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the barrel-only DQ skimmed barrel data model, with V0 tagged tracks @@ -1590,21 +1632,21 @@ struct TableMaker { MyBarrelTracksWithV0BitsNoTOF const& tracksBarrel, TrackAssoc const& trackAssocs) { - fullSkimming(collisions, bcs, nullptr, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr); + fullSkimming(collisions, bcs, nullptr, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the muon-only DQ skimmed data model typically for pp/p-Pb or UPC Pb-Pb (no centrality), meant to run on skimmed data void processPPMuonOnly(MyEventsWithMults const& collisions, BCsWithTimestamps const& bcs, MyMuonsWithCov const& muons, FwdTrackAssoc const& fwdTrackAssocs) { - fullSkimming(collisions, bcs, nullptr, nullptr, muons, nullptr, nullptr, fwdTrackAssocs, nullptr, nullptr); + fullSkimming(collisions, bcs, nullptr, nullptr, muons, nullptr, nullptr, fwdTrackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the realigned muon-only DQ skimmed data model typically for pp/p-Pb or UPC Pb-Pb (no centrality), meant to run on skimmed data void processPPRealignedMuonOnly(MyEventsWithMults const& collisions, BCsWithTimestamps const& bcs, MyMuonsRealignWithCov const& muons, FwdTrackAssoc const& fwdTrackAssocs) { - fullSkimming(collisions, bcs, nullptr, nullptr, muons, nullptr, nullptr, fwdTrackAssocs, nullptr, nullptr); + fullSkimming(collisions, bcs, nullptr, nullptr, muons, nullptr, nullptr, fwdTrackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the muon+mft DQ skimmed data model typically for pp/p-Pb or UPC Pb-Pb (no centrality), meant to run on skimmed data @@ -1612,7 +1654,7 @@ struct TableMaker { MyMuonsWithCov const& muons, MFTTracks const& mftTracks, FwdTrackAssoc const& fwdTrackAssocs, MFTTrackAssoc const& mftAssocs) { - fullSkimming(collisions, bcs, nullptr, nullptr, muons, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, nullptr); + fullSkimming(collisions, bcs, nullptr, nullptr, muons, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, nullptr, nullptr, nullptr, nullptr); } // Central barrel multiplicity estimation @@ -1620,7 +1662,7 @@ struct TableMaker { MyMuonsWithCov const& muons, MFTTracks const& mftTracks, FwdTrackAssoc const& fwdTrackAssocs, MFTTrackAssoc const& mftAssocs) { - fullSkimming(collisions, bcs, nullptr, nullptr, muons, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, nullptr); + fullSkimming(collisions, bcs, nullptr, nullptr, muons, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, nullptr, nullptr, nullptr, nullptr); } // produce the full DQ skimmed data model typically for Pb-Pb (with centrality), no subscribtion to the DQ event filter @@ -1630,7 +1672,7 @@ struct TableMaker { TrackAssoc const& trackAssocs, FwdTrackAssoc const& fwdTrackAssocs, MFTTrackAssoc const& mftAssocs) { - fullSkimming(collisions, bcs, nullptr, tracksBarrel, muons, mftTracks, trackAssocs, fwdTrackAssocs, mftAssocs, nullptr); + fullSkimming(collisions, bcs, nullptr, tracksBarrel, muons, mftTracks, trackAssocs, fwdTrackAssocs, mftAssocs, nullptr, nullptr, nullptr, nullptr); } // produce the barrel only DQ skimmed data model typically for Pb-Pb (with centrality), no subscribtion to the DQ event filter @@ -1638,7 +1680,7 @@ struct TableMaker { MyBarrelTracksWithCov const& tracksBarrel, TrackAssoc const& trackAssocs) { - fullSkimming(collisions, bcs, nullptr, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr); + fullSkimming(collisions, bcs, nullptr, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the barrel only DQ skimmed data model typically for Pb-Pb (with centrality), no TOF @@ -1647,16 +1689,16 @@ struct TableMaker { TrackAssoc const& trackAssocs) { computeOccupancyEstimators(collisions, tracksPosWithCovNoTOF, tracksNegWithCovNoTOF, presliceWithCovNoTOF, bcs); - fullSkimming(collisions, bcs, nullptr, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr); + fullSkimming(collisions, bcs, nullptr, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the barrel-only DQ skimmed data model typically for UPC Pb-Pb (no centrality), subscribe to the DQ rapidity gap event filter (filter-PbPb) void processPbPbWithFilterBarrelOnly(MyEventsWithMultsAndRapidityGapFilter const& collisions, MyBCs const& bcs, aod::Zdcs& zdcs, MyBarrelTracksWithCov const& tracksBarrel, - TrackAssoc const& trackAssocs) + TrackAssoc const& trackAssocs, aod::FT0s& ft0s, aod::FV0As& fv0as, aod::FDDs& fdds) { computeOccupancyEstimators(collisions, tracksPosWithCov, tracksNegWithCov, presliceWithCov, bcs); - fullSkimming(collisions, bcs, zdcs, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr); + fullSkimming(collisions, bcs, zdcs, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr, ft0s, fv0as, fdds); } // produce the barrel only DQ skimmed data model typically for Pb-Pb (with centrality), no subscribtion to the DQ event filter @@ -1665,7 +1707,7 @@ struct TableMaker { TrackAssoc const& trackAssocs) { computeOccupancyEstimators(collisions, tracksPos, tracksNeg, preslice, bcs); - fullSkimming(collisions, bcs, nullptr, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr); + fullSkimming(collisions, bcs, nullptr, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the barrel only DQ skimmed data model typically for Pb-Pb (with centrality), no subscribtion to the DQ event filter @@ -1674,21 +1716,21 @@ struct TableMaker { TrackAssoc const& trackAssocs) { computeOccupancyEstimators(collisions, tracksPosNoTOF, tracksNegNoTOF, presliceNoTOF, bcs); - fullSkimming(collisions, bcs, nullptr, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr); + fullSkimming(collisions, bcs, nullptr, tracksBarrel, nullptr, nullptr, trackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the muon only DQ skimmed data model typically for Pb-Pb (with centrality), no subscribtion to the DQ event filter void processPbPbMuonOnly(MyEventsWithCentAndMults const& collisions, BCsWithTimestamps const& bcs, MyMuonsWithCov const& muons, FwdTrackAssoc const& fwdTrackAssocs) { - fullSkimming(collisions, bcs, nullptr, nullptr, muons, nullptr, nullptr, fwdTrackAssocs, nullptr, nullptr); + fullSkimming(collisions, bcs, nullptr, nullptr, muons, nullptr, nullptr, fwdTrackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the realigned muon only DQ skimmed data model typically for Pb-Pb (with centrality), no subscribtion to the DQ event filter void processPbPbRealignedMuonOnly(MyEventsWithCentAndMults const& collisions, BCsWithTimestamps const& bcs, MyMuonsRealignWithCov const& muons, FwdTrackAssoc const& fwdTrackAssocs) { - fullSkimming(collisions, bcs, nullptr, nullptr, muons, nullptr, nullptr, fwdTrackAssocs, nullptr, nullptr); + fullSkimming(collisions, bcs, nullptr, nullptr, muons, nullptr, nullptr, fwdTrackAssocs, nullptr, nullptr, nullptr, nullptr, nullptr); } // produce the muon+mft DQ skimmed data model typically for Pb-Pb (with centrality), no subscribtion to the DQ event filter @@ -1696,7 +1738,7 @@ struct TableMaker { MyMuonsWithCov const& muons, MFTTracks const& mftTracks, FwdTrackAssoc const& fwdTrackAssocs, MFTTrackAssoc const& mftAssocs) { - fullSkimming(collisions, bcs, nullptr, nullptr, muons, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, nullptr); + fullSkimming(collisions, bcs, nullptr, nullptr, muons, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, nullptr, nullptr, nullptr, nullptr); } // produce the muon+mft DQ skimmed data model typically including MFT covariances @@ -1705,7 +1747,7 @@ struct TableMaker { FwdTrackAssoc const& fwdTrackAssocs, MFTTrackAssoc const& mftAssocs, aod::MFTTracksCov const& mftCovs) { - fullSkimming(collisions, bcs, nullptr, nullptr, muons, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, mftCovs); + fullSkimming(collisions, bcs, nullptr, nullptr, muons, mftTracks, nullptr, fwdTrackAssocs, mftAssocs, mftCovs, nullptr, nullptr, nullptr); } // Process the BCs and store stats for luminosity retrieval -----------------------------------------------------------------------------------