CMS 3D CMS Logo

DDParsingContext.h
Go to the documentation of this file.
1 #ifndef DETECTOR_DESCRIPTION_DD_PARSING_CONTEXT_H
2 #define DETECTOR_DESCRIPTION_DD_PARSING_CONTEXT_H
3 
4 #include "DD4hep/Detector.h"
5 
6 #include <string>
7 #include <variant>
8 #include <unordered_map>
9 #include <unordered_set>
10 #include <vector>
11 
12 namespace cms {
13 
15  public:
16  DDParsingContext(dd4hep::Detector& det, bool makePayloadArg = false)
17  : makePayload(makePayloadArg), description(det) {
18  assemblies.reserve(100);
19  assemblySolids.reserve(100);
20  rotations.reserve(3000);
21  shapes.reserve(4000);
22  volumes.reserve(3000);
23  unresolvedMaterials.reserve(300);
24  unresolvedVectors.reserve(300);
25  unresolvedShapes.reserve(1000);
26 
27  namespaces.emplace_back("");
28  if (makePayload) {
29  rotRevMap.reserve(3000);
30  compMaterialsVec.reserve(400);
31  compMaterialsRefs.reserve(400);
32  }
33  }
34 
35  DDParsingContext() = delete;
36  DDParsingContext(const DDParsingContext&) = delete;
38 
39  ~DDParsingContext() = default;
40 
41  const std::string& ns() const { return namespaces.back(); }
42 
43  template <class TYPE>
44  struct BooleanShape {
45  BooleanShape(const std::string& aName, const std::string& bName, dd4hep::Transform3D t)
46  : firstSolidName(aName), secondSolidName(bName), transform(t) {}
47 
50  dd4hep::Transform3D transform;
51 
52  dd4hep::Solid make(dd4hep::Solid firstSolid, dd4hep::Solid secondSolid) {
53  return TYPE(firstSolid, secondSolid, transform);
54  }
55  };
56 
58  CompositeMaterial(const std::string& n, double f) : name(n), fraction(f) {}
59 
61  double fraction;
62  };
63 
64  // Debug flags
65  bool debug_includes = false;
66  bool debug_constants = false;
67  bool debug_materials = false;
68  bool debug_rotations = false;
69  bool debug_shapes = false;
70  bool debug_volumes = false;
71  bool debug_placements = false;
72  bool debug_namespaces = false;
73  bool debug_algorithms = false;
74  bool debug_specpars = false;
75  bool makePayload = false;
76 
78 
79  std::unordered_map<std::string, dd4hep::Assembly> assemblies;
80  std::unordered_set<std::string> assemblySolids;
81  std::unordered_map<std::string, dd4hep::Rotation3D> rotations;
82  std::unordered_map<std::string, std::string> rotRevMap;
83  std::unordered_map<std::string, dd4hep::Solid> shapes;
84  std::unordered_map<std::string, dd4hep::Volume> volumes;
85  std::vector<std::string> namespaces;
86 
87  std::unordered_map<std::string, std::vector<CompositeMaterial>> unresolvedMaterials;
88  std::vector<std::pair<std::string, double>> compMaterialsVec;
89  std::unordered_map<std::string, std::vector<CompositeMaterial>> compMaterialsRefs;
90  std::unordered_map<std::string, std::vector<std::string>> unresolvedVectors;
91  std::unordered_map<std::string,
92  std::variant<BooleanShape<dd4hep::UnionSolid>,
96  };
97 } // namespace cms
98 
99 #endif
cms::DDParsingContext::debug_namespaces
bool debug_namespaces
Definition: DDParsingContext.h:72
cms::DDParsingContext::DDParsingContext
DDParsingContext()=delete
cms::DDParsingContext::unresolvedMaterials
std::unordered_map< std::string, std::vector< CompositeMaterial > > unresolvedMaterials
Definition: DDParsingContext.h:87
cms::DDParsingContext::unresolvedVectors
std::unordered_map< std::string, std::vector< std::string > > unresolvedVectors
Definition: DDParsingContext.h:90
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
cms::DDParsingContext
Definition: DDParsingContext.h:14
cms::DDParsingContext::debug_placements
bool debug_placements
Definition: DDParsingContext.h:71
cms::DDParsingContext::BooleanShape::transform
dd4hep::Transform3D transform
Definition: DDParsingContext.h:50
cms::DDParsingContext::compMaterialsVec
std::vector< std::pair< std::string, double > > compMaterialsVec
Definition: DDParsingContext.h:88
cms::DDParsingContext::ns
const std::string & ns() const
Definition: DDParsingContext.h:41
cms::DDParsingContext::CompositeMaterial
Definition: DDParsingContext.h:57
cms::DDParsingContext::rotations
std::unordered_map< std::string, dd4hep::Rotation3D > rotations
Definition: DDParsingContext.h:81
cms::DDParsingContext::~DDParsingContext
~DDParsingContext()=default
cms::DDParsingContext::rotRevMap
std::unordered_map< std::string, std::string > rotRevMap
Definition: DDParsingContext.h:82
cms::DDParsingContext::debug_materials
bool debug_materials
Definition: DDParsingContext.h:67
cms::DDParsingContext::CompositeMaterial::CompositeMaterial
CompositeMaterial(const std::string &n, double f)
Definition: DDParsingContext.h:58
cms::DDParsingContext::makePayload
bool makePayload
Definition: DDParsingContext.h:75
cms::DDParsingContext::CompositeMaterial::name
const std::string name
Definition: DDParsingContext.h:60
cms::DDParsingContext::debug_algorithms
bool debug_algorithms
Definition: DDParsingContext.h:73
cms::DDParsingContext::BooleanShape::secondSolidName
const std::string secondSolidName
Definition: DDParsingContext.h:49
cms::DDParsingContext::BooleanShape::make
dd4hep::Solid make(dd4hep::Solid firstSolid, dd4hep::Solid secondSolid)
Definition: DDParsingContext.h:52
cms::DDParsingContext::shapes
std::unordered_map< std::string, dd4hep::Solid > shapes
Definition: DDParsingContext.h:83
cms::DDParsingContext::BooleanShape
Definition: DDParsingContext.h:44
cms::DDParsingContext::assemblies
std::unordered_map< std::string, dd4hep::Assembly > assemblies
Definition: DDParsingContext.h:79
cms::DDParsingContext::BooleanShape::BooleanShape
BooleanShape(const std::string &aName, const std::string &bName, dd4hep::Transform3D t)
Definition: DDParsingContext.h:45
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
cms::DDParsingContext::namespaces
std::vector< std::string > namespaces
Definition: DDParsingContext.h:85
align::Detector
Definition: StructureType.h:92
cms::DDParsingContext::CompositeMaterial::fraction
double fraction
Definition: DDParsingContext.h:61
cms::DDParsingContext::debug_constants
bool debug_constants
Definition: DDParsingContext.h:66
cms::DDParsingContext::operator=
DDParsingContext & operator=(const DDParsingContext &)=delete
cms::DDParsingContext::debug_rotations
bool debug_rotations
Definition: DDParsingContext.h:68
runonSM.TYPE
TYPE
Definition: runonSM.py:21
cms::DDParsingContext::debug_specpars
bool debug_specpars
Definition: DDParsingContext.h:74
cms::DDParsingContext::volumes
std::unordered_map< std::string, dd4hep::Volume > volumes
Definition: DDParsingContext.h:84
cms::DDParsingContext::debug_includes
bool debug_includes
Definition: DDParsingContext.h:65
cms::DDParsingContext::BooleanShape::firstSolidName
const std::string firstSolidName
Definition: DDParsingContext.h:48
cms::DDParsingContext::debug_volumes
bool debug_volumes
Definition: DDParsingContext.h:70
cms::DDParsingContext::DDParsingContext
DDParsingContext(dd4hep::Detector &det, bool makePayloadArg=false)
Definition: DDParsingContext.h:16
cms::DDParsingContext::compMaterialsRefs
std::unordered_map< std::string, std::vector< CompositeMaterial > > compMaterialsRefs
Definition: DDParsingContext.h:89
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
cms::DDParsingContext::unresolvedShapes
std::unordered_map< std::string, std::variant< BooleanShape< dd4hep::UnionSolid >, BooleanShape< dd4hep::SubtractionSolid >, BooleanShape< dd4hep::IntersectionSolid > > > unresolvedShapes
Definition: DDParsingContext.h:95
cms::DDParsingContext::debug_shapes
bool debug_shapes
Definition: DDParsingContext.h:69
cms::DDParsingContext::assemblySolids
std::unordered_set< std::string > assemblySolids
Definition: DDParsingContext.h:80
cms::DDParsingContext::description
dd4hep::Detector & description
Definition: DDParsingContext.h:77
cms
Namespace of DDCMS conversion namespace.
Definition: ProducerAnalyzer.cc:21