EmcRecSeedEThreshold Class Reference

#include <EmcRecSeedEThreshold.h>

Inheritance diagram for EmcRecSeedEThreshold:

EmcRecSeedAbs List of all members.

Public Member Functions

 EmcRecSeedEThreshold ()
 ~EmcRecSeedEThreshold ()
virtual void Seed (const RecEmcCluster &aCluster, RecEmcIDVector &aMaxVec)

Private Attributes

double fEThresholdSeed

Detailed Description

Definition at line 14 of file EmcRecSeedEThreshold.h.


Constructor & Destructor Documentation

EmcRecSeedEThreshold::EmcRecSeedEThreshold (  ) 

Definition at line 12 of file EmcRecSeedEThreshold.cxx.

References EmcRecParameter::EThresholdSeed(), fEThresholdSeed, and EmcRecParameter::GetInstance().

EmcRecSeedEThreshold::~EmcRecSeedEThreshold (  ) 

Definition at line 17 of file EmcRecSeedEThreshold.cxx.

00018 {}


Member Function Documentation

void EmcRecSeedEThreshold::Seed ( const RecEmcCluster aCluster,
RecEmcIDVector aMaxVec 
) [virtual]

Implements EmcRecSeedAbs.

Definition at line 20 of file EmcRecSeedEThreshold.cxx.

References RecEmcCluster::Begin(), RecEmcCluster::End(), fEThresholdSeed, RecEmcCluster::Find(), RecEmcHit::getCellId(), RecEmcHit::getEnergy(), EmcRecNeighbor::GetNeighbors(), EmcRecNeighbor::IsNeighbor(), and max.

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 }


Member Data Documentation

double EmcRecSeedEThreshold::fEThresholdSeed [private]

Definition at line 26 of file EmcRecSeedEThreshold.h.

Referenced by EmcRecSeedEThreshold(), and Seed().


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