CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Static Private Member Functions | Private Attributes | Friends
DDName Class Reference

DDName is used to identify DDD entities uniquely. More...

#include <DDName.h>

Public Types

typedef DDCurrentNamespace CNS
 
typedef int id_type
 
typedef std::vector< Registry::const_iterator > IdToName
 
typedef std::map< std::pair< std::string, std::string >, id_typeRegistry
 

Public Member Functions

 DDName (const std::string &name, const std::string &ns)
 Constructs a DDName with name name and assigns name to the namespace ns. More...
 
 DDName (const std::string &name)
 Creates a DDName with name in the current namespace defined in the singleton DDCurrentNamespace. More...
 
 DDName (const char *name)
 
 DDName (const char *name, const char *ns)
 
 DDName (id_type)
 
 DDName ()
 
const std::string fullname () const
 
id_type id () const
 
const std::string & name () const
 Returns the name. More...
 
const std::string & ns () const
 Returns the namespace. More...
 
 operator std::string () const
 
bool operator< (const DDName &rhs) const
 
bool operator== (const DDName &rhs) const
 

Static Public Member Functions

static void defineId (const std::pair< std::string, std::string > &, id_type id)
 register pre-defined ids More...
 
static bool exists (const std::string &name, const std::string &ns)
 true, if a DDName with given name and namespace (ns) already is registerd, otherwise false More...
 

Static Private Member Functions

static Registry::iterator registerName (const std::pair< std::string, std::string > &s)
 

Private Attributes

id_type id_
 

Friends

class DStreamer
 

Detailed Description

DDName is used to identify DDD entities uniquely.

A DDName consists of a name and a namespace. Both are represented as std::string.

Definition at line 15 of file DDName.h.

Member Typedef Documentation

Definition at line 21 of file DDName.h.

typedef int DDName::id_type

Definition at line 22 of file DDName.h.

typedef std::vector<Registry::const_iterator> DDName::IdToName

Definition at line 24 of file DDName.h.

typedef std::map<std::pair<std::string,std::string>,id_type> DDName::Registry

Definition at line 23 of file DDName.h.

Constructor & Destructor Documentation

DDName::DDName ( const std::string &  name,
const std::string &  ns 
)

Constructs a DDName with name name and assigns name to the namespace ns.

Definition at line 22 of file DDName.cc.

23  : id_(registerName(std::make_pair(name,ns))->second)
24 { }
const std::string & ns() const
Returns the namespace.
Definition: DDName.cc:104
U second(std::pair< T, U > const &p)
id_type id_
Definition: DDName.h:63
static Registry::iterator registerName(const std::pair< std::string, std::string > &s)
Definition: DDName.cc:127
const std::string & name() const
Returns the name.
Definition: DDName.cc:90
DDName::DDName ( const std::string &  name)

Creates a DDName with name in the current namespace defined in the singleton DDCurrentNamespace.

Definition at line 27 of file DDName.cc.

References DDSplit(), id_, DDCurrentNamespace::ns(), registerName(), and mps_fire::result.

28  : id_(0)
29 {
30  std::pair<std::string,std::string> result = DDSplit(name);
31  if (result.second == "") {
32  id_ = registerName(std::make_pair(result.first,DDCurrentNamespace::ns()))->second;
33  }
34  else {
35  id_ = registerName(result)->second;
36  }
37 }
static std::string & ns()
id_type id_
Definition: DDName.h:63
static Registry::iterator registerName(const std::pair< std::string, std::string > &s)
Definition: DDName.cc:127
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
const std::string & name() const
Returns the name.
Definition: DDName.cc:90
DDName::DDName ( const char *  name)

Definition at line 40 of file DDName.cc.

References DDSplit(), id_, DDCurrentNamespace::ns(), registerName(), and mps_fire::result.

