Skip to content

Commit

Permalink
give OnlineLuminosityRecord info to HLT's LumiMonitor plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
missirol committed Oct 28, 2022
1 parent 77d1d2b commit 2590949
Show file tree
Hide file tree
Showing 9 changed files with 150 additions and 193 deletions.
1 change: 1 addition & 0 deletions DQM/HLTEvF/plugins/BuildFile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<use name="DataFormats/HLTReco"/>
<use name="DataFormats/JetReco"/>
<use name="DataFormats/L1TGlobal"/>
<use name="DataFormats/OnlineMetaData"/>
<use name="DataFormats/RecoCandidate"/>
<use name="FWCore/Framework"/>
<use name="FWCore/MessageLogger"/>
Expand Down
122 changes: 59 additions & 63 deletions DQM/HLTEvF/plugins/LumiMonitor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

#include "DQM/TrackingMonitor/interface/GetLumi.h"
#include "DQMServices/Core/interface/DQMGlobalEDAnalyzer.h"
#include "DataFormats/Luminosity/interface/LumiDetails.h"
#include "DataFormats/Luminosity/interface/LumiSummary.h"
#include "DataFormats/OnlineMetaData/interface/OnlineLuminosityRecord.h"
#include "DataFormats/Scalers/interface/LumiScalers.h"
#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h"
#include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
Expand Down Expand Up @@ -55,43 +54,42 @@ class LumiMonitor : public DQMGlobalEDAnalyzer<Histograms> {
static MEbinning getHistoPSet(const edm::ParameterSet& pset);
static MEbinning getHistoLSPSet(const edm::ParameterSet& pset);

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> const trkTopoToken_;

std::string folderName_;

edm::EDGetTokenT<LumiScalersCollection> lumiScalersToken_;
MEbinning lumi_binning_;
MEbinning pu_binning_;
MEbinning ls_binning_;

bool doPixelLumi_;
edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster>> pixelClustersToken_;
bool useBPixLayer1_;
int minNumberOfPixelsPerCluster_;
float minPixelClusterCharge_;
MEbinning pixelCluster_binning_;
MEbinning pixellumi_binning_;
std::string const folderName_;

edm::EDGetTokenT<LumiSummary> lumiSummaryToken_;
edm::EDGetTokenT<LumiScalersCollection> const lumiScalersToken_;
edm::EDGetTokenT<OnlineLuminosityRecord> const onlineMetaDataDigisToken_;
MEbinning const lumi_binning_;
MEbinning const pu_binning_;
MEbinning const ls_binning_;

float lumi_factor_per_bx_;
bool const doPixelLumi_;
edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> const trkTopoToken_;
edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster>> const pixelClustersToken_;
bool const useBPixLayer1_;
int const minNumberOfPixelsPerCluster_;
float const minPixelClusterCharge_;
MEbinning const pixelCluster_binning_;
MEbinning const pixellumi_binning_;
float const lumi_factor_per_bx_;
};

// -----------------------------
// constructors and destructor
// -----------------------------

