Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

ElecType.cxx

Go to the documentation of this file.
00001 //
00002 // Body for ElecType class so that CINT recognizes its existence
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    // convert a set of chars to a valid enum 
00028    // based on existence of only one of:
00029    //   VA:      far detector electronics
00030    //   QIE:     near detector electronics
00031    //   Reroot:  pseudo-numbering scheme
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 //_____________________________________________________________________________

Generated on Mon Feb 15 11:06:38 2010 for loon by  doxygen 1.3.9.1