41  : id_(0)
42 {
43  std::pair<std::string,std::string> result = DDSplit(name);
44  if (result.second == "") {
45  id_ = registerName(std::make_pair(result.first,DDCurrentNamespace::ns()))->second;
46  }
47  else {
48  id_ = registerName(result)->second;
49  }
50 }
static std::string & ns()
id_type id_
Definition: DDName.h:63
static Registry::iterator registerName(const std::pair< std::string, std::string > &s)
Definition: DDName.cc:127
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
const std::string & name() const
Returns the name.
Definition: DDName.cc:90
DDName::DDName ( const char *  name,
const char *  ns 
)

Definition at line 53 of file DDName.cc.

54  : id_(registerName(std::make_pair(std::string(name),std::string(ns)))->second)
55 { }
const std::string & ns() const
Returns the namespace.
Definition: DDName.cc:104
U second(std::pair< T, U > const &p)
id_type id_
Definition: DDName.h:63
static Registry::iterator registerName(const std::pair< std::string, std::string > &s)
Definition: DDName.cc:127
const std::string & name() const
Returns the name.
Definition: DDName.cc:90
DDName::DDName ( DDName::id_type  id)

Definition at line 62 of file DDName.cc.

63  : id_(id)
64 { }
id_type id_
Definition: DDName.h:63
DDName::DDName ( )
explicit

Definition at line 58 of file DDName.cc.

Referenced by DDNameInterface::ddname().

59  : id_(0)
60 { }
id_type id_
Definition: DDName.h:63

Member Function Documentation

void DDName::defineId ( const std::pair< std::string, std::string > &  nm,
DDName::id_type  id 
)
static

register pre-defined ids

Definition at line 66 of file DDName.cc.

References Exception, plotBeamSpotDB::first, id(), DDI::Singleton< I >::instance(), and alignCSCRings::s.

67 {
69 
70  /*
71  Semantics:
72  If id exists && the registered value matches the given one, do nothing
73  If id exists && the registered value DOES NOT match, throw
74  If id DOES NOT exists, register with the given value
75  */
76  if ( id < id_type(id2n.size()) ) {
77  if(id2n[id]->first != nm) {
78  std::stringstream s;
79  s << id;
80  throw cms::Exception("DDException") << "DDName::DDName(std::pair<std::string,std::string>,id_type): id=" + s.str() + " reg-name=?";
81  }
82  }
83  else {
84  id2n.resize(id+1);
86  id2n[id] = DDI::Singleton<Registry>::instance().find(nm);
87  }
88 }
id_type id() const
Definition: DDName.h:57
static value_type & instance()
std::vector< Registry::const_iterator > IdToName
Definition: DDName.h:24
int id_type
Definition: DDName.h:22
bool DDName::exists ( const std::string &  name,
const std::string &  ns 
)
static

true, if a DDName with given name and namespace (ns) already is registerd, otherwise false

Definition at line 119 of file DDName.cc.

References DDI::Singleton< I >::instance(), and AlCaHLTBitMon_ParallelJobs::p.

120 {
121  const std::pair<std::string,std::string> p(name,ns);
122  Registry::const_iterator it = DDI::Singleton<Registry>::instance().find(p);
123  return it != DDI::Singleton<Registry>::instance().end() ? true : false;
124 }
const std::string & ns() const
Returns the namespace.
Definition: DDName.cc:104
static value_type & instance()
const std::string & name() const
Returns the name.
Definition: DDName.cc:90
const std::string DDName::fullname ( ) const
inline
id_type DDName::id ( ) const
inline

Definition at line 57 of file DDName.h.

References id_.

Referenced by DDNameInterface::ddname(), defineId(), and operator<<().

57 { return id_;}
id_type id_
Definition: DDName.h:63
const std::string & DDName::name ( ) const

Returns the name.

Definition at line 90 of file DDName.cc.

