DbiDetector.cxx
Go to the documentation of this file.00001
00002
00003
00004 #include "DbiDetector.hxx"
00005 #include "TString.h"
00006
00007
00008 Int_t DbiDetector::FullMask()
00009 {
00010 return kNear|kFar|kCalib|kTestStand|kMapper;
00011 }
00012
00013 const Char_t* DbiDetector::AsString(Detector_t detector)
00014 {
00015 switch (detector) {
00016 case kUnknown: return "Unknown"; break;
00017 case kNear: return "Near"; break;
00018 case kFar: return "Far"; break;
00019 case kCalDet: return "CalDet"; break;
00020 case kTestStand: return "TestStand"; break;
00021 case kMapper: return "Mapper"; break;
00022 default: return "?Unknown?"; break;
00023 }
00024 }
00025
00026
00027 DbiDetector::Detector_t DbiDetector::CharToEnum(Char_t c)
00028 {
00029 switch(c) {
00030 case 'N':
00031 case 'n':
00032 case '1':
00033 case 0x01:
00034 return kNear;
00035 case 'F':
00036 case 'f':
00037 case '2':
00038 case 0x02:
00039 return kFar;
00040 case 'C':
00041 case 'c':
00042 case '4':
00043 case 0x04:
00044 return kCalDet;
00045 case 'T':
00046 case 't':
00047 case '8':
00048 case 0x08:
00049 return kTestStand;
00050 case 'M':
00051 case 'm':
00052 case 0x10:
00053 return kMapper;
00054 default:
00055 return kUnknown;
00056 }
00057 }
00058
00059
00060 Char_t* DbiDetector::MaskToString(Int_t mask)
00061 {
00062
00063
00064
00065
00066
00067
00068 static Char_t newstring[255] = "";
00069
00070 Char_t* ptr = newstring;
00071
00072 *ptr = 0;
00073 Int_t fullmask = DbiDetector::FullMask();
00074
00075 for (Int_t i=0; i<32; i++) {
00076 DbiDetector::Detector_t adet = (DbiDetector::Detector_t)(1<<i);
00077 if (mask & adet & fullmask) {
00078 const Char_t* toadd = DbiDetector::AsString(adet);
00079 if (ptr != newstring) *ptr++ = ',';
00080 strcpy(ptr,toadd);
00081 ptr += strlen(toadd);
00082 }
00083 }
00084 *ptr++ = 0;
00085
00086 return newstring;
00087 }
00088
00089
00090 DbiDetector::Detector_t DbiDetector::StringToEnum(const Char_t* chars, Int_t maxChar)
00091 {
00092
00093
00094 Int_t mask = DbiDetector::StringToMask(chars,maxChar);
00095
00096 switch (mask) {
00097 case kUnknown: return kUnknown; break;
00098 case kNear: return kNear; break;
00099 case kFar: return kFar; break;
00100 case kCalib: return kCalib; break;
00101 case kTestStand: return kTestStand; break;
00102 case kMapper: return kMapper; break;
00103 default: return kUnknown; break;
00104 }
00105
00106 }
00107
00108
00109 Int_t DbiDetector::StringToMask(const Char_t* chars, Int_t maxChar)
00110 {
00111
00112
00113
00114 Int_t mask = 0;
00115
00116 TString thestring(chars);
00117 if (maxChar>0 && maxChar<thestring.Length()) thestring.Resize(maxChar);
00118
00119 thestring.ToLower();
00120 if (thestring.Contains("n")) mask |= kNear;
00121 if (thestring.Contains("f")) mask |= kFar;
00122 if (thestring.Contains("c")) mask |= kCalib;
00123
00124
00125
00126
00127
00128 if (thestring.Contains("test")) mask |= kTestStand;
00129 if (thestring.Contains("m")) mask |= kMapper;
00130
00131
00132
00133 return mask;
00134 }
00135
00136
00137