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

BeamType.cxx

Go to the documentation of this file.
00001 
00002 //
00003 // BeamType
00004 //
00005 // Enumerate the nominal beam (e.g. pseudo beam) types
00006 //
00007 // Created:  M. Kordosky June 2, 2005
00008 // Modified: R. Hatcher  2006-10-19  - generalize to canonical offline form
00009 //                                     move to Conventions
00010 //
00011 // $Author: asousa $ 
00012 //
00013 // $Revision: 1.10 $
00014 // 
00015 // $Name:  $
00016 //
00017 // $Id: BeamType.cxx,v 1.10 2009/12/07 21:56:09 asousa Exp $
00018 //
00020 
00021 
00022 #include "Conventions/BeamType.h"
00023 #include <string>
00024 
00025 const Char_t* BeamType::AsString(BeamType::BeamType_t b) {
00026   // return char string in cannonical offline form
00027   switch (b) {
00028   case kL000z200i: return "L000z200i";
00029   case kL010z185i: return "L010z185i";
00030   case kL050z200i: return "L050z200i";
00031   case kL100z200i: return "L100z200i";
00032   case kL200z200i: return "L200z200i";
00033   case kL250z200i: return "L250z200i";
00034   case kL010z000i: return "L010z000i";
00035   case kL010z170i: return "L010z170i";
00036   case kL010z200i: return "L010z200i";
00037   case kL010z185i_lowintensity: return "L010z185i_lowint";
00038   case kL010z185i_lowi: return "L010z185i_lowi";
00039   case kL010z185i_medi: return "L010z185i_medi";
00040   case kL150z200i: return "L150z200i";
00041     //
00042   case kL010z185i_i124: return "L010z185i_i124";
00043   case kL010z185i_i191: return "L010z185i_i191";
00044   case kL010z185i_i213: return "L010z185i_i213";
00045   case kL010z185i_i224: return "L010z185i_i224";
00046   case kL010z185i_i232: return "L010z185i_i232";
00047   case kL010z185i_i243: return "L010z185i_i243";
00048   case kL010z185i_i257: return "L010z185i_i257";
00049   case kL010z185i_i282: return "L010z185i_i282";
00050   case kL010z185i_i303: return "L010z185i_i303";
00051   case kL010z185i_i324: return "L010z185i_i324";
00052     //
00053   case kL010z000i_i209: return "L010z000i_i209";
00054   case kL010z000i_i225: return "L010z000i_i225";
00055   case kL010z000i_i232: return "L010z000i_i232";
00056   case kL010z000i_i259: return "L010z000i_i259";
00057   case kL010z000i_i300: return "L010z000i_i300";
00058   case kL010z000i_i317: return "L010z000i_i317";
00059   case kL010z000i_i326: return "L010z000i_i326";
00060   case kL010z000i_i380: return "L010z000i_i380";
00061     //
00062   case kL250z200i_i100: return "L250z200i_i100";
00063   case kL250z200i_i114: return "L250z200i_i114";
00064   case kL250z200i_i130: return "L250z200i_i130";
00065   case kL250z200i_i152: return "L250z200i_i152";
00066   case kL250z200i_i165: return "L250z200i_i165";
00067   case kL250z200i_i194: return "L250z200i_i194";
00068   case kL250z200i_i232: return "L250z200i_i232";
00069     //
00070   case kL010z185i_rev: return "L010z185i_rev";
00071     //
00072     //case kLE:       return "LE beam"; break;
00073     //case k010:      return "target -10 cm"; break;
00074     //case k050:      return "target -50 cm"; break;
00075     //case k100:      return "target -100 cm"; break;
00076     //case k200:      return "target -200 cm"; break;
00077     //case k250:      return "target -250 cm"; break;
00078   case kInverseE:  return "1/E flux"; break;  
00079   case kUnknown:   return "Unknown"; break;
00080   case kUser:      return "User specific flux"; break;
00081   default:         return "!?Bad Value Passed?!"; break;
00082   }
00083 }
00084 
00085 const Char_t* BeamType::AsTag(BeamType::BeamType_t b) {
00086   switch (b) {
00087   case kLE:       return "z_000"; break;
00088   case k010:      return "z_010"; break;
00089   case k050:      return "z_050"; break;
00090   case k100:      return "z_100"; break;
00091   case k200:      return "z_200"; break;
00092   case k250:      return "z_250"; break;
00093   case kInverseE: return "inv_e"; break;  
00094   case kUnknown:  return "unkn"; break;
00095   case kUser:     return "user"; break;
00096   default:        return "???"; break;
00097   }
00098 }
00099  
00100 BeamType::BeamType_t BeamType::TagToEnum(const Char_t* cs) {
00101   BeamType::BeamType_t b=kUnknown;
00102   std::string s=cs;
00103   
00104   // canonical AsString form
00105   if      (s=="L000z200i") b = kL000z200i;
00106   else if (s=="L010z185i") b = kL010z185i;
00107   else if (s=="L050z200i") b = kL050z200i;
00108   else if (s=="L100z200i") b = kL100z200i;
00109   else if (s=="L200z200i") b = kL200z200i;
00110   else if (s=="L250z200i") b = kL250z200i;
00111   else if (s=="L010z000i") b = kL010z000i;
00112   else if (s=="L010z170i") b = kL010z170i;
00113   else if (s=="L010z200i") b = kL010z200i;
00114   else if (s=="L010z185i_lowint") b = kL010z185i_lowintensity;
00115   else if (s=="L010z185i_lowi") b = kL010z185i_lowi;
00116   else if (s=="L010z185i_medi") b = kL010z185i_medi;
00117   else if (s=="L150z200i") b = kL150z200i;
00118     //
00119   else if (s=="L010z185i_i124") b = kL010z185i_i124;
00120   else if (s=="L010z185i_i191") b = kL010z185i_i191;
00121   else if (s=="L010z185i_i213") b = kL010z185i_i213;
00122   else if (s=="L010z185i_i224") b = kL010z185i_i224;
00123   else if (s=="L010z185i_i232") b = kL010z185i_i232;
00124   else if (s=="L010z185i_i243") b = kL010z185i_i243;
00125   else if (s=="L010z185i_i257") b = kL010z185i_i257;
00126   else if (s=="L010z185i_i282") b = kL010z185i_i282;
00127   else if (s=="L010z185i_i303") b = kL010z185i_i303;
00128   else if (s=="L010z185i_i324") b = kL010z185i_i324;
00129     //
00130   else if (s=="L010z000i_i209") b = kL010z000i_i209;
00131   else if (s=="L010z000i_i225") b = kL010z000i_i225;
00132   else if (s=="L010z000i_i232") b = kL010z000i_i232;
00133   else if (s=="L010z000i_i259") b = kL010z000i_i259;
00134   else if (s=="L010z000i_i300") b = kL010z000i_i300;
00135   else if (s=="L010z000i_i317") b = kL010z000i_i317;
00136   else if (s=="L010z000i_i326") b = kL010z000i_i326;
00137   else if (s=="L010z000i_i380") b = kL010z000i_i380;
00138     //
00139   else if (s=="L250z200i_i100") b = kL250z200i_i100;
00140   else if (s=="L250z200i_i114") b = kL250z200i_i114;
00141   else if (s=="L250z200i_i130") b = kL250z200i_i130;
00142   else if (s=="L250z200i_i152") b = kL250z200i_i152;
00143   else if (s=="L250z200i_i165") b = kL250z200i_i165;
00144   else if (s=="L250z200i_i194") b = kL250z200i_i194;
00145   else if (s=="L250z200i_i232") b = kL250z200i_i232;
00146     //
00147   else if (s=="L010z185i_rev") b = kL010z185i_rev;
00148 
00149   // tag forms
00150   else if (s=="z_000") b=kLE;
00151   else if (s=="z_010") b=k010;
00152   else if (s=="z_050") b=k050;
00153   else if (s=="z_100") b=k100;
00154   else if (s=="z_200") b=k200;
00155   else if (s=="z_250") b=k250;
00156   else if (s=="inv_e") b=kInverseE;
00157   else if (s=="user")  b=kUser;
00158   else                 b=kUnknown;
00159 
00160   return b;
00161 
00162 }
00163 
00164 BeamType::BeamType_t BeamType::FromBeamMon(unsigned int i) {
00165   BeamType::BeamType_t result=BeamType::kUnknown;
00166   switch (i) {
00167   case 1:
00168     result=BeamType::kLE;
00169     break;
00170   case 4:
00171     result=BeamType::kME;
00172     break;
00173   case 5:
00174     result=BeamType::kHE;
00175     break;
00176   default:
00177     break;
00178   }
00179   return result;
00180 }
00181 
00182 BeamType::BeamType_t BeamType::FromZarko(unsigned int izarko) {
00183   switch (izarko) {
00184   case 1:  return kL000z200i;
00185   case 2:  return kL010z185i;
00186   case 3:  return kL100z200i;
00187   case 4:  return kL250z200i;
00188   case 5:  return kL010z185i_lowintensity;
00189   case 6:  return kL010z170i;
00190   case 7:  return kL010z200i;
00191   case 8:  return kL010z000i;
00192   case 9:  return kL150z200i;
00193   case 10:  return kL010z185i_lowi;
00194   case 11:  return kL010z185i_medi;
00195   default: return kUnknown;
00196   }
00197 }
00198 
00199 Int_t BeamType::ToZarko(BeamType::BeamType_t b) {
00200   
00201   for (int itry=BeamType::kUnknown; itry < BeamType::kEndOfList; itry++) {
00202     
00203     if ( b == BeamType::FromZarko(itry) )
00204       return itry;
00205     else if ( itry >= (Int_t)(BeamType::kL010z185i_i124) &&
00206               itry <= (Int_t)(BeamType::kL010z185i_i324) &&
00207               b == (BeamType_t)itry )
00208       return ToZarko(BeamType::kL010z185i);
00209     else if ( itry >= (Int_t)(BeamType::kL010z000i_i209) &&
00210               itry <= (Int_t)(BeamType::kL010z000i_i380) &&
00211               b == (BeamType_t)itry )
00212       return ToZarko(BeamType::kL010z000i);
00213     else if ( itry >= (Int_t)(BeamType::kL250z200i_i100) &&
00214               itry <= (Int_t)(BeamType::kL250z200i_i232) &&
00215               b == (BeamType_t)itry )
00216       return ToZarko(BeamType::kL250z200i);
00217     else continue;
00218     
00219   }//for()
00220   // no match
00221   return -1;
00222 }

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