CMS 3D CMS Logo

PixelBaryCentreAnalyzer.cc
Go to the documentation of this file.
1 
15 // Framework
23 
24 // Phase-1 Pixel
31 
32 // pixel quality
35 // global postion
38 // tracker alignment
41 // beamspot
44 
45 // Point and Vector
48 
49 // TFileService
52 
53 // ROOT
54 #include "TTree.h"
55 #include "TString.h"
56 
57 //
58 // class declaration
59 //
60 
61 class PixelBaryCentreAnalyzer : public edm::one::EDAnalyzer<edm::one::SharedResources> {
62 public:
64  ~PixelBaryCentreAnalyzer() override = default;
65 
66  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
67 
68  struct SimplePoint {
69  float x, y, z;
70  SimplePoint(const GlobalPoint& p) : x(p.x()), y(p.y()), z(p.z()){};
71  SimplePoint() : x(0), y(0), z(0){};
72  };
73  static const unsigned int nPixelLayers = 4;
74  static const unsigned int nPixelDiscs = 3;
75 
76 private:
77  void beginJob() override;
78  void analyze(const edm::Event&, const edm::EventSetup&) override;
79  void endJob() override;
80 
81  void initBC();
82  void initBS();
83 
84  const bool usePixelQuality_;
85  int phase_;
86 
87  // ----------member data ---------------------------
90 
91  // labels of TkAlign tags
92  std::vector<std::string> bcLabels_;
93  // labels of beamspot tags
94  std::vector<std::string> bsLabels_;
95 
99 
101  std::map<std::string, edm::ESGetToken<Alignments, TrackerAlignmentRcd>> tkAlignTokens_;
102  std::map<std::string, edm::ESGetToken<BeamSpotObjects, BeamSpotObjectsRcd>> bsTokens_;
103 
104  // tree content
105  int run_;
106  int ls_;
107 
109 
112 
117 
121 
123 
126 
131 
135 
137  std::map<std::string, TTree*> bcTrees_;
138  std::map<std::string, TTree*> bsTrees_;
139 };
140 
141 //
142 // constructors and destructor
143 //
145  : usePixelQuality_(iConfig.getUntrackedParameter<bool>("usePixelQuality")),
146  bcLabels_(iConfig.getUntrackedParameter<std::vector<std::string>>("tkAlignLabels")),
147  bsLabels_(iConfig.getUntrackedParameter<std::vector<std::string>>("beamSpotLabels")),
148  trackerGeometryToken_(esConsumes<TrackerGeometry, TrackerDigiGeometryRecord>()),
149  trackerTopologyToken_(esConsumes<TrackerTopology, TrackerTopologyRcd>()),
150  siPixelQualityToken_(esConsumes<SiPixelQuality, SiPixelQualityFromDbRcd>()),
151  gprToken_(esConsumes<Alignments, GlobalPositionRcd>()) {
152  for (const auto& label : bcLabels_) {
153  bcTrees_[label] = nullptr;
154  tkAlignTokens_[label] = esConsumes<Alignments, TrackerAlignmentRcd>(edm::ESInputTag{"", label});
155  }
156 
157  for (const auto& label : bsLabels_) {
158  bsTrees_[label] = nullptr;
159  bsTokens_[label] = esConsumes<BeamSpotObjects, BeamSpotObjectsRcd>(edm::ESInputTag{"", label});
160  }
161 
162  usesResource("TFileService");
163 }
164 
165 //
166 // member functions
167 //
168 
170  double dummy_float = 999999.0;
171 
172  BS_ = GlobalPoint(dummy_float, dummy_float, dummy_float);
173  vBS_ = SimplePoint(BS_);
174 }
175 
177  // init to large number (unreasonable number) not zero
178  double dummy_float = 999999.0;
179 
180  PIX_ = GlobalPoint(dummy_float, dummy_float, dummy_float);
181  BPIX_ = GlobalPoint(dummy_float, dummy_float, dummy_float);
182  FPIX_ = GlobalPoint(dummy_float, dummy_float, dummy_float);
183 
184  BPIX_Flipped_ = GlobalPoint(dummy_float, dummy_float, dummy_float);
185  BPIX_NonFlipped_ = GlobalPoint(dummy_float, dummy_float, dummy_float);
186  BPIX_DiffFlippedNonFlipped_ = GlobalPoint(dummy_float, dummy_float, dummy_float);
187 
188  FPIX_plus_ = GlobalPoint(dummy_float, dummy_float, dummy_float);
189  FPIX_minus_ = GlobalPoint(dummy_float, dummy_float, dummy_float);
190 
191  for (unsigned int i = 0; i < nPixelLayers; i++) {
192  BPIXLayer_[i] = GlobalPoint(dummy_float, dummy_float, dummy_float);
193  BPIXLayer_Flipped_[i] = GlobalPoint(dummy_float, dummy_float, dummy_float);
194  BPIXLayer_NonFlipped_[i] = GlobalPoint(dummy_float, dummy_float, dummy_float);
195  BPIXLayer_DiffFlippedNonFlipped_[i] = GlobalPoint(dummy_float, dummy_float, dummy_float);
196  }
197 
198  for (unsigned int i = 0; i < nPixelDiscs; i++) {
199  FPIXDisks_plus_[i] = GlobalPoint(dummy_float, dummy_float, dummy_float);
200  FPIXDisks_minus_[i] = GlobalPoint(dummy_float, dummy_float, dummy_float);
201  }
202 
206 
210 
213 
214  for (unsigned int i = 0; i < nPixelLayers; i++) {
219  }
220 
221  for (unsigned int i = 0; i < nPixelDiscs; i++) {
224  }
225 }
226 
227 // ------------ method called for each event ------------
229  bool prepareTkAlign = false;
230  bool prepareBS = false;
231 
232  // ES watcher can noly run once in the same event,
233  // otherwise it will turn false whatsoever because the condition doesn't change in the second time call.
234  if (watcherTkAlign_.check(iSetup))
235  prepareTkAlign = true;
236  if (watcherBS_.check(iSetup))
237  prepareBS = true;
238 
239  if (!prepareTkAlign && !prepareBS)
240  return;
241 
242  run_ = iEvent.id().run();
243  ls_ = iEvent.id().luminosityBlock();
244 
245  if (prepareTkAlign) { // check for new IOV for TKAlign
246 
247  phase_ = -1;
248 
249  const TrackerGeometry* tkGeo = &iSetup.getData(trackerGeometryToken_);
250  const TrackerTopology* tkTopo = &iSetup.getData(trackerTopologyToken_);
251 
253  phase_ = 0;
255  phase_ = 1;
256  }
257 
258  // pixel quality
259  const SiPixelQuality* badPixelInfo = &iSetup.getData(siPixelQualityToken_);
260 
261  // Tracker global position
263 
264  // Convert AlignTransform::Translation to GlobalVector using the appropriate constructor
265  GlobalVector globalTkPosition(glbCoord.translation().x(), glbCoord.translation().y(), glbCoord.translation().z());
266 
267  // loop over bclabels
268  for (const auto& label : bcLabels_) {
269  // init tree content
271 
272  // Get TkAlign from EventSetup:
273  const Alignments* alignments = &iSetup.getData(tkAlignTokens_[label]);
274  std::vector<AlignTransform> tkAlignments = alignments->m_align;
275 
276  // PIX
277  GlobalVector barycentre_PIX(0.0, 0.0, 0.0);
278  // BPIX
279  GlobalVector barycentre_BPIX(0.0, 0.0, 0.0);
280  float nmodules_BPIX(0.);
281  // FPIX
282  GlobalVector barycentre_FPIX(0.0, 0.0, 0.0);
283  float nmodules_FPIX(0.);
284 
285  // Per-layer/ladder barycentre for BPIX
286  std::map<int, std::map<int, float>> nmodules_bpix; // layer-ladder
287  std::map<int, std::map<int, GlobalVector>> barycentre_bpix; // layer-ladder
288 
289  // Per-disk/ring barycentre for FPIX
290  std::map<int, std::map<int, float>> nmodules_fpix; // disk-ring
291  std::map<int, std::map<int, GlobalVector>> barycentre_fpix; // disk-ring
292 
293  // Loop over tracker module
294  for (const auto& ali : tkAlignments) {
295  //DetId
296  const DetId& detId = DetId(ali.rawId());
297  // remove bad module
298  if (usePixelQuality_ && badPixelInfo->IsModuleBad(detId))
299  continue;
300 
301  // alignment for a given module
302  GlobalVector ali_translation(ali.translation().x(), ali.translation().y(), ali.translation().z());
303 
304  int subid = DetId(detId).subdetId();
305  // BPIX
306  if (subid == PixelSubdetector::PixelBarrel) {
307  nmodules_BPIX += 1;
308  barycentre_BPIX += ali_translation;
309  barycentre_PIX += ali_translation;
310 
311  int layer = tkTopo->pxbLayer(detId);
312  int ladder = tkTopo->pxbLadder(detId);
313  nmodules_bpix[layer][ladder] += 1;
314  barycentre_bpix[layer][ladder] += ali_translation;
315 
316  } // BPIX
317 
318  // FPIX
319  if (subid == PixelSubdetector::PixelEndcap) {
320  nmodules_FPIX += 1;
321  barycentre_FPIX += ali_translation;
322  barycentre_PIX += ali_translation;
323 
324  int disk = tkTopo->pxfDisk(detId);
326  if (quadrant < 3)
327  disk *= -1;
328 
329  int ring = -9999;
330  if (phase_ == 0) {
331  ring = 1 + (tkTopo->pxfPanel(detId) + tkTopo->pxfModule(detId.rawId()) > 3);
332  } else if (phase_ == 1) {
333  ring = PixelEndcapName(detId, tkTopo, phase_).ringName();
334  }
335 
336  nmodules_fpix[disk][ring] += 1;
337  barycentre_fpix[disk][ring] += ali_translation;
338 
339  } // FPIX
340 
341  } // loop over tracker module
342 
343  //PIX
344  float nmodules_PIX = nmodules_BPIX + nmodules_FPIX;
345  barycentre_PIX *= (1.0 / nmodules_PIX);
346  barycentre_PIX += globalTkPosition;
347  PIX_ = GlobalPoint(barycentre_PIX.x(), barycentre_PIX.y(), barycentre_PIX.z());
349 
350  //BPIX
351  barycentre_BPIX *= (1.0 / nmodules_BPIX);
352  barycentre_BPIX += globalTkPosition;
353  BPIX_ = GlobalPoint(barycentre_BPIX.x(), barycentre_BPIX.y(), barycentre_BPIX.z());
355  //FPIX
356  barycentre_FPIX *= (1.0 / nmodules_FPIX);
357  barycentre_FPIX += globalTkPosition;
358  FPIX_ = GlobalPoint(barycentre_FPIX.x(), barycentre_FPIX.y(), barycentre_FPIX.z());
360  // Pixel substructures
361 
362  // BPix barycentre per-layer/per-ladder
363  // assuming each ladder has the same number of modules in the same layer
364  // inner = flipped; outer = non-flipped
365  //
366  // Phase 0: Outer ladders are odd for layer 1,3 and even for layer 2
367  // Phase 1: Outer ladders are odd for layer 4 and even for layer 1,2,3
368  //
369 
370  int nmodules_BPIX_Flipped = 0;
371  int nmodules_BPIX_NonFlipped = 0;
372  GlobalVector BPIX_Flipped(0.0, 0.0, 0.0);
373  GlobalVector BPIX_NonFlipped(0.0, 0.0, 0.0);
374 
375  // loop over layers
376  for (const auto& il : barycentre_bpix) {
377  int layer = il.first;
378 
379  int nmodulesLayer = 0;
380  int nmodulesLayer_Flipped = 0;
381  int nmodulesLayer_NonFlipped = 0;
382  GlobalVector BPIXLayer(0.0, 0.0, 0.0);
383  GlobalVector BPIXLayer_Flipped(0.0, 0.0, 0.0);
384  GlobalVector BPIXLayer_NonFlipped(0.0, 0.0, 0.0);
385 
386  // loop over ladder
387  std::map<int, GlobalVector> barycentreLayer = barycentre_bpix[layer];
388  for (const auto& it : barycentreLayer) {
389  int ladder = it.first;
390  //BPIXLayerLadder_[layer][ladder] = (1.0/nmodules[layer][ladder])*barycentreLayer[ladder] + globalTkPosition;
391 
392  nmodulesLayer += nmodules_bpix[layer][ladder];
393  BPIXLayer += barycentreLayer[ladder];
394 
395  // Phase-1
396  //
397  // Phase 1: Outer ladders are odd for layer 4 and even for layer 1,2,3
398  if (phase_ == 1) {
399  if (layer != 4) { // layer 1-3
400 
401  if (ladder % 2 != 0) { // odd ladder = outer ladder = unflipped
402  nmodulesLayer_NonFlipped += nmodules_bpix[layer][ladder];
403  BPIXLayer_NonFlipped += barycentreLayer[ladder];
404  } else { // even ladder = inner ladder = flipped
405  nmodulesLayer_Flipped += nmodules_bpix[layer][ladder];
406  BPIXLayer_Flipped += barycentreLayer[ladder];
407  }
408  } else { // layer-4
409 
410  if (ladder % 2 != 0) { // odd ladder = inner = flipped
411  nmodulesLayer_Flipped += nmodules_bpix[layer][ladder];
412  BPIXLayer_Flipped += barycentreLayer[ladder];
413  } else { //even ladder = outer ladder = unflipped
414  nmodulesLayer_NonFlipped += nmodules_bpix[layer][ladder];
415  BPIXLayer_NonFlipped += barycentreLayer[ladder];
416  }
417  }
418 
419  } // phase-1
420 
421  // Phase-0
422  //
423  // Phase 0: Outer ladders are odd for layer 1,3 and even for layer 2
424  if (phase_ == 0) {
425  if (layer == 2) { // layer-2
426 
427  if (ladder % 2 != 0) { // odd ladder = inner = flipped
428  nmodulesLayer_Flipped += nmodules_bpix[layer][ladder];
429  BPIXLayer_Flipped += barycentreLayer[ladder];
430  } else {
431  nmodulesLayer_NonFlipped += nmodules_bpix[layer][ladder];
432  BPIXLayer_NonFlipped += barycentreLayer[ladder];
433  }
434  } else { // layer-1,3
435 
436  if (ladder % 2 == 0) { // even ladder = inner = flipped
437  nmodulesLayer_Flipped += nmodules_bpix[layer][ladder];
438  BPIXLayer_Flipped += barycentreLayer[ladder];
439  } else { // odd ladder = outer = non-flipped
440  nmodulesLayer_NonFlipped += nmodules_bpix[layer][ladder];
441  BPIXLayer_NonFlipped += barycentreLayer[ladder];
442  }
443  }
444 
445  } // phase-0
446 
447  } //loop over ladders
448 
449  // total BPIX flipped/non-flipped
450  BPIX_Flipped += BPIXLayer_Flipped;
451  BPIX_NonFlipped += BPIXLayer_NonFlipped;
452  nmodules_BPIX_Flipped += nmodulesLayer_Flipped;
453  nmodules_BPIX_NonFlipped += nmodulesLayer_NonFlipped;
454 
455  //BPIX per-layer
456  BPIXLayer *= (1.0 / nmodulesLayer);
457  BPIXLayer += globalTkPosition;
458  BPIXLayer_Flipped *= (1.0 / nmodulesLayer_Flipped);
459  BPIXLayer_Flipped += globalTkPosition;
460  BPIXLayer_NonFlipped *= (1.0 / nmodulesLayer_NonFlipped);
461  BPIXLayer_NonFlipped += globalTkPosition;
462 
463  BPIXLayer_[layer - 1] = GlobalPoint(BPIXLayer.x(), BPIXLayer.y(), BPIXLayer.z());
466  GlobalPoint(BPIXLayer_Flipped.x(), BPIXLayer_Flipped.y(), BPIXLayer_Flipped.z());
469  GlobalPoint(BPIXLayer_NonFlipped.x(), BPIXLayer_NonFlipped.y(), BPIXLayer_NonFlipped.z());
471  BPIXLayer_DiffFlippedNonFlipped_[layer - 1] = GlobalPoint(BPIXLayer_Flipped.x() - BPIXLayer_NonFlipped.x(),
472  BPIXLayer_Flipped.y() - BPIXLayer_NonFlipped.y(),
473  BPIXLayer_Flipped.z() - BPIXLayer_NonFlipped.z());
475 
476  } // loop over layers
477 
478  BPIX_Flipped *= (1.0 / nmodules_BPIX_Flipped);
479  BPIX_Flipped += globalTkPosition;
480  BPIX_Flipped_ = GlobalPoint(BPIX_Flipped.x(), BPIX_Flipped.y(), BPIX_Flipped.z());
482  BPIX_NonFlipped *= (1.0 / nmodules_BPIX_NonFlipped);
483  BPIX_NonFlipped += globalTkPosition;
484  BPIX_NonFlipped_ = GlobalPoint(BPIX_NonFlipped.x(), BPIX_NonFlipped.y(), BPIX_NonFlipped.z());
486  BPIX_DiffFlippedNonFlipped_ = GlobalPoint(BPIX_Flipped.x() - BPIX_NonFlipped.x(),
487  BPIX_Flipped.y() - BPIX_NonFlipped.y(),
488  BPIX_Flipped.z() - BPIX_NonFlipped.z());
490 
491  // FPIX substructures per-(signed)disk/per-ring
492  int nmodules_FPIX_plus = 0;
493  int nmodules_FPIX_minus = 0;
494  GlobalVector FPIX_plus(0.0, 0.0, 0.0);
495  GlobalVector FPIX_minus(0.0, 0.0, 0.0);
496  // loop over disks
497 
498  for (const auto& id : barycentre_fpix) {
499  int disk = id.first;
500 
501  int nmodulesDisk = 0;
502  GlobalVector FPIXDisk(0.0, 0.0, 0.0);
503 
504  std::map<int, GlobalVector> baryCentreDisk = id.second;
505  for (const auto& ir : baryCentreDisk) {
506  int ring = ir.first;
507  nmodulesDisk += nmodules_fpix[disk][ring];
508  FPIXDisk += ir.second;
509  if (disk > 0) {
510  nmodules_FPIX_plus += nmodules_fpix[disk][ring];
511  FPIX_plus += ir.second;
512  }
513  if (disk < 0) {
514  nmodules_FPIX_minus += nmodules_fpix[disk][ring];
515  FPIX_minus += ir.second;
516  }
517 
518  } // loop over rings
519 
520  FPIXDisk *= (1.0 / nmodulesDisk);
521  FPIXDisk += globalTkPosition;
522 
523  if (disk > 0) {
524  FPIXDisks_plus_[disk - 1] = GlobalPoint(FPIXDisk.x(), FPIXDisk.y(), FPIXDisk.z());
525  vFPIXDisks_plus_[disk - 1] = SimplePoint(FPIXDisks_plus_[disk - 1]);
526  }
527  if (disk < 0) {
528  FPIXDisks_minus_[-disk - 1] = GlobalPoint(FPIXDisk.x(), FPIXDisk.y(), FPIXDisk.z());
529  vFPIXDisks_minus_[-disk - 1] = SimplePoint(FPIXDisks_minus_[-disk - 1]);
530  }
531  } // loop over disks
532 
533  FPIX_plus *= (1.0 / nmodules_FPIX_plus);
534  FPIX_plus += globalTkPosition;
535  FPIX_plus_ = GlobalPoint(FPIX_plus.x(), FPIX_plus.y(), FPIX_plus.z());
537  FPIX_minus *= (1.0 / nmodules_FPIX_minus);
538  FPIX_minus += globalTkPosition;
539  FPIX_minus_ = GlobalPoint(FPIX_minus.x(), FPIX_minus.y(), FPIX_minus.z());
541 
542  bcTrees_[label]->Fill();
543 
544  } // bcLabels_
545 
546  } // check for new IOV for TKAlign
547 
548  // beamspot
549  if (prepareBS) {
550  // loop over bsLabels_
551  for (const auto& label : bsLabels_) {
552  // init bstree content
554 
555  // Get BeamSpot from EventSetup
556  const BeamSpotObjects* mybeamspot = &iSetup.getData(bsTokens_[label]);
557 
558  BS_ = GlobalPoint(mybeamspot->x(), mybeamspot->y(), mybeamspot->z());
559  vBS_ = SimplePoint(BS_);
560 
561  bsTrees_[label]->Fill();
562  } // bsLabels_
563 
564  } // check for new IOV for BS
565 }
566 
567 // ------------ method called once each job just before starting event loop ------------
569  // init bc bs trees
570  for (const auto& label : bsLabels_) {
571  std::string treeName = "BeamSpot";
572  if (!label.empty())
573  treeName = "BeamSpot_";
574  treeName += label;
575 
576  bsTrees_[label] = tFileService->make<TTree>(TString(treeName), "PixelBarycentre analyzer ntuple");
577 
578  bsTrees_[label]->Branch("run", &run_, "run/I");
579  bsTrees_[label]->Branch("ls", &ls_, "ls/I");
580 
581  bsTrees_[label]->Branch("BS", &vBS_, "x/F:y/F:z/F");
582 
583  } // bsLabels_
584 
585  for (const auto& label : bcLabels_) {
586  std::string treeName = "PixelBarycentre";
587  if (!label.empty())
588  treeName = "PixelBarycentre_";
589  treeName += label;
590  bcTrees_[label] = tFileService->make<TTree>(TString(treeName), "PixelBarycentre analyzer ntuple");
591 
592  bcTrees_[label]->Branch("run", &run_, "run/I");
593  bcTrees_[label]->Branch("ls", &ls_, "ls/I");
594 
595  bcTrees_[label]->Branch("PIX", &vPIX_, "x/F:y/F:z/F");
596 
597  bcTrees_[label]->Branch("BPIX", &vBPIX_, "x/F:y/F:z/F");
598  bcTrees_[label]->Branch("BPIX_Flipped", &vBPIX_Flipped_, "x/F:y/F:z/F");
599  bcTrees_[label]->Branch("BPIX_NonFlipped", &vBPIX_NonFlipped_, "x/F:y/F:z/F");
600  bcTrees_[label]->Branch("BPIX_DiffFlippedNonFlipped", &vBPIX_DiffFlippedNonFlipped_, "x/F:y/F:z/F");
601 
602  bcTrees_[label]->Branch("FPIX", &vFPIX_, "x/F:y/F:z/F");
603  bcTrees_[label]->Branch("FPIX_plus", &vFPIX_plus_, "x/F:y/F:z/F");
604  bcTrees_[label]->Branch("FPIX_minus", &vFPIX_minus_, "x/F:y/F:z/F");
605 
606  //per-layer
607  for (unsigned int i = 0; i < nPixelLayers; i++) {
608  TString structure = "BPIXLYR";
609  int layer = i + 1;
610  structure += layer;
611 
612  bcTrees_[label]->Branch(structure, &vBPIXLayer_[i], "x/F:y/F:z/F");
613  bcTrees_[label]->Branch(structure + "_Flipped", &vBPIXLayer_Flipped_[i], "x/F:y/F:z/F");
614  bcTrees_[label]->Branch(structure + "_NonFlipped", &vBPIXLayer_NonFlipped_[i], "x/F:y/F:z/F");
615  bcTrees_[label]->Branch(
616  structure + "_DiffFlippedNonFlipped", &vBPIXLayer_DiffFlippedNonFlipped_[i], "x/F:y/F:z/F");
617  }
618 
619  //per-disk/ring
620  for (unsigned int i = 0; i < nPixelDiscs; i++) {
621  TString structure = "FPIXDisk_plus";
622  int disk = i + 1;
623  structure += disk;
624  bcTrees_[label]->Branch(structure, &vFPIXDisks_plus_[i], "x/F:y/F:z/F");
625 
626  structure = "FPIXDisk_minus";
627  structure += disk;
628  bcTrees_[label]->Branch(structure, &vFPIXDisks_minus_[i], "x/F:y/F:z/F");
629  }
630 
631  } // bcLabels_
632 }
633 
634 // ------------ method called once each job just after ending the event loop ------------
636  bcLabels_.clear();
637  bsLabels_.clear();
638 
639  bcTrees_.clear();
640  bsTrees_.clear();
641 }
642 
643 // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
646  desc.setComment("Validates alignment payloads by providing the position of the pixel barycenter positions");
647  desc.addUntracked<bool>("usePixelQuality", false);
648  desc.addUntracked<std::vector<std::string>>("tkAlignLabels", {});
649  desc.addUntracked<std::vector<std::string>>("beamSpotLabels", {});
650  descriptions.addWithDefaultLabel(desc);
651 }
652 
653 //define this as a plug-in
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
GlobalPoint BPIXLayer_Flipped_[nPixelLayers]
SimplePoint vFPIXDisks_minus_[nPixelDiscs]
unsigned int pxbLayer(const DetId &id) const
void analyze(const edm::Event &, const edm::EventSetup &) override
double z() const
get Z beam position
static const unsigned int nPixelDiscs
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
int ringName() const
ring Id
edm::ESWatcher< BeamSpotObjectsRcd > watcherBS_
SimplePoint vBPIXLayer_NonFlipped_[nPixelLayers]
PixelBaryCentreAnalyzer(const edm::ParameterSet &)
SimplePoint vBPIXLayer_DiffFlippedNonFlipped_[nPixelLayers]
T z() const
Definition: PV3DBase.h:61
GlobalPoint BPIXLayer_DiffFlippedNonFlipped_[nPixelLayers]
unsigned int pxfModule(const DetId &id) const
GlobalPoint FPIXDisks_plus_[nPixelDiscs]
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeometryToken_
int quadrant(const DetId &detid, const TrackerTopology *tTopo_, bool phase_)
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
const Translation & translation() const
bool IsModuleBad(const uint32_t &detid) const
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > trackerTopologyToken_
unsigned int pxbLadder(const DetId &id) const
SimplePoint vBPIXLayer_Flipped_[nPixelLayers]
edm::Service< TFileService > tFileService
std::vector< AlignTransform > m_align
Definition: Alignments.h:19
char const * label
T x() const
Definition: PV3DBase.h:59
T y() const
Definition: PV3DBase.h:60
GlobalPoint BPIXLayer_[nPixelLayers]
int iEvent
Definition: GenABIO.cc:224
GlobalPoint FPIXDisks_minus_[nPixelDiscs]
edm::ESWatcher< TrackerAlignmentRcd > watcherTkAlign_
bool isThere(GeomDetEnumerators::SubDetector subdet) const
HalfCylinder halfCylinder() const
unsigned int pxfDisk(const DetId &id) const
double x() const
get X beam position
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
SimplePoint vFPIXDisks_plus_[nPixelDiscs]
const edm::ESGetToken< Alignments, GlobalPositionRcd > gprToken_
~PixelBaryCentreAnalyzer() override=default
std::vector< std::string > bsLabels_
unsigned int pxfPanel(const DetId &id) const
double y() const
get Y beam position
Definition: DetId.h:17
std::vector< std::string > bcLabels_
SimplePoint vBPIXLayer_[nPixelLayers]
std::map< std::string, TTree * > bsTrees_
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
static const unsigned int nPixelLayers
const AlignTransform & DetectorGlobalPosition(const Alignments &allGlobals, const DetId &id)
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
const edm::ESGetToken< SiPixelQuality, SiPixelQualityFromDbRcd > siPixelQualityToken_
std::map< std::string, edm::ESGetToken< Alignments, TrackerAlignmentRcd > > tkAlignTokens_
std::map< std::string, TTree * > bcTrees_
GlobalPoint BPIXLayer_NonFlipped_[nPixelLayers]
std::map< std::string, edm::ESGetToken< BeamSpotObjects, BeamSpotObjectsRcd > > bsTokens_