00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013 #ifndef STAR_StBarrelEmcCluster
00014 #define STAR_StBarrelEmcCluster
00015
00016 class StGammaTower;
00017
00018 #include <iostream>
00019 #include <vector>
00020 #include "TVector3.h"
00021
00022 using namespace std;
00023
00024 class StBarrelEmcCluster: public TObject
00025 {
00026
00027 public:
00028
00029 StBarrelEmcCluster();
00030 ~StBarrelEmcCluster() {};
00031
00032 virtual const char* GetCVS() const
00033 {static const char cvs[] = "Tag $Name: $ $Id: StBarrelEmcCluster.h,v 1.5 2008/12/03 15:30:55 betan Exp $ built "__DATE__" "__TIME__; return cvs; }
00034
00035 float energy() const;
00036 const TVector3& position() const;
00037 const TVector3& momentum() const;
00038 StGammaTower *seed() const;
00039 StGammaTower *tower(int deta, int dphi) const;
00040
00041 void setEnergy(float energy);
00042 void setPosition(const TVector3& position);
00043 void setMomentum(const TVector3& momentum);
00044 void setSeed(StGammaTower* tower);
00045 void setTower(int deta, int dphi, StGammaTower* tower);
00046
00047 private:
00048
00049 float mEnergy;
00050 TVector3 mPosition;
00051 TVector3 mMomentum;
00052 StGammaTower* mTowers[3][3];
00053
00054 ClassDef(StBarrelEmcCluster, 1);
00055
00056 };
00057
00058 inline StBarrelEmcCluster::StBarrelEmcCluster() { memset(mTowers, 0, sizeof(mTowers)); }
00059 inline float StBarrelEmcCluster::energy() const { return mEnergy; }
00060 inline const TVector3& StBarrelEmcCluster::position() const { return mPosition; }
00061 inline const TVector3& StBarrelEmcCluster::momentum() const { return mMomentum; }
00062 inline StGammaTower* StBarrelEmcCluster::seed() const { return tower(0,0); }
00063 inline StGammaTower* StBarrelEmcCluster::tower(int deta, int dphi) const { return mTowers[deta+1][dphi+1]; }
00064
00065 inline void StBarrelEmcCluster::setEnergy(float energy) { mEnergy = energy; }
00066 inline void StBarrelEmcCluster::setPosition(const TVector3& position) { mPosition = position; }
00067 inline void StBarrelEmcCluster::setMomentum(const TVector3& momentum) { mMomentum = momentum; }
00068 inline void StBarrelEmcCluster::setSeed(StGammaTower* tower) { setTower(0, 0, tower); }
00069 inline void StBarrelEmcCluster::setTower(int deta, int dphi, StGammaTower* tower) { mTowers[deta+1][dphi+1] = tower; }
00070
00071 ostream& operator<<(ostream& out, const StBarrelEmcCluster& cluster);
00072
00073 #endif