From 20632a9c333d97834b6a928cff16613db01e58ef Mon Sep 17 00:00:00 2001 From: Matthias Kleiner Date: Fri, 5 Jul 2024 17:23:53 +0200 Subject: [PATCH 1/3] TPC: adding cluster occupancy to timeseries --- .../DetectorsCalibration/IntegratedClusterCalibrator.h | 3 ++- Detectors/TPC/workflow/src/TPCTimeSeriesSpec.cxx | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Detectors/Calibration/include/DetectorsCalibration/IntegratedClusterCalibrator.h b/Detectors/Calibration/include/DetectorsCalibration/IntegratedClusterCalibrator.h index e6f16c9e29b48..2a9a79fa3cc1a 100644 --- a/Detectors/Calibration/include/DetectorsCalibration/IntegratedClusterCalibrator.h +++ b/Detectors/Calibration/include/DetectorsCalibration/IntegratedClusterCalibrator.h @@ -338,6 +338,7 @@ struct TimeSeriesITSTPC { ITSTPC_Matching mITSTPCAfterburner; ///< ITS-TPC matchin efficiency fir ITS afterburner TimeSeriesdEdx mdEdxQTot; ///< time series for dE/dx qTot monitoring TimeSeriesdEdx mdEdxQMax; ///< time series for dE/dx qMax monitoring + std::vector mOccupancyMapTPC; ///< cluster occupancy map std::vector nPrimVertices; ///< number of primary vertices std::vector nPrimVertices_ITS; ///< number of primary vertices selected with ITS cut 0.2() : recoData.getPrimaryVertexMatchedTracks(); // Global ID's for associated tracks auto primMatchedTracksRef = mTPCOnly ? gsl::span() : recoData.getPrimaryVertexMatchedTrackRefs(); // references from vertex to these track IDs + // get occupancy map + mBufferDCA.mOccupancyMapTPC = std::vector(recoData.occupancyMapTPC.begin(), recoData.occupancyMapTPC.end()); + // TOF clusters const auto& tofClusters = mTPCOnly ? gsl::span() : recoData.getTOFClusters(); @@ -1738,6 +1741,7 @@ o2::framework::DataProcessorSpec getTPCTimeSeriesSpec(const bool disableWriter, bool useMC = false; GID::mask_t srcTracks = tpcOnly ? GID::getSourcesMask("TPC") : GID::getSourcesMask("TPC,ITS,ITS-TPC,ITS-TPC-TRD,ITS-TPC-TOF,ITS-TPC-TRD-TOF"); dataRequest->requestTracks(srcTracks, useMC); + dataRequest->requestClusters(GID::getSourcesMask("TPC"), useMC); if (!tpcOnly) { dataRequest->requestPrimaryVertices(useMC); } From 85b3d0e151ab3408ff836f070dee87cd45da8475 Mon Sep 17 00:00:00 2001 From: Matthias Kleiner Date: Sat, 6 Jul 2024 15:14:13 +0200 Subject: [PATCH 2/3] fixing type of vector --- .../IntegratedClusterCalibrator.h | 16 ++++++++-------- Detectors/TPC/workflow/src/TPCTimeSeriesSpec.cxx | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Detectors/Calibration/include/DetectorsCalibration/IntegratedClusterCalibrator.h b/Detectors/Calibration/include/DetectorsCalibration/IntegratedClusterCalibrator.h index 2a9a79fa3cc1a..8a6996c35f2b3 100644 --- a/Detectors/Calibration/include/DetectorsCalibration/IntegratedClusterCalibrator.h +++ b/Detectors/Calibration/include/DetectorsCalibration/IntegratedClusterCalibrator.h @@ -331,14 +331,14 @@ struct TimeSeriesdEdx { }; struct TimeSeriesITSTPC { - TimeSeries mTSTPC; ///< TPC standalone DCAs - TimeSeries mTSITSTPC; ///< ITS-TPC standalone DCAs - ITSTPC_Matching mITSTPCAll; ///< ITS-TPC matching efficiency for ITS standalone + afterburner - ITSTPC_Matching mITSTPCStandalone; ///< ITS-TPC matching efficiency for ITS standalone - ITSTPC_Matching mITSTPCAfterburner; ///< ITS-TPC matchin efficiency fir ITS afterburner - TimeSeriesdEdx mdEdxQTot; ///< time series for dE/dx qTot monitoring - TimeSeriesdEdx mdEdxQMax; ///< time series for dE/dx qMax monitoring - std::vector mOccupancyMapTPC; ///< cluster occupancy map + TimeSeries mTSTPC; ///< TPC standalone DCAs + TimeSeries mTSITSTPC; ///< ITS-TPC standalone DCAs + ITSTPC_Matching mITSTPCAll; ///< ITS-TPC matching efficiency for ITS standalone + afterburner + ITSTPC_Matching mITSTPCStandalone; ///< ITS-TPC matching efficiency for ITS standalone + ITSTPC_Matching mITSTPCAfterburner; ///< ITS-TPC matchin efficiency fir ITS afterburner + TimeSeriesdEdx mdEdxQTot; ///< time series for dE/dx qTot monitoring + TimeSeriesdEdx mdEdxQMax; ///< time series for dE/dx qMax monitoring + std::vector mOccupancyMapTPC; ///< cluster occupancy map std::vector nPrimVertices; ///< number of primary vertices std::vector nPrimVertices_ITS; ///< number of primary vertices selected with ITS cut 0.2() : recoData.getPrimaryVertexMatchedTrackRefs(); // references from vertex to these track IDs // get occupancy map - mBufferDCA.mOccupancyMapTPC = std::vector(recoData.occupancyMapTPC.begin(), recoData.occupancyMapTPC.end()); + mBufferDCA.mOccupancyMapTPC = std::vector(recoData.occupancyMapTPC.begin(), recoData.occupancyMapTPC.end()); // TOF clusters const auto& tofClusters = mTPCOnly ? gsl::span() : recoData.getTOFClusters(); From b20cd6079cdfcef8e9c3e76050af1f217ba63d26 Mon Sep 17 00:00:00 2001 From: Matthias Kleiner Date: Thu, 11 Jul 2024 15:45:50 +0200 Subject: [PATCH 3/3] Restricting maximum size of occpancy vector --- Detectors/TPC/workflow/src/TPCTimeSeriesSpec.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Detectors/TPC/workflow/src/TPCTimeSeriesSpec.cxx b/Detectors/TPC/workflow/src/TPCTimeSeriesSpec.cxx index 70b475f831419..280fd965c4185 100644 --- a/Detectors/TPC/workflow/src/TPCTimeSeriesSpec.cxx +++ b/Detectors/TPC/workflow/src/TPCTimeSeriesSpec.cxx @@ -98,6 +98,7 @@ class TPCTimeSeries : public Task mSampleTsallis = ic.options().get("sample-unbinned-tsallis"); mXOuterMatching = ic.options().get("refX-for-outer-ITS"); mUseMinBiasTrigger = !ic.options().get("disable-min-bias-trigger"); + mMaxOccupancyHistBins = ic.options().get("max-occupancy-bins"); if (mUnbinnedWriter) { for (int iThread = 0; iThread < mNThreads; ++iThread) { @@ -182,6 +183,9 @@ class TPCTimeSeries : public Task // get occupancy map mBufferDCA.mOccupancyMapTPC = std::vector(recoData.occupancyMapTPC.begin(), recoData.occupancyMapTPC.end()); + if (mBufferDCA.mOccupancyMapTPC.size() > mMaxOccupancyHistBins) { + mBufferDCA.mOccupancyMapTPC.resize(mMaxOccupancyHistBins); + } // TOF clusters const auto& tofClusters = mTPCOnly ? gsl::span() : recoData.getTOFClusters(); @@ -1034,6 +1038,7 @@ class TPCTimeSeries : public Task bool mUseMinBiasTrigger{false}; ///< use minimum bias trigger for skimmed data (accept fraction of tracks with nCl < 80) long mTimeMS{}; ///< time in MS of current TF int mRun{}; ///< run number + int mMaxOccupancyHistBins{912}; ///< maximum number of occupancy bins /// check if track passes coarse cuts bool acceptTrack(const TrackTPC& track) const { return std::abs(track.getTgl()) < mMaxTgl; } @@ -1802,7 +1807,8 @@ o2::framework::DataProcessorSpec getTPCTimeSeriesSpec(const bool disableWriter, {"sample-unbinned-tsallis", VariantType::Bool, false, {"Perform sampling of unbinned data based on Tsallis function"}}, {"sampling-factor", VariantType::Float, 0.001f, {"Sampling factor in case sample-unbinned-tsallis is used"}}, {"disable-min-bias-trigger", VariantType::Bool, false, {"Disable the minimum bias trigger for skimmed data"}}, - {"out-file-unbinned", VariantType::String, "time_series_tracks.root", {"name of the output file for the unbinned data"}}}}; + {"out-file-unbinned", VariantType::String, "time_series_tracks.root", {"name of the output file for the unbinned data"}}, + {"max-occupancy-bins", VariantType::Int, 912, {"Maximum number of occupancy bins"}}}}; } } // namespace tpc