CMS 3D CMS Logo

DMRChecker.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Alignment/OfflineValidation
4 // Class: DMRChecker
5 //
9 //
10 // Original Author: Marco Musich
11 // Created: Mon, 10 Aug 2020 15:45:00 GMT
12 //
13 //
14 
15 // ROOT includes
16 
17 #include <RtypesCore.h>
18 #include <TAxis.h>
19 #include <TCanvas.h>
20 #include <TColor.h>
21 #include <TH1.h>
22 #include <TH2.h>
23 #include <TLatex.h>
24 #include <TMath.h>
25 #include <TProfile.h>
26 #include <TString.h>
27 #include <TStyle.h>
28 #include <TVirtualPad.h>
29 
30 // STL includes
31 
32 #include <algorithm>
33 #include <array>
34 #include <cmath>
35 #include <cstdint>
36 #include <cstdlib>
37 #include <ctime>
38 #include <ext/alloc_traits.h>
39 #include <fmt/printf.h>
40 #include <iomanip>
41 #include <iostream>
42 #include <map>
43 #include <memory>
44 #include <string>
45 #include <type_traits>
46 #include <utility>
47 #include <vector>
48 #include <boost/range/adaptor/indexed.hpp>
49 
50 // user system includes
51 
118 
119 #define DEBUG 0
120 
121 using namespace std;
122 using namespace edm;
123 
126 constexpr float cmToUm = 10000.;
127 
133 namespace running {
134  struct Estimators {
138  int hitCount;
143  };
144 
145  using estimatorMap = std::map<uint32_t, running::Estimators>;
146 
147 } // namespace running
148 
149 class DMRChecker : public edm::one::EDAnalyzer<edm::one::SharedResources> {
150 public:
153  runInfoToken_(esConsumes<RunInfo, RunInfoRcd>()),
156  latencyToken_(esConsumes<SiStripLatency, SiStripLatencyRcd>()),
157  isCosmics_(pset.getParameter<bool>("isCosmics")) {
158  usesResource(TFileService::kSharedResource);
159 
160  TkTag_ = pset.getParameter<edm::InputTag>("TkTag");
161  theTrackCollectionToken = consumes<reco::TrackCollection>(TkTag_);
162 
163  TriggerResultsTag_ = pset.getParameter<edm::InputTag>("TriggerResultsTag");
164  hltresultsToken = consumes<edm::TriggerResults>(TriggerResultsTag_);
165 
166  BeamSpotTag_ = pset.getParameter<edm::InputTag>("BeamSpotTag");
167  beamspotToken = consumes<reco::BeamSpot>(BeamSpotTag_);
168 
169  VerticesTag_ = pset.getParameter<edm::InputTag>("VerticesTag");
170  vertexToken = consumes<reco::VertexCollection>(VerticesTag_);
171 
172  // initialize conventional Tracker maps
173 
174  pmap = std::make_unique<TrackerMap>("Pixel");
175  pmap->onlyPixel(true);
176  pmap->setTitle("Pixel Hit entries");
177  pmap->setPalette(1);
178 
179  tmap = std::make_unique<TrackerMap>("Strip");
180  tmap->setTitle("Strip Hit entries");
181  tmap->setPalette(1);
182 
183  // initialize Phase1 Pixel Maps
184 
185  pixelmap = std::make_unique<Phase1PixelMaps>("COLZ0 L");
186  pixelmap->bookBarrelHistograms("DMRsX", "Median Residuals x-direction", "Median Residuals");
187  pixelmap->bookForwardHistograms("DMRsX", "Median Residuals x-direction", "Median Residuals");
188 
189  pixelmap->bookBarrelHistograms("DMRsY", "Median Residuals y-direction", "Median Residuals");
190  pixelmap->bookForwardHistograms("DMRsY", "Median Residuals y-direction", "Median Residuals");
191 
192  // set no rescale
193  pixelmap->setNoRescale();
194  }
195 
197 
198  ~DMRChecker() override {}
199 
200  /*_______________________________________________________
201  //
202  // auxilliary method to retrieve certain histogram types
203  //_______________________________________________________
204  */
205  template <class OBJECT_TYPE>
206  int GetIndex(const std::vector<OBJECT_TYPE *> &vec, const std::string &name) {
207  for (const auto &iter : vec | boost::adaptors::indexed(0)) {
208  if (iter.value() && iter.value()->GetName() == name) {
209  return iter.index();
210  }
211  }
212  edm::LogError("Alignment") << "@SUB=DMRChecker::GetIndex"
213  << " could not find " << name;
214  return -1;
215  }
216 
217 private:
218  // tokens for the event setup
224 
226 
227  std::unique_ptr<Phase1PixelMaps> pixelmap;
228  std::unique_ptr<PixelRegions::PixelRegionContainers> PixelDMRS_x_ByLayer;
229  std::unique_ptr<PixelRegions::PixelRegionContainers> PixelDMRS_y_ByLayer;
230 
231  std::unique_ptr<TrackerMap> tmap;
232  std::unique_ptr<TrackerMap> pmap;
233 
234  TH1D *hchi2ndof;
235  TH1D *hNtrk;
236  TH1D *hNtrkZoom;
237  TH1I *htrkQuality;
238  TH1I *htrkAlgo;
240  TH1D *hP;
241  TH1D *hPPlus;
242  TH1D *hPMinus;
243  TH1D *hPt;
244  TH1D *hMinPt;
245  TH1D *hPtPlus;
246  TH1D *hPtMinus;
247  TH1D *hHit;
248  TH1D *hHit2D;
249 
254 
259 
264 
269 
274 
279 
286 
289 
292 
299 
302 
305 
306  TH1D *hHitPlus;
307  TH1D *hHitMinus;
308 
309  TH1D *hPhp;
310  TH1D *hPthp;
311  TH1D *hHithp;
312  TH1D *hEtahp;
313  TH1D *hPhihp;
314  TH1D *hchi2ndofhp;
315  TH1D *hchi2Probhp;
316 
317  TH1D *hCharge;
318  TH1D *hQoverP;
319  TH1D *hQoverPZoom;
320  TH1D *hEta;
321  TH1D *hEtaPlus;
322  TH1D *hEtaMinus;
323  TH1D *hPhi;
324  TH1D *hPhiBarrel;
329  TH1D *hPhiPlus;
330  TH1D *hPhiMinus;
331 
332  TH1D *hDeltaPhi;
333  TH1D *hDeltaEta;
334  TH1D *hDeltaR;
335 
336  TH1D *hvx;
337  TH1D *hvy;
338  TH1D *hvz;
339  TH1D *hd0;
340  TH1D *hdz;
341  TH1D *hdxy;
342 
343  TH2D *hd0PVvsphi;
344  TH2D *hd0PVvseta;
345  TH2D *hd0PVvspt;
346 
347  TH2D *hd0vsphi;
348  TH2D *hd0vseta;
349  TH2D *hd0vspt;
350 
351  TH1D *hnhpxb;
352  TH1D *hnhpxe;
353  TH1D *hnhTIB;
354  TH1D *hnhTID;
355  TH1D *hnhTOB;
356  TH1D *hnhTEC;
357 
359 
360  TProfile *pNBpixHitsVsVx;
361  TProfile *pNBpixHitsVsVy;
362  TProfile *pNBpixHitsVsVz;
363 
364  TH1D *hMultCand;
365 
366  TH1D *hdxyBS;
367  TH1D *hd0BS;
368  TH1D *hdzBS;
369  TH1D *hdxyPV;
370  TH1D *hd0PV;
371  TH1D *hdzPV;
372  TH1D *hrun;
373  TH1D *hlumi;
374 
375  std::vector<TH1 *> vTrackHistos_;
376  std::vector<TH1 *> vTrackProfiles_;
377  std::vector<TH1 *> vTrack2DHistos_;
378 
381 
382  TH1D *modeByRun_;
383  TH1D *fieldByRun_;
384 
386  TH1D *hitsByRun_;
387 
390 
393 
394  // Pixel
395 
396  TH1D *DMRBPixX_;
397  TH1D *DMRBPixY_;
398 
399  TH1D *DMRFPixX_;
400  TH1D *DMRFPixY_;
401 
402  TH1D *DRnRBPixX_;
403  TH1D *DRnRBPixY_;
404 
405  TH1D *DRnRFPixX_;
406  TH1D *DRnRFPixY_;
407 
408  // Strips
409 
410  TH1D *DMRTIB_;
411  TH1D *DMRTOB_;
412 
413  TH1D *DMRTID_;
414  TH1D *DMRTEC_;
415 
416  TH1D *DRnRTIB_;
417  TH1D *DRnRTOB_;
418 
419  TH1D *DRnRTID_;
420  TH1D *DRnRTEC_;
421 
422  // Split DMRs
423 
424  std::array<TH1D *, 2> DMRBPixXSplit_;
425  std::array<TH1D *, 2> DMRBPixYSplit_;
426 
427  std::array<TH1D *, 2> DMRFPixXSplit_;
428  std::array<TH1D *, 2> DMRFPixYSplit_;
429 
430  std::array<TH1D *, 2> DMRTIBSplit_;
431  std::array<TH1D *, 2> DMRTOBSplit_;
432 
433  // residuals
434 
435  std::map<unsigned int, TH1D *> barrelLayersResidualsX;
436  std::map<unsigned int, TH1D *> barrelLayersPullsX;
437  std::map<unsigned int, TH1D *> barrelLayersResidualsY;
438  std::map<unsigned int, TH1D *> barrelLayersPullsY;
439 
440  std::map<unsigned int, TH1D *> endcapDisksResidualsX;
441  std::map<unsigned int, TH1D *> endcapDisksPullsX;
442  std::map<unsigned int, TH1D *> endcapDisksResidualsY;
443  std::map<unsigned int, TH1D *> endcapDisksPullsY;
444 
445  int ievt;
446  int itrks;
447  int mode;
449 
451  const bool isCosmics_;
452 
457 
462 
463  std::map<std::string, std::pair<int, int> > triggerMap_;
464  std::map<int, std::pair<int, float> > conditionsMap_;
465  std::map<int, std::pair<int, int> > runInfoMap_;
466  std::map<int, std::array<int, 6> > runHitsMap_;
467 
468  std::map<int, float> timeMap_;
469 
470  // Pixel
471 
476 
477  // Strips
478 
483 
484  void analyze(const edm::Event &event, const edm::EventSetup &setup) override {
485  ievt++;
486 
488  event.getByToken(theTrackCollectionToken, trackCollection);
489 
490  // magnetic field setup
491  const MagneticField *magneticField_ = &setup.getData(magFieldToken_);
492  float B_ = magneticField_->inTesla(GlobalPoint(0, 0, 0)).mag();
493 
494  const RunInfo *summary = &setup.getData(runInfoToken_);
495  time_t start_time = summary->m_start_time_ll;
496  ctime(&start_time);
497  time_t end_time = summary->m_stop_time_ll;
498  ctime(&end_time);
499 
500  /*
501  float average_current = runInfo.product()->m_avg_current;
502  float uptimeInSeconds = runInfo.product()->m_run_intervall_micros;
503  edm::LogVerbatim("DMRChecker")<< " start_time " << start_time << "( " << summary->m_start_time_str <<" )"
504  << " end_time " << end_time << "( " << summary->m_stop_time_str <<" )" << std::endl;
505  */
506 
507  double seconds = difftime(end_time, start_time) / 1.0e+6; // convert from micros-seconds
508  //edm::LogVerbatim("DMRChecker")<<" diff: "<< seconds << "s" << std::endl;
509  timeMap_[event.run()] = seconds;
510 
511  // topology setup
512  const TrackerTopology *const tTopo = &setup.getData(topoToken_);
513 
514  const SiStripLatency *apvlat = &setup.getData(latencyToken_);
515  if (apvlat->singleReadOutMode() == 1) {
516  mode = 1; // peak mode
517  } else if (apvlat->singleReadOutMode() == 0) {
518  mode = -1; // deco mode
519  }
520 
521  conditionsMap_[event.run()].first = mode;
522  conditionsMap_[event.run()].second = B_;
523 
524  // geometry setup
525  const TrackerGeometry *theGeometry = &setup.getData(geomToken_);
526 
527  if (firstEvent_) {
528  if (theGeometry->isThere(GeomDetEnumerators::P2PXB) || theGeometry->isThere(GeomDetEnumerators::P2PXEC)) {
529  phase_ = SiPixelPI::phase::two;
530  } else if (theGeometry->isThere(GeomDetEnumerators::P1PXB) || theGeometry->isThere(GeomDetEnumerators::P1PXEC)) {
531  phase_ = SiPixelPI::phase::one;
532  } else {
533  phase_ = SiPixelPI::phase::zero;
534  }
535  firstEvent_ = false;
536  }
537 
538  GlobalPoint zeroPoint(0, 0, 0);
539  //edm::LogVerbatim("DMRChecker") << "event#" << ievt << " Event ID = "<< event.id()
541 
542  const reco::TrackCollection tC = *(trackCollection.product());
543  itrks += tC.size();
544 
545  runInfoMap_[event.run()].first += 1;
546  runInfoMap_[event.run()].second += tC.size();
547 
548  //edm::LogVerbatim("DMRChecker") << "Reconstructed "<< tC.size() << " tracks" << std::endl ;
549 
551  event.getByToken(hltresultsToken, hltresults);
552  if (hltresults.isValid()) {
553  const edm::TriggerNames &triggerNames_ = event.triggerNames(*hltresults);
554  int ntrigs = hltresults->size();
555 
556  for (int itrig = 0; itrig != ntrigs; ++itrig) {
557  const string &trigName = triggerNames_.triggerName(itrig);
558  bool accept = hltresults->accept(itrig);
559  if (accept == 1) {
560  // emd::LogVerbatim("DMRChecker") << trigName << " " << accept << " ,track size: " << tC.size() << endl;
561  triggerMap_[trigName].first += 1;
562  triggerMap_[trigName].second += tC.size();
563  }
564  }
565  }
566 
567  hrun->Fill(event.run());
568  hlumi->Fill(event.luminosityBlock());
569 
570  int nHighPurityTracks = 0;
571 
572  for (const auto &track : tC) {
573  auto const &residuals = track.extra()->residuals();
574 
575  unsigned int nHit2D = 0;
576  int h_index = 0;
577  for (trackingRecHit_iterator iHit = track.recHitsBegin(); iHit != track.recHitsEnd(); ++iHit, ++h_index) {
578  if (this->isHit2D(**iHit))
579  ++nHit2D;
580 
581  double resX = residuals.residualX(h_index);
582  double resY = residuals.residualY(h_index);
583  double pullX = residuals.pullX(h_index);
584  double pullY = residuals.pullY(h_index);
585 
586  const DetId &detId = (*iHit)->geographicalId();
587 
588  unsigned int subid = detId.subdetId();
589  uint32_t detid_db = detId.rawId();
590 
591  const GeomDet *geomDet(theGeometry->idToDet(detId));
592 
593  float uOrientation(-999.F), vOrientation(-999.F);
594  LocalPoint lPModule(0., 0., 0.), lUDirection(1., 0., 0.), lVDirection(0., 1., 0.), lWDirection(0., 0., 1.);
595 
596  // do all the transformations here
597  GlobalPoint gUDirection = geomDet->surface().toGlobal(lUDirection);
598  GlobalPoint gVDirection = geomDet->surface().toGlobal(lVDirection);
599  GlobalPoint gWDirection = geomDet->surface().toGlobal(lWDirection);
600  GlobalPoint gPModule = geomDet->surface().toGlobal(lPModule);
601 
602  if (!(*iHit)->detUnit())
603  continue; // is it a single physical module?
604 
605  if ((*iHit)->isValid() && (subid > PixelSubdetector::PixelEndcap)) {
606  tmap->fill(detid_db, 1);
607 
608  //LocalPoint lp = (*iHit)->localPosition();
609  //LocalError le = (*iHit)->localPositionError();
610 
611  // fill DMRs and DrNRs
612  if (subid == StripSubdetector::TIB) {
613  uOrientation = deltaPhi(gUDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
614  //vOrientation = gVDirection.z() - gPModule.z() >= 0 ? +1.F : -1.F; // not used for Strips
615 
616  // if the detid has never occcurred yet, set the local orientations
617  if (resDetailsTIB_.find(detid_db) == resDetailsTIB_.end()) {
618  resDetailsTIB_[detid_db].rDirection = gWDirection.perp() - gPModule.perp() >= 0 ? +1 : -1;
619  resDetailsTIB_[detid_db].zDirection = gVDirection.z() - gPModule.z() >= 0 ? +1 : -1;
620  resDetailsTIB_[detid_db].rOrZDirection = resDetailsTIB_[detid_db].rDirection; // barrel (split in r)
621  }
622 
623  hTIBResXPrime->Fill(uOrientation * resX * 10000);
624  hTIBResXPull->Fill(pullX);
625 
626  // update residuals
627  this->updateOnlineMomenta(resDetailsTIB_, detid_db, uOrientation * resX * cmToUm, pullX);
628 
629  } else if (subid == StripSubdetector::TOB) {
630  uOrientation = deltaPhi(gUDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
631  //vOrientation = gVDirection.z() - gPModule.z() >= 0 ? +1.F : -1.F; // not used for Strips
632 
633  hTOBResXPrime->Fill(uOrientation * resX * 10000);
634  hTOBResXPull->Fill(pullX);
635 
636  // if the detid has never occcurred yet, set the local orientations
637  if (resDetailsTOB_.find(detid_db) == resDetailsTOB_.end()) {
638  resDetailsTOB_[detid_db].rDirection = gWDirection.perp() - gPModule.perp() >= 0 ? +1 : -1;
639  resDetailsTOB_[detid_db].zDirection = gVDirection.z() - gPModule.z() >= 0 ? +1 : -1;
640  resDetailsTOB_[detid_db].rOrZDirection = resDetailsTOB_[detid_db].rDirection; // barrel (split in r)
641  }
642 
643  // update residuals
644  this->updateOnlineMomenta(resDetailsTOB_, detid_db, uOrientation * resX * cmToUm, pullX);
645 
646  } else if (subid == StripSubdetector::TID) {
647  uOrientation = deltaPhi(gUDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
648  //vOrientation = gVDirection.perp() - gPModule.perp() >= 0. ? +1.F : -1.F; // not used for Strips
649 
650  hTIDResXPrime->Fill(uOrientation * resX * 10000);
651  hTIDResXPull->Fill(pullX);
652 
653  // update residuals
654  this->updateOnlineMomenta(resDetailsTID_, detid_db, uOrientation * resX * cmToUm, pullX);
655 
656  } else if (subid == StripSubdetector::TEC) {
657  uOrientation = deltaPhi(gUDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
658  //vOrientation = gVDirection.perp() - gPModule.perp() >= 0. ? +1.F : -1.F; // not used for Strips
659 
660  hTECResXPrime->Fill(uOrientation * resX * 10000);
661  hTECResXPull->Fill(pullX);
662 
663  // update residuals
664  this->updateOnlineMomenta(resDetailsTEC_, detid_db, uOrientation * resX * cmToUm, pullX);
665  }
666  }
667 
668  const SiPixelRecHit *pixhit = dynamic_cast<const SiPixelRecHit *>(*iHit);
669 
670  if (pixhit) {
671  if (pixhit->isValid()) {
672  if (phase_ == SiPixelPI::phase::zero) {
673  pmap->fill(detid_db, 1);
674  }
675 
676  LocalPoint lp = (*iHit)->localPosition();
677  //LocalError le = (*iHit)->localPositionError();
678  GlobalPoint GP = geomDet->surface().toGlobal(lp);
679 
680  if ((subid == PixelSubdetector::PixelBarrel) || (subid == PixelSubdetector::PixelEndcap)) {
681  // 1 = PXB, 2 = PXF
682  if (subid == PixelSubdetector::PixelBarrel) {
683  int layer_num = tTopo->pxbLayer(detid_db);
684 
685  uOrientation = deltaPhi(gUDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
686  vOrientation = gVDirection.z() - gPModule.z() >= 0 ? +1.F : -1.F;
687 
688  // if the detid has never occcurred yet, set the local orientations
689  if (resDetailsBPixX_.find(detid_db) == resDetailsBPixX_.end()) {
690  resDetailsBPixX_[detid_db].rDirection = gWDirection.perp() - gPModule.perp() >= 0 ? +1 : -1;
691  resDetailsBPixX_[detid_db].zDirection = gVDirection.z() - gPModule.z() >= 0 ? +1 : -1;
692  resDetailsBPixX_[detid_db].rOrZDirection =
693  resDetailsBPixX_[detid_db].rDirection; // barrel (split in r)
694  }
695 
696  // if the detid has never occcurred yet, set the local orientations
697  if (resDetailsBPixY_.find(detid_db) == resDetailsBPixY_.end()) {
698  resDetailsBPixY_[detid_db].rDirection = gWDirection.perp() - gPModule.perp() >= 0 ? +1 : -1;
699  resDetailsBPixY_[detid_db].zDirection = gVDirection.z() - gPModule.z() >= 0 ? +1 : -1;
700  resDetailsBPixY_[detid_db].rOrZDirection =
701  resDetailsBPixY_[detid_db].rDirection; // barrel (split in r)
702  }
703 
704  hHitCountVsThetaBPix->Fill(GP.theta());
705  hHitCountVsPhiBPix->Fill(GP.phi());
706 
707  hHitCountVsZBPix->Fill(GP.z());
708  hHitCountVsXBPix->Fill(GP.x());
709  hHitCountVsYBPix->Fill(GP.y());
710 
711  hBPixResXPrime->Fill(uOrientation * resX * cmToUm);
712  hBPixResYPrime->Fill(vOrientation * resY * cmToUm);
713  hBPixResXPull->Fill(pullX);
714  hBPixResYPull->Fill(pullY);
715 
716  //edm::LogVerbatim("DMRChecker")<<"layer: "<<layer_num<<std::endl;
717 
718  // update residuals X
719  this->updateOnlineMomenta(resDetailsBPixX_, detid_db, uOrientation * resX * cmToUm, pullX);
720 
721  // update residuals Y
722  this->updateOnlineMomenta(resDetailsBPixY_, detid_db, vOrientation * resY * cmToUm, pullY);
723 
724  fillByIndex(barrelLayersResidualsX, layer_num, uOrientation * resX * cmToUm);
725  fillByIndex(barrelLayersPullsX, layer_num, pullX);
726  fillByIndex(barrelLayersResidualsY, layer_num, vOrientation * resY * cmToUm);
727  fillByIndex(barrelLayersPullsY, layer_num, pullY);
728 
729  } else if (subid == PixelSubdetector::PixelEndcap) {
730  uOrientation = gUDirection.perp() - gPModule.perp() >= 0 ? +1.F : -1.F;
731  vOrientation = deltaPhi(gVDirection.barePhi(), gPModule.barePhi()) >= 0. ? +1.F : -1.F;
732 
733  int side_num = tTopo->pxfSide(detid_db);
734  int disk_num = tTopo->pxfDisk(detid_db);
735 
736  int packedTopo = disk_num + 3 * (side_num - 1);
737 
738  //edm::LogVerbatim("DMRChecker")<<"side: "<< side_num <<" disk: " << disk_num << " packedTopo: " << packedTopo <<" GP.z(): "<<GP.z()<<std::endl;
739 
740  hHitCountVsThetaFPix->Fill(GP.theta());
741  hHitCountVsPhiFPix->Fill(GP.phi());
742 
743  hHitCountVsZFPix->Fill(GP.z());
744  hHitCountVsXFPix->Fill(GP.x());
745  hHitCountVsYFPix->Fill(GP.y());
746 
747  hFPixResXPrime->Fill(uOrientation * resX * cmToUm);
748  hFPixResYPrime->Fill(vOrientation * resY * cmToUm);
749  hFPixResXPull->Fill(pullX);
750  hFPixResYPull->Fill(pullY);
751 
752  fillByIndex(endcapDisksResidualsX, packedTopo, uOrientation * resX * cmToUm);
753  fillByIndex(endcapDisksPullsX, packedTopo, pullX);
754  fillByIndex(endcapDisksResidualsY, packedTopo, vOrientation * resY * cmToUm);
755  fillByIndex(endcapDisksPullsY, packedTopo, pullY);
756 
757  // if the detid has never occcurred yet, set the local orientations
758  if (resDetailsFPixX_.find(detid_db) == resDetailsFPixX_.end()) {
759  resDetailsFPixX_[detid_db].rDirection = gUDirection.perp() - gPModule.perp() >= 0 ? +1 : -1;
760  resDetailsFPixX_[detid_db].zDirection = gWDirection.z() - gPModule.z() >= 0 ? +1 : -1;
761  resDetailsFPixX_[detid_db].rOrZDirection =
762  resDetailsFPixX_[detid_db].zDirection; // endcaps (split in z)
763  }
764 
765  // if the detid has never occcurred yet, set the local orientations
766  if (resDetailsFPixY_.find(detid_db) == resDetailsFPixY_.end()) {
767  resDetailsFPixY_[detid_db].rDirection = gUDirection.perp() - gPModule.perp() >= 0 ? +1 : -1;
768  resDetailsFPixY_[detid_db].zDirection = gWDirection.z() - gPModule.z() >= 0 ? +1 : -1;
769  resDetailsFPixY_[detid_db].rOrZDirection =
770  resDetailsFPixY_[detid_db].zDirection; // endcaps (split in z)
771  }
772 
773  // update residuals X
774  this->updateOnlineMomenta(resDetailsFPixX_, detid_db, uOrientation * resX * cmToUm, pullX);
775 
776  // update residuals Y
777  this->updateOnlineMomenta(resDetailsFPixY_, detid_db, vOrientation * resY * cmToUm, pullY);
778 
779  if (side_num == 1) {
780  hHitCountVsXFPixMinus->Fill(GP.x());
781  hHitCountVsYFPixMinus->Fill(GP.y());
782  hHitCountVsZFPixMinus->Fill(GP.z());
783  hHitCountVsThetaFPixMinus->Fill(GP.theta());
784  hHitCountVsPhiFPixMinus->Fill(GP.phi());
785 
786  hFPixZMinusResXPrime->Fill(uOrientation * resX * cmToUm);
787  hFPixZMinusResYPrime->Fill(vOrientation * resY * cmToUm);
788  hFPixZMinusResXPull->Fill(pullX);
789  hFPixZMinusResYPull->Fill(pullY);
790 
791  } else {
792  hHitCountVsXFPixPlus->Fill(GP.x());
793  hHitCountVsYFPixPlus->Fill(GP.y());
794  hHitCountVsZFPixPlus->Fill(GP.z());
795  hHitCountVsThetaFPixPlus->Fill(GP.theta());
796  hHitCountVsPhiFPixPlus->Fill(GP.phi());
797 
798  hFPixZPlusResXPrime->Fill(uOrientation * resX * cmToUm);
799  hFPixZPlusResYPrime->Fill(vOrientation * resY * cmToUm);
800  hFPixZPlusResXPull->Fill(pullX);
801  hFPixZPlusResYPull->Fill(pullY);
802  }
803  }
804  }
805  }
806  }
807  }
808 
809  hHit2D->Fill(nHit2D);
810  hHit->Fill(track.numberOfValidHits());
811  hnhpxb->Fill(track.hitPattern().numberOfValidPixelBarrelHits());
812  hnhpxe->Fill(track.hitPattern().numberOfValidPixelEndcapHits());
813  hnhTIB->Fill(track.hitPattern().numberOfValidStripTIBHits());
814  hnhTID->Fill(track.hitPattern().numberOfValidStripTIDHits());
815  hnhTOB->Fill(track.hitPattern().numberOfValidStripTOBHits());
816  hnhTEC->Fill(track.hitPattern().numberOfValidStripTECHits());
817 
818  runHitsMap_[event.run()][0] += track.hitPattern().numberOfValidPixelBarrelHits();
819  runHitsMap_[event.run()][1] += track.hitPattern().numberOfValidPixelEndcapHits();
820  runHitsMap_[event.run()][2] += track.hitPattern().numberOfValidStripTIBHits();
821  runHitsMap_[event.run()][3] += track.hitPattern().numberOfValidStripTIDHits();
822  runHitsMap_[event.run()][4] += track.hitPattern().numberOfValidStripTOBHits();
823  runHitsMap_[event.run()][5] += track.hitPattern().numberOfValidStripTECHits();
824 
825  // fill hit composition histogram
826  if (track.hitPattern().numberOfValidPixelBarrelHits() != 0) {
827  hHitComposition->Fill(0., track.hitPattern().numberOfValidPixelBarrelHits());
828 
829  pNBpixHitsVsVx->Fill(track.vx(), track.hitPattern().numberOfValidPixelBarrelHits());
830  pNBpixHitsVsVy->Fill(track.vy(), track.hitPattern().numberOfValidPixelBarrelHits());
831  pNBpixHitsVsVz->Fill(track.vz(), track.hitPattern().numberOfValidPixelBarrelHits());
832  }
833  if (track.hitPattern().numberOfValidPixelEndcapHits() != 0) {
834  hHitComposition->Fill(1., track.hitPattern().numberOfValidPixelEndcapHits());
835  }
836  if (track.hitPattern().numberOfValidStripTIBHits() != 0) {
837  hHitComposition->Fill(2., track.hitPattern().numberOfValidStripTIBHits());
838  }
839  if (track.hitPattern().numberOfValidStripTIDHits() != 0) {
840  hHitComposition->Fill(3., track.hitPattern().numberOfValidStripTIDHits());
841  }
842  if (track.hitPattern().numberOfValidStripTOBHits() != 0) {
843  hHitComposition->Fill(4., track.hitPattern().numberOfValidStripTOBHits());
844  }
845  if (track.hitPattern().numberOfValidStripTECHits() != 0) {
846  hHitComposition->Fill(5., track.hitPattern().numberOfValidStripTECHits());
847  }
848 
849  hCharge->Fill(track.charge());
850  hQoverP->Fill(track.qoverp());
851  hQoverPZoom->Fill(track.qoverp());
852  hPt->Fill(track.pt());
853  hP->Fill(track.p());
854  hchi2ndof->Fill(track.normalizedChi2());
855  hEta->Fill(track.eta());
856  hPhi->Fill(track.phi());
857 
858  if (fabs(track.eta()) < 0.8)
859  hPhiBarrel->Fill(track.phi());
860  if (track.eta() > 0.8 && track.eta() < 1.4)
861  hPhiOverlapPlus->Fill(track.phi());
862  if (track.eta() < -0.8 && track.eta() > -1.4)
863  hPhiOverlapMinus->Fill(track.phi());
864  if (track.eta() > 1.4)
865  hPhiEndcapPlus->Fill(track.phi());
866  if (track.eta() < -1.4)
867  hPhiEndcapMinus->Fill(track.phi());
868 
869  hd0->Fill(track.d0());
870  hdz->Fill(track.dz());
871  hdxy->Fill(track.dxy());
872  hvx->Fill(track.vx());
873  hvy->Fill(track.vy());
874  hvz->Fill(track.vz());
875 
876  htrkAlgo->Fill(track.algo());
877 
878  int myquality = -99;
879  if (track.quality(reco::TrackBase::undefQuality)) {
880  myquality = -1;
881  htrkQuality->Fill(myquality);
882  }
883  if (track.quality(reco::TrackBase::loose)) {
884  myquality = 0;
885  htrkQuality->Fill(myquality);
886  }
887  if (track.quality(reco::TrackBase::tight)) {
888  myquality = 1;
889  htrkQuality->Fill(myquality);
890  }
891  if (track.quality(reco::TrackBase::highPurity) && (!isCosmics_)) {
892  myquality = 2;
893  htrkQuality->Fill(myquality);
894  hPhp->Fill(track.p());
895  hPthp->Fill(track.pt());
896  hHithp->Fill(track.numberOfValidHits());
897  hEtahp->Fill(track.eta());
898  hPhihp->Fill(track.phi());
899  hchi2ndofhp->Fill(track.normalizedChi2());
900  hchi2Probhp->Fill(TMath::Prob(track.chi2(), track.ndof()));
901  nHighPurityTracks++;
902  }
903  if (track.quality(reco::TrackBase::confirmed)) {
904  myquality = 3;
905  htrkQuality->Fill(myquality);
906  }
907  if (track.quality(reco::TrackBase::goodIterative)) {
908  myquality = 4;
909  htrkQuality->Fill(myquality);
910  }
911 
912  // Fill 1D track histos
913  static const int etaindex = this->GetIndex(vTrackHistos_, "h_tracketa");
914  vTrackHistos_[etaindex]->Fill(track.eta());
915  static const int phiindex = this->GetIndex(vTrackHistos_, "h_trackphi");
916  vTrackHistos_[phiindex]->Fill(track.phi());
917  static const int numOfValidHitsindex = this->GetIndex(vTrackHistos_, "h_trackNumberOfValidHits");
918  vTrackHistos_[numOfValidHitsindex]->Fill(track.numberOfValidHits());
919  static const int numOfLostHitsindex = this->GetIndex(vTrackHistos_, "h_trackNumberOfLostHits");
920  vTrackHistos_[numOfLostHitsindex]->Fill(track.numberOfLostHits());
921 
922  GlobalPoint gPoint(track.vx(), track.vy(), track.vz());
923  double theLocalMagFieldInInverseGeV = magneticField_->inInverseGeV(gPoint).z();
924  double kappa = -track.charge() * theLocalMagFieldInInverseGeV / track.pt();
925 
926  static const int kappaindex = this->GetIndex(vTrackHistos_, "h_curvature");
927  vTrackHistos_[kappaindex]->Fill(kappa);
928  static const int kappaposindex = this->GetIndex(vTrackHistos_, "h_curvature_pos");
929  if (track.charge() > 0)
930  vTrackHistos_[kappaposindex]->Fill(fabs(kappa));
931  static const int kappanegindex = this->GetIndex(vTrackHistos_, "h_curvature_neg");
932  if (track.charge() < 0)
933  vTrackHistos_[kappanegindex]->Fill(fabs(kappa));
934 
935  double chi2Prob = TMath::Prob(track.chi2(), track.ndof());
936  double normchi2 = track.normalizedChi2();
937 
938  static const int normchi2index = this->GetIndex(vTrackHistos_, "h_normchi2");
939  vTrackHistos_[normchi2index]->Fill(normchi2);
940  static const int chi2index = this->GetIndex(vTrackHistos_, "h_chi2");
941  vTrackHistos_[chi2index]->Fill(track.chi2());
942  static const int chi2Probindex = this->GetIndex(vTrackHistos_, "h_chi2Prob");
943  vTrackHistos_[chi2Probindex]->Fill(chi2Prob);
944  static const int ptindex = this->GetIndex(vTrackHistos_, "h_pt");
945  static const int pt2index = this->GetIndex(vTrackHistos_, "h_ptrebin");
946  vTrackHistos_[ptindex]->Fill(track.pt());
947  vTrackHistos_[pt2index]->Fill(track.pt());
948  if (track.ptError() != 0.) {
949  static const int ptResolutionindex = this->GetIndex(vTrackHistos_, "h_ptResolution");
950  vTrackHistos_[ptResolutionindex]->Fill(track.ptError() / track.pt());
951  }
952  // Fill track profiles
953  static const int d0phiindex = this->GetIndex(vTrackProfiles_, "p_d0_vs_phi");
954  vTrackProfiles_[d0phiindex]->Fill(track.phi(), track.d0());
955  static const int dzphiindex = this->GetIndex(vTrackProfiles_, "p_dz_vs_phi");
956  vTrackProfiles_[dzphiindex]->Fill(track.phi(), track.dz());
957  static const int d0etaindex = this->GetIndex(vTrackProfiles_, "p_d0_vs_eta");
958  vTrackProfiles_[d0etaindex]->Fill(track.eta(), track.d0());
959  static const int dzetaindex = this->GetIndex(vTrackProfiles_, "p_dz_vs_eta");
960  vTrackProfiles_[dzetaindex]->Fill(track.eta(), track.dz());
961  static const int chiProbphiindex = this->GetIndex(vTrackProfiles_, "p_chi2Prob_vs_phi");
962  vTrackProfiles_[chiProbphiindex]->Fill(track.phi(), chi2Prob);
963  static const int chiProbabsd0index = this->GetIndex(vTrackProfiles_, "p_chi2Prob_vs_d0");
964  vTrackProfiles_[chiProbabsd0index]->Fill(fabs(track.d0()), chi2Prob);
965  static const int chiProbabsdzindex = this->GetIndex(vTrackProfiles_, "p_chi2Prob_vs_dz");
966  vTrackProfiles_[chiProbabsdzindex]->Fill(track.dz(), chi2Prob);
967  static const int chiphiindex = this->GetIndex(vTrackProfiles_, "p_chi2_vs_phi");
968  vTrackProfiles_[chiphiindex]->Fill(track.phi(), track.chi2());
969  static const int normchiphiindex = this->GetIndex(vTrackProfiles_, "p_normchi2_vs_phi");
970  vTrackProfiles_[normchiphiindex]->Fill(track.phi(), normchi2);
971  static const int chietaindex = this->GetIndex(vTrackProfiles_, "p_chi2_vs_eta");
972  vTrackProfiles_[chietaindex]->Fill(track.eta(), track.chi2());
973  static const int normchiptindex = this->GetIndex(vTrackProfiles_, "p_normchi2_vs_pt");
974  vTrackProfiles_[normchiptindex]->Fill(track.pt(), normchi2);
975  static const int normchipindex = this->GetIndex(vTrackProfiles_, "p_normchi2_vs_p");
976  vTrackProfiles_[normchipindex]->Fill(track.p(), normchi2);
977  static const int chiProbetaindex = this->GetIndex(vTrackProfiles_, "p_chi2Prob_vs_eta");
978  vTrackProfiles_[chiProbetaindex]->Fill(track.eta(), chi2Prob);
979  static const int normchietaindex = this->GetIndex(vTrackProfiles_, "p_normchi2_vs_eta");
980  vTrackProfiles_[normchietaindex]->Fill(track.eta(), normchi2);
981  static const int kappaphiindex = this->GetIndex(vTrackProfiles_, "p_kappa_vs_phi");
982  vTrackProfiles_[kappaphiindex]->Fill(track.phi(), kappa);
983  static const int kappaetaindex = this->GetIndex(vTrackProfiles_, "p_kappa_vs_eta");
984  vTrackProfiles_[kappaetaindex]->Fill(track.eta(), kappa);
985  static const int ptResphiindex = this->GetIndex(vTrackProfiles_, "p_ptResolution_vs_phi");
986  vTrackProfiles_[ptResphiindex]->Fill(track.phi(), track.ptError() / track.pt());
987  static const int ptResetaindex = this->GetIndex(vTrackProfiles_, "p_ptResolution_vs_eta");
988  vTrackProfiles_[ptResetaindex]->Fill(track.eta(), track.ptError() / track.pt());
989 
990  // Fill 2D track histos
991  static const int d0phiindex_2d = this->GetIndex(vTrack2DHistos_, "h2_d0_vs_phi");
992  vTrack2DHistos_[d0phiindex_2d]->Fill(track.phi(), track.d0());
993  static const int dzphiindex_2d = this->GetIndex(vTrack2DHistos_, "h2_dz_vs_phi");
994  vTrack2DHistos_[dzphiindex_2d]->Fill(track.phi(), track.dz());
995  static const int d0etaindex_2d = this->GetIndex(vTrack2DHistos_, "h2_d0_vs_eta");
996  vTrack2DHistos_[d0etaindex_2d]->Fill(track.eta(), track.d0());
997  static const int dzetaindex_2d = this->GetIndex(vTrack2DHistos_, "h2_dz_vs_eta");
998  vTrack2DHistos_[dzetaindex_2d]->Fill(track.eta(), track.dz());
999  static const int chiphiindex_2d = this->GetIndex(vTrack2DHistos_, "h2_chi2_vs_phi");
1000  vTrack2DHistos_[chiphiindex_2d]->Fill(track.phi(), track.chi2());
1001  static const int chiProbphiindex_2d = this->GetIndex(vTrack2DHistos_, "h2_chi2Prob_vs_phi");
1002  vTrack2DHistos_[chiProbphiindex_2d]->Fill(track.phi(), chi2Prob);
1003  static const int chiProbabsd0index_2d = this->GetIndex(vTrack2DHistos_, "h2_chi2Prob_vs_d0");
1004  vTrack2DHistos_[chiProbabsd0index_2d]->Fill(fabs(track.d0()), chi2Prob);
1005  static const int normchiphiindex_2d = this->GetIndex(vTrack2DHistos_, "h2_normchi2_vs_phi");
1006  vTrack2DHistos_[normchiphiindex_2d]->Fill(track.phi(), normchi2);
1007  static const int chietaindex_2d = this->GetIndex(vTrack2DHistos_, "h2_chi2_vs_eta");
1008  vTrack2DHistos_[chietaindex_2d]->Fill(track.eta(), track.chi2());
1009  static const int chiProbetaindex_2d = this->GetIndex(vTrack2DHistos_, "h2_chi2Prob_vs_eta");
1010  vTrack2DHistos_[chiProbetaindex_2d]->Fill(track.eta(), chi2Prob);
1011  static const int normchietaindex_2d = this->GetIndex(vTrack2DHistos_, "h2_normchi2_vs_eta");
1012  vTrack2DHistos_[normchietaindex_2d]->Fill(track.eta(), normchi2);
1013  static const int kappaphiindex_2d = this->GetIndex(vTrack2DHistos_, "h2_kappa_vs_phi");
1014  vTrack2DHistos_[kappaphiindex_2d]->Fill(track.phi(), kappa);
1015  static const int kappaetaindex_2d = this->GetIndex(vTrack2DHistos_, "h2_kappa_vs_eta");
1016  vTrack2DHistos_[kappaetaindex_2d]->Fill(track.eta(), kappa);
1017  static const int normchi2kappa_2d = this->GetIndex(vTrack2DHistos_, "h2_normchi2_vs_kappa");
1018  vTrack2DHistos_[normchi2kappa_2d]->Fill(normchi2, kappa);
1019 
1020  //edm::LogVerbatim("DMRChecker") << "filling histos"<<std::endl;
1021 
1022  //dxy with respect to the beamspot
1024  edm::Handle<reco::BeamSpot> beamSpotHandle;
1025  event.getByToken(beamspotToken, beamSpotHandle);
1026  if (beamSpotHandle.isValid()) {
1027  beamSpot = *beamSpotHandle;
1028  math::XYZPoint point(beamSpot.x0(), beamSpot.y0(), beamSpot.z0());
1029  double dxy = track.dxy(point);
1030  double dz = track.dz(point);
1031  hdxyBS->Fill(dxy);
1032  hd0BS->Fill(-dxy);
1033  hdzBS->Fill(dz);
1034  }
1035 
1036  //dxy with respect to the primary vertex
1037  reco::Vertex pvtx;
1040  event.getByLabel("offlinePrimaryVertices", vertexHandle);
1041  double mindxy = 100.;
1042  double dz = 100;
1043  if (vertexHandle.isValid()) {
1044  for (reco::VertexCollection::const_iterator pvtx = vertexHandle->begin(); pvtx != vertexHandle->end(); ++pvtx) {
1045  math::XYZPoint mypoint(pvtx->x(), pvtx->y(), pvtx->z());
1046  if (abs(mindxy) > abs(track.dxy(mypoint))) {
1047  mindxy = track.dxy(mypoint);
1048  dz = track.dz(mypoint);
1049  //edm::LogVerbatim("DMRChecker")<<"dxy: "<<mindxy<<"dz: "<<dz<<std::endl;
1050  }
1051  }
1052 
1053  hdxyPV->Fill(mindxy);
1054  hd0PV->Fill(-mindxy);
1055  hdzPV->Fill(dz);
1056 
1057  hd0PVvsphi->Fill(track.phi(), -mindxy);
1058  hd0PVvseta->Fill(track.eta(), -mindxy);
1059  hd0PVvspt->Fill(track.pt(), -mindxy);
1060 
1061  } else {
1062  hdxyPV->Fill(100);
1063  hd0PV->Fill(100);
1064  hdzPV->Fill(100);
1065  }
1066 
1067  // edm::LogVerbatim("DMRChecker")<<"end of track loop"<<std::endl;
1068  }
1069 
1070  // edm::LogVerbatim("DMRChecker")<<"end of analysis"<<std::endl;
1071 
1072  hNtrk->Fill(tC.size());
1073  hNtrkZoom->Fill(tC.size());
1074  hNhighPurity->Fill(nHighPurityTracks);
1075 
1076  // edm::LogVerbatim("DMRChecker")<<"end of analysis"<<std::endl;
1077  }
1078 
1079  void beginJob() override {
1080  if (DEBUG)
1081  edm::LogVerbatim("DMRChecker") << __LINE__ << endl;
1082 
1083  TH1D::SetDefaultSumw2(kTRUE);
1084 
1085  ievt = 0;
1086  itrks = 0;
1087 
1088  hrun = fs->make<TH1D>("h_run", "run", 100000, 230000, 240000);
1089  hlumi = fs->make<TH1D>("h_lumi", "lumi", 1000, 0, 1000);
1090 
1091  // clang-format off
1092 
1093  hchi2ndof = fs->make<TH1D>("h_chi2ndof", "chi2/ndf;#chi^{2}/ndf;tracks", 100, 0, 5.);
1094  hCharge = fs->make<TH1D>("h_charge", "charge;Charge of the track;tracks", 5, -2.5, 2.5);
1095  hNtrk = fs->make<TH1D>("h_Ntrk", "ntracks;Number of Tracks;events", 200, 0., 200.);
1096  hNtrkZoom = fs->make<TH1D>("h_NtrkZoom", "Number of tracks; number of tracks;events", 10, 0., 10.);
1097  hNhighPurity = fs->make<TH1D>("h_NhighPurity", "n. high purity tracks;Number of high purity tracks;events", 200, 0., 200.);
1098 
1099  int nAlgos = reco::TrackBase::algoSize;
1100  htrkAlgo = fs->make<TH1I>("h_trkAlgo", "tracking step;iterative tracking step;tracks", nAlgos, -0.5, nAlgos - 0.5);
1101  for (int nbin = 1; nbin <= htrkAlgo->GetNbinsX(); nbin++) {
1102  htrkAlgo->GetXaxis()->SetBinLabel(nbin, reco::TrackBase::algoNames[nbin - 1].c_str());
1103  }
1104 
1105  htrkQuality = fs->make<TH1I>("h_trkQuality", "track quality;track quality;tracks", 6, -1, 5);
1106  std::string qualities[7] = {"undef", "loose", "tight", "highPurity", "confirmed", "goodIterative"};
1107  for (int nbin = 1; nbin <= htrkQuality->GetNbinsX(); nbin++) {
1108  htrkQuality->GetXaxis()->SetBinLabel(nbin, qualities[nbin - 1].c_str());
1109  }
1110 
1111  hP = fs->make<TH1D>("h_P", "Momentum;track momentum [GeV];tracks", 100, 0., 100.);
1112  hQoverP = fs->make<TH1D>("h_qoverp", "Track q/p; track q/p [GeV^{-1}];tracks", 100, -1., 1.);
1113  hQoverPZoom = fs->make<TH1D>("h_qoverpZoom", "Track q/p; track q/p [GeV^{-1}];tracks", 100, -0.1, 0.1);
1114  hPt = fs->make<TH1D>("h_Pt", "Transverse Momentum;track p_{T} [GeV];tracks", 100, 0., 100.);
1115  hHit = fs->make<TH1D>("h_nHits", "Number of hits;track n. hits;tracks", 50, -0.5, 49.5);
1116  hHit2D = fs->make<TH1D>("h_nHit2D", "Number of 2D hits; number of 2D hits;tracks", 20, 0, 20);
1117 
1118  // Pixel
1119 
1120  hBPixResXPrime = fs->make<TH1D>("h_BPixResXPrime", "BPix track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1121  hFPixResXPrime = fs->make<TH1D>("h_FPixResXPrime", "FPix track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1122  hFPixZPlusResXPrime = fs->make<TH1D>("h_FPixZPlusResXPrime", "FPix (Z+) track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1123  hFPixZMinusResXPrime = fs->make<TH1D>("h_FPixZMinusResXPrime", "FPix (Z-) track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1124 
1125  hBPixResYPrime = fs->make<TH1D>("h_BPixResYPrime", "BPix track Y-residuals;res_{Y'} [#mum];hits", 100, -1000., 1000.);
1126  hFPixResYPrime = fs->make<TH1D>("h_FPixResYPrime", "FPix track Y-residuals;res_{Y'} [#mum];hits", 100, -1000., 1000.);
1127  hFPixZPlusResYPrime = fs->make<TH1D>("h_FPixZPlusResYPrime", "FPix (Z+) track Y-residuals;res_{Y'} [#mum];hits", 100, -1000., 1000.);
1128  hFPixZMinusResYPrime = fs->make<TH1D>("h_FPixZMinusResYPrime", "FPix (Z-) track Y-residuals;res_{Y'} [#mum];hits", 100, -1000., 1000.);
1129 
1130  hBPixResXPull = fs->make<TH1D>("h_BPixResXPull", "BPix track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1131  hFPixResXPull = fs->make<TH1D>("h_FPixResXPull", "FPix track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1132  hFPixZPlusResXPull = fs->make<TH1D>("h_FPixZPlusResXPull", "FPix (Z+) track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1133  hFPixZMinusResXPull = fs->make<TH1D>("h_FPixZMinusResXPull", "FPix (Z-) track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1134 
1135  hBPixResYPull = fs->make<TH1D>("h_BPixResYPull", "BPix track Y-pulls;res_{Y'}/#sigma_{res_{Y'}};hits", 100, -5., 5.);
1136  hFPixResYPull = fs->make<TH1D>("h_FPixResYPull", "FPix track Y-pulls;res_{Y'}/#sigma_{res_{Y'}};hits", 100, -5., 5.);
1137  hFPixZPlusResYPull = fs->make<TH1D>("h_FPixZPlusResYPull", "FPix (Z+) track Y-pulls;res_{Y'}/#sigma_{res_{Y'}};hits", 100, -5., 5.);
1138  hFPixZMinusResYPull = fs->make<TH1D>("h_FPixZMinusResYPull", "FPix (Z-) track Y-pulls;res_{Y'}/#sigma_{res_{Y'}};hits", 100, -5., 5.);
1139 
1140  // Strips
1141 
1142  hTIBResXPrime = fs->make<TH1D>("h_TIBResXPrime", "TIB track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1143  hTOBResXPrime = fs->make<TH1D>("h_TOBResXPrime", "TOB track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1144  hTIDResXPrime = fs->make<TH1D>("h_TIDResXPrime", "TID track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1145  hTECResXPrime = fs->make<TH1D>("h_TECResXPrime", "TEC track X-residuals;res_{X'} [#mum];hits", 100, -1000., 1000.);
1146 
1147  hTIBResXPull = fs->make<TH1D>("h_TIBResXPull", "TIB track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1148  hTOBResXPull = fs->make<TH1D>("h_TOBResXPull", "TOB track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1149  hTIDResXPull = fs->make<TH1D>("h_TIDResXPull", "TID track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1150  hTECResXPull = fs->make<TH1D>("h_TECResXPull", "TEC track X-pulls;res_{X'}/#sigma_{res_{X'}};hits", 100, -5., 5.);
1151 
1152  // hit counts
1153 
1154  hHitCountVsZBPix = fs->make<TH1D>("h_HitCountVsZBpix", "Number of BPix hits vs z;hit global z;hits", 60, -30, 30);
1155  hHitCountVsZFPix = fs->make<TH1D>("h_HitCountVsZFpix", "Number of FPix hits vs z;hit global z;hits", 100, -100, 100);
1156 
1157  hHitCountVsXBPix = fs->make<TH1D>("h_HitCountVsXBpix", "Number of BPix hits vs x;hit global x;hits", 20, -20, 20);
1158  hHitCountVsXFPix = fs->make<TH1D>("h_HitCountVsXFpix", "Number of FPix hits vs x;hit global x;hits", 20, -20, 20);
1159 
1160  hHitCountVsYBPix = fs->make<TH1D>("h_HitCountVsYBpix", "Number of BPix hits vs y;hit global y;hits", 20, -20, 20);
1161  hHitCountVsYFPix = fs->make<TH1D>("h_HitCountVsYFpix", "Number of FPix hits vs y;hit global y;hits", 20, -20, 20);
1162 
1163  hHitCountVsThetaBPix = fs->make<TH1D>("h_HitCountVsThetaBpix", "Number of BPix hits vs #theta;hit global #theta;hits", 20, 0., M_PI);
1164  hHitCountVsPhiBPix = fs->make<TH1D>("h_HitCountVsPhiBpix", "Number of BPix hits vs #phi;hit global #phi;hits", 20, -M_PI, M_PI);
1165 
1166  hHitCountVsThetaFPix = fs->make<TH1D>("h_HitCountVsThetaFpix", "Number of FPix hits vs #theta;hit global #theta;hits", 40, 0., M_PI);
1167  hHitCountVsPhiFPix = fs->make<TH1D>("h_HitCountVsPhiFpix", "Number of FPix hits vs #phi;hit global #phi;hits", 20, -M_PI, M_PI);
1168 
1169  // two sides of FPix
1170 
1171  hHitCountVsZFPixPlus = fs->make<TH1D>("h_HitCountVsZFPixPlus", "Number of FPix(Z+) hits vs z;hit global z;hits", 60, 15., 60);
1172  hHitCountVsZFPixMinus = fs->make<TH1D>("h_HitCountVsZFPixMinus", "Number of FPix(Z-) hits vs z;hit global z;hits", 100, -60., -15.);
1173 
1174  hHitCountVsXFPixPlus = fs->make<TH1D>("h_HitCountVsXFPixPlus", "Number of FPix(Z+) hits vs x;hit global x;hits", 20, -20, 20);
1175  hHitCountVsXFPixMinus = fs->make<TH1D>("h_HitCountVsXFPixMinus", "Number of FPix(Z-) hits vs x;hit global x;hits", 20, -20, 20);
1176 
1177  hHitCountVsYFPixPlus = fs->make<TH1D>("h_HitCountVsYFPixPlus", "Number of FPix(Z+) hits vs y;hit global y;hits", 20, -20, 20);
1178  hHitCountVsYFPixMinus = fs->make<TH1D>("h_HitCountVsYFPixMinus", "Number of FPix(Z-) hits vs y;hit global y;hits", 20, -20, 20);
1179 
1180  hHitCountVsThetaFPixPlus = fs->make<TH1D>("h_HitCountVsThetaFPixPlus", "Number of FPix(Z+) hits vs #theta;hit global #theta;hits", 20, 0., M_PI);
1181  hHitCountVsPhiFPixPlus = fs->make<TH1D>("h_HitCountVsPhiFPixPlus","Number of FPix(Z+) hits vs #phi;hit global #phi;hits",20,-M_PI,M_PI);
1182 
1183  hHitCountVsThetaFPixMinus = fs->make<TH1D>("h_HitCountVsThetaFPixMinus", "Number of FPix(Z+) hits vs #theta;hit global #theta;hits", 40, 0., M_PI);
1184  hHitCountVsPhiFPixMinus = fs->make<TH1D>("h_HitCountVsPhiFPixMinus","Number of FPix(Z+) hits vs #phi;hit global #phi;hits",20,-M_PI,M_PI);
1185 
1186  TFileDirectory ByLayerResiduals = fs->mkdir("ByLayerResiduals");
1187  barrelLayersResidualsX = bookResidualsHistogram(ByLayerResiduals, 4, "X", "Res", "BPix");
1188  endcapDisksResidualsX = bookResidualsHistogram(ByLayerResiduals, 6, "X", "Res", "FPix");
1189  barrelLayersResidualsY = bookResidualsHistogram(ByLayerResiduals, 4, "Y", "Res", "BPix");
1190  endcapDisksResidualsY = bookResidualsHistogram(ByLayerResiduals, 6, "Y", "Res", "FPix");
1191 
1192  TFileDirectory ByLayerPulls = fs->mkdir("ByLayerPulls");
1193  barrelLayersPullsX = bookResidualsHistogram(ByLayerPulls, 4, "X", "Pull", "BPix");
1194  endcapDisksPullsX = bookResidualsHistogram(ByLayerPulls, 6, "X", "Pull", "FPix");
1195  barrelLayersPullsY = bookResidualsHistogram(ByLayerPulls, 4, "Y", "Pull", "BPix");
1196  endcapDisksPullsY = bookResidualsHistogram(ByLayerPulls, 6, "Y", "Pull", "FPix");
1197 
1198  hEta = fs->make<TH1D>("h_Eta", "Track pseudorapidity; track #eta;tracks", 100, -M_PI, M_PI);
1199  hPhi = fs->make<TH1D>("h_Phi", "Track azimuth; track #phi;tracks", 100, -M_PI, M_PI);
1200 
1201  hPhiBarrel = fs->make<TH1D>("h_PhiBarrel", "hPhiBarrel (0<|#eta|<0.8);track #Phi;tracks", 100, -M_PI, M_PI);
1202  hPhiOverlapPlus = fs->make<TH1D>("h_PhiOverlapPlus", "hPhiOverlapPlus (0.8<#eta<1.4);track #phi;tracks", 100, -M_PI, M_PI);
1203  hPhiOverlapMinus = fs->make<TH1D>("h_PhiOverlapMinus", "hPhiOverlapMinus (-1.4<#eta<-0.8);track #phi;tracks", 100, -M_PI, M_PI);
1204  hPhiEndcapPlus = fs->make<TH1D>("h_PhiEndcapPlus", "hPhiEndcapPlus (#eta>1.4);track #phi;track", 100, -M_PI, M_PI);
1205  hPhiEndcapMinus = fs->make<TH1D>("h_PhiEndcapMinus", "hPhiEndcapMinus (#eta<1.4);track #phi;tracks", 100, -M_PI, M_PI);
1206 
1207  if (!isCosmics_) {
1208  hPhp = fs->make<TH1D>("h_P_hp", "Momentum (high purity);track momentum [GeV];tracks", 100, 0., 100.);
1209  hPthp = fs->make<TH1D>("h_Pt_hp", "Transverse Momentum (high purity);track p_{T} [GeV];tracks", 100, 0., 100.);
1210  hHithp = fs->make<TH1D>("h_nHit_hp", "Number of hits (high purity);track n. hits;tracks", 30, 0, 30);
1211  hEtahp = fs->make<TH1D>("h_Eta_hp", "Track pseudorapidity (high purity); track #eta;tracks", 100, -M_PI, M_PI);
1212  hPhihp = fs->make<TH1D>("h_Phi_hp", "Track azimuth (high purity); track #phi;tracks", 100, -M_PI, M_PI);
1213  hchi2ndofhp = fs->make<TH1D>("h_chi2ndof_hp", "chi2/ndf (high purity);#chi^{2}/ndf;tracks", 100, 0, 5.);
1214  hchi2Probhp = fs->make<TH1D>("hchi2_Prob_hp", "#chi^{2} probability (high purity);#chi^{2}prob_{Track};Number of Tracks", 100, 0.0, 1.);
1215 
1216  hvx = fs->make<TH1D>("h_vx", "Track v_{x} ; track v_{x} [cm];tracks", 100, -1.5, 1.5);
1217  hvy = fs->make<TH1D>("h_vy", "Track v_{y} ; track v_{y} [cm];tracks", 100, -1.5, 1.5);
1218  hvz = fs->make<TH1D>("h_vz", "Track v_{z} ; track v_{z} [cm];tracks", 100, -20., 20.);
1219  hd0 = fs->make<TH1D>("h_d0", "Track d_{0} ; track d_{0} [cm];tracks", 100, -1., 1.);
1220  hdxy = fs->make<TH1D>("h_dxy", "Track d_{xy}; track d_{xy} [cm]; tracks", 100, -0.5, 0.5);
1221  hdz = fs->make<TH1D>("h_dz", "Track d_{z} ; track d_{z} [cm]; tracks", 100, -20, 20);
1222 
1223  hd0PVvsphi = fs->make<TH2D>("h2_d0PVvsphi", "hd0PVvsphi;track #phi;track d_{0}(PV) [cm]", 160, -M_PI, M_PI, 100, -1., 1.);
1224  hd0PVvseta = fs->make<TH2D>("h2_d0PVvseta", "hdPV0vseta;track #eta;track d_{0}(PV) [cm]", 160, -2.5, 2.5, 100, -1., 1.);
1225  hd0PVvspt = fs->make<TH2D>("h2_d0PVvspt", "hdPV0vspt;track p_{T};d_{0}(PV) [cm]", 50, 0., 100., 100, -1, 1.);
1226 
1227  hdxyBS = fs->make<TH1D>("h_dxyBS", "hdxyBS; track d_{xy}(BS) [cm];tracks", 100, -0.1, 0.1);
1228  hd0BS = fs->make<TH1D>("h_d0BS", "hd0BS ; track d_{0}(BS) [cm];tracks", 100, -0.1, 0.1);
1229  hdzBS = fs->make<TH1D>("h_dzBS", "hdzBS ; track d_{z}(BS) [cm];tracks", 100, -12, 12);
1230  hdxyPV = fs->make<TH1D>("h_dxyPV", "hdxyPV; track d_{xy}(PV) [cm];tracks", 100, -0.1, 0.1);
1231  hd0PV = fs->make<TH1D>("h_d0PV", "hd0PV ; track d_{0}(PV) [cm];tracks", 100, -0.15, 0.15);
1232  hdzPV = fs->make<TH1D>("h_dzPV", "hdzPV ; track d_{z}(PV) [cm];tracks", 100, -0.1, 0.1);
1233 
1234  hnhTIB = fs->make<TH1D>("h_nHitTIB", "nhTIB;# hits in TIB; tracks", 20, 0., 20.);
1235  hnhTID = fs->make<TH1D>("h_nHitTID", "nhTID;# hits in TID; tracks", 20, 0., 20.);
1236  hnhTOB = fs->make<TH1D>("h_nHitTOB", "nhTOB;# hits in TOB; tracks", 20, 0., 20.);
1237  hnhTEC = fs->make<TH1D>("h_nHitTEC", "nhTEC;# hits in TEC; tracks", 20, 0., 20.);
1238 
1239  } else {
1240  hvx = fs->make<TH1D>("h_vx", "Track v_{x};track v_{x} [cm];tracks", 100, -100., 100.);
1241  hvy = fs->make<TH1D>("h_vy", "Track v_{y};track v_{y} [cm];tracks", 100, -100., 100.);
1242  hvz = fs->make<TH1D>("h_vz", "Track v_{z};track v_{z} [cm];track", 100, -100., 100.);
1243  hd0 = fs->make<TH1D>("h_d0", "Track d_{0};track d_{0} [cm];track", 100, -100., 100.);
1244  hdxy = fs->make<TH1D>("h_dxy", "Track d_{xy};track d_{xy} [cm];tracks", 100, -100, 100);
1245  hdz = fs->make<TH1D>("h_dz", "Track d_{z};track d_{z} [cm];tracks", 100, -200, 200);
1246 
1247  hd0vsphi = fs->make<TH2D>("h2_d0vsphi", "Track d_{0} vs #phi; track #phi;track d_{0} [cm]", 160, -3.20, 3.20, 100, -100., 100.);
1248  hd0vseta = fs->make<TH2D>("h2_d0vseta", "Track d_{0} vs #eta; track #eta;track d_{0} [cm]", 160, -3.20, 3.20, 100, -100., 100.);
1249  hd0vspt = fs->make<TH2D>("h2_d0vspt", "Track d_{0} vs p_{T};track p_{T};track d_{0} [cm]", 50, 0., 100., 100, -100, 100);
1250 
1251  hdxyBS = fs->make<TH1D>("h_dxyBS", "Track d_{xy}(BS);d_{xy}(BS) [cm];tracks", 100, -100., 100.);
1252  hd0BS = fs->make<TH1D>("h_d0BS", "Track d_{0}(BS);d_{0}(BS) [cm];tracks", 100, -100., 100.);
1253  hdzBS = fs->make<TH1D>("h_dzBS", "Track d_{z}(BS);d_{z}(BS) [cm];tracks", 100, -100., 100.);
1254  hdxyPV = fs->make<TH1D>("h_dxyPV", "Track d_{xy}(PV); d_{xy}(PV) [cm];tracks", 100, -100., 100.);
1255  hd0PV = fs->make<TH1D>("h_d0PV", "Track d_{0}(PV); d_{0}(PV) [cm];tracks", 100, -100., 100.);
1256  hdzPV = fs->make<TH1D>("h_dzPV", "Track d_{z}(PV); d_{z}(PV) [cm];tracks", 100, -100., 100.);
1257 
1258  hnhTIB = fs->make<TH1D>("h_nHitTIB", "nhTIB;# hits in TIB; tracks", 30, 0., 30.);
1259  hnhTID = fs->make<TH1D>("h_nHitTID", "nhTID;# hits in TID; tracks", 30, 0., 30.);
1260  hnhTOB = fs->make<TH1D>("h_nHitTOB", "nhTOB;# hits in TOB; tracks", 30, 0., 30.);
1261  hnhTEC = fs->make<TH1D>("h_nHitTEC", "nhTEC;# hits in TEC; tracks", 30, 0., 30.);
1262  }
1263 
1264  hnhpxb = fs->make<TH1D>("h_nHitPXB", "nhpxb;# hits in Pixel Barrel; tracks", 10, 0., 10.);
1265  hnhpxe = fs->make<TH1D>("h_nHitPXE", "nhpxe;# hits in Pixel Endcap; tracks", 10, 0., 10.);
1266 
1267  hHitComposition = fs->make<TH1D>("h_hitcomposition", "track hit composition;;# hits", 6, -0.5, 5.5);
1268  pNBpixHitsVsVx = fs->make<TProfile>("p_NpixHits_vs_Vx", "n. Barrel Pixel hits vs. v_{x};v_{x} (cm);n. BPix hits", 20, -20, 20);
1269  pNBpixHitsVsVy = fs->make<TProfile>("p_NpixHits_vs_Vy", "n. Barrel Pixel hits vs. v_{y};v_{y} (cm);n. BPix hits", 20, -20, 20);
1270  pNBpixHitsVsVz = fs->make<TProfile>("p_NpixHits_vs_Vz", "n. Barrel Pixel hits vs. v_{z};v_{z} (cm);n. BPix hits", 20, -100, 100);
1271 
1272  std::string dets[6] = {"PXB", "PXF", "TIB", "TID", "TOB", "TEC"};
1273  for (int i = 1; i <= hHitComposition->GetNbinsX(); i++) {
1274  hHitComposition->GetXaxis()->SetBinLabel(i, dets[i - 1].c_str());
1275  }
1276 
1277  vTrackHistos_.push_back(fs->make<TH1F>("h_tracketa", "Track #eta;#eta_{Track};Number of Tracks", 90, -3., 3.));
1278  vTrackHistos_.push_back(fs->make<TH1F>("h_trackphi", "Track #phi;#phi_{Track};Number of Tracks", 90, -M_PI, M_PI));
1279  vTrackHistos_.push_back(fs->make<TH1F>("h_trackNumberOfValidHits", "Track # of valid hits;# of valid hits _{Track};Number of Tracks", 40, 0., 40.));
1280  vTrackHistos_.push_back(fs->make<TH1F>("h_trackNumberOfLostHits", "Track # of lost hits;# of lost hits _{Track};Number of Tracks", 10, 0., 10.));
1281  vTrackHistos_.push_back(fs->make<TH1F>("h_curvature", "Curvature #kappa;#kappa_{Track};Number of Tracks", 100, -.05, .05));
1282  vTrackHistos_.push_back(fs->make<TH1F>("h_curvature_pos", "Curvature |#kappa| Positive Tracks;|#kappa_{pos Track}|;Number of Tracks", 100, .0, .05));
1283  vTrackHistos_.push_back(fs->make<TH1F>("h_curvature_neg", "Curvature |#kappa| Negative Tracks;|#kappa_{neg Track}|;Number of Tracks", 100, .0, .05));
1284  vTrackHistos_.push_back(fs->make<TH1F>("h_diff_curvature", "Curvature |#kappa| Tracks Difference;|#kappa_{Track}|;# Pos Tracks - # Neg Tracks", 100,.0,.05));
1285 
1286  vTrackHistos_.push_back(fs->make<TH1F>("h_chi2", "Track #chi^{2};#chi^{2}_{Track};Number of Tracks", 500, -0.01, 500.));
1287  vTrackHistos_.push_back(fs->make<TH1F>("h_chi2Prob", "#chi^{2} probability;Track Prob(#chi^{2},ndof);Number of Tracks", 100, 0.0, 1.));
1288  vTrackHistos_.push_back(fs->make<TH1F>("h_normchi2", "#chi^{2}/ndof;#chi^{2}/ndof;Number of Tracks", 100, -0.01, 10.));
1289 
1290  //variable binning for chi2/ndof vs. pT
1291  double xBins[19] = {0., 0.15, 0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 5., 7., 10., 15., 25., 40., 100., 200.};
1292  vTrackHistos_.push_back(fs->make<TH1F>("h_pt", "Track p_{T};p_{T}^{track} [GeV];Number of Tracks", 250, 0., 250));
1293  vTrackHistos_.push_back(fs->make<TH1F>("h_ptrebin", "Track p_{T};p_{T}^{track} [GeV];Number of Tracks", 18, xBins));
1294 
1295  vTrackHistos_.push_back(fs->make<TH1F>("h_ptResolution", "#delta_{p_{T}}/p_{T}^{track};#delta_{p_{T}}/p_{T}^{track};Number of Tracks", 100, 0., 0.5));
1296  vTrackProfiles_.push_back(fs->make<TProfile>("p_d0_vs_phi", "Transverse Impact Parameter vs. #phi;#phi_{Track};#LT d_{0} #GT [cm]", 100, -M_PI, M_PI));
1297  vTrackProfiles_.push_back(fs->make<TProfile>("p_dz_vs_phi", "Longitudinal Impact Parameter vs. #phi;#phi_{Track};#LT d_{z} #GT [cm]", 100, -M_PI, M_PI));
1298  vTrackProfiles_.push_back(fs->make<TProfile>("p_d0_vs_eta", "Transverse Impact Parameter vs. #eta;#eta_{Track};#LT d_{0} #GT [cm]", 100, -M_PI, M_PI));
1299  vTrackProfiles_.push_back(fs->make<TProfile>("p_dz_vs_eta", "Longitudinal Impact Parameter vs. #eta;#eta_{Track};#LT d_{z} #GT [cm]", 100, -M_PI, M_PI));
1300  vTrackProfiles_.push_back(fs->make<TProfile>("p_chi2_vs_phi", "#chi^{2} vs. #phi;#phi_{Track};#LT #chi^{2} #GT", 100, -M_PI, M_PI));
1301  vTrackProfiles_.push_back(fs->make<TProfile>("p_chi2Prob_vs_phi","#chi^{2} probablility vs. #phi;#phi_{Track};#LT #chi^{2} probability#GT",100,-M_PI,M_PI));
1302  vTrackProfiles_.push_back(fs->make<TProfile>("p_chi2Prob_vs_d0", "#chi^{2} probablility vs. |d_{0}|;|d_{0}|[cm];#LT #chi^{2} probability#GT", 100, 0, 80));
1303  vTrackProfiles_.push_back(fs->make<TProfile>("p_chi2Prob_vs_dz", "#chi^{2} probablility vs. dz;d_{z} [cm];#LT #chi^{2} probability#GT", 100, -30, 30));
1304  vTrackProfiles_.push_back(fs->make<TProfile>("p_normchi2_vs_phi", "#chi^{2}/ndof vs. #phi;#phi_{Track};#LT #chi^{2}/ndof #GT", 100, -M_PI, M_PI));
1305  vTrackProfiles_.push_back(fs->make<TProfile>("p_chi2_vs_eta", "#chi^{2} vs. #eta;#eta_{Track};#LT #chi^{2} #GT", 100, -M_PI, M_PI));
1306  vTrackProfiles_.push_back(fs->make<TProfile>("p_normchi2_vs_pt", "norm #chi^{2} vs. p_{T}_{Track}; p_{T}_{Track};#LT #chi^{2}/ndof #GT", 18, xBins));
1307  vTrackProfiles_.push_back(fs->make<TProfile>("p_normchi2_vs_p", "#chi^{2}/ndof vs. p_{Track};p_{Track};#LT #chi^{2}/ndof #GT", 18, xBins));
1308  vTrackProfiles_.push_back(fs->make<TProfile>("p_chi2Prob_vs_eta","#chi^{2} probability vs. #eta;#eta_{Track};#LT #chi^{2} probability #GT",100,-M_PI,M_PI));
1309  vTrackProfiles_.push_back(fs->make<TProfile>("p_normchi2_vs_eta", "#chi^{2}/ndof vs. #eta;#eta_{Track};#LT #chi^{2}/ndof #GT", 100, -M_PI, M_PI));
1310  vTrackProfiles_.push_back(fs->make<TProfile>("p_kappa_vs_phi", "#kappa vs. #phi;#phi_{Track};#kappa", 100, -M_PI, M_PI));
1311  vTrackProfiles_.push_back(fs->make<TProfile>("p_kappa_vs_eta", "#kappa vs. #eta;#eta_{Track};#kappa", 100, -M_PI, M_PI));
1312  vTrackProfiles_.push_back(fs->make<TProfile>("p_ptResolution_vs_phi","#delta_{p_{T}}/p_{T}^{track};#phi^{track};#delta_{p_{T}}/p_{T}^{track}",100,-M_PI,M_PI));
1313  vTrackProfiles_.push_back(fs->make<TProfile>("p_ptResolution_vs_eta","#delta_{p_{T}}/p_{T}^{track};#eta^{track};#delta_{p_{T}}/p_{T}^{track}",100,-M_PI,M_PI));
1314  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_d0_vs_phi","Transverse Impact Parameter vs. #phi;#phi_{Track};d_{0} [cm]", 100, -M_PI, M_PI, 100, -1., 1.));
1315  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_dz_vs_phi","Longitudinal Impact Parameter vs. #phi;#phi_{Track};d_{z} [cm]",100,-M_PI,M_PI,100,-100.,100.));
1316  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_d0_vs_eta","Transverse Impact Parameter vs. #eta;#eta_{Track};d_{0} [cm]", 100, -M_PI, M_PI, 100, -1., 1.));
1317  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_dz_vs_eta","Longitudinal Impact Parameter vs. #eta;#eta_{Track};d_{z} [cm]",100,-M_PI,M_PI, 100,-100.,100.));
1318  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_chi2_vs_phi", "#chi^{2} vs. #phi;#phi_{Track};#chi^{2}", 100, -M_PI, M_PI, 500, 0., 500.));
1319  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_chi2Prob_vs_phi","#chi^{2} probability vs. #phi;#phi_{Track};#chi^{2} probability",100,-M_PI,M_PI,100,0.,1.));
1320  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_chi2Prob_vs_d0","#chi^{2} probability vs. |d_{0}|;|d_{0}| [cm];#chi^{2} probability",100,0,80,100,0.,1.));
1321  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_normchi2_vs_phi", "#chi^{2}/ndof vs. #phi;#phi_{Track};#chi^{2}/ndof", 100, -M_PI, M_PI, 100, 0., 10.));
1322  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_chi2_vs_eta", "#chi^{2} vs. #eta;#eta_{Track};#chi^{2}", 100, -M_PI, M_PI, 500, 0., 500.));
1323  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_chi2Prob_vs_eta","#chi^{2} probaility vs. #eta;#eta_{Track};#chi^{2} probability",100,-M_PI,M_PI,100,0.,1.));
1324  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_normchi2_vs_eta", "#chi^{2}/ndof vs. #eta;#eta_{Track};#chi^{2}/ndof", 100, -M_PI, M_PI, 100, 0., 10.));
1325  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_kappa_vs_phi", "#kappa vs. #phi;#phi_{Track};#kappa", 100, -M_PI, M_PI, 100, .0, .05));
1326  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_kappa_vs_eta", "#kappa vs. #eta;#eta_{Track};#kappa", 100, -M_PI, M_PI, 100, .0, .05));
1327  vTrack2DHistos_.push_back(fs->make<TH2F>("h2_normchi2_vs_kappa", "#kappa vs. #chi^{2}/ndof;#chi^{2}/ndof;#kappa", 100, 0., 10, 100, -.03, .03));
1328 
1329  // clang-format on
1330 
1331  firstEvent_ = true;
1332 
1333  } //beginJob
1334 
1335  void endJob() override {
1336  edm::LogPrint("DMRChecker") << "*******************************" << std::endl;
1337  edm::LogPrint("DMRChecker") << "Events run in total: " << ievt << std::endl;
1338  edm::LogPrint("DMRChecker") << "n. tracks: " << itrks << std::endl;
1339  edm::LogPrint("DMRChecker") << "*******************************" << std::endl;
1340 
1341  int nFiringTriggers = triggerMap_.size();
1342  edm::LogPrint("DMRChecker") << "firing triggers: " << nFiringTriggers << std::endl;
1343  edm::LogPrint("DMRChecker") << "*******************************" << std::endl;
1344 
1345  tksByTrigger_ = fs->make<TH1D>(
1346  "tksByTrigger", "tracks by HLT path;;% of # traks", nFiringTriggers, -0.5, nFiringTriggers - 0.5);
1347  evtsByTrigger_ = fs->make<TH1D>(
1348  "evtsByTrigger", "events by HLT path;;% of # events", nFiringTriggers, -0.5, nFiringTriggers - 0.5);
1349 
1350  int i = 0;
1351 
1352  for (std::map<std::string, std::pair<int, int> >::iterator it = triggerMap_.begin(); it != triggerMap_.end();
1353  ++it) {
1354  i++;
1355 
1356  double trkpercent = ((it->second).second) * 100. / double(itrks);
1357  double evtpercent = ((it->second).first) * 100. / double(ievt);
1358 
1359  std::cout.precision(4);
1360 
1361  edm::LogPrint("DMRChecker") << "HLT path: " << std::setw(60) << left << it->first << " | events firing: " << right
1362  << std::setw(8) << (it->second).first << " (" << setw(8) << fixed << evtpercent
1363  << "%)"
1364  << " | tracks collected: " << std::setw(10) << (it->second).second << " (" << setw(8)
1365  << fixed << trkpercent << "%)";
1366 
1367  tksByTrigger_->SetBinContent(i, trkpercent);
1368  tksByTrigger_->GetXaxis()->SetBinLabel(i, (it->first).c_str());
1369 
1370  evtsByTrigger_->SetBinContent(i, evtpercent);
1371  evtsByTrigger_->GetXaxis()->SetBinLabel(i, (it->first).c_str());
1372  }
1373 
1374  int nRuns = conditionsMap_.size();
1375 
1376  vector<int> theRuns_;
1377  for (map<int, std::pair<int, float> >::iterator it = conditionsMap_.begin(); it != conditionsMap_.end(); ++it) {
1378  theRuns_.push_back(it->first);
1379  }
1380 
1381  sort(theRuns_.begin(), theRuns_.end());
1382  edm::LogPrint("DMRChecker") << "*******************************" << std::endl;
1383  edm::LogPrint("DMRChecker") << "first run: " << theRuns_[0] << std::endl;
1384  edm::LogPrint("DMRChecker") << "last run: " << theRuns_[theRuns_.size() - 1] << std::endl;
1385  edm::LogPrint("DMRChecker") << "considered runs: " << nRuns << std::endl;
1386  edm::LogPrint("DMRChecker") << "*******************************" << std::endl;
1387 
1388  modeByRun_ = fs->make<TH1D>(
1389  "modeByRun", "Strip APV mode by run number;;APV mode (-1=deco,+1=peak)", nRuns, -0.5, nRuns - 0.5);
1390  fieldByRun_ = fs->make<TH1D>(
1391  "fieldByRun", "CMS B-field intensity by run number;;B-field intensity [T]", nRuns, -0.5, nRuns - 0.5);
1392 
1393  tracksByRun_ =
1394  fs->make<TH1D>("tracksByRun", "n. AlCaReco Tracks by run number;;n. of tracks", nRuns, -0.5, nRuns - 0.5);
1395  hitsByRun_ = fs->make<TH1D>("histByRun", "n. of hits by run number;;n. of hits", nRuns, -0.5, nRuns - 0.5);
1396 
1397  trackRatesByRun_ = fs->make<TH1D>(
1398  "trackRatesByRun", "rate of AlCaReco Tracks by run number;;n. of tracks/s", nRuns, -0.5, nRuns - 0.5);
1399  eventRatesByRun_ = fs->make<TH1D>(
1400  "eventRatesByRun", "rate of AlCaReco Events by run number;;n. of events/s", nRuns, -0.5, nRuns - 0.5);
1401 
1402  hitsinBPixByRun_ = fs->make<TH1D>(
1403  "histinBPixByRun", "n. of hits in BPix by run number;;n. of BPix hits", nRuns, -0.5, nRuns - 0.5);
1404  hitsinFPixByRun_ = fs->make<TH1D>(
1405  "histinFPixByRun", "n. of hits in FPix by run number;;n. of FPix hits", nRuns, -0.5, nRuns - 0.5);
1406 
1407  int indexing(0);
1408  for (int the_r = theRuns_[0]; the_r <= theRuns_[theRuns_.size() - 1]; the_r++) {
1409  if (conditionsMap_.find(the_r)->second.first != 0) {
1410  indexing++;
1411  double runTime = timeMap_.find(the_r)->second;
1412 
1413  edm::LogPrint("DMRChecker") << "run:" << the_r << " | isPeak: " << std::setw(4)
1414  << conditionsMap_.find(the_r)->second.first
1415  << "| B-field: " << conditionsMap_.find(the_r)->second.second << " [T]"
1416  << "| events: " << setw(10) << runInfoMap_.find(the_r)->second.first
1417  << "(rate: " << setw(10) << (runInfoMap_.find(the_r)->second.first) / runTime
1418  << " ev/s)"
1419  << ", tracks " << setw(10) << runInfoMap_.find(the_r)->second.second
1420  << "(rate: " << setw(10) << (runInfoMap_.find(the_r)->second.second) / runTime
1421  << " trk/s)" << std::endl;
1422 
1423  // int the_bin = modeByRun_->GetXaxis()->FindBin(the_r);
1424  modeByRun_->SetBinContent(indexing, conditionsMap_.find(the_r)->second.first);
1425  modeByRun_->GetXaxis()->SetBinLabel(indexing, Form("%d", the_r));
1426  fieldByRun_->SetBinContent(indexing, conditionsMap_.find(the_r)->second.second);
1427  fieldByRun_->GetXaxis()->SetBinLabel(indexing, Form("%d", the_r));
1428 
1429  tracksByRun_->SetBinContent(indexing, runInfoMap_.find(the_r)->second.first);
1430  tracksByRun_->GetXaxis()->SetBinLabel(indexing, Form("%d", the_r));
1431  hitsByRun_->SetBinContent(indexing, runInfoMap_.find(the_r)->second.second);
1432  hitsByRun_->GetXaxis()->SetBinLabel(indexing, Form("%d", the_r));
1433 
1434  hitsinBPixByRun_->SetBinContent(indexing, (runHitsMap_.find(the_r)->second)[0]);
1435  hitsinBPixByRun_->GetXaxis()->SetBinLabel(indexing, Form("%d", the_r));
1436  hitsinFPixByRun_->SetBinContent(indexing, (runHitsMap_.find(the_r)->second)[1]);
1437  hitsinFPixByRun_->GetXaxis()->SetBinLabel(indexing, Form("%d", the_r));
1438 
1439  trackRatesByRun_->SetBinContent(indexing, (runInfoMap_.find(the_r)->second.second) / runTime);
1440  trackRatesByRun_->GetXaxis()->SetBinLabel(indexing, Form("%d", the_r));
1441  eventRatesByRun_->SetBinContent(indexing, (runInfoMap_.find(the_r)->second.first) / runTime);
1442  eventRatesByRun_->GetXaxis()->SetBinLabel(indexing, Form("%d", the_r));
1443 
1444  constexpr const char *subdets[]{"BPix", "FPix", "TIB", "TID", "TOB", "TEC"};
1445 
1446  edm::LogPrint("DMRChecker") << "*******************************" << std::endl;
1447  edm::LogPrint("DMRChecker") << "Hits by Sub-det" << std::endl;
1448  int si = 0;
1449  for (const auto &entry : runHitsMap_.find(the_r)->second) {
1450  edm::LogPrint("DMRChecker") << subdets[si] << " " << entry << std::endl;
1451  si++;
1452  }
1453  edm::LogPrint("DMRChecker") << "*******************************" << std::endl;
1454  }
1455 
1456  // modeByRun_->GetXaxis()->SetBinLabel(the_r-theRuns_[0]+1,(const char*)the_r);
1457  }
1458 
1459  // DMRs
1460 
1461  TFileDirectory DMeanR = fs->mkdir("DMRs");
1462 
1463  DMRBPixX_ = DMeanR.make<TH1D>("DMRBPix-X", "DMR of BPix-X;mean of X-residuals;modules", 100., -200, 200);
1464  DMRBPixY_ = DMeanR.make<TH1D>("DMRBPix-Y", "DMR of BPix-Y;mean of Y-residuals;modules", 100., -200, 200);
1465 
1466  DMRFPixX_ = DMeanR.make<TH1D>("DMRFPix-X", "DMR of FPix-X;mean of X-residuals;modules", 100., -200, 200);
1467  DMRFPixY_ = DMeanR.make<TH1D>("DMRFPix-Y", "DMR of FPix-Y;mean of Y-residuals;modules", 100., -200, 200);
1468 
1469  DMRTIB_ = DMeanR.make<TH1D>("DMRTIB", "DMR of TIB;mean of X-residuals;modules", 100., -200, 200);
1470  DMRTOB_ = DMeanR.make<TH1D>("DMRTOB", "DMR of TOB;mean of X-residuals;modules", 100., -200, 200);
1471 
1472  DMRTID_ = DMeanR.make<TH1D>("DMRTID", "DMR of TID;mean of X-residuals;modules", 100., -200, 200);
1473  DMRTEC_ = DMeanR.make<TH1D>("DMRTEC", "DMR of TEC;mean of X-residuals;modules", 100., -200, 200);
1474 
1475  TFileDirectory DMeanRSplit = fs->mkdir("SplitDMRs");
1476 
1477  DMRBPixXSplit_ = bookSplitDMRHistograms(DMeanRSplit, "BPix", "X", true);
1478  DMRBPixYSplit_ = bookSplitDMRHistograms(DMeanRSplit, "BPix", "Y", true);
1479 
1480  DMRFPixXSplit_ = bookSplitDMRHistograms(DMeanRSplit, "FPix", "X", false);
1481  DMRFPixYSplit_ = bookSplitDMRHistograms(DMeanRSplit, "FPix", "Y", false);
1482 
1483  DMRTIBSplit_ = bookSplitDMRHistograms(DMeanRSplit, "TIB", "X", true);
1484  DMRTOBSplit_ = bookSplitDMRHistograms(DMeanRSplit, "TOB", "X", true);
1485 
1486  // DRnRs
1487  TFileDirectory DRnRs = fs->mkdir("DRnRs");
1488 
1489  DRnRBPixX_ = DRnRs.make<TH1D>("DRnRBPix-X", "DRnR of BPix-X;rms of normalized X-residuals;modules", 100., 0., 3.);
1490  DRnRBPixY_ = DRnRs.make<TH1D>("DRnRBPix-Y", "DRnR of BPix-Y;rms of normalized Y-residuals;modules", 100., 0., 3.);
1491 
1492  DRnRFPixX_ = DRnRs.make<TH1D>("DRnRFPix-X", "DRnR of FPix-X;rms of normalized X-residuals;modules", 100., 0., 3.);
1493  DRnRFPixY_ = DRnRs.make<TH1D>("DRnRFPix-Y", "DRnR of FPix-Y;rms of normalized Y-residuals;modules", 100., 0., 3.);
1494 
1495  DRnRTIB_ = DRnRs.make<TH1D>("DRnRTIB", "DRnR of TIB;rms of normalized X-residuals;modules", 100., 0., 3.);
1496  DRnRTOB_ = DRnRs.make<TH1D>("DRnRTOB", "DRnR of TOB;rms of normalized Y-residuals;modules", 100., 0., 3.);
1497 
1498  DRnRTID_ = DRnRs.make<TH1D>("DRnRTID", "DRnR of TID;rms of normalized X-residuals;modules", 100., 0., 3.);
1499  DRnRTEC_ = DRnRs.make<TH1D>("DRnRTEC", "DRnR of TEC;rms of normalized Y-residuals;modules", 100., 0., 3.);
1500 
1501  // initialize the topology first
1502 
1503  SiPixelPI::PhaseInfo ph_info(phase_);
1504  const char *path_toTopologyXML = ph_info.pathToTopoXML();
1505  const TrackerTopology standaloneTopo =
1507 
1508  // initialize PixelRegionContainers
1509  PixelDMRS_x_ByLayer = std::make_unique<PixelRegions::PixelRegionContainers>(&standaloneTopo, ph_info.phase());
1510  PixelDMRS_y_ByLayer = std::make_unique<PixelRegions::PixelRegionContainers>(&standaloneTopo, ph_info.phase());
1511 
1512  // book PixelRegionContainers
1513  PixelDMRS_x_ByLayer->bookAll("Barrel Pixel DMRs", "median(x'_{pred}-x'_{hit}) [#mum]", "# modules", 100, -50, 50);
1514  PixelDMRS_y_ByLayer->bookAll("Barrel Pixel DMRs", "median(y'_{pred}-y'_{hit}) [#mum]", "# modules", 100, -50, 50);
1515 
1516  /*
1517  auto dets = PixelRegions::attachedDets(PixelRegions::PixelId::L1,&m_standaloneTopo,isPhase1_);
1518  for(const auto& det : dets){
1519  auto myLocalTopo = PixelDMRS_x_ByLayer->getTheTTopo();
1520  edm::LogVerbatim("DMRChecker") << myLocalTopo->print(det) << std::endl;
1521  }
1522  */
1523 
1524  // pixel
1525 
1526  for (auto &bpixid : resDetailsBPixX_) {
1527  DMRBPixX_->Fill(bpixid.second.runningMeanOfRes_);
1528  if (phase_ == SiPixelPI::phase::one)
1529  pixelmap->fillBarrelBin("DMRsX", bpixid.first, bpixid.second.runningMeanOfRes_);
1530 
1531  //auto myLocalTopo = PixelDMRS_x_ByLayer->getTheTopo();
1532  //edm::LogPrint("DMRChecker") << myLocalTopo->print(bpixid.first) << std::endl;
1533 
1534  PixelDMRS_x_ByLayer->fill(bpixid.first, bpixid.second.runningMeanOfRes_);
1535 
1536  // split DMR
1537  if (bpixid.second.rDirection > 0) {
1538  DMRBPixXSplit_[0]->Fill(bpixid.second.runningMeanOfRes_);
1539  } else {
1540  DMRBPixXSplit_[1]->Fill(bpixid.second.runningMeanOfRes_);
1541  }
1542 
1543  if (bpixid.second.hitCount < 2)
1544  DRnRBPixX_->Fill(-1);
1545  else
1546  DRnRBPixX_->Fill(sqrt(bpixid.second.runningNormVarOfRes_ / (bpixid.second.hitCount - 1)));
1547  }
1548 
1549  for (auto &bpixid : resDetailsBPixY_) {
1550  DMRBPixY_->Fill(bpixid.second.runningMeanOfRes_);
1551  if (phase_ == SiPixelPI::phase::one)
1552  pixelmap->fillBarrelBin("DMRsY", bpixid.first, bpixid.second.runningMeanOfRes_);
1553  PixelDMRS_y_ByLayer->fill(bpixid.first, bpixid.second.runningMeanOfRes_);
1554 
1555  // split DMR
1556  if (bpixid.second.rDirection > 0) {
1557  DMRBPixYSplit_[0]->Fill(bpixid.second.runningMeanOfRes_);
1558  } else {
1559  DMRBPixYSplit_[1]->Fill(bpixid.second.runningMeanOfRes_);
1560  }
1561 
1562  if (bpixid.second.hitCount < 2)
1563  DRnRBPixY_->Fill(-1);
1564  else
1565  DRnRBPixY_->Fill(sqrt(bpixid.second.runningNormVarOfRes_ / (bpixid.second.hitCount - 1)));
1566  }
1567 
1568  for (auto &fpixid : resDetailsFPixX_) {
1569  DMRFPixX_->Fill(fpixid.second.runningMeanOfRes_);
1570  if (phase_ == SiPixelPI::phase::one)
1571  pixelmap->fillForwardBin("DMRsX", fpixid.first, fpixid.second.runningMeanOfRes_);
1572  PixelDMRS_x_ByLayer->fill(fpixid.first, fpixid.second.runningMeanOfRes_);
1573 
1574  // split DMR
1575  if (fpixid.second.zDirection > 0) {
1576  DMRFPixXSplit_[0]->Fill(fpixid.second.runningMeanOfRes_);
1577  } else {
1578  DMRFPixXSplit_[1]->Fill(fpixid.second.runningMeanOfRes_);
1579  }
1580 
1581  if (fpixid.second.hitCount < 2)
1582  DRnRFPixX_->Fill(-1);
1583  else
1584  DRnRFPixX_->Fill(sqrt(fpixid.second.runningNormVarOfRes_ / (fpixid.second.hitCount - 1)));
1585  }
1586 
1587  for (auto &fpixid : resDetailsFPixY_) {
1588  DMRFPixY_->Fill(fpixid.second.runningMeanOfRes_);
1589  if (phase_ == SiPixelPI::phase::one)
1590  pixelmap->fillForwardBin("DMRsY", fpixid.first, fpixid.second.runningMeanOfRes_);
1591  PixelDMRS_y_ByLayer->fill(fpixid.first, fpixid.second.runningMeanOfRes_);
1592 
1593  // split DMR
1594  if (fpixid.second.zDirection > 0) {
1595  DMRFPixYSplit_[0]->Fill(fpixid.second.runningMeanOfRes_);
1596  } else {
1597  DMRFPixYSplit_[1]->Fill(fpixid.second.runningMeanOfRes_);
1598  }
1599 
1600  if (fpixid.second.hitCount < 2)
1601  DRnRFPixY_->Fill(-1);
1602  else
1603  DRnRFPixY_->Fill(sqrt(fpixid.second.runningNormVarOfRes_ / (fpixid.second.hitCount - 1)));
1604  }
1605 
1606  // strips
1607 
1608  for (auto &tibid : resDetailsTIB_) {
1609  DMRTIB_->Fill(tibid.second.runningMeanOfRes_);
1610 
1611  // split DMR
1612  if (tibid.second.rDirection > 0) {
1613  DMRTIBSplit_[0]->Fill(tibid.second.runningMeanOfRes_);
1614  } else {
1615  DMRTIBSplit_[1]->Fill(tibid.second.runningMeanOfRes_);
1616  }
1617 
1618  if (tibid.second.hitCount < 2)
1619  DRnRTIB_->Fill(-1);
1620  else
1621  DRnRTIB_->Fill(sqrt(tibid.second.runningNormVarOfRes_ / (tibid.second.hitCount - 1)));
1622  }
1623 
1624  for (auto &tobid : resDetailsTOB_) {
1625  DMRTOB_->Fill(tobid.second.runningMeanOfRes_);
1626 
1627  // split DMR
1628  if (tobid.second.rDirection > 0) {
1629  DMRTOBSplit_[0]->Fill(tobid.second.runningMeanOfRes_);
1630  } else {
1631  DMRTOBSplit_[1]->Fill(tobid.second.runningMeanOfRes_);
1632  }
1633 
1634  if (tobid.second.hitCount < 2)
1635  DRnRTOB_->Fill(-1);
1636  else
1637  DRnRTOB_->Fill(sqrt(tobid.second.runningNormVarOfRes_ / (tobid.second.hitCount - 1)));
1638  }
1639 
1640  for (auto &tidid : resDetailsTID_) {
1641  DMRTID_->Fill(tidid.second.runningMeanOfRes_);
1642 
1643  if (tidid.second.hitCount < 2)
1644  DRnRTID_->Fill(-1);
1645  else
1646  DRnRTID_->Fill(sqrt(tidid.second.runningNormVarOfRes_ / (tidid.second.hitCount - 1)));
1647  }
1648 
1649  for (auto &tecid : resDetailsTEC_) {
1650  DMRTEC_->Fill(tecid.second.runningMeanOfRes_);
1651 
1652  if (tecid.second.hitCount < 2)
1653  DRnRTEC_->Fill(-1);
1654  else
1655  DRnRTEC_->Fill(sqrt(tecid.second.runningNormVarOfRes_ / (tecid.second.hitCount - 1)));
1656  }
1657 
1658  edm::LogPrint("DMRChecker") << "n. of bpix modules " << resDetailsBPixX_.size() << std::endl;
1659  edm::LogPrint("DMRChecker") << "n. of fpix modules " << resDetailsFPixX_.size() << std::endl;
1660 
1661  if (phase_ == SiPixelPI::phase::zero) {
1662  pmap->save(true, 0, 0, "PixelHitMap.pdf", 600, 800);
1663  pmap->save(true, 0, 0, "PixelHitMap.png", 500, 750);
1664  }
1665 
1666  tmap->save(true, 0, 0, "StripHitMap.pdf");
1667  tmap->save(true, 0, 0, "StripHitMap.png");
1668 
1669  if (phase_ == SiPixelPI::phase::one) {
1670  gStyle->SetPalette(kRainBow);
1671  pixelmap->beautifyAllHistograms();
1672 
1673  TCanvas cBX("CanvXBarrel", "CanvXBarrel", 1200, 1000);
1674  pixelmap->drawBarrelMaps("DMRsX", cBX);
1675  cBX.SaveAs("pixelBarrelDMR_x.png");
1676 
1677  TCanvas cFX("CanvXForward", "CanvXForward", 1600, 1000);
1678  pixelmap->drawForwardMaps("DMRsX", cFX);
1679  cFX.SaveAs("pixelForwardDMR_x.png");
1680 
1681  TCanvas cBY("CanvYBarrel", "CanvYBarrel", 1200, 1000);
1682  pixelmap->drawBarrelMaps("DMRsY", cBY);
1683  cBY.SaveAs("pixelBarrelDMR_y.png");
1684 
1685  TCanvas cFY("CanvXForward", "CanvXForward", 1600, 1000);
1686  pixelmap->drawForwardMaps("DMRsY", cFY);
1687  cFY.SaveAs("pixelForwardDMR_y.png");
1688  }
1689 
1690  // take care now of the 1D histograms
1691  gStyle->SetOptStat("emr");
1692  PixelDMRS_x_ByLayer->beautify(2, 0);
1693  PixelDMRS_y_ByLayer->beautify(2, 0);
1694 
1695  TCanvas DMRxBarrel("DMRxBarrelCanv", "x-coordinate", 1400, 1200);
1696  DMRxBarrel.Divide(2, 2);
1697  PixelDMRS_x_ByLayer->draw(DMRxBarrel, true, "HISTS");
1698  adjustCanvases(DMRxBarrel, true);
1699  for (unsigned int c = 1; c <= 4; c++) {
1700  DMRxBarrel.cd(c)->Update();
1701  }
1702  PixelDMRS_x_ByLayer->stats();
1703 
1704  TCanvas DMRxForward("DMRxForwardCanv", "x-coordinate", 1400, 1200);
1705  DMRxForward.Divide(4, 3);
1706  PixelDMRS_x_ByLayer->draw(DMRxForward, false, "HISTS");
1707  adjustCanvases(DMRxForward, false);
1708  for (unsigned int c = 1; c <= 12; c++) {
1709  DMRxForward.cd(c)->Update();
1710  }
1711  PixelDMRS_x_ByLayer->stats();
1712 
1713  DMRxBarrel.SaveAs("DMR_x_Barrel_ByLayer.png");
1714  DMRxForward.SaveAs("DMR_x_Forward_ByRing.png");
1715 
1716  TCanvas DMRyBarrel("DMRyBarrelCanv", "y-coordinate", 1400, 1200);
1717  DMRyBarrel.Divide(2, 2);
1718  PixelDMRS_y_ByLayer->draw(DMRyBarrel, true, "HISTS");
1719  adjustCanvases(DMRyBarrel, true);
1720  for (unsigned int c = 1; c <= 4; c++) {
1721  DMRyBarrel.cd(c)->Update();
1722  }
1723  PixelDMRS_y_ByLayer->stats();
1724 
1725  TCanvas DMRyForward("DMRyForwardCanv", "y-coordinate", 1400, 1200);
1726  DMRyForward.Divide(4, 3);
1727  PixelDMRS_y_ByLayer->draw(DMRyForward, false, "HISTS");
1728  adjustCanvases(DMRyForward, false);
1729  for (unsigned int c = 1; c <= 12; c++) {
1730  DMRyForward.cd(c)->Update();
1731  }
1732  PixelDMRS_y_ByLayer->stats();
1733 
1734  DMRyBarrel.SaveAs("DMR_y_Barrel_ByLayer.png");
1735  DMRyForward.SaveAs("DMR_y_Forward_ByRing.png");
1736  }
1737 
1738  //*************************************************************
1739  // Adjust canvas for DMRs
1740  //*************************************************************
1741  void adjustCanvases(TCanvas &canvas, bool isBarrel) {
1742  unsigned int maxPads = isBarrel ? 4 : 12;
1743  for (unsigned int c = 1; c <= maxPads; c++) {
1744  canvas.cd(c);
1745  SiPixelPI::adjustCanvasMargins(canvas.cd(c), 0.06, 0.12, 0.12, 0.05);
1746  }
1747 
1748  auto ltx = TLatex();
1749  ltx.SetTextFont(62);
1750  ltx.SetTextSize(0.05);
1751  ltx.SetTextAlign(11);
1752 
1753  std::string toAppend = canvas.GetTitle();
1754 
1755  for (unsigned int c = 1; c <= maxPads; c++) {
1756  auto index = isBarrel ? c - 1 : c + 3;
1757  canvas.cd(c);
1758  ltx.DrawLatexNDC(gPad->GetLeftMargin(),
1759  1 - gPad->GetTopMargin() + 0.01,
1760  (PixelRegions::IDlabels.at(index) + " " + toAppend).c_str());
1761  }
1762  }
1763 
1764  //*************************************************************
1765  // check if the hit is 2D
1766  //*************************************************************
1767  bool isHit2D(const TrackingRecHit &hit) {
1768  bool countStereoHitAs2D_ = true;
1769  // we count SiStrip stereo modules as 2D if selected via countStereoHitAs2D_
1770  // (since they provide theta information)
1771  if (!hit.isValid() ||
1772  (hit.dimension() < 2 && !countStereoHitAs2D_ && !dynamic_cast<const SiStripRecHit1D *>(&hit))) {
1773  return false; // real RecHit1D - but SiStripRecHit1D depends on countStereoHitAs2D_
1774  } else {
1775  const DetId detId(hit.geographicalId());
1776  if (detId.det() == DetId::Tracker) {
1777  if (detId.subdetId() == kBPIX || detId.subdetId() == kFPIX) {
1778  return true; // pixel is always 2D
1779  } else { // should be SiStrip now
1780  const SiStripDetId stripId(detId);
1781  if (stripId.stereo())
1782  return countStereoHitAs2D_; // stereo modules
1783  else if (dynamic_cast<const SiStripRecHit1D *>(&hit) || dynamic_cast<const SiStripRecHit2D *>(&hit))
1784  return false; // rphi modules hit
1785  //the following two are not used any more since ages...
1786  else if (dynamic_cast<const SiStripMatchedRecHit2D *>(&hit))
1787  return true; // matched is 2D
1788  else if (dynamic_cast<const ProjectedSiStripRecHit2D *>(&hit)) {
1789  const ProjectedSiStripRecHit2D *pH = static_cast<const ProjectedSiStripRecHit2D *>(&hit);
1790  return (countStereoHitAs2D_ && this->isHit2D(pH->originalHit())); // depends on original...
1791  } else {
1792  edm::LogError("UnknownType") << "@SUB=DMRChecker::isHit2D"
1793  << "Tracker hit not in pixel, neither SiStripRecHit[12]D nor "
1794  << "SiStripMatchedRecHit2D nor ProjectedSiStripRecHit2D.";
1795  return false;
1796  }
1797  }
1798  } else { // not tracker??
1799  edm::LogWarning("DetectorMismatch") << "@SUB=DMRChecker::isHit2D"
1800  << "Hit not in tracker with 'official' dimension >=2.";
1801  return true; // dimension() >= 2 so accept that...
1802  }
1803  }
1804  // never reached...
1805  }
1806 
1807  //*************************************************************
1808  // Generic booker of split DMRs
1809  //*************************************************************
1811  std::string subdet,
1812  std::string vartype,
1813  bool isBarrel) {
1814  TH1F::SetDefaultSumw2(kTRUE);
1815 
1816  std::array<TH1D *, 2> out;
1817  std::array<std::string, 2> sign_name = {{"plus", "minus"}};
1818  std::array<std::string, 2> sign = {{">0", "<0"}};
1819  for (unsigned int i = 0; i < 2; i++) {
1820  const char *name_;
1821  const char *title_;
1822  const char *axisTitle_;
1823 
1824  if (isBarrel) {
1825  name_ = Form("DMR%s_%s_rDir%s", subdet.c_str(), vartype.c_str(), sign_name[i].c_str());
1826  title_ = Form("Split DMR of %s-%s (rDir%s)", subdet.c_str(), vartype.c_str(), sign[i].c_str());
1827  axisTitle_ = Form("mean of %s-residuals (rDir%s);modules", vartype.c_str(), sign[i].c_str());
1828  } else {
1829  name_ = Form("DMR%s_%s_zDir%s", subdet.c_str(), vartype.c_str(), sign_name[i].c_str());
1830  title_ = Form("Split DMR of %s-%s (zDir%s)", subdet.c_str(), vartype.c_str(), sign[i].c_str());
1831  axisTitle_ = Form("mean of %s-residuals (zDir%s);modules", vartype.c_str(), sign[i].c_str());
1832  }
1833 
1834  out[i] = dir.make<TH1D>(name_, fmt::sprintf("%s;%s", title_, axisTitle_).c_str(), 100., -200, 200);
1835  }
1836  return out;
1837  }
1838 
1839  //*************************************************************
1840  // Generic booker function
1841  //*************************************************************
1842  std::map<unsigned int, TH1D *> bookResidualsHistogram(
1843  TFileDirectory dir, unsigned int theNLayers, std::string resType, std::string varType, std::string detType) {
1844  TH1F::SetDefaultSumw2(kTRUE);
1845 
1846  std::pair<double, double> limits;
1847 
1848  if (varType.find("Res") != std::string::npos) {
1849  limits = std::make_pair(-1000., 1000);
1850  } else {
1851  limits = std::make_pair(-3., 3.);
1852  }
1853 
1854  std::map<unsigned int, TH1D *> h;
1855 
1856  for (unsigned int i = 1; i <= theNLayers; i++) {
1857  const char *name_;
1858  const char *title_;
1859  const char *xAxisTitle_;
1860 
1861  if (varType.find("Res") != std::string::npos) {
1862  xAxisTitle_ = ("res_{" + resType + "'} [#mum]").c_str();
1863  } else {
1864  xAxisTitle_ = ("res_{" + resType + "'}/#sigma_{res_{" + resType + "`}}").c_str();
1865  }
1866 
1867  unsigned int side = -1;
1868  if (detType.find("FPix") != std::string::npos) {
1869  side = (i - 1) / 3 + 1;
1870  unsigned int plane = (i - 1) % 3 + 1;
1871 
1872  std::string theSide = "";
1873  if (side == 1) {
1874  theSide = "Z-";
1875  } else {
1876  theSide = "Z+";
1877  }
1878 
1879  name_ = Form("h_%s%s%s_side%i_disk%i", detType.c_str(), varType.c_str(), resType.c_str(), side, plane);
1880  title_ = Form("%s (%s, disk %i) track %s-%s;%s;hits",
1881  detType.c_str(),
1882  theSide.c_str(),
1883  plane,
1884  resType.c_str(),
1885  varType.c_str(),
1886  xAxisTitle_);
1887 
1888  } else {
1889  name_ = Form("h_%s%s%s_layer%i", detType.c_str(), varType.c_str(), resType.c_str(), i);
1890  title_ = Form(
1891  "%s (layer %i) track %s-%s;%s;hits", detType.c_str(), i, resType.c_str(), varType.c_str(), xAxisTitle_);
1892 
1893  //edm::LogPrint("DMRChecker")<<"bookResidualsHistogram(): "<<i<<" layer:"<<i<<std::endl;
1894  }
1895 
1896  h[i] = dir.make<TH1D>(name_, title_, 100, limits.first, limits.second);
1897  }
1898 
1899  return h;
1900  }
1901 
1902  //*************************************************************
1903  // Generic filler function
1904  //*************************************************************
1905  void fillByIndex(std::map<unsigned int, TH1D *> &h, unsigned int index, double x) {
1906  if (h.count(index) != 0) {
1907  //if(TString(h[index]->GetName()).Contains("BPix"))
1908  //edm::LogPrint("DMRChecker")<<"fillByIndex() index: "<< index << " filling histogram: "<< h[index]->GetName() << std::endl;
1909 
1910  double min = h[index]->GetXaxis()->GetXmin();
1911  double max = h[index]->GetXaxis()->GetXmax();
1912  if (x < min)
1913  h[index]->Fill(min);
1914  else if (x >= max)
1915  h[index]->Fill(0.99999 * max);
1916  else
1917  h[index]->Fill(x);
1918  }
1919  }
1920 
1921  //*************************************************************
1922  // Implementation of the online variance algorithm
1923  // as in https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm
1924  //*************************************************************
1925  void updateOnlineMomenta(running::estimatorMap &myDetails, uint32_t theID, float the_data, float the_pull) {
1926  myDetails[theID].hitCount += 1;
1927 
1928  float delta = 0;
1929  float n_delta = 0;
1930 
1931  if (myDetails[theID].hitCount != 1) {
1932  delta = the_data - myDetails[theID].runningMeanOfRes_;
1933  n_delta = the_pull - myDetails[theID].runningNormMeanOfRes_;
1934  myDetails[theID].runningMeanOfRes_ += (delta / myDetails[theID].hitCount);
1935  myDetails[theID].runningNormMeanOfRes_ += (n_delta / myDetails[theID].hitCount);
1936  } else {
1937  myDetails[theID].runningMeanOfRes_ = the_data;
1938  myDetails[theID].runningNormMeanOfRes_ = the_pull;
1939  }
1940 
1941  float delta2 = the_data - myDetails[theID].runningMeanOfRes_;
1942  float n_delta2 = the_pull - myDetails[theID].runningNormMeanOfRes_;
1943 
1944  myDetails[theID].runningVarOfRes_ += delta * delta2;
1945  myDetails[theID].runningNormVarOfRes_ += n_delta * n_delta2;
1946  }
1947 
1948  //*************************************************************
1949  // Fill the histograms using the running::estimatorMap
1950  //**************************************************************
1951  void fillDMRs(const running::estimatorMap &myDetails,
1952  TH1D *DMR,
1953  TH1D *DRnR,
1954  std::array<TH1D *, 2> DMRSplit,
1955  std::unique_ptr<PixelRegions::PixelRegionContainers> regionalDMR) {
1956  for (const auto &element : myDetails) {
1957  // DMR
1958  DMR->Fill(element.second.runningMeanOfRes_);
1959 
1960  // DMR by layer
1961  if (regionalDMR.get()) {
1962  regionalDMR->fill(element.first, element.second.runningMeanOfRes_);
1963  }
1964 
1965  // split DMR
1966  if (element.second.rOrZDirection > 0) {
1967  DMRSplit[0]->Fill(element.second.runningMeanOfRes_);
1968  } else {
1969  DMRSplit[1]->Fill(element.second.runningMeanOfRes_);
1970  }
1971 
1972  // DRnR
1973  if (element.second.hitCount < 2) {
1974  DRnR->Fill(-1);
1975  } else {
1976  DRnR->Fill(sqrt(element.second.runningNormVarOfRes_ / (element.second.hitCount - 1)));
1977  }
1978  }
1979  }
1980 };
1981 
1982 //*************************************************************
1984 //*************************************************************
1985 {
1987  desc.setComment("Generic track analyzer to check ALCARECO sample quantities / compute fast DMRs");
1988  desc.add<edm::InputTag>("TkTag", edm::InputTag("generalTracks"));
1989  desc.add<edm::InputTag>("TriggerResultsTag", edm::InputTag("TriggerResults", "", "HLT"));
1990  desc.add<edm::InputTag>("BeamSpotTag", edm::InputTag("offlineBeamSpot"));
1991  desc.add<edm::InputTag>("VerticesTag", edm::InputTag("offlinePrimaryVertices"));
1992  desc.add<bool>("isCosmics", false);
1993  descriptions.add("DMRChecker", desc);
1994 }
1995 
DMRChecker::hFPixZPlusResYPull
TH1D * hFPixZPlusResYPull
Definition: DMRChecker.cc:267
ConfigurationDescriptions.h
TrackerGeometry::idToDet
const TrackerGeomDet * idToDet(DetId) const override
Definition: TrackerGeometry.cc:193
DMRChecker::hHit2D
TH1D * hHit2D
Definition: DMRChecker.cc:248
Phi.h
DMRChecker::hNtrkZoom
TH1D * hNtrkZoom
Definition: DMRChecker.cc:236
DMRChecker::hHitCountVsThetaFPixMinus
TH1D * hHitCountVsThetaFPixMinus
Definition: DMRChecker.cc:303
DMRChecker::hPtPlus
TH1D * hPtPlus
Definition: DMRChecker.cc:245
PixelRegionContainers.h
svgfig.canvas
def canvas(*sub, **attr)
Definition: svgfig.py:482
DMRChecker::DRnRTIB_
TH1D * DRnRTIB_
Definition: DMRChecker.cc:416
DMRChecker::hCharge
TH1D * hCharge
Definition: DMRChecker.cc:317
DMRChecker::itrks
int itrks
Definition: DMRChecker.cc:446
running
Definition: DMRChecker.cc:133
DMRChecker::hd0vseta
TH2D * hd0vseta
Definition: DMRChecker.cc:348
DMRChecker::hMinPt
TH1D * hMinPt
Definition: DMRChecker.cc:244
DMRChecker::eventRatesByRun_
TH1D * eventRatesByRun_
Definition: DMRChecker.cc:389
DMRChecker::isCosmics_
const bool isCosmics_
Definition: DMRChecker.cc:451
DMRChecker::endcapDisksPullsY
std::map< unsigned int, TH1D * > endcapDisksPullsY
Definition: DMRChecker.cc:443
DMRChecker::BeamSpotTag_
edm::InputTag BeamSpotTag_
Definition: DMRChecker.cc:455
alignBH_cfg.fixed
fixed
Definition: alignBH_cfg.py:54
DMRChecker::topoToken_
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
Definition: DMRChecker.cc:222
Handle.h
DMRChecker::hitsinBPixByRun_
TH1D * hitsinBPixByRun_
Definition: DMRChecker.cc:391
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
SiPixelPI::PhaseInfo::pathToTopoXML
const char * pathToTopoXML()
Definition: SiPixelPayloadInspectorHelper.h:81
electrons_cff.bool
bool
Definition: electrons_cff.py:366
EDAnalyzer.h
mps_fire.i
i
Definition: mps_fire.py:428
SiPixelPI::one
Definition: SiPixelPayloadInspectorHelper.h:39
PixelSubdetector.h
pwdgSkimBPark_cfi.beamSpot
beamSpot
Definition: pwdgSkimBPark_cfi.py:5
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
DMRChecker::vTrackHistos_
std::vector< TH1 * > vTrackHistos_
Definition: DMRChecker.cc:375
MessageLogger.h
DMRChecker::hHitCountVsYFPix
TH1D * hHitCountVsYFPix
Definition: DMRChecker.cc:283
reco::TrackBase::tight
Definition: TrackBase.h:153
TrackExtraFwd.h
DMRChecker::hdzPV
TH1D * hdzPV
Definition: DMRChecker.cc:371
PixelSubdetector::PixelEndcap
Definition: PixelSubdetector.h:11
RunSummaryRcd.h
TrackerGeometry.h
DMRChecker::hPhiEndcapMinus
TH1D * hPhiEndcapMinus
Definition: DMRChecker.cc:328
reco::TrackBase::loose
Definition: TrackBase.h:152
GeomDet
Definition: GeomDet.h:27
DMRChecker::hnhpxb
TH1D * hnhpxb
Definition: DMRChecker.cc:351
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
DMRChecker::hTECResXPrime
TH1D * hTECResXPrime
Definition: DMRChecker.cc:273
DMRChecker::adjustCanvases
void adjustCanvases(TCanvas &canvas, bool isBarrel)
Definition: DMRChecker.cc:1741
reco::TrackBase::goodIterative
Definition: TrackBase.h:156
DMRChecker::PixelDMRS_y_ByLayer
std::unique_ptr< PixelRegions::PixelRegionContainers > PixelDMRS_y_ByLayer
Definition: DMRChecker.cc:229
TriggerResults.h
DMRChecker::hchi2ndofhp
TH1D * hchi2ndofhp
Definition: DMRChecker.cc:314
DMRChecker::evtsByTrigger_
TH1D * evtsByTrigger_
Definition: DMRChecker.cc:380
HLTBitAnalyser_cfi.hltresults
hltresults
Definition: HLTBitAnalyser_cfi.py:13
TrackerTopology::pxfSide
unsigned int pxfSide(const DetId &id) const
Definition: TrackerTopology.h:192
DMRChecker::hHitCountVsZBPix
TH1D * hHitCountVsZBPix
Definition: DMRChecker.cc:284
running::estimatorMap
std::map< uint32_t, running::Estimators > estimatorMap
Definition: DMRChecker.cc:145
DMRChecker::latencyToken_
const edm::ESGetToken< SiStripLatency, SiStripLatencyRcd > latencyToken_
Definition: DMRChecker.cc:223
DMRChecker::fillDMRs
void fillDMRs(const running::estimatorMap &myDetails, TH1D *DMR, TH1D *DRnR, std::array< TH1D *, 2 > DMRSplit, std::unique_ptr< PixelRegions::PixelRegionContainers > regionalDMR)
Definition: DMRChecker.cc:1951
DMRChecker::DRnRBPixY_
TH1D * DRnRBPixY_
Definition: DMRChecker.cc:403
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
min
T min(T a, T b)
Definition: MathUtil.h:58
reco::Vertex::z
double z() const
z coordinate
Definition: Vertex.h:133
DMRChecker::hPPlus
TH1D * hPPlus
Definition: DMRChecker.cc:241
running::Estimators::runningNormVarOfRes_
float runningNormVarOfRes_
Definition: DMRChecker.cc:142
DMRChecker::barrelLayersPullsY
std::map< unsigned int, TH1D * > barrelLayersPullsY
Definition: DMRChecker.cc:438
deltaPhi.h
DMRChecker::resDetailsFPixX_
running::estimatorMap resDetailsFPixX_
Definition: DMRChecker.cc:474
reco::TrackBase::confirmed
Definition: TrackBase.h:155
edm::EDGetTokenT< reco::TrackCollection >
contentValuesFiles.fullPath
fullPath
Definition: contentValuesFiles.py:64
DMRChecker::hBPixResYPull
TH1D * hBPixResYPull
Definition: DMRChecker.cc:265
DMRChecker::hHitCountVsYFPixMinus
TH1D * hHitCountVsYFPixMinus
Definition: DMRChecker.cc:296
DMRChecker::hFPixZPlusResYPrime
TH1D * hFPixZPlusResYPrime
Definition: DMRChecker.cc:257
TrackBase.h
edm
HLT enums.
Definition: AlignableModifier.h:19
mps_splice.entry
entry
Definition: mps_splice.py:68
TrackerTopology
Definition: TrackerTopology.h:16
DMRChecker::phase_
SiPixelPI::phase phase_
Definition: DMRChecker.cc:450
PV3DBase::theta
Geom::Theta< T > theta() const
Definition: PV3DBase.h:72
reco::TrackBase::undefQuality
Definition: TrackBase.h:151
fireworks::subdets
static const std::string subdets[7]
Definition: TrackUtils.cc:60
DMRChecker::hnhpxe
TH1D * hnhpxe
Definition: DMRChecker.cc:352
DMRChecker::hPhiOverlapMinus
TH1D * hPhiOverlapMinus
Definition: DMRChecker.cc:326
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
DMRChecker::hFPixResXPrime
TH1D * hFPixResXPrime
Definition: DMRChecker.cc:251
gather_cfg.cout
cout
Definition: gather_cfg.py:144
DMRChecker::fs
edm::Service< TFileService > fs
Definition: DMRChecker.cc:225
RunLumiEventNumber.h
DMRChecker::hvy
TH1D * hvy
Definition: DMRChecker.cc:337
edm::LogPrint
Log< level::Warning, true > LogPrint
Definition: MessageLogger.h:130
DMRChecker::runHitsMap_
std::map< int, std::array< int, 6 > > runHitsMap_
Definition: DMRChecker.cc:466
ALCARECOPromptCalibProdSiPixelAli0T_cff.mode
mode
Definition: ALCARECOPromptCalibProdSiPixelAli0T_cff.py:96
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
DMRChecker::resDetailsTEC_
running::estimatorMap resDetailsTEC_
Definition: DMRChecker.cc:482
DMRChecker::hHithp
TH1D * hHithp
Definition: DMRChecker.cc:311
DMRChecker::hHitCountVsZFPix
TH1D * hHitCountVsZFPix
Definition: DMRChecker.cc:285
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
DMRChecker::hnhTOB
TH1D * hnhTOB
Definition: DMRChecker.cc:355
PVValHelper::fillByIndex
void fillByIndex(std::vector< TH1F * > &h, unsigned int index, double x, std::string tag="")
Definition: PVValidationHelpers.cc:42
DMRChecker::hitsinFPixByRun_
TH1D * hitsinFPixByRun_
Definition: DMRChecker.cc:392
DMRChecker::DRnRTID_
TH1D * DRnRTID_
Definition: DMRChecker.cc:419
DMRChecker::DMRBPixXSplit_
std::array< TH1D *, 2 > DMRBPixXSplit_
Definition: DMRChecker.cc:424
DMRChecker::hd0PV
TH1D * hd0PV
Definition: DMRChecker.cc:370
DMRChecker::beginJob
void beginJob() override
Definition: DMRChecker.cc:1079
ErrorObj.h
Validation_hcalonly_cfi.sign
sign
Definition: Validation_hcalonly_cfi.py:32
DMRChecker::tracksByRun_
TH1D * tracksByRun_
Definition: DMRChecker.cc:385
edm::second
U second(std::pair< T, U > const &p)
Definition: ParameterSet.cc:222
SiStripDetId.h
TrackingRecHitFwd.h
running::Estimators
Definition: DMRChecker.cc:134
DMRChecker::hchi2Probhp
TH1D * hchi2Probhp
Definition: DMRChecker.cc:315
RefTraits.h
DMRChecker::isHit2D
bool isHit2D(const TrackingRecHit &hit)
Definition: DMRChecker.cc:1767
DMRChecker::hHitCountVsThetaFPix
TH1D * hHitCountVsThetaFPix
Definition: DMRChecker.cc:290
TFileDirectory
Definition: TFileDirectory.h:24
SiPixelPI::zero
Definition: SiPixelPayloadInspectorHelper.h:39
DMRChecker::PixelDMRS_x_ByLayer
std::unique_ptr< PixelRegions::PixelRegionContainers > PixelDMRS_x_ByLayer
Definition: DMRChecker.cc:228
TrackerGeomDet.h
edm::one::EDAnalyzer
Definition: EDAnalyzer.h:30
HLTEgPhaseIITestSequence_cff.kappa
kappa
Definition: HLTEgPhaseIITestSequence_cff.py:1343
DMRChecker::hEta
TH1D * hEta
Definition: DMRChecker.cc:320
DMRChecker::hitsByRun_
TH1D * hitsByRun_
Definition: DMRChecker.cc:386
DMRChecker::ievt
int ievt
Definition: DMRChecker.cc:445
DMRChecker::hNhighPurity
TH1D * hNhighPurity
Definition: DMRChecker.cc:239
h
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
running::Estimators::hitCount
int hitCount
Definition: DMRChecker.cc:138
edm::Handle< reco::TrackCollection >
DMRChecker::hHitCountVsXFPix
TH1D * hHitCountVsXFPix
Definition: DMRChecker.cc:281
DMRChecker::hHitMinus
TH1D * hHitMinus
Definition: DMRChecker.cc:307
DMRChecker::hEtaPlus
TH1D * hEtaPlus
Definition: DMRChecker.cc:321
DMRChecker::hHitComposition
TH1D * hHitComposition
Definition: DMRChecker.cc:358
ESGetToken.h
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
DMRChecker::hPhiOverlapPlus
TH1D * hPhiOverlapPlus
Definition: DMRChecker.cc:325
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
DMRChecker::resDetailsTOB_
running::estimatorMap resDetailsTOB_
Definition: DMRChecker.cc:480
DMRChecker::DRnRFPixY_
TH1D * DRnRFPixY_
Definition: DMRChecker.cc:406
DMRChecker::trackRatesByRun_
TH1D * trackRatesByRun_
Definition: DMRChecker.cc:388
ProjectedSiStripRecHit2D
Definition: ProjectedSiStripRecHit2D.h:8
SiPixelRecHit
Our base class.
Definition: SiPixelRecHit.h:23
DMRChecker::resDetailsTID_
running::estimatorMap resDetailsTID_
Definition: DMRChecker.cc:481
DMRChecker::hd0BS
TH1D * hd0BS
Definition: DMRChecker.cc:367
DMRChecker::tmap
std::unique_ptr< TrackerMap > tmap
Definition: DMRChecker.cc:231
DMRChecker::vertexToken
edm::EDGetTokenT< reco::VertexCollection > vertexToken
Definition: DMRChecker.cc:461
DMRChecker::DMRFPixYSplit_
std::array< TH1D *, 2 > DMRFPixYSplit_
Definition: DMRChecker.cc:428
DMRChecker::runInfoMap_
std::map< int, std::pair< int, int > > runInfoMap_
Definition: DMRChecker.cc:465
TrackerTopology::pxbLayer
unsigned int pxbLayer(const DetId &id) const
Definition: TrackerTopology.h:144
TFileDirectory.h
F
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:163
DMRChecker::hdzBS
TH1D * hdzBS
Definition: DMRChecker.cc:368
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
DMRChecker::endcapDisksPullsX
std::map< unsigned int, TH1D * > endcapDisksPullsX
Definition: DMRChecker.cc:441
DMRChecker::barrelLayersPullsX
std::map< unsigned int, TH1D * > barrelLayersPullsX
Definition: DMRChecker.cc:436
DMRChecker::hFPixZMinusResXPrime
TH1D * hFPixZMinusResXPrime
Definition: DMRChecker.cc:253
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
SiPixelPI::PhaseInfo::phase
const SiPixelPI::phase phase() const
Definition: SiPixelPayloadInspectorHelper.h:69
DetId
Definition: DetId.h:17
Plane.h
edm::FileInPath
Definition: FileInPath.h:61
kBPIX
const int kBPIX
Definition: DMRChecker.cc:124
accept
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:31
MakerMacros.h
TrackerTopology.h
TrackingRecHit.h
RunInfo
Definition: RunInfo.h:18
DMRChecker::endJob
void endJob() override
Definition: DMRChecker.cc:1335
DMRChecker::triggerMap_
std::map< std::string, std::pair< int, int > > triggerMap_
Definition: DMRChecker.cc:463
DMRChecker::DRnRTEC_
TH1D * DRnRTEC_
Definition: DMRChecker.cc:420
h
DMRChecker::hTOBResXPrime
TH1D * hTOBResXPrime
Definition: DMRChecker.cc:271
TrackerTopologyRcd.h
Track.h
TrackFwd.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
BeamSpot.h
DMRChecker::hHit
TH1D * hHit
Definition: DMRChecker.cc:247
DMRChecker::runInfoToken_
const edm::ESGetToken< RunInfo, RunInfoRcd > runInfoToken_
Definition: DMRChecker.cc:220
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
StandaloneTrackerTopology.h
SiPixelRawToDigiRegional_cfi.deltaPhi
deltaPhi
Definition: SiPixelRawToDigiRegional_cfi.py:9
DMRChecker::hP
TH1D * hP
Definition: DMRChecker.cc:240
GeomDetEnumerators::P1PXEC
Definition: GeomDetEnumerators.h:26
Service.h
seconds
double seconds()
DMRChecker::hHitCountVsXFPixPlus
TH1D * hHitCountVsXFPixPlus
Definition: DMRChecker.cc:293
DMRChecker::hFPixZPlusResXPrime
TH1D * hFPixZPlusResXPrime
Definition: DMRChecker.cc:252
DMRChecker::hTECResXPull
TH1D * hTECResXPull
Definition: DMRChecker.cc:278
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:16
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
DMRChecker::pNBpixHitsVsVz
TProfile * pNBpixHitsVsVz
Definition: DMRChecker.cc:362
fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
reco::BeamSpot
Definition: BeamSpot.h:21
DMRChecker::hHitCountVsPhiBPix
TH1D * hHitCountVsPhiBPix
Definition: DMRChecker.cc:288
IdealMagneticFieldRecord.h
ProjectedSiStripRecHit2D::originalHit
SiStripRecHit2D originalHit() const
Definition: ProjectedSiStripRecHit2D.h:56
DMRChecker::TriggerResultsTag_
edm::InputTag TriggerResultsTag_
Definition: DMRChecker.cc:454
DMRChecker::hPtMinus
TH1D * hPtMinus
Definition: DMRChecker.cc:246
DMRChecker::TkTag_
edm::InputTag TkTag_
Definition: DMRChecker.cc:453
DMRChecker::hEtaMinus
TH1D * hEtaMinus
Definition: DMRChecker.cc:322
multiplicitycorr_cfi.xBins
xBins
Definition: multiplicitycorr_cfi.py:5
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
running::Estimators::runningVarOfRes_
float runningVarOfRes_
Definition: DMRChecker.cc:140
edm::TriggerNames::triggerNames
Strings const & triggerNames() const
Definition: TriggerNames.cc:48
DMRChecker::hBPixResXPrime
TH1D * hBPixResXPrime
Definition: DMRChecker.cc:250
DMRChecker::DMRChecker
DMRChecker(const edm::ParameterSet &pset)
Definition: DMRChecker.cc:151
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
DMRChecker::hFPixZMinusResXPull
TH1D * hFPixZMinusResXPull
Definition: DMRChecker.cc:263
Point3DBase< float, GlobalTag >
ParameterSetDescription.h
SiPixelRecHit.h
EDGetToken.h
TrackerGeometry::isThere
bool isThere(GeomDetEnumerators::SubDetector subdet) const
Definition: TrackerGeometry.cc:219
dumpRecoGeometry_cfg.varType
varType
Definition: dumpRecoGeometry_cfg.py:8
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:125
MagneticField::inInverseGeV
GlobalVector inInverseGeV(const GlobalPoint &gp) const
Field value ad specified global point, in 1/Gev.
Definition: MagneticField.h:36
edm::OwnVector::const_iterator
Definition: OwnVector.h:41
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
RunInfoRcd
Definition: RunSummaryRcd.h:26
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
SiPixelPI::phase
phase
Definition: SiPixelPayloadInspectorHelper.h:39
DMRChecker::hFPixResYPrime
TH1D * hFPixResYPrime
Definition: DMRChecker.cc:256
DMRChecker::hDeltaEta
TH1D * hDeltaEta
Definition: DMRChecker.cc:333
EgHLTOffTrigSelection_cfi.trigName
trigName
Definition: EgHLTOffTrigSelection_cfi.py:8
TFileService.h
DMRChecker::hd0PVvseta
TH2D * hd0PVvseta
Definition: DMRChecker.cc:344
DMRChecker::hFPixZPlusResXPull
TH1D * hFPixZPlusResXPull
Definition: DMRChecker.cc:262
Phase1PixelMaps.h
TFileService::mkdir
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
Definition: TFileService.h:69
PixelPluginsPhase0_cfi.isBarrel
isBarrel
Definition: PixelPluginsPhase0_cfi.py:17
DMRChecker::geomToken_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
Definition: DMRChecker.cc:219
DMRChecker::tksByTrigger_
TH1D * tksByTrigger_
Definition: DMRChecker.cc:379
GeomDetEnumerators::P1PXB
Definition: GeomDetEnumerators.h:25
DMRChecker::DMRBPixYSplit_
std::array< TH1D *, 2 > DMRBPixYSplit_
Definition: DMRChecker.cc:425
cmToUm
constexpr float cmToUm
Definition: DMRChecker.cc:126
DMRChecker::vTrackProfiles_
std::vector< TH1 * > vTrackProfiles_
Definition: DMRChecker.cc:376
DMRChecker::hDeltaPhi
TH1D * hDeltaPhi
Definition: DMRChecker.cc:332
TrackerDigiGeometryRecord.h
DMRChecker::fieldByRun_
TH1D * fieldByRun_
Definition: DMRChecker.cc:383
DMRChecker::hHitCountVsPhiFPix
TH1D * hHitCountVsPhiFPix
Definition: DMRChecker.cc:291
DMRChecker::magFieldToken_
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magFieldToken_
Definition: DMRChecker.cc:221
edm::ParameterSet
Definition: ParameterSet.h:47
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
DetId::Tracker
Definition: DetId.h:25
DMRChecker::beamspotToken
edm::EDGetTokenT< reco::BeamSpot > beamspotToken
Definition: DMRChecker.cc:460
SiStripCondDataRecords.h
DMRChecker::DRnRFPixX_
TH1D * DRnRFPixX_
Definition: DMRChecker.cc:405
DMRChecker::DMRBPixY_
TH1D * DMRBPixY_
Definition: DMRChecker.cc:397
duplicaterechits_cfi.trackCollection
trackCollection
Definition: duplicaterechits_cfi.py:4
Event.h
DMRChecker::hHitCountVsYBPix
TH1D * hHitCountVsYBPix
Definition: DMRChecker.cc:282
DMRChecker::VerticesTag_
edm::InputTag VerticesTag_
Definition: DMRChecker.cc:456
PV3DBase::barePhi
T barePhi() const
Definition: PV3DBase.h:65
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
DMRChecker::DMRTOB_
TH1D * DMRTOB_
Definition: DMRChecker.cc:411
DMRChecker::DRnRTOB_
TH1D * DRnRTOB_
Definition: DMRChecker.cc:417
DMRChecker::firstEvent_
bool firstEvent_
Definition: DMRChecker.cc:448
DMRChecker::resDetailsFPixY_
running::estimatorMap resDetailsFPixY_
Definition: DMRChecker.cc:475
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
reco::Vertex::x
double x() const
x coordinate
Definition: Vertex.h:129
DMRChecker::hQoverPZoom
TH1D * hQoverPZoom
Definition: DMRChecker.cc:319
DMRChecker::hTIBResXPull
TH1D * hTIBResXPull
Definition: DMRChecker.cc:275
DMRChecker::DMRBPixX_
TH1D * DMRBPixX_
Definition: DMRChecker.cc:396
dumpMFGeometry_cfg.delta
delta
Definition: dumpMFGeometry_cfg.py:25
DMRChecker::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &)
Definition: DMRChecker.cc:1983
DMRChecker::DMRTID_
TH1D * DMRTID_
Definition: DMRChecker.cc:413
DMRChecker::hHitCountVsThetaBPix
TH1D * hHitCountVsThetaBPix
Definition: DMRChecker.cc:287
DMRChecker::hPhp
TH1D * hPhp
Definition: DMRChecker.cc:309
kFPIX
const int kFPIX
Definition: DMRChecker.cc:125
DMRChecker::GetIndex
int GetIndex(const std::vector< OBJECT_TYPE * > &vec, const std::string &name)
Definition: DMRChecker.cc:206
PixelRegions::IDlabels
const std::vector< std::string > IDlabels
Definition: PixelRegionContainers.h:62
DMRChecker::hTIDResXPrime
TH1D * hTIDResXPrime
Definition: DMRChecker.cc:272
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
DMRChecker::DMRTIB_
TH1D * DMRTIB_
Definition: DMRChecker.cc:410
DMRChecker::fillByIndex
void fillByIndex(std::map< unsigned int, TH1D * > &h, unsigned int index, double x)
Definition: DMRChecker.cc:1905
edm::Service< TFileService >
TriggerNames.h
edmLumisInFiles.summary
summary
Definition: edmLumisInFiles.py:39
DMRChecker::hPthp
TH1D * hPthp
Definition: DMRChecker.cc:310
DMRChecker::updateOnlineMomenta
void updateOnlineMomenta(running::estimatorMap &myDetails, uint32_t theID, float the_data, float the_pull)
Definition: DMRChecker.cc:1925
DMRChecker::hTOBResXPull
TH1D * hTOBResXPull
Definition: DMRChecker.cc:276
DMRChecker::DMRTIBSplit_
std::array< TH1D *, 2 > DMRTIBSplit_
Definition: DMRChecker.cc:430
TrackerTopology::pxfDisk
unsigned int pxfDisk(const DetId &id) const
Definition: TrackerTopology.h:446
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
DMRChecker::pmap
std::unique_ptr< TrackerMap > pmap
Definition: DMRChecker.cc:232
Theta.h
DMRChecker::endcapDisksResidualsX
std::map< unsigned int, TH1D * > endcapDisksResidualsX
Definition: DMRChecker.cc:440
DMRChecker::hTIBResXPrime
TH1D * hTIBResXPrime
Definition: DMRChecker.cc:270
SiPixelPI::PhaseInfo
Definition: SiPixelPayloadInspectorHelper.h:48
DMRChecker::hchi2ndof
TH1D * hchi2ndof
Definition: DMRChecker.cc:234
DMRChecker::bookResidualsHistogram
std::map< unsigned int, TH1D * > bookResidualsHistogram(TFileDirectory dir, unsigned int theNLayers, std::string resType, std::string varType, std::string detType)
Definition: DMRChecker.cc:1842
DMRChecker::hnhTID
TH1D * hnhTID
Definition: DMRChecker.cc:354
ProjectedSiStripRecHit2D.h
MagneticField.h
DMRChecker::hlumi
TH1D * hlumi
Definition: DMRChecker.cc:373
edm::EventSetup
Definition: EventSetup.h:58
DMRChecker::hdxy
TH1D * hdxy
Definition: DMRChecker.cc:341
SiStripLatency::singleReadOutMode
int16_t singleReadOutMode() const
Definition: SiStripLatency.cc:122
DMRChecker::theTrackCollectionToken
edm::EDGetTokenT< reco::TrackCollection > theTrackCollectionToken
Definition: DMRChecker.cc:458
DMRChecker::hPhiBarrel
TH1D * hPhiBarrel
Definition: DMRChecker.cc:324
running::Estimators::runningNormMeanOfRes_
float runningNormMeanOfRes_
Definition: DMRChecker.cc:141
DMRChecker::hPhi
TH1D * hPhi
Definition: DMRChecker.cc:323
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
DMRChecker::hrun
TH1D * hrun
Definition: DMRChecker.cc:372
DMRChecker::hd0vsphi
TH2D * hd0vsphi
Definition: DMRChecker.cc:347
DMRChecker::hBPixResYPrime
TH1D * hBPixResYPrime
Definition: DMRChecker.cc:255
DMRChecker::hTIDResXPull
TH1D * hTIDResXPull
Definition: DMRChecker.cc:277
HitPattern.h
DMRChecker::hHitCountVsYFPixPlus
TH1D * hHitCountVsYFPixPlus
Definition: DMRChecker.cc:295
DMRChecker::hdz
TH1D * hdz
Definition: DMRChecker.cc:340
DMRChecker::endcapDisksResidualsY
std::map< unsigned int, TH1D * > endcapDisksResidualsY
Definition: DMRChecker.cc:442
TFileService::make
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord >
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
DMRChecker::barrelLayersResidualsX
std::map< unsigned int, TH1D * > barrelLayersResidualsX
Definition: DMRChecker.cc:435
HcalObjRepresent::Fill
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
Definition: HcalObjRepresent.h:1053
InputTag.h
edm::TriggerNames::triggerName
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:50
DMRChecker::hd0vspt
TH2D * hd0vspt
Definition: DMRChecker.cc:349
TrackerMap.h
DMRChecker::DMRFPixXSplit_
std::array< TH1D *, 2 > DMRFPixXSplit_
Definition: DMRChecker.cc:427
DMRChecker::conditionsMap_
std::map< int, std::pair< int, float > > conditionsMap_
Definition: DMRChecker.cc:464
TrackingRecHit
Definition: TrackingRecHit.h:21
SiStripRecHit1D.h
DMRChecker::resDetailsTIB_
running::estimatorMap resDetailsTIB_
Definition: DMRChecker.cc:479
TH2PolyOfflineMaps.limits
limits
Definition: TH2PolyOfflineMaps.py:44
DMRChecker::hFPixResXPull
TH1D * hFPixResXPull
Definition: DMRChecker.cc:261
DMRChecker::hBPixResXPull
TH1D * hBPixResXPull
Definition: DMRChecker.cc:260
VertexFwd.h
DMRChecker::hNtrk
TH1D * hNtrk
Definition: DMRChecker.cc:235
PV3DBase::mag
T mag() const
Definition: PV3DBase.h:64
DMRChecker::hEtahp
TH1D * hEtahp
Definition: DMRChecker.cc:312
RunInfo.h
DMRChecker::pNBpixHitsVsVy
TProfile * pNBpixHitsVsVy
Definition: DMRChecker.cc:361
DMRChecker::vTrack2DHistos_
std::vector< TH1 * > vTrack2DHistos_
Definition: DMRChecker.cc:377
SiPixelPI::two
Definition: SiPixelPayloadInspectorHelper.h:39
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
DMRChecker::~DMRChecker
~DMRChecker() override
Definition: DMRChecker.cc:198
std
Definition: JetResolutionObject.h:76
DMRChecker::hQoverP
TH1D * hQoverP
Definition: DMRChecker.cc:318
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
reco::Vertex::y
double y() const
y coordinate
Definition: Vertex.h:131
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
DMRChecker::bookSplitDMRHistograms
std::array< TH1D *, 2 > bookSplitDMRHistograms(TFileDirectory dir, std::string subdet, std::string vartype, bool isBarrel)
Definition: DMRChecker.cc:1810
DMRChecker::hPhiEndcapPlus
TH1D * hPhiEndcapPlus
Definition: DMRChecker.cc:327
PVValHelper::dxy
Definition: PVValidationHelpers.h:48
reco::TrackBase::algoSize
Definition: TrackBase.h:141
Vertex.h
DetId.h
PVValHelper::dz
Definition: PVValidationHelpers.h:51
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
TrackResiduals.h
DMRChecker::hFPixResYPull
TH1D * hFPixResYPull
Definition: DMRChecker.cc:266
LocalPoint.h
spclusmultinvestigator_cfi.vertexCollection
vertexCollection
Definition: spclusmultinvestigator_cfi.py:4
DMRChecker::hHitCountVsThetaFPixPlus
TH1D * hHitCountVsThetaFPixPlus
Definition: DMRChecker.cc:300
DMRChecker::hHitCountVsXBPix
TH1D * hHitCountVsXBPix
Definition: DMRChecker.cc:280
DMRChecker::hPMinus
TH1D * hPMinus
Definition: DMRChecker.cc:242
DMRChecker::hFPixZMinusResYPull
TH1D * hFPixZMinusResYPull
Definition: DMRChecker.cc:268
DMRChecker::htrkAlgo
TH1I * htrkAlgo
Definition: DMRChecker.cc:238
DMRChecker::modeByRun_
TH1D * modeByRun_
Definition: DMRChecker.cc:382
TFileService::kSharedResource
static const std::string kSharedResource
Definition: TFileService.h:76
DMRChecker::pNBpixHitsVsVx
TProfile * pNBpixHitsVsVx
Definition: DMRChecker.cc:360
DMRChecker::hvz
TH1D * hvz
Definition: DMRChecker.cc:338
edm::TriggerNames
Definition: TriggerNames.h:55
TFileDirectory::make
T * make(const Args &...args) const
make new ROOT object
Definition: TFileDirectory.h:53
DMRChecker::DMRTEC_
TH1D * DMRTEC_
Definition: DMRChecker.cc:414
running::Estimators::runningMeanOfRes_
float runningMeanOfRes_
Definition: DMRChecker.cc:139
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
Point3D.h
GlobalVector.h
DMRChecker::hHitCountVsZFPixMinus
TH1D * hHitCountVsZFPixMinus
Definition: DMRChecker.cc:298
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
EventSetup.h
DEBUG
#define DEBUG
Definition: DMRChecker.cc:119
DMRChecker::analyze
void analyze(const edm::Event &event, const edm::EventSetup &setup) override
Definition: DMRChecker.cc:484
DMRChecker::mode
int mode
Definition: DMRChecker.cc:447
DMRChecker::barrelLayersResidualsY
std::map< unsigned int, TH1D * > barrelLayersResidualsY
Definition: DMRChecker.cc:437
DMRChecker::DRnRBPixX_
TH1D * DRnRBPixX_
Definition: DMRChecker.cc:402
DMRChecker::DMRTOBSplit_
std::array< TH1D *, 2 > DMRTOBSplit_
Definition: DMRChecker.cc:431
DMRChecker::DMRFPixY_
TH1D * DMRFPixY_
Definition: DMRChecker.cc:400
SiStripLatencyRcd
Definition: SiStripCondDataRecords.h:36
DMRChecker::hd0PVvspt
TH2D * hd0PVvspt
Definition: DMRChecker.cc:345
DMRChecker::hPt
TH1D * hPt
Definition: DMRChecker.cc:243
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
DMRChecker::hHitCountVsPhiFPixPlus
TH1D * hHitCountVsPhiFPixPlus
Definition: DMRChecker.cc:301
DMRChecker::htrkQuality
TH1I * htrkQuality
Definition: DMRChecker.cc:237
DMRChecker::pixelmap
std::unique_ptr< Phase1PixelMaps > pixelmap
Definition: DMRChecker.cc:227
DMRChecker::hdxyPV
TH1D * hdxyPV
Definition: DMRChecker.cc:369
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
DMRChecker::hHitCountVsXFPixMinus
TH1D * hHitCountVsXFPixMinus
Definition: DMRChecker.cc:294
SiPixelPayloadInspectorHelper.h
DMRChecker::hHitPlus
TH1D * hHitPlus
Definition: DMRChecker.cc:306
GeomDetEnumerators::P2PXB
Definition: GeomDetEnumerators.h:27
DMRChecker::hd0PVvsphi
TH2D * hd0PVvsphi
Definition: DMRChecker.cc:343
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
genParticles_cff.map
map
Definition: genParticles_cff.py:11
SiStripLatency.h
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
DMRChecker::hPhiMinus
TH1D * hPhiMinus
Definition: DMRChecker.cc:330
ParameterSet.h
SiStripDetId
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:18
ParameterSetDescriptionFiller.h
SiStripMatchedRecHit2D.h
DMRChecker::hDeltaR
TH1D * hDeltaR
Definition: DMRChecker.cc:334
DMRChecker::hd0
TH1D * hd0
Definition: DMRChecker.cc:339
DMRChecker::hdxyBS
TH1D * hdxyBS
Definition: DMRChecker.cc:366
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:56
DMRChecker::hltresultsToken
edm::EDGetTokenT< edm::TriggerResults > hltresultsToken
Definition: DMRChecker.cc:459
DMRChecker::hnhTIB
TH1D * hnhTIB
Definition: DMRChecker.cc:353
point
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
event
Definition: event.py:1
DeDxTools::esConsumes
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::Event
Definition: Event.h:73
DMRChecker
Definition: DMRChecker.cc:149
SiStripLatency
Definition: SiStripLatency.h:59
DMRChecker::hMultCand
TH1D * hMultCand
Definition: DMRChecker.cc:364
MagneticField
Definition: MagneticField.h:19
reco::TrackBase::algoNames
static const std::string algoNames[]
Definition: TrackBase.h:147
TrackingRecHit::isValid
bool isValid() const
Definition: TrackingRecHit.h:141
DMRChecker::DMRFPixX_
TH1D * DMRFPixX_
Definition: DMRChecker.cc:399
GeomDet.h
SiStripRecHit2D.h
DMRChecker::resDetailsBPixX_
running::estimatorMap resDetailsBPixX_
Definition: DMRChecker.cc:472
GlobalPoint.h
StripSubdetector.h
running::Estimators::rOrZDirection
int rOrZDirection
Definition: DMRChecker.cc:137
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
StandaloneTrackerTopology::fromTrackerParametersXMLFile
TrackerTopology fromTrackerParametersXMLFile(const std::string &xmlFileName)
Definition: StandaloneTrackerTopology.cc:168
edm::InputTag
Definition: InputTag.h:15
DMRChecker::hPhihp
TH1D * hPhihp
Definition: DMRChecker.cc:313
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
DMRChecker::resDetailsBPixY_
running::estimatorMap resDetailsBPixY_
Definition: DMRChecker.cc:473
DMRChecker::hHitCountVsZFPixPlus
TH1D * hHitCountVsZFPixPlus
Definition: DMRChecker.cc:297
running::Estimators::zDirection
int zDirection
Definition: DMRChecker.cc:136
reco::Vertex
Definition: Vertex.h:35
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
DMRChecker::timeMap_
std::map< int, float > timeMap_
Definition: DMRChecker.cc:468
DMRChecker::hvx
TH1D * hvx
Definition: DMRChecker.cc:336
hit
Definition: SiStripHitEffFromCalibTree.cc:88
running::Estimators::rDirection
int rDirection
Definition: DMRChecker.cc:135
SiPixelPI::adjustCanvasMargins
void adjustCanvasMargins(TVirtualPad *pad, float top, float bottom, float left, float right)
Definition: SiPixelPayloadInspectorHelper.h:508
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
DMRChecker::hPhiPlus
TH1D * hPhiPlus
Definition: DMRChecker.cc:329
SiStripDetId::stereo
uint32_t stereo() const
Definition: SiStripDetId.h:168
GeomDetEnumerators::P2PXEC
Definition: GeomDetEnumerators.h:28
DeadROC_duringRun.dir
dir
Definition: DeadROC_duringRun.py:23
DMRChecker::hnhTEC
TH1D * hnhTEC
Definition: DMRChecker.cc:356
TrackerGeometry
Definition: TrackerGeometry.h:14
reco::TrackBase::highPurity
Definition: TrackBase.h:154
DMRChecker::hHitCountVsPhiFPixMinus
TH1D * hHitCountVsPhiFPixMinus
Definition: DMRChecker.cc:304
DMRChecker::hFPixZMinusResYPrime
TH1D * hFPixZMinusResYPrime
Definition: DMRChecker.cc:258