00001
00002
00003
00023 #include <iostream>
00024 #include <ostream>
00025 #include <cctype>
00026
00027 #include "TList.h"
00028 #include "EEmcTower.h"
00029
00030 #if !defined(ST_NO_NAMESPACES)
00031 using std::ostream;
00032 #endif
00033
00034 ClassImp(EEmcTower);
00035
00036
00037 static const int kMaxLabelLen = 16;
00038
00039
00040 EEmcTower::EEmcTower(const char *label , float adc, float ene)
00041 {
00042 mSec = -1;
00043 mSub = -1;
00044 mEta = -1;
00045 mADC = 0.0;
00046 mEdep = 0.0;
00047 if( ! ParseLabel(label) ) return;
00048 mADC = adc;
00049 mEdep = ene;
00050 }
00051
00052
00053
00054 bool
00055 EEmcTower::ParseLabel(const char *label)
00056 {
00057 if(label==NULL) return false;
00058 char const *p = label;
00059 int s=0;
00060 char ss=0;
00061 char t=0;
00062 int e=0;
00063 while( *p != 0x00 && !islower(*p) && !isupper(*p) && !isdigit(*p) ) p++;
00064 int r=sscanf(p,"%02d%1c%1c%02d",&s,&t,&ss,&e);
00065 if(toupper(t)!='T') return false;
00066 if(r!=4) return false;
00067
00068 mSec = s - 1;
00069 mSub = ss - 'A';
00070 mEta = e - 1;
00071 return true;
00072
00073 }
00074
00075
00076 const char*
00077 EEmcTower::TowerLabel() const
00078 {
00079 static char labelBuffer[kMaxLabelLen];
00080 sprintf(labelBuffer,"%02dT%1c%02d",SecLabel(),SubSecLabel(),EtaLabel());
00081 return labelBuffer;
00082 }
00083
00084
00085
00086 ostream&
00087 EEmcTower::Out(ostream &out ) const
00088 {
00089 out << "<EEmcTower";
00090 out << " TOWER=\"" << TowerLabel() << "\"";
00091 out << " ADC=\"" << mADC << "\"";
00092 out << " EDEP=\"" << mEdep << "\"";
00093 out << " />\n";
00094 return out;
00095 }
00096
00097
00098
00099 ostream& operator<<(ostream &out, const EEmcTower &t ) {
00100 return t.Out(out);
00101 }
00102