CMS 3D CMS Logo

HcalGeometry.cc
Go to the documentation of this file.
4 #include <algorithm>
5 #include <iostream>
6 
7 #include <Math/Transform3D.h>
8 #include <Math/EulerAngles.h>
9 
14 
15 //#define EDM_ML_DEBUG
16 
18  : m_topology(topology), m_mergePosition(topology.getMergePositionFlag()) {
19  init();
20 }
21 
23 
26  m_mergePosition = false;
27 #ifdef EDM_ML_DEBUG
28  std::cout << "HcalGeometry: "
29  << "HcalGeometry::init() "
30  << " HBSize " << m_topology.getHBSize() << " HESize " << m_topology.getHESize() << " HOSize "
31  << m_topology.getHOSize() << " HFSize " << m_topology.getHFSize() << std::endl;
32 #endif
33 
38 }
39 
41  // this must test the last record filled to avoid a race condition
42  if (!m_emptyIds.isSet()) {
43  std::unique_ptr<std::vector<DetId>> p_hbIds{new std::vector<DetId>};
44  std::unique_ptr<std::vector<DetId>> p_heIds{new std::vector<DetId>};
45  std::unique_ptr<std::vector<DetId>> p_hoIds{new std::vector<DetId>};
46  std::unique_ptr<std::vector<DetId>> p_hfIds{new std::vector<DetId>};
47  std::unique_ptr<std::vector<DetId>> p_emptyIds{new std::vector<DetId>};
48 
49  const std::vector<DetId>& baseIds(CaloSubdetectorGeometry::getValidDetIds());
50  for (unsigned int i(0); i != baseIds.size(); ++i) {
51  const DetId id(baseIds[i]);
52  if (id.subdetId() == HcalBarrel) {
53  p_hbIds->emplace_back(id);
54  } else if (id.subdetId() == HcalEndcap) {
55  p_heIds->emplace_back(id);
56  } else if (id.subdetId() == HcalOuter) {
57  p_hoIds->emplace_back(id);
58  } else if (id.subdetId() == HcalForward) {
59  p_hfIds->emplace_back(id);
60  }
61  }
62  std::sort(p_hbIds->begin(), p_hbIds->end());
63  std::sort(p_heIds->begin(), p_heIds->end());
64  std::sort(p_hoIds->begin(), p_hoIds->end());
65  std::sort(p_hfIds->begin(), p_hfIds->end());
66  p_emptyIds->resize(0);
67 
68  m_hbIds.set(std::move(p_hbIds));
69  m_heIds.set(std::move(p_heIds));
70  m_hoIds.set(std::move(p_hoIds));
71  m_hfIds.set(std::move(p_hfIds));
72  m_emptyIds.set(std::move(p_emptyIds));
73  }
74 }
75 
76 const std::vector<DetId>& HcalGeometry::getValidDetIds(DetId::Detector det, int subdet) const {
77  if (0 != subdet)
78  fillDetIds();
79  return (0 == subdet
81  : (HcalBarrel == subdet
82  ? *m_hbIds.load()
83  : (HcalEndcap == subdet
84  ? *m_heIds.load()
85  : (HcalOuter == subdet ? *m_hoIds.load()
86  : (HcalForward == subdet ? *m_hfIds.load() : *m_emptyIds.load())))));
87 }
88 
89 std::shared_ptr<const CaloCellGeometry> HcalGeometry::getGeometry(const DetId& id) const {
90 #ifdef EDM_ML_DEBUG
91  std::cout << "HcalGeometry::getGeometry for " << HcalDetId(id) << " " << m_mergePosition << " ";
92 #endif
93  if (!m_mergePosition) {
94 #ifdef EDM_ML_DEBUG
95  std::cout << m_topology.detId2denseId(id) << " " << getGeometryBase(id) << "\n";
96 #endif
97  return getGeometryBase(id);
98  } else {
99 #ifdef EDM_ML_DEBUG
101  << "\n";
102 #endif
103  return getGeometryBase(m_topology.idFront(id));
104  }
105 }
106 
108 
109 DetId HcalGeometry::getClosestCell(const GlobalPoint& r, bool ignoreCorrect) const {
110  // Now find the closest eta_bin, eta value of a bin i is average
111  // of eta[i] and eta[i-1]
112  static const double z_long = 1100.0;
113  double abseta = fabs(r.eta());
114  double absz = fabs(r.z());
115 
116  // figure out subdetector, giving preference to HE in HE/HF overlap region
118  if (abseta <= m_topology.etaMax(HcalBarrel)) {
119  bc = HcalBarrel;
120  } else if (absz >= z_long) {
121  bc = HcalForward;
122  } else if (abseta <= m_topology.etaMax(HcalEndcap)) {
123  bc = HcalEndcap;
124  } else {
125  bc = HcalForward;
126  }
127 
128  // find eta bin
129  int etaring = etaRing(bc, abseta);
130 
131  int phibin = phiBin(bc, etaring, r.phi());
132 
133  // add a sign to the etaring
134  int etabin = (r.z() > 0) ? etaring : -etaring;
135 
136  if (bc == HcalForward) {
137  static const double z_short = 1137.0;
138  // Next line is premature depth 1 and 2 can coexist for large z-extent
139  // HcalDetId bestId(bc,etabin,phibin,((fabs(r.z())>=z_short)?(2):(1)));
140  // above line is no good with finite precision
141  HcalDetId bestId(bc, etabin, phibin, ((fabs(r.z()) - z_short > -0.1) ? (2) : (1)));
142  return correctId(bestId);
143  } else {
144  //Now do depth if required
145  int zside = (r.z() > 0) ? 1 : -1;
146  int dbin = m_topology.dddConstants()->getMinDepth(((int)(bc)-1), etaring, phibin, zside);
147  double pointrz(0), drz(99999.);
148  HcalDetId currentId(bc, etabin, phibin, dbin);
149  if (bc == HcalBarrel)
150  pointrz = r.mag();
151  else
152  pointrz = std::abs(r.z());
153  HcalDetId bestId;
154  for (; currentId != HcalDetId(); m_topology.incrementDepth(currentId)) {
155  std::shared_ptr<const CaloCellGeometry> cell = getGeometry(currentId);
156  if (cell == nullptr) {
157  assert(bestId != HcalDetId());
158  break;
159  } else {
160  double rz;
161  if (bc == HcalEndcap)
162  rz = std::abs(cell->getPosition().z());
163  else
164  rz = cell->getPosition().mag();
165  if (std::abs(pointrz - rz) < drz) {
166  bestId = currentId;
167  drz = std::abs(pointrz - rz);
168  }
169  }
170  }
171 #ifdef EDM_ML_DEBUG
172  std::cout << bestId << " Corrected to " << HcalDetId(correctId(bestId)) << std::endl;
173 #endif
174 
175  return (ignoreCorrect ? bestId : correctId(bestId));
176  }
177 }
178 
180  if (!m_mergePosition) {
181  return (getGeometryBase(id)->getPosition());
182  } else {
184  }
185 }
186 
188  if (test) {
189  int subdet, z, depth, eta, phi, lay;
191  int sign = (z == 0) ? (-1) : (1);
192  auto id = m_topology.dddConstants()->getHCID(subdet, (sign * eta), phi, lay, depth);
193  auto hcId = ((id.subdet == static_cast<int>(HcalBarrel))
194  ? HcalDetId(HcalBarrel, sign * id.eta, id.phi, id.depth)
195  : ((id.subdet == static_cast<int>(HcalEndcap))
196  ? HcalDetId(HcalEndcap, sign * id.eta, id.phi, id.depth)
197  : ((id.subdet == static_cast<int>(HcalOuter))
198  ? HcalDetId(HcalOuter, sign * id.eta, id.phi, id.depth)
199  : ((id.subdet == static_cast<int>(HcalForward))
200  ? HcalDetId(HcalForward, sign * id.eta, id.phi, id.depth)
201  : HcalDetId()))));
202  return getPosition(DetId(hcId));
203  } else {
204  return getPosition(DetId(idx));
205  }
206 }
207 
209  if (!m_mergePosition) {
210  return (getGeometryBase(id)->getBackPoint());
211  } else {
212  std::vector<HcalDetId> ids;
214  return (getGeometryBase(ids.back())->getBackPoint());
215  }
216 }
217 
219  if (test) {
220  int subdet, z, depth, eta, phi, lay;
222  int sign = (z == 0) ? (-1) : (1);
223  auto id = m_topology.dddConstants()->getHCID(subdet, (sign * eta), phi, lay, depth);
224  auto hcId = ((id.subdet == static_cast<int>(HcalBarrel))
225  ? HcalDetId(HcalBarrel, sign * id.eta, id.phi, id.depth)
226  : ((id.subdet == static_cast<int>(HcalEndcap))
227  ? HcalDetId(HcalEndcap, sign * id.eta, id.phi, id.depth)
228  : ((id.subdet == static_cast<int>(HcalOuter))
229  ? HcalDetId(HcalOuter, sign * id.eta, id.phi, id.depth)
230  : ((id.subdet == static_cast<int>(HcalForward))
231  ? HcalDetId(HcalForward, sign * id.eta, id.phi, id.depth)
232  : HcalDetId()))));
233  return getBackPosition(DetId(hcId));
234  } else {
235  return getBackPosition(DetId(idx));
236  }
237 }
238 
240  if (!m_mergePosition) {
241  return (getGeometryBase(id)->getCorners());
242  } else {
243  std::vector<HcalDetId> ids;
248  for (unsigned int k = 0; k < 4; ++k) {
249  mcorners[k] = mcf[k];
250  mcorners[k + 4] = mcb[k + 4];
251  }
252  return mcorners;
253  }
254 }
255 
256 int HcalGeometry::etaRing(HcalSubdetector bc, double abseta) const { return m_topology.etaRing(bc, abseta); }
257 
258 int HcalGeometry::phiBin(HcalSubdetector bc, int etaring, double phi) const {
259  return m_topology.phiBin(bc, etaring, phi);
260 }
261 
263  CaloSubdetectorGeometry::DetIdSet dis; // this is the return object
264 
265  if (0.000001 < dR) {
266  if (dR > M_PI / 2.) { // this version needs "small" dR
267  dis = CaloSubdetectorGeometry::getCells(r, dR); // base class version
268  } else {
269  const double dR2(dR * dR);
270  const double reta(r.eta());
271  const double rphi(r.phi());
272  const double lowEta(reta - dR);
273  const double highEta(reta + dR);
274  const double lowPhi(rphi - dR);
275  const double highPhi(rphi + dR);
276 
277  const double hfEtaHi(m_topology.etaMax(HcalForward));
278 
279  if (highEta > -hfEtaHi && lowEta < hfEtaHi) { // in hcal
281 
282  for (unsigned int is(0); is != 4; ++is) {
283  const int sign(reta > 0 ? 1 : -1);
284  const int ieta_center(sign * etaRing(hs[is], fabs(reta)));
285  const int ieta_lo((0 < lowEta * sign ? sign : -sign) * etaRing(hs[is], fabs(lowEta)));
286  const int ieta_hi((0 < highEta * sign ? sign : -sign) * etaRing(hs[is], fabs(highEta)));
287  const int iphi_lo(phiBin(hs[is], ieta_center, lowPhi));
288  const int iphi_hi(phiBin(hs[is], ieta_center, highPhi));
289  const int jphi_lo(iphi_lo > iphi_hi ? iphi_lo - 72 : iphi_lo);
290  const int jphi_hi(iphi_hi);
291 
292  const int idep_lo(1 == is ? 4 : 1);
293  const int idep_hi(m_topology.maxDepth(hs[is]));
294  for (int ieta(ieta_lo); ieta <= ieta_hi; ++ieta) { // over eta limits
295  if (ieta != 0) {
296  for (int jphi(jphi_lo); jphi <= jphi_hi; ++jphi) { // over phi limits
297  const int iphi(1 > jphi ? jphi + 72 : jphi);
298  for (int idep(idep_lo); idep <= idep_hi; ++idep) {
299  const HcalDetId did(hs[is], ieta, iphi, idep);
300  if (m_topology.valid(did)) {
301  std::shared_ptr<const CaloCellGeometry> cell(getGeometryBase(did));
302  if (nullptr != cell) {
303  const GlobalPoint& p(cell->getPosition());
304  const double eta(p.eta());
305  const double phi(p.phi());
306  if (reco::deltaR2(eta, phi, reta, rphi) < dR2)
307  dis.insert(did);
308  }
309  }
310  }
311  }
312  }
313  }
314  }
315  }
316  }
317  }
318  return dis;
319 }
320 
321 unsigned int HcalGeometry::getHxSize(const int type) const {
322  unsigned int hxsize(0);
323  if (!m_hbIds.isSet())
324  fillDetIds();
325  if (type == 1)
326  hxsize = (m_hbIds.isSet()) ? m_hbIds->size() : 0;
327  else if (type == 2)
328  hxsize = (m_heIds.isSet()) ? m_heIds->size() : 0;
329  else if (type == 3)
330  hxsize = (m_hoIds.isSet()) ? m_hoIds->size() : 0;
331  else if (type == 4)
332  hxsize = (m_hfIds.isSet()) ? m_hfIds->size() : 0;
333  else if (type == 0)
334  hxsize = (m_emptyIds.isSet()) ? m_emptyIds->size() : 0;
335  return hxsize;
336 }
337 
340  const int ieta(i < numberOfBarrelAlignments() / 2 ? -1 : 1);
341  const int iphi(1 + (4 * i) % 72);
342  return HcalDetId(HcalBarrel, ieta, iphi, 1);
343 }
344 
347  const int ieta(i < numberOfEndcapAlignments() / 2 ? -16 : 16);
348  const int iphi(1 + (4 * i) % 72);
349  return HcalDetId(HcalEndcap, ieta, iphi, 1);
350 }
351 
354  const int ieta(i < numberOfForwardAlignments() / 2 ? -29 : 29);
355  const int iphi(1 + (4 * i) % 72);
356  return HcalDetId(HcalForward, ieta, iphi, 1);
357 }
358 
361  const int ring(i / 12);
362  const int ieta(0 == ring ? -11 : 1 == ring ? -5 : 2 == ring ? 1 : 3 == ring ? 5 : 11);
363  const int iphi(1 + (i - ring * 12) * 6);
364  return HcalDetId(HcalOuter, ieta, iphi, 4);
365 }
366 
369 
370  const unsigned int nB(numberOfBarrelAlignments());
371  const unsigned int nE(numberOfEndcapAlignments());
372  const unsigned int nF(numberOfForwardAlignments());
373  // const unsigned int nO ( numberOfOuterAlignments() ) ;
374 
375  return (i < nB ? detIdFromBarrelAlignmentIndex(i)
376  : i < nB + nE ? detIdFromEndcapAlignmentIndex(i - nB)
377  : i < nB + nE + nF ? detIdFromForwardAlignmentIndex(i - nB - nE)
378  : detIdFromOuterAlignmentIndex(i - nB - nE - nF));
379 }
380 
381 unsigned int HcalGeometry::alignmentBarEndForIndexLocal(const DetId& id, unsigned int nD) {
382  const HcalDetId hid(id);
383  const unsigned int iphi(hid.iphi());
384  const int ieta(hid.ieta());
385  const unsigned int index((0 < ieta ? nD / 2 : 0) + (iphi + 1) % 72 / 4);
386  assert(index < nD);
387  return index;
388 }
389 
392 }
393 
396 }
397 
400 }
401 
403  const HcalDetId hid(id);
404  const int ieta(hid.ieta());
405  const int iphi(hid.iphi());
406  const int ring(ieta < -10 ? 0 : (ieta < -4 ? 1 : (ieta < 5 ? 2 : (ieta < 11 ? 3 : 4))));
407 
408  const unsigned int index(12 * ring + (iphi - 1) / 6);
410  return index;
411 }
412 
414  assert(id.det() == DetId::Hcal);
415 
416  const HcalDetId hid(id);
417  bool isHB = (hid.subdet() == HcalBarrel);
418  bool isHE = (hid.subdet() == HcalEndcap);
419  bool isHF = (hid.subdet() == HcalForward);
420  // bool isHO = (hid.subdet() == HcalOuter);
421 
422  const unsigned int nB(numberOfBarrelAlignments());
423  const unsigned int nE(numberOfEndcapAlignments());
424  const unsigned int nF(numberOfForwardAlignments());
425  // const unsigned int nO ( numberOfOuterAlignments() ) ;
426 
427  const unsigned int index(isHB ? alignmentBarrelIndexLocal(id)
428  : isHE ? alignmentEndcapIndexLocal(id) + nB
429  : isHF ? alignmentForwardIndexLocal(id) + nB + nE
430  : alignmentOuterIndexLocal(id) + nB + nE + nF);
431 
433  return index;
434 }
435 
436 unsigned int HcalGeometry::alignmentTransformIndexGlobal(const DetId& id) { return (unsigned int)DetId::Hcal - 1; }
437 
438 void HcalGeometry::localCorners(Pt3DVec& lc, const CCGFloat* pv, unsigned int i, Pt3D& ref) {
440 
441  if (hid.subdet() == HcalForward) {
442  IdealZPrism::localCorners(lc, pv, ref);
443  } else {
445  }
446 }
447 
449  const GlobalPoint& f1, const GlobalPoint& f2, const GlobalPoint& f3, const CCGFloat* parm, const DetId& detId) {
450  assert(detId.det() == DetId::Hcal);
451 
452  const HcalDetId hid(detId);
453  unsigned int din = m_topology.detId2denseId(detId);
454 
455 #ifdef EDM_ML_DEBUG
456  std::cout << "HcalGeometry: "
457  << " newCell subdet " << detId.subdetId() << ", raw ID " << detId.rawId() << ", hid " << hid << ", din "
458  << din << ", index " << std::endl;
459 #endif
460 
461  if (hid.subdet() == HcalBarrel) {
463  } else if (hid.subdet() == HcalEndcap) {
464  const unsigned int index(din - m_hbCellVec.size());
466  } else if (hid.subdet() == HcalOuter) {
467  const unsigned int index(din - m_hbCellVec.size() - m_heCellVec.size());
469  } else {
470  const unsigned int index(din - m_hbCellVec.size() - m_heCellVec.size() - m_hoCellVec.size());
471  m_hfCellVec.at(index) = IdealZPrism(f1, cornersMgr(), parm, hid.depth() == 1 ? IdealZPrism::EM : IdealZPrism::HADR);
472  }
473 
474  return din;
475 }
476 
478  const GlobalPoint& f1, const GlobalPoint& f2, const GlobalPoint& f3, const CCGFloat* parm, const DetId& detId) {
479  unsigned int din = newCellImpl(f1, f2, f3, parm, detId);
480 
481  addValidID(detId);
482  m_dins.emplace_back(din);
483 }
484 
486  const GlobalPoint& f1, const GlobalPoint& f2, const GlobalPoint& f3, const CCGFloat* parm, const DetId& detId) {
487  unsigned int din = newCellImpl(f1, f2, f3, parm, detId);
488 
489  m_validIds.emplace_back(detId);
490  m_dins.emplace_back(din);
491 }
492 
494  // Modify the RawPtr class
495  const CaloCellGeometry* cell(nullptr);
496  if (m_hbCellVec.size() > din) {
497  cell = (&m_hbCellVec[din]);
498  } else if (m_hbCellVec.size() + m_heCellVec.size() > din) {
499  const unsigned int ind(din - m_hbCellVec.size());
500  cell = (&m_heCellVec[ind]);
501  } else if (m_hbCellVec.size() + m_heCellVec.size() + m_hoCellVec.size() > din) {
502  const unsigned int ind(din - m_hbCellVec.size() - m_heCellVec.size());
503  cell = (&m_hoCellVec[ind]);
504  } else if (m_hbCellVec.size() + m_heCellVec.size() + m_hoCellVec.size() + m_hfCellVec.size() > din) {
505  const unsigned int ind(din - m_hbCellVec.size() - m_heCellVec.size() - m_hoCellVec.size());
506  cell = (&m_hfCellVec[ind]);
507  }
508 
509  return ((nullptr == cell || nullptr == cell->param()) ? nullptr : cell);
510 }
511 
515  CaloSubdetectorGeometry::IVec& dinsVec) const {
516  tVec.reserve(m_topology.ncells() * numberOfTransformParms());
517  iVec.reserve(numberOfShapes() == 1 ? 1 : m_topology.ncells());
518  dVec.reserve(numberOfShapes() * numberOfParametersPerShape());
519  dinsVec.reserve(m_topology.ncells());
520 
521  for (const auto& pv : parVecVec()) {
522  for (float iv : pv) {
523  dVec.emplace_back(iv);
524  }
525  }
526 
527  for (auto i : m_dins) {
528  Tr3D tr;
529  auto ptr = cellGeomPtr(i);
530 
531  if (nullptr != ptr) {
532  dinsVec.emplace_back(i);
533 
534  const CCGFloat* par(ptr->param());
535 
536  unsigned int ishape(9999);
537 
538  for (unsigned int ivv(0); ivv != parVecVec().size(); ++ivv) {
539  bool ok(true);
540  const CCGFloat* pv(&(*parVecVec()[ivv].begin()));
541  for (unsigned int k(0); k != numberOfParametersPerShape(); ++k) {
542  ok = ok && (fabs(par[k] - pv[k]) < 1.e-6);
543  }
544  if (ok) {
545  ishape = ivv;
546  break;
547  }
548  }
549  assert(9999 != ishape);
550 
551  const unsigned int nn((numberOfShapes() == 1) ? (unsigned int)1 : m_dins.size());
552  if (iVec.size() < nn)
553  iVec.emplace_back(ishape);
554 
555  ptr->getTransform(tr, (Pt3DVec*)nullptr);
556 
557  if (Tr3D() == tr) { // for preshower there is no rotation
558  const GlobalPoint& gp(ptr->getPosition());
559  tr = HepGeom::Translate3D(gp.x(), gp.y(), gp.z());
560  }
561 
562  const CLHEP::Hep3Vector tt(tr.getTranslation());
563  tVec.emplace_back(tt.x());
564  tVec.emplace_back(tt.y());
565  tVec.emplace_back(tt.z());
566  if (6 == numberOfTransformParms()) {
567  const CLHEP::HepRotation rr(tr.getRotation());
568  const ROOT::Math::Transform3D rtr(
569  rr.xx(), rr.xy(), rr.xz(), tt.x(), rr.yx(), rr.yy(), rr.yz(), tt.y(), rr.zx(), rr.zy(), rr.zz(), tt.z());
571  rtr.GetRotation(ea);
572  tVec.emplace_back(ea.Phi());
573  tVec.emplace_back(ea.Theta());
574  tVec.emplace_back(ea.Psi());
575  }
576  }
577  }
578 }
579 
581  if (m_mergePosition) {
582  HcalDetId hid(id);
583  return ((DetId)(m_topology.mergedDepthDetId(hid)));
584  } else {
585  return id;
586  }
587 }
588 
589 void HcalGeometry::increaseReserve(unsigned int extra) { m_validIds.reserve(m_validIds.size() + extra); }
590 
CaloCellGeometry::Tr3D
HepGeom::Transform3D Tr3D
Definition: CaloCellGeometry.h:53
CaloCellGeometry::Pt3DVec
std::vector< Pt3D > Pt3DVec
Definition: CaloCellGeometry.h:55
HcalGeometry::getGeometryRawPtr
const CaloCellGeometry * getGeometryRawPtr(uint32_t index) const override
Definition: HcalGeometry.cc:493
HcalGeometry::increaseReserve
void increaseReserve(unsigned int extra)
Definition: HcalGeometry.cc:589
HcalGeometry::m_mergePosition
bool m_mergePosition
Definition: HcalGeometry.h:147
mps_fire.i
i
Definition: mps_fire.py:428
HcalGeometry::Pt3D
CaloCellGeometry::Pt3D Pt3D
Definition: HcalGeometry.h:30
HcalGeometry::numberOfAlignments
static unsigned int numberOfAlignments()
Definition: HcalGeometry.h:77
CaloCellGeometry::CCGFloat
float CCGFloat
Definition: CaloCellGeometry.h:52
HcalTopology::idFront
HcalDetId idFront(const HcalDetId &id) const
Definition: HcalTopology.h:170
IdealZPrism::HADR
Definition: IdealZPrism.h:28
CaloSubdetectorGeometry::DetIdSet
std::set< DetId > DetIdSet
Definition: CaloSubdetectorGeometry.h:27
groupFilesInBlocks.tt
int tt
Definition: groupFilesInBlocks.py:144
HcalDetId::iphi
constexpr int iphi() const
get the cell iphi
Definition: HcalDetId.h:157
ecaldqm::zside
int zside(DetId const &)
Definition: EcalDQMCommonUtils.cc:189
CaloSubdetectorGeometry::DimVec
std::vector< CCGFloat > DimVec
Definition: CaloSubdetectorGeometry.h:35
HcalGeometry::Pt3DVec
CaloCellGeometry::Pt3DVec Pt3DVec
Definition: HcalGeometry.h:31
findQualityFiles.rr
string rr
Definition: findQualityFiles.py:185
HcalGeometry::newCellImpl
unsigned int newCellImpl(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
Definition: HcalGeometry.cc:448
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
gpuVertexFinder::iv
int32_t *__restrict__ iv
Definition: gpuClusterTracksDBSCAN.h:42
DetId::det
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
gather_cfg.cout
cout
Definition: gather_cfg.py:144
HcalTopology
Definition: HcalTopology.h:26
DetId::Hcal
Definition: DetId.h:28
Pt3DVec
CaloCellGeometry::Pt3DVec Pt3DVec
Definition: HcalGeometry.cc:12
CaloSubdetectorGeometry::TrVec
std::vector< CCGFloat > TrVec
Definition: CaloSubdetectorGeometry.h:33
HcalGeometry::m_hfCellVec
HFCellVec m_hfCellVec
Definition: HcalGeometry.h:159
cms::cuda::assert
assert(be >=bs)
Validation_hcalonly_cfi.sign
sign
Definition: Validation_hcalonly_cfi.py:32
HcalGeometry::m_hbCellVec
HBCellVec m_hbCellVec
Definition: HcalGeometry.h:156
HcalGeometry::init
void init()
Definition: HcalGeometry.cc:24
CaloSubdetectorGeometry::numberOfTransformParms
virtual unsigned int numberOfTransformParms() const
Definition: CaloSubdetectorGeometry.h:94
HcalGeometry::newCellFast
void newCellFast(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
Definition: HcalGeometry.cc:485
HcalTopology::mergedDepthDetId
HcalDetId mergedDepthDetId(const HcalDetId &id) const
Definition: HcalTopology.h:166
HcalTestNumbering.h
HcalGeometry::alignmentBarrelIndexLocal
static unsigned int alignmentBarrelIndexLocal(const DetId &id)
Definition: HcalGeometry.cc:390
HcalGeometry::alignmentTransformIndexLocal
static unsigned int alignmentTransformIndexLocal(const DetId &id)
Definition: HcalGeometry.cc:413
HcalBarrel
Definition: HcalAssistant.h:33
HcalGeometry::alignmentEndcapIndexLocal
static unsigned int alignmentEndcapIndexLocal(const DetId &id)
Definition: HcalGeometry.cc:394
HcalEmpty
Definition: HcalAssistant.h:32
CaloSubdetectorGeometry::IVec
std::vector< unsigned int > IVec
Definition: CaloSubdetectorGeometry.h:34
EZArrayFL< GlobalPoint >
HcalGeometry::numberOfBarrelAlignments
static unsigned int numberOfBarrelAlignments()
Definition: HcalGeometry.h:67
HcalGeometry::HOCellVec
std::vector< IdealObliquePrism > HOCellVec
Definition: HcalGeometry.h:26
HcalTopology::getMergePositionFlag
bool getMergePositionFlag() const
Definition: HcalTopology.h:167
convertSQLiteXML.ok
bool ok
Definition: convertSQLiteXML.py:98
HcalGeometry::detIdFromBarrelAlignmentIndex
static DetId detIdFromBarrelAlignmentIndex(unsigned int i)
Definition: HcalGeometry.cc:338
HcalGeometry::m_hoCellVec
HOCellVec m_hoCellVec
Definition: HcalGeometry.h:158
HcalTopology::etaRing
int etaRing(HcalSubdetector subdet, double eta) const
eta and phi index from eta, phi values
Definition: HcalTopology.cc:998
HcalGeometry.h
HcalGeometry::getValidDetIds
const std::vector< DetId > & getValidDetIds(DetId::Detector det=DetId::Detector(0), int subdet=0) const override
Get a list of valid detector ids (for the given subdetector)
Definition: HcalGeometry.cc:76
HcalGeometry::numberOfParametersPerShape
unsigned int numberOfParametersPerShape() const override
Definition: HcalGeometry.h:43
edm::AtomicPtrCache::isSet
bool isSet() const
Definition: AtomicPtrCache.h:122
HcalGeometry::m_topology
const HcalTopology & m_topology
Definition: HcalGeometry.h:146
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
HcalGeometry::numberOfOuterAlignments
static unsigned int numberOfOuterAlignments()
Definition: HcalGeometry.h:73
HcalGeometry::m_emptyIds
edm::AtomicPtrCache< std::vector< DetId > > m_emptyIds
Definition: HcalGeometry.h:153
HcalTopology::getHESize
unsigned int getHESize() const
Definition: HcalTopology.h:133
HcalGeometry::sortValidIds
void sortValidIds()
Definition: HcalGeometry.cc:591
edm::AtomicPtrCache::set
bool set(std::unique_ptr< T > iNewValue) const
Definition: AtomicPtrCache.h:127
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
HcalTopology::maxDepth
int maxDepth(void) const
Definition: HcalTopology.cc:981
DetId
Definition: DetId.h:17
HcalGeometry::getBackPosition
GlobalPoint getBackPosition(const DetId &id) const
Definition: HcalGeometry.cc:208
HcalGeometry::getSummary
void getSummary(CaloSubdetectorGeometry::TrVec &trVector, CaloSubdetectorGeometry::IVec &iVector, CaloSubdetectorGeometry::DimVec &dimVector, CaloSubdetectorGeometry::IVec &dinsVector) const override
Definition: HcalGeometry.cc:512
CaloSubdetectorGeometry::CCGFloat
CaloCellGeometry::CCGFloat CCGFloat
Definition: CaloSubdetectorGeometry.h:25
test
Definition: SmallWORMDict.h:13
CaloSubdetectorGeometry::getCells
virtual DetIdSet getCells(const GlobalPoint &r, double dR) const
Get a list of all cells within a dR of the given cell.
Definition: CaloSubdetectorGeometry.cc:66
HcalGeometry::HECellVec
std::vector< IdealObliquePrism > HECellVec
Definition: HcalGeometry.h:25
HcalTestNumbering::unpackHcalIndex
static void unpackHcalIndex(const uint32_t &idx, int &det, int &z, int &depth, int &eta, int &phi, int &lay)
Definition: HcalTestNumbering.cc:18
IdealObliquePrism
Definition: IdealObliquePrism.h:28
edm::AtomicPtrCache::load
T const * load() const
Definition: AtomicPtrCache.h:117
HcalGeometry::detIdFromForwardAlignmentIndex
static DetId detIdFromForwardAlignmentIndex(unsigned int i)
Definition: HcalGeometry.cc:352
PVValHelper::eta
Definition: PVValidationHelpers.h:70
HcalObjRepresent::isHF
bool isHF(int etabin, int depth)
Definition: HcalObjRepresent.h:880
CaloSubdetectorGeometry::m_validIds
std::vector< DetId > m_validIds
Definition: CaloSubdetectorGeometry.h:115
DDAxes::z
Tr3D
CaloCellGeometry::Tr3D Tr3D
Definition: CaloCellGeometry.cc:7
HcalGeometry::phiBin
int phiBin(HcalSubdetector bc, int etaring, double phi) const
Definition: HcalGeometry.cc:258
HcalOuter
Definition: HcalAssistant.h:35
dqmdumpme.k
k
Definition: dqmdumpme.py:60
Point3DBase< float, GlobalTag >
HcalGeometry::alignmentOuterIndexLocal
static unsigned int alignmentOuterIndexLocal(const DetId &id)
Definition: HcalGeometry.cc:402
HcalTopology::detId2denseId
unsigned int detId2denseId(const DetId &id) const override
return a linear packed id
Definition: HcalTopology.cc:1519
CaloCellGeometry::Pt3D
HepGeom::Point3D< CCGFloat > Pt3D
Definition: CaloCellGeometry.h:54
CaloSubdetectorGeometry::getValidDetIds
virtual const std::vector< DetId > & getValidDetIds(DetId::Detector det=DetId::Detector(0), int subdet=0) const
Get a list of valid detector ids (for the given subdetector)
Definition: CaloSubdetectorGeometry.cc:32
IdealZPrism
Definition: IdealZPrism.h:26
IdealObliquePrism::localCorners
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: IdealObliquePrism.cc:45
LEDCalibrationChannels.depth
depth
Definition: LEDCalibrationChannels.py:65
HcalDDDRecConstants::getMinDepth
int getMinDepth(const int &itype, const int &ieta, const int &iphi, const int &zside) const
Definition: HcalDDDRecConstants.cc:353
HcalTopology::denseId2detId
DetId denseId2detId(unsigned int) const override
return a linear packed id
Definition: HcalTopology.cc:1562
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
Tr3D
CaloCellGeometry::Tr3D Tr3D
Definition: HcalGeometry.cc:13
HcalGeometry::getGeometry
std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const override
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.cc:89
HcalTopology::getHFSize
unsigned int getHFSize() const
Definition: HcalTopology.h:135
runTauDisplay.gp
gp
Definition: runTauDisplay.py:431
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
HcalDetId::ieta
constexpr int ieta() const
get the cell ieta
Definition: HcalDetId.h:155
HcalGeometry::HBCellVec
std::vector< IdealObliquePrism > HBCellVec
Definition: HcalGeometry.h:24
HcalGeometry::getPosition
GlobalPoint getPosition(const DetId &id) const
Definition: HcalGeometry.cc:179
HcalGeometry::getCorners
CaloCellGeometry::CornersVec getCorners(const DetId &id) const
Definition: HcalGeometry.cc:239
HcalGeometry::m_heCellVec
HECellVec m_heCellVec
Definition: HcalGeometry.h:157
IdealZPrism::localCorners
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: IdealZPrism.cc:73
cropTnPTrees.din
din
Definition: cropTnPTrees.py:30
PVValHelper::phi
Definition: PVValidationHelpers.h:69
HcalTopology::getHOSize
unsigned int getHOSize() const
Definition: HcalTopology.h:134
HcalTopology::getHBSize
unsigned int getHBSize() const
Definition: HcalTopology.h:132
CaloCellGeometry
Definition: CaloCellGeometry.h:50
DeadROC_duringRun.f2
f2
Definition: DeadROC_duringRun.py:220
type
type
Definition: SiPixelVCal_PayloadInspector.cc:37
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
reco::deltaR2
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:16
HcalTopology::dddConstants
const HcalDDDRecConstants * dddConstants() const
Definition: HcalTopology.h:164
CaloCellGeometry::param
const CCGFloat * param() const
Definition: CaloCellGeometry.h:99
HcalDetId::subdet
constexpr HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:138
HcalDetId
Definition: HcalDetId.h:12
MetAnalyzer.pv
def pv(vc)
Definition: MetAnalyzer.py:7
HcalGeometry::newCell
void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId) override
Definition: HcalGeometry.cc:477
CaloSubdetectorGeometry::addValidID
void addValidID(const DetId &id)
Definition: CaloSubdetectorGeometry.cc:27
CCGFloat
CaloCellGeometry::CCGFloat CCGFloat
Definition: HcalGeometry.cc:10
HcalGeometry::fillDetIds
void fillDetIds() const
Definition: HcalGeometry.cc:40
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
DetId::Detector
Detector
Definition: DetId.h:24
HcalObjRepresent::isHE
bool isHE(int etabin, int depth)
Definition: HcalObjRepresent.h:851
HcalGeometry::alignmentTransformIndexGlobal
static unsigned int alignmentTransformIndexGlobal(const DetId &id)
Definition: HcalGeometry.cc:436
HcalGeometry::numberOfForwardAlignments
static unsigned int numberOfForwardAlignments()
Definition: HcalGeometry.h:71
align::EulerAngles
AlgebraicVector EulerAngles
Definition: Definitions.h:34
HcalGeometry::m_dins
CaloSubdetectorGeometry::IVec m_dins
Definition: HcalGeometry.h:154
HcalGeometry::alignmentForwardIndexLocal
static unsigned int alignmentForwardIndexLocal(const DetId &id)
Definition: HcalGeometry.cc:398
IdealZPrism::EM
Definition: IdealZPrism.h:28
alignCSCRings.r
r
Definition: alignCSCRings.py:93
groupFilesInBlocks.nn
nn
Definition: groupFilesInBlocks.py:150
HcalSubdetector
HcalSubdetector
Definition: HcalAssistant.h:31
HcalGeometry::getCells
CaloSubdetectorGeometry::DetIdSet getCells(const GlobalPoint &r, double dR) const override
Get a list of all cells within a dR of the given cell.
Definition: HcalGeometry.cc:262
HcalForward
Definition: HcalAssistant.h:36
HcalTopology::valid
bool valid(const DetId &id) const override
Definition: HcalTopology.cc:225
DDAxes::phi
HcalGeometry::alignmentBarEndForIndexLocal
static unsigned int alignmentBarEndForIndexLocal(const DetId &id, unsigned int nD)
Definition: HcalGeometry.cc:381
HcalGeometry::HcalGeometry
HcalGeometry(const HcalTopology &topology)
Definition: HcalGeometry.cc:17
HcalTopology::etaMax
double etaMax(HcalSubdetector subdet) const
Definition: HcalTopology.cc:1101
CaloCellGeometry.h
HcalGeometry::m_hbIds
edm::AtomicPtrCache< std::vector< DetId > > m_hbIds
Definition: HcalGeometry.h:149
HcalGeometry::m_hoIds
edm::AtomicPtrCache< std::vector< DetId > > m_hoIds
Definition: HcalGeometry.h:151
eostools.move
def move(src, dest)
Definition: eostools.py:511
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
CaloSubdetectorGeometry::cornersMgr
CaloCellGeometry::CornersMgr * cornersMgr()
Definition: CaloSubdetectorGeometry.h:82
Pt3D
CaloCellGeometry::Pt3D Pt3D
Definition: HcalGeometry.cc:11
HcalEndcap
Definition: HcalAssistant.h:34
HcalTopology::incrementDepth
bool incrementDepth(HcalDetId &id) const
Definition: HcalTopology.cc:870
HcalGeometry::detIdFromLocalAlignmentIndex
static DetId detIdFromLocalAlignmentIndex(unsigned int i)
Definition: HcalGeometry.cc:367
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
HcalGeometry::numberOfEndcapAlignments
static unsigned int numberOfEndcapAlignments()
Definition: HcalGeometry.h:69
HcalGeometry::localCorners
void localCorners(Pt3DVec &lc, const CCGFloat *pv, unsigned int i, Pt3D &ref)
Definition: HcalGeometry.cc:438
relativeConstraints.ring
ring
Definition: relativeConstraints.py:68
HcalGeometry::getHxSize
unsigned int getHxSize(const int type) const
Definition: HcalGeometry.cc:321
HcalTopology::ncells
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
Definition: HcalTopology.cc:1687
HcalGeometry::etaRing
int etaRing(HcalSubdetector bc, double abseta) const
helper methods for getClosestCell
Definition: HcalGeometry.cc:256
HcalTopology::unmergeDepthDetId
void unmergeDepthDetId(const HcalDetId &id, std::vector< HcalDetId > &ids) const
Definition: HcalTopology.h:168
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
HcalGeometry::HFCellVec
std::vector< IdealZPrism > HFCellVec
Definition: HcalGeometry.h:27
HcalGeometry::~HcalGeometry
~HcalGeometry() override
The HcalGeometry will delete all its cell geometries at destruction time.
Definition: HcalGeometry.cc:22
HcalGeometry::getGeometryBase
std::shared_ptr< const CaloCellGeometry > getGeometryBase(const DetId &id) const
Definition: HcalGeometry.h:122
CaloSubdetectorGeometry::parVecVec
ParVecVec & parVecVec()
Definition: CaloSubdetectorGeometry.h:89
CaloSubdetectorGeometry::cellGeomPtr
virtual std::shared_ptr< const CaloCellGeometry > cellGeomPtr(uint32_t index) const
Definition: CaloSubdetectorGeometry.cc:260
DeadROC_duringRun.f1
f1
Definition: DeadROC_duringRun.py:219
HcalGeometry::m_heIds
edm::AtomicPtrCache< std::vector< DetId > > m_heIds
Definition: HcalGeometry.h:150
HcalGeometry::detIdFromOuterAlignmentIndex
static DetId detIdFromOuterAlignmentIndex(unsigned int i)
Definition: HcalGeometry.cc:359
HcalGeometry::m_hfIds
edm::AtomicPtrCache< std::vector< DetId > > m_hfIds
Definition: HcalGeometry.h:152
HcalGeometry::correctId
DetId correctId(const DetId &id) const
Definition: HcalGeometry.cc:580
HcalGeometry::numberOfShapes
unsigned int numberOfShapes() const override
Definition: HcalGeometry.h:42
HcalObjRepresent::isHB
bool isHB(int etabin, int depth)
Definition: HcalObjRepresent.h:827
HcalTopology::phiBin
int phiBin(HcalSubdetector subdet, int etaRing, double phi) const
Definition: HcalTopology.cc:1021
HcalGeometry::detIdFromEndcapAlignmentIndex
static DetId detIdFromEndcapAlignmentIndex(unsigned int i)
Definition: HcalGeometry.cc:345
HcalDDDRecConstants::getHCID
HcalID getHCID(int subdet, int ieta, int iphi, int lay, int idepth) const
Definition: HcalDDDRecConstants.cc:161
HcalGeometry::getClosestCell
DetId getClosestCell(const GlobalPoint &r) const override
Definition: HcalGeometry.cc:107