00001 #include "FWCore/Utilities/interface/Exception.h"
00002
00003 #include "Alignment/CommonAlignment/interface/AlignableObjectId.h"
00004 #include <algorithm>
00005
00006 using namespace align;
00007
00008
00009 AlignableObjectId::AlignableObjectId()
00010 {
00011
00012
00013
00014 theMap.clear();
00015 theReverseMap.clear();
00016
00017 theMap.insert( PairEnumType( invalid , "invalid" ) );
00018 theMap.insert( PairEnumType( AlignableDetUnit, "DetUnit" ) );
00019 theMap.insert( PairEnumType( AlignableDet , "Det" ) );
00020
00021 theMap.insert( PairEnumType(TPBModule , "TPBModule" ) );
00022 theMap.insert( PairEnumType(TPBLadder , "TPBLadder" ) );
00023 theMap.insert( PairEnumType(TPBLayer , "TPBLayer" ) );
00024 theMap.insert( PairEnumType(TPBHalfBarrel , "TPBHalfBarrel" ) );
00025 theMap.insert( PairEnumType(TPBBarrel , "TPBBarrel" ) );
00026
00027 theMap.insert( PairEnumType(TPEModule , "TPEModule" ) );
00028 theMap.insert( PairEnumType(TPEPanel , "TPEPanel" ) );
00029 theMap.insert( PairEnumType(TPEBlade , "TPEBlade" ) );
00030 theMap.insert( PairEnumType(TPEHalfDisk , "TPEHalfDisk" ) );
00031 theMap.insert( PairEnumType(TPEHalfCylinder, "TPEHalfCylinder") );
00032 theMap.insert( PairEnumType(TPEEndcap , "TPEEndcap" ) );
00033
00034 theMap.insert( PairEnumType(TIBModule , "TIBModule" ) );
00035 theMap.insert( PairEnumType(TIBString , "TIBString" ) );
00036 theMap.insert( PairEnumType(TIBSurface , "TIBSurface" ) );
00037 theMap.insert( PairEnumType(TIBHalfShell , "TIBHalfShell" ) );
00038 theMap.insert( PairEnumType(TIBLayer , "TIBLayer" ) );
00039 theMap.insert( PairEnumType(TIBHalfBarrel , "TIBHalfBarrel" ) );
00040 theMap.insert( PairEnumType(TIBBarrel , "TIBBarrel" ) );
00041
00042 theMap.insert( PairEnumType(TIDModule , "TIDModule" ) );
00043 theMap.insert( PairEnumType(TIDSide , "TIDSide" ) );
00044 theMap.insert( PairEnumType(TIDRing , "TIDRing" ) );
00045 theMap.insert( PairEnumType(TIDDisk , "TIDDisk" ) );
00046 theMap.insert( PairEnumType(TIDEndcap , "TIDEndcap" ) );
00047
00048 theMap.insert( PairEnumType(TOBModule , "TOBModule" ) );
00049 theMap.insert( PairEnumType(TOBRod , "TOBRod" ) );
00050 theMap.insert( PairEnumType(TOBLayer , "TOBLayer" ) );
00051 theMap.insert( PairEnumType(TOBHalfBarrel , "TOBHalfBarrel" ) );
00052 theMap.insert( PairEnumType(TOBBarrel , "TOBBarrel" ) );
00053
00054 theMap.insert( PairEnumType(TECModule , "TECModule" ) );
00055 theMap.insert( PairEnumType(TECRing , "TECRing" ) );
00056 theMap.insert( PairEnumType(TECPetal , "TECPetal" ) );
00057 theMap.insert( PairEnumType(TECSide , "TECSide" ) );
00058 theMap.insert( PairEnumType(TECDisk , "TECDisk" ) );
00059 theMap.insert( PairEnumType(TECEndcap , "TECEndcap" ) );
00060
00061 theMap.insert( PairEnumType(Pixel , "Pixel" ) );
00062 theMap.insert( PairEnumType(Strip , "Strip" ) );
00063 theMap.insert( PairEnumType(Tracker , "Tracker" ) );
00064
00065 theMap.insert( PairEnumType( AlignableDTBarrel , "DTBarrel" ) );
00066 theMap.insert( PairEnumType( AlignableDTWheel , "DTWheel" ) );
00067 theMap.insert( PairEnumType( AlignableDTStation , "DTStation" ) );
00068 theMap.insert( PairEnumType( AlignableDTChamber , "DTChamber" ) );
00069 theMap.insert( PairEnumType( AlignableDTSuperLayer, "DTSuperLayer" ) );
00070 theMap.insert( PairEnumType( AlignableDTLayer , "DTLayer" ) );
00071 theMap.insert( PairEnumType( AlignableCSCEndcap , "CSCEndcap" ) );
00072 theMap.insert( PairEnumType( AlignableCSCStation , "CSCStation" ) );
00073 theMap.insert( PairEnumType( AlignableCSCRing , "CSCRing" ) );
00074 theMap.insert( PairEnumType( AlignableCSCChamber , "CSCChamber" ) );
00075 theMap.insert( PairEnumType( AlignableCSCLayer , "CSCLayer" ) );
00076 theMap.insert( PairEnumType( AlignableMuon , "Muon" ) );
00077
00078
00079 std::transform( theMap.begin(), theMap.end(),
00080 std::inserter( theReverseMap, theReverseMap.begin() ),
00081 reverse_pair() );
00082
00083 }
00084
00085
00086
00087 const StructureType
00088 AlignableObjectId::nameToType( const std::string& name ) const
00089 {
00090 ReverseMapEnumType::const_iterator n = theReverseMap.find(name);
00091
00092 if (theReverseMap.end() == n)
00093 {
00094 throw cms::Exception("AlignableObjectIdError")
00095 << "Unknown alignableObjectId " << name;
00096 }
00097
00098 return n->second;
00099 }
00100
00101
00102
00103 const std::string& AlignableObjectId::typeToName( StructureType type ) const
00104 {
00105 MapEnumType::const_iterator t = theMap.find(type);
00106
00107 if (theMap.end() == t)
00108 {
00109 throw cms::Exception("AlignableObjectIdError")
00110 << "Unknown alignableObjectId " << type;
00111 }
00112
00113 return t->second;
00114 }