CMS 3D CMS Logo

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

#include <FWTGeoRecoGeometryESProducer.h>

Inheritance diagram for FWTGeoRecoGeometryESProducer:
edm::ESProducer edm::ESProxyFactoryProducer edm::eventsetup::DataProxyProvider

Public Member Functions

 FWTGeoRecoGeometryESProducer (const edm::ParameterSet &)
 
std::unique_ptr< FWTGeoRecoGeometryproduce (const FWTGeoRecoGeometryRecord &)
 
 ~FWTGeoRecoGeometryESProducer (void) override
 
- Public Member Functions inherited from edm::ESProducer
 ESProducer ()
 
 ESProducer (const ESProducer &)=delete
 
ESProxyIndex const * getTokenIndices (unsigned int iIndex) const
 
ESRecordIndex const * getTokenRecordIndices (unsigned int iIndex) const
 
bool hasMayConsumes () const noexcept
 
size_t numberOfTokenIndices (unsigned int iIndex) const
 
ESProducer const & operator= (const ESProducer &)=delete
 
SerialTaskQueueChainqueue ()
 
template<typename Record >
std::optional< std::vector< ESProxyIndex > > updateFromMayConsumes (unsigned int iIndex, const Record &iRecord) const
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &) final
 
 ~ESProducer () noexcept(false) override
 
- Public Member Functions inherited from edm::ESProxyFactoryProducer
 ESProxyFactoryProducer ()
 
 ESProxyFactoryProducer (const ESProxyFactoryProducer &)=delete
 
const ESProxyFactoryProduceroperator= (const ESProxyFactoryProducer &)=delete
 
 ~ESProxyFactoryProducer () noexcept(false) override
 
- Public Member Functions inherited from edm::eventsetup::DataProxyProvider
void createKeyedProxies (EventSetupRecordKey const &key, unsigned int nConcurrentIOVs)
 
 DataProxyProvider ()
 
 DataProxyProvider (const DataProxyProvider &)=delete
 
const ComponentDescriptiondescription () const
 
void fillRecordsNotAllowingConcurrentIOVs (std::set< EventSetupRecordKey > &recordsNotAllowingConcurrentIOVs) const
 
virtual void initConcurrentIOVs (EventSetupRecordKey const &key, unsigned int nConcurrentIOVs)
 
bool isUsingRecord (const EventSetupRecordKey &key) const
 
KeyedProxieskeyedProxies (const EventSetupRecordKey &iRecordKey, unsigned int iovIndex=0)
 
const DataProxyProvideroperator= (const DataProxyProvider &)=delete
 
void setAppendToDataLabel (const edm::ParameterSet &)
 
void setDescription (const ComponentDescription &iDescription)
 
std::set< EventSetupRecordKeyusingRecords () const
 
virtual ~DataProxyProvider () noexcept(false)
 

Private Types

enum  ERecoDet {
  kDummy, kSiPixel, kSiStrip, kMuonDT,
  kMuonRPC, kMuonCSC, kMuonGEM, kMuonME0,
  kECal, kHCal, kCaloTower, kHGCE,
  kHGCH
}
 

Private Member Functions

void addCaloTowerGeometry ()
 
void addCSCGeometry ()
 
void addDTGeometry ()
 
void addEcalCaloGeometry ()
 
void addGEMGeometry ()
 
void addHcalCaloGeometryBarrel ()
 
void addHcalCaloGeometryEndcap ()
 
void addHcalCaloGeometryForward ()
 
void addHcalCaloGeometryOuter ()
 
void addME0Geometry ()
 
void addPixelBarrelGeometry ()
 
void addPixelForwardGeometry ()
 
void addRPCGeometry ()
 
void addTECGeometry ()
 
void addTIBGeometry ()
 
void addTIDGeometry ()
 
void addTOBGeometry ()
 
TGeoManager * createManager (int level)
 
TGeoShape * createShape (const GeomDet *det)
 
TGeoVolume * createVolume (const std::string &name, const GeomDet *det, ERecoDet=kDummy)
 
 FWTGeoRecoGeometryESProducer (const FWTGeoRecoGeometryESProducer &)
 
TGeoVolume * GetDaughter (TGeoVolume *mother, const char *prefix, ERecoDet cidx)
 
TGeoVolume * GetDaughter (TGeoVolume *mother, const char *prefix, ERecoDet cidx, int id)
 
TGeoMedium * GetMedium (ERecoDet)
 
TGeoVolume * GetTopHolder (const char *prefix, ERecoDet cidx)
 
const FWTGeoRecoGeometryESProduceroperator= (const FWTGeoRecoGeometryESProducer &)
 

Private Attributes

bool m_calo
 
const CaloGeometrym_caloGeom = nullptr
 
edm::ESGetToken< CaloGeometry, CaloGeometryRecordm_caloGeomToken
 
TGeoMedium * m_dummyMedium = nullptr
 
bool m_muon
 
std::map< std::string, TGeoShape * > m_nameToShape
 
std::map< ERecoDet, TGeoMedium * > m_recoMedium
 
std::map< TGeoShape *, TGeoVolume * > m_shapeToVolume
 
bool m_tracker
 
const TrackerGeometrym_trackerGeom = nullptr
 
const TrackerTopologym_trackerTopology = nullptr
 
edm::ESGetToken< TrackerTopology, TrackerTopologyRcdm_trackerTopologyToken
 
const GlobalTrackingGeometrym_trackingGeom = nullptr
 
edm::ESGetToken< GlobalTrackingGeometry, GlobalTrackingGeometryRecordm_trackingGeomToken
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::eventsetup::DataProxyProvider
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Types inherited from edm::ESProxyFactoryProducer
using EventSetupRecordKey = eventsetup::EventSetupRecordKey
 
- Protected Types inherited from edm::eventsetup::DataProxyProvider
using KeyedProxiesVector = std::vector< std::pair< DataKey, std::shared_ptr< DataProxy > >>
 
- Protected Member Functions inherited from edm::ESProducer
template<typename T >
auto setWhatProduced (T *iThis, const char *iLabel)
 
template<typename T >
auto setWhatProduced (T *iThis, const es::Label &iLabel={})
 
template<typename T >
auto setWhatProduced (T *iThis, const std::string &iLabel)
 
template<typename T , typename TDecorator >
auto setWhatProduced (T *iThis, const TDecorator &iDec, const es::Label &iLabel={})
 
template<typename T , typename TReturn , typename TRecord >
auto setWhatProduced (T *iThis, TReturn(T ::*iMethod)(const TRecord &), const es::Label &iLabel={})
 
template<typename T , typename TReturn , typename TRecord , typename TArg >
ESConsumesCollectorT< TRecord > setWhatProduced (T *iThis, TReturn(T ::*iMethod)(const TRecord &), const TArg &iDec, const es::Label &iLabel={})
 
void usesResources (std::vector< std::string > const &)
 
- Protected Member Functions inherited from edm::ESProxyFactoryProducer
template<class TFactory >
void registerFactory (std::unique_ptr< TFactory > iFactory, const std::string &iLabel=std::string())
 
virtual void registerFactoryWithKey (const EventSetupRecordKey &iRecord, std::unique_ptr< eventsetup::ProxyFactoryBase > iFactory, const std::string &iLabel=std::string())
 
KeyedProxiesVector registerProxies (const EventSetupRecordKey &, unsigned int iovIndex) override
 
- Protected Member Functions inherited from edm::eventsetup::DataProxyProvider
template<class T >
void usingRecord ()
 
void usingRecordWithKey (const EventSetupRecordKey &key)
 

Detailed Description

Definition at line 31 of file FWTGeoRecoGeometryESProducer.h.

Member Enumeration Documentation

◆ ERecoDet

Enumerator
kDummy 
kSiPixel 
kSiStrip 
kMuonDT 
kMuonRPC 
kMuonCSC 
kMuonGEM 
kMuonME0 
kECal 
kHCal 
kCaloTower 
kHGCE 
kHGCH 

Definition at line 32 of file FWTGeoRecoGeometryESProducer.h.

32  {
33  kDummy,
34  kSiPixel,
35  kSiStrip,
36  kMuonDT,
37  kMuonRPC,
38  kMuonCSC,
39  kMuonGEM,
40  kMuonME0,
41  kECal,
42  kHCal,
43  kCaloTower,
44  kHGCE,
45  kHGCH
46  };

Constructor & Destructor Documentation

◆ FWTGeoRecoGeometryESProducer() [1/2]

FWTGeoRecoGeometryESProducer::FWTGeoRecoGeometryESProducer ( const edm::ParameterSet pset)

Definition at line 63 of file FWTGeoRecoGeometryESProducer.cc.

63  : m_dummyMedium(nullptr) {
64  m_tracker = pset.getUntrackedParameter<bool>("Tracker", true);
65  m_muon = pset.getUntrackedParameter<bool>("Muon", true);
66  m_calo = pset.getUntrackedParameter<bool>("Calo", true);
67 
68  auto cc = setWhatProduced(this);
69  if (m_tracker || m_muon) {
70  m_trackingGeomToken = cc.consumes();
71  }
72  if (m_tracker) {
73  m_trackerTopologyToken = cc.consumes();
74  }
75  if (m_calo) {
76  m_caloGeomToken = cc.consumes();
77  }
78 }

References m_calo, m_caloGeomToken, m_muon, m_tracker, m_trackerTopologyToken, m_trackingGeomToken, muonDTDigis_cfi::pset, and edm::ESProducer::setWhatProduced().

◆ ~FWTGeoRecoGeometryESProducer()

FWTGeoRecoGeometryESProducer::~FWTGeoRecoGeometryESProducer ( void  )
override

Definition at line 80 of file FWTGeoRecoGeometryESProducer.cc.

80 {}

◆ FWTGeoRecoGeometryESProducer() [2/2]

FWTGeoRecoGeometryESProducer::FWTGeoRecoGeometryESProducer ( const FWTGeoRecoGeometryESProducer )
private

Member Function Documentation

◆ addCaloTowerGeometry()

void FWTGeoRecoGeometryESProducer::addCaloTowerGeometry ( )
private

Definition at line 1067 of file FWTGeoRecoGeometryESProducer.cc.

