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 theMap.insert( PairEnumType( BeamSpot, "BeamSpot" ) );
00079
00080
00081 std::transform( theMap.begin(), theMap.end(),
00082 std::inserter( theReverseMap, theReverseMap.begin() ),
00083 reverse_pair() );
00084
00085 }
00086
00087
00088
00089 StructureType
00090 AlignableObjectId::nameToType( const std::string& name ) const
00091 {
00092 ReverseMapEnumType::const_iterator n = theReverseMap.find(name);
00093
00094 if (theReverseMap.end() == n)
00095 {
00096 throw cms::Exception("AlignableObjectIdError")
00097 << "Unknown alignableObjectId " << name;
00098 }
00099
00100 return n->second;
00101 }
00102
00103
00104
00105 const std::string& AlignableObjectId::typeToName( StructureType type ) const
00106 {
00107 MapEnumType::const_iterator t = theMap.find(type);
00108
00109 if (theMap.end() == t)
00110 {
00111 throw cms::Exception("AlignableObjectIdError")
00112 << "Unknown alignableObjectId " << type;
00113 }
00114
00115 return t->second;
00116 }