From b2bb9308394487d49018fb7bad852922b34e0b17 Mon Sep 17 00:00:00 2001 From: Tomas Herman Date: Tue, 23 Mar 2021 18:07:30 +0100 Subject: [PATCH 1/9] Updating the digit file reader to read multiple TFs. --- .../MFT/src/runDigitsRootFileReaderMFT.cxx | 71 +++++++++++++------ 1 file changed, 49 insertions(+), 22 deletions(-) diff --git a/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx b/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx index 8b5f838f46..8ff376d174 100644 --- a/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx +++ b/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx @@ -57,56 +57,83 @@ class DigitsRootFileReaderMFT : public o2::framework::Task ic.services().get().readyToQuit(QuitRequest::Me); return; } + + // get the tree + mTree = (TTree*) mFile->Get("o2sim"); + mTree->SetBranchAddress("MFTDigit", &pdigits); + mTree->SetBranchAddress("MFTDigitROF", &profs); + + // check that it has entries + nTFs = mTree->GetEntries(); + if (nTFs == 0) { + LOG(ERROR) << "DigitsRootFileReaderMFT::init. No TFs "; + ic.services().get().endOfStream(); + ic.services().get().readyToQuit(QuitRequest::Me); + return; + } + LOG(INFO) << " oooooooooooo In DigitsRootFileReaderMFT::init ... nTFs = " << nTFs; + } //_________________________________________________________________________________________________ void run(framework::ProcessingContext& pc) - { - // get vector of ROF - std::unique_ptr tree((TTree*)mFile->Get("o2sim")); - std::vector rofs, *profs = &rofs; - tree->SetBranchAddress("MFTDigitROF", &profs); - tree->GetEntry(0); - - // Check if there is a new ROF - auto nROFs = rofs.size(); - if (currentROF >= nROFs) { - // if (currentROF >= 50) { + { + // Check if this is the last TF + if (currentTF == nTFs) { LOG(INFO) << " DigitsRootFileReaderMFT::run. End of file reached"; pc.services().get().endOfStream(); pc.services().get().readyToQuit(QuitRequest::Me); return; } + + // check if we need to read a new TF + if (currentROF == nROFs) { + mTree->GetEntry(currentTF); // get new TF + currentTF++; + nROFs = rofs.size(); // get number of ROFs in this TF + currentROF = 0; + LOG(INFO) << " oooooooooooo Reading TF " << currentTF << " from " << nTFs + << " with " << nROFs << " ROFs"; + } + // prepare the rof output std::vector* oneROFvec = new std::vector(); std::copy(rofs.begin() + currentROF, rofs.begin() + currentROF + 1, std::back_inserter(*oneROFvec)); - // get the current ROF - auto& rof = rofs[currentROF]; - currentROF++; - + // get the digits in current ROF - // --> get digit branch - std::vector digits, *pdigits = &digits; - tree->SetBranchAddress("MFTDigit", &pdigits); - tree->GetEntry(0); + // --> get the current ROF + auto& rof = rofs[currentROF]; // --> find the ranges int index = rof.getFirstEntry(); // first digit position int nDigitsInROF = rof.getNEntries(); // number of digits int lastIndex = index + nDigitsInROF; + // --> fill in the corresponding digits - std::vector* DigitsInROF = new std::vector(); + std::vector* DigitsInROF = new std::vector(); std::copy(digits.begin() + index, digits.begin() + lastIndex, std::back_inserter(*DigitsInROF)); // fill in the message // LOG(INFO) << " DigitsRootFileReaderMFT::run. In this ROF there are " << DigitsInROF.size() << " digits"; pc.outputs().snapshot(Output{ "MFT", "DIGITS", 0, Lifetime::Timeframe }, *DigitsInROF); pc.outputs().snapshot(Output{ "MFT", "MFTDigitROF", 0, Lifetime::Timeframe }, *oneROFvec); + + // update the ROF counter + currentROF++; + // usleep(100); + } private: - std::unique_ptr mFile = nullptr; - unsigned long currentROF = 0; + std::unique_ptr mFile = nullptr; // file to be read + TTree *mTree = nullptr; // tree inside the file + std::vector rofs, *profs = &rofs; // pointer to ROF branch + std::vector digits, *pdigits = &digits; // pointer to digit branch + + unsigned long nTFs = 0; // number of TF + unsigned long nROFs = 0; // number of ROFs in current TF + unsigned long currentROF = 0; // idx of current ROF + unsigned long currentTF = 0; // idx of current TF }; // end class definition From ac7f85700f53435a5ea1ff5168f92dec2c65efee Mon Sep 17 00:00:00 2001 From: Tomas Herman Date: Tue, 23 Mar 2021 18:08:12 +0100 Subject: [PATCH 2/9] Clang format. --- .../MFT/src/runDigitsRootFileReaderMFT.cxx | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx b/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx index 8ff376d174..7ad5b28737 100644 --- a/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx +++ b/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx @@ -59,7 +59,7 @@ class DigitsRootFileReaderMFT : public o2::framework::Task } // get the tree - mTree = (TTree*) mFile->Get("o2sim"); + mTree = (TTree*)mFile->Get("o2sim"); mTree->SetBranchAddress("MFTDigit", &pdigits); mTree->SetBranchAddress("MFTDigitROF", &profs); @@ -72,13 +72,12 @@ class DigitsRootFileReaderMFT : public o2::framework::Task return; } LOG(INFO) << " oooooooooooo In DigitsRootFileReaderMFT::init ... nTFs = " << nTFs; - } //_________________________________________________________________________________________________ void run(framework::ProcessingContext& pc) - { + { // Check if this is the last TF if (currentTF == nTFs) { LOG(INFO) << " DigitsRootFileReaderMFT::run. End of file reached"; @@ -94,13 +93,13 @@ class DigitsRootFileReaderMFT : public o2::framework::Task nROFs = rofs.size(); // get number of ROFs in this TF currentROF = 0; LOG(INFO) << " oooooooooooo Reading TF " << currentTF << " from " << nTFs - << " with " << nROFs << " ROFs"; + << " with " << nROFs << " ROFs"; } // prepare the rof output std::vector* oneROFvec = new std::vector(); std::copy(rofs.begin() + currentROF, rofs.begin() + currentROF + 1, std::back_inserter(*oneROFvec)); - + // get the digits in current ROF // --> get the current ROF auto& rof = rofs[currentROF]; @@ -108,7 +107,7 @@ class DigitsRootFileReaderMFT : public o2::framework::Task int index = rof.getFirstEntry(); // first digit position int nDigitsInROF = rof.getNEntries(); // number of digits int lastIndex = index + nDigitsInROF; - + // --> fill in the corresponding digits std::vector* DigitsInROF = new std::vector(); std::copy(digits.begin() + index, digits.begin() + lastIndex, std::back_inserter(*DigitsInROF)); @@ -121,19 +120,18 @@ class DigitsRootFileReaderMFT : public o2::framework::Task // update the ROF counter currentROF++; // usleep(100); - } private: - std::unique_ptr mFile = nullptr; // file to be read - TTree *mTree = nullptr; // tree inside the file - std::vector rofs, *profs = &rofs; // pointer to ROF branch + std::unique_ptr mFile = nullptr; // file to be read + TTree* mTree = nullptr; // tree inside the file + std::vector rofs, *profs = &rofs; // pointer to ROF branch std::vector digits, *pdigits = &digits; // pointer to digit branch - unsigned long nTFs = 0; // number of TF - unsigned long nROFs = 0; // number of ROFs in current TF + unsigned long nTFs = 0; // number of TF + unsigned long nROFs = 0; // number of ROFs in current TF unsigned long currentROF = 0; // idx of current ROF - unsigned long currentTF = 0; // idx of current TF + unsigned long currentTF = 0; // idx of current TF }; // end class definition From d468d3e39ca6befac611f814b7a9fdf9220aba6d Mon Sep 17 00:00:00 2001 From: Tomas Herman Date: Tue, 23 Mar 2021 19:14:38 +0100 Subject: [PATCH 3/9] Bug correction in TH declarations. --- Modules/MFT/include/MFT/BasicDigitQcTask.h | 7 ++-- Modules/MFT/src/BasicDigitQcTask.cxx | 48 ++-------------------- 2 files changed, 8 insertions(+), 47 deletions(-) diff --git a/Modules/MFT/include/MFT/BasicDigitQcTask.h b/Modules/MFT/include/MFT/BasicDigitQcTask.h index 45bf799991..de001c6b6d 100644 --- a/Modules/MFT/include/MFT/BasicDigitQcTask.h +++ b/Modules/MFT/include/MFT/BasicDigitQcTask.h @@ -54,9 +54,10 @@ class BasicDigitQcTask final : public TaskInterface private: // variables - const double gPixelHitMapsMaxBinX = 1023.5; - const double gPixelHitMapsMaxBinY = 511.5; - const double gPixelHitMapsMinBin = -0.5; + const double gPixelHitMapsMaxBinX = 1024; + const double gPixelHitMapsMaxBinY = 512; + const double gPixelHitMapsMinBin = 0; + const double gPixelHitMapsShift = 0.5; const int gPixelHitMapsBinWidth = 1; const int nHitMaps = 20; diff --git a/Modules/MFT/src/BasicDigitQcTask.cxx b/Modules/MFT/src/BasicDigitQcTask.cxx index c1eb222a46..cd5d0c55f5 100644 --- a/Modules/MFT/src/BasicDigitQcTask.cxx +++ b/Modules/MFT/src/BasicDigitQcTask.cxx @@ -97,8 +97,8 @@ void BasicDigitQcTask::initialize(o2::framework::InitContext& /*ctx*/) auto pxlhitmap = std::make_unique( FolderName, HistogramName, - gPixelHitMapsMaxBinX / gPixelHitMapsBinWidth, gPixelHitMapsMinBin, gPixelHitMapsMaxBinX, - gPixelHitMapsMaxBinY / gPixelHitMapsBinWidth, gPixelHitMapsMinBin, gPixelHitMapsMaxBinY); + gPixelHitMapsMaxBinX / gPixelHitMapsBinWidth, gPixelHitMapsMinBin-gPixelHitMapsShift, gPixelHitMapsMaxBinX-gPixelHitMapsShift, + gPixelHitMapsMaxBinY / gPixelHitMapsBinWidth, gPixelHitMapsMinBin-gPixelHitMapsShift, gPixelHitMapsMaxBinY-gPixelHitMapsShift); pxlhitmap->SetStats(0); mMFTPixelHitMap.push_back(std::move(pxlhitmap)); if (TaskLevel == 2 || TaskLevel == 4) @@ -145,8 +145,8 @@ void BasicDigitQcTask::monitorData(o2::framework::ProcessingContext& ctx) // fill pixel hit maps mMFTPixelHitMap[vectorIndex]->Fill(one_digit.getColumn(), one_digit.getRow()); // fill overview histograms - mMFT_chip_index_H->SetBinContent(chipIndex, mMFTPixelHitMap[vectorIndex]->GetEntries()); - mMFT_chip_std_dev_H->SetBinContent(chipIndex, mMFTPixelHitMap[vectorIndex]->GetStdDev(1)); + mMFT_chip_index_H->SetBinContent(chipIndex+1, mMFTPixelHitMap[vectorIndex]->GetEntries()); + mMFT_chip_std_dev_H->SetBinContent(chipIndex+1, mMFTPixelHitMap[vectorIndex]->GetStdDev(1)); // } } @@ -267,44 +267,4 @@ int BasicDigitQcTask::getChipIndex(int vectorID) return chipID; } -// void BasicDigitQcTask::readTable() -// { -// // reset arrays -// for (int i = 0; i < nChip; i++) { -// half[i] = 0; -// disk[i] = 0; -// face[i] = 0; -// zone[i] = 0; -// ladder[i] = 0; -// sensor[i] = 0; -// transID[i] = 0; -// layer[i] = 0; -// x[i] = 0; -// y[i] = 0; -// z[i] = 0; -// binx[i] = 0; -// biny[i] = 0; -// } - -// // read file -// std::ifstream read_table; -// read_table.open("./table_file_binidx.txt"); -// for (int i = 0; i < nChip; ++i) { -// read_table >> half[i]; -// read_table >> disk[i]; -// read_table >> face[i]; -// read_table >> zone[i]; -// read_table >> ladder[i]; -// read_table >> sensor[i]; -// read_table >> transID[i]; -// read_table >> layer[i]; -// read_table >> x[i]; -// read_table >> y[i]; -// read_table >> z[i]; -// read_table >> binx[i]; -// read_table >> biny[i]; -// } -// read_table.close(); -// } - } // namespace o2::quality_control_modules::mft \ No newline at end of file From 039d30e94b544557416b05fd20c0271b2c8e62e7 Mon Sep 17 00:00:00 2001 From: Tomas Herman Date: Tue, 23 Mar 2021 19:19:12 +0100 Subject: [PATCH 4/9] Clang --- Modules/MFT/src/BasicDigitQcTask.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Modules/MFT/src/BasicDigitQcTask.cxx b/Modules/MFT/src/BasicDigitQcTask.cxx index cd5d0c55f5..e6962061a2 100644 --- a/Modules/MFT/src/BasicDigitQcTask.cxx +++ b/Modules/MFT/src/BasicDigitQcTask.cxx @@ -97,8 +97,8 @@ void BasicDigitQcTask::initialize(o2::framework::InitContext& /*ctx*/) auto pxlhitmap = std::make_unique( FolderName, HistogramName, - gPixelHitMapsMaxBinX / gPixelHitMapsBinWidth, gPixelHitMapsMinBin-gPixelHitMapsShift, gPixelHitMapsMaxBinX-gPixelHitMapsShift, - gPixelHitMapsMaxBinY / gPixelHitMapsBinWidth, gPixelHitMapsMinBin-gPixelHitMapsShift, gPixelHitMapsMaxBinY-gPixelHitMapsShift); + gPixelHitMapsMaxBinX / gPixelHitMapsBinWidth, gPixelHitMapsMinBin - gPixelHitMapsShift, gPixelHitMapsMaxBinX - gPixelHitMapsShift, + gPixelHitMapsMaxBinY / gPixelHitMapsBinWidth, gPixelHitMapsMinBin - gPixelHitMapsShift, gPixelHitMapsMaxBinY - gPixelHitMapsShift); pxlhitmap->SetStats(0); mMFTPixelHitMap.push_back(std::move(pxlhitmap)); if (TaskLevel == 2 || TaskLevel == 4) @@ -145,8 +145,8 @@ void BasicDigitQcTask::monitorData(o2::framework::ProcessingContext& ctx) // fill pixel hit maps mMFTPixelHitMap[vectorIndex]->Fill(one_digit.getColumn(), one_digit.getRow()); // fill overview histograms - mMFT_chip_index_H->SetBinContent(chipIndex+1, mMFTPixelHitMap[vectorIndex]->GetEntries()); - mMFT_chip_std_dev_H->SetBinContent(chipIndex+1, mMFTPixelHitMap[vectorIndex]->GetStdDev(1)); + mMFT_chip_index_H->SetBinContent(chipIndex + 1, mMFTPixelHitMap[vectorIndex]->GetEntries()); + mMFT_chip_std_dev_H->SetBinContent(chipIndex + 1, mMFTPixelHitMap[vectorIndex]->GetStdDev(1)); // } } From 1e4d26c4e01c147c4b98cc49b64c5e03f4de0345 Mon Sep 17 00:00:00 2001 From: Tomas Herman Date: Tue, 23 Mar 2021 19:31:17 +0100 Subject: [PATCH 5/9] Bug correction in TH declarations for clusters. --- Modules/MFT/src/BasicClusterQcTask.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/MFT/src/BasicClusterQcTask.cxx b/Modules/MFT/src/BasicClusterQcTask.cxx index 2917abe876..bbf0359f0c 100644 --- a/Modules/MFT/src/BasicClusterQcTask.cxx +++ b/Modules/MFT/src/BasicClusterQcTask.cxx @@ -73,8 +73,8 @@ void BasicClusterQcTask::monitorData(o2::framework::ProcessingContext& ctx) return; // fill the histograms for (auto& one_cluster : clusters) { - mMFT_ClusterSensorID_H->Fill(one_cluster.getSensorID()); - mMFT_ClusterPatternID_H->Fill(one_cluster.getPatternID()); + mMFT_ClusterSensorID_H->Fill(one_cluster.getSensorID() + 1); + mMFT_ClusterPatternID_H->Fill(one_cluster.getPatternID() + 1); } } From bb04214876c57530c03a715f7b7d105a8330b626 Mon Sep 17 00:00:00 2001 From: Tomas Herman Date: Tue, 23 Mar 2021 19:34:25 +0100 Subject: [PATCH 6/9] Removing dummy metadata. --- Modules/MFT/src/BasicClusterQcTask.cxx | 2 -- 1 file changed, 2 deletions(-) diff --git a/Modules/MFT/src/BasicClusterQcTask.cxx b/Modules/MFT/src/BasicClusterQcTask.cxx index bbf0359f0c..c23bc6a1f7 100644 --- a/Modules/MFT/src/BasicClusterQcTask.cxx +++ b/Modules/MFT/src/BasicClusterQcTask.cxx @@ -46,11 +46,9 @@ void BasicClusterQcTask::initialize(o2::framework::InitContext& /*ctx*/) mMFT_ClusterSensorID_H = std::make_unique("mMFT_ClusterSensorID_H", "mMFT_ClusterSensorID_H", 936, -0.5, 935.5); getObjectsManager()->startPublishing(mMFT_ClusterSensorID_H.get()); - getObjectsManager()->addMetadata(mMFT_ClusterSensorID_H->GetName(), "custom", "34"); mMFT_ClusterPatternID_H = std::make_unique("mMFT_ClusterPatternID_H", "mMFT_ClusterPatternID_H", 2048, -0.5, 2047.5); getObjectsManager()->startPublishing(mMFT_ClusterPatternID_H.get()); - getObjectsManager()->addMetadata(mMFT_ClusterPatternID_H->GetName(), "custom", "34"); } void BasicClusterQcTask::startOfActivity(Activity& /*activity*/) From 27378e288f435a80df95017eeb515846d2282327 Mon Sep 17 00:00:00 2001 From: Tomas Herman Date: Wed, 24 Mar 2021 01:34:48 +0100 Subject: [PATCH 7/9] Change checker message size --- Modules/MFT/src/BasicDigitQcCheck.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/MFT/src/BasicDigitQcCheck.cxx b/Modules/MFT/src/BasicDigitQcCheck.cxx index 36aad3455f..a41e950dc0 100644 --- a/Modules/MFT/src/BasicDigitQcCheck.cxx +++ b/Modules/MFT/src/BasicDigitQcCheck.cxx @@ -66,7 +66,7 @@ void BasicDigitQcCheck::beautify(std::shared_ptr mo, Quality chec if (mo->getName().find("mMFTChipHitMap") != std::string::npos) { auto* h = dynamic_cast(mo->getObject()); - TPaveText* message = new TPaveText(0.3, 0.8, 0.75, 0.9, "NDC"); + TPaveText* message = new TPaveText(0.35, 0.9, 0.65, 0.95, "NDC"); h->GetListOfFunctions()->Add(message); message->SetBorderSize(1); From 09e9a237e2feace5f6d4453ff1ae8277f0ca94b2 Mon Sep 17 00:00:00 2001 From: Tomas Herman Date: Wed, 24 Mar 2021 01:53:20 +0100 Subject: [PATCH 8/9] correct digit class --- Modules/MFT/src/runDigitsRootFileReaderMFT.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx b/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx index 7ad5b28737..7e95af00ab 100644 --- a/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx +++ b/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx @@ -109,7 +109,7 @@ class DigitsRootFileReaderMFT : public o2::framework::Task int lastIndex = index + nDigitsInROF; // --> fill in the corresponding digits - std::vector* DigitsInROF = new std::vector(); + std::vector* DigitsInROF = new std::vector(); std::copy(digits.begin() + index, digits.begin() + lastIndex, std::back_inserter(*DigitsInROF)); // fill in the message @@ -126,7 +126,7 @@ class DigitsRootFileReaderMFT : public o2::framework::Task std::unique_ptr mFile = nullptr; // file to be read TTree* mTree = nullptr; // tree inside the file std::vector rofs, *profs = &rofs; // pointer to ROF branch - std::vector digits, *pdigits = &digits; // pointer to digit branch + std::vector digits, *pdigits = &digits; // pointer to digit branch unsigned long nTFs = 0; // number of TF unsigned long nROFs = 0; // number of ROFs in current TF From a0df190361c3dbe6165d5a47d534a00d4e82d6f0 Mon Sep 17 00:00:00 2001 From: Tomas Herman Date: Wed, 24 Mar 2021 01:58:11 +0100 Subject: [PATCH 9/9] Clang --- Modules/MFT/src/runDigitsRootFileReaderMFT.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx b/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx index 7e95af00ab..c0f48d5384 100644 --- a/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx +++ b/Modules/MFT/src/runDigitsRootFileReaderMFT.cxx @@ -123,9 +123,9 @@ class DigitsRootFileReaderMFT : public o2::framework::Task } private: - std::unique_ptr mFile = nullptr; // file to be read - TTree* mTree = nullptr; // tree inside the file - std::vector rofs, *profs = &rofs; // pointer to ROF branch + std::unique_ptr mFile = nullptr; // file to be read + TTree* mTree = nullptr; // tree inside the file + std::vector rofs, *profs = &rofs; // pointer to ROF branch std::vector digits, *pdigits = &digits; // pointer to digit branch unsigned long nTFs = 0; // number of TF