CMS 3D CMS Logo

StandaloneTrackMonitor.cc
Go to the documentation of this file.
37 #include "TLorentzVector.h"
38 
39 #include "TFile.h"
40 #include "TH1.h"
41 #include "TMath.h"
42 #include "TPRegexp.h"
43 
44 #include <string>
45 #include <vector>
46 #include <map>
47 #include <set>
48 
50 public:
52  using MVACollection = std::vector<float>;
53  using QualityMaskCollection = std::vector<unsigned char>;
54 
55 protected:
56  void analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) override;
57  void addClusterToMap(uint32_t detid, const SiStripCluster* cluster);
58  void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
59  void dqmBeginRun(const edm::Run& iRun, const edm::EventSetup& iSetup) override;
60  void processClusters(edm::Event const& iEvent,
61  edm::EventSetup const& iSetup,
62  const TrackerGeometry& tkGeom,
63  double wfac = 1);
64  void processHit(const TrackingRecHit& recHit,
65  edm::EventSetup const& iSetup,
66  const TrackerGeometry& tkGeom,
67  double wfac = 1);
68  void endJob();
69 
70 private:
73 
75 
88  // track MVA
90  const bool doPUCorrection_;
91  const bool doTrackCorrection_;
92  const bool isMC_;
93  const bool haveAllHistograms_;
96  const std::vector<std::string> mvaProducers_;
101 
102  int nevt = 0;
103  int chi2it = 0, chi2itGt = 0, chi2itLt = 0;
104  const bool verbose_;
105  std::vector<std::tuple<edm::EDGetTokenT<MVACollection>, edm::EDGetTokenT<QualityMaskCollection> > > mvaQualityTokens_;
111  const TrackerGeometry* tkGeom_ = nullptr;
112 
137 
144 
147 
153 
156 
166 
169 
179 
189 
194 
204 
208 
213 
219 
227 
228  // MC only
232 
233  // Exclusive Quantities
242 
248 
254 
260 
269 
278 
287 
296 
305 
310 
313 
315 
318 
321 
326 
331 
332  std::vector<MonitorElement*> trackMVAs;
333  std::vector<MonitorElement*> trackMVAsHP;
334  std::vector<MonitorElement*> trackMVAsVsPtProfile;
335  std::vector<MonitorElement*> trackMVAsHPVsPtProfile;
336  std::vector<MonitorElement*> trackMVAsVsEtaProfile;
337  std::vector<MonitorElement*> trackMVAsHPVsEtaProfile;
338 
344 
347 
348  unsigned long long m_cacheID_;
349 
350  std::vector<int> lumivec1;
351  std::vector<int> lumivec2;
352  std::vector<float> vpu_;
353  std::vector<float> vtrack_;
354  std::map<uint32_t, std::set<const SiStripCluster*> > clusterMap_;
355 };
356 
357 // -----------------------------
358 // constructors and destructor
359 // -----------------------------
361  : moduleName_(ps.getUntrackedParameter<std::string>("moduleName", "StandaloneTrackMonitor")),
362  folderName_(ps.getUntrackedParameter<std::string>("folderName", "highPurityTracks")),
363  siStripClusterInfo_(consumesCollector()),
364  trackTag_(ps.getUntrackedParameter<edm::InputTag>("trackInputTag", edm::InputTag("generalTracks"))),
365  bsTag_(ps.getUntrackedParameter<edm::InputTag>("offlineBeamSpot", edm::InputTag("offlineBeamSpot"))),
366  vertexTag_(ps.getUntrackedParameter<edm::InputTag>("vertexTag", edm::InputTag("offlinePrimaryVertices"))),
367  puSummaryTag_(ps.getUntrackedParameter<edm::InputTag>("puTag", edm::InputTag("addPileupInfo"))),
368  clusterTag_(ps.getUntrackedParameter<edm::InputTag>("clusterTag", edm::InputTag("siStripClusters"))),
369  jetsTag_(ps.getUntrackedParameter<edm::InputTag>("PFJetsCollection", edm::InputTag("ak4PFJetsCHS"))),
370  trackToken_(consumes<reco::TrackCollection>(trackTag_)),
371  bsToken_(consumes<reco::BeamSpot>(bsTag_)),
372  vertexToken_(consumes<reco::VertexCollection>(vertexTag_)),
373  puSummaryToken_(consumes<std::vector<PileupSummaryInfo> >(puSummaryTag_)),
374  clusterToken_(consumes<edmNew::DetSetVector<SiStripCluster> >(clusterTag_)),
375  jetsToken_(consumes<std::vector<reco::PFJet> >(jetsTag_)),
376  trackQuality_(ps.getUntrackedParameter<std::string>("trackQuality", "highPurity")),
377  doPUCorrection_(ps.getUntrackedParameter<bool>("doPUCorrection", false)),
378  doTrackCorrection_(ps.getUntrackedParameter<bool>("doTrackCorrection", false)),
379  isMC_(ps.getUntrackedParameter<bool>("isMC", false)),
380  haveAllHistograms_(ps.getUntrackedParameter<bool>("haveAllHistograms", false)),
381  puScaleFactorFile_(ps.getUntrackedParameter<std::string>("puScaleFactorFile", "PileupScaleFactor.root")),
382  trackScaleFactorFile_(ps.getUntrackedParameter<std::string>("trackScaleFactorFile", "PileupScaleFactor.root")),
383  mvaProducers_(ps.getUntrackedParameter<std::vector<std::string> >("MVAProducers")),
384  mvaTrackTag_(ps.getUntrackedParameter<edm::InputTag>("TrackProducerForMVA")),
385  mvaTrackToken_(consumes<edm::View<reco::Track> >(mvaTrackTag_)),
386  tcProducer_(ps.getUntrackedParameter<edm::InputTag>("TCProducer")),
387  algoName_(ps.getUntrackedParameter<std::string>("AlgoName")),
388  verbose_(ps.getUntrackedParameter<bool>("verbose", false)),
391  edm::ESInputTag{"", "TransientTrackBuilder"})),
392  TrackEtaHistoPar_(ps.getParameter<edm::ParameterSet>("trackEtaH")),
393  TrackPtHistoPar_(ps.getParameter<edm::ParameterSet>("trackPtH")) {
394  for (const auto& v : mvaProducers_) {
395  mvaQualityTokens_.push_back(std::make_tuple(consumes<MVACollection>(edm::InputTag(v, "MVAValues")),
396  consumes<QualityMaskCollection>(edm::InputTag(v, "QualityMasks"))));
397  }
398 
399  trackEtaH_ = nullptr;
400  trackEtaerrH_ = nullptr;
401  trackCosThetaH_ = nullptr;
402  trackThetaerrH_ = nullptr;
403  trackPhiH_ = nullptr;
404  trackPhierrH_ = nullptr;
405  trackPH_ = nullptr;
406  trackPtH_ = nullptr;
407  trackPtUpto2GeVH_ = nullptr;
408  trackPtOver10GeVH_ = nullptr;
409  trackPterrH_ = nullptr;
410  trackqOverpH_ = nullptr;
411  trackqOverperrH_ = nullptr;
412  trackChargeH_ = nullptr;
413  nlostHitsH_ = nullptr;
414  nvalidTrackerHitsH_ = nullptr;
415  nvalidPixelHitsH_ = nullptr;
416  nvalidStripHitsH_ = nullptr;
417  trkLayerwithMeasurementH_ = nullptr;
418  pixelLayerwithMeasurementH_ = nullptr;
419  stripLayerwithMeasurementH_ = nullptr;
420  beamSpotXYposH_ = nullptr;
421  beamSpotXYposerrH_ = nullptr;
422  beamSpotZposH_ = nullptr;
423  beamSpotZposerrH_ = nullptr;
424  trackChi2H_ = nullptr;
425  tracknDOFH_ = nullptr;
426  trackd0H_ = nullptr;
427  trackChi2bynDOFH_ = nullptr;
428  vertexXposH_ = nullptr;
429  vertexYposH_ = nullptr;
430  vertexZposH_ = nullptr;
431 
432  nPixBarrelH_ = nullptr;
433  nPixEndcapH_ = nullptr;
434  nStripTIBH_ = nullptr;
435  nStripTOBH_ = nullptr;
436  nStripTECH_ = nullptr;
437  nStripTIDH_ = nullptr;
438 
439  // for MC only
440  nVtxH_ = nullptr;
441  nVertexH_ = nullptr;
442  bunchCrossingH_ = nullptr;
443  nPUH_ = nullptr;
444  trueNIntH_ = nullptr;
445 
446  nLostHitsVspTH_ = nullptr;
447  nLostHitsVsEtaH_ = nullptr;
448  nLostHitsVsCosThetaH_ = nullptr;
449  nLostHitsVsPhiH_ = nullptr;
450  nLostHitsVsIterationH_ = nullptr;
451 
452  nHitsTIBSVsEtaH_ = nullptr;
453  nHitsTOBSVsEtaH_ = nullptr;
454  nHitsTECSVsEtaH_ = nullptr;
455  nHitsTIDSVsEtaH_ = nullptr;
456  nHitsStripSVsEtaH_ = nullptr;
457 
458  nHitsTIBDVsEtaH_ = nullptr;
459  nHitsTOBDVsEtaH_ = nullptr;
460  nHitsTECDVsEtaH_ = nullptr;
461  nHitsTIDDVsEtaH_ = nullptr;
462  nHitsStripDVsEtaH_ = nullptr;
463 
464  nValidHitsVspTH_ = nullptr;
465  nValidHitsVsEtaH_ = nullptr;
466  nValidHitsVsCosThetaH_ = nullptr;
467  nValidHitsVsPhiH_ = nullptr;
468  nValidHitsVsnVtxH_ = nullptr;
469 
470  nValidHitsPixVsEtaH_ = nullptr;
471  nValidHitsPixBVsEtaH_ = nullptr;
472  nValidHitsPixEVsEtaH_ = nullptr;
473  nValidHitsStripVsEtaH_ = nullptr;
474  nValidHitsTIBVsEtaH_ = nullptr;
475  nValidHitsTOBVsEtaH_ = nullptr;
476  nValidHitsTECVsEtaH_ = nullptr;
477  nValidHitsTIDVsEtaH_ = nullptr;
478 
479  nValidHitsPixVsPhiH_ = nullptr;
480  nValidHitsPixBVsPhiH_ = nullptr;
481  nValidHitsPixEVsPhiH_ = nullptr;
482  nValidHitsStripVsPhiH_ = nullptr;
483  nValidHitsTIBVsPhiH_ = nullptr;
484  nValidHitsTOBVsPhiH_ = nullptr;
485  nValidHitsTECVsPhiH_ = nullptr;
486  nValidHitsTIDVsPhiH_ = nullptr;
487 
488  nLostHitsPixVsEtaH_ = nullptr;
489  nLostHitsPixBVsEtaH_ = nullptr;
490  nLostHitsPixEVsEtaH_ = nullptr;
491  nLostHitsStripVsEtaH_ = nullptr;
492  nLostHitsTIBVsEtaH_ = nullptr;
493  nLostHitsTOBVsEtaH_ = nullptr;
494  nLostHitsTECVsEtaH_ = nullptr;
495  nLostHitsTIDVsEtaH_ = nullptr;
496 
497  nLostHitsPixVsPhiH_ = nullptr;
498  nLostHitsPixBVsPhiH_ = nullptr;
499  nLostHitsPixEVsPhiH_ = nullptr;
500  nLostHitsStripVsPhiH_ = nullptr;
501  nLostHitsTIBVsPhiH_ = nullptr;
502  nLostHitsTOBVsPhiH_ = nullptr;
503  nLostHitsTECVsPhiH_ = nullptr;
504  nLostHitsTIDVsPhiH_ = nullptr;
505 
506  nLostHitsPixVsIterationH_ = nullptr;
507  nLostHitsPixBVsIterationH_ = nullptr;
508  nLostHitsPixEVsIterationH_ = nullptr;
509  nLostHitsStripVsIterationH_ = nullptr;
510  nLostHitsTIBVsIterationH_ = nullptr;
511  nLostHitsTOBVsIterationH_ = nullptr;
512  nLostHitsTECVsIterationH_ = nullptr;
513  nLostHitsTIDVsIterationH_ = nullptr;
514 
515  hOnTrkClusChargeThinH_ = nullptr;
516  hOnTrkClusWidthThinH_ = nullptr;
517  hOnTrkClusChargeThickH_ = nullptr;
518  hOnTrkClusWidthThickH_ = nullptr;
519 
520  hOffTrkClusChargeThinH_ = nullptr;
521  hOffTrkClusWidthThinH_ = nullptr;
522  hOffTrkClusChargeThickH_ = nullptr;
523  hOffTrkClusWidthThickH_ = nullptr;
524 
525  // Read pileup weight factors
526 
527  if (isMC_ && doPUCorrection_ && doTrackCorrection_) {
528  throw std::runtime_error("if isMC is true, only one of doPUCorrection and doTrackCorrection can be true");
529  }
530 
531  if (isMC_ && doPUCorrection_) {
532  vpu_.clear();
533  TFile* f1 = TFile::Open(puScaleFactorFile_.c_str());
534  TH1F* h1 = dynamic_cast<TH1F*>(f1->Get("pileupweight"));
535  for (int i = 1; i <= h1->GetNbinsX(); ++i)
536  vpu_.push_back(h1->GetBinContent(i));
537  f1->Close();
538  }
539 
540  if (isMC_ && doTrackCorrection_) {
541  vtrack_.clear();
542  TFile* f1 = TFile::Open(trackScaleFactorFile_.c_str());
543  TH1F* h1 = dynamic_cast<TH1F*>(f1->Get("trackweight"));
544  for (int i = 1; i <= h1->GetNbinsX(); ++i)
545  vtrack_.push_back(h1->GetBinContent(i));
546  f1->Close();
547  }
548 }
549 
551  tkGeom_ = &(iSetup.getData(geomToken_));
552 }
553 
555  edm::Run const& iRun,
556  edm::EventSetup const& iSetup) {
557  std::string currentFolder = moduleName_ + "/" + folderName_;
558  ibook.setCurrentFolder(currentFolder);
559 
560  // The following are common with the official tool
561  if (haveAllHistograms_) {
562  trackEtaH_ = ibook.book1D("trackEta",
563  "Track Eta",
564  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
565  TrackEtaHistoPar_.getParameter<double>("Xmin"),
566  TrackEtaHistoPar_.getParameter<double>("Xmax"));
567 
568  trackEtaerrH_ = ibook.book1D("trackEtaerr", "Track Eta Error", 50, 0.0, 1.0);
569  trackCosThetaH_ = ibook.book1D("trackCosTheta", "Track Cos(Theta)", 50, -1.0, 1.0);
570  trackThetaerrH_ = ibook.book1D("trackThetaerr", "Track Theta Error", 50, 0.0, 1.0);
571  trackPhiH_ = ibook.book1D("trackPhi", "Track Phi", 70, -3.5, 3.5);
572  trackPhierrH_ = ibook.book1D("trackPhierr", "Track Phi Error", 50, 0.0, 1.0);
573 
574  trackPH_ = ibook.book1D("trackP", "Track 4-momentum", 50, 0.0, 10.0);
575  trackPtH_ = ibook.book1D("trackPt",
576  "Track Pt",
577  TrackPtHistoPar_.getParameter<int32_t>("Xbins"),
578  TrackPtHistoPar_.getParameter<double>("Xmin"),
579  TrackPtHistoPar_.getParameter<double>("Xmax"));
580  trackPt_ZoomH_ = ibook.book1D("trackPt_Zoom", "Track Pt", 100, 60, 70);
581  trackPterrH_ = ibook.book1D("trackPterr", "Track Pt Error", 100, 0.0, 100.0);
582  trackqOverpH_ = ibook.book1D("trackqOverp", "q Over p", 40, -10.0, 10.0);
583  trackqOverperrH_ = ibook.book1D("trackqOverperr", "q Over p Error", 50, 0.0, 25.0);
584  trackChargeH_ = ibook.book1D("trackCharge", "Track Charge", 50, -5, 5);
585  trackChi2H_ = ibook.book1D("trackChi2", "Chi2", 100, 0.0, 100.0);
586  tracknDOFH_ = ibook.book1D("tracknDOF", "nDOF", 100, 0.0, 100.0);
587  trackChi2ProbH_ = ibook.book1D("trackChi2Prob", "Chi2prob", 50, 0.0, 1.0);
588  trackChi2oNDFH_ = ibook.book1D("trackChi2oNDF", "Chi2oNDF", 100, 0.0, 100.0);
589  trackd0H_ = ibook.book1D("trackd0", "Track d0", 100, -1, 1);
590  trackChi2bynDOFH_ = ibook.book1D("trackChi2bynDOF", "Chi2 Over nDOF", 100, 0.0, 10.0);
591  trackalgoH_ = ibook.book1D("trackalgo", "Track Algo", 46, 0.0, 46.0);
592  trackorigalgoH_ = ibook.book1D("trackorigalgo", "Track Original Algo", 46, 0.0, 46.0);
593  trackStoppingSourceH_ = ibook.book1D("trackstoppingsource", "Track Stopping Source", 12, 0.0, 12.0);
595  ibook.book1D("DistanceOfClosestApproachToPV", "DistanceOfClosestApproachToPV", 1000, -1.0, 1.0);
597  ibook.book1D("DistanceOfClosestApproachToPVZoomed", "DistanceOfClosestApproachToPV", 1000, -0.1, 0.1);
599  "DistanceOfClosestApproachToPVVsPhi", "DistanceOfClosestApproachToPVVsPhi", 100, -3.5, 3.5, 0.0, 0.0, "g");
601  "xPointOfClosestApproachVsZ0wrtPV", "xPointOfClosestApproachVsZ0wrtPV", 120, -60, 60, 0.0, 0.0, "g");
603  "yPointOfClosestApproachVsZ0wrtPV", "yPointOfClosestApproachVsZ0wrtPV", 120, -60, 60, 0.0, 0.0, "g");
605  ibook.book1D("trackDeltaRwrtClosestTrack", "min#DeltaR(considered track,other tracks)", 500, 0, 10);
606 
607  ip2dToPVH_ = ibook.book1D("ip2dToPV", "IP in 2d To PV", 1000, -1.0, 1.0);
608  iperr2dToPVH_ = ibook.book1D("iperr2dToPV", "IP error in 2d To PV", 50, 0, 4);
609  iperr2dToPVWtH_ = ibook.book1D("iperr2dToPVWt", "IP error in 2d To PV", 50, 0, 4);
610 
611  ip3dToPVH_ = ibook.book1D("ip3dToPV", "IP in 3d To PV", 200, -20, 20);
612  ip3dToBSH_ = ibook.book1D("ip3dToBS", "IP in 3d To BS", 200, -20, 20);
613  iperr3dToPVH_ = ibook.book1D("iperr3dToPV", "IP error in 3d To PV", 100, 0, 5);
614  iperr3dToBSH_ = ibook.book1D("iperr3dToBS", "IP error in 3d To BS", 100, 0, 5);
615  sip3dToPVH_ = ibook.book1D("sip3dToPV", "IP significance in 3d To PV", 200, -10, 10);
616  sip3dToBSH_ = ibook.book1D("sip3dToBS", "IP significance in 3d To BS", 200, -10, 10);
617 
618  ip2dToBSH_ = ibook.book1D("ip2dToBS", "IP in 2d To BS", 1000, -1., 1.); //Beamspot
619  iperr2dToBSH_ = ibook.book1D("iperr2dToBS", "IP error in 2d To BS", 50, 0, 4);
620  sip2dToBSH_ = ibook.book1D("sip2dToBS", "IP significance in 2d To BS", 200, -10, 10);
621 
622  iperr3dToPVWtH_ = ibook.book1D("iperr3dToPVWt", "IP error in 3d To PV", 100, 0, 5);
623  sip2dToPVH_ = ibook.book1D("sip2dToPV", "IP significance in 2d To PV", 200, -10, 10);
624 
625  sip2dToPVWtH_ = ibook.book1D("sip2dToPVWt", "IP significance in 2d To PV", 200, -10, 10);
626  sipDxyToPVH_ = ibook.book1D("sipDxyToPV", "IP significance in dxy To PV", 100, -10, 10);
627  sipDzToPVH_ = ibook.book1D("sipDzToPV", "IP significance in dz To PV", 100, -10, 10);
628 
629  nallHitsH_ = ibook.book1D("nallHits", "No. of All Hits", 60, -0.5, 59.5);
630  ntrackerHitsH_ = ibook.book1D("ntrackerHits", "No. of Tracker Hits", 60, -0.5, 59.5);
631 
632  nvalidTrackerHitsH_ = ibook.book1D("nvalidTrackerhits", "No. of Valid Tracker Hits", 47, -0.5, 46.5);
633  nvalidPixelHitsH_ = ibook.book1D("nvalidPixelHits", "No. of Valid Hits in Pixel", 8, -0.5, 7.5);
634  nvalidPixelBHitsH_ = ibook.book1D("nvalidPixelBarrelHits", "No. of Valid Hits in Pixel Barrel", 6, -0.5, 5.5);
635  nvalidPixelEHitsH_ = ibook.book1D("nvalidPixelEndcapHits", "No. of Valid Hits in Pixel Endcap", 6, -0.5, 6.5);
636  nvalidStripHitsH_ = ibook.book1D("nvalidStripHits", "No. of Valid Hits in Strip", 36, -0.5, 35.5);
637  nvalidTIBHitsH_ = ibook.book1D("nvalidTIBHits", "No. of Valid Hits in Strip TIB", 6, -0.5, 5.5);
638  nvalidTOBHitsH_ = ibook.book1D("nvalidTOBHits", "No. of Valid Hits in Strip TOB", 11, -0.5, 10.5);
639  nvalidTIDHitsH_ = ibook.book1D("nvalidTIDHits", "No. of Valid Hits in Strip TID", 6, -0.5, 5.5);
640  nvalidTECHitsH_ = ibook.book1D("nvalidTECHits", "No. of Valid Hits in Strip TEC", 11, -0.5, 10.5);
641 
642  nlostTrackerHitsH_ = ibook.book1D("nlostTrackerhits", "No. of Lost Tracker Hits", 15, -0.5, 14.5);
643  nlostPixelHitsH_ = ibook.book1D("nlostPixelHits", "No. of Lost Hits in Pixel", 8, -0.5, 7.5);
644  nlostPixelBHitsH_ = ibook.book1D("nlostPixelBarrelHits", "No. of Lost Hits in Pixel Barrel", 5, -0.5, 4.5);
645  nlostPixelEHitsH_ = ibook.book1D("nlostPixelEndcapHits", "No. of Lost Hits in Pixel Endcap", 4, -0.5, 3.5);
646  nlostStripHitsH_ = ibook.book1D("nlostStripHits", "No. of Lost Hits in Strip", 10, -0.5, 9.5);
647  nlostTIBHitsH_ = ibook.book1D("nlostTIBHits", "No. of Lost Hits in Strip TIB", 5, -0.5, 4.5);
648  nlostTOBHitsH_ = ibook.book1D("nlostTOBHits", "No. of Lost Hits in Strip TOB", 10, -0.5, 9.5);
649  nlostTIDHitsH_ = ibook.book1D("nlostTIDHits", "No. of Lost Hits in Strip TID", 5, -0.5, 4.5);
650  nlostTECHitsH_ = ibook.book1D("nlostTECHits", "No. of Lost Hits in Strip TEC", 10, -0.5, 9.5);
651 
652  trkLayerwithMeasurementH_ = ibook.book1D("trkLayerwithMeasurement", "No. of Layers per Track", 20, 0.0, 20.0);
654  ibook.book1D("pixelLayerwithMeasurement", "No. of Pixel Layers per Track", 10, 0.0, 10.0);
656  ibook.book1D("pixelBLayerwithMeasurement", "No. of Pixel Barrel Layers per Track", 5, 0.0, 5.0);
658  ibook.book1D("pixelELayerwithMeasurement", "No. of Pixel Endcap Layers per Track", 5, 0.0, 5.0);
660  ibook.book1D("stripLayerwithMeasurement", "No. of Strip Layers per Track", 20, 0.0, 20.0);
662  ibook.book1D("stripTIBLayerwithMeasurement", "No. of Strip TIB Layers per Track", 10, 0.0, 10.0);
664  ibook.book1D("stripTOBLayerwithMeasurement", "No. of Strip TOB Layers per Track", 10, 0.0, 10.0);
666  ibook.book1D("stripTIDLayerwithMeasurement", "No. of Strip TID Layers per Track", 5, 0.0, 5.0);
668  ibook.book1D("stripTECLayerwithMeasurement", "No. of Strip TEC Layers per Track", 15, 0.0, 15.0);
669 
670  nlostHitsH_ = ibook.book1D("nlostHits", "No. of Lost Hits", 10, -0.5, 9.5);
672  ibook.book1D("nMissingExpectedInnerHits", "No. of Missing Expected Inner Hits", 10, -0.5, 9.5);
674  ibook.book1D("nMissingExpectedOuterHits", "No. of Missing Expected Outer Hits", 10, -0.5, 9.5);
675 
676  beamSpotXYposH_ = ibook.book1D("beamSpotXYpos", "XY position of beam spot", 40, -4.0, 4.0);
677  beamSpotXYposerrH_ = ibook.book1D("beamSpotXYposerr", "Error in XY position of beam spot", 20, 0.0, 4.0);
678  beamSpotZposH_ = ibook.book1D("beamSpotZpos", "Z position of beam spot", 100, -20.0, 20.0);
679  beamSpotZposerrH_ = ibook.book1D("beamSpotZposerr", "Error in Z position of beam spot", 50, 0.0, 5.0);
680 
681  vertexXposH_ = ibook.book1D("vertexXpos", "Vertex X position", 100, 0.05, 0.15);
682  vertexYposH_ = ibook.book1D("vertexYpos", "Vertex Y position", 200, -0.1, 0.1);
683  vertexZposH_ = ibook.book1D("vertexZpos", "Vertex Z position", 100, -20.0, 20.0);
684  nVertexH_ = ibook.book1D("nVertex", "# of vertices", 120, -0.5, 119.5);
685  nVtxH_ = ibook.book1D("nVtx", "# of vtxs", 120, -0.5, 119.5);
686 
687  nMissingInnerHitBH_ = ibook.book1D("nMissingInnerHitB", "No. missing inner hit per Track in Barrel", 6, -0.5, 5.5);
688  nMissingInnerHitEH_ = ibook.book1D("nMissingInnerHitE", "No. missing inner hit per Track in Endcap", 6, -0.5, 5.5);
690  ibook.book1D("nMissingOuterHitB", "No. missing outer hit per Track in Barrel", 11, -0.5, 10.5);
692  ibook.book1D("nMissingOuterHitE", "No. missing outer hit per Track in Endcap", 11, -0.5, 10.5);
693  nPixBarrelH_ = ibook.book1D("nHitPixelBarrel", "No. of hits in Pixel Barrel per Track", 20, 0, 20.0);
694  nPixEndcapH_ = ibook.book1D("nHitPixelEndcap", "No. of hits in Pixel Endcap per Track", 20, 0, 20.0);
695  nStripTIBH_ = ibook.book1D("nHitStripTIB", "No. of hits in Strip TIB per Track", 30, 0, 30.0);
696  nStripTOBH_ = ibook.book1D("nHitStripTOB", "No. of hits in Strip TOB per Track", 30, 0, 30.0);
697  nStripTECH_ = ibook.book1D("nHitStripTEC", "No. of hits in Strip TEC per Track", 30, 0, 30.0);
698  nStripTIDH_ = ibook.book1D("nHitStripTID", "No. of hits in Strip TID per Tracks", 30, 0, 30.0);
699  nTracksH_ = ibook.book1D("nTracks", "No. of Tracks", 1200, -0.5, 1199.5);
700  nJet_ = ibook.book1D("nJet", "Number of Jets", 101, -0.5, 100.5);
701  Jet_pt_ = ibook.book1D("Jet_pt", "Jet p_{T}", 200, 0., 200.);
702  Jet_eta_ = ibook.book1D("Jet_eta", "Jet #eta", 100, -5.2, 5.2);
703  Jet_energy_ = ibook.book1D("Jet_energy", "Jet Energy", 200, 0., 200.);
705  ibook.book1D("Jet_chargedMultiplicity", "Jet charged Hadron Multiplicity", 201, -0.5, 200.5);
706  Zpt_ = ibook.book1D("Zpt", "Z-boson transverse momentum", 100, 0, 100);
707  ZInvMass_ = ibook.book1D("ZInvMass", "m_{ll}", 120, 75, 105);
708  }
709  if (isMC_) {
710  bunchCrossingH_ = ibook.book1D("bunchCrossing", "Bunch Crossing", 60, 0, 60.0);
711  nPUH_ = ibook.book1D("nPU", "No of Pileup", 100, 0, 100.0);
712  trueNIntH_ = ibook.book1D("trueNInt", "True no of Interactions", 100, 0, 100.0);
713  }
714  // Exclusive histograms
715 
716  nLostHitByLayerH_ = ibook.book1D("nLostHitByLayer", "No. of Lost Hit per Layer", 29, 0.5, 29.5);
717 
719  ibook.book1D("nLostHitByLayerPix", "No. of Lost Hit per Layer for Pixel detector", 7, 0.5, 7.5);
720 
722  ibook.book1D("nLostHitByLayerStrip", "No. of Lost Hit per Layer for SiStrip detector", 22, 0.5, 22.5);
723 
724  nLostHitsVspTH_ = ibook.bookProfile("nLostHitsVspT",
725  "Number of Lost Hits Vs pT",
726  TrackPtHistoPar_.getParameter<int32_t>("Xbins"),
727  TrackPtHistoPar_.getParameter<double>("Xmin"),
728  TrackPtHistoPar_.getParameter<double>("Xmax"),
729  0.0,
730  0.0,
731  "g");
732  nLostHitsVsEtaH_ = ibook.bookProfile("nLostHitsVsEta",
733  "Number of Lost Hits Vs Eta",
734  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
735  TrackEtaHistoPar_.getParameter<double>("Xmin"),
736  TrackEtaHistoPar_.getParameter<double>("Xmax"),
737  0.0,
738  0.0,
739  "g");
741  ibook.bookProfile("nLostHitsVsCosTheta", "Number of Lost Hits Vs Cos(Theta)", 50, -1.0, 1.0, 0.0, 0.0, "g");
742  nLostHitsVsPhiH_ = ibook.bookProfile("nLostHitsVsPhi", "Number of Lost Hits Vs Phi", 100, -3.5, 3.5, 0.0, 0.0, "g");
744  ibook.bookProfile("nLostHitsVsIteration", "Number of Lost Hits Vs Iteration", 47, -0.5, 46.5, 0.0, 0.0, "g");
745 
746  nHitsTIBSVsEtaH_ = ibook.bookProfile("nHitsTIBSVsEta",
747  "Number of Hits in TIB Vs Eta (Single-sided)",
748  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
749  TrackEtaHistoPar_.getParameter<double>("Xmin"),
750  TrackEtaHistoPar_.getParameter<double>("Xmax"),
751  0.0,
752  0.0,
753  "g");
754  nHitsTOBSVsEtaH_ = ibook.bookProfile("nHitsTOBSVsEta",
755  "Number of Hits in TOB Vs Eta (Single-sided)",
756  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
757  TrackEtaHistoPar_.getParameter<double>("Xmin"),
758  TrackEtaHistoPar_.getParameter<double>("Xmax"),
759  0.0,
760  0.0,
761  "g");
762  nHitsTECSVsEtaH_ = ibook.bookProfile("nHitsTECSVsEta",
763  "Number of Hits in TEC Vs Eta (Single-sided)",
764  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
765  TrackEtaHistoPar_.getParameter<double>("Xmin"),
766  TrackEtaHistoPar_.getParameter<double>("Xmax"),
767  0.0,
768  0.0,
769  "g");
770  nHitsTIDSVsEtaH_ = ibook.bookProfile("nHitsTIDSVsEta",
771  "Number of Hits in TID Vs Eta (Single-sided)",
772  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
773  TrackEtaHistoPar_.getParameter<double>("Xmin"),
774  TrackEtaHistoPar_.getParameter<double>("Xmax"),
775  0.0,
776  0.0,
777  "g");
778 
779  nHitsStripSVsEtaH_ = ibook.bookProfile("nHitsStripSVsEta",
780  "Number of Strip Hits Vs Eta (Single-sided)",
781  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
782  TrackEtaHistoPar_.getParameter<double>("Xmin"),
783  TrackEtaHistoPar_.getParameter<double>("Xmax"),
784  0.0,
785  0.0,
786  "g");
787 
788  nHitsTIBDVsEtaH_ = ibook.bookProfile("nHitsTIBDVsEta",
789  "Number of Hits in TIB Vs Eta (Double-sided)",
790  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
791  TrackEtaHistoPar_.getParameter<double>("Xmin"),
792  TrackEtaHistoPar_.getParameter<double>("Xmax"),
793  0.0,
794  0.0,
795  "g");
796  nHitsTOBDVsEtaH_ = ibook.bookProfile("nHitsTOBDVsEta",
797  "Number of Hits in TOB Vs Eta (Double-sided)",
798  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
799  TrackEtaHistoPar_.getParameter<double>("Xmin"),
800  TrackEtaHistoPar_.getParameter<double>("Xmax"),
801  0.0,
802  0.0,
803  "g");
804  nHitsTECDVsEtaH_ = ibook.bookProfile("nHitsTECDVsEta",
805  "Number of Hits in TEC Vs Eta (Double-sided)",
806  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
807  TrackEtaHistoPar_.getParameter<double>("Xmin"),
808  TrackEtaHistoPar_.getParameter<double>("Xmax"),
809  0.0,
810  0.0,
811  "g");
812  nHitsTIDDVsEtaH_ = ibook.bookProfile("nHitsTIDDVsEta",
813  "Number of Hits in TID Vs Eta (Double-sided)",
814  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
815  TrackEtaHistoPar_.getParameter<double>("Xmin"),
816  TrackEtaHistoPar_.getParameter<double>("Xmax"),
817  0.0,
818  0.0,
819  "g");
820  nHitsStripDVsEtaH_ = ibook.bookProfile("nHitsStripDVsEta",
821  "Number of Strip Hits Vs Eta (Double-sided)",
822  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
823  TrackEtaHistoPar_.getParameter<double>("Xmin"),
824  TrackEtaHistoPar_.getParameter<double>("Xmax"),
825  0.0,
826  0.0,
827  "g");
828 
829  nValidHitsVspTH_ = ibook.bookProfile("nValidHitsVspT",
830  "Number of Valid Hits Vs pT",
831  TrackPtHistoPar_.getParameter<int32_t>("Xbins"),
832  TrackPtHistoPar_.getParameter<double>("Xmin"),
833  TrackPtHistoPar_.getParameter<double>("Xmax"),
834  0.0,
835  0.0,
836  "g");
838  ibook.bookProfile("nValidHitsVsnVtx", "Number of Valid Hits Vs Number of Vertex", 100, 0., 50., 0.0, 0.0, "g");
839  nValidHitsVsEtaH_ = ibook.bookProfile("nValidHitsVsEta",
840  "Number of Hits Vs Eta",
841  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
842  TrackEtaHistoPar_.getParameter<double>("Xmin"),
843  TrackEtaHistoPar_.getParameter<double>("Xmax"),
844  0.0,
845  0.0,
846  "g");
847 
849  ibook.bookProfile("nValidHitsVsCosTheta", "Number of Valid Hits Vs Cos(Theta)", 50, -1.0, 1.0, 0.0, 0.0, "g");
851  ibook.bookProfile("nValidHitsVsPhi", "Number of Valid Hits Vs Phi", 100, -3.5, 3.5, 0.0, 0.0, "g");
852 
853  nValidHitsPixVsEtaH_ = ibook.bookProfile("nValidHitsPixVsEta",
854  "Number of Valid Hits in Pixel Vs Eta",
855  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
856  TrackEtaHistoPar_.getParameter<double>("Xmin"),
857  TrackEtaHistoPar_.getParameter<double>("Xmax"),
858  0.0,
859  0.0,
860  "g");
861  nValidHitsPixBVsEtaH_ = ibook.bookProfile("nValidHitsPixBVsEta",
862  "Number of Valid Hits in Pixel Barrel Vs Eta",
863  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
864  TrackEtaHistoPar_.getParameter<double>("Xmin"),
865  TrackEtaHistoPar_.getParameter<double>("Xmax"),
866  0.0,
867  0.0,
868  "g");
869  nValidHitsPixEVsEtaH_ = ibook.bookProfile("nValidHitsPixEVsEta",
870  "Number of Valid Hits in Pixel Endcap Vs Eta",
871  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
872  TrackEtaHistoPar_.getParameter<double>("Xmin"),
873  TrackEtaHistoPar_.getParameter<double>("Xmax"),
874  0.0,
875  0.0,
876  "g");
877  nValidHitsStripVsEtaH_ = ibook.bookProfile("nValidHitsStripVsEta",
878  "Number of Valid Hits in SiStrip Vs Eta",
879  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
880  TrackEtaHistoPar_.getParameter<double>("Xmin"),
881  TrackEtaHistoPar_.getParameter<double>("Xmax"),
882  0.0,
883  0.0,
884  "g");
885  nValidHitsTIBVsEtaH_ = ibook.bookProfile("nValidHitsTIBVsEta",
886  "Number of Valid Hits in TIB Vs Eta",
887  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
888  TrackEtaHistoPar_.getParameter<double>("Xmin"),
889  TrackEtaHistoPar_.getParameter<double>("Xmax"),
890  0.0,
891  0.0,
892  "g");
893  nValidHitsTOBVsEtaH_ = ibook.bookProfile("nValidHitsTOBVsEta",
894  "Number of Valid Hits in TOB Vs Eta",
895  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
896  TrackEtaHistoPar_.getParameter<double>("Xmin"),
897  TrackEtaHistoPar_.getParameter<double>("Xmax"),
898  0.0,
899  0.0,
900  "g");
901  nValidHitsTECVsEtaH_ = ibook.bookProfile("nValidHitsTECVsEta",
902  "Number of Valid Hits in TEC Vs Eta",
903  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
904  TrackEtaHistoPar_.getParameter<double>("Xmin"),
905  TrackEtaHistoPar_.getParameter<double>("Xmax"),
906  0.0,
907  0.0,
908  "g");
909  nValidHitsTIDVsEtaH_ = ibook.bookProfile("nValidHitsTIDVsEta",
910  "Number of Valid Hits in TID Vs Eta",
911  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
912  TrackEtaHistoPar_.getParameter<double>("Xmin"),
913  TrackEtaHistoPar_.getParameter<double>("Xmax"),
914  0.0,
915  0.0,
916  "g");
917 
918  nValidHitsPixVsPhiH_ = ibook.bookProfile("nValidHitsPixVsPhi",
919  "Number of Valid Hits in Pixel Vs Phi",
920  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
921  TrackEtaHistoPar_.getParameter<double>("Xmin"),
922  TrackEtaHistoPar_.getParameter<double>("Xmax"),
923  0.0,
924  0.0,
925  "g");
926  nValidHitsPixBVsPhiH_ = ibook.bookProfile("nValidHitsPixBVsPhi",
927  "Number of Valid Hits in Pixel Barrel Vs Phi",
928  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
929  TrackEtaHistoPar_.getParameter<double>("Xmin"),
930  TrackEtaHistoPar_.getParameter<double>("Xmax"),
931  0.0,
932  0.0,
933  "g");
934  nValidHitsPixEVsPhiH_ = ibook.bookProfile("nValidHitsPixEVsPhi",
935  "Number of Valid Hits in Pixel Endcap Vs Phi",
936  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
937  TrackEtaHistoPar_.getParameter<double>("Xmin"),
938  TrackEtaHistoPar_.getParameter<double>("Xmax"),
939  0.0,
940  0.0,
941  "g");
942  nValidHitsStripVsPhiH_ = ibook.bookProfile("nValidHitsStripVsPhi",
943  "Number of Valid Hits in SiStrip Vs Phi",
944  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
945  TrackEtaHistoPar_.getParameter<double>("Xmin"),
946  TrackEtaHistoPar_.getParameter<double>("Xmax"),
947  0.0,
948  0.0,
949  "g");
950  nValidHitsTIBVsPhiH_ = ibook.bookProfile("nValidHitsTIBVsPhi",
951  "Number of Valid Hits in TIB Vs Phi",
952  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
953  TrackEtaHistoPar_.getParameter<double>("Xmin"),
954  TrackEtaHistoPar_.getParameter<double>("Xmax"),
955  0.0,
956  0.0,
957  "g");
958  nValidHitsTOBVsPhiH_ = ibook.bookProfile("nValidHitsTOBVsPhi",
959  "Number of Valid Hits in TOB Vs Phi",
960  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
961  TrackEtaHistoPar_.getParameter<double>("Xmin"),
962  TrackEtaHistoPar_.getParameter<double>("Xmax"),
963  0.0,
964  0.0,
965  "g");
966  nValidHitsTECVsPhiH_ = ibook.bookProfile("nValidHitsTECVsPhi",
967  "Number of Valid Hits in TEC Vs Phi",
968  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
969  TrackEtaHistoPar_.getParameter<double>("Xmin"),
970  TrackEtaHistoPar_.getParameter<double>("Xmax"),
971  0.0,
972  0.0,
973  "g");
974  nValidHitsTIDVsPhiH_ = ibook.bookProfile("nValidHitsTIDVsPhi",
975  "Number of Valid Hits in TID Vs Phi",
976  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
977  TrackEtaHistoPar_.getParameter<double>("Xmin"),
978  TrackEtaHistoPar_.getParameter<double>("Xmax"),
979  0.0,
980  0.0,
981  "g");
982 
983  nLostHitsPixVsEtaH_ = ibook.bookProfile("nLostHitsPixVsEta",
984  "Number of Lost Hits in Pixel Vs Eta",
985  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
986  TrackEtaHistoPar_.getParameter<double>("Xmin"),
987  TrackEtaHistoPar_.getParameter<double>("Xmax"),
988  0.0,
989  0.0,
990  "g");
991  nLostHitsPixBVsEtaH_ = ibook.bookProfile("nLostHitsPixBVsEta",
992  "Number of Lost Hits in Pixel Barrel Vs Eta",
993  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
994  TrackEtaHistoPar_.getParameter<double>("Xmin"),
995  TrackEtaHistoPar_.getParameter<double>("Xmax"),
996  0.0,
997  0.0,
998  "g");
999  nLostHitsPixEVsEtaH_ = ibook.bookProfile("nLostHitsPixEVsEta",
1000  "Number of Lost Hits in Pixel Endcap Vs Eta",
1001  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1002  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1003  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1004  0.0,
1005  0.0,
1006  "g");
1007  nLostHitsStripVsEtaH_ = ibook.bookProfile("nLostHitsStripVsEta",
1008  "Number of Lost Hits in SiStrip Vs Eta",
1009  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1010  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1011  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1012  0.0,
1013  0.0,
1014  "g");
1015  nLostHitsTIBVsEtaH_ = ibook.bookProfile("nLostHitsTIBVsEta",
1016  "Number of Lost Hits in TIB Vs Eta",
1017  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1018  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1019  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1020  0.0,
1021  0.0,
1022  "g");
1023  nLostHitsTOBVsEtaH_ = ibook.bookProfile("nLostHitsTOBVsEta",
1024  "Number of Lost Hits in TOB Vs Eta",
1025  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1026  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1027  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1028  0.0,
1029  0.0,
1030  "g");
1031  nLostHitsTECVsEtaH_ = ibook.bookProfile("nLostHitsTECVsEta",
1032  "Number of Lost Hits in TEC Vs Eta",
1033  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1034  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1035  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1036  0.0,
1037  0.0,
1038  "g");
1039  nLostHitsTIDVsEtaH_ = ibook.bookProfile("nLostHitsTIDVsEta",
1040  "Number of Lost Hits in TID Vs Eta",
1041  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1042  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1043  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1044  0.0,
1045  0.0,
1046  "g");
1047 
1048  nLostHitsPixVsPhiH_ = ibook.bookProfile("nLostHitsPixVsPhi",
1049  "Number of Lost Hits in Pixel Vs Phi",
1050  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1051  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1052  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1053  0.0,
1054  0.0,
1055  "g");
1056  nLostHitsPixBVsPhiH_ = ibook.bookProfile("nLostHitsPixBVsPhi",
1057  "Number of Lost Hits in Pixel Barrel Vs Phi",
1058  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1059  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1060  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1061  0.0,
1062  0.0,
1063  "g");
1064  nLostHitsPixEVsPhiH_ = ibook.bookProfile("nLostHitsPixEVsPhi",
1065  "Number of Lost Hits in Pixel Endcap Vs Phi",
1066  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1067  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1068  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1069  0.0,
1070  0.0,
1071  "g");
1072  nLostHitsStripVsPhiH_ = ibook.bookProfile("nLostHitsStripVsPhi",
1073  "Number of Lost Hits in SiStrip Vs Phi",
1074  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1075  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1076  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1077  0.0,
1078  0.0,
1079  "g");
1080  nLostHitsTIBVsPhiH_ = ibook.bookProfile("nLostHitsTIBVsPhi",
1081  "Number of Lost Hits in TIB Vs Phi",
1082  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1083  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1084  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1085  0.0,
1086  0.0,
1087  "g");
1088  nLostHitsTOBVsPhiH_ = ibook.bookProfile("nLostHitsTOBVsPhi",
1089  "Number of Lost Hits in TOB Vs Phi",
1090  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1091  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1092  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1093  0.0,
1094  0.0,
1095  "g");
1096  nLostHitsTECVsPhiH_ = ibook.bookProfile("nLostHitsTECVsPhi",
1097  "Number of Lost Hits in TEC Vs Phi",
1098  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1099  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1100  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1101  0.0,
1102  0.0,
1103  "g");
1104  nLostHitsTIDVsPhiH_ = ibook.bookProfile("nLostHitsTIDVsPhi",
1105  "Number of Lost Hits in TID Vs Phi",
1106  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1107  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1108  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1109  0.0,
1110  0.0,
1111  "g");
1112 
1114  "nLostHitsPixVsIteration", "Number of Lost Hits in Pixel Vs Iteration", 47, -0.5, 46.5, 0.0, 0.0, "g");
1116  "nLostHitsPixBVsIteration", "Number of Lost Hits in Pixel Barrel Vs Iteration", 47, -0.5, 46.5, 0.0, 0.0, "g");
1118  "nLostHitsPixEVsIteration", "Number of Lost Hits in Pixel Endcap Vs Iteration", 47, -0.5, 46.5, 0.0, 0.0, "g");
1120  "nLostHitsStripVsIteration", "Number of Lost Hits in SiStrip Vs Iteration", 47, -0.5, 46.5, 0.0, 0.0, "g");
1122  "nLostHitsTIBVsIteration", "Number of Lost Hits in TIB Vs Iteration", 47, -0.5, 46.5, 0.0, 0.0, "g");
1124  "nLostHitsTOBVsIteration", "Number of Lost Hits in TOB Vs Iteration", 47, -0.5, 46.5, 0.0, 0.0, "g");
1126  "nLostHitsTECVsIteration", "Number of Lost Hits in TEC Vs Iteration", 47, -0.5, 46.5, 0.0, 0.0, "g");
1128  "nLostHitsTIDVsIteration", "Number of Lost Hits in TID Vs Iteration", 47, -0.5, 46.5, 0.0, 0.0, "g");
1129 
1130  trackChi2oNDFVsEtaH_ = ibook.bookProfile("trackChi2oNDFVsEta",
1131  "chi2/ndof of Tracks Vs Eta",
1132  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1133  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1134  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1135  0.0,
1136  0.0,
1137  "g");
1138  trackChi2oNDFVsPhiH_ = ibook.bookProfile("trackChi2oNDFVsPhi",
1139  "chi2/ndof of Tracks Vs Phi",
1140  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1141  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1142  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1143  0.0,
1144  0.0,
1145  "g");
1146 
1147  trackChi2probVsEtaH_ = ibook.bookProfile("trackChi2probVsEta",
1148  "chi2 probability of Tracks Vs Eta",
1149  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1150  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1151  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1152  0.0,
1153  0.0,
1154  "g");
1155  trackChi2probVsPhiH_ = ibook.bookProfile("trackChi2probVsPhi",
1156  "chi2 probability of Tracks Vs Phi",
1157  TrackEtaHistoPar_.getParameter<int32_t>("Xbins"),
1158  TrackEtaHistoPar_.getParameter<double>("Xmin"),
1159  TrackEtaHistoPar_.getParameter<double>("Xmax"),
1160  0.0,
1161  0.0,
1162  "g");
1163 
1165  ibook.bookProfile("trackIperr3dVsEta", "ip3d error of Tracks Vs Eta", 80, -4., 4., 0.0, 0.0, "g");
1166 
1167  trackSip2dVsEtaH_ = ibook.bookProfile("trackSip2dVsEta", "sip2d of Tracks Vs Eta", 80, -4., 4., 0.0, 0.0, "g");
1168 
1170  ibook.book2D("trackIperr3dVsEta2D", "ip3d error of Tracks Vs Eta 2d", 80, -4., 4., 100, 0., 5.);
1172  ibook.book2D("trackIperr3dVsChi2prob2D", "ip3d error of Tracks Vs chi2prob 2d", 50, 0., 1., 100, 0., 5.);
1173  trackSip2dVsEta2DH_ = ibook.book2D("trackSip2dVsEta2D", "sip2d of Tracks Vs Eta 2d", 80, -4., 4., 200, -10., 10.);
1175  ibook.book2D("trackSip2dVsChi2prob2D", "sip2d of Tracks Vs chi2prob 2d", 50, 0., 1., 200, -10., 10.);
1176 
1177  // On and off-track cluster properties
1178  hOnTrkClusChargeThinH_ = ibook.book1D("hOnTrkClusChargeThin", "On-track Cluster Charge (Thin Sensor)", 100, 0, 1000);
1179  hOnTrkClusWidthThinH_ = ibook.book1D("hOnTrkClusWidthThin", "On-track Cluster Width (Thin Sensor)", 20, -0.5, 19.5);
1181  ibook.book1D("hOnTrkClusChargeThick", "On-track Cluster Charge (Thick Sensor)", 100, 0, 1000);
1183  ibook.book1D("hOnTrkClusWidthThick", "On-track Cluster Width (Thick Sensor)", 20, -0.5, 19.5);
1184 
1186  ibook.book1D("hOffTrkClusChargeThin", "Off-track Cluster Charge (Thin Sensor)", 100, 0, 1000);
1188  ibook.book1D("hOffTrkClusWidthThin", "Off-track Cluster Width (Thin Sensor)", 20, -0.5, 19.5);
1190  ibook.book1D("hOffTrkClusChargeThick", "Off-track Cluster Charge (Thick Sensor)", 100, 0, 1000);
1192  ibook.book1D("hOffTrkClusWidthThick", "Off-track Cluster Width (Thick Sensor)", 20, -0.5, 19.5);
1193 }
1195  if (verbose_)
1196  edm::LogInfo("StandaloneTrackMonitor") << "Begin StandaloneTrackMonitor" << std::endl;
1197 
1198  nevt++;
1199 
1200  // Get event setup (to get global transformation)
1201  const TrackerGeometry& tkGeom = (*tkGeom_);
1202 
1203  // Primary vertex collection
1205  iEvent.getByToken(vertexToken_, vertexColl);
1206  if (!vertexColl.isValid()) {
1207  edm::LogError("DqmTrackStudy") << "Error! Failed to get reco::Vertex Collection, " << vertexTag_;
1208  }
1209  if (vertexColl->empty()) {
1210  edm::LogError("StandalonaTrackMonitor") << "No good vertex in the event!!" << std::endl;
1211  return;
1212  }
1213  const reco::Vertex& pv = (*vertexColl)[0];
1214 
1215  // Beam spot
1217  iEvent.getByToken(bsToken_, beamSpot);
1218  if (!beamSpot.isValid())
1219  edm::LogError("StandalonaTrackMonitor") << "Beamspot for input tag: " << bsTag_ << " not found!!";
1220 
1221  // Track collection
1223  iEvent.getByToken(trackToken_, tracks);
1224  if (!tracks.isValid())
1225  edm::LogError("StandalonaTrackMonitor") << "TrackCollection for input tag: " << trackTag_ << " not found!!";
1226 
1227  // Access PU information
1228  double wfac = 1.0; // for data
1229  if (!iEvent.isRealData()) {
1231  iEvent.getByToken(puSummaryToken_, PupInfo);
1232 
1233  if (verbose_)
1234  edm::LogInfo("StandaloneTrackMonitor") << "nPUColl = " << PupInfo->size();
1235  if (PupInfo.isValid()) {
1236  for (auto const& v : *PupInfo) {
1237  int bx = v.getBunchCrossing();
1238  if (bunchCrossingH_)
1240  if (bx == 0) {
1241  if (nPUH_)
1242  nPUH_->Fill(v.getPU_NumInteractions());
1243  int ntrueInt = v.getTrueNumInteractions();
1244  int nVertex = (vertexColl.isValid() ? vertexColl->size() : 0);
1245  if (trueNIntH_)
1246  trueNIntH_->Fill(ntrueInt);
1247  if (doPUCorrection_) {
1248  if (nVertex > -1 && nVertex < int(vpu_.size()))
1249  wfac = vpu_.at(nVertex);
1250  else
1251  wfac = 0.0;
1252  }
1253  }
1254  }
1255  } else
1256  edm::LogError("StandalonaTrackMonitor") << "PUSummary for input tag: " << puSummaryTag_ << " not found!!";
1257  if (doTrackCorrection_) {
1258  int ntrack = 0;
1259  for (auto const& track : *tracks) {
1261  continue;
1262  ++ntrack;
1263  }
1264  if (ntrack > -1 && ntrack < int(vtrack_.size()))
1265  wfac = vtrack_.at(ntrack);
1266  else
1267  wfac = 0.0;
1268  }
1269  }
1270  if (verbose_)
1271  edm::LogInfo("StandaloneTrackMonitor") << "PU reweight factor = " << wfac;
1272 
1273  if (haveAllHistograms_) {
1274  int nvtx = (vertexColl.isValid() ? vertexColl->size() : 0);
1275  nVertexH_->Fill(nvtx, wfac);
1276  nVtxH_->Fill(nvtx);
1277  }
1278 
1279  // Get MVA and quality mask collections
1280  int ntracks = 0;
1281 
1282  if (tracks.isValid()) {
1283  if (verbose_)
1284  edm::LogInfo("StandaloneTrackMonitor") << "Total # of Tracks: " << tracks->size();
1286 
1287  std::vector<TLorentzVector> list;
1288 
1289  for (auto const& track : *tracks) {
1290  if (!track.quality(quality))
1291  continue;
1292  ++ntracks;
1293 
1294  double eta = track.eta();
1295  double theta = track.theta();
1296  double phi = track.phi();
1297  double pt = track.pt();
1298 
1299  const reco::HitPattern& hitp = track.hitPattern();
1300  double nAllHits = hitp.numberOfAllHits(reco::HitPattern::TRACK_HITS);
1301  double nAllTrackerHits = hitp.numberOfAllTrackerHits(reco::HitPattern::TRACK_HITS);
1302 
1303  double trackdeltaR = std::numeric_limits<double>::max();
1304  ;
1305 
1306  TLorentzVector track1;
1307  track1.SetPtEtaPhiM(track.pt(), track.eta(), track.phi(), 0.);
1308  for (auto const& TRACK : *tracks) {
1309  if (&track == &TRACK)
1310  continue;
1311  TLorentzVector track2;
1312  track2.SetPtEtaPhiM(TRACK.pt(), TRACK.eta(), TRACK.phi(), 0.);
1313  if (track1.DeltaR(track2) < trackdeltaR)
1314  trackdeltaR = track1.DeltaR(track2);
1315  }
1316 
1317  list.push_back(track1);
1318 
1319  double nValidTrackerHits = hitp.numberOfValidTrackerHits();
1320  double nValidPixelHits = hitp.numberOfValidPixelHits();
1321  double nValidPixelBHits = hitp.numberOfValidPixelBarrelHits();
1322  double nValidPixelEHits = hitp.numberOfValidPixelEndcapHits();
1323  double nValidStripHits = hitp.numberOfValidStripHits();
1324  double nValidTIBHits = hitp.numberOfValidStripTIBHits();
1325  double nValidTOBHits = hitp.numberOfValidStripTOBHits();
1326  double nValidTIDHits = hitp.numberOfValidStripTIDHits();
1327  double nValidTECHits = hitp.numberOfValidStripTECHits();
1328 
1329  int missingInnerHit = hitp.numberOfAllHits(reco::HitPattern::MISSING_INNER_HITS);
1330  int missingOuterHit = hitp.numberOfAllHits(reco::HitPattern::MISSING_OUTER_HITS);
1331 
1332  nValidHitsVspTH_->Fill(pt, nValidTrackerHits);
1333  nValidHitsVsEtaH_->Fill(eta, nValidTrackerHits);
1334  nValidHitsVsCosThetaH_->Fill(std::cos(theta), nValidTrackerHits);
1335  nValidHitsVsPhiH_->Fill(phi, nValidTrackerHits);
1336  nValidHitsVsnVtxH_->Fill(vertexColl->size(), nValidTrackerHits);
1337 
1338  nValidHitsPixVsEtaH_->Fill(eta, nValidPixelHits);
1339  nValidHitsPixBVsEtaH_->Fill(eta, nValidPixelBHits);
1340  nValidHitsPixEVsEtaH_->Fill(eta, nValidPixelEHits);
1341  nValidHitsStripVsEtaH_->Fill(eta, nValidStripHits);
1342  nValidHitsTIBVsEtaH_->Fill(eta, nValidTIBHits);
1343  nValidHitsTOBVsEtaH_->Fill(eta, nValidTOBHits);
1344  nValidHitsTECVsEtaH_->Fill(eta, nValidTECHits);
1345  nValidHitsTIDVsEtaH_->Fill(eta, nValidTIDHits);
1346 
1347  nValidHitsPixVsPhiH_->Fill(phi, nValidPixelHits);
1348  nValidHitsPixBVsPhiH_->Fill(phi, nValidPixelBHits);
1349  nValidHitsPixEVsPhiH_->Fill(phi, nValidPixelEHits);
1350  nValidHitsStripVsPhiH_->Fill(phi, nValidStripHits);
1351  nValidHitsTIBVsPhiH_->Fill(phi, nValidTIBHits);
1352  nValidHitsTOBVsPhiH_->Fill(phi, nValidTOBHits);
1353  nValidHitsTECVsPhiH_->Fill(phi, nValidTECHits);
1354  nValidHitsTIDVsPhiH_->Fill(phi, nValidTIDHits);
1355 
1356  int nLostHits = track.numberOfLostHits();
1357  int nMissingExpectedInnerHits = hitp.numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS);
1358  int nMissingExpectedOuterHits = hitp.numberOfLostHits(reco::HitPattern::MISSING_OUTER_HITS);
1359  int nLostTrackerHits = hitp.numberOfLostTrackerHits(reco::HitPattern::TRACK_HITS);
1360  int nLostPixHits = hitp.numberOfLostPixelHits(reco::HitPattern::TRACK_HITS);
1363  int nLostStripHits = hitp.numberOfLostStripHits(reco::HitPattern::TRACK_HITS);
1364  int nLostStripTIBHits = hitp.numberOfLostStripTIBHits(reco::HitPattern::TRACK_HITS);
1365  int nLostStripTIDHits = hitp.numberOfLostStripTIDHits(reco::HitPattern::TRACK_HITS);
1366  int nLostStripTOBHits = hitp.numberOfLostStripTOBHits(reco::HitPattern::TRACK_HITS);
1367  int nLostStripTECHits = hitp.numberOfLostStripTECHits(reco::HitPattern::TRACK_HITS);
1368  int nIteration = track.originalAlgo();
1369 
1370  nLostHitsVspTH_->Fill(pt, nLostTrackerHits);
1371  nLostHitsVsEtaH_->Fill(eta, nLostTrackerHits);
1372  nLostHitsVsCosThetaH_->Fill(std::cos(theta), nLostTrackerHits);
1373  nLostHitsVsPhiH_->Fill(phi, nLostTrackerHits);
1374  nLostHitsVsIterationH_->Fill(nIteration, nLostTrackerHits);
1375 
1376  nLostHitsPixVsEtaH_->Fill(eta, nLostPixHits);
1377  nLostHitsPixBVsEtaH_->Fill(eta, nLostPixBHits);
1378  nLostHitsPixEVsEtaH_->Fill(eta, nLostPixEHits);
1379  nLostHitsStripVsEtaH_->Fill(eta, nLostStripHits);
1380  nLostHitsTIBVsEtaH_->Fill(eta, nLostStripTIBHits);
1381  nLostHitsTOBVsEtaH_->Fill(eta, nLostStripTOBHits);
1382  nLostHitsTECVsEtaH_->Fill(eta, nLostStripTECHits);
1383  nLostHitsTIDVsEtaH_->Fill(eta, nLostStripTIDHits);
1384 
1385  nLostHitsPixVsPhiH_->Fill(phi, nLostPixHits);
1386  nLostHitsPixBVsPhiH_->Fill(phi, nLostPixBHits);
1387  nLostHitsPixEVsPhiH_->Fill(phi, nLostPixEHits);
1388  nLostHitsStripVsPhiH_->Fill(phi, nLostStripHits);
1389  nLostHitsTIBVsPhiH_->Fill(phi, nLostStripTIBHits);
1390  nLostHitsTOBVsPhiH_->Fill(phi, nLostStripTOBHits);
1391  nLostHitsTECVsPhiH_->Fill(phi, nLostStripTECHits);
1392  nLostHitsTIDVsPhiH_->Fill(phi, nLostStripTIDHits);
1393 
1394  nLostHitsPixVsIterationH_->Fill(nIteration, nLostPixHits);
1395  nLostHitsPixBVsIterationH_->Fill(nIteration, nLostPixBHits);
1396  nLostHitsPixEVsIterationH_->Fill(nIteration, nLostPixEHits);
1397  nLostHitsStripVsIterationH_->Fill(nIteration, nLostStripHits);
1398  nLostHitsTIBVsIterationH_->Fill(nIteration, nLostStripTIBHits);
1399  nLostHitsTOBVsIterationH_->Fill(nIteration, nLostStripTOBHits);
1400  nLostHitsTECVsIterationH_->Fill(nIteration, nLostStripTECHits);
1401  nLostHitsTIDVsIterationH_->Fill(nIteration, nLostStripTIDHits);
1402 
1403  if (abs(eta) <= 1.4) {
1404  nMissingInnerHitBH_->Fill(missingInnerHit, wfac);
1405  nMissingOuterHitBH_->Fill(missingOuterHit, wfac);
1406  } else {
1407  nMissingInnerHitEH_->Fill(missingInnerHit, wfac);
1408  nMissingOuterHitEH_->Fill(missingOuterHit, wfac);
1409  }
1410 
1411  for (int i = 0; i < hitp.numberOfAllHits(reco::HitPattern::TRACK_HITS); i++) {
1412  uint32_t hit = hitp.getHitPattern(reco::HitPattern::TRACK_HITS, i);
1413  if (hitp.missingHitFilter(hit)) {
1414  double losthitBylayer = -1.0;
1415  double losthitBylayerPix = -1.0;
1416  double losthitBylayerStrip = -1.0;
1417  int layer = hitp.getLayer(hit);
1418  if (hitp.pixelBarrelHitFilter(hit)) {
1419  losthitBylayer = layer;
1420  losthitBylayerPix = layer;
1421  } else if (hitp.pixelEndcapHitFilter(hit)) {
1422  losthitBylayer = layer + 4;
1423  losthitBylayerPix = layer + 4;
1424  } else if (hitp.stripTIBHitFilter(hit)) {
1425  losthitBylayer = layer + 7;
1426  losthitBylayerStrip = layer;
1427  } else if (hitp.stripTIDHitFilter(hit)) {
1428  losthitBylayer = layer + 11;
1429  losthitBylayerStrip = layer + 4;
1430  } else if (hitp.stripTOBHitFilter(hit)) {
1431  losthitBylayer = layer + 14;
1432  losthitBylayerStrip = layer + 7;
1433  } else if (hitp.stripTECHitFilter(hit)) {
1434  losthitBylayer = layer + 20;
1435  losthitBylayerStrip = layer + 13;
1436  }
1437  if (losthitBylayer > -1)
1438  nLostHitByLayerH_->Fill(losthitBylayer, wfac);
1439  if (losthitBylayerPix > -1)
1440  nLostHitByLayerPixH_->Fill(losthitBylayerPix, wfac);
1441  if (losthitBylayerStrip > -1)
1442  nLostHitByLayerStripH_->Fill(losthitBylayerStrip, wfac);
1443  }
1444  }
1445 
1446  if (haveAllHistograms_) {
1447  double etaError = track.etaError();
1448  double thetaError = track.thetaError();
1449  double phiError = track.phiError();
1450  double p = track.p();
1451  double ptError = track.ptError();
1452  double qoverp = track.qoverp();
1453  double qoverpError = track.qoverpError();
1454  double charge = track.charge();
1455 
1456  double dxy = track.dxy(beamSpot->position());
1457  double dxyError = track.dxyError();
1458  double dz = track.dz(beamSpot->position());
1459  double dzError = track.dzError();
1460 
1461  double trkd0 = track.d0();
1462  double chi2 = track.chi2();
1463  double ndof = track.ndof();
1464  double chi2prob = TMath::Prob(track.chi2(), (int)track.ndof());
1465  double chi2oNDF = track.normalizedChi2();
1466  double vx = track.vx();
1467  double vy = track.vy();
1468  double vz = track.vz();
1470  unsigned int track_algo = track.algo();
1471  unsigned int track_origalgo = track.originalAlgo();
1472  // stopping source
1473  int ssmax = trackStoppingSourceH_->getNbinsX();
1474  double stop = track.stopReason() > ssmax ? double(ssmax - 1) : static_cast<double>(track.stopReason());
1475  double distanceOfClosestApproachToPV = track.dxy(pv.position());
1476  double xPointOfClosestApproachwrtPV = track.vx() - pv.position().x();
1477  double yPointOfClosestApproachwrtPV = track.vy() - pv.position().y();
1478  double positionZ0 = track.dz(pv.position());
1479 
1480  reco::TransientTrack transTrack = iSetup.get<TransientTrackRecord>().get(transTrackToken_).build(track);
1481 
1482  double ip3dToPV = 0, iperr3dToPV = 0, sip3dToPV = 0, sip2dToPV = 0;
1483  GlobalVector dir(track.px(), track.py(), track.pz());
1484  std::pair<bool, Measurement1D> ip3d = IPTools::signedImpactParameter3D(transTrack, dir, pv);
1485  std::pair<bool, Measurement1D> ip2d = IPTools::signedTransverseImpactParameter(transTrack, dir, pv);
1486  if (ip3d.first) {
1487  sip3dToPV = ip3d.second.value() / ip3d.second.error();
1488  ip3dToPV = ip3d.second.value();
1489  iperr3dToPV = ip3d.second.error();
1490  }
1491 
1492  double ip3dToBS = 0, iperr3dToBS = 0, sip3dToBS = 0, sip2dToBS = 0;
1493  reco::Vertex beamspotvertex((*beamSpot).position(), (*beamSpot).covariance3D());
1494  std::pair<bool, Measurement1D> ip3dbs = IPTools::signedImpactParameter3D(transTrack, dir, beamspotvertex);
1495  std::pair<bool, Measurement1D> ip2dbs =
1496  IPTools::signedTransverseImpactParameter(transTrack, dir, beamspotvertex);
1497  if (ip3dbs.first) {
1498  sip3dToBS = ip3dbs.second.value() / ip3dbs.second.error();
1499  ip3dToBS = ip3dbs.second.value();
1500  iperr3dToBS = ip3dbs.second.error();
1501  }
1502 
1503  double ip2dToPV = 0, iperr2dToPV = 0;
1504  if (ip2d.first) {
1505  ip2dToPV = ip2d.second.value();
1506  iperr2dToPV = ip2d.second.error();
1507  sip2dToPV = ip2d.second.value() / ip2d.second.error();
1508  }
1509 
1510  double ip2dToBS = 0, iperr2dToBS = 0;
1511  if (ip2dbs.first) {
1512  ip2dToBS = ip2dbs.second.value();
1513  iperr2dToBS = ip2dbs.second.error();
1514  sip2dToBS = ip2d.second.value() / ip2d.second.error();
1515  }
1516 
1517  if (ip2d.first)
1518  sip2dToPV = ip2d.second.value() / ip2d.second.error();
1519  double sipDxyToPV = track.dxy(pv.position()) / track.dxyError();
1520  double sipDzToPV = track.dz(pv.position()) / track.dzError();
1521 
1522  // Fill the histograms
1523  trackDeltaRwrtClosestTrack_->Fill(trackdeltaR, wfac);
1524  trackEtaH_->Fill(eta, wfac);
1525  trackEtaerrH_->Fill(etaError, wfac);
1527  trackThetaerrH_->Fill(thetaError, wfac);
1528  trackPhiH_->Fill(phi, wfac);
1529  trackPhierrH_->Fill(phiError, wfac);
1530  trackPH_->Fill(p, wfac);
1531  trackPtH_->Fill(pt, wfac);
1532  trackPt_ZoomH_->Fill(pt, wfac);
1533  trackPterrH_->Fill(ptError, wfac);
1534  trackqOverpH_->Fill(qoverp, wfac);
1535  trackqOverperrH_->Fill(qoverpError, wfac);
1536  trackChargeH_->Fill(charge, wfac);
1537  trackChi2H_->Fill(chi2, wfac);
1538  trackChi2ProbH_->Fill(chi2prob, wfac);
1539  trackChi2oNDFH_->Fill(chi2oNDF, wfac);
1540  trackd0H_->Fill(trkd0, wfac);
1541  tracknDOFH_->Fill(ndof, wfac);
1542  trackChi2bynDOFH_->Fill(chi2 / ndof, wfac);
1543  trackalgoH_->Fill(track_algo, wfac);
1544  trackorigalgoH_->Fill(track_origalgo, wfac);
1545  trackStoppingSourceH_->Fill(stop, wfac);
1546  trackChi2oNDFVsEtaH_->Fill(eta, chi2oNDF);
1547  trackChi2oNDFVsPhiH_->Fill(phi, chi2oNDF);
1548  trackChi2probVsEtaH_->Fill(eta, chi2prob);
1549  trackChi2probVsPhiH_->Fill(phi, chi2prob);
1550 
1551  nlostHitsH_->Fill(nLostHits, wfac);
1552  nMissingExpectedInnerHitsH_->Fill(nMissingExpectedInnerHits, wfac);
1553  nMissingExpectedOuterHitsH_->Fill(nMissingExpectedOuterHits, wfac);
1554  nlostTrackerHitsH_->Fill(nLostTrackerHits, wfac);
1555 
1556  beamSpotXYposH_->Fill(dxy, wfac);
1557  beamSpotXYposerrH_->Fill(dxyError, wfac);
1558  beamSpotZposH_->Fill(dz, wfac);
1559  beamSpotZposerrH_->Fill(dzError, wfac);
1560 
1561  vertexXposH_->Fill(vx, wfac);
1562  vertexYposH_->Fill(vy, wfac);
1563  vertexZposH_->Fill(vz, wfac);
1564 
1565  int nPixBarrel = 0, nPixEndcap = 0, nStripTIB = 0, nStripTOB = 0, nStripTEC = 0, nStripTID = 0;
1566  for (auto it = track.recHitsBegin(); it != track.recHitsEnd(); ++it) {
1567  const TrackingRecHit& hit = (**it);
1568  if (hit.isValid()) {
1569  if (hit.geographicalId().det() == DetId::Tracker) {
1570  int subdetId = hit.geographicalId().subdetId();
1571  if (subdetId == PixelSubdetector::PixelBarrel)
1572  ++nPixBarrel;
1573  else if (subdetId == PixelSubdetector::PixelEndcap)
1574  ++nPixEndcap;
1575  else if (subdetId == StripSubdetector::TIB)
1576  ++nStripTIB;
1577  else if (subdetId == StripSubdetector::TOB)
1578  ++nStripTOB;
1579  else if (subdetId == StripSubdetector::TEC)
1580  ++nStripTEC;
1581  else if (subdetId == StripSubdetector::TID)
1582  ++nStripTID;
1583 
1584  // Find on-track clusters
1585  processHit(hit, iSetup, tkGeom, wfac);
1586  }
1587  }
1588  }
1589  if (verbose_)
1590  edm::LogInfo("StandaloneTrackMonitor")
1591  << " >>> HITs: nPixBarrel: " << nPixBarrel << " nPixEndcap: " << nPixEndcap << " nStripTIB: " << nStripTIB
1592  << " nStripTOB: " << nStripTOB << " nStripTEC: " << nStripTEC << " nStripTID: " << nStripTID;
1593  if (haveAllHistograms_) {
1594  nPixBarrelH_->Fill(nPixBarrel, wfac);
1595  nPixEndcapH_->Fill(nPixEndcap, wfac);
1596  nStripTIBH_->Fill(nStripTIB, wfac);
1597  nStripTOBH_->Fill(nStripTOB, wfac);
1598  nStripTECH_->Fill(nStripTEC, wfac);
1599  nStripTIDH_->Fill(nStripTID, wfac);
1600  }
1601 
1602  DistanceOfClosestApproachToPVH_->Fill(distanceOfClosestApproachToPV, wfac);
1603  DistanceOfClosestApproachToPVZoomedH_->Fill(distanceOfClosestApproachToPV, wfac);
1604  DistanceOfClosestApproachToPVVsPhiH_->Fill(phi, distanceOfClosestApproachToPV);
1605  xPointOfClosestApproachVsZ0wrtPVH_->Fill(positionZ0, xPointOfClosestApproachwrtPV);
1606  yPointOfClosestApproachVsZ0wrtPVH_->Fill(positionZ0, yPointOfClosestApproachwrtPV);
1607 
1608  ip3dToPVH_->Fill(ip3dToPV, wfac);
1609  iperr3dToPVH_->Fill(iperr3dToPV, wfac);
1610  ip3dToBSH_->Fill(ip3dToBS, wfac);
1611  iperr3dToBSH_->Fill(iperr3dToBS, wfac);
1612  ip2dToPVH_->Fill(ip2dToPV, wfac);
1613  iperr2dToPVH_->Fill(iperr2dToPV, wfac);
1614  iperr2dToPVWtH_->Fill(iperr2dToPV, wfac);
1615  ip2dToBSH_->Fill(ip2dToBS, wfac);
1616  iperr2dToBSH_->Fill(iperr2dToBS, wfac);
1617 
1618  iperr3dToPVWtH_->Fill(iperr3dToPV, wfac);
1619  sip3dToPVH_->Fill(sip3dToPV, wfac);
1620  sip2dToPVH_->Fill(sip2dToPV, wfac);
1621  sip3dToBSH_->Fill(sip3dToBS, wfac);
1622  sip2dToBSH_->Fill(sip2dToBS, wfac);
1623  sip2dToPVWtH_->Fill(sip2dToPV, wfac);
1624  sipDxyToPVH_->Fill(sipDxyToPV, wfac);
1625  sipDzToPVH_->Fill(sipDzToPV, wfac);
1626 
1627  trackIperr3dVsEta2DH_->Fill(eta, iperr3dToPV, wfac);
1628  trackSip2dVsEta2DH_->Fill(eta, sip2dToPV, wfac);
1629  trackIperr3dVsChi2prob2DH_->Fill(chi2prob, iperr3dToPV, wfac);
1630  trackSip2dVsChi2prob2DH_->Fill(chi2prob, sip2dToPV, wfac);
1631 
1632  trackIperr3dVsEtaH_->Fill(eta, iperr3dToPV);
1633  trackSip2dVsEtaH_->Fill(eta, sip2dToPV);
1634 
1635  double trackerLayersWithMeasurement = hitp.trackerLayersWithMeasurement();
1636  double pixelLayersWithMeasurement = hitp.pixelLayersWithMeasurement();
1637  double pixelBLayersWithMeasurement = hitp.pixelBarrelLayersWithMeasurement();
1638  double pixelELayersWithMeasurement = hitp.pixelEndcapLayersWithMeasurement();
1639  double stripLayersWithMeasurement = hitp.stripLayersWithMeasurement();
1640  double stripTIBLayersWithMeasurement = hitp.stripTIBLayersWithMeasurement();
1641  double stripTOBLayersWithMeasurement = hitp.stripTOBLayersWithMeasurement();
1642  double stripTIDLayersWithMeasurement = hitp.stripTIDLayersWithMeasurement();
1643  double stripTECLayersWithMeasurement = hitp.stripTECLayersWithMeasurement();
1644 
1645  trkLayerwithMeasurementH_->Fill(trackerLayersWithMeasurement, wfac);
1646  pixelLayerwithMeasurementH_->Fill(pixelLayersWithMeasurement, wfac);
1647  pixelBLayerwithMeasurementH_->Fill(pixelBLayersWithMeasurement, wfac);
1648  pixelELayerwithMeasurementH_->Fill(pixelELayersWithMeasurement, wfac);
1649  stripLayerwithMeasurementH_->Fill(stripLayersWithMeasurement, wfac);
1650  stripTIBLayerwithMeasurementH_->Fill(stripTIBLayersWithMeasurement, wfac);
1651  stripTOBLayerwithMeasurementH_->Fill(stripTOBLayersWithMeasurement, wfac);
1652  stripTIDLayerwithMeasurementH_->Fill(stripTIDLayersWithMeasurement, wfac);
1653  stripTECLayerwithMeasurementH_->Fill(stripTECLayersWithMeasurement, wfac);
1654 
1655  nallHitsH_->Fill(nAllHits, wfac);
1656  ntrackerHitsH_->Fill(nAllTrackerHits, wfac);
1657  nvalidTrackerHitsH_->Fill(nValidTrackerHits, wfac);
1658  nvalidPixelHitsH_->Fill(nValidPixelHits, wfac);
1659  nvalidPixelBHitsH_->Fill(nValidPixelBHits, wfac);
1660  nvalidPixelEHitsH_->Fill(nValidPixelEHits, wfac);
1661  nvalidStripHitsH_->Fill(nValidStripHits, wfac);
1662  nvalidTIBHitsH_->Fill(nValidTIBHits, wfac);
1663  nvalidTOBHitsH_->Fill(nValidTOBHits, wfac);
1664  nvalidTIDHitsH_->Fill(nValidTIDHits, wfac);
1665  nvalidTECHitsH_->Fill(nValidTECHits, wfac);
1666 
1667  nlostTrackerHitsH_->Fill(nLostTrackerHits, wfac);
1668  nlostPixelHitsH_->Fill(nLostPixHits, wfac);
1669  nlostPixelBHitsH_->Fill(nLostPixBHits, wfac);
1670  nlostPixelEHitsH_->Fill(nLostPixEHits, wfac);
1671  nlostStripHitsH_->Fill(nLostStripHits, wfac);
1672  nlostTIBHitsH_->Fill(nLostStripTIBHits, wfac);
1673  nlostTOBHitsH_->Fill(nLostStripTOBHits, wfac);
1674  nlostTIDHitsH_->Fill(nLostStripTIDHits, wfac);
1675  nlostTECHitsH_->Fill(nLostStripTECHits, wfac);
1676  }
1677 
1678  if (list.size() >= 2) {
1679  Zpt_->Fill((list[0] + list[1]).Pt(), wfac);
1680  ZInvMass_->Fill((list[0] + list[1]).Mag(), wfac);
1681  }
1682  }
1683  } else {
1684  edm::LogError("StandaloneTrackMonitor") << "Error! Failed to get reco::Track collection, " << trackTag_;
1685  }
1686 
1687  if (haveAllHistograms_) {
1688  nTracksH_->Fill(ntracks, wfac);
1690  iEvent.getByToken(jetsToken_, jetsColl);
1691  nJet_->Fill(jetsColl->size());
1692 
1693  for (auto const& jet : *jetsColl) {
1694  Jet_pt_->Fill(jet.pt(), wfac);
1695  Jet_eta_->Fill(jet.eta(), wfac);
1696  Jet_energy_->Fill(jet.energy(), wfac);
1697  Jet_chargedMultiplicity_->Fill(jet.chargedHadronMultiplicity(), wfac);
1698  }
1699  }
1700 
1701  // off track cluster properties
1702  processClusters(iEvent, iSetup, tkGeom, wfac);
1703 
1704  if (verbose_)
1705  edm::LogInfo("StandaloneTrackMonitor") << "Ends StandaloneTrackMonitor successfully";
1706 }
1708  edm::EventSetup const& iSetup,
1709  const TrackerGeometry& tkGeom,
1710  double wfac) {
1711  // SiStripClusters
1713  iEvent.getByToken(clusterToken_, clusterHandle);
1714 
1715  if (clusterHandle.isValid()) {
1716  // Loop on Dets
1717  for (edmNew::DetSetVector<SiStripCluster>::const_iterator dsvit = clusterHandle->begin();
1718  dsvit != clusterHandle->end();
1719  ++dsvit) {
1720  uint32_t detId = dsvit->id();
1721  std::map<uint32_t, std::set<const SiStripCluster*> >::iterator jt = clusterMap_.find(detId);
1722  bool detid_found = (jt != clusterMap_.end()) ? true : false;
1723 
1724  // Loop on Clusters
1725  for (edmNew::DetSet<SiStripCluster>::const_iterator clusit = dsvit->begin(); clusit != dsvit->end(); ++clusit) {
1726  if (detid_found) {
1727  std::set<const SiStripCluster*>& s = jt->second;
1728  if (s.find(&*clusit) != s.end())
1729  continue;
1730  }
1731 
1733  float charge = siStripClusterInfo_.charge();
1734  float width = siStripClusterInfo_.width();
1735 
1736  const GeomDetUnit* detUnit = tkGeom.idToDetUnit(detId);
1737  float thickness = detUnit->surface().bounds().thickness(); // unit cm
1738  if (thickness > 0.035) {
1741  } else {
1744  }
1745  }
1746  }
1747  } else {
1748  edm::LogError("StandaloneTrackMonitor") << "ClusterCollection " << clusterTag_ << " not valid!!" << std::endl;
1749  }
1750 }
1752  edm::EventSetup const& iSetup,
1753  const TrackerGeometry& tkGeom,
1754  double wfac) {
1755  uint32_t detid = recHit.geographicalId();
1756  const GeomDetUnit* detUnit = tkGeom.idToDetUnit(detid);
1757  float thickness = detUnit->surface().bounds().thickness(); // unit cm
1758 
1759  auto const& thit = static_cast<BaseTrackerRecHit const&>(recHit);
1760  if (!thit.isValid())
1761  return;
1762 
1763  auto const& clus = thit.firstClusterRef();
1764  if (!clus.isValid())
1765  return;
1766  if (!clus.isStrip())
1767  return;
1768 
1769  if (thit.isMatched()) {
1770  const SiStripMatchedRecHit2D& matchedHit = dynamic_cast<const SiStripMatchedRecHit2D&>(recHit);
1771 
1772  auto& clusterM = matchedHit.monoCluster();
1773  siStripClusterInfo_.setCluster(clusterM, detid);
1774 
1775  if (thickness > 0.035) {
1778  } else {
1781  }
1782  addClusterToMap(detid, &clusterM);
1783 
1784  auto& clusterS = matchedHit.stereoCluster();
1785 
1786  siStripClusterInfo_.setCluster(clusterS, detid);
1787  if (thickness > 0.035) {
1790  } else {
1793  }
1794  addClusterToMap(detid, &clusterS);
1795  } else {
1796  auto& cluster = clus.stripCluster();
1797  siStripClusterInfo_.setCluster(cluster, detid);
1798  if (thickness > 0.035) {
1801  } else {
1804  }
1805 
1806  addClusterToMap(detid, &cluster);
1807  }
1808 }
1809 void StandaloneTrackMonitor::addClusterToMap(uint32_t detid, const SiStripCluster* cluster) {
1810  std::map<uint32_t, std::set<const SiStripCluster*> >::iterator it = clusterMap_.find(detid);
1811  if (it == clusterMap_.end()) {
1812  std::set<const SiStripCluster*> s;
1813  s.insert(cluster);
1814  clusterMap_.insert(std::pair<uint32_t, std::set<const SiStripCluster*> >(detid, s));
1815  } else {
1816  std::set<const SiStripCluster*>& s = it->second;
1817  s.insert(cluster);
1818  }
1819 }
1821 // Define this as a plug-in
MonitorElement * nValidHitsPixEVsPhiH_
MonitorElement * pixelLayerwithMeasurementH_
int numberOfLostTrackerHits(HitCategory category) const
Definition: HitPattern.h:893
const TrackerGeometry * tkGeom_
MonitorElement * nLostHitByLayerPixH_
MonitorElement * nLostHitsPixBVsIterationH_
int numberOfValidPixelHits() const
Definition: HitPattern.h:831
MonitorElement * hOnTrkClusChargeThickH_
const edm::InputTag trackTag_
static constexpr auto TEC
MonitorElement * nValidHitsPixBVsPhiH_
static bool stripTECHitFilter(uint16_t pattern)
Definition: HitPattern.h:632
static uint32_t getLayer(uint16_t pattern)
Definition: HitPattern.h:721
edm::EDGetTokenT< edm::View< reco::Track > > mvaTrackToken_
MonitorElement * nLostHitsPixEVsIterationH_
MonitorElement * trackDeltaRwrtClosestTrack_
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
int numberOfLostHits(HitCategory category) const
Definition: HitPattern.h:891
MonitorElement * hOnTrkClusChargeThinH_
MonitorElement * stripTOBLayerwithMeasurementH_
void setCluster(const SiStripCluster &cluster, int detId)
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
const edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusterToken_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
MonitorElement * trackStoppingSourceH_
MonitorElement * trackChi2oNDFVsEtaH_
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
StandaloneTrackMonitor(const edm::ParameterSet &)
MonitorElement * trackChi2probVsPhiH_
TrackQuality
track quality
Definition: TrackBase.h:150
MonitorElement * hOffTrkClusWidthThickH_
const edm::EDGetTokenT< reco::TrackCollection > trackToken_
MonitorElement * nMissingOuterHitEH_
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:534
MonitorElement * nLostHitsTIBVsIterationH_
int numberOfAllHits(HitCategory category) const
Definition: HitPattern.h:804
const edm::EDGetTokenT< std::vector< PileupSummaryInfo > > puSummaryToken_
std::pair< bool, Measurement1D > signedTransverseImpactParameter(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:57
int stripLayersWithMeasurement() const
Definition: HitPattern.h:1005
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
MonitorElement * stripLayerwithMeasurementH_
int numberOfValidStripTIBHits() const
Definition: HitPattern.h:847
std::pair< bool, Measurement1D > signedImpactParameter3D(const reco::TransientTrack &track, const GlobalVector &direction, const reco::Vertex &vertex)
Definition: IPTools.cc:81
int stripTIDLayersWithMeasurement() const
Definition: HitPattern.cc:608
int pixelEndcapLayersWithMeasurement() const
Definition: HitPattern.cc:587
int numberOfValidStripTECHits() const
Definition: HitPattern.h:859
MonitorElement * nValidHitsTOBVsPhiH_
int numberOfLostPixelBarrelHits(HitCategory category) const
Definition: HitPattern.h:917
MonitorElement * yPointOfClosestApproachVsZ0wrtPVH_
data_type const * const_iterator
Definition: DetSetNew.h:31
Log< level::Error, false > LogError
std::vector< Vertex > VertexCollection
Definition: Vertex.h:31
MonitorElement * hOnTrkClusWidthThinH_
static bool missingHitFilter(uint16_t pattern)
Definition: HitPattern.h:798
int numberOfAllTrackerHits(HitCategory category) const
Definition: HitPattern.h:809
MonitorElement * trackChi2probVsEtaH_
MonitorElement * Jet_chargedMultiplicity_
static bool pixelBarrelHitFilter(uint16_t pattern)
Definition: HitPattern.h:590
const edm::ESGetToken< TransientTrackBuilder, TransientTrackRecord > transTrackToken_
MonitorElement * hOffTrkClusWidthThinH_
const std::string puScaleFactorFile_
MonitorElement * hOffTrkClusChargeThinH_
int stripTECLayersWithMeasurement() const
Definition: HitPattern.cc:628
std::vector< unsigned char > QualityMaskCollection
SiStripClusterInfo siStripClusterInfo_
MonitorElement * nLostHitsTECVsIterationH_
const edm::InputTag mvaTrackTag_
static bool pixelEndcapHitFilter(uint16_t pattern)
Definition: HitPattern.h:599
int numberOfLostStripHits(HitCategory category) const
Definition: HitPattern.h:925
int numberOfValidStripHits() const
Definition: HitPattern.h:843
const edm::InputTag jetsTag_
MonitorElement * trackIperr3dVsEtaH_
MonitorElement * nMissingExpectedInnerHitsH_
MonitorElement * nLostHitsTOBVsIterationH_
const edm::InputTag vertexTag_
void Fill(long long x)
virtual float thickness() const =0
MonitorElement * nLostHitsTIDVsEtaH_
int numberOfLostStripTECHits(HitCategory category) const
Definition: HitPattern.h:941
string quality
const edm::ParameterSet TrackPtHistoPar_
MonitorElement * nLostHitsPixEVsEtaH_
MonitorElement * nMissingInnerHitEH_
int iEvent
Definition: GenABIO.cc:224
MonitorElement * nLostHitsTIBVsEtaH_
MonitorElement * nLostHitsTIDVsIterationH_
MonitorElement * nValidHitsPixVsEtaH_
MonitorElement * hOnTrkClusWidthThickH_
MonitorElement * stripTIBLayerwithMeasurementH_
MonitorElement * nValidHitsTIDVsEtaH_
MonitorElement * nValidHitsStripVsPhiH_
SiStripCluster const & monoCluster() const
MonitorElement * nValidHitsTECVsEtaH_
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:399
std::vector< MonitorElement * > trackMVAs
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
int numberOfValidPixelEndcapHits() const
Definition: HitPattern.h:839
MonitorElement * trackSip2dVsChi2prob2DH_
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
int numberOfLostPixelEndcapHits(HitCategory category) const
Definition: HitPattern.h:921
const edm::InputTag puSummaryTag_
MonitorElement * nValidHitsPixVsPhiH_
MonitorElement * DistanceOfClosestApproachToPVH_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int stripTOBLayersWithMeasurement() const
Definition: HitPattern.cc:618
T get() const
Definition: EventSetup.h:79
Transition
Definition: Transition.h:12
MonitorElement * nMissingOuterHitBH_
int numberOfValidStripTIDHits() const
Definition: HitPattern.h:851
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
MonitorElement * nValidHitsVsCosThetaH_
MonitorElement * nLostHitsTOBVsEtaH_
MonitorElement * pixelELayerwithMeasurementH_
static constexpr auto TOB
int numberOfLostStripTIDHits(HitCategory category) const
Definition: HitPattern.h:933
MonitorElement * nLostHitsTIDVsPhiH_
std::vector< MonitorElement * > trackMVAsVsPtProfile
std::vector< float > MVACollection
uint16_t getHitPattern(HitCategory category, int position) const
Definition: HitPattern.h:537
std::vector< MonitorElement * > trackMVAsHP
MonitorElement * trackIperr3dVsChi2prob2DH_
MonitorElement * stripTECLayerwithMeasurementH_
MonitorElement * trackIperr3dVsChi2probH_
int numberOfLostStripTOBHits(HitCategory category) const
Definition: HitPattern.h:937
MonitorElement * nLostHitsVsCosThetaH_
MonitorElement * nValidHitsTIBVsEtaH_
MonitorElement * hOffTrkClusChargeThickH_
Log< level::Info, false > LogInfo
const edm::InputTag tcProducer_
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
MonitorElement * nMissingExpectedOuterHitsH_
const edm::InputTag clusterTag_
MonitorElement * nvalidTrackerHitsH_
MonitorElement * nValidHitsPixBVsEtaH_
void addClusterToMap(uint32_t detid, const SiStripCluster *cluster)
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:126
MonitorElement * nLostHitsTECVsEtaH_
static constexpr auto TIB
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
MonitorElement * trackChi2oNDFVsPhiH_
MonitorElement * nLostHitsStripVsEtaH_
const edm::EDGetTokenT< reco::BeamSpot > bsToken_
MonitorElement * trkLayerwithMeasurementH_
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:212
MonitorElement * DistanceOfClosestApproachToPVZoomedH_
std::map< uint32_t, std::set< const SiStripCluster * > > clusterMap_
uint16_t width() const
SiStripCluster const & stereoCluster() const
MonitorElement * trackSip2dVsEta2DH_
static bool stripTOBHitFilter(uint16_t pattern)
Definition: HitPattern.h:628
MonitorElement * xPointOfClosestApproachVsZ0wrtPVH_
bool isValid() const
Definition: HandleBase.h:70
MonitorElement * nLostHitByLayerStripH_
int numberOfLostPixelHits(HitCategory category) const
Definition: HitPattern.h:913
static bool stripTIBHitFilter(uint16_t pattern)
Definition: HitPattern.h:620
std::vector< float > vtrack_
fixed size matrix
void dqmBeginRun(const edm::Run &iRun, const edm::EventSetup &iSetup) override
HLT enums.
const edm::ParameterSet TrackEtaHistoPar_
const edm::EDGetTokenT< reco::VertexCollection > vertexToken_
MonitorElement * nLostHitsPixVsPhiH_
void processClusters(edm::Event const &iEvent, edm::EventSetup const &iSetup, const TrackerGeometry &tkGeom, double wfac=1)
MonitorElement * nLostHitsVsIterationH_
MonitorElement * nValidHitsStripVsEtaH_
const edm::EDGetTokenT< std::vector< reco::PFJet > > jetsToken_
std::vector< MonitorElement * > trackMVAsHPVsEtaProfile
int numberOfValidPixelBarrelHits() const
Definition: HitPattern.h:835
MonitorElement * nValidHitsTOBVsEtaH_
MonitorElement * nLostHitsTIBVsPhiH_
int pixelBarrelLayersWithMeasurement() const
Definition: HitPattern.cc:576
MonitorElement * trackIperr3dVsEta2DH_
virtual int getNbinsX() const
get # of bins in X-axis
MonitorElement * nLostHitsPixBVsEtaH_
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:513
MonitorElement * nLostHitsStripVsIterationH_
uint16_t charge() const
#define ntrack
MonitorElement * pixelBLayerwithMeasurementH_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * nLostHitsTOBVsPhiH_
MonitorElement * nLostHitsTECVsPhiH_
static bool stripTIDHitFilter(uint16_t pattern)
Definition: HitPattern.h:624
void processHit(const TrackingRecHit &recHit, edm::EventSetup const &iSetup, const TrackerGeometry &tkGeom, double wfac=1)
std::vector< std::tuple< edm::EDGetTokenT< MVACollection >, edm::EDGetTokenT< QualityMaskCollection > > > mvaQualityTokens_
std::vector< MonitorElement * > trackMVAsVsEtaProfile
MonitorElement * nLostHitsPixBVsPhiH_
MonitorElement * nValidHitsTIBVsPhiH_
const std::string trackScaleFactorFile_
static constexpr auto TID
MonitorElement * nLostHitsPixVsIterationH_
Geom::Theta< T > theta() const
int numberOfValidTrackerHits() const
Definition: HitPattern.h:819
MonitorElement * stripTIDLayerwithMeasurementH_
MonitorElement * nValidHitsPixEVsEtaH_
MonitorElement * nLostHitsPixVsEtaH_
MonitorElement * nLostHitsPixEVsPhiH_
int numberOfLostStripTIBHits(HitCategory category) const
Definition: HitPattern.h:929
MonitorElement * DistanceOfClosestApproachToPVVsPhiH_
MonitorElement * nValidHitsTIDVsPhiH_
Definition: Run.h:45
MonitorElement * nValidHitsTECVsPhiH_
std::vector< MonitorElement * > trackMVAsHPVsPtProfile
MonitorElement * nLostHitsStripVsPhiH_
const std::vector< std::string > mvaProducers_
int numberOfValidStripTOBHits() const
Definition: HitPattern.h:855
int stripTIBLayersWithMeasurement() const
Definition: HitPattern.cc:598
MonitorElement * nMissingInnerHitBH_
const Bounds & bounds() const
Definition: Surface.h:87