References id_, DDI::Singleton< I >::instance(), mps_fire::result, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by config.CFG::__str__(), PrintGeomSummary::addSolid(), DDEcalEndcapAlgo::addTmp(), CTPPSGeometryESModule::applyAlignments(), DDG4SolidConverter::box(), GEMGeometryBuilderFromDDD::build(), CTPPSGeometry::build(), MagGeoBuilderFromDDD::build(), ME0GeometryParsFromDD::buildChamber(), ME0GeometryBuilderFromDDD::buildChamber(), GEMGeometryParsFromDD::buildChamber(), GEMGeometryBuilderFromDDD::buildChamber(), CTPPSGeometryESModule::buildDetGeomDesc(), ME0GeometryParsFromDD::buildEtaPartition(), GEMGeometryParsFromDD::buildEtaPartition(), ME0GeometryBuilderFromDDD::buildEtaPartition(), GEMGeometryBuilderFromDDD::buildEtaPartition(), ME0GeometryParsFromDD::buildGeometry(), ME0GeometryBuilderFromDDD::buildGeometry(), GEMGeometryParsFromDD::buildGeometry(), RPCGeometryBuilderFromDDD::buildGeometry(), RPCGeometryParsFromDD::buildGeometry(), ME0GeometryParsFromDD::buildLayer(), ME0GeometryBuilderFromDDD::buildLayer(), GEMGeometryParsFromDD::buildSuperChamber(), GEMGeometryBuilderFromDDD::buildSuperChamber(), DDDividedGeometryObject::checkNDivAndWidth(), DDG4SolidConverter::cons(), DDHCalBarrelAlgo::constructInsideDetectors(), DDHCalEndcapAlgo::constructInsideModule(), DDHCalEndcapAlgo::constructInsideModule0(), DDG4Builder::convertLV(), DDG4Builder::convertMaterial(), TGeoMgrFromDdd::createShape(), TGeoFromDddService::createShape(), DDG4SolidConverter::cuttubs(), DD_NC(), DDBox::DDBox(), DDCheckAll(), DDCheckMaterial(), DDCons::DDCons(), DDCutTubs::DDCutTubs(), DDEllipsoid::DDEllipsoid(), DDEllipticalTube::DDEllipticalTube(), DDExtrudedPolygon::DDExtrudedPolygon(), DDIntersection::DDIntersection(), DDMultiUnion::DDMultiUnion(), DDNameInterface::ddname(), DDOrb::DDOrb(), DDParallelepiped::DDParallelepiped(), DDPolycone::DDPolycone(), DDPolyhedra::DDPolyhedra(), DDPseudoTrap::DDPseudoTrap(), DDrot(), DDrotReflect(), DDShapelessSolid::DDShapelessSolid(), DDSphere::DDSphere(), DDSubtraction::DDSubtraction(), DDTorus::DDTorus(), DDTrap::DDTrap(), DDTruncTubs::DDTruncTubs(), DDTubs::DDTubs(), DDUnion::DDUnion(), DDHtmlLpDetails::details(), DDHtmlMaDetails::details(), validation.Sample::digest(), DDG4SolidConverter::ellipsoid(), DDG4SolidConverter::ellipticaltube(), DDHCalForwardAlgo::execute(), DDTIBLayerAlgo_MTCC::execute(), DDPixBarLayerAlgo::execute(), DDPixBarLayerUpgradeAlgo::execute(), DDTIBLayerAlgo::execute(), DDTECModuleAlgo::execute(), DDTIDRingAlgo::execute(), DDCutTubsFromPoints::execute(), DDTBH4Algo::execute(), DDEcalBarrelAlgo::execute(), DDEcalBarrelNewAlgo::execute(), DDG4SolidConverter::extrudedpolygon(), fullname(), HcalTB06BeamSD::getNames(), MaterialBudgetHcalHistos::getNames(), HCalSD::getNames(), HCalSD::HCalSD(), HcalTB06BeamSD::HcalTB06BeamSD(), VIDSelectorBase.VIDSelectorBase::initialize(), DreamSD::initMap(), HcalTB02SD::initMap(), ECalSD::initMap(), DDG4SolidConverter::intersection(), CmsTrackerDebugNavigator::iterate(), DDDividedConsRho::makeDDLogicalPart(), DDDividedTubsRho::makeDDLogicalPart(), DDDividedBoxX::makeDDLogicalPart(), DDDividedPolyhedraRho::makeDDLogicalPart(), DDDividedPolyconeRho::makeDDLogicalPart(), DDDividedTrdX::makeDDLogicalPart(), DDDividedConsPhi::makeDDLogicalPart(), DDDividedBoxY::makeDDLogicalPart(), DDDividedPolyhedraPhi::makeDDLogicalPart(), DDDividedPolyconePhi::makeDDLogicalPart(), DDDividedTubsZ::makeDDLogicalPart(), DDDividedBoxZ::makeDDLogicalPart(), DDDividedConsZ::makeDDLogicalPart(), DDDividedTrdZ::makeDDLogicalPart(), DDDividedPolyconeZ::makeDDLogicalPart(), DDDividedPolyhedraZ::makeDDLogicalPart(), DDDividedConsPhi::makeDDRotation(), DDDividedTubsPhi::makeDDRotation(), DDDividedPolyhedraPhi::makeDDRotation(), DDDividedPolyconePhi::makeDDRotation(), DDLDivision::makeDivider(), operator std::string(), DDCompareEPV::operator()(), operator<<(), DDG4SolidConverter::orb(), DDG4SolidConverter::para(), DDG4SolidConverter::polycone_rrz(), DDG4SolidConverter::polycone_rz(), DDG4SolidConverter::polyhedra_rrz(), DDG4SolidConverter::polyhedra_rz(), DDLRotationByAxis::processElement(), DDLDivision::processElement(), DDLPosPart::processElement(), DDLCompositeMaterial::processElement(), DDG4SolidConverter::pseudotrap(), GeometricDetLoader::putOne(), PGeometricDetBuilder::putOne(), CocoaAnalyzer::ReadXMLFile(), DDG4SolidConverter::reflected(), DDG4SolidConverter::sphere(), DDG4SolidConverter::subtraction(), DDG4SolidConverter::torus(), DDG4SolidConverter::trap(), DDG4SolidConverter::trunctubs(), DDG4SolidConverter::tubs(), DDG4SolidConverter::unionsolid(), PrintGeomInfoAction::update(), Vispa.Views.PropertyView.Property::valueChanged(), MagGeoBuilderFromDDD::volumeHandle::volumeHandle(), DDEcalBarrelAlgo::web(), DDEcalBarrelNewAlgo::web(), and DDNameInterface::~DDNameInterface().

