File indexing completed on 2024-04-06 12:08:38
0001 #include "DQM/SiStripCommissioningSummary/interface/PedsFullNoiseSummaryFactory.h"
0002 #include "CondFormats/SiStripObjects/interface/PedsFullNoiseAnalysis.h"
0003 #include "DataFormats/SiStripCommon/interface/SiStripEnumsAndStrings.h"
0004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0005 #include <iostream>
0006 #include <sstream>
0007
0008 using namespace sistrip;
0009
0010
0011
0012 void PedsFullNoiseSummaryFactory::extract(Iterator iter) {
0013 PedsFullNoiseAnalysis* anal = dynamic_cast<PedsFullNoiseAnalysis*>(iter->second);
0014 if (!anal) {
0015 return;
0016 }
0017
0018 std::vector<float> temp(128, 1. * sistrip::invalid_);
0019 std::vector<uint16_t> temp2(128, sistrip::invalid_);
0020
0021 std::vector<std::vector<float> > value(2, temp);
0022 std::vector<std::vector<float> > peds(2, temp);
0023 std::vector<std::vector<float> > noise(2, temp);
0024 std::vector<std::vector<float> > adProbab(2, temp);
0025 std::vector<std::vector<float> > ksProbab(2, temp);
0026 std::vector<std::vector<float> > jbProbab(2, temp);
0027 std::vector<std::vector<float> > chi2Probab(2, temp);
0028 std::vector<std::vector<float> > residualRMS(2, temp);
0029 std::vector<std::vector<float> > residualGaus(2, temp);
0030 std::vector<std::vector<float> > noiseSignificance(2, temp);
0031 std::vector<std::vector<float> > residualMean(2, temp);
0032 std::vector<std::vector<float> > residualSkewness(2, temp);
0033 std::vector<std::vector<float> > residualKurtosis(2, temp);
0034 std::vector<std::vector<float> > residualIntegralNsigma(2, temp);
0035 std::vector<std::vector<float> > residualIntegral(2, temp);
0036 std::vector<std::vector<uint16_t> > badStripBit(2, temp2);
0037 std::vector<std::vector<uint16_t> > deadStripBit(2, temp2);
0038
0039
0040 peds[0] = anal->peds()[0];
0041 peds[1] = anal->peds()[1];
0042
0043 noise[0] = anal->noise()[0];
0044 noise[1] = anal->noise()[1];
0045
0046 adProbab[0] = anal->adProbab()[0];
0047 adProbab[1] = anal->adProbab()[1];
0048
0049 ksProbab[0] = anal->ksProbab()[0];
0050 ksProbab[1] = anal->ksProbab()[1];
0051
0052 jbProbab[0] = anal->jbProbab()[0];
0053 jbProbab[1] = anal->jbProbab()[1];
0054
0055 chi2Probab[0] = anal->chi2Probab()[0];
0056 chi2Probab[1] = anal->chi2Probab()[1];
0057
0058 chi2Probab[0] = anal->chi2Probab()[0];
0059 chi2Probab[1] = anal->chi2Probab()[1];
0060
0061 residualRMS[0] = anal->residualRMS()[0];
0062 residualRMS[1] = anal->residualRMS()[1];
0063
0064 residualGaus[0] = anal->residualSigmaGaus()[0];
0065 residualGaus[1] = anal->residualSigmaGaus()[1];
0066
0067 noiseSignificance[0] = anal->noiseSignificance()[0];
0068 noiseSignificance[1] = anal->noiseSignificance()[1];
0069
0070 residualMean[0] = anal->residualMean()[0];
0071 residualMean[1] = anal->residualMean()[1];
0072
0073 residualSkewness[0] = anal->residualSkewness()[0];
0074 residualSkewness[1] = anal->residualSkewness()[1];
0075
0076 residualKurtosis[0] = anal->residualKurtosis()[0];
0077 residualKurtosis[1] = anal->residualKurtosis()[1];
0078
0079 residualIntegralNsigma[0] = anal->residualIntegralNsigma()[0];
0080 residualIntegralNsigma[1] = anal->residualIntegralNsigma()[1];
0081
0082 residualIntegral[0] = anal->residualIntegral()[0];
0083 residualIntegral[1] = anal->residualIntegral()[1];
0084
0085 residualIntegral[0] = anal->residualIntegral()[0];
0086 residualIntegral[1] = anal->residualIntegral()[1];
0087
0088 badStripBit[0] = anal->badStripBit()[0];
0089 badStripBit[1] = anal->badStripBit()[1];
0090
0091 deadStripBit[0] = anal->deadStripBit()[0];
0092 deadStripBit[1] = anal->deadStripBit()[1];
0093
0094 bool all_strips = false;
0095
0096 if (mon_ == sistrip::PEDESTALS_ALL_STRIPS) {
0097 all_strips = true;
0098 uint16_t bins = peds[0].size();
0099 if (peds[0].size() < peds[1].size()) {
0100 bins = peds[1].size();
0101 }
0102 for (uint16_t iped = 0; iped < bins; iped++) {
0103 value[0][iped] = peds[0][iped];
0104 value[1][iped] = peds[1][iped];
0105 }
0106 }
0107
0108 else if (mon_ == sistrip::NOISE_ALL_STRIPS) {
0109 all_strips = true;
0110 uint16_t bins = noise[0].size();
0111 if (noise[0].size() < noise[1].size()) {
0112 bins = noise[1].size();
0113 }
0114 for (uint16_t inoise = 0; inoise < bins; inoise++) {
0115 value[0][inoise] = noise[0][inoise];
0116 value[1][inoise] = noise[1][inoise];
0117 }
0118 }
0119
0120 else if (mon_ == sistrip::AD_PROBAB_ALL_STRIPS) {
0121 all_strips = true;
0122 uint16_t bins = adProbab[0].size();
0123 if (adProbab[0].size() < adProbab[1].size()) {
0124 bins = adProbab[1].size();
0125 }
0126 for (uint16_t iad = 0; iad < bins; iad++) {
0127 value[0][iad] = adProbab[0][iad];
0128 value[1][iad] = adProbab[1][iad];
0129 }
0130 }
0131
0132 else if (mon_ == sistrip::KS_PROBAB_ALL_STRIPS) {
0133 all_strips = true;
0134 uint16_t bins = ksProbab[0].size();
0135 if (ksProbab[0].size() < ksProbab[1].size()) {
0136 bins = ksProbab[1].size();
0137 }
0138 for (uint16_t iks = 0; iks < bins; iks++) {
0139 value[0][iks] = ksProbab[0][iks];
0140 value[1][iks] = ksProbab[1][iks];
0141 }
0142 }
0143
0144 else if (mon_ == sistrip::JB_PROBAB_ALL_STRIPS) {
0145 all_strips = true;
0146 uint16_t bins = jbProbab[0].size();
0147 if (jbProbab[0].size() < jbProbab[1].size()) {
0148 bins = jbProbab[1].size();
0149 }
0150 for (uint16_t iks = 0; iks < bins; iks++) {
0151 value[0][iks] = jbProbab[0][iks];
0152 value[1][iks] = jbProbab[1][iks];
0153 }
0154 }
0155
0156 else if (mon_ == sistrip::CHI2_PROBAB_ALL_STRIPS) {
0157 all_strips = true;
0158 uint16_t bins = chi2Probab[0].size();
0159 if (chi2Probab[0].size() < chi2Probab[1].size()) {
0160 bins = chi2Probab[1].size();
0161 }
0162 for (uint16_t iks = 0; iks < bins; iks++) {
0163 value[0][iks] = chi2Probab[0][iks];
0164 value[1][iks] = chi2Probab[1][iks];
0165 }
0166 }
0167
0168 else if (mon_ == sistrip::RESIDUAL_RMS_ALL_STRIPS) {
0169 all_strips = true;
0170 uint16_t bins = residualRMS[0].size();
0171 if (residualRMS[0].size() < residualRMS[1].size()) {
0172 bins = residualRMS[1].size();
0173 }
0174 for (uint16_t iks = 0; iks < bins; iks++) {
0175 value[0][iks] = residualRMS[0][iks];
0176 value[1][iks] = residualRMS[1][iks];
0177 }
0178 }
0179
0180 else if (mon_ == sistrip::RESIDUAL_GAUS_ALL_STRIPS) {
0181 all_strips = true;
0182 uint16_t bins = residualGaus[0].size();
0183 if (residualGaus[0].size() < residualGaus[1].size()) {
0184 bins = residualGaus[1].size();
0185 }
0186 for (uint16_t iks = 0; iks < bins; iks++) {
0187 value[0][iks] = residualGaus[0][iks];
0188 value[1][iks] = residualGaus[1][iks];
0189 }
0190 }
0191
0192 else if (mon_ == sistrip::NOISE_SIGNIFICANCE_ALL_STRIPS) {
0193 all_strips = true;
0194 uint16_t bins = noiseSignificance[0].size();
0195 if (noiseSignificance[0].size() < noiseSignificance[1].size()) {
0196 bins = noiseSignificance[1].size();
0197 }
0198 for (uint16_t iks = 0; iks < bins; iks++) {
0199 value[0][iks] = noiseSignificance[0][iks];
0200 value[1][iks] = noiseSignificance[1][iks];
0201 }
0202 }
0203
0204 else if (mon_ == sistrip::RESIDUAL_MEAN_ALL_STRIPS) {
0205 all_strips = true;
0206 uint16_t bins = residualMean[0].size();
0207 if (residualMean[0].size() < residualMean[1].size()) {
0208 bins = residualMean[1].size();
0209 }
0210 for (uint16_t iks = 0; iks < bins; iks++) {
0211 value[0][iks] = residualMean[0][iks];
0212 value[1][iks] = residualMean[1][iks];
0213 }
0214 }
0215
0216 else if (mon_ == sistrip::RESIDUAL_SKEWNESS_ALL_STRIPS) {
0217 all_strips = true;
0218 uint16_t bins = residualSkewness[0].size();
0219 if (residualSkewness[0].size() < residualSkewness[1].size()) {
0220 bins = residualSkewness[1].size();
0221 }
0222 for (uint16_t iks = 0; iks < bins; iks++) {
0223 value[0][iks] = residualSkewness[0][iks];
0224 value[1][iks] = residualSkewness[1][iks];
0225 }
0226 }
0227
0228 else if (mon_ == sistrip::RESIDUAL_KURTOSIS_ALL_STRIPS) {
0229 all_strips = true;
0230 uint16_t bins = residualKurtosis[0].size();
0231 if (residualKurtosis[0].size() < residualKurtosis[1].size()) {
0232 bins = residualKurtosis[1].size();
0233 }
0234 for (uint16_t iks = 0; iks < bins; iks++) {
0235 value[0][iks] = residualKurtosis[0][iks];
0236 value[1][iks] = residualKurtosis[1][iks];
0237 }
0238 }
0239
0240 else if (mon_ == sistrip::RESIDUAL_INTEGRALNSIGMA_ALL_STRIPS) {
0241 all_strips = true;
0242 uint16_t bins = residualIntegralNsigma[0].size();
0243 if (residualIntegralNsigma[0].size() < residualIntegralNsigma[1].size()) {
0244 bins = residualIntegralNsigma[1].size();
0245 }
0246 for (uint16_t iks = 0; iks < bins; iks++) {
0247 value[0][iks] = residualIntegralNsigma[0][iks];
0248 value[1][iks] = residualIntegralNsigma[1][iks];
0249 }
0250 }
0251
0252 else if (mon_ == sistrip::RESIDUAL_INTEGRAL_ALL_STRIPS) {
0253 all_strips = true;
0254 uint16_t bins = residualIntegral[0].size();
0255 if (residualIntegral[0].size() < residualIntegral[1].size()) {
0256 bins = residualIntegral[1].size();
0257 }
0258 for (uint16_t iks = 0; iks < bins; iks++) {
0259 value[0][iks] = residualIntegral[0][iks];
0260 value[1][iks] = residualIntegral[1][iks];
0261 }
0262 }
0263
0264
0265 else if (mon_ == sistrip::BAD_STRIP_BIT_ALL_STRIPS) {
0266 all_strips = true;
0267 uint16_t bins = badStripBit[0].size();
0268 if (badStripBit[0].size() < badStripBit[1].size()) {
0269 bins = badStripBit[1].size();
0270 }
0271 for (uint16_t iks = 0; iks < bins; iks++) {
0272 value[0][iks] = 1. * badStripBit[0][iks];
0273 value[1][iks] = 1. * badStripBit[1][iks];
0274 }
0275 }
0276
0277 else if (mon_ == sistrip::DEAD_STRIP_BIT_ALL_STRIPS) {
0278 all_strips = true;
0279 uint16_t bins = deadStripBit[0].size();
0280 if (deadStripBit[0].size() < deadStripBit[1].size()) {
0281 bins = deadStripBit[1].size();
0282 }
0283 for (uint16_t iks = 0; iks < bins; iks++) {
0284 value[0][iks] = 1. * deadStripBit[0][iks];
0285 value[1][iks] = 1. * deadStripBit[1][iks];
0286 }
0287 }
0288
0289
0290 else if (mon_ == sistrip::PEDESTALS_MEAN) {
0291 value[0][0] = anal->pedsMean()[0];
0292 value[1][0] = anal->pedsMean()[1];
0293 }
0294
0295
0296 else if (mon_ == sistrip::PEDESTALS_SPREAD) {
0297 value[0][0] = anal->pedsSpread()[0];
0298 value[1][0] = anal->pedsSpread()[1];
0299 }
0300
0301
0302 else if (mon_ == sistrip::PEDESTALS_MAX) {
0303 value[0][0] = anal->pedsMax()[0];
0304 value[1][0] = anal->pedsMax()[1];
0305 }
0306
0307
0308 else if (mon_ == sistrip::PEDESTALS_MIN) {
0309 value[0][0] = anal->pedsMin()[0];
0310 value[1][0] = anal->pedsMin()[1];
0311 }
0312
0313
0314 else if (mon_ == sistrip::NOISE_MEAN) {
0315 value[0][0] = anal->noiseMean()[0];
0316 value[1][0] = anal->noiseMean()[1];
0317 }
0318
0319 else if (mon_ == sistrip::NOISE_SPREAD) {
0320 value[0][0] = anal->noiseSpread()[0];
0321 value[1][0] = anal->noiseSpread()[1];
0322 }
0323
0324 else if (mon_ == sistrip::NOISE_MAX) {
0325 value[0][0] = anal->noiseMax()[0];
0326 value[1][0] = anal->noiseMax()[1];
0327 }
0328
0329 else if (mon_ == sistrip::NOISE_MIN) {
0330 value[0][0] = anal->noiseMin()[0];
0331 value[1][0] = anal->noiseMin()[1];
0332 }
0333
0334
0335 else if (mon_ == sistrip::NUM_OF_DEAD) {
0336 value[0][0] = 1. * anal->deadStrip()[0].size();
0337 value[1][0] = 1. * anal->deadStrip()[1].size();
0338 } else if (mon_ == sistrip::NUM_OF_BAD) {
0339 value[0][0] = 1. * anal->badStrip()[0].size();
0340 value[1][0] = 1. * anal->badStrip()[1].size();
0341 } else if (mon_ == sistrip::NUM_OF_BAD_SHIFTED) {
0342 value[0][0] = 1. * anal->shiftedStrip()[0].size();
0343 value[1][0] = 1. * anal->shiftedStrip()[1].size();
0344 } else if (mon_ == sistrip::NUM_OF_BAD_LOW_NOISE) {
0345 value[0][0] = 1. * anal->lowNoiseStrip()[0].size();
0346 value[1][0] = 1. * anal->lowNoiseStrip()[1].size();
0347 } else if (mon_ == sistrip::NUM_OF_BAD_LARGE_NOISE) {
0348 value[0][0] = 1. * anal->largeNoiseStrip()[0].size();
0349 value[1][0] = 1. * anal->largeNoiseStrip()[1].size();
0350 } else if (mon_ == sistrip::NUM_OF_BAD_LARGE_SIGNIF) {
0351 value[0][0] = 1. * anal->largeNoiseSignificance()[0].size();
0352 value[1][0] = 1. * anal->largeNoiseSignificance()[1].size();
0353 } else if (mon_ == sistrip::NUM_OF_BAD_FIT_STATUS) {
0354 value[0][0] = 1. * anal->badFitStatus()[0].size();
0355 value[1][0] = 1. * anal->badFitStatus()[1].size();
0356 } else if (mon_ == sistrip::NUM_OF_BAD_AD_PROBAB) {
0357 value[0][0] = 1. * anal->badADProbab()[0].size();
0358 value[1][0] = 1. * anal->badADProbab()[1].size();
0359 } else if (mon_ == sistrip::NUM_OF_BAD_KS_PROBAB) {
0360 value[0][0] = 1. * anal->badKSProbab()[0].size();
0361 value[1][0] = 1. * anal->badKSProbab()[1].size();
0362 } else if (mon_ == sistrip::NUM_OF_BAD_JB_PROBAB) {
0363 value[0][0] = 1. * anal->badJBProbab()[0].size();
0364 value[1][0] = 1. * anal->badJBProbab()[1].size();
0365 } else if (mon_ == sistrip::NUM_OF_BAD_CHI2_PROBAB) {
0366 value[0][0] = 1. * anal->badChi2Probab()[0].size();
0367 value[1][0] = 1. * anal->badChi2Probab()[1].size();
0368 } else if (mon_ == sistrip::NUM_OF_BAD_TAIL) {
0369 value[0][0] = 1. * anal->badTailStrip()[0].size();
0370 value[1][0] = 1. * anal->badTailStrip()[1].size();
0371 } else if (mon_ == sistrip::NUM_OF_BAD_DOUBLE_PEAK) {
0372 value[0][0] = 1. * anal->badDoublePeakStrip()[0].size();
0373 value[1][0] = 1. * anal->badDoublePeakStrip()[1].size();
0374 } else {
0375 edm::LogWarning(mlSummaryPlots_) << "[SummaryPlotFactory::" << __func__ << "]"
0376 << " Unexpected monitorable: "
0377 << SiStripEnumsAndStrings::monitorable(SummaryPlotFactoryBase::mon_);
0378 return;
0379 }
0380
0381 if (!all_strips) {
0382 SummaryPlotFactoryBase::generator_->fillMap(
0383 SummaryPlotFactoryBase::level_, SummaryPlotFactoryBase::gran_, iter->first, value[0][0]);
0384
0385 SummaryPlotFactoryBase::generator_->fillMap(
0386 SummaryPlotFactoryBase::level_, SummaryPlotFactoryBase::gran_, iter->first, value[1][0]);
0387
0388 } else {
0389 for (uint16_t istr = 0; istr < value[0].size(); istr++) {
0390 SummaryPlotFactoryBase::generator_->fillMap(
0391 SummaryPlotFactoryBase::level_, SummaryPlotFactoryBase::gran_, iter->first, value[0][istr]);
0392 }
0393
0394 for (uint16_t istr = 0; istr < value[1].size(); istr++) {
0395 SummaryPlotFactoryBase::generator_->fillMap(
0396 SummaryPlotFactoryBase::level_, SummaryPlotFactoryBase::gran_, iter->first, value[1][istr]);
0397 }
0398 }
0399 }
0400
0401
0402
0403 void PedsFullNoiseSummaryFactory::format() {
0404 if (mon_ == sistrip::PEDESTALS_ALL_STRIPS) {
0405 generator_->axisLabel("Pedestal value [adc]");
0406 } else if (mon_ == sistrip::PEDESTALS_MEAN) {
0407 } else if (mon_ == sistrip::PEDESTALS_SPREAD) {
0408 } else if (mon_ == sistrip::PEDESTALS_MAX) {
0409 } else if (mon_ == sistrip::PEDESTALS_MIN) {
0410 } else if (mon_ == sistrip::NOISE_ALL_STRIPS) {
0411 generator_->axisLabel("Noise [adc]");
0412 } else if (mon_ == sistrip::NOISE_MEAN) {
0413 } else if (mon_ == sistrip::NOISE_SPREAD) {
0414 } else if (mon_ == sistrip::NOISE_MAX) {
0415 } else if (mon_ == sistrip::NOISE_MIN) {
0416 } else if (mon_ == sistrip::AD_PROBAB_ALL_STRIPS) {
0417 generator_->axisLabel("Anderson-Darling p-value");
0418 } else if (mon_ == sistrip::KS_PROBAB_ALL_STRIPS) {
0419 generator_->axisLabel("Kolmogorov-Smirnov p-value");
0420 } else if (mon_ == sistrip::JB_PROBAB_ALL_STRIPS) {
0421 generator_->axisLabel("Jacque-Bera p-value");
0422 } else if (mon_ == sistrip::CHI2_PROBAB_ALL_STRIPS) {
0423 generator_->axisLabel("Chi2 p-value");
0424 } else if (mon_ == sistrip::RESIDUAL_RMS_ALL_STRIPS) {
0425 generator_->axisLabel("Residual RMS [adc]");
0426 } else if (mon_ == sistrip::RESIDUAL_GAUS_ALL_STRIPS) {
0427 generator_->axisLabel("Residual Gaus [adc]");
0428 } else if (mon_ == sistrip::NOISE_SIGNIFICANCE_ALL_STRIPS) {
0429 generator_->axisLabel("Noise Significance");
0430 } else if (mon_ == sistrip::RESIDUAL_MEAN_ALL_STRIPS) {
0431 generator_->axisLabel("Residual Mean [adc]");
0432 } else if (mon_ == sistrip::RESIDUAL_SKEWNESS_ALL_STRIPS) {
0433 generator_->axisLabel("Residual Skewness [adc]");
0434 } else if (mon_ == sistrip::RESIDUAL_KURTOSIS_ALL_STRIPS) {
0435 generator_->axisLabel("Residual Kurtosis [adc]");
0436 } else if (mon_ == sistrip::RESIDUAL_INTEGRALNSIGMA_ALL_STRIPS) {
0437 generator_->axisLabel("Residual Integral at N sigma");
0438 } else if (mon_ == sistrip::RESIDUAL_INTEGRAL_ALL_STRIPS) {
0439 generator_->axisLabel("Residual Integral");
0440 } else if (mon_ == sistrip::BAD_STRIP_BIT_ALL_STRIPS) {
0441 generator_->axisLabel("Bad Strip Bit");
0442 } else if (mon_ == sistrip::DEAD_STRIP_BIT_ALL_STRIPS) {
0443 generator_->axisLabel("Dead Strip Bit");
0444 } else if (mon_ == sistrip::NUM_OF_DEAD) {
0445 } else if (mon_ == sistrip::NUM_OF_BAD) {
0446 } else if (mon_ == sistrip::NUM_OF_BAD_SHIFTED) {
0447 } else if (mon_ == sistrip::NUM_OF_BAD_LOW_NOISE) {
0448 } else if (mon_ == sistrip::NUM_OF_BAD_LARGE_NOISE) {
0449 } else if (mon_ == sistrip::NUM_OF_BAD_LARGE_SIGNIF) {
0450 } else if (mon_ == sistrip::NUM_OF_BAD_FIT_STATUS) {
0451 } else if (mon_ == sistrip::NUM_OF_BAD_AD_PROBAB) {
0452 } else if (mon_ == sistrip::NUM_OF_BAD_KS_PROBAB) {
0453 } else if (mon_ == sistrip::NUM_OF_BAD_JB_PROBAB) {
0454 } else if (mon_ == sistrip::NUM_OF_BAD_CHI2_PROBAB) {
0455 } else if (mon_ == sistrip::NUM_OF_BAD_TAIL) {
0456 } else if (mon_ == sistrip::NUM_OF_BAD_DOUBLE_PEAK) {
0457 }
0458
0459 else {
0460 edm::LogWarning(mlSummaryPlots_) << "[SummaryPlotFactory::" << __func__ << "]"
0461 << " Unexpected SummaryHisto value:"
0462 << SiStripEnumsAndStrings::monitorable(SummaryPlotFactoryBase::mon_);
0463 }
0464 }