LumiMonitor::LumiMonitor(const edm::ParameterSet& config)
: trkTopoToken_{esConsumes()},
folderName_(config.getParameter<std::string>("FolderName")),
lumiScalersToken_(consumes<LumiScalersCollection>(config.getParameter<edm::InputTag>("scalers"))),
: folderName_(config.getParameter<std::string>("folderName")),
lumiScalersToken_(consumes(config.getParameter<edm::InputTag>("scalers"))),
onlineMetaDataDigisToken_(consumes(config.getParameter<edm::InputTag>("onlineMetaDataDigis"))),
lumi_binning_(getHistoPSet(
config.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("lumiPSet"))),
pu_binning_(
getHistoPSet(config.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("puPSet"))),
ls_binning_(getHistoLSPSet(
config.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("lsPSet"))),
doPixelLumi_(config.getParameter<bool>("doPixelLumi")),
trkTopoToken_(doPixelLumi_ ? esConsumes<TrackerTopology, TrackerTopologyRcd>()
: edm::ESGetToken<TrackerTopology, TrackerTopologyRcd>()),
pixelClustersToken_(doPixelLumi_ ? consumes<edmNew::DetSetVector<SiPixelCluster>>(
config.getParameter<edm::InputTag>("pixelClusters"))
: edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster>>()),
Expand All @@ -103,13 +101,10 @@ LumiMonitor::LumiMonitor(const edm::ParameterSet& config)
: MEbinning{}),
pixellumi_binning_(doPixelLumi_ ? getHistoPSet(config.getParameter<edm::ParameterSet>("histoPSet")
.getParameter<edm::ParameterSet>("pixellumiPSet"))
: MEbinning{}) {
if (useBPixLayer1_) {
lumi_factor_per_bx_ = GetLumi::FREQ_ORBIT * GetLumi::SECONDS_PER_LS / GetLumi::XSEC_PIXEL_CLUSTER;
} else {
lumi_factor_per_bx_ = GetLumi::FREQ_ORBIT * GetLumi::SECONDS_PER_LS / GetLumi::rXSEC_PIXEL_CLUSTER;
}
}
: MEbinning{}),
lumi_factor_per_bx_(useBPixLayer1_
? GetLumi::FREQ_ORBIT * GetLumi::SECONDS_PER_LS / GetLumi::XSEC_PIXEL_CLUSTER
: GetLumi::FREQ_ORBIT * GetLumi::SECONDS_PER_LS / GetLumi::rXSEC_PIXEL_CLUSTER) {}

