CMS 3D CMS Logo

DDDetector.cc
Go to the documentation of this file.
3 #include <DD4hep/Detector.h>
4 #include <DD4hep/DetectorTools.h>
5 #include <DD4hep/Volumes.h>
6 #include <XML/DocumentHandler.h>
7 #include <XML/XMLElements.h>
8 
9 #include <iostream>
10 
11 namespace cms {
12 
13  DDDetector::DDDetector(const std::string& tag, const std::string& fileName, bool bigXML) : m_tag(tag) {
14  //We do not want to use any previously created TGeoManager but we do want to reset after we are done.
15  auto oldGeoManager = gGeoManager;
16  gGeoManager = nullptr;
17  auto resetManager = [oldGeoManager](TGeoManager*) { gGeoManager = oldGeoManager; };
18  std::unique_ptr<TGeoManager, decltype(resetManager)> sentry(oldGeoManager, resetManager);
19 
20  m_description = &dd4hep::Detector::getInstance(tag);
21  m_description->addExtension<cms::DDVectorsMap>(&m_vectors);
22  m_description->addExtension<dd4hep::PartSelectionMap>(&m_partsels);
23  m_description->addExtension<dd4hep::SpecParRegistry>(&m_specpars);
24  m_description->setStdConditions("NTP");
25  edm::LogVerbatim("Geometry") << "DDDetector::ctor Setting DD4hep STD conditions to NTP";
26  if (bigXML)
28  else
30  }
31 
33  std::string name("DD4hep_CompactLoader");
34  const char* files[] = {fileName.c_str(), nullptr};
35  m_description->apply(name.c_str(), 2, (char**)files);
36  }
37 
39  edm::LogVerbatim("Geometry") << "DDDetector::processXML process string size " << xml.size() << " with max_size "
40  << xml.max_size();
41  std::string name("DD4hep_XMLProcessor");
42  dd4hep::xml::DocumentHolder doc(dd4hep::xml::DocumentHandler().parse(xml.c_str(), xml.length()));
43 
44  char* args[] = {(char*)doc.root().ptr(), nullptr};
45  m_description->apply(name.c_str(), 1, (char**)args);
46  }
47 
50  return m_description->worldVolume();
51  }
52 
53  dd4hep::DetElement DDDetector::world() const {
55  return m_description->world();
56  }
57 
58  TGeoManager& DDDetector::manager() const {
60  return m_description->manager();
61  }
62 
63  dd4hep::DetElement DDDetector::findElement(const std::string& path) const {
65  return dd4hep::detail::tools::findElement(*m_description, path);
66  }
67 } // namespace cms
writedatasetfile.args
args
Definition: writedatasetfile.py:18
cms::DDDetector::manager
TGeoManager & manager() const
The geometry manager of this instance.
Definition: DDDetector.cc:58
common_cff.doc
doc
Definition: common_cff.py:54
MessageLogger.h
cms::DDDetector::world
dd4hep::DetElement world() const
Reference to the top-most (world) detector element.
Definition: DDDetector.cc:53
cms::cuda::assert
assert(be >=bs)
cms::DDDetector::DDDetector
DDDetector()=delete
MillePedeFileConverter_cfg.fileName
fileName
Definition: MillePedeFileConverter_cfg.py:32
DDDetector.h
submitPVResolutionJobs.files
files
Definition: submitPVResolutionJobs.py:373
GlobalPosition_Frontier_DevDB_cff.tag
tag
Definition: GlobalPosition_Frontier_DevDB_cff.py:11
cms::DDDetector::process
void process(const std::string &)
Definition: DDDetector.cc:32
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
cms::DDDetector::m_partsels
dd4hep::PartSelectionMap m_partsels
Definition: DDDetector.h:43
cms::Volume
dd4hep::Volume Volume
Definition: DDFilteredView.h:47
dumpparser.parse
def parse(path, config)
Definition: dumpparser.py:13
cms::DDDetector::worldVolume
dd4hep::Volume worldVolume() const
Handle to the world volume containing everything.
Definition: DDDetector.cc:48
cms::cuda::device::unique_ptr
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
Definition: device_unique_ptr.h:33
cms::DDDetector::m_specpars
dd4hep::SpecParRegistry m_specpars
Definition: DDDetector.h:44
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
cms::DDDetector::m_vectors
cms::DDVectorsMap m_vectors
Definition: DDDetector.h:42
cms::DDVectorsMap
std::unordered_map< std::string, std::vector< double > > DDVectorsMap
Definition: DDNamespace.h:14
cms::DDDetector::processXML
void processXML(const std::string &)
Definition: DDDetector.cc:38
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
cms::DDDetector::m_description
dd4hep::Detector * m_description
Definition: DDDetector.h:41
cms::DDDetector::findElement
dd4hep::DetElement findElement(const std::string &) const
Find DetElement as child of the top level volume by it's absolute path.
Definition: DDDetector.cc:63
cms
Namespace of DDCMS conversion namespace.
Definition: ProducerAnalyzer.cc:21