From ce7b535d82d0006d2f45af884bb6fcddd7ba56da Mon Sep 17 00:00:00 2001 From: Hannah Date: Fri, 31 Oct 2025 11:58:50 +0100 Subject: [PATCH 1/4] [FSC DQM]: Initial commit of FSC plus implementation in DQM. --- DQM/HcalTasks/plugins/ZDCQIE10Task.cc | 34 ++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/DQM/HcalTasks/plugins/ZDCQIE10Task.cc b/DQM/HcalTasks/plugins/ZDCQIE10Task.cc index 9db594dbeae6e..4e75e52bbe4dd 100644 --- a/DQM/HcalTasks/plugins/ZDCQIE10Task.cc +++ b/DQM/HcalTasks/plugins/ZDCQIE10Task.cc @@ -292,7 +292,7 @@ ZDCQIE10Task::ZDCQIE10Task(edm::ParameterSet const& ps) // adding 6 FSC channels on z- side (labeled as EM7_minus - EM12_minus) for (int channel = 7; channel < 13; channel++) { - // EM Minus + // FSC Minus HcalZDCDetId didm(HcalZDCDetId::EM, false, channel); std::vector stationString = { @@ -323,6 +323,38 @@ ZDCQIE10Task::ZDCQIE10Task(edm::ParameterSet const& ps) _cTDC_EChannel[didm()] = ib.book1DD(histoname.c_str(), histoname.c_str(), 150, 0, 150); _cTDC_EChannel[didm()]->setAxisTitle("TDC", 1); _cTDC_EChannel[didm()]->setAxisTitle("N", 2); + + // FSC plus + HcalZDCDetId didp(HcalZDCDetId::EM, true, channel); + + std::vector stationStringP = { + "2_P_Top", "2_P_Bottom", "3_P_BottomLeft", "3_P_BottomRight", "3_P_TopLeft", "3_P_TopRight"}; + + histoname = "FSC" + stationStringP.at(channel - 7); + ib.setCurrentFolder("Hcal/ZDCQIE10Task/ADC_perChannel"); + _cADC_EChannel[didp()] = ib.book1DD(histoname.c_str(), histoname.c_str(), 256, 0, 256); + _cADC_EChannel[didp()]->setAxisTitle("ADC", 1); + _cADC_EChannel[didp()]->setAxisTitle("N", 2); + ib.setCurrentFolder("Hcal/ZDCQIE10Task/ADC_vs_TS_perChannel"); + _cADC_vs_TS_EChannel[didp()] = ib.book1DD(histoname.c_str(), histoname.c_str(), 6, 0, 6); + _cADC_vs_TS_EChannel[didp()]->setAxisTitle("TS", 1); + _cADC_vs_TS_EChannel[didp()]->setAxisTitle("sum ADC", 2); + + histoname = "FSC" + stationString.at(channel - 7); + ib.setCurrentFolder("Hcal/ZDCQIE10Task/fC_perChannel"); + _cfC_EChannel[didp()] = ib.book1DD(histoname.c_str(), histoname.c_str(), 100, 0, 8000); + _cfC_EChannel[didp()]->setAxisTitle("fC", 1); + _cfC_EChannel[didp()]->setAxisTitle("N", 2); + ib.setCurrentFolder("Hcal/ZDCQIE10Task/fC_vs_TS_perChannel"); + _cfC_vs_TS_EChannel[didp()] = ib.book1DD(histoname.c_str(), histoname.c_str(), 6, 0, 6); + _cfC_vs_TS_EChannel[didp()]->setAxisTitle("TS", 1); + _cfC_vs_TS_EChannel[didp()]->setAxisTitle("sum fC", 2); + + histoname = "FSC" + stationString.at(channel - 7); + ib.setCurrentFolder("Hcal/ZDCQIE10Task/TDC_perChannel"); + _cTDC_EChannel[didp()] = ib.book1DD(histoname.c_str(), histoname.c_str(), 150, 0, 150); + _cTDC_EChannel[didp()]->setAxisTitle("TDC", 1); + _cTDC_EChannel[didp()]->setAxisTitle("N", 2); } for (int channel = 1; channel < 5; channel++) { From b8014df52b4edfcaf65974ecb62f448f19bc2ecd Mon Sep 17 00:00:00 2001 From: Hannah Date: Thu, 6 Nov 2025 18:01:39 +0100 Subject: [PATCH 2/4] Add uHTR data TP plots --- DQM/HcalTasks/interface/ZDCQIE10Task.h | 4 ++ DQM/HcalTasks/plugins/ZDCQIE10Task.cc | 79 +++++++++++++++++++++++--- 2 files changed, 74 insertions(+), 9 deletions(-) diff --git a/DQM/HcalTasks/interface/ZDCQIE10Task.h b/DQM/HcalTasks/interface/ZDCQIE10Task.h index 3d1326b16713c..9c8dea7ee2592 100644 --- a/DQM/HcalTasks/interface/ZDCQIE10Task.h +++ b/DQM/HcalTasks/interface/ZDCQIE10Task.h @@ -37,12 +37,14 @@ class ZDCQIE10Task : public hcaldqm::DQTask { // tags edm::InputTag _tagQIE10; + edm::InputTag _tagData; edm::InputTag sumTag; edm::InputTag sumTagUnpacked; edm::EDGetTokenT _tokQIE10; edm::ESGetToken hcalDbServiceToken_; edm::EDGetToken sumToken_; edm::EDGetToken sumTokenUnpacked_; + edm::EDGetToken sumTokenData_; edm::ESGetToken htopoToken_; edm::ESGetToken paramsToken_; @@ -64,6 +66,8 @@ class ZDCQIE10Task : public hcaldqm::DQTask { std::map _cZDC_BXSUMS; std::map _cZDC_BX_EmuSUMS; std::map _cZDC_EmuSumTP_DataSum; + std::map _cZDC_EmuSumTP_L1rcvdSum; + std::map _cZDC_L1rcvdSumTP_DataSum; std::map _cZDC_CapIDS; std::map _cfC_EChannel; std::map _cTDC_EChannel; diff --git a/DQM/HcalTasks/plugins/ZDCQIE10Task.cc b/DQM/HcalTasks/plugins/ZDCQIE10Task.cc index 4e75e52bbe4dd..b8dd22baffe0f 100644 --- a/DQM/HcalTasks/plugins/ZDCQIE10Task.cc +++ b/DQM/HcalTasks/plugins/ZDCQIE10Task.cc @@ -7,17 +7,20 @@ using namespace hcaldqm::filter; ZDCQIE10Task::ZDCQIE10Task(edm::ParameterSet const& ps) : DQTask(ps), hcalDbServiceToken_(esConsumes()) { - //tags + //tags data for digis and TPs _tagQIE10 = ps.getUntrackedParameter("tagQIE10", edm::InputTag("hcalDigis", "ZDC")); _tokQIE10 = consumes(_tagQIE10); + _tagData = ps.getUntrackedParameter("tagData", edm::InputTag("hcalDigis")); + sumTokenData_ = consumes(_tagData); // emulated sums sumTag = ps.getUntrackedParameter("etSumTag", edm::InputTag("etSumZdcProducer", "")); sumToken_ = consumes(sumTag); // unpacked sums - sumTagUnpacked = ps.getUntrackedParameter("etSumTag", edm::InputTag("gtStage2Digis", "EtSumZDC")); - sumTokenUnpacked_ = consumes(sumTag); + sumTagUnpacked = + ps.getUntrackedParameter("etSumTagUnpacked", edm::InputTag("gtStage2Digis", "EtSumZDC")); + sumTokenUnpacked_ = consumes(sumTagUnpacked); htopoToken_ = esConsumes(); paramsToken_ = esConsumes(); @@ -148,11 +151,13 @@ ZDCQIE10Task::ZDCQIE10Task(edm::ParameterSet const& ps) varbins.push_back(1023); varbins.push_back(1024); - histoname = "ZDCM_EmuSumTP_DataSum"; + // Emu Sum TP vs. Data Sum TP + histoname = "ZDCM_EmuSumTP_DataSumTP"; ib.setCurrentFolder("Hcal/ZDCQIE10Task/TPs"); TH2D* varBinningTH2D = new TH2D( histoname.c_str(), histoname.c_str(), varbins.size() - 1, varbins.data(), varbins.size() - 1, varbins.data()); + _cZDC_EmuSumTP_DataSum[0] = ib.book2DD(histoname.c_str(), varBinningTH2D); _cZDC_EmuSumTP_DataSum[0]->setAxisTitle("Emulated TP Sum (Online Counts)", 2); @@ -162,6 +167,38 @@ ZDCQIE10Task::ZDCQIE10Task(edm::ParameterSet const& ps) _cZDC_EmuSumTP_DataSum[1]->setAxisTitle("Data TP Sum (Online Counts)", 1); _cZDC_EmuSumTP_DataSum[1]->setAxisTitle("Emulated TP Sum (Online Counts)", 2); + // Emu Sum TP vs. L1rcvd Sum TP + histoname = "ZDCM_EmuSumTP_L1rcvdSumTP"; + ib.setCurrentFolder("Hcal/ZDCQIE10Task/TPs"); + + TH2D* varBinningTH2D_EmuL1rcvd = new TH2D( + histoname.c_str(), histoname.c_str(), varbins.size() - 1, varbins.data(), varbins.size() - 1, varbins.data()); + + _cZDC_EmuSumTP_L1rcvdSum[0] = ib.book2DD(histoname.c_str(), varBinningTH2D_EmuL1rcvd); + _cZDC_EmuSumTP_L1rcvdSum[0]->setAxisTitle("Emulated TP Sum (Online Counts)", 2); + + histoname = "ZDCP_EmuSumTP_L1rcvdSumTP"; + ib.setCurrentFolder("Hcal/ZDCQIE10Task/TPs"); + _cZDC_EmuSumTP_L1rcvdSum[1] = ib.book2DD(histoname.c_str(), varBinningTH2D_EmuL1rcvd); + _cZDC_EmuSumTP_L1rcvdSum[1]->setAxisTitle("L1 rcvd TP Sum (Online Counts)", 1); + _cZDC_EmuSumTP_L1rcvdSum[1]->setAxisTitle("Emulated TP Sum (Online Counts)", 2); + + // L1rcvd Sum TP vs. Data Sum TP + histoname = "ZDCM_L1rcvdSumTP_DataSumTP"; + ib.setCurrentFolder("Hcal/ZDCQIE10Task/TPs"); + + TH2D* varBinningTH2D_L1rcvdData = new TH2D( + histoname.c_str(), histoname.c_str(), varbins.size() - 1, varbins.data(), varbins.size() - 1, varbins.data()); + + _cZDC_L1rcvdSumTP_DataSum[0] = ib.book2DD(histoname.c_str(), varBinningTH2D_L1rcvdData); + _cZDC_L1rcvdSumTP_DataSum[0]->setAxisTitle("L1 rcvd TP Sum (Online Counts)", 2); + + histoname = "ZDCP_L1rcvdSumTP_DataSumTP"; + ib.setCurrentFolder("Hcal/ZDCQIE10Task/TPs"); + _cZDC_L1rcvdSumTP_DataSum[1] = ib.book2DD(histoname.c_str(), varBinningTH2D_L1rcvdData); + _cZDC_L1rcvdSumTP_DataSum[1]->setAxisTitle("Data TP Sum (Online Counts)", 1); + _cZDC_L1rcvdSumTP_DataSum[1]->setAxisTitle("L1 rcvd TP Sum (Online Counts)", 2); + histoname = "CapIDs"; ib.setCurrentFolder("Hcal/ZDCQIE10Task"); _cZDC_CapIDS[0] = ib.book1DD(histoname.c_str(), histoname.c_str(), 4, 0, 4); @@ -324,7 +361,7 @@ ZDCQIE10Task::ZDCQIE10Task(edm::ParameterSet const& ps) _cTDC_EChannel[didm()]->setAxisTitle("TDC", 1); _cTDC_EChannel[didm()]->setAxisTitle("N", 2); - // FSC plus + // FSC plus HcalZDCDetId didp(HcalZDCDetId::EM, true, channel); std::vector stationStringP = { @@ -340,7 +377,7 @@ ZDCQIE10Task::ZDCQIE10Task(edm::ParameterSet const& ps) _cADC_vs_TS_EChannel[didp()]->setAxisTitle("TS", 1); _cADC_vs_TS_EChannel[didp()]->setAxisTitle("sum ADC", 2); - histoname = "FSC" + stationString.at(channel - 7); + histoname = "FSC" + stationStringP.at(channel - 7); ib.setCurrentFolder("Hcal/ZDCQIE10Task/fC_perChannel"); _cfC_EChannel[didp()] = ib.book1DD(histoname.c_str(), histoname.c_str(), 100, 0, 8000); _cfC_EChannel[didp()]->setAxisTitle("fC", 1); @@ -350,7 +387,7 @@ ZDCQIE10Task::ZDCQIE10Task(edm::ParameterSet const& ps) _cfC_vs_TS_EChannel[didp()]->setAxisTitle("TS", 1); _cfC_vs_TS_EChannel[didp()]->setAxisTitle("sum fC", 2); - histoname = "FSC" + stationString.at(channel - 7); + histoname = "FSC" + stationStringP.at(channel - 7); ib.setCurrentFolder("Hcal/ZDCQIE10Task/TDC_perChannel"); _cTDC_EChannel[didp()] = ib.book1DD(histoname.c_str(), histoname.c_str(), 150, 0, 150); _cTDC_EChannel[didp()]->setAxisTitle("TDC", 1); @@ -534,9 +571,33 @@ void ZDCQIE10Task::_process(edm::Event const& e, edm::EventSetup const& es) { } } + edm::Handle data_sums; + e.getByToken(sumTokenData_, data_sums); + double dataSumP = -1.0; + double dataSumM = -1.0; + for (HcalTrigPrimDigiCollection::const_iterator it = data_sums->begin(); it != data_sums->end(); ++it) { + // Explicit check on the DetIds present in the Collection + HcalTrigTowerDetId tid = it->id(); + + // ZDCp TP + if (tid.ieta() >= 42 && tid.iphi() == 99) { + // need to convert to the actual dynamic range of the ZDC sums + dataSumP = it->t0().raw() & 1023; + } + // ZDCm TP + if (tid.ieta() <= -42 && tid.iphi() == 99) { + // need to convert to the actual dynamic range of the ZDC sums + dataSumM = it->t0().raw() & 1023; + } + } + // now fill the unpacked and emulator comparison histogram - _cZDC_EmuSumTP_DataSum[0]->Fill(unpackedSumM, emulatedSumM); - _cZDC_EmuSumTP_DataSum[1]->Fill(unpackedSumP, emulatedSumP); + _cZDC_EmuSumTP_DataSum[0]->Fill(dataSumM, emulatedSumM); + _cZDC_EmuSumTP_DataSum[1]->Fill(dataSumP, emulatedSumP); + _cZDC_EmuSumTP_L1rcvdSum[0]->Fill(unpackedSumM, emulatedSumM); + _cZDC_EmuSumTP_L1rcvdSum[1]->Fill(unpackedSumP, emulatedSumP); + _cZDC_L1rcvdSumTP_DataSum[0]->Fill(dataSumM, unpackedSumM); + _cZDC_L1rcvdSumTP_DataSum[1]->Fill(dataSumP, unpackedSumP); edm::Handle digis; if (!e.getByToken(_tokQIE10, digis)) From 692fa2828c9e8a16593da56acb28fe622bec3950 Mon Sep 17 00:00:00 2001 From: Hannah Date: Fri, 7 Nov 2025 13:34:44 +0100 Subject: [PATCH 3/4] Add variables instead of hard coded values for TP info. --- DQM/HcalTasks/interface/ZDCQIE10Task.h | 5 +++++ DQM/HcalTasks/plugins/ZDCQIE10Task.cc | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/DQM/HcalTasks/interface/ZDCQIE10Task.h b/DQM/HcalTasks/interface/ZDCQIE10Task.h index 9c8dea7ee2592..0c2d8eaee21e8 100644 --- a/DQM/HcalTasks/interface/ZDCQIE10Task.h +++ b/DQM/HcalTasks/interface/ZDCQIE10Task.h @@ -76,6 +76,11 @@ class ZDCQIE10Task : public hcaldqm::DQTask { std::map _cZDC_EM_TM; std::unique_ptr longRecoParams_; + + // ZDC params + static constexpr int kZDCAbsIEta = 42; + static constexpr int kZDCiEtSumsIPhi = 99; + static constexpr int kZDCiEtSumMaxValue = 1023; }; #endif diff --git a/DQM/HcalTasks/plugins/ZDCQIE10Task.cc b/DQM/HcalTasks/plugins/ZDCQIE10Task.cc index b8dd22baffe0f..11bea2af477b0 100644 --- a/DQM/HcalTasks/plugins/ZDCQIE10Task.cc +++ b/DQM/HcalTasks/plugins/ZDCQIE10Task.cc @@ -580,14 +580,14 @@ void ZDCQIE10Task::_process(edm::Event const& e, edm::EventSetup const& es) { HcalTrigTowerDetId tid = it->id(); // ZDCp TP - if (tid.ieta() >= 42 && tid.iphi() == 99) { + if (tid.ieta() >= kZDCAbsIEta && tid.iphi() == kZDCiEtSumsIPhi) { // need to convert to the actual dynamic range of the ZDC sums - dataSumP = it->t0().raw() & 1023; + dataSumP = it->t0().raw() & kZDCiEtSumMaxValue; } // ZDCm TP - if (tid.ieta() <= -42 && tid.iphi() == 99) { + if (tid.ieta() <= -kZDCAbsIEta && tid.iphi() == kZDCiEtSumsIPhi) { // need to convert to the actual dynamic range of the ZDC sums - dataSumM = it->t0().raw() & 1023; + dataSumM = it->t0().raw() & kZDCiEtSumMaxValue; } } From 6a5b57fd4811cdfe7ee09af354a1656e52edef83 Mon Sep 17 00:00:00 2001 From: Hannah Date: Fri, 7 Nov 2025 13:43:20 +0100 Subject: [PATCH 4/4] Fix code checks. --- DQM/HcalTasks/interface/ZDCQIE10Task.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DQM/HcalTasks/interface/ZDCQIE10Task.h b/DQM/HcalTasks/interface/ZDCQIE10Task.h index 0c2d8eaee21e8..e544e028190a4 100644 --- a/DQM/HcalTasks/interface/ZDCQIE10Task.h +++ b/DQM/HcalTasks/interface/ZDCQIE10Task.h @@ -77,7 +77,7 @@ class ZDCQIE10Task : public hcaldqm::DQTask { std::unique_ptr longRecoParams_; - // ZDC params + // ZDC params static constexpr int kZDCAbsIEta = 42; static constexpr int kZDCiEtSumsIPhi = 99; static constexpr int kZDCiEtSumMaxValue = 1023;