00001 #include "StEnumerations.h"
00002 #include "TString.h"
00003 struct myMap {int id; const char *name;};
00004 static myMap gMyMap[] = {
00005 {kUnknownId ,"Unknown" },
00006 {kTpcId ,"Tpc" },
00007 {kSvtId ,"Svt" },
00008 {kRichId ,"Rich" },
00009 {kFtpcWestId ,"FtpcWest" },
00010 {kFtpcEastId ,"FtpcEast" },
00011 {kTofId ,"Tof" },
00012 {kCtbId ,"Ctb" },
00013 {kSsdId ,"Ssd" },
00014 {kBarrelEmcTowerId ,"BarrelEmcTower" },
00015 {kBarrelEmcPreShowerId ,"BarrelEmcPreShower"},
00016 {kBarrelSmdEtaStripId ,"BarrelSmdEtaStrip" },
00017 {kBarrelSmdPhiStripId ,"BarrelSmdPhiStrip" },
00018 {kEndcapEmcTowerId ,"EndcapEmcTower" },
00019 {kEndcapEmcPreShowerId ,"EndcapEmcPreShower"},
00020 {kEndcapSmdUStripId ,"EndcapSmdUStrip" },
00021 {kEndcapSmdVStripId ,"EndcapSmdVStrip" },
00022 {kZdcWestId ,"ZdcWest" },
00023 {kZdcEastId ,"ZdcEast" },
00024 {kMwpcWestId ,"MwpcWest" },
00025 {kMwpcEastId ,"MwpcEast" },
00026 {kPhmdCpvId ,"PhmdCpv" },
00027 {kPhmdId ,"Phmd" },
00028 {kPxlId ,"Pxl" },
00029 {kIstId ,"Ist" },
00030 {kFgtId ,"Fgt" },
00031 {kEtrId ,"Etr" },
00032 {kFpdWestId ,"FpdWest" },
00033 {kFpdEastId ,"FpdEast" },
00034 {kFmsId ,"Fms" },
00035 {kRpsId ,"Rps" },
00036 {kMtdId ,"Mtd" },
00037 {0,0}};
00038
00039 const char *detectorNameById(StDetectorId id)
00040 {
00041 for (int i=0;gMyMap[i].name;i++) { if (gMyMap[i].id==id) return gMyMap[i].name;}
00042 return gMyMap[0].name;
00043 }
00044
00045 StDetectorId detectorIdByName(const char *name)
00046 {
00047 int lmin=99,imin=0;
00048
00049 for (int i =0;gMyMap[i].name; i++) {
00050 if (!TString(gMyMap[i].name).BeginsWith(name,TString::kIgnoreCase))
00051 continue;
00052 int l = strlen(gMyMap[i].name);
00053 if (l>=lmin) continue;
00054 lmin = l; imin=i;
00055 }
00056 return (StDetectorId)gMyMap[imin].id;
00057 }