00022 {
00023 RecEmcHitMap::const_iterator ciHitMap;
00024 RecEmcHitMap::const_iterator ciNeigh;
00025 RecEmcHit aHit;
00026
00027 bool max;
00028
00029 RecEmcIDVector NeighVec;
00030 RecEmcIDVector::const_iterator ciNeighVec;
00031
00032 aMaxVec.clear();
00033
00034 vector<RecEmcHit> aHitVec,tmpHitVec;
00035 vector<RecEmcHit>::const_iterator ciHitVec;
00036
00037
00038 for(ciHitMap=aCluster.Begin();
00039 ciHitMap!=aCluster.End();
00040 ++ciHitMap) {
00041
00042
00043 max=true;
00044 aHit=ciHitMap->second;
00045
00046 if(aHit.getEnergy()>fEThresholdSeed) {
00047
00048 NeighVec.clear();
00049 NeighVec=EmcRecNeighbor::GetNeighbors(aHit.getCellId());
00050
00051
00052 for(ciNeighVec=NeighVec.begin();
00053 ciNeighVec!=NeighVec.end();
00054 ++ciNeighVec) {
00055
00056 ciNeigh=aCluster.Find(*ciNeighVec);
00057 if(ciNeigh!=aCluster.End()) {
00058
00059 if(ciNeigh->second.getEnergy()>aHit.getEnergy()) {
00060 max=false;
00061 }
00062 }
00063 }
00064 } else {
00065 max=false;
00066 }
00067
00068
00069 for(ciHitVec=aHitVec.begin();
00070 ciHitVec!=aHitVec.end();
00071 ciHitVec++) {
00072 if(EmcRecNeighbor::IsNeighbor(ciHitVec->getCellId(),aHit.getCellId())) {
00073 max=false;
00074 break;
00075 }
00076 }
00077
00078
00079 if(max==true) {
00080 aHitVec.push_back(aHit);
00081 }
00082
00083 }
00084
00085 sort(aHitVec.begin(),aHitVec.end(),greater<RecEmcHit>());
00086
00087 for(ciHitVec=aHitVec.begin();
00088 ciHitVec!=aHitVec.end();
00089 ciHitVec++) {
00090 aMaxVec.push_back(ciHitVec->getCellId());
00091 }
00092 }