8 : folderName_(iConfig.getParameter<
std::
string>(
"FolderName")),
10 muonPt_variable_binning_(
11 iConfig.getParameter<
edm::
ParameterSet>(
"histoPSet").getParameter<
std::vector<double>>(
"muonPtBinning")),
12 muonPt_binning_(getHistoPSet(
14 muonEta_binning_(getHistoPSet(
16 muonPhi_binning_(getHistoPSet(
18 muonDxy_binning_(getHistoPSet(
23 iConfig.getParameter<
edm::
ParameterSet>(
"numGenericTriggerEventPSet"), consumesCollector(), *this)),
25 iConfig.getParameter<
edm::
ParameterSet>(
"denGenericTriggerEventPSet"), consumesCollector(), *this)),
26 muonSelectionGeneral_(
30 nmuons_(iConfig.getParameter<unsigned
int>(
"nmuons")) {
91 me.
numerator = ibooker.
book1D(histname +
"_numerator", histtitle +
" (numerator)", nbins, min, max);
92 me.
denominator = ibooker.
book1D(histname +
"_denominator", histtitle +
" (denominator)", nbins, min, max);
98 const std::vector<double>&
binning) {
99 int nbins = binning.size() - 1;
100 std::vector<float> fbinning(binning.begin(), binning.end());
101 float* arr = &fbinning[0];
102 me.
numerator = ibooker.
book1D(histname +
"_numerator", histtitle +
" (numerator)", nbins, arr);
103 me.
denominator = ibooker.
book1D(histname +
"_denominator", histtitle +
" (denominator)", nbins, arr);
116 ibooker.
bookProfile(histname +
"_numerator", histtitle +
" (numerator)", nbinsX, xmin, xmax, ymin, ymax);
119 ibooker.
bookProfile(histname +
"_denominator", histtitle +
" (denominator)", nbinsX, xmin, xmax, ymin, ymax);
132 ibooker.
book2D(histname +
"_numerator", histtitle +
" (numerator)", nbinsX, xmin, xmax, nbinsY, ymin, ymax);
134 ibooker.
book2D(histname +
"_denominator", histtitle +
" (denominator)", nbinsX, xmin, xmax, nbinsY, ymin, ymax);
140 const std::vector<double>& binningX,
141 const std::vector<double>& binningY) {
142 int nbinsX = binningX.size() - 1;
143 std::vector<float> fbinningX(binningX.begin(), binningX.end());
144 float* arrX = &fbinningX[0];
145 int nbinsY = binningY.size() - 1;
146 std::vector<float> fbinningY(binningY.begin(), binningY.end());
147 float* arrY = &fbinningY[0];
149 me.
numerator = ibooker.
book2D(histname +
"_numerator", histtitle +
" (numerator)", nbinsX, arrX, nbinsY, arrY);
150 me.
denominator = ibooker.
book2D(histname +
"_denominator", histtitle +
" (denominator)", nbinsX, arrX, nbinsY, arrY);
163 histtitle =
"muonPt";
166 setTitle(
muonPtME_,
"DisplacedStandAlone Muon p_{T} [GeV]",
"Events / [GeV]", bookDen);
168 histname =
"muonPtNoDxyCut";
169 histtitle =
"muonPtNoDxyCut";
180 histname =
"muonPt_variable";
181 histtitle =
"muonPt";
186 histname =
"muonPtVsLS";
187 histtitle =
"muonPt vs LS";
201 histname =
"muonEta";
202 histtitle =
"muonEta";
208 histname =
"muonPhi";
209 histtitle =
"muonPhi";
215 histname =
"muonDxy";
216 histtitle =
"muonDxy";
227 histname =
"subMuonPt";
228 histtitle =
"subMuonPt";
232 setTitle(
subMuonPtME_,
"Subleading DisplacedStandAlone Muon p_{T} [GeV]",
"Events / [GeV]", bookDen);
234 histname =
"subMuonPt_variable";
235 histtitle =
"subMuonPt";
241 histname =
"subMuonEta";
242 histtitle =
"subMuonEta";
253 histname =
"subMuonPhi";
254 histtitle =
"subMuonPhi";
265 histname =
"subMuonDxy";
266 histtitle =
"subMuonDxy";
294 if ((
unsigned int)(DSAHandle->size()) <
nmuons_)
296 std::vector<edm::Ptr<reco::Track>> dsaMuonPtrs_{};
297 for (
size_t i(0);
i != DSAHandle->size(); ++
i) {
298 dsaMuonPtrs_.emplace_back(DSAHandle,
i);
300 std::vector<edm::Ptr<reco::Track>>
muons{}, muonsCutOnPt{}, muonsCutOnDxy{}, muonsCutOnPtAndDxy{};
304 std::copy_if(dsaMuonPtrs_.begin(), dsaMuonPtrs_.end(), back_inserter(
muons), selectGeneral_);
310 return lhs->
pt() > rhs->pt();
312 std::sort(
muons.begin(),
muons.end(), ptSorter_);
316 std::copy_if(
muons.begin(),
muons.end(), back_inserter(muonsCutOnPt), selectOnPt_);
319 std::copy_if(
muons.begin(),
muons.end(), back_inserter(muonsCutOnDxy), selectOnDxy_);
321 auto selectOnPtAndDxy_(
323 std::copy_if(
muons.begin(),
muons.end(), back_inserter(muonsCutOnPtAndDxy), selectOnPtAndDxy_);
325 std::sort(muonsCutOnPt.begin(), muonsCutOnPt.end(), ptSorter_);
326 std::sort(muonsCutOnDxy.begin(), muonsCutOnDxy.end(), ptSorter_);
327 std::sort(muonsCutOnPtAndDxy.begin(), muonsCutOnPtAndDxy.end(), ptSorter_);
332 if (muonsCutOnDxy.size() >=
nmuons_) {
343 if (muonsCutOnPtAndDxy.size() >=
nmuons_) {
352 if (muonsCutOnPt.size() >=
nmuons_) {
366 if (muonsCutOnDxy.size() >=
nmuons_) {
377 if (muonsCutOnPtAndDxy.size() >=
nmuons_) {
386 if (muonsCutOnPt.size() >=
nmuons_) {
396 pset.
add<
unsigned int>(
"nbins", 200);
397 pset.
add<
double>(
"xmin", -0.5);
398 pset.
add<
double>(
"xmax", 19999.5);
402 pset.
add<
unsigned int>(
"nbins", 2000);
410 desc.
add<
unsigned int>(
"nmuons", 2);
413 muonSelection.add<
std::string>(
"general",
"pt > 0");
419 genericTriggerEventPSet.add<
bool>(
"andOr");
421 genericTriggerEventPSet.add<std::vector<int>>(
"dcsPartitions", {});
422 genericTriggerEventPSet.add<
bool>(
"andOrDcs",
false);
423 genericTriggerEventPSet.add<
bool>(
"errorReplyDcs",
true);
424 genericTriggerEventPSet.add<
std::string>(
"dbLabel",
"");
425 genericTriggerEventPSet.add<
bool>(
"andOrHlt",
true);
427 genericTriggerEventPSet.add<std::vector<std::string>>(
"hltPaths", {});
428 genericTriggerEventPSet.add<
std::string>(
"hltDBKey",
"");
429 genericTriggerEventPSet.add<
bool>(
"errorReplyHlt",
false);
430 genericTriggerEventPSet.add<
unsigned int>(
"verbosityLevel", 1);
451 std::vector<double>
bins = {0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140., 150., 160.,
452 170., 180., 190., 200., 220., 240., 260., 280., 300., 350., 400., 450., 1000.};
453 histoPSet.add<std::vector<double>>(
"muonPtBinning",
bins);
457 descriptions.
add(
"DiDispStaMuonMonitoring", desc);
DiDispStaMuonME subMuonPtME_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
T getParameter(std::string const &) const
~DiDispStaMuonMonitor() override
void setTitle(DiDispStaMuonME &me, const std::string &titleX, const std::string &titleY, bool bookDen)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
DiDispStaMuonME subMuonEtaME_
std::vector< double > muonPt_variable_binning_
static MEbinning getHistoPSet(const edm::ParameterSet &pset)
DiDispStaMuonME muonPtNoDxyCutME_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
void setCurrentFolder(std::string const &fullpath)
static MEbinning getHistoLSPSet(const edm::ParameterSet &pset)
static void fillHistoLSPSetDescription(edm::ParameterSetDescription &pset)
DiDispStaMuonME muonPhiME_
std::vector< Track > TrackCollection
collection of Tracks
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
LuminosityBlockNumber_t luminosityBlock() const
MonitorElement * denominator
MEbinning muonPt_binning_
#define DEFINE_FWK_MODULE(type)
DiDispStaMuonME subMuonDxyME_
std::unique_ptr< GenericTriggerEventFlag > num_genTriggerEventFlag_
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
StringCutObjectSelector< reco::Track, true > muonSelectionDxy_
StringCutObjectSelector< reco::Track, true > muonSelectionGeneral_
double pt() const
track transverse momentum
void bookME(DQMStore::IBooker &, DiDispStaMuonME &me, const std::string &histname, const std::string &histtitle, int nbins, double xmin, double xmax)
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, char const *option="s")
MEbinning muonEta_binning_
DiDispStaMuonMonitor(const edm::ParameterSet &)
MEbinning muonDxy_binning_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
std::unique_ptr< GenericTriggerEventFlag > den_genTriggerEventFlag_
MonitorElement * numerator
static void fillHistoPSetDescription(edm::ParameterSetDescription &pset)
DiDispStaMuonME muonEtaME_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
StringCutObjectSelector< reco::Track, true > muonSelectionPt_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
DiDispStaMuonME muonPtVsLS_
MEbinning muonPhi_binning_
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
DiDispStaMuonME subMuonPtME_variableBinning_
edm::EDGetTokenT< reco::TrackCollection > muonToken_
DiDispStaMuonME muonDxyME_
DiDispStaMuonME subMuonPhiME_
DiDispStaMuonME muonPtME_
DiDispStaMuonME muonPtME_variableBinning_
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)