CMS 3D CMS Logo

ExoticaDQM.cc
Go to the documentation of this file.
2 
3 using namespace edm;
4 using namespace std;
5 using namespace reco;
6 using namespace trigger;
7 
8 typedef vector<string> vstring;
9 
10 //
11 // -- Constructor
12 //
14  edm::LogInfo("ExoticaDQM") << " Starting ExoticaDQM "
15  << "\n";
16 
17  typedef std::vector<edm::InputTag> vtag;
18 
19  // Get parameters from configuration file
20  // Trigger
21  TriggerToken_ = consumes<TriggerResults>(ps.getParameter<edm::InputTag>("TriggerResults"));
22  HltPaths_ = ps.getParameter<vector<string> >("HltPaths");
23  //
24  VertexToken_ = consumes<reco::VertexCollection>(ps.getParameter<InputTag>("vertexCollection"));
25  //
26  ElectronToken_ = consumes<reco::GsfElectronCollection>(ps.getParameter<InputTag>("electronCollection"));
27  //
28  MuonToken_ = consumes<reco::MuonCollection>(ps.getParameter<InputTag>("muonCollection"));
29  //
30  PhotonToken_ = consumes<reco::PhotonCollection>(ps.getParameter<InputTag>("photonCollection"));
31  //
32  PFJetToken_ = consumes<reco::PFJetCollection>(ps.getParameter<InputTag>("pfJetCollection"));
33  //
34  DiJetPFJetCollection_ = ps.getParameter<std::vector<edm::InputTag> >("DiJetPFJetCollection");
35  for (std::vector<edm::InputTag>::const_iterator jetlabel = DiJetPFJetCollection_.begin(),
36  jetlabelEnd = DiJetPFJetCollection_.end();
37  jetlabel != jetlabelEnd;
38  ++jetlabel) {
39  DiJetPFJetToken_.push_back(consumes<reco::PFJetCollection>(*jetlabel));
40  }
41  //
42  PFMETToken_ = consumes<reco::PFMETCollection>(ps.getParameter<InputTag>("pfMETCollection"));
43  //
44  ecalBarrelRecHitToken_ = consumes<EBRecHitCollection>(
45  ps.getUntrackedParameter<InputTag>("ecalBarrelRecHit", InputTag("reducedEcalRecHitsEB")));
46  //
47  ecalEndcapRecHitToken_ = consumes<EERecHitCollection>(
48  ps.getUntrackedParameter<InputTag>("ecalEndcapRecHit", InputTag("reducedEcalRecHitsEE")));
49  //
50  TrackToken_ = consumes<reco::TrackCollection>(ps.getParameter<InputTag>("trackCollection"));
51  //
52  MuonDispToken_ = consumes<reco::TrackCollection>(ps.getParameter<InputTag>("displacedMuonCollection"));
53  //
54  MuonDispSAToken_ = consumes<reco::TrackCollection>(ps.getParameter<InputTag>("displacedSAMuonCollection"));
55  //
56  GenParticleToken_ = consumes<reco::GenParticleCollection>(ps.getParameter<InputTag>("genParticleCollection"));
57 
58  JetCorrectorToken_ = consumes<reco::JetCorrector>(ps.getParameter<edm::InputTag>("jetCorrector"));
59 
60  //Cuts - MultiJets
61  jetID = new reco::helper::JetIDHelper(ps.getParameter<ParameterSet>("JetIDParams"), consumesCollector());
62 
63  //Varibles and Cuts for each Module:
64  //Dijet
65  dijet_PFJet1_pt_cut_ = ps.getParameter<double>("dijet_PFJet1_pt_cut");
66  dijet_PFJet2_pt_cut_ = ps.getParameter<double>("dijet_PFJet2_pt_cut");
67  //DiMuon
68  dimuon_Muon1_pt_cut_ = ps.getParameter<double>("dimuon_Muon1_pt_cut");
69  dimuon_Muon2_pt_cut_ = ps.getParameter<double>("dimuon_Muon2_pt_cut");
70  //DiElectron
71  dielectron_Electron1_pt_cut_ = ps.getParameter<double>("dielectron_Electron2_pt_cut");
72  dielectron_Electron2_pt_cut_ = ps.getParameter<double>("dielectron_Electron2_pt_cut");
73  //DiPhoton
74  diphoton_Photon1_pt_cut_ = ps.getParameter<double>("diphoton_Photon2_pt_cut");
75  diphoton_Photon2_pt_cut_ = ps.getParameter<double>("diphoton_Photon2_pt_cut");
76  //MonoJet
77  monojet_PFJet_pt_cut_ = ps.getParameter<double>("monojet_PFJet_pt_cut");
78  monojet_PFJet_met_cut_ = ps.getParameter<double>("monojet_PFJet_met_cut");
79  //MonoMuon
80  monomuon_Muon_pt_cut_ = ps.getParameter<double>("monomuon_Muon_pt_cut");
81  monomuon_Muon_met_cut_ = ps.getParameter<double>("monomuon_Muon_met_cut");
82  //MonoElectron
83  monoelectron_Electron_pt_cut_ = ps.getParameter<double>("monoelectron_Electron_pt_cut");
84  monoelectron_Electron_met_cut_ = ps.getParameter<double>("monoelectron_Electron_met_cut");
85  //MonoPhoton
86  monophoton_Photon_pt_cut_ = ps.getParameter<double>("monophoton_Photon_pt_cut");
87  monophoton_Photon_met_cut_ = ps.getParameter<double>("monophoton_Photon_met_cut");
88  // Displaced lepton or jet
89  dispFermion_eta_cut_ = ps.getParameter<double>("dispFermion_eta_cut");
90  dispFermion_pt_cut_ = ps.getParameter<double>("dispFermion_pt_cut");
91 }
92 
93 //
94 // -- Destructor
95 //
97  edm::LogInfo("ExoticaDQM") << " Deleting ExoticaDQM "
98  << "\n";
99 }
100 
101 //
102 // -- Book histograms
103 //
105  bei.cd();
106 
107  //--- DiJet
108  for (unsigned int icoll = 0; icoll < DiJetPFJetCollection_.size(); ++icoll) {
109  std::stringstream ss;
110  ss << "Physics/Exotica/Dijets/" << DiJetPFJetCollection_[icoll].label();
111  bei.setCurrentFolder(ss.str());
112  //bei.setCurrentFolder("Physics/Exotica/Dijets");
113  dijet_PFJet_pt.push_back(bei.book1D("dijet_PFJet_pt", "Pt of PFJet (GeV)", 50, 30.0, 5000));
114  dijet_PFJet_eta.push_back(bei.book1D("dijet_PFJet_eta", "#eta (PFJet)", 50, -2.5, 2.5));
115  dijet_PFJet_phi.push_back(bei.book1D("dijet_PFJet_phi", "#phi (PFJet)", 50, -3.14, 3.14));
116  dijet_PFJet_rapidity.push_back(bei.book1D("dijet_PFJet_rapidity", "Rapidity (PFJet)", 50, -6.0, 6.0));
117  dijet_PFJet_mass.push_back(bei.book1D("dijet_PFJet_mass", "Mass (PFJets)", 50, 0., 500.));
118  dijet_deltaPhiPFJet1PFJet2.push_back(
119  bei.book1D("dijet_deltaPhiPFJet1PFJet2", "#Delta#phi(Leading PFJet, Sub PFJet)", 40, 0., 3.15));
120  dijet_deltaEtaPFJet1PFJet2.push_back(
121  bei.book1D("dijet_deltaEtaPFJet1PFJet2", "#Delta#eta(Leading PFJet, Sub PFJet)", 40, -5., 5.));
122  dijet_deltaRPFJet1PFJet2.push_back(
123  bei.book1D("dijet_deltaRPFJet1PFJet2", "#DeltaR(Leading PFJet, Sub PFJet)", 50, 0., 6.));
124  dijet_invMassPFJet1PFJet2.push_back(
125  bei.book1D("dijet_invMassPFJet1PFJet2", "Leading PFJet, SubLeading PFJet Invariant mass (GeV)", 50, 0., 8000.));
126  dijet_PFchef.push_back(bei.book1D("dijet_PFchef", "Leading PFJet CHEF", 50, 0.0, 1.0));
127  dijet_PFnhef.push_back(bei.book1D("dijet_PFnhef", "Leading PFJet NHEF", 50, 0.0, 1.0));
128  dijet_PFcemf.push_back(bei.book1D("dijet_PFcemf", "Leading PFJet CEMF", 50, 0.0, 1.0));
129  dijet_PFnemf.push_back(bei.book1D("dijet_PFnemf", "Leading PFJEt NEMF", 50, 0.0, 1.0));
130  dijet_PFJetMulti.push_back(bei.book1D("dijet_PFJetMulti", "No. of PFJets", 10, 0., 10.));
131  }
132  //--- DiMuon
133  bei.setCurrentFolder("Physics/Exotica/DiMuons");
134  dimuon_Muon_pt = bei.book1D("dimuon_Muon_pt", "Pt of Muon (GeV)", 50, 30.0, 2000);
135  dimuon_Muon_eta = bei.book1D("dimuon_Muon_eta", "#eta (Muon)", 50, -2.5, 2.5);
136  dimuon_Muon_phi = bei.book1D("dimuon_Muon_phi", "#phi (Muon)", 50, -3.14, 3.14);
137  dimuon_Charge = bei.book1D("dimuon_Charge", "Charge of the Muon", 10, -5., 5.);
138  dimuon_deltaEtaMuon1Muon2 =
139  bei.book1D("dimuon_deltaEtaMuon1Muon2", "#Delta#eta(Leading Muon, Sub Muon)", 40, -5., 5.);
140  dimuon_deltaPhiMuon1Muon2 =
141  bei.book1D("dimuon_deltaPhiMuon1Muon2", "#Delta#phi(Leading Muon, Sub Muon)", 40, 0., 3.15);
142  dimuon_deltaRMuon1Muon2 = bei.book1D("dimuon_deltaRMuon1Muon2", "#DeltaR(Leading Muon, Sub Muon)", 50, 0., 6.);
143  dimuon_invMassMuon1Muon2 =
144  bei.book1D("dimuon_invMassMuon1Muon2", "Leading Muon, SubLeading Muon Low Invariant mass (GeV)", 50, 500., 4500.);
145  dimuon_MuonMulti = bei.book1D("dimuon_MuonMulti", "No. of Muons", 10, 0., 10.);
146  //--- DiElectrons
147  bei.setCurrentFolder("Physics/Exotica/DiElectrons");
148  dielectron_Electron_pt = bei.book1D("dielectron_Electron_pt", "Pt of Electron (GeV)", 50, 30.0, 2000);
149  dielectron_Electron_eta = bei.book1D("dielectron_Electron_eta", "#eta (Electron)", 50, -2.5, 2.5);
150  dielectron_Electron_phi = bei.book1D("dielectron_Electron_phi", "#phi (Electron)", 50, -3.14, 3.14);
151  dielectron_Charge = bei.book1D("dielectron_Charge", "Charge of the Electron", 10, -5., 5.);
152  dielectron_deltaEtaElectron1Electron2 =
153  bei.book1D("dielectron_deltaEtaElectron1Electron2", "#Delta#eta(Leading Electron, Sub Electron)", 40, -5., 5.);
154  dielectron_deltaPhiElectron1Electron2 =
155  bei.book1D("dielectron_deltaPhiElectron1Electron2", "#Delta#phi(Leading Electron, Sub Electron)", 40, 0., 3.15);
156  dielectron_deltaRElectron1Electron2 =
157  bei.book1D("dielectron_deltaRElectron1Electron2", "#DeltaR(Leading Electron, Sub Electron)", 50, 0., 6.);
158  dielectron_invMassElectron1Electron2 = bei.book1D("dielectron_invMassElectron1Electron2",
159  "Leading Electron, SubLeading Electron Invariant mass (GeV)",
160  50,
161  500.,
162  4500.);
163  dielectron_ElectronMulti = bei.book1D("dielectron_ElectronMulti", "No. of Electrons", 10, 0., 10.);
164  //--- DiPhotons
165  bei.setCurrentFolder("Physics/Exotica/DiPhotons");
166  diphoton_Photon_energy = bei.book1D("diphoton_Photon_energy", "Energy of Photon (GeV)", 50, 30.0, 300);
167  diphoton_Photon_et = bei.book1D("diphoton_Photon_et", "Et of Photon (GeV)", 50, 30.0, 300);
168  diphoton_Photon_pt = bei.book1D("diphoton_Photon_pt", "Pt of Photon (GeV)", 50, 30.0, 300);
169  diphoton_Photon_eta = bei.book1D("diphoton_Photon_eta", "#eta (Photon)", 50, -2.5, 2.5);
170  diphoton_Photon_etasc = bei.book1D("diphoton_Photon_etasc", "#eta sc(Photon)", 50, -2.5, 2.5);
171  diphoton_Photon_phi = bei.book1D("diphoton_Photon_phi", "#phi (Photon)", 50, -3.14, 3.14);
172  diphoton_Photon_hovere_eb = bei.book1D("diphoton_Photon_hovere_eb", "H/E (Photon) EB", 50, 0., 0.50);
173  diphoton_Photon_hovere_ee = bei.book1D("diphoton_Photon_hovere_ee", "H/E (Photon) EE", 50, 0., 0.50);
174  diphoton_Photon_sigmaietaieta_eb =
175  bei.book1D("diphoton_Photon_sigmaietaieta_eb", "#sigma_{i #eta i #eta} (Photon) EB", 50, 0., 0.03);
176  diphoton_Photon_sigmaietaieta_ee =
177  bei.book1D("diphoton_Photon_sigmaietaieta_ee", "#sigma_{i #eta i #eta} (Photon) EE", 50, 0., 0.03);
178  diphoton_Photon_trksumptsolidconedr03_eb =
179  bei.book1D("diphoton_Photon_trksumptsolidconedr03_eb", "TrkSumPtDr03 (Photon) EB", 50, 0., 15.);
180  diphoton_Photon_trksumptsolidconedr03_ee =
181  bei.book1D("diphoton_Photon_trksumptsolidconedr03_ee", "TrkSumPtDr03 (Photon) EE", 50, 0., 15.);
182  diphoton_Photon_e1x5e5x5_eb = bei.book1D("diphoton_Photon_e1x5e5x5_eb", "E_{1x5}/E_{5x5} (Photon) EB", 50, 0., 1.);
183  diphoton_Photon_e1x5e5x5_ee = bei.book1D("diphoton_Photon_e1x5e5x5_ee", "E_{1x5}/E_{5x5} (Photon) EE", 50, 0., 1.);
184  diphoton_Photon_e2x5e5x5_eb = bei.book1D("diphoton_Photon_e2x5e5x5_eb", "E_{2x5}/E_{5x5} (Photon) EB", 50, 0., 1.);
185  diphoton_Photon_e2x5e5x5_ee = bei.book1D("diphoton_Photon_e2x5e5x5_ee", "E_{2x5}/E_{5x5} (Photon) EE", 50, 0., 1.);
186  diphoton_deltaEtaPhoton1Photon2 =
187  bei.book1D("diphoton_deltaEtaPhoton1Photon2", "#Delta#eta(SubLeading Photon, Sub Photon)", 40, -5., 5.);
188  diphoton_deltaPhiPhoton1Photon2 =
189  bei.book1D("diphoton_deltaPhiPhoton1Photon2", "#Delta#phi(SubLeading Photon, Sub Photon)", 40, 0., 3.15);
190  diphoton_deltaRPhoton1Photon2 =
191  bei.book1D("diphoton_deltaRPhoton1Photon2", "#DeltaR(SubLeading Photon, Sub Photon)", 50, 0., 6.);
192  diphoton_invMassPhoton1Photon2 = bei.book1D(
193  "diphoton_invMassPhoton1Photon2", "SubLeading Photon, SubSubLeading Photon Invariant mass (GeV)", 50, 500., 4500.);
194  diphoton_PhotonMulti = bei.book1D("diphoton_PhotonMulti", "No. of Photons", 10, 0., 10.);
195  //--- MonoJet
196  bei.setCurrentFolder("Physics/Exotica/MonoJet");
197  monojet_PFJet_pt = bei.book1D("monojet_PFJet_pt", "Pt of MonoJet (GeV)", 50, 30.0, 1000);
198  monojet_PFJet_eta = bei.book1D("monojet_PFJet_eta", "#eta(MonoJet)", 50, -2.5, 2.5);
199  monojet_PFJet_phi = bei.book1D("monojet_PFJet_phi", "#phi(MonoJet)", 50, -3.14, 3.14);
200  monojet_PFMet = bei.book1D("monojet_PFMet", "Pt of PFMET (GeV)", 40, 0.0, 1000);
201  monojet_PFMet_phi = bei.book1D("monojet_PFMet_phi", "#phi(PFMET #phi)", 50, -3.14, 3.14);
202  monojet_PFJetPtOverPFMet = bei.book1D("monojet_PFJetPtOverPFMet", "Pt of MonoJet/MET (GeV)", 40, 0.0, 5.);
203  monojet_deltaPhiPFJetPFMet = bei.book1D("monojet_deltaPhiPFJetPFMet", "#Delta#phi(MonoJet, PFMet)", 40, 0., 3.15);
204  monojet_PFchef = bei.book1D("monojet_PFchef", "MonojetJet CHEF", 50, 0.0, 1.0);
205  monojet_PFnhef = bei.book1D("monojet_PFnhef", "MonojetJet NHEF", 50, 0.0, 1.0);
206  monojet_PFcemf = bei.book1D("monojet_PFcemf", "MonojetJet CEMF", 50, 0.0, 1.0);
207  monojet_PFnemf = bei.book1D("monojet_PFnemf", "MonojetJet NEMF", 50, 0.0, 1.0);
208  monojet_PFJetMulti = bei.book1D("monojet_PFJetMulti", "No. of PFJets", 10, 0., 10.);
209  //--- MonoMuon
210  bei.setCurrentFolder("Physics/Exotica/MonoMuon");
211  monomuon_Muon_pt = bei.book1D("monomuon_Muon_pt", "Pt of Monomuon (GeV)", 50, 30.0, 2000);
212  monomuon_Muon_eta = bei.book1D("monomuon_Muon_eta", "#eta(Monomuon)", 50, -2.5, 2.5);
213  monomuon_Muon_phi = bei.book1D("monomuon_Muon_phi", "#phi(Monomuon)", 50, -3.14, 3.14);
214  monomuon_Charge = bei.book1D("monomuon_Charge", "Charge of the MonoMuon", 10, -5., 5.);
215  monomuon_PFMet = bei.book1D("monomuon_PFMet", "Pt of PFMET (GeV)", 40, 0.0, 2000);
216  monomuon_PFMet_phi = bei.book1D("monomuon_PFMet_phi", "PFMET #phi", 50, -3.14, 3.14);
217  monomuon_MuonPtOverPFMet = bei.book1D("monomuon_MuonPtOverPFMet", "Pt of Monomuon/PFMet", 40, 0.0, 5.);
218  monomuon_deltaPhiMuonPFMet = bei.book1D("monomuon_deltaPhiMuonPFMet", "#Delta#phi(Monomuon, PFMet)", 40, 0., 3.15);
219  monomuon_TransverseMass = bei.book1D("monomuon_TransverseMass", "Transverse Mass M_{T} GeV", 40, 200., 3000.);
220  monomuon_MuonMulti = bei.book1D("monomuon_MuonMulti", "No. of Muons", 10, 0., 10.);
221  //--- MonoElectron
222  bei.setCurrentFolder("Physics/Exotica/MonoElectron");
223  monoelectron_Electron_pt = bei.book1D("monoelectron_Electron_pt", "Pt of Monoelectron (GeV)", 50, 30.0, 4000);
224  monoelectron_Electron_eta = bei.book1D("monoelectron_Electron_eta", "#eta(MonoElectron)", 50, -2.5, 2.5);
225  monoelectron_Electron_phi = bei.book1D("monoelectron_Electron_phi", "#phi(MonoElectron)", 50, -3.14, 3.14);
226  monoelectron_Charge = bei.book1D("monoelectron_Charge", "Charge of the MonoElectron", 10, -5., 5.);
227  monoelectron_PFMet = bei.book1D("monoelectron_PFMet", "Pt of PFMET (GeV)", 40, 0.0, 4000);
228  monoelectron_PFMet_phi = bei.book1D("monoelectron_PFMet_phi", "PFMET #phi", 50, -3.14, 3.14);
229  monoelectron_ElectronPtOverPFMet =
230  bei.book1D("monoelectron_ElectronPtOverPFMet", "Pt of Monoelectron/PFMet", 40, 0.0, 5.);
231  monoelectron_deltaPhiElectronPFMet =
232  bei.book1D("monoelectron_deltaPhiElectronPFMet", "#Delta#phi(MonoElectron, PFMet)", 40, 0., 3.15);
233  monoelectron_TransverseMass = bei.book1D("monoelectron_TransverseMass", "Transverse Mass M_{T} GeV", 40, 200., 4000.);
234  monoelectron_ElectronMulti = bei.book1D("monoelectron_ElectronMulti", "No. of Electrons", 10, 0., 10.);
235 
236  //--- DiPhotons
237  bei.setCurrentFolder("Physics/Exotica/MonoPhotons");
238  monophoton_Photon_energy = bei.book1D("monophoton_Photon_energy", "Energy of Leading Photon (GeV)", 50, 30.0, 1000);
239  monophoton_Photon_et = bei.book1D("monophoton_Photon_et", "Et of Leading Photon (GeV)", 50, 30.0, 1000);
240  monophoton_Photon_pt = bei.book1D("monophoton_Photon_pt", "Pt of Leading Photon (GeV)", 50, 30.0, 1000);
241  monophoton_Photon_eta = bei.book1D("monophoton_Photon_eta", "#eta (Leading Photon)", 50, -2.5, 2.5);
242  monophoton_Photon_etasc = bei.book1D("monophoton_Photon_etasc", "#eta sc(Leading Photon)", 50, -2.5, 2.5);
243  monophoton_Photon_phi = bei.book1D("monophoton_Photon_phi", "#phi(Leading Photon)", 50, -3.14, 3.14);
244  monophoton_Photon_hovere = bei.book1D("monophoton_Photon_hovere", "H/E (Leading Photon)", 50, 0., 0.50);
245  monophoton_Photon_sigmaietaieta =
246  bei.book1D("monophoton_Photon_sigmaietaieta", "#sigma_{i #eta i #eta} (Leading Photon)", 50, 0., 0.03);
247  monophoton_Photon_trksumptsolidconedr03 =
248  bei.book1D("monophoton_Photon_trksumptsolidconedr03", "TrkSumPtDr03 (Leading Photon)", 50, 0., 15.);
249  monophoton_Photon_e1x5e5x5 = bei.book1D("monophoton_Photon_e1x5e5x5", "E_{1x5}/E_{5x5} (Leading Photon)", 50, 0., 1.);
250  monophoton_Photon_e2x5e5x5 = bei.book1D("monophoton_Photon_e2x5e5x5", "E_{2x5}/E_{5x5} (Leading Photon)", 50, 0., 1.);
251  monophoton_PFMet = bei.book1D("monophoton_PFMet", "Pt of PFMET (GeV)", 40, 0.0, 1000);
252  monophoton_PFMet_phi = bei.book1D("monophoton_PFMet_phi", "PFMET #phi", 50, -3.14, 3.14);
253  monophoton_PhotonPtOverPFMet = bei.book1D("monophoton_PhotonPtOverPFMet", "Pt of Monophoton/PFMet", 40, 0.0, 5.);
254  monophoton_deltaPhiPhotonPFMet =
255  bei.book1D("monophoton_deltaPhiPhotonPFMet", "#Delta#phi(SubLeading Photon, PFMet)", 40, 0., 3.15);
256  monophoton_PhotonMulti = bei.book1D("monophoton_PhotonMulti", "No. of Photons", 10, 0., 10.);
257 
258  //--- Displaced Leptons (filled using only leptons from long-lived stop decay).
259  bei.setCurrentFolder("Physics/Exotica/DisplacedFermions");
260  dispElec_track_effi_lxy = bei.bookProfile("dispElec_track_effi_lxy",
261  "Electron channel; transverse decay length (cm); track reco efficiency",
262  10,
263  0.,
264  100.,
265  -999.,
266  999,
267  "");
268  dispElec_elec_effi_lxy = bei.bookProfile("dispElec_elec_effi_lxy",
269  "Electron channel; transverse decay length (cm); electron reco efficiency",
270  10,
271  0.,
272  100.,
273  -999.,
274  999,
275  "");
276  dispMuon_track_effi_lxy = bei.bookProfile("dispMuon_track_effi_lxy",
277  "Muon channel; transverse decay length (cm); track reco efficiency",
278  10,
279  0.,
280  100.,
281  -999.,
282  999,
283  "");
284  dispMuon_muon_effi_lxy = bei.bookProfile("dispMuon_muon_effi_lxy",
285  "Muon channel; transverse decay length (cm); muon reco efficiency",
286  10,
287  0.,
288  100.,
289  -999.,
290  999,
291  "");
292  dispMuon_muonDisp_effi_lxy =
293  bei.bookProfile("dispMuon_muonDisp_effi_lxy",
294  "Muon channel; transverse decay length (cm); displacedMuon reco efficiency",
295  10,
296  0.,
297  100.,
298  -999.,
299  999,
300  "");
301  dispMuon_muonDispSA_effi_lxy =
302  bei.bookProfile("dispMuon_muonDispSA_effi_lxy",
303  "Muon channel; transverse decay length (cm); displacedSAMuon reco efficiency",
304  10,
305  0.,
306  400.,
307  -999.,
308  999,
309  "");
310  //--- Displaced Jets (filled using only tracks or jets from long-lived stop decay).
311  dispJet_track_effi_lxy = bei.bookProfile("dispJet_track_effi_lxy",
312  "Jet channel; transverse decay length (cm); track reco efficiency",
313  10,
314  0.,
315  100.,
316  -999.,
317  999,
318  "");
319 
320  bei.cd();
321 }
322 
323 //
324 // -- Analyze
325 //
327  // objects
328 
329  //Trigger
330  bool ValidTriggers = iEvent.getByToken(TriggerToken_, TriggerResults_);
331  if (!ValidTriggers)
332  return;
333 
334  // Vertices
335  bool ValidVertices = iEvent.getByToken(VertexToken_, VertexCollection_);
336  if (!ValidVertices)
337  return;
338 
339  // Electrons
340  bool ValidGedGsfElectron = iEvent.getByToken(ElectronToken_, ElectronCollection_);
341  if (!ValidGedGsfElectron)
342  return;
343 
344  // Muons
345  bool ValidPFMuon = iEvent.getByToken(MuonToken_, MuonCollection_);
346  if (!ValidPFMuon)
347  return;
348 
349  // Jets
350  bool ValidPFJet = iEvent.getByToken(PFJetToken_, pfJetCollection_);
351  pfjets = *pfJetCollection_;
352  if (!ValidPFJet)
353  return;
354 
355  // PFMETs
356  bool ValidPFMET = iEvent.getByToken(PFMETToken_, pfMETCollection_);
357  if (!ValidPFMET)
358  return;
359 
360  // Photons
361  bool ValidCaloPhoton = iEvent.getByToken(PhotonToken_, PhotonCollection_);
362  if (!ValidCaloPhoton)
363  return;
364 
365  // Tracks
366  bool ValidTracks = iEvent.getByToken(TrackToken_, TrackCollection_);
367  if (!ValidTracks)
368  return;
369 
370  // Special collections for displaced particles
371  iEvent.getByToken(MuonDispToken_, MuonDispCollection_);
372  iEvent.getByToken(MuonDispSAToken_, MuonDispSACollection_);
373 
374  // MC truth
375  bool ValidGenParticles = iEvent.getByToken(GenParticleToken_, GenCollection_);
376 
377  // JetCorrector
378  bool ValidJetCorrector = iEvent.getByToken(JetCorrectorToken_, JetCorrector_);
379 
380  //Trigger
381 
382  int N_Triggers = TriggerResults_->size();
383  int N_GoodTriggerPaths = HltPaths_.size();
384  bool triggered_event = false;
385  const edm::TriggerNames& trigName = iEvent.triggerNames(*TriggerResults_);
386  for (int i_Trig = 0; i_Trig < N_Triggers; ++i_Trig) {
387  if (TriggerResults_.product()->accept(i_Trig)) {
388  for (int n = 0; n < N_GoodTriggerPaths; n++) {
389  if (trigName.triggerName(i_Trig).find(HltPaths_[n]) != std::string::npos) {
390  triggered_event = true;
391  }
392  }
393  }
394  }
395  if (triggered_event == false)
396  return;
397 
398  for (int i = 0; i < 2; i++) {
399  //Jets
400  PFJetPx[i] = 0.;
401  PFJetPy[i] = 0.;
402  PFJetPt[i] = 0.;
403  PFJetEta[i] = 0.;
404  PFJetPhi[i] = 0.;
405  PFJetNHEF[i] = 0.;
406  PFJetCHEF[i] = 0.;
407  PFJetNEMF[i] = 0.;
408  PFJetCEMF[i] = 0.;
409  //Muons
410  MuonPx[i] = 0.;
411  MuonPy[i] = 0.;
412  MuonPt[i] = 0.;
413  MuonEta[i] = 0.;
414  MuonPhi[i] = 0.;
415  MuonCharge[i] = 0.;
416  //Electrons
417  ElectronPx[i] = 0.;
418  ElectronPy[i] = 0.;
419  ElectronPt[i] = 0.;
420  ElectronEta[i] = 0.;
421  ElectronPhi[i] = 0.;
422  ElectronCharge[i] = 0.;
423  //Photons
424  PhotonEnergy[i] = 0.;
425  PhotonPt[i] = 0.;
426  PhotonEt[i] = 0.;
427  PhotonEta[i] = 0.;
428  PhotonEtaSc[i] = 0.;
429  PhotonPhi[i] = 0.;
430  PhotonHoverE[i] = 0.;
431  PhotonSigmaIetaIeta[i] = 0.;
432  PhotonTrkSumPtSolidConeDR03[i] = 0.;
433  PhotonE1x5E5x5[i] = 0.;
434  PhotonE2x5E5x5[i] = 0.;
435  }
436 
437  //Getting information from the RecoObjects
438  dijet_countPFJet_ = 0;
439  monojet_countPFJet_ = 0;
440 
441  PFJetCollection::const_iterator pfjet_ = pfjets.begin();
442  for (; pfjet_ != pfjets.end(); ++pfjet_) {
443  double scale = 1.;
444  if (ValidJetCorrector)
445  scale = JetCorrector_->correction(*pfjet_);
446  if (scale * pfjet_->pt() > PFJetPt[0]) {
447  PFJetPt[1] = PFJetPt[0];
448  PFJetPx[1] = PFJetPx[0];
449  PFJetPy[1] = PFJetPy[0];
450  PFJetEta[1] = PFJetEta[0];
451  PFJetPhi[1] = PFJetPhi[0];
452  PFJetRapidity[1] = PFJetRapidity[0];
453  PFJetMass[1] = PFJetMass[0];
454  PFJetNHEF[1] = PFJetNHEF[0];
455  PFJetCHEF[1] = PFJetCHEF[0];
456  PFJetNEMF[1] = PFJetNEMF[0];
457  PFJetCEMF[1] = PFJetCEMF[0];
458  //
459  PFJetPt[0] = scale * pfjet_->pt();
460  PFJetPx[0] = scale * pfjet_->px();
461  PFJetPy[0] = scale * pfjet_->py();
462  PFJetEta[0] = pfjet_->eta();
463  PFJetPhi[0] = pfjet_->phi();
464  PFJetRapidity[0] = pfjet_->rapidity();
465  PFJetMass[0] = pfjet_->mass();
466  PFJetNHEF[0] = pfjet_->neutralHadronEnergyFraction();
467  PFJetCHEF[0] = pfjet_->chargedHadronEnergyFraction();
468  PFJetNEMF[0] = pfjet_->neutralEmEnergyFraction();
469  PFJetCEMF[0] = pfjet_->chargedEmEnergyFraction();
470  } else if (scale * pfjet_->pt() < PFJetPt[0] && scale * pfjet_->pt() > PFJetPt[1]) {
471  PFJetPt[1] = scale * pfjet_->pt();
472  PFJetPx[1] = scale * pfjet_->px();
473  PFJetPy[1] = scale * pfjet_->py();
474  PFJetEta[1] = pfjet_->eta();
475  PFJetPhi[1] = pfjet_->phi();
476  PFJetRapidity[1] = pfjet_->rapidity();
477  PFJetMass[1] = pfjet_->mass();
478  PFJetNHEF[1] = pfjet_->neutralHadronEnergyFraction();
479  PFJetCHEF[1] = pfjet_->chargedHadronEnergyFraction();
480  PFJetNEMF[1] = pfjet_->neutralEmEnergyFraction();
481  PFJetCEMF[1] = pfjet_->chargedEmEnergyFraction();
482  } else {
483  }
484  if (scale * pfjet_->pt() > dijet_PFJet1_pt_cut_)
485  dijet_countPFJet_++;
486  if (scale * pfjet_->pt() > dijet_PFJet1_pt_cut_)
487  monojet_countPFJet_++;
488  }
489 
490  VertexCollection vertexCollection = *(VertexCollection_.product());
491  reco::VertexCollection::const_iterator primaryVertex_ = vertexCollection.begin();
492 
493  dimuon_countMuon_ = 0;
494  monomuon_countMuon_ = 0;
495  reco::MuonCollection::const_iterator muon_ = MuonCollection_->begin();
496  for (; muon_ != MuonCollection_->end(); muon_++) {
497  // Muon High Pt ID
498  bool HighPt = false;
499  if (muon_->isGlobalMuon() && muon_->globalTrack()->hitPattern().numberOfValidMuonHits() > 0 &&
500  muon_->numberOfMatchedStations() > 1 && muon_->innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5 &&
501  muon_->innerTrack()->hitPattern().numberOfValidPixelHits() > 0 &&
502  muon_->muonBestTrack()->ptError() / muon_->muonBestTrack()->pt() < 0.3 &&
503  fabs(muon_->muonBestTrack()->dxy(primaryVertex_->position())) < 0.2 &&
504  fabs(muon_->bestTrack()->dz(primaryVertex_->position())) < 0.5 && fabs(muon_->eta()) < 2.1)
505  HighPt = true;
506 
507  if (HighPt == true) {
508  if (muon_->pt() > MuonPt[0]) {
509  MuonPt[1] = MuonPt[0];
510  MuonPx[1] = MuonPx[0];
511  MuonPy[1] = MuonPy[0];
512  MuonEta[1] = MuonEta[0];
513  MuonPhi[1] = MuonPhi[0];
514  MuonCharge[1] = MuonCharge[0];
515  //
516  MuonPt[0] = muon_->pt();
517  MuonPx[0] = muon_->px();
518  MuonPy[0] = muon_->py();
519  MuonEta[0] = muon_->eta();
520  MuonPhi[0] = muon_->phi();
521  MuonCharge[0] = muon_->charge();
522  }
523  }
524  if (muon_->pt() > dimuon_Muon1_pt_cut_)
525  dimuon_countMuon_++;
526  if (muon_->pt() > dimuon_Muon1_pt_cut_)
527  monomuon_countMuon_++;
528  }
529 
530  dielectron_countElectron_ = 0;
531  monoelectron_countElectron_ = 0;
532  reco::GsfElectronCollection::const_iterator electron_ = ElectronCollection_->begin();
533  for (; electron_ != ElectronCollection_->end(); electron_++) {
534  //HEEP Selection 4.1 (some cuts)
535  if (electron_->e5x5() <= 0)
536  continue;
537  if (electron_->gsfTrack().isNull())
538  continue;
539  bool HEPP_ele = false;
540  double sceta = electron_->caloPosition().eta();
541  double dEtaIn = fabs(electron_->deltaEtaSuperClusterTrackAtVtx());
542  double dPhiIn = fabs(electron_->deltaPhiSuperClusterTrackAtVtx());
543  double HoverE = electron_->hadronicOverEm();
544  int missingHits = electron_->gsfTrack()->hitPattern().numberOfLostTrackerHits(HitPattern::MISSING_INNER_HITS);
545  double dxy = electron_->gsfTrack()->dxy(primaryVertex_->position());
546  double tkIso = electron_->dr03TkSumPt();
547  double e2x5Fraction = electron_->e2x5Max() / electron_->e5x5();
548  double e1x5Fraction = electron_->e1x5() / electron_->e5x5();
549  double scSigmaIetaIeta = electron_->scSigmaIEtaIEta();
550  if (electron_->ecalDriven() && electron_->pt() > 35.) {
551  if (fabs(sceta) < 1.442) { // barrel
552  if (fabs(dEtaIn) < 0.005 && fabs(dPhiIn) < 0.06 && HoverE < 0.05 && tkIso < 5. && missingHits <= 1 &&
553  fabs(dxy) < 0.02 && (e2x5Fraction > 0.94 || e1x5Fraction > 0.83))
554  HEPP_ele = true;
555  } else if (fabs(sceta) > 1.56 && fabs(sceta) < 2.5) { // endcap
556  if (fabs(dEtaIn) < 0.007 && fabs(dPhiIn) < 0.06 && HoverE < 0.05 && tkIso < 5. && missingHits <= 1 &&
557  fabs(dxy) < 0.02 && scSigmaIetaIeta < 0.03)
558  HEPP_ele = true;
559  }
560  }
561  //
562  if (HEPP_ele == false)
563  continue;
564  if (electron_->pt() > ElectronPt[0]) {
565  ElectronPt[1] = ElectronPt[0];
566  ElectronPx[1] = ElectronPx[0];
567  ElectronPy[1] = ElectronPy[0];
568  ElectronEta[1] = ElectronEta[0];
569  ElectronPhi[1] = ElectronPhi[0];
570  ElectronCharge[1] = ElectronCharge[0];
571  //
572  ElectronPt[0] = electron_->pt();
573  ElectronPx[0] = electron_->px();
574  ElectronPy[0] = electron_->py();
575  ElectronEta[0] = electron_->eta();
576  ElectronPhi[0] = electron_->phi();
577  ElectronCharge[0] = electron_->charge();
578  }
579  if (electron_->pt() > dielectron_Electron1_pt_cut_)
580  dielectron_countElectron_++;
581  if (electron_->pt() > dielectron_Electron1_pt_cut_)
582  monoelectron_countElectron_++;
583  }
584 
585  diphoton_countPhoton_ = 0.;
586  reco::PhotonCollection::const_iterator photon_ = PhotonCollection_->begin();
587  for (; photon_ != PhotonCollection_->end(); ++photon_) {
588  if (photon_->pt() > PhotonPt[0]) {
589  PhotonEnergy[1] = PhotonEnergy[0];
590  PhotonPt[1] = PhotonPt[0];
591  PhotonEt[1] = PhotonEt[0];
592  PhotonEta[1] = PhotonEta[0];
593  PhotonEtaSc[1] = PhotonEtaSc[0];
594  PhotonPhi[1] = PhotonPhi[0];
595  PhotonHoverE[1] = PhotonHoverE[0];
596  PhotonSigmaIetaIeta[1] = PhotonSigmaIetaIeta[0];
597  PhotonTrkSumPtSolidConeDR03[1] = PhotonTrkSumPtSolidConeDR03[0];
598  PhotonE1x5E5x5[1] = PhotonE1x5E5x5[0];
599  PhotonE2x5E5x5[1] = PhotonE2x5E5x5[0];
600 
601  PhotonEnergy[0] = photon_->energy();
602  PhotonPt[0] = photon_->pt();
603  PhotonEt[0] = photon_->et();
604  PhotonEta[0] = photon_->eta();
605  PhotonEtaSc[0] = photon_->caloPosition().eta();
606  PhotonPhi[0] = photon_->phi();
607  PhotonHoverE[0] = photon_->hadronicOverEm();
608  PhotonSigmaIetaIeta[0] = photon_->sigmaIetaIeta();
609  PhotonTrkSumPtSolidConeDR03[0] = photon_->trkSumPtSolidConeDR03();
610  PhotonE1x5E5x5[0] = photon_->e1x5() / photon_->e5x5();
611  PhotonE2x5E5x5[0] = photon_->e2x5() / photon_->e5x5();
612 
613  if (photon_->pt() > dielectron_Electron1_pt_cut_)
614  diphoton_countPhoton_++;
615  }
616  }
617 
618  //
619  // Analyze
620  //
621 
622  //Resonances
623  analyzeDiJets(iEvent);
624  analyzeDiMuons(iEvent);
625  analyzeDiElectrons(iEvent);
626  analyzeDiPhotons(iEvent);
627 
628  //MonoSearches
629  analyzeMonoJets(iEvent);
630  analyzeMonoMuons(iEvent);
631  analyzeMonoElectrons(iEvent);
632 
633  //LongLived
634  if (ValidGenParticles) {
635  analyzeDisplacedLeptons(iEvent, iSetup);
636  analyzeDisplacedJets(iEvent, iSetup);
637  }
638 }
639 
641  //=== This is designed to run on MC events in which a pair of long-lived stop quarks each decay to a displaced lepton + displaced b jet.
642 
643  // Initialisation
644 
645  const unsigned int stop1 = 1000006; // PDG identifier of top squark1
646  const unsigned int stop2 = 2000006; // PDG identifier of top squark2
647  const float deltaRcut = 0.01; // Cone size for matching reco to true leptons.
648  const float invPtcut = 0.1; // Cut in 1/Pt consistency for matching reco tracks to genParticles.
649 
650  //--- Measure the efficiency to reconstruct leptons from long-lived stop quark decay.
651 
652  for (const reco::GenParticle& gen : *GenCollection_) {
653  unsigned int idPdg = abs(gen.pdgId());
654  // Find electrons/muons from long-lived stop decay.
655  if (idPdg == stop1 || idPdg == stop2) {
656  unsigned int nDau = gen.numberOfDaughters();
657  for (unsigned int i = 0; i < nDau; i++) {
658  const reco::GenParticle* dau = (const reco::GenParticle*)gen.daughter(i);
659  // Only measure efficiency using leptons passing pt & eta cuts. (The pt cut is almost irrelevant, since leptons from stop decay are hard).
660  if (fabs(dau->eta()) < dispFermion_eta_cut_ && dau->pt() > dispFermion_pt_cut_) {
661  unsigned int pdgIdDau = abs(dau->pdgId());
662 
663  if (pdgIdDau == 11 || pdgIdDau == 13) { // electron or muon from stop decay
664 
665  // Get transverse decay length of stop quark.
666  float lxy = dau->vertex().rho();
667 
668  // Get momentum vector of daughter genParticle trajectory extrapolated to beam-line.
669  GlobalVector genP = this->getGenParticleTrajectoryAtBeamline(iSetup, dau);
670 
671  if (pdgIdDau == 11) { // electron from stop decay
672 
673  // Find matching reco track if any.
674  bool recoedTrk = false;
675  for (const reco::Track& trk : *TrackCollection_) {
676  if (reco::deltaR(genP, trk) < deltaRcut && fabs(1 / dau->pt() - 1 / trk.pt()) < invPtcut) {
677  //cout<<"MATCH ELEC TRK "<<dau->pt()<<" "<<trk.pt()<<" "<<reco::deltaR(genP, trk)<<endl;
678  recoedTrk = true;
679  }
680  }
681  dispElec_track_effi_lxy->Fill(lxy, recoedTrk);
682 
683  // Find matching reco electron if any.
684  bool recoedE = false;
685  for (const reco::GsfElectron& eReco : *ElectronCollection_) {
686  if (reco::deltaR(genP, eReco) < deltaRcut && fabs(1 / dau->pt() - 1 / eReco.pt()) < invPtcut)
687  recoedE = true;
688  }
689  dispElec_elec_effi_lxy->Fill(lxy, recoedE);
690 
691  } else if (pdgIdDau == 13) { // muon from stop decay
692 
693  // Find matching reco track if any.
694  bool recoedTrk = false;
695  for (const reco::Track& trk : *TrackCollection_) {
696  if (reco::deltaR(genP, trk) < deltaRcut && fabs(1 / dau->pt() - 1 / trk.pt()) < invPtcut) {
697  //cout<<"MATCH MUON TRK "<<dau->pt()<<" "<<trk.pt()<<" "<<reco::deltaR(genP, trk)<<endl;
698  recoedTrk = true;
699  }
700  }
701  dispMuon_track_effi_lxy->Fill(lxy, recoedTrk);
702 
703  // Find matching reco muon, if any, in normal global muon collection.
704  bool recoedMu = false;
705  for (const reco::Muon& muReco : *MuonCollection_) {
706  if (reco::deltaR(genP, muReco) < deltaRcut && fabs(1 / dau->pt() - 1 / muReco.pt()) < invPtcut)
707  recoedMu = true;
708  }
709  dispMuon_muon_effi_lxy->Fill(lxy, recoedMu);
710 
711  // Find matching reco muon, if any, in displaced global muon collection.
712  bool recoedMuDisp = false;
713  for (const reco::Track& muDispReco : *MuonDispCollection_) {
714  if (reco::deltaR(genP, muDispReco) < deltaRcut && fabs(1 / dau->pt() - 1 / muDispReco.pt()) < invPtcut)
715  recoedMuDisp = true;
716  }
717  dispMuon_muonDisp_effi_lxy->Fill(lxy, recoedMuDisp);
718 
719  // Find matching reco muon, if any, in displaced SA muon collection.
720  bool recoedMuDispSA = false;
721  for (const reco::Track& muDispSAReco : *MuonDispSACollection_) {
722  if (reco::deltaR(genP, muDispSAReco) < deltaRcut &&
723  fabs(1 / dau->pt() - 1 / muDispSAReco.pt()) < invPtcut)
724  recoedMuDispSA = true;
725  }
726  dispMuon_muonDispSA_effi_lxy->Fill(lxy, recoedMuDispSA);
727  }
728  }
729  }
730  }
731  }
732  }
733 }
735  //=== This is designed to run on MC events in which a pair of long-lived stop quarks each decay to a displaced lepton + displaced b jet.
736 
737  // Initialisation
738 
739  // Define function to identify R-hadrons containing stop quarks from PDG particle code.
740  // N.B. Jets originate not just from stop quark, but also from its partner SM quark inside the R hadron.
741  auto isRhadron = [](unsigned int pdgId) { return (pdgId / 100) == 10006 || (pdgId / 1000) == 1006; };
742 
743  const float deltaRcut = 0.01; // Cone size for matching reco tracks to genParticles.
744  const float invPtcut = 0.1; // Cut in 1/Pt consistency for matching reco tracks to genParticles.
745 
746  //--- Measure the efficiency to reconstruct tracks in jet(s) from long-lived stop quark decay.
747 
748  for (const reco::GenParticle& gen : *GenCollection_) {
749  unsigned int idPdg = abs(gen.pdgId());
750  // Only measure efficiency using charged e, mu pi, K, p
751  if (idPdg == 11 || idPdg == 13 || idPdg == 211 || idPdg == 321 || idPdg == 2212) {
752  // Only measure efficiency using leptons passing pt & eta cuts. (The pt cut is almost irrelevant, since leptons from stop decay are hard).
753  if (fabs(gen.eta()) < dispFermion_eta_cut_ && gen.pt() > dispFermion_pt_cut_) {
754  // Check if this particle came (maybe indirectly) from an R hadron decay.
755  const reco::GenParticle* genMoth = &gen;
756  const reco::GenParticle* genRhadron = nullptr;
757  bool foundParton = false;
758  while (genMoth->numberOfMothers() > 0) {
759  genMoth = (const reco::GenParticle*)genMoth->mother(0);
760  unsigned int idPdgMoth = abs(genMoth->pdgId());
761  // Check that the R-hadron decayed via a quark/gluon before yielding genParticle "gen".
762  // This ensures that gen is from the jet, and not a lepton produced directly from the stop quark decay.
763  if ((idPdgMoth >= 1 && idPdgMoth <= 6) || idPdgMoth == 21)
764  foundParton = true;
765  // Note if ancestor was R hadron
766  if (isRhadron(idPdgMoth)) {
767  genRhadron = genMoth;
768  break;
769  }
770  }
771 
772  if (foundParton && genRhadron != nullptr) { // This GenParticle came (maybe indirectly) from an R hadron decay.
773 
774  // Get transverse decay length of R hadron.
775  float lxy = genRhadron->daughter(0)->vertex().rho();
776 
777  // Get momentum vector of genParticle trajectory extrapolated to beam-line.
778  GlobalVector genP = this->getGenParticleTrajectoryAtBeamline(iSetup, &gen);
779 
780  // Find matching reco track if any.
781  bool recoedTrk = false;
782  for (const reco::Track& trk : *TrackCollection_) {
783  if (reco::deltaR(genP, trk) < deltaRcut && fabs(1 / gen.pt() - 1 / trk.pt()) < invPtcut) {
784  //cout<<"MATCH TRK "<<gen.pt()<<" "<<trk.pt()<<" "<<reco::deltaR(gen, trk)<<endl;
785  recoedTrk = true;
786  }
787  }
788  dispJet_track_effi_lxy->Fill(lxy, recoedTrk);
789  }
790  }
791  }
792  }
793 }
795  const reco::GenParticle* gen) {
796  //=== Estimate the momentum vector that a GenParticle would have at its trajectory's point of closest
797  //=== approach to the beam-line.
798 
799  // Get the magnetic field
800  edm::ESHandle<MagneticField> theMagField;
801  iSetup.get<IdealMagneticFieldRecord>().get(theMagField);
802 
803  // Make FreeTrajectoryState of this gen particle
804  FreeTrajectoryState fts(GlobalPoint(gen->vx(), gen->vy(), gen->vz()),
805  GlobalVector(gen->px(), gen->py(), gen->pz()),
806  gen->charge(),
807  theMagField.product());
808 
809  // Get trajectory closest to beam line
810  TSCBLBuilderNoMaterial tscblBuilder;
811  const BeamSpot beamspot; // Simple beam-spot at (0,0,0). Good enough.
812  TrajectoryStateClosestToBeamLine tsAtClosestApproach = tscblBuilder(fts, beamspot);
813 
814  GlobalVector p = tsAtClosestApproach.trackStateAtPCA().momentum();
815 
816  return p;
817 }
818 
820  for (unsigned int icoll = 0; icoll < DiJetPFJetCollection_.size(); ++icoll) {
821  dijet_countPFJet_ = 0;
822  bool ValidDiJetPFJets = iEvent.getByToken(DiJetPFJetToken_[icoll], DiJetpfJetCollection_);
823  if (!ValidDiJetPFJets)
824  continue;
825  DiJetpfjets = *DiJetpfJetCollection_;
826  for (int i = 0; i < 2; i++) {
827  PFJetPx[i] = 0.;
828  PFJetPy[i] = 0.;
829  PFJetPt[i] = 0.;
830  PFJetEta[i] = 0.;
831  PFJetPhi[i] = 0.;
832  PFJetNHEF[i] = 0.;
833  PFJetCHEF[i] = 0.;
834  PFJetNEMF[i] = 0.;
835  PFJetCEMF[i] = 0.;
836  }
837  PFJetCollection::const_iterator DiJetpfjet_ = DiJetpfjets.begin();
838  for (; DiJetpfjet_ != DiJetpfjets.end(); ++DiJetpfjet_) {
839  double scale = 1.;
840  if (scale * DiJetpfjet_->pt() > PFJetPt[0]) {
841  PFJetPt[1] = PFJetPt[0];
842  PFJetPx[1] = PFJetPx[0];
843  PFJetPy[1] = PFJetPy[0];
844  PFJetEta[1] = PFJetEta[0];
845  PFJetPhi[1] = PFJetPhi[0];
846  PFJetRapidity[1] = DiJetpfjet_->rapidity();
847  PFJetMass[1] = DiJetpfjet_->mass();
848  PFJetNHEF[1] = PFJetNHEF[0];
849  PFJetCHEF[1] = PFJetCHEF[0];
850  PFJetNEMF[1] = PFJetNEMF[0];
851  PFJetCEMF[1] = PFJetCEMF[0];
852  PFJetPt[0] = scale * DiJetpfjet_->pt();
853  PFJetPx[0] = scale * DiJetpfjet_->px();
854  PFJetPy[0] = scale * DiJetpfjet_->py();
855  PFJetEta[0] = DiJetpfjet_->eta();
856  PFJetPhi[0] = DiJetpfjet_->phi();
857  PFJetRapidity[0] = DiJetpfjet_->rapidity();
858  PFJetMass[0] = DiJetpfjet_->mass();
859  PFJetNHEF[0] = DiJetpfjet_->neutralHadronEnergyFraction();
860  PFJetCHEF[0] = DiJetpfjet_->chargedHadronEnergyFraction();
861  PFJetNEMF[0] = DiJetpfjet_->neutralEmEnergyFraction();
862  PFJetCEMF[0] = DiJetpfjet_->chargedEmEnergyFraction();
863  } else if (scale * DiJetpfjet_->pt() < PFJetPt[0] && scale * DiJetpfjet_->pt() > PFJetPt[1]) {
864  PFJetPt[1] = scale * DiJetpfjet_->pt();
865  PFJetPx[1] = scale * DiJetpfjet_->px();
866  PFJetPy[1] = scale * DiJetpfjet_->py();
867  PFJetEta[1] = DiJetpfjet_->eta();
868  PFJetPhi[1] = DiJetpfjet_->phi();
869  PFJetRapidity[1] = DiJetpfjet_->rapidity();
870  PFJetMass[1] = DiJetpfjet_->mass();
871  PFJetNHEF[1] = DiJetpfjet_->neutralHadronEnergyFraction();
872  PFJetCHEF[1] = DiJetpfjet_->chargedHadronEnergyFraction();
873  PFJetNEMF[1] = DiJetpfjet_->neutralEmEnergyFraction();
874  PFJetCEMF[1] = DiJetpfjet_->chargedEmEnergyFraction();
875  } else {
876  }
877  if (scale * DiJetpfjet_->pt() > dijet_PFJet1_pt_cut_)
878  dijet_countPFJet_++;
879  }
880  if (PFJetPt[0] > dijet_PFJet1_pt_cut_ && PFJetPt[1] > dijet_PFJet2_pt_cut_) {
881  dijet_PFJet_pt[icoll]->Fill(PFJetPt[0]);
882  dijet_PFJet_eta[icoll]->Fill(PFJetEta[0]);
883  dijet_PFJet_phi[icoll]->Fill(PFJetPhi[0]);
884  dijet_PFJet_rapidity[icoll]->Fill(PFJetRapidity[0]);
885  dijet_PFJet_mass[icoll]->Fill(PFJetMass[0]);
886  dijet_PFJet_pt[icoll]->Fill(PFJetPt[1]);
887  dijet_PFJet_eta[icoll]->Fill(PFJetEta[1]);
888  dijet_PFJet_phi[icoll]->Fill(PFJetPhi[1]);
889  dijet_PFJet_rapidity[icoll]->Fill(PFJetRapidity[1]);
890  dijet_PFJet_mass[icoll]->Fill(PFJetMass[1]);
891  dijet_deltaPhiPFJet1PFJet2[icoll]->Fill(deltaPhi(PFJetPhi[0], PFJetPhi[1]));
892  dijet_deltaEtaPFJet1PFJet2[icoll]->Fill(PFJetEta[0] - PFJetEta[1]);
893  dijet_deltaRPFJet1PFJet2[icoll]->Fill(deltaR(PFJetEta[0], PFJetPhi[0], PFJetEta[1], PFJetPhi[1]));
894  dijet_invMassPFJet1PFJet2[icoll]->Fill(
895  sqrt(2 * PFJetPt[0] * PFJetPt[1] * (cosh(PFJetEta[0] - PFJetEta[1]) - cos(PFJetPhi[0] - PFJetPhi[1]))));
896  dijet_PFchef[icoll]->Fill(PFJetCHEF[0]);
897  dijet_PFnhef[icoll]->Fill(PFJetNHEF[0]);
898  dijet_PFcemf[icoll]->Fill(PFJetCEMF[0]);
899  dijet_PFnemf[icoll]->Fill(PFJetNEMF[0]);
900  dijet_PFJetMulti[icoll]->Fill(dijet_countPFJet_);
901  }
902  }
903 }
904 
906  if (MuonPt[0] > dimuon_Muon1_pt_cut_ && MuonPt[1] > dimuon_Muon2_pt_cut_ && MuonCharge[0] * MuonCharge[1] == -1) {
907  dimuon_Muon_pt->Fill(MuonPt[0]);
908  dimuon_Muon_eta->Fill(MuonEta[0]);
909  dimuon_Muon_phi->Fill(MuonPhi[0]);
910  dimuon_Muon_pt->Fill(MuonPt[1]);
911  dimuon_Muon_eta->Fill(MuonEta[1]);
912  dimuon_Muon_phi->Fill(MuonPhi[1]);
913  dimuon_Charge->Fill(MuonCharge[0]);
914  dimuon_Charge->Fill(MuonCharge[1]);
915  dimuon_deltaPhiMuon1Muon2->Fill(deltaPhi(MuonPhi[0], MuonPhi[1]));
916  dimuon_deltaEtaMuon1Muon2->Fill(MuonEta[0] - MuonEta[1]);
917  dimuon_deltaRMuon1Muon2->Fill(deltaR(MuonEta[0], MuonPhi[0], MuonEta[1], MuonPhi[1]));
918  dimuon_invMassMuon1Muon2->Fill(
919  sqrt(2 * MuonPt[0] * MuonPt[1] * (cosh(MuonEta[0] - MuonEta[1]) - cos(MuonPhi[0] - MuonPhi[1]))));
920  dimuon_MuonMulti->Fill(dimuon_countMuon_);
921  }
922 }
923 
925  if (ElectronPt[0] > dielectron_Electron1_pt_cut_ && ElectronPt[1] > dielectron_Electron2_pt_cut_ &&
926  ElectronCharge[0] * ElectronCharge[1] == -1.) {
927  dielectron_Electron_pt->Fill(ElectronPt[0]);
928  dielectron_Electron_eta->Fill(ElectronEta[0]);
929  dielectron_Electron_phi->Fill(ElectronPhi[0]);
930  dielectron_Electron_pt->Fill(ElectronPt[1]);
931  dielectron_Electron_eta->Fill(ElectronEta[1]);
932  dielectron_Electron_phi->Fill(ElectronPhi[1]);
933  dielectron_Charge->Fill(ElectronCharge[0]);
934  dielectron_Charge->Fill(ElectronCharge[1]);
935  dielectron_deltaPhiElectron1Electron2->Fill(deltaPhi(ElectronPhi[0], ElectronPhi[1]));
936  dielectron_deltaEtaElectron1Electron2->Fill(ElectronEta[0] - ElectronEta[1]);
937  dielectron_deltaRElectron1Electron2->Fill(deltaR(ElectronEta[0], ElectronPhi[0], ElectronEta[1], ElectronPhi[1]));
938  dielectron_invMassElectron1Electron2->Fill(
939  sqrt(2 * ElectronPt[0] * ElectronPt[1] *
940  (cosh(ElectronEta[0] - ElectronEta[1]) - cos(ElectronPhi[0] - ElectronPhi[1]))));
941  dielectron_ElectronMulti->Fill(dielectron_countElectron_);
942  }
943 }
944 
946  if (PhotonPt[0] > diphoton_Photon1_pt_cut_ && PhotonPt[1] > diphoton_Photon2_pt_cut_) {
947  diphoton_Photon_energy->Fill(PhotonEnergy[0]);
948  diphoton_Photon_pt->Fill(PhotonPt[0]);
949  diphoton_Photon_et->Fill(PhotonEt[0]);
950  diphoton_Photon_eta->Fill(PhotonEta[0]);
951  diphoton_Photon_etasc->Fill(PhotonEtaSc[0]);
952  diphoton_Photon_phi->Fill(PhotonPhi[0]);
953  if (fabs(PhotonEtaSc[0]) < 1.442) {
954  diphoton_Photon_hovere_eb->Fill(PhotonHoverE[0]);
955  diphoton_Photon_sigmaietaieta_eb->Fill(PhotonSigmaIetaIeta[0]);
956  diphoton_Photon_trksumptsolidconedr03_eb->Fill(PhotonTrkSumPtSolidConeDR03[0]);
957  diphoton_Photon_e1x5e5x5_eb->Fill(PhotonE1x5E5x5[0]);
958  diphoton_Photon_e2x5e5x5_eb->Fill(PhotonE2x5E5x5[0]);
959  }
960  if (fabs(PhotonEtaSc[0]) > 1.566 && fabs(PhotonEtaSc[0]) < 2.5) {
961  diphoton_Photon_hovere_ee->Fill(PhotonHoverE[0]);
962  diphoton_Photon_sigmaietaieta_ee->Fill(PhotonSigmaIetaIeta[0]);
963  diphoton_Photon_trksumptsolidconedr03_ee->Fill(PhotonTrkSumPtSolidConeDR03[0]);
964  diphoton_Photon_e1x5e5x5_ee->Fill(PhotonE1x5E5x5[0]);
965  diphoton_Photon_e2x5e5x5_ee->Fill(PhotonE2x5E5x5[0]);
966  }
967  diphoton_Photon_energy->Fill(PhotonEnergy[1]);
968  diphoton_Photon_pt->Fill(PhotonPt[1]);
969  diphoton_Photon_et->Fill(PhotonEt[1]);
970  diphoton_Photon_eta->Fill(PhotonEta[1]);
971  diphoton_Photon_etasc->Fill(PhotonEtaSc[1]);
972  diphoton_Photon_phi->Fill(PhotonPhi[1]);
973  if (fabs(PhotonEtaSc[1]) < 1.4442) {
974  diphoton_Photon_hovere_eb->Fill(PhotonHoverE[1]);
975  diphoton_Photon_sigmaietaieta_eb->Fill(PhotonSigmaIetaIeta[1]);
976  diphoton_Photon_trksumptsolidconedr03_eb->Fill(PhotonTrkSumPtSolidConeDR03[1]);
977  diphoton_Photon_e1x5e5x5_eb->Fill(PhotonE1x5E5x5[1]);
978  diphoton_Photon_e2x5e5x5_eb->Fill(PhotonE2x5E5x5[1]);
979  }
980  if (fabs(PhotonEtaSc[1]) > 1.566 && fabs(PhotonEtaSc[1]) < 2.5) {
981  diphoton_Photon_hovere_ee->Fill(PhotonHoverE[1]);
982  diphoton_Photon_sigmaietaieta_ee->Fill(PhotonSigmaIetaIeta[1]);
983  diphoton_Photon_trksumptsolidconedr03_ee->Fill(PhotonTrkSumPtSolidConeDR03[1]);
984  diphoton_Photon_e1x5e5x5_ee->Fill(PhotonE1x5E5x5[1]);
985  diphoton_Photon_e2x5e5x5_ee->Fill(PhotonE2x5E5x5[1]);
986  }
987  diphoton_deltaPhiPhoton1Photon2->Fill(deltaPhi(PhotonPhi[0], PhotonPhi[1]));
988  diphoton_deltaEtaPhoton1Photon2->Fill(PhotonEta[0] - PhotonEta[1]);
989  diphoton_deltaRPhoton1Photon2->Fill(deltaR(PhotonEta[0], PhotonPhi[0], PhotonEta[1], PhotonPhi[1]));
990  diphoton_invMassPhoton1Photon2->Fill(
991  sqrt(2 * PhotonPt[0] * PhotonPt[1] * (cosh(PhotonEta[0] - PhotonEta[1]) - cos(PhotonPhi[0] - PhotonPhi[1]))));
992  diphoton_PhotonMulti->Fill(diphoton_countPhoton_);
993  }
994 }
995 
997  const PFMETCollection* pfmetcol = pfMETCollection_.product();
998  const PFMET pfmet = pfmetcol->front();
999  if (PFJetPt[0] > monojet_PFJet_pt_cut_ && pfmet.et() > monojet_PFJet_met_cut_) {
1000  monojet_PFJet_pt->Fill(PFJetPt[0]);
1001  monojet_PFJet_eta->Fill(PFJetEta[0]);
1002  monojet_PFJet_phi->Fill(PFJetPhi[0]);
1003  monojet_PFMet->Fill(pfmet.et());
1004  monojet_PFMet_phi->Fill(pfmet.phi());
1005  monojet_PFJetPtOverPFMet->Fill(PFJetPt[0] / pfmet.et());
1006  monojet_deltaPhiPFJetPFMet->Fill(deltaPhi(PFJetPhi[0], pfmet.phi()));
1007  monojet_PFchef->Fill(PFJetCHEF[0]);
1008  monojet_PFnhef->Fill(PFJetNHEF[0]);
1009  monojet_PFcemf->Fill(PFJetCEMF[0]);
1010  monojet_PFnemf->Fill(PFJetNEMF[0]);
1011  monojet_PFJetMulti->Fill(monojet_countPFJet_);
1012  }
1013 }
1014 
1016  const PFMETCollection* pfmetcol = pfMETCollection_.product();
1017  const PFMET pfmet = pfmetcol->front();
1018  if (MuonPt[0] > monomuon_Muon_pt_cut_ && pfmet.et() > monomuon_Muon_met_cut_) {
1019  monomuon_Muon_pt->Fill(MuonPt[0]);
1020  monomuon_Muon_eta->Fill(MuonEta[0]);
1021  monomuon_Muon_phi->Fill(MuonPhi[0]);
1022  monomuon_Charge->Fill(MuonCharge[0]);
1023  monomuon_PFMet->Fill(pfmet.et());
1024  monomuon_PFMet_phi->Fill(pfmet.phi());
1025  monomuon_MuonPtOverPFMet->Fill(MuonPt[0] / pfmet.et());
1026  monomuon_deltaPhiMuonPFMet->Fill(deltaPhi(MuonPhi[0], pfmet.phi()));
1027  monomuon_TransverseMass->Fill(sqrt(2 * MuonPt[0] * pfmet.et() * (1 - cos(deltaPhi(MuonPhi[0], pfmet.phi())))));
1028  monomuon_MuonMulti->Fill(monomuon_countMuon_);
1029  }
1030 }
1031 
1033  const PFMETCollection* pfmetcol = pfMETCollection_.product();
1034  const PFMET pfmet = pfmetcol->front();
1035  if (ElectronPt[0] > monoelectron_Electron_pt_cut_ && pfmet.et() > monoelectron_Electron_met_cut_) {
1036  monoelectron_Electron_pt->Fill(ElectronPt[0]);
1037  monoelectron_Electron_eta->Fill(ElectronEta[0]);
1038  monoelectron_Electron_phi->Fill(ElectronPhi[0]);
1039  monoelectron_Charge->Fill(ElectronCharge[0]);
1040  monoelectron_PFMet->Fill(pfmet.et());
1041  monoelectron_PFMet_phi->Fill(pfmet.phi());
1042  monoelectron_ElectronPtOverPFMet->Fill(ElectronPt[0] / pfmet.et());
1043  monoelectron_deltaPhiElectronPFMet->Fill(deltaPhi(ElectronPhi[0], pfmet.phi()));
1044  monoelectron_TransverseMass->Fill(
1045  sqrt(2 * ElectronPt[0] * pfmet.et() * (1 - cos(deltaPhi(ElectronPhi[0], pfmet.phi())))));
1046  monoelectron_ElectronMulti->Fill(monoelectron_countElectron_);
1047  }
1048 }
1049 
1051  const PFMETCollection* pfmetcol = pfMETCollection_.product();
1052  const PFMET pfmet = pfmetcol->front();
1053  if (PhotonPt[0] > monophoton_Photon_pt_cut_ && pfmet.et() > monophoton_Photon_met_cut_) {
1054  monophoton_Photon_energy->Fill(PhotonEnergy[0]);
1055  monophoton_Photon_pt->Fill(PhotonPt[0]);
1056  monophoton_Photon_et->Fill(PhotonEt[0]);
1057  monophoton_Photon_eta->Fill(PhotonEta[0]);
1058  monophoton_Photon_etasc->Fill(PhotonEtaSc[0]);
1059  monophoton_Photon_phi->Fill(PhotonPhi[0]);
1060  monophoton_Photon_hovere->Fill(PhotonHoverE[0]);
1061  monophoton_Photon_sigmaietaieta->Fill(PhotonSigmaIetaIeta[0]);
1062  monophoton_Photon_trksumptsolidconedr03->Fill(PhotonTrkSumPtSolidConeDR03[0]);
1063  monophoton_Photon_e1x5e5x5->Fill(PhotonE1x5E5x5[0]);
1064  monophoton_Photon_e2x5e5x5->Fill(PhotonE2x5E5x5[0]);
1065  monophoton_PFMet->Fill(pfmet.et());
1066  monophoton_PFMet_phi->Fill(pfmet.phi());
1067  monophoton_PhotonPtOverPFMet->Fill(PhotonPt[0] / pfmet.et());
1068  monophoton_deltaPhiPhotonPFMet->Fill(deltaPhi(PhotonPhi[0], pfmet.phi()));
1069  monophoton_PhotonMulti->Fill(monophoton_countPhoton_);
1070  }
1071 }
Vector3DBase
Definition: Vector3DBase.h:8
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
FreeTrajectoryState::momentum
GlobalVector momentum() const
Definition: FreeTrajectoryState.h:68
TrajectoryStateClosestToBeamLine
Definition: TrajectoryStateClosestToBeamLine.h:15
ExoticaDQM::analyzeDiPhotons
virtual void analyzeDiPhotons(edm::Event const &e)
Definition: ExoticaDQM.cc:945
mps_fire.i
i
Definition: mps_fire.py:428
ExoticaDQM::analyzeDisplacedLeptons
virtual void analyzeDisplacedLeptons(edm::Event const &e, const edm::EventSetup &s)
Definition: ExoticaDQM.cc:640
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
ExoticaDQM::analyzeMonoPhotons
virtual void analyzeMonoPhotons(edm::Event const &e)
Definition: ExoticaDQM.cc:1050
reco::helper::JetIDHelper
Definition: JetIDHelper.h:23
reco::GenParticle
Definition: GenParticle.h:21
edm::Run
Definition: Run.h:45
HLT_FULL_cff.scale
scale
Definition: HLT_FULL_cff.py:6634
reco::CompositeRefCandidateT::mother
const Candidate * mother(size_type=0) const override
return mother at a given position, i = 0, ... numberOfMothers() - 1 (read only mode)
edm
HLT enums.
Definition: AlignableModifier.h:19
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
PFMETCollection
Collection of PF MET.
EgHLTOffHistBins_cfi.dEtaIn
dEtaIn
Definition: EgHLTOffHistBins_cfi.py:19
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
reco::CompositeRefCandidateT::numberOfMothers
size_t numberOfMothers() const override
number of mothers
HLTObjectsMonitor_cfi.beamspot
beamspot
Definition: HLTObjectsMonitor_cfi.py:11
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
reco::LeafCandidate::pt
double pt() const final
transverse momentum
Definition: LeafCandidate.h:146
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
GlobalVector
Global3DVector GlobalVector
Definition: GlobalVector.h:10
ExoticaDQM.h
reco::Muon
Definition: Muon.h:27
contentValuesCheck.ss
ss
Definition: contentValuesCheck.py:33
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
edm::vstring
std::vector< std::string > vstring
Definition: Schedule.cc:653
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
SiPixelRawToDigiRegional_cfi.deltaPhi
deltaPhi
Definition: SiPixelRawToDigiRegional_cfi.py:9
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
ExoticaDQM::analyzeDiElectrons
virtual void analyzeDiElectrons(edm::Event const &e)
Definition: ExoticaDQM.cc:924
reco::BeamSpot
Definition: BeamSpot.h:21
reco::Track
Definition: Track.h:27
edm::ESHandle< MagneticField >
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
dqm::implementation::IBooker::bookProfile
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:322
beamspot
Definition: BeamSpotWrite2Txt.h:8
reco::GsfElectron
Definition: GsfElectron.h:35
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
ExoticaDQM::analyzeDiJets
virtual void analyzeDiJets(edm::Event const &e)
Definition: ExoticaDQM.cc:819
gen
Definition: PythiaDecays.h:13
ExoticaDQM::analyzeMonoElectrons
virtual void analyzeMonoElectrons(edm::Event const &e)
Definition: ExoticaDQM.cc:1032
PbPb_ZMuSkimMuonDPG_cff.deltaR
deltaR
Definition: PbPb_ZMuSkimMuonDPG_cff.py:63
EgHLTOffTrigSelection_cfi.trigName
trigName
Definition: EgHLTOffTrigSelection_cfi.py:8
reco::PFMET
Definition: PFMET.h:18
edm::ParameterSet
Definition: ParameterSet.h:47
reco::LeafCandidate::eta
double eta() const final
momentum pseudorapidity
Definition: LeafCandidate.h:152
EgHLTOffHistBins_cfi.dPhiIn
dPhiIn
Definition: EgHLTOffHistBins_cfi.py:18
reco::LeafCandidate::pdgId
int pdgId() const final
PDG identifier.
Definition: LeafCandidate.h:176
edm::get
T const & get(Event const &event, InputTag const &tag) noexcept(false)
Definition: Event.h:671
reco::Candidate::vertex
virtual const Point & vertex() const =0
vertex position
iEvent
int iEvent
Definition: GenABIO.cc:224
ExoticaDQM::analyzeMonoMuons
virtual void analyzeMonoMuons(edm::Event const &e)
Definition: ExoticaDQM.cc:1015
EgammaValidation_cff.pdgId
pdgId
Definition: EgammaValidation_cff.py:118
edm::EventSetup
Definition: EventSetup.h:57
ExoticaDQM::ExoticaDQM
ExoticaDQM(const edm::ParameterSet &ps)
Definition: ExoticaDQM.cc:13
ExoticaDQM::analyzeDiMuons
virtual void analyzeDiMuons(edm::Event const &e)
Definition: ExoticaDQM.cc:905
ExoticaDQM::analyzeMonoJets
virtual void analyzeMonoJets(edm::Event const &e)
Definition: ExoticaDQM.cc:996
ExoticaDQM::analyze
void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override
Definition: ExoticaDQM.cc:326
reco::LeafCandidate::vertex
const Point & vertex() const override
vertex position (overwritten by PF...)
Definition: LeafCandidate.h:165
reco::LeafCandidate::et
double et() const final
transverse energy
Definition: LeafCandidate.h:127
std
Definition: JetResolutionObject.h:76
PVValHelper::dxy
Definition: PVValidationHelpers.h:47
reco::LeafCandidate::phi
double phi() const final
momentum azimuthal angle
Definition: LeafCandidate.h:148
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
TSCBLBuilderNoMaterial
Definition: TSCBLBuilderNoMaterial.h:13
spclusmultinvestigator_cfi.vertexCollection
vertexCollection
Definition: spclusmultinvestigator_cfi.py:4
ExoticaDQM::bookHistograms
void bookHistograms(DQMStore::IBooker &bei, edm::Run const &, edm::EventSetup const &) override
Definition: ExoticaDQM.cc:104
edm::TriggerNames
Definition: TriggerNames.h:55
ExoticaDQM::~ExoticaDQM
~ExoticaDQM() override
Definition: ExoticaDQM.cc:96
ExoticaDQM::getGenParticleTrajectoryAtBeamline
virtual GlobalVector getGenParticleTrajectoryAtBeamline(const edm::EventSetup &iSetup, const reco::GenParticle *gen)
Definition: ExoticaDQM.cc:794
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
icoll
int icoll
Definition: AMPTWrapper.h:146
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
relval_steps.gen
def gen(fragment, howMuch)
Production test section ####.
Definition: relval_steps.py:509
reco::CompositeRefCandidateT::daughter
const Candidate * daughter(size_type) const override
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode)
dqm::implementation::IBooker
Definition: DQMStore.h:43
ExoticaDQM::analyzeDisplacedJets
virtual void analyzeDisplacedJets(edm::Event const &e, const edm::EventSetup &s)
Definition: ExoticaDQM.cc:734
trigger
Definition: HLTPrescaleTableCond.h:8
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
TrajectoryStateClosestToBeamLine::trackStateAtPCA
FTS const & trackStateAtPCA() const
Definition: TrajectoryStateClosestToBeamLine.h:32
edm::Event
Definition: Event.h:73
edm::InputTag
Definition: InputTag.h:15
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98