00001 #ifndef __StEEmcIUSmdCluster_h__ 00002 #define __StEEmcIUSmdCluster_h__ 00003 00004 #include <cassert> 00005 #include <TObject.h> 00006 #include "StEEmcPool/StEEmcA2EMaker/StEEmcStrip.h" 00007 #include "StEEmcPool/StEEmcA2EMaker/StEEmcTower.h" 00008 00009 class StEmcCluster; 00010 00011 class StEEmcIUSmdCluster : public TObject { 00012 00013 public: 00014 00015 StEEmcIUSmdCluster(); 00016 ~StEEmcIUSmdCluster(){ /* nada */ }; 00017 00019 StEEmcIUSmdCluster ( const StEEmcIUSmdCluster &c ); 00020 00023 void add( StEEmcStrip strip, Float_t weight=1.0 ); 00024 00026 Int_t key(){ return mKey; } 00028 Int_t key()const { return mKey; } 00029 00033 void key(Int_t k){ mKey=k; } 00034 00036 Float_t energy(); 00038 Float_t energy()const; 00040 Float_t mean(); 00042 Float_t mean()const; 00044 Float_t sigma(); 00046 Float_t sigma()const; 00047 00049 void mean(Float_t x){ mMean=x; } 00051 void sigma(Float_t s){ mSigma=s; } 00053 void energy( Float_t e){ mEnergy=e; } 00054 00058 Float_t energy( Int_t nmax, Option_t *opts="mean" ); 00060 Float_t sigma( Int_t nmax, Option_t *opts="mean" ); 00061 00062 /* 00063 Float_t energy3(){ return energy(3,"seed"); } 00064 Float_t energy5(){ return energy(5,"seed"); } 00065 Float_t sigma3(){ return sigma(3,"seed"); } 00066 Float_t sigma5(){ return sigma(5,"seed"); } 00067 */ 00068 00070 Int_t size(); 00071 00073 StEEmcTowerVec_t towers(); 00075 Int_t numberOfMatchedTowers(); 00077 StEEmcTower tower(Int_t t); 00078 00081 Bool_t operator>( StEEmcIUSmdCluster &other ); 00082 00084 Int_t numberOfStrips(){ return (Int_t)mStrips.size(); } 00085 00087 StEEmcStrip strip(Int_t s){ return mStrips[s]; } 00088 00091 StEEmcStrip seed(){ assert(mStrips.size()>0); return mStrips[0]; } 00092 00094 Int_t plane(){ return mPlane; } 00096 Int_t sector(){ return mSector; } 00098 void sector( Int_t s ) { mSector=s; } 00100 void plane( Int_t p ){ mPlane = p; } 00101 00104 StEmcCluster *stemc(); 00106 void stemc( StEmcCluster *c ){ mEmcCluster = c; } 00108 void print(); 00109 00110 private: 00111 protected: 00112 00114 Int_t mKey; 00115 00117 StEEmcStripVec_t mStrips; 00118 00119 std::vector<Float_t> mWeights; 00120 00122 Int_t mSize; 00123 00125 Float_t mEnergy; 00126 00128 Float_t mSumXW; 00130 Float_t mSumX2W; 00131 00133 Float_t mMean; 00135 Float_t mSigma; 00137 Int_t mPlane; 00139 Int_t mSector; 00140 00142 StEEmcTowerVec_t mMatchedTowers; 00143 00145 StEmcCluster *mEmcCluster; 00146 00148 ClassDef(StEEmcIUSmdCluster,1); 00149 00150 }; 00151 00152 inline Float_t StEEmcIUSmdCluster::energy(){ return mEnergy; } 00153 inline Float_t StEEmcIUSmdCluster::mean(){ return mMean; } 00154 inline Float_t StEEmcIUSmdCluster::sigma(){ return mSigma; } 00155 00156 inline Float_t StEEmcIUSmdCluster::energy()const{ return mEnergy; } 00157 inline Float_t StEEmcIUSmdCluster::mean()const{ return mMean; } 00158 inline Float_t StEEmcIUSmdCluster::sigma()const{ return mSigma; } 00159 00160 inline Int_t StEEmcIUSmdCluster::size(){ return (Int_t)mSize; } 00161 00162 inline StEEmcTowerVec_t StEEmcIUSmdCluster::towers(){ return mMatchedTowers; } 00163 inline Int_t StEEmcIUSmdCluster::numberOfMatchedTowers(){ return (Int_t)mMatchedTowers.size(); } 00164 inline StEEmcTower StEEmcIUSmdCluster::tower(Int_t t){ return mMatchedTowers[t]; } 00165 inline Bool_t StEEmcIUSmdCluster::operator>(StEEmcIUSmdCluster &other){ return (this->energy() > other.energy()); } 00166 00167 00169 inline Bool_t inner( const StEEmcIUSmdCluster &me, const StEEmcIUSmdCluster &you) { return me.mean()<you.mean(); } 00171 inline Bool_t outer( const StEEmcIUSmdCluster &me, const StEEmcIUSmdCluster &you) { return me.mean()>you.mean(); } 00173 inline Bool_t Energy( const StEEmcIUSmdCluster &me, const StEEmcIUSmdCluster &you) { return me.energy()>you.energy(); } 00175 inline Bool_t Key(const StEEmcIUSmdCluster &me, const StEEmcIUSmdCluster &you) { return me.key()<you.key(); } 00176 00177 00178 00179 typedef std::vector<StEEmcIUSmdCluster> StEEmcIUSmdClusterVec_t; 00180 00181 #endif
1.5.9