00001 #ifndef DDSpecifics_h 00002 #define DDSpecifics_h 00003 00004 00005 #include <map> 00006 #include <string> 00007 #include <vector> 00008 00009 #include "DetectorDescription/Core/interface/DDName.h" 00010 #include "DetectorDescription/Core/interface/DDBase.h" 00011 #include "DetectorDescription/Core/interface/DDsvalues.h" 00012 #include "DetectorDescription/Core/interface/DDExpandedView.h" 00013 00014 //#include "DetectorDescription/Core/interface/DDExpandedView.h" 00015 00016 class DDSpecifics; 00017 class DDPartSelection; 00018 class DDNodes; 00019 namespace DDI { class Specific; } 00020 00021 typedef std::vector<std::string> selectors_type; 00022 00023 std::ostream & operator<<(std::ostream &, const std::vector<std::string> &); 00024 std::ostream & operator<<(std::ostream &, const DDSpecifics &); 00025 00031 00032 00040 class DDSpecifics : public DDBase<DDName,DDI::Specific*> 00041 { 00042 friend std::ostream & operator<<( std::ostream &, const DDSpecifics &); 00043 00044 public: 00046 DDSpecifics(); 00047 00049 00055 DDSpecifics(const DDName & name); 00056 00058 00066 DDSpecifics(const DDName & name, 00067 const selectors_type & partSelections, 00068 const DDsvalues_type & svalues, 00069 bool doRegex=true); 00070 00071 ~DDSpecifics(); 00072 00074 const std::vector<DDPartSelection> & selection() const; 00075 00077 const DDsvalues_type & specifics() const; 00078 00080 bool nodes(DDNodes & nds) const; 00081 00083 std::pair<bool,DDExpandedView> node() const; 00084 00085 static void clear(); 00086 }; 00087 00088 #endif