00001
00002
00003
00004 #include "Conventions/ElecType.h"
00005 #include "TMath.h"
00006 #include <iostream>
00007 #include <ctype.h>
00008 #include <string.h>
00009
00010
00011
00012 const Char_t* ElecType::AsString(Elec_t etype)
00013 {
00014 switch (etype) {
00015 case kUnknown: return "Unknown"; break;
00016 case kVA: return "VA"; break;
00017 case kQIE: return "QIE"; break;
00018 case kReroot: return "Reroot"; break;
00019 default: return "?Unknown?"; break;
00020 }
00021 }
00022
00023
00024
00025 ElecType::Elec_t ElecType::StringToEnum(const Char_t* chars, Int_t maxChar)
00026 {
00027
00028
00029
00030
00031
00032
00033 if (maxChar==0) maxChar = strlen(chars);
00034 Char_t* lowchars = new Char_t [maxChar];
00035 for (int i=0; i<maxChar; ++i) lowchars[i] = tolower(chars[i]);
00036
00037 Elec_t etype = kUnknown;
00038 if (0==strncmp(lowchars,"va",TMath::Min(maxChar,2))) etype = kVA;
00039 else if (0==strncmp(lowchars,"qie",TMath::Min(maxChar,3))) etype = kQIE;
00040 else if (0==strncmp(lowchars,"reroot",TMath::Min(maxChar,6))) etype = kReroot;
00041
00042 delete [] lowchars;
00043
00044 return etype;
00045 }
00046
00047
00048
00049 ElecType::Elec_t ElecType::CharToEnum(Char_t c)
00050 {
00051 switch (c) {
00052 case 'V':
00053 case 'v':
00054 case '0':
00055 case 0x0:
00056 return kVA;
00057 case 'Q':
00058 case 'q':
00059 case '1':
00060 case 0x1:
00061 return kQIE;
00062 case 'R':
00063 case 'r':
00064 case '2':
00065 case 0x2:
00066 return kReroot;
00067 default:
00068 return kUnknown;
00069 }
00070
00071 }
00072
00073