CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/Alignment/CommonAlignment/src/AlignableObjectId.cc

Go to the documentation of this file.
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   // Names are defined here!
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   // Create the reverse map
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 }