1067  {
1068  CaloVolMap caloShapeMapP;
1069  CaloVolMap caloShapeMapN;
1070 
1071  TGeoVolume* tv = GetTopHolder("CaloTower", kCaloTower);
1072  TGeoVolume* assembly = GetDaughter(tv, "CaloTower", kCaloTower);
1073 
1075  for (std::vector<DetId>::const_iterator it = vid.begin(), end = vid.end(); it != end; ++it) {
1076  CaloTowerDetId detid = CaloTowerDetId(it->rawId());
1077  const CaloCellGeometry* cellb = (m_caloGeom->getGeometry(*it)).get();
1078  const IdealObliquePrism* cell = dynamic_cast<const IdealObliquePrism*>(cellb);
1079  if (!cell) {
1080  printf("EC not oblique \n");
1081  continue;
1082  }
1083  TGeoVolume* volume = nullptr;
1084  CaloVolMap& caloShapeMap = (cell->etaPos() > 0) ? caloShapeMapP : caloShapeMapN;
1085  CaloVolMap::iterator volIt = caloShapeMap.find(cell->param());
1086  if (volIt == caloShapeMap.end()) {
1089  IdealObliquePrism::localCorners(lc, cell->param(), ref);
1090  HepGeom::Vector3D<float> lCenter;
1091  for (int c = 0; c < 8; ++c)
1092  lCenter += lc[c];
1093  lCenter *= 0.125;
1094 
1095  static const int arrP[] = {3, 2, 1, 0, 7, 6, 5, 4};
1096  static const int arrN[] = {7, 6, 5, 4, 3, 2, 1, 0};
1097  const int* arr = (detid.ieta() > 0) ? &arrP[0] : &arrN[0];
1098 
1099  double points[16];
1100  for (int c = 0; c < 8; ++c) {
1101  points[c * 2 + 0] = lc[arr[c]].x() - lCenter.x();
1102  points[c * 2 + 1] = lc[arr[c]].y() - lCenter.y();
1103  }
1104 
1105  float dz = (lc[4].z() - lc[0].z()) * 0.5;
1106  TGeoShape* solid = new TGeoArb8(dz, &points[0]);
1107  volume = new TGeoVolume("ecal oblique prism", solid, GetMedium(kCaloTower));
1108  caloShapeMap[cell->param()] = volume;
1109  } else {
1110  volume = volIt->second;
1111  }
1112 
1113  HepGeom::Vector3D<float> gCenter;
1114  CaloCellGeometry::CornersVec const& gc = cell->getCorners();
1115  for (int c = 0; c < 8; ++c) {
1116  gCenter += HepGeom::Vector3D<float>(gc[c].x(), gc[c].y(), gc[c].z());
1117  }
1118  gCenter *= 0.125;
1119 
1120  TGeoTranslation gtr(gCenter.x(), gCenter.y(), gCenter.z());
1121  TGeoRotation rot;
1122  rot.SetAngles(cell->phiPos() * TMath::RadToDeg(), 0, 0);
1123 
1124  TGeoVolume* holder = GetDaughter(assembly, "side", kCaloTower, detid.zside());
1125  holder = GetDaughter(holder, "ieta", kCaloTower, detid.ieta());
1126  std::stringstream nname;
1127  nname << detid;
1128  AddLeafNode(holder, volume, nname.str().c_str(), new TGeoCombiTrans(gtr, rot));
1129  }
1130 }

References c, DetId::Calo, PVValHelper::dz, mps_fire::end, CaloCellGeometry::etaPos(), get, CaloCellGeometry::getCorners(), GetDaughter(), CaloGeometry::getGeometry(), GetMedium(), GetTopHolder(), CaloGeometry::getValidDetIds(), CaloTowerDetId::ieta(), kCaloTower, IdealObliquePrism::localCorners(), m_caloGeom, CaloCellGeometry::param(), CaloCellGeometry::phiPos(), HLT_FULL_cff::points, makeMuonMisalignmentScenario::rot, CaloTowerDetId::SubdetId, x, y, z, and CaloTowerDetId::zside().

Referenced by produce().

◆ addCSCGeometry()

void FWTGeoRecoGeometryESProducer::addCSCGeometry ( )
private

Definition at line 628 of file FWTGeoRecoGeometryESProducer.cc.

628  {
630  throw cms::Exception("FatalError") << "Cannnot find CSCGeometry\n";
631 
632  TGeoVolume* tv = GetTopHolder("Muon", kMuonRPC);
633  TGeoVolume* assembly = GetDaughter(tv, "CSC", kMuonCSC);
634 
635  auto const& cscGeom = m_trackingGeom->slaveGeometry(CSCDetId())->dets();
636  for (auto it = cscGeom.begin(), itEnd = cscGeom.end(); it != itEnd; ++it) {
637  unsigned int rawid = (*it)->geographicalId();
638  CSCDetId detId(rawid);
639  std::stringstream s;
640  s << "CSC" << detId;
641  std::string name = s.str();
642 
643  TGeoVolume* child = nullptr;
644 
645  if (auto chamber = dynamic_cast<const CSCChamber*>(*it))
647  else if (auto* layer = dynamic_cast<const CSCLayer*>(*it))
649 
650  if (child) {
651  TGeoVolume* holder = GetDaughter(assembly, "Endcap", kMuonCSC, detId.endcap());
652  holder = GetDaughter(holder, "Station", kMuonCSC, detId.station());
653  holder = GetDaughter(holder, "Ring", kMuonCSC, detId.ring());
654  holder = GetDaughter(holder, "Chamber", kMuonCSC, detId.chamber());
655 
656  // holder->AddNode(child, 1, createPlacement( *it ));
657  AddLeafNode(holder, child, name.c_str(), createPlacement(*it));
658  }
659  }
660 }

