Skip to content

Commit 1b1f1f1

Browse files
authored
Merge pull request #48450 from mmusich/onlineScoutingDQMclient_15_0_X
[15.0.X] New HLT Scouting DQM Online Client
2 parents 695612c + 7133c3b commit 1b1f1f1

File tree

9 files changed

+152
-16
lines changed

9 files changed

+152
-16
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import FWCore.ParameterSet.Config as cms
2+
3+
## See DQMOffline/HLTScouting/python/HLTScoutingDqmOffline_cff.py
4+
5+
from DQMOffline.JetMET.jetMETDQMOfflineSource_cff import *
6+
7+
jetDQMOnlineAnalyzerAk4ScoutingCleaned = jetDQMAnalyzerAk4ScoutingCleaned.clone(
8+
JetType='scoutingOnline',
9+
DCSFilterForJetMonitoring=dict(DetectorTypes = "ecal:hbhe:hf:pixel:sistrip:es:muon",
10+
onlineMetaDataDigisSrc = cms.untracked.InputTag("hltOnlineMetaDataDigis"),
11+
DebugOn = cms.untracked.bool(False),
12+
alwaysPass = False)
13+
)
14+
15+
jetDQMOnlineAnalyzerAk4ScoutingUncleaned = jetDQMAnalyzerAk4ScoutingUncleaned.clone(
16+
JetType='scoutingOnline',
17+
DCSFilterForJetMonitoring=dict(DetectorTypes = "ecal:hbhe:hf:pixel:sistrip:es:muon",
18+
onlineMetaDataDigisSrc = cms.untracked.InputTag("hltOnlineMetaDataDigis"),
19+
DebugOn = cms.untracked.bool(False),
20+
alwaysPass = False)
21+
)
22+
23+
jetDQMOnlineAnalyzerSequenceScouting = cms.Sequence(jetDQMOnlineAnalyzerAk4ScoutingUncleaned*
24+
jetDQMOnlineAnalyzerAk4ScoutingCleaned)
25+
26+
ScoutingJetMonitoring = cms.Sequence(jetPreDQMSeqScouting*
27+
dqmAk4PFScoutingL1FastL2L3ResidualCorrectorChain*
28+
jetDQMOnlineAnalyzerSequenceScouting)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import FWCore.ParameterSet.Config as cms
2+
3+
## See DQMOffline/HLTScouting/python/HLTScoutingDqmOffline_cff.py
4+
5+
from HLTriggerOffline.Scouting.ScoutingMuonTriggerAnalyzer_cfi import ScoutingMuonTriggerAnalysis_DoubleMu, ScoutingMuonTriggerAnalysis_SingleMu
6+
from HLTriggerOffline.Scouting.ScoutingMuonTagProbeAnalyzer_cfi import ScoutingMuonTagProbeAnalysisNoVtx, ScoutingMuonTagProbeAnalysisVtx
7+
8+
ScoutingMuonTagProbeAnalysisNoVtxOnline = ScoutingMuonTagProbeAnalysisNoVtx.clone(OutputInternalPath = "/HLT/ScoutingOnline/Muons/NoVtx")
9+
ScoutingMuonTagProbeAnalysisVtxOnline = ScoutingMuonTagProbeAnalysisVtx.clone(OutputInternalPath = "/HLT/ScoutingOnline/Muons/Vtx")
10+
ScoutingMuonTriggerAnalysis_DoubleMu = ScoutingMuonTriggerAnalysis_DoubleMu.clone(OutputInternalPath = "/HLT/ScoutingOnline/Muons/L1Efficiency/DoubleMu")
11+
ScoutingMuonTriggerAnalysis_SingleMu = ScoutingMuonTriggerAnalysis_SingleMu.clone(OutputInternalPath = "/HLT/ScoutingOnline/Muons/L1Efficiency/SingleMu")
12+
13+
ScoutingMuonMonitoring = cms.Sequence( ScoutingMuonTagProbeAnalysisNoVtxOnline + ScoutingMuonTagProbeAnalysisVtxOnline + ScoutingMuonTriggerAnalysis_DoubleMu + ScoutingMuonTriggerAnalysis_SingleMu )
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import FWCore.ParameterSet.Config as cms
2+
3+
import sys
4+
if 'runkey=hi_run' in sys.argv:
5+
from Configuration.Eras.Era_Run3_pp_on_PbPb_approxSiStripClusters_cff import Run3_pp_on_PbPb_approxSiStripClusters
6+
process = cms.Process("DQM", Run3_pp_on_PbPb_approxSiStripClusters)
7+
else:
8+
from Configuration.Eras.Era_Run3_2025_cff import Run3_2025
9+
process = cms.Process("DQM", Run3_2025)
10+
11+
unitTest = False
12+
if 'unitTest=True' in sys.argv:
13+
unitTest=True
14+
15+
if unitTest:
16+
process.load("DQM.Integration.config.unitteststreamerinputsource_cfi")
17+
from DQM.Integration.config.unitteststreamerinputsource_cfi import options
18+
process.source.streamLabel = 'streamDQMOnlineScouting'
19+
else:
20+
process.load("DQM.Integration.config.inputsource_cfi")
21+
from DQM.Integration.config.inputsource_cfi import options
22+
23+
if not options.inputFiles:
24+
process.source.streamLabel = "streamDQMOnlineScouting"
25+
26+
process.load("DQM.Integration.config.environment_cfi")
27+
28+
process.dqmEnv.subSystemFolder = 'ScoutingDQM'
29+
process.dqmSaver.tag = 'ScoutingDQM'
30+
process.dqmSaver.runNumber = options.runNumber
31+
# process.dqmSaverPB.tag = 'ScoutingDQM'
32+
# process.dqmSaverPB.runNumber = options.runNumber
33+
34+
process.load("Configuration.StandardSequences.GeometryRecoDB_cff")
35+
process.load("Configuration.StandardSequences.MagneticField_cff")
36+
37+
#---- for P5 (online) DB access
38+
process.load("DQM.Integration.config.FrontierCondition_GT_cfi")
39+
# Condition for lxplus: change and possibly customise the GT
40+
#from Configuration.AlCa.GlobalTag import GlobalTag as gtCustomise
41+
#process.GlobalTag = gtCustomise(process.GlobalTag, 'auto:run3_data', '')
42+
43+
44+
### for pp collisions
45+
process.load("DQM.HLTEvF.ScoutingCollectionMonitor_cfi")
46+
process.scoutingCollectionMonitor.topfoldername = "HLT/ScoutingOnline/Miscellaneous"
47+
process.scoutingCollectionMonitor.onlyScouting = True
48+
process.scoutingCollectionMonitor.rho = ["hltScoutingPFPacker", "rho"]
49+
process.dqmcommon = cms.Sequence(process.dqmEnv
50+
* process.dqmSaver)#*process.dqmSaverPB)
51+
52+
process.load("DQM.HLTEvF.ScoutingMuonMonitoring_cff")
53+
process.load("DQM.HLTEvF.ScoutingJetMonitoring_cff")
54+
55+
## Run-1 L1TGT required by ScoutingJetMonitoring https://github.com/cms-sw/cmssw/blob/master/DQMOffline/JetMET/src/JetAnalyzer.cc#L2603-L2611
56+
process.GlobalTag.toGet.append(
57+
cms.PSet(
58+
record = cms.string("L1GtTriggerMenuRcd"),
59+
tag = cms.string('L1GtTriggerMenu_CRAFT09_hlt'),
60+
)
61+
)
62+
63+
process.p = cms.Path(process.dqmcommon * process.scoutingCollectionMonitor * process.ScoutingMuonMonitoring * process.ScoutingJetMonitoring)
64+
65+
### process customizations included here
66+
from DQM.Integration.config.online_customizations_cfi import *
67+
process = customise(process)
68+
print("Global Tag used:", process.GlobalTag.globaltag.value())
69+
print("Final Source settings:", process.source)

