CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
CaloGeometry Class Reference

#include <CaloGeometry.h>

Public Member Functions

 CaloGeometry ()
 
std::shared_ptr< const CaloCellGeometrygetGeometry (const DetId &id) const
 Get the cell geometry of a given detector id. More...
 
GlobalPoint getPosition (const DetId &id) const
 Get the position of a given detector id. More...
 
const CaloSubdetectorGeometrygetSubdetectorGeometry (const DetId &id) const
 access the subdetector geometry for the given subdetector directly More...
 
const CaloSubdetectorGeometrygetSubdetectorGeometry (DetId::Detector det, int subdet) const
 access the subdetector geometry for the given subdetector directly More...
 
std::vector< DetIdgetValidDetIds () const
 Get the list of all valid detector ids. More...
 
const std::vector< DetId > & getValidDetIds (DetId::Detector det, int subdet) const
 Get the list of valid detector ids for the given subdetector. More...
 
bool present (const DetId &id) const
 is this detid present in the geometry? More...
 
void setSubdetGeometry (DetId::Detector det, int subdet, const CaloSubdetectorGeometry *geom)
 Register a subdetector geometry. More...
 

Private Types

enum  {
  kMaxDet = 10, kMinDet = 3, kNDets = kMaxDet - kMinDet + 1, kMaxSub = 6,
  kNSubDets = kMaxSub + 1, kLength = kNDets * kNSubDets
}
 

Private Member Functions

unsigned int makeIndex (DetId::Detector det, int subdet, bool &ok) const
 

Private Attributes

std::vector< const CaloSubdetectorGeometry * > m_geos
 

Static Private Attributes

static const std::vector< DetIdk_emptyVec
 

Detailed Description

Interface class to the geometry information for all calorimetry subdetectors.

Revision
1.7
Author
J. Mans and P. Meridiani

Definition at line 21 of file CaloGeometry.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
kMaxDet 
kMinDet 
kNDets 
kMaxSub 
kNSubDets 
kLength 

Definition at line 59 of file CaloGeometry.h.

59  {
60  kMaxDet = 10,
61  kMinDet = 3,
62  kNDets = kMaxDet - kMinDet + 1,
63  kMaxSub = 6,
64  kNSubDets = kMaxSub + 1,
66  };

Constructor & Destructor Documentation

◆ CaloGeometry()

CaloGeometry::CaloGeometry ( )

Definition at line 9 of file CaloGeometry.cc.

9 : m_geos(kLength, nullptr) {}

Member Function Documentation

◆ getGeometry()

std::shared_ptr< const CaloCellGeometry > CaloGeometry::getGeometry ( const DetId id) const

◆ getPosition()

GlobalPoint CaloGeometry::getPosition ( const DetId id) const

◆ getSubdetectorGeometry() [1/2]

const CaloSubdetectorGeometry * CaloGeometry::getSubdetectorGeometry ( const DetId id) const

access the subdetector geometry for the given subdetector directly

Definition at line 34 of file CaloGeometry.cc.

34  {
35  bool ok;
36 
37  const unsigned int index(makeIndex(id.det(), id.subdetId(), ok));
38  return (ok ? m_geos[index] : nullptr);
39 }

References m_geos, makeIndex(), and convertSQLiteXML::ok.

