CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TrackTypeMonitor.cc
Go to the documentation of this file.
21 
22 #include "TFile.h"
23 #include "TH1.h"
24 #include "TMath.h"
25 #include "TPRegexp.h"
26 
27 template <class T>
28 class PtComparator {
29 public:
30  bool operator()(const T* a, const T* b) const {
31  return (a->pt() > b->pt());
32  }
33 };
34 // -----------------------------
35 // constructors and destructor
36 // -----------------------------
38  parameters_(ps),
39  moduleName_(parameters_.getUntrackedParameter<std::string>("ModuleName", "TrackTypeMonitor")),
40  folderName_(parameters_.getUntrackedParameter<std::string>("FolderName", "highPurityTracks")),
41  verbose_(parameters_.getUntrackedParameter<bool>("verbose", false)),
42  muonTag_(ps.getUntrackedParameter<edm::InputTag>("muonInputTag", edm::InputTag("muons"))),
43  electronTag_(ps.getUntrackedParameter<edm::InputTag>("electronInputTag", edm::InputTag("gedGsfElectrons"))),
44  trackTag_(parameters_.getUntrackedParameter<edm::InputTag>("trackInputTag", edm::InputTag("generalTracks"))),
45  bsTag_(parameters_.getUntrackedParameter<edm::InputTag>("offlineBeamSpot", edm::InputTag("offlineBeamSpot"))),
46  vertexTag_(parameters_.getUntrackedParameter<edm::InputTag>("vertexTag", edm::InputTag("offlinePrimaryVertices"))),
47  electronToken_(consumes<reco::GsfElectronCollection>(electronTag_)),
48  muonToken_(consumes<reco::MuonCollection>(muonTag_)),
49  trackToken_(consumes<reco::TrackCollection>(trackTag_)),
50  bsToken_(consumes<reco::BeamSpot>(bsTag_)),
51  vertexToken_(consumes<reco::VertexCollection>(vertexTag_)),
52  trackQuality_(parameters_.getUntrackedParameter<std::string>("trackQuality", "highPurity"))
53 {
54  trackEtaHList_.clear();
55  trackPhiHList_.clear();
56  trackPHList_.clear();
57  trackPtHList_.clear();
58  trackPterrHList_.clear();
59  trackqOverpHList_.clear();
60  trackChi2bynDOFHList_.clear();
61  nTracksHList_.clear();
62 }
64  edm::ParameterSet TrackEtaHistoPar = parameters_.getParameter<edm::ParameterSet>("TrackEtaPar");
65  edm::ParameterSet TrackPhiHistoPar = parameters_.getParameter<edm::ParameterSet>("TrackPhiPar");
66  edm::ParameterSet TrackPHistoPar = parameters_.getParameter<edm::ParameterSet>("TrackPPar");
67  edm::ParameterSet TrackPtHistoPar = parameters_.getParameter<edm::ParameterSet>("TrackPtPar");
68  edm::ParameterSet TrackPterrHistoPar = parameters_.getParameter<edm::ParameterSet>("TrackPterrPar");
69  edm::ParameterSet TrackqOverpHistoPar = parameters_.getParameter<edm::ParameterSet>("TrackqOverpPar");
70  edm::ParameterSet TrackdzHistoPar = parameters_.getParameter<edm::ParameterSet>("TrackdzPar");
71  edm::ParameterSet TrackChi2bynDOFHistoPar = parameters_.getParameter<edm::ParameterSet>("TrackChi2bynDOFPar");
72  edm::ParameterSet nTracksHistoPar = parameters_.getParameter<edm::ParameterSet>("nTracksPar");
73 
74  std::string currentFolder = moduleName_ + "/" + folderName_ ;
75  iBook.setCurrentFolder(currentFolder.c_str());
76 
77  trackEtaHList_.push_back(iBook.book1D("trackEtaIso", "Isolated Track Eta",
78  TrackEtaHistoPar.getParameter<int32_t>("Xbins"),
79  TrackEtaHistoPar.getParameter<double>("Xmin"),
80  TrackEtaHistoPar.getParameter<double>("Xmax")));
81  trackEtaHList_.push_back(iBook.book1D("trackEtaNoIso", "NonIsolated Track Eta",
82  TrackEtaHistoPar.getParameter<int32_t>("Xbins"),
83  TrackEtaHistoPar.getParameter<double>("Xmin"),
84  TrackEtaHistoPar.getParameter<double>("Xmax")));
85  trackEtaHList_.push_back(iBook.book1D("trackEtaUL", "Underlying Track Eta",
86  TrackEtaHistoPar.getParameter<int32_t>("Xbins"),
87  TrackEtaHistoPar.getParameter<double>("Xmin"),
88  TrackEtaHistoPar.getParameter<double>("Xmax")));
89  trackEtaHList_.push_back(iBook.book1D("trackEtaALL", "All Track Eta",
90  TrackEtaHistoPar.getParameter<int32_t>("Xbins"),
91  TrackEtaHistoPar.getParameter<double>("Xmin"),
92  TrackEtaHistoPar.getParameter<double>("Xmax")));
93 
94  trackPhiHList_.push_back(iBook.book1D("trackPhiIso", "Isolated Track Phi",
95  TrackPhiHistoPar.getParameter<int32_t>("Xbins"),
96  TrackPhiHistoPar.getParameter<double>("Xmin"),
97  TrackPhiHistoPar.getParameter<double>("Xmax")));
98  trackPhiHList_.push_back(iBook.book1D("trackPhiNonIso", "NonIsolated Track Phi",
99  TrackPhiHistoPar.getParameter<int32_t>("Xbins"),
100  TrackPhiHistoPar.getParameter<double>("Xmin"),
101  TrackPhiHistoPar.getParameter<double>("Xmax")));
102  trackPhiHList_.push_back(iBook.book1D("trackPhiUL", "Underlying Track Phi",
103  TrackPhiHistoPar.getParameter<int32_t>("Xbins"),
104  TrackPhiHistoPar.getParameter<double>("Xmin"),
105  TrackPhiHistoPar.getParameter<double>("Xmax")));
106  trackPhiHList_.push_back(iBook.book1D("trackPhiALL", "All Track Phi",
107  TrackPhiHistoPar.getParameter<int32_t>("Xbins"),
108  TrackPhiHistoPar.getParameter<double>("Xmin"),
109  TrackPhiHistoPar.getParameter<double>("Xmax")));
110 
111  trackPHList_.push_back(iBook.book1D("trackPIso", "Isolated Track P",
112  TrackPHistoPar.getParameter<int32_t>("Xbins"),
113  TrackPHistoPar.getParameter<double>("Xmin"),
114  TrackPHistoPar.getParameter<double>("Xmax")));
115  trackPHList_.push_back(iBook.book1D("trackPNonIso", "NonIsolated Track P",
116  TrackPHistoPar.getParameter<int32_t>("Xbins"),
117  TrackPHistoPar.getParameter<double>("Xmin"),
118  TrackPHistoPar.getParameter<double>("Xmax")));
119  trackPHList_.push_back(iBook.book1D("trackPUL", "Underlying Track P",
120  TrackPHistoPar.getParameter<int32_t>("Xbins"),
121  TrackPHistoPar.getParameter<double>("Xmin"),
122  TrackPHistoPar.getParameter<double>("Xmax")));
123  trackPHList_.push_back(iBook.book1D("trackPALL", "All Track P",
124  TrackPHistoPar.getParameter<int32_t>("Xbins"),
125  TrackPHistoPar.getParameter<double>("Xmin"),
126  TrackPHistoPar.getParameter<double>("Xmax")));
127 
128  trackPtHList_.push_back(iBook.book1D("trackPtIsolated", "Isolated Track Pt",
129  TrackPtHistoPar.getParameter<int32_t>("Xbins"),
130  TrackPtHistoPar.getParameter<double>("Xmin"),
131  TrackPtHistoPar.getParameter<double>("Xmax")));
132  trackPtHList_.push_back(iBook.book1D("trackPtNonIsolated", "NonIsolated Track Pt",
133  TrackPtHistoPar.getParameter<int32_t>("Xbins"),
134  TrackPtHistoPar.getParameter<double>("Xmin"),
135  TrackPtHistoPar.getParameter<double>("Xmax")));
136  trackPtHList_.push_back(iBook.book1D("trackPtUL", "Underlying Track Pt",
137  TrackPtHistoPar.getParameter<int32_t>("Xbins"),
138  TrackPtHistoPar.getParameter<double>("Xmin"),
139  TrackPtHistoPar.getParameter<double>("Xmax")));
140  trackPtHList_.push_back(iBook.book1D("trackPtALL", "All Track Pt",
141  TrackPtHistoPar.getParameter<int32_t>("Xbins"),
142  TrackPtHistoPar.getParameter<double>("Xmin"),
143  TrackPtHistoPar.getParameter<double>("Xmax")));
144 
145  trackPterrHList_.push_back(iBook.book1D("trackPterrIsolated", "Isolated Track Pterr",
146  TrackPterrHistoPar.getParameter<int32_t>("Xbins"),
147  TrackPterrHistoPar.getParameter<double>("Xmin"),
148  TrackPterrHistoPar.getParameter<double>("Xmax")));
149  trackPterrHList_.push_back(iBook.book1D("trackPterrNonIsolated", "NonIsolated Track Pterr",
150  TrackPterrHistoPar.getParameter<int32_t>("Xbins"),
151  TrackPterrHistoPar.getParameter<double>("Xmin"),
152  TrackPterrHistoPar.getParameter<double>("Xmax")));
153  trackPterrHList_.push_back(iBook.book1D("trackPterrUL", "Underlying Track Pterr",
154  TrackPterrHistoPar.getParameter<int32_t>("Xbins"),
155  TrackPterrHistoPar.getParameter<double>("Xmin"),
156  TrackPterrHistoPar.getParameter<double>("Xmax")));
157  trackPterrHList_.push_back(iBook.book1D("trackPterrALL", "All Track Pterr",
158  TrackPterrHistoPar.getParameter<int32_t>("Xbins"),
159  TrackPterrHistoPar.getParameter<double>("Xmin"),
160  TrackPterrHistoPar.getParameter<double>("Xmax")));
161 
162  trackqOverpHList_.push_back(iBook.book1D("trackqOverpIsolated", "Isolated Track qOverp",
163  TrackqOverpHistoPar.getParameter<int32_t>("Xbins"),
164  TrackqOverpHistoPar.getParameter<double>("Xmin"),
165  TrackqOverpHistoPar.getParameter<double>("Xmax")));
166  trackqOverpHList_.push_back(iBook.book1D("trackqOverpNonIsolated", "NonIsolated Track qOverp",
167  TrackqOverpHistoPar.getParameter<int32_t>("Xbins"),
168  TrackqOverpHistoPar.getParameter<double>("Xmin"),
169  TrackqOverpHistoPar.getParameter<double>("Xmax")));
170  trackqOverpHList_.push_back(iBook.book1D("trackqOverpUL", "Underlying Track qOverp",
171  TrackqOverpHistoPar.getParameter<int32_t>("Xbins"),
172  TrackqOverpHistoPar.getParameter<double>("Xmin"),
173  TrackqOverpHistoPar.getParameter<double>("Xmax")));
174  trackqOverpHList_.push_back(iBook.book1D("trackqOverpALL", "All Track qOverp",
175  TrackqOverpHistoPar.getParameter<int32_t>("Xbins"),
176  TrackqOverpHistoPar.getParameter<double>("Xmin"),
177  TrackqOverpHistoPar.getParameter<double>("Xmax")));
178 
179  trackdzHList_.push_back(iBook.book1D("trackdzIsolated", "Isolated Track dz",
180  TrackdzHistoPar.getParameter<int32_t>("Xbins"),
181  TrackdzHistoPar.getParameter<double>("Xmin"),
182  TrackdzHistoPar.getParameter<double>("Xmax")));
183  trackdzHList_.push_back(iBook.book1D("trackdzNonIsolated", "NonIsolated Track dz",
184  TrackdzHistoPar.getParameter<int32_t>("Xbins"),
185  TrackdzHistoPar.getParameter<double>("Xmin"),
186  TrackdzHistoPar.getParameter<double>("Xmax")));
187  trackdzHList_.push_back(iBook.book1D("trackdzUL", "Underlying Track dz",
188  TrackdzHistoPar.getParameter<int32_t>("Xbins"),
189  TrackdzHistoPar.getParameter<double>("Xmin"),
190  TrackdzHistoPar.getParameter<double>("Xmax")));
191  trackdzHList_.push_back(iBook.book1D("trackdzALL", "All Track dz",
192  TrackdzHistoPar.getParameter<int32_t>("Xbins"),
193  TrackdzHistoPar.getParameter<double>("Xmin"),
194  TrackdzHistoPar.getParameter<double>("Xmax")));
195 
196  trackChi2bynDOFHList_.push_back(iBook.book1D("trackChi2bynDOFIsolated", "Isolated Track Chi2bynDOF",
197  TrackChi2bynDOFHistoPar.getParameter<int32_t>("Xbins"),
198  TrackChi2bynDOFHistoPar.getParameter<double>("Xmin"),
199  TrackChi2bynDOFHistoPar.getParameter<double>("Xmax")));
200  trackChi2bynDOFHList_.push_back(iBook.book1D("trackChi2bynDOFNonIsolated", "NonIsolated Track Chi2bynDOF",
201  TrackChi2bynDOFHistoPar.getParameter<int32_t>("Xbins"),
202  TrackChi2bynDOFHistoPar.getParameter<double>("Xmin"),
203  TrackChi2bynDOFHistoPar.getParameter<double>("Xmax")));
204  trackChi2bynDOFHList_.push_back(iBook.book1D("trackChi2bynDOFUL", "Underlying Track Chi2bynDOF",
205  TrackChi2bynDOFHistoPar.getParameter<int32_t>("Xbins"),
206  TrackChi2bynDOFHistoPar.getParameter<double>("Xmin"),
207  TrackChi2bynDOFHistoPar.getParameter<double>("Xmax")));
208  trackChi2bynDOFHList_.push_back(iBook.book1D("trackChi2bynDOFAll", "All Track Chi2bynDOF",
209  TrackChi2bynDOFHistoPar.getParameter<int32_t>("Xbins"),
210  TrackChi2bynDOFHistoPar.getParameter<double>("Xmin"),
211  TrackChi2bynDOFHistoPar.getParameter<double>("Xmax")));
212 
213  nTracksHList_.push_back(iBook.book1D("nTracksIsolated", "Isolated Track nTracks",
214  nTracksHistoPar.getParameter<int32_t>("Xbins"),
215  nTracksHistoPar.getParameter<double>("Xmin"),
216  nTracksHistoPar.getParameter<double>("Xmax")));
217  nTracksHList_.push_back(iBook.book1D("nTracksNonIsolated", "NonIsolated Track nTracks",
218  nTracksHistoPar.getParameter<int32_t>("Xbins"),
219  nTracksHistoPar.getParameter<double>("Xmin"),
220  nTracksHistoPar.getParameter<double>("Xmax")));
221  nTracksHList_.push_back(iBook.book1D("nTracksUL", "Underlying Track nTracks",
222  nTracksHistoPar.getParameter<int32_t>("Xbins"),
223  nTracksHistoPar.getParameter<double>("Xmin"),
224  nTracksHistoPar.getParameter<double>("Xmax")));
225  nTracksHList_.push_back(iBook.book1D("nTracksAll", "All Track nTracks",
226  nTracksHistoPar.getParameter<int32_t>("Xbins"),
227  nTracksHistoPar.getParameter<double>("Xmin"),
228  nTracksHistoPar.getParameter<double>("Xmax")));
229 
230  hcounterH_ = iBook.book1D("hcounter", "hcounter", 7, -0.5, 6.5);
231  dphiH_ = iBook.book1D("dphi", "dphi", 100, 0, 7);
232  drH_ = iBook.book1D("dr", "dr", 100, 0, 6);
233 }
235 
236  // read the beam spot
238  iEvent.getByToken(bsToken_, beamSpot);
239 
240  std::vector<const reco::Track*> isoTrkList;
241 
242  // muons
244  iEvent.getByToken(muonToken_, muonColl);
245 
246  if (muonColl.isValid()) {
247  for (auto const& muo : *muonColl) {
248  if (muo.isGlobalMuon() && muo.isPFMuon() && std::fabs(muo.eta()) <= 2.1 && muo.pt() > 1) {
249  reco::TrackRef gtrkref = muo.globalTrack();
250  if (!gtrkref.isNonnull()) continue;
251  const reco::Track* gtk = &(*gtrkref);
252  double chi2 = gtk->chi2();
253  double ndof = gtk->ndof();
254  double chbyndof = (ndof > 0) ? chi2/ndof : 0;
255 
256  const reco::HitPattern& hitp = gtk->hitPattern();
257  int nPixelHits = hitp.numberOfValidPixelHits();
258  int nStripHits = hitp.numberOfValidStripHits();
259 
260  reco::TrackRef itrkref = muo.innerTrack(); // tracker segment only
261  if (!itrkref.isNonnull()) continue;
262  const reco::Track* tk = &(*itrkref);
263  double trkd0 = tk->d0();
264  double trkdz = tk->dz();
265  if (beamSpot.isValid()) {
266  trkd0 = -(tk->dxy(beamSpot->position()));
267  trkdz = tk->dz(beamSpot->position());
268  }
269 
270  // Hits/section in the muon chamber
271  int nChambers = muo.numberOfChambers();
272  int nMatches = muo.numberOfMatches();
273  int nMatchedStations = muo.numberOfMatchedStations();
274 
275  // PF Isolation
276  const reco::MuonPFIsolation& pfIso04 = muo.pfIsolationR04();
277  double absiso = pfIso04.sumChargedParticlePt + std::max(0.0, pfIso04.sumNeutralHadronEt + pfIso04.sumPhotonEt - 0.5 * pfIso04.sumPUPt);
278  if (chbyndof < 10
279  && std::fabs(trkd0) < 0.02
280  && std::fabs(trkdz) < 20
281  && nPixelHits > 1
282  && nStripHits > 8
283  && nChambers > 2
284  && nMatches > 2
285  && nMatchedStations > 2
286  && absiso/muo.pt() < 0.3)
287  {
288  isoTrkList.push_back(gtk);
289  fillHistograms(*gtk, 0);
290  }
291  }
292  }
293  }
294 
295  // electrons
297  iEvent.getByToken(electronToken_, electronColl);
298 
299  if (electronColl.isValid()) {
300  for (auto const& ele : *electronColl) {
301  if (!ele.ecalDriven()) continue;
302  if (ele.pt() < 5) continue;
303  hcounterH_->Fill(0);
304 
305  double hOverE = ele.hadronicOverEm();
306  double sigmaee = ele.sigmaIetaIeta();
307  double deltaPhiIn = ele.deltaPhiSuperClusterTrackAtVtx();
308  double deltaEtaIn = ele.deltaEtaSuperClusterTrackAtVtx();
309 
310  if (ele.isEB()) {
311  if (std::fabs(deltaPhiIn) >= .15
312  && std::fabs(deltaEtaIn) >= .007
313  && hOverE >= .12
314  && sigmaee >= .01) continue;
315  }
316  else if (ele.isEE()) {
317  if (std::fabs(deltaPhiIn) >= .10
318  && std::fabs(deltaEtaIn) >= .009
319  && hOverE >= .10
320  && sigmaee >= .03) continue;
321  }
322  hcounterH_->Fill(1);
323 
324  reco::GsfTrackRef gsftrk = ele.gsfTrack();
325  if (!gsftrk.isNonnull()) continue;
326  const reco::GsfTrack* trk = &(*gsftrk);
327  double trkd0 = trk->d0();
328  double trkdz = trk->dz();
329  if (beamSpot.isValid()) {
330  trkd0 = -(trk->dxy(beamSpot->position()));
331  trkdz = trk->dz(beamSpot->position());
332  }
333  double chi2 = trk->chi2();
334  double ndof = trk->ndof();
335  double chbyndof = (ndof > 0) ? chi2/ndof : 0;
336  if (chbyndof >= 10) continue;
337  hcounterH_->Fill(2);
338 
339  if (std::fabs(trkd0) >= 0.02 || std::fabs(trkdz) >= 20) continue;
340  hcounterH_->Fill(3);
341 
342  const reco::HitPattern& hitp = trk->hitPattern();
343  int nPixelHits = hitp.numberOfValidPixelHits();
344  if (nPixelHits < 1) continue;
345  hcounterH_->Fill(4);
346 
347  int nStripHits = hitp.numberOfValidStripHits();
348  if (nStripHits < 8) continue;
349  hcounterH_->Fill(5);
350 
351  reco::GsfElectron::PflowIsolationVariables pfIso = ele.pfIsolationVariables();
352  float absiso = pfIso.sumChargedHadronPt + std::max(0.0, pfIso.sumNeutralHadronEt + pfIso.sumPhotonEt - 0.5 * pfIso.sumPUPt);
353  float eiso = absiso/ele.pt();
354  if (eiso > 0.2) continue;
355  hcounterH_->Fill(6);
356 
357  isoTrkList.push_back(trk);
358  fillHistograms(*trk, 0);
359  }
360  }
361  nTracksHList_.at(0)->Fill(isoTrkList.size());
362 
363  // Read track collection
365  iEvent.getByToken(trackToken_, tracks);
366 
367  // Read vertex collection
369  iEvent.getByToken(vertexToken_, vertexColl);
370 
371  if (tracks.isValid()) {
372  std::vector<const reco::Track*> nisoTrkList;
373  const reco::Vertex& vit = vertexColl->front(); // Highest sumPt vertex
375 
376  int nmatch = 0;
377  int nTracks = 0, nMBTracks = 0;
378  for (auto const& track: *tracks) {
379  if (!track.quality(quality)) continue;
380  ++nTracks;
381  fillHistograms(track, 3);
382 
383  // now classify primary and underlying tracks using vertex information
384  double dxy = track.dxy(vit.position());
385  double dz = track.dz(vit.position());
386  if (std::fabs(dxy) < 0.02 && std::fabs(dz) < 20) { // primary tracks
387  // remove tracks associated to the identified particles
388  double drmin = 999;
389  for (auto const& tk : isoTrkList) {
390  double dr = deltaR(track.eta(), track.phi(), tk->eta(), tk->phi());
391  if (dr < drmin) drmin = dr;
392  }
393  if (drmin < 0.01) {
394  if (verbose_) {
395  edm::LogInfo("TrackTypeMonitor") << " Match: " << ++nmatch << " drmin = " << drmin;
396  edm::LogInfo("TrackTypeMonitor") << " Track Pt: " << track.pt() << " Eta: " << track.eta() << " Phi: " << track.phi();
397  for (auto const& isotk : isoTrkList) {
398  edm::LogInfo("TrackTypeMonitor") << " Lepton Pt: " << isotk->pt() << " Eta: " << isotk->eta() << " Phi: " << isotk->phi();
399  }
400  }
401  continue;
402  }
403 
404  fillHistograms(track, 1);
405  nisoTrkList.push_back(&track);
406  }
407  else {
408  ++nMBTracks;
409  fillHistograms(track, 2); //non-primary tracks
410  }
411  }
412  nTracksHList_.at(1)->Fill(nisoTrkList.size());
413  nTracksHList_.at(2)->Fill(nMBTracks);
414  nTracksHList_.at(3)->Fill(nTracks);
415 
416  std::sort(nisoTrkList.begin(), nisoTrkList.end(), PtComparator<reco::Track>());
417  const reco::Track* isoTrk = isoTrkList.at(0);
418  for (auto const& obj : nisoTrkList) {
419  if (obj->pt() > 5) {
420  double dphi = deltaPhi(isoTrk->phi(), obj->phi());
421  dphiH_->Fill(std::fabs(dphi));
422 
423  double dr = deltaR(isoTrk->eta(), isoTrk->phi(), obj->eta(), obj->phi());
424  drH_->Fill(dr);
425  }
426  }
427  }
428 }
429 void TrackTypeMonitor::fillHistograms(const reco::Track& track, int indx) {
430  if (indx >= 0 && indx < static_cast<int>(trackEtaHList_.size()))
431  trackEtaHList_.at(indx)->Fill(track.eta());
432 
433  if (indx >= 0 && indx < static_cast<int>(trackPhiHList_.size()))
434  trackPhiHList_.at(indx)->Fill(track.phi());
435 
436  if (indx >= 0 && indx < static_cast<int>(trackPHList_.size()))
437  trackPHList_.at(indx)->Fill(track.p());
438 
439  if (indx >= 0 && indx < static_cast<int>(trackPtHList_.size()))
440  trackPtHList_.at(indx)->Fill(track.pt());
441 
442  if (indx >= 0 || indx < static_cast<int>(trackPterrHList_.size()))
443  trackPterrHList_.at(indx)->Fill(track.ptError());
444 
445  if (indx >= 0 || indx < static_cast<int>(trackqOverpHList_.size()))
446  trackqOverpHList_.at(indx)->Fill(track.qoverp());
447 
448  if (indx >= 0 || indx < static_cast<int>(trackqOverpHList_.size()))
449  trackdzHList_.at(indx)->Fill(track.dz());
450 
451  double chi2 = track.chi2();
452  double ndof = track.ndof();
453  double chbyndof = (ndof > 0) ? chi2/ndof : 0;
454  trackChi2bynDOFHList_.at(indx)->Fill(chbyndof);
455 }
457 }
458 // Define this as a plug-in
std::vector< MonitorElement * > nTracksHList_
double qoverp() const
q / p
Definition: TrackBase.h:560
double p() const
momentum vector magnitude
Definition: TrackBase.h:602
T getParameter(std::string const &) const
const edm::EDGetTokenT< reco::GsfElectronCollection > electronToken_
bool operator()(const T *a, const T *b) const
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:252
double d0() const
dxy parameter in perigee convention (d0 = -dxy)
Definition: TrackBase.h:584
std::string folderName_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
TrackQuality
track quality
Definition: TrackBase.h:149
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
const edm::EDGetTokenT< reco::MuonCollection > muonToken_
std::vector< MonitorElement * > trackChi2bynDOFHList_
std::vector< MonitorElement * > trackPterrHList_
const edm::EDGetTokenT< reco::BeamSpot > bsToken_
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
float sumPUPt
sum pt of charged Particles not from PV (for Pu corrections)
Definition: GsfElectron.h:580
int numberOfValidStripHits() const
Definition: HitPattern.h:831
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:632
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
std::vector< MonitorElement * > trackPtHList_
std::vector< MonitorElement * > trackEtaHList_
float sumPhotonEt
sum pt of PF photons
const edm::EDGetTokenT< reco::TrackCollection > trackToken_
std::vector< MonitorElement * > trackdzHList_
void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &eSetup) override
const Point & position() const
position
Definition: Vertex.h:106
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
void fillHistograms(const reco::Track &track, int indx)
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
float sumNeutralHadronEt
sum pt of neutral hadrons
void Fill(long long x)
float sumChargedParticlePt
sum-pt of charged Particles(inludes e/mu)
float sumPUPt
sum pt of charged Particles not from PV (for Pu corrections)
int iEvent
Definition: GenABIO.cc:230
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:638
std::vector< MonitorElement * > trackPhiHList_
MonitorElement * dphiH_
double chi2() const
chi-squared of the fit
Definition: TrackBase.h:536
MonitorElement * drH_
double ndof() const
number of degrees of freedom of the fit
Definition: TrackBase.h:542
double pt() const
track transverse momentum
Definition: TrackBase.h:608
float sumPhotonEt
sum pt of PF photons // old float photonIso ;
Definition: GsfElectron.h:575
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:750
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
float sumNeutralHadronEt
sum pt of neutral hadrons // old float neutralHadronIso ;
Definition: GsfElectron.h:574
bool isValid() const
Definition: HandleBase.h:75
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
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...
Definition: TrackBase.h:596
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:123
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:437
const edm::EDGetTokenT< reco::VertexCollection > vertexToken_
tuple tracks
Definition: testEve_cfg.py:39
std::string moduleName_
double b
Definition: hdecay.h:120
edm::ParameterSet parameters_
double a
Definition: hdecay.h:121
int numberOfValidPixelHits() const
Definition: HitPattern.h:816
TrackTypeMonitor(const edm::ParameterSet &)
std::vector< MonitorElement * > trackqOverpHList_
volatile std::atomic< bool > shutdown_flag false
std::vector< MonitorElement * > trackPHList_
MonitorElement * hcounterH_
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:578
long double T
float sumChargedHadronPt
sum-pt of charged Hadron // old float chargedHadronIso ;
Definition: GsfElectron.h:573
const std::string trackQuality_
Definition: Run.h:43