00001 // 00002 // Convert from Cluster Map to Shower Map 00003 // 00004 // Created by Zhe Wang 2004, 3, 29 00005 // 00006 #include <iostream> 00007 00008 #include "EmcRec/EmcRecCluster2Shower.h" 00009 //#include "EmcRec/EmcRecSeedLocalMax.h" 00010 #include "EmcRec/EmcRecSeedEThreshold.h" 00011 #include "EmcRec/EmcRecSplitWeighted.h" 00012 00013 // Constructors and destructors 00014 EmcRecCluster2Shower::EmcRecCluster2Shower() 00015 { 00016 //cout<<"====== EmcRec: Offline Mode ======"<<endl; 00017 // fSeedFinder=new EmcRecSeedLocalMax; 00018 fSeedFinder=new EmcRecSeedEThreshold; 00019 fSplitter=new EmcRecSplitWeighted; 00020 } 00021 00022 EmcRecCluster2Shower:: ~EmcRecCluster2Shower() 00023 { 00024 delete fSeedFinder; 00025 delete fSplitter; 00026 } 00027 00028 void EmcRecCluster2Shower::Convert(RecEmcClusterMap& aClusterMap, 00029 RecEmcShowerMap& aShowerMap) 00030 { 00031 RecEmcClusterMap::iterator ciClusterMap; 00032 00033 RecEmcIDVector aMaxVec; 00034 for(ciClusterMap=aClusterMap.begin(); 00035 ciClusterMap!=aClusterMap.end(); 00036 ++ciClusterMap) 00037 { 00038 //++++++++++++++++++++++++++ 00039 //get its local maximum list 00040 fSeedFinder->Seed(ciClusterMap->second,aMaxVec); 00041 //++++++++++++++++++++++++++++++++++++++++++++++ 00042 //put seeds to cluster 00043 if(!aMaxVec.empty()) { 00044 ci_RecEmcIDVector ciMax; 00045 for(ciMax=aMaxVec.begin(); 00046 ciMax!=aMaxVec.end(); 00047 ++ciMax) { 00048 ciClusterMap->second.InsertSeed(ciClusterMap->second.Find(*ciMax)->second); 00049 } 00050 } 00051 //++++++++++++++++++++++++++++++++++++++++++++++ 00052 //split it into showers and push into shower map 00053 fSplitter->Split(ciClusterMap->second,aMaxVec,aShowerMap); 00054 } 00055 } 00056