From b79393f83603d5fe142e147145404f2c9b5e85c0 Mon Sep 17 00:00:00 2001 From: Isakov Artem Date: Fri, 24 Jan 2025 16:59:19 +0100 Subject: [PATCH 1/2] Added optional publishing of MOs based on scan type --- .../include/ITS/ITSThresholdCalibrationTask.h | 11 + Modules/ITS/itsThresholdCalibration.json | 4 +- .../ITS/src/ITSThresholdCalibrationTask.cxx | 277 ++++++++++-------- 3 files changed, 174 insertions(+), 118 deletions(-) diff --git a/Modules/ITS/include/ITS/ITSThresholdCalibrationTask.h b/Modules/ITS/include/ITS/ITSThresholdCalibrationTask.h index f298d3b1d6..1fc9786277 100644 --- a/Modules/ITS/include/ITS/ITSThresholdCalibrationTask.h +++ b/Modules/ITS/include/ITS/ITSThresholdCalibrationTask.h @@ -28,6 +28,16 @@ class TH2D; using namespace o2::quality_control::core; +enum { + VCASN, + ITHR, + THR, + TOT, + pixel_noise, + pixel_dead, + pixel_ineff +}; + namespace o2::quality_control_modules::its { @@ -105,6 +115,7 @@ class ITSThresholdCalibrationTask : public TaskInterface TString sScanTypes[3] = { "VCASN", "ITHR", "THR" }; TString sCalibrationType[3] = { "Noisy", "Dead", "Ineff" }; TString sBarrelType[3] = { "IB", "ML", "OL" }; + int CalibType = 0; // THR Int_t nChips[3] = { 9, 112, 196 }; Int_t nStaves[3] = { 48, 54, 90 }; Int_t nXmax[3] = { 130, 100, 450 }; diff --git a/Modules/ITS/itsThresholdCalibration.json b/Modules/ITS/itsThresholdCalibration.json index acafa134d3..c1826b0829 100644 --- a/Modules/ITS/itsThresholdCalibration.json +++ b/Modules/ITS/itsThresholdCalibration.json @@ -36,7 +36,9 @@ "query" : "tunestring:ITS/TSTR;runtype:ITS/RUNT;fittype:ITS/FITT;scantype:ITS/SCANT;chipdonestring:ITS/QCSTR;confdbv:ITS/CONFDBV;PixTypString:ITS/PIXTYP" }, "location" : "remote", - "taskParameters" : {} + "taskParameters" : { + "CalibrationType": "pixel_dead" + } } } diff --git a/Modules/ITS/src/ITSThresholdCalibrationTask.cxx b/Modules/ITS/src/ITSThresholdCalibrationTask.cxx index 68a8d35c2c..32546ea5a9 100644 --- a/Modules/ITS/src/ITSThresholdCalibrationTask.cxx +++ b/Modules/ITS/src/ITSThresholdCalibrationTask.cxx @@ -19,6 +19,7 @@ #include "TLine.h" #include "TLatex.h" #include "Framework/InputRecordWalker.h" +#include "Common/Utils.h" using namespace o2::itsmft; using namespace o2::its; @@ -32,11 +33,13 @@ ITSThresholdCalibrationTask::ITSThresholdCalibrationTask() : TaskInterface() ITSThresholdCalibrationTask::~ITSThresholdCalibrationTask() { - for (int iScan = 0; iScan < 3; iScan++) { + int iScan = CalibType; + if (CalibType <= 3) { + for (int iLayer = 0; iLayer < NLayer; iLayer++) { delete hCalibrationLayer[iLayer][iScan]; delete hCalibrationRMSLayer[iLayer][iScan]; - if (iScan == 2) { + if (iScan == THR) { delete hCalibrationThrNoiseLayer[iLayer]; delete hCalibrationThrNoiseRMSLayer[iLayer]; } @@ -48,26 +51,32 @@ ITSThresholdCalibrationTask::~ITSThresholdCalibrationTask() } for (int iBarrel = 0; iBarrel < 3; iBarrel++) { - - delete hCalibrationThrNoiseChipAverage[iBarrel]; - delete hCalibrationThrNoiseRMSChipAverage[iBarrel]; + if (iScan == THR) { + delete hCalibrationThrNoiseChipAverage[iBarrel]; + delete hCalibrationThrNoiseRMSChipAverage[iBarrel]; + } delete hCalibrationChipDone[iBarrel]; delete hUnsuccess[iBarrel]; - delete hTimeOverThreshold[iBarrel]; - delete hTimeOverThresholdRms[iBarrel]; - delete hRiseTime[iBarrel]; - delete hRiseTimeRms[iBarrel]; - - delete hCalibrationDColChipAverage[iBarrel]; - for (int iPixelScanType = 0; iPixelScanType < 3; iPixelScanType++) + if (iScan == TOT) { + delete hTimeOverThreshold[iBarrel]; + delete hTimeOverThresholdRms[iBarrel]; + delete hRiseTime[iBarrel]; + delete hRiseTimeRms[iBarrel]; + } + if (iScan > 3) { + delete hCalibrationDColChipAverage[iBarrel]; + int iPixelScanType = iScan - 4; delete hCalibrationPixelpAverage[iPixelScanType][iBarrel]; + } } - for (int iLayer = 0; iLayer < NLayer; iLayer++) { - delete hTimeOverThresholdLayer[iLayer]; - delete hTimeOverThresholdRmsLayer[iLayer]; - delete hRiseTimeLayer[iLayer]; - delete hRiseTimeRmsLayer[iLayer]; + if (iScan == TOT) { + for (int iLayer = 0; iLayer < NLayer; iLayer++) { + delete hTimeOverThresholdLayer[iLayer]; + delete hTimeOverThresholdRmsLayer[iLayer]; + delete hRiseTimeLayer[iLayer]; + delete hRiseTimeRmsLayer[iLayer]; + } } } @@ -76,6 +85,23 @@ void ITSThresholdCalibrationTask::initialize(o2::framework::InitContext& /*ctx*/ ILOG(Debug, Devel) << "initialize ITSThresholdCalibrationTask" << ENDM; + string mCalibrationType = o2::quality_control_modules::common::getFromConfig(mCustomParameters, "CalibrationType", "THR"); // THR, ITHR, VCASN, TOT, pixel_noise, pixel_dead, pixel_ineff + + if (mCalibrationType == "THR") + CalibType = THR; + else if (mCalibrationType == "ITHR") + CalibType = ITHR; + else if (mCalibrationType == "VCASN") + CalibType = VCASN; + else if (mCalibrationType == "TOT") + CalibType = TOT; + else if (mCalibrationType == "pixel_noise") + CalibType = pixel_noise; + else if (mCalibrationType == "pixel_dead") + CalibType = pixel_dead; + else if (mCalibrationType == "pixel_ineff") + CalibType = pixel_ineff; + createAllHistos(); publishHistos(); } @@ -92,7 +118,6 @@ void ITSThresholdCalibrationTask::startOfCycle() void ITSThresholdCalibrationTask::monitorData(o2::framework::ProcessingContext& ctx) { - string inStringChipDone, inString, inPixel; char scanType; for (auto&& input : o2::framework::InputRecordWalker(ctx.inputs())) { @@ -248,7 +273,6 @@ ITSThresholdCalibrationTask::CalibrationResStructPixel ITSThresholdCalibrationTa if (info.size() == 0) continue; - std::cout << "We have string: " << info << std::endl; std::string name = splitString(info, ":")[0]; string data = splitString(info, ":")[1]; @@ -338,13 +362,13 @@ void ITSThresholdCalibrationTask::endOfActivity(const Activity& /*activity*/) void ITSThresholdCalibrationTask::reset() { ILOG(Debug, Devel) << "Resetting the histogram" << ENDM; - - for (int iScan = 0; iScan < 3; iScan++) { + int iScan = CalibType; + if (iScan <= 3) { for (int iLayer = 0; iLayer < NLayer; iLayer++) { hCalibrationLayer[iLayer][iScan]->Reset(); hCalibrationRMSLayer[iLayer][iScan]->Reset(); - if (iScan == 2) { + if (iScan == THR) { hCalibrationThrNoiseLayer[iLayer]->Reset(); hCalibrationThrNoiseRMSLayer[iLayer]->Reset(); } @@ -358,31 +382,39 @@ void ITSThresholdCalibrationTask::reset() for (int iBarrel = 0; iBarrel < 3; iBarrel++) { hUnsuccess[iBarrel]->Reset(); - hCalibrationThrNoiseChipAverage[iBarrel]->Reset(); - hCalibrationThrNoiseRMSChipAverage[iBarrel]->Reset(); + if (iScan == THR) { + hCalibrationThrNoiseChipAverage[iBarrel]->Reset(); + hCalibrationThrNoiseRMSChipAverage[iBarrel]->Reset(); + } hCalibrationChipDone[iBarrel]->Reset(); - hTimeOverThreshold[iBarrel]->Reset(); - hTimeOverThresholdRms[iBarrel]->Reset(); - hRiseTime[iBarrel]->Reset(); - hRiseTimeRms[iBarrel]->Reset(); - - hCalibrationDColChipAverage[iBarrel]->Reset(); - for (int iPixelScanType = 0; iPixelScanType < 3; iPixelScanType++) + if (iScan == TOT) { + hTimeOverThreshold[iBarrel]->Reset(); + hTimeOverThresholdRms[iBarrel]->Reset(); + hRiseTime[iBarrel]->Reset(); + hRiseTimeRms[iBarrel]->Reset(); + } + if (iScan > 3) { + hCalibrationDColChipAverage[iBarrel]->Reset(); + int iPixelScanType = iScan - 4; hCalibrationPixelpAverage[iPixelScanType][iBarrel]->Reset(); + } } - - for (int iLayer = 0; iLayer < NLayer; iLayer++) { - hTimeOverThresholdLayer[iLayer]->Reset(); - hTimeOverThresholdRmsLayer[iLayer]->Reset(); - hRiseTimeLayer[iLayer]->Reset(); - hRiseTimeRmsLayer[iLayer]->Reset(); + if (iScan == TOT) { + for (int iLayer = 0; iLayer < NLayer; iLayer++) { + hTimeOverThresholdLayer[iLayer]->Reset(); + hTimeOverThresholdRmsLayer[iLayer]->Reset(); + hRiseTimeLayer[iLayer]->Reset(); + hRiseTimeRmsLayer[iLayer]->Reset(); + } } } void ITSThresholdCalibrationTask::createAllHistos() { - for (int iScan = 0; iScan < 3; iScan++) { + + int iScan = CalibType; + if (iScan <= 3) { for (int iLayer = 0; iLayer < NLayer; iLayer++) { hCalibrationLayer[iLayer][iScan] = new TH1F(Form("%sLayer%d", sScanTypes[iScan].Data(), iLayer), Form("%s for Layer%d", sScanTypes[iScan].Data(), iLayer), nXmax[iScan], -0.5, nXmax[iScan] - 0.5); @@ -422,21 +454,22 @@ void ITSThresholdCalibrationTask::createAllHistos() for (int iBarrel = 0; iBarrel < 3; iBarrel++) { // TH2 for THR noise plots // Noise 2D plot - hCalibrationThrNoiseChipAverage[iBarrel] = new TH2F(Form("ThrNoiseChipAverage%s", sBarrelType[iBarrel].Data()), Form("Average chip threshold noise for %s", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); - hCalibrationThrNoiseChipAverage[iBarrel]->SetStats(0); - if (iBarrel != 0) - formatAxes(hCalibrationThrNoiseChipAverage[iBarrel], "Chip", "", 1, 1.10); - formatLayers(hCalibrationThrNoiseChipAverage[iBarrel], iBarrel); - addObject(hCalibrationThrNoiseChipAverage[iBarrel]); - - // Noise RMS 2D plot - hCalibrationThrNoiseRMSChipAverage[iBarrel] = new TH2F(Form("ThrNoiseRMSChipAverage%s", sBarrelType[iBarrel].Data()), Form("Average chip threshold NoiseRMS for %s", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); - hCalibrationThrNoiseRMSChipAverage[iBarrel]->SetStats(0); - if (iBarrel != 0) - formatAxes(hCalibrationThrNoiseRMSChipAverage[iBarrel], "Chip", "", 1, 1.10); - formatLayers(hCalibrationThrNoiseRMSChipAverage[iBarrel], iBarrel); - addObject(hCalibrationThrNoiseRMSChipAverage[iBarrel]); + if (iScan == THR) { + hCalibrationThrNoiseChipAverage[iBarrel] = new TH2F(Form("ThrNoiseChipAverage%s", sBarrelType[iBarrel].Data()), Form("Average chip threshold noise for %s", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); + hCalibrationThrNoiseChipAverage[iBarrel]->SetStats(0); + if (iBarrel != 0) + formatAxes(hCalibrationThrNoiseChipAverage[iBarrel], "Chip", "", 1, 1.10); + formatLayers(hCalibrationThrNoiseChipAverage[iBarrel], iBarrel); + addObject(hCalibrationThrNoiseChipAverage[iBarrel]); + // Noise RMS 2D plot + hCalibrationThrNoiseRMSChipAverage[iBarrel] = new TH2F(Form("ThrNoiseRMSChipAverage%s", sBarrelType[iBarrel].Data()), Form("Average chip threshold NoiseRMS for %s", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); + hCalibrationThrNoiseRMSChipAverage[iBarrel]->SetStats(0); + if (iBarrel != 0) + formatAxes(hCalibrationThrNoiseRMSChipAverage[iBarrel], "Chip", "", 1, 1.10); + formatLayers(hCalibrationThrNoiseRMSChipAverage[iBarrel], iBarrel); + addObject(hCalibrationThrNoiseRMSChipAverage[iBarrel]); + } // Chip done 2D plot hCalibrationChipDone[iBarrel] = new TH2F(Form("ChipDone%s", sBarrelType[iBarrel].Data()), Form("Chips Done %s", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); hCalibrationChipDone[iBarrel]->SetStats(0); @@ -457,86 +490,96 @@ void ITSThresholdCalibrationTask::createAllHistos() addObject(hUnsuccess[iBarrel]); // ToT 2D plot - hTimeOverThreshold[iBarrel] = new TH2F(Form("TimeOverThreshold%s", sBarrelType[iBarrel].Data()), Form("Time over threshold for %s (in #mus)", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); - hTimeOverThreshold[iBarrel]->SetStats(0); - if (iBarrel != 0) - formatAxes(hTimeOverThreshold[iBarrel], "Chip", "", 1, 1.10); - formatLayers(hTimeOverThreshold[iBarrel], iBarrel); - addObject(hTimeOverThreshold[iBarrel]); + if (iScan == TOT) { + hTimeOverThreshold[iBarrel] = new TH2F(Form("TimeOverThreshold%s", sBarrelType[iBarrel].Data()), Form("Time over threshold for %s (in #mus)", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); + hTimeOverThreshold[iBarrel]->SetStats(0); + if (iBarrel != 0) + formatAxes(hTimeOverThreshold[iBarrel], "Chip", "", 1, 1.10); + formatLayers(hTimeOverThreshold[iBarrel], iBarrel); + addObject(hTimeOverThreshold[iBarrel]); - // ToT RMS 2D plot - hTimeOverThresholdRms[iBarrel] = new TH2F(Form("TimeOverThresholdRms%s", sBarrelType[iBarrel].Data()), Form("Time over threshold RMS for %s (in #mus)", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); - hTimeOverThresholdRms[iBarrel]->SetStats(0); - if (iBarrel != 0) - formatAxes(hTimeOverThresholdRms[iBarrel], "Chip", "", 1, 1.10); - formatLayers(hTimeOverThresholdRms[iBarrel], iBarrel); - addObject(hTimeOverThresholdRms[iBarrel]); + // ToT RMS 2D plot + hTimeOverThresholdRms[iBarrel] = new TH2F(Form("TimeOverThresholdRms%s", sBarrelType[iBarrel].Data()), Form("Time over threshold RMS for %s (in #mus)", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); + hTimeOverThresholdRms[iBarrel]->SetStats(0); + if (iBarrel != 0) + formatAxes(hTimeOverThresholdRms[iBarrel], "Chip", "", 1, 1.10); + formatLayers(hTimeOverThresholdRms[iBarrel], iBarrel); + addObject(hTimeOverThresholdRms[iBarrel]); - // Rise time 2D plot - hRiseTime[iBarrel] = new TH2F(Form("RiseTime%s", sBarrelType[iBarrel].Data()), Form("Rise time for %s (in ns)", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); - hRiseTime[iBarrel]->SetStats(0); - if (iBarrel != 0) - formatAxes(hRiseTime[iBarrel], "Chip", "", 1, 1.10); - formatLayers(hRiseTime[iBarrel], iBarrel); - addObject(hRiseTime[iBarrel]); + // Rise time 2D plot + hRiseTime[iBarrel] = new TH2F(Form("RiseTime%s", sBarrelType[iBarrel].Data()), Form("Rise time for %s (in ns)", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); + hRiseTime[iBarrel]->SetStats(0); + if (iBarrel != 0) + formatAxes(hRiseTime[iBarrel], "Chip", "", 1, 1.10); + formatLayers(hRiseTime[iBarrel], iBarrel); + addObject(hRiseTime[iBarrel]); - // Rise time RMS 2D plot - hRiseTimeRms[iBarrel] = new TH2F(Form("RiseTimeRms%s", sBarrelType[iBarrel].Data()), Form("Rise time RMS for %s (in ns)", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); - hRiseTimeRms[iBarrel]->SetStats(0); - if (iBarrel != 0) - formatAxes(hRiseTimeRms[iBarrel], "Chip", "", 1, 1.10); - formatLayers(hRiseTimeRms[iBarrel], iBarrel); - addObject(hRiseTimeRms[iBarrel]); + // Rise time RMS 2D plot + hRiseTimeRms[iBarrel] = new TH2F(Form("RiseTimeRms%s", sBarrelType[iBarrel].Data()), Form("Rise time RMS for %s (in ns)", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); + hRiseTimeRms[iBarrel]->SetStats(0); + if (iBarrel != 0) + formatAxes(hRiseTimeRms[iBarrel], "Chip", "", 1, 1.10); + formatLayers(hRiseTimeRms[iBarrel], iBarrel); + addObject(hRiseTimeRms[iBarrel]); + } } for (int iLayer = 0; iLayer < NLayer; iLayer++) { // Noise distribution for each layer - hCalibrationThrNoiseLayer[iLayer] = new TH1F(Form("ThrNoiseLayer%d", iLayer), Form("Threshold Noise for Layer%d", iLayer), 10, -0.5, 9.5); - formatAxes(hCalibrationThrNoiseLayer[iLayer], "THR noise (e) ", "Chip counts", 1, 1.10); - addObject(hCalibrationThrNoiseLayer[iLayer]); - // Noise distribution RMS for each layer - hCalibrationThrNoiseRMSLayer[iLayer] = new TH1F(Form("ThrNoiseRMSLayer%d", iLayer), Form("Threshold Noise RMS for Layer%d", iLayer), 50, -0.5, 9.5); - formatAxes(hCalibrationThrNoiseRMSLayer[iLayer], "THR noise RMS (e)", "Chip counts", 1, 1.10); - addObject(hCalibrationThrNoiseRMSLayer[iLayer]); + if (iScan == THR) { + hCalibrationThrNoiseLayer[iLayer] = new TH1F(Form("ThrNoiseLayer%d", iLayer), Form("Threshold Noise for Layer%d", iLayer), 10, -0.5, 9.5); + formatAxes(hCalibrationThrNoiseLayer[iLayer], "THR noise (e) ", "Chip counts", 1, 1.10); + addObject(hCalibrationThrNoiseLayer[iLayer]); + // Noise distribution RMS for each layer + hCalibrationThrNoiseRMSLayer[iLayer] = new TH1F(Form("ThrNoiseRMSLayer%d", iLayer), Form("Threshold Noise RMS for Layer%d", iLayer), 50, -0.5, 9.5); + formatAxes(hCalibrationThrNoiseRMSLayer[iLayer], "THR noise RMS (e)", "Chip counts", 1, 1.10); + addObject(hCalibrationThrNoiseRMSLayer[iLayer]); + } // Time over threshold for each layer - hTimeOverThresholdLayer[iLayer] = new TH1F(Form("TimeOverThresholdLayer%d", iLayer), Form("Time over threshold distribution for Layer%d", iLayer), 200, 0, 20); - formatAxes(hTimeOverThresholdLayer[iLayer], "ToT (#mus) ", "Counts", 1, 1.10); - addObject(hTimeOverThresholdLayer[iLayer]); - - // Time over threshold RMS for each layer - hTimeOverThresholdRmsLayer[iLayer] = new TH1F(Form("TimeOverThresholdRmsLayer%d", iLayer), Form("Time over threshold Rms distribution for Layer%d", iLayer), 100, 0, 10); - formatAxes(hTimeOverThresholdRmsLayer[iLayer], "ToT Rms (#mus) ", "Counts", 1, 1.10); - addObject(hTimeOverThresholdRmsLayer[iLayer]); - - // Rise time for each layer - hRiseTimeLayer[iLayer] = new TH1F(Form("RiseTimeLayer%d", iLayer), Form("Rise time distribution for Layer%d", iLayer), 1600, 0, 800); - formatAxes(hRiseTimeLayer[iLayer], "Rise time (ns) ", "Counts", 1, 1.10); - addObject(hRiseTimeLayer[iLayer]); - - // Rise time RMS for each layer - hRiseTimeRmsLayer[iLayer] = new TH1F(Form("RiseTimeRmsLayer%d", iLayer), Form("Rise time Rms distribution for Layer%d", iLayer), 1000, 0, 500); - formatAxes(hRiseTimeRmsLayer[iLayer], "Rise time Rms (ns) ", "Counts", 1, 1.10); - addObject(hRiseTimeRmsLayer[iLayer]); + if (iScan == TOT) { + hTimeOverThresholdLayer[iLayer] = new TH1F(Form("TimeOverThresholdLayer%d", iLayer), Form("Time over threshold distribution for Layer%d", iLayer), 200, 0, 20); + formatAxes(hTimeOverThresholdLayer[iLayer], "ToT (#mus) ", "Counts", 1, 1.10); + addObject(hTimeOverThresholdLayer[iLayer]); + + // Time over threshold RMS for each layer + hTimeOverThresholdRmsLayer[iLayer] = new TH1F(Form("TimeOverThresholdRmsLayer%d", iLayer), Form("Time over threshold Rms distribution for Layer%d", iLayer), 100, 0, 10); + formatAxes(hTimeOverThresholdRmsLayer[iLayer], "ToT Rms (#mus) ", "Counts", 1, 1.10); + addObject(hTimeOverThresholdRmsLayer[iLayer]); + + // Rise time for each layer + hRiseTimeLayer[iLayer] = new TH1F(Form("RiseTimeLayer%d", iLayer), Form("Rise time distribution for Layer%d", iLayer), 1600, 0, 800); + formatAxes(hRiseTimeLayer[iLayer], "Rise time (ns) ", "Counts", 1, 1.10); + addObject(hRiseTimeLayer[iLayer]); + + // Rise time RMS for each layer + hRiseTimeRmsLayer[iLayer] = new TH1F(Form("RiseTimeRmsLayer%d", iLayer), Form("Rise time Rms distribution for Layer%d", iLayer), 1000, 0, 500); + formatAxes(hRiseTimeRmsLayer[iLayer], "Rise time Rms (ns) ", "Counts", 1, 1.10); + addObject(hRiseTimeRmsLayer[iLayer]); + } } - for (int iBarrel = 0; iBarrel < 3; iBarrel++) { + if (iScan > 3) { + + for (int iBarrel = 0; iBarrel < 3; iBarrel++) { - for (int iType = 0; iType < 3; iType++) { - hCalibrationPixelpAverage[iType][iBarrel] = new TH2D(Form("%sPixels%s", sCalibrationType[iType].Data(), sBarrelType[iBarrel].Data()), Form("Number of %s pixels per chip for %s", sCalibrationType[iType].Data(), sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); - hCalibrationPixelpAverage[iType][iBarrel]->SetStats(0); + int iType = iScan - 4; + { + hCalibrationPixelpAverage[iType][iBarrel] = new TH2D(Form("%sPixels%s", sCalibrationType[iType].Data(), sBarrelType[iBarrel].Data()), Form("Number of %s pixels per chip for %s", sCalibrationType[iType].Data(), sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); + hCalibrationPixelpAverage[iType][iBarrel]->SetStats(0); + if (iBarrel != 0) + formatAxes(hCalibrationPixelpAverage[iType][iBarrel], "Chip", "", 1, 1.10); + formatLayers(hCalibrationPixelpAverage[iType][iBarrel], iBarrel); + addObject(hCalibrationPixelpAverage[iType][iBarrel]); + } + hCalibrationDColChipAverage[iBarrel] = new TH2D(Form("DCols%s", sBarrelType[iBarrel].Data()), Form("Number of DCols per chip for %s", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); + hCalibrationDColChipAverage[iBarrel]->SetStats(0); if (iBarrel != 0) - formatAxes(hCalibrationPixelpAverage[iType][iBarrel], "Chip", "", 1, 1.10); - formatLayers(hCalibrationPixelpAverage[iType][iBarrel], iBarrel); - addObject(hCalibrationPixelpAverage[iType][iBarrel]); + formatAxes(hCalibrationDColChipAverage[iBarrel], "Chip", "", 1, 1.10); + formatLayers(hCalibrationDColChipAverage[iBarrel], iBarrel); + addObject(hCalibrationDColChipAverage[iBarrel]); } - hCalibrationDColChipAverage[iBarrel] = new TH2D(Form("DCols%s", sBarrelType[iBarrel].Data()), Form("Number of DCols per chip for %s", sBarrelType[iBarrel].Data()), nChips[iBarrel], -0.5, nChips[iBarrel] - 0.5, nStaves[iBarrel], -0.5, nStaves[iBarrel] - 0.5); - hCalibrationDColChipAverage[iBarrel]->SetStats(0); - if (iBarrel != 0) - formatAxes(hCalibrationDColChipAverage[iBarrel], "Chip", "", 1, 1.10); - formatLayers(hCalibrationDColChipAverage[iBarrel], iBarrel); - addObject(hCalibrationDColChipAverage[iBarrel]); } } void ITSThresholdCalibrationTask::addObject(TObject* aObject) From 1124233bf9d3566daccbda1aa26ff4433c46ff15 Mon Sep 17 00:00:00 2001 From: Isakov Artem Date: Fri, 24 Jan 2025 17:05:12 +0100 Subject: [PATCH 2/2] Changed default .json --- Modules/ITS/itsThresholdCalibration.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/ITS/itsThresholdCalibration.json b/Modules/ITS/itsThresholdCalibration.json index c1826b0829..1209268623 100644 --- a/Modules/ITS/itsThresholdCalibration.json +++ b/Modules/ITS/itsThresholdCalibration.json @@ -37,7 +37,7 @@ }, "location" : "remote", "taskParameters" : { - "CalibrationType": "pixel_dead" + "CalibrationType": "THR" } } }