diff --git a/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc b/CalibTracker/SiStripHitEfficiency/plugins/SiStripHitEfficiencyHarvester.cc index 0e7518b58a8c7..a72c60893aa75 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,11 +34,13 @@ 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; private: + const bool isAtPCL_; const bool showRings_, autoIneffModTagging_, doStoreOnDB_; const unsigned int nTEClayers_; const double threshold_; @@ -55,14 +61,16 @@ 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, 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 @@ -96,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."; @@ -103,21 +141,38 @@ 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("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"); + + // 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 " << 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{}; @@ -176,12 +231,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()); @@ -252,10 +308,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, @@ -331,10 +391,24 @@ 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("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 == 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()) @@ -349,7 +423,6 @@ void SiStripHitEfficiencyHarvester::makeSummaryVsLumi(DQMStore::IGetter& getter, << "Total hits for layer " << iLayer << " (vs lumi): " << htotal->GetEntries() << ", found " << hfound->GetEntries(); } - // continue } @@ -578,5 +651,19 @@ void SiStripHitEfficiencyHarvester::printAndWriteBadModules(const SiStripQuality badModules.close(); } +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); + 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..bda67db1184a6 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 @@ -193,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)) { @@ -246,7 +249,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); @@ -904,7 +907,35 @@ void SiStripHitEfficiencyWorker::endJob() { LogDebug("SiStripHitEfficiencyWorker") << " Number Of Tracked events " << EventTrackCKF; } +void SiStripHitEfficiencyWorker::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + 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("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("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); +} + #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") 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 new file mode 100644 index 0000000000000..155e27a69883e --- /dev/null +++ b/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_Output_cff.py @@ -0,0 +1,9 @@ +import FWCore.ParameterSet.Config as cms + +OutALCARECOPromptCalibProdSiStripHitEfficiency_noDrop = cms.PSet( + SelectEvents = cms.untracked.PSet( + SelectEvents = cms.vstring('pathALCARECOPromptCalibProdSiStripHitEfficiency')), + outputCommands = cms.untracked.vstring('keep *_MEtoEDMConvertSiStripHitEff_*_*')) + +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 new file mode 100644 index 0000000000000..10a7204fda8aa --- /dev/null +++ b/Calibration/TkAlCaRecoProducers/python/ALCARECOPromptCalibProdSiStripHitEfficiency_cff.py @@ -0,0 +1,88 @@ +import FWCore.ParameterSet.Config as cms + +# ------------------------------------------------------------------------------ +# configure a filter to run only on the events selected by TkAlMinBias AlcaReco +from HLTrigger.HLTfilters.hltHighLevel_cfi import * +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 +# 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 = "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= "scalersRawToDigi", + addLumi = True, + commonMode = "siStripDigis:CommonMode", + addCommonMode= False, + combinatorialTracks = "ALCARECOMonitoringTracksRefit", + trajectories = "ALCARECOMonitoringTracksRefit", + siStripClusters = "siStripClusters", + siStripDigis = "siStripDigis", + trackerEvent = "MeasurementTrackerEvent", + # part 2 + Layer = 0, # =0 means do all layers + Debug = True, + # do not cut on the total number of tracks + cutOnTracks = True, + trackMultiplicity = 100, + # use or not first and last measurement of a trajectory (biases), default is false + useFirstMeas = False, + useLastMeas = False, + useAllHitsFromTracksWithMissingHits = False, + ## non-default settings + ClusterMatchingMethod = 4, # default 0 case0,1,2,3,4 + ClusterTrajDist = 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..b3658de6db6ff --- /dev/null +++ b/Calibration/TkAlCaRecoProducers/python/AlcaSiStripHitEfficiencyHarvester_cfi.py @@ -0,0 +1,14 @@ +import FWCore.ParameterSet.Config as cms + +from DQM.SiStripCommon.TkHistoMap_cff import * +from CalibTracker.SiStripHitEfficiency.siStripHitEfficiencyHarvester_cfi import siStripHitEfficiencyHarvester +alcasiStripHitEfficiencyHarvester = siStripHitEfficiencyHarvester.clone( + 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') 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',