00001 00027 #include "StEEmcIUCluster.h" 00028 #include "StEvent/StEmcCluster.h" 00029 00030 #include <iostream> 00031 00032 ClassImp(StEEmcIUCluster); 00033 00034 // ---------------------------------------------------------------------------- 00035 StEEmcIUCluster::StEEmcIUCluster() 00036 { 00037 00038 mEmcCluster=0; 00039 mKey=0; 00040 mEnergy=0.; 00041 00042 } 00043 00044 // ---------------------------------------------------------------------------- 00045 void StEEmcIUCluster::add( StEEmcTower tower, Float_t weight ) 00046 { 00047 00048 if ( weight * tower.energy() <= 0. ) return; 00049 mWeights.push_back(weight); 00050 mTowers.push_back( tower ); 00051 00052 Float_t energy = weight * tower.energy(); 00053 mEnergy+=energy; 00054 00055 } 00056 00057 StEEmcIUCluster::~StEEmcIUCluster(){ 00059 //$$$ if ( mEmcCluster != 0 ) delete mEmcCluster; 00060 } 00061 00062 00063 // ---------------------------------------------------------------------------- 00064 StEmcCluster *StEEmcIUCluster::stemc() 00065 { 00066 00067 if ( mEmcCluster ) return mEmcCluster; 00068 mEmcCluster=new StEmcCluster(); 00069 00070 mEmcCluster->setEta( momentum().Eta() ); 00071 mEmcCluster->setPhi( momentum().Phi() ); 00072 mEmcCluster->setSigmaEta(-1.); 00073 mEmcCluster->setSigmaPhi(-1.); 00074 mEmcCluster->setEnergy( energy() ); 00075 mEmcCluster->SetUniqueID( mKey ); 00076 #if 1 00077 for ( Int_t i=0; i< numberOfTowers(); i++ ) 00078 { 00079 StEmcRawHit *hit=mTowers[i].stemc(); 00080 assert( hit ); 00081 mEmcCluster->addHit( hit ); 00082 } 00083 #endif 00084 00085 return mEmcCluster; 00086 } 00087 00088 void StEEmcIUCluster::print() 00089 { 00090 00091 std::cout << "cluster key: " << mKey << std::endl; 00092 std::cout << "seed tower: " << mTowers[0].name() << std::endl; 00093 std::cout << "ntowers: " << mTowers.size() << std::endl; 00094 std::cout << "eta: " << mMomentum.Eta() << std::endl; 00095 std::cout << "phi: " << mMomentum.Phi() << std::endl; 00096 std::cout << "energy: " << mEnergy << std::endl; 00097 std::cout << "pt: " << mMomentum.Perp() << std::endl; 00098 for ( UInt_t i=0;i<mTowers.size();i++ ) 00099 { 00100 mTowers[i].printLine(); std::cout << " W=" << mWeights[i] << std::endl; 00101 } 00102 00103 }
1.5.9