Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

EmcRecSeedEThreshold Class Reference

#include <EmcRecSeedEThreshold.h>

Inheritance diagram for EmcRecSeedEThreshold:

EmcRecSeedAbs EmcRecSeedAbs List of all members.

Public Member Functions

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

Private Attributes

double fEThresholdSeed

Constructor & Destructor Documentation

EmcRecSeedEThreshold::EmcRecSeedEThreshold  ) 
 

EmcRecSeedEThreshold::~EmcRecSeedEThreshold  ) 
 

00018 {}

EmcRecSeedEThreshold::EmcRecSeedEThreshold  ) 
 

EmcRecSeedEThreshold::~EmcRecSeedEThreshold  ) 
 


Member Function Documentation

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

Implements EmcRecSeedAbs.

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

Implements EmcRecSeedAbs.

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           //prepare a hit
00043     max=true;
00044     aHit=ciHitMap->second;
00045     
00046     if(aHit.getEnergy()>fEThresholdSeed) {
00047       //prepare its neighbours
00048       NeighVec.clear();
00049       NeighVec=EmcRecNeighbor::GetNeighbors(aHit.getCellId());
00050       
00051       //to see if it is energy max
00052       for(ciNeighVec=NeighVec.begin();
00053           ciNeighVec!=NeighVec.end();
00054           ++ciNeighVec) {
00055         //find it
00056         ciNeigh=aCluster.Find(*ciNeighVec);
00057                     if(ciNeigh!=aCluster.End()) {
00058                       //largest!!!
00059                       if(ciNeigh->second.getEnergy()>aHit.getEnergy()) {
00060                         max=false;
00061                       }
00062                     }
00063       }
00064     } else {
00065       max=false;
00066     }
00067 
00068     //avoid 2 equal neighbor seeds
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     //once max hit is found
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 }


Member Data Documentation

double EmcRecSeedEThreshold::fEThresholdSeed [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:02:04 2011 for BOSS6.5.5 by  doxygen 1.3.9.1