Referenced by FWRecoGeometryESProducer::addCaloGeometry(), DQMSourcePi0::analyze(), cms::ProducerAnalyzer::analyze(), PhiSymmetryCalibration::analyze(), CaloSimHitAnalysis::analyze(), HcalRecHitsValidation::analyze(), IsolatedTracksCone::analyze(), PFRecHitQTestECALMultiThreshold::beginEvent(), ReducedESRecHitCollectionProducer::beginRun(), IsolatedPixelTrackCandidateProducer::beginRun(), IsolatedPixelTrackCandidateL1TProducer::beginRun(), PFCandidateRecalibrator::beginRun(), HcalHBHEMuonAnalyzer::beginRun(), HcalHBHEMuonHighEtaAnalyzer::beginRun(), HGCalTriggerGeometryBase::bhGeometry(), PhotonEnergyCorrector::calculate(), HcalHaloAlgo::Calculate(), EcalHaloAlgo::Calculate(), CSCHaloAlgo::Calculate(), spr::chargeIsolationEcal(), EcalClusterPUCleaningTools::CleanedSuperCluster(), Multi5x5ClusterProducer::clusterizeECALPart(), IslandClusterProducer::clusterizeECALPart(), CosmicClusterProducer::clusterizeECALPart(), egammaisolation::EgammaRecHitExtractor::deposit(), HcalDigisValidation::dqmBeginRun(), HcalRecHitsAnalyzer::dqmBeginRun(), HGCalHitValidation::dqmBeginRun(), TrackDetMatchInfo::dumpGeometry(), Pi0FixedMassWindowCalibration::duringLoop(), EcalBarrelTopology::EcalBarrelTopology(), EcalClusterLazyToolsBase::EcalClusterLazyToolsBase(), EcalEndcapTopology::EcalEndcapTopology(), HGCalTriggerGeometryBase::eeGeometry(), EgammaRecHitIsolation::EgammaRecHitIsolation(), cms::MinBias::endJob(), HGCalTriggerGeometryBase::fhGeometry(), GlobalHitsAnalyzer::fillECal(), GlobalHitsProdHist::fillECal(), GlobalHitsProducer::fillECal(), HCALRecHitAnalyzer::FillGeometry(), ECALRecHitAnalyzer::FillGeometry(), GlobalHitsAnalyzer::fillHCal(), GlobalHitsProdHist::fillHCal(), GlobalHitsProducer::fillHCal(), GlobalRecHitsAnalyzer::fillHCal(), GlobalRecHitsProducer::fillHCal(), AlCaHOCalibProducer::fillHOStore(), PhotonProducer::fillPhotonCollection(), HcalRecHitsValidation::fillRecHitsTmp(), HLTEcalResonanceFilter::filter(), HLTRegionalEcalResonanceFilter::filter(), filterCellsInCone(), spr::findCone(), spr::findDetIdECAL(), spr::findDetIdHCAL(), BetaCalculatorECAL::getDetailedTrackLengthInXtals(), CaloDetIdAssociator::getDetIdPoints(), HCaloDetIdAssociator::getDetIdPoints(), getGeometry(), spr::getGpos(), hgcal::RecHitTools::getLayer(), getPosition(), CaloDetIdAssociator::getPosition(), HCaloDetIdAssociator::getPosition(), TrackDetMatchInfo::getPosition(), hgcal::RecHitTools::getPositionLayer(), hgcal::RecHitTools::getSubdetectorGeometry(), EcalBasicClusterLocalContCorrection::getValue(), EcalClusterCrackCorrection::getValue(), PFHBHERecHitCreator::importRecHits(), PFHcalRecHitCreator< Digi, Geometry, Layer, Detector >::importRecHits(), PFPSRecHitCreator::importRecHits(), PFHFRecHitCreator::importRecHits(), PFEcalBarrelRecHitCreator::importRecHits(), PFEcalEndcapRecHitCreator::importRecHits(), PFECALHashNavigator::init(), PFBadHcalPseudoClusterProducer::init(), CaloDetIdAssociator::insideElement(), HCaloDetIdAssociator::insideElement(), egammaTools::localEcalClusterCoordsEB(), egammaTools::localEcalClusterCoordsEE(), HLTCaloObjInRegionsProducer< CaloObjType, CaloObjCollType >::makeFilteredColl(), EgammaHLTNxNClusterProducer::makeNxNClusters(), PiZeroAnalyzer::makePizero(), spr::matrixECALIds(), spr::matrixHCALIds(), HGCalTriggerGeometryBase::noseGeometry(), PhysicsTowerOrganizer::PhysicsTowerOrganizer(), present(), PreshowerClusterShapeProducer::produce(), PreshowerPhiClusterProducer::produce(), PreshowerClusterProducer::produce(), PFCandidateRecalibrator::produce(), SelectedElectronFEDListProducer< TEle, TCand >::produce(), HLTRecHitInAllL1RegionsProducer< RecHitType >::produce(), L1EGCrystalClusterEmulatorProducer::produce(), spr::propagateCALO(), spr::propagateCosmicCALO(), spr::propagateHCAL(), spr::propagateHCALBack(), spr::propagateIdECAL(), CaloDualConeSelector< HBHERecHit >::selectCallback(), CaloConeSelector< T >::selectCallback(), hgcal::RecHitTools::setGeometry(), CaloTowersCreationAlgo::setGeometry(), Calorimeter::setupGeometry(), spr::timeOfFlight(), CaloHitResponse::timeOfFlight(), EcalTimeDigiProducer::updateGeometry(), EcalDigiProducer::updateGeometry(), and ValidateGeometry::validateCaloGeometry().

