16 #include <boost/algorithm/string/replace.hpp> 41 string moduleLabel,
bool islastfilter) :
42 hltProcessName_(pset.getParameter<
string>(
"hltProcessName")),
43 destination_(pset.getUntrackedParameter<
string>(
"destination")),
44 requiredTriggers_(pset.getUntrackedParameter<
vstring>(
"requiredTriggers")),
48 moduleLabel_(
std::
move(moduleLabel)),
49 isLastFilter_(islastfilter),
50 hasTargetRecoCuts(targetParams_.exists(
"recoCuts")),
51 hasProbeRecoCuts(probeParams_.exists(
"recoCuts")),
52 targetMuonSelector_(targetParams_.getUntrackedParameter<
string>(
"recoCuts",
"")),
53 targetZ0Cut_(targetParams_.getUntrackedParameter<double>(
"z0Cut",0.)),
54 targetD0Cut_(targetParams_.getUntrackedParameter<double>(
"d0Cut",0.)),
55 targetptCutZ_(targetParams_.getUntrackedParameter<double>(
"ptCut_Z",20.)),
56 targetptCutJpsi_(targetParams_.getUntrackedParameter<double>(
"ptCut_Jpsi",20.)),
57 probeMuonSelector_(probeParams_.getUntrackedParameter<
string>(
"recoCuts",
"")),
58 probeZ0Cut_(probeParams_.getUntrackedParameter<double>(
"z0Cut",0.)),
59 probeD0Cut_(probeParams_.getUntrackedParameter<double>(
"d0Cut",0.)),
60 triggerSelector_(targetParams_.getUntrackedParameter<
string>(
"hltCuts",
"")),
61 hasTriggerCuts_(targetParams_.exists(
"hltCuts"))
69 TPRegexp levelRegexp(
"L[1-3]");
72 TObjArray * levelArray = levelRegexp.MatchS(
moduleLabel_);
73 if (levelArray->GetEntriesFast() > 0) {
74 triggerLevel_ =
static_cast<const char *
>(((TObjString *)levelArray->At(0))->GetString());
80 TPRegexp ptRegexp(
"Mu([0-9]*)");
81 TObjArray * objArray = ptRegexp.MatchS(
hltPath_);
82 if (objArray->GetEntriesFast() >= 2) {
83 auto * ptCutString = (TObjString *)objArray->At(1);
84 cutMinPt_ = atoi(ptCutString->GetString());
96 TPRegexp suffixPtCut(
"Mu[0-9]+$");
99 if (baseDir[baseDir.size() - 1] !=
'/') baseDir +=
'/';
112 book1D(iBooker,
"hltPt",
"pt",
";p_{T} of HLT object");
113 book1D(iBooker,
"hltEta",
"eta",
";#eta of HLT object");
114 book1D(iBooker,
"hltPhi",
"phi",
";#phi of HLT object");
115 book1D(iBooker,
"resolutionEta",
"resolutionEta",
";#eta^{reco}-#eta^{HLT};");
116 book1D(iBooker,
"resolutionPhi",
"resolutionPhi",
";#phi^{reco}-#phi^{HLT};");
118 book1D(iBooker,
"deltaR",
"deltaR",
";#Deltar(reco, HLT);");
120 book1D(iBooker,
"resolutionPt",
"resolutionRel",
121 ";(p_{T}^{reco}-p_{T}^{HLT})/|p_{T}^{reco}|;");
131 book1D(iBooker,
"efficiencyEta_" +
suffix,
"eta",
";#eta;");
132 book1D(iBooker,
"efficiencyPhi_" +
suffix,
"phi",
";#phi;");
133 book1D(iBooker,
"efficiencyTurnOn_" +
suffix,
"pt",
";p_{T};");
134 book1D(iBooker,
"efficiencyVertex_" +
suffix,
"NVertex",
";NVertex;");
135 book1D(iBooker,
"efficiencyDeltaR_" +
suffix,
"deltaR2",
";#Delta R;");
137 book2D(iBooker,
"efficiencyPhiVsEta_" +
suffix,
"etaCoarse",
138 "phiCoarse",
";#eta;#phi");
140 auto MRbaseDir = boost::replace_all_copy<string>(baseDir,
"HLT/Muon",
"HLT/Muon/MR");
146 book2D(iBooker,
"MR_efficiencyPhiVsEta_" +
suffix,
"etaCoarse",
147 "phiHEP17",
";#eta;#phi");
157 book1D(iBooker,
"efficiencyD0_" +
suffix,
"d0",
";d0;");
158 book1D(iBooker,
"efficiencyZ0_" +
suffix,
"z0",
";z0;");
159 book1D(iBooker,
"efficiencyCharge_" +
suffix,
"charge",
";charge;");
161 book1D(iBooker,
"fakerateEta_" +
suffix,
"eta",
";#eta;");
162 book1D(iBooker,
"fakerateVertex_" +
suffix,
"NVertex",
";NVertex;");
163 book1D(iBooker,
"fakeratePhi_" +
suffix,
"phi",
";#phi;");
164 book1D(iBooker,
"fakerateTurnOn_" +
suffix,
"pt",
";p_{T};");
166 book1D(iBooker,
"massVsEtaZ_" +
suffix,
"etaCoarse",
";#eta");
167 book1D(iBooker,
"massVsEtaJpsi_" +
suffix,
"etaCoarse",
";#eta");
168 book1D(iBooker,
"massVsPtZ_" +
suffix,
"ptCoarse",
";p_{T}");
169 book1D(iBooker,
"massVsPtJpsi_" +
suffix,
"ptCoarse",
";p_{T}");
170 book1D(iBooker,
"massVsVertexZ_" +
suffix,
"NVertex",
";NVertex");
171 book1D(iBooker,
"massVsVertexJpsi_" +
suffix,
"NVertex",
";NVertex");
176 book1D(iBooker,
"Refefficiency_Eta_Mu1_" +
suffix,
"etaCoarse",
";#eta;");
177 book1D(iBooker,
"Refefficiency_Eta_Mu2_" +
suffix,
"etaCoarse",
";#eta;");
178 book1D(iBooker,
"Refefficiency_TurnOn_Mu1_" +
suffix,
"ptCoarse",
";p_{T};");
179 book1D(iBooker,
"Refefficiency_TurnOn_Mu2_" +
suffix,
"ptCoarse",
";p_{T};");
180 book1D(iBooker,
"Refefficiency_Vertex_" +
suffix,
"NVertex",
";NVertex;");
181 book1D(iBooker,
"Refefficiency_DZ_Mu_" +
suffix,
"z0",
";z0;");
183 book2D(iBooker,
"Refefficiency_Eta_"+
suffix,
"etaCoarse",
"etaCoarse",
";#eta;#eta");
184 book2D(iBooker,
"Refefficiency_Pt_"+
suffix,
"ptCoarse",
"ptCoarse",
";p_{T};p_{T}");
185 book1D(iBooker,
"Refefficiency_DZ_Vertex_" +
suffix,
"NVertex",
";NVertex;");
186 book1D(iBooker,
"Ref_SS_pt1_" +
suffix,
"ptCoarse",
";p_{T}");
187 book1D(iBooker,
"Ref_SS_pt2_" +
suffix,
"ptCoarse",
";p_{T}");
188 book1D(iBooker,
"Ref_SS_eta1_" +
suffix,
"etaCoarse",
";#eta;");
189 book1D(iBooker,
"Ref_SS_eta2_" +
suffix,
"etaCoarse",
";#eta;");
196 book1D(iBooker,
"MR_Refefficiency_TurnOn_Mu1_" +
suffix,
"pt",
";p_{T};");
197 book1D(iBooker,
"MR_Refefficiency_TurnOn_Mu2_" +
suffix,
"pt",
";p_{T};");
198 book1D(iBooker,
"MR_Refefficiency_Vertex_" +
suffix,
"NVertexFine",
";NVertex;");
199 book1D(iBooker,
"MR_Refefficiency_DZ_Mu_" +
suffix,
"z0Fine",
";z0;");
201 book2D(iBooker,
"MR_Refefficiency_Pt_"+
suffix,
"pt",
"pt",
";p_{T};p_{T}");
202 book1D(iBooker,
"MR_Refefficiency_DZ_Vertex_" +
suffix,
"NVertexFine",
";NVertex;");
204 book1D(iBooker,
"MR_massVsPtZ_" +
suffix,
"pt",
";p_{T}");
205 book1D(iBooker,
"MR_massVsPtJpsi_" +
suffix,
"pt",
";p_{T}");
206 book1D(iBooker,
"MR_massVsVertexZ_" +
suffix,
"NVertex",
";NVertex");
207 book1D(iBooker,
"MR_massVsVertexJpsi_" +
suffix,
"NVertexFine",
";NVertex");
208 book1D(iBooker,
"MR_massVsDZZ_" +
suffix,
"z0Fine",
";z0;");
209 book1D(iBooker,
"MR_massVsEtaZ_" +
suffix,
"etaFine",
";#eta");
210 book1D(iBooker,
"MR_massVsEtaJpsi_" +
suffix,
"etaFine",
";#eta");
211 book1D(iBooker,
"MR_massVsPhiZ_" +
suffix,
"phiFine",
";#phi");
212 book1D(iBooker,
"MR_massVsPhiJpsi_" +
suffix,
"phiFine",
";#phi");
288 for (
auto & hltMuon : hltMuons) {
289 hists_[
"hltPt"]->Fill(hltMuon.pt());
290 hists_[
"hltEta"]->Fill(hltMuon.eta());
291 hists_[
"hltPhi"]->Fill(hltMuon.phi());
299 bool pairalreadyconsidered =
false;
300 for (
size_t i = 0;
i < targetMuons.size();
i++) {
304 if (matches[
i] < targetMuons.size()) {
306 double ptRes = (muon.
pt() - hltMuon.
pt()) / muon.
pt();
307 hists_[
"resolutionPt"]->Fill(ptRes);
311 double etaRes = muon.
eta() - hltMuon.
eta();
312 double phiRes = muon.
phi() - hltMuon.
phi();
313 hists_[
"resolutionEta"]->Fill(etaRes);
314 hists_[
"resolutionPhi"]->Fill(phiRes);
322 if (
suffix ==
"numer" && matches[
i] >= targetMuons.size())
continue;
340 hists_[
"efficiencyVertex_" +
suffix]->Fill(vertices->size());
357 if(matches[
i] >= targetMuons.size())
continue;
358 for (
size_t k = 0;
k < targetMuons.size();
k++) {
360 Muon & theProbe = targetMuons[
k];
361 if (muon.
charge() != theProbe.
charge() && !pairalreadyconsidered) {
362 double mass = (muon.
p4() + theProbe.
p4()).M();
364 if(mass > 60 && mass < 120) {
366 hists_[
"massVsPtZ_denom"]->Fill(theProbe.
pt());
367 hists_[
"massVsEtaZ_denom"]->Fill(theProbe.
eta());
369 hists_[
"MR_massVsEtaZ_denom"]->Fill(theProbe.
eta());
370 hists_[
"MR_massVsPhiZ_denom"]->Fill(theProbe.
phi());
371 hists_[
"MR_massVsPtZ_denom"]->Fill(theProbe.
pt());
372 hists_[
"massVsVertexZ_denom"]->Fill(vertices->size());
373 hists_[
"MR_massVsVertexZ_denom"]->Fill(vertices->size());
382 hists_[
"efficiencyDeltaR_denom" ]->Fill(
deltaR(theProbe, muon));
383 if(matches[
k] < targetMuons.size()) {
384 hists_[
"massVsPtZ_numer"]->Fill(theProbe.
pt());
385 hists_[
"MR_massVsPtZ_numer"]->Fill(theProbe.
pt());
387 hists_[
"MR_massVsPhiZ_numer"]->Fill(theProbe.
phi());
388 hists_[
"massVsEtaZ_numer"]->Fill(theProbe.
eta());
389 hists_[
"MR_massVsEtaZ_numer"]->Fill(theProbe.
eta());
390 hists_[
"massVsVertexZ_numer"]->Fill(vertices->size());
391 hists_[
"MR_massVsVertexZ_numer"]->Fill(vertices->size());
397 hists_[
"efficiencyDeltaR_numer" ]->Fill(
deltaR(theProbe, muon));
399 pairalreadyconsidered =
true;
401 if(mass > 1 && mass < 4) {
403 hists_[
"massVsEtaJpsi_denom"]->Fill(theProbe.
eta());
404 hists_[
"MR_massVsEtaJpsi_denom"]->Fill(theProbe.
eta());
405 hists_[
"massVsPtJpsi_denom"]->Fill(theProbe.
pt());
406 hists_[
"MR_massVsPtJpsi_denom"]->Fill(theProbe.
pt());
407 hists_[
"massVsVertexJpsi_denom"]->Fill(vertices->size());
408 hists_[
"MR_massVsVertexJpsi_denom"]->Fill(vertices->size());
409 if(matches[
k] < targetMuons.size()) {
410 hists_[
"massVsEtaJpsi_numer"]->Fill(theProbe.
eta());
411 hists_[
"MR_massVsEtaJpsi_numer"]->Fill(theProbe.
eta());
412 hists_[
"massVsPtJpsi_numer"]->Fill(theProbe.
pt());
413 hists_[
"MR_massVsPtJpsi_numer"]->Fill(theProbe.
pt());
414 hists_[
"massVsVertexJpsi_numer"]->Fill(vertices->size());
415 hists_[
"MR_massVsVertexJpsi_numer"]->Fill(vertices->size());
417 pairalreadyconsidered =
true;
428 unsigned int numTriggers = trigNames.
size();
429 bool passTrigger =
false;
432 for (
unsigned int hltIndex = 0; hltIndex < numTriggers; ++hltIndex){
433 passTrigger = (trigNames.
triggerName(hltIndex).find(requiredTrigger) != std::string::npos && triggerResults->
wasrun(hltIndex) && triggerResults->
accept(hltIndex));
434 if (passTrigger)
break;
439 for (
unsigned long matche : matches){
440 if (matche < targetMuons.size()) nMatched++;
442 if (!requiredTriggers_.empty() && targetMuons.size() > 1 && passTrigger){
444 hists_[
"Refefficiency_Eta_Mu1_denom"]->Fill( targetMuons.at(0).eta());
445 hists_[
"Refefficiency_Eta_Mu2_denom"]->Fill( targetMuons.at(1).eta());
446 hists_[
"Refefficiency_TurnOn_Mu1_denom"]->Fill( targetMuons.at(0).pt() );
447 hists_[
"MR_Refefficiency_TurnOn_Mu1_denom"]->Fill( targetMuons.at(0).pt() );
448 hists_[
"Refefficiency_TurnOn_Mu2_denom"]->Fill( targetMuons.at(1).pt() );
449 hists_[
"MR_Refefficiency_TurnOn_Mu2_denom"]->Fill( targetMuons.at(1).pt() );
450 hists_[
"Refefficiency_Vertex_denom"]->Fill( vertices->size() );
451 hists_[
"MR_Refefficiency_Vertex_denom"]->Fill( vertices->size() );
452 hists_[
"MR_Refefficiency_Pt_denom"]->Fill(targetMuons.at(0).pt(),targetMuons.at(1).pt());
453 hists_[
"Refefficiency_Pt_denom"]->Fill(targetMuons.at(0).pt(),targetMuons.at(1).pt());
454 hists_[
"Refefficiency_Eta_denom" ]->Fill(targetMuons.at(0).eta(),targetMuons.at(1).eta());
471 hists_[
"Refefficiency_Eta_Mu1_numer" ]->Fill( targetMuons.at(0).eta());
472 hists_[
"Refefficiency_Eta_Mu2_numer" ]->Fill( targetMuons.at(1).eta());
473 hists_[
"Refefficiency_TurnOn_Mu1_numer"]->Fill( targetMuons.at(0).pt() );
474 hists_[
"MR_Refefficiency_TurnOn_Mu1_numer"]->Fill( targetMuons.at(0).pt() );
475 hists_[
"Refefficiency_TurnOn_Mu2_numer"]->Fill( targetMuons.at(1).pt() );
476 hists_[
"MR_Refefficiency_TurnOn_Mu2_numer"]->Fill( targetMuons.at(1).pt() );
477 hists_[
"Refefficiency_Vertex_numer" ]->Fill( vertices->size() );
478 hists_[
"MR_Refefficiency_Vertex_numer" ]->Fill( vertices->size() );
479 hists_[
"MR_Refefficiency_Pt_numer"]->Fill(targetMuons.at(0).pt(),targetMuons.at(1).pt());
480 hists_[
"Refefficiency_Pt_numer"]->Fill(targetMuons.at(0).pt(),targetMuons.at(1).pt());
481 hists_[
"Refefficiency_Eta_numer" ]->Fill(targetMuons.at(0).eta(),targetMuons.at(1).eta());
497 if ( nonSameSignPath.rfind(
"_SameSign") < nonSameSignPath.length()){
499 nonSameSignPath = boost::replace_all_copy<string>(nonSameSignPath,
"_SameSign",
"");
500 nonSameSignPath = nonSameSignPath.substr(0, nonSameSignPath.rfind(
"_v")+2);
502 bool passTriggerSS =
false;
504 for (
unsigned int hltIndex = 0; hltIndex < numTriggers; ++hltIndex){
505 passTriggerSS = passTriggerSS || (trigNames.
triggerName(hltIndex).substr(0,nonSameSignPath.size()) == nonSameSignPath && triggerResults->
wasrun(hltIndex) && triggerResults->
accept(hltIndex));
508 if (ssPath && targetMuons.size() > 1 && passTriggerSS){
509 if (targetMuons[0].
charge() * targetMuons[1].charge() > 0){
510 hists_[
"Ref_SS_pt1_denom"]->Fill( targetMuons[0].
pt() );
511 hists_[
"Ref_SS_pt2_denom"]->Fill( targetMuons[1].
pt() );
512 hists_[
"Ref_SS_eta1_denom"]->Fill( targetMuons[0].
eta() );
513 hists_[
"Ref_SS_eta2_denom"]->Fill( targetMuons[1].
eta() );
515 hists_[
"Ref_SS_pt1_numer"]->Fill( targetMuons[0].
pt() );
516 hists_[
"Ref_SS_pt2_numer"]->Fill( targetMuons[1].
pt() );
517 hists_[
"Ref_SS_eta1_numer"]->Fill( targetMuons[0].
eta() );
518 hists_[
"Ref_SS_eta2_numer"]->Fill( targetMuons[1].
eta() );
526 if ( nonDZPath.rfind(
"_DZ") < nonDZPath.length()){
528 nonDZPath = boost::replace_all_copy<string>(nonDZPath,
"_DZ",
"");
529 nonDZPath = nonDZPath.substr(0, nonDZPath.rfind(
"_v")+2);
531 bool passTriggerDZ =
false;
533 for (
unsigned int hltIndex = 0; hltIndex < numTriggers; ++hltIndex){
534 passTriggerDZ = passTriggerDZ || (trigNames.
triggerName(hltIndex).find(nonDZPath) != std::string::npos && triggerResults->
wasrun(hltIndex) && triggerResults->
accept(hltIndex));
539 if (dzPath && targetMuons.size() > 1 && passTriggerDZ){
540 const Track * track0 =
nullptr;
const Track * track1 =
nullptr;
541 if (targetMuons.at(0).isTrackerMuon()) track0 = & * targetMuons.at(0).innerTrack();
542 else if (targetMuons.at(0).isTrackerMuon()) track0 = & * targetMuons.at(0).outerTrack();
543 if (targetMuons.at(1).isTrackerMuon()) track1 = & * targetMuons.at(1).innerTrack();
544 else if (targetMuons.at(1).isTrackerMuon()) track1 = & * targetMuons.at(1).outerTrack();
546 if (track0 && track1){
550 hists_[
"Refefficiency_DZ_Vertex_denom"]->Fill( vertices->size() );
551 hists_[
"MR_Refefficiency_DZ_Vertex_denom"]->Fill( vertices->size() );
553 if (track0 && track1){
556 hists_[
"Refefficiency_DZ_Vertex_numer"] ->Fill( vertices->size() );
557 hists_[
"MR_Refefficiency_DZ_Vertex_numer"]->Fill( vertices->size() );
564 vector<size_t> hltMatches =
matchByDeltaR(hltMuons, targetMuons,
566 for (
size_t i = 0;
i < hltMuons.size();
i++) {
568 bool isFake = hltMatches[
i] > hltMuons.size();
571 if (
suffix ==
"numer" && ! isFake)
continue;
572 hists_[
"fakerateVertex_" +
suffix]->Fill(vertices->size());
592 if (binning.size() < 3) {
593 LogWarning(
"HLTMuonVal") <<
"Invalid binning parameters!";
598 if (binning.size() == 3) {
600 edges =
new float[nBins + 1];
601 const double min = binning[1];
602 const double binwidth = (binning[2] - binning[1]) / nBins;
603 for (
size_t i = 0;
i <= nBins;
i++) edges[
i] = min + (binwidth *
i);
608 nBins = binning.size() - 1;
609 edges =
new float[nBins + 1];
610 for (
size_t i = 0;
i <= nBins;
i++) edges[
i] = binning[
i];
635 vector<string>::const_iterator iter;
637 for (iter = names.begin(); iter != names.end(); ++iter) {
638 if (targetPset.
existsAs<
T>(* iter,
true))
640 else if (targetPset.
existsAs<
T>(* iter,
false))
649 template <
class T1,
class T2>
652 const vector<T2> & collection2,
656 const size_t n1 = collection1.size();
657 const size_t n2 = collection2.size();
659 vector<size_t>
result(n1, -1);
660 vector<vector<double> > deltaRMatrix(n1, vector<double>(n2,
NOMATCH));
662 for (
size_t i = 0;
i < n1;
i++)
663 for (
size_t j = 0; j < n2; j++) {
664 deltaRMatrix[
i][j] =
deltaR(collection1[
i], collection2[j]);
668 for (
size_t k = 0;
k < n1;
k++) {
673 for (
size_t i = 0;
i < n1;
i++)
674 for (
size_t j = 0; j < n2; j++)
675 if (deltaRMatrix[
i][j] < minDeltaR) {
678 minDeltaR = deltaRMatrix[
i][j];
681 if (minDeltaR < maxDeltaR) {
682 result[i_min] = j_min;
683 deltaRMatrix[i_min] = vector<double>(n2,
NOMATCH);
684 for (
size_t i = 0;
i < n1;
i++)
700 double d0Cut,
double z0Cut)
708 for (
auto const&
mu : allMuons){
710 if (
mu.isTrackerMuon()) track = & *
mu.innerTrack();
711 else if (
mu.isStandAloneMuon()) track = & *
mu.outerTrack();
712 if (track && selector(
mu) &&
715 reducedMuons.push_back(
mu);
734 size_t filterIndex = triggerSummary.
filterIndex(filterTag);
740 for (
unsigned short key : keys){
742 if (triggerSelector(foundObject))
743 selectedObjects.push_back(foundObject);
747 return selectedObjects;
754 const string& binningType,
string title)
764 float * edges =
nullptr;
768 if (
hists_[name]->getTH1F()->GetSumw2N())
780 const string& binningTypeX,
const string& binningTypeY,
791 float * edgesX =
nullptr;
795 float * edgesY =
nullptr;
799 nBinsX, edgesX, nBinsY, edgesY);
801 if (
hists_[name]->getTH2F()->GetSumw2N())
802 hists_[name]->getTH2F()->Sumw2();
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
reco::MuonCollection selectedMuons(const reco::MuonCollection &, const reco::BeamSpot &, bool, const StringCutObjectSelector< reco::Muon > &, double, double)
bool wasrun() const
Was at least one path run?
double eta() const final
momentum pseudorapidity
bool isStandAloneMuon() const override
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
StringCutObjectSelector< reco::Muon > probeMuonSelector_
The single EDProduct to be saved for each event (AOD case)
trigger::size_type sizeFilters() const
const std::string EFFICIENCY_SUFFIXES[2]
virtual TrackRef innerTrack() const
ParameterSet const & getParameterSet(ParameterSetID const &id)
bool accept() const
Has at least one path accepted the event?
const Keys & filterKeys(trigger::size_type index) const
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
std::map< std::string, std::vector< double > > binParams_
double pt() const final
transverse momentum
std::string triggerLevel_
int charge() const final
electric charge
ParameterSet getUntrackedParameterSet(std::string const &name, ParameterSet const &defaultValue) const
Strings::size_type size() const
std::map< std::string, MonitorElement * > hists_
const std::string names[nVars_]
std::vector< Muon > MuonCollection
collection of Muon objects
HLTMuonMatchAndPlot(const edm::ParameterSet &, std::string, std::string, bool)
Constructor.
std::vector< std::string > requiredTriggers_
bool isTrackerMuon() const override
void book2D(DQMStore::IBooker &, const std::string &, const std::string &, const std::string &, const std::string &)
std::string hltProcessName_
std::vector< size_t > matchByDeltaR(const std::vector< T1 > &, const std::vector< T2 > &, const double maxDeltaR=NOMATCH)
const TriggerObjectCollection & getObjects() const
void fillMapFromPSet(std::map< std::string, T > &, const edm::ParameterSet &, const std::string &)
trigger::TriggerObjectCollection selectedTriggerObjects(const trigger::TriggerObjectCollection &, const trigger::TriggerEvent &, bool hasTriggerCuts, const StringCutObjectSelector< trigger::TriggerObject > &triggerSelector)
MonitorElement * book1D(Args &&...args)
const LorentzVector & p4() const final
four-momentum Lorentz vector
static std::string const triggerResults
std::vector< std::string > getParameterNames() const
virtual TrackRef outerTrack() const
reference to Track reconstructed in the muon detector only
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
double deltaR(double eta1, double eta2, double phi1, double phi2)
void book1D(DQMStore::IBooker &, std::string, const std::string &, std::string)
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
static const char *const trigNames[]
void analyze(edm::Handle< reco::MuonCollection > &, edm::Handle< reco::BeamSpot > &, edm::Handle< reco::VertexCollection > &, edm::Handle< trigger::TriggerEvent > &, edm::Handle< edm::TriggerResults > &, const edm::TriggerNames &)
void setCurrentFolder(const std::string &fullpath)
StringCutObjectSelector< reco::Muon > targetMuonSelector_
MonitorElement * book2D(Args &&...args)
ParameterSet const & getParameterSet(std::string const &) const
std::string const & triggerName(unsigned int index) const
std::vector< size_type > Keys
StringCutObjectSelector< trigger::TriggerObject > triggerSelector_
void endRun(const edm::Run &, const edm::EventSetup &)
const Point & position() const
position
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
double phi() const final
momentum azimuthal angle
std::map< std::string, double > plotCuts_
void fillEdges(size_t &nBins, float *&edges, const std::vector< double > &binning)
void beginRun(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &)