CMS 3D CMS Logo

DDLogicalPart.h
Go to the documentation of this file.
1 #ifndef DDLogicalPart_h
2 #define DDLogicalPart_h
3 
4 #include <iosfwd>
5 #include <map>
6 #include <memory>
7 #include <string>
8 #include <utility>
9 #include <vector>
10 
16 
17 class DDLogicalPart;
18 class DDMaterial;
19 class DDPartSelection;
20 class DDSolid;
21 class DDSpecifics;
22 class DDValue;
23 namespace DDI {
24  class LogicalPart;
25 } // namespace DDI
26 
27 std::ostream &operator<<(std::ostream &, const DDLogicalPart &);
28 
30 
93 class DDLogicalPart : public DDBase<DDName, std::unique_ptr<DDI::LogicalPart> > {
94 public:
96  DDLogicalPart(void) : DDBase<DDName, std::unique_ptr<DDI::LogicalPart> >() {}
97 
99  DDLogicalPart(const DDName &name);
100 
102  DDLogicalPart(const DDName &name,
103  const DDMaterial &material,
104  const DDSolid &solid,
106 
108  DDEnums::Category category(void) const;
109 
111  const DDMaterial &material(void) const;
112 
114  const DDSolid &solid(void) const;
115 
117  std::vector<const DDsvalues_type *> specifics(void) const;
118 
120  DDsvalues_type mergedSpecifics(void) const;
121 
123  void addSpecifics(const std::pair<const DDPartSelection *, const DDsvalues_type *> &);
124  void removeSpecifics(const std::pair<DDPartSelection *, DDsvalues_type *> &);
125  const std::vector<std::pair<const DDPartSelection *, const DDsvalues_type *> > &attachedSpecifics(void) const;
126  bool hasDDValue(const DDValue &) const;
127 };
128 
129 // some helpers .... (not very clean, redesign!!)
130 std::pair<bool, std::string> DDIsValid(const std::string &ns,
131  const std::string &name,
132  std::vector<DDLogicalPart> &result,
133  bool doRegex = true);
134 // std::maps name to std::vector of namespaces
135 // 2009-2010 re-write...FIX: Understand how this is used by DDSpecifics and FIX
137 void DD_NC(const DDName &);
138 
139 #endif
void removeSpecifics(const std::pair< DDPartSelection *, DDsvalues_type *> &)
Definition: DDBase.h:10
DDsvalues_type mergedSpecifics(void) const
returns the merged-specifics, i.e. the last specified specifics of this logical-part ...
void addSpecifics(const std::pair< const DDPartSelection *, const DDsvalues_type *> &)
don&#39;t use, internal only /todo make it private
bool hasDDValue(const DDValue &) const
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:45
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:17
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
DDI::Singleton< std::map< std::string, std::vector< DDName > > > LPNAMES
def cat(path)
Definition: eostools.py:401
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
Definition: DDsvalues.h:12
void DD_NC(const DDName &)
Category
Definition: DDEnums.h:7
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:93
DDEnums::Category category(void) const
Returns the categorization of the DDLogicalPart (sensitive detector element, cable, ...)
std::vector< const DDsvalues_type * > specifics(void) const
returns the specific-data attached to the LogicalPart only (not to a DDExpandedNode) ...
const DDMaterial & material(void) const
Returns a reference object of the material this LogicalPart is made of.
std::pair< bool, std::string > DDIsValid(const std::string &ns, const std::string &name, std::vector< DDLogicalPart > &result, bool doRegex=true)
Definition: Assembly.h:7
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
DDLogicalPart(void)
The default constructor provides an uninitialzed reference object.
Definition: DDLogicalPart.h:96
const std::vector< std::pair< const DDPartSelection *, const DDsvalues_type * > > & attachedSpecifics(void) const
std::ostream & operator<<(std::ostream &, const DDLogicalPart &)
Interface to attach user specific data to nodes in the expanded-view.
Definition: DDSpecifics.h:41