91 {
92  const static std::string ano_("anonymous");
93  const std::string * result;
94  if (id_ < 0) {
95  result = &ano_;
96  }
97  else {
98  result = &DDI::Singleton<IdToName>::instance()[id_]->first.first;
99  }
100  return *result;
101 }
static value_type & instance()
id_type id_
Definition: DDName.h:63
const std::string & DDName::ns ( ) const

Returns the namespace.

Definition at line 104 of file DDName.cc.

References id_, DDI::Singleton< I >::instance(), mps_fire::result, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by DD_NC(), DDBox::DDBox(), DDCheckAll(), DDCheckMaterial(), DDCons::DDCons(), DDCutTubs::DDCutTubs(), DDEllipsoid::DDEllipsoid(), DDEllipticalTube::DDEllipticalTube(), DDExtrudedPolygon::DDExtrudedPolygon(), DDIntersection::DDIntersection(), DDMultiUnion::DDMultiUnion(), DDNameInterface::ddname(), DDOrb::DDOrb(), DDParallelepiped::DDParallelepiped(), DDPolycone::DDPolycone(), DDPolyhedra::DDPolyhedra(), DDPseudoTrap::DDPseudoTrap(), DDShapelessSolid::DDShapelessSolid(), DDSphere::DDSphere(), DDSubtraction::DDSubtraction(), DDTorus::DDTorus(), DDTrap::DDTrap(), DDTruncTubs::DDTruncTubs(), DDTubs::DDTubs(), DDUnion::DDUnion(), DDHtmlLpDetails::details(), DDHtmlMaDetails::details(), DDCutTubsFromPoints::execute(), fullname(), DDDividedConsRho::makeDDLogicalPart(), DDDividedTubsRho::makeDDLogicalPart(), DDDividedBoxX::makeDDLogicalPart(), DDDividedPolyconeRho::makeDDLogicalPart(), DDDividedPolyhedraRho::makeDDLogicalPart(), DDDividedTrdX::makeDDLogicalPart(), DDDividedBoxY::makeDDLogicalPart(), DDDividedConsPhi::makeDDLogicalPart(), DDDividedPolyconePhi::makeDDLogicalPart(), DDDividedPolyhedraPhi::makeDDLogicalPart(), DDDividedBoxZ::makeDDLogicalPart(), DDDividedTubsZ::makeDDLogicalPart(), DDDividedConsZ::makeDDLogicalPart(), DDDividedPolyconeZ::makeDDLogicalPart(), DDDividedPolyhedraZ::makeDDLogicalPart(), DDDividedTrdZ::makeDDLogicalPart(), DDDividedTubsPhi::makeDDRotation(), DDDividedConsPhi::makeDDRotation(), DDDividedPolyconePhi::makeDDRotation(), DDDividedPolyhedraPhi::makeDDRotation(), DDLDivision::makeDivider(), operator std::string(), operator<<(), DDLPosPart::processElement(), DDLDivision::processElement(), DDLCompositeMaterial::processElement(), PGeometricDetBuilder::putOne(), and DDNameInterface::~DDNameInterface().

