00001 #include "StEEmcCluster.h" 00002 #include "StEvent/StEmcCluster.h" 00003 00004 #include <iostream> 00005 00006 ClassImp(StEEmcCluster); 00007 00008 // ---------------------------------------------------------------------------- 00009 StEEmcCluster::StEEmcCluster() 00010 { 00011 00012 mEmcCluster=0; 00013 mKey=0; 00014 mEnergy=0.; 00015 00016 } 00017 00018 // ---------------------------------------------------------------------------- 00019 void StEEmcCluster::add( StEEmcTower tower, Float_t weight ) 00020 { 00021 00022 if ( weight * tower.energy() <= 0. ) return; 00023 mWeights.push_back(weight); 00024 mTowers.push_back( tower ); 00025 00026 Float_t energy = weight * tower.energy(); 00027 mEnergy+=energy; 00028 00029 } 00030 00031 StEEmcCluster::~StEEmcCluster(){ 00033 //$$$ if ( mEmcCluster != 0 ) delete mEmcCluster; 00034 } 00035 00036 00037 // ---------------------------------------------------------------------------- 00038 StEmcCluster *StEEmcCluster::stemc() 00039 { 00040 00041 if ( mEmcCluster ) return mEmcCluster; 00042 mEmcCluster=new StEmcCluster(); 00043 00044 mEmcCluster->setEta( momentum().Eta() ); 00045 mEmcCluster->setPhi( momentum().Phi() ); 00046 mEmcCluster->setSigmaEta(-1.); 00047 mEmcCluster->setSigmaPhi(-1.); 00048 mEmcCluster->setEnergy( energy() ); 00049 mEmcCluster->SetUniqueID( mKey ); 00050 #if 1 00051 for ( Int_t i=0; i< numberOfTowers(); i++ ) 00052 { 00053 StEmcRawHit *hit=mTowers[i].stemc(); 00054 assert( hit ); 00055 mEmcCluster->addHit( hit ); 00056 } 00057 #endif 00058 00059 return mEmcCluster; 00060 } 00061 00062 void StEEmcCluster::print() 00063 { 00064 00065 std::cout << "cluster key: " << mKey << std::endl; 00066 std::cout << "seed tower: " << mTowers[0].name() << std::endl; 00067 std::cout << "ntowers: " << mTowers.size() << std::endl; 00068 std::cout << "eta: " << mMomentum.Eta() << std::endl; 00069 std::cout << "phi: " << mMomentum.Phi() << std::endl; 00070 std::cout << "energy: " << mEnergy << std::endl; 00071 std::cout << "pt: " << mMomentum.Perp() << std::endl; 00072 for ( UInt_t i=0;i<mTowers.size();i++ ) 00073 { 00074 mTowers[i].printLine(); std::cout << " W=" << mWeights[i] << std::endl; 00075 } 00076 00077 }
1.5.9