From c132a17b7807a6b2742d04a89a76c6fbc88ca68b Mon Sep 17 00:00:00 2001 From: Isakov Artem Date: Tue, 28 Jan 2025 15:56:06 +0100 Subject: [PATCH 1/5] new definition of noise pixel --- Modules/ITS/include/ITS/ITSFhrTask.h | 4 ++-- Modules/ITS/itsFhr.json | 2 +- Modules/ITS/src/ITSFhrTask.cxx | 17 +++++++++++------ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Modules/ITS/include/ITS/ITSFhrTask.h b/Modules/ITS/include/ITS/ITSFhrTask.h index 579d42c7e2..b9ea47e161 100644 --- a/Modules/ITS/include/ITS/ITSFhrTask.h +++ b/Modules/ITS/include/ITS/ITSFhrTask.h @@ -109,14 +109,14 @@ class ITSFhrTask final : public TaskInterface int mDoHitmapFilter = 1; // do filtering of noise pixel vector std::unordered_map*** mHitPixelID_InStave = nullptr /* = new std::unordered_map**[NStaves[lay]]*/; int** mHitnumberLane = nullptr /* = new int*[NStaves[lay]]*/; // IB : hitnumber[stave][chip]; OB : hitnumber[stave][lane] - double** mOccupancyLane /* = new double*[NStaves[lay]]*/; // IB : occupancy[stave][chip]; OB : occupancy[stave][Lane] + double** mOccupancyLane /* = new double*[NStaves[lay]]*/; // IB : occupancy[stave][chip]; OB : occupancy[stave][Lane] int*** mErrorCount = nullptr /* = new int**[NStaves[lay]]*/; // IB : errorcount[stave][FEE][errorid] double** mChipPhi = nullptr /* = new double*[NStaves[lay]]*/; // IB/OB : mChipPhi[Stave][chip] double** mChipZ = nullptr /* = new double*[NStaves[lay]]*/; // IB/OB : mChipZ[Stave][chip] int** mChipStat = nullptr /* = new double*[NStaves[lay]]*/; // IB/OB : mChipStat[Stave][chip] int mNoisyPixelNumber[7][48] = { { 0 } }; - + unsigned long nHitsTotal = 0; int mMaxGeneralAxisRange = -3; // the range of TH2Poly plots z axis range, pow(10, mMinGeneralAxisRange) ~ pow(10, mMaxGeneralAxisRange) int mMinGeneralAxisRange = -12; // int mMaxGeneralNoisyAxisRange = 4000; diff --git a/Modules/ITS/itsFhr.json b/Modules/ITS/itsFhr.json index 30d6a3a893..d5ccdde3c0 100644 --- a/Modules/ITS/itsFhr.json +++ b/Modules/ITS/itsFhr.json @@ -37,7 +37,7 @@ "taskParameters": { "Layer": "4", "HitNumberCut": "0", - "decoderThreads": "8", + "decoderThreads": "1", "HitNumberCutForNoisyPixel": "0", "OccupancyNumberCutForNoisyPixel": "0.000001", "MaxGeneralAxisRange": "-2", diff --git a/Modules/ITS/src/ITSFhrTask.cxx b/Modules/ITS/src/ITSFhrTask.cxx index 822adc55e4..2dfe4948fe 100644 --- a/Modules/ITS/src/ITSFhrTask.cxx +++ b/Modules/ITS/src/ITSFhrTask.cxx @@ -500,6 +500,7 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx) for (auto& digit : digVec[istave][0]) { int chip = digit.getChipIndex() % 9; mHitPixelID_InStave[istave][0][chip][1000 * digit.getColumn() + digit.getRow()]++; + nHitsTotal++; if (mTFCount <= mCutTFForSparse) { Double_t pixelPos[2] = { 1. * (digit.getColumn() + (1024 * chip)), 1. * digit.getRow() }; mStaveHitmap[istave]->Fill(pixelPos); @@ -510,6 +511,7 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx) for (auto& digit : digVec[istave][ihic]) { int chip = ((digit.getChipIndex() - ChipBoundary[mLayer]) % (14 * nHicPerStave[mLayer])) % 14; mHitPixelID_InStave[istave][ihic][chip][1000 * digit.getColumn() + digit.getRow()]++; + nHitsTotal++; int ilink = ihic / (nHicPerStave[mLayer] / 2); if (mTFCount <= mCutTFForSparse) { if (chip < 7) { @@ -536,10 +538,10 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx) } int totalhit = 0; + #ifdef WITH_OPENMP omp_set_num_threads(mNThreads); -#pragma omp parallel for schedule(dynamic) reduction(+ \ - : totalhit) +#pragma omp parallel for schedule(dynamic) reduction(+ : totalhit) #endif // fill Monitor Objects use openMP multiple threads, and calculate the occupancy for (int i = 0; i < (int)activeStaves.size(); i++) { @@ -566,10 +568,11 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx) if (mDoHitmapFilter == 1) { for (auto iter = mHitPixelID_InStave[istave][0][ichip].begin(); iter != mHitPixelID_InStave[istave][0][ichip].end();) { - if ((double)iter->second / GBTLinkInfo->statistics.nTriggers < mPhysicalOccupancyIB) { // 40 hits/cm^2 * 5 pixels/hits * 4.5 cm^2 / 1024 / 512 = 1.7e-3/pixel/event for physics + if ((double)iter->second / 10 < (double)nHitsTotal / ((ChipBoundary[mLayer + 1] - ChipBoundary[mLayer]) * 1024 * 512)) { // noisy if more than 3x of averaged per chip mHitPixelID_InStave[istave][0][ichip].erase(iter++); - } else + } else { ++iter; + } } } @@ -607,10 +610,12 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx) if (mDoHitmapFilter == 1) { for (auto iter = mHitPixelID_InStave[istave][ihic + ilink * ((nHicPerStave[mLayer] / NSubStave[mLayer]))][ichip].begin(); iter != mHitPixelID_InStave[istave][ihic + ilink * ((nHicPerStave[mLayer] / NSubStave[mLayer]))][ichip].end();) { - if ((double)iter->second / GBTLinkInfo->statistics.nTriggers < mPhysicalOccupancyOB) { // 1 hits/cm^2 * 5 pixels/hits * 4.5 cm^2 / 1024 / 512 = 4.3e-5/pixel/event` + if ((double)iter->second / 100 < (double)nHitsTotal / ((ChipBoundary[mLayer + 1] - ChipBoundary[mLayer]) * 1024 * 512)) { // noisy if more than 3x of averaged per chip mHitPixelID_InStave[istave][ihic + ilink * ((nHicPerStave[mLayer] / NSubStave[mLayer]))][ichip].erase(iter++); - } else + + } else { ++iter; + } } } for (auto iter = mHitPixelID_InStave[istave][ihic + ilink * ((nHicPerStave[mLayer] / NSubStave[mLayer]))][ichip].begin(); iter != mHitPixelID_InStave[istave][ihic + ilink * ((nHicPerStave[mLayer] / NSubStave[mLayer]))][ichip].end(); iter++) { From 771d68a60c3d57a4cc7a930061dfa52867b99a31 Mon Sep 17 00:00:00 2001 From: Isakov Artem Date: Tue, 28 Jan 2025 16:04:21 +0100 Subject: [PATCH 2/5] clang --- Modules/ITS/src/ITSFhrTask.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Modules/ITS/src/ITSFhrTask.cxx b/Modules/ITS/src/ITSFhrTask.cxx index 2dfe4948fe..71d1949e52 100644 --- a/Modules/ITS/src/ITSFhrTask.cxx +++ b/Modules/ITS/src/ITSFhrTask.cxx @@ -541,7 +541,8 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx) #ifdef WITH_OPENMP omp_set_num_threads(mNThreads); -#pragma omp parallel for schedule(dynamic) reduction(+ : totalhit) +#pragma omp parallel for schedule(dynamic) reduction(+ \ + : totalhit) #endif // fill Monitor Objects use openMP multiple threads, and calculate the occupancy for (int i = 0; i < (int)activeStaves.size(); i++) { From 3a218d9327a0fd69d12bedc7405e622a31d2c354 Mon Sep 17 00:00:00 2001 From: Isakov Artem Date: Tue, 28 Jan 2025 16:15:55 +0100 Subject: [PATCH 3/5] clang2 --- Modules/ITS/src/ITSFhrTask.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/ITS/src/ITSFhrTask.cxx b/Modules/ITS/src/ITSFhrTask.cxx index 71d1949e52..94fc638526 100644 --- a/Modules/ITS/src/ITSFhrTask.cxx +++ b/Modules/ITS/src/ITSFhrTask.cxx @@ -542,7 +542,7 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx) #ifdef WITH_OPENMP omp_set_num_threads(mNThreads); #pragma omp parallel for schedule(dynamic) reduction(+ \ - : totalhit) + : totalhit) #endif // fill Monitor Objects use openMP multiple threads, and calculate the occupancy for (int i = 0; i < (int)activeStaves.size(); i++) { From b736ac6c5221653a292f01a963f54f4a6462ac23 Mon Sep 17 00:00:00 2001 From: Isakov Artem Date: Tue, 28 Jan 2025 16:29:11 +0100 Subject: [PATCH 4/5] clang3 --- Modules/ITS/src/ITSFhrTask.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/ITS/src/ITSFhrTask.cxx b/Modules/ITS/src/ITSFhrTask.cxx index 94fc638526..359f0bfc99 100644 --- a/Modules/ITS/src/ITSFhrTask.cxx +++ b/Modules/ITS/src/ITSFhrTask.cxx @@ -542,7 +542,7 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx) #ifdef WITH_OPENMP omp_set_num_threads(mNThreads); #pragma omp parallel for schedule(dynamic) reduction(+ \ - : totalhit) + : totalhit) #endif // fill Monitor Objects use openMP multiple threads, and calculate the occupancy for (int i = 0; i < (int)activeStaves.size(); i++) { From 12e4f267ef49939e7d6b0117f8c65f878d6a0f19 Mon Sep 17 00:00:00 2001 From: Isakov Artem Date: Tue, 28 Jan 2025 16:38:20 +0100 Subject: [PATCH 5/5] Clang 6 --- Modules/ITS/src/ITSFhrTask.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/ITS/src/ITSFhrTask.cxx b/Modules/ITS/src/ITSFhrTask.cxx index 359f0bfc99..2d29f1873c 100644 --- a/Modules/ITS/src/ITSFhrTask.cxx +++ b/Modules/ITS/src/ITSFhrTask.cxx @@ -542,7 +542,7 @@ void ITSFhrTask::monitorData(o2::framework::ProcessingContext& ctx) #ifdef WITH_OPENMP omp_set_num_threads(mNThreads); #pragma omp parallel for schedule(dynamic) reduction(+ \ - : totalhit) + : totalhit) #endif // fill Monitor Objects use openMP multiple threads, and calculate the occupancy for (int i = 0; i < (int)activeStaves.size(); i++) {