28 : offlineXMLfile_(offlineXMLfile), Tier0Flag_(
Tier0Flag) {
29 edm::LogInfo(
"SiPixelActionExecutor") <<
" Creating SiPixelActionExecutor "
41 edm::LogInfo(
"SiPixelActionExecutor") <<
" Deleting SiPixelActionExecutor "
55 localPath =
string(
"DQM/SiPixelMonitorClient/test/sipixel_tier0_config.xml");
57 localPath =
string(
"DQM/SiPixelMonitorClient/test/sipixel_monitorelement_config.xml");
70 int &sum_grandbarrel_freq,
71 int &sum_grandendcap_freq,
79 localPath =
string(
"DQM/SiPixelMonitorClient/test/sipixel_tier0_config.xml");
81 localPath =
string(
"DQM/SiPixelMonitorClient/test/sipixel_monitorelement_config.xml");
88 cout <<
"SiPixelActionExecutor::readConfiguration: Failed to read "
89 "TrackerMap configuration parameters!! ";
93 edm::LogInfo(
"SiPixelActionExecutor") <<
"Failed to read Barrel Summary configuration parameters!! "
98 edm::LogInfo(
"SiPixelActionExecutor") <<
"Failed to read Endcap Summary configuration parameters!! "
103 edm::LogInfo(
"SiPixelActionExecutor") <<
"Failed to read Grand Barrel Summary configuration parameters!! "
108 edm::LogInfo(
"SiPixelActionExecutor") <<
"Failed to read Grand Endcap Summary configuration parameters!! "
113 edm::LogInfo(
"SiPixelActionExecutor") <<
"Failed to read QTest Message Limit"
118 edm::LogInfo(
"SiPixelActionExecutor") <<
"Failed to read Source Type"
123 edm::LogInfo(
"SiPixelActionExecutor") <<
"Failed to read Calib Type"
137 localPath =
string(
"DQM/SiPixelMonitorClient/test/sipixel_tier0_config.xml");
139 localPath =
string(
"DQM/SiPixelMonitorClient/test/sipixel_monitorelement_config.xml");
146 cout <<
"SiPixelActionExecutor::readConfiguration: Failed to read "
147 "TrackerMap configuration parameters!! ";
151 edm::LogInfo(
"SiPixelActionExecutor") <<
"Failed to read Summary configuration parameters!! "
165 string barrel_structure_name;
166 vector<string> barrel_me_names;
169 localPath =
string(
"DQM/SiPixelMonitorClient/test/sipixel_tier0_config.xml");
171 localPath =
string(
"DQM/SiPixelMonitorClient/test/sipixel_monitorelement_config.xml");
178 cout <<
"SiPixelActionExecutor::createSummary: Failed to read Barrel "
179 "Summary configuration parameters!! ";
186 fillSummary(iBooker, iGetter, barrel_structure_name, barrel_me_names,
true,
190 string endcap_structure_name;
191 vector<string> endcap_me_names;
193 edm::LogInfo(
"SiPixelActionExecutor") <<
"Failed to read Endcap Summary configuration parameters!! "
203 fillSummary(iBooker, iGetter, endcap_structure_name, endcap_me_names,
false,
209 string federror_structure_name;
210 vector<string> federror_me_names;
212 cout <<
"SiPixelActionExecutor::createSummary: Failed to read FED Error "
213 "Summary configuration parameters!! ";
241 "DEV_adc_Barrel",
"Deviation from reference;Module;<adc_ref>-<adc>", nBPixModules, 0., nBPixModules);
243 "DEV_ndigis_Barrel",
"Deviation from reference;Module;<ndigis_ref>-<ndigis>", nBPixModules, 0., nBPixModules);
245 "DEV_charge_Barrel",
"Deviation from reference;Module;<charge_ref>-<charge>", nBPixModules, 0., nBPixModules);
247 "Deviation from reference;Module;<nclusters_ref>-<nclusters>",
252 "DEV_size_Barrel",
"Deviation from reference;Module;<size_ref>-<size>", nBPixModules, 0., nBPixModules);
255 DEV_adc_Endcap = iBooker.
book1D(
"DEV_adc_Endcap",
"Deviation from reference;Module;<adc_ref>-<adc>", 672, 0., 672.);
257 iBooker.
book1D(
"DEV_ndigis_Endcap",
"Deviation from reference;Module;<ndigis_ref>-<ndigis>", 672, 0., 672.);
259 iBooker.
book1D(
"DEV_charge_Endcap",
"Deviation from reference;Module;<charge_ref>-<charge>", 672, 0., 672.);
261 "DEV_nclusters_Endcap",
"Deviation from reference;Module;<nclusters_ref>-<nclusters>", 672, 0., 672.);
263 iBooker.
book1D(
"DEV_size_Endcap",
"Deviation from reference;Module;<size_ref>-<size>", 672, 0., 672.);
271 vector<string> &blade_subdirs) {
272 blade_subdirs.clear();
275 for (vector<string>::const_iterator it = panels.begin(); it != panels.end(); it++) {
279 for (vector<string>::const_iterator m_it =
modules.begin(); m_it !=
modules.end(); m_it++) {
280 blade_subdirs.push_back(*m_it);
290 vector<string> &me_names,
294 string currDir = iBooker.
pwd();
310 if (currDir.find(
dir_name) != string::npos) {
311 vector<MonitorElement *> sum_mes;
312 for (vector<string>::const_iterator iv = me_names.begin(); iv != me_names.end(); iv++) {
314 if ((*iv) ==
"errorType" || (*iv) ==
"NErrors" || (*iv) ==
"fullType" || (*iv) ==
"chanNmbr" ||
315 (*iv) ==
"TBMType" || (*iv) ==
"EvtNbr" || (*iv) ==
"evtSize" || (*iv) ==
"linkId" || (*iv) ==
"ROCId" ||
316 (*iv) ==
"DCOLId" || (*iv) ==
"PXId" || (*iv) ==
"ROCNmbr" || (*iv) ==
"TBMMessage" ||
317 (*iv) ==
"Type36Hitmap")
319 else if ((*iv) ==
"ndigis" || (*iv) ==
"adc")
321 else if ((*iv) ==
"nclusters" || (*iv) ==
"x" || (*iv) ==
"y" || (*iv) ==
"charge" || (*iv) ==
"size" ||
322 (*iv) ==
"sizeX" || (*iv) ==
"sizeY" || (*iv) ==
"minrow" || (*iv) ==
"maxrow" || (*iv) ==
"mincol" ||
325 if (currDir.find(
"Track") != string::npos)
327 else if ((*iv) ==
"residualX" || (*iv) ==
"residualY")
329 else if ((*iv) ==
"ClustX" || (*iv) ==
"ClustY" || (*iv) ==
"nRecHits" || (*iv) ==
"ErrorX" ||
332 else if ((*iv) ==
"Gain1d" || (*iv) ==
"GainChi2NDF1d" || (*iv) ==
"GainChi2Prob1d" || (*iv) ==
"Pedestal1d" ||
333 (*iv) ==
"GainNPoints1d" || (*iv) ==
"GainHighPoint1d" || (*iv) ==
"GainLowPoint1d" ||
334 (*iv) ==
"GainEndPoint1d" || (*iv) ==
"GainFitResult2d" || (*iv) ==
"GainDynamicRange2d" ||
335 (*iv) ==
"GainSaturate2d" || (*iv) ==
"ScurveChi2ProbSummary" || (*iv) ==
"ScurveFitResultSummary" ||
336 (*iv) ==
"ScurveSigmasSummary" || (*iv) ==
"ScurveThresholdSummary" || (*iv) ==
"pixelAliveSummary" ||
337 (*iv) ==
"SiPixelErrorsCalibDigis")
342 if ((*iv).find(
"residual") != string::npos) {
345 sum_mes.push_back(
temp);
348 sum_mes.push_back(
temp);
349 }
else if (
prefix ==
"SUMCAL") {
350 if ((*iv) ==
"Gain1d" || (*iv) ==
"GainChi2NDF1d" || (*iv) ==
"GainChi2Prob1d" || (*iv) ==
"GainNPoints1d" ||
351 (*iv) ==
"GainHighPoint1d" || (*iv) ==
"GainLowPoint1d" || (*iv) ==
"GainEndPoint1d" ||
352 (*iv) ==
"GainDynamicRange2d" || (*iv) ==
"GainSaturate2d" || (*iv) ==
"Pedestal1d" ||
353 (*iv) ==
"ScurveChi2ProbSummary" || (*iv) ==
"ScurveFitResultSummary" || (*iv) ==
"ScurveSigmasSummary" ||
354 (*iv) ==
"ScurveThresholdSummary") {
357 sum_mes.push_back(
temp);
360 sum_mes.push_back(
temp);
361 }
else if ((*iv) ==
"SiPixelErrorsCalibDigis") {
362 tag =
prefix +
"_" + (*iv) +
"_NCalibErrors_" + currDir.substr(currDir.find(
dir_name));
364 sum_mes.push_back(
temp);
365 }
else if ((*iv) ==
"GainFitResult2d") {
366 tag =
prefix +
"_" + (*iv) +
"_NNegativeFits_" + currDir.substr(currDir.find(
dir_name));
368 sum_mes.push_back(
temp);
369 }
else if ((*iv) ==
"pixelAliveSummary") {
370 tag =
prefix +
"_" + (*iv) +
"_FracOfPerfectPix_" + currDir.substr(currDir.find(
dir_name));
372 sum_mes.push_back(
temp);
375 sum_mes.push_back(
temp);
380 sum_mes.push_back(
temp);
381 if ((*iv) ==
"ndigis") {
384 sum_mes.push_back(
temp);
386 if (
prefix ==
"SUMDIG" && (*iv) ==
"adc") {
387 tag =
"ALLMODS_" + (*iv) +
"COMB_" + currDir.substr(currDir.find(
dir_name));
389 string fullpathname = iBooker.
pwd() +
"/" +
tag;
390 temp = iGetter.
get(fullpathname);
396 sum_mes.push_back(
temp);
398 if (
prefix ==
"SUMCLU" && (*iv) ==
"charge") {
399 tag =
"ALLMODS_" + (*iv) +
"COMB_" + currDir.substr(currDir.find(
dir_name));
401 string fullpathname = iBooker.
pwd() +
"/" +
tag;
402 temp = iGetter.
get(fullpathname);
409 sum_mes.push_back(
temp);
413 if (sum_mes.empty()) {
414 edm::LogInfo(
"SiPixelActionExecutor") <<
" Summary MEs can not be created"
418 vector<string> subdirs = iGetter.
getSubdirs();
424 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
425 if (
prefix !=
"SUMOFF" && (*it).find(
"Module_") == string::npos)
427 if (
prefix ==
"SUMOFF" && (*it).find(isbarrel ?
"Layer_" :
"Disk_") == string::npos)
435 for (vector<MonitorElement *>::const_iterator
isum = sum_mes.begin();
isum != sum_mes.end();
isum++) {
436 for (vector<string>::const_iterator im =
contents.begin(); im !=
contents.end(); im++) {
437 string sname = ((*isum)->getName());
439 tname = sname.substr(7, (sname.find(
'_', 7) - 6));
440 if (sname.find(
"ALLMODS_adcCOMB_") != string::npos)
442 if (sname.find(
"ALLMODS_chargeCOMB_") != string::npos)
444 if (sname.find(
"_charge_") != string::npos && sname.find(
"Track_") == string::npos)
446 if (sname.find(
"_nclusters_") != string::npos && sname.find(
"Track_") == string::npos)
447 tname =
"nclusters_";
448 if (sname.find(
"_size_") != string::npos && sname.find(
"Track_") == string::npos)
450 if (sname.find(
"_charge_OffTrack_") != string::npos)
451 tname =
"charge_OffTrack_";
452 if (sname.find(
"_nclusters_OffTrack_") != string::npos)
453 tname =
"nclusters_OffTrack_";
454 if (sname.find(
"_size_OffTrack_") != string::npos)
455 tname =
"size_OffTrack_";
456 if (sname.find(
"_sizeX_OffTrack_") != string::npos)
457 tname =
"sizeX_OffTrack_";
458 if (sname.find(
"_sizeY_OffTrack_") != string::npos)
459 tname =
"sizeY_OffTrack_";
460 if (sname.find(
"_charge_OnTrack_") != string::npos)
461 tname =
"charge_OnTrack_";
462 if (sname.find(
"_nclusters_OnTrack_") != string::npos)
463 tname =
"nclusters_OnTrack_";
464 if (sname.find(
"_size_OnTrack_") != string::npos)
465 tname =
"size_OnTrack_";
466 if (sname.find(
"_sizeX_OnTrack_") != string::npos)
467 tname =
"sizeX_OnTrack_";
468 if (sname.find(
"_sizeY_OnTrack_") != string::npos)
469 tname =
"sizeY_OnTrack_";
470 if (
tname.find(
"FREQ") != string::npos)
472 if (((*im)).find(
tname) == 0) {
473 string fullpathname = iBooker.
pwd() +
"/" + (*im);
477 if (sname.find(
"_charge") != string::npos && sname.find(
"Track_") == string::npos &&
478 me->getName().find(
"Track_") != string::npos)
480 if (sname.find(
"_nclusters_") != string::npos && sname.find(
"Track_") == string::npos &&
481 me->getName().find(
"Track_") != string::npos)
483 if (sname.find(
"_size") != string::npos && sname.find(
"Track_") == string::npos &&
484 me->getName().find(
"Track_") != string::npos)
487 if (sname.find(
"_RMS_") != string::npos && sname.find(
"GainDynamicRange2d") == string::npos &&
488 sname.find(
"GainSaturate2d") == string::npos) {
489 (*isum)->
Fill(ndet,
me->getRMS());
490 }
else if (sname.find(
"GainDynamicRange2d") != string::npos ||
491 sname.find(
"GainSaturate2d") != string::npos) {
492 float SumOfEntries = 0.;
493 float SumOfSquaredEntries = 0.;
495 for (
int cols = 1; cols !=
me->getNbinsX() + 1; cols++)
497 SumOfEntries +=
me->getBinContent(cols,
rows);
498 SumOfSquaredEntries += (
me->getBinContent(cols,
rows)) * (
me->getBinContent(cols,
rows));
502 float MeanInZ = SumOfEntries /
float(SumOfPixels);
503 float RMSInZ =
sqrt(SumOfSquaredEntries /
float(SumOfPixels));
504 if (sname.find(
"_mean_") != string::npos)
505 (*isum)->Fill(ndet, MeanInZ);
506 if (sname.find(
"_RMS_") != string::npos)
507 (*isum)->Fill(ndet, RMSInZ);
508 }
else if (sname.find(
"_FracOfPerfectPix_") != string::npos) {
509 float nlast =
me->getBinContent(
me->getNbinsX());
510 float nall = (
me->getTH1F())->Integral(1, 11);
511 (*isum)->Fill(ndet,
nlast / nall);
512 }
else if (sname.find(
"_NCalibErrors_") != string::npos || sname.find(
"FREQ_") != string::npos) {
513 float nall =
me->getEntries();
514 (*isum)->Fill(ndet, nall);
515 }
else if (sname.find(
"GainFitResult2d") != string::npos) {
516 int NegFitPixels = 0;
517 for (
int cols = 1; cols !=
me->getNbinsX() + 1; cols++)
519 if (
me->getBinContent(cols,
rows) < 0.)
522 (*isum)->Fill(ndet,
float(NegFitPixels));
523 }
else if (sname.find(
"ALLMODS_adcCOMB_") != string::npos ||
524 (sname.find(
"ALLMODS_chargeCOMB_") != string::npos &&
525 me->getName().find(
"Track_") == string::npos)) {
526 (*isum)->getTH1F()->Add(
me->getTH1F());
527 }
else if (sname.find(
"_NErrors_") != string::npos) {
528 string path1 = fullpathname;
529 path1 = path1.replace(path1.find(
"NErrors"), 7,
"errorType");
531 bool notReset =
true;
533 for (
int jj = 1;
jj < 16;
jj++) {
534 if (
me1->getBinContent(
jj) > 0.) {
536 string path2 = path1;
537 path2 = path2.replace(path2.find(
"errorType"), 9,
"TBMMessage");
540 if (
me2->getBinContent(6) > 0. ||
me2->getBinContent(7) > 0.)
547 (*isum)->
Fill(ndet,
me1->getEntries());
548 }
else if ((sname.find(
"_charge_") != string::npos && sname.find(
"Track_") == string::npos &&
549 me->getName().find(
"Track_") == string::npos) ||
550 (sname.find(
"_charge_") != string::npos && sname.find(
"_OnTrack_") != string::npos &&
551 me->getName().find(
"_OnTrack_") != string::npos) ||
552 (sname.find(
"_charge_") != string::npos && sname.find(
"_OffTrack_") != string::npos &&
553 me->getName().find(
"_OffTrack_") != string::npos) ||
554 (sname.find(
"_nclusters_") != string::npos && sname.find(
"Track_") == string::npos &&
555 me->getName().find(
"Track_") == string::npos) ||
556 (sname.find(
"_nclusters_") != string::npos && sname.find(
"_OnTrack_") != string::npos &&
557 me->getName().find(
"_OnTrack_") != string::npos) ||
558 (sname.find(
"_nclusters_") != string::npos && sname.find(
"_OffTrack_") != string::npos &&
559 me->getName().find(
"_OffTrack_") != string::npos) ||
560 (sname.find(
"_size") != string::npos && sname.find(
"Track_") == string::npos &&
561 me->getName().find(
"Track_") == string::npos) ||
562 (sname.find(
"_size") != string::npos && sname.find(
"_OnTrack_") != string::npos &&
563 me->getName().find(
"_OnTrack_") != string::npos) ||
564 (sname.find(
"_size") != string::npos && sname.find(
"_OffTrack_") != string::npos &&
565 me->getName().find(
"_OffTrack_") != string::npos)) {
566 (*isum)->Fill(ndet,
me->getMean());
567 }
else if (sname.find(
"_charge_") == string::npos && sname.find(
"_nclusters_") == string::npos &&
568 sname.find(
"_size") == string::npos) {
569 (*isum)->Fill(ndet,
me->getMean());
574 (*isum)->setAxisTitle(isbarrel ?
"Ladders" :
"Blades", 1);
575 }
else if (sname.find(
"ALLMODS_adcCOMB_") != string::npos) {
576 (*isum)->setAxisTitle(
"Digi charge [ADC]", 1);
577 }
else if (sname.find(
"ALLMODS_chargeCOMB_") != string::npos) {
578 (*isum)->setAxisTitle(
"Cluster charge [kilo electrons]", 1);
580 (*isum)->setAxisTitle(
"Modules", 1);
583 if (sname.find(
"_RMS_") != string::npos) {
584 title =
"RMS of " + sname.substr(7, (sname.find(
'_', 7) - 7)) +
" per module";
585 }
else if (sname.find(
"_FracOfPerfectPix_") != string::npos) {
586 title =
"FracOfPerfectPix " + sname.substr(7, (sname.find(
'_', 7) - 7)) +
" per module";
587 }
else if (sname.find(
"_NCalibErrors_") != string::npos) {
588 title =
"Number of CalibErrors " + sname.substr(7, (sname.find(
'_', 7) - 7)) +
" per module";
589 }
else if (sname.find(
"_NNegativeFits_") != string::npos) {
590 title =
"Number of pixels with neg. fit result " + sname.substr(7, (sname.find(
'_', 7) - 7)) +
592 }
else if (sname.find(
"FREQ_") != string::npos) {
593 title =
"NEvents with digis per module";
594 }
else if (sname.find(
"ALLMODS_adcCOMB_") != string::npos) {
596 }
else if (sname.find(
"ALLMODS_chargeCOMB_") != string::npos) {
598 }
else if (sname.find(
"_NErrors_") != string::npos) {
599 if (
prefix ==
"SUMOFF" && isbarrel)
600 title =
"Total number of errors per Ladder";
601 else if (
prefix ==
"SUMOFF" && !isbarrel)
602 title =
"Total number of errors per Blade";
604 title =
"Total number of errors per Module";
608 "Mean " + sname.substr(7, (sname.find(
'_', 7) - 7)) + (isbarrel ?
" per Ladder" :
" per Blade");
610 title =
"Mean " + sname.substr(7, (sname.find(
'_', 7) - 7)) +
" per Module";
612 (*isum)->setAxisTitle(
title, 2);
626 vector<string> subdirs = iGetter.
getSubdirs();
629 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
633 if ((iBooker.
pwd()).
find(
"Endcap") != string::npos ||
634 (iBooker.
pwd()).
find(
"AdditionalPixelErrors") != string::npos) {
640 if ((*it).find(
"Endcap") != string::npos || (*it).find(
"AdditionalPixelErrors") != string::npos)
647 string grandbarrel_structure_name;
648 vector<string> grandbarrel_me_names;
650 cout <<
"SiPixelActionExecutor::createSummary: Failed to read Grand "
651 "Barrel Summary configuration parameters!! ";
658 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
659 if ((iBooker.
pwd()).
find(
"Barrel") != string::npos ||
660 (iBooker.
pwd()).
find(
"AdditionalPixelErrors") != string::npos) {
666 if ((*it).find(
"Barrel") != string::npos || (*it).find(
"AdditionalPixelErrors") != string::npos)
673 string grandendcap_structure_name;
674 vector<string> grandendcap_me_names;
676 cout <<
"SiPixelActionExecutor::createSummary: Failed to read Grand "
677 "Endcap Summary configuration parameters!! ";
690 vector<string> &me_names) {
693 string currDir = iBooker.
pwd();
700 if (currDir.find(
dir_name) != string::npos) {
701 vector<MonitorElement *> sum_mes;
702 for (vector<string>::const_iterator iv = me_names.begin(); iv != me_names.end(); iv++) {
703 bool isBooked =
false;
705 for (vector<string>::const_iterator im =
contents.begin(); im !=
contents.end(); im++)
706 if ((*im).find(*iv) != string::npos)
709 if ((*iv) ==
"errorType" || (*iv) ==
"NErrors" || (*iv) ==
"fullType" || (*iv) ==
"chanNmbr" ||
710 (*iv) ==
"TBMType" || (*iv) ==
"EvtNbr" || (*iv) ==
"evtSize" || (*iv) ==
"linkId" || (*iv) ==
"ROCId" ||
711 (*iv) ==
"DCOLId" || (*iv) ==
"PXId" || (*iv) ==
"ROCNmbr" || (*iv) ==
"TBMMessage" ||
712 (*iv) ==
"Type36Hitmap" || (*iv) ==
"FedChLErr" || (*iv) ==
"FedChNErr" || (*iv) ==
"FedETypeNErr")
715 if ((*iv) ==
"errorType" || (*iv) ==
"NErrors" || (*iv) ==
"fullType" || (*iv) ==
"chanNmbr" ||
716 (*iv) ==
"TBMType" || (*iv) ==
"EvtNbr" || (*iv) ==
"evtSize" || (*iv) ==
"linkId" || (*iv) ==
"ROCId" ||
717 (*iv) ==
"DCOLId" || (*iv) ==
"PXId" || (*iv) ==
"ROCNmbr" || (*iv) ==
"TBMMessage" ||
718 (*iv) ==
"Type36Hitmap") {
719 string tag =
prefix +
"_" + (*iv) +
"_FEDErrors";
721 sum_mes.push_back(
temp);
722 }
else if ((*iv) ==
"FedChLErr" || (*iv) ==
"FedChNErr" || (*iv) ==
"FedETypeNErr") {
725 if ((*iv) ==
"FedChLErr") {
727 temp = iBooker.
book2D(
"FedChLErr",
"Type of last error", 40, -0.5, 39.5, 37, 0., 37.);
729 string fullpathname = iBooker.
pwd() +
"/" + (*iv);
730 temp = iGetter.
get(fullpathname);
735 if ((*iv) ==
"FedChNErr") {
737 temp = iBooker.
book2D(
"FedChNErr",
"Total number of errors", 40, -0.5, 39.5, 37, 0., 37.);
739 string fullpathname = iBooker.
pwd() +
"/" + (*iv);
740 temp = iGetter.
get(fullpathname);
745 if ((*iv) ==
"FedETypeNErr") {
747 temp = iBooker.
book2D(
"FedETypeNErr",
"Number of each error type", 40, -0.5, 39.5, 21, 0., 21.);
748 temp->setBinLabel(1,
"ROC of 25", 2);
749 temp->setBinLabel(2,
"Gap word", 2);
750 temp->setBinLabel(3,
"Dummy word", 2);
751 temp->setBinLabel(4,
"FIFO full", 2);
752 temp->setBinLabel(5,
"Timeout", 2);
753 temp->setBinLabel(6,
"Stack full", 2);
754 temp->setBinLabel(7,
"Pre-cal issued", 2);
755 temp->setBinLabel(8,
"Trigger clear or sync", 2);
756 temp->setBinLabel(9,
"No token bit", 2);
757 temp->setBinLabel(10,
"Overflow", 2);
758 temp->setBinLabel(11,
"FSM error", 2);
759 temp->setBinLabel(12,
"Invalid #ROCs", 2);
760 temp->setBinLabel(13,
"Event number", 2);
761 temp->setBinLabel(14,
"Slink header", 2);
762 temp->setBinLabel(15,
"Slink trailer", 2);
763 temp->setBinLabel(16,
"Event size", 2);
764 temp->setBinLabel(17,
"Invalid channel#", 2);
765 temp->setBinLabel(18,
"ROC value", 2);
766 temp->setBinLabel(19,
"Dcol or pixel value", 2);
767 temp->setBinLabel(20,
"Readout order", 2);
768 temp->setBinLabel(21,
"CRC error", 2);
770 string fullpathname = iBooker.
pwd() +
"/" + (*iv);
771 temp = iGetter.
get(fullpathname);
776 sum_mes.push_back(
temp);
779 if (sum_mes.empty()) {
780 edm::LogInfo(
"SiPixelActionExecutor") <<
" Summary MEs can not be created"
784 vector<string> subdirs = iGetter.
getSubdirs();
786 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
787 if ((*it).find(
"FED_") == string::npos)
791 string fedid = (*it).substr((*it).find(
"_") + 1);
792 std::istringstream isst;
798 for (vector<MonitorElement *>::const_iterator
isum = sum_mes.begin();
isum != sum_mes.end();
isum++) {
799 for (vector<string>::const_iterator im =
contents.begin(); im !=
contents.end(); im++) {
800 if (((*im).find(
"FedChNErr") != std::string::npos &&
801 (*isum)->getName().find(
"FedChNErr") != std::string::npos) ||
802 ((*im).find(
"FedChLErr") != std::string::npos &&
803 (*isum)->getName().find(
"FedChLErr") != std::string::npos) ||
804 ((*im).find(
"FedETypeNErr") != std::string::npos &&
805 (*isum)->getName().find(
"FedETypeNErr") != std::string::npos)) {
806 string fullpathname = iBooker.
pwd() +
"/" + (*im);
809 for (
int i = 0;
i != 37;
i++) {
810 if ((*im).find(
"FedETypeNErr") != std::string::npos &&
i < 21)
811 (*isum)->
Fill(ndet - 1,
i,
me->getBinContent(
i + 1));
813 (*isum)->Fill(ndet - 1,
i,
me->getBinContent(
i + 1));
817 string sname = ((*isum)->getName());
819 tname = sname.substr(7, (sname.find(
'_', 7) - 6));
821 string fullpathname = iBooker.
pwd() +
"/" + (*im);
825 if (
me->getMean() > 0.) {
826 if (sname.find(
"_NErrors_") != string::npos) {
827 string path1 = fullpathname;
828 path1 = path1.replace(path1.find(
"NErrors"), 7,
"errorType");
830 bool notReset =
true;
832 for (
int jj = 1;
jj < 16;
jj++) {
833 if (
me1->getBinContent(
jj) > 0.) {
835 string path2 = path1;
836 path2 = path2.replace(path2.find(
"errorType"), 9,
"TBMMessage");
839 if (
me2->getBinContent(6) > 0. ||
me2->getBinContent(7) > 0.)
846 (*isum)->
setBinContent(ndet, (*isum)->getBinContent(ndet) +
me1->getEntries());
848 (*isum)->setBinContent(ndet, (*isum)->getBinContent(ndet) +
me->getEntries());
850 (*isum)->setAxisTitle(
"FED #", 1);
852 title = sname.substr(7, (sname.find(
'_', 7) - 7)) +
" per FED";
853 (*isum)->setAxisTitle(
title, 2);
863 vector<string> subdirs = iGetter.
getSubdirs();
864 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
865 if ((*it).find(
"Endcap") != string::npos || (*it).find(
"Barrel") != string::npos)
881 vector<string> &me_names,
885 vector<MonitorElement *> gsum_mes;
886 string currDir = iBooker.
pwd();
887 string path_name = iBooker.
pwd();
888 string dir_name = path_name.substr(path_name.find_last_of(
'/') + 1);
890 (
dir_name.find(
"AdditionalPixelErrors") == 0) || (
dir_name.find(
"Endcap") == 0) ||
894 vector<string> subdirs = iGetter.
getSubdirs();
895 int nDirs = subdirs.size();
901 bool first_subdir =
true;
902 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
927 for (vector<string>::const_iterator im =
contents.begin(); im !=
contents.end(); im++) {
928 for (vector<string>::const_iterator iv = me_names.begin(); iv != me_names.end(); iv++) {
929 string var =
"_" + (*iv) +
"_";
930 if ((*im).find(
var) != string::npos) {
931 if ((
var ==
"_charge_" ||
var ==
"_nclusters_" ||
var ==
"_size_" ||
var ==
"_sizeX_" ||
var ==
"_sizeY_") &&
932 (*im).find(
"Track_") != string::npos)
934 string full_path = (*it) +
"/" + (*im);
939 if ((*iv) ==
"errorType" || (*iv) ==
"NErrors" || (*iv) ==
"fullType" || (*iv) ==
"chanNmbr" ||
940 (*iv) ==
"TBMType" || (*iv) ==
"EvtNbr" || (*iv) ==
"evtSize" || (*iv) ==
"linkId" ||
941 (*iv) ==
"ROCId" || (*iv) ==
"DCOLId" || (*iv) ==
"PXId" || (*iv) ==
"ROCNmbr" ||
942 (*iv) ==
"TBMMessage" || (*iv) ==
"Type36Hitmap")
944 else if ((*iv) ==
"ndigis" || (*iv) ==
"adc" || (*iv) ==
"ndigisFREQ" || (*iv) ==
"adcCOMB")
946 else if ((*iv) ==
"nclusters" || (*iv) ==
"x" || (*iv) ==
"y" || (*iv) ==
"charge" ||
947 (*iv) ==
"chargeCOMB" || (*iv) ==
"size" || (*iv) ==
"sizeX" || (*iv) ==
"sizeY" ||
948 (*iv) ==
"minrow" || (*iv) ==
"maxrow" || (*iv) ==
"mincol" || (*iv) ==
"maxcol")
950 if (currDir.find(
"Track") != string::npos)
952 else if ((*iv) ==
"residualX_mean" || (*iv) ==
"residualY_mean" || (*iv) ==
"residualX_RMS" ||
953 (*iv) ==
"residualY_RMS")
955 else if ((*iv) ==
"ClustX" || (*iv) ==
"ClustY" || (*iv) ==
"nRecHits" || (*iv) ==
"ErrorX" ||
958 else if ((*iv) ==
"Gain1d_mean" || (*iv) ==
"GainChi2NDF1d_mean" || (*iv) ==
"GainChi2Prob1d_mean" ||
959 (*iv) ==
"Pedestal1d_mean" || (*iv) ==
"ScurveChi2ProbSummary_mean" ||
960 (*iv) ==
"ScurveFitResultSummary_mean" || (*iv) ==
"ScurveSigmasSummary_mean" ||
961 (*iv) ==
"ScurveThresholdSummary_mean" || (*iv) ==
"Gain1d_RMS" || (*iv) ==
"GainChi2NDF1d_RMS" ||
962 (*iv) ==
"GainChi2Prob1d_RMS" || (*iv) ==
"Pedestal1d_RMS" || (*iv) ==
"GainNPoints1d_mean" ||
963 (*iv) ==
"GainNPoints1d_RMS" || (*iv) ==
"GainHighPoint1d_mean" ||
964 (*iv) ==
"GainHighPoint1d_RMS" || (*iv) ==
"GainLowPoint1d_mean" ||
965 (*iv) ==
"GainLowPoint1d_RMS" || (*iv) ==
"GainEndPoint1d_mean" || (*iv) ==
"GainEndPoint1d_RMS" ||
966 (*iv) ==
"GainFitResult2d_mean" || (*iv) ==
"GainFitResult2d_RMS" ||
967 (*iv) ==
"GainDynamicRange2d_mean" || (*iv) ==
"GainDynamicRange2d_RMS" ||
968 (*iv) ==
"GainSaturate2d_mean" || (*iv) ==
"GainSaturate2d_RMS" ||
969 (*iv) ==
"ScurveChi2ProbSummary_RMS" || (*iv) ==
"ScurveFitResultSummary_RMS" ||
970 (*iv) ==
"ScurveSigmasSummary_RMS" || (*iv) ==
"ScurveThresholdSummary_RMS" ||
971 (*iv) ==
"pixelAliveSummary_mean" || (*iv) ==
"pixelAliveSummary_FracOfPerfectPix" ||
972 (*iv) ==
"SiPixelErrorsCalibDigis_NCalibErrors")
977 nbin =
me->getTH1F()->GetNbinsX();
979 if ((*iv) ==
"adcCOMB" || (*iv) ==
"chargeCOMB")
980 me_name =
"ALLMODS_" + (*iv) +
"_" +
dir_name;
983 else if ((*iv) ==
"adcCOMB")
987 else if (
prefix ==
"SUMOFF" &&
dir_name.find(
"Shell") != string::npos)
989 else if (
dir_name.find(
"Shell") != string::npos)
996 nbin =
me->getTH1F()->GetNbinsX();
998 if ((*iv) ==
"adcCOMB" || (*iv) ==
"chargeCOMB")
999 me_name =
"ALLMODS_" + (*iv) +
"_" +
dir_name;
1002 else if ((*iv) ==
"adcCOMB")
1006 else if (
prefix ==
"SUMOFF" &&
dir_name.find(
"Shell") != string::npos)
1008 else if (
dir_name.find(
"Shell") != string::npos)
1016 for (vector<MonitorElement *>::const_iterator igm = gsum_mes.begin(); igm != gsum_mes.end(); igm++) {
1017 if ((*igm)->getName().find(
var) != string::npos) {
1019 (*igm)->setAxisTitle(
"Ladders", 1);
1020 else if ((*igm)->getName().find(
"adcCOMB_") != string::npos)
1021 (*igm)->setAxisTitle(
"Digi charge [ADC]", 1);
1022 else if ((*igm)->getName().find(
"chargeCOMB_") != string::npos)
1023 (*igm)->setAxisTitle(
"Cluster charge [kilo electrons]", 1);
1025 (*igm)->setAxisTitle(
"Modules", 1);
1030 if ((*igm)->getName().find(
"NErrors_") != string::npos &&
prefix ==
"SUMOFF")
1031 title =
"Total number of errors per Ladder";
1032 else if ((*igm)->getName().find(
"NErrors_") != string::npos &&
prefix ==
"SUMRAW")
1033 title =
"Total number of errors per Module";
1034 else if (
prefix ==
"SUMOFF")
1035 title =
"mean " + (*iv) +
" per Ladder";
1036 else if ((*igm)->getName().find(
"FREQ_") != string::npos &&
prefix !=
"SUMOFF")
1037 title =
"NEvents with digis per Module";
1038 else if ((*igm)->getName().find(
"FREQ_") != string::npos &&
prefix ==
"SUMOFF")
1039 title =
"NEvents with digis per Ladder/Blade";
1040 else if ((*igm)->getName().find(
"adcCOMB_") != string::npos)
1042 else if ((*igm)->getName().find(
"chargeCOMB_") != string::npos)
1043 title =
"NClusters";
1045 title =
"mean " + (*iv) +
" per Module";
1046 (*igm)->setAxisTitle(
title, 2);
1050 if ((*igm)->getName().find(
"ALLMODS_adcCOMB_") != string::npos) {
1052 }
else if ((*igm)->getName().find(
"ALLMODS_chargeCOMB_") != string::npos) {
1054 }
else if ((*igm)->getName().find(
"Ladder") != string::npos) {
1057 }
else if ((*igm)->getName().find(
"Layer") != string::npos) {
1058 nbin_i = (cnt - 1) * 4;
1060 }
else if ((*igm)->getName().find(
"Shell") != string::npos) {
1061 if (
prefix !=
"SUMOFF") {
1065 }
else if (iDir == 1) {
1068 }
else if (iDir == 2) {
1076 }
else if (iDir == 1) {
1079 }
else if (iDir == 2) {
1084 }
else if ((*igm)->getName().find(
"Barrel") != string::npos) {
1085 if (
prefix !=
"SUMOFF") {
1089 }
else if (iDir == 1) {
1092 }
else if (iDir == 2) {
1095 }
else if (iDir == 3) {
1103 }
else if (iDir == 1) {
1106 }
else if (iDir == 2) {
1109 }
else if (iDir == 3) {
1116 if ((*igm)->getName().find(
"ALLMODS_adcCOMB_") != string::npos) {
1118 }
else if ((*igm)->getName().find(
"ALLMODS_chargeCOMB_") != string::npos) {
1120 }
else if ((*igm)->getName().find(
"Ladder") != string::npos) {
1123 }
else if ((*igm)->getName().find(
"Layer") != string::npos) {
1124 nbin_i = (cnt - 1) * 4;
1126 }
else if ((*igm)->getName().find(
"Shell") != string::npos) {
1127 if (
prefix !=
"SUMOFF") {
1132 else if (iDir == 1) {
1136 else if (iDir == 2) {
1140 else if (iDir == 3) {
1149 else if (iDir == 1) {
1153 else if (iDir == 2) {
1157 else if (iDir == 3) {
1162 }
else if ((*igm)->getName().find(
"Barrel") != string::npos) {
1163 if (
prefix !=
"SUMOFF") {
1168 else if (iDir == 1) {
1172 else if (iDir == 2) {
1175 }
else if (iDir == 3) {
1178 }
else if (iDir == 4) {
1187 else if (iDir == 1) {
1191 else if (iDir == 2) {
1194 }
else if (iDir == 3) {
1197 }
else if (iDir == 4) {
1205 if ((*igm)->getName().find(
"ndigisFREQ") == string::npos) {
1206 if (((*igm)->getName().find(
"adcCOMB") != string::npos &&
1207 me->getName().find(
"adcCOMB") != string::npos) ||
1208 ((*igm)->getName().find(
"chargeCOMB") != string::npos &&
1209 me->getName().find(
"chargeCOMB") != string::npos)) {
1210 (*igm)->getTH1F()->Add(
me->getTH1F());
1211 }
else if (((*igm)->getName().find(
"charge_") != string::npos &&
1212 (*igm)->getName().find(
"Track_") == string::npos &&
1213 me->getName().find(
"charge_") != string::npos &&
1214 me->getName().find(
"Track_") == string::npos) ||
1215 ((*igm)->getName().find(
"nclusters_") != string::npos &&
1216 (*igm)->getName().find(
"Track_") == string::npos &&
1217 me->getName().find(
"nclusters_") != string::npos &&
1218 me->getName().find(
"Track_") == string::npos) ||
1219 ((*igm)->getName().find(
"size_") != string::npos &&
1220 (*igm)->getName().find(
"Track_") == string::npos &&
1221 me->getName().find(
"size_") != string::npos &&
1222 me->getName().find(
"Track_") == string::npos) ||
1223 ((*igm)->getName().find(
"charge_OffTrack_") != string::npos &&
1224 me->getName().find(
"charge_OffTrack_") != string::npos) ||
1225 ((*igm)->getName().find(
"nclusters_OffTrack_") != string::npos &&
1226 me->getName().find(
"nclusters_OffTrack_") != string::npos) ||
1227 ((*igm)->getName().find(
"size_OffTrack_") != string::npos &&
1228 me->getName().find(
"size_OffTrack_") != string::npos) ||
1229 ((*igm)->getName().find(
"charge_OnTrack_") != string::npos &&
1230 me->getName().find(
"charge_OnTrack_") != string::npos) ||
1231 ((*igm)->getName().find(
"nclusters_OnTrack_") != string::npos &&
1232 me->getName().find(
"nclusters_OnTrack_") != string::npos) ||
1233 ((*igm)->getName().find(
"size_OnTrack_") != string::npos &&
1234 me->getName().find(
"size_OnTrack_") != string::npos) ||
1235 ((*igm)->getName().find(
"charge_") == string::npos &&
1236 (*igm)->getName().find(
"nclusters_") == string::npos &&
1237 (*igm)->getName().find(
"size_") == string::npos)) {
1238 for (
int k = 1;
k < nbin_subdir + 1;
k++)
1239 if (
me->getBinContent(
k) > 0)
1240 (*igm)->setBinContent(
k + nbin_i,
me->getBinContent(
k));
1242 }
else if (
me->getName().find(
"ndigisFREQ") != string::npos) {
1243 for (
int k = 1;
k < nbin_subdir + 1;
k++)
1244 if (
me->getBinContent(
k) > 0)
1245 (*igm)->setBinContent(
k + nbin_i,
me->getBinContent(
k));
1253 first_subdir =
false;
1263 vector<string> &me_names,
1267 vector<MonitorElement *> gsum_mes;
1268 string currDir = iBooker.
pwd();
1269 string path_name = iBooker.
pwd();
1270 string dir_name = path_name.substr(path_name.find_last_of(
'/') + 1);
1272 (
dir_name.find(
"AdditionalPixelErrors") == 0) || (
dir_name.find(
"Barrel") == 0) ||
1275 vector<string> subdirs = iGetter.
getSubdirs();
1279 int nbin_subdir = 0;
1281 bool first_subdir =
true;
1282 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
1306 for (vector<string>::const_iterator im =
contents.begin(); im !=
contents.end(); im++) {
1307 for (vector<string>::const_iterator iv = me_names.begin(); iv != me_names.end(); iv++) {
1308 string var =
"_" + (*iv) +
"_";
1309 if ((*im).find(
var) != string::npos) {
1310 if ((
var ==
"_charge_" ||
var ==
"_nclusters_" ||
var ==
"_size_" ||
var ==
"_sizeX_" ||
var ==
"_sizeY_") &&
1311 (*im).find(
"Track_") != string::npos)
1313 string full_path = (*it) +
"/" + (*im);
1318 if ((*iv) ==
"errorType" || (*iv) ==
"NErrors" || (*iv) ==
"fullType" || (*iv) ==
"chanNmbr" ||
1319 (*iv) ==
"TBMType" || (*iv) ==
"EvtNbr" || (*iv) ==
"evtSize" || (*iv) ==
"linkId" ||
1320 (*iv) ==
"ROCId" || (*iv) ==
"DCOLId" || (*iv) ==
"PXId" || (*iv) ==
"ROCNmbr" ||
1321 (*iv) ==
"TBMMessage" || (*iv) ==
"Type36Hitmap")
1323 else if ((*iv) ==
"ndigis" || (*iv) ==
"adc" || (*iv) ==
"ndigisFREQ" || (*iv) ==
"adcCOMB")
1325 else if ((*iv) ==
"nclusters" || (*iv) ==
"x" || (*iv) ==
"y" || (*iv) ==
"charge" ||
1326 (*iv) ==
"chargeCOMB" || (*iv) ==
"size" || (*iv) ==
"sizeX" || (*iv) ==
"sizeY" ||
1327 (*iv) ==
"minrow" || (*iv) ==
"maxrow" || (*iv) ==
"mincol" || (*iv) ==
"maxcol")
1329 if (currDir.find(
"Track") != string::npos)
1331 else if ((*iv) ==
"residualX_mean" || (*iv) ==
"residualY_mean" || (*iv) ==
"residualX_RMS" ||
1332 (*iv) ==
"residualY_RMS")
1334 else if ((*iv) ==
"ClustX" || (*iv) ==
"ClustY" || (*iv) ==
"nRecHits" || (*iv) ==
"ErrorX" ||
1337 else if ((*iv) ==
"Gain1d_mean" || (*iv) ==
"GainChi2NDF1d_mean" || (*iv) ==
"GainChi2Prob1d_mean" ||
1338 (*iv) ==
"Pedestal1d_mean" || (*iv) ==
"ScurveChi2ProbSummary_mean" ||
1339 (*iv) ==
"ScurveFitResultSummary_mean" || (*iv) ==
"ScurveSigmasSummary_mean" ||
1340 (*iv) ==
"ScurveThresholdSummary_mean" || (*iv) ==
"Gain1d_RMS" || (*iv) ==
"GainChi2NDF1d_RMS" ||
1341 (*iv) ==
"GainChi2Prob1d_RMS" || (*iv) ==
"Pedestal1d_RMS" || (*iv) ==
"GainNPoints1d_mean" ||
1342 (*iv) ==
"GainNPoints1d_RMS" || (*iv) ==
"GainHighPoint1d_mean" ||
1343 (*iv) ==
"GainHighPoint1d_RMS" || (*iv) ==
"GainLowPoint1d_mean" ||
1344 (*iv) ==
"GainLowPoint1d_RMS" || (*iv) ==
"GainEndPoint1d_mean" || (*iv) ==
"GainEndPoint1d_RMS" ||
1345 (*iv) ==
"GainFitResult2d_mean" || (*iv) ==
"GainFitResult2d_RMS" ||
1346 (*iv) ==
"GainDynamicRange2d_mean" || (*iv) ==
"GainDynamicRange2d_RMS" ||
1347 (*iv) ==
"GainSaturate2d_mean" || (*iv) ==
"GainSaturate2d_RMS" ||
1348 (*iv) ==
"ScurveChi2ProbSummary_RMS" || (*iv) ==
"ScurveFitResultSummary_RMS" ||
1349 (*iv) ==
"ScurveSigmasSummary_RMS" || (*iv) ==
"ScurveThresholdSummary_RMS" ||
1350 (*iv) ==
"pixelAliveSummary_mean" || (*iv) ==
"pixelAliveSummary_FracOfPerfectPix" ||
1351 (*iv) ==
"SiPixelErrorsCalibDigis_NCalibErrors")
1356 nbin =
me->getTH1F()->GetNbinsX();
1358 if ((*iv) ==
"adcCOMB" || (*iv) ==
"chargeCOMB")
1359 me_name =
"ALLMODS_" + (*iv) +
"_" +
dir_name;
1364 else if (
prefix ==
"SUMOFF" &&
dir_name.find(
"HalfCylinder") != string::npos)
1366 else if (
dir_name.find(
"HalfCylinder") != string::npos)
1368 else if (
prefix ==
"SUMOFF" &&
dir_name.find(
"Disk") != string::npos)
1370 else if (
dir_name.find(
"Disk") != string::npos)
1372 else if (
dir_name.find(
"Blade") != string::npos)
1376 nbin =
me->getTH1F()->GetNbinsX();
1378 if ((*iv) ==
"adcCOMB" || (*iv) ==
"chargeCOMB")
1379 me_name =
"ALLMODS_" + (*iv) +
"_" +
dir_name;
1384 else if (
prefix ==
"SUMOFF" &&
dir_name.find(
"HalfCylinder") != string::npos)
1386 else if (
dir_name.find(
"HalfCylinder") != string::npos)
1388 else if (
prefix ==
"SUMOFF" &&
dir_name.find(
"Disk") != string::npos)
1390 else if (
dir_name.find(
"Disk") != string::npos)
1392 else if (
dir_name.find(
"Blade") != string::npos)
1397 for (vector<MonitorElement *>::const_iterator igm = gsum_mes.begin(); igm != gsum_mes.end(); igm++) {
1398 if ((*igm)->getName().find(
var) != string::npos) {
1400 (*igm)->setAxisTitle(
"Blades", 1);
1401 else if ((*igm)->getName().find(
"adcCOMB_") != string::npos)
1402 (*igm)->setAxisTitle(
"Digi charge [ADC]", 1);
1403 else if ((*igm)->getName().find(
"chargeCOMB_") != string::npos)
1404 (*igm)->setAxisTitle(
"Cluster charge [kilo electrons]", 1);
1406 (*igm)->setAxisTitle(
"Modules", 1);
1408 if ((*igm)->getName().find(
"NErrors_") != string::npos &&
prefix ==
"SUMOFF")
1409 title =
"Total number of errors per Blade";
1410 else if ((*igm)->getName().find(
"NErrors_") != string::npos &&
prefix ==
"SUMRAW")
1411 title =
"Total number of errors per Module";
1412 else if (
prefix ==
"SUMOFF")
1413 title =
"mean " + (*iv) +
" per Blade";
1414 else if ((*igm)->getName().find(
"FREQ_") != string::npos)
1415 title =
"NEvents with digis per Module";
1416 else if ((*igm)->getName().find(
"adcCOMB_") != string::npos)
1418 else if ((*igm)->getName().find(
"chargeCOMB_") != string::npos)
1419 title =
"NClusters";
1421 title =
"mean " + (*iv) +
" per Module";
1422 (*igm)->setAxisTitle(
title, 2);
1425 if ((*igm)->getName().find(
"ALLMODS_adcCOMB_") != string::npos) {
1427 }
else if ((*igm)->getName().find(
"ALLMODS_chargeCOMB_") != string::npos) {
1429 }
else if ((*igm)->getName().find(
"Panel_") != string::npos) {
1431 }
else if ((*igm)->getName().find(
"Blade") != string::npos) {
1432 if ((*im).find(
"_1") != string::npos)
1434 if ((*im).find(
"_2") != string::npos) {
1438 }
else if ((*igm)->getName().find(
"Disk") != string::npos) {
1439 nbin_i = ((cnt - 1) % 12) * 7;
1441 }
else if ((*igm)->getName().find(
"HalfCylinder") != string::npos) {
1442 if (
prefix !=
"SUMOFF") {
1444 if ((*im).find(
"_2") != string::npos)
1448 if ((*im).find(
"_2") != string::npos)
1451 }
else if ((*igm)->getName().find(
"Endcap") != string::npos) {
1452 if (
prefix !=
"SUMOFF") {
1454 if ((*im).find(
"_mO") != string::npos)
1456 if ((*im).find(
"_pI") != string::npos)
1458 if ((*im).find(
"_pO") != string::npos)
1462 if ((*im).find(
"_mO") != string::npos)
1464 if ((*im).find(
"_pI") != string::npos)
1466 if ((*im).find(
"_pO") != string::npos)
1471 if ((*igm)->getName().find(
"ALLMODS_adcCOMB_") != string::npos) {
1473 }
else if ((*igm)->getName().find(
"ALLMODS_chargeCOMB_") != string::npos) {
1475 }
else if ((*igm)->getName().find(
"Panel_") != string::npos) {
1477 }
else if ((*igm)->getName().find(
"Blade") != string::npos) {
1478 if ((*im).find(
"_1") != string::npos)
1480 if ((*im).find(
"_2") != string::npos) {
1484 }
else if ((*igm)->getName().find(
"Disk") != string::npos) {
1485 nbin_i = ((cnt - 1) % 28) * 2;
1487 }
else if ((*igm)->getName().find(
"HalfCylinder") != string::npos) {
1488 if (
prefix !=
"SUMOFF") {
1490 if ((*im).find(
"_2") != string::npos)
1492 if ((*im).find(
"_3") != string::npos)
1496 if ((*im).find(
"_2") != string::npos)
1498 if ((*im).find(
"_3") != string::npos)
1501 }
else if ((*igm)->getName().find(
"Endcap") != string::npos) {
1502 if (
prefix !=
"SUMOFF") {
1504 if ((*im).find(
"_mO") != string::npos)
1506 if ((*im).find(
"_pI") != string::npos)
1508 if ((*im).find(
"_pO") != string::npos)
1512 if ((*im).find(
"_mO") != string::npos)
1514 if ((*im).find(
"_pI") != string::npos)
1516 if ((*im).find(
"_pO") != string::npos)
1522 if ((*igm)->getName().find(
"ndigisFREQ") == string::npos) {
1523 if (((*igm)->getName().find(
"adcCOMB") != string::npos &&
1524 me->getName().find(
"adcCOMB") != string::npos) ||
1525 ((*igm)->getName().find(
"chargeCOMB") != string::npos &&
1526 me->getName().find(
"chargeCOMB") != string::npos)) {
1527 (*igm)->getTH1F()->Add(
me->getTH1F());
1528 }
else if (((*igm)->getName().find(
"charge_") != string::npos &&
1529 (*igm)->getName().find(
"Track_") == string::npos &&
1530 me->getName().find(
"charge_") != string::npos &&
1531 me->getName().find(
"Track_") == string::npos) ||
1532 ((*igm)->getName().find(
"nclusters_") != string::npos &&
1533 (*igm)->getName().find(
"Track_") == string::npos &&
1534 me->getName().find(
"nclusters_") != string::npos &&
1535 me->getName().find(
"Track_") == string::npos) ||
1536 ((*igm)->getName().find(
"size_") != string::npos &&
1537 (*igm)->getName().find(
"Track_") == string::npos &&
1538 me->getName().find(
"size_") != string::npos &&
1539 me->getName().find(
"Track_") == string::npos) ||
1540 ((*igm)->getName().find(
"charge_OffTrack_") != string::npos &&
1541 me->getName().find(
"charge_OffTrack_") != string::npos) ||
1542 ((*igm)->getName().find(
"nclusters_OffTrack_") != string::npos &&
1543 me->getName().find(
"nclusters_OffTrack_") != string::npos) ||
1544 ((*igm)->getName().find(
"size_OffTrack_") != string::npos &&
1545 me->getName().find(
"size_OffTrack_") != string::npos) ||
1546 ((*igm)->getName().find(
"charge_OnTrack_") != string::npos &&
1547 me->getName().find(
"charge_OnTrack_") != string::npos) ||
1548 ((*igm)->getName().find(
"nclusters_OnTrack_") != string::npos &&
1549 me->getName().find(
"nclusters_OnTrack_") != string::npos) ||
1550 ((*igm)->getName().find(
"size_OnTrack_") != string::npos &&
1551 me->getName().find(
"size_OnTrack_") != string::npos) ||
1552 ((*igm)->getName().find(
"charge_") == string::npos &&
1553 (*igm)->getName().find(
"nclusters_") == string::npos &&
1554 (*igm)->getName().find(
"size_") == string::npos)) {
1555 for (
int k = 1;
k < nbin_subdir + 1;
k++)
1556 if (
me->getBinContent(
k) > 0)
1557 (*igm)->setBinContent(
k + nbin_i,
me->getBinContent(
k));
1559 }
else if (
me->getName().find(
"ndigisFREQ") != string::npos) {
1560 for (
int k = 1;
k < nbin_subdir + 1;
k++)
1561 if (
me->getBinContent(
k) > 0)
1562 (*igm)->setBinContent(
k + nbin_i,
me->getBinContent(
k));
1572 first_subdir =
false;
1584 if ((iBooker.
pwd()).
find(
"Pixel") == string::npos)
1588 for (vector<string>::const_iterator it =
contents.begin(); it !=
contents.end(); it++) {
1590 if ((*it).find(me_name) == 0) {
1591 string fullpathname = iBooker.
pwd() +
"/" + me_name;
1603 if (me_name.find(
"ALLMODS_adcCOMB_") != string::npos)
1604 temp_me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 128, 0, 256);
1605 else if (me_name.find(
"ALLMODS_chargeCOMB_") != string::npos)
1606 temp_me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 100, 0, 200);
1608 temp_me = iBooker.
book1D(me_name.c_str(), me_name.c_str(),
nbin, 1.,
nbin + 1.);
1610 mes.push_back(temp_me);
1626 if ((iBooker.
pwd()).
find(
"Pixel") == string::npos)
1630 for (vector<string>::const_iterator it =
contents.begin(); it !=
contents.end(); it++) {
1631 if ((*it).find(me_name) == 0) {
1632 string fullpathname = iBooker.
pwd() +
"/" + (*it);
1633 me = iGetter.
get(fullpathname);
1642 if (me_name.find(
"SUMOFF") == string::npos) {
1643 if (me_name.find(
"Blade_") != string::npos)
1644 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 7, 1., 8.);
1646 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 4, 1., 5.);
1647 }
else if (me_name.find(
"Layer_1") != string::npos) {
1648 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 10, 1., 11.);
1649 }
else if (me_name.find(
"Layer_2") != string::npos) {
1650 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 16, 1., 17.);
1651 }
else if (me_name.find(
"Layer_3") != string::npos) {
1652 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 22, 1., 23.);
1653 }
else if (me_name.find(
"Disk_") != string::npos) {
1654 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 12, 1., 13.);
1658 if (me_name.find(
"SUMOFF") == string::npos) {
1659 if (me_name.find(
"Blade_") != string::npos)
1660 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 2, 1., 3.);
1662 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 1, 1., 2.);
1663 }
else if (me_name.find(
"Layer_1") != string::npos) {
1664 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 6, 1., 7.);
1665 }
else if (me_name.find(
"Layer_2") != string::npos) {
1666 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 14, 1., 15.);
1667 }
else if (me_name.find(
"Layer_3") != string::npos) {
1668 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 22, 1., 23.);
1669 }
else if (me_name.find(
"Layer_4") != string::npos) {
1670 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 32, 1., 33.);
1671 }
else if (me_name.find(
"Disk_") != string::npos) {
1672 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 28, 1., 29.);
1685 if ((iBooker.
pwd()).
find(
"Pixel") == string::npos)
1689 for (vector<string>::const_iterator it =
contents.begin(); it !=
contents.end(); it++) {
1690 if ((*it).find(me_name) == 0) {
1691 string fullpathname = iBooker.
pwd() +
"/" + (*it);
1693 me = iGetter.
get(fullpathname);
1702 me = iBooker.
book1D(me_name.c_str(), me_name.c_str(), 40, -0.5, 39.5);
1715 vector<string> subdirs = iGetter.
getSubdirs();
1716 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
1717 if (isbarrel && (*it).find(
"Barrel") == string::npos)
1719 if (!isbarrel && (*it).find(
"Endcap") == string::npos)
1722 if ((*it).find(
"Module_") != string::npos)
1724 if ((*it).find(
"Panel_") != string::npos)
1726 if ((*it).find(
"Ladder_") != string::npos)
1728 if ((*it).find(
"Blade_") != string::npos)
1730 if ((*it).find(
"Layer_") != string::npos)
1732 if ((*it).find(
"Disk_") != string::npos)
1739 OccupancyMap = iBooker.
book2D((isbarrel ?
"barrelOccupancyMap" :
"endcapOccupancyMap"),
1740 "Barrel Digi Occupancy Map (4 pix per bin)",
1741 isbarrel ? 208 : 130,
1743 isbarrel ? 416. : 260.,
1749 OccupancyMap = iBooker.
book2D((isbarrel ?
"barrelOccupancyMap" :
"endcapOccupancyMap"),
1750 "Barrel Digi Occupancy Map (1 pix per bin)",
1751 isbarrel ? 416 : 260,
1753 isbarrel ? 416. : 260.,
1807 string currDir = iBooker.
pwd();
1808 string dname = currDir.substr(currDir.find_last_of(
'/') + 1);
1810 if (
dname.find(
"Layer_") != string::npos ||
dname.find(
"Disk_") != string::npos) {
1811 vector<string> meVec = iGetter.
getMEs();
1812 for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
1813 string full_path = currDir +
"/" + (*it);
1814 if (full_path.find(
"hitmap_siPixelDigis") != string::npos) {
1818 string path = full_path;
1819 while (
path.find_last_of(
'/') != 5)
1825 OccupancyMap = iGetter.
get(
path +
"/" + (isbarrel ?
"barrel" :
"endcap") +
"OccupancyMap");
1828 for (
int i = 1;
i !=
me->getNbinsX() + 1;
i++)
1829 for (
int j = 1;
j !=
me->getNbinsY() + 1;
j++) {
1839 vector<string> subdirs = iGetter.
getSubdirs();
1840 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
1843 if (*it !=
"Pixel" &&
1844 ((isbarrel && (*it).find(
"Barrel") == string::npos) || (!isbarrel && (*it).find(
"Endcap") == string::npos)))
1866 float totalDigisBPIX = 0.;
1867 float totalDigisFPIX = 0.;
1868 for (
int i = 1;
i != 41;
i++) {
1874 float averageBPIXOcc = totalDigisBPIX / 32.;
1875 float averageFPIXOcc = totalDigisFPIX / 8.;
1876 for (
int i = 1;
i != 41;
i++) {
1895 float totalDigisBPIX = 0.;
1896 float totalDigisFPIX = 0.;
1897 for (
int i = 1;
i != 41;
i++) {
1899 totalDigisBPIX += avgfedDigiOccvsLumi->
getBinContent(lumisec,
i);
1901 totalDigisFPIX += avgfedDigiOccvsLumi->
getBinContent(lumisec,
i);
1903 float averageBPIXOcc = totalDigisBPIX / 32.;
1904 float averageFPIXOcc = totalDigisFPIX / 8.;
1905 for (
int i = 1;
i != 41;
i++) {
1924 "HitEfficiency_L1",
"Hit Efficiency in Barrel_Layer1;Module;Ladder", 9, -4.5, 4.5, 21, -10.5, 10.5);
1926 "HitEfficiency_L2",
"Hit Efficiency in Barrel_Layer2;Module;Ladder", 9, -4.5, 4.5, 33, -16.5, 16.5);
1928 "HitEfficiency_L3",
"Hit Efficiency in Barrel_Layer3;Module;Ladder", 9, -4.5, 4.5, 45, -22.5, 22.5);
1931 "HitEfficiency_L1",
"Hit Efficiency in Barrel_Layer1;Module;Ladder", 9, -4.5, 4.5, 21, -10.5, 10.5);
1933 "HitEfficiency_L2",
"Hit Efficiency in Barrel_Layer2;Module;Ladder", 9, -4.5, 4.5, 33, -16.5, 16.5);
1935 "HitEfficiency_L3",
"Hit Efficiency in Barrel_Layer3;Module;Ladder", 9, -4.5, 4.5, 45, -22.5, 22.5);
1941 iBooker.
book2D(
"HitEfficiency_L1",
"Hit Efficiency in Barrel_Layer1;z-side;Ladder", 2, -1., 1., 12, -6., 6.);
1943 "HitEfficiency_L2",
"Hit Efficiency in Barrel_Layer2;z-side;Ladder", 2, -1., 1., 28, -14., 14.);
1945 "HitEfficiency_L3",
"Hit Efficiency in Barrel_Layer3;z-side;Ladder", 2, -1., 1., 44, -22., 22.);
1947 "HitEfficiency_L4",
"Hit Efficiency in Barrel_Layer4;z-side;Ladder", 2, -1., 1., 64, -32., 32.);
1950 iBooker.
book2D(
"HitEfficiency_L1",
"Hit Efficiency in Barrel_Layer1;Module;Ladder", 8, -4., 4., 12, -6., 6.);
1952 "HitEfficiency_L2",
"Hit Efficiency in Barrel_Layer2;Module;Ladder", 8, -4., 4., 28, -14., 14.);
1954 "HitEfficiency_L3",
"Hit Efficiency in Barrel_Layer3;Module;Ladder", 8, -4., 4., 44, -22., 22.);
1956 "HitEfficiency_L4",
"Hit Efficiency in Barrel_Layer4;Module;Ladder", 8, -4., 4., 64, -32., 32.);
1965 "HitEfficiency_Dp1",
"Hit Efficiency in Endcap_Disk_p1;Blade;Panel", 26, -13., 13., 2, 0.5, 2.5);
1967 "HitEfficiency_Dp2",
"Hit Efficiency in Endcap_Disk_p2;Blade;Panel", 26, -13., 13., 2, 0.5, 2.5);
1969 "HitEfficiency_Dm1",
"Hit Efficiency in Endcap_Disk_m1;Blade;Panel", 26, -13., 13., 2, 0.5, 2.5);
1971 "HitEfficiency_Dm2",
"Hit Efficiency in Endcap_Disk_m2;;Blade;Panel", 26, -13., 13., 2, 0.5, 2.5);
1974 "HitEfficiency_Dp1",
"Hit Efficiency in Endcap_Disk_p1;Blades;Modules", 24, -12., 12., 7, 1., 8.);
1976 "HitEfficiency_Dp2",
"Hit Efficiency in Endcap_Disk_p2;Blades;Modules", 24, -12., 12., 7, 1., 8.);
1978 "HitEfficiency_Dm1",
"Hit Efficiency in Endcap_Disk_m1;Blades;Modules", 24, -12., 12., 7, 1., 8.);
1980 "HitEfficiency_Dm2",
"Hit Efficiency in Endcap_Disk_m2;Blades;Modules", 24, -12., 12., 7, 1., 8.);
1985 iBooker.
book2D(
"HitEfficiency_Dp1",
"Hit Efficiency in Endcap_Disk_p1;Blades;", 28, -17., 11., 1, 0., 1.);
1987 iBooker.
book2D(
"HitEfficiency_Dp2",
"Hit Efficiency in Endcap_Disk_p2;Blades;", 28, -17., 11., 1, 0., 1.);
1989 iBooker.
book2D(
"HitEfficiency_Dp3",
"Hit Efficiency in Endcap_Disk_p3;Blades;", 28, -17., 11., 1, 0., 1.);
1991 iBooker.
book2D(
"HitEfficiency_Dm1",
"Hit Efficiency in Endcap_Disk_m1;Blades;", 28, -17., 11., 1, 0., 1.);
1993 iBooker.
book2D(
"HitEfficiency_Dm2",
"Hit Efficiency in Endcap_Disk_m2;Blades;", 28, -17., 11., 1, 0., 1.);
1995 iBooker.
book2D(
"HitEfficiency_Dm3",
"Hit Efficiency in Endcap_Disk_m3;Blades;", 28, -17., 11., 1, 0., 1.);
1998 "HitEfficiency_Dp1",
"Hit Efficiency in Endcap_Disk_p1;Blades;Modules", 28, -17., 11., 2, 1., 3.);
2000 "HitEfficiency_Dp2",
"Hit Efficiency in Endcap_Disk_p2;Blades;Modules", 28, -17., 11., 2, 1., 3.);
2002 "HitEfficiency_Dp3",
"Hit Efficiency in Endcap_Disk_p3;Blades;Modules", 28, -17., 11., 2, 1., 3.);
2004 "HitEfficiency_Dm1",
"Hit Efficiency in Endcap_Disk_m1;Blades;Modules", 28, -17., 11., 2, 1., 3.);
2006 "HitEfficiency_Dm2",
"Hit Efficiency in Endcap_Disk_m2;Blades;Modules", 28, -17., 11., 2, 1., 3.);
2008 "HitEfficiency_Dm3",
"Hit Efficiency in Endcap_Disk_m3;Blades;Modules", 28, -17., 11., 2, 1., 3.);
2012 iBooker.
cd(
"Pixel/");
2013 string bins[] = {
"Layer1",
"Layer2",
"Layer3",
"Disk1+",
"Disk2+",
"Disk1-",
"Disk2-"};
2017 for (
int i = 1;
i < 8;
i++) {
2042 string lad = dname_.substr(dname_.find(
"Ladder_") + 7, 2);
2043 if (dname_.find(lad) != string::npos) {
2044 biny_ = atoi(lad.c_str());
2053 string blad = dname_.substr(dname_.find(
"Blade_") + 6, 2);
2054 if (dname_.find(blad) != string::npos) {
2055 binx_ = atoi(blad.c_str());
2067 string currDir = iBooker.
pwd();
2068 string dname = currDir.substr(currDir.find_last_of(
'/') + 1);
2072 if (isbarrel &&
dname.find(
"Ladder_") != string::npos) {
2074 vector<string> meVec = iGetter.
getMEs();
2075 for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
2076 string full_path = currDir +
"/" + (*it);
2078 if (full_path.find(
"missingMod_") != string::npos) {
2084 string new_path = full_path.replace(full_path.find(
"missing"), 7,
"valid");
2092 if (currDir.find(
"Shell_mO") != string::npos || currDir.find(
"Shell_pO") != string::npos) {
2096 for (
int i = 1;
i < nMod + 1;
i++) {
2097 float hitEfficiency = -1.0;
2098 float missingHits = 0;
2099 float validHits = 0;
2101 if (currDir.find(
"Shell_m") != string::npos)
2104 missingHits =
missing->getBinContent(
i);
2105 validHits =
valid->getBinContent(
i);
2106 if (validHits + missingHits > 0.)
2107 hitEfficiency = validHits / (validHits + missingHits);
2109 if (currDir.find(
"Layer_1") != string::npos) {
2113 (
float)hitEfficiency);
2114 }
else if (currDir.find(
"Layer_2") != string::npos) {
2118 (
float)hitEfficiency);
2119 }
else if (currDir.find(
"Layer_3") != string::npos) {
2123 (
float)hitEfficiency);
2130 vector<string> meVec = iGetter.
getMEs();
2131 for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
2132 string full_path = currDir +
"/" + (*it);
2133 if (full_path.find(
"missing_") != string::npos) {
2137 float missingHits =
me->getEntries();
2138 string new_path = full_path.replace(full_path.find(
"missing"), 7,
"valid");
2139 me = iGetter.
get(new_path);
2142 float validHits =
me->getEntries();
2143 float hitEfficiency = -1.;
2144 if (validHits + missingHits > 0.)
2145 hitEfficiency = validHits / (validHits + missingHits);
2149 if (currDir.find(
"Shell_mO") != string::npos || currDir.find(
"Shell_pO") != string::npos) {
2152 if (currDir.find(
"Shell_m") != string::npos) {
2157 if (currDir.find(
"Layer_1") != string::npos) {
2161 }
else if (currDir.find(
"Layer_2") != string::npos) {
2165 }
else if (currDir.find(
"Layer_3") != string::npos) {
2169 }
else if (currDir.find(
"Layer_4") != string::npos) {
2177 }
else if (!isbarrel &&
dname.find(
"Blade_") != string::npos && !
isUpgrade) {
2178 vector<string> meVec = iGetter.
getMEs();
2179 for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
2180 string full_path = currDir +
"/" + (*it);
2181 if (full_path.find(
"missing_") != string::npos) {
2186 string new_path = full_path.replace(full_path.find(
"missing"), 7,
"valid");
2194 if (currDir.find(
"HalfCylinder_mI") != string::npos || currDir.find(
"HalfCylinder_pI") != string::npos) {
2199 const int nPanel = 2;
2200 for (
int i = 1;
i < nPanel + 1;
i++) {
2201 float hitEfficiency = -1.;
2202 float missingHits = 0;
2203 float validHits = 0;
2205 missingHits =
missing->getBinContent(
i);
2206 validHits =
valid->getBinContent(
i);
2207 if (validHits + missingHits > 0.)
2208 hitEfficiency = validHits / (validHits + missingHits);
2209 if (currDir.find(
"Disk_1") != string::npos && currDir.find(
"HalfCylinder_m") != string::npos) {
2213 }
else if (currDir.find(
"Disk_2") != string::npos && currDir.find(
"HalfCylinder_m") != string::npos) {
2217 }
else if (currDir.find(
"Disk_1") != string::npos && currDir.find(
"HalfCylinder_p") != string::npos) {
2221 }
else if (currDir.find(
"Disk_2") != string::npos && currDir.find(
"HalfCylinder_p") != string::npos) {
2229 }
else if (!isbarrel &&
dname.find(
"Blade_") != string::npos &&
isUpgrade) {
2230 vector<string> meVec = iGetter.
getMEs();
2231 for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
2232 string full_path = currDir +
"/" + (*it);
2233 if (full_path.find(
"missing_") != string::npos) {
2237 float missingHits =
me->getEntries();
2238 string new_path = full_path.replace(full_path.find(
"missing"), 7,
"valid");
2239 me = iGetter.
get(new_path);
2242 float validHits =
me->getEntries();
2243 float hitEfficiency = -1.;
2244 if (validHits + missingHits > 0.)
2245 hitEfficiency = validHits / (validHits + missingHits);
2249 if (currDir.find(
"HalfCylinder_mI") != string::npos || currDir.find(
"HalfCylinder_pI") != string::npos) {
2270 else if (binx == 10)
2272 else if (binx == 11)
2274 else if (binx == 12)
2276 else if (binx == 13)
2278 else if (binx == 14)
2280 else if (binx == 15)
2282 else if (binx == 16)
2284 else if (binx == 17)
2287 if (currDir.find(
"Disk_1") != string::npos && currDir.find(
"HalfCylinder_m") != string::npos) {
2291 }
else if (currDir.find(
"Disk_2") != string::npos && currDir.find(
"HalfCylinder_m") != string::npos) {
2295 }
else if (currDir.find(
"Disk_3") != string::npos && currDir.find(
"HalfCylinder_m") != string::npos) {
2299 }
else if (currDir.find(
"Disk_1") != string::npos && currDir.find(
"HalfCylinder_p") != string::npos) {
2303 }
else if (currDir.find(
"Disk_2") != string::npos && currDir.find(
"HalfCylinder_p") != string::npos) {
2307 }
else if (currDir.find(
"Disk_3") != string::npos && currDir.find(
"HalfCylinder_p") != string::npos) {
2317 vector<string> subdirs = iGetter.
getSubdirs();
2318 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
2321 if (*it !=
"Pixel" &&
2322 ((isbarrel && (*it).find(
"Barrel") == string::npos) || (!isbarrel && (*it).find(
"Endcap") == string::npos)))
2330 if (
dname.find(
"Module_") != string::npos) {
2331 vector<string> meVec = iGetter.
getMEs();
2332 for (vector<string>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
2333 string full_path = currDir +
"/" + (*it);
2334 if (full_path.find(
"missing_") != string::npos) {
2338 float missingHits =
me->getEntries();
2339 string new_path = full_path.replace(full_path.find(
"missing"), 7,
"valid");
2340 me = iGetter.
get(new_path);
2343 float validHits =
me->getEntries();
2344 float hitEfficiency = -1.;
2345 if (validHits + missingHits > 0.)
2346 hitEfficiency = validHits / (validHits + missingHits);
2350 if (currDir.find(
"Shell_m") != string::npos) {
2351 if (currDir.find(
"Module_4") != string::npos) {
2353 }
else if (currDir.find(
"Module_3") != string::npos) {
2356 if (currDir.find(
"Module_2") != string::npos) {
2358 }
else if (currDir.find(
"Module_1") != string::npos) {
2361 }
else if (currDir.find(
"Shell_p") != string::npos) {
2362 if (currDir.find(
"Module_1") != string::npos) {
2364 }
else if (currDir.find(
"Module_2") != string::npos) {
2367 if (currDir.find(
"Module_3") != string::npos) {
2369 }
else if (currDir.find(
"Module_4") != string::npos) {
2374 if (currDir.find(
"01") != string::npos) {
2376 }
else if (currDir.find(
"02") != string::npos) {
2378 }
else if (currDir.find(
"03") != string::npos) {
2380 }
else if (currDir.find(
"04") != string::npos) {
2382 }
else if (currDir.find(
"05") != string::npos) {
2384 }
else if (currDir.find(
"06") != string::npos) {
2386 }
else if (currDir.find(
"07") != string::npos) {
2388 }
else if (currDir.find(
"08") != string::npos) {
2390 }
else if (currDir.find(
"09") != string::npos) {
2392 }
else if (currDir.find(
"10") != string::npos) {
2394 }
else if (currDir.find(
"11") != string::npos) {
2396 }
else if (currDir.find(
"12") != string::npos) {
2398 }
else if (currDir.find(
"13") != string::npos) {
2400 }
else if (currDir.find(
"14") != string::npos) {
2402 }
else if (currDir.find(
"15") != string::npos) {
2404 }
else if (currDir.find(
"16") != string::npos) {
2406 }
else if (currDir.find(
"17") != string::npos) {
2408 }
else if (currDir.find(
"18") != string::npos) {
2410 }
else if (currDir.find(
"19") != string::npos) {
2412 }
else if (currDir.find(
"20") != string::npos) {
2414 }
else if (currDir.find(
"21") != string::npos) {
2416 }
else if (currDir.find(
"22") != string::npos) {
2419 if (currDir.find(
"Shell_mO") != string::npos || currDir.find(
"Shell_pO") != string::npos) {
2420 if (currDir.find(
"Layer_1") != string::npos) {
2422 }
else if (currDir.find(
"Layer_2") != string::npos) {
2424 }
else if (currDir.find(
"Layer_3") != string::npos) {
2429 if (currDir.find(
"01") != string::npos) {
2431 }
else if (currDir.find(
"02") != string::npos) {
2433 }
else if (currDir.find(
"03") != string::npos) {
2435 }
else if (currDir.find(
"04") != string::npos) {
2437 }
else if (currDir.find(
"05") != string::npos) {
2439 }
else if (currDir.find(
"06") != string::npos) {
2441 }
else if (currDir.find(
"07") != string::npos) {
2443 }
else if (currDir.find(
"08") != string::npos) {
2445 }
else if (currDir.find(
"09") != string::npos) {
2447 }
else if (currDir.find(
"10") != string::npos) {
2449 }
else if (currDir.find(
"11") != string::npos) {
2451 }
else if (currDir.find(
"12") != string::npos) {
2453 }
else if (currDir.find(
"13") != string::npos) {
2455 }
else if (currDir.find(
"14") != string::npos) {
2457 }
else if (currDir.find(
"15") != string::npos) {
2459 }
else if (currDir.find(
"16") != string::npos) {
2461 }
else if (currDir.find(
"17") != string::npos) {
2463 }
else if (currDir.find(
"18") != string::npos) {
2465 }
else if (currDir.find(
"19") != string::npos) {
2467 }
else if (currDir.find(
"20") != string::npos) {
2469 }
else if (currDir.find(
"21") != string::npos) {
2471 }
else if (currDir.find(
"22") != string::npos) {
2473 }
else if (currDir.find(
"23") != string::npos) {
2475 }
else if (currDir.find(
"24") != string::npos) {
2477 }
else if (currDir.find(
"25") != string::npos) {
2479 }
else if (currDir.find(
"25") != string::npos) {
2481 }
else if (currDir.find(
"26") != string::npos) {
2483 }
else if (currDir.find(
"27") != string::npos) {
2485 }
else if (currDir.find(
"28") != string::npos) {
2487 }
else if (currDir.find(
"29") != string::npos) {
2489 }
else if (currDir.find(
"30") != string::npos) {
2491 }
else if (currDir.find(
"31") != string::npos) {
2493 }
else if (currDir.find(
"32") != string::npos) {
2496 if (currDir.find(
"Shell_mO") != string::npos || currDir.find(
"Shell_pO") != string::npos) {
2497 if (currDir.find(
"Layer_1") != string::npos) {
2499 }
else if (currDir.find(
"Layer_2") != string::npos) {
2501 }
else if (currDir.find(
"Layer_3") != string::npos) {
2503 }
else if (currDir.find(
"Layer_4") != string::npos) {
2510 if (currDir.find(
"01") != string::npos) {
2512 }
else if (currDir.find(
"02") != string::npos) {
2514 }
else if (currDir.find(
"03") != string::npos) {
2516 }
else if (currDir.find(
"04") != string::npos) {
2518 }
else if (currDir.find(
"05") != string::npos) {
2520 }
else if (currDir.find(
"06") != string::npos) {
2522 }
else if (currDir.find(
"07") != string::npos) {
2524 }
else if (currDir.find(
"08") != string::npos) {
2526 }
else if (currDir.find(
"09") != string::npos) {
2528 }
else if (currDir.find(
"10") != string::npos) {
2530 }
else if (currDir.find(
"11") != string::npos) {
2532 }
else if (currDir.find(
"12") != string::npos) {
2535 if (currDir.find(
"HalfCylinder_mO") != string::npos || currDir.find(
"HalfCylinder_pO") != string::npos) {
2538 if (currDir.find(
"Panel_1/Module_1") != string::npos) {
2540 }
else if (currDir.find(
"Panel_2/Module_1") != string::npos) {
2542 }
else if (currDir.find(
"Panel_1/Module_2") != string::npos) {
2544 }
else if (currDir.find(
"Panel_2/Module_2") != string::npos) {
2546 }
else if (currDir.find(
"Panel_1/Module_3") != string::npos) {
2548 }
else if (currDir.find(
"Panel_2/Module_3") != string::npos) {
2550 }
else if (currDir.find(
"Panel_1/Module_4") != string::npos) {
2554 if (currDir.find(
"01") != string::npos) {
2556 }
else if (currDir.find(
"02") != string::npos) {
2558 }
else if (currDir.find(
"03") != string::npos) {
2560 }
else if (currDir.find(
"04") != string::npos) {
2562 }
else if (currDir.find(
"05") != string::npos) {
2564 }
else if (currDir.find(
"06") != string::npos) {
2566 }
else if (currDir.find(
"07") != string::npos) {
2568 }
else if (currDir.find(
"08") != string::npos) {
2570 }
else if (currDir.find(
"09") != string::npos) {
2572 }
else if (currDir.find(
"10") != string::npos) {
2574 }
else if (currDir.find(
"11") != string::npos) {
2576 }
else if (currDir.find(
"12") != string::npos) {
2578 }
else if (currDir.find(
"13") != string::npos) {
2580 }
else if (currDir.find(
"14") != string::npos) {
2582 }
else if (currDir.find(
"15") != string::npos) {
2584 }
else if (currDir.find(
"16") != string::npos) {
2586 }
else if (currDir.find(
"17") != string::npos) {
2589 if (currDir.find(
"HalfCylinder_mO") != string::npos || currDir.find(
"HalfCylinder_pO") != string::npos) {
2592 if (currDir.find(
"Panel_1/Module_1") != string::npos) {
2594 }
else if (currDir.find(
"Panel_2/Module_1") != string::npos) {
2600 if (currDir.find(
"Layer_1") != string::npos) {
2604 }
else if (currDir.find(
"Layer_2") != string::npos) {
2608 }
else if (currDir.find(
"Layer_3") != string::npos) {
2612 }
else if (
isUpgrade && (currDir.find(
"Layer_4") != string::npos)) {
2616 }
else if (currDir.find(
"Disk_1") != string::npos && currDir.find(
"HalfCylinder_m") != string::npos) {
2620 }
else if (currDir.find(
"Disk_2") != string::npos && currDir.find(
"HalfCylinder_m") != string::npos) {
2624 }
else if (currDir.find(
"Disk_3") != string::npos && currDir.find(
"HalfCylinder_m") != string::npos) {
2628 }
else if (currDir.find(
"Disk_1") != string::npos && currDir.find(
"HalfCylinder_p") != string::npos) {
2632 }
else if (currDir.find(
"Disk_2") != string::npos && currDir.find(
"HalfCylinder_p") != string::npos) {
2636 }
else if (currDir.find(
"Disk_3") != string::npos && currDir.find(
"HalfCylinder_p") != string::npos) {
2645 vector<string> subdirs = iGetter.
getSubdirs();
2646 for (vector<string>::const_iterator it = subdirs.begin(); it != subdirs.end(); it++) {
2649 if (*it !=
"Pixel" &&
2650 ((isbarrel && (*it).find(
"Barrel") == string::npos) || (!isbarrel && (*it).find(
"Endcap") == string::npos)))
2671 string hitEfficiencyPostfix[] = {
"L1",
"L2",
"L3",
"Dp1",
"Dp2",
"Dm1",
"Dm2"};
2672 std::vector<std::vector<float>> ignoreXBins = {
2673 {-4, 2}, {4, 4, -1, -3, 3, -4, -3, -2, -1, -4, -3, -2, -1, 1, -4}, {1, -4, 1}, {}, {}, {}, {}};
2674 std::vector<std::vector<float>> ignoreYBins = {
2675 {-9, -3}, {1, 16, 1, -13, -13, -5, -5, -5, -5, -6, -6, -6, -6, -8, -8}, {3, 14, 6}, {}, {}, {}, {}};
2677 for (
int i = 0;
i < 7;
i++) {
2678 string subdetName =
"Endcap/";
2680 subdetName =
"Barrel/";
2682 sprintf(meName,
"Pixel/%sHitEfficiency_%s", subdetName.c_str(), hitEfficiencyPostfix[
i].c_str());
2684 float totalEff = 0.;
2686 TH1 *hitEffMap = tempHitEffMap->
getTH1();
2687 for (
int xBin = 1;
xBin < tempHitEffMap->getNbinsX() + 1;
xBin++) {
2688 if (fabs(hitEffMap->GetXaxis()->GetBinCenter(
xBin)) < 1.)
2690 for (
int yBin = 1;
yBin < tempHitEffMap->getNbinsY() + 1;
yBin++) {
2691 if (fabs(hitEffMap->GetYaxis()->GetBinCenter(
yBin)) < 0.5)
2694 for (
unsigned int j = 0;
j < ignoreXBins[
i].size();
j++) {
2695 if (hitEffMap->GetXaxis()->GetBinCenter(
xBin) == ignoreXBins[
i][
j] &&
2696 hitEffMap->GetYaxis()->GetBinCenter(
yBin) == ignoreYBins[
i][
j]) {
2703 if (!(tempHitEffMap->getBinContent(
xBin,
yBin) < 0.))
2704 totalEff += tempHitEffMap->getBinContent(
xBin,
yBin);
2708 float overalEff = 0.;
2711 overalEff = totalEff /
float(totalBins);