References relativeConstraints::chamber, dd4hep::createPlacement(), createVolume(), TrackingGeometry::dets(), GetDaughter(), GetTopHolder(), kMuonCSC, kMuonRPC, phase1PixelTopology::layer, m_trackingGeom, Skims_PA_cff::name, alignCSCRings::s, GlobalTrackingGeometry::slaveGeometry(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by produce().

◆ addDTGeometry()

void FWTGeoRecoGeometryESProducer::addDTGeometry ( )
private

Definition at line 554 of file FWTGeoRecoGeometryESProducer.cc.

554  {
555  TGeoVolume* tv = GetTopHolder("Muon", kMuonRPC);
556  TGeoVolume* assemblyTop = GetDaughter(tv, "DT", kMuonDT);
557 
558  //
559  // DT chambers geometry
560  //
561  {
562  TGeoVolume* assembly = GetDaughter(assemblyTop, "DTChamber", kMuonDT);
563  auto const& dtChamberGeom = m_trackingGeom->slaveGeometry(DTChamberId())->dets();
564  for (auto it = dtChamberGeom.begin(), end = dtChamberGeom.end(); it != end; ++it) {
565  if (auto chamber = dynamic_cast<const DTChamber*>(*it)) {
566  DTChamberId detid = chamber->geographicalId();
567  std::stringstream s;
568  s << detid;
569  std::string name = s.str();
570 
571  TGeoVolume* child = createVolume(name, chamber, kMuonDT);
572  TGeoVolume* holder = GetDaughter(assembly, "Wheel", kMuonDT, detid.wheel());
573  holder = GetDaughter(holder, "Station", kMuonDT, detid.station());
574  holder = GetDaughter(holder, "Sector", kMuonDT, detid.sector());
575 
576  AddLeafNode(holder, child, name.c_str(), createPlacement(chamber));
577  }
578  }
579  }
580 
581  // Fill in DT super layer parameters
582  {
583  TGeoVolume* assembly = GetDaughter(assemblyTop, "DTSuperLayer", kMuonDT);
584  auto const& dtSuperLayerGeom = m_trackingGeom->slaveGeometry(DTSuperLayerId())->dets();
585  for (auto it = dtSuperLayerGeom.begin(), end = dtSuperLayerGeom.end(); it != end; ++it) {
586  if (auto* superlayer = dynamic_cast<const DTSuperLayer*>(*it)) {
587  DTSuperLayerId detid(DetId(superlayer->geographicalId()));
588  std::stringstream s;
589  s << detid;
590  std::string name = s.str();
591 
592  TGeoVolume* child = createVolume(name, superlayer, kMuonDT);
593 
594  TGeoVolume* holder = GetDaughter(assembly, "Wheel", kMuonDT, detid.wheel());
595  holder = GetDaughter(holder, "Station", kMuonDT, detid.station());
596  holder = GetDaughter(holder, "Sector", kMuonDT, detid.sector());
597  holder = GetDaughter(holder, "SuperLayer", kMuonDT, detid.superlayer());
598  AddLeafNode(holder, child, name.c_str(), createPlacement(superlayer));
599  }
600  }
601  }
602  // Fill in DT layer parameters
603  {
604  TGeoVolume* assembly = GetDaughter(assemblyTop, "DTLayer", kMuonDT);
605  auto const& dtLayerGeom = m_trackingGeom->slaveGeometry(DTLayerId())->dets();
606  for (auto it = dtLayerGeom.begin(), end = dtLayerGeom.end(); it != end; ++it) {
607  if (auto layer = dynamic_cast<const DTLayer*>(*it)) {
608  DTLayerId detid(DetId(layer->geographicalId()));
609 
610  std::stringstream s;
611  s << detid;
612  std::string name = s.str();
613 
614  TGeoVolume* child = createVolume(name, layer, kMuonDT);
615 
616  TGeoVolume* holder = GetDaughter(assembly, "Wheel", kMuonDT, detid.wheel());
617  holder = GetDaughter(holder, "Station", kMuonDT, detid.station());
618  holder = GetDaughter(holder, "Sector", kMuonDT, detid.sector());
619  holder = GetDaughter(holder, "SuperLayer", kMuonDT, detid.superlayer());
620  holder = GetDaughter(holder, "Layer", kMuonDT, detid.layer());
621  AddLeafNode(holder, child, name.c_str(), createPlacement(layer));
622  }
623  }
624  }
625 }

References relativeConstraints::chamber, dd4hep::createPlacement(), createVolume(), TrackingGeometry::dets(), mps_fire::end, GetDaughter(), GetTopHolder(), kMuonDT, kMuonRPC, phase1PixelTopology::layer, m_trackingGeom, Skims_PA_cff::name, alignCSCRings::s, GlobalTrackingGeometry::slaveGeometry(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by produce().

◆ addEcalCaloGeometry()

void FWTGeoRecoGeometryESProducer::addEcalCaloGeometry ( void  )
private

Definition at line 1194 of file FWTGeoRecoGeometryESProducer.cc.

1194  {
1195  TGeoVolume* tv = GetTopHolder("ECal", kECal);
1196  CaloVolMap caloShapeMap;
1197 
1198  {
1199  TGeoVolume* assembly = GetDaughter(tv, "ECalBarrel", kECal);
1200 
1202  for (std::vector<DetId>::const_iterator it = vid.begin(), end = vid.end(); it != end; ++it) {
1203  EBDetId detid(*it);
1204  const CaloCellGeometry* cellb = (m_caloGeom->getGeometry(*it)).get();
1205  const TruncatedPyramid* cell = dynamic_cast<const TruncatedPyramid*>(cellb);
1206  if (!cell) {
1207  printf("ecalBarrel cell not a TruncatedPyramid !!\n");
1208  return;
1209  }
1210 
1211  TGeoVolume* volume = nullptr;
1212  CaloVolMap::iterator volIt = caloShapeMap.find(cell->param());
1213  if (volIt == caloShapeMap.end()) {
1214  volume = new TGeoVolume("EE TruncatedPyramid", makeEcalShape(cell), GetMedium(kECal));
1215  caloShapeMap[cell->param()] = volume;
1216  } else {
1217  volume = volIt->second;
1218  }
1219  TGeoHMatrix* mtx = getEcalTrans(cell->getCorners());
1220  TGeoVolume* holder = GetDaughter(assembly, "side", kECal, detid.zside());
1221  holder = GetDaughter(holder, "ieta", kECal, detid.ieta());
1222  std::stringstream nname;
1223  nname << detid;
1224  AddLeafNode(holder, volume, nname.str().c_str(), mtx);
1225  }
1226  }
1227 
1228  {
1229  TGeoVolume* assembly = GetDaughter(tv, "ECalEndcap", kECal);
1230 
1232  for (std::vector<DetId>::const_iterator it = vid.begin(), end = vid.end(); it != end; ++it) {
1233  EEDetId detid(*it);
1234  const CaloCellGeometry* cellb = (m_caloGeom->getGeometry(*it)).get();
1235  const TruncatedPyramid* cell = dynamic_cast<const TruncatedPyramid*>(cellb);
1236  if (!cell) {
1237  printf("ecalEndcap cell not a TruncatedPyramid !!\n");
1238  continue;
1239  }
1240 
1241  TGeoVolume* volume = nullptr;
1242  CaloVolMap::iterator volIt = caloShapeMap.find(cell->param());
1243  if (volIt == caloShapeMap.end()) {
1244  volume = new TGeoVolume("EE TruncatedPyramid", makeEcalShape(cell), GetMedium(kECal));
1245  caloShapeMap[cell->param()] = volume;
1246  } else {
1247  volume = volIt->second;
1248  }
1249  TGeoHMatrix* mtx = getEcalTrans(cell->getCorners());
1250  TGeoVolume* holder = GetDaughter(assembly, "side", kECal, detid.zside());
1251  holder = GetDaughter(holder, "ix", kECal, detid.ix());
1252  std::stringstream nname;
1253  nname << detid;
1254  AddLeafNode(holder, volume, nname.str().c_str(), mtx);
1255  }
1256  }
1257 }

References DetId::Ecal, EcalBarrel, EcalEndcap, mps_fire::end, get, CaloCellGeometry::getCorners(), GetDaughter(), getEcalTrans(), CaloGeometry::getGeometry(), GetMedium(), GetTopHolder(), CaloGeometry::getValidDetIds(), EBDetId::ieta(), EEDetId::ix(), kECal, m_caloGeom, makeEcalShape(), CaloCellGeometry::param(), EBDetId::zside(), and EEDetId::zside().

Referenced by produce().

◆ addGEMGeometry()

void FWTGeoRecoGeometryESProducer::addGEMGeometry ( )
private

Definition at line 664 of file FWTGeoRecoGeometryESProducer.cc.

664  {
665  try {
667  const GEMGeometry* gemGeom = static_cast<const GEMGeometry*>(m_trackingGeom->slaveGeometry(detId));
668 
669  TGeoVolume* tv = GetTopHolder("Muon", kMuonRPC);
670  TGeoVolume* assemblyTop = GetDaughter(tv, "GEM", kMuonGEM);
671 
672  {
673  TGeoVolume* assembly = GetDaughter(assemblyTop, "GEMSuperChambers", kMuonGEM);
674  for (auto it = gemGeom->superChambers().begin(), end = gemGeom->superChambers().end(); it != end; ++it) {
675  const GEMSuperChamber* sc = (*it);
676  if (sc) {
677  GEMDetId detid = sc->geographicalId();
678  std::stringstream s;
679  s << detid;
680  std::string name = s.str();
681 
682  TGeoVolume* child = createVolume(name, sc, kMuonGEM);
683 
684  TGeoVolume* holder = GetDaughter(assembly, "SuperChamber Region", kMuonGEM, detid.region());
685  holder = GetDaughter(holder, "Ring", kMuonGEM, detid.ring());
686  holder = GetDaughter(holder, "Station", kMuonGEM, detid.station());
687  holder = GetDaughter(holder, "Chamber", kMuonGEM, detid.chamber());
688 
689  AddLeafNode(holder, child, name.c_str(), createPlacement(*it));
690  }
691  }
692  }
693 
694  {
695  TGeoVolume* assembly = GetDaughter(assemblyTop, "GEMetaPartitions", kMuonGEM);
696  for (auto it = gemGeom->etaPartitions().begin(), end = gemGeom->etaPartitions().end(); it != end; ++it) {
697  const GEMEtaPartition* roll = (*it);
698  if (roll) {
699  GEMDetId detid = roll->geographicalId();
700  std::stringstream s;
701  s << detid;
702  std::string name = s.str();
703 
704  TGeoVolume* child = createVolume(name, roll, kMuonGEM);
705 
706  TGeoVolume* holder = GetDaughter(assembly, "ROLL Region", kMuonGEM, detid.region());
707  holder = GetDaughter(holder, "Ring", kMuonGEM, detid.ring());
708  holder = GetDaughter(holder, "Station", kMuonGEM, detid.station());
709  holder = GetDaughter(holder, "Layer", kMuonGEM, detid.layer());
710  holder = GetDaughter(holder, "Chamber", kMuonGEM, detid.chamber());
711 
712  AddLeafNode(holder, child, name.c_str(), createPlacement(*it));
713  }
714  }
715  }
716  } catch (cms::Exception& exception) {
717  edm::LogInfo("FWRecoGeometry") << "failed to produce GEM geometry " << exception.what() << std::endl;
718  }
719 }

References dd4hep::createPlacement(), createVolume(), mps_fire::end, GEMGeometry::etaPartitions(), cppFunctionSkipper::exception, MuonSubdetId::GEM, GeomDet::geographicalId(), GetDaughter(), GetTopHolder(), kMuonGEM, kMuonRPC, m_trackingGeom, DetId::Muon, Skims_PA_cff::name, alignCSCRings::s, GlobalTrackingGeometry::slaveGeometry(), AlCaHLTBitMon_QueryRunRegistry::string, and GEMGeometry::superChambers().

Referenced by produce().

◆ addHcalCaloGeometryBarrel()

void FWTGeoRecoGeometryESProducer::addHcalCaloGeometryBarrel ( void  )
private

Definition at line 785 of file FWTGeoRecoGeometryESProducer.cc.

785  {
786  TGeoVolume* tv = GetTopHolder("HCal", kHCal);
787  TGeoVolume* assembly = GetDaughter(tv, "HCalBarrel", kHCal);
788 
790 
791  CaloVolMap caloShapeMapP;
792  CaloVolMap caloShapeMapN;
793  for (std::vector<DetId>::const_iterator it = vid.begin(), end = vid.end(); it != end; ++it) {
794  //HcalDetId detid = HcalDetId(it->rawId());
795  HcalDetId detid(*it);
796  const CaloCellGeometry* cellb = (m_caloGeom->getGeometry(*it)).get();
797  const IdealObliquePrism* cell = dynamic_cast<const IdealObliquePrism*>(cellb);
798 
799  if (!cell) {
800  printf("HB not oblique !!!\n");
801  continue;
802  }
803 
804  TGeoVolume* volume = nullptr;
805  CaloVolMap& caloShapeMap = (cell->etaPos() > 0) ? caloShapeMapP : caloShapeMapN;
806  CaloVolMap::iterator volIt = caloShapeMap.find(cell->param());
807  if (volIt == caloShapeMap.end()) {
808  // printf("FIREWORKS NEW SHAPE BEGIN eta = %f etaPos = %f, phiPos %f >>>>>> \n", cell->eta(), cell->etaPos(), cell->phiPos());
811  IdealObliquePrism::localCorners(lc, cell->param(), ref);
812  HepGeom::Vector3D<float> lCenter;
813  for (int c = 0; c < 8; ++c)
814  lCenter += lc[c];
815  lCenter *= 0.125;
816 
817  static const int arr[] = {1, 0, 3, 2, 5, 4, 7, 6};
818  double points[16];
819  for (int c = 0; c < 8; ++c) {
820  if (cell->etaPos() > 0)
821  points[c * 2 + 0] = -(lc[arr[c]].z() - lCenter.z());
822  else
823  points[c * 2 + 0] = (lc[arr[c]].z() - lCenter.z());
824  points[c * 2 + 1] = (lc[arr[c]].y() - lCenter.y());
825  // printf("AMT xy[%d] <=>[%d] = (%.4f, %.4f) \n", arr[c], c, points[c*2], points[c*2+1]);
826  }
827 
828  float dz = (lc[4].x() - lc[0].x()) * 0.5;
829  TGeoShape* solid = new TGeoArb8(dz, &points[0]);
830  volume = new TGeoVolume("hcal oblique prism", solid, GetMedium(kHCal));
831  caloShapeMap[cell->param()] = volume;
832  } else {
833  volume = volIt->second;
834  }
835 
836  HepGeom::Vector3D<float> gCenter;
837  CaloCellGeometry::CornersVec const& gc = cell->getCorners();
838  for (int c = 0; c < 8; ++c)
839  gCenter += HepGeom::Vector3D<float>(gc[c].x(), gc[c].y(), gc[c].z());
840  gCenter *= 0.125;
841 
842  TGeoTranslation gtr(gCenter.x(), gCenter.y(), gCenter.z());
843  TGeoRotation rot;
844  rot.RotateY(90);
845 
846  TGeoRotation rotPhi;
847  rotPhi.SetAngles(0, -cell->phiPos() * TMath::RadToDeg(), 0);
848  rot.MultiplyBy(&rotPhi);
849 
850  TGeoVolume* holder = GetDaughter(assembly, "side", kHCal, detid.zside());
851  holder = GetDaughter(holder, "ieta", kHCal, detid.ieta());
852  std::stringstream nname;
853  nname << detid;
854  AddLeafNode(holder, volume, nname.str().c_str(), new TGeoCombiTrans(gtr, rot));
855  }
856 
857  // printf("HB map size P = %lu , N = %lu", caloShapeMapP.size(),caloShapeMapN.size() );
858 }

References c, PVValHelper::dz, mps_fire::end, CaloCellGeometry::etaPos(), get, CaloCellGeometry::getCorners(), GetDaughter(), CaloGeometry::getGeometry(), GetMedium(), GetTopHolder(), CaloGeometry::getValidDetIds(), DetId::Hcal, HcalBarrel, HcalDetId::ieta(), kHCal, IdealObliquePrism::localCorners(), m_caloGeom, CaloCellGeometry::param(), CaloCellGeometry::phiPos(), HLT_FULL_cff::points, makeMuonMisalignmentScenario::rot, x, y, z, and HcalDetId::zside().

Referenced by produce().

◆ addHcalCaloGeometryEndcap()

void FWTGeoRecoGeometryESProducer::addHcalCaloGeometryEndcap ( void  )
private

Definition at line 861 of file FWTGeoRecoGeometryESProducer.cc.

861  {
862  CaloVolMap caloShapeMapP;
863  CaloVolMap caloShapeMapN;
864 
865  TGeoVolume* tv = GetTopHolder("HCal", kHCal);
866  TGeoVolume* assembly = GetDaughter(tv, "HCalEndcap", kHCal);
867 
869 
870  for (std::vector<DetId>::const_iterator it = vid.begin(), end = vid.end(); it != end; ++it) {
871  HcalDetId detid = HcalDetId(it->rawId());
872  const CaloCellGeometry* cellb = (m_caloGeom->getGeometry(*it)).get();
873  const IdealObliquePrism* cell = dynamic_cast<const IdealObliquePrism*>(cellb);
874 
875  if (!cell) {
876  printf("EC not oblique \n");
877  continue;
878  }
879 
880  TGeoVolume* volume = nullptr;
881  CaloVolMap& caloShapeMap = (cell->etaPos() > 0) ? caloShapeMapP : caloShapeMapN;
882  CaloVolMap::iterator volIt = caloShapeMap.find(cell->param());
883  if (volIt == caloShapeMap.end()) {
886  IdealObliquePrism::localCorners(lc, cell->param(), ref);
887  HepGeom::Vector3D<float> lCenter;
888  for (int c = 0; c < 8; ++c)
889  lCenter += lc[c];
890  lCenter *= 0.125;
891 
892  //for( int c = 0; c < 8; ++c)
893  // printf("lc.push_back(TEveVector(%.4f, %.4f, %.4f));\n", lc[c].x(), lc[c].y(), lc[c].z() );
894 
895  static const int arrP[] = {3, 2, 1, 0, 7, 6, 5, 4};
896  static const int arrN[] = {7, 6, 5, 4, 3, 2, 1, 0};
897  const int* arr = (detid.ieta() > 0) ? &arrP[0] : &arrN[0];
898 
899  double points[16];
900  for (int c = 0; c < 8; ++c) {
901  points[c * 2 + 0] = lc[arr[c]].x() - lCenter.x();
902  points[c * 2 + 1] = lc[arr[c]].y() - lCenter.y();
903  }
904 
905  float dz = (lc[4].z() - lc[0].z()) * 0.5;
906  TGeoShape* solid = new TGeoArb8(dz, &points[0]);
907  volume = new TGeoVolume("ecal oblique prism", solid, GetMedium(kHCal));
908  caloShapeMap[cell->param()] = volume;
909  } else {
910  volume = volIt->second;
911  }
912 
913  HepGeom::Vector3D<float> gCenter;
914  CaloCellGeometry::CornersVec const& gc = cell->getCorners();
915  for (int c = 0; c < 8; ++c) {
916  gCenter += HepGeom::Vector3D<float>(gc[c].x(), gc[c].y(), gc[c].z());
917  // printf("gc.push_back(TEveVector(%.4f, %.4f, %.4f));\n", gc[c].x(), gc[c].y(),gc[c].z() );
918  }
919  gCenter *= 0.125;
920 
921  TGeoTranslation gtr(gCenter.x(), gCenter.y(), gCenter.z());
922  TGeoRotation rot;
923  rot.SetAngles(cell->phiPos() * TMath::RadToDeg(), 0, 0);
924 
925  TGeoVolume* holder = GetDaughter(assembly, "side", kHCal, detid.zside());
926  holder = GetDaughter(holder, "ieta", kHCal, detid.ieta());
927  std::stringstream nname;
928  nname << detid;
929  AddLeafNode(holder, volume, nname.str().c_str(), new TGeoCombiTrans(gtr, rot));
930  }
931 
932  // printf("HE map size P = %lu , N = %lu", caloShapeMapP.size(),caloShapeMapN.size() );
933 }

References c, PVValHelper::dz, mps_fire::end, CaloCellGeometry::etaPos(), get, CaloCellGeometry::getCorners(), GetDaughter(), CaloGeometry::getGeometry(), GetMedium(), GetTopHolder(), CaloGeometry::getValidDetIds(), DetId::Hcal, HcalEndcap, HcalDetId::ieta(), kHCal, IdealObliquePrism::localCorners(), m_caloGeom, CaloCellGeometry::param(), CaloCellGeometry::phiPos(), HLT_FULL_cff::points, makeMuonMisalignmentScenario::rot, x, y, z, and HcalDetId::zside().

Referenced by produce().

◆ addHcalCaloGeometryForward()

void FWTGeoRecoGeometryESProducer::addHcalCaloGeometryForward ( )
private

Definition at line 1001 of file FWTGeoRecoGeometryESProducer.cc.

1001  {
1002  CaloVolMap caloShapeMapP;
1003  CaloVolMap caloShapeMapN;
1004 
1005  TGeoVolume* tv = GetTopHolder("HCal", kHCal);
1006  TGeoVolume* assembly = GetDaughter(tv, "HCalForward", kHCal);
1007 
1009 
1010  for (std::vector<DetId>::const_iterator it = vid.begin(), end = vid.end(); it != end; ++it) {
1011  HcalDetId detid = HcalDetId(it->rawId());
1012  const CaloCellGeometry* cellb = (m_caloGeom->getGeometry(*it)).get();
1013  const IdealZPrism* cell = dynamic_cast<const IdealZPrism*>(cellb);
1014 
1015  if (!cell) {
1016  printf("EC not Z prism \n");
1017  continue;
1018  }
1019 
1020  TGeoVolume* volume = nullptr;
1021  CaloVolMap& caloShapeMap = (cell->etaPos() > 0) ? caloShapeMapP : caloShapeMapN;
1022  CaloVolMap::iterator volIt = caloShapeMap.find(cell->param());
1023  if (volIt == caloShapeMap.end()) {
1024  IdealZPrism::Pt3DVec lc(8);
1025  IdealZPrism::Pt3D ref;
1026  IdealZPrism::localCorners(lc, cell->param(), ref);
1027  HepGeom::Vector3D<float> lCenter;
1028  for (int c = 0; c < 8; ++c)
1029  lCenter += lc[c];
1030  lCenter *= 0.125;
1031  static const int arrP[] = {3, 2, 1, 0, 7, 6, 5, 4};
1032  static const int arrN[] = {7, 6, 5, 4, 3, 2, 1, 0};
1033  const int* arr = (detid.ieta() > 0) ? &arrP[0] : &arrN[0];
1034 
1035  double points[16];
1036  for (int c = 0; c < 8; ++c) {
1037  points[c * 2 + 0] = lc[arr[c]].x() - lCenter.x();
1038  points[c * 2 + 1] = lc[arr[c]].y() - lCenter.y();
1039  }
1040 
1041  float dz = (lc[4].z() - lc[0].z()) * 0.5;
1042  TGeoShape* solid = new TGeoArb8(dz, &points[0]);
1043  volume = new TGeoVolume("ecal oblique prism", solid, GetMedium(kHCal));
1044  caloShapeMap[cell->param()] = volume;
1045  } else {
1046  volume = volIt->second;
1047  }
1048  HepGeom::Vector3D<float> gCenter;
1049  CaloCellGeometry::CornersVec const& gc = cell->getCorners();
1050  for (int c = 0; c < 8; ++c) {
1051  gCenter += HepGeom::Vector3D<float>(gc[c].x(), gc[c].y(), gc[c].z());
1052  }
1053  gCenter *= 0.125;
1054 
1055  TGeoTranslation gtr(gCenter.x(), gCenter.y(), gCenter.z());
1056  TGeoRotation rot;
1057  rot.SetAngles(cell->phiPos() * TMath::RadToDeg(), 0, 0);
1058 
1059  TGeoVolume* holder = GetDaughter(assembly, "side", kHCal, detid.zside());
1060  holder = GetDaughter(holder, "ieta", kHCal, detid.ieta());
1061  std::stringstream nname;
1062  nname << detid;
1063  AddLeafNode(holder, volume, nname.str().c_str(), new TGeoCombiTrans(gtr, rot));
1064  }
1065 }

References c, PVValHelper::dz, mps_fire::end, CaloCellGeometry::etaPos(), get, CaloCellGeometry::getCorners(), GetDaughter(), CaloGeometry::getGeometry(), GetMedium(), GetTopHolder(), CaloGeometry::getValidDetIds(), DetId::Hcal, HcalForward, HcalDetId::ieta(), kHCal, IdealZPrism::localCorners(), m_caloGeom, CaloCellGeometry::param(), CaloCellGeometry::phiPos(), HLT_FULL_cff::points, makeMuonMisalignmentScenario::rot, x, y, z, and HcalDetId::zside().

Referenced by produce().

◆ addHcalCaloGeometryOuter()

void FWTGeoRecoGeometryESProducer::addHcalCaloGeometryOuter ( )
private

Definition at line 935 of file FWTGeoRecoGeometryESProducer.cc.

935  {
936  CaloVolMap caloShapeMapP;
937  CaloVolMap caloShapeMapN;
938 
939  TGeoVolume* tv = GetTopHolder("HCal", kHCal);
940  TGeoVolume* assembly = GetDaughter(tv, "HCalOuter", kHCal);
941 
943 
944  for (std::vector<DetId>::const_iterator it = vid.begin(), end = vid.end(); it != end; ++it) {
945  HcalDetId detid = HcalDetId(it->rawId());
946  const CaloCellGeometry* cellb = (m_caloGeom->getGeometry(*it)).get();
947  const IdealObliquePrism* cell = dynamic_cast<const IdealObliquePrism*>(cellb);
948 
949  if (!cell) {
950  printf("EC not oblique \n");
951  continue;
952  }
953 
954  TGeoVolume* volume = nullptr;
955  CaloVolMap& caloShapeMap = (cell->etaPos() > 0) ? caloShapeMapP : caloShapeMapN;
956  CaloVolMap::iterator volIt = caloShapeMap.find(cell->param());
957  if (volIt == caloShapeMap.end()) {
960  IdealObliquePrism::localCorners(lc, cell->param(), ref);
961  HepGeom::Vector3D<float> lCenter;
962  for (int c = 0; c < 8; ++c)
963  lCenter += lc[c];
964  lCenter *= 0.125;
965  static const int arrP[] = {3, 2, 1, 0, 7, 6, 5, 4};
966  static const int arrN[] = {7, 6, 5, 4, 3, 2, 1, 0};
967  const int* arr = (detid.ieta() > 0) ? &arrP[0] : &arrN[0];
968 
969  double points[16];
970  for (int c = 0; c < 8; ++c) {
971  points[c * 2 + 0] = lc[arr[c]].x() - lCenter.x();
972  points[c * 2 + 1] = lc[arr[c]].y() - lCenter.y();
973  }
974 
975  float dz = (lc[4].z() - lc[0].z()) * 0.5;
976  TGeoShape* solid = new TGeoArb8(dz, &points[0]);
977  volume = new TGeoVolume("ecal oblique prism", solid, GetMedium(kHCal));
978  caloShapeMap[cell->param()] = volume;
979  } else {
980  volume = volIt->second;
981  }
982  HepGeom::Vector3D<float> gCenter;
983  CaloCellGeometry::CornersVec const& gc = cell->getCorners();
984  for (int c = 0; c < 8; ++c) {
985  gCenter += HepGeom::Vector3D<float>(gc[c].x(), gc[c].y(), gc[c].z());
986  }
987  gCenter *= 0.125;
988 
989  TGeoTranslation gtr(gCenter.x(), gCenter.y(), gCenter.z());
990  TGeoRotation rot;
991  rot.SetAngles(cell->phiPos() * TMath::RadToDeg(), 0, 0);
992 
993  TGeoVolume* holder = GetDaughter(assembly, "side", kHCal, detid.zside());
994  holder = GetDaughter(holder, "ieta", kHCal, detid.ieta());
995  std::stringstream nname;
996  nname << detid;
997  AddLeafNode(holder, volume, nname.str().c_str(), new TGeoCombiTrans(gtr, rot));
998  }
999 }

References c, PVValHelper::dz, mps_fire::end, CaloCellGeometry::etaPos(), get, CaloCellGeometry::getCorners(), GetDaughter(), CaloGeometry::getGeometry(), GetMedium(), GetTopHolder(), CaloGeometry::getValidDetIds(), DetId::Hcal, HcalOuter, HcalDetId::ieta(), kHCal, IdealObliquePrism::localCorners(), m_caloGeom, CaloCellGeometry::param(), CaloCellGeometry::phiPos(), HLT_FULL_cff::points, makeMuonMisalignmentScenario::rot, x, y, z, and HcalDetId::zside().

Referenced by produce().

◆ addME0Geometry()

void FWTGeoRecoGeometryESProducer::addME0Geometry ( )
private

Definition at line 751 of file FWTGeoRecoGeometryESProducer.cc.

751  {
752  TGeoVolume* tv = GetTopHolder("Muon", kMuonME0);
753  TGeoVolume* assembly = GetDaughter(tv, "ME0", kMuonME0);
754 
755  DetId detId(DetId::Muon, 5);
756  try {
757  const ME0Geometry* me0Geom = static_cast<const ME0Geometry*>(m_trackingGeom->slaveGeometry(detId));
758 
759  for (auto roll : me0Geom->etaPartitions()) {
760  if (roll) {
761  unsigned int rawid = roll->geographicalId().rawId();
762  //std::cout << "AMT FWTTTTRecoGeometryES\n" << rawid ;
763 
764  ME0DetId detid(rawid);
765  std::stringstream s;
766  s << detid;
767  std::string name = s.str();
768  TGeoVolume* child = createVolume(name, roll, kMuonME0);
769 
770  TGeoVolume* holder = GetDaughter(assembly, "Region", kMuonME0, detid.region());
771  holder = GetDaughter(holder, "Layer", kMuonME0, detid.layer());
772  holder = GetDaughter(holder, "Chamber", kMuonME0, detid.chamber());
773  AddLeafNode(holder, child, name.c_str(), createPlacement(roll));
774  }
775  }
776  } catch (cms::Exception& exception) {
777  edm::LogInfo("FWRecoGeometry") << "failed to produce ME0 geometry " << exception.what() << std::endl;
778  }
779 }

References dd4hep::createPlacement(), createVolume(), ME0Geometry::etaPartitions(), cppFunctionSkipper::exception, GetDaughter(), GetTopHolder(), kMuonME0, m_trackingGeom, DetId::Muon, Skims_PA_cff::name, alignCSCRings::s, GlobalTrackingGeometry::slaveGeometry(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by produce().

◆ addPixelBarrelGeometry()

void FWTGeoRecoGeometryESProducer::addPixelBarrelGeometry ( )
private

Definition at line 425 of file FWTGeoRecoGeometryESProducer.cc.

425  {
426  TGeoVolume* tv = GetTopHolder("SiPixel", kSiPixel);
427  TGeoVolume* assembly = GetDaughter(tv, "PXB", kSiPixel);
428 
429  for (auto it : m_trackerGeom->detsPXB()) {
430  DetId detid = it->geographicalId();
431  unsigned int layer = m_trackerTopology->pxbLayer(detid);
432  unsigned int module = m_trackerTopology->pxbModule(detid);
433  unsigned int ladder = m_trackerTopology->pxbLadder(detid);
434 
435  std::string name = Form("PXB Ly:%d, Md:%d Ld:%d ", layer, module, ladder);
436  TGeoVolume* child = createVolume(name, it, kSiPixel);
437 
438  TGeoVolume* holder = GetDaughter(assembly, "Layer", kSiPixel, layer);
439  holder = GetDaughter(holder, "Module", kSiPixel, module);
440 
441  AddLeafNode(holder, child, name.c_str(), createPlacement(it));
442  }
443 }

References dd4hep::createPlacement(), createVolume(), TrackerGeometry::detsPXB(), GetDaughter(), GetTopHolder(), kSiPixel, PVValHelper::ladder, phase1PixelTopology::layer, m_trackerGeom, m_trackerTopology, Skims_PA_cff::name, TrackerTopology::pxbLadder(), TrackerTopology::pxbLayer(), TrackerTopology::pxbModule(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by produce().

◆ addPixelForwardGeometry()

void FWTGeoRecoGeometryESProducer::addPixelForwardGeometry ( )
private

Definition at line 445 of file FWTGeoRecoGeometryESProducer.cc.

445  {
446  TGeoVolume* tv = GetTopHolder("SiPixel", kSiPixel);
447  TGeoVolume* assembly = GetDaughter(tv, "PXF", kSiPixel);
448 
449  for (auto it : m_trackerGeom->detsPXF()) {
450  DetId detid = it->geographicalId();
451  unsigned int disk = m_trackerTopology->pxfDisk(detid);
452  unsigned int blade = m_trackerTopology->pxfBlade(detid);
453  unsigned int panel = m_trackerTopology->pxfPanel(detid);
454  unsigned int side = m_trackerTopology->side(detid);
455 
456  std::string name = Form("PXF D:%d, B:%d, P:%d, S:%d", disk, blade, panel, side);
457  TGeoVolume* child = createVolume(name, it, kSiPixel);
458 
459  TGeoVolume* holder = GetDaughter(assembly, "Side", kSiPixel, side);
460  holder = GetDaughter(holder, "Disk", kSiPixel, disk);
461  holder = GetDaughter(holder, "Blade", kSiPixel, blade);
462  holder = GetDaughter(holder, "Panel", kSiPixel, panel);
463 
464  AddLeafNode(holder, child, name.c_str(), createPlacement(it));
465  }
466 }

References dd4hep::createPlacement(), createVolume(), TrackerGeometry::detsPXF(), GetDaughter(), GetTopHolder(), kSiPixel, m_trackerGeom, m_trackerTopology, Skims_PA_cff::name, TrackerTopology::pxfBlade(), TrackerTopology::pxfDisk(), TrackerTopology::pxfPanel(), TrackerTopology::side(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by produce().

◆ addRPCGeometry()

void FWTGeoRecoGeometryESProducer::addRPCGeometry ( )
private

Definition at line 723 of file FWTGeoRecoGeometryESProducer.cc.

723  {
724  TGeoVolume* tv = GetTopHolder("Muon", kMuonRPC);
725  TGeoVolume* assembly = GetDaughter(tv, "RPC", kMuonRPC);
726 
728  const RPCGeometry* rpcGeom = static_cast<const RPCGeometry*>(m_trackingGeom->slaveGeometry(detId));
729  for (auto it = rpcGeom->rolls().begin(), end = rpcGeom->rolls().end(); it != end; ++it) {
730  RPCRoll const* roll = (*it);
731  if (roll) {
732  RPCDetId detid = roll->geographicalId();
733  std::stringstream s;
734  s << detid;
735  std::string name = s.str();
736 
737  TGeoVolume* child = createVolume(name, roll, kMuonRPC);
738 
739  TGeoVolume* holder = GetDaughter(assembly, "ROLL Region", kMuonRPC, detid.region());
740  holder = GetDaughter(holder, "Ring", kMuonRPC, detid.ring());
741  holder = GetDaughter(holder, "Station", kMuonRPC, detid.station());
742  holder = GetDaughter(holder, "Sector", kMuonRPC, detid.sector());
743  holder = GetDaughter(holder, "Layer", kMuonRPC, detid.layer());
744  holder = GetDaughter(holder, "Subsector", kMuonRPC, detid.subsector());
745 
746  AddLeafNode(holder, child, name.c_str(), createPlacement(*it));
747  }
748  };
749 }

References dd4hep::createPlacement(), createVolume(), mps_fire::end, GeomDet::geographicalId(), GetDaughter(), GetTopHolder(), kMuonRPC, m_trackingGeom, DetId::Muon, Skims_PA_cff::name, RPCGeometry::rolls(), MuonSubdetId::RPC, alignCSCRings::s, GlobalTrackingGeometry::slaveGeometry(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by produce().

◆ addTECGeometry()

void FWTGeoRecoGeometryESProducer::addTECGeometry ( )
private

Definition at line 528 of file FWTGeoRecoGeometryESProducer.cc.

528  {
529  TGeoVolume* tv = GetTopHolder("SiStrip", kSiStrip);
530  TGeoVolume* assembly = GetDaughter(tv, "TEC", kSiStrip);
531 
532  for (auto it : m_trackerGeom->detsTEC()) {
533  DetId detid = it->geographicalId();
534  unsigned int order = m_trackerTopology->tecOrder(detid);
535  unsigned int ring = m_trackerTopology->tecRing(detid);
536  unsigned int module = m_trackerTopology->tecModule(detid);
537 
539 
540  TGeoVolume* child = createVolume(name, it, kSiStrip);
541 
542  TGeoVolume* holder = GetDaughter(assembly, "Order", kSiStrip, order);
543  holder = GetDaughter(holder, "Ring", kSiStrip, ring);
544  holder = GetDaughter(holder, "Module", kSiStrip, module);
545  AddLeafNode(holder, child, name.c_str(), createPlacement(it));
546  }
547 }

References dd4hep::createPlacement(), createVolume(), TrackerGeometry::detsTEC(), GetDaughter(), GetTopHolder(), kSiStrip, m_trackerGeom, m_trackerTopology, Skims_PA_cff::name, eventshapeDQM_cfi::order, TrackerTopology::print(), relativeConstraints::ring, AlCaHLTBitMon_QueryRunRegistry::string, TrackerTopology::tecModule(), TrackerTopology::tecOrder(), and TrackerTopology::tecRing().

Referenced by produce().

◆ addTIBGeometry()

void FWTGeoRecoGeometryESProducer::addTIBGeometry ( )
private

Definition at line 468 of file FWTGeoRecoGeometryESProducer.cc.

468  {
469  TGeoVolume* tv = GetTopHolder("SiStrip", kSiStrip);
470  TGeoVolume* assembly = GetDaughter(tv, "TIB", kSiStrip);
471 
472  for (auto it : m_trackerGeom->detsTIB()) {
473  DetId detid = it->geographicalId();
474  unsigned int module = m_trackerTopology->tibModule(detid);
475  unsigned int order = m_trackerTopology->tibOrder(detid);
476  unsigned int side = m_trackerTopology->tibSide(detid);
477 
479 
480  TGeoVolume* child = createVolume(name, it, kSiStrip);
481  TGeoVolume* holder = GetDaughter(assembly, "Module", kSiStrip, module);
482  holder = GetDaughter(holder, "Order", kSiStrip, order);
483  holder = GetDaughter(holder, "Side", kSiStrip, side);
484  AddLeafNode(holder, child, name.c_str(), createPlacement(it));
485  }
486 }

References dd4hep::createPlacement(), createVolume(), TrackerGeometry::detsTIB(), GetDaughter(), GetTopHolder(), kSiStrip, m_trackerGeom, m_trackerTopology, Skims_PA_cff::name, eventshapeDQM_cfi::order, TrackerTopology::print(), AlCaHLTBitMon_QueryRunRegistry::string, TrackerTopology::tibModule(), TrackerTopology::tibOrder(), and TrackerTopology::tibSide().

Referenced by produce().

◆ addTIDGeometry()

void FWTGeoRecoGeometryESProducer::addTIDGeometry ( )
private

Definition at line 488 of file FWTGeoRecoGeometryESProducer.cc.

488  {
489  TGeoVolume* tv = GetTopHolder("SiStrip", kSiStrip);
490  TGeoVolume* assembly = GetDaughter(tv, "TID", kSiStrip);
491 
492  for (auto it : m_trackerGeom->detsTID()) {
493  DetId detid = it->geographicalId();
494  unsigned int side = m_trackerTopology->tidSide(detid);
495  unsigned int wheel = m_trackerTopology->tidWheel(detid);
496  unsigned int ring = m_trackerTopology->tidRing(detid);
497 
499 
500  TGeoVolume* child = createVolume(name, it, kSiStrip);
501  TGeoVolume* holder = GetDaughter(assembly, "Side", kSiStrip, side);
502  holder = GetDaughter(holder, "Wheel", kSiStrip, wheel);
503  holder = GetDaughter(holder, "Ring", kSiStrip, ring);
504  AddLeafNode(holder, child, name.c_str(), createPlacement(it));
505  }
506 }

References dd4hep::createPlacement(), createVolume(), TrackerGeometry::detsTID(), GetDaughter(), GetTopHolder(), kSiStrip, m_trackerGeom, m_trackerTopology, Skims_PA_cff::name, TrackerTopology::print(), relativeConstraints::ring, AlCaHLTBitMon_QueryRunRegistry::string, TrackerTopology::tidRing(), TrackerTopology::tidSide(), TrackerTopology::tidWheel(), and makeMuonMisalignmentScenario::wheel.

Referenced by produce().

◆ addTOBGeometry()

void FWTGeoRecoGeometryESProducer::addTOBGeometry ( )
private

Definition at line 508 of file FWTGeoRecoGeometryESProducer.cc.

508  {
509  TGeoVolume* tv = GetTopHolder("SiStrip", kSiStrip);
510  TGeoVolume* assembly = GetDaughter(tv, "TOB", kSiStrip);
511 
512  for (auto it : m_trackerGeom->detsTOB()) {
513  DetId detid = it->geographicalId();
514  unsigned int rod = m_trackerTopology->tobRod(detid);
515  unsigned int side = m_trackerTopology->tobSide(detid);
516  unsigned int module = m_trackerTopology->tobModule(detid);
517 
519 
520  TGeoVolume* child = createVolume(name, it, kSiStrip);
521  TGeoVolume* holder = GetDaughter(assembly, "Rod", kSiStrip, rod);
522  holder = GetDaughter(holder, "Side", kSiStrip, side);
523  holder = GetDaughter(holder, "Module", kSiStrip, module);
524  AddLeafNode(holder, child, name.c_str(), createPlacement(it));
525  }
526 }

References dd4hep::createPlacement(), createVolume(), TrackerGeometry::detsTOB(), GetDaughter(), GetTopHolder(), kSiStrip, m_trackerGeom, m_trackerTopology, Skims_PA_cff::name, TrackerTopology::print(), AlCaHLTBitMon_QueryRunRegistry::string, TrackerTopology::tobModule(), TrackerTopology::tobRod(), and TrackerTopology::tobSide().

Referenced by produce().

◆ createManager()

TGeoManager* FWTGeoRecoGeometryESProducer::createManager ( int  level)
private

◆ createShape()

TGeoShape * FWTGeoRecoGeometryESProducer::createShape ( const GeomDet det)
private

Create TGeo shape for GeomDet

Definition at line 339 of file FWTGeoRecoGeometryESProducer.cc.

339  {
340  TGeoShape* shape = nullptr;
341 
342  // Trapezoidal
343  const Bounds* b = &((det->surface()).bounds());
344  const TrapezoidalPlaneBounds* b2 = dynamic_cast<const TrapezoidalPlaneBounds*>(b);
345  if (b2) {
346  std::array<const float, 4> const& par = b2->parameters();
347 
348  // These parameters are half-lengths, as in CMSIM/GEANT3
349  float hBottomEdge = par[0];
350  float hTopEdge = par[1];
351  float thickness = par[2];
352  float apothem = par[3];
353 
354  std::stringstream s;
355  s << "T_" << hBottomEdge << "_" << hTopEdge << "_" << thickness << "_" << apothem;
356  std::string name = s.str();
357 
358  // Do not create identical shape,
359  // if one already exists
360  shape = m_nameToShape[name];
361  if (nullptr == shape) {
362  shape = new TGeoTrap(name.c_str(),
363  thickness, //dz
364  0, //theta
365  0, //phi
366  apothem, //dy1
367  hBottomEdge, //dx1
368  hTopEdge, //dx2
369  0, //alpha1
370  apothem, //dy2
371  hBottomEdge, //dx3
372  hTopEdge, //dx4
373  0); //alpha2
374 
375  m_nameToShape[name] = shape;
376  }
377  }
378  if (dynamic_cast<const RectangularPlaneBounds*>(b) != nullptr) {
379  // Rectangular
380  float length = det->surface().bounds().length();
381  float width = det->surface().bounds().width();
382  float thickness = det->surface().bounds().thickness();
383 
384  std::stringstream s;
385  s << "R_" << width << "_" << length << "_" << thickness;
386  std::string name = s.str();
387 
388  // Do not create identical shape,
389  // if one already exists
390  shape = m_nameToShape[name];
391  if (nullptr == shape) {
392  shape = new TGeoBBox(name.c_str(), width / 2., length / 2., thickness / 2.); // dx, dy, dz
393 
394  m_nameToShape[name] = shape;
395  }
396  }
397 
398  return shape;
399 }

References b, b2, Surface::bounds(), Bounds::length(), m_nameToShape, Skims_PA_cff::name, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, GeomDet::surface(), Bounds::thickness(), Calorimetry_cff::thickness, ApeEstimator_cff::width, and Bounds::width().

Referenced by createVolume().

◆ createVolume()

TGeoVolume * FWTGeoRecoGeometryESProducer::createVolume ( const std::string &  name,
const GeomDet det,
ERecoDet  mid = kDummy 
)
private

Create TGeo volume for GeomDet

Definition at line 402 of file FWTGeoRecoGeometryESProducer.cc.

402  {
403  TGeoShape* solid = createShape(det);
404 
405  std::map<TGeoShape*, TGeoVolume*>::iterator vIt = m_shapeToVolume.find(solid);
406  if (vIt != m_shapeToVolume.end())
407  return vIt->second;
408 
409  TGeoVolume* volume = new TGeoVolume(name.c_str(), solid, GetMedium(mid));
410 
411  m_shapeToVolume[solid] = volume;
412 
413  return volume;
414 }

References createShape(), GetMedium(), m_shapeToVolume, and Skims_PA_cff::name.

Referenced by addCSCGeometry(), addDTGeometry(), addGEMGeometry(), addME0Geometry(), addPixelBarrelGeometry(), addPixelForwardGeometry(), addRPCGeometry(), addTECGeometry(), addTIBGeometry(), addTIDGeometry(), and addTOBGeometry().

◆ GetDaughter() [1/2]

TGeoVolume * FWTGeoRecoGeometryESProducer::GetDaughter ( TGeoVolume *  mother,
const char *  prefix,
ERecoDet  cidx 
)
private

Definition at line 138 of file FWTGeoRecoGeometryESProducer.cc.

138  {
139  TGeoVolume* res = nullptr;
140  if (mother->GetNdaughters()) {
141  TGeoNode* n = mother->FindNode(Form("%s_1", prefix));
142  if (n)
143  res = n->GetVolume();
144  }
145 
146  if (!res) {
147  // printf("GetDau... new holder %s for mother %s \n", mother->GetName(), prefix);
148  res = new TGeoVolumeAssembly(prefix);
149  res->SetMedium(GetMedium(cidx));
150  mother->AddNode(res, 1);
151  }
152 
153  return res;
154 }

References GetMedium(), dqmiodumpmetadata::n, and hcallasereventfilter2012_cfi::prefix.

◆ GetDaughter() [2/2]

TGeoVolume * FWTGeoRecoGeometryESProducer::GetDaughter ( TGeoVolume *  mother,
const char *  prefix,
ERecoDet  cidx,
int  id 
)
private

Definition at line 121 of file FWTGeoRecoGeometryESProducer.cc.

121  {
122  TGeoVolume* res = nullptr;
123  if (mother->GetNdaughters()) {
124  TGeoNode* n = mother->FindNode(Form("%s_%d_1", prefix, id));
125  if (n)
126  res = n->GetVolume();
127  }
128 
129  if (!res) {
130  res = new TGeoVolumeAssembly(Form("%s_%d", prefix, id));
131  res->SetMedium(GetMedium(cidx));
132  mother->AddNode(res, 1);
133  }
134 
135  return res;
136 }

References GetMedium(), dqmiodumpmetadata::n, and hcallasereventfilter2012_cfi::prefix.

Referenced by addCaloTowerGeometry(), addCSCGeometry(), addDTGeometry(), addEcalCaloGeometry(), addGEMGeometry(), addHcalCaloGeometryBarrel(), addHcalCaloGeometryEndcap(), addHcalCaloGeometryForward(), addHcalCaloGeometryOuter(), addME0Geometry(), addPixelBarrelGeometry(), addPixelForwardGeometry(), addRPCGeometry(), addTECGeometry(), addTIBGeometry(), addTIDGeometry(), addTOBGeometry(), and GetTopHolder().

◆ GetMedium()

TGeoMedium * FWTGeoRecoGeometryESProducer::GetMedium ( ERecoDet  det)
private

Definition at line 181 of file FWTGeoRecoGeometryESProducer.cc.

181  {
182  std::map<ERecoDet, TGeoMedium*>::iterator it = m_recoMedium.find(det);
183  if (it != m_recoMedium.end())
184  return it->second;
185 
187  int color;
188 
189  switch (det) {
190  // TRACKER
191  case kSiPixel:
192  name = "SiPixel";
193  color = GMCol::Green;
194  break;
195 
196  case kSiStrip:
197  name = "SiStrip";
198  color = GMCol::Gray;
199  break;
200  // MUON
201  case kMuonDT:
202  name = "MuonDT";
203  color = GMCol::Blue2;
204  break;
205 
206  case kMuonRPC:
207  name = "MuonRPC";
208  color = GMCol::Red;
209  break;
210 
211  case kMuonGEM:
212  name = "MuonGEM";
213  color = GMCol::Yellow1;
214  break;
215 
216  case kMuonCSC:
217  name = "MuonCSC";
218  color = GMCol::Gray;
219  break;
220 
221  case kMuonME0:
222  name = "MuonME0";
223  color = GMCol::Yellow0;
224  break;
225 
226  // CALO
227  case kECal:
228  name = "ECal";
229  color = GMCol::Blue2;
230  break;
231  case kHCal:
232  name = "HCal";
233  color = GMCol::Orange1;
234  break;
235  case kCaloTower:
236  name = "CaloTower";
237  color = GMCol::Green;
238  break;
239  case kHGCE:
240  name = "HGCEE";
241  color = GMCol::Blue2;
242  break;
243  case kHGCH:
244  name = "HGCEH";
245  color = GMCol::Blue1;
246  break;
247  default:
248  printf("invalid medium id \n");
249  return m_dummyMedium;
250  }
251 
252  TGeoMaterial* mat = new TGeoMaterial(name.c_str(), 0, 0, 0);
253  mat->SetZ(color);
254  m_recoMedium[det] = new TGeoMedium(name.c_str(), 0, mat);
255  mat->SetFillStyle(3000); // tansparency 3000-3100
256  mat->SetDensity(1); // disable override of transparency in TGeoManager::DefaultColors()
257 
258  return m_recoMedium[det];
259 }

References kCaloTower, kECal, kHCal, kHGCE, kHGCH, kMuonCSC, kMuonDT, kMuonGEM, kMuonME0, kMuonRPC, kSiPixel, kSiStrip, m_dummyMedium, m_recoMedium, Skims_PA_cff::name, AlCaHLTBitMon_QueryRunRegistry::string, and Phase2TrackerMonitorDigi_cff::switch.

Referenced by addCaloTowerGeometry(), addEcalCaloGeometry(), addHcalCaloGeometryBarrel(), addHcalCaloGeometryEndcap(), addHcalCaloGeometryForward(), addHcalCaloGeometryOuter(), createVolume(), and GetDaughter().

◆ GetTopHolder()

TGeoVolume * FWTGeoRecoGeometryESProducer::GetTopHolder ( const char *  prefix,
ERecoDet  cidx 
)
private

◆ operator=()

const FWTGeoRecoGeometryESProducer& FWTGeoRecoGeometryESProducer::operator= ( const FWTGeoRecoGeometryESProducer )
private

◆ produce()

std::unique_ptr< FWTGeoRecoGeometry > FWTGeoRecoGeometryESProducer::produce ( const FWTGeoRecoGeometryRecord record)

Definition at line 263 of file FWTGeoRecoGeometryESProducer.cc.

263  {
264  using namespace edm;
265 
266  auto fwTGeoRecoGeometry = std::make_unique<FWTGeoRecoGeometry>();
267 
268  if (m_calo) {
270  }
271 
272  TGeoManager* geom = new TGeoManager("cmsGeo", "CMS Detector");
273  if (nullptr == gGeoIdentity) {
274  gGeoIdentity = new TGeoIdentity("Identity");
275  }
276 
277  fwTGeoRecoGeometry->manager(geom);
278 
279  // Default material is Vacuum
280  TGeoMaterial* vacuum = new TGeoMaterial("Vacuum", 0, 0, 0);
281  m_dummyMedium = new TGeoMedium("reco", 0, vacuum);
282 
283  TGeoVolume* top = geom->MakeBox("CMS", m_dummyMedium, 270., 270., 120.);
284 
285  if (nullptr == top) {
286  return std::unique_ptr<FWTGeoRecoGeometry>();
287  }
288  geom->SetTopVolume(top);
289  // ROOT chokes unless colors are assigned
290  top->SetVisibility(kFALSE);
291  top->SetLineColor(kBlue);
292 
293  if (m_tracker || m_muon) {
295  }
296 
297  if (m_tracker) {
298  DetId detId(DetId::Tracker, 0);
299  m_trackerGeom = static_cast<const TrackerGeometry*>(m_trackingGeom->slaveGeometry(detId));
300 
302 
305 
306  addTIBGeometry();
307  addTIDGeometry();
308  addTOBGeometry();
309  addTECGeometry();
310  }
311 
312  if (m_muon) {
313  addDTGeometry();
314  addCSCGeometry();
315  addRPCGeometry();
316  addME0Geometry();
317  addGEMGeometry();
318  }
319 
320  if (m_calo) {
327  }
328 
329  geom->CloseGeometry();
330 
331  geom->DefaultColors();
332  // printf("==== geo manager NNodes = %d \n", geom->GetNNodes());
333  geom->CloseGeometry();
334 
335  return fwTGeoRecoGeometry;
336 }

References addCaloTowerGeometry(), addCSCGeometry(), addDTGeometry(), addEcalCaloGeometry(), addGEMGeometry(), addHcalCaloGeometryBarrel(), addHcalCaloGeometryEndcap(), addHcalCaloGeometryForward(), addHcalCaloGeometryOuter(), addME0Geometry(), addPixelBarrelGeometry(), addPixelForwardGeometry(), addRPCGeometry(), addTECGeometry(), addTIBGeometry(), addTIDGeometry(), addTOBGeometry(), relativeConstraints::geom, m_calo, m_caloGeom, m_caloGeomToken, m_dummyMedium, m_muon, m_tracker, m_trackerGeom, m_trackerTopology, m_trackerTopologyToken, m_trackingGeom, m_trackingGeomToken, GlobalPosition_Frontier_DevDB_cff::record, GlobalTrackingGeometry::slaveGeometry(), and DetId::Tracker.

Member Data Documentation

◆ m_calo

bool FWTGeoRecoGeometryESProducer::m_calo
private

Definition at line 104 of file FWTGeoRecoGeometryESProducer.h.

Referenced by FWTGeoRecoGeometryESProducer(), and produce().

◆ m_caloGeom

const CaloGeometry* FWTGeoRecoGeometryESProducer::m_caloGeom = nullptr
private

◆ m_caloGeomToken

edm::ESGetToken<CaloGeometry, CaloGeometryRecord> FWTGeoRecoGeometryESProducer::m_caloGeomToken
private

Definition at line 93 of file FWTGeoRecoGeometryESProducer.h.

Referenced by FWTGeoRecoGeometryESProducer(), and produce().

◆ m_dummyMedium

TGeoMedium* FWTGeoRecoGeometryESProducer::m_dummyMedium = nullptr
private

Definition at line 100 of file FWTGeoRecoGeometryESProducer.h.

Referenced by GetMedium(), and produce().

◆ m_muon

bool FWTGeoRecoGeometryESProducer::m_muon
private

Definition at line 103 of file FWTGeoRecoGeometryESProducer.h.

Referenced by FWTGeoRecoGeometryESProducer(), and produce().

◆ m_nameToShape

std::map<std::string, TGeoShape*> FWTGeoRecoGeometryESProducer::m_nameToShape
private

Definition at line 87 of file FWTGeoRecoGeometryESProducer.h.

Referenced by createShape().

◆ m_recoMedium

std::map<ERecoDet, TGeoMedium*> FWTGeoRecoGeometryESProducer::m_recoMedium
private

Definition at line 89 of file FWTGeoRecoGeometryESProducer.h.

Referenced by GetMedium().

◆ m_shapeToVolume

std::map<TGeoShape*, TGeoVolume*> FWTGeoRecoGeometryESProducer::m_shapeToVolume
private

Definition at line 88 of file FWTGeoRecoGeometryESProducer.h.

Referenced by createVolume().

◆ m_tracker

bool FWTGeoRecoGeometryESProducer::m_tracker
private

Definition at line 102 of file FWTGeoRecoGeometryESProducer.h.

Referenced by FWTGeoRecoGeometryESProducer(), and produce().

◆ m_trackerGeom

const TrackerGeometry* FWTGeoRecoGeometryESProducer::m_trackerGeom = nullptr
private

◆ m_trackerTopology

const TrackerTopology* FWTGeoRecoGeometryESProducer::m_trackerTopology = nullptr
private

◆ m_trackerTopologyToken

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> FWTGeoRecoGeometryESProducer::m_trackerTopologyToken
private

Definition at line 92 of file FWTGeoRecoGeometryESProducer.h.

Referenced by FWTGeoRecoGeometryESProducer(), and produce().

◆ m_trackingGeom

const GlobalTrackingGeometry* FWTGeoRecoGeometryESProducer::m_trackingGeom = nullptr
private

◆ m_trackingGeomToken

edm::ESGetToken<GlobalTrackingGeometry, GlobalTrackingGeometryRecord> FWTGeoRecoGeometryESProducer::m_trackingGeomToken
private

Definition at line 91 of file FWTGeoRecoGeometryESProducer.h.

Referenced by FWTGeoRecoGeometryESProducer(), and produce().

MuonSubdetId::GEM
static constexpr int GEM
Definition: MuonSubdetId.h:14
TrackerTopology::tibOrder
unsigned int tibOrder(const DetId &id) const
Definition: TrackerTopology.h:209
ME0Geometry::etaPartitions
const std::vector< ME0EtaPartition const * > & etaPartitions() const
Return a vector of all ME0 eta partitions.
Definition: ME0Geometry.cc:33
RPCRoll
Definition: RPCRoll.h:12
FWTGeoRecoGeometryESProducer::addEcalCaloGeometry
void addEcalCaloGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:1194
DTSuperLayerId
Definition: DTSuperLayerId.h:12
TrackerTopology::side
unsigned int side(const DetId &id) const
Definition: TrackerTopology.cc:28
DDAxes::y
ApeEstimator_cff.width
width
Definition: ApeEstimator_cff.py:24
FWTGeoRecoGeometryESProducer::m_recoMedium
std::map< ERecoDet, TGeoMedium * > m_recoMedium
Definition: FWTGeoRecoGeometryESProducer.h:89
FWTGeoRecoGeometryESProducer::kMuonRPC
Definition: FWTGeoRecoGeometryESProducer.h:37
FWTGeoRecoGeometryESProducer::kMuonME0
Definition: FWTGeoRecoGeometryESProducer.h:40
Bounds::width
virtual float width() const =0
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
FWTGeoRecoGeometryESProducer::addHcalCaloGeometryBarrel
void addHcalCaloGeometryBarrel()
Definition: FWTGeoRecoGeometryESProducer.cc:785
FWTGeoRecoGeometryESProducer::addCSCGeometry
void addCSCGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:628
GEMSuperChamber
Definition: GEMSuperChamber.h:19
vid
Definition: VIDCutFlowResult.h:25
FWTGeoRecoGeometryESProducer::kECal
Definition: FWTGeoRecoGeometryESProducer.h:41
HLT_FULL_cff.points
points
Definition: HLT_FULL_cff.py:21453
IdealObliquePrism::Pt3DVec
CaloCellGeometry::Pt3DVec Pt3DVec
Definition: IdealObliquePrism.h:32
FWTGeoRecoGeometryESProducer::m_trackerTopologyToken
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > m_trackerTopologyToken
Definition: FWTGeoRecoGeometryESProducer.h:92
FWTGeoRecoGeometryESProducer::m_tracker
bool m_tracker
Definition: FWTGeoRecoGeometryESProducer.h:102
EBDetId
Definition: EBDetId.h:17
edm
HLT enums.
Definition: AlignableModifier.h:19
ME0Geometry
Definition: ME0Geometry.h:12
TrackerTopology::pxbLadder
unsigned int pxbLadder(const DetId &id) const
Definition: TrackerTopology.h:155
RPCDetId
Definition: RPCDetId.h:16
FWTGeoRecoGeometryESProducer::addTOBGeometry
void addTOBGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:508
GEMEtaPartition
Definition: GEMEtaPartition.h:12
DetId::Hcal
Definition: DetId.h:28
FWTGeoRecoGeometryESProducer::GetDaughter
TGeoVolume * GetDaughter(TGeoVolume *mother, const char *prefix, ERecoDet cidx, int id)
Definition: FWTGeoRecoGeometryESProducer.cc:121
edm::ESProducer::setWhatProduced
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:163
GlobalPosition_Frontier_DevDB_cff.record
record
Definition: GlobalPosition_Frontier_DevDB_cff.py:10
Bounds
Definition: Bounds.h:18
TrackingGeometry::dets
virtual const DetContainer & dets() const =0
Returm a vector of all GeomDet (including all GeomDetUnits)
FWTGeoRecoGeometryESProducer::kMuonDT
Definition: FWTGeoRecoGeometryESProducer.h:36
CaloCellGeometry::getCorners
CornersVec const & getCorners() const
Returns the corner points of this cell's volume.
Definition: CaloCellGeometry.h:73
TruncatedPyramid
A base class to handle the particular shape of Ecal Xtals. Taken from ORCA Calorimetry Code.
Definition: TruncatedPyramid.h:19
FWTGeoRecoGeometryESProducer::addPixelForwardGeometry
void addPixelForwardGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:445
DDAxes::x
CaloTowerDetId::SubdetId
static const int SubdetId
Definition: CaloTowerDetId.h:34
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
HcalBarrel
Definition: HcalAssistant.h:33
EZArrayFL< GlobalPoint >
b2
static constexpr float b2
Definition: L1EGammaCrystalsEmulatorProducer.cc:83
FWTGeoRecoGeometryESProducer::addME0Geometry
void addME0Geometry()
Definition: FWTGeoRecoGeometryESProducer.cc:751
DetId::Calo
Definition: DetId.h:29
FWTGeoRecoGeometryESProducer::addHcalCaloGeometryForward
void addHcalCaloGeometryForward()
Definition: FWTGeoRecoGeometryESProducer.cc:1001
EcalBarrel
Definition: EcalSubdetector.h:10
getEcalTrans
TGeoHMatrix * getEcalTrans(CaloCellGeometry::CornersVec const &gc)
Definition: FWTGeoRecoGeometryESProducer.cc:1134
TrackerTopology::tidRing
unsigned int tidRing(const DetId &id) const
Definition: TrackerTopology.h:218
TrackerTopology::tobRod
unsigned int tobRod(const DetId &id) const
Definition: TrackerTopology.h:195
TrackerTopology::tidWheel
unsigned int tidWheel(const DetId &id) const
Definition: TrackerTopology.h:201
Bounds::length
virtual float length() const =0
TrackerTopology::pxbLayer
unsigned int pxbLayer(const DetId &id) const
Definition: TrackerTopology.h:144
TrackerTopology::tibSide
unsigned int tibSide(const DetId &id) const
Definition: TrackerTopology.h:186
cc
Phase2TrackerMonitorDigi_cff.switch
switch
Definition: Phase2TrackerMonitorDigi_cff.py:13
TrackerTopology::pxfPanel
unsigned int pxfPanel(const DetId &id) const
Definition: TrackerTopology.h:450
TrackerGeometry::detsPXB
const DetContainer & detsPXB() const
Definition: TrackerGeometry.cc:171
DetId
Definition: DetId.h:17
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
alignCSCRings.s
s
Definition: alignCSCRings.py:92
TrackerGeometry::detsTOB
const DetContainer & detsTOB() const
Definition: TrackerGeometry.cc:179
IdealObliquePrism
Definition: IdealObliquePrism.h:28
FWTGeoRecoGeometryESProducer::kSiStrip
Definition: FWTGeoRecoGeometryESProducer.h:35
FWTGeoRecoGeometryESProducer::addHcalCaloGeometryEndcap
void addHcalCaloGeometryEndcap()
Definition: FWTGeoRecoGeometryESProducer.cc:861
FWTGeoRecoGeometryESProducer::addPixelBarrelGeometry
void addPixelBarrelGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:425
Calorimetry_cff.thickness
thickness
Definition: Calorimetry_cff.py:115
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
mps_fire.end
end
Definition: mps_fire.py:242
DDAxes::z
FWTGeoRecoGeometryESProducer::m_caloGeomToken
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > m_caloGeomToken
Definition: FWTGeoRecoGeometryESProducer.h:93
TrackerTopology::print
std::string print(DetId detid) const
Definition: TrackerTopology.cc:252
FWTGeoRecoGeometryESProducer::GetTopHolder
TGeoVolume * GetTopHolder(const char *prefix, ERecoDet cidx)
Definition: FWTGeoRecoGeometryESProducer.cc:156
TrackerGeometry::detsPXF
const DetContainer & detsPXF() const
Definition: TrackerGeometry.cc:173
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
HcalOuter
Definition: HcalAssistant.h:35
b
double b
Definition: hdecay.h:118
FWTGeoRecoGeometryESProducer::m_dummyMedium
TGeoMedium * m_dummyMedium
Definition: FWTGeoRecoGeometryESProducer.h:100
FWTGeoRecoGeometryESProducer::m_muon
bool m_muon
Definition: FWTGeoRecoGeometryESProducer.h:103
IdealObliquePrism::Pt3D
CaloCellGeometry::Pt3D Pt3D
Definition: IdealObliquePrism.h:31
IdealZPrism
Definition: IdealZPrism.h:26
DTLayerId
Definition: DTLayerId.h:12
IdealObliquePrism::localCorners
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: IdealObliquePrism.cc:45
FWTGeoRecoGeometryESProducer::addDTGeometry
void addDTGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:554
TrackerGeometry::detsTID
const DetContainer & detsTID() const
Definition: TrackerGeometry.cc:177
EEDetId
Definition: EEDetId.h:14
FWTGeoRecoGeometryESProducer::m_trackerGeom
const TrackerGeometry * m_trackerGeom
Definition: FWTGeoRecoGeometryESProducer.h:97
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EcalEndcap
Definition: EcalSubdetector.h:10
FWTGeoRecoGeometryESProducer::m_caloGeom
const CaloGeometry * m_caloGeom
Definition: FWTGeoRecoGeometryESProducer.h:96
cppFunctionSkipper.exception
exception
Definition: cppFunctionSkipper.py:10
GeomDet::geographicalId
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:64
FWTGeoRecoGeometryESProducer::createVolume
TGeoVolume * createVolume(const std::string &name, const GeomDet *det, ERecoDet=kDummy)
Definition: FWTGeoRecoGeometryESProducer.cc:402
Bounds::thickness
virtual float thickness() const =0
HcalDetId::ieta
constexpr int ieta() const
get the cell ieta
Definition: HcalDetId.h:155
DetId::Tracker
Definition: DetId.h:25
IdealZPrism::localCorners
static void localCorners(Pt3DVec &vec, const CCGFloat *pv, Pt3D &ref)
Definition: IdealZPrism.cc:73
CaloCellGeometry
Definition: CaloCellGeometry.h:50
FWTGeoRecoGeometryESProducer::kCaloTower
Definition: FWTGeoRecoGeometryESProducer.h:43
CaloGeometry::getGeometry
std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const
Get the cell geometry of a given detector id.
Definition: CaloGeometry.cc:60
GEMDetId
Definition: GEMDetId.h:18
CSCDetId
Definition: CSCDetId.h:26
CaloCellGeometry::param
const CCGFloat * param() const
Definition: CaloCellGeometry.h:99
eventshapeDQM_cfi.order
order
Definition: eventshapeDQM_cfi.py:8
TrackerTopology::tibModule
unsigned int tibModule(const DetId &id) const
Definition: TrackerTopology.h:172
TrackerTopology::tidSide
unsigned int tidSide(const DetId &id) const
Definition: TrackerTopology.h:190
FWTGeoRecoGeometryESProducer::m_trackingGeom
const GlobalTrackingGeometry * m_trackingGeom
Definition: FWTGeoRecoGeometryESProducer.h:95
makeMuonMisalignmentScenario.wheel
wheel
Definition: makeMuonMisalignmentScenario.py:319
HcalDetId
Definition: HcalDetId.h:12
TrackerTopology::tecRing
unsigned int tecRing(const DetId &id) const
ring id
Definition: TrackerTopology.h:217
FWTGeoRecoGeometryESProducer::createShape
TGeoShape * createShape(const GeomDet *det)
Definition: FWTGeoRecoGeometryESProducer.cc:339
TrackerTopology::pxfDisk
unsigned int pxfDisk(const DetId &id) const
Definition: TrackerTopology.h:446
GlobalTrackingGeometry::slaveGeometry
const TrackingGeometry * slaveGeometry(DetId id) const
Return the pointer to the actual geometry for a given DetId.
Definition: GlobalTrackingGeometry.cc:54
TrackerGeometry::detsTIB
const DetContainer & detsTIB() const
Definition: TrackerGeometry.cc:175
ME0DetId
Definition: ME0DetId.h:16
DetId::Ecal
Definition: DetId.h:27
TrapezoidalPlaneBounds
Definition: TrapezoidalPlaneBounds.h:15
get
#define get
res
Definition: Electron.h:6
FWTGeoRecoGeometryESProducer::m_calo
bool m_calo
Definition: FWTGeoRecoGeometryESProducer.h:104
HcalForward
Definition: HcalAssistant.h:36
FWTGeoRecoGeometryESProducer::kMuonGEM
Definition: FWTGeoRecoGeometryESProducer.h:39
FWTGeoRecoGeometryESProducer::addTECGeometry
void addTECGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:528
FWTGeoRecoGeometryESProducer::m_shapeToVolume
std::map< TGeoShape *, TGeoVolume * > m_shapeToVolume
Definition: FWTGeoRecoGeometryESProducer.h:88
CaloGeometry::getValidDetIds
std::vector< DetId > getValidDetIds() const
Get the list of all valid detector ids.
Definition: CaloGeometry.cc:75
CaloTowerDetId::ieta
int ieta() const
get the tower ieta
Definition: CaloTowerDetId.h:30
TrackerTopology::tobModule
unsigned int tobModule(const DetId &id) const
Definition: TrackerTopology.h:166
CaloCellGeometry::etaPos
virtual float etaPos() const
Definition: CaloCellGeometry.h:88
TrackerTopology::pxbModule
unsigned int pxbModule(const DetId &id) const
Definition: TrackerTopology.h:160
FWTGeoRecoGeometryESProducer::kHCal
Definition: FWTGeoRecoGeometryESProducer.h:42
FWTGeoRecoGeometryESProducer::addCaloTowerGeometry
void addCaloTowerGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:1067
HcalEndcap
Definition: HcalAssistant.h:34
PVValHelper::dz
Definition: PVValidationHelpers.h:51
TrackerGeometry::detsTEC
const DetContainer & detsTEC() const
Definition: TrackerGeometry.cc:181
MuonSubdetId::RPC
static constexpr int RPC
Definition: MuonSubdetId.h:13
IdealZPrism::Pt3D
CaloCellGeometry::Pt3D Pt3D
Definition: IdealZPrism.h:31
FWTGeoRecoGeometryESProducer::kDummy
Definition: FWTGeoRecoGeometryESProducer.h:33
TrackerTopology::tecOrder
unsigned int tecOrder(const DetId &id) const
Definition: TrackerTopology.h:206
PVValHelper::ladder
Definition: PVValidationHelpers.h:73
relativeConstraints.ring
ring
Definition: relativeConstraints.py:68
FWTGeoRecoGeometryESProducer::addTIBGeometry
void addTIBGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:468
makeMuonMisalignmentScenario.rot
rot
Definition: makeMuonMisalignmentScenario.py:322
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
CaloCellGeometry::phiPos
virtual float phiPos() const
Definition: CaloCellGeometry.h:89
makeEcalShape
TGeoShape * makeEcalShape(const TruncatedPyramid *cell)
Definition: FWTGeoRecoGeometryESProducer.cc:1173
TrackerTopology::tecModule
unsigned int tecModule(const DetId &id) const
Definition: TrackerTopology.h:169
GEMGeometry::etaPartitions
const std::vector< const GEMEtaPartition * > & etaPartitions() const
Return a vector of all GEM eta partitions.
Definition: GEMGeometry.cc:40
FWTGeoRecoGeometryESProducer::GetMedium
TGeoMedium * GetMedium(ERecoDet)
Definition: FWTGeoRecoGeometryESProducer.cc:181
FWTGeoRecoGeometryESProducer::kHGCE
Definition: FWTGeoRecoGeometryESProducer.h:44
GEMGeometry
Definition: GEMGeometry.h:24
FWTGeoRecoGeometryESProducer::m_trackingGeomToken
edm::ESGetToken< GlobalTrackingGeometry, GlobalTrackingGeometryRecord > m_trackingGeomToken
Definition: FWTGeoRecoGeometryESProducer.h:91
TrackerTopology::pxfBlade
unsigned int pxfBlade(const DetId &id) const
Definition: TrackerTopology.h:447
FWTGeoRecoGeometryESProducer::m_trackerTopology
const TrackerTopology * m_trackerTopology
Definition: FWTGeoRecoGeometryESProducer.h:98
RPCGeometry
Definition: RPCGeometry.h:20
cms::Exception
Definition: Exception.h:70
DetId::Muon
Definition: DetId.h:26
DTChamberId
Definition: DTChamberId.h:14
CaloTowerDetId::zside
int zside() const
get the z-side of the tower (1/-1)
Definition: CaloTowerDetId.h:26
RPCGeometry::rolls
const std::vector< const RPCRoll * > & rolls() const
Return a vector of all RPC rolls.
Definition: RPCGeometry.cc:44
FWTGeoRecoGeometryESProducer::addRPCGeometry
void addRPCGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:723
FWTGeoRecoGeometryESProducer::kHGCH
Definition: FWTGeoRecoGeometryESProducer.h:45
GEMGeometry::superChambers
const std::vector< const GEMSuperChamber * > & superChambers() const
Return a vector of all GEM super chambers.
Definition: GEMGeometry.cc:36
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:46
HcalDetId::zside
constexpr int zside() const
get the z-side of the cell (1/-1)
Definition: HcalDetId.h:141
IdealZPrism::Pt3DVec
CaloCellGeometry::Pt3DVec Pt3DVec
Definition: IdealZPrism.h:32
child
Definition: simpleInheritance.h:11
FWTGeoRecoGeometryESProducer::m_nameToShape
std::map< std::string, TGeoShape * > m_nameToShape
Definition: FWTGeoRecoGeometryESProducer.h:87
dd4hep::createPlacement
TGeoCombiTrans * createPlacement(const Rotation3D &iRot, const Position &iTrans)
Definition: DDDefinitions2Objects.cc:109
FWTGeoRecoGeometryESProducer::kSiPixel
Definition: FWTGeoRecoGeometryESProducer.h:34
FWTGeoRecoGeometryESProducer::addTIDGeometry
void addTIDGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:488
FWTGeoRecoGeometryESProducer::addGEMGeometry
void addGEMGeometry()
Definition: FWTGeoRecoGeometryESProducer.cc:664
TrackerTopology::tobSide
unsigned int tobSide(const DetId &id) const
Definition: TrackerTopology.h:180
hcallasereventfilter2012_cfi.prefix
prefix
Definition: hcallasereventfilter2012_cfi.py:10
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
FWTGeoRecoGeometryESProducer::kMuonCSC
Definition: FWTGeoRecoGeometryESProducer.h:38
CaloTowerDetId
Definition: CaloTowerDetId.h:12
FWTGeoRecoGeometryESProducer::addHcalCaloGeometryOuter
void addHcalCaloGeometryOuter()
Definition: FWTGeoRecoGeometryESProducer.cc:935