From a0667c3e4018f6560c1f68f1d9406740f13665e9 Mon Sep 17 00:00:00 2001 From: ddobrigk Date: Thu, 12 Dec 2024 15:40:29 +0100 Subject: [PATCH 1/5] Common: MFT extras draft --- Common/DataModel/Multiplicity.h | 5 +- Common/TableProducer/multiplicityTable.cxx | 60 ++++++++++++++-------- 2 files changed, 41 insertions(+), 24 deletions(-) diff --git a/Common/DataModel/Multiplicity.h b/Common/DataModel/Multiplicity.h index 40175ded7a4..e65e72aaa3c 100644 --- a/Common/DataModel/Multiplicity.h +++ b/Common/DataModel/Multiplicity.h @@ -47,7 +47,8 @@ DECLARE_SOA_DYNAMIC_COLUMN(IsInelGt1, isInelGt1, //! is INEL > 1 [](int multPveta1) -> bool { return multPveta1 > 1; }); // forward track counters -DECLARE_SOA_COLUMN(MFTNtracks, mftNtracks, int); //! +DECLARE_SOA_COLUMN(MFTNalltracks, mftNalltracks, int); //! overall counter, uses AO2D coll assoc +DECLARE_SOA_COLUMN(MFTNtracks, mftNtracks, int); //! reassigned, uses mult group software // MC DECLARE_SOA_COLUMN(MultMCFT0A, multMCFT0A, int); //! @@ -113,7 +114,7 @@ DECLARE_SOA_TABLE(PVMults, "AOD", "PVMULT", //! Multiplicity from the PV contrib mult::IsInelGt0, mult::IsInelGt1); DECLARE_SOA_TABLE(MFTMults, "AOD", "MFTMULT", //! Multiplicity with MFT - mult::MFTNtracks); + mult::MFTNalltracks, mult::MFTNtracks); using BarrelMults = soa::Join; using Mults = soa::Join; using FT0Mult = FT0Mults::iterator; diff --git a/Common/TableProducer/multiplicityTable.cxx b/Common/TableProducer/multiplicityTable.cxx index 2f9040b569c..3362439ab92 100644 --- a/Common/TableProducer/multiplicityTable.cxx +++ b/Common/TableProducer/multiplicityTable.cxx @@ -28,6 +28,7 @@ #include "TableHelper.h" #include "MetadataHelper.h" #include "TList.h" +#include "PWGMM/Mult/DataModel/bestCollisionTable.h" using namespace o2; using namespace o2::framework; @@ -72,10 +73,9 @@ static const std::vector tableNames{"FV0Mults", // 0 "FT0MultZeqs", // 10 "FDDMultZeqs", // 11 "PVMultZeqs", // 12 - "MultMCExtras", // 13 - "MFTMults"}; // 14 + "MultMCExtras"}; // 13 static const std::vector parameterNames{"Enable"}; -static const int defaultParameters[nTables][nParameters]{{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}}; +static const int defaultParameters[nTables][nParameters]{{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}}; struct MultiplicityTable { SliceCache cache; @@ -94,7 +94,7 @@ struct MultiplicityTable { Produces tablePVZeqs; // 12 Produces tableExtraMc; // 13 Produces tableExtraMult2MCExtras; - Produces mftMults; // 14 + Produces mftMults; // Not accounted for, produced using custom process function to avoid dependencies Produces multsGlobal; // Not accounted for, produced based on process function processGlobalTrackingCounters // For vertex-Z corrections in calibration @@ -301,8 +301,7 @@ struct MultiplicityTable { aod::Zdcs const&, aod::FV0As const&, aod::FT0s const&, - aod::FDDs const&, - aod::MFTTracks const& mftTracks) + aod::FDDs const&) { // reserve memory for (auto i : mEnabledTables) { @@ -348,9 +347,6 @@ struct MultiplicityTable { break; case kMultMCExtras: // MC extra information (nothing to do in the data) break; - case kMFTMults: // Equalized multiplicity for PV - mftMults.reserve(collisions.size()); - break; default: LOG(fatal) << "Unknown table requested: " << i; break; @@ -629,19 +625,6 @@ struct MultiplicityTable { case kMultMCExtras: // MC only (nothing to do) { } break; - case kMFTMults: { - // for centrality estimation with the MFT if desired - // step 1: produce proper grouping - const uint64_t collIdx = collision.globalIndex(); - auto mftTracksGrouped = mftTracks.sliceBy(perCollisionMFT, collIdx); - int nTracks = 0; - for (auto& track : mftTracksGrouped) { - if (track.nClusters() >= 5) { // hardcoded on purpose to avoid trouble - nTracks++; - } - } - mftMults(nTracks); - } break; default: // Default { LOG(fatal) << "Unknown table requested: " << i; @@ -754,12 +737,45 @@ struct MultiplicityTable { multsGlobal(nGlobalTracks, multNContribsEta08_kGlobalTrackWoDCA, multNContribsEta10_kGlobalTrackWoDCA, multNContribsEta05_kGlobalTrackWoDCA); } + void processRun3MFT(soa::Join::iterator const& collision, + o2::aod::MFTTracks const& mftTracks, + soa::SmallGroups const& retracks + ) + { + int nAllTracks = 0; + int nTracks = 0; + + for (auto& track : mftTracks) { + if (track.nClusters() >= 5) { // hardcoded for now + nAllTracks++; + } + } + + if (retracks.size() > 0) { + for (auto& retrack : retracks) { + auto track = retrack.mfttrack(); + if (track.nClusters() < 5){ + continue; // min cluster requirement + } + if ((track.eta() > -2.0f) && (track.eta() < -3.9f)) { + continue; // too far to be of true interest + } + if (std::abs(retrack.bestDCAXY())> 2.0f){ + continue; // does not point to PV properly + } + nTracks++; + } + } + mftMults(nAllTracks, nTracks); + } + // Process switches PROCESS_SWITCH(MultiplicityTable, processRun2, "Produce Run 2 multiplicity tables", false); PROCESS_SWITCH(MultiplicityTable, processRun3, "Produce Run 3 multiplicity tables", true); PROCESS_SWITCH(MultiplicityTable, processGlobalTrackingCounters, "Produce Run 3 global counters", false); PROCESS_SWITCH(MultiplicityTable, processMC, "Produce MC multiplicity tables", false); PROCESS_SWITCH(MultiplicityTable, processMC2Mults, "Produce MC -> Mult map", false); + PROCESS_SWITCH(MultiplicityTable, processRun3MFT, "Produce MFT mult tables", false); }; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) From 0544ca714d01ce574ea5a5c41cb4b3bdb0126618 Mon Sep 17 00:00:00 2001 From: ddobrigk Date: Fri, 13 Dec 2024 15:21:26 +0100 Subject: [PATCH 2/5] Common: add better mft counters --- Common/TableProducer/Converters/trackQA002Converter.cxx | 6 +++--- Common/TableProducer/multiplicityTable.cxx | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Common/TableProducer/Converters/trackQA002Converter.cxx b/Common/TableProducer/Converters/trackQA002Converter.cxx index 3e1bc82dbaf..c4ee515599c 100644 --- a/Common/TableProducer/Converters/trackQA002Converter.cxx +++ b/Common/TableProducer/Converters/trackQA002Converter.cxx @@ -20,9 +20,9 @@ using namespace o2::framework; struct TrackQAConverter002 { Produces tracksQA_002; - void process000(aod::TracksQA_000 const& tracksQA_002) + void process000(aod::TracksQA_000 const& tracksQA_001) { - for (const auto& trackQA : tracksQA_000) { + for (const auto& trackQA : tracksQA_001) { tracksQA_002( trackQA.trackId(), trackQA.tpcTime0(), @@ -54,7 +54,7 @@ struct TrackQAConverter002 { } PROCESS_SWITCH(TrackQAConverter002, process000, "process v000-to-v002 conversion", false); - void process001(aod::TracksQA_001 const& tracksQA_002) + void process001(aod::TracksQA_001 const& tracksQA_001) { for (const auto& trackQA : tracksQA_001) { tracksQA_002( diff --git a/Common/TableProducer/multiplicityTable.cxx b/Common/TableProducer/multiplicityTable.cxx index 3362439ab92..368b2621a9a 100644 --- a/Common/TableProducer/multiplicityTable.cxx +++ b/Common/TableProducer/multiplicityTable.cxx @@ -50,8 +50,7 @@ static constexpr int kFT0MultZeqs = 10; static constexpr int kFDDMultZeqs = 11; static constexpr int kPVMultZeqs = 12; static constexpr int kMultMCExtras = 13; -static constexpr int kMFTMults = 14; -static constexpr int nTables = 15; +static constexpr int nTables = 14; // Checking that the Zeq tables are after the normal ones static_assert(kFV0Mults < kFV0MultZeqs); From 29247be31411d0381a8202eef251a4a6ba35a2b1 Mon Sep 17 00:00:00 2001 From: ddobrigk Date: Fri, 13 Dec 2024 15:23:25 +0100 Subject: [PATCH 3/5] Update trackQA002Converter.cxx --- Common/TableProducer/Converters/trackQA002Converter.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/TableProducer/Converters/trackQA002Converter.cxx b/Common/TableProducer/Converters/trackQA002Converter.cxx index 52437f79a39..566c998e1bc 100644 --- a/Common/TableProducer/Converters/trackQA002Converter.cxx +++ b/Common/TableProducer/Converters/trackQA002Converter.cxx @@ -22,7 +22,7 @@ struct TrackQAConverter002 { void process000(aod::TracksQA_000 const& tracksQA_000) { - for (const auto& trackQA : tracksQA_001) { + for (const auto& trackQA : tracksQA_000) { tracksQA_002( trackQA.trackId(), trackQA.tpcTime0(), From 00f4cf81792de6361b0db51ee4f6dbc7036c5b3e Mon Sep 17 00:00:00 2001 From: ALICE Builder Date: Fri, 13 Dec 2024 15:24:41 +0100 Subject: [PATCH 4/5] Please consider the following formatting changes (#365) --- Common/DataModel/Multiplicity.h | 2 +- Common/TableProducer/multiplicityTable.cxx | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Common/DataModel/Multiplicity.h b/Common/DataModel/Multiplicity.h index e65e72aaa3c..2547f888691 100644 --- a/Common/DataModel/Multiplicity.h +++ b/Common/DataModel/Multiplicity.h @@ -47,7 +47,7 @@ DECLARE_SOA_DYNAMIC_COLUMN(IsInelGt1, isInelGt1, //! is INEL > 1 [](int multPveta1) -> bool { return multPveta1 > 1; }); // forward track counters -DECLARE_SOA_COLUMN(MFTNalltracks, mftNalltracks, int); //! overall counter, uses AO2D coll assoc +DECLARE_SOA_COLUMN(MFTNalltracks, mftNalltracks, int); //! overall counter, uses AO2D coll assoc DECLARE_SOA_COLUMN(MFTNtracks, mftNtracks, int); //! reassigned, uses mult group software // MC diff --git a/Common/TableProducer/multiplicityTable.cxx b/Common/TableProducer/multiplicityTable.cxx index 368b2621a9a..0c10165b37b 100644 --- a/Common/TableProducer/multiplicityTable.cxx +++ b/Common/TableProducer/multiplicityTable.cxx @@ -738,10 +738,9 @@ struct MultiplicityTable { void processRun3MFT(soa::Join::iterator const& collision, o2::aod::MFTTracks const& mftTracks, - soa::SmallGroups const& retracks - ) + soa::SmallGroups const& retracks) { - int nAllTracks = 0; + int nAllTracks = 0; int nTracks = 0; for (auto& track : mftTracks) { @@ -753,13 +752,13 @@ struct MultiplicityTable { if (retracks.size() > 0) { for (auto& retrack : retracks) { auto track = retrack.mfttrack(); - if (track.nClusters() < 5){ + if (track.nClusters() < 5) { continue; // min cluster requirement } if ((track.eta() > -2.0f) && (track.eta() < -3.9f)) { continue; // too far to be of true interest } - if (std::abs(retrack.bestDCAXY())> 2.0f){ + if (std::abs(retrack.bestDCAXY()) > 2.0f) { continue; // does not point to PV properly } nTracks++; From 0eace3b4397ea69a52c9263a3551c7b00ff7a135 Mon Sep 17 00:00:00 2001 From: ddobrigk Date: Fri, 13 Dec 2024 15:34:13 +0100 Subject: [PATCH 5/5] Update multiplicityTable.cxx --- Common/TableProducer/multiplicityTable.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/TableProducer/multiplicityTable.cxx b/Common/TableProducer/multiplicityTable.cxx index 0c10165b37b..908a44e92fb 100644 --- a/Common/TableProducer/multiplicityTable.cxx +++ b/Common/TableProducer/multiplicityTable.cxx @@ -736,7 +736,7 @@ struct MultiplicityTable { multsGlobal(nGlobalTracks, multNContribsEta08_kGlobalTrackWoDCA, multNContribsEta10_kGlobalTrackWoDCA, multNContribsEta05_kGlobalTrackWoDCA); } - void processRun3MFT(soa::Join::iterator const& collision, + void processRun3MFT(soa::Join::iterator const&, o2::aod::MFTTracks const& mftTracks, soa::SmallGroups const& retracks) {