◆ getSubdetectorGeometry() [2/2]

const CaloSubdetectorGeometry * CaloGeometry::getSubdetectorGeometry ( DetId::Detector  det,
int  subdet 
) const

access the subdetector geometry for the given subdetector directly

Definition at line 41 of file CaloGeometry.cc.

41  {
42  bool ok;
43 
44  const unsigned int index(makeIndex(det, subdet, ok));
45  return (ok ? m_geos[index] : nullptr);
46 }

References m_geos, makeIndex(), and convertSQLiteXML::ok.

◆ getValidDetIds() [1/2]

std::vector< DetId > CaloGeometry::getValidDetIds ( ) const

Get the list of all valid detector ids.

Definition at line 75 of file CaloGeometry.cc.

75  {
76  std::vector<DetId> returnValue;
77  returnValue.reserve(kLength);
78 
79  bool doneHcal(false);
80  for (unsigned int i(0); i != m_geos.size(); ++i) {
81  if (nullptr != m_geos[i]) {
82  const std::vector<DetId>& aVec = m_geos[i]->getValidDetIds();
83  if (aVec.empty()) {
84  edm::LogWarning("CaloGeometry") << "Valid det id list at index " << i << " is empty!";
85  }
86  const bool isHcal(!aVec.empty() && DetId::Hcal == aVec.front().det());
87  if (!doneHcal || !isHcal) {
88  returnValue.insert(returnValue.end(), aVec.begin(), aVec.end());
89  if (!doneHcal && isHcal)
90  doneHcal = true;
91  }
92  }
93  }
94  return returnValue;
95 }

References DetId::Hcal, mps_fire::i, kLength, and m_geos.

Referenced by FWRecoGeometryESProducer::addCaloGeometry(), FWTGeoRecoGeometryESProducer::addCaloTowerGeometry(), FWTGeoRecoGeometryESProducer::addEcalCaloGeometry(), FWTGeoRecoGeometryESProducer::addHcalCaloGeometryBarrel(), FWTGeoRecoGeometryESProducer::addHcalCaloGeometryEndcap(), FWTGeoRecoGeometryESProducer::addHcalCaloGeometryForward(), FWTGeoRecoGeometryESProducer::addHcalCaloGeometryOuter(), cms::MinBias::beginRun(), EcalDccWeightBuilder::computeAllWeights(), EcalMixingModuleValidation::computeSDBunchDigi(), HEcalDetIdAssociator::getASetOfValidDetIds(), HHcalDetIdAssociator::getASetOfValidDetIds(), HCaloDetIdAssociator::getASetOfValidDetIds(), ParticleTowerProducer::getNearestTower(), HODetIdAssociator::getValidDetIds(), PreshowerDetIdAssociator::getValidDetIds(), EcalDetIdAssociator::getValidDetIds(), HcalDetIdAssociator::getValidDetIds(), getValidDetIds(), CaloDetIdAssociator::getValidDetIds(), PFHCALDenseIdNavigator< HcalDetId, HcalTopology, false >::init(), EcalTBDigiProducer::initializeEvent(), ParticleTowerProducer::resetTowers(), PhiSymmetryCalibration_step2::setUp(), PhiSymmetryCalibration_step2_SM::setUp(), ParametrizedSubtractor::setupGeometryMap(), PileUpSubtractor::setupGeometryMap(), HcalTBDigiProducer::updateGeometry(), and HcalDigitizer::updateGeometry().

◆ getValidDetIds() [2/2]

const std::vector< DetId > & CaloGeometry::getValidDetIds ( DetId::Detector  det,
int  subdet 
) const

Get the list of valid detector ids for the given subdetector.

Definition at line 97 of file CaloGeometry.cc.

97  {
98  bool ok;
99 
100  const unsigned int index(makeIndex(det, subdet, ok));
101 
102  return (ok && (nullptr != m_geos[index]) ? m_geos[index]->getValidDetIds(det, subdet) : k_emptyVec);
103 }