105 {
106  const static std::string ano_("anonymous");
107  const std::string * result;
108  if (id_ < 0) {
109  result = &ano_;
110  }
111  else {
112  result = &DDI::Singleton<IdToName>::instance()[id_]->first.second;
113  }
114  return *result;
115 }
static value_type & instance()
id_type id_
Definition: DDName.h:63
DDName::operator std::string ( ) const
inline

Definition at line 55 of file DDName.h.

References name(), and ns().

55 { return ns() + ":" + name(); }
const std::string & ns() const
Returns the namespace.
Definition: DDName.cc:104
const std::string & name() const
Returns the name.
Definition: DDName.cc:90
bool DDName::operator< ( const DDName rhs) const
inline

Definition at line 59 of file DDName.h.

References id_.

59 { return id_ < rhs.id_; }
id_type id_
Definition: DDName.h:63
bool DDName::operator== ( const DDName rhs) const
inline

Definition at line 60 of file DDName.h.

References id_.

60 { return id_ == rhs.id_; }
id_type id_
Definition: DDName.h:63
DDName::Registry::iterator DDName::registerName ( const std::pair< std::string, std::string > &  s)
staticprivate

Definition at line 127 of file DDName.cc.

References DDI::Singleton< I >::instance(), mps_fire::result, AlCaHLTBitMon_QueryRunRegistry::string, and heppy_batch::val.

Referenced by DDName().

127  {
130  Registry::size_type sz = reg_.size();
131  if (!sz) {
132  reg_[std::make_pair(std::string(""),std::string(""))] = 0;
133  idToName.emplace_back(reg_.begin());
134  ++sz;
135  }
136  Registry::value_type val(nm, sz);
137  std::pair<Registry::iterator,bool> result = reg_.insert(val);
138  if (result.second) {
139  idToName.emplace_back(result.first);
140  }
141  return result.first;
142 }
uint16_t size_type
std::map< std::pair< std::string, std::string >, id_type > Registry
Definition: DDName.h:23
static value_type & instance()
std::vector< Registry::const_iterator > IdToName
Definition: DDName.h:24

Friends And Related Function Documentation

friend class DStreamer
friend

Definition at line 17 of file DDName.h.

Member Data Documentation

id_type DDName::id_
private

Definition at line 63 of file DDName.h.

Referenced by DDName(), id(), name(), ns(), operator<(), and operator==().