DQM/Integration/python/config/unittestinputsource_cfi.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@
122122
'drop *',
123123
'keep FEDRawDataCollection_rawDataCollector_*_*',
124124
'keep GlobalObjectMapRecord_hltGtStage2ObjectMap_*_*',
125+
'keep Run3Scouting*_*_*_*',
126+
'keep double_hltScoutingPFPacker_*_*',
125127
'keep edmTriggerResults_TriggerResults_*_*'
126128
),
127129
dropDescendantsOfDroppedBranches = cms.untracked.bool(True)

DQM/Integration/test/BuildFile.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
<test name="TestDQMOnlineClient-hlt_dqm_clientPB" command="runtest.sh hlt_dqm_clientPB-live_cfg.py"/>
1515
<test name="TestDQMOnlineClient-hlt_dqm_sourceclient" command="runtest.sh hlt_dqm_sourceclient-live_cfg.py"/>
1616
<test name="TestDQMOnlineClient-ngt_dqm_sourceclient" command="runtest.sh ngt_dqm_sourceclient-live_cfg.py"/>
17+
<test name="TestDQMOnlineClient-scouting_dqm_sourceclient" command="runtest.sh scouting_dqm_sourceclient-live_cfg.py 392642"/>
1718
<test name="TestDQMOnlineClient-info_dqm_sourceclient" command="runtest.sh info_dqm_sourceclient-live_cfg.py"/>
1819
<test name="TestDQMOnlineClient-l1tstage2_dqm_sourceclient" command="runtest.sh l1tstage2_dqm_sourceclient-live_cfg.py"/>
1920
<test name="TestDQMOnlineClient-l1tstage2emulator_dqm_sourceclient" command="runtest.sh l1tstage2emulator_dqm_sourceclient-live_cfg.py"/>