References getValidDetIds(), k_emptyVec, m_geos, makeIndex(), and convertSQLiteXML::ok.

◆ makeIndex()

unsigned int CaloGeometry::makeIndex ( DetId::Detector  det,
int  subdet,
bool &  ok 
) const
private

Definition at line 11 of file CaloGeometry.cc.

11  {
12  const unsigned int idet(det);
13 
14  ok = (kMinDet <= idet && kMaxDet >= idet && 0 <= subdet && kMaxSub >= subdet);
15  if (!ok)
16  edm::LogWarning("CaloGeometry") << "Det:Subdet " << idet << ":" << subdet << " min|max Det " << kMinDet << ":"
17  << kMaxDet << " min|max subdet 0:" << kMaxSub;
18 
19  return ((det - kMinDet) * kNSubDets + subdet);
20 }

References kMaxDet, kMaxSub, kMinDet, kNSubDets, and convertSQLiteXML::ok.

Referenced by getSubdetectorGeometry(), getValidDetIds(), and setSubdetGeometry().

◆ present()

bool CaloGeometry::present ( const DetId id) const

is this detid present in the geometry?

Definition at line 70 of file CaloGeometry.cc.

70  {
72  return (nullptr == geom ? false : geom->present(id));
73 }

References relativeConstraints::geom, and getSubdetectorGeometry().

◆ setSubdetGeometry()

void CaloGeometry::setSubdetGeometry ( DetId::Detector  det,
int  subdet,
const CaloSubdetectorGeometry geom 
)

Register a subdetector geometry.

Definition at line 22 of file CaloGeometry.cc.

22  {
23  bool ok;
24  const unsigned int index = makeIndex(det, subdet, ok);
25  if (ok)
26  m_geos[index] = geom;
27 
28  edm::LogVerbatim("CaloGeometry") << "Detector=" << (int)det << ", subset=" << subdet << ", index=" << index
29  << ", size=" << m_geos.size();
30 
31  assert(ok);
32 }

References cms::cuda::assert(), relativeConstraints::geom, createfilelist::int, m_geos, makeIndex(), and convertSQLiteXML::ok.

Member Data Documentation

◆ k_emptyVec

const std::vector< DetId > CaloGeometry::k_emptyVec
staticprivate

Definition at line 53 of file CaloGeometry.h.

Referenced by getValidDetIds().

◆ m_geos

std::vector<const CaloSubdetectorGeometry*> CaloGeometry::m_geos
private

Definition at line 55 of file CaloGeometry.h.

Referenced by getSubdetectorGeometry(), getValidDetIds(), and setSubdetGeometry().

mps_fire.i
i
Definition: mps_fire.py:355
CaloGeometry::kNSubDets
Definition: CaloGeometry.h:64
pos
Definition: PixelAliasList.h:18
DetId::Hcal
Definition: DetId.h:28
CaloGeometry::getSubdetectorGeometry
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
cms::cuda::assert
assert(be >=bs)
CaloGeometry::kMaxSub
Definition: CaloGeometry.h:63
convertSQLiteXML.ok
bool ok
Definition: convertSQLiteXML.py:98
CaloGeometry::k_emptyVec
static const std::vector< DetId > k_emptyVec
Definition: CaloGeometry.h:53
CaloGeometry::kLength
Definition: CaloGeometry.h:65
CaloGeometry::makeIndex
unsigned int makeIndex(DetId::Detector det, int subdet, bool &ok) const
Definition: CaloGeometry.cc:11
CaloGeometry::m_geos
std::vector< const CaloSubdetectorGeometry * > m_geos
Definition: CaloGeometry.h:55
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
CaloGeometry::kNDets
Definition: CaloGeometry.h:62
Point3DBase< float, GlobalTag >
edm::LogWarning
Definition: MessageLogger.h:141
notFound
static const GlobalPoint notFound(0, 0, 0)
createfilelist.int
int
Definition: createfilelist.py:10
edm::LogVerbatim
Definition: MessageLogger.h:297
CaloGeometry::getValidDetIds
std::vector< DetId > getValidDetIds() const
Get the list of all valid detector ids.
Definition: CaloGeometry.cc:75
CaloGeometry::kMaxDet
Definition: CaloGeometry.h:60
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
CaloGeometry::kMinDet
Definition: CaloGeometry.h:61