CMS 3D CMS Logo

TrackToTrackComparisonHists.cc
Go to the documentation of this file.
3 
5 
10 
13 
14 //
15 // constructors and destructor
16 //
18  : monitoredTrackInputTag_(iConfig.getParameter<edm::InputTag>("monitoredTrack")),
19  referenceTrackInputTag_(iConfig.getParameter<edm::InputTag>("referenceTrack")),
20  topDirName_(iConfig.getParameter<std::string>("topDirName")),
21  dRmin_(iConfig.getParameter<double>("dRmin")),
22  pTCutForPlateau_(iConfig.getParameter<double>("pTCutForPlateau")),
23  dxyCutForPlateau_(iConfig.getParameter<double>("dxyCutForPlateau")),
24  dzWRTPvCut_(iConfig.getParameter<double>("dzWRTPvCut")),
25  requireValidHLTPaths_(iConfig.getParameter<bool>("requireValidHLTPaths")),
26  genTriggerEventFlag_(new GenericTriggerEventFlag(
27  iConfig.getParameter<edm::ParameterSet>("genericTriggerEventPSet"), consumesCollector(), *this))
28 
29 {
30  initialize_parameter(iConfig);
31 
32  //now do what ever initialization is needed
33  monitoredTrackToken_ = consumes<edm::View<reco::Track>>(monitoredTrackInputTag_);
34  referenceTrackToken_ = consumes<edm::View<reco::Track>>(referenceTrackInputTag_);
35  monitoredBSToken_ = consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("monitoredBeamSpot"));
36  referenceBSToken_ = consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("referenceBeamSpot"));
37  monitoredPVToken_ = consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("monitoredPrimaryVertices"));
38  referencePVToken_ = consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("referencePrimaryVertices"));
39  lumiScalersToken_ = consumes<LumiScalersCollection>(iConfig.getParameter<edm::InputTag>("scalers"));
41  consumes<OnlineLuminosityRecord>(iConfig.getParameter<edm::InputTag>("onlineMetaDataDigis"));
42 
45 
48 
49  matchTracksMEs_.label = "matches";
50 }
51 
54  genTriggerEventFlag_.reset();
55 }
56 
58 
60  LogDebug("TrackToTrackComparisonHists")
61  << " requireValidHLTPaths_ " << requireValidHLTPaths_ << " hltPathsAreValid_ " << hltPathsAreValid_ << "\n";
62  // if valid HLT paths are required,
63  // analyze event only if paths are valid
65  return;
66  }
67 
68  LogDebug("TrackToTrackComparisonHists") << " genTriggerEventFlag_->on() " << genTriggerEventFlag_->on()
69  << " accept: " << genTriggerEventFlag_->accept(iEvent, iSetup) << "\n";
70  // Filter out events if Trigger Filtering is requested
71  if (genTriggerEventFlag_->on() && !genTriggerEventFlag_->accept(iEvent, iSetup)) {
72  return;
73  }
74 
75  //
76  // Get Lumi/LS Info
77  //
78 
79  unsigned int ls = iEvent.id().luminosityBlock();
80 
81  double onlinelumi = -1.f;
82  double PU = -1.f;
83 
84  auto const lumiScalersHandle = iEvent.getHandle(lumiScalersToken_);
85  auto const onlineMetaDataDigisHandle = iEvent.getHandle(onlineMetaDataDigisToken_);
86 
87  if (onlineMetaDataDigisHandle.isValid()) {
88  onlinelumi = onlineMetaDataDigisHandle->instLumi();
89  PU = onlineMetaDataDigisHandle->avgPileUp();
90  } else if (lumiScalersHandle.isValid() and not lumiScalersHandle->empty()) {
91  edm::LogError("TrackToTrackComparisonHists") << "onlineMetaDataDigisHandle not found, trying SCAL";
92  auto const scalit = lumiScalersHandle->begin();
93  onlinelumi = scalit->instantLumi();
94  PU = scalit->pileup();
95  } else {
96  edm::LogError("TrackToTrackComparisonHists") << "lumiScalersHandle not found or empty, skipping event";
97  return;
98  }
99 
100  //
101  // Get Reference Track Info
102  //
103  edm::Handle<edm::View<reco::Track>> referenceTracksHandle;
104  iEvent.getByToken(referenceTrackToken_, referenceTracksHandle);
105  if (!referenceTracksHandle.isValid()) {
106  edm::LogError("TrackToTrackComparisonHists")
107  << "referenceTracksHandle with input tag " << referenceTrackInputTag_.encode() << " not found, skipping event";
108  return;
109  }
110  const edm::View<reco::Track>& referenceTracks = *referenceTracksHandle;
111 
112  edm::Handle<reco::BeamSpot> referenceBSHandle;
113  iEvent.getByToken(referenceBSToken_, referenceBSHandle);
114  if (!referenceBSHandle.isValid()) {
115  edm::LogError("TrackToTrackComparisonHists") << "referenceBSHandle not found, skipping event";
116  return;
117  }
118  reco::BeamSpot referenceBS = *referenceBSHandle;
119 
120  edm::Handle<reco::VertexCollection> referencePVHandle;
121  iEvent.getByToken(referencePVToken_, referencePVHandle);
122  if (!referencePVHandle.isValid()) {
123  edm::LogError("TrackToTrackComparisonHists") << "referencePVHandle not found, skipping event";
124  return;
125  }
126  if (referencePVHandle->empty()) {
127  edm::LogInfo("TrackToTrackComparisonHists") << "referencePVHandle->size is 0 ";
128  return;
129  }
130  reco::Vertex referencePV = referencePVHandle->at(0);
131 
132  //
133  // Get Monitored Track Info
134  //
135  edm::Handle<edm::View<reco::Track>> monitoredTracksHandle;
136  iEvent.getByToken(monitoredTrackToken_, monitoredTracksHandle);
137  if (!monitoredTracksHandle.isValid()) {
138  edm::LogError("TrackToTrackComparisonHists")
139  << "monitoredTracksHandle with input tag " << monitoredTrackInputTag_.encode() << " not found, skipping event";
140  return;
141  }
142  const edm::View<reco::Track>& monitoredTracks = *monitoredTracksHandle;
143 
144  edm::Handle<reco::BeamSpot> monitoredBSHandle;
145  iEvent.getByToken(monitoredBSToken_, monitoredBSHandle);
146  if (!monitoredTracksHandle.isValid()) {
147  edm::LogError("TrackToTrackComparisonHists") << "monitoredBSHandle not found, skipping event";
148  return;
149  }
150  reco::BeamSpot monitoredBS = *monitoredBSHandle;
151 
152  edm::Handle<reco::VertexCollection> monitoredPVHandle;
153  iEvent.getByToken(monitoredPVToken_, monitoredPVHandle);
154  if (!monitoredPVHandle.isValid()) {
155  edm::LogError("TrackToTrackComparisonHists") << "monitoredPVHandle not found, skipping event";
156  return;
157  }
158  if (monitoredPVHandle->empty()) {
159  edm::LogInfo("TrackToTrackComparisonHists") << "monitoredPVHandle->size is 0 ";
160  return;
161  }
162  reco::Vertex monitoredPV = monitoredPVHandle->at(0);
163 
164  edm::LogInfo("TrackToTrackComparisonHists")
165  << "analyzing " << monitoredTrackInputTag_.process() << ":" << monitoredTrackInputTag_.label() << ":"
166  << monitoredTrackInputTag_.instance() << " w.r.t. " << referenceTrackInputTag_.process() << ":"
168 
169  //
170  // Build the dR maps
171  //
172  idx2idxByDoubleColl monitored2referenceColl;
173  fillMap(monitoredTracks, referenceTracks, monitored2referenceColl, dRmin_);
174 
175  idx2idxByDoubleColl reference2monitoredColl;
176  fillMap(referenceTracks, monitoredTracks, reference2monitoredColl, dRmin_);
177 
178  unsigned int nReferenceTracks(0); // Counts the number of refernce tracks
179  unsigned int nMatchedReferenceTracks(0); // Counts the number of matched refernce tracks
180  unsigned int nMonitoredTracks(0); // Counts the number of monitored tracks
181  unsigned int nUnmatchedMonitoredTracks(0); // Counts the number of unmatched monitored tracks
182 
183  //
184  // loop over reference tracks
185  //
186  LogDebug("TrackToTrackComparisonHists") << "\n# of tracks (reference): " << referenceTracks.size() << "\n";
187  for (idx2idxByDoubleColl::const_iterator pItr = reference2monitoredColl.begin(), eItr = reference2monitoredColl.end();
188  pItr != eItr;
189  ++pItr) {
190  nReferenceTracks++;
191  int trackIdx = pItr->first;
192  reco::Track track = referenceTracks.at(trackIdx);
193 
194  float dzWRTpv = track.dz(referencePV.position());
195  if (fabs(dzWRTpv) > dzWRTPvCut_)
196  continue;
197 
198  fill_generic_tracks_histos(*&referenceTracksMEs_, &track, &referenceBS, &referencePV, ls, onlinelumi, PU);
199 
200  std::map<double, int> trackDRmap = pItr->second;
201  if (trackDRmap.empty()) {
204  continue;
205  }
206 
207  double dRmin = trackDRmap.begin()->first;
210 
211  bool matched = false;
212  if (dRmin < dRmin_)
213  matched = true;
214 
215  if (matched) {
216  nMatchedReferenceTracks++;
217  fill_generic_tracks_histos(*&matchedReferenceTracksMEs_, &track, &referenceBS, &referencePV, ls, onlinelumi, PU);
220 
221  int matchedTrackIndex = trackDRmap[dRmin];
222  reco::Track matchedTrack = monitoredTracks.at(matchedTrackIndex);
223  fill_matching_tracks_histos(*&matchTracksMEs_, &track, &matchedTrack, &referenceBS, &referencePV);
224  }
225 
226  } // Over reference tracks
227 
228  //
229  // loop over monitoed tracks
230  //
231  LogDebug("TrackToTrackComparisonHists") << "\n# of tracks (monitored): " << monitoredTracks.size() << "\n";
232  for (idx2idxByDoubleColl::const_iterator pItr = monitored2referenceColl.begin(), eItr = monitored2referenceColl.end();
233  pItr != eItr;
234  ++pItr) {
235  nMonitoredTracks++;
236  int trackIdx = pItr->first;
237  reco::Track track = monitoredTracks.at(trackIdx);
238 
239  float dzWRTpv = track.dz(monitoredPV.position());
240  if (fabs(dzWRTpv) > dzWRTPvCut_)
241  continue;
242 
243  fill_generic_tracks_histos(*&monitoredTracksMEs_, &track, &monitoredBS, &monitoredPV, ls, onlinelumi, PU);
244 
245  std::map<double, int> trackDRmap = pItr->second;
246  if (trackDRmap.empty()) {
249  continue;
250  }
251 
252  double dRmin = trackDRmap.begin()->first;
255 
256  bool matched = false;
257  if (dRmin < dRmin_)
258  matched = true;
259 
260  if (!matched) {
261  nUnmatchedMonitoredTracks++;
263  *&unMatchedMonitoredTracksMEs_, &track, &monitoredBS, &monitoredPV, ls, onlinelumi, PU);
266  }
267 
268  } // over monitoed tracks
269 
270  edm::LogInfo("TrackToTrackComparisonHists")
271  << "Total reference tracks: " << nReferenceTracks << "\n"
272  << "Total matched reference tracks: " << nMatchedReferenceTracks << "\n"
273  << "Total monitored tracks: " << nMonitoredTracks << "\n"
274  << "Total unMatched monitored tracks: " << nUnmatchedMonitoredTracks << "\n";
275 }
276 
278  edm::Run const& iRun,
279  edm::EventSetup const& iSetup) {
281  genTriggerEventFlag_->initRun(iRun, iSetup);
282 
283  // check if every HLT path specified has a valid match in the HLT Menu
285  (genTriggerEventFlag_ && genTriggerEventFlag_->on() && genTriggerEventFlag_->allHLTPathsAreValid());
286 
287  // if valid HLT paths are required,
288  // create DQM outputs only if all paths are valid
290  return;
291  }
292 
294 
295  bookHistos(ibooker, referenceTracksMEs_, "ref", dir);
296  bookHistos(ibooker, matchedReferenceTracksMEs_, "ref_matched", dir);
297 
298  bookHistos(ibooker, monitoredTracksMEs_, "mon", dir);
299  bookHistos(ibooker, unMatchedMonitoredTracksMEs_, "mon_unMatched", dir);
300 
301  book_matching_tracks_histos(ibooker, matchTracksMEs_, "matches", dir);
302 }
303 
304 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
307 
308  desc.add<bool>("requireValidHLTPaths", true);
309 
310  desc.add<edm::InputTag>("monitoredTrack", edm::InputTag("hltMergedTracks"));
311  desc.add<edm::InputTag>("monitoredBeamSpot", edm::InputTag("hltOnlineBeamSpot"));
312  desc.add<edm::InputTag>("monitoredPrimaryVertices", edm::InputTag("hltVerticesPFSelector"));
313 
314  desc.add<edm::InputTag>("referenceTrack", edm::InputTag("generalTracks"));
315  desc.add<edm::InputTag>("referenceBeamSpot", edm::InputTag("offlineBeamSpot"));
316  desc.add<edm::InputTag>("referencePrimaryVertices", edm::InputTag("offlinePrimaryVertices"));
317  desc.add<edm::InputTag>("scalers", edm::InputTag("scalersRawToDigi"));
318  desc.add<edm::InputTag>("onlineMetaDataDigis", edm::InputTag("onlineMetaDataDigis"));
319 
320  desc.add<std::string>("topDirName", "HLT/Tracking/ValidationWRTOffline");
321  desc.add<double>("dRmin", 0.002);
322 
323  desc.add<double>("pTCutForPlateau", 0.9);
324  desc.add<double>("dxyCutForPlateau", 2.5);
325  desc.add<double>("dzWRTPvCut", 1e6);
326 
329  desc.add<edm::ParameterSetDescription>("genericTriggerEventPSet", genericTriggerEventPSet);
330 
333  desc.add<edm::ParameterSetDescription>("histoPSet", histoPSet);
334 
335  descriptions.add("trackToTrackComparisonHists", desc);
336 }
337 
339  const edm::View<reco::Track>& tracks2,
341  float dRMin) {
342  //
343  // loop on tracks1
344  //
345  int i = 0;
346  for (const auto& track1 : tracks1) {
347  std::map<double, int> tmp;
348  int j = 0;
349  float smallest_dR = 1e9;
350  int smallest_dR_j = -1;
351 
352  //
353  // loop on tracks2
354  //
355  for (const auto& track2 : tracks2) {
356  double dR = reco::deltaR(track1.eta(), track1.phi(), track2.eta(), track2.phi());
357 
358  if (dR < smallest_dR) {
359  smallest_dR = dR;
360  smallest_dR_j = j;
361  }
362 
363  if (dR < dRMin) {
364  tmp[dR] = j;
365  }
366 
367  j++;
368  }
369 
370  //
371  // If there are no tracks that pass the dR store the smallest (for debugging/validating matching)
372  //
373  if (tmp.empty())
374  tmp[smallest_dR] = smallest_dR_j;
375 
376  map.push_back(std::make_pair(i, tmp));
377  i++;
378  }
379 }
380 
382  generalME& mes,
383  TString label,
384  std::string& dir) {
385  book_generic_tracks_histos(ibooker, mes, label, dir);
386 }
387 
389  generalME& mes,
390  TString label,
391  std::string& dir) {
392  ibooker.cd();
393  ibooker.setCurrentFolder(dir);
394  (mes.h_pt) = ibooker.book1D(label + "_pt", "track p_{T}", Pt_nbin, Pt_rangeMin, Pt_rangeMax);
395  (mes.h_eta) = ibooker.book1D(label + "_eta", "track pseudorapidity", Eta_nbin, Eta_rangeMin, Eta_rangeMax);
396  (mes.h_phi) = ibooker.book1D(label + "_phi", "track #phi", Phi_nbin, Phi_rangeMin, Phi_rangeMax);
397  (mes.h_dxy) =
398  ibooker.book1D(label + "_dxy", "track transverse dca to beam spot", Dxy_nbin, Dxy_rangeMin, Dxy_rangeMax);
399  (mes.h_dz) = ibooker.book1D(label + "_dz", "track longitudinal dca to beam spot", Dz_nbin, Dz_rangeMin, Dz_rangeMax);
400  (mes.h_dxyWRTpv) = ibooker.book1D(
401  label + "_dxyWRTpv", "track transverse dca to primary vertex", Dxy_nbin, Dxy_rangeMin, Dxy_rangeMax);
402  (mes.h_dzWRTpv) = ibooker.book1D(
403  label + "_dzWRTpv", "track longitudinal dca to primary vertex", Dz_nbin, 0.1 * Dz_rangeMin, 0.1 * Dz_rangeMax);
404  (mes.h_charge) = ibooker.book1D(label + "_charge", "track charge", 5, -2, 2);
405  (mes.h_hits) = ibooker.book1D(label + "_hits", "track number of hits", 35, -0.5, 34.5);
406  (mes.h_dRmin) = ibooker.book1D(label + "_dRmin", "track min dR", 100, 0., 0.01);
407  (mes.h_dRmin_l) = ibooker.book1D(label + "_dRmin_l", "track min dR", 100, 0., 0.4);
408 
409  (mes.h_pt_vs_eta) = ibooker.book2D(label + "_ptVSeta",
410  "track p_{T} vs #eta",
411  Eta_nbin,
412  Eta_rangeMin,
413  Eta_rangeMax,
414  Pt_nbin,
415  Pt_rangeMin,
416  Pt_rangeMax);
417 
418  // counts of tracks vs lumi
419  // for this moment, xmin,xmax and binning are hardcoded, maybe in future in a config file!
420  // have to add (declare) this in the .h file as well
421  (mes.h_onlinelumi) = ibooker.book1D(label + "_onlinelumi",
422  "number of tracks vs onlinelumi",
426  (mes.h_ls) = ibooker.book1D(label + "_ls", "number of tracks vs ls", ls_nbin, ls_rangeMin, ls_rangeMax);
427  (mes.h_PU) = ibooker.book1D(label + "_PU", "number of tracks vs PU", PU_nbin, PU_rangeMin, PU_rangeMax);
428 }
429 
431  matchingME& mes,
432  TString label,
433  std::string& dir) {
434  ibooker.cd();
435  ibooker.setCurrentFolder(dir);
436 
437  (mes.h_hits_vs_hits) = ibooker.book2D(
438  label + "_hits_vs_hits", "monitored track # hits vs reference track # hits", 35, -0.5, 34.5, 35, -0.5, 34.5);
439  (mes.h_pt_vs_pt) = ibooker.book2D(label + "_pt_vs_pt",
440  "monitored track p_{T} vs reference track p_{T}",
441  Pt_nbin,
442  Pt_rangeMin,
443  Pt_rangeMax,
444  Pt_nbin,
445  Pt_rangeMin,
446  Pt_rangeMax);
447  (mes.h_eta_vs_eta) = ibooker.book2D(label + "_eta_vs_eta",
448  "monitored track #eta vs reference track #eta",
449  Eta_nbin,
450  Eta_rangeMin,
451  Eta_rangeMax,
452  Eta_nbin,
453  Eta_rangeMin,
454  Eta_rangeMax);
455  (mes.h_phi_vs_phi) = ibooker.book2D(label + "_phi_vs_phi",
456  "monitored track #phi vs reference track #phi",
457  Phi_nbin,
458  Phi_rangeMin,
459  Phi_rangeMax,
460  Phi_nbin,
461  Phi_rangeMin,
462  Phi_rangeMax);
463 
464  (mes.h_dPt) = ibooker.book1D(label + "_dPt", "#Delta track #P_T", ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax);
465  (mes.h_dEta) = ibooker.book1D(label + "_dEta", "#Delta track #eta", etaRes_nbin, etaRes_rangeMin, etaRes_rangeMax);
466  (mes.h_dPhi) = ibooker.book1D(label + "_dPhi", "#Delta track #phi", phiRes_nbin, phiRes_rangeMin, phiRes_rangeMax);
467  (mes.h_dDxy) = ibooker.book1D(
468  label + "_dDxy", "#Delta track transverse dca to beam spot", dxyRes_nbin, dxyRes_rangeMin, dxyRes_rangeMax);
469  (mes.h_dDz) = ibooker.book1D(
470  label + "_dDz", "#Delta track longitudinal dca to beam spot", dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax);
471  (mes.h_dDxyWRTpv) = ibooker.book1D(label + "_dDxyWRTpv",
472  "#Delta track transverse dca to primary vertex ",
473  dxyRes_nbin,
476  (mes.h_dDzWRTpv) = ibooker.book1D(label + "_dDzWRTpv",
477  "#Delta track longitudinal dca to primary vertex",
478  dzRes_nbin,
481  (mes.h_dCharge) = ibooker.book1D(label + "_dCharge", "#Delta track charge", 5, -2.5, 2.5);
482  (mes.h_dHits) = ibooker.book1D(label + "_dHits", "#Delta track number of hits", 39, -19.5, 19.5);
483 }
484 
486  reco::Track* trk,
488  reco::Vertex* pv,
489  unsigned int ls,
490  double onlinelumi,
491  double PU,
492  bool requirePlateau) {
493  float pt = trk->pt();
494  float eta = trk->eta();
495  float phi = trk->phi();
496  float dxy = trk->dxy(bs->position());
497  float dz = trk->dz(bs->position());
498  float dxyWRTpv = trk->dxy(pv->position());
499  float dzWRTpv = trk->dz(pv->position());
500  float charge = trk->charge();
501  float nhits = trk->hitPattern().numberOfValidHits();
502 
503  bool dxyOnPlateau = (fabs(dxyWRTpv) < dxyCutForPlateau_);
504  bool pTOnPlateau = (pt > pTCutForPlateau_);
505 
506  if (dxyOnPlateau || !requirePlateau) {
507  (mes.h_pt)->Fill(pt);
508  }
509 
510  if ((pTOnPlateau && dxyOnPlateau) || !requirePlateau) {
511  (mes.h_eta)->Fill(eta);
512  (mes.h_phi)->Fill(phi);
513  (mes.h_dz)->Fill(dz);
514  (mes.h_dzWRTpv)->Fill(dzWRTpv);
515  (mes.h_charge)->Fill(charge);
516  (mes.h_hits)->Fill(nhits);
517  (mes.h_onlinelumi)->Fill(onlinelumi);
518  (mes.h_ls)->Fill(ls);
519  (mes.h_PU)->Fill(PU);
520  }
521 
522  if (pTOnPlateau || !requirePlateau) {
523  (mes.h_dxy)->Fill(dxy);
524  (mes.h_dxyWRTpv)->Fill(dxyWRTpv);
525  }
526 
527  (mes.h_pt_vs_eta)->Fill(eta, pt);
528 }
529 
532  float mon_pt = mon->pt();
533  float mon_eta = mon->eta();
534  float mon_phi = mon->phi();
535  float mon_dxy = mon->dxy(bs->position());
536  float mon_dz = mon->dz(bs->position());
537  float mon_dxyWRTpv = mon->dxy(pv->position());
538  float mon_dzWRTpv = mon->dz(pv->position());
539  float mon_charge = mon->charge();
540  float mon_nhits = mon->hitPattern().numberOfValidHits();
541 
542  float ref_pt = ref->pt();
543  float ref_eta = ref->eta();
544  float ref_phi = ref->phi();
545  float ref_dxy = ref->dxy(bs->position());
546  float ref_dz = ref->dz(bs->position());
547  float ref_dxyWRTpv = ref->dxy(pv->position());
548  float ref_dzWRTpv = ref->dz(pv->position());
549  float ref_charge = ref->charge();
550  float ref_nhits = ref->hitPattern().numberOfValidHits();
551 
552  (mes.h_hits_vs_hits)->Fill(ref_nhits, mon_nhits);
553  (mes.h_pt_vs_pt)->Fill(ref_pt, mon_pt);
554  (mes.h_eta_vs_eta)->Fill(ref_eta, mon_eta);
555  (mes.h_phi_vs_phi)->Fill(ref_phi, mon_phi);
556 
557  (mes.h_dPt)->Fill(ref_pt - mon_pt);
558  (mes.h_dEta)->Fill(ref_eta - mon_eta);
559  (mes.h_dPhi)->Fill(ref_phi - mon_phi);
560  (mes.h_dDxy)->Fill(ref_dxy - mon_dxy);
561  (mes.h_dDz)->Fill(ref_dz - mon_dz);
562  (mes.h_dDxyWRTpv)->Fill(ref_dxyWRTpv - mon_dxyWRTpv);
563  (mes.h_dDzWRTpv)->Fill(ref_dzWRTpv - mon_dzWRTpv);
564  (mes.h_dCharge)->Fill(ref_charge - mon_charge);
565  (mes.h_dHits)->Fill(ref_nhits - mon_nhits);
566 }
567 
569  const edm::ParameterSet& pset = iConfig.getParameter<edm::ParameterSet>("histoPSet");
570 
571  Eta_rangeMin = pset.getParameter<double>("Eta_rangeMin");
572  Eta_rangeMax = pset.getParameter<double>("Eta_rangeMax");
573  Eta_nbin = pset.getParameter<unsigned int>("Eta_nbin");
574 
575  Pt_rangeMin = pset.getParameter<double>("Pt_rangeMin");
576  Pt_rangeMax = pset.getParameter<double>("Pt_rangeMax");
577  Pt_nbin = pset.getParameter<unsigned int>("Pt_nbin");
578 
579  Phi_rangeMin = pset.getParameter<double>("Phi_rangeMin");
580  Phi_rangeMax = pset.getParameter<double>("Phi_rangeMax");
581  Phi_nbin = pset.getParameter<unsigned int>("Phi_nbin");
582 
583  Dxy_rangeMin = pset.getParameter<double>("Dxy_rangeMin");
584  Dxy_rangeMax = pset.getParameter<double>("Dxy_rangeMax");
585  Dxy_nbin = pset.getParameter<unsigned int>("Dxy_nbin");
586 
587  Dz_rangeMin = pset.getParameter<double>("Dz_rangeMin");
588  Dz_rangeMax = pset.getParameter<double>("Dz_rangeMax");
589  Dz_nbin = pset.getParameter<unsigned int>("Dz_nbin");
590 
591  ptRes_rangeMin = pset.getParameter<double>("ptRes_rangeMin");
592  ptRes_rangeMax = pset.getParameter<double>("ptRes_rangeMax");
593  ptRes_nbin = pset.getParameter<unsigned int>("ptRes_nbin");
594 
595  phiRes_rangeMin = pset.getParameter<double>("phiRes_rangeMin");
596  phiRes_rangeMax = pset.getParameter<double>("phiRes_rangeMax");
597  phiRes_nbin = pset.getParameter<unsigned int>("phiRes_nbin");
598 
599  etaRes_rangeMin = pset.getParameter<double>("etaRes_rangeMin");
600  etaRes_rangeMax = pset.getParameter<double>("etaRes_rangeMax");
601  etaRes_nbin = pset.getParameter<unsigned int>("etaRes_nbin");
602 
603  dxyRes_rangeMin = pset.getParameter<double>("dxyRes_rangeMin");
604  dxyRes_rangeMax = pset.getParameter<double>("dxyRes_rangeMax");
605  dxyRes_nbin = pset.getParameter<unsigned int>("dxyRes_nbin");
606 
607  dzRes_rangeMin = pset.getParameter<double>("dzRes_rangeMin");
608  dzRes_rangeMax = pset.getParameter<double>("dzRes_rangeMax");
609  dzRes_nbin = pset.getParameter<unsigned int>("dzRes_nbin");
610 
611  ls_rangeMin = pset.getParameter<unsigned int>("ls_rangeMin");
612  ls_rangeMax = pset.getParameter<unsigned int>("ls_rangeMax");
613  ls_nbin = pset.getParameter<unsigned int>("ls_nbin");
614 
615  onlinelumi_rangeMin = pset.getParameter<double>("onlinelumi_rangeMin");
616  onlinelumi_rangeMax = pset.getParameter<double>("onlinelumi_rangeMax");
617  onlinelumi_nbin = pset.getParameter<unsigned int>("onlinelumi_nbin");
618 
619  PU_rangeMin = pset.getParameter<double>("PU_rangeMin");
620  PU_rangeMax = pset.getParameter<double>("PU_rangeMax");
621  PU_nbin = pset.getParameter<unsigned int>("PU_nbin");
622 }
623 
625  pset.add<double>("Eta_rangeMin", -2.5);
626  pset.add<double>("Eta_rangeMax", 2.5);
627  pset.add<unsigned int>("Eta_nbin", 50);
628 
629  pset.add<double>("Pt_rangeMin", 0.1);
630  pset.add<double>("Pt_rangeMax", 100.0);
631  pset.add<unsigned int>("Pt_nbin", 1000);
632 
633  pset.add<double>("Phi_rangeMin", -3.1416);
634  pset.add<double>("Phi_rangeMax", 3.1416);
635  pset.add<unsigned int>("Phi_nbin", 36);
636 
637  pset.add<double>("Dxy_rangeMin", -1.0);
638  pset.add<double>("Dxy_rangeMax", 1.0);
639  pset.add<unsigned int>("Dxy_nbin", 300);
640 
641  pset.add<double>("Dz_rangeMin", -30.0);
642  pset.add<double>("Dz_rangeMax", 30.0);
643  pset.add<unsigned int>("Dz_nbin", 60);
644 
645  pset.add<double>("ptRes_rangeMin", -0.1);
646  pset.add<double>("ptRes_rangeMax", 0.1);
647  pset.add<unsigned int>("ptRes_nbin", 100);
648 
649  pset.add<double>("phiRes_rangeMin", -0.01);
650  pset.add<double>("phiRes_rangeMax", 0.01);
651  pset.add<unsigned int>("phiRes_nbin", 300);
652 
653  pset.add<double>("etaRes_rangeMin", -0.01);
654  pset.add<double>("etaRes_rangeMax", 0.01);
655  pset.add<unsigned int>("etaRes_nbin", 300);
656 
657  pset.add<double>("dxyRes_rangeMin", -0.05);
658  pset.add<double>("dxyRes_rangeMax", 0.05);
659  pset.add<unsigned int>("dxyRes_nbin", 500);
660 
661  pset.add<double>("dzRes_rangeMin", -0.05);
662  pset.add<double>("dzRes_rangeMax", 0.05);
663  pset.add<unsigned int>("dzRes_nbin", 150);
664 
665  pset.add<unsigned int>("ls_rangeMin", 0);
666  pset.add<unsigned int>("ls_rangeMax", 3000);
667  pset.add<unsigned int>("ls_nbin", 300);
668 
669  pset.add<double>("onlinelumi_rangeMin", 0.0);
670  pset.add<double>("onlinelumi_rangeMax", 20000.0);
671  pset.add<unsigned int>("onlinelumi_nbin", 200);
672 
673  pset.add<double>("PU_rangeMin", 0.0);
674  pset.add<double>("PU_rangeMax", 120.0);
675  pset.add<unsigned int>("PU_nbin", 120);
676 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
int numberOfValidHits() const
Definition: HitPattern.h:817
void beginJob(const edm::EventSetup &iSetup)
edm::EDGetTokenT< reco::BeamSpot > referenceBSToken_
edm::EDGetTokenT< reco::VertexCollection > monitoredPVToken_
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
void bookHistograms(DQMStore::IBooker &iBooker, edm::Run const &iRun, edm::EventSetup const &iSetup) override
std::string encode() const
Definition: InputTag.cc:159
std::string const & instance() const
Definition: InputTag.h:37
const Point & position() const
position
Definition: Vertex.h:128
Trktree trk
Definition: Trktree.cc:2
dictionary PU
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
std::string const & label() const
Definition: InputTag.h:36
Log< level::Error, false > LogError
size_type size() const
double pt() const
track transverse momentum
Definition: TrackBase.h:637
char const * label
int charge() const
track electric charge
Definition: TrackBase.h:596
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:622
int iEvent
Definition: GenABIO.cc:224
std::unique_ptr< GenericTriggerEventFlag > genTriggerEventFlag_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
edm::EDGetTokenT< OnlineLuminosityRecord > onlineMetaDataDigisToken_
void fillMap(const edm::View< reco::Track > &tracks1, const edm::View< reco::Track > &tracks2, idx2idxByDoubleColl &map, float dRMin)
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:649
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
static void fillHistoPSetDescription(edm::ParameterSetDescription &pset)
const_reference at(size_type pos) const
std::vector< std::pair< int, std::map< double, int > > > idx2idxByDoubleColl
void fill_generic_tracks_histos(generalME &mes, reco::Track *trk, reco::BeamSpot *bs, reco::Vertex *pv, unsigned int ls, double onlinelumi, double PU, bool requirePlateau=true)
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
Log< level::Info, false > LogInfo
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:652
edm::EDGetTokenT< LumiScalersCollection > lumiScalersToken_
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:504
void initialize_parameter(const edm::ParameterSet &iConfig)
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:221
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void fill_matching_tracks_histos(matchingME &mes, reco::Track *mon, reco::Track *ref, reco::BeamSpot *bs, reco::Vertex *pv)
bool isValid() const
Definition: HandleBase.h:70
edm::EDGetTokenT< reco::BeamSpot > monitoredBSToken_
edm::EDGetTokenT< reco::VertexCollection > referencePVToken_
HLT enums.
void book_matching_tracks_histos(DQMStore::IBooker &ibooker, matchingME &mes, TString label, std::string &dir)
void book_generic_tracks_histos(DQMStore::IBooker &ibooker, generalME &mes, TString label, std::string &dir)
edm::EDGetTokenT< edm::View< reco::Track > > referenceTrackToken_
edm::EDGetTokenT< edm::View< reco::Track > > monitoredTrackToken_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
std::string const & process() const
Definition: InputTag.h:40
tmp
align.sh
Definition: createJobs.py:716
static void fillPSetDescription(edm::ParameterSetDescription &desc)
void bookHistos(DQMStore::IBooker &ibooker, generalME &mes, TString label, std::string &dir)
Definition: Run.h:45
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:608
#define LogDebug(id)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
TrackToTrackComparisonHists(const edm::ParameterSet &)