00001 #ifndef __StEEmcTower_h__ 00002 #define __StEEmcTower_h__ 00003 00004 #include "StEEmcElement.h" 00005 #include "TVector3.h" 00006 #include <vector> 00007 00008 class StEEmcTower; 00009 typedef std::vector<StEEmcTower*> StEEmcTowerPtrVec_t; 00010 00011 class StEEmcTower : public StEEmcElement { 00012 public: 00014 StEEmcTower(); 00016 virtual ~StEEmcTower(){ /* nada */ }; 00017 00019 StEEmcTower( const StEEmcTower &other ); 00020 00023 TVector3 direction( Float_t zvertex=0.0 ) const; 00024 00029 void index(Int_t i); 00031 void layer(Int_t l) {mLayer=l;} 00034 void et(Float_t e) {mET=e;} 00035 00037 Int_t index()const {return mIndex;} 00039 Int_t layer()const {return mLayer;} 00041 Int_t sector()const {return mSector;} 00043 Int_t subsector()const {return mSubsector;} 00045 Int_t etabin()const {return mEtabin;} 00047 Int_t phibin()const {return mPhibin;} 00049 Float_t et()const {return mET;} 00050 00052 void neighbor(StEEmcTower *n) {mNeighbors.push_back(n);} 00054 Int_t numberOfNeighbors()const { return (Int_t)mNeighbors.size();} 00056 StEEmcTower &neighbor(Int_t i) { return *mNeighbors[i]; } 00057 const StEEmcTower &neighbor(Int_t i)const { return *mNeighbors[i]; } 00058 00061 Bool_t isNeighbor( const StEEmcTower &t ) const; 00062 00064 void print() const; 00066 void printLine() const; 00067 00069 Bool_t operator<( const StEEmcTower &other ) const { return (this->energy() < other.energy()); } 00070 00072 virtual void Clear(Option_t *opts=""){ mET=0.; StEEmcElement::Clear(opts); } 00073 00074 protected: 00075 00076 Int_t mIndex; 00077 Int_t mLayer; 00078 Int_t mSector; 00079 Int_t mSubsector; 00080 Int_t mEtabin; 00081 Int_t mPhibin; 00083 00084 Float_t mET; 00085 00088 StEEmcTowerPtrVec_t mNeighbors; 00089 00091 ClassDef(StEEmcTower,1); 00092 00093 }; 00094 typedef std::vector<StEEmcTower> StEEmcTowerVec_t; 00095 00096 #endif
1.5.9