221 constexpr
bool same(
char const *
x,
char const *
y) {
return !*x && !*y ?
true : (*x == *y && same(x + 1, y + 1)); }
224 return !entries->
name ?
nullptr : entries->
type == type ? entries->
name : objectIdToString(type, entries + 1);
229 : same(entries->
name, name) ? entries->
type
230 : stringToObjectId(name, entries + 1);
254 throw cms::Exception(
"LogicError") <<
"@SUB=AlignableObjectId::ctor\n"
255 <<
"trying to create AlignableObjectId with unspecified geometry";
276 if (result ==
nullptr) {
277 throw cms::Exception(
"AlignableObjectIdError") <<
"Unknown alignableObjectId " <<
type;
287 throw cms::Exception(
"AlignableObjectIdError") <<
"Unknown alignableObjectId " <<
name;
311 throw cms::Exception(
"AlignableObjectIdError") <<
"@SUB=AlignableObjectId::trackerGeometry\n"
312 <<
"unknown version of TrackerGeometry";
331 throw cms::Exception(
"AlignableObjectIdError") <<
"@SUB=AlignableObjectId::commonGeometry\n"
332 <<
"impossible to find common geometry because the two geometries are "
333 <<
"different and none of them is 'General'";
static Geometry trackerGeometry(const TrackerGeometry *)
align::StructureType stringToId(const char *) const
static Geometry commonGeometry(Geometry, Geometry)
std::string typeToName(align::StructureType type) const
Convert type to name.
static AlignableObjectId commonObjectIdProvider(const AlignableObjectId &, const AlignableObjectId &)
static Geometry muonGeometry(const DTGeometry *, const CSCGeometry *, const GEMGeometry *)
bool isThere(GeomDetEnumerators::SubDetector subdet) const
U second(std::pair< T, U > const &p)
Class Geometry Contains vector for fit parameters (mean, sigma, etc.) obtained from multiple IOVs See...
AlignableObjectId(Geometry)
Allows conversion between type and name, and vice-versa.
Geometry geometry() const
retrieve the geometry information
align::StructureType type
const char * idToString(align::StructureType type) const
align::StructureType nameToType(const std::string &name) const
Convert name to type.