DQMOffline/JetMET/interface/JetAnalyzer.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -937,6 +937,8 @@ class JetAnalyzer : public DQMEDAnalyzer {
937937
bool isPUPPIJet_;
938938
bool isScoutingJet_;
939939

940+
bool isOnlineDQM_;
941+
940942
bool fill_jet_high_level_histo;
941943

942944
bool fill_CHS_histos;

DQMOffline/JetMET/interface/JetMETDQMDCSFilter.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
class JetMETDQMDCSFilter {
1919
public:
2020
JetMETDQMDCSFilter(const edm::ParameterSet&, edm::ConsumesCollector&);
21-
JetMETDQMDCSFilter(const std::string& detectorTypes,
21+
JetMETDQMDCSFilter(const edm::ParameterSet&,
22+
const std::string& detectorTypes,
2223
edm::ConsumesCollector&,
2324
const bool verbose = false,
2425
const bool alwaysPass = false);
@@ -35,6 +36,8 @@ class JetMETDQMDCSFilter {
3536
bool verbose_;
3637
bool filter_;
3738
bool detectorOn_;
39+
edm::InputTag scalersSrc_;
40+
edm::InputTag onlineMetaDataDigiSrc_;
3841
std::string detectorTypes_;
3942
std::map<std::string, std::vector<int>> associationMap_;
4043
std::map<std::string, bool> passPerDet_;

DQMOffline/JetMET/src/JetAnalyzer.cc

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,12 @@ JetAnalyzer::JetAnalyzer(const edm::ParameterSet& pSet)
8282
//isJPTJet_ = (std::string("jpt") ==jetType_);
8383
isPFJet_ = (std::string("pf") == jetType_);
8484
isPUPPIJet_ = (std::string("puppi") == jetType_);
85-
isScoutingJet_ = (std::string("scouting") == jetType_);
85+
isScoutingJet_ = (jetType_.find("scouting") != std::string::npos);
8686
isMiniAODJet_ = (std::string("miniaod") == jetType_);
8787
jetCorrectorTag_ = pSet.getParameter<edm::InputTag>("JetCorrections");
8888

89+
isOnlineDQM_ = (jetType_.find("Online") != std::string::npos);
90+
8991
if (!isMiniAODJet_) { //in MiniAOD jet is already corrected
9092
jetCorrectorToken_ = consumes<reco::JetCorrector>(jetCorrectorTag_);
9193
}
@@ -238,7 +240,8 @@ JetAnalyzer::JetAnalyzer(const edm::ParameterSet& pSet)
238240
// ==========================================================
239241
edm::ConsumesCollector iC = consumesCollector();
240242
DCSFilterForJetMonitoring_ = new JetMETDQMDCSFilter(pSet.getParameter<ParameterSet>("DCSFilterForJetMonitoring"), iC);
241-
DCSFilterForDCSMonitoring_ = new JetMETDQMDCSFilter("ecal:hbhe:hf:ho:pixel:sistrip:es:muon", iC);
243+
DCSFilterForDCSMonitoring_ = new JetMETDQMDCSFilter(
244+
pSet.getParameter<ParameterSet>("DCSFilterForJetMonitoring"), "ecal:hbhe:hf:ho:pixel:sistrip:es:muon", iC);
242245

243246
//Trigger selectoin
244247
edm::ParameterSet highptjetparms = pSet.getParameter<edm::ParameterSet>("highPtJetTrigger");
@@ -312,12 +315,14 @@ JetAnalyzer::~JetAnalyzer() {
312315
// ***********************************************************
313316
void JetAnalyzer::bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& iRun, edm::EventSetup const&) {
314317
if (isScoutingJet_) {
318+
std::string baseDir = isOnlineDQM_ ? "HLT/ScoutingOnline/Jet/" : "HLT/ScoutingOffline/Jet/";
319+
315320
if (jetCleaningFlag_) {
316-
ibooker.setCurrentFolder("HLT/ScoutingOffline/Jet/Cleaned" + mInputCollection_.label());
317-
DirName = "HLT/ScoutingOffline/Jet/Cleaned" + mInputCollection_.label();
321+
ibooker.setCurrentFolder(baseDir + "Cleaned" + mInputCollection_.label());
322+
DirName = baseDir + "Cleaned" + mInputCollection_.label();
318323
} else {
319-
ibooker.setCurrentFolder("HLT/ScoutingOffline/Jet/Uncleaned" + mInputCollection_.label());
320-
DirName = "HLT/ScoutingOffline/Jet/Uncleaned" + mInputCollection_.label();
324+
ibooker.setCurrentFolder(baseDir + "Uncleaned" + mInputCollection_.label());
325+
DirName = baseDir + "Uncleaned" + mInputCollection_.label();
321326
}
322327
} else {
323328
if (jetCleaningFlag_) {
@@ -2614,10 +2619,12 @@ void JetAnalyzer::dqmBeginRun(const edm::Run& iRun, const edm::EventSetup& iSetu
26142619
void JetAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
26152620
//set general folders first --> change later on for different folders
26162621
if (isScoutingJet_) {
2622+
std::string baseDir = isOnlineDQM_ ? "HLT/ScoutingOnline/Jet/" : "HLT/ScoutingOffline/Jet/";
2623+
26172624
if (jetCleaningFlag_) {
2618-
DirName = "HLT/ScoutingOffline/Jet/Cleaned" + mInputCollection_.label();
2625+
DirName = baseDir + "Cleaned" + mInputCollection_.label();
26192626
} else {
2620-
DirName = "HLT/ScoutingOffline/Jet/Uncleaned" + mInputCollection_.label();
2627+
DirName = baseDir + "Uncleaned" + mInputCollection_.label();
26212628
}
26222629
} else {
26232630
if (jetCleaningFlag_) {

DQMOffline/JetMET/src/JetMETDQMDCSFilter.cc

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,30 +15,41 @@ JetMETDQMDCSFilter::JetMETDQMDCSFilter(const edm::ParameterSet& pset, edm::Consu
1515
verbose_ = pset.getUntrackedParameter<bool>("DebugOn", false);
1616
detectorTypes_ = pset.getUntrackedParameter<std::string>("DetectorTypes", "ecal:hcal");
1717
filter_ = !pset.getUntrackedParameter<bool>("alwaysPass", false);
18-
scalarsToken_ = iC.consumes<DcsStatusCollection>(std::string("scalersRawToDigi"));
19-
dcsRecordToken_ = iC.consumes<DCSRecord>(std::string("onlineMetaDataDigis"));
18+
scalersSrc_ = pset.getUntrackedParameter<edm::InputTag>("scalerSrc", edm::InputTag("scalersRawToDigi"));
19+
onlineMetaDataDigiSrc_ =
20+
pset.getUntrackedParameter<edm::InputTag>("onlineMetaDataDigisSrc", edm::InputTag("onlineMetaDataDigis"));
21+
scalarsToken_ = iC.consumes<DcsStatusCollection>(scalersSrc_);
22+
dcsRecordToken_ = iC.consumes<DCSRecord>(onlineMetaDataDigiSrc_);
2023

2124
detectorOn_ = false;
2225
if (verbose_)
23-
edm::LogPrint("JetMETDQMDCSFilter") << " constructor: " << detectorTypes_ << std::endl;
26+
edm::LogPrint("JetMETDQMDCSFilter") << " constructor: " << detectorTypes_
27+
<< " onlineMetaDataSource: " << onlineMetaDataDigiSrc_.encode() << std::endl;
2428

2529
// initialize variables
2630
initializeVars();
2731
}
2832

29-
JetMETDQMDCSFilter::JetMETDQMDCSFilter(const std::string& detectorTypes,
33+
JetMETDQMDCSFilter::JetMETDQMDCSFilter(const edm::ParameterSet& pset,
34+
const std::string& detectorTypes,
3035
edm::ConsumesCollector& iC,
3136
const bool verbose,
3237
const bool alwaysPass) {
3338
verbose_ = verbose;
3439
detectorTypes_ = detectorTypes;
3540
filter_ = !alwaysPass;
36-
scalarsToken_ = iC.consumes<DcsStatusCollection>(std::string("scalersRawToDigi"));
37-
dcsRecordToken_ = iC.consumes<DCSRecord>(std::string("onlineMetaDataDigis"));
41+
42+
scalersSrc_ = pset.getUntrackedParameter<edm::InputTag>("scalerSrc", edm::InputTag("scalersRawToDigi"));
43+
onlineMetaDataDigiSrc_ =
44+
pset.getUntrackedParameter<edm::InputTag>("onlineMetaDataDigisSrc", edm::InputTag("onlineMetaDataDigis"));
45+
46+
scalarsToken_ = iC.consumes<DcsStatusCollection>(scalersSrc_);
47+
dcsRecordToken_ = iC.consumes<DCSRecord>(onlineMetaDataDigiSrc_);
3848

3949
detectorOn_ = false;
4050
if (verbose_)
41-
edm::LogPrint("JetMETDQMDCSFilter") << " constructor: " << detectorTypes_ << std::endl;
51+
edm::LogPrint("JetMETDQMDCSFilter") << " constructor with no pset: " << detectorTypes_
52+
<< " onlineMetaDataSource: " << onlineMetaDataDigiSrc_.encode() << std::endl;
4253

4354
// initialize variables
4455
initializeVars();

0 commit comments

Comments
 (0)