From beb2941fabf0d3b0e1d75158ce756ef5cf76d922 Mon Sep 17 00:00:00 2001 From: mmusich Date: Tue, 26 Apr 2022 12:05:31 +0200 Subject: [PATCH 1/6] add fillDescriptions methods for SiStripHitEfficiency(Worker|Harvester).cc --- .../plugins/SiStripHitEfficiencyHarvester.cc | 18 +++++++++ .../plugins/SiStripHitEfficiencyWorker.cc | 38 +++++++++++++++++-- .../test/testHitEffHarvester.py | 4 +- 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc index 0e7518b58a8c7..e2d9db115523c 100644 --- a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc +++ b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc @@ -10,6 +10,10 @@ #include "DQMServices/Core/interface/DQMEDHarvester.h" #include "FWCore/Framework/interface/ESWatcher.h" #include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterDescription.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/ServiceRegistry/interface/Service.h" #include "Geometry/CommonDetUnit/interface/GeomDet.h" #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" @@ -30,6 +34,7 @@ class SiStripHitEfficiencyHarvester : public DQMEDHarvester { public: explicit SiStripHitEfficiencyHarvester(const edm::ParameterSet&); ~SiStripHitEfficiencyHarvester() override = default; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); void endRun(edm::Run const&, edm::EventSetup const&) override; void dqmEndJob(DQMStore::IBooker&, DQMStore::IGetter&) override; @@ -578,5 +583,18 @@ void SiStripHitEfficiencyHarvester::printAndWriteBadModules(const SiStripQuality badModules.close(); } +void SiStripHitEfficiencyHarvester::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("doStoreOnDB", false); + desc.add("Record", "SiStripBadStrip"); + desc.add("Threshold", 0.1); + desc.add("Title", "Hit Efficiency"); + desc.add("nModsMin", 5); + desc.addUntracked("AutoIneffModTagging", false); + desc.addUntracked("TkMapMin", 0.9); + desc.addUntracked("ShowRings", false); + descriptions.addWithDefaultLabel(desc); +} + #include "FWCore/Framework/interface/MakerMacros.h" DEFINE_FWK_MODULE(SiStripHitEfficiencyHarvester); diff --git a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc index 35f808aec84af..f6e72269b24cc 100644 --- a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc +++ b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc @@ -9,8 +9,8 @@ #include "CalibFormats/SiStripObjects/interface/SiStripQuality.h" #include "CalibTracker/Records/interface/SiStripQualityRcd.h" -#include "CalibTracker/SiStripHitEfficiency/interface/TrajectoryAtInvalidHit.h" #include "CalibTracker/SiStripHitEfficiency/interface/SiStripHitEfficiencyHelpers.h" +#include "CalibTracker/SiStripHitEfficiency/interface/TrajectoryAtInvalidHit.h" #include "DQM/SiStripCommon/interface/TkHistoMap.h" #include "DQMServices/Core/interface/DQMEDAnalyzer.h" #include "DataFormats/Common/interface/DetSetVector.h" @@ -35,7 +35,10 @@ #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterDescription.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "Geometry/CommonDetUnit/interface/GeomDet.h" #include "Geometry/CommonDetUnit/interface/GeomDetType.h" #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" @@ -58,6 +61,7 @@ class SiStripHitEfficiencyWorker : public DQMEDAnalyzer { public: explicit SiStripHitEfficiencyWorker(const edm::ParameterSet& conf); ~SiStripHitEfficiencyWorker() override = default; + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); private: void beginJob(); // TODO remove @@ -904,7 +908,35 @@ void SiStripHitEfficiencyWorker::endJob() { LogDebug("SiStripHitEfficiencyWorker") << " Number Of Tracked events " << EventTrackCKF; } +void SiStripHitEfficiencyWorker::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("lumiScalers", edm::InputTag{"scalersRawToDigi"}); + desc.add("commonMode", edm::InputTag{"siStripDigis", "CommonMode"}); + desc.add("combinatorialTracks", edm::InputTag{"generalTracks"}); + desc.add("trajectories", edm::InputTag{"generalTracks"}); + desc.add("siStripClusters", edm::InputTag{"siStripClusters"}); + desc.add("siStripDigis", edm::InputTag{"siStripDigis"}); + desc.add("trackerEvent", edm::InputTag{"MeasurementTrackerEvent"}); + desc.add("Layer", 0); + desc.add("Debug", false); + desc.addUntracked("addLumi", true); + desc.addUntracked("addCommonMode", false); + desc.addUntracked("cutOnTracks", false); + desc.addUntracked("trackMultiplicity", 100); + desc.addUntracked("useFirstMeas", false); + desc.addUntracked("useLastMeas", false); + desc.addUntracked("useAllHitsFromTracksWithMissingHits", false); + desc.addUntracked("ClusterMatchingMethod", 0); + desc.addUntracked("ResXSig", -1); + desc.addUntracked("ClusterTrajDist", 64.0); + desc.addUntracked("StripsApvEdge", 10.0); + desc.addUntracked("UseOnlyHighPurityTracks", true); + desc.addUntracked("BunchCrossing", 0); + desc.addUntracked("ShowRings", false); + desc.addUntracked("ShowTOB6TEC9", false); + desc.addUntracked("BadModulesFile", ""); + descriptions.addWithDefaultLabel(desc); +} + #include "FWCore/Framework/interface/MakerMacros.h" DEFINE_FWK_MODULE(SiStripHitEfficiencyWorker); - -// TODO next: try to run this diff --git a/CalibTracker/SiStripHitEfficiency/test/testHitEffHarvester.py b/CalibTracker/SiStripHitEfficiency/test/testHitEffHarvester.py index 84635e7d14654..e6c9edfb363db 100644 --- a/CalibTracker/SiStripHitEfficiency/test/testHitEffHarvester.py +++ b/CalibTracker/SiStripHitEfficiency/test/testHitEffHarvester.py @@ -35,9 +35,7 @@ doStoreOnDB = cms.bool(True), ShowRings = cms.untracked.bool(False), # default False TkMapMin = cms.untracked.double(0.90), # default 0.90 - EffPlotMin = cms.untracked.double(0.90), # default 0.90 - Title = cms.string(' Hit Efficiency - run {0:d}'.format(runNumber)) - ) + Title = cms.string(' Hit Efficiency - run {0:d}'.format(runNumber))) process.load("DQM.SiStripCommon.TkHistoMap_cff") From c00528e590e35f84bb24239584a719ca6279c461 Mon Sep 17 00:00:00 2001 From: mmusich Date: Tue, 26 Apr 2022 13:15:21 +0200 Subject: [PATCH 2/6] adjust the output DQM folder in worker and harvester --- .../plugins/SiStripHitEfficiencyHarvester.cc | 8 ++++---- .../plugins/SiStripHitEfficiencyWorker.cc | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc index e2d9db115523c..7cff99df57cc1 100644 --- a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc +++ b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc @@ -111,9 +111,9 @@ void SiStripHitEfficiencyHarvester::dqmEndJob(DQMStore::IBooker& booker, DQMStor edm::Service fs; auto h_module_total = std::make_unique(tkDetMap_.get()); - h_module_total->loadTkHistoMap("SiStrip/HitEfficiency", "perModule_total"); + h_module_total->loadTkHistoMap("AlCaReco/SiStripHitEfficiency", "perModule_total"); auto h_module_found = std::make_unique(tkDetMap_.get()); - h_module_found->loadTkHistoMap("SiStrip/HitEfficiency", "perModule_found"); + h_module_found->loadTkHistoMap("AlCaReco/SiStripHitEfficiency", "perModule_found"); LogDebug("SiStripHitEfficiencyHarvester") << "Entries in total TkHistoMap for layer 3: " << h_module_total->getMap(3)->getEntries() << ", found " << h_module_found->getMap(3)->getEntries(); @@ -338,8 +338,8 @@ void SiStripHitEfficiencyHarvester::makeSummaryVsBX(DQMStore::IGetter& getter, T void SiStripHitEfficiencyHarvester::makeSummaryVsLumi(DQMStore::IGetter& getter, TFileService& fs) const { for (unsigned int iLayer = 1; iLayer != (showRings_ ? 20 : 22); ++iLayer) { - auto hfound = getter.get(fmt::format("SiStrip/HitEfficiency/layerfound_vsLumi_layer_{}", iLayer))->getTH1F(); - auto htotal = getter.get(fmt::format("SiStrip/HitEfficiency/layertotal_vsLumi_layer_{}", iLayer))->getTH1F(); + auto hfound = getter.get(fmt::format("AlCaReco/SiStripHitEfficiency/layerfound_vsLumi_layer_{}", iLayer))->getTH1F(); + auto htotal = getter.get(fmt::format("AlCaReco/SiStripHitEfficiency/layertotal_vsLumi_layer_{}", iLayer))->getTH1F(); if (!hfound->GetSumw2()) hfound->Sumw2(); if (!htotal->GetSumw2()) diff --git a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc index f6e72269b24cc..e1ad3782dad42 100644 --- a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc +++ b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc @@ -250,7 +250,7 @@ void SiStripHitEfficiencyWorker::beginJob() { void SiStripHitEfficiencyWorker::bookHistograms(DQMStore::IBooker& booker, const edm::Run& run, const edm::EventSetup& setup) { - const std::string path = "SiStrip/HitEfficiency"; // TODO make this configurable + const std::string path = "AlCaReco/SiStripHitEfficiency"; // TODO make this configurable booker.setCurrentFolder(path); h_bx = booker.book1D("bx", "bx", 3600, 0, 3600); h_instLumi = booker.book1D("instLumi", "inst. lumi.", 250, 0, 25000); From c529d0f83106ffef0a9d8672c0eaee03ddbaefc2 Mon Sep 17 00:00:00 2001 From: mmusich Date: Tue, 26 Apr 2022 14:02:38 +0200 Subject: [PATCH 3/6] add necessary configuration files for PCL workflow and correlated unit tests --- ...alibProdSiStripHitEfficiency_Output_cff.py | 10 +++ ...PromptCalibProdSiStripHitEfficiency_cff.py | 87 +++++++++++++++++++ .../AlcaSiStripHitEfficiencyHarvester_cff.py | 16 ++++ .../AlcaSiStripHitEfficiencyHarvester_cfi.py | 15 ++++ .../test/parseFwkJobReport.py | 27 ++++-- .../test/testPCLAlCaHarvesting.py | 5 ++ Configuration/AlCa/python/autoPCL.py | 1 + .../EventContent/python/AlCaRecoOutput_cff.py | 1 + .../python/relval_production.py | 3 +- .../python/relval_steps.py | 10 ++- .../python/AlCaHarvesting_cff.py | 13 ++- .../python/AlCaRecoStreams_cff.py | 11 +++ 12 files changed, 189 insertions(+), 10 deletions(-) create mode 100644 Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_Output_cff.py create mode 100644 Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_cff.py create mode 100644 Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cff.py create mode 100644 Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cfi.py diff --git a/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_Output_cff.py b/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_Output_cff.py new file mode 100644 index 0000000000000..9c62387d6c0aa --- /dev/null +++ b/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_Output_cff.py @@ -0,0 +1,10 @@ +import FWCore.ParameterSet.Config as cms + +OutALCARECOPromptCalibProdSiStripHitEfficiency_noDrop = cms.PSet( + SelectEvents = cms.untracked.PSet( + SelectEvents = cms.vstring('pathALCARECOPromptCalibProdSiStripHitEfficiency')), + outputCommands = cms.untracked.vstring('keep *_MEtoEDMConvertSiStripHitEff_*_*')) + +import copy +OutALCARECOPromptCalibProdSiStripHitEfficiency=copy.deepcopy(OutALCARECOPromptCalibProdSiStripHitEfficiency_noDrop) +OutALCARECOPromptCalibProdSiStripHitEfficiency.outputCommands.insert(0, "drop *") diff --git a/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_cff.py b/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_cff.py new file mode 100644 index 0000000000000..d1cfbab1cb6e6 --- /dev/null +++ b/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_cff.py @@ -0,0 +1,87 @@ +import FWCore.ParameterSet.Config as cms + +# ------------------------------------------------------------------------------ +# configure a filter to run only on the events selected by TkAlMinBias AlcaReco +import copy +from HLTrigger.HLTfilters.hltHighLevel_cfi import * +ALCARECOCalMinBiasFilterForSiStripHitEff = copy.deepcopy(hltHighLevel) +ALCARECOCalMinBiasFilterForSiStripHitEff.HLTPaths = ['pathALCARECOSiStripCalMinBias'] +ALCARECOCalMinBiasFilterForSiStripHitEff.throw = True ## dont throw on unknown path names +ALCARECOCalMinBiasFilterForSiStripHitEff.TriggerResultsTag = cms.InputTag("TriggerResults","","RECO") + +# ------------------------------------------------------------------------------ +# This is the sequence for track refitting of the track saved by SiStripCalMinBias +# to have access to transient objects produced during RECO step and not saved +from Alignment.CommonAlignmentProducer.AlignmentTrackSelector_cfi import * +ALCARECOMonitoringTracks = AlignmentTrackSelector.clone( + # src = 'generalTracks', + src = 'ALCARECOSiStripCalMinBias', + filter = True, + applyBasicCuts = True, + ptMin = 0.8, + nHitMin = 6, + chi2nMax = 10.) + +# FIXME: the beam-spot should be kept in the AlCaReco (if not already there) and dropped from here +from RecoVertex.BeamSpotProducer.BeamSpot_cff import * +from RecoTracker.IterativeTracking.InitialStep_cff import * +from RecoTracker.Configuration.RecoTrackerP5_cff import * +from RecoTracker.TrackProducer.TrackRefitter_cfi import * +from DQM.SiStripCommon.TkHistoMap_cff import * +from RecoTracker.MeasurementDet.MeasurementTrackerEventProducer_cfi import * + +ALCARECOMonitoringTracksRefit = TrackRefitter.clone(src = cms.InputTag("ALCARECOMonitoringTracks"), + NavigationSchool = cms.string("") + ) + +# ------------------------------------------------------------------------------ +# refit and BS can be dropped if done together with RECO. +# track filter can be moved in acalreco if no otehr users +ALCARECOTrackFilterRefit = cms.Sequence(ALCARECOMonitoringTracks + + MeasurementTrackerEvent + + offlineBeamSpot + + ALCARECOMonitoringTracksRefit) + +# ------------------------------------------------------------------------------ +# This is the module actually doing the calibration +from CalibTracker.SiStripHitEfficiency.siStripHitEfficiencyWorker_cfi import siStripHitEfficiencyWorker +ALCARECOSiStripHitEff = siStripHitEfficiencyWorker.clone( + lumiScalers=cms.InputTag("scalersRawToDigi"), + addLumi = cms.untracked.bool(True), + commonMode=cms.InputTag("siStripDigis", "CommonMode"), + addCommonMode=cms.untracked.bool(False), + combinatorialTracks = "ALCARECOMonitoringTracksRefit", + trajectories = "ALCARECOMonitoringTracksRefit", + siStripClusters = cms.InputTag("siStripClusters"), + siStripDigis = cms.InputTag("siStripDigis"), + trackerEvent = cms.InputTag("MeasurementTrackerEvent"), + # part 2 + Layer = cms.int32(0), # =0 means do all layers + Debug = cms.bool(True), + # do not cut on the total number of tracks + cutOnTracks = cms.untracked.bool(True), + trackMultiplicity = cms.untracked.uint32(100), + # use or not first and last measurement of a trajectory (biases), default is false + useFirstMeas = cms.untracked.bool(False), + useLastMeas = cms.untracked.bool(False), + useAllHitsFromTracksWithMissingHits = cms.untracked.bool(False), + ## non-default settings + ClusterMatchingMethod = cms.untracked.int32(4), # default 0 case0,1,2,3,4 + ClusterTrajDist = cms.untracked.double(15), # default 64 +) + +# ---------------------------------------------------------------------------- +MEtoEDMConvertSiStripHitEff = cms.EDProducer("MEtoEDMConverter", + Name = cms.untracked.string('MEtoEDMConverter'), + Verbosity = cms.untracked.int32(0), # 0 provides no output + # 1 provides basic output + # 2 provide more detailed output + Frequency = cms.untracked.int32(50), + MEPathToSave = cms.untracked.string('AlCaReco/SiStripHitEfficiency')) + +# The actual sequence +seqALCARECOPromptCalibProdSiStripHitEfficiency = cms.Sequence( + ALCARECOCalMinBiasFilterForSiStripHitEff * + ALCARECOTrackFilterRefit * + ALCARECOSiStripHitEff * + MEtoEDMConvertSiStripHitEff) diff --git a/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cff.py b/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cff.py new file mode 100644 index 0000000000000..b02607a4d830a --- /dev/null +++ b/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cff.py @@ -0,0 +1,16 @@ +import FWCore.ParameterSet.Config as cms + +from Calibration.TkAlCaRecoProducers.AlcaSiStripHitEfficiencyHarvester_cfi import * +from DQMServices.Components.EDMtoMEConverter_cfi import * + +EDMtoMEConvertSiStripHitEfficiency = EDMtoMEConverter.clone( + lumiInputTag = ("MEtoEDMConvertSiStripHitEff","MEtoEDMConverterLumi"), + runInputTag = ("MEtoEDMConvertSiStripHitEff","MEtoEDMConverterRun") +) + +DQMStore = cms.Service("DQMStore") +from DQMServices.Core.DQMEDHarvester import DQMEDHarvester +dqmEnvSiStripHitEfficiency = DQMEDHarvester('DQMHarvestingMetadata', + subSystemFolder = cms.untracked.string('AlCaReco')) + +ALCAHARVESTSiStripHitEfficiency = cms.Sequence(EDMtoMEConvertSiStripHitEfficiency + alcasiStripHitEfficiencyHarvester + dqmEnvSiStripHitEfficiency) diff --git a/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cfi.py b/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cfi.py new file mode 100644 index 0000000000000..4f87fc73745f1 --- /dev/null +++ b/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cfi.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +from DQM.SiStripCommon.TkHistoMap_cff import * +from CalibTracker.SiStripHitEfficiency.siStripHitEfficiencyHarvester_cfi import siStripHitEfficiencyHarvester +alcasiStripHitEfficiencyHarvester = siStripHitEfficiencyHarvester.clone( + isAtPCL = cms.bool(True), + Threshold = cms.double(0.1), + nModsMin = cms.int32(5), + AutoIneffModTagging = cms.untracked.bool(True), # default true, automatic limit for each layer to identify inefficient modules + Record = cms.string('SiStripBadStripFromHitEffRcd'), + doStoreOnDB = cms.bool(True), + ShowRings = cms.untracked.bool(False), # default False + TkMapMin = cms.untracked.double(0.90), # default 0.90 + #EffPlotMin = cms.untracked.double(0.90), # default 0.90 + Title = cms.string('SiStrip Hit Efficiency Map')) diff --git a/Calibration/TkAlCaRecoProducers/test/parseFwkJobReport.py b/Calibration/TkAlCaRecoProducers/test/parseFwkJobReport.py index f579c8ecbfca9..bd8f552e7ff34 100644 --- a/Calibration/TkAlCaRecoProducers/test/parseFwkJobReport.py +++ b/Calibration/TkAlCaRecoProducers/test/parseFwkJobReport.py @@ -3,12 +3,22 @@ import sys ## declare all constants here -TARGET_LIST_OF_TAGS=['BeamSpotObject_ByLumi', 'BeamSpotObject_ByRun', 'BeamSpotObjectHP_ByLumi', 'BeamSpotObjectHP_ByRun', - 'SiPixelLA_pcl', 'SiPixelQualityFromDbRcd_other', 'SiPixelQualityFromDbRcd_prompt', 'SiPixelQualityFromDbRcd_stuckTBM', - 'SiStripApvGain_pcl', 'SiStripApvGainAAG_pcl', 'SiStripBadStrip_pcl', 'SiPixelAli_pcl'] +TARGET_LIST_OF_TAGS=['BeamSpotObject_ByLumi', # beamspot + 'BeamSpotObject_ByRun', + 'BeamSpotObjectHP_ByLumi', + 'BeamSpotObjectHP_ByRun', + 'SiPixelLA_pcl', # SiPixel + 'SiPixelQualityFromDbRcd_other', + 'SiPixelQualityFromDbRcd_prompt', + 'SiPixelQualityFromDbRcd_stuckTBM', + 'SiStripApvGain_pcl', # SiStrip + 'SiStripApvGainAAG_pcl', + 'SiStripBadStrip_pcl', + 'SiStripBadStripRcdHitEff_pcl', + 'SiPixelAli_pcl'] #Alignment TARGET_DQM_FILES=1 TARGET_DQM_FILENAME='./DQM_V0001_R000325022__Express__PCLTest__ALCAPROMPT.root' -TARGET_DB_FILES=12 +TARGET_DB_FILES=len(TARGET_LIST_OF_TAGS) TARGET_DB_FILENAME='sqlite_file:testPCLAlCaHarvesting.db' TARGET_XML_FILENAME='testPCLAlCaHarvesting.xml' TOTAL_TARGET_FILES=TARGET_DQM_FILES+TARGET_DB_FILES @@ -25,7 +35,7 @@ def parseXML(xmlfile): totAnaEntries=len(root.findall('AnalysisFile')) if(totAnaEntries!=TOTAL_TARGET_FILES): - print("ERROR: found a not expected number (",totAnaEntries,") of AnalysisFile entries in the FrameworkJobReport.xml") + print("ERROR: found a not expected number (",totAnaEntries,") of AnalysisFile entries in the FrameworkJobReport.xml, expecting",TOTAL_TARGET_FILES) return -1 listOfInputTags=[] @@ -55,8 +65,15 @@ def parseXML(xmlfile): print("ERROR! Found an uexpected number of DQM files (",countDQMfiles,")") return -1 + ## first sort to avoid spurious false positives + listOfInputTags.sort() + TARGET_LIST_OF_TAGS.sort() + ## That's strict! if(listOfInputTags!=TARGET_LIST_OF_TAGS): + print(" list of input tags found in file:",listOfInputTags) + print(" target list of tags:",TARGET_LIST_OF_TAGS) + if (listOfInputTags>TARGET_LIST_OF_TAGS): print("ERROR!\n This ",[x for x in TARGET_LIST_OF_TAGS if x not in listOfInputTags]," is the set of expected tags not found in the FwdJobReport!") else: diff --git a/Calibration/TkAlCaRecoProducers/test/testPCLAlCaHarvesting.py b/Calibration/TkAlCaRecoProducers/test/testPCLAlCaHarvesting.py index d3108c904b854..28c1d76e187a8 100644 --- a/Calibration/TkAlCaRecoProducers/test/testPCLAlCaHarvesting.py +++ b/Calibration/TkAlCaRecoProducers/test/testPCLAlCaHarvesting.py @@ -80,6 +80,7 @@ def findRunStopTime(run_number): process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiStripQuality_dbOutput) process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiStripGains_dbOutput) process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiStripGainsAAG_dbOutput ) +process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiStripHitEff_dbOutput) process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiPixelAli_dbOutput) process.PoolDBOutputService.toPut.append(process.ALCAHARVESTSiPixelLA_dbOutput) process.PoolDBOutputService.toPut.extend(process.ALCAHARVESTSiPixelQuality_dbOutput) @@ -99,6 +100,7 @@ def findRunStopTime(run_number): process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiStripQuality_metadata) process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiStripGains_metadata ) process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiStripGainsAAG_metadata) +process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiStripHitEff_metadata) process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiPixelAli_metadata) process.pclMetadataWriter.recordsToMap.append(process.ALCAHARVESTSiPixelLA_metadata) process.pclMetadataWriter.recordsToMap.extend(process.ALCAHARVESTSiPixelQuality_metadata) @@ -127,6 +129,8 @@ def findRunStopTime(run_number): process.alcaSiStripGainsAAGHarvester.GoodFracForTagProd=0 process.alcaSiStripGainsAAGHarvester.NClustersForTagProd=0 +process.SiStripHitEff = cms.Path(process.ALCAHARVESTSiStripHitEfficiency) + process.SiPixelAli = cms.Path(process.ALCAHARVESTSiPixelAli) process.SiPixelAliMilleFileExtractor.outputBinaryFile = cms.string('') process.SiPixelAliPedeAlignmentProducer.algoConfig.mergeBinaryFiles=[] @@ -145,6 +149,7 @@ def findRunStopTime(run_number): process.schedule = cms.Schedule(process.SiStripQuality, process.SiStripGains, process.SiStripGainsAAG, + process.SiStripHitEff, process.SiPixelAli, process.SiPixelLA, process.SiPixelQuality, diff --git a/Configuration/AlCa/python/autoPCL.py b/Configuration/AlCa/python/autoPCL.py index 170f4ff8fca68..4eac6ec8ffb25 100644 --- a/Configuration/AlCa/python/autoPCL.py +++ b/Configuration/AlCa/python/autoPCL.py @@ -4,6 +4,7 @@ 'PromptCalibProdSiStrip' : 'SiStripQuality', 'PromptCalibProdSiStripGains' : 'SiStripGains', 'PromptCalibProdSiStripGainsAAG' : 'SiStripGainsAAG', + 'PromptCalibProdSiStripHitEfficiency' : 'SiStripHitEff', 'PromptCalibProdSiPixelAli' : 'SiPixelAli', 'PromptCalibProdSiPixel' : 'SiPixelQuality', 'PromptCalibProdSiPixelLorentzAngle' : 'SiPixelLA', diff --git a/Configuration/EventContent/python/AlCaRecoOutput_cff.py b/Configuration/EventContent/python/AlCaRecoOutput_cff.py index 1641261b95e4b..40ed276b523da 100644 --- a/Configuration/EventContent/python/AlCaRecoOutput_cff.py +++ b/Configuration/EventContent/python/AlCaRecoOutput_cff.py @@ -162,6 +162,7 @@ from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStrip_Output_cff import * from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStripGains_Output_cff import * from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStripGainsAAG_Output_cff import * +from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStripHitEfficiency_Output_cff import * from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiPixelLorentzAngle_Output_cff import * from Calibration.TkAlCaRecoProducers.ALCARECOSiStripPCLHistos_Output_cff import * from Alignment.CommonAlignmentProducer.ALCARECOPromptCalibProdSiPixelAli_Output_cff import * diff --git a/Configuration/PyReleaseValidation/python/relval_production.py b/Configuration/PyReleaseValidation/python/relval_production.py index b44b3336a22ae..389aa7799c176 100644 --- a/Configuration/PyReleaseValidation/python/relval_production.py +++ b/Configuration/PyReleaseValidation/python/relval_production.py @@ -1,4 +1,3 @@ - # import the definition of the steps and input files: from Configuration.PyReleaseValidation.relval_steps import * @@ -11,7 +10,7 @@ ## data production test workflows[1000] = [ '',['RunMinBias2011A','TIER0','SKIMD','HARVESTDfst2','ALCASPLIT']] -workflows[1001] = [ '',['RunMinBias2011A','TIER0EXP','ALCAEXP','ALCAHARVDSIPIXELCALRUN1','ALCAHARVD1','ALCAHARVD2','ALCAHARVD3','ALCAHARVD4','ALCAHARVD5','ALCAHARVD7']] +workflows[1001] = [ '',['RunMinBias2011A','TIER0EXP','ALCAEXP','ALCAHARVDSIPIXELCALRUN1','ALCAHARVD1','ALCAHARVD2','ALCAHARVD3','ALCAHARVD4','ALCAHARVD5','ALCAHARVD7','ALCAHARVD8']] workflows[1001.2] = [ '',['RunZeroBias2017F','TIER0EXPRUN2','ALCAEXPRUN2','ALCAHARVDSIPIXELCAL','ALCAHARVDSIPIXELCALLA']] workflows[1002]=['RRD',['RunMinBias2011A','RECODR1','COPYPASTE']] diff --git a/Configuration/PyReleaseValidation/python/relval_steps.py b/Configuration/PyReleaseValidation/python/relval_steps.py index d7a461e1bda79..f34ca604cc62a 100644 --- a/Configuration/PyReleaseValidation/python/relval_steps.py +++ b/Configuration/PyReleaseValidation/python/relval_steps.py @@ -2709,13 +2709,13 @@ def gen2021HiMix(fragment,howMuch): '--conditions':'auto:run1_data', '--datatier':'ALCARECO', '--eventcontent':'ALCARECO'} -steps['ALCAEXP']={'-s':'ALCAOUTPUT:SiStripCalZeroBias+TkAlMinBias+Hotline+LumiPixelsMinBias+AlCaPCCZeroBiasFromRECO+AlCaPCCRandomFromRECO+SiPixelCalSingleMuon,ALCA:PromptCalibProd+PromptCalibProdSiStrip+PromptCalibProdSiStripGains+PromptCalibProdSiStripGainsAAG+PromptCalibProdSiPixelAli+PromptCalibProdSiPixel+PromptCalibProdSiPixelLorentzAngle', +steps['ALCAEXP']={'-s':'ALCAOUTPUT:SiStripCalZeroBias+TkAlMinBias+Hotline+LumiPixelsMinBias+AlCaPCCZeroBiasFromRECO+AlCaPCCRandomFromRECO+SiPixelCalSingleMuon,ALCA:PromptCalibProd+PromptCalibProdSiStrip+PromptCalibProdSiStripGains+PromptCalibProdSiStripGainsAAG+PromptCalibProdSiStripHitEfficiency+PromptCalibProdSiPixelAli+PromptCalibProdSiPixel+PromptCalibProdSiPixelLorentzAngle', '--conditions':'auto:run1_data', '--datatier':'ALCARECO', '--eventcontent':'ALCARECO', '--triggerResultsProcess': 'RECO'} -steps['ALCAEXPRUN2']={'-s':'ALCAOUTPUT:SiStripCalZeroBias+TkAlMinBias+LumiPixelsMinBias+AlCaPCCZeroBiasFromRECO+AlCaPCCRandomFromRECO+SiPixelCalZeroBias+SiPixelCalSingleMuon,ALCA:PromptCalibProd+PromptCalibProdSiStrip+PromptCalibProdSiStripGains+PromptCalibProdSiStripGainsAAG+PromptCalibProdSiPixelAli+PromptCalibProdSiPixel+PromptCalibProdSiPixelLorentzAngle', +steps['ALCAEXPRUN2']={'-s':'ALCAOUTPUT:SiStripCalZeroBias+TkAlMinBias+LumiPixelsMinBias+AlCaPCCZeroBiasFromRECO+AlCaPCCRandomFromRECO+SiPixelCalZeroBias+SiPixelCalSingleMuon,ALCA:PromptCalibProd+PromptCalibProdSiStrip+PromptCalibProdSiStripGains+PromptCalibProdSiStripGainsAAG+PromptCalibProdSiStripHitEfficiency+PromptCalibProdSiPixelAli+PromptCalibProdSiPixel+PromptCalibProdSiPixelLorentzAngle', '--conditions':'auto:run2_data', '--datatier':'ALCARECO', '--eventcontent':'ALCARECO', @@ -2845,6 +2845,12 @@ def gen2021HiMix(fragment,howMuch): '--data':'', '--filein':'file:PromptCalibProdSiPixelLorentzAngle.root'} +steps['ALCAHARVD8']={'-s':'ALCAHARVEST:%s'%(autoPCL['PromptCalibProdSiStripHitEfficiency']), + '--conditions':'auto:run1_data', + '--scenario':'pp', + '--data':'', + '--filein':'file:PromptCalibProdSiStripHitEfficiency.root'} + steps['ALCAHARVD5HI']=merge([{'--scenario':'HeavyIons'},steps['ALCAHARVD5']]) steps['ALCAHARVDTE']={'-s':'ALCAHARVEST:%s'%(autoPCL['PromptCalibProdEcalPedestals']), '--conditions':'auto:run2_data', diff --git a/Configuration/StandardSequences/python/AlCaHarvesting_cff.py b/Configuration/StandardSequences/python/AlCaHarvesting_cff.py index 0c076565f446a..b4b6b499fe88e 100644 --- a/Configuration/StandardSequences/python/AlCaHarvesting_cff.py +++ b/Configuration/StandardSequences/python/AlCaHarvesting_cff.py @@ -5,6 +5,7 @@ from Calibration.TkAlCaRecoProducers.AlcaSiStripQualityHarvester_cff import * from Calibration.TkAlCaRecoProducers.AlcaSiStripGainsHarvester_cff import * from Calibration.TkAlCaRecoProducers.AlcaSiStripGainsAAGHarvester_cff import * +from Calibration.TkAlCaRecoProducers.AlcaSiStripHitEfficiencyHarvester_cff import * from Calibration.TkAlCaRecoProducers.AlcaSiPixelLorentzAngleHarvester_cff import * from Alignment.CommonAlignmentProducer.AlcaSiPixelAliHarvester_cff import * from Calibration.EcalCalibAlgos.AlcaEcalPedestalsHarvester_cff import * @@ -148,6 +149,15 @@ timetype = cms.untracked.string('runnumber') ) +# -------------------------------------------------------------------------------------- +# SiStrip Bad Components from Hit Efficiency analysis +ALCAHARVESTSiStripHitEff_metadata = cms.PSet(record = cms.untracked.string('SiStripBadStripFromHitEffRcd')) + +ALCAHARVESTSiStripHitEff_dbOutput = cms.PSet(record = cms.string('SiStripBadStripFromHitEffRcd'), + tag = cms.string('SiStripBadStripRcdHitEff_pcl'), + timetype = cms.untracked.string('runnumber') + ) + # -------------------------------------------------------------------------------------- # SiPixel Alignment ALCAHARVESTSiPixelAli_metadata = cms.PSet(record = cms.untracked.string('TrackerAlignmentRcd')) @@ -253,10 +263,11 @@ BeamSpotHPLowPUByLumi = cms.Path(ALCAHARVESTBeamSpotHPLowPUByLumi) SiStripQuality = cms.Path(ALCAHARVESTSiStripQuality) SiStripGains = cms.Path(ALCAHARVESTSiStripGains) +SiStripGainsAAG = cms.Path(ALCAHARVESTSiStripGainsAAG) +SiStripHitEff = cms.Path(ALCAHARVESTSiStripHitEfficiency) SiPixelAli = cms.Path(ALCAHARVESTSiPixelAli) SiPixelLA = cms.Path(ALCAHARVESTSiPixelLorentzAngle) EcalPedestals = cms.Path(ALCAHARVESTEcalPedestals) -SiStripGainsAAG = cms.Path(ALCAHARVESTSiStripGainsAAG) LumiPCC = cms.Path(ALCAHARVESTLumiPCC) SiPixelQuality = cms.Path(dqmEnvSiPixelQuality+ALCAHARVESTSiPixelQuality)#+siPixelPhase1DQMHarvester) PPSTimingCalibration = cms.Path(ALCAHARVESTPPSTimingCalibration) diff --git a/Configuration/StandardSequences/python/AlCaRecoStreams_cff.py b/Configuration/StandardSequences/python/AlCaRecoStreams_cff.py index 4d1ee2d61158a..afa8d29c98888 100644 --- a/Configuration/StandardSequences/python/AlCaRecoStreams_cff.py +++ b/Configuration/StandardSequences/python/AlCaRecoStreams_cff.py @@ -156,6 +156,7 @@ from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStrip_cff import * from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStripGains_cff import * from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStripGainsAAG_cff import * +from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStripHitEfficiency_cff import * from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiPixelLorentzAngle_cff import * @@ -280,6 +281,7 @@ pathALCARECOPromptCalibProdSiStrip = cms.Path(seqALCARECOPromptCalibProdSiStrip) pathALCARECOPromptCalibProdSiStripGains = cms.Path(seqALCARECOPromptCalibProdSiStripGains) pathALCARECOPromptCalibProdSiStripGainsAAG = cms.Path(seqALCARECOPromptCalibProdSiStripGainsAAG) +pathALCARECOPromptCalibProdSiStripHitEfficiency = cms.Path(seqALCARECOPromptCalibProdSiStripHitEfficiency) pathALCARECOPromptCalibProdSiPixelLorentzAngle = cms.Path(seqALCARECOPromptCalibProdSiPixelLorentzAngle) pathALCARECOPromptCalibProdSiPixelAli = cms.Path(seqALCARECOPromptCalibProdSiPixelAli) pathALCARECOPromptCalibProdSiPixel = cms.Path(seqALCARECOPromptCalibProdSiPixel) @@ -1005,6 +1007,15 @@ dataTier = cms.untracked.string('ALCARECO') ) +ALCARECOStreamPromptCalibProdSiStripHitEfficiency = cms.FilteredStream( + responsible = 'Marco Musich', + name = 'PromptCalibProdSiStripHitEfficiency', + paths = (pathALCARECOPromptCalibProdSiStripHitEfficiency), + content = OutALCARECOPromptCalibProdSiStripHitEfficiency.outputCommands, + selectEvents = OutALCARECOPromptCalibProdSiStripHitEfficiency.SelectEvents, + dataTier = cms.untracked.string('ALCARECO') + ) + ALCARECOStreamPromptCalibProdSiPixelLorentzAngle = cms.FilteredStream( responsible = 'Marco Musich', name = 'PromptCalibProdSiPixelLorentzAngle', From 2b89e7ec5b32f10bb28c2b6a3e6945ea36b83801 Mon Sep 17 00:00:00 2001 From: mmusich Date: Wed, 27 Apr 2022 11:07:12 +0200 Subject: [PATCH 4/6] don't use TFileService in PCL --- .../plugins/SiStripHitEfficiencyHarvester.cc | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc index 7cff99df57cc1..e2d5a64fb6230 100644 --- a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc +++ b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc @@ -40,6 +40,7 @@ class SiStripHitEfficiencyHarvester : public DQMEDHarvester { void dqmEndJob(DQMStore::IBooker&, DQMStore::IGetter&) override; private: + const bool isAtPCL_; const bool showRings_, autoIneffModTagging_, doStoreOnDB_; const unsigned int nTEClayers_; const double threshold_; @@ -62,12 +63,13 @@ class SiStripHitEfficiencyHarvester : public DQMEDHarvester { void printAndWriteBadModules(const SiStripQuality& quality, const SiStripDetInfo& detInfo) const; void makeSummary(DQMStore::IGetter& getter, TFileService& fs) const; void makeSummaryVsBX(DQMStore::IGetter& getter, TFileService& fs) const; - void makeSummaryVsLumi(DQMStore::IGetter& getter, TFileService& fs) const; + void makeSummaryVsLumi(DQMStore::IGetter& getter) const; void makeSummaryVsCM(DQMStore::IGetter& getter, TFileService& fs) const; }; SiStripHitEfficiencyHarvester::SiStripHitEfficiencyHarvester(const edm::ParameterSet& conf) - : showRings_(conf.getUntrackedParameter("ShowRings", false)), + : isAtPCL_(conf.getParameter("isAtPCL")), + showRings_(conf.getUntrackedParameter("ShowRings", false)), autoIneffModTagging_(conf.getUntrackedParameter("AutoIneffModTagging", false)), doStoreOnDB_(conf.getParameter("doStoreOnDB")), nTEClayers_(showRings_ ? 7 : 9), // number of rings or wheels @@ -108,8 +110,6 @@ void SiStripHitEfficiencyHarvester::dqmEndJob(DQMStore::IBooker& booker, DQMStor LOGPRINT << "A module is bad if the upper limit on the efficiency is < to the avg in the layer - " << threshold_ << " and has at least " << nModsMin_ << " nModsMin."; - edm::Service fs; - auto h_module_total = std::make_unique(tkDetMap_.get()); h_module_total->loadTkHistoMap("AlCaReco/SiStripHitEfficiency", "perModule_total"); auto h_module_found = std::make_unique(tkDetMap_.get()); @@ -118,11 +118,11 @@ void SiStripHitEfficiencyHarvester::dqmEndJob(DQMStore::IBooker& booker, DQMStor << "Entries in total TkHistoMap for layer 3: " << h_module_total->getMap(3)->getEntries() << ", found " << h_module_found->getMap(3)->getEntries(); - std::vector hEffInLayer(std::size_t(1), nullptr); + std::vector hEffInLayer(std::size_t(1), nullptr); hEffInLayer.reserve(23); for (std::size_t i = 1; i != 23; ++i) { hEffInLayer.push_back( - fs->make(Form("eff_layer%i", int(i)), Form("Module efficiency in layer %i", int(i)), 201, 0, 1.005)); + booker.book1D(Form("eff_layer%i", int(i)), Form("Module efficiency in layer %i", int(i)), 201, 0, 1.005)); } std::array layerTotal{}; std::array layerFound{}; @@ -181,12 +181,13 @@ void SiStripHitEfficiencyHarvester::dqmEndJob(DQMStore::IBooker& booker, DQMStor if (autoIneffModTagging_) { for (Long_t i = 1; i <= 22; i++) { //Compute threshold to use for each layer - hEffInLayer[i]->GetXaxis()->SetRange(3, hEffInLayer[i]->GetNbinsX() + 1); // Remove from the avg modules below 1% - const double layer_min_eff = hEffInLayer[i]->GetMean() - std::max(2.5 * hEffInLayer[i]->GetRMS(), threshold_); + hEffInLayer[i]->getTH1()->GetXaxis()->SetRange( + 3, hEffInLayer[i]->getNbinsX() + 1); // Remove from the avg modules below 1% + const double layer_min_eff = hEffInLayer[i]->getMean() - std::max(2.5 * hEffInLayer[i]->getRMS(), threshold_); LOGPRINT << "Layer " << i << " threshold for bad modules: <" << layer_min_eff - << " (layer mean: " << hEffInLayer[i]->GetMean() << " rms: " << hEffInLayer[i]->GetRMS() << ")"; + << " (layer mean: " << hEffInLayer[i]->getMean() << " rms: " << hEffInLayer[i]->getRMS() << ")"; - hEffInLayer[i]->GetXaxis()->SetRange(1, hEffInLayer[i]->GetNbinsX() + 1); + hEffInLayer[i]->getTH1()->GetXaxis()->SetRange(1, hEffInLayer[i]->getNbinsX() + 1); for (auto det : stripDetIds_) { const auto layer = ::checkLayer(det, tTopo_.get()); @@ -257,10 +258,14 @@ void SiStripHitEfficiencyHarvester::dqmEndJob(DQMStore::IBooker& booker, DQMStor // << " lumiBlock " << e.luminosityBlock() << " time " << e.time().value() << "\n-----------------\n"; printAndWriteBadModules(pQuality, detInfo); // TODO - makeSummary(getter, *fs); // TODO - makeSummaryVsBX(getter, *fs); // TODO - makeSummaryVsLumi(getter, *fs); // TODO - makeSummaryVsCM(getter, *fs); // TODO + if (!isAtPCL_) { + edm::Service fs; + makeSummary(getter, *fs); // TODO + makeSummaryVsBX(getter, *fs); // TODO + makeSummaryVsCM(getter, *fs); // TODO + } + + makeSummaryVsLumi(getter); // TODO } void SiStripHitEfficiencyHarvester::printTotalStatistics(const std::array& layerFound, @@ -336,10 +341,12 @@ void SiStripHitEfficiencyHarvester::makeSummaryVsBX(DQMStore::IGetter& getter, T // use found/totalVsBx_layer%i [0,23) } -void SiStripHitEfficiencyHarvester::makeSummaryVsLumi(DQMStore::IGetter& getter, TFileService& fs) const { +void SiStripHitEfficiencyHarvester::makeSummaryVsLumi(DQMStore::IGetter& getter) const { for (unsigned int iLayer = 1; iLayer != (showRings_ ? 20 : 22); ++iLayer) { - auto hfound = getter.get(fmt::format("AlCaReco/SiStripHitEfficiency/layerfound_vsLumi_layer_{}", iLayer))->getTH1F(); - auto htotal = getter.get(fmt::format("AlCaReco/SiStripHitEfficiency/layertotal_vsLumi_layer_{}", iLayer))->getTH1F(); + auto hfound = + getter.get(fmt::format("AlCaReco/SiStripHitEfficiency/layerfound_vsLumi_layer_{}", iLayer))->getTH1F(); + auto htotal = + getter.get(fmt::format("AlCaReco/SiStripHitEfficiency/layertotal_vsLumi_layer_{}", iLayer))->getTH1F(); if (!hfound->GetSumw2()) hfound->Sumw2(); if (!htotal->GetSumw2()) @@ -354,7 +361,6 @@ void SiStripHitEfficiencyHarvester::makeSummaryVsLumi(DQMStore::IGetter& getter, << "Total hits for layer " << iLayer << " (vs lumi): " << htotal->GetEntries() << ", found " << hfound->GetEntries(); } - // continue } @@ -585,6 +591,7 @@ void SiStripHitEfficiencyHarvester::printAndWriteBadModules(const SiStripQuality void SiStripHitEfficiencyHarvester::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; + desc.add("isAtPCL", false); desc.add("doStoreOnDB", false); desc.add("Record", "SiStripBadStrip"); desc.add("Threshold", 0.1); From ae0eb33604714dc120604a228b1d687f0da6844a Mon Sep 17 00:00:00 2001 From: mmusich Date: Wed, 27 Apr 2022 16:06:42 +0200 Subject: [PATCH 5/6] update SiStripHitEfficiencyHarvester to protect when the input histograms from the previous step are not available --- .../plugins/SiStripHitEfficiencyHarvester.cc | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc index e2d5a64fb6230..72bb86f7879dc 100644 --- a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc +++ b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc @@ -114,6 +114,19 @@ void SiStripHitEfficiencyHarvester::dqmEndJob(DQMStore::IBooker& booker, DQMStor h_module_total->loadTkHistoMap("AlCaReco/SiStripHitEfficiency", "perModule_total"); auto h_module_found = std::make_unique(tkDetMap_.get()); h_module_found->loadTkHistoMap("AlCaReco/SiStripHitEfficiency", "perModule_found"); + + // check on the input TkHistoMap + if (h_module_total->getMap(1) == nullptr or h_module_found->getMap(1) == nullptr) { + if (h_module_total->getMap(1) == nullptr) { + edm::LogError("SiStripHitEfficiencyHarvester") << "perModule_total TkHistoMap was not found.\n -> Aborting!"; + } + if (h_module_found->getMap(1) == nullptr) { + edm::LogError("SiStripHitEfficiencyHarvester") << "perModule_found TkHistoMap was not found.\n -> Aborting!"; + } + // no input TkHistoMaps -> early return + return; + } + LogDebug("SiStripHitEfficiencyHarvester") << "Entries in total TkHistoMap for layer 3: " << h_module_total->getMap(3)->getEntries() << ", found " << h_module_found->getMap(3)->getEntries(); @@ -347,6 +360,18 @@ void SiStripHitEfficiencyHarvester::makeSummaryVsLumi(DQMStore::IGetter& getter) getter.get(fmt::format("AlCaReco/SiStripHitEfficiency/layerfound_vsLumi_layer_{}", iLayer))->getTH1F(); auto htotal = getter.get(fmt::format("AlCaReco/SiStripHitEfficiency/layertotal_vsLumi_layer_{}", iLayer))->getTH1F(); + + if (hfound == nullptr or htotal == nullptr) { + if (hfound == nullptr) + edm::LogError("SiStripHitEfficiencyHarvester") + << fmt::format("AlCaReco/SiStripHitEfficiency/layerfound_vsLumi_layer_{}", iLayer) << " was not found!"; + if (htotal == nullptr) + edm::LogError("SiStripHitEfficiencyHarvester") + << fmt::format("AlCaReco/SiStripHitEfficiency/layertotal_vsLumi_layer_{}", iLayer) << " was not found!"; + // no input histograms -> continue in the loop + continue; + } + if (!hfound->GetSumw2()) hfound->Sumw2(); if (!htotal->GetSumw2()) From 5e79159a730dd71c6faf73ff474272440903dace Mon Sep 17 00:00:00 2001 From: mmusich Date: Wed, 4 May 2022 11:55:03 +0200 Subject: [PATCH 6/6] follow-up to code review --- .../plugins/SiStripHitEfficiencyHarvester.cc | 57 +++++++++++++++---- .../plugins/SiStripHitEfficiencyWorker.cc | 57 +++++++++---------- .../test/testHitEffWorker.py | 22 +++---- ...alibProdSiStripHitEfficiency_Output_cff.py | 3 +- ...PromptCalibProdSiStripHitEfficiency_cff.py | 49 ++++++++-------- .../AlcaSiStripHitEfficiencyHarvester_cfi.py | 19 +++---- 6 files changed, 121 insertions(+), 86 deletions(-) diff --git a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc index 72bb86f7879dc..a72c60893aa75 100644 --- a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc +++ b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc @@ -61,6 +61,7 @@ class SiStripHitEfficiencyHarvester : public DQMEDHarvester { void writeBadStripPayload(const SiStripQuality& quality) const; void printTotalStatistics(const std::array& layerFound, const std::array& layerTotal) const; void printAndWriteBadModules(const SiStripQuality& quality, const SiStripDetInfo& detInfo) const; + bool checkMapsValidity(const std::vector& maps, const std::string& type) const; void makeSummary(DQMStore::IGetter& getter, TFileService& fs) const; void makeSummaryVsBX(DQMStore::IGetter& getter, TFileService& fs) const; void makeSummaryVsLumi(DQMStore::IGetter& getter) const; @@ -103,6 +104,36 @@ void SiStripHitEfficiencyHarvester::endRun(edm::Run const&, edm::EventSetup cons } } +bool SiStripHitEfficiencyHarvester::checkMapsValidity(const std::vector& maps, + const std::string& type) const { + std::vector isAvailable; + isAvailable.reserve(maps.size()); + std::transform( + maps.begin() + 1, maps.end(), std::back_inserter(isAvailable), [](auto& x) { return !(x == nullptr); }); + + int count{0}; + for (const auto& it : isAvailable) { + count++; + LogDebug("SiStripHitEfficiencyHarvester") << " layer: " << count << " " << it << std::endl; + if (it) + LogDebug("SiStripHitEfficiencyHarvester") << "resolving to " << maps[count]->getName() << std::endl; + } + + // check on the input TkHistoMap + bool areMapsAvailable{true}; + int layerCount{0}; + for (const auto& it : isAvailable) { + layerCount++; + if (!it) { + edm::LogError("SiStripHitEfficiencyHarvester") + << type << " TkHistoMap for layer " << layerCount << " was not found.\n -> Aborting!"; + areMapsAvailable = false; + break; + } + } + return areMapsAvailable; +} + void SiStripHitEfficiencyHarvester::dqmEndJob(DQMStore::IBooker& booker, DQMStore::IGetter& getter) { if (!autoIneffModTagging_) LOGPRINT << "A module is bad if efficiency < " << threshold_ << " and has at least " << nModsMin_ << " nModsMin."; @@ -115,17 +146,23 @@ void SiStripHitEfficiencyHarvester::dqmEndJob(DQMStore::IBooker& booker, DQMStor auto h_module_found = std::make_unique(tkDetMap_.get()); h_module_found->loadTkHistoMap("AlCaReco/SiStripHitEfficiency", "perModule_found"); - // check on the input TkHistoMap - if (h_module_total->getMap(1) == nullptr or h_module_found->getMap(1) == nullptr) { - if (h_module_total->getMap(1) == nullptr) { - edm::LogError("SiStripHitEfficiencyHarvester") << "perModule_total TkHistoMap was not found.\n -> Aborting!"; - } - if (h_module_found->getMap(1) == nullptr) { - edm::LogError("SiStripHitEfficiencyHarvester") << "perModule_found TkHistoMap was not found.\n -> Aborting!"; - } - // no input TkHistoMaps -> early return + // collect how many layers are missing + const auto& totalMaps = h_module_total->getAllMaps(); + const auto& foundMaps = h_module_found->getAllMaps(); + + LogDebug("SiStripHitEfficiencyHarvester") + << "totalMaps.size(): " << totalMaps.size() << " foundMaps.size() " << foundMaps.size() << std::endl; + + // check on the input TkHistoMaps + bool isTotalMapAvailable = this->checkMapsValidity(totalMaps, std::string("Total")); + bool isFoundMapAvailable = this->checkMapsValidity(foundMaps, std::string("Found")); + + LogDebug("SiStripHitEfficiencyHarvester") + << "isTotalMapAvailable: " << isTotalMapAvailable << " isFoundMapAvailable " << isFoundMapAvailable << std::endl; + + // no input TkHistoMaps -> early return + if (!isTotalMapAvailable or !isFoundMapAvailable) return; - } LogDebug("SiStripHitEfficiencyHarvester") << "Entries in total TkHistoMap for layer 3: " << h_module_total->getMap(3)->getEntries() << ", found " diff --git a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc index e1ad3782dad42..bda67db1184a6 100644 --- a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc +++ b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyWorker.cc @@ -197,20 +197,19 @@ SiStripHitEfficiencyWorker::SiStripHitEfficiencyWorker(const edm::ParameterSet& propagatorToken_(esConsumes(edm::ESInputTag{"", "PropagatorWithMaterial"})), tkDetMapToken_(esConsumes()), layers_(conf.getParameter("Layer")), - DEBUG_(conf.getParameter("Debug")), + DEBUG_(conf.getUntrackedParameter("Debug", false)), addLumi_(conf.getUntrackedParameter("addLumi", false)), addCommonMode_(conf.getUntrackedParameter("addCommonMode", false)), - cutOnTracks_(conf.getUntrackedParameter("cutOnTracks", false)), - trackMultiplicityCut_(conf.getUntrackedParameter("trackMultiplicity", 100)), - useFirstMeas_(conf.getUntrackedParameter("useFirstMeas", false)), - useLastMeas_(conf.getUntrackedParameter("useLastMeas", false)), - useAllHitsFromTracksWithMissingHits_( - conf.getUntrackedParameter("useAllHitsFromTracksWithMissingHits", false)), - clusterMatchingMethod_(conf.getUntrackedParameter("ClusterMatchingMethod", 0)), - resXSig_(conf.getUntrackedParameter("ResXSig", -1)), - clusterTracjDist_(conf.getUntrackedParameter("ClusterTrajDist", 64.0)), - stripsApvEdge_(conf.getUntrackedParameter("StripsApvEdge", 10.0)), - useOnlyHighPurityTracks_(conf.getUntrackedParameter("UseOnlyHighPurityTracks", true)), + cutOnTracks_(conf.getParameter("cutOnTracks")), + trackMultiplicityCut_(conf.getParameter("trackMultiplicity")), + useFirstMeas_(conf.getParameter("useFirstMeas")), + useLastMeas_(conf.getParameter("useLastMeas")), + useAllHitsFromTracksWithMissingHits_(conf.getParameter("useAllHitsFromTracksWithMissingHits")), + clusterMatchingMethod_(conf.getParameter("ClusterMatchingMethod")), + resXSig_(conf.getParameter("ResXSig")), + clusterTracjDist_(conf.getParameter("ClusterTrajDist")), + stripsApvEdge_(conf.getParameter("StripsApvEdge")), + useOnlyHighPurityTracks_(conf.getParameter("UseOnlyHighPurityTracks")), bunchX_(conf.getUntrackedParameter("BunchCrossing", 0)), showRings_(conf.getUntrackedParameter("ShowRings", false)), showTOB6TEC9_(conf.getUntrackedParameter("ShowTOB6TEC9", false)) { @@ -910,30 +909,30 @@ void SiStripHitEfficiencyWorker::endJob() { void SiStripHitEfficiencyWorker::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; - desc.add("lumiScalers", edm::InputTag{"scalersRawToDigi"}); - desc.add("commonMode", edm::InputTag{"siStripDigis", "CommonMode"}); + desc.add("UseOnlyHighPurityTracks", true); + desc.add("cutOnTracks", false); + desc.add("useAllHitsFromTracksWithMissingHits", false); + desc.add("useFirstMeas", false); + desc.add("useLastMeas", false); + desc.add("ClusterTrajDist", 64.0); + desc.add("ResXSig", -1); + desc.add("StripsApvEdge", 10.0); desc.add("combinatorialTracks", edm::InputTag{"generalTracks"}); - desc.add("trajectories", edm::InputTag{"generalTracks"}); + desc.add("commonMode", edm::InputTag{"siStripDigis", "CommonMode"}); + desc.add("lumiScalers", edm::InputTag{"scalersRawToDigi"}); desc.add("siStripClusters", edm::InputTag{"siStripClusters"}); desc.add("siStripDigis", edm::InputTag{"siStripDigis"}); desc.add("trackerEvent", edm::InputTag{"MeasurementTrackerEvent"}); + desc.add("trajectories", edm::InputTag{"generalTracks"}); + desc.add("ClusterMatchingMethod", 0); desc.add("Layer", 0); - desc.add("Debug", false); - desc.addUntracked("addLumi", true); - desc.addUntracked("addCommonMode", false); - desc.addUntracked("cutOnTracks", false); - desc.addUntracked("trackMultiplicity", 100); - desc.addUntracked("useFirstMeas", false); - desc.addUntracked("useLastMeas", false); - desc.addUntracked("useAllHitsFromTracksWithMissingHits", false); - desc.addUntracked("ClusterMatchingMethod", 0); - desc.addUntracked("ResXSig", -1); - desc.addUntracked("ClusterTrajDist", 64.0); - desc.addUntracked("StripsApvEdge", 10.0); - desc.addUntracked("UseOnlyHighPurityTracks", true); - desc.addUntracked("BunchCrossing", 0); + desc.add("trackMultiplicity", 100); + desc.addUntracked("Debug", false); desc.addUntracked("ShowRings", false); desc.addUntracked("ShowTOB6TEC9", false); + desc.addUntracked("addCommonMode", false); + desc.addUntracked("addLumi", true); + desc.addUntracked("BunchCrossing", 0); desc.addUntracked("BadModulesFile", ""); descriptions.addWithDefaultLabel(desc); } diff --git a/CalibTracker/SiStripHitEfficiency/test/testHitEffWorker.py b/CalibTracker/SiStripHitEfficiency/test/testHitEffWorker.py index 46e1d6b92de8b..840382e989c56 100644 --- a/CalibTracker/SiStripHitEfficiency/test/testHitEffWorker.py +++ b/CalibTracker/SiStripHitEfficiency/test/testHitEffWorker.py @@ -44,10 +44,10 @@ tracks = cms.InputTag("refitTracks") process.hiteff = cms.EDProducer("SiStripHitEfficiencyWorker", - lumiScalers=cms.InputTag("scalersRawToDigi"), + lumiScalers =cms.InputTag("scalersRawToDigi"), addLumi = cms.untracked.bool(True), - commonMode=cms.InputTag("siStripDigis", "CommonMode"), - addCommonMode=cms.untracked.bool(False), + commonMode = cms.InputTag("siStripDigis", "CommonMode"), + addCommonMode = cms.untracked.bool(False), combinatorialTracks = tracks, trajectories = tracks, siStripClusters = cms.InputTag("siStripClusters"), @@ -55,17 +55,17 @@ trackerEvent = cms.InputTag("MeasurementTrackerEvent"), # part 2 Layer = cms.int32(0), # =0 means do all layers - Debug = cms.bool(True), + Debug = cms.untracked.bool(True), # do not cut on the total number of tracks - cutOnTracks = cms.untracked.bool(True), - trackMultiplicity = cms.untracked.uint32(100), + cutOnTracks = cms.bool(True), + trackMultiplicity = cms.uint32(100), # use or not first and last measurement of a trajectory (biases), default is false - useFirstMeas = cms.untracked.bool(False), - useLastMeas = cms.untracked.bool(False), - useAllHitsFromTracksWithMissingHits = cms.untracked.bool(False), + useFirstMeas = cms.bool(False), + useLastMeas = cms.bool(False), + useAllHitsFromTracksWithMissingHits = cms.bool(False), ## non-default settings - ClusterMatchingMethod = cms.untracked.int32(4), # default 0 case0,1,2,3,4 - ClusterTrajDist = cms.untracked.double(15), # default 64 + ClusterMatchingMethod = cms.int32(4), # default 0 case0,1,2,3,4 + ClusterTrajDist = cms.double(15), # default 64 ) process.load("DQM.SiStripCommon.TkHistoMap_cff") diff --git a/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_Output_cff.py b/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_Output_cff.py index 9c62387d6c0aa..155e27a69883e 100644 --- a/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_Output_cff.py +++ b/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_Output_cff.py @@ -5,6 +5,5 @@ SelectEvents = cms.vstring('pathALCARECOPromptCalibProdSiStripHitEfficiency')), outputCommands = cms.untracked.vstring('keep *_MEtoEDMConvertSiStripHitEff_*_*')) -import copy -OutALCARECOPromptCalibProdSiStripHitEfficiency=copy.deepcopy(OutALCARECOPromptCalibProdSiStripHitEfficiency_noDrop) +OutALCARECOPromptCalibProdSiStripHitEfficiency = OutALCARECOPromptCalibProdSiStripHitEfficiency_noDrop.clone() OutALCARECOPromptCalibProdSiStripHitEfficiency.outputCommands.insert(0, "drop *") diff --git a/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_cff.py b/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_cff.py index d1cfbab1cb6e6..10a7204fda8aa 100644 --- a/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_cff.py +++ b/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_cff.py @@ -2,12 +2,12 @@ # ------------------------------------------------------------------------------ # configure a filter to run only on the events selected by TkAlMinBias AlcaReco -import copy from HLTrigger.HLTfilters.hltHighLevel_cfi import * -ALCARECOCalMinBiasFilterForSiStripHitEff = copy.deepcopy(hltHighLevel) -ALCARECOCalMinBiasFilterForSiStripHitEff.HLTPaths = ['pathALCARECOSiStripCalMinBias'] -ALCARECOCalMinBiasFilterForSiStripHitEff.throw = True ## dont throw on unknown path names -ALCARECOCalMinBiasFilterForSiStripHitEff.TriggerResultsTag = cms.InputTag("TriggerResults","","RECO") +ALCARECOCalMinBiasFilterForSiStripHitEff = hltHighLevel.clone( + HLTPaths = ['pathALCARECOSiStripCalMinBias'], + throw = True, ## throw on unknown path names + TriggerResultsTag = ("TriggerResults","","RECO") +) # ------------------------------------------------------------------------------ # This is the sequence for track refitting of the track saved by SiStripCalMinBias @@ -30,9 +30,10 @@ from DQM.SiStripCommon.TkHistoMap_cff import * from RecoTracker.MeasurementDet.MeasurementTrackerEventProducer_cfi import * -ALCARECOMonitoringTracksRefit = TrackRefitter.clone(src = cms.InputTag("ALCARECOMonitoringTracks"), - NavigationSchool = cms.string("") - ) +ALCARECOMonitoringTracksRefit = TrackRefitter.clone( + src = "ALCARECOMonitoringTracks", + NavigationSchool = cms.string("") +) # ------------------------------------------------------------------------------ # refit and BS can be dropped if done together with RECO. @@ -46,28 +47,28 @@ # This is the module actually doing the calibration from CalibTracker.SiStripHitEfficiency.siStripHitEfficiencyWorker_cfi import siStripHitEfficiencyWorker ALCARECOSiStripHitEff = siStripHitEfficiencyWorker.clone( - lumiScalers=cms.InputTag("scalersRawToDigi"), - addLumi = cms.untracked.bool(True), - commonMode=cms.InputTag("siStripDigis", "CommonMode"), - addCommonMode=cms.untracked.bool(False), + lumiScalers= "scalersRawToDigi", + addLumi = True, + commonMode = "siStripDigis:CommonMode", + addCommonMode= False, combinatorialTracks = "ALCARECOMonitoringTracksRefit", trajectories = "ALCARECOMonitoringTracksRefit", - siStripClusters = cms.InputTag("siStripClusters"), - siStripDigis = cms.InputTag("siStripDigis"), - trackerEvent = cms.InputTag("MeasurementTrackerEvent"), + siStripClusters = "siStripClusters", + siStripDigis = "siStripDigis", + trackerEvent = "MeasurementTrackerEvent", # part 2 - Layer = cms.int32(0), # =0 means do all layers - Debug = cms.bool(True), + Layer = 0, # =0 means do all layers + Debug = True, # do not cut on the total number of tracks - cutOnTracks = cms.untracked.bool(True), - trackMultiplicity = cms.untracked.uint32(100), + cutOnTracks = True, + trackMultiplicity = 100, # use or not first and last measurement of a trajectory (biases), default is false - useFirstMeas = cms.untracked.bool(False), - useLastMeas = cms.untracked.bool(False), - useAllHitsFromTracksWithMissingHits = cms.untracked.bool(False), + useFirstMeas = False, + useLastMeas = False, + useAllHitsFromTracksWithMissingHits = False, ## non-default settings - ClusterMatchingMethod = cms.untracked.int32(4), # default 0 case0,1,2,3,4 - ClusterTrajDist = cms.untracked.double(15), # default 64 + ClusterMatchingMethod = 4, # default 0 case0,1,2,3,4 + ClusterTrajDist = 15, # default 64 ) # ---------------------------------------------------------------------------- diff --git a/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cfi.py b/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cfi.py index 4f87fc73745f1..b3658de6db6ff 100644 --- a/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cfi.py +++ b/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cfi.py @@ -3,13 +3,12 @@ from DQM.SiStripCommon.TkHistoMap_cff import * from CalibTracker.SiStripHitEfficiency.siStripHitEfficiencyHarvester_cfi import siStripHitEfficiencyHarvester alcasiStripHitEfficiencyHarvester = siStripHitEfficiencyHarvester.clone( - isAtPCL = cms.bool(True), - Threshold = cms.double(0.1), - nModsMin = cms.int32(5), - AutoIneffModTagging = cms.untracked.bool(True), # default true, automatic limit for each layer to identify inefficient modules - Record = cms.string('SiStripBadStripFromHitEffRcd'), - doStoreOnDB = cms.bool(True), - ShowRings = cms.untracked.bool(False), # default False - TkMapMin = cms.untracked.double(0.90), # default 0.90 - #EffPlotMin = cms.untracked.double(0.90), # default 0.90 - Title = cms.string('SiStrip Hit Efficiency Map')) + isAtPCL = True, + Threshold = 0.1, + nModsMin = 5, + AutoIneffModTagging = True, # default true, automatic limit for each layer to identify inefficient modules + Record = 'SiStripBadStripFromHitEffRcd', + doStoreOnDB = True, + ShowRings = False, # default False + TkMapMin = 0.90, # default 0.90 + Title = 'SiStrip Hit Efficiency Map')