13 folderName_ ( iConfig.getParameter<
std::
string>(
"FolderName") )
14 , muoInputTag_ ( iConfig.getParameter<
edm::InputTag>(
"muons") )
15 , bsInputTag_ ( iConfig.getParameter<
edm::InputTag>(
"beamSpot") )
16 , trInputTag_ ( iConfig.getParameter<
edm::InputTag>(
"tracks") )
17 , phInputTag_ ( iConfig.getParameter<
edm::InputTag>(
"photons") )
19 , bsToken_ ( mayConsume<
reco::
BeamSpot> ( bsInputTag_ ) )
35 , muoSelection_ ( iConfig.getParameter<
std::
string>(
"muoSelection") )
36 , muoSelection_ref ( iConfig.getParameter<
std::
string>(
"muoSelection_ref") )
37 , muoSelection_tag ( iConfig.getParameter<
std::
string>(
"muoSelection_tag") )
38 , muoSelection_probe ( iConfig.getParameter<
std::
string>(
"muoSelection_probe") )
39 , nmuons_ ( iConfig.getParameter<
int>(
"nmuons" ) )
40 , tnp_ ( iConfig.getParameter<
bool>(
"tnp" ) )
41 , L3_ ( iConfig.getParameter<
int>(
"L3" ) )
42 , trOrMu_ ( iConfig.getParameter<
int>(
"trOrMu" ) )
43 , Jpsi_ ( iConfig.getParameter<
int>(
"Jpsi" ) )
44 , Upsilon_ ( iConfig.getParameter<
int>(
"Upsilon" ) )
45 , enum_ ( iConfig.getParameter<
int>(
"enum" ) )
46 , seagull_ ( iConfig.getParameter<
int>(
"seagull" ) )
47 , maxmass_ ( iConfig.getParameter<double>(
"maxmass" ) )
48 , minmass_ ( iConfig.getParameter<double>(
"minmass" ) )
49 , maxmassJpsi ( iConfig.getParameter<double>(
"maxmassJpsi" ) )
50 , minmassJpsi ( iConfig.getParameter<double>(
"minmassJpsi" ) )
51 , maxmassUpsilon ( iConfig.getParameter<double>(
"maxmassUpsilon" ) )
52 , minmassUpsilon ( iConfig.getParameter<double>(
"minmassUpsilon" ) )
53 , maxmassTkTk ( iConfig.getParameter<double>(
"maxmassTkTk" ) )
54 , minmassTkTk ( iConfig.getParameter<double>(
"minmassTkTk" ) )
55 , maxmassJpsiTk ( iConfig.getParameter<double>(
"maxmassJpsiTk" ) )
56 , minmassJpsiTk ( iConfig.getParameter<double>(
"minmassJpsiTk" ) )
57 , kaon_mass ( iConfig.getParameter<double>(
"kaon_mass" ) )
58 , mu_mass ( iConfig.getParameter<double>(
"mu_mass" ) )
59 , min_dR ( iConfig.getParameter<double>(
"min_dR" ) )
60 , minprob ( iConfig.getParameter<double>(
"minprob" ) )
61 , mincos ( iConfig.getParameter<double>(
"mincos" ) )
62 , minDS ( iConfig.getParameter<double>(
"minDS" ) )
63 , hltTrigResTag_ (mayConsume<
edm::TriggerResults>( iConfig.getParameter<
edm::
ParameterSet>(
"denGenericTriggerEventPSet").getParameter<
edm::InputTag>(
"hltInputTag")))
64 , hltInputTag_ (mayConsume<
trigger::TriggerEvent>( iConfig.getParameter<
edm::InputTag>(
"hltTriggerSummaryAOD")))
65 , hltpaths_num ( iConfig.getParameter<
edm::
ParameterSet>(
"numGenericTriggerEventPSet").getParameter<
std::vector<
std::
string>>(
"hltPaths"))
66 , hltpaths_den ( iConfig.getParameter<
edm::
ParameterSet>(
"denGenericTriggerEventPSet").getParameter<
std::vector<
std::
string>>(
"hltPaths"))
67 , trSelection_ ( iConfig.getParameter<
std::
string>(
"muoSelection") )
68 , trSelection_ref ( iConfig.getParameter<
std::
string>(
"trSelection_ref") )
69 , DMSelection_ref ( iConfig.getParameter<
std::
string>(
"DMSelection_ref") )
150 if (pset.
existsAs<std::vector<double>>(
"edges")) {
151 return MEbinning{pset.
getParameter<std::vector<double>>(
"edges")};
181 me.
numerator = ibooker.
book1D(histname+
"_numerator", histtitle+
" (numerator)", nbins, min, max);
182 me.
denominator = ibooker.
book1D(histname+
"_denominator", histtitle+
" (denominator)", nbins, min, max);
186 int nbins = binning.size()-1;
187 std::vector<float> fbinning(binning.begin(),binning.end());
188 float* arr = &fbinning[0];
189 me.
numerator = ibooker.
book1D(histname+
"_numerator", histtitle+
" (numerator)", nbins, arr);
190 me.
denominator = ibooker.
book1D(histname+
"_denominator", histtitle+
" (denominator)", nbins, arr);
194 me.
numerator = ibooker.
bookProfile(histname+
"_numerator", histtitle+
" (numerator)", nbinsX, xmin, xmax, ymin, ymax);
195 me.
denominator = ibooker.
bookProfile(histname+
"_denominator", histtitle+
" (denominator)", nbinsX, xmin, xmax, ymin, ymax);
199 me.
numerator = ibooker.
book2D(histname+
"_numerator", histtitle+
" (numerator)", nbinsX, xmin, xmax, nbinsY, ymin, ymax);
200 me.
denominator = ibooker.
book2D(histname+
"_denominator", histtitle+
" (denominator)", nbinsX, xmin, xmax, nbinsY, ymin, ymax);
204 int nbinsX = binningX.size()-1;
205 std::vector<float> fbinningX(binningX.begin(),binningX.end());
206 float* arrX = &fbinningX[0];
207 int nbinsY = binningY.size()-1;
208 std::vector<float> fbinningY(binningY.begin(),binningY.end());
209 float* arrY = &fbinningY[0];
211 me.
numerator = ibooker.
book2D(histname+
"_numerator", histtitle+
" (numerator)", nbinsX, arrX, nbinsY, arrY);
212 me.
denominator = ibooker.
book2D(histname+
"_denominator", histtitle+
" (denominator)", nbinsX, arrX, nbinsY, arrY);
219 if (binning.edges.empty()) {
220 this->
bookME(ibooker, me, histname, histtitle, binning.nbins, binning.xmin, binning.xmax);
222 this->
bookME(ibooker, me, histname, histtitle, binning.edges);
233 bool Ph_ =
false;
if (
enum_ == 7) Ph_ =
true;
234 if (
tnp_) istnp =
"Tag_and_Probe/";
else istnp =
"";
237 if (
trOrMu_) trMuPh =
"tr";
else if (Ph_) trMuPh =
"ph";
else trMuPh =
"mu";
240 histname = trMuPh+
"Pt"; histtitle = trMuPh+
"_P_{t}";
244 histname = trMuPh+
"Phi"; histtitle = trMuPh+
"Phi";
248 histname = trMuPh+
"Eta"; histtitle = trMuPh+
"_Eta";
253 histname = trMuPh+
"1Pt"; histtitle = trMuPh+
"1_P_{t}";
257 histname = trMuPh+
"1Phi"; histtitle = trMuPh+
"1Phi";
261 histname = trMuPh+
"1Eta"; histtitle = trMuPh+
"1_Eta";
265 histname = trMuPh+
"2Pt"; histtitle = trMuPh+
"2_P_{t}";
269 histname = trMuPh+
"2Phi"; histtitle = trMuPh+
"2Phi";
273 histname = trMuPh+
"2Eta"; histtitle = trMuPh+
"2_Eta";
278 histname = trMuPh+
"3Eta"; histtitle = trMuPh+
"3Eta";
282 histname = trMuPh+
"3Pt"; histtitle = trMuPh+
"3_P_{t}";
286 histname = trMuPh+
"3Phi"; histtitle = trMuPh+
"3Phi";
291 histname =
"DiMuEta"; histtitle =
"DiMuEta";
295 histname =
"DiMuPt"; histtitle =
"DiMu_P_{t}";
299 histname =
"DiMuPhi"; histtitle =
"DiMuPhi";
304 histname =
"DiMudR"; histtitle =
"DiMudR";
308 histname =
"DiMuMass"; histtitle =
"DiMuMass";
312 }
else if (
enum_ == 8) {
313 histname =
"DiMuProb"; histtitle =
"DiMuProb";
317 histname =
"DiMuPVcos"; histtitle =
"DiMuPVcos";
321 histname =
"DiMuDS"; histtitle =
"DiMuDS";
325 histname =
"DiMuDCA"; histtitle =
"DiMuDCA";
334 histname = trMuPh+
"_d0"; histtitle = trMuPh+
"_d0";
338 histname = trMuPh+
"_z0"; histtitle = trMuPh+
"_z0";
353 #include "TLorentzVector.h" 394 double PrescaleWeight = 1;
401 std::vector<reco::Muon> tagMuons;
402 for (
auto const &
m : *muoHandle ) {
406 for (
int i = 0;
i<
int(tagMuons.size());
i++) {
407 for (
auto const &
m : *muoHandle ) {
409 if ((tagMuons[
i].
pt() ==
m.pt()))
continue;
431 for (
auto const &
m : *muoHandle ) {
434 for (
auto const & m1 : *muoHandle ) {
435 if (&
m - &(*muoHandle)[0] >= &m1 - &(*muoHandle)[0])
continue;
438 if (
false && !
matchToTrigger(hltpath,m1, handleTriggerEvent))
continue;
441 if (
m.charge()*m1.charge() > 0 )
continue;
445 std::vector<reco::TransientTrack> j_tks;
448 j_tks.push_back(mu1TT);
449 j_tks.push_back(mu2TT);
455 if ( (jpsivertex.
chi2() >= 0) && (jpsivertex.
ndof() > 0) )
456 dimuonCL = TMath::Prob(jpsivertex.
chi2(), jpsivertex.
ndof() );
462 GlobalPoint displacementFromBeamspotJpsi( -1*((vertexBeamSpot.
x0() - jVertex.
x()) + (jVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dxdz()),
463 -1*((vertexBeamSpot.
y0() - jVertex.
y()) + (jVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dydz()),
466 float jpsi_cos = vperpj.Dot(jpperp) / (vperpj.R()*jpperp.R());
473 double DiMuMass = (m1.p4()+
m.p4()).M();
483 if (dimuonCL <
minprob)
continue;
501 if (dimuonCL <
minprob)
continue;
508 if (dimuonCL <
minprob)
continue;
528 if (dimuonCL <
minprob)
continue;
548 if (dimuonCL <
minprob)
continue;
555 for (
auto const & m2 : *muoHandle) {
556 if (
false && !
matchToTrigger(hltpath,m2, handleTriggerEvent))
continue;
557 if (m2.pt() ==
m.pt())
continue;
584 if (dimuonCL <
minprob)
continue;
592 if (dimuonCL <
minprob)
continue;
593 if (fabs(jpsi_cos) <
mincos)
continue;
594 if ((displacementFromBeamspotJpsi.
perp() /
sqrt(jerr.
rerr(displacementFromBeamspotJpsi))) <
minDS)
continue;
599 for (
auto const &
t : *trHandle) {
613 double e1 =
sqrt(
m.momentum().Mag2() + MuMass2 );
614 double e2 =
sqrt(m1.momentum().Mag2() + MuMass2 );
624 std::vector<reco::TransientTrack> t_tks;
625 t_tks.push_back(mu1TT);
626 t_tks.push_back(mu2TT);
627 t_tks.push_back(trTT);
634 if ((vertex.
chi2() >= 0.0) && (vertex.
ndof() > 0) )
635 JpsiTkCL = TMath::Prob(vertex.
chi2(), vertex.
ndof() );
637 m.py() + m1.py() + itrk1.
py(),
641 GlobalPoint displacementFromBeamspot( -1*((vertexBeamSpot.
x0() - secondaryVertex.
x()) +
642 (secondaryVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dxdz()),
643 -1*((vertexBeamSpot.
y0() - secondaryVertex.
y()) +
644 (secondaryVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dydz()),
647 float jpsiKcos = vperp.Dot(pperp) / (vperp.R()*pperp.R());
648 if (JpsiTkCL <
minprob)
continue;
649 if (fabs(jpsiKcos) <
mincos)
continue;
650 if ((displacementFromBeamspot.
perp() /
sqrt(err.
rerr(displacementFromBeamspot)))<
minDS)
continue;
661 for (
auto const &
t : *trHandle) {
671 double e2 =
sqrt(m1.momentum().Mag2() + MuMass2 );
678 std::vector<reco::TransientTrack> t_tks;
679 t_tks.push_back(mu2TT);
680 t_tks.push_back(trTT);
686 if ((vertex.
chi2() >= 0.0) && (vertex.
ndof() > 0) )
687 JpsiTkCL = TMath::Prob(vertex.
chi2(), vertex.
ndof() );
689 m1.py() + itrk1.
py(),
693 GlobalPoint displacementFromBeamspot( -1*((vertexBeamSpot.
x0() - secondaryVertex.
x()) +
694 (secondaryVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dxdz()),
695 -1*((vertexBeamSpot.
y0() - secondaryVertex.
y()) +
696 (secondaryVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dydz()),
699 if (JpsiTkCL<
minprob)
continue;
707 case11_selection(dimuonCL, jpsi_cos, displacementFromBeamspotJpsi, jerr, trHandle, hltpath, handleTriggerEvent,
m, m1, bFieldHandle, vertexBeamSpot,
mu1Phi_.
denominator,
mu1Eta_.
denominator,
mu1Pt_.
denominator,
mu2Phi_.
denominator,
mu2Eta_.
denominator,
mu2Pt_.
denominator);
717 for (
auto const &
p : *phHandle) {
742 for (
auto const &
m : *muoHandle ) {
743 if (
false && !
matchToTrigger(hltpath1,
m, handleTriggerEvent))
continue;
745 for (
auto const & m1 : *muoHandle ) {
747 if (
m.charge()*m1.charge() > 0 )
continue;
748 if (m1.pt() ==
m.pt())
continue;
750 if (
false && !
matchToTrigger(hltpath1,m1, handleTriggerEvent))
continue;
754 std::vector<reco::TransientTrack> j_tks;
757 j_tks.push_back(mu1TT);
758 j_tks.push_back(mu2TT);
764 if ( (jpsivertex.
chi2() >= 0) && (jpsivertex.
ndof() > 0) )
765 dimuonCL = TMath::Prob(jpsivertex.
chi2(), jpsivertex.
ndof() );
771 GlobalPoint displacementFromBeamspotJpsi( -1*((vertexBeamSpot.
x0() - jVertex.
x()) + (jVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dxdz()),
772 -1*((vertexBeamSpot.
y0() - jVertex.
y()) + (jVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dydz()),
775 float jpsi_cos = vperpj.Dot(jpperp) / (vperpj.R()*jpperp.R());
782 double DiMuMass = (m1.p4()+
m.p4()).M();
792 if (dimuonCL <
minprob)
continue;
811 if (dimuonCL <
minprob)
continue;
818 if (dimuonCL <
minprob)
continue;
838 if (dimuonCL <
minprob)
continue;
857 if (dimuonCL <
minprob)
continue;
864 for (
auto const & m2 : *muoHandle) {
865 if (
false && !
matchToTrigger(hltpath1,m2, handleTriggerEvent))
continue;
866 if (m2.pt() ==
m.pt())
continue;
889 if (dimuonCL <
minprob)
continue;
897 if (dimuonCL <
minprob)
continue;
898 if (fabs(jpsi_cos) <
mincos)
continue;
899 if ((displacementFromBeamspotJpsi.
perp() /
sqrt(jerr.
rerr(displacementFromBeamspotJpsi))) <
minDS)
continue;
901 for (
auto const &
t : *trHandle) {
903 if (
false && !
matchToTrigger(hltpath1,
t, handleTriggerEvent))
continue;
911 double e1 =
sqrt(
m.momentum().Mag2() + MuMass2 );
912 double e2 =
sqrt(m1.momentum().Mag2() + MuMass2 );
920 std::vector<reco::TransientTrack> t_tks;
921 t_tks.push_back(mu1TT);
922 t_tks.push_back(mu2TT);
923 t_tks.push_back(trTT);
929 if ((vertex.
chi2() >= 0.0) && (vertex.
ndof() > 0) )
930 JpsiTkCL = TMath::Prob(vertex.
chi2(), vertex.
ndof() );
932 m.py() + m1.py() + itrk1.
py(),
936 GlobalPoint displacementFromBeamspot( -1*((vertexBeamSpot.
x0() - secondaryVertex.
x()) +
937 (secondaryVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dxdz()),
938 -1*((vertexBeamSpot.
y0() - secondaryVertex.
y()) +
939 (secondaryVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dydz()),
942 float jpsiKcos = vperp.Dot(pperp) / (vperp.R()*pperp.R());
943 if (JpsiTkCL<
minprob)
continue;
944 if (fabs(jpsiKcos)<
mincos)
continue;
945 if ((displacementFromBeamspot.
perp() /
sqrt(err.
rerr(displacementFromBeamspot)))<
minDS)
continue;
955 for (
auto const &
t : *trHandle) {
957 if (
false && !
matchToTrigger(hltpath1,
t, handleTriggerEvent))
continue;
965 double e2 =
sqrt(m1.momentum().Mag2() + MuMass2 );
972 std::vector<reco::TransientTrack> t_tks;
973 t_tks.push_back(mu2TT);
974 t_tks.push_back(trTT);
975 if (t_tks.size()!=2)
continue;
981 if ((vertex.
chi2() >= 0.0) && (vertex.
ndof() > 0) )
982 JpsiTkCL = TMath::Prob(vertex.
chi2(), vertex.
ndof() );
984 m1.py() + itrk1.
py(),
988 GlobalPoint displacementFromBeamspot( -1*((vertexBeamSpot.
x0() - secondaryVertex.
x()) +
989 (secondaryVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dxdz()),
990 -1*((vertexBeamSpot.
y0() - secondaryVertex.
y()) +
991 (secondaryVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dydz()),
994 if (JpsiTkCL<
minprob)
continue;
1002 case11_selection(dimuonCL, jpsi_cos, displacementFromBeamspotJpsi, jerr, trHandle, hltpath, handleTriggerEvent,
m, m1, bFieldHandle, vertexBeamSpot,
mu1Phi_.
numerator,
mu1Eta_.
numerator,
mu1Pt_.
numerator,
mu2Phi_.
numerator,
mu2Eta_.
numerator,
mu2Pt_.
numerator);
1010 for (
auto const &
p : *phHandle) {
1011 if (
false && !
matchToTrigger(hltpath,
p, handleTriggerEvent))
continue;
1034 pset.
add<
int> (
"nbins", 2500);
1047 desc.
add<
std::string>(
"muoSelection",
"abs(eta)<1.4 & isPFMuon & isGlobalMuon & innerTrack.hitPattern.trackerLayersWithMeasurement>5 & innerTrack.hitPattern.numberOfValidPixelHits> 0");
1048 desc.
add<
std::string>(
"muoSelection_ref",
"isPFMuon & isGlobalMuon & innerTrack.hitPattern.trackerLayersWithMeasurement>5 & innerTrack.hitPattern.numberOfValidPixelHits> 0");
1049 desc.
add<
std::string>(
"muoSelection_tag",
"isGlobalMuon && isPFMuon && isTrackerMuon && abs(eta) < 2.4 && innerTrack.hitPattern.numberOfValidPixelHits > 0 && innerTrack.hitPattern.trackerLayersWithMeasurement > 5 && globalTrack.hitPattern.numberOfValidMuonHits > 0 && globalTrack.normalizedChi2 < 10");
1050 desc.
add<
std::string>(
"muoSelection_probe",
"isPFMuon & isGlobalMuon & innerTrack.hitPattern.trackerLayersWithMeasurement>5 & innerTrack.hitPattern.numberOfValidPixelHits> 0");
1054 desc.
add<
int>(
"nmuons", 1);
1056 desc.
add<
int>(
"L3", 0 );
1057 desc.
add<
int>(
"trOrMu", 0 );
1058 desc.
add<
int>(
"Jpsi", 0 );
1059 desc.
add<
int>(
"Upsilon", 0 );
1060 desc.
add<
int>(
"enum", 1 );
1061 desc.
add<
int>(
"seagull", 1 );
1062 desc.
add<
double>(
"maxmass", 3.596 );
1063 desc.
add<
double>(
"minmass", 2.596 );
1064 desc.
add<
double>(
"maxmassJpsi", 3.2 );
1065 desc.
add<
double>(
"minmassJpsi", 3. );
1066 desc.
add<
double>(
"maxmassUpsilon", 8.1 );
1067 desc.
add<
double>(
"minmassUpsilon", 8. );
1068 desc.
add<
double>(
"maxmassTkTk", 10);
1069 desc.
add<
double>(
"minmassTkTk", 0);
1070 desc.
add<
double>(
"maxmassJpsiTk", 5.46 );
1071 desc.
add<
double>(
"minmassJpsiTk", 5.1 );
1072 desc.
add<
double>(
"kaon_mass", 0.493677 );
1073 desc.
add<
double>(
"mu_mass", 0.1056583745);
1074 desc.
add<
double>(
"min_dR", 0.001);
1075 desc.
add<
double>(
"minprob", 0.005 );
1076 desc.
add<
double>(
"mincos", 0.95 );
1077 desc.
add<
double>(
"minDS", 3. );
1080 genericTriggerEventPSet.
add<
bool>(
"andOr");
1083 genericTriggerEventPSet.add<std::vector<int> >(
"dcsPartitions",{});
1084 genericTriggerEventPSet.add<
bool>(
"andOrDcs",
false);
1085 genericTriggerEventPSet.add<
bool>(
"errorReplyDcs",
true);
1086 genericTriggerEventPSet.add<
std::string>(
"dbLabel",
"");
1087 genericTriggerEventPSet.add<
bool>(
"andOrHlt",
true);
1088 genericTriggerEventPSet.add<
bool>(
"andOrL1",
true);
1089 genericTriggerEventPSet.add<std::vector<std::string> >(
"hltPaths",{});
1090 genericTriggerEventPSet.add<std::vector<std::string> >(
"l1Algorithms",{});
1091 genericTriggerEventPSet.add<
std::string>(
"hltDBKey",
"");
1092 genericTriggerEventPSet.add<
bool>(
"errorReplyHlt",
false);
1093 genericTriggerEventPSet.add<
bool>(
"errorReplyL1",
true);
1094 genericTriggerEventPSet.add<
bool>(
"l1BeforeMask",
true);
1095 genericTriggerEventPSet.add<
unsigned int>(
"verbosityLevel",0);
1135 descriptions.
add(
"bphMonitoring", desc);
1137 template <
typename T>
1141 bool matchedToTrigger =
false;
1144 for (
size_t ia = 0; ia < handleTriggerEvent->
sizeFilters(); ++ ia) {
1147 size_t p = fullname.find_first_of(
':');
1148 if ( p != std::string::npos) {name = fullname.substr(0, p);}
1149 else {name = fullname;}
1151 for (trigger::Keys::const_iterator ki = k.begin(); ki !=k.end(); ++ki ) {
1153 if (name.find(theTriggerName) != string::npos) {
1154 if ((
reco::deltaR(t.eta(), t.phi(),theTriggerParticle.
eta(),theTriggerParticle.
phi()) <= 0.2)) {
1155 matchedToTrigger =
true;
1161 return matchedToTrigger;
1163 else {
cout <<theTriggerName <<
"\t\tNo HLT filters" <<endl;
return false;}
1166 void BPHMonitor::case11_selection(
const float & dimuonCL,
const float & jpsi_cos,
const GlobalPoint & displacementFromBeamspotJpsi,
const GlobalError & jerr,
const edm::Handle<reco::TrackCollection> & trHandle,
const std::string & hltpath,
const edm::Handle<trigger::TriggerEvent> & handleTriggerEvent,
const reco::Muon&
m,
const reco::Muon& m1,
const edm::ESHandle<MagneticField> & bFieldHandle,
const reco::BeamSpot & vertexBeamSpot,
MonitorElement* phi1,
MonitorElement* eta1,
MonitorElement* pT1,
MonitorElement* phi2,
MonitorElement* eta2,
MonitorElement* pT2) {
1168 if (dimuonCL <
minprob)
return;
1169 if (fabs(jpsi_cos) <
mincos)
return;
1170 if ((displacementFromBeamspotJpsi.
perp() /
sqrt(jerr.
rerr(displacementFromBeamspotJpsi))) <
minDS)
return;
1173 for (
auto const &
t : *trHandle) {
1175 if (
false && !
matchToTrigger(hltpath,
t, handleTriggerEvent))
continue;
1178 for (
auto const & t1 : *trHandle) {
1179 if (&
t - &(*trHandle)[0] >= &t1 - &(*trHandle)[0])
continue;
1182 if (
false && !
matchToTrigger(hltpath,t1, handleTriggerEvent))
continue;
1203 pB = p1 + p2 + p3 +
p4;
1209 std::vector<reco::TransientTrack> t_tks;
1210 t_tks.push_back(mu1TT);
1211 t_tks.push_back(mu2TT);
1212 t_tks.push_back(trTT);
1213 t_tks.push_back(tr1TT);
1219 if ((vertex.
chi2() >= 0.0) && (vertex.
ndof() > 0) )
1220 JpsiTkCL = TMath::Prob(vertex.
chi2(), vertex.
ndof() );
1222 m.
py() + m1.
py() + itrk1.
py() + itrk2.
py(),
1226 GlobalPoint displacementFromBeamspot( -1*((vertexBeamSpot.
x0() - secondaryVertex.
x()) +
1227 (secondaryVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dxdz()),
1228 -1*((vertexBeamSpot.
y0() - secondaryVertex.
y()) +
1229 (secondaryVertex.
z() - vertexBeamSpot.
z0()) * vertexBeamSpot.
dydz()),
1232 float jpsiKcos = vperp.Dot(pperp) / (vperp.R()*pperp.R());
1233 if (JpsiTkCL <
minprob)
continue;
1234 if (fabs(jpsiKcos) <
mincos)
continue;
1235 if ((displacementFromBeamspot.
perp() /
sqrt(err.
rerr(displacementFromBeamspot))) <
minDS)
continue;
1237 phi1->
Fill(
t.phi());
1238 eta1->
Fill(
t.eta());
1240 phi2->
Fill(t1.phi());
1241 eta2->
Fill(t1.eta());
GlobalError positionError() const
MonitorElement * numerator
T getParameter(std::string const &) const
double z0() const
z coordinate
float distance() const override
TrackRef track() const override
reference to a Track
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
StringCutObjectSelector< reco::Candidate::LorentzVector, true > DMSelection_ref
trigger::size_type sizeFilters() const
MonitorElement * bookProfile(Args &&...args)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const FreeTrajectoryState & theState() const
#define DEFINE_FWK_MODULE(type)
edm::EDGetTokenT< reco::MuonCollection > muoToken_
void bookME(DQMStore::IBooker &, METME &me, std::string &histname, std::string &histtitle, int &nbins, double &xmin, double &xmax)
edm::InputTag bsInputTag_
double px() const final
x coordinate of momentum vector
const Keys & filterKeys(trigger::size_type index) const
std::vector< Track > TrackCollection
collection of Tracks
static void fillHistoLSPSetDescription(edm::ParameterSetDescription &pset)
ParameterDescriptionNode * addNode(ParameterDescriptionNode const &node)
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
bool matchToTrigger(const std::string &theTriggerName, T t, edm::Handle< trigger::TriggerEvent > handleTriggerEvent)
double px() const
x coordinate of momentum vector
const Vector & momentum() const
track momentum vector
edm::EDGetTokenT< trigger::TriggerEvent > hltInputTag_
edm::EDGetTokenT< reco::TrackCollection > trToken_
std::vector< Muon > MuonCollection
collection of Muon objects
double dydz() const
dydz slope
Vector momentum() const final
spatial momentum vector
void setMETitle(METME &me, std::string titleX, std::string titleY)
double phi() const
momentum azimuthal angle
std::vector< bool > warningPrinted4token_
const TriggerObjectCollection & getObjects() const
void case11_selection(const float &dimuonCL, const float &jpsi_cos, const GlobalPoint &displacementFromBeamspotJpsi, const GlobalError &jerr, const edm::Handle< reco::TrackCollection > &trHandle, const std::string &hltpath, const edm::Handle< trigger::TriggerEvent > &handleTriggerEvent, const reco::Muon &m, const reco::Muon &m1, const edm::ESHandle< MagneticField > &bFieldHandle, const reco::BeamSpot &vertexBeamSpot, MonitorElement *phi1, MonitorElement *eta1, MonitorElement *pT1, MonitorElement *phi2, MonitorElement *eta2, MonitorElement *pT2)
double pz() const final
z coordinate of momentum vector
bool calculate(const TrajectoryStateOnSurface &sta, const TrajectoryStateOnSurface &stb) override
edm::InputTag muoInputTag_
bool accept(const edm::Event &event, const edm::EventSetup &setup)
To be called from analyze/filter() methods.
GlobalPoint position() const
GenericTriggerEventFlag * den_genTriggerEventFlag_
BPHMonitor(const edm::ParameterSet &)
MonitorElement * book1D(Args &&...args)
double chi2() const
chi-squares
MonitorElement * denominator
CachingVertex< 5 > vertex(const std::vector< reco::TransientTrack > &tracks) const override
math::XYZPoint Point
point in the space
static void fillHistoPSetDescription(edm::ParameterSetDescription &pset)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
double dxdz() const
dxdz slope
std::vector< std::string > hltpaths_den
StringCutObjectSelector< reco::Muon, true > muoSelection_
double pz() const
z coordinate of momentum vector
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
const edm::InputTag filterTag(trigger::size_type index) const
edm::EDGetTokenT< reco::PhotonCollection > phToken_
edm::EDGetTokenT< reco::BeamSpot > bsToken_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void setCurrentFolder(const std::string &fullpath)
StringCutObjectSelector< reco::Muon, true > muoSelection_ref
MonitorElement * book2D(Args &&...args)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
std::vector< size_type > Keys
T rerr(const GlobalPoint &aPoint) const
std::vector< Photon > PhotonCollection
collectin of Photon objects
static MEbinning getHistoPSet(edm::ParameterSet pset)
double py() const final
y coordinate of momentum vector
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool quality(const TrackQuality) const
Track quality.
edm::InputTag trInputTag_
double y0() const
y coordinate
std::vector< std::string > hltpaths_num
void initRun(const edm::Run &run, const edm::EventSetup &setup)
To be called from beginRun() methods.
edm::InputTag phInputTag_
double eta() const
momentum pseudorapidity
GenericTriggerEventFlag * num_genTriggerEventFlag_
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
math::XYZTLorentzVector LorentzVector
Lorentz vector.
StringCutObjectSelector< reco::Track, true > trSelection_ref
double py() const
y coordinate of momentum vector
double x0() const
x coordinate