00001
00002 #ifndef STAR_EEmcTower_h
00003 #define STAR_EEmcTower_h
00004
00005
00006
00007 #include <ostream>
00008
00009 #include "TObject.h"
00010 #include "TVector3.h"
00011
00012 #if !defined(ST_NO_NAMESPACES)
00013 using std::ostream;
00014 #endif
00015
00016
00017 class EEmcTower : public TObject {
00018 public:
00020 EEmcTower() { mSec=mSub=mEta=-1; mADC=mEdep=0.0; };
00021
00023 EEmcTower(int s, int ss, int e, float adc=0.0, float ene=0.0) {
00024 mSec = (char)s;
00025 mSub = (char)ss;
00026 mEta = (char)e;
00027 mADC = adc;
00028 mEdep = ene;
00029 };
00030
00032 EEmcTower(const char *label, float adc=0.0, float ene=0.0);
00033
00035 EEmcTower(const EEmcTower& t) {
00036 mSec = (char) t.Sec();
00037 mSub = (char) t.SubSec();
00038 mEta = (char) t.Eta();
00039 mADC = t.ADC();
00040 mEdep = t.dE();
00041 }
00042
00044 ~EEmcTower() { };
00045
00047 float ADC() const { return mADC; }
00049 float ADC(float d) { mADC=d; return mADC; }
00050
00052 float dE() const { return mEdep; }
00054 float dE(float e) { mEdep=e; return mEdep; }
00055
00057 int Sec () const { return mSec; }
00059 int Sec (int s) { mSec=(char)s; return s; }
00060
00062 int SubSec() const { return mSub; }
00064 int SubSec(int s) { mSub=(char)s; return s; }
00065
00067 int Eta () const { return mEta; }
00069 int Eta (int e) { mEta=(char)e; return e; }
00070
00071
00073 int SecLabel () const { return mSec+1; }
00075 int SecLabel (int s) { mSec=(char)(s-1 ); return s; }
00076
00078 int SubSecLabel() const { return mSub+'A'; }
00080 int SubSecLabel(int s) { mSub=(char)(s-'A'); return s; }
00081
00083 int EtaLabel () const { return mEta+1; }
00085 int EtaLabel (int e) { mEta=(char)(e-1 ); return e; }
00086
00088 const char *TowerLabel() const;
00089
00091 ostream& Out ( ostream &out ) const ;
00092
00094 bool operator==(const EEmcTower &t) {
00095 if(mSec!=t.Sec()) return false;
00096 if(mSub!=t.SubSec()) return false;
00097 if(mEta!=t.Eta()) return false;
00098 return true;
00099 }
00100
00102 bool operator!=(const EEmcTower &t) {
00103 if(mSec==t.Sec()) return false;
00104 if(mSub==t.SubSec()) return false;
00105 if(mEta==t.Eta()) return false;
00106 return true;
00107 }
00108
00111
00112 private:
00113 bool ParseLabel(const char* label);
00114
00115 char mSec;
00116 char mSub;
00117 char mEta;
00118 char mDummy;
00119 float mADC;
00120 float mEdep;
00121 public:
00122 ClassDef(EEmcTower, 3)
00123 };
00124
00128 ostream& operator<<(ostream &out, const EEmcTower &t );
00129
00130 #endif