/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/EmcRec/EmcRec-01-02-57/src/EmcRecSeedEThreshold.cxx

Go to the documentation of this file.
00001 //
00002 //  Seed finder
00003 //  1. local max (the same with EmcRecSeedLocalMax)
00004 //  2. energy of hit > EThresholdSeed
00005 //
00006 //  Zhe Wang 2004, 8, 31
00007 //
00008 #include <iostream>
00009 
00010 #include "EmcRec/EmcRecSeedEThreshold.h"
00011 
00012 EmcRecSeedEThreshold::EmcRecSeedEThreshold()
00013 {
00014    fEThresholdSeed=EmcRecParameter::GetInstance().EThresholdSeed();
00015 }
00016 
00017 EmcRecSeedEThreshold::~EmcRecSeedEThreshold()
00018 {}
00019 
00020 void EmcRecSeedEThreshold::Seed(const RecEmcCluster& aCluster,
00021                                 RecEmcIDVector& aMaxVec)
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   EmcRecNeighbor nhb;
00038   
00039   for(ciHitMap=aCluster.Begin();
00040       ciHitMap!=aCluster.End();
00041       ++ciHitMap) {
00042     //++++++++++++++++++++++++++++++++++++++++++++++++++
00043           //prepare a hit
00044     max=true;
00045     aHit=ciHitMap->second;
00046     
00047     if(aHit.getEnergy()>fEThresholdSeed) {
00048       //prepare its neighbours
00049       NeighVec.clear();
00050       NeighVec=nhb.GetNeighbors(aHit.getCellId());
00051       
00052       //to see if it is energy max
00053       for(ciNeighVec=NeighVec.begin();
00054           ciNeighVec!=NeighVec.end();
00055           ++ciNeighVec) {
00056         //find it
00057         ciNeigh=aCluster.Find(*ciNeighVec);
00058                     if(ciNeigh!=aCluster.End()) {
00059                       //largest!!!
00060                       if(ciNeigh->second.getEnergy()>aHit.getEnergy()) {
00061                         max=false;
00062                       }
00063                     }
00064       }
00065     } else {
00066       max=false;
00067     }
00068 
00069     //avoid 2 equal neighbor seeds
00070     for(ciHitVec=aHitVec.begin();
00071         ciHitVec!=aHitVec.end();
00072         ciHitVec++) {
00073       if(nhb.IsNeighbor(ciHitVec->getCellId(),aHit.getCellId())) {
00074         max=false;
00075         break;
00076       }
00077     }
00078       
00079     //once max hit is found
00080     if(max==true) {
00081       aHitVec.push_back(aHit);
00082     }
00083     //++++++++++++++++++++++++++++++++++++++++++++++++++
00084   }
00085   
00086   sort(aHitVec.begin(),aHitVec.end(),greater<RecEmcHit>());
00087   
00088   for(ciHitVec=aHitVec.begin();
00089       ciHitVec!=aHitVec.end();
00090       ciHitVec++) {
00091     aMaxVec.push_back(ciHitVec->getCellId());
00092   }
00093 }
00094 

Generated on Tue Nov 29 23:13:18 2016 for BOSS_7.0.2 by  doxygen 1.4.7