![]() |
|
|||
File indexing completed on 2023-03-17 10:51:37
0001 #ifndef DETECTOR_DESCRIPTION_CORE_DDSPECIFICS_H 0002 #define DETECTOR_DESCRIPTION_CORE_DDSPECIFICS_H 0003 0004 #include <iosfwd> 0005 #include <map> 0006 #include <memory> 0007 #include <string> 0008 #include <utility> 0009 #include <vector> 0010 0011 #include "DetectorDescription/Core/interface/DDBase.h" 0012 #include "DetectorDescription/Core/interface/DDExpandedView.h" 0013 #include "DetectorDescription/Core/interface/DDName.h" 0014 #include "DetectorDescription/Core/interface/DDsvalues.h" 0015 0016 class DDExpandedView; 0017 class DDPartSelection; 0018 class DDSpecifics; 0019 0020 namespace DDI { 0021 class Specific; 0022 } 0023 0024 std::ostream &operator<<(std::ostream &, const std::vector<std::string> &); 0025 std::ostream &operator<<(std::ostream &, const DDSpecifics &); 0026 0027 /** 0028 used to attach specific (user defined) data to nodes in the expanded view. 0029 - only a std::map<std::string,std::string> (std::map of name,value) 0030 0031 */ 0032 //! Interface to attach user specific data to nodes in the expanded-view 0033 /** User data (currently only of type a \c std::map<std::string,std::string> ) can be attached 0034 to single nodes or set of nodes in the detector tree (represented in DDExpandedView). 0035 Nodes where user data has to be attached are selected by a very simplified XPath similar 0036 notation. 0037 0038 DDSpecifics are lightweighted reference-objects. For further information concerning 0039 reference-objects refere to the documentation of DDLogicalPart. 0040 */ 0041 class DDSpecifics : public DDBase<DDName, std::unique_ptr<DDI::Specific> > { 0042 friend std::ostream &operator<<(std::ostream &, const DDSpecifics &); 0043 0044 public: 0045 //! Creates a uninitialized reference-object (see DDLogicalPart documentation for details on reference objects) 0046 DDSpecifics(); 0047 0048 //! Creates a initialized reference-object or a reference to an allready defined specifcs. 0049 /** If a DDSpecifics with \a name was already defined, this constructor creates a 0050 lightweighted reference-object to it. Otherwise a (default) initialized reference-object 0051 is registered named \a name. 0052 For further details concerning the usage of reference-objects refere 0053 to the documentation of DDLogicalPart. 0054 */ 0055 DDSpecifics(const DDName &name); 0056 0057 //! Creates a defined reference-object or replaces a already defined reference-object named \a name 0058 /** 0059 \arg \c name unique name 0060 \arg \c partSelections collection of selection-strings which select expanded-nodes 0061 \arg \c svalues user data attached to nodes selected by \a partSelections 0062 0063 <h3> Syntax of the selection std::string </h3> 0064 bla, bla, bla 0065 */ 0066 DDSpecifics(const DDName &name, 0067 const std::vector<std::string> &partSelections, 0068 const DDsvalues_type &svalues, 0069 bool doRegex = true); 0070 0071 //! Gives a reference to the collection of part-selections 0072 const std::vector<DDPartSelection> &selection() const; 0073 0074 //! Reference to the user-data attached to all nodes selected by the selections-strings given through selection 0075 const DDsvalues_type &specifics() const; 0076 0077 //! Calculates the geometrical history of a fully specified PartSelector 0078 std::pair<bool, DDExpandedView> node() const; 0079 }; 0080 0081 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |
![]() ![]() |