MEbinning LumiMonitor::getHistoPSet(const edm::ParameterSet& pset) {
return MEbinning{
Expand All @@ -131,94 +126,94 @@ void LumiMonitor::bookHistograms(DQMStore::IBooker& booker,

if (doPixelLumi_) {
auto me = booker.book1D("numberOfPixelClustersVsLS",
"number of pixel clusters vs LS",
"number of pixel clusters vs lumisection",
ls_binning_.nbins,
ls_binning_.xmin,
ls_binning_.xmax);
me->setAxisTitle("LS", 1);
me->setAxisTitle("lumisection", 1);
me->setAxisTitle("number of pixel clusters", 2);
histograms.numberOfPixelClustersVsLS = me;

me = booker.bookProfile("numberOfPixelClustersVsLumi",
"number of pixel clusters vs scal lumi",
"number of pixel clusters vs online lumi",
lumi_binning_.nbins,
lumi_binning_.xmin,
lumi_binning_.xmax,
pixelCluster_binning_.xmin,
pixelCluster_binning_.xmax);
me->setAxisTitle("scal inst lumi E30 [Hz cm^{-2}]", 1);
me->setAxisTitle("online inst lumi E30 [Hz cm^{-2}]", 1);
me->setAxisTitle("number of pixel clusters", 2);
histograms.numberOfPixelClustersVsLumi = me;

me = booker.bookProfile("pixelLumiVsLS",
"pixel-lumi vs LS",
"pixel-lumi vs lumisection",
ls_binning_.nbins,
ls_binning_.xmin,
ls_binning_.xmax,
pixellumi_binning_.xmin,
pixellumi_binning_.xmax);
me->setAxisTitle("LS", 1);
me->setAxisTitle("lumisection", 1);
me->setAxisTitle("pixel-based inst lumi E30 [Hz cm^{-2}]", 2);
histograms.pixelLumiVsLS = me;

me = booker.bookProfile("pixelLumiVsLumi",
"pixel-lumi vs scal lumi",
"pixel-lumi vs online lumi",
lumi_binning_.nbins,
lumi_binning_.xmin,
lumi_binning_.xmax,
pixellumi_binning_.xmin,
lumi_binning_.xmax);
me->setAxisTitle("scal inst lumi E30 [Hz cm^{-2}]", 1);
me->setAxisTitle("online inst lumi E30 [Hz cm^{-2}]", 1);
me->setAxisTitle("pixel-based inst lumi E30 [Hz cm^{-2}]", 2);
histograms.pixelLumiVsLumi = me;
}

auto me = booker.bookProfile("lumiVsLS",
"scal lumi vs LS",
"online lumi vs lumisection",
ls_binning_.nbins,
ls_binning_.xmin,
ls_binning_.xmax,
lumi_binning_.xmin,
lumi_binning_.xmax);
me->setAxisTitle("LS", 1);
me->setAxisTitle("scal inst lumi E30 [Hz cm^{-2}]", 2);
me->setAxisTitle("lumisection", 1);
me->setAxisTitle("online inst lumi E30 [Hz cm^{-2}]", 2);
histograms.lumiVsLS = me;

me = booker.bookProfile("puVsLS",
"scal PU vs LS",
"online pileup vs lumisection",
ls_binning_.nbins,
ls_binning_.xmin,
ls_binning_.xmax,
pu_binning_.xmin,
pu_binning_.xmax);
me->setAxisTitle("LS", 1);
me->setAxisTitle("scal PU", 2);
me->setAxisTitle("lumisection", 1);
me->setAxisTitle("online pileup", 2);
histograms.puVsLS = me;
}

void LumiMonitor::dqmAnalyze(edm::Event const& event,
edm::EventSetup const& setup,
Histograms const& histograms) const {
int ls = event.id().luminosityBlock();

float scal_lumi = -1.;
float scal_pu = -1.;
edm::Handle<LumiScalersCollection> lumiScalers;
event.getByToken(lumiScalersToken_, lumiScalers);
if (lumiScalers.isValid() and not lumiScalers->empty()) {
auto scalit = lumiScalers->begin();
scal_lumi = scalit->instantLumi();
scal_pu = scalit->pileup();
} else {
scal_lumi = -1.;
scal_pu = -1.;
int const ls = event.id().luminosityBlock();

float online_lumi = -1.f;
float online_pu = -1.f;
auto const lumiScalersHandle = event.getHandle(lumiScalersToken_);
auto const onlineMetaDataDigisHandle = event.getHandle(onlineMetaDataDigisToken_);
if (lumiScalersHandle.isValid() and not lumiScalersHandle->empty()) {
auto const scalit = lumiScalersHandle->begin();
online_lumi = scalit->instantLumi();
online_pu = scalit->pileup();
} else if (onlineMetaDataDigisHandle.isValid()) {
online_lumi = onlineMetaDataDigisHandle->instLumi();
online_pu = onlineMetaDataDigisHandle->avgPileUp();
}
histograms.lumiVsLS->Fill(ls, scal_lumi);
histograms.puVsLS->Fill(ls, scal_pu);
histograms.lumiVsLS->Fill(ls, online_lumi);
histograms.puVsLS->Fill(ls, online_pu);

if (doPixelLumi_) {
size_t pixel_clusters = 0;
float pixel_lumi = -1.;
float pixel_lumi = -1.f;
edm::Handle<edmNew::DetSetVector<SiPixelCluster>> pixelClusters;
event.getByToken(pixelClustersToken_, pixelClusters);
if (pixelClusters.isValid()) {
Expand Down Expand Up @@ -249,9 +244,9 @@ void LumiMonitor::dqmAnalyze(edm::Event const& event,
}

histograms.numberOfPixelClustersVsLS->Fill(ls, pixel_clusters);
histograms.numberOfPixelClustersVsLumi->Fill(scal_lumi, pixel_clusters);
histograms.numberOfPixelClustersVsLumi->Fill(online_lumi, pixel_clusters);
histograms.pixelLumiVsLS->Fill(ls, pixel_lumi);
histograms.pixelLumiVsLumi->Fill(scal_lumi, pixel_lumi);
histograms.pixelLumiVsLumi->Fill(online_lumi, pixel_lumi);
}
}

Expand All @@ -267,7 +262,8 @@ void LumiMonitor::fillDescriptions(edm::ConfigurationDescriptions& descriptions)
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("pixelClusters", edm::InputTag("hltSiPixelClusters"));
desc.add<edm::InputTag>("scalers", edm::InputTag("hltScalersRawToDigi"));
desc.add<std::string>("FolderName", "HLT/LumiMonitoring");
desc.add<edm::InputTag>("onlineMetaDataDigis", edm::InputTag("hltOnlineMetaDataDigis"));
desc.add<std::string>("folderName", "HLT/LumiMonitoring");
desc.add<bool>("doPixelLumi", false);
desc.add<bool>("useBPixLayer1", false);
desc.add<int>("minNumberOfPixelsPerCluster", 2); // from DQM/PixelLumi/python/PixelLumiDQM_cfi.py
Expand Down
2 changes: 1 addition & 1 deletion DQM/HLTEvF/python/HLTLumiMonitoring_cff.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import FWCore.ParameterSet.Config as cms

from DQMOffline.Trigger.DQMOffline_LumiMontiroring_cff import *
from DQMOffline.Trigger.DQMOffline_LumiMonitoring_cff import *

lumiOnlineMonitorHLTsequence = cms.Sequence(
lumiMonitorHLTsequence
Expand Down
39 changes: 0 additions & 39 deletions DQM/HLTEvF/python/LumiMonitor_cff.py

This file was deleted.

14 changes: 7 additions & 7 deletions DQM/Integration/python/clients/hlt_dqm_clientPB-live_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@
process.load('HLTrigger.Timer.fastTimerServiceClient_cfi')
process.fastTimerServiceClient.dqmPath = "HLT/TimerService"
# timing VS lumi
process.fastTimerServiceClient.doPlotsVsScalLumi = True
process.fastTimerServiceClient.doPlotsVsOnlineLumi = True
process.fastTimerServiceClient.doPlotsVsPixelLumi = False
process.fastTimerServiceClient.scalLumiME = cms.PSet(
folder = cms.string('HLT/LumiMonitoring'),
name = cms.string('lumiVsLS'),
nbins = cms.int32(5000),
xmin = cms.double(0),
xmax = cms.double(20000)
process.fastTimerServiceClient.onlineLumiME = dict(
folder = 'HLT/LumiMonitoring',
name = 'lumiVsLS',
nbins = 5000,
xmin = 0,
xmax = 20000
)

# ThroughputService client
Expand Down
49 changes: 49 additions & 0 deletions DQMOffline/Trigger/python/DQMOffline_LumiMonitoring_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import FWCore.ParameterSet.Config as cms

# lumi from scalers
#hltScalersRawToDigi4DQM = cms.EDProducer( "ScalersRawToDigi",
# scalersInputTag = cms.InputTag( "rawDataCollector" )
#)

from DQM.HLTEvF.lumiMonitor_cfi import lumiMonitor as _lumiMonitor

hltLumiMonitor = _lumiMonitor.clone(
folderName = 'HLT/LumiMonitoring',
scalers = 'scalersRawToDigi',
onlineMetaDataDigis = 'onlineMetaDataDigis',
doPixelLumi = False,
useBPixLayer1 = False,
pixelClusters = 'hltSiPixelClusters',
minNumberOfPixelsPerCluster = 2,
minPixelClusterCharge = 15000,
histoPSet = dict(
lsPSet = dict(
nbins = 2500
),
pixelClusterPSet = dict(
nbins = 200,
xmin = -0.5,
xmax = 19999.5
),
puPSet = dict(
nbins = 130,
xmin = 0,
xmax = 130
),
lumiPSet = dict(
nbins = 440,
xmin = 0,
xmax = 22000
),
pixellumiPSet = dict(
nbins = 300,
xmin = 0,
xmax = 3
)
)
)

lumiMonitorHLTsequence = cms.Sequence(
# hltScalersRawToDigi4DQM +
hltLumiMonitor
)
Loading

0 comments on commit 2590